:root{--paper: #f4f2ec;--ink: #0c0c0c;--hair: #0c0c0c;--muted: #5a5a55;--rule: #1a1a1a;--tint: #ebe8df;--accent: oklch(.31 .13 264);--accent-soft: oklch(.94 .025 264);--good: oklch(.55 .13 145);--warn: oklch(.7 .16 70);--hair-w: 1.2px;--rad: 0px;--density: 1}body.dark{--paper: #15140f;--ink: #ece9df;--hair: #ece9df;--muted: #807c70;--rule: #2c2a23;--tint: #1d1c16;--accent: oklch(.65 .16 264);--accent-soft: oklch(.25 .05 264);--good: oklch(.72 .16 145)}@supports not (color: oklch(0% 0 0)){:root{--accent: #1e3a8a;--accent-soft: #e2e7f2;--good: #2d8a4e;--warn: #c89500}body.dark{--accent: #6f8ae0;--accent-soft: #1f2742;--good: #6cba88;--warn: #d8b35a}}body{background:var(--paper);color:var(--ink);font-family:Geist Variable,Geist,system-ui,-apple-system,sans-serif;font-feature-settings:"ss01","cv11";-webkit-font-smoothing:antialiased;position:relative}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;background-image:radial-gradient(rgba(0,0,0,.018) 1px,transparent 1px),radial-gradient(rgba(0,0,0,.014) 1px,transparent 1px);background-size:3px 3px,7px 7px;background-position:0 0,1px 2px;mix-blend-mode:multiply}body.dark:before,body.no-grain:before{display:none}body>*{position:relative;z-index:1}body.density-compact{font-size:13px}body.density-compact .pane{padding-block:10px}body.density-compact .aside-section{font-size:12.5px}.mono{font-family:Geist Mono,ui-monospace,Menlo,monospace;font-variant-ligatures:none}.serif{font-family:"Instrument Serif",Georgia,serif;font-style:italic}.currentLineHighlight{background:color-mix(in oklch,var(--accent) 14%,transparent)}.currentLineGlyph{background:var(--accent);width:3px!important;margin-left:3px}.rule{border:0;border-top:var(--hair-w) solid var(--rule);margin:0}.rule-thin{border:0;border-top:.6px solid var(--rule);margin:0;opacity:.45}.smallcaps{font-family:Geist Mono,monospace;text-transform:uppercase;font-size:10.5px;letter-spacing:.14em;color:var(--muted);font-weight:500}.pane{background:var(--paper);border:var(--hair-w) solid var(--rule);border-radius:var(--rad);overflow:hidden}.source-editor-frame{height:420px}.pill{display:inline-flex;align-items:center;gap:6px;padding:3px 8px;border:.8px solid var(--rule);color:var(--ink);font-family:Geist Mono,monospace;font-size:11px}.pill .dot{width:6px;height:6px;background:var(--good);display:inline-block}.pill .dot.warn{background:var(--warn)}.pill .dot.accent{background:var(--accent)}.status-dot{width:6px;height:6px;display:inline-block;border-radius:50%;background:var(--good)}.status-dot.warn{background:var(--warn)}.status-dot.accent{background:var(--accent)}.btn{font-family:Geist Variable,Geist,sans-serif;font-size:13px;font-weight:500;color:var(--ink);background:var(--paper);border:var(--hair-w) solid var(--rule);padding:6px 12px;border-radius:var(--rad);cursor:pointer;line-height:1;display:inline-flex;align-items:center;gap:6px;transition:background 80ms ease}.btn:hover:not(:disabled){background:var(--tint)}.btn:active:not(:disabled){transform:translateY(.5px)}.btn:disabled{color:var(--muted);cursor:not-allowed;opacity:.55}.btn.primary{background:var(--ink);color:var(--paper);border-color:var(--ink)}.btn.primary:hover:not(:disabled){background:color-mix(in oklch,var(--ink) 88%,var(--paper))}.btn.accent{background:var(--accent);color:#fff8f1;border-color:var(--accent)}.btn.ghost{border-color:transparent}.btn.ghost:hover:not(:disabled){border-color:var(--rule);background:transparent}.btn.icon-only{padding:6px 7px}.kbd{font-family:Geist Mono,monospace;font-size:10px;border:.8px solid var(--rule);padding:1px 4px;color:var(--muted);margin-left:4px}.select-tokenized{font-family:Geist Mono,monospace;font-size:12px;color:var(--ink);background:var(--paper);border:var(--hair-w) solid var(--rule);padding:5px 10px;border-radius:var(--rad);cursor:pointer}.app-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding-bottom:14px;border-bottom:var(--hair-w) solid var(--rule);margin-bottom:1rem}.app-header .brand{display:flex;align-items:center;gap:12px}.app-header .brand .brand-text{display:flex;flex-direction:column}.app-header .brand h1{font-family:Geist Variable,Geist,sans-serif;font-weight:600;font-size:20px;letter-spacing:-.01em;margin:0;color:var(--ink)}.app-header .brand .lead{color:var(--muted);font-size:13px;margin-top:4px;margin-bottom:0}.app-header .brand .lead .serif{color:var(--muted)}.app-header .header-controls{display:flex;gap:8px;align-items:center}.run-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;gap:12px}.run-toolbar-controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.share-toast{color:var(--good);font-family:Geist Mono,monospace;font-size:12px;margin-left:4px;min-width:0}.output-region{margin-top:1rem}.output-region>.smallcaps{display:block;margin-bottom:6px}.output-stdout{background:var(--ink);color:var(--paper);padding:.75rem;border:var(--hair-w) solid var(--rule);border-radius:var(--rad);min-height:80px;white-space:pre-wrap;font-size:13px;margin:0}.status-banner{margin-top:6px;padding:.5rem .7rem;border:var(--hair-w) solid var(--rule);border-radius:var(--rad);font-family:Geist Mono,monospace;font-size:13px}.status-banner.halted{background:color-mix(in oklch,var(--good) 14%,var(--paper));border-color:var(--good);color:var(--ink)}.status-banner.warn{background:color-mix(in oklch,var(--warn) 14%,var(--paper));border-color:var(--warn);color:var(--ink)}.status-banner-title{font-weight:700;display:inline-flex;align-items:center;gap:8px}.status-banner-hint{margin-top:2px;font-size:12px;color:var(--muted)}.error-banner{background:color-mix(in oklch,var(--accent) 12%,var(--paper));border:var(--hair-w) solid var(--accent);border-radius:var(--rad);padding:.6rem .8rem;margin-top:.5rem;font-size:13px;color:var(--ink)}.error-banner-snippet{margin-top:6px;margin-bottom:0;background:var(--paper);padding:.4rem;color:var(--ink);font-family:Geist Mono,monospace;font-size:12.5px}.exit-line{color:var(--muted);font-size:12px;margin-top:4px}.exit-line code{color:var(--ink);font-family:Geist Mono,monospace}.step-log{margin-top:1rem}.step-log>summary{cursor:pointer;color:var(--muted);font-size:13px;font-family:Geist Mono,monospace}.step-log-pre{background:var(--ink);color:color-mix(in oklch,var(--paper) 80%,transparent);padding:.5rem .75rem;border:var(--hair-w) solid var(--rule);border-radius:var(--rad);max-height:200px;overflow:auto;font-size:12px;margin:6px 0 0}.aside-region{display:flex;flex-direction:column;gap:14px}.aside-section>.smallcaps{display:block;margin-bottom:6px}.aside-empty{color:var(--muted);font-size:13px;margin-top:4px}.reg-table{border-collapse:collapse;font-size:13px;margin-top:4px}.reg-table .reg-name{padding:2px 8px 2px 0;color:var(--muted)}.reg-table .reg-val{padding:2px 0;color:var(--ink);font-variant-numeric:tabular-nums}.flags-row{margin-top:4px;display:flex;flex-wrap:wrap;gap:0}.flag-badge{display:inline-block;padding:2px 8px;border:.6px solid var(--rule);margin:-.6px 0 0 -.6px;background:var(--paper);color:var(--muted);font-family:Geist Mono,monospace;font-size:11px;letter-spacing:.06em}.flag-badge.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.screen-row{margin-top:8px}.memory-range-label{color:var(--muted);font-weight:400;font-size:12px;letter-spacing:0;text-transform:none}.mem-hex{background:var(--ink);color:color-mix(in oklch,var(--paper) 86%,transparent);padding:.5rem .6rem;border:var(--hair-w) solid var(--rule);border-radius:var(--rad);font-size:11px;margin:0;max-height:200px;overflow:auto;line-height:1.55}.mem-off{color:var(--muted)}.mem-cell{display:inline-block}.mem-cell.changed{background:color-mix(in oklch,var(--accent) 30%,transparent);color:var(--accent);font-weight:600;padding:0 2px;margin:0 -2px}@supports not (color: oklch(0% 0 0)){.mem-cell.changed{background:#e2e7f2}body.dark .mem-cell.changed{background:#1f2742}}.breakpoint-hit{margin-top:6px;color:var(--warn);font-size:12px}.app-footer{margin-top:2rem;padding-top:12px;border-top:var(--hair-w) solid var(--rule);color:var(--muted);font-size:13px}.app-footer a{color:var(--ink);text-decoration:underline;text-decoration-color:color-mix(in oklch,var(--ink) 40%,transparent);text-underline-offset:3px}.app-footer a:hover{text-decoration-color:var(--accent)}.left-rail{display:flex;flex-direction:column;gap:14px;min-width:0}.left-rail .pane{padding:12px 14px}.left-rail .smallcaps{display:block;margin-bottom:8px}.left-rail .full-width-select{width:100%;font-family:Geist Mono,monospace;font-size:12px;color:var(--ink);background:var(--paper);border:var(--hair-w) solid var(--rule);padding:6px 8px;border-radius:var(--rad);cursor:pointer}.left-rail .drop-hint{font-family:Geist Mono,monospace;font-size:11px;color:var(--muted);letter-spacing:.04em;line-height:1.5;margin:0}.left-rail .drop-hint code{color:var(--ink);font-family:inherit}.floater{position:fixed;z-index:100;background:var(--paper);border:var(--hair-w) solid var(--rule);box-shadow:2px 2px 0 var(--ink),0 12px 30px -12px color-mix(in oklch,var(--ink) 18%,transparent);min-width:160px;-webkit-user-select:none;user-select:none}.floater.dragging{box-shadow:4px 4px 0 var(--ink),0 24px 50px -10px color-mix(in oklch,var(--ink) 25%,transparent)}.floater-head{height:24px;display:flex;align-items:center;gap:6px;padding:0 8px;background:var(--ink);color:var(--paper);font-family:Geist Mono,monospace;font-size:10.5px;text-transform:uppercase;letter-spacing:.14em;cursor:grab}.floater-head:active{cursor:grabbing}.floater-head .title{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.floater-head .x{width:16px;height:16px;border:.6px solid var(--paper);color:var(--paper);background:transparent;cursor:pointer;display:grid;place-items:center;font-size:10px;line-height:1;padding:0;font-family:inherit}.floater-head .x:hover{background:var(--paper);color:var(--ink)}.floater-body{padding:12px;display:flex;flex-direction:column;gap:8px;align-items:center}.popout-btn{font-family:Geist Mono,monospace;font-size:10px;letter-spacing:.08em;text-transform:uppercase;background:transparent;border:.6px solid var(--rule);color:var(--muted);padding:2px 6px;cursor:pointer;border-radius:var(--rad)}.popout-btn:hover{color:var(--ink);border-color:var(--ink)}.device-slot{display:flex;flex-direction:column;align-items:flex-start;gap:4px}.tweaks-trigger{position:fixed;right:14px;bottom:14px;z-index:200;width:36px;height:36px;background:var(--paper);color:var(--ink);border:var(--hair-w) solid var(--rule);border-radius:var(--rad);font-size:16px;line-height:1;cursor:pointer;display:grid;place-items:center;box-shadow:2px 2px 0 var(--ink);font-family:Geist Mono,monospace}.tweaks-trigger:hover{background:var(--tint)}.tweaks-panel{position:fixed;right:14px;bottom:14px;z-index:200;width:240px;background:var(--paper);border:var(--hair-w) solid var(--rule);box-shadow:2px 2px 0 var(--ink),0 16px 36px -14px color-mix(in oklch,var(--ink) 22%,transparent)}.tweaks-head{height:28px;display:flex;align-items:center;padding:0 10px;background:var(--ink);color:var(--paper);font-family:Geist Mono,monospace;font-size:11px;text-transform:uppercase;letter-spacing:.14em}.tweaks-head .title{flex:1}.tweaks-head .x{width:16px;height:16px;border:.6px solid var(--paper);background:transparent;color:var(--paper);cursor:pointer;display:grid;place-items:center;font-size:10px;line-height:1;padding:0;font-family:inherit}.tweaks-head .x:hover{background:var(--paper);color:var(--ink)}.tweaks-body{padding:12px;display:flex;flex-direction:column;gap:12px}.tweaks-section{display:flex;flex-direction:column;gap:6px}.tweaks-label{font-family:Geist Mono,monospace;font-size:10px;text-transform:uppercase;letter-spacing:.14em;color:var(--muted)}.segmented{display:flex;border:.6px solid var(--rule)}.segmented-opt{flex:1;background:var(--paper);border:0;border-right:.6px solid var(--rule);color:var(--muted);padding:5px 4px;font-family:Geist Mono,monospace;font-size:11px;cursor:pointer}.segmented-opt:last-child{border-right:0}.segmented-opt.active{background:var(--ink);color:var(--paper)}.segmented-opt:hover:not(.active){background:var(--tint);color:var(--ink)}.accent-row{display:flex;align-items:center;gap:8px}.accent-swatch{width:56px;height:24px;border:.6px solid var(--rule);padding:0;cursor:pointer;background:transparent}.accent-swatch::-webkit-color-swatch-wrapper{padding:0}.accent-swatch::-webkit-color-swatch{border:0}.reset-link{font-family:Geist Mono,monospace;font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);background:transparent;border:0;cursor:pointer;padding:0;text-decoration:underline;text-decoration-color:color-mix(in oklch,var(--muted) 40%,transparent)}.reset-link:hover{color:var(--ink)}.toggle{display:inline-flex;align-items:center;gap:8px;border:0;background:transparent;cursor:pointer;padding:0;font-family:Geist Mono,monospace;font-size:11px;color:var(--ink)}.toggle .toggle-thumb{position:relative;width:28px;height:16px;border:.6px solid var(--rule);background:var(--paper);display:inline-block}.toggle .toggle-thumb:after{content:"";position:absolute;top:1px;left:1px;width:12px;height:12px;background:var(--rule);transition:transform .12s ease}.toggle.on .toggle-thumb{background:var(--ink);border-color:var(--ink)}.toggle.on .toggle-thumb:after{background:var(--paper);transform:translate(12px)}.toggle-label{letter-spacing:.04em}.metrics-block{display:flex;flex-direction:column;gap:8px}.metrics-meta{font-family:Geist Mono,monospace;font-size:10px;color:var(--muted);letter-spacing:.04em}.metrics-empty{font-family:Geist Mono,monospace;font-size:10px;color:var(--muted);font-style:italic}.metrics-table{border-collapse:collapse;font-size:11px;width:100%}.metrics-table td{padding:2px 0;border-bottom:.4px solid color-mix(in oklch,var(--rule) 40%,transparent)}.metrics-name{color:var(--ink)}.metrics-count{color:var(--muted);text-align:right;padding-left:12px}.classroom-pill{display:inline-flex;align-items:center;gap:6px;font-family:Geist Mono,monospace;font-size:11px;letter-spacing:.04em;color:var(--ink);background:var(--paper);border:.8px solid var(--rule);padding:5px 10px;border-radius:var(--rad);cursor:pointer;line-height:1}.classroom-pill:hover:not(:disabled){background:var(--tint)}.classroom-pill .classroom-pill-dot{width:6px;height:6px;border-radius:50%;background:var(--muted);display:inline-block}.classroom-pill .classroom-pill-dot.off{background:color-mix(in oklch,var(--muted) 60%,transparent)}.classroom-pill .classroom-pill-dot.warn{background:var(--warn);animation:classroom-pulse 1.4s ease-in-out infinite}.classroom-pill.active .classroom-pill-dot{background:var(--good)}.classroom-pill.active{border-color:var(--good)}.classroom-pill.connecting{cursor:progress}.classroom-pill-leave{margin-left:2px;color:var(--muted)}.classroom-pill:hover .classroom-pill-leave{color:var(--accent)}@keyframes classroom-pulse{0%,to{opacity:1}50%{opacity:.35}}.classroom-drawer{position:fixed;top:64px;right:16px;bottom:16px;width:360px;max-width:calc(100vw - 32px);z-index:50;background:var(--paper);border:var(--hair-w) solid var(--rule);border-radius:var(--rad);box-shadow:1px 1px 0 var(--ink),0 8px 24px color-mix(in oklch,var(--ink) 18%,transparent);display:flex;flex-direction:column;overflow:hidden}.classroom-banner{display:grid;grid-template-columns:auto 1fr;grid-template-areas:"logo text" "code code";gap:8px 10px;padding:12px;border-bottom:var(--hair-w) solid var(--rule);background:color-mix(in oklch,var(--accent-soft) 35%,var(--paper))}.classroom-banner-logo{grid-area:logo;width:28px;height:28px;object-fit:contain;border:.4px solid var(--rule)}.classroom-banner-text{grid-area:text;min-width:0}.classroom-banner-line{font-family:Geist Variable,Geist,sans-serif;font-weight:600;font-size:12.5px;color:var(--ink);line-height:1.25}.classroom-banner-sub{font-family:Geist Mono,monospace;font-size:10px;color:var(--muted);margin-top:2px;letter-spacing:.04em}.classroom-banner-code{grid-area:code;display:flex;align-items:center;justify-content:space-between;gap:8px;padding-top:6px;border-top:.4px solid color-mix(in oklch,var(--rule) 50%,transparent)}.classroom-banner-code-text{font-size:13px;font-weight:500;color:var(--ink)}.classroom-banner-copy{font-family:Geist Mono,monospace;font-size:10px}.classroom-drawer-body{flex:1 1 auto;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:14px}.classroom-drawer-section{display:flex;flex-direction:column;gap:6px}.classroom-drawer-header{display:flex;align-items:center;justify-content:space-between}.classroom-counter{font-size:11px;color:var(--muted);border:.6px solid var(--rule);padding:1px 6px}.classroom-handsup-badge{font-family:Geist Mono,monospace;font-size:10px;letter-spacing:.04em;color:var(--ink);background:color-mix(in oklch,var(--warn) 20%,var(--paper));padding:2px 8px;border:.6px solid var(--warn)}.classroom-empty{font-family:Geist Mono,monospace;font-size:11px;color:var(--muted);font-style:italic;margin:0}.classroom-roster,.classroom-submissions{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.classroom-roster-row,.classroom-submission-row{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center;padding:5px 0;border-bottom:.4px solid color-mix(in oklch,var(--rule) 40%,transparent);font-size:12px}.classroom-roster-row.hand-up{background:color-mix(in oklch,var(--warn) 10%,transparent)}.classroom-roster-row.offline{opacity:.55}.classroom-roster-roll{font-size:11px;color:var(--ink);font-weight:500}.classroom-roster-name{color:var(--ink);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.classroom-roster-hand{font-size:13px}.classroom-roster-offline{font-family:Geist Mono,monospace;font-size:9px;color:var(--muted);letter-spacing:.04em;text-transform:uppercase}.classroom-submission-time{font-size:10px;color:var(--muted)}.classroom-prompt{width:100%;font-family:Geist Mono,monospace;font-size:12px;color:var(--ink);background:var(--paper);border:var(--hair-w) solid var(--rule);border-radius:var(--rad);padding:8px;resize:vertical}.classroom-prompt-readonly{margin:0;padding:8px;border:.4px solid var(--rule);background:color-mix(in oklch,var(--paper) 96%,var(--ink) 4%);font-family:Geist Mono,monospace;font-size:12px;white-space:pre-wrap;color:var(--ink)}.classroom-status-line{margin:0;font-family:Geist Mono,monospace;font-size:11px;color:var(--muted)}.classroom-peers{margin:0;font-size:12px;color:var(--muted)}.classroom-status-banner{padding:8px 10px;border:var(--hair-w) solid var(--rule);border-radius:var(--rad);font-size:12px;font-weight:500}.classroom-status-banner.danger{background:color-mix(in oklch,var(--accent) 18%,var(--paper));border-color:var(--accent);color:var(--ink)}.classroom-status-banner.accent{background:color-mix(in oklch,var(--accent-soft) 60%,var(--paper));border-color:color-mix(in oklch,var(--accent) 50%,var(--rule));color:var(--ink)}.classroom-drawer-footer{display:flex;justify-content:space-between;gap:8px;padding:12px;border-top:var(--hair-w) solid var(--rule);background:var(--paper);flex:0 0 auto}.classroom-drawer-footer-stack{display:flex;flex-direction:column;flex:0 0 auto}.classroom-drawer-footer-stack .classroom-drawer-footer{border-top:.4px solid color-mix(in oklch,var(--rule) 50%,transparent);padding:8px 12px}.classroom-drawer-footer-stack .classroom-drawer-footer:first-child{border-top:var(--hair-w) solid var(--rule)}.classroom-drawer-footer-stack .btn{flex:1 1 auto;font-size:11.5px}.classroom-closure{position:fixed;bottom:16px;right:16px;z-index:60;background:var(--paper);border:var(--hair-w) solid var(--accent);border-radius:var(--rad);padding:10px 14px;font-family:Geist Mono,monospace;font-size:12px;color:var(--ink);box-shadow:1px 1px 0 var(--ink);max-width:360px;display:flex;align-items:center;gap:12px}.classroom-closure-dismiss{background:transparent;border:0;color:var(--muted);font-size:16px;line-height:1;cursor:pointer;padding:0;flex:0 0 auto}.classroom-closure-dismiss:hover{color:var(--accent)}.classroom-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:color-mix(in oklch,var(--ink) 50%,transparent);display:flex;align-items:center;justify-content:center;padding:24px}.classroom-modal{background:var(--paper);border:var(--hair-w) solid var(--rule);border-radius:var(--rad);box-shadow:1px 1px 0 var(--ink),0 12px 36px color-mix(in oklch,var(--ink) 25%,transparent);max-width:600px;width:100%;max-height:calc(100vh - 48px);overflow-y:auto;display:flex;flex-direction:column}.classroom-startjoin{width:600px}.classroom-modal-tabs{display:flex;border-bottom:var(--hair-w) solid var(--rule);position:relative}.classroom-modal-tab{flex:1;padding:12px 16px;font-family:Geist Mono,monospace;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);background:transparent;border:0;cursor:pointer;border-right:.4px solid var(--rule)}.classroom-modal-tab:last-of-type{border-right:0}.classroom-modal-tab.active{color:var(--ink);background:color-mix(in oklch,var(--accent-soft) 30%,var(--paper))}.classroom-modal-x{position:absolute;top:6px;right:8px;background:transparent;border:0;font-size:18px;line-height:1;color:var(--muted);cursor:pointer}.classroom-modal-x:hover{color:var(--ink)}.classroom-modal-heading{font-family:Geist Variable,Geist,sans-serif;font-weight:600;font-size:16px;margin:0 0 8px;color:var(--ink)}.classroom-form{padding:16px;display:flex;flex-direction:column;gap:10px}.classroom-form-heading{font-family:Geist Variable,Geist,sans-serif;font-weight:600;font-size:16px;margin:0 0 6px;color:var(--ink)}.classroom-form-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.classroom-field{display:flex;flex-direction:column;gap:3px}.classroom-field-label{font-family:Geist Mono,monospace;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.classroom-field-required{color:var(--accent);margin-left:2px}.classroom-field-hint{font-size:10.5px;color:var(--muted);font-style:italic}.classroom-input{font-family:Geist Variable,Geist,sans-serif;font-size:13px;color:var(--ink);background:var(--paper);border:var(--hair-w) solid var(--rule);border-radius:var(--rad);padding:7px 10px;width:100%;box-sizing:border-box}.classroom-input.mono{font-family:Geist Mono,monospace}.classroom-input:focus{outline:.6px solid var(--accent);outline-offset:0}.classroom-checkbox{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--ink);cursor:pointer}.classroom-template-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.classroom-form-error{color:var(--accent);font-size:12px;font-family:Geist Mono,monospace}.classroom-form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:6px}.classroom-consent{max-width:480px;padding:20px 22px}.classroom-consent-body{font-size:13px;color:var(--ink);line-height:1.55;margin:6px 0 16px}.classroom-modal-actions{display:flex;justify-content:flex-end;gap:8px}.classroom-drawer-collapse{position:absolute;top:4px;right:4px;width:22px;height:22px;display:flex;align-items:center;justify-content:center;background:var(--paper);border:.6px solid var(--rule);border-radius:var(--rad);cursor:pointer;color:var(--muted);font-family:Geist Mono,monospace;font-size:14px;line-height:1;z-index:1}.classroom-drawer-collapse:hover{color:var(--ink);background:var(--tint)}.classroom-drawer{position:fixed}.classroom-strip{position:fixed;top:96px;right:0;bottom:16px;width:44px;z-index:50;background:var(--paper);border:var(--hair-w) solid var(--rule);border-right:0;border-radius:var(--rad) 0 0 var(--rad);box-shadow:-1px 1px 0 var(--ink),-4px 0 12px color-mix(in oklch,var(--ink) 14%,transparent);cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:14px;padding:10px 0 14px;font-family:Geist Mono,monospace;color:var(--ink)}.classroom-strip:hover{background:color-mix(in oklch,var(--accent-soft) 28%,var(--paper))}.classroom-strip-chevron{font-size:18px;line-height:1;color:var(--muted)}.classroom-strip-room{writing-mode:vertical-rl;transform:rotate(180deg);font-size:11px;letter-spacing:.08em;color:var(--ink);font-weight:500}.classroom-strip-stat{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:10px;color:var(--ink)}.classroom-strip-stat-num{font-size:13px;font-weight:600}.classroom-strip-stat-icon{font-size:13px;opacity:.85}.classroom-strip-stat.warn{color:var(--warn)}.classroom-strip-stat.warn .classroom-strip-stat-icon{opacity:1}.classroom-actions{display:flex;gap:8px}.classroom-actions>.btn{flex:1 1 auto}.classroom-hand-btn.up{background:color-mix(in oklch,var(--warn) 22%,var(--paper));border-color:var(--warn)}.classroom-flash{margin:-4px 0 0;font-size:11px;color:var(--good);font-family:Geist Mono,monospace}.classroom-roster-row{position:relative;display:flex;flex-direction:column;gap:4px;padding:6px 0;border-bottom:.4px solid color-mix(in oklch,var(--rule) 40%,transparent)}.classroom-roster-row.expanded{background:color-mix(in oklch,var(--accent-soft) 22%,var(--paper));border:.6px solid var(--rule);border-radius:var(--rad);padding:8px;margin:4px 0}.classroom-roster-summary{display:grid;grid-template-columns:auto 1fr auto auto;gap:8px;align-items:center;background:transparent;border:0;padding:0;cursor:pointer;font:inherit;text-align:left;width:100%}.classroom-roster-summary:hover{color:var(--accent)}.classroom-roster-chevron{font-size:11px;color:var(--muted)}.classroom-roster-badge{font-size:10px;padding:1px 6px;border:.6px solid var(--rule);background:color-mix(in oklch,var(--accent-soft) 30%,var(--paper));color:var(--ink)}.classroom-roster-actions-row{display:flex;justify-content:flex-end;gap:4px;align-items:center}.classroom-roster-action{background:transparent;border:.6px solid transparent;color:var(--muted);cursor:pointer;font-size:13px;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--rad);padding:0}.classroom-roster-action:hover{border-color:var(--rule);color:var(--ink);background:var(--tint)}.classroom-roster-action.danger:hover{color:var(--accent);border-color:var(--accent)}.classroom-roster-action.accent{color:var(--accent);border-color:var(--accent);background:color-mix(in oklch,var(--accent) 12%,var(--paper))}.classroom-roster-action[disabled]{opacity:.4;cursor:not-allowed}.classroom-broadcast-pane{background:var(--ink);color:var(--paper);padding:10px 12px;border:var(--hair-w) solid var(--rule);border-radius:var(--rad);font-size:12px;line-height:1.45;max-height:240px;overflow:auto;white-space:pre-wrap;margin:0}.classroom-broadcast-empty{color:color-mix(in oklch,var(--paper) 70%,var(--ink) 30%);font-style:italic}.tutorial-trigger{position:fixed;bottom:14px;right:66px;z-index:40;width:36px;height:36px;font-size:18px;line-height:1;background:var(--paper);border:var(--hair-w) solid var(--rule);border-radius:var(--rad);cursor:pointer;box-shadow:2px 2px 0 var(--ink);display:flex;align-items:center;justify-content:center}.tutorial-trigger:hover{background:var(--tint)}.tutorial-drawer{position:fixed;bottom:16px;right:16px;width:420px;max-width:calc(100vw - 32px);max-height:calc(100vh - 96px);z-index:55;background:var(--paper);border:var(--hair-w) solid var(--rule);border-radius:var(--rad);box-shadow:1px 1px 0 var(--ink),0 8px 24px color-mix(in oklch,var(--ink) 18%,transparent);display:flex;flex-direction:column;overflow:hidden}.tutorial-head{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:var(--hair-w) solid var(--rule);background:color-mix(in oklch,var(--accent-soft) 25%,var(--paper))}.tutorial-head .title{font-size:11px;letter-spacing:.12em;color:var(--ink)}.tutorial-head-actions{display:flex;gap:4px}.tutorial-icon-btn{background:transparent;border:0;color:var(--muted);font-size:14px;line-height:1;padding:2px 6px;cursor:pointer;border-radius:var(--rad)}.tutorial-icon-btn:hover{color:var(--ink);background:var(--tint)}.tutorial-body{padding:12px;overflow-y:auto;flex:1 1 auto}.tutorial-intro{margin:0 0 14px;font-size:12.5px;color:var(--muted);line-height:1.5}.tutorial-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.tutorial-card{border:.6px solid var(--rule);border-radius:var(--rad);background:var(--paper)}.tutorial-card.done{border-color:var(--good);background:color-mix(in oklch,var(--good) 8%,var(--paper))}.tutorial-card-btn{width:100%;background:transparent;border:0;padding:10px 12px;text-align:left;cursor:pointer;font:inherit;color:inherit;display:flex;flex-direction:column;gap:6px}.tutorial-card-btn:hover{background:var(--tint)}.tutorial-card-row{display:grid;grid-template-columns:auto 1fr auto;align-items:baseline;gap:10px}.tutorial-card-num{font-size:11px;color:var(--muted);letter-spacing:.08em}.tutorial-card-title{font-family:Geist Variable,Geist,sans-serif;font-weight:600;font-size:13.5px;color:var(--ink)}.tutorial-card-mins{font-size:10px;color:var(--muted);letter-spacing:.04em}.tutorial-card-blurb{margin:0;font-size:12px;color:var(--muted);line-height:1.5}.tutorial-card-progress{display:flex;align-items:center;gap:8px;font-size:10px;color:var(--muted)}.tutorial-card-bar{flex:1 1 auto;height:4px;background:color-mix(in oklch,var(--rule) 60%,transparent);position:relative;overflow:hidden}.tutorial-card-bar:before{content:"";position:absolute;inset:0 auto 0 0;width:var(--pct, 0%);background:var(--good);transition:width .2s ease}.tutorial-card-done{color:var(--good);font-size:14px}.tutorial-active{display:flex;flex-direction:column;flex:1 1 auto;overflow:hidden}.tutorial-progress-bar{height:3px;background:color-mix(in oklch,var(--rule) 60%,transparent);position:relative}.tutorial-progress-fill{position:absolute;inset:0 auto 0 0;background:var(--accent);transition:width .24s ease}.tutorial-step-meta{padding:8px 12px 0;color:var(--muted);font-size:10px;letter-spacing:.08em}.tutorial-step-body{padding:4px 14px 12px;overflow-y:auto;flex:1 1 auto}.tutorial-step-title{font-family:Geist Variable,Geist,sans-serif;font-weight:600;font-size:16px;margin:6px 0 12px;color:var(--ink)}.tutorial-md p{margin:0 0 12px;font-size:13px;line-height:1.6;color:var(--ink)}.tutorial-md ul{margin:0 0 12px;padding-left:18px;font-size:13px;line-height:1.55;color:var(--ink)}.tutorial-md li{margin-bottom:4px}.tutorial-md code,.tutorial-md .mono{font-family:Geist Mono,monospace;font-size:12px;background:color-mix(in oklch,var(--accent-soft) 35%,var(--paper));padding:1px 5px;border:.4px solid color-mix(in oklch,var(--rule) 60%,transparent)}.tutorial-md strong{font-weight:600;color:var(--ink)}.tutorial-nav{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-top:var(--hair-w) solid var(--rule);background:var(--paper);gap:8px;flex:0 0 auto}.tutorial-nav-mid{display:flex;gap:6px}@media (max-width: 768px){.tutorial-drawer{left:0;right:0;bottom:0;width:auto;max-width:none;max-height:75vh;border-radius:0}}.classroom-comment-thread{display:flex;flex-direction:column;gap:8px;margin-top:4px}.classroom-comment-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.classroom-comment{background:var(--paper);border:.6px solid var(--rule);border-radius:var(--rad);padding:7px 9px}.classroom-comment.unseen{border-color:var(--accent);background:color-mix(in oklch,var(--accent-soft) 50%,var(--paper))}.classroom-comment-body{margin:0;font-size:12.5px;color:var(--ink);line-height:1.4;white-space:pre-wrap}.classroom-comment-meta{display:flex;justify-content:space-between;align-items:center;margin-top:4px;font-size:10px;color:var(--muted);letter-spacing:.04em}.classroom-comment-time{font-size:10px}.classroom-comment-seen{font-family:Geist Mono,monospace;text-transform:uppercase;letter-spacing:.08em;color:var(--good)}.classroom-comment-composer{display:flex;flex-direction:column;gap:6px}.classroom-comment-input{font-family:Geist Variable,Geist,sans-serif;font-size:12.5px;color:var(--ink);background:var(--paper);border:var(--hair-w) solid var(--rule);border-radius:var(--rad);padding:6px 8px;width:100%;box-sizing:border-box;resize:vertical}.classroom-comment-composer .btn{align-self:flex-end;font-size:11px;padding:4px 10px}@media (max-width: 1180px){.classroom-drawer{width:320px}}@media (max-width: 768px){.classroom-drawer{top:auto;right:0;left:0;bottom:0;width:auto;max-height:70vh;border-radius:0}.classroom-strip{top:auto;bottom:0;right:0;width:auto;height:36px;flex-direction:row;padding:0 12px;gap:18px;border-radius:var(--rad) var(--rad) 0 0;border:var(--hair-w) solid var(--rule);border-bottom:0}.classroom-strip-room{writing-mode:horizontal-tb;transform:none}.classroom-strip-stat{flex-direction:row;gap:6px}.classroom-startjoin{width:auto}.classroom-form-row{grid-template-columns:1fr}}html,body,#root{margin:0;padding:0;overflow-x:hidden;min-height:100%}.app-layout{display:grid;grid-template-columns:240px minmax(0,1fr) 300px;gap:1rem;align-items:start}body.layout-wide .app-layout{grid-template-columns:200px minmax(0,1fr) 260px}body.layout-equal .app-layout{grid-template-columns:300px minmax(0,1fr) 360px}@media (max-width: 1180px){.app-layout{grid-template-columns:minmax(0,1fr) 300px}.left-rail{grid-column:1 / -1;order:-1}}@media (max-width: 760px){.app-layout{grid-template-columns:minmax(0,1fr)}.left-rail{grid-column:auto}.app-header{flex-wrap:wrap}.app-header>div:first-child{flex-basis:100%}.app-root{padding:1rem .75rem!important}.source-editor-frame{height:280px!important}.floater{max-width:calc(100vw - 16px);max-height:calc(100vh - 32px);left:8px!important;right:8px;overflow:auto}.floater-body{padding:8px}.tutorial-trigger{right:14px;bottom:58px}}.device-row{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-start}button:focus-visible,select:focus-visible,[role=button]:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid #0a7;outline-offset:2px}
