:root{--bg:#0b0f17;--panel:#121826;--panel-2:#0f1522;--border:#232d42;--text:#e6eaf2;--muted:#93a0b8;--accent:#22d3ee;--accent-2:#a78bfa;--ok:#34d399;--warn:#fbbf24;--danger:#f87171;--radius:12px;--mono:"JetBrains Mono", "Cascadia Code", Consolas, monospace}.career h1{margin:12px 0 16px;font-size:clamp(25px,4vw,36px);line-height:1.35}.career-hero{max-width:850px;padding:28px 0}.career-hero p{color:var(--muted);font-size:16px}.career-grid{grid-template-columns:1fr 1fr;gap:16px;margin:20px 0;display:grid}.career .career-grid .card{margin:0}.career-entry{color:var(--text);flex-direction:column;gap:10px;display:flex}.career-entry:hover{border-color:var(--accent);text-decoration:none}.career-entry p{color:var(--muted);flex:1}.career-entry>span:last-child{color:var(--accent)}.career-links{flex-wrap:wrap;gap:10px 16px;margin-top:16px;font-size:13px;display:flex}.career-tabs{flex-wrap:wrap;gap:8px;margin:0 0 24px;display:flex}.career-block p+p,.career-source p+p{margin-top:12px}.career-list{margin:12px 0;padding-left:24px}.career-list li{padding:5px 0}.career-question h2{margin-top:12px}.career details{border:1px solid var(--border);border-radius:8px;margin:16px 0;padding:12px 14px}.career summary{cursor:pointer;color:var(--accent);font-weight:600}.career details p{margin-top:12px}.career-score{flex-wrap:wrap;align-items:center;gap:10px;margin:18px 0;display:flex}.career-score select{background:var(--panel-2);color:var(--text);border:1px solid var(--border);max-width:100%;font:inherit;border-radius:6px;padding:8px}.career-check{cursor:pointer;align-items:flex-start;gap:12px;margin:16px 0;display:flex}.career-check input{accent-color:var(--accent);flex-shrink:0;width:18px;height:18px;margin-top:7px}.career-evidence{margin-top:3px;display:block}.career-count{margin:20px 0 12px}.career-bottom{margin-top:32px}.career-source-heading{margin-top:30px}.career-source{margin-top:16px}.career-home{border-color:#22d3ee59;margin-bottom:28px}.career-home p{margin:12px 0 16px}.career-question,.career-source,.career-block{overflow-wrap:anywhere;scroll-margin-top:145px}.career .codeblock pre{white-space:pre;overflow:auto}.career-checklist{margin-top:20px}.career-download{margin-bottom:20px}.month-tabs{margin-top:24px}.month-week{margin:36px 0;scroll-margin-top:150px}.month-week-header{border-left:3px solid var(--accent);margin-bottom:18px;padding-left:18px}.month-week-header h2{font-size:23px}.month-week-header p{color:var(--muted);margin-top:8px}.month-sessions{padding-left:24px}.month-sessions li{border-bottom:1px solid var(--border);padding:16px 0}.month-sessions h4{margin-bottom:8px}.month-output{color:var(--muted);margin-top:8px}.month-exam h4{margin:20px 0 8px}.month-exam .badge{margin-left:8px}.month-remedy{border-top:1px solid var(--border);margin-top:16px}.month-plan>.card:last-child{margin-top:24px}.week-tutorial>.card{margin-bottom:24px}.tutorial-section{scroll-margin-top:150px}.week-tutorial h3{margin:20px 0 8px}.week-tutorial p+p{margin-top:12px}.week-tutorial .codeblock{min-width:0;max-width:100%;margin:14px 0}.week-tutorial code{overflow-wrap:anywhere}.week-tutorial .codeblock code{overflow-wrap:normal}.tutorial-check{border-left:3px solid var(--accent);background:var(--panel-2);margin:16px 0;padding:12px 14px}.tutorial-flow{color:var(--accent);margin:16px 0;font-size:18px}.tutorial-terms>div{margin:18px 0}.tutorial-terms dt{font-weight:600}.tutorial-terms dd{color:var(--muted);margin-top:4px}.tutorial-table{width:100%;margin:18px 0;overflow-x:auto}.tutorial-table table{border-collapse:collapse;width:100%;min-width:540px}.tutorial-table th,.tutorial-table td{border-bottom:1px solid var(--border);text-align:left;white-space:nowrap;padding:10px 14px}.tutorial-error{overflow-wrap:anywhere}.career button:focus-visible,.career a:focus-visible,.career summary:focus-visible,.career select:focus-visible{outline:2px solid var(--accent);outline-offset:3px}@media (max-width:720px){.career-grid{grid-template-columns:1fr}.career-tabs .btn{padding:7px 10px}.career-hero{padding:20px 0}.career-question,.career-source,.career-block,.month-week,.tutorial-section{scroll-margin-top:190px}}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:radial-gradient(1200px 500px at 80% -10%, #22d3ee0f, transparent), radial-gradient(900px 400px at 10% 110%, #a78bfa0d, transparent), var(--bg);color:var(--text);min-height:100vh;font-family:-apple-system,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;line-height:1.7}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.container{max-width:1080px;margin:0 auto;padding:24px 20px 80px}.nav{z-index:50;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);background:#0b0f17d9;position:sticky;top:0}.nav-inner{flex-wrap:wrap;align-items:center;gap:20px;max-width:1080px;margin:0 auto;padding:12px 20px;display:flex}.nav-logo{color:var(--text);font-size:17px;font-weight:700}.nav-logo span{color:var(--accent)}.nav-links{flex-wrap:wrap;gap:4px;display:flex}.nav-link{color:var(--muted);border-radius:8px;padding:6px 12px;font-size:14px}.nav-link:hover{color:var(--text);background:var(--panel);text-decoration:none}.nav-link.active{color:var(--accent);background:#22d3ee14}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.card+.card{margin-top:16px}.card h2{margin-bottom:12px;font-size:17px}.card h3{color:var(--accent);margin:14px 0 8px;font-size:15px}.muted{color:var(--muted);font-size:13px}.small{font-size:13px}.grid-2{grid-template-columns:1fr 1fr;gap:16px;display:grid}@media (max-width:720px){.grid-2{grid-template-columns:1fr}}.badge{border:1px solid var(--border);color:var(--muted);background:var(--panel-2);border-radius:999px;margin-right:6px;padding:2px 10px;font-size:12px;display:inline-block}.badge-accent{color:var(--accent);border-color:#22d3ee59}.badge-ok{color:var(--ok);border-color:#34d39959}.badge-warn{color:var(--warn);border-color:#fbbf2459}.btn{border:1px solid var(--border);background:var(--panel-2);color:var(--text);cursor:pointer;border-radius:8px;padding:8px 16px;font-size:14px;transition:all .15s;display:inline-block}.btn:hover{border-color:var(--accent);text-decoration:none}.btn-primary{background:var(--accent);border-color:var(--accent);color:#06202a;font-weight:600}.btn-primary:hover{filter:brightness(1.1)}.btn-ghost{background:0 0}.btn.active{border-color:var(--accent);color:var(--accent)}.btn:disabled{opacity:.5;cursor:not-allowed}.search-controls{flex-wrap:wrap;gap:10px;margin:16px 0;display:flex}.search-controls input,.search-controls select{background:var(--panel-2);border:1px solid var(--border);color:var(--text);min-width:0;font:inherit;border-radius:8px;padding:10px 12px}.search-controls input{flex:1;min-width:min(100%,240px)}.search-controls input:focus,.search-controls select:focus{outline:2px solid var(--accent);outline-offset:2px}.search-result,.glossary-entry{border-bottom:1px solid var(--border);padding:18px 0;scroll-margin-top:130px}.search-result:last-child,.glossary-entry:last-child{border-bottom:0}.search-result h2,.glossary-entry h2{margin:8px 0}.study-notes p,.answer-summary p{white-space:pre-wrap;overflow-wrap:anywhere}.study-notes details,.term-links{margin-top:14px}.answer-summary{border-left:3px solid var(--accent);margin:18px 0}.answer-summary h2{margin-bottom:8px}.outcome-list{padding-left:22px}.codeblock pre{max-height:600px;overflow:auto}@media (max-width:480px){.container{padding:16px 12px 48px}.card{padding:16px}.nav-inner{gap:8px;padding:10px 12px}.nav-links{gap:0}.nav-link{padding:6px 8px;font-size:13px}.q-item{gap:8px;padding:10px}}.topics{overflow-wrap:anywhere}.topic-breadcrumb{color:var(--muted);flex-wrap:wrap;gap:8px;margin:4px 0 8px;font-size:13px;display:flex}.topic-hero{max-width:920px;padding:26px 0 30px}.topic-hero h1{letter-spacing:-.02em;margin:12px 0 16px;font-size:clamp(26px,4vw,38px);line-height:1.35}.topic-hero>p{color:var(--muted);max-width:800px;font-size:16px}.topic-hero .topic-caption{margin-top:18px;font-size:12px}.topic-actions{flex-wrap:wrap;align-items:center;gap:10px 18px;margin-top:20px;display:flex}.topic-eyebrow{color:var(--accent);font:12px var(--mono);letter-spacing:.08em}.topic-feature{border-color:#22d3ee66}.topic-feature h2{margin-top:16px;font-size:24px}.topic-feature>p{max-width:760px;color:var(--muted)}.topic-metrics{grid-template-columns:repeat(3,1fr);gap:20px;max-width:550px;margin:28px 0;display:grid}.topic-metrics div{flex-direction:column;display:flex}.topic-metrics strong{font:32px var(--mono);color:var(--accent)}.topic-metrics span{color:var(--muted);margin-top:8px;font-size:13px}.topic-list{margin:10px 0;padding-left:24px}.topic-list li{padding:5px 0}.topic-note{margin-top:28px}.topic-note p+p{margin-top:12px}.topic-note p{color:var(--muted);font-size:13px}.topic-pipeline{grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:20px 0;list-style:none;display:grid}.topic-pipeline li{background:var(--panel-2);border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:8px;padding:14px 12px;display:flex}.topic-pipeline li>span:last-child{color:var(--muted);font-size:11px}.topic-step-number{font:12px var(--mono);color:var(--accent)}.project-section-heading{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:16px;display:flex}.project-section-heading h2{margin:0;font-size:20px}.topic-routes,.project-library,.topic-architecture{margin-top:32px}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.project-grid>.card{min-width:0;margin:0}.topic-route h3{color:var(--text);margin-top:0;font-size:17px}.topic-route-links{flex-wrap:wrap;gap:8px 24px;margin:16px 0;padding-left:22px;font-size:13px;display:flex}.project-categories{flex-wrap:wrap;gap:8px;display:flex}.project-categories .btn{padding:7px 11px;font-size:13px}.project-categories .btn span{opacity:.7;margin-left:4px}.project-filter-footer{flex-wrap:wrap;align-items:center;gap:10px 20px;display:flex}.project-filter-footer label{color:var(--muted);cursor:pointer;align-items:center;gap:8px;font-size:13px;display:flex}.project-filter-footer input{accent-color:var(--accent);width:16px;height:16px}.project-filter-footer .btn{margin-left:auto;padding:5px 10px;font-size:12px}.project-library>.project-grid{margin-top:18px}.project-card{flex-direction:column;gap:12px;display:flex}.project-card-top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.project-stars{color:var(--warn);font:14px var(--mono);white-space:nowrap}.project-card h3{margin:0;font-size:20px;line-height:1.4}.project-card h3 a{color:var(--text)}.project-card h3 a:hover{color:var(--accent)}.project-repo{color:var(--muted);font:11px var(--mono);margin-top:-5px}.project-description{flex:1;font-size:14px}.project-tags{flex-wrap:wrap;gap:6px;display:flex}.project-tags .badge{margin:0}.project-card-actions{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:4px;padding-top:16px;font-size:13px;display:flex}.project-card-actions .btn{padding:7px 12px;font-size:13px}.project-empty{text-align:center;margin-top:18px;padding:32px}.project-empty .btn{margin-top:16px}.project-detail-meta{color:var(--muted);flex-wrap:wrap;gap:10px 20px;margin:16px 0;font-size:13px;display:flex}.project-learning-context{grid-template-columns:1fr 1fr;gap:20px;display:grid}.project-flow{flex-wrap:wrap;gap:10px;margin:18px 0;list-style:none;display:flex}.project-flow li{background:var(--panel-2);border:1px solid var(--border);border-radius:8px;align-items:baseline;gap:8px;padding:8px 12px;font-size:13px;display:flex}.project-flow li span{color:var(--accent);font:12px var(--mono)}.project-module h3{color:var(--text);font-size:18px}.project-module p{font-size:14px}.project-io{gap:8px;margin:18px 0;font-size:13px;display:grid}.project-io>div{grid-template-columns:36px 1fr;gap:10px;display:grid}.project-io dt{color:var(--muted)}.project-source-link{border-top:1px solid var(--border);flex-direction:column;gap:6px;padding-top:14px;display:flex}.project-source-link code{font:12px/1.6 var(--mono);overflow-wrap:anywhere}.topic-architecture+.card{margin-top:24px}.project-reading li{padding:8px 0 8px 4px}.topic-exercise{border-color:#34d39959}.topic-exercise h2{margin-top:14px}.project-evidence{border-top:1px solid var(--border);color:var(--muted);margin-top:18px;padding-top:14px;font-size:12px}.project-evidence p+p{margin-top:8px}.topic-home{margin:0 0 28px}.topic-home h2{margin-top:12px}.topic-home p{color:var(--muted);margin-bottom:16px;font-size:14px}.topics [id]{scroll-margin-top:150px}.topics :is(a,button,input,select):focus-visible{outline:2px solid var(--accent);outline-offset:3px}@media (max-width:720px){.project-grid,.project-learning-context{grid-template-columns:1fr}.topic-pipeline{grid-template-columns:1fr 1fr}.topic-pipeline li:last-child{grid-column:1/-1}.project-filter-footer .btn{margin-left:0}.topics [id]{scroll-margin-top:200px}.project-module,.project-card{padding:18px}.topic-metrics{gap:12px}.topic-metrics strong{font-size:28px}}.progress-track{background:var(--panel-2);border-radius:999px;height:8px;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--accent), var(--accent-2));border-radius:999px;height:100%;transition:width .3s}.q-item{border:1px solid var(--border);background:var(--panel-2);border-radius:10px;align-items:center;gap:12px;margin-bottom:8px;padding:12px 14px;transition:border-color .15s;display:flex}.q-item:hover{border-color:var(--accent)}.q-status{text-align:center;flex:none;width:24px;font-size:16px}.q-title{flex:1;min-width:0}.q-title a{color:var(--text);font-size:15px}.q-title a:hover{color:var(--accent)}.q-meta{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.diff-dots{letter-spacing:2px;color:var(--accent);font-size:11px}.diff-dots .off{color:var(--border)}.tabs{flex-wrap:wrap;gap:6px;margin:16px 0;display:flex}.tab{cursor:pointer;border:1px solid var(--border);background:var(--panel-2);color:var(--muted);border-radius:8px;padding:8px 14px;font-size:14px}.tab:hover{color:var(--text)}.tab.active{color:var(--accent);background:#22d3ee0f;border-color:#22d3ee80}.narrative{flex-direction:column;gap:14px;display:flex}.narr-block{border-left:3px solid var(--border);padding-left:14px}.narr-block>.narr-label{color:var(--accent);letter-spacing:1px;margin-bottom:4px;font-size:12px}.narr-block.bg-question{border-color:var(--warn)}.narr-block.bg-question>.narr-label{color:var(--warn)}.narr-block.bg-concept{border-color:var(--ok)}.narr-block.bg-concept>.narr-label{color:var(--ok)}.formula{font-family:var(--mono);background:var(--panel-2);border:1px dashed var(--border);border-radius:8px;margin:8px 0;padding:12px 16px;font-size:14px;overflow-x:auto}.codeblock{border:1px solid var(--border);background:#0a0e16;border-radius:10px;margin:10px 0;overflow:hidden}.codeblock .code-lang{color:var(--muted);border-bottom:1px solid var(--border);font-size:12px;font-family:var(--mono);padding:6px 12px}.codeblock pre{font-family:var(--mono);color:#cfe3f5;margin:0;padding:14px 16px;font-size:13px;line-height:1.6;overflow-x:auto}.banner{border-radius:10px;flex-wrap:wrap;align-items:center;gap:10px;margin:12px 0;padding:12px 16px;font-size:14px;display:flex}.banner-warn{color:var(--warn);background:#fbbf2414;border:1px solid #fbbf244d}.banner-ok{color:var(--ok);background:#34d39914;border:1px solid #34d3994d}.banner-info{color:var(--accent);background:#22d3ee12;border:1px solid #22d3ee4d}.graph-wrap{border:1px solid var(--border);border-radius:var(--radius);background:var(--panel-2);overflow-x:auto}.graph-node{cursor:pointer}.graph-node rect{fill:var(--panel);stroke:var(--border);rx:8}.graph-node.mastered rect{stroke:var(--ok);fill:#34d3991f}.graph-node.learning rect{stroke:var(--warn);fill:#fbbf241a}.graph-node text{fill:var(--text);font-size:11px}.graph-node:hover rect{stroke:var(--accent)}.graph-edge-prereq{stroke:var(--accent);stroke-opacity:.55;fill:none}.graph-edge-related{stroke:var(--accent-2);stroke-opacity:.35;stroke-dasharray:4 4;fill:none}.legend{color:var(--muted);flex-wrap:wrap;gap:16px;margin-top:10px;font-size:13px;display:flex}.chat-box{border:1px solid var(--border);border-radius:var(--radius);background:var(--panel-2);flex-direction:column;height:520px;display:flex;overflow:hidden}.chat-log{flex-direction:column;flex:1;gap:12px;padding:16px;display:flex;overflow-y:auto}.msg{white-space:pre-wrap;border-radius:12px;max-width:88%;padding:10px 14px;font-size:14px}.msg.user{background:#22d3ee1f;border:1px solid #22d3ee4d;align-self:flex-end}.msg.assistant{background:var(--panel);border:1px solid var(--border);align-self:flex-start}.chat-input{border-top:1px solid var(--border);gap:8px;padding:12px;display:flex}.chat-input textarea{background:var(--bg);border:1px solid var(--border);color:var(--text);resize:none;border-radius:8px;flex:1;padding:8px 12px;font-family:inherit;font-size:14px}.chat-input textarea:focus{border-color:var(--accent);outline:none}.hero{background:linear-gradient(135deg, #22d3ee12, #a78bfa0f), var(--panel);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:24px;padding:24px;display:flex}.hero-level{flex:1;min-width:260px}.hero-level h1{margin-bottom:6px;font-size:22px}.hero-stats{flex-wrap:wrap;gap:12px;margin-top:14px;display:flex}.stat-pill{background:var(--panel-2);border:1px solid var(--border);text-align:center;border-radius:10px;min-width:82px;padding:8px 14px}.stat-pill .num{color:var(--accent);font-size:20px;font-weight:700}.stat-pill .lbl{color:var(--muted);font-size:12px}.stage-row{border:1px solid var(--border);background:var(--panel-2);border-radius:10px;align-items:center;gap:14px;margin-bottom:10px;padding:14px 16px;display:flex}.stage-row.locked{opacity:.55}.stage-num{width:34px;height:34px;color:var(--accent);background:#22d3ee1a;border-radius:10px;flex:none;justify-content:center;align-items:center;font-weight:700;display:flex}.stage-main{flex:1;min-width:0}.ring{transform:rotate(-90deg)}.ring circle{fill:none}.ring .track{stroke:var(--panel-2)}.ring .fill{stroke:var(--accent);stroke-linecap:round;transition:stroke-dashoffset .4s}.stage-header{margin-bottom:18px}.stage-header h1{margin:6px 0;font-size:24px}.outcome-list{margin:8px 0 0 18px}.outcome-list li{margin:4px 0;font-size:14px}.q-header h1{margin:8px 0 12px;font-size:24px}.mastery-row{flex-wrap:wrap;align-items:center;gap:8px;margin:14px 0;display:flex}.chip{background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:999px;margin:3px 4px 3px 0;padding:3px 12px;font-size:13px;display:inline-block}.chip-link:hover{border-color:var(--accent);color:var(--accent)}.practice-box{border:1px dashed var(--border);border-radius:10px;margin-top:8px;padding:16px}details summary{cursor:pointer;color:var(--accent);font-size:14px}.footer{text-align:center;color:var(--muted);padding:30px 0 20px;font-size:12px}
