@import url("https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=Sora:wght@300;400;500;600;700&display=swap");:root{--bg:#0a0c10;--bg2:#0f1218;--bg3:#151a22;--bg4:#1c2330;--border:hsla(0,0%,100%,.07);--border2:hsla(0,0%,100%,.12);--text:#e8eaf0;--text2:#8b92a5;--text3:#5a6278;--blue:#4a9eff;--blue2:#1a5ccc;--blue-bg:rgba(74,158,255,.08);--teal:#2dd4a0;--teal-bg:rgba(45,212,160,.08);--amber:#f5a623;--amber-bg:rgba(245,166,35,.08);--coral:#ff6b6b;--coral-bg:hsla(0,100%,71%,.08);--green:#5cb85c;--green-bg:rgba(92,184,92,.08);--purple:#a78bfa;--purple-bg:rgba(167,139,250,.08);--pink:#f472b6;--done:#2dd4a0;--radius:10px;--radius-lg:14px}*{box-sizing:border-box;margin:0;padding:0}body,html{font-family:Sora,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;font-size:14px;line-height:1.6}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px}.app-layout{display:flex;min-height:calc(100vh - 60px)}.header{background:var(--bg2);border-bottom:1px solid var(--border);padding:0 32px;position:-webkit-sticky;position:sticky;top:0;z-index:100;display:flex;align-items:center;justify-content:space-between;height:60px}.header-logo{font-family:JetBrains Mono,monospace;font-size:13px;color:var(--blue);letter-spacing:.08em;font-weight:600}.header-right{display:flex;align-items:center;gap:20px}.header-pct{font-size:12px;color:var(--teal);font-weight:600}.header-meta,.header-pct{font-family:JetBrains Mono,monospace}.header-meta{font-size:11px;color:var(--text3);letter-spacing:.05em}.global-progress-bar{position:absolute;bottom:0;left:0;height:2px;background:linear-gradient(90deg,var(--blue),var(--teal));transition:width .4s ease}.sidebar{width:240px;flex-shrink:0;background:var(--bg2);border-right:1px solid var(--border);padding:20px 0;position:-webkit-sticky;position:sticky;top:60px;height:calc(100vh - 60px);overflow-y:auto}.sidebar-section-label{font-family:JetBrains Mono,monospace;font-size:9px;letter-spacing:.15em;color:var(--text3);padding:0 20px 8px;text-transform:uppercase;font-weight:500}.nav-item{display:flex;align-items:center;gap:10px;padding:8px 20px;cursor:pointer;transition:background .15s;color:var(--text2);font-size:12.5px;border:none;background:transparent;width:100%;text-align:left;font-family:Sora,sans-serif}.nav-item:hover{background:var(--bg3);color:var(--text)}.nav-item.active{background:var(--bg3);color:var(--blue);border-left-color:var(--blue)}.nav-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.nav-progress-mini{margin-left:auto;font-family:JetBrains Mono,monospace;font-size:10px;color:var(--text3)}.sidebar-divider{border:none;border-top:1px solid var(--border);margin:12px 0}.main{flex:1 1;overflow-y:auto;padding:32px;max-width:1100px}.actions{display:flex;gap:8px;margin-bottom:24px;flex-wrap:wrap}.btn{padding:8px 16px;border-radius:7px;border:1px solid var(--border2);background:var(--bg3);color:var(--text2);font-family:Sora,sans-serif;font-size:12px;cursor:pointer;transition:all .15s}.btn:hover{background:var(--bg4);color:var(--text);border-color:var(--border2)}.btn-primary{background:var(--blue2);border-color:var(--blue);color:#fff;font-weight:500}.btn-primary:hover{background:var(--blue)}.btn-danger{color:var(--coral)}.overview-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:12px;gap:12px;margin-bottom:32px}.stat-card{background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px 20px}.stat-label{font-size:10px;letter-spacing:.1em;color:var(--text3);text-transform:uppercase;margin-bottom:6px}.stat-label,.stat-value{font-family:JetBrains Mono,monospace}.stat-value{font-size:26px;font-weight:700;line-height:1;margin-bottom:4px}.stat-sub{font-size:11px;color:var(--text3)}.section-heading{display:flex;align-items:center;gap:12px;margin-bottom:20px;margin-top:36px}.section-heading:first-of-type{margin-top:0}.section-tag{font-family:JetBrains Mono,monospace;font-size:10px;letter-spacing:.12em;text-transform:uppercase;padding:3px 10px;border-radius:20px;font-weight:500}.section-title{font-size:18px;font-weight:600;color:var(--text)}.section-dates{margin-left:auto;font-family:JetBrains Mono,monospace;font-size:11px;color:var(--text3)}.phase-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius-lg);margin-bottom:20px;overflow:hidden}.phase-header{padding:16px 20px;display:flex;align-items:center;gap:12px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:background .15s;background:transparent;border:none;width:100%;color:inherit;font-family:Sora,sans-serif;text-align:left}.phase-header:hover{background:var(--bg3)}.phase-number{font-family:JetBrains Mono,monospace;font-size:10px;font-weight:600;letter-spacing:.08em;color:var(--text3)}.phase-title-text{font-size:14px;font-weight:600;flex:1 1;color:var(--text)}.phase-progress-wrap{display:flex;align-items:center;gap:8px}.mini-progress-bar{width:80px;height:4px;background:var(--border);border-radius:2px;overflow:hidden}.mini-progress-fill{height:100%;border-radius:2px;transition:width .3s ease}.phase-pct{font-family:JetBrains Mono,monospace;font-size:10px;color:var(--text3);min-width:30px}.chevron{font-size:16px;color:var(--text3);transition:transform .2s;margin-left:4px}.chevron.open{transform:rotate(180deg)}.phase-body{border-top:1px solid var(--border)}.week-block{padding:16px 20px;border-bottom:1px solid var(--border)}.week-block:last-child{border-bottom:none}.week-label{font-family:JetBrains Mono,monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;margin-bottom:12px;display:flex;align-items:center;gap:8px}.week-date,.week-label{color:var(--text3)}.week-title-text{font-size:13px;font-weight:600;color:var(--text);margin-bottom:10px}.topic-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:6px;gap:6px}@media (max-width:700px){.topic-grid{grid-template-columns:1fr}}.topic-item{display:flex;align-items:flex-start;gap:10px;padding:8px 10px;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg3);cursor:pointer;transition:border-color .15s,background .15s;-webkit-user-select:none;-moz-user-select:none;user-select:none}.topic-item:hover{border-color:var(--border2);background:var(--bg4)}.topic-item.done{border-color:rgba(45,212,160,.3);background:rgba(45,212,160,.05)}.topic-check{width:16px;height:16px;border-radius:4px;border:1.5px solid var(--border2);display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px;transition:all .15s}.topic-item.done .topic-check{background:var(--teal);border-color:var(--teal)}.topic-check-icon{font-size:10px;color:var(--bg)}.topic-text{font-size:12.5px;color:var(--text2);line-height:1.5;flex:1 1}.topic-item.done .topic-text{color:var(--text3);text-decoration:line-through}.topic-index{font-family:JetBrains Mono,monospace;font-size:9px;color:var(--text3);margin-top:2px;flex-shrink:0;min-width:28px}.topic-item.done .topic-index{color:var(--teal)}.info-box{display:flex;gap:10px;background:var(--amber-bg);border:1px solid rgba(245,166,35,.2);border-radius:var(--radius);padding:12px 14px;margin:12px 0 0;font-size:12.5px;color:var(--amber);line-height:1.6}.info-box.blue{background:var(--blue-bg);border-color:rgba(74,158,255,.2);color:var(--blue)}.info-box.teal{background:var(--teal-bg);border-color:rgba(45,212,160,.2);color:var(--teal)}.info-box.coral{background:var(--coral-bg);border-color:hsla(0,100%,71%,.2);color:var(--coral)}.milestone-list{margin-bottom:12px}.milestone-item{display:flex;align-items:flex-start;gap:14px;padding:10px 0;border-bottom:1px solid var(--border)}.milestone-item:last-child{border-bottom:none}.m-date{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--text3);min-width:64px;padding-top:2px}.m-dot{width:10px;height:10px;border-radius:50%;margin-top:4px;flex-shrink:0}.m-text{font-size:13px;line-height:1.5;color:var(--text2)}.m-text.highlight{font-size:14px;font-weight:600}.domain-bars{margin-bottom:16px}.domain-row{display:flex;align-items:center;gap:12px;padding:7px 0;border-bottom:1px solid var(--border)}.domain-row:last-child{border-bottom:none}.domain-name{font-size:12.5px;flex:2 1;color:var(--text2)}.bar-track{flex:3 1;height:6px;background:var(--border);border-radius:3px;overflow:hidden}.bar-fill{height:100%;border-radius:3px}.domain-pct{font-family:JetBrains Mono,monospace;font-size:11px;font-weight:600;min-width:36px;text-align:right}.resource-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:10px;gap:10px;margin-bottom:16px}.resource-card{background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px 16px}.resource-type{font-family:JetBrains Mono,monospace;font-size:9px;letter-spacing:.12em;text-transform:uppercase;margin-bottom:6px;font-weight:600}.resource-name{font-size:13px;font-weight:600;margin-bottom:4px;color:var(--text)}.resource-note{font-size:12px;color:var(--text3);line-height:1.5}.strategy-item{display:flex;gap:12px;padding:10px 0;border-bottom:1px solid var(--border);font-size:13px;line-height:1.6;color:var(--text2)}.strategy-item:last-child{border-bottom:none}.strategy-icon{color:var(--teal);font-size:15px;margin-top:1px;flex-shrink:0}.strategy-item code{font-family:JetBrains Mono,monospace;font-size:11.5px;background:var(--bg4);padding:1px 6px;border-radius:4px;color:var(--blue);white-space:nowrap}.modal-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background:rgba(10,12,16,.85);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.modal-content.advanced-modal{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:650px;max-height:85vh;overflow-y:auto;box-shadow:0 20px 40px rgba(0,0,0,.5);animation:modalIn .2s ease-out}@keyframes modalIn{0%{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-header{padding:20px 24px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:flex-start;gap:16px;background:var(--bg2);position:-webkit-sticky;position:sticky;top:0;z-index:10}.modal-title{font-size:16px;font-weight:700;color:var(--text);line-height:1.4}.modal-close{background:transparent;border:none;color:var(--text3);font-size:20px;cursor:pointer;padding:4px;line-height:1;transition:color .15s}.modal-close:hover{color:var(--coral)}.modal-body{padding:24px}.material-section{margin-bottom:30px}.material-section:last-child{margin-bottom:0}.material-label{font-family:JetBrains Mono,monospace;font-size:10px;font-weight:700;letter-spacing:.12em;color:var(--text3);margin-bottom:12px;display:flex;align-items:center;gap:6px}.def-text{font-size:14px;color:var(--text2);line-height:1.8}.def-text strong{color:var(--blue);font-weight:600}.def-text code{font-family:JetBrains Mono,monospace;font-size:12px;background:var(--bg3);padding:2px 6px;border-radius:4px;color:var(--amber)}.keypoints-list{list-style:none;padding:0;margin:0}.kp-item{display:flex;gap:10px;padding:8px 0;border-bottom:1px solid var(--border);font-size:13.5px;color:var(--text2);line-height:1.6}.kp-item:last-child{border-bottom:none}.kp-dot{font-size:14px;flex-shrink:0;margin-top:1px}.kp-dot,.material-label.example{color:var(--teal)}.codeblock-wrap{position:relative;background:var(--bg4);border:1px solid var(--border);border-radius:8px;padding:16px}.codeblock{font-size:12px;color:#8fafc8;line-height:1.7;overflow-x:auto;white-space:pre;margin:0}.codeblock,.copy-btn{font-family:JetBrains Mono,monospace}.copy-btn{position:absolute;top:12px;right:12px;padding:4px 10px;background:var(--bg3);border:1px solid var(--border);border-radius:4px;font-size:10px;color:var(--text3);cursor:pointer;transition:all .15s}.copy-btn:hover{background:var(--bg2);color:var(--text2)}.practice-section{background:var(--amber-bg);border:1px solid rgba(240,160,48,.2);border-radius:10px;padding:20px}.material-label.practice{color:var(--amber)}.pq-q{font-size:14px;color:var(--text);line-height:1.7;margin-bottom:16px}.ans-toggle{padding:6px 14px;background:var(--bg3);border:1px solid var(--border);border-radius:6px;font-size:11px;color:var(--text3);cursor:pointer;font-family:JetBrains Mono,monospace;transition:all .15s}.ans-toggle:hover{background:var(--bg4);color:var(--text2)}.ans-box{margin-top:12px;background:var(--teal-bg);border:1px solid rgba(31,207,150,.2);border-radius:8px;padding:14px 16px;font-size:13px;color:var(--text2);line-height:1.75}.ans-box code{font-family:JetBrains Mono,monospace;font-size:11.5px;background:var(--bg3);padding:2px 6px;border-radius:4px}.ans-box code,.ans-box strong{color:var(--teal)}.topic-actions{gap:8px}.btn-icon,.topic-actions{display:flex;align-items:center}.btn-icon{background:transparent;border:1px solid var(--border2);color:var(--text3);width:24px;height:24px;border-radius:4px;justify-content:center;cursor:pointer;transition:all .15s;font-size:12px}.btn-icon:hover{background:var(--blue-bg);color:var(--blue);border-color:rgba(74,158,255,.3)}.diagrams-container{padding-top:10px}.diag-intro{background:var(--bg2);border:1px solid var(--border);border-radius:14px;padding:20px 24px;margin-bottom:28px;font-size:13.5px;color:var(--text2);line-height:1.75}.diag-intro strong{color:var(--blue)}.diag-section{margin-bottom:40px}.diag-section-title{font-size:15px;font-weight:700;margin-bottom:16px;display:flex;align-items:center;gap:10px;color:var(--text)}.diag-section-title:after{content:"";flex:1 1;height:1px;background:var(--border)}.diag-box{background:var(--bg2);border:1px solid var(--border);border-radius:14px;padding:24px;margin-bottom:16px;overflow-x:auto}.diag-box svg{display:block;max-width:100%}.diag-caption{font-size:11.5px;color:var(--text3);text-align:center;margin-top:12px;font-family:JetBrains Mono,monospace}.flow-annotation{background:var(--bg3);border:1px solid var(--border);border-radius:10px;padding:14px 18px;margin-top:12px}.fa-row{display:flex;align-items:flex-start;gap:10px;padding:6px 0;border-bottom:1px solid var(--border2);font-size:12.5px;color:var(--text2);line-height:1.6}.fa-row:last-child{border:none}.fa-num{font-family:JetBrains Mono,monospace;font-size:10px;color:var(--blue);background:var(--blue-bg);border-radius:3px;padding:1px 6px;flex-shrink:0;font-weight:700;margin-top:2px}