*{margin:0;padding:0;box-sizing:border-box}:root{--white: #ffffff;--black: #1a1a1a;--gold: #F5C842;--light-gray: #f8f8f8;--project-card-height: 200px}body{font-family:IBM Plex Mono,monospace;line-height:1.6;color:var(--black);background:var(--white)}.container{max-width:100%;margin:0;padding:0}.layout{display:flex;gap:120px;align-items:flex-start;padding:20px 30px}.auth-header{display:flex;justify-content:flex-start;margin-bottom:20px}.btn-github-login{padding:10px 20px;background:var(--black);color:var(--white);border:none;font-family:IBM Plex Mono,monospace;font-size:14px;cursor:pointer;transition:opacity .2s;width:auto;line-height:1}.btn-github-login:hover{opacity:.8}.user-info{display:flex;flex-direction:column;gap:12px;background:var(--white);padding:8px 12px;border:1px solid var(--black);width:320px;box-sizing:border-box}.user-info-row{display:flex;align-items:center;gap:0;width:100%}.user-info-row:first-child{justify-content:space-between}.user-info-row:last-child{flex:1}.user-info span{font-family:IBM Plex Mono,monospace;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.repo-input-inline{position:relative;display:flex;flex:1;min-width:0}.repo-input-field{font-family:IBM Plex Mono,monospace;font-size:12px;padding:5px 8px;border:1px solid var(--black);border-right:none;background:var(--white);flex:1;min-width:0;line-height:1;height:28px}.repo-input-field::placeholder{font-size:12px}.repo-input-field:focus{outline:none;background:var(--light-gray)}.btn-logout{padding:5px 10px;background:var(--white);color:var(--black);border:1px solid var(--black);font-family:IBM Plex Mono,monospace;font-size:12px;cursor:pointer;line-height:1;height:28px}.btn-logout:hover{background:var(--black);color:var(--white)}.hidden{display:none!important}.localStorage-warning{background:#f5c84226;border-left:3px solid var(--gold);padding:12px 15px;margin-bottom:20px;font-family:IBM Plex Mono,monospace;font-size:12px;line-height:1.6;color:var(--black)}.localStorage-warning.hidden{display:none}.sidebar-content{margin-top:30px;font-size:14px;line-height:1.7}.sidebar-content h3{font-size:16px;margin-top:25px;margin-bottom:12px;font-weight:700}.collapsible-header{display:flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none}.collapsible-header .toggle-icon{margin-right:8px;width:0;height:0;border-style:solid;display:inline-block;transition:transform .2s;border-width:4px 0 4px 7px;border-color:transparent transparent transparent var(--gold)}.collapsible-header[data-section] .toggle-icon{transform-origin:center}.collapsible-content{overflow:hidden;margin-left:20px}.collapsible-content.hidden{display:none}.sidebar-content p{margin-bottom:15px}.sidebar-content ul{margin:0 0 15px;padding-left:20px}.sidebar-content ol{margin:0 0 15px;padding-left:25px}.sidebar-content li{margin-bottom:8px}.sidebar-content .tip{margin-top:20px;padding:12px;background:#f5c8421a;border-left:3px solid var(--gold);font-size:13px}.sidebar{background:transparent;padding:0;position:relative;width:320px;flex-shrink:0}.sidebar h1{font-size:36px;margin-bottom:8px;margin-top:0;color:var(--black);font-weight:700;letter-spacing:-.5px;font-family:IBM Plex Mono,monospace}.github-link{display:flex;align-items:center;padding:0;background:transparent;color:#333;opacity:.7;text-decoration:none;transition:opacity .2s ease}.github-link:hover{opacity:1}.github-link svg{flex-shrink:0}.nav-menu{display:flex;gap:20px;margin-bottom:25px}.nav-menu a{color:var(--gold);text-decoration:none;font-size:14px}.bio{font-size:14px;line-height:1.9;color:var(--black);margin-top:0;margin-bottom:20px;font-weight:400}.main-content{flex:1;min-width:0}.repos-header{margin-bottom:30px}.repo-input{padding:8px 12px;border:1px solid var(--black);background:var(--white);font-family:IBM Plex Mono,monospace;font-size:14px;width:250px}.repo-input:focus{outline:none;border-color:var(--gold)}.add-repo-btn{padding:0 12px;background:var(--white);color:var(--black);border:1px solid var(--black);font-family:IBM Plex Mono,monospace;font-size:14px;cursor:pointer;line-height:28px;font-weight:400;transition:background .2s,color .2s;height:28px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.add-repo-btn:hover{background:var(--black);color:var(--white)}.add-repo-btn:disabled{opacity:.5;cursor:not-allowed}.section-title{font-size:16px;margin-bottom:30px;margin-top:10px;color:var(--black);text-transform:uppercase;letter-spacing:2px;font-weight:700}.projects-grid{display:grid;grid-template-columns:repeat(auto-fit,320px);gap:30px;justify-content:start}.project-card{background:var(--white);border:1px solid var(--black);overflow:hidden;transition:all .3s ease;cursor:pointer;width:320px;min-width:320px;max-width:320px;display:flex;flex-direction:column;height:var(--project-card-height);text-decoration:none;color:inherit;position:relative}.project-card:hover{box-shadow:0 4px 12px #00000026}.project-content{padding:50px 20px 20px;background:var(--white);flex:1;display:flex;flex-direction:column}.project-title{font-size:20px;font-weight:700;margin-bottom:12px;color:var(--black);text-decoration:underline;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-description{font-size:14px;color:var(--black);line-height:1.7;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.project-stats{font-size:13px;color:var(--black);margin-top:auto;padding-top:10px}.card-buttons{position:absolute;top:10px;right:10px;display:flex;gap:5px;z-index:10}.card-delete-btn,.card-reset-btn,.card-review-btn{width:32px;height:32px;padding:6px;background:var(--white);border:1px solid var(--black);cursor:pointer;display:flex;align-items:center;justify-content:center;font-family:IBM Plex Mono,monospace}.card-delete-btn{font-size:24px;line-height:1;padding:0}.card-reset-btn img,.card-review-btn img{width:16px;height:16px;display:block}.loading{font-size:14px;color:var(--black);padding:20px}.study-container{max-width:800px;margin:0 auto;padding:20px 30px}.study-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:40px;padding-bottom:20px;border-bottom:1px solid var(--black)}.back-link{color:var(--gold);text-decoration:none;font-size:14px}.back-link:hover{opacity:.7}.study-stats{font-size:14px;color:var(--black)}.study-stats .separator{margin:0 10px;opacity:.3}.study-area{min-height:400px}.card-container{background:var(--white);border:1px solid var(--black);padding:40px;margin-bottom:30px;min-height:300px}.card-content{font-size:18px;line-height:1.8}.card-content.hidden{display:none}.card-content img{max-width:100%;height:auto;display:block;margin:20px 0}.card-content .katex{font-size:1.1em}.card-content .katex-display{margin:1.5em 0}.cloze{background:var(--gold);color:var(--black);padding:2px 8px;border-radius:2px}.cloze-reveal{background:var(--gold);color:var(--black);padding:2px 8px;border-radius:2px;font-weight:700}.action-prompt{text-align:center;font-size:14px;color:var(--black);margin:30px 0}.action-prompt.hidden{display:none}kbd{background:var(--black);color:var(--white);padding:2px 8px;border-radius:3px;font-family:IBM Plex Mono,monospace;font-size:.9em}.grade-buttons{display:flex;gap:15px;justify-content:center;margin-top:30px}.grade-buttons.hidden{display:none}.grade-btn{background:var(--white);border:1px solid var(--black);padding:15px 20px;cursor:pointer;font-family:IBM Plex Mono,monospace;font-size:14px;display:flex;flex-direction:column;align-items:center;gap:8px;transition:all .2s ease;min-width:100px}.grade-btn:hover{background:var(--light-gray)}.grade-btn:active{transform:translateY(1px)}.grade-again:hover{border-color:#d32f2f}.grade-hard:hover{border-color:#f57c00}.grade-good:hover{border-color:#388e3c}.grade-easy:hover{border-color:#1976d2}.session-complete{text-align:center;padding:60px 20px}.session-complete.hidden{display:none}.session-complete h2{font-size:28px;margin-bottom:20px}.session-complete p{font-size:16px;margin-bottom:30px}.btn-primary{display:inline-block;background:var(--black);color:var(--white);padding:12px 30px;text-decoration:none;font-family:IBM Plex Mono,monospace;font-size:14px;border:none;cursor:pointer;transition:opacity .2s ease}.btn-primary:hover{opacity:.8}.btn-reveal{display:inline-block;background:var(--black);color:var(--white);padding:8px 20px;font-family:IBM Plex Mono,monospace;font-size:16px;border:none;border-radius:4px;cursor:pointer;transition:opacity .2s ease}.btn-reveal:hover{opacity:.8}@media (max-width: 1024px){.projects-grid{grid-template-columns:repeat(auto-fit,320px)}.layout{gap:120px}}@media (max-width: 900px){.layout{flex-direction:column;gap:40px}.sidebar{position:static;width:320px;flex-shrink:0}.main-content{width:100%}.projects-grid{grid-template-columns:repeat(auto-fit,320px)}.section-title{margin-top:0}}@media (max-width: 480px){.layout{padding:15px 30px}.sidebar .title{font-size:14px}.project-card{margin-bottom:20px}.study-container{padding:15px}.card-container{padding:20px}.grade-buttons{flex-wrap:wrap}.grade-btn{min-width:80px;padding:12px 15px}}.topic-section{margin-bottom:40px}.topic-header{margin-bottom:15px;padding-bottom:10px;border-bottom:1px solid var(--black)}.topic-header h3{font-size:18px;font-weight:400;margin:0;text-transform:uppercase;letter-spacing:1px}.decks-container{display:grid;grid-template-columns:repeat(auto-fit,320px);gap:30px;justify-content:start;margin-top:20px}.repo-input-wrapper{position:relative}.repo-suggestions{position:absolute;top:100%;left:0;right:0;max-height:300px;overflow-y:auto;background:var(--white);border:1px solid var(--black);border-top:none;z-index:1001}.repo-suggestions.hidden{display:none}.repo-suggestion-item{padding:8px 12px;cursor:pointer;transition:background-color .2s;border-bottom:1px solid #e0e0e0}.repo-suggestion-item:last-child{border-bottom:none}.repo-suggestion-item:hover,.repo-suggestion-item.selected{background:var(--light-gray)}.repo-suggestion-name{font-weight:500;color:var(--black);font-size:11px}.repo-suggestion-desc{font-size:10px;color:#666;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:4px}.repo-suggestion-meta{font-size:9px;color:#999;display:flex;gap:8px;margin-top:4px}.repo-suggestion-meta span{font-size:9px}.repo-loading{padding:8px 12px;text-align:center;color:#666;font-size:11px}.modal{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content{background:var(--white);border:2px solid var(--black);width:90%;max-width:500px;font-family:IBM Plex Mono,monospace}.modal-header{padding:20px;border-bottom:1px solid var(--black);display:flex;justify-content:space-between;align-items:center}.modal-header h3{margin:0;font-size:18px;font-weight:400;text-transform:uppercase;letter-spacing:1px}.modal-close{background:none;border:none;font-size:24px;cursor:pointer;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center;color:var(--black)}.modal-close:hover{background:var(--black);color:var(--white)}.modal-body{padding:20px}.modal-body label{display:block;margin-bottom:8px;font-size:14px;font-weight:400}.modal-body input{width:100%;padding:10px;border:1px solid var(--black);font-family:IBM Plex Mono,monospace;font-size:14px;box-sizing:border-box}.modal-body input:focus{outline:none;border-color:var(--black);box-shadow:0 0 0 2px #0000001a}.modal-hint{margin-top:8px;font-size:12px;color:#666}.modal-footer{padding:20px;border-top:1px solid var(--black);display:flex;justify-content:flex-end;gap:10px}.btn-cancel{padding:10px 20px;background:var(--white);border:1px solid var(--black);cursor:pointer;font-family:IBM Plex Mono,monospace;font-size:14px}.btn-cancel:hover{background:var(--black);color:var(--white)}.btn-primary{padding:10px 20px;background:var(--black);color:var(--white);border:1px solid var(--black);cursor:pointer;font-family:IBM Plex Mono,monospace;font-size:14px}.btn-primary:hover{background:var(--white);color:var(--black)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.controls-bar{display:inline-block;margin-bottom:30px;margin-top:20px}.controls-bar.hidden{display:none}.search-input{padding:10px 15px;border:1px solid var(--black);font-family:IBM Plex Mono,monospace;font-size:12px;width:320px}.search-input:focus{outline:none;box-shadow:0 0 0 2px #0000001a}.sort-select{padding:10px 15px;border:1px solid var(--black);background:var(--white);font-family:IBM Plex Mono,monospace;font-size:14px;cursor:pointer;min-width:150px}.sort-select:focus{outline:none;box-shadow:0 0 0 2px #0000001a}.sort-select:hover{background:var(--black);color:var(--white)}.modal{position:fixed;top:0;left:0;width:100%;height:100%;z-index:1000;display:flex;align-items:center;justify-content:center}.modal.hidden{display:none}.modal-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#00000080}.modal-content{position:relative;background:var(--white);border:1px solid var(--black);max-width:90%;max-height:90%;display:flex;flex-direction:column;z-index:1001}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:30px 30px 15px;border-bottom:1px solid var(--black);background:var(--white);flex-shrink:0}.modal-breadcrumb{font-size:16px;font-family:IBM Plex Mono,monospace;color:var(--black);display:flex;align-items:center;flex-wrap:wrap;flex:1}.breadcrumb-segment{display:inline-block}.breadcrumb-clickable{cursor:pointer;text-decoration:underline;text-decoration-color:var(--gold);text-underline-offset:2px;color:var(--gold)}.breadcrumb-separator{margin:0 4px;color:var(--black)}.modal-header h2{font-size:24px;margin:0;font-family:IBM Plex Mono,monospace}.modal-close{background:none;border:none;font-size:32px;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;color:var(--black);flex-shrink:0}#subdeck-grid{padding:30px;overflow-y:auto;flex:1;display:grid;grid-template-columns:repeat(auto-fit,320px);gap:30px;justify-content:center;align-content:start}.file-card:hover{box-shadow:none}
