:root{--bg:#f5f1e8;--surface:#fbf8f1;--ink:#23261f;--muted:#6b6f63;--sage:#7c9a7e;--forest:#2f4f3a;--oak:#9c6b43;--amber:#c98f2b;--purple:#7d6aa8;--border:#ddd6c7;--border-strong:#c8bfab;--radius:12px;--mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;font:15px/1.5 system-ui,-apple-system,Segoe UI,sans-serif}.topbar{border-bottom:1px solid var(--border);z-index:40;background:linear-gradient(#fbf8f1,#f5f1e8);justify-content:space-between;align-items:center;gap:16px;padding:14px 20px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:12px;display:flex}.brand-mark{background:radial-gradient(circle at 30% 30%, #a9c3a4, transparent 60%), linear-gradient(135deg, var(--forest), var(--sage));border-radius:9px;width:30px;height:30px;box-shadow:inset 0 0 0 1px #ffffff59}.brand h1{letter-spacing:-.01em;margin:0;font-size:1.02rem}.brand p{color:var(--muted);margin:1px 0 0;font-size:.76rem}.modes{border:1px solid var(--border);background:#efe9db;border-radius:10px;gap:4px;padding:3px;display:flex}.mode-btn{color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:7px;padding:6px 12px;font-size:.82rem}.mode-btn[aria-pressed=true]{background:var(--surface);color:var(--forest);box-shadow:0 1px 2px #00000014}.mode-btn:focus-visible,.ghost:focus-visible,.tab:focus-visible,.primary:focus-visible{outline:2px solid var(--forest);outline-offset:2px}.layout{grid-template-columns:minmax(0,1fr) 380px;align-items:start;gap:16px;padding:16px 20px;display:grid}.lower{grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:16px;padding:0 20px 40px;display:grid}@media (width<=1080px){.layout{grid-template-columns:minmax(0,1fr)}}.stage{border:1px solid var(--border);border-radius:var(--radius);background:#efe9dc;position:relative;overflow:hidden;box-shadow:0 1px 2px #23261f0d,0 12px 32px -18px #23261f59}.viewport{width:100%;height:clamp(300px,50vh,620px);position:relative}.viewport canvas{display:block;width:100%!important;height:100%!important}.scene-labels{pointer-events:none;position:absolute;inset:0}.scene-label{font:500 10px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:#3d4237;white-space:nowrap;background:#fbf8f1db;border:1px solid #c8bfabe6;border-radius:5px;padding:4px 7px;transform:translateY(-6px)}.scene-label.flow-label{color:#f6f4ee;background:#2f4f3af0;border-color:#7c9a7e;padding:7px 10px;font-weight:600}.fallback{padding:32px}.fallback h2{margin:0 0 6px}.fallback-map{flex-wrap:wrap;gap:8px;margin-top:16px;display:flex}.hardware-view .viewport{background-color:#eaf0f2}.hardware-viewport{z-index:2;background-color:#eaf0f2;background-image:radial-gradient(#bdcbd1 .8px,#0000 .8px);background-size:18px 18px;position:absolute;inset:0;overflow:hidden}.hardware-viewport canvas{display:block;width:100%!important;height:100%!important}.gpu-labels{pointer-events:none;position:absolute;inset:0}.gpu-part-label{color:#1d3038;font:600 10px/1 var(--mono);white-space:nowrap;background:#f9fcfcf0;border:1px solid #b9c9cb;border-radius:5px;padding:5px 8px}.hardware-help{z-index:4;pointer-events:none;position:absolute;top:12px;left:14px}.hardware-help span{font:600 10px/1 var(--mono);letter-spacing:.1em;color:#526872}.hardware-help p{color:#697f88;margin:5px 0 0;font-size:.73rem}.hardware-controls{z-index:6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fffffff5;border:1px solid #cad4d7;border-radius:10px;flex-wrap:wrap;justify-content:center;align-items:center;gap:16px;max-width:calc(100% - 24px);padding:10px 13px;display:flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%);box-shadow:0 7px 24px #2739401f}.assembly-control{white-space:nowrap;color:#344b55;align-items:center;gap:8px;font-size:.73rem;display:flex}#gpuExplode{accent-color:#91b626;width:clamp(80px,12vw,155px)}.hardware-tool-buttons{border-left:1px solid #d6dfe2;align-items:center;gap:5px;padding-left:12px;display:flex}.hardware-tool-buttons .ghost{color:#324a55;white-space:nowrap;background:0 0;border-color:#0000}.hardware-tool-buttons .ghost[aria-pressed=true]{color:#1d291a;background:#ccf35c;border-color:#b3d442}.hardware-fallback{background:#eaf0f2}.hardware-controls.inference-controls{width:auto;max-width:none;box-shadow:none;border-left:0;border-right:0;border-radius:0;margin:0;position:relative;bottom:auto;left:auto;transform:none}.inference-mode-toggle{white-space:nowrap;color:#41591c;font-weight:600}.inference-mode-toggle[aria-pressed=true]{color:#263514;background:#ccf35c;border-color:#a5c842}.hardware-playback{align-items:center;gap:5px;display:flex}.hardware-playback .primary{background:#263b22;border-color:#263b22;padding:6px 10px;font-size:.73rem}.hardware-playback .ghost{padding:6px 9px}.hardware-frame{max-width:100px;font:500 .65rem var(--mono);color:#617781}.gpu-flow-label{color:#e4f0ef;font:600 10px/1.2 var(--mono);white-space:nowrap;background:#0f222ce8;border:1px solid #3f5d67;border-radius:6px;padding:6px 9px}.gpu-flow-label.is-oom{color:#ffd0c4;background:#632117ed;border-color:#dc6b4c}.gpu-inference-panel{padding:14px 16px}.gpu-config-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.gpu-config-field{color:#94a5b7;flex-direction:column;gap:4px;font-size:.68rem;display:flex}.gpu-config-field select{color:#edf2f5;width:100%;font:inherit;background:#1c2a3c;border:1px solid #33465b;border-radius:6px;padding:6px 7px;font-size:.74rem}.gpu-config-field select:focus-visible{outline:2px solid #ccf35c}.gpu-memory-visualizer{margin-top:14px}.gpu-section-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.gpu-section-head h2{color:#fff;margin:0;font-size:.9rem}.gpu-memory-state{font:600 .65rem var(--mono);color:#ccf35c}.gpu-memory-state.is-oom{color:#ff9b7c}.gpu-memory-metrics{grid-template-columns:repeat(3,1fr);gap:5px;margin-top:8px;display:grid}.gpu-memory-metrics>div{background:#172436;border:1px solid #2d3e51;border-radius:7px;padding:8px 6px}.gpu-memory-metrics span{color:#7f92a7;text-transform:uppercase;letter-spacing:.04em;font-size:.6rem;display:block}.gpu-memory-metrics b{color:#eef3f7;font:500 .76rem var(--mono);margin-top:3px;display:block}.gpu-memory-legend{flex-wrap:wrap;gap:4px 9px;margin-top:9px;display:flex}.gpu-memory-legend span{color:#9aabbd;align-items:center;gap:4px;font-size:.62rem;display:flex}.gpu-memory-legend i{border-radius:2px;width:8px;height:8px}.gpu-flow-readout{border-top:1px solid #2b3747;margin-top:14px;padding-top:12px}#gpuFlowFact{color:#e0e9ef;min-height:36px;margin:7px 0;font-size:.78rem;line-height:1.45}.gpu-flow-arithmetic{color:#ccf35c;font:500 .66rem/1.5 var(--mono);margin:0}.gpu-inference-tip{color:#879bae;margin:12px 0 0;font-size:.69rem;line-height:1.45}.station-panel.hardware-panel{color:#e9edf2;scrollbar-color:#465569 #101a29;background:#101a29;border-color:#101a29;max-height:calc(100vh - 94px);overflow-y:auto}.gpu-panel-intro{border-bottom:1px solid #2b3747;padding:20px 18px 15px}.gpu-panel-intro .eyebrow{color:#ccf35c}.gpu-panel-intro h1{letter-spacing:-.045em;color:#fff;margin:8px 0 5px;font-size:1.85rem}.gpu-panel-intro p{color:#9eabbc;margin:0 0 10px;font-size:.82rem}.gpu-loaded{font:500 .7rem/1 var(--mono);color:#acb9c8}.gpu-part-detail{border-bottom:1px solid #2b3747;padding:15px 18px}.gpu-subsystem{color:#ccf35c;font:600 .65rem/1 var(--mono);text-transform:uppercase;letter-spacing:.1em}.gpu-part-detail h2{color:#fff;margin:6px 0 8px;font-size:1.03rem}.gpu-part-detail p{color:#b8c4d1;margin:7px 0;font-size:.77rem;line-height:1.5}.gpu-part-detail h3,.gpu-part-list>h3{text-transform:uppercase;letter-spacing:.07em;color:#7e91a5;margin:12px 0 5px;font-size:.7rem}#gpuPartInference{color:#d7e0e8}.gpu-part-list{padding:13px 10px 6px}.gpu-part-list>h3{margin-left:8px}.gpu-part-button{color:#c1ccd8;text-align:left;width:100%;font:inherit;cursor:pointer;background:0 0;border:0;border-bottom:1px solid #223043;align-items:center;gap:10px;padding:8px;font-size:.76rem;display:flex}.gpu-part-button span{font:500 .65rem var(--mono);color:#627589}.gpu-part-button:hover{color:#fff;background:#1a293b}.gpu-part-button[aria-pressed=true]{color:#e4ff9d;background:#22351f}.gpu-part-button[aria-pressed=true] span{color:#ccf35c}.gpu-schematic-note{color:#6f8297;margin:0;padding:6px 18px 14px;font-size:.66rem;line-height:1.45}.primary-view-switch{border-right:1px solid var(--border);padding-right:6px}#hardwareViewBtn[aria-pressed=true],#roomViewBtn[aria-pressed=true]{background:var(--forest);color:#fff;border-color:var(--forest)}.station-expand{z-index:8;width:min(375px,100% - 24px);max-height:calc(100% - 62px);color:var(--ink);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fbf8f1f7;border:1px solid #a9bda9;border-radius:11px;padding:15px;position:absolute;top:48px;right:12px;overflow-y:auto;box-shadow:0 16px 38px #18261c3d}.station-expand[hidden]{display:none}.station-expand-head{justify-content:space-between;align-items:start;gap:10px;display:flex}.station-expand-head h2{margin:2px 0 0;font-size:1.04rem;line-height:1.25}.station-expand-head .ghost{flex:none;padding:2px 9px;font-size:1rem}#stationExpandDescription{color:#495346;margin:9px 0;font-size:.8rem;line-height:1.48}.station-expand-points{margin:0;padding-left:19px}.station-expand-points li{color:#384537;margin:5px 0;font-size:.75rem;line-height:1.42}.station-expand h3{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:12px 0 6px;font-size:.74rem}.station-expand-flow{gap:4px;margin:0 0 12px;padding-left:23px;display:grid}.station-expand-flow li{background:#edf2e9;border-radius:6px;padding:5px 7px;font-size:.75rem}.station-expand-flow li::marker{font:600 .7rem var(--mono);color:var(--forest)}.station-expand .primary{width:100%}.station-expand-hint{text-align:center;color:var(--muted);margin:7px 0 0;font-size:.68rem}.toolbar{border-top:1px solid var(--border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fbf8f1eb;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;display:flex}.tool-group{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.tool-group+.tool-group{margin-left:auto}.ghost{font:inherit;border:1px solid var(--border-strong);background:var(--surface);color:var(--ink);cursor:pointer;border-radius:8px;padding:6px 10px;font-size:.78rem;transition:background .12s,border-color .12s}.ghost:hover{background:#f0ece0}.ghost[aria-pressed=true]{background:var(--forest);border-color:var(--forest);color:#f6f4ee}.primary{font:inherit;border:1px solid var(--forest);background:var(--forest);color:#f6f4ee;cursor:pointer;border-radius:9px;padding:8px 14px;font-size:.82rem;font-weight:600}.primary:hover{background:#27412f}.speed{color:var(--muted);align-items:center;gap:6px;font-size:.78rem;display:flex}.speed select{font:inherit;border:1px solid var(--border-strong);background:var(--surface);border-radius:7px;padding:5px 6px;font-size:.78rem}.fps{font:500 10px/1 var(--mono);color:var(--muted);text-align:right;min-width:48px}.scrub{width:clamp(90px,16vw,190px);accent-color:var(--forest)}.live-status{z-index:5;background:0 0;border:0;flex-wrap:wrap;gap:6px;max-width:calc(100% - 20px);padding:0;display:flex;position:absolute;top:10px;left:10px}.chip{font:500 11px/1 var(--mono);border:1px solid var(--border-strong);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:var(--muted);background:#fbf8f1eb;border-radius:999px;padding:5px 8px}.chip.waiting{color:#8a6318;background:#fbf3e6;border-color:#e0cdae}.chip.active{color:var(--forest);background:#eef4ec;border-color:#b6c9b4}.chip.done{color:var(--forest);background:#e8f0e5;border-color:#c3d2bd}.chip.kv{color:var(--purple);background:#f3eef8;border-color:#cbb9dd}.chip.time{color:var(--ink);background:#fbf8f1c7;margin-left:auto}.lesson-coach{border-top:1px solid #1f3e2b;border-bottom:1px solid var(--border);color:#f6f4ee;background:linear-gradient(135deg,#213f2d,#2f4f3a);padding:14px 16px}.lesson-coach[hidden]{display:none}.lesson-heading{justify-content:space-between;align-items:start;gap:12px;display:flex}.lesson-heading h2{letter-spacing:-.01em;margin:1px 0 0;font-size:1rem}.lesson-heading .ghost{color:#fff;background:#ffffff14;border-color:#ffffff40;padding:2px 9px;font-size:1rem}.eyebrow{font:600 9px/1.4 var(--mono);letter-spacing:.13em;color:#b9d5be;display:block}#lessonText{color:#dbe7dc;max-width:850px;margin:7px 0 10px;font-size:.8rem;line-height:1.45}.lesson-phases{grid-template-columns:repeat(5,1fr);gap:5px;display:grid}.lesson-phase{color:#b9c9bd;font:500 .7rem/1 var(--mono);cursor:pointer;background:#ffffff0f;border:1px solid #ffffff2e;border-radius:6px;padding:5px 4px}.lesson-phase[aria-current=true]{color:var(--forest);background:#f3eee4;border-color:#f3eee4}.lesson-fact{font:500 .76rem/1.45 var(--mono);color:#ffe0a3;margin:10px 0 0}.lesson-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;display:flex}.lesson-actions .ghost{color:#f6f4ee;background:#ffffff14;border-color:#ffffff40}.lesson-actions .primary{color:var(--forest);background:#f6f4ee;border-color:#f6f4ee}.lesson-toggle{border-color:var(--forest);color:var(--forest);font-weight:600}.station-panel{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);align-self:start;position:sticky;top:76px;overflow:hidden}.station-tabs{border-bottom:1px solid var(--border);background:#f0ece0;flex-wrap:wrap;gap:2px;padding:8px;display:flex}.tab{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:5px 9px;font-size:.74rem}.tab[aria-selected=true]{background:var(--surface);color:var(--forest);font-weight:600;box-shadow:0 1px 2px #00000012}.station-body{padding:16px}.station-body h2{letter-spacing:-.01em;margin:0 0 4px;font-size:1rem}.lede{color:var(--muted);margin:0 0 14px;font-size:.8rem;line-height:1.45}.metrics{grid-template-columns:1fr 1fr;gap:8px;display:grid}.metric{border:1px solid var(--border);background:#fff;border-radius:9px;padding:8px 10px}.metric span{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-size:.68rem;display:block}.metric b{font:500 .95rem/1.3 var(--mono);margin-top:2px;display:block}.bar{border:1px solid var(--border);border-radius:6px;height:12px;margin:4px 0 8px;display:flex;overflow:hidden}.seg{height:100%;display:block}.seg-weights{background:var(--forest)}.seg-kv{background:var(--purple)}.seg-workspace{background:var(--sage)}.seg-runtime{background:var(--amber)}.legend{color:var(--muted);grid-template-columns:1fr 1fr;gap:3px 10px;margin-bottom:10px;font-size:.72rem;display:grid}.legend span:before{content:"■";opacity:.7;margin-right:5px}.legend span:first-child:before{color:var(--forest)}.legend span:nth-child(2):before{color:var(--purple)}.legend span:nth-child(3):before{color:var(--sage)}.legend span:nth-child(4):before{color:var(--amber)}.ok{color:var(--forest);margin:0 0 10px;font-size:.8rem}.bad{color:#a4422f;margin:0 0 10px;font-size:.8rem}.note{color:var(--muted);margin:10px 0 0;font-size:.75rem;line-height:1.45}.bound-row{gap:8px;margin-top:12px;display:flex}.bound{text-align:center;font:500 .75rem/1.3 var(--mono);border:1px solid var(--border);background:#fff;border-radius:8px;flex:1;padding:8px}.bound.compute{color:var(--forest);background:#eef4ec;border-color:#b6c9b4}.bound.memory{color:var(--purple);background:#f3eef8;border-color:#cbb9dd}.row{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.timeline{flex-wrap:wrap;gap:6px;margin-top:12px;display:flex}.req{font:500 .7rem/1 var(--mono);border:1px solid var(--border);background:#fff;border-radius:7px;padding:7px 8px}.req.waiting{color:#8a6318;background:#fbf3e6;border-color:#e0cdae}.req.done{color:var(--forest);background:#eef4ec;border-color:#b6c9b4}.req.rejected{color:#a4422f;background:#fbeeea;border-color:#e0b5ab}.challenge{border-top:1px solid var(--border);margin-top:12px;padding-top:12px}.challenge:first-of-type{border-top:0;margin-top:4px;padding-top:0}.challenge h3{margin:0 0 4px;font-size:.84rem}.challenge p{color:var(--muted);margin:0;font-size:.78rem;line-height:1.45}.challenge .result{font:500 .75rem/1.5 var(--mono);color:var(--forest);margin-top:8px}.runs-mini{gap:6px;margin-top:10px;display:grid}.run{border:1px solid var(--border);background:#fff;border-radius:8px;gap:1px;padding:8px 10px;display:grid}.run b{font-size:.75rem}.run span{color:var(--muted);font-size:.7rem}.run code{font:400 .7rem/1.4 var(--mono);color:var(--forest)}.card{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:16px}.card h2{letter-spacing:-.01em;margin:0 0 4px;font-size:.98rem}.card-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.presets{gap:6px;display:flex}.fields{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 12px;margin:14px 0;display:grid}.field{color:var(--muted);flex-direction:column;gap:3px;font-size:.72rem;display:flex}.field input{font:inherit;border:1px solid var(--border-strong);color:var(--ink);font-size:.82rem;font-family:var(--mono);background:#fff;border-radius:7px;padding:6px 8px}.field input:focus-visible{outline:2px solid var(--forest);outline-offset:1px}.results{margin-top:8px}.results .bar{margin-top:12px}.pipeline{flex-wrap:wrap;gap:4px;margin:14px 0 12px;display:flex}.pipe{text-align:center;min-width:64px;font:500 .68rem/1 var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);cursor:pointer;background:#f0ece0;border:1px solid #0000;border-radius:7px;flex:1;padding:9px 4px}.pipe:hover{border-color:var(--border-strong)}.pipe:focus-visible{outline:2px solid var(--forest);outline-offset:2px}.pipe.active{background:var(--forest);color:#f6f4ee}.pipe[aria-pressed=true]{border-color:var(--forest)}.pipe.done{color:var(--forest);background:#e3ebdf;border-color:#c3d2bd}.training-stage-note{border-left:3px solid var(--sage);color:#465141;background:#f0ece0;min-height:34px;margin:0 0 12px;padding:8px 10px;font-size:.74rem;line-height:1.45}.runs{border-collapse:collapse;width:100%;margin-top:12px;font-size:.75rem}.runs th{text-align:left;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border);padding:6px;font-size:.68rem;font-weight:500}.runs td{font-family:var(--mono);border-bottom:1px solid #efeade;padding:6px}.runs td:first-child{font-family:inherit}.import{color:var(--muted);margin-top:12px;font-size:.72rem;display:block}.file{margin-top:4px;font-size:.75rem;display:block}details.card summary{cursor:pointer;font-size:.92rem;font-weight:600}details.card summary::marker{color:var(--sage)}.how-body p{color:#444a3d;margin:10px 0;font-size:.8rem;line-height:1.55}.how-body .note{color:var(--muted)}body[data-mode=theater] .layout{grid-template-columns:minmax(0,1fr)}body[data-mode=theater] .viewport{height:min(76vh,760px)}body[data-mode=theater] .station-panel{position:static}body[data-mode=fullscreen]{overflow:hidden}.stage.pseudo-fullscreen{z-index:100;border:0;border-radius:0;flex-direction:column;display:flex;position:fixed;inset:0}.stage.pseudo-fullscreen .viewport{flex:1;height:auto}.stage:fullscreen{background:var(--bg);flex-direction:column;display:flex}.stage:fullscreen .viewport{flex:1;height:auto}@media (width<=720px){.topbar{align-items:flex-start;padding:10px 12px}.brand p{display:none}.mode-btn{padding:5px 8px;font-size:.72rem}.layout{gap:10px;padding:10px 12px}.lower{grid-template-columns:minmax(0,1fr);padding:0 12px 28px}.viewport{height:380px}.station-panel{position:static}.tool-group+.tool-group{margin-left:0}.lesson-phases{grid-template-columns:repeat(5,minmax(34px,1fr))}.lesson-actions>button{flex:1}.hardware-controls{gap:6px;width:calc(100% - 20px);padding:8px;bottom:10px}.assembly-control{justify-content:center;width:100%}#gpuExplode{flex:1}.hardware-tool-buttons{border-top:1px solid #d6dfe2;border-left:0;padding:6px 0 0}.hardware-help p{max-width:250px}.station-panel.hardware-panel{max-height:none}.live-status{max-width:calc(100% - 16px);top:8px;left:8px}.chip{padding:4px 6px;font-size:9px}.chip.time{display:none}}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}
