:root{--bg:#0f1020;--bg2:#161830;--card:#1c1f3a;--card2:#242848;--border:#2f3460;--fg:#e8e9f5;--muted:#9a9dc0;--accent:#7c5cff;--accent2:#a48bff;--good:#22c55e;--bad:#ef4444;--warn:#f59e0b;--ill-text:#e8e9f5;--ill-muted:#9a9dc0;--ill-line:#8b8fbd;--accent-fill:#7758f4;--accent-fill-hover:#684dd6;--bad-text:#f87171;--focus:#facc15;--mono:"JetBrains Mono", "Cascadia Code", "Fira Code", Consolas, monospace;--radius:14px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--bg:#f4f5fb;--bg2:#eceef8;--card:#fff;--card2:#f3f4fb;--border:#dcdff0;--fg:#1b1d33;--muted:#62668a;--accent:#6d4aff;--accent2:#5a36f0;--ill-text:#1b1d33;--ill-muted:#5c6085;--ill-line:#7a7ea6;--accent-fill:#6d4aff;--accent-fill-hover:#5f41e0;--bad-text:#b91c1c;--focus:#1d4ed8;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--fg);-webkit-font-smoothing:antialiased;font:15px/1.6 Inter,Segoe UI,system-ui,-apple-system,sans-serif}a{color:var(--accent2);text-decoration:none}a:hover{text-decoration:underline}h1{margin:.3em 0;font-size:1.8rem;line-height:1.25}h2{margin:1.4em 0 .6em;font-size:1.3rem}h3{margin:.2em 0 .6em}code,pre{font-family:var(--mono);tab-size:4;font-size:.88em}.muted{color:var(--muted)}.small{font-size:.85rem}.big{font-size:1.35rem;font-weight:700}.big-emoji{font-size:2.6rem;line-height:1.1}.grow{flex:1;min-width:0}.spacer{flex:1}.row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}button,.primary-btn{font:inherit;background:var(--card2);color:var(--fg);border:1px solid var(--border);cursor:pointer;border-radius:10px;align-items:center;gap:6px;padding:8px 14px;transition:transform 80ms,background .15s,border-color .15s;display:inline-flex}button:hover:not(:disabled){border-color:var(--accent)}button:active:not(:disabled){transform:scale(.97)}button:disabled{opacity:.45;cursor:not-allowed}button.primary,.primary-btn{background:var(--accent-fill);border-color:var(--accent-fill);color:#fff;font-weight:600}button.primary:hover:not(:disabled),.primary-btn:hover{background:var(--accent-fill-hover);text-decoration:none}button.ghost{background:0 0}button.small{padding:4px 10px;font-size:.82rem}button.big{padding:12px 26px;font-size:1.05rem}button.danger{border-color:var(--bad);color:var(--bad-text);background:0 0}button.active{background:var(--accent-fill);color:#fff;border-color:var(--accent-fill)}input,select{font:inherit;background:var(--bg2);color:var(--fg);border:1px solid var(--border);border-radius:10px;padding:8px 12px}input:focus,select:focus{outline:2px solid var(--accent);outline-offset:-1px}input[type=range]{accent-color:var(--accent);padding:0}.pill{background:var(--card2);border:1px solid var(--border);color:var(--muted);border-radius:99px;margin-left:8px;padding:2px 8px;font-size:.72rem;display:inline-block}.pill.gold{color:#facc15;border-color:#facc15}.pill.green{color:var(--good);border-color:var(--good)}.app{height:100%;display:flex}.sidebar{background:var(--bg2);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:220px;padding:16px 12px;display:flex}.brand{align-items:center;gap:10px;padding:4px 8px 18px;font-size:1.25rem;font-weight:800;display:flex}.sidebar nav{flex-direction:column;gap:2px;display:flex}.sidebar nav a{color:var(--fg);border-radius:10px;align-items:center;gap:10px;padding:9px 12px;display:flex}.sidebar nav a:hover{background:var(--card);text-decoration:none}.sidebar nav a.active{background:var(--accent-fill);color:#fff;font-weight:600}.nav-icon{text-align:center;width:22px}.sidebar-foot{margin-top:auto;padding:8px}.nav-toggle{display:none}.main{flex:1;min-width:0;overflow-y:auto}.content{max-width:1300px;margin:0 auto;padding:20px 28px 80px}.topbar{z-index:10;background:color-mix(in srgb, var(--bg) 85%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:10px 28px;display:flex;position:sticky;top:0}.level-chip{align-items:center;gap:10px;display:flex}.lv{background:var(--accent-fill);color:#fff;border-radius:8px;padding:2px 10px;font-weight:800}.xpbar{background:var(--card2);border:1px solid var(--border);border-radius:99px;width:180px;height:10px;overflow:hidden}.xpbar>div{background:linear-gradient(90deg, var(--accent), #ec4899);height:100%;transition:width .6s}.chip{background:var(--card);border:1px solid var(--border);white-space:nowrap;border-radius:99px;padding:4px 12px;font-size:.9rem;font-weight:600}.chip.fire{border-color:#f97316;box-shadow:0 0 12px #f9731655}.chip.potion{border-color:#a855f7;animation:2s infinite pulse}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);color:inherit;padding:18px 20px;display:block}a.card:hover{border-color:var(--accent);text-decoration:none;transform:translateY(-2px)}a.card{transition:transform .15s,border-color .15s}.card.inset{background:var(--bg2);margin-top:24px}.grid-3{grid-template-columns:repeat(3,1fr);gap:16px;margin:16px 0;display:grid}.grid-2{grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:16px;display:grid}.stat-row{text-align:center;justify-content:space-around;margin:6px 0 12px;display:flex}.quest{align-items:center;gap:10px;margin:8px 0;display:flex}.quest-main{flex:1}.qbar{background:var(--card2);border-radius:99px;height:6px;margin-top:4px;overflow:hidden}.qbar>div{background:var(--good);height:100%;transition:width .4s}.continue{border-width:2px;flex-direction:column;gap:6px;display:flex}.continue .primary-btn{align-self:flex-start;margin-top:8px}.heatmap{grid-template-rows:repeat(7,13px);grid-auto-columns:13px;grid-auto-flow:column;gap:3px;padding-bottom:4px;display:grid;overflow-x:auto}.hm{background:var(--card2);border-radius:3px}.hm.l1{background:#7c5cff55}.hm.l2{background:#7c5cff99}.hm.l3{background:#7c5cffcc}.hm.l4{background:#a48bff}.track-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;display:grid}.track-card{border-top:4px solid;padding:14px 16px}.track-icon{font-size:1.8rem}.skillmap{padding-left:8px;position:relative}.skillmap:before{content:"";background:linear-gradient(var(--accent), #ec4899, #f59e0b);opacity:.5;border-radius:3px;width:3px;position:absolute;top:10px;bottom:10px;left:27px}.tier{grid-template-columns:220px 1fr;gap:16px;margin-bottom:22px;display:grid;position:relative}.tier-label{align-items:flex-start;gap:12px;display:flex}.tier-num{background:var(--accent-fill);color:#fff;z-index:1;width:40px;height:40px;box-shadow:0 0 0 5px var(--bg);border-radius:50%;flex-shrink:0;place-items:center;font-weight:800;display:grid}.tier-tracks{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;display:grid}.node{background:var(--card);border:2px solid var(--border);border-radius:var(--radius);color:inherit;align-items:center;gap:14px;padding:12px 14px;transition:transform .15s,border-color .15s;display:flex}.node:hover{border-color:var(--c);text-decoration:none;transform:translateY(-2px)}.node.started{border-color:color-mix(in srgb, var(--c) 50%, var(--border))}.node.mastered{border-color:var(--c);box-shadow:0 0 18px color-mix(in srgb, var(--c) 35%, transparent)}.track-head{border-left:5px solid;flex-wrap:wrap;align-items:center;gap:20px;margin:12px 0 20px;padding:10px 0 10px 20px;display:flex}.lesson-list{flex-direction:column;gap:8px;padding:0;list-style:none;display:flex}.lesson-row{background:var(--card);border:1px solid var(--border);color:inherit;border-radius:12px;align-items:center;gap:14px;padding:12px 16px;display:flex}a.lesson-row:hover{border-color:var(--accent);text-decoration:none}.lesson-row.locked{opacity:.5}.lesson-dot{background:var(--card2);border:2px solid var(--border);border-radius:50%;flex-shrink:0;place-items:center;width:34px;height:34px;font-weight:700;display:grid}.lesson-dot.open{border-color:var(--accent);color:var(--accent2)}.lesson-dot.done{background:var(--good);border-color:var(--good);color:#fff}.placement{border-color:var(--accent);margin-bottom:20px}.crumbs{margin-bottom:10px}.lesson-grid{grid-template-columns:minmax(0,860px);justify-content:center;gap:18px;display:grid}.lesson-grid.split{grid-template-columns:minmax(0,1fr) minmax(0,1fr);justify-content:stretch;align-items:start}.lesson-grid.split .lesson-ex{position:sticky;top:70px}.lesson-body{padding:24px 28px}.lesson-nav{justify-content:space-between;gap:12px;margin-top:20px;display:flex}.complete-banner{border-color:var(--good);flex-wrap:wrap;align-items:center;gap:16px;margin-top:18px;animation:.4s popIn;display:flex}.locked-card{text-align:center;max-width:500px;margin:60px auto}.md{line-height:1.7}.md p{margin:.7em 0}.md table{border-collapse:collapse;width:100%;margin:1em 0;font-size:.92rem;display:block;overflow-x:auto}.md th,.md td{border:1px solid var(--border);text-align:left;vertical-align:top;padding:7px 10px}.md th{background:var(--card2)}.md pre{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:12px 14px;line-height:1.5;overflow-x:auto}.md :not(pre)>code{background:var(--card2);border:1px solid var(--border);border-radius:6px;padding:1px 6px}.md blockquote{border-left:4px solid var(--accent);background:var(--bg2);border-radius:0 10px 10px 0;margin:1em 0;padding:10px 16px}.md blockquote p{margin:0}.md ul,.md ol{padding-left:1.4em}.md li{margin:.25em 0}.ill{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);margin:1.3em 0;padding:14px}.ill svg{width:100%;height:auto;max-height:380px;display:block}.ill figcaption{color:var(--muted);text-align:center;margin-top:8px;font-size:.82rem}.bits{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.bit{flex-direction:column;justify-content:center;gap:2px;width:54px;height:70px;padding:0}.bit .bit-val{font-size:1.6rem;font-weight:800;font-family:var(--mono)}.bit .bit-weight{color:var(--muted);font-size:.72rem}.bit.on{background:var(--accent-fill);border-color:var(--accent-fill);color:#fff;box-shadow:0 0 14px #7c5cff88}.bit.on .bit-weight{color:#fff}.bits-result{flex-wrap:wrap;justify-content:center;gap:18px;margin-top:12px;display:flex}@keyframes pulse{0%,to{opacity:1}50%{opacity:.55}}@keyframes popIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes stackIn{0%{opacity:0;transform:translateY(-20px)}10%,75%{opacity:1;transform:translateY(0)}90%,to{opacity:0;transform:translateY(-20px)}}.pop-in{animation:.3s popIn}.viz{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);margin:1.2em 0;padding:14px}.viz-controls{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;display:flex}.viz-controls label{align-items:center;gap:8px;display:flex}.viz-svg{width:100%;height:auto;max-height:360px;display:block}.viz-msg{margin:10px 0 0;font-size:.9rem}.viz-table{border-collapse:collapse;width:100%;font-size:.85rem}.viz-table td{padding:3px 6px}.bar{border-radius:99px;height:10px;transition:width .3s}.bars{align-items:flex-end;gap:3px;height:220px;display:flex}.sbar{border-radius:4px 4px 0 0;flex:1;transition:height .1s,background .1s}.cell{background:var(--card2);border:2px solid var(--border);min-width:42px;height:42px;font-weight:700;font-family:var(--mono);border-radius:8px;place-items:center;display:grid}.cell.top{border-color:var(--warn)}.sq-grid{grid-template-columns:1fr 2fr;gap:20px;display:grid}.sq-grid h4{margin:0 0 8px}.stack-col{border-left:3px solid var(--border);border-bottom:3px solid var(--border);border-right:3px solid var(--border);flex-direction:column-reverse;align-items:flex-start;gap:4px;width:70px;min-height:150px;padding:6px;display:flex}.stack-col .cell{width:52px}.queue-row{flex-wrap:wrap;align-items:center;gap:6px;min-height:54px;display:flex}.bs-row{grid-template-columns:repeat(16,1fr);gap:4px;display:grid}.bs-row .cell{text-align:center;min-width:0;height:52px;font-size:.85rem;line-height:1.1}.bs-row .cell small{color:var(--muted);font-size:.65rem;font-weight:400}.bs-row .cell.out{opacity:.25}.bs-row .cell.mid{border-color:var(--warn);background:#f59e0b33}.bs-row .cell.found{border-color:var(--good);background:#22c55e44}.tag{background:var(--accent-fill);color:#fff;border-radius:99px;margin-bottom:6px;padding:2px 10px;font-size:.75rem;font-weight:700;display:inline-block}.ex-prompt .md p:first-child{margin-top:4px}.editor{border:1px solid var(--border);border-radius:10px;margin:10px 0;font-size:14px;overflow:hidden}.ex-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.hints{flex-direction:column;gap:6px;margin-top:10px;display:flex}.hint{background:#f59e0b1f;border:1px solid #f59e0b66;border-radius:10px;padding:8px 12px;font-size:.9rem}.console{color:#e8e9f5;border:1px solid var(--border);background:#0b0c18;border-radius:10px;max-height:320px;margin-top:12px;padding:10px 14px;overflow:auto}.console pre{white-space:pre-wrap;word-break:break-word;margin:0}.console pre.err{color:#fca5a5}.console details.warnings{margin-top:6px}.console details.warnings summary{cursor:pointer;color:#fcd34d;font-size:.85rem}.console details.warnings pre{color:#fde68a}.console.pass{border-color:var(--good)}.console.fail{border-color:var(--bad)}.verdict{white-space:pre-wrap;margin-bottom:6px;font-weight:700}.verdict.ok{color:#4ade80}.verdict.bad{color:#fca5a5}.table-wrap{overflow-x:auto}.console table{border-collapse:collapse;font-family:var(--mono);margin:4px 0 8px;font-size:.85rem}.console th,.console td{text-align:left;border:1px solid #2f3460;padding:3px 10px}.console th{background:#1c1f3a}.quiz-progress{gap:6px;margin-bottom:10px;display:flex}.quiz-progress span{background:var(--card2);border-radius:99px;flex:1;height:6px}.quiz-progress span.done{background:var(--good)}.quiz-progress span.cur{background:var(--accent)}.quiz-q{font-size:1.1rem}.quiz-opts{flex-direction:column;gap:8px;margin-bottom:12px;display:flex}.opt{text-align:left;justify-content:flex-start;padding:10px 14px}.opt-key{color:var(--accent2);width:20px;font-weight:800}.opt.right{border-color:var(--good);background:#22c55e22}.opt.wrong{border-color:var(--bad);background:#ef444422;animation:.3s shake}@keyframes shake{25%{transform:translate(-4px)}75%{transform:translate(4px)}}.feedback{border-radius:10px;margin-bottom:12px;padding:10px 14px;font-size:.92rem}.feedback.ok{background:#22c55e1f;border:1px solid #22c55e66}.feedback.bad{background:#ef44441f;border:1px solid #ef444466}.quiz-done{text-align:center;padding:10px}.missions ol{flex-direction:column;gap:6px;margin:10px 0;padding:0;list-style:none;display:flex}.missions li{border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;padding:6px 10px;font-size:.92rem;display:flex}.missions li.cur{border:1px solid var(--accent);background:#7c5cff22}.missions li.done{opacity:.6}.missions li.todo{opacity:.55}.missions .m-text{flex:1;min-width:160px}.terminal{color:#d4d7f0;font-family:var(--mono);border:1px solid var(--border);cursor:text;background:#0b0c18;border-radius:10px;height:360px;padding:12px 14px;font-size:13.5px;overflow-y:auto}.terminal pre{white-space:pre-wrap;word-break:break-word;margin:0;font-size:13.5px}.terminal pre.err{color:#fca5a5}.terminal pre.sys{color:#a3e635}.terminal .prompt{color:#4ade80;white-space:nowrap;font-weight:700}.input-line{align-items:center;gap:8px;display:flex}.input-line input{color:inherit;font:inherit;background:0 0;border:none;outline:none;flex:1;padding:0}.tutor-fab{background:var(--accent);z-index:30;border:none;border-radius:50%;justify-content:center;width:58px;height:58px;font-size:1.8rem;position:fixed;bottom:24px;right:24px;box-shadow:0 6px 24px #0007}.tutor{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);z-index:30;flex-direction:column;width:min(420px,100vw - 32px);height:min(560px,100vh - 140px);animation:.2s popIn;display:flex;position:fixed;bottom:92px;right:24px;box-shadow:0 12px 40px #0008}.tutor-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:12px 14px;display:flex}.tutor-body{flex-direction:column;flex:1;gap:10px;padding:12px 14px;display:flex;overflow-y:auto}.tutor-suggest{flex-wrap:wrap;gap:6px;display:flex}.bubble{border-radius:12px;max-width:92%;padding:8px 12px;font-size:.92rem}.bubble.user{background:var(--accent-fill);color:#fff;align-self:flex-end}.bubble.assistant{background:var(--card2);align-self:flex-start}.bubble .md p{margin:.3em 0}.tutor-input{border-top:1px solid var(--border);gap:8px;padding:10px;display:flex}.tutor-input input{flex:1}.toasts{z-index:50;pointer-events:none;flex-direction:column;gap:8px;display:flex;position:fixed;top:64px;right:20px}.toast{background:var(--card);border:1px solid var(--border);border-left:5px solid var(--accent);border-radius:12px;min-width:240px;padding:10px 16px;font-size:.9rem;animation:.3s slideIn;box-shadow:0 8px 28px #0006}.toast.xp{border-left-color:#facc15}.toast.level{background:linear-gradient(90deg, #ec489922, var(--card));border-left-color:#ec4899}.toast.achievement{border-left-color:var(--good);background:linear-gradient(90deg, #22c55e22, var(--card))}.toast.error{border-left-color:var(--bad)}@keyframes slideIn{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:none}}.tabs{flex-wrap:wrap;gap:6px;margin:10px 0 16px;display:flex}.flashcard{background:var(--card);border:2px solid var(--border);cursor:pointer;text-align:center;border-radius:18px;flex-direction:column;justify-content:center;gap:14px;min-height:220px;margin:12px 0;padding:26px;font-size:1.15rem;transition:border-color .2s;display:flex}.flashcard.flipped{border-color:var(--accent);cursor:default}.fc-front{font-weight:700}.fc-back{border-top:1px dashed var(--border);padding-top:14px;animation:.25s popIn}.grade-row{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.grade-row .g0{border-color:var(--bad)}.grade-row .g1{border-color:var(--warn)}.grade-row .g2{border-color:var(--good)}.grade-row .g3{border-color:#06b6d4}.empty{text-align:center}.review{max-width:760px;margin:0 auto}.atlas-controls{background:var(--bg);z-index:5;flex-wrap:wrap;align-items:center;gap:14px;margin:14px 0;padding:8px 0;display:flex;position:sticky;top:52px}.search{flex:1;min-width:240px}.toggles{flex-wrap:wrap;gap:12px;display:flex}.toggle{cursor:pointer;align-items:center;gap:4px;font-size:.88rem;display:flex}.atlas-cat{margin-bottom:14px}table.atlas{border-collapse:collapse;width:100%;font-size:.86rem}table.atlas th,table.atlas td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:7px 8px}table.atlas th{color:var(--muted);white-space:nowrap;font-weight:600}table.atlas td:first-child{min-width:160px}code.cmd{background:var(--bg2);border:1px solid var(--border);cursor:pointer;word-break:break-word;border-radius:6px;padding:2px 6px;display:inline-block}code.cmd:hover{border-color:var(--accent)}code.cmd.copied{border-color:var(--good);background:#22c55e22}.lab-grid,.shop-grid,.ach-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;display:grid}.lab-card,.shop-item,.ach{text-align:center;flex-direction:column;align-items:center;gap:6px;display:flex}.shop-item button{margin-top:auto}.ach.locked{opacity:.5}.ach.got{border-color:var(--good)}table.stats{border-collapse:collapse;width:100%}table.stats td{border-bottom:1px solid var(--border);padding:6px 4px}.settings section{margin-bottom:14px}.settings label.row{margin-top:10px}.welcome{background:radial-gradient(circle at 30% 20%, #7c5cff33, transparent 50%), radial-gradient(circle at 80% 80%, #ec489922, transparent 50%), var(--bg);place-items:center;min-height:100%;padding:24px 16px;display:grid}.welcome-card{text-align:center;flex-direction:column;align-items:center;gap:14px;max-width:640px;display:flex}.welcome-card h1{margin:0;font-size:2.4rem}.lead{color:var(--muted);font-size:1.1rem}.welcome-features{text-align:left;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 24px;width:100%;max-width:560px;margin:6px 0;display:grid}.welcome-features>div{grid-template-columns:1.7em 1fr;align-items:baseline;line-height:1.35;display:grid}.welcome-name{flex-direction:column;gap:8px;width:100%;max-width:360px;font-weight:600;display:flex}.welcome-name input{text-align:center;padding:12px;font-size:1.1rem}@media (width<=1100px){.lesson-grid.split{grid-template-columns:minmax(0,1fr)}.lesson-grid.split .lesson-ex{position:static}.grid-3{grid-template-columns:1fr 1fr}}@media (width<=780px){.sidebar{z-index:40;transition:transform .2s;position:fixed;inset:0 auto 0 0;transform:translate(-100%)}.nav-open .sidebar{transform:none;box-shadow:8px 0 30px #0008}.nav-toggle{z-index:41;padding:6px 10px;display:inline-flex;position:fixed;top:8px;left:10px}.topbar{padding-left:60px;padding-right:16px}.xpbar{width:70px}.level-chip .small{display:none}.content{padding:16px 16px 90px}.grid-3,.grid-2,.welcome-features,.tier{grid-template-columns:1fr}.skillmap:before{display:none}.lesson-body{padding:18px 16px}.sq-grid{grid-template-columns:1fr}.bs-row{grid-template-columns:repeat(8,1fr)}.chip{padding:3px 8px;font-size:.8rem}h1{font-size:1.5rem}}@media (width<=480px){.chip.xp-total,.xpbar{display:none}.topbar{gap:6px}}.field{flex-direction:column;gap:6px;margin:12px 0;font-size:.92rem;font-weight:600;display:flex}.field>a{align-self:flex-start;font-weight:400}.field input,.field select{font-weight:400}details{margin-top:12px}details summary{cursor:pointer}:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:4px}.cm-editor.cm-focused{outline:2px solid var(--focus)}p a:not(.primary-btn):not(.chip),li a:not(.primary-btn),.md a,.small>a,.agent-input-off a,.ai-review>a,td a{text-underline-offset:2px;text-decoration:underline}.cm-editor .cm-activeLine{box-shadow:inset 3px 0 0 var(--accent);background-color:#0000}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.opt.tried{opacity:.55;text-decoration:line-through}.feedback .nudge{margin-top:6px;font-weight:400}.quiz-code{background:var(--card2);border-radius:8px;margin:0 0 12px;padding:10px 12px;font-size:.9rem;overflow-x:auto}.step-tabs{flex-wrap:wrap;gap:6px;margin-bottom:6px;display:flex}.step-tab{background:var(--card2);border-radius:99px;padding:5px 10px;font-size:.85rem}.step-tab.cur{outline:2px solid var(--accent)}.step-tab.done{color:var(--good)}.step-count{margin-bottom:8px}.stdin-note{margin:8px 0}.stdin-note pre{background:var(--card2);border-radius:6px;margin:4px 0 0;padding:6px 10px}.stdin-box{margin:8px 0;display:block}.stdin-box textarea{width:100%;font-family:var(--mono,monospace);background:var(--card2);color:inherit;border:1px solid var(--border,#333);resize:vertical;border-radius:6px;margin-top:6px;padding:6px 8px}.runnable{border:1px solid var(--border);background:var(--bg);border-radius:10px;margin:12px 0 16px;overflow:hidden}.runnable .runnable-code{border:0;border-radius:0;margin:0;padding:12px 14px;line-height:1.5;overflow-x:auto}.runnable-bar{border-top:1px solid var(--border);background:var(--card2);flex-wrap:wrap;align-items:center;gap:6px;padding:6px 10px;display:flex}.runnable-bar button.small{padding:4px 10px;font-size:.82rem}.runnable .console,.runnable .trace,.runnable .stdin-box,.runnable-hint{margin:8px 10px 10px}.runnable-hint{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.inline-check{border:1px dashed var(--accent);background:color-mix(in srgb, var(--accent) 7%, transparent);border-radius:12px;margin:16px 0;padding:12px 14px}.ic-title{margin-bottom:6px;font-weight:700}.ic-q+.ic-q{border-top:1px solid var(--border);margin-top:12px;padding-top:10px}.ic-question{margin-bottom:6px}.ic-opts{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.ic-opts .opt{padding:6px 12px}.goals{background:var(--card2);border-left:3px solid var(--accent);border-radius:10px;margin:12px 0 4px;padding:10px 14px}.goals ul{margin:6px 0 0;padding-left:20px}.trace{border:1px solid var(--accent);background:var(--bg);border-radius:12px;outline:none;margin-top:12px;padding:10px 12px}.trace-head{align-items:center;gap:10px;display:flex}.trace-controls{flex-wrap:wrap;align-items:center;gap:6px;margin:8px 0;display:flex}.trace-controls input[type=range]{flex:1;min-width:120px}.trace-body{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:12px;display:grid}.trace-code{font-family:var(--mono);color:#e8e9f5;background:#0b0c18;border-radius:8px;max-height:420px;margin:0;padding:8px 0;font-size:.84rem;overflow-x:auto}.trace-code .tl{white-space:pre;padding:0 10px}.trace-code .tl.cur{background:#7c5cff44}.trace-code .tl.prev{background:#ffffff10}.trace-code .ln{color:#6b6f99;-webkit-user-select:none;user-select:none;width:2.4em;display:inline-block}.trace-code .arrow{color:#fbbf24;width:1.4em;display:inline-block}.trace-side{flex-direction:column;gap:8px;min-width:0;display:flex}.trace-frame{border:1px solid var(--border);border-radius:8px;padding:6px 8px}.trace-frame.top{border-color:var(--accent)}.trace-frame-name{margin-bottom:4px;font-size:.86rem;font-weight:700}.trace-frame table{border-collapse:collapse;width:100%;font-size:.82rem}.trace-frame td{vertical-align:top;border-top:1px solid var(--border);padding:2px 6px}.trace-frame td:first-child{font-family:var(--mono);color:var(--accent2);width:30%}.trace-frame td code{white-space:pre-wrap;word-break:break-word}.trace-frame tr.changed td{background:#fbbf2426}.trace-note{background:var(--card2);border-radius:8px;padding:6px 10px;font-size:.86rem}.trace-note.bad{background:#ef44441f;border:1px solid #ef444466}.trace-out pre{color:#e8e9f5;white-space:pre-wrap;background:#0b0c18;border-radius:6px;max-height:140px;margin:2px 0 0;padding:6px 8px;overflow:auto}.trace-help{margin:8px 0 0}@media (width<=900px){.trace-body{grid-template-columns:minmax(0,1fr)}}.parsons-cols{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;margin:8px 0 10px;display:grid}.parsons-col{border:1px dashed var(--border);border-radius:10px;flex-direction:column;gap:6px;min-height:120px;padding:8px;display:flex}.parsons-col.program{border-style:solid;border-color:var(--accent)}.pline{text-align:left;background:var(--card2);border:1px solid var(--border);cursor:grab;border-radius:8px;justify-content:space-between;align-items:center;gap:6px;padding:6px 8px;display:flex}.pline code{white-space:pre;font-family:var(--mono);background:0 0;font-size:.85rem;overflow-x:auto}.pline-tools{flex-shrink:0;gap:2px;display:flex}.pline-tools button{padding:2px 6px}.parsons-empty{text-align:center;margin:auto}@media (width<=700px){.parsons-cols{grid-template-columns:minmax(0,1fr)}}.fill-code{font-family:var(--mono);color:#e8e9f5;white-space:pre;background:#0b0c18;border-radius:10px;padding:12px 14px;font-size:.88rem;line-height:1.9;overflow-x:auto}.fill-code .blank{font:inherit;color:#fde68a;background:#ffffff14;border:0;border-bottom:2px solid #fbbf24;border-radius:4px 4px 0 0;margin:0 1px;padding:0 4px}.fill-code .blank:focus{outline:2px solid var(--accent)}.diff-why{background:#fbbf241f;border:1px solid #fbbf2466;border-radius:8px;margin:6px 0;padding:6px 10px}.diff-table{width:100%}.diff-table td{vertical-align:top}.diff-table td pre{white-space:pre-wrap;word-break:break-word;margin:0}.diff-table tr.diff-bad td{background:#ef44441f}.diff-table td:first-child{color:#6b6f99;width:2.5em}.exam-note{margin-bottom:6px}.review-pill{margin-bottom:6px;display:inline-block}.missed{text-align:left;flex-direction:column;gap:10px;margin:10px 0;display:flex}.missed-q{background:var(--card2);border-radius:10px;padding:8px 12px}.small-tabs button{padding:4px 10px;font-size:.85rem}.drill{margin-top:8px}code,pre,.cm-editor,.cm-content,.trace-code,.fill-code,.pline code{font-variant-ligatures:none;font-feature-settings:"liga" 0, "calt" 0}:root[data-theme=void],:root[data-theme=neon],:root[data-theme=cinema],:root[data-theme=synthwave],:root[data-theme=anime],:root[data-theme=matrix]{--card:#101222b8;--card2:#202440b8;--bg2:#0a0c1ac7;--border:#ffffff1f;--fg:#eef0ff;--muted:#a9adcf;--ill-text:#eef0ff;--ill-muted:#a9adcf;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=void]{--bg:#050810;--accent:#8b5cf6;--accent2:#a78bfa;--wallpaper:url(../art/theme-void.webp);--accent-fill:#8457e9;--accent-fill-hover:#744ccd}:root[data-theme=neon]{--bg:#030a12;--accent:#0891b2;--accent2:#22d3ee;--wallpaper:url(../art/theme-neon.webp);--card:#06101cb8;--accent-fill:#077f9c;--accent-fill-hover:#066f89}:root[data-theme=cinema]{--bg:#0d0900;--accent:#d97706;--accent2:#fbbf24;--wallpaper:url(../art/theme-cinema.webp);--card:#180e04bd;--card2:#301e0ab8;--muted:#c5a878;--ill-muted:#c5a878;--accent-fill:#af6004;--accent-fill-hover:#9a5403}:root[data-theme=synthwave]{--bg:#0e0618;--accent:#db2777;--accent2:#f472b6;--wallpaper:url(../art/theme-synthwave.webp);--card:#160822b8;--accent-fill:#d82675;--accent-fill-hover:#be2166}:root[data-theme=anime]{--bg:#080d22;--accent:#e11d48;--accent2:#fb7185;--wallpaper:url(../art/theme-anime.webp);--card:#0a0e26b3;--accent-fill:#e11d48;--accent-fill-hover:#c6193f}:root[data-theme=matrix]{--bg:#020d07;--accent:#059669;--accent2:#34d399;--wallpaper:url(../art/theme-matrix.webp);--card:#03120bbd;--card2:#082416b8;--accent-fill:#04855d;--accent-fill-hover:#037551}.app{isolation:isolate;position:relative}.wallpaper .app:before{content:"";z-index:-1;background:linear-gradient(#00000073, #0000009e), var(--wallpaper,none) center / cover no-repeat, var(--bg);position:fixed;inset:0}.wallpaper .card,.wallpaper .sidebar,.wallpaper .lesson-row,.wallpaper .node{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.wallpaper .sidebar{background:var(--bg2)}.wallpaper .topbar{background:#00000059}.theme-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;display:grid}.theme-swatch{border:2px solid var(--border);background-position:50%;background-size:cover;border-radius:12px;align-items:flex-end;height:92px;padding:0;display:flex;overflow:hidden}.theme-swatch.active{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 40%, transparent)}.theme-swatch span{color:#fff;text-align:left;background:#0000008c;width:100%;padding:4px 8px;font-size:.85rem}.page-hero{background-position:50%;background-size:cover;background-color:var(--card2);border-radius:18px;margin-bottom:18px;overflow:hidden}.page-hero>div{color:#fff;background:linear-gradient(90deg,#080814e6 0%,#08081499 60%,#08081426 100%);flex-direction:column;justify-content:center;gap:8px;min-height:190px;padding:32px 28px;display:flex}.page-hero p{color:#e4e4f5;max-width:640px;margin:0}.page-hero h1{margin:0}.track-banner{background-position:50%;background-size:cover;background-color:var(--card2);border-radius:16px;height:170px;margin-top:10px}.node-cover{background-position:50%;background-size:cover;background-color:var(--card2);border-radius:12px;flex-shrink:0;width:64px;height:64px;position:relative}.node-cover .ring{background:var(--card);border-radius:50%;position:absolute;bottom:-10px;right:-10px}.track-card .track-thumb{background-position:50%;background-size:cover;background-color:var(--card2);border-radius:12px 12px 0 0;height:86px;margin:-14px -16px 10px}.project-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;display:grid}.project-card{padding:0;overflow:hidden}.project-card .cover{background-position:50%;background-size:cover;background-color:var(--card2);height:140px;position:relative}.cover-emoji{filter:drop-shadow(0 2px 6px #000a);font-size:1.8rem;position:absolute;bottom:8px;left:10px}.grade-pill{color:#fff;border-radius:99px;padding:3px 10px;font-size:.8rem;font-weight:800;position:absolute;top:10px;right:10px}.grade-pill.g{background:#16a34a}.grade-pill.y{background:#d97706}.grade-pill.r{background:#dc2626}.project-meta{padding:12px 14px}.creator textarea{width:100%;font:inherit;background:var(--bg2);color:var(--fg);border:1px solid var(--border);resize:vertical;border-radius:10px;margin-bottom:8px;padding:10px 12px}.creator{margin-bottom:8px}.project-head{background-position:50%;background-size:cover;background-color:var(--card2);border-radius:16px;height:180px;margin:10px 0 16px;display:flex;overflow:hidden}.project-head-inner{color:#fff;background:linear-gradient(#0000,#000000d1);align-self:flex-end;width:100%;padding:18px 22px}.project-head-inner h1{margin:0}.reqs li{margin:6px 0}.reqs .md p{margin:0}table.rubric{border-collapse:collapse;width:100%;font-size:.9rem}table.rubric td{border-bottom:1px solid var(--border);vertical-align:top;padding:8px 6px}table.rubric .pts{text-align:right;color:var(--accent2);white-space:nowrap;font-weight:800}.grade-report{flex-direction:column;gap:14px;display:flex}.criteria{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;display:grid}.criterion{background:var(--bg2);border:1px solid var(--border);border-radius:12px;padding:10px 12px}.criterion .qbar{height:8px;margin:6px 0}.grid-2.tight{gap:10px;margin:0}.ai-review{margin-top:12px}.review-card{background:var(--bg2);border:1px solid var(--accent);border-radius:12px;flex-direction:column;gap:8px;padding:12px 14px;animation:.3s popIn;display:flex}.review-card ul{margin:4px 0;padding-left:1.2em}.review-sec li{margin:4px 0;font-size:.92rem}.score-badge{color:#fff;border-radius:50%;flex-shrink:0;place-items:center;width:56px;height:56px;font-weight:800;display:grid}.score-badge.s0{background:#dc2626}.score-badge.s1{background:#d97706}.score-badge.s2{background:#65a30d}.score-badge.s3{background:#16a34a}.err-help{color:#e8e9f5;border-top:1px dashed #2f3460;flex-direction:column;gap:8px;margin-top:10px;padding-top:10px;font-size:.9rem;display:flex}.err-help .md p{margin:.3em 0}.err-help .md :not(pre)>code{background:#1c1f3a;border-color:#2f3460}.ai-box{background:#1c1f3a;border-radius:8px;padding:8px 10px}.console .err-help button{color:#e8e9f5;background:0 0;border-color:#2f3460}.web-preview{border:1px solid var(--border);background:#fff;border-radius:10px;margin:10px 0;overflow:hidden}.web-preview-bar{background:var(--card2);align-items:center;gap:6px;padding:6px 10px;display:flex}.web-preview-bar .dot{border-radius:50%;width:10px;height:10px}.dot.r{background:#ef4444}.dot.y{background:#f59e0b}.dot.g{background:#22c55e}.web-preview iframe{background:#fff;border:0;width:100%;display:block}.filters{margin-bottom:12px}.filters .tabs{margin:0}.dojo-list{flex-direction:column;gap:8px;display:flex}.dojo-item{align-items:center;gap:14px;padding:12px 16px;display:flex}.dojo-item.solved{opacity:.75}.dojo-check{font-size:1.2rem}.diff{border-radius:99px;padding:3px 10px;font-size:.75rem;font-weight:800}.diff.Easy{color:#4ade80;background:#22c55e33}.diff.Medium{color:#fbbf24;background:#f59e0b33}.diff.Hard{color:#f87171;background:#ef444433}:root[data-theme=light] .diff.Easy{color:#166534;background:#dcfce7}:root[data-theme=light] .diff.Medium{color:#92400e;background:#fef3c7}:root[data-theme=light] .diff.Hard{color:#991b1b;background:#fee2e2}.guide-sec{margin-bottom:14px}.guide-sec .primary-btn{margin-top:6px}.start-card{border-color:var(--accent);margin-bottom:16px}.start-list{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px;margin:8px 0 0;padding:0;list-style:none;display:grid}.start-list li a{background:var(--bg2);color:inherit;border:1px solid var(--border);border-radius:10px;align-items:center;gap:10px;padding:8px 10px;display:flex}.start-list li a:hover{border-color:var(--accent);text-decoration:none}.start-list li.done{opacity:.6}.start-list li.done b{text-decoration:line-through}.welcome{background:linear-gradient(#0a0a1980,#0a0a19cc),url(../art/hero-welcome.webp) 50%/cover,#0f1020}.welcome-card{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:#eef0ff;background:#0f1020bd;border:1px solid #ffffff1a;border-radius:20px;padding:28px}.nav-sep{background:var(--border);height:1px;margin:8px 6px}.chips{flex-wrap:wrap;gap:6px;margin:8px 0;display:flex}.lang-chip{background:var(--card2);border:1px solid var(--border);color:var(--muted);white-space:nowrap;border-radius:99px;padding:2px 9px;font-size:.72rem}.goal-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;display:grid}.goal-grid button{text-align:left;align-items:center;gap:10px;padding:12px 14px;display:flex}.goal-grid button span{font-size:1.3rem}.goal-grid button.active{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 18%, var(--card))}.path-grid{grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:14px;margin-bottom:24px;display:grid}.path-card{border-top:4px solid var(--c);flex-direction:column;gap:6px;margin:0;display:flex}.path-card h3{margin:0}.path-card p{flex:1;margin:4px 0}.path-card>button{align-self:flex-start;margin-top:8px}.path-card.recommended{box-shadow:0 0 0 2px var(--c), 0 0 24px color-mix(in srgb, var(--c) 35%, transparent)}.path-card.recommended .pill{align-self:flex-start;margin:0 0 4px}.path-icon{background:var(--card2);border-radius:14px;flex-shrink:0;place-items:center;width:52px;height:52px;font-size:2rem;display:grid}.lang-mini-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin-bottom:24px;display:grid}.lang-mini{background:var(--card);border:1px solid var(--border);border-left:4px solid var(--c,var(--accent));color:inherit;font:inherit;text-align:left;cursor:pointer;border-radius:10px;align-items:center;gap:8px;padding:10px 12px;transition:transform .15s,border-color .15s;display:flex}.lang-mini:hover{border-color:var(--c);text-decoration:none;transform:translateY(-2px)}.lang-mini>span:nth-child(2){text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:.9rem;overflow:hidden}.lang-mini.done{box-shadow:0 0 12px color-mix(in srgb, var(--c) 35%, transparent)}.lang-mini-icon{font-size:1.2rem}.explore-card{flex-direction:column;align-items:center;gap:8px;display:flex}.explore-card p{margin:0}.path-hero{border-width:2px;align-items:center;gap:20px;display:flex}.path-hero h1{margin:2px 0 4px}.path-hero p{margin:0 0 6px}.path-actions{text-align:right;flex-direction:column;align-items:flex-end;gap:8px;max-width:260px;display:flex}.roadmap{margin-bottom:24px;position:relative}.roadmap:before{content:"";background:var(--border);width:2px;position:absolute;top:20px;bottom:20px;left:19px}.stage{margin-bottom:18px;position:relative}.stage-head{align-items:center;gap:12px;margin-bottom:8px;display:flex}.stage-tracks{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px;padding-left:54px;display:grid}.stage-item{flex-direction:column;gap:6px;display:flex}.stage-item .node{flex:1}.choice{color:var(--muted);align-items:center;gap:8px;display:flex}.choice select{background:var(--card2);min-width:0;color:var(--fg);border:1px solid var(--border);font:inherit;border-radius:8px;flex:1;padding:4px 8px}.certificate{background:linear-gradient(135deg, #facc15, var(--accent), #22d3ee);border-radius:18px;margin:0 0 20px;padding:6px}.cert-inner{background:var(--card);text-align:center;border-radius:14px;padding:28px}.cert-inner h2{margin:8px 0}.map-path{border-width:2px;margin-bottom:20px}.map-path .row{gap:14px}.path-strip{gap:8px;padding:12px 2px 4px;display:flex;overflow-x:auto}.strip-item{border:1px solid var(--border);min-width:84px;color:inherit;background:var(--card2);text-align:center;border-radius:10px;flex-direction:column;align-items:center;gap:2px;padding:8px;display:flex}.strip-item small{color:var(--muted);font-size:.68rem;line-height:1.2}.strip-item.done{border-color:var(--good)}.strip-item:hover{border-color:var(--accent);text-decoration:none}.path-banner{color:inherit;border-width:2px;align-items:center;gap:14px;margin-bottom:16px;display:flex}.path-banner:hover{text-decoration:none}.lang-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;display:grid}.lang-card{border-top:3px solid var(--c);flex-direction:column;margin:0;padding:0;display:flex;overflow:hidden}.lang-cover{background-position:50%;background-size:cover;background-color:var(--card2);align-items:flex-end;height:110px;padding:10px;display:flex}.lang-body{flex-direction:column;flex:1;gap:6px;padding:12px 14px 14px;display:flex}.lang-body p{margin:0}.lang-body .row{margin-top:auto}.lang-body>button{margin-top:4px}.rt{white-space:nowrap;text-overflow:ellipsis;border:1px solid;border-radius:99px;max-width:100%;padding:2px 8px;font-size:.75rem;overflow:hidden}.rt-app{color:var(--good);border-color:var(--good)}.rt-local{color:#38bdf8;border-color:#38bdf8}.rt-ai{color:var(--warn);border-color:var(--warn)}@media (width<=780px){.path-hero{flex-direction:column;align-items:flex-start}.path-actions{text-align:left;align-items:stretch;width:100%;max-width:none}.stage-tracks{grid-template-columns:1fr;padding-left:0}.roadmap:before{display:none}.path-grid,.lang-grid{grid-template-columns:1fr}.lang-mini-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.goal-grid{grid-template-columns:1fr 1fr}.map-path .row,.path-banner{flex-wrap:wrap}}@media (width<=420px){.goal-grid{grid-template-columns:1fr}}@media print{body *{visibility:hidden}.certificate,.certificate *{visibility:visible}.certificate{height:fit-content;margin:auto;position:fixed;inset:0}.no-print{display:none!important}}.toolchain-list{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:6px;display:grid}.toolchain{border:1px solid var(--border);background:var(--card2);border-radius:10px;flex-direction:column;gap:2px;min-width:0;padding:8px 10px;display:flex}.toolchain small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.toolchain.ok{border-color:color-mix(in srgb, var(--good) 60%, var(--border))}.save-status{border:1px solid var(--border);background:var(--card2);border-radius:10px;flex-direction:column;gap:6px;margin-bottom:12px;padding:10px 12px;display:flex}.mono-path{font-family:var(--mono);overflow-wrap:anywhere;font-size:.72rem}.bad-text{color:var(--bad-text)}.agent-head{flex-wrap:wrap;align-items:flex-end;gap:16px;display:flex}.agent-head h1{margin-bottom:2px}.agent-head p{margin:0}.agent-mode{flex-wrap:wrap;gap:6px;display:flex}.agent-mode button.active{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 22%, var(--card))}.sandbox-chips{flex-wrap:wrap;gap:6px;margin:12px 0;display:flex}.sandbox-chips span{border:1px solid var(--border);background:var(--card2);color:var(--muted);cursor:help;border-radius:99px;padding:3px 10px}.agent-tabs{gap:6px;margin-bottom:10px;display:none}.agent-tabs button.active{border-color:var(--accent)}.agent-grid{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:start;gap:14px;display:grid}.agent-side{flex-direction:column;gap:14px;min-width:0;display:flex}.agent-chat{flex-direction:column;height:calc(100vh - 230px);min-height:480px;margin:0;padding:12px;display:flex}.agent-msgs{flex-direction:column;flex:1;gap:10px;padding-right:4px;display:flex;overflow-y:auto}.agent-msg{overflow-wrap:anywhere;max-width:100%}.agent-msg.user{background:color-mix(in srgb, var(--accent) 22%, var(--card2));white-space:pre-wrap;border-radius:14px 14px 4px;align-self:flex-end;max-width:85%;padding:8px 12px}.agent-msg.owl{align-self:stretch}.agent-msg.owl .md>div>:first-child{margin-top:0}.agent-msg.owl pre{overflow-x:auto}.agent-empty{text-align:center;padding:16px 8px}.starter-list{gap:6px;margin-top:10px;display:grid}.starter-list button{text-align:left;white-space:normal}.tool-card{border:1px solid var(--border);background:var(--card2);border-radius:10px;margin:6px 0;font-size:.85rem}.tool-card summary{cursor:pointer;align-items:center;gap:8px;min-width:0;padding:6px 10px;list-style:none;display:flex}.tool-card summary::-webkit-details-marker{display:none}.tool-card summary code{text-overflow:ellipsis;white-space:nowrap;background:0 0;flex:1;min-width:0;overflow:hidden}.tool-card summary code.cmd:before{content:"$ ";color:var(--muted)}.tool-card.err{border-color:color-mix(in srgb, var(--bad) 55%, var(--border))}.tool-card pre{border-top:1px solid var(--border);white-space:pre-wrap;max-height:300px;margin:0;padding:8px 10px;font-size:.78rem;overflow:auto}.tool-status{color:var(--muted)}.spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:12px;height:12px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.thinking{padding:4px 2px}.agent-approve,.agent-ask{border:2px solid var(--warn);background:color-mix(in srgb, var(--warn) 8%, var(--card));border-radius:12px;padding:10px 12px}.agent-ask{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, var(--card))}.agent-approve pre{max-height:200px;overflow:auto}.ask-choices{gap:6px;margin:8px 0;display:grid}.ask-choices button{text-align:left;white-space:normal}.agent-ask input,.agent-input textarea{background:var(--card2);min-width:0;color:var(--fg);border:1px solid var(--border);font:inherit;border-radius:10px;padding:8px 10px}.agent-error{color:var(--bad-text);padding:6px 2px}.agent-input{align-items:flex-end;gap:8px;margin-top:10px;display:flex}.agent-input textarea{resize:vertical;flex:1}.agent-input-off{border:1px dashed var(--border);border-radius:10px;margin-top:10px;padding:10px}.agent-foot{flex-wrap:wrap;gap:8px;margin-top:8px}.agent-foot select{background:var(--card2);color:var(--fg);border:1px solid var(--border);font:inherit;border-radius:8px;padding:3px 6px}.agent-files,.agent-terminal{min-width:0;margin:0;padding:12px}.file-bar{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.file-chip{border:1px solid var(--border);background:var(--card2);border-radius:8px;align-items:center;max-width:100%;font-size:.8rem;display:inline-flex}.file-chip.active{border-color:var(--accent)}.file-chip button.link{color:inherit;cursor:pointer;font:inherit;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:none;padding:4px 8px;overflow:hidden}.file-chip button.x{color:var(--muted);padding:4px 6px}.file-tools{gap:8px;margin-bottom:6px}.agent-term{border:1px solid var(--border);color:#d7dbf5;font-family:var(--mono);background:#0b0c16;border-radius:10px;flex-direction:column;font-size:.8rem;display:flex}.agent-term-out{height:240px;padding:8px 10px;overflow-y:auto}.agent-term-out pre{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;color:#c9cde8;margin:0 0 6px}.agent-term-out pre.bad{color:#fca5a5}.tl-cmd{color:#8be9a8}.tl.owl .tl-cmd{color:#a5b4fc}.tl-cmd .who{margin-right:2px}.agent-term-in{border-top:1px solid #23264a;align-items:center;gap:6px;padding:6px 10px;display:flex}.agent-term-in span{color:#8be9a8}.agent-term-in input{min-width:0;color:inherit;font:inherit;background:0 0;border:none;outline:none;flex:1}@media (width<=1000px){.agent-tabs{display:flex}.agent-grid{grid-template-columns:1fr}.agent-chat,.agent-files,.agent-terminal{display:none}.agent-chat.show,.agent-files.show,.agent-terminal.show{display:flex}.agent-files.show,.agent-terminal.show{flex-direction:column}.agent-chat{height:calc(100dvh - 300px);min-height:380px}.agent-head{align-items:flex-start}}.sync-box{border-top:1px dashed var(--border);flex-direction:column;gap:6px;margin-top:4px;padding-top:8px;display:flex}.page-loading{padding:24px}.runtime-note{margin:0 0 14px}.runtime-note ul{margin:6px 0 0;padding-left:18px}.runtime-note li{margin:3px 0}.module-heading{color:var(--accent2);margin:18px 0 8px;font-size:1.02rem}.lesson-list>li.has-module:first-child .module-heading{margin-top:4px}.bottom-nav,.nav-scrim{display:none}.credit{margin-top:6px}@media (pointer:coarse){button,.primary-btn,select,input{min-height:40px}button.small{min-height:34px}a.card:hover,.node:hover{transform:none}}@media (width<=1100px){.sidebar{width:200px}.content{padding:18px 20px 80px}.tier{grid-template-columns:180px 1fr}}@media (width<=780px){body{font-size:15px}.sidebar{z-index:60;width:min(280px,82vw);padding-top:calc(16px + env(safe-area-inset-top));padding-bottom:calc(76px + env(safe-area-inset-bottom));transition:transform .22s;position:fixed;inset:0 auto 0 0;overflow-y:auto;transform:translate(-105%)}.nav-open .sidebar{transform:none;box-shadow:8px 0 30px #0009}.nav-scrim{z-index:55;background:#0007;animation:.2s fadeIn;display:block;position:fixed;inset:0}.nav-toggle{display:none!important}.bottom-nav{z-index:65;background:color-mix(in srgb, var(--bg2) 92%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom);display:flex;position:fixed;bottom:0;left:0;right:0}.bottom-nav a,.bottom-nav button{min-height:56px;color:var(--muted);background:0 0;border:0;border-radius:0;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:1px;padding:7px 0 6px;font-size:.7rem;text-decoration:none;display:flex}.bottom-nav .bn-icon{font-size:1.3rem;line-height:1.2}.bottom-nav .active{color:var(--accent2);font-weight:700}.bottom-nav .active .bn-icon{transform:translateY(-1px)scale(1.08)}.topbar{padding:calc(8px + env(safe-area-inset-top)) 12px 8px;gap:6px}.level-chip .small{display:none}.xpbar{width:64px}.chip{padding:3px 8px;font-size:.8rem}.content{padding:14px 12px calc(96px + env(safe-area-inset-bottom))}h1{font-size:1.45rem}h2{font-size:1.15rem}.card{border-radius:14px;padding:14px}.lesson-body{padding:16px 14px}.grid-3,.grid-2,.welcome-features,.sq-grid{grid-template-columns:1fr}.tier{grid-template-columns:1fr;gap:10px}.tier-tracks,.track-grid,.project-grid{grid-template-columns:1fr}.skillmap:before{display:none}.node{padding:10px}.page-hero>div{min-height:150px;padding:20px 16px}.project-head,.track-banner{height:130px}.track-head{gap:12px;padding:10px 0 10px 14px}.track-head h1{font-size:1.3rem}.editor .cm-editor{min-height:180px;max-height:46vh;height:auto!important}.editor .cm-scroller{min-height:180px}.web-preview iframe{height:280px!important}.terminal{height:300px;padding:10px;font-size:12.5px}.terminal pre{font-size:12.5px}.ex-actions{gap:6px}.ex-actions .spacer{display:none}.ex-actions button{flex:auto;justify-content:center}.lesson-nav{flex-direction:column;align-items:stretch}.lesson-nav a,.lesson-nav button{text-align:center;justify-content:center}.complete-banner .primary-btn{justify-content:center;width:100%}.dojo-item{gap:10px;padding:10px 12px}.filters{flex-direction:column;align-items:stretch}.filters select{width:100%}.criteria{grid-template-columns:1fr}.bs-row{grid-template-columns:repeat(8,1fr)}.bars{gap:2px;height:160px}.atlas-controls{top:calc(48px + env(safe-area-inset-top))}.md pre{font-size:.8rem}.tutor-fab{right:14px;bottom:calc(72px + env(safe-area-inset-bottom));width:52px;height:52px;font-size:1.6rem}.tutor{z-index:70;width:100%;height:100%;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);border-radius:0;inset:0}.toasts{top:calc(56px + env(safe-area-inset-top));align-items:stretch;left:12px;right:12px}.toast{min-width:0}input,select,textarea{font-size:16px}.welcome-card{padding:20px 16px}.welcome-card h1{font-size:1.8rem}}@media (width<=920px) and (height<=500px) and (orientation:landscape){.bottom-nav a,.bottom-nav button{flex-direction:row;gap:6px;min-height:44px}.tutor-fab{bottom:calc(56px + env(safe-area-inset-bottom))}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.center{text-align:center}.about img{border-radius:14px}.credit-line{opacity:.85}.exec-mode{border:1px solid var(--border);background:var(--bg2);border-radius:8px;margin:8px 0;padding:6px 10px;font-size:.8rem}.exec-mode.m-local{border-color:#22c55e88}.exec-mode.m-ai{border-color:#a855f788}.exec-mode.m-self{border-color:#f59e0b88}details.expected{margin-top:6px}details.expected pre{background:var(--bg);border:1px solid var(--border);border-radius:8px;margin:6px 0 0;padding:8px 10px;font-size:.85rem}.self-check{border-color:var(--warn)}.playground-bar{margin-bottom:10px}.playground-bar .exec-mode{margin:0}
