@font-face{font-family:DM Sans Variable;font-style:normal;font-display:swap;font-weight:100 1000;src:url(/lab/assets/dm-sans-latin-ext-wght-normal-BOFOeGcA.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans Variable;font-style:normal;font-display:swap;font-weight:100 1000;src:url(/lab/assets/dm-sans-latin-wght-normal-Xz1IZZA0.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,d09GMgABAAAAAAfsABQAAAAAEAwAAAeCAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoP0hWQVJbBmA/U1RBVIFiJyYAdC9qEQgKhGSEAAsgADCGCAE2AiQDOgQgBYlMB4EUDAcbLQ4onoexrSC/2ZyLAa8p8VHB8/x3Vue+V0hVJalMJg2nx/TCrQXxBeqLjQG7FyM1WEa/X1tEXN7cFz9EJEMmMUz3RihWSSKeQCbcIou0izz/C8v+fq3VfajEa9gDD11CImXS7qL/RJFVzC1qiB6KmKeD6TZdQ6IRGv78dL6uSVVCfgni5mzu7kcgQBgAEAQTQRCoL++STTYybkJxNfQxAAIAGu8OdEB9teW2jh4BpgDqFjAeSEByW3zFP0CBBgNMsMCGEDjgggdhiEAUAeIIED7ABTDUEnkIE9Q9ahFgKttcVhApo4ACB4qobHaccgDfEjFO6aaWUhjMLt2SyIvHKoDqoA4CSUwEIYQCEjhAO9R1G6keDeDZGjNo+AhxOjCEGTr1WeIF3kYBiLAOKvkJSMiKX0VdAyQt3SDJClCkxJCHkCzfqyVTriJZLcolS32JZHUekq2TYNkYtCtjYHMQXSxGjXDz2t/yLWXzDzxz+o3zFwDEaN23F+13pyMdQAEaSKAR9vcGq4A4MTSKCElGW+M7UcY7xqkggITb28ZJhlqc9q2twYKTt0NjixBgYvO9BIihEBLYuOFXQzfIQ7dXGUEEEgFDooBfAzqiQbpJrhiWSuKJCRFKYbHCyJKI2G5GiZbNAvgAu5pc3vwx4G+g3aDkhklABiSz0BICXrYghtYhx/cdJ+44rY2oZ0aMNRFz3VZjb6W33F3gzltqtOCV8tTHSpOeXuItfvr5lCdfzFpqtEitvqdcdGGFd28ZqqC0tPbeChGXgrIlnhSWu/eUso4uKWFLugyDzQJhflY4659+WjQ++6x72WUMv9G8mw6QJl7BVxX5fe/kpUsOvnZwee9uQ0cGXYd0o89XB2748sDSnt8d2VphdOTTgceDVvOds0v9P/s7HPq15aGun/6Vllb56f1dl0t1LejqrNkpdRZsG8TOnM5vkBG5oiVyVGnS8LHps5cfNWJs6qKPfaNSxiQNBUm3cKNWROr0GSur7Za31k1vieq7LH11VF+jXdRIasRKflc7jkobm1Z9te1IyZA0pDkhLR98+H37Zf1c/8at+dB7x+7GfVyTfJMPiYztsnl59Y5l4j+0n1RXlpHnF3Tq7HecmNF/CJodEMAikruxiyJaGLvHOdAfoA+oDvpjBm2b91cHGRZMU9n25xEU0A8fgEEAdKI3Q1iDtc034sug5YVMkE2jsE+BIkwSoQ3gxXMqz9tELp48bd0cFKOKS7xYjEuXBnZP5ia7DyiO/X/YI+PQSbt2uSdqAkWL9nQbV1XB94/+uPfdZz8dnXYFBYrcTl2SIR/ybxJNJPz/Gupb0JaZeens2ekC7EKr8t+Ls/P5VJPYJdHKyqfg2nqU6bhlidzcddQV/7MmecTzJ5VPcKXkNKSEogHjYFx6QZ7rQ+FSe8njaiNuOnXS8H2ScQ619c2mC3VTtauL0rRbXd/CkSOP37FY9Zkjz8+GibYUMOEWF+RdrFS8Ecv1SHOpPUPZGEIpjPvFyU5cXKjd6OXqorTqy9GwRd++HVufPGnVsW+aO3vggKZ18jR9sXaTC1PWTEsVUaK0FkNySbTQDqlm2PfDjZcu4aalnSLKjnOoYQ0nUlqqXcGpPu/4VgV/xU2pAqW4BW3qzhQ8/hFKhV2qE3+BKAtDqBXjfgnVdH4y0wg5tbVNRenNdTWOrenWLcupQdmsbq5b+18piTe/xRdp1xbILxNPJGInm2z6hoB21Lal0i+ePTtd7B45+3XhFJ329evskXm7qurUVREotqSluSo/L29d3qDhI4YOQqWhI4YNvBNfsMHeXKemXrxQfKeuPOGRVayA3JtkJKEgbPp+dXUDluddutRYLFoXGXWX6N3WFaGLbQtRSitVYNacTNSdy7AaG/HSaUEANcBoGXNdcZvZsOqQ1icBDv21/gzAoYPHH/WDW0qNR3QTYKEAEHig6o13NXbND06CQPlRtYjGNnSktRc09k1mAMDvAlDKfQjgy6fssInlfzmNAjKkDxoxHOBLdVRAIVt9j4qo+hA1w9T1aNBNTUOTTNUHLbqokE+UAfJXCIGw/IxCSL5GRUJeR40rL/UxTm4Q08H6MbCs70ObuNyIIXrINHQYInF06UUlevTjbQzTh5upiDMzMMogUtEnjPs/Y7jAHCJeB0GBHh04tC6FiB6ZFB1oArUSIoFoqhzCeAN6lHwm0T4C3VVPWvjpSMXReuWesMEcoqrmgtNBGd2noWeV0hNAz9rFeShNJxHGsPa3HXeKTk8b55hahySYHaYKKFFLpCfN8rsoaJn01CR04Gkc+5k7KVTCmClX8Q10HCrUEkVlSX+XO33oQR9609tJ516H497WSobWs5Up6TLaS10/dessIskgJSLiDlWvHVUywpkQ7hdPZqGyiEF0uVQerVcPamT1A3eKXdyI1vG9OoflrSXihZ1qqGE3nhmAgiIbRCQgPLEPtOM3UQwTLYaYYomNlpA44opnjV6jkD6id80OOrzf6BzmMD6eEa1zKyeYG1fzfEf16V6jw9XYOaar1/b2kP/IYX8oR2mcFvv2GtBV3JXgd437AQAA) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/lab/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/lab/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/lab/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/lab/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/lab/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #f3f5f6;--surface: #ffffff;--surface-2: #f7f9f9;--surface-3: #eef2f3;--border: #e2e7e9;--border-strong: #cfd7da;--text: #172022;--text-2: #3d4a4d;--muted: #687679;--chrome: #1b2224;--chrome-2: #263032;--chrome-line: rgb(255 255 255 / .1);--chrome-text: #eef2f1;--chrome-muted: #9aa6a8;--terminal: #141b1c;--terminal-text: #d6dee0;--accent: #47b6d9;--accent-hover: #5fc2e2;--accent-ink: #13799b;--accent-subtle: #e8f6fb;--accent-border: #b9e2f0;--on-accent: #0d1a1d;--success: #16834a;--success-subtle: #e9f7ef;--success-border: #bfe6cf;--warning: #b45309;--warning-subtle: #fff6e8;--warning-border: #f6d9a8;--live: #e8932f;--danger: #c4321f;--danger-hover: #a8281a;--danger-subtle: #fdf1ef;--danger-border: #f5cdc6;--radius-sm: 6px;--radius: 8px;--radius-lg: 12px;--shadow-xs: 0 1px 2px rgb(16 24 26 / .05);--shadow-sm: 0 1px 3px rgb(16 24 26 / .07), 0 1px 2px rgb(16 24 26 / .04);--shadow-md: 0 10px 28px rgb(16 24 26 / .12), 0 2px 6px rgb(16 24 26 / .06);--shadow-lg: 0 24px 56px rgb(16 24 26 / .22), 0 4px 12px rgb(16 24 26 / .08);--ring: 0 0 0 3px rgb(71 182 217 / .32);--sans: "DM Sans Variable", system-ui, -apple-system, "Segoe UI", sans-serif;--mono: "JetBrains Mono Variable", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--ink: var(--text);--ink-2: var(--text-2);--line: var(--border);--paper: var(--surface-2);--card: var(--surface);--navy: var(--chrome);--cyan: var(--accent);--cyan-ink: var(--accent-ink);--orange: var(--live);--red: var(--danger);--green: var(--success);font-family:var(--sans);font-size:14px;line-height:1.45;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"ss01"}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}button,input,select,textarea{font-family:inherit}svg.lucide{flex:none;stroke-width:1.85}::selection{background:#cdeaf4}*{scrollbar-width:thin;scrollbar-color:#c9d2d5 transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#cbd3d6;border:3px solid transparent;border-radius:999px;background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background-color:#aeb9bd}::-webkit-scrollbar-track{background:transparent}.app{display:flex;flex-direction:column;height:100%;position:relative}.brand{display:inline-flex;align-items:center;gap:10px;white-space:nowrap}.brand-icon{display:block;flex:none}.brand-name{font-size:18px;font-weight:700;letter-spacing:-.01em}.brand .lab{color:var(--accent)}.topbar{position:relative;z-index:20;background:var(--chrome);color:var(--chrome-text);display:flex;align-items:center;flex-wrap:wrap;gap:8px 16px;padding:8px 16px;min-height:56px;border-bottom:1px solid #0f1415;box-shadow:0 1px #ffffff08 inset}.topbar-left{display:flex;align-items:center;gap:24px}.topbar .account{margin-left:auto}.nav-tabs{display:flex;gap:2px}.nav-tab{position:relative;display:inline-flex;align-items:center;gap:7px;height:36px;padding:0 12px;border:0;border-radius:var(--radius);background:none;color:var(--chrome-muted);font:inherit;font-size:14px;font-weight:550;cursor:pointer;transition:color .12s,background-color .12s}.nav-tab:hover{color:var(--chrome-text);background:#ffffff0f}.nav-tab.active{color:#fff;background:#ffffff1a}.nav-tab.active svg{color:var(--accent)}.toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.board-select select{appearance:none;height:36px;min-width:170px;padding:0 34px 0 12px;border:1px solid rgb(255 255 255 / .16);border-radius:var(--radius);background:#ffffff0f url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%239aa6a8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m4 6 4 4 4-4'/%3E%3C/svg%3E") no-repeat right 10px center;color:var(--chrome-text);font:inherit;font-size:14px;font-weight:550;cursor:pointer}.board-select select:hover{background-color:#ffffff1a}.board-select select:disabled{opacity:.55;cursor:not-allowed}.board-select option{color:var(--text);background:var(--surface)}.board-hint{font-size:12px;color:var(--chrome-muted)}.board-hint.unknown{color:#f3b35f;font-weight:600}.connection-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#4ade80;box-shadow:0 0 0 3px #4ade8038}.account{display:flex;align-items:center;gap:8px}.account-menu{position:relative}.account-button{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 10px 0 4px;border:1px solid transparent;border-radius:999px;background:none;color:var(--chrome-text);font:inherit;font-size:14px;font-weight:550;cursor:pointer;transition:background-color .12s,border-color .12s}.account-button:hover,.account-button[aria-expanded=true]{background:#ffffff14;border-color:#ffffff1a}.account-button svg{color:var(--chrome-muted)}.avatar{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,#5fc2e2,#2f9fc4);color:var(--on-accent);font-size:13px;font-weight:700}.account-popover{position:absolute;right:0;top:calc(100% + 8px);z-index:50;min-width:232px;padding:6px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);color:var(--text);box-shadow:var(--shadow-md)}.account-info{display:flex;flex-direction:column;gap:2px;padding:8px 10px 10px;border-bottom:1px solid var(--border);margin-bottom:4px}.account-info strong{font-weight:650}.account-info span{color:var(--muted);font-size:13px}.account-item{width:100%;display:flex;align-items:center;gap:8px;padding:8px 10px;border:0;border-radius:var(--radius-sm);background:none;color:var(--text);font:inherit;font-size:14px;cursor:pointer}.account-item:hover{background:var(--surface-3)}.account-item svg{color:var(--muted)}.account-groups{display:flex;flex-direction:column;padding:2px 0 4px;margin-bottom:4px;border-bottom:1px solid var(--border)}.account-section-label{display:flex;align-items:center;gap:6px;padding:6px 10px 4px;color:var(--muted);font-size:11.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.account-groups .account-item{max-width:280px}.account-group.active{color:var(--accent-ink);font-weight:650}.account-group:disabled{opacity:.6;cursor:progress}.account-group-check{display:grid;place-items:center;width:16px;flex:none}.account-group.active .account-group-check svg{color:var(--accent-ink)}.account-group-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-error{margin:4px 10px;color:var(--danger);font-size:12.5px}.live-chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border-radius:999px;font-size:13px;font-weight:600;white-space:nowrap}button.live-chip{border:0;font:inherit;font-size:13px;font-weight:600;cursor:pointer}.live-chip.watching{background:#e8932f29;color:#f6b86a;box-shadow:inset 0 0 0 1px #e8932f59}.live-chip.presenting{background:#47b6d929;color:#8fd5ec;box-shadow:inset 0 0 0 1px #47b6d966}button.live-chip.presenting:hover{background:#47b6d93d}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:36px;padding:0 14px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--text);box-shadow:var(--shadow-xs);font:inherit;font-size:14px;font-weight:600;line-height:1;white-space:nowrap;cursor:pointer;transition:background-color .12s,border-color .12s,color .12s,box-shadow .12s}.btn:hover{background:var(--surface-2);border-color:#b9c4c8}.btn:active{background:var(--surface-3)}.btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.btn.small{height:30px;padding:0 10px;font-size:13px;gap:5px}.btn.primary{background:var(--accent);border-color:#34a6cb;color:var(--on-accent);box-shadow:var(--shadow-xs),inset 0 1px #ffffff40}.btn.primary:hover:not(:disabled){background:var(--accent-hover);border-color:#3eaed2}.btn.primary:active:not(:disabled){background:#3aa9cd}.btn.secondary{background:var(--accent-subtle);border-color:var(--accent-border);color:#0f6380;box-shadow:none}.btn.secondary:hover:not(:disabled){background:#d8f0f8;border-color:#9ed6ea}.btn.ghost{background:var(--surface);color:var(--text);border-color:var(--border-strong)}.btn.ghost:hover:not(:disabled){background:var(--surface-2);border-color:#b9c4c8}.btn.danger{background:var(--danger-subtle);border-color:var(--danger-border);color:var(--danger);box-shadow:none}.btn.danger:hover:not(:disabled){background:#fbe3df;border-color:#eeb3a9}.admin-confirm .btn.danger,.lessons-confirm .btn.danger{background:var(--danger);border-color:var(--danger);color:#fff}.admin-confirm .btn.danger:hover:not(:disabled),.lessons-confirm .btn.danger:hover:not(:disabled){background:var(--danger-hover)}.topbar .btn.ghost,.topbar .btn.secondary{background:#ffffff0f;border-color:#ffffff29;color:var(--chrome-text);box-shadow:none}.topbar .btn.ghost:hover:not(:disabled),.topbar .btn.secondary:hover:not(:disabled){background:#ffffff1f;border-color:#ffffff3d}.topbar .btn.connected{border-color:#4ade8066}.topbar .btn.primary{border-color:transparent}.topbar .btn svg{opacity:.9}:where(button,a,select,input,textarea,[tabindex]):focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn:focus-visible{outline:none;box-shadow:var(--ring)}.icon-button{display:grid;place-items:center;width:28px;height:28px;border:0;border-radius:var(--radius-sm);background:none;color:var(--muted);cursor:pointer}.icon-button:hover{background:var(--surface-3);color:var(--text)}.link-button{border:none;background:none;padding:0;color:var(--accent-ink);cursor:pointer;font:inherit;text-decoration:underline;text-decoration-color:var(--accent-border);text-underline-offset:3px}.link-button:hover{text-decoration-color:currentColor}.link-button:disabled{color:var(--muted);cursor:default;text-decoration:none}.login-card input,.admin-form input,.admin-table input,.code-bar-actions input,.send input,.send-step select,.monitor-bar select,.code-bar-actions select,.admin-form select,.admin-table select{height:34px;padding:0 10px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--text);font:inherit;font-size:14px;font-weight:400;box-shadow:var(--shadow-xs);transition:border-color .12s,box-shadow .12s}.code-bar-actions input,.admin-table input,.monitor-bar select,.code-bar-actions select,.admin-table select{height:30px;font-size:13px}:is(.login-card,.admin-form,.admin-table,.code-bar-actions,.send) input:focus,:is(.send-step,.monitor-bar,.code-bar-actions,.admin-form,.admin-table) select:focus{outline:none;border-color:var(--accent);box-shadow:var(--ring)}input::placeholder{color:#9aa6a9}.banner{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:9px 16px;background:var(--danger-subtle);color:var(--danger);border-bottom:1px solid var(--danger-border);font-size:14px;font-weight:550}.banner.prompt{background:var(--accent-subtle);color:#0f5f7a;border-bottom-color:var(--accent-border)}.banner.state-banner{background:var(--surface);color:var(--text);border-bottom-color:var(--accent-border);box-shadow:inset 4px 0 0 var(--accent);font-weight:500}.banner.state-banner strong{font-weight:700}.state-banner-icon{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:var(--accent-subtle);color:var(--accent-ink)}.state-banner-close{margin-left:auto}.current-lesson-actions{margin-left:auto;display:inline-flex;flex-wrap:wrap;align-items:center;gap:8px}.current-lesson-error{flex-basis:100%;color:var(--danger);font-size:13px}.banner.live-banner{background:var(--accent-subtle);color:#0f5f7a;border-bottom-color:var(--accent-border)}.workspace{flex:1;min-height:0;display:grid;grid-template-columns:60px minmax(0,3fr) 12px var(--side-col, minmax(300px, 2fr));gap:12px 0;padding:12px}.workspace.with-explorer{grid-template-columns:60px var(--explorer-col, 248px) 12px minmax(0,3fr) 12px var(--side-col, minmax(300px, 2fr))}.workspace>.activity-bar{width:48px}.splitter{position:relative;cursor:col-resize;touch-action:none;outline:none}.splitter:after{content:"";position:absolute;top:12px;bottom:12px;left:5px;width:2px;border-radius:2px;transition:background .15s}.splitter:hover:after,.splitter:focus-visible:after,.splitter.dragging:after{background:var(--accent)}body.resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}@media(max-width:900px){.workspace,.workspace.with-explorer{grid-template-columns:1fr;grid-template-rows:auto;grid-auto-rows:minmax(0,auto);padding:0 12px 12px}.activity-bar{flex-direction:row;padding:4px}.workspace>.activity-bar{width:auto}.splitter{display:none}.explorer{max-height:220px}.editor-pane{min-height:50vh}}.pane{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);overflow:hidden;min-height:0;display:flex;flex-direction:column}.editor-pane .editor{flex:1;min-height:0;font-size:14px}.editor-pane .cm-editor{height:100%}.tabs{display:flex;gap:4px;padding:0 8px;border-bottom:1px solid var(--border);background:var(--surface)}.tabs button{position:relative;font:inherit;font-weight:600;font-size:13px;background:none;border:0;padding:11px 10px;color:var(--muted);cursor:pointer}.tabs button:hover,.tabs button[aria-selected=true]{color:var(--text)}.tabs button[aria-selected=true]:after{content:"";position:absolute;left:8px;right:8px;bottom:-1px;height:2px;border-radius:2px 2px 0 0;background:var(--accent)}.output{flex:1;min-height:0;margin:0;padding:12px 14px;overflow:auto;font-family:var(--mono);font-size:12.5px;line-height:1.6;white-space:pre-wrap;word-break:break-word;background:var(--terminal);color:var(--terminal-text)}.progress{padding:10px 14px;border-bottom:1px solid var(--border)}.progress-label{font-size:13px;font-weight:600;margin-bottom:6px}.progress-track{height:6px;background:var(--surface-3);border-radius:999px;overflow:hidden}.progress-fill{height:100%;background:var(--accent);border-radius:999px;transition:width .15s}.monitor{flex:1;min-height:0;display:flex;flex-direction:column}.monitor-bar{display:flex;align-items:center;gap:14px;padding:8px 12px;border-bottom:1px solid var(--border);background:var(--surface-2);font-size:13px;color:var(--text-2)}.monitor-bar label{display:flex;align-items:center;gap:6px}.monitor-bar .btn{margin-left:auto}.send{display:flex;gap:8px;padding:8px 12px;border-top:1px solid var(--border);background:var(--surface-2)}.send input{flex:1;min-width:0;font-family:var(--mono);font-size:13px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.activity-bar{display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px 0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs)}.activity-bar button{position:relative;width:38px;height:38px;display:grid;place-items:center;border:none;border-radius:var(--radius);background:none;color:var(--muted);cursor:pointer;transition:color .12s,background-color .12s}.activity-bar button:hover{color:var(--text);background:var(--surface-3)}.activity-bar button.active{color:var(--accent-ink);background:var(--accent-subtle)}.activity-bar svg{width:20px;height:20px}.explorer{display:flex;flex-direction:column;min-height:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);overflow:hidden}.explorer-header{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:42px;padding:6px 6px 6px 14px;border-bottom:1px solid var(--border)}.explorer-title{font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.explorer-actions{display:flex;gap:1px}.explorer-actions button,.tree-actions button{display:grid;place-items:center;width:26px;height:26px;border:none;background:none;color:var(--muted);border-radius:var(--radius-sm);padding:0;cursor:pointer}.tree-actions button{width:22px;height:22px}.explorer-actions button:hover,.tree-actions button:hover{background:var(--surface-3);color:var(--text)}.explorer-actions svg{width:16px;height:16px}.explorer-error{display:flex;gap:6px;align-items:flex-start;margin:8px;padding:7px 9px;font-size:12px;color:var(--danger);background:var(--danger-subtle);border:1px solid var(--danger-border);border-radius:var(--radius)}.explorer-error button{border:none;background:none;color:inherit;cursor:pointer;padding:0}.tree{flex:1;overflow:auto;padding:6px 0 12px;outline:none;font-size:13px}.tree-row{display:flex;align-items:center;gap:5px;height:26px;margin:0 6px;padding-right:4px;border-radius:var(--radius-sm);cursor:pointer;color:var(--text-2);border:1px solid transparent;white-space:nowrap}.tree-row:hover{background:var(--surface-3)}.tree-row.active{color:var(--text);font-weight:600}.tree-row.selected{background:var(--accent-subtle);border-color:transparent;color:var(--text)}.tree:focus-visible .tree-row.selected{border-color:var(--accent-border)}.tree-chevron{width:14px;flex:none;color:var(--muted)}.tree-icon{flex:none}.tree-icon.folder{color:#c48d2c}.tree-icon.file{color:var(--accent-ink)}.tree-name{overflow:hidden;text-overflow:ellipsis}.tree-actions{margin-left:auto;display:none;gap:1px}.tree-row:hover .tree-actions,.tree-row.selected .tree-actions{display:flex}.tree-actions a{display:grid;place-items:center;width:22px;height:22px;color:var(--muted);border-radius:var(--radius-sm)}.tree-actions a:hover{background:var(--surface-3);color:var(--text)}.tree-input{padding:2px 8px 2px 0}.tree-input-row{display:flex;align-items:center;gap:4px;padding-left:18px}.tree-input input{flex:1;min-width:0;height:24px;font:12.5px var(--mono);padding:0 6px;border:1px solid var(--accent);border-radius:var(--radius-sm);box-shadow:var(--ring);outline:none}.tree-input input[aria-invalid=true]{border-color:var(--danger);box-shadow:0 0 0 3px #c4321f26}.tree-input-error{margin:4px 0 4px 18px;padding:5px 7px;font-size:12px;color:var(--danger);background:var(--danger-subtle);border:1px solid var(--danger-border);border-radius:var(--radius-sm);white-space:normal}.tree-confirm{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:2px 6px;padding:6px 8px;font-size:12px;background:var(--warning-subtle);border:1px solid var(--warning-border);border-radius:var(--radius-sm)}.tree-confirm button{height:24px;border:1px solid var(--border-strong);background:var(--surface);border-radius:var(--radius-sm);padding:0 8px;font-size:12px;font-weight:600;cursor:pointer}.tree-confirm button.danger{background:var(--danger);border-color:var(--danger);color:#fff}.tree-empty{padding:12px 14px;color:var(--muted);font-size:12.5px;line-height:1.5}.editor-tabs{display:flex;align-items:stretch;border-bottom:1px solid var(--border);background:var(--surface-2);min-height:38px}.editor-tab-list{display:flex;overflow-x:auto;flex:1;scrollbar-width:none}.editor-tab{position:relative;display:flex;align-items:center;border-right:1px solid var(--border)}.editor-tab.active{background:var(--surface)}.editor-tab.active:before{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:var(--accent)}.editor-tab.active:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--surface)}.editor-tab button{display:flex;align-items:center;gap:6px;border:none;background:none;font:inherit;font-size:13px;color:var(--muted);padding:8px 4px 8px 12px;cursor:pointer;white-space:nowrap}.editor-tab.active button[role=tab]{color:var(--text);font-weight:550}.editor-tab-folder{color:var(--muted);font-size:11px}.editor-tab .editor-tab-close{padding:4px;margin-right:6px;border-radius:var(--radius-sm);color:var(--muted);visibility:hidden}.editor-tab .editor-tab-close:hover{background:var(--surface-3);color:var(--text)}.editor-tab:hover .editor-tab-close,.editor-tab.active .editor-tab-close{visibility:visible}.save-state{align-self:center;padding:0 12px;font-size:12px;color:var(--muted);white-space:nowrap}.save-state.error{color:var(--danger);font-weight:600}.editor-empty{flex:1;display:grid;place-items:center;color:var(--muted);padding:24px;text-align:center}.explorer-import{margin:8px;padding:10px 12px;font-size:12.5px;background:var(--accent-subtle);border:1px solid var(--accent-border);border-radius:var(--radius);color:#0f5f7a}.explorer-import p{margin:0 0 4px}.explorer-import-hint{color:var(--muted)}.explorer-import-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.explorer-import-actions button{height:26px;border:1px solid var(--border-strong);background:var(--surface);border-radius:var(--radius-sm);padding:0 9px;font-size:12px;font-weight:600;color:var(--text);cursor:pointer;box-shadow:var(--shadow-xs)}.explorer-import-actions button:hover{background:var(--surface-2)}.explorer-import-actions button.primary{background:var(--accent);border-color:#34a6cb;color:var(--on-accent)}.explorer-import-actions button.primary:hover{background:var(--accent-hover)}.explorer-notice{display:flex;gap:6px;align-items:flex-start;margin:8px;padding:7px 9px;font-size:12px;color:var(--text-2);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius)}.explorer-notice span{flex:1}.explorer-notice button{border:none;background:none;color:inherit;cursor:pointer;padding:0}.tree-row.dragging{opacity:.5}.tree-drop-target{background:var(--accent-subtle);outline:1px dashed var(--accent);outline-offset:-1px}.tree.tree-drop-target{background:#f3fafd}.search-box{display:flex;align-items:center;margin:8px;height:32px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-xs)}.search-box:focus-within{border-color:var(--accent);box-shadow:var(--ring)}.search-box input{flex:1;min-width:0;border:none;outline:none;background:none;padding:0 8px;font:12.5px var(--mono)}.search-toggles{display:flex;gap:1px;padding-right:3px}.search-toggles button{display:grid;place-items:center;width:24px;height:24px;border:1px solid transparent;border-radius:var(--radius-sm);background:none;color:var(--muted);padding:0;cursor:pointer}.search-toggles button:hover{color:var(--text);background:var(--surface-3)}.search-toggles button.active{color:var(--accent-ink);border-color:var(--accent-border);background:var(--accent-subtle)}.search-summary{margin:0 12px 6px;font-size:12px;color:var(--muted)}.search-results{flex:1;overflow:auto;padding-bottom:12px;font-size:13px}.search-file,.search-match{display:flex;align-items:center;gap:4px;width:100%;border:none;background:none;text-align:left;cursor:pointer;color:var(--text-2);white-space:nowrap}.search-file{height:26px;padding:0 10px;font-weight:600}.search-folder{color:var(--muted);font-weight:400;font-size:12px;overflow:hidden;text-overflow:ellipsis}.search-count{margin-left:auto;min-width:20px;padding:0 6px;border-radius:999px;background:var(--surface-3);font-size:11px;font-weight:600;text-align:center}.search-match{padding:3px 10px 3px 40px;font:12px var(--mono)}.search-file:hover,.search-match:hover{background:var(--surface-3)}.search-preview{overflow:hidden;text-overflow:ellipsis}.search-preview mark{background:#fdeaa8;color:inherit;border-radius:2px}.btn svg{vertical-align:-2px}.login-page{min-height:100vh;display:grid;place-items:center;grid-template-rows:1fr auto;padding:16px;background:radial-gradient(circle at 12% 18%,rgb(107 94 62 / .28),transparent 40%),radial-gradient(circle at 88% 80%,rgb(71 182 217 / .12),transparent 40%),linear-gradient(135deg,#283030,#1d2425,#141a1b)}.login-card{width:min(380px,100%);display:flex;flex-direction:column;gap:14px;padding:32px 28px 26px;background:var(--surface);border-radius:16px;box-shadow:0 30px 70px #00000059,0 2px 8px #00000026}.login-brand{position:relative;display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:6px;color:var(--text);text-align:center}.login-brand .brand{flex-direction:column;gap:10px}.login-brand .brand-name{font-size:24px}.login-brand .lab{color:var(--accent-ink)}.login-brand p{margin:0;color:var(--muted);font-size:14px}.login-led{position:absolute;top:33px;left:calc(50% + 12px);width:4px;height:4px;border-radius:50%;background:#3ddc84;box-shadow:0 0 4px 1px #3ddc84cc}.login-cursor,.brand-cursor{display:inline-block;width:.45em;height:.95em;margin-left:4px;vertical-align:-.12em;background:var(--accent-ink);opacity:.8}@media(prefers-reduced-motion:no-preference){.login-led{animation:login-blink 2s steps(1) infinite}.login-cursor,.brand-cursor{animation:login-blink 1.1s steps(1) infinite}}@keyframes login-blink{50%{opacity:0;box-shadow:none}}.login-card label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600;color:var(--text-2)}.login-card input{height:40px}.login-card .btn{height:42px;margin-top:4px;font-size:15px}.login-message{margin:0;padding:9px 12px;border-radius:var(--radius);background:var(--accent-subtle);color:#0f5f7a;font-size:13px}.login-error{margin:0;padding:9px 12px;border-radius:var(--radius);background:var(--danger-subtle);color:var(--danger);font-size:13px}.login-error a{color:inherit;font-weight:600;text-decoration:underline}.login-or{display:flex;align-items:center;gap:12px;margin:2px 0;color:var(--muted);font-size:12px}.login-or:before,.login-or:after{content:"";flex:1;height:1px;background:var(--border)}.login-card .google-button{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:0;background:var(--surface);border:1px solid var(--border-strong, var(--border));color:var(--text);font-weight:600;text-decoration:none;box-shadow:var(--shadow-xs, none)}.login-card .google-button:hover{background:var(--surface-2, var(--surface-3))}.admin-role{padding:0 6px}.login-hint{display:flex;align-items:center;justify-content:center;gap:4px;margin:0;color:var(--muted);font-size:12.5px;text-align:center}.login-info-button{display:grid;place-items:center;flex:none;width:24px;height:24px;padding:0;border:0;border-radius:50%;background:none;color:var(--muted);cursor:pointer}.login-info-button:hover,.login-info-button[aria-expanded=true]{background:var(--accent-subtle);color:var(--accent-ink)}.login-info-button:focus-visible{outline:none;box-shadow:var(--ring)}.login-info{position:relative;display:inline-flex}.login-access{position:absolute;bottom:calc(100% + 10px);right:-6px;z-index:10;width:min(280px,calc(100vw - 48px));padding:10px 12px;border-radius:var(--radius);background:var(--chrome);box-shadow:var(--shadow-md);color:var(--chrome-text);font-size:12.5px;line-height:1.5;text-align:left}.login-access:after{content:"";position:absolute;top:100%;right:12px;border:6px solid transparent;border-top-color:var(--chrome)}.login-access a{color:var(--accent);font-weight:600}.admin-page{flex:1;overflow:auto;padding:20px 24px 32px;display:flex;flex-direction:column;gap:16px}.admin-page>*{width:100%;max-width:1240px;margin-inline:auto}.admin-head{display:flex;align-items:center;gap:12px}.admin-head h1{margin:0;font-size:22px;font-weight:700;letter-spacing:-.01em}.admin-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);padding:18px 20px}.admin-card h2{margin:0 0 12px;font-size:15px;font-weight:650}.admin-card p{margin:0;color:var(--muted);font-size:13px}.admin-card.logins{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}.admin-card.logins h2{margin-bottom:2px}.admin-card.logins.off{border-color:var(--danger-border);background:var(--danger-subtle)}.admin-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px 16px}.admin-form label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600;color:var(--text-2)}.admin-form input[type=datetime-local]{min-width:210px}.admin-optional{font-weight:400;color:var(--muted)}.admin-presets{display:flex;flex-wrap:wrap;gap:6px}.admin-presets .btn{color:var(--text-2)}.admin-form>.btn.primary{margin-left:auto}.admin-inline{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px}.admin-error{margin:0;padding:10px 14px;border-radius:var(--radius);background:var(--danger-subtle);border:1px solid var(--danger-border);color:var(--danger);font-size:14px}.admin-notice{margin:0;padding:10px 14px;border-radius:var(--radius);background:var(--success-subtle);border:1px solid var(--success-border);color:#0f5e36;font-size:14px}.admin-table{width:100%;border-collapse:collapse;font-size:13.5px}.admin-table th{text-align:left;color:var(--muted);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;padding:8px 10px;border-bottom:1px solid var(--border)}.admin-table td{padding:10px;border-bottom:1px solid var(--border);vertical-align:middle}.admin-table tbody tr:last-child td{border-bottom:0}.admin-table tbody tr:hover td{background:var(--surface-2)}.admin-table td:first-child{font-weight:600}.admin-actions{text-align:right;white-space:nowrap}.admin-actions>*+*,.admin-actions .admin-inline>*+*{margin-left:6px}.admin-actions>*,.admin-actions .admin-inline>*{vertical-align:middle}.admin-actions .admin-inline{flex-wrap:nowrap;gap:0}.admin-actions .admin-optional{display:inline-block;font-size:12px;vertical-align:middle}.admin-confirm{color:var(--danger);font-weight:600}.admin-badge{margin-left:6px;padding:1px 7px;border-radius:999px;background:var(--surface-3);border:1px solid var(--border);color:var(--text-2);font-size:11px;font-weight:600;vertical-align:1px}.status-pill{display:inline-flex;align-items:center;gap:6px;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600}.status-pill:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.status-pill.active{background:var(--success-subtle);color:var(--success)}.status-pill.disabled,.status-pill.expired{background:var(--danger-subtle);color:var(--danger)}.status-pill.logins-off{background:var(--warning-subtle);color:var(--warning)}@media(max-width:900px){.admin-page{padding:16px}.admin-table thead{display:none}.admin-table tr{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:8px 0;border-bottom:1px solid var(--border)}.admin-table td{border:none;padding:2px 4px}}.live-page{flex:1;min-height:0;display:grid;grid-template-columns:var(--list-col, 240px) 12px minmax(0,1fr);gap:12px 0;padding:12px}.live-page.single{grid-template-columns:minmax(0,1fr)}.live-page.with-activity{grid-template-columns:60px var(--list-col, 240px) 12px minmax(0,1fr)}.live-page.with-activity.single{grid-template-columns:60px minmax(0,1fr)}.live-page>.activity-bar,.lessons-page>.activity-bar,.files-page>.activity-bar{width:48px}@media(max-width:900px){.live-page{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(480px,1fr);column-gap:12px}.live-page.with-activity,.live-page.with-activity.single{grid-template-columns:48px minmax(0,1fr)}.live-page>.activity-bar{grid-row:1 / 3}.live-page.single{grid-template-rows:minmax(0,1fr)}.live-page.single>.activity-bar{grid-row:auto}}.live-users{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);padding:12px;overflow:auto}.live-users h2{display:flex;align-items:center;gap:8px;margin:6px 4px 10px;font-size:13px;font-weight:650;color:var(--text-2)}.live-users h2 svg{color:var(--muted)}.live-users ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.live-note{color:var(--muted);font-size:13px;margin:0}.live-user{width:100%;display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid transparent;border-radius:var(--radius);background:none;font:inherit;font-size:14px;color:var(--text);cursor:pointer;text-align:left}.live-user:hover{background:var(--surface-3)}.live-user.active{background:var(--accent-subtle);border-color:var(--accent-border);font-weight:600}.live-dot{width:8px;height:8px;border-radius:50%;background:#22a35a;box-shadow:0 0 0 3px #22a35a26;flex:none}.live-dot.off{background:#c3ccd0;box-shadow:none}.live-empty{display:grid;place-content:center;gap:6px;text-align:center;color:var(--muted);background:var(--surface);border:1px dashed var(--border-strong);border-radius:var(--radius-lg);padding:24px}.live-empty p{margin:0;max-width:46ch}.live-empty p:first-child{color:var(--text);font-weight:600;font-size:15px}.live-view{min-height:0;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--live);border-radius:var(--radius-lg);box-shadow:0 0 0 3px #e8932f24,var(--shadow-sm);overflow:hidden}.live-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:9px 14px;border-bottom:1px solid var(--border);font-size:13px}.live-meta{color:var(--muted)}.live-activity{color:var(--accent-ink);font-weight:600}.live-mode{margin-left:auto;color:var(--muted)}.live-follow{display:inline-flex;align-items:center;gap:6px;cursor:pointer}.live-follow input{accent-color:var(--accent-ink)}.live-body{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,3fr) minmax(240px,2fr)}@media(max-width:900px){.live-body{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(320px,1fr) 160px}}.live-code{min-height:0;display:flex;flex-direction:column;border-right:1px solid var(--border)}.live-code .editor{flex:1;min-height:0;font-size:14px}.live-code .cm-editor{height:100%}.live-tabs{flex:none;background:var(--surface-2);border-bottom:1px solid var(--border);min-height:38px}.live-tabs [role=tab]{display:flex;align-items:center;gap:6px;padding:8px 12px;font-size:13px;color:var(--muted)}.live-tabs .editor-tab.active [role=tab]{color:var(--text)}.live-output{font-size:12px}.live-side{min-height:0;display:flex;flex-direction:column}.live-theirs{display:inline-block;width:7px;height:7px;margin-left:6px;border-radius:50%;background:var(--live);vertical-align:1px}.live-share{display:flex;flex-direction:column;gap:8px;padding:10px 12px 12px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-2)}.live-share h2{margin:0}.live-share.on{border-color:var(--accent-border);background:var(--accent-subtle)}.live-share .btn{align-self:flex-start}.live-board{display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px;padding:7px 14px;border-bottom:1px solid var(--border);background:var(--surface-2);font-size:13px}.live-board-status{margin-left:6px;padding:1px 8px;border-radius:999px;background:var(--surface-3);color:var(--text-2);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em}.live-board-status.connected,.live-board-status.uploading{background:var(--success-subtle);color:var(--success)}.live-board-hint{color:var(--warning);font-weight:600}.live-ports{display:inline-flex;flex-wrap:wrap;align-items:center;gap:4px 6px}.live-port{padding:1px 8px;border:1px solid var(--border);border-radius:999px;background:var(--surface);font-family:var(--mono);font-size:11.5px}.live-port.connected{border-color:var(--success-border);background:var(--success-subtle);color:var(--success)}.live-body.with-explorer{grid-template-columns:210px minmax(0,3fr) minmax(240px,2fr)}@media(max-width:900px){.live-body.with-explorer{grid-template-columns:minmax(0,1fr)}.live-explorer{max-height:160px}}.live-explorer{min-height:0;overflow:auto;border-right:1px solid var(--border);background:var(--surface)}.live-tree,.live-tree ul{list-style:none;margin:0;padding:0}.live-tree{padding:6px 0}.live-tree .tree-row{cursor:default}.live-monitor{flex:1;min-height:0;display:flex;flex-direction:column}.live-monitor select:disabled{opacity:1;color:var(--text);background:var(--surface-2);cursor:default}@media(max-width:1450px){.board-hint{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media(max-width:1250px){.nav-label,.account-name,.chip-label{display:none}.nav-tab{padding:0 10px}.topbar-left{gap:14px}.topbar .brand-name{display:none}}.lessons-page{position:relative;flex:1;min-height:0;display:grid;grid-template-columns:60px var(--list-col, 300px) 12px minmax(0,1fr);gap:12px 0;padding:12px}.lessons-page.lesson-manager{grid-template-columns:60px var(--list-col, 320px) 12px minmax(0,1fr)}.lessons-page.single{grid-template-columns:60px minmax(0,1fr)}.lessons-list[hidden]{display:none}@media(max-width:900px){.lessons-page,.lessons-page.lesson-manager,.lessons-page.single{grid-template-columns:48px minmax(0,1fr);grid-template-rows:auto minmax(520px,1fr);column-gap:12px}.lessons-page>.activity-bar{grid-row:1 / 3}.lessons-page.single{grid-template-rows:minmax(0,1fr)}.lessons-page.single>.activity-bar{grid-row:auto}}.lessons-list{min-height:0;overflow:auto;display:flex;flex-direction:column;gap:10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);padding:12px}.lessons-list h2{display:flex;align-items:center;gap:8px;margin:4px 4px 0;font-size:15px;font-weight:650}.lessons-list h2 svg{color:var(--muted)}.lessons-collapse{margin-left:auto}.lessons-collapse:disabled{opacity:.4;cursor:default;background:none}.lessons-list ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.lessons-list .admin-error,.lessons-list .admin-notice{margin:0;font-size:13px}.lessons-drop{display:grid;justify-items:center;gap:8px;padding:16px 12px;border:1.5px dashed var(--border-strong);border-radius:var(--radius-lg);background:var(--surface-2);color:var(--muted);font-size:13px;text-align:center}.lessons-page.dragging .lessons-drop{border-color:var(--accent);background:var(--accent-subtle)}.lessons-drop-overlay{position:absolute;inset:12px;display:grid;place-items:center;border:2px dashed var(--accent);border-radius:16px;background:#e8f6fbe0;color:var(--accent-ink);font-size:20px;font-weight:700;pointer-events:none}.lesson-item{width:100%;display:flex;flex-direction:column;gap:3px;padding:9px 12px;border:1px solid transparent;border-radius:var(--radius);background:none;font:inherit;color:var(--text);text-align:left;cursor:pointer}.lesson-item:hover{background:var(--surface-3)}.lesson-item.active{background:var(--accent-subtle);border-color:var(--accent-border)}.lesson-item-title{font-weight:600;font-size:14px}.lesson-item-title{display:flex;align-items:center;gap:7px;overflow-wrap:anywhere}.lesson-item-title svg{flex-shrink:0;color:var(--muted)}.lesson-breadcrumbs{display:flex;flex-wrap:wrap;gap:4px;align-items:center;font-size:12px}.lesson-breadcrumbs>span{display:inline-flex;align-items:center;gap:3px;min-width:0}.lesson-breadcrumbs button{border:none;border-radius:var(--radius-sm);padding:4px;background:none;font:inherit;color:var(--text-2);cursor:pointer;overflow-wrap:anywhere}.lesson-breadcrumbs button:hover{background:var(--surface-3)}.lesson-breadcrumbs button[aria-current=page]{color:var(--text);font-weight:650}.lesson-folder-row{display:flex;align-items:center}.lesson-folder-item{flex:1;min-width:0}.lesson-folder-item .lesson-badge{align-self:flex-start;font-size:11px}.lesson-expand{display:grid;place-items:center;flex:0 0 20px;align-self:stretch;border:0;background:none;color:var(--muted);cursor:pointer;padding:0}.lesson-expand:hover{color:var(--text);background:var(--surface-3)}.lesson-drop-target{background:var(--accent-subtle);outline:2px solid var(--accent);outline-offset:-2px;border-radius:var(--radius)}.lesson-upload-place{font-size:11px;color:var(--muted);overflow-wrap:anywhere}.lesson-folder-form{display:flex;flex-direction:column;gap:8px;padding:10px;background:var(--surface-2);border-radius:var(--radius)}.lesson-folder-form label{display:flex;flex-direction:column;gap:6px;font-size:12px}.lesson-folder-form input{min-width:0;width:100%;padding:7px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font:inherit}.lesson-folder-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;padding:12px;border-bottom:1px solid var(--border);background:var(--surface-2)}.lesson-folder-heading{display:flex;align-items:center;gap:8px;font-weight:650;overflow-wrap:anywhere}.lesson-sharing-note{width:100%;margin:0;color:var(--muted);font-size:12px}.lesson-move{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px;color:var(--muted);font-size:12px}.lesson-move select{max-width:200px;min-width:100px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);padding:5px;font:inherit}.lessons-confirm{width:100%;font-size:13px}.lessons-confirm p{margin:3px 0 8px}.lesson-item-meta{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:12px}.lesson-badge{padding:0 8px;border-radius:999px;background:var(--surface-3);color:var(--text-2);font-weight:600}.lesson-badge.visible{background:var(--success-subtle);color:var(--success)}.lessons-list .lesson-tree{gap:1px}.lessons-list .lesson-tree-children{margin-inline-start:17px;padding-inline-start:3px;border-inline-start:1px solid var(--border);gap:1px}.lesson-tree li{min-width:0}.lesson-tree .lesson-tree-row{display:flex;flex-direction:row;align-items:center;gap:7px;min-width:0;height:34px;padding:0 8px;border:0;border-radius:4px}.lesson-tree .lesson-tree-row:hover{background:var(--surface-3)}.lesson-tree .lesson-tree-row.active{background:var(--accent-subtle);box-shadow:inset 2px 0 var(--accent)}.lesson-tree .lesson-folder-item{flex-direction:row;align-items:center;gap:7px;padding:0;height:100%;min-width:0;border:0;border-radius:0;background:transparent}.lesson-tree .lesson-folder-item:hover{background:transparent}.lesson-tree .lesson-item-title{display:block;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:normal;font-size:13px;font-weight:400;line-height:20px}.lesson-tree .lesson-folder-item .lesson-item-title{font-weight:550}.lesson-tree .lesson-expand{flex:0 0 16px;width:16px;align-self:center;height:28px;border-radius:3px}.lesson-tree-spacer{flex:0 0 16px;width:16px}.lesson-tree-icon{flex:0 0 16px;color:var(--muted)}.lesson-sharing-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 18px;color:var(--muted)}.lesson-details{display:flex;align-items:center;flex-wrap:wrap;gap:6px 14px;padding:7px 14px;border-bottom:1px solid var(--border);font-size:12px;color:var(--muted)}.lesson-details-filename{max-width:min(100%,300px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lesson-details-sharing{margin-inline-start:auto;min-width:0;overflow-wrap:anywhere}.lesson-folder-summary{display:flex;align-items:center;flex-direction:column;gap:12px}.lesson-folder-summary h2{margin:0;color:var(--text);font-size:20px}.lesson-folder-summary>svg{color:var(--muted)}.lesson-preview{min-height:0;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);overflow:hidden}.lesson-preview>.live-empty{flex:1;border:0;border-radius:0;gap:18px}.lesson-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:8px 12px;border-bottom:1px solid var(--border)}.lesson-toolbar-spacer{flex:1}.lesson-title-button{display:inline-flex;align-items:center;gap:6px;border:none;border-radius:var(--radius-sm);background:none;font:inherit;font-weight:650;font-size:15px;color:var(--text);cursor:pointer;padding:4px 6px}.lesson-title-button:hover{background:var(--surface-3)}.lesson-title-button svg{color:var(--muted)}.lesson-rename input{min-width:240px}.switch{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--text-2);cursor:pointer}.switch input{position:absolute;opacity:0;width:1px;height:1px}.switch-track{position:relative;width:34px;height:20px;border-radius:999px;background:#c9d2d5;transition:background .15s}.switch-track:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #00000040;transition:transform .15s}.switch input:checked+.switch-track{background:var(--success)}.switch input:checked+.switch-track:after{transform:translate(14px)}.switch input:focus-visible+.switch-track{box-shadow:var(--ring)}.lesson-frame{flex:1;width:100%;min-height:0;border:0;background:#fff;display:block}.lesson-stage{flex:1;min-height:0;display:flex;flex-direction:column;padding:12px;gap:0}.lesson-stage-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:8px 12px;background:var(--surface);border:1px solid var(--live);border-bottom:none;border-radius:var(--radius-lg) var(--radius-lg) 0 0;font-size:13px}.lesson-stage.presenter .lesson-stage-head{border-color:var(--accent)}.lesson-stage .lesson-frame{border:1px solid var(--live);border-top:1px solid var(--border);border-radius:0 0 var(--radius-lg) var(--radius-lg)}.lesson-stage.presenter .lesson-frame{border-color:var(--accent);border-top-color:var(--border)}.lesson-fit{position:relative;flex:1;min-height:0;overflow:hidden;background:var(--surface-3);border:1px solid var(--live);border-top:1px solid var(--border);border-radius:0 0 var(--radius-lg) var(--radius-lg)}.lesson-stage .lesson-fit .lesson-frame{border:0;border-radius:0}.lesson-live{display:inline-flex;align-items:center;gap:6px;font-weight:700;color:var(--accent-ink)}.lesson-stage-title{font-size:15px}.lesson-stage-note{color:var(--muted);margin-right:auto}.lessons-conflict{display:flex;flex-direction:column;gap:8px;padding:10px 12px;border:1px solid var(--warning-border);border-radius:var(--radius);background:var(--warning-subtle);font-size:13px}.lessons-conflict p{margin:0}.modal-backdrop{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:16px;background:#0c111280;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal{width:min(920px,100%);max-height:calc(100vh - 32px);display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow-lg);overflow:hidden}.modal>header{display:flex;align-items:center;gap:10px;min-height:52px;padding:10px 12px 10px 18px;border-bottom:1px solid var(--border);font-size:15px}.modal>header svg{color:var(--accent-ink)}.modal>header .icon-button{margin-left:auto}.modal footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--border);background:var(--surface-2)}.code-viewer-tabs{display:flex;flex-wrap:wrap;gap:2px;padding:6px 10px;border-bottom:1px solid var(--border);background:var(--surface-2)}.code-viewer-tabs button{border:0;border-radius:var(--radius-sm);padding:4px 10px;background:none;font:inherit;font-size:13px;color:var(--muted);cursor:pointer}.code-viewer-tabs button[aria-selected=true]{background:var(--surface);color:var(--text);font-weight:600;box-shadow:var(--shadow-xs)}.code-viewer-text{flex:1;min-height:240px;margin:0;padding:14px 16px;overflow:auto;font-family:var(--mono);font-size:13px;line-height:1.6;background:#fff}.send-dialog{width:min(560px,100%)}.send-dialog>header{gap:8px}.send-body{display:flex;flex-direction:column;gap:12px;padding:16px 18px;overflow:auto}.send-step{display:flex;align-items:center;gap:8px;font-weight:600;font-size:14px}.send-step select{flex:1}.send-quick{display:flex;gap:6px}.send-users{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;border:1px solid var(--border);border-radius:var(--radius);max-height:320px;overflow:auto}.send-users li+li{border-top:1px solid var(--border)}.send-users label{display:flex;align-items:center;gap:10px;padding:9px 12px;cursor:pointer;font-size:14px}.send-users label:hover{background:var(--surface-2)}.send-users input{accent-color:var(--accent-ink);width:15px;height:15px}.send-name{font-weight:600}.send-got{margin-left:auto;color:var(--muted);font-size:12px}.modal.superseded{width:min(460px,100%)}.code-page{flex:1;min-height:0;display:flex;flex-direction:column}.code-page>.workspace{flex:1}.page-toolbar{display:flex;flex:none;flex-wrap:wrap;align-items:center;gap:8px 14px;min-height:52px;padding:10px 16px;border-bottom:1px solid var(--border);background:var(--surface);font-size:13px}.page-toolbar.code-bar{min-height:52px;padding:8px 12px 8px 16px;gap:8px 12px}.code-bar-title{min-width:0}.editor-pane{container-type:inline-size}@container (max-width: 820px){.code-bar .code-bar-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}}.code-bar-title strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.code-bar-link,.code-bar-state{display:inline-flex;flex-wrap:wrap;align-items:center;gap:8px;min-height:36px;padding:3px 4px 3px 12px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow-xs)}.code-bar-link{background:var(--accent-subtle);border-color:var(--accent-border);color:#0f5f7a}.code-bar-link svg{color:var(--accent-ink)}.code-bar-state{color:var(--text-2)}.code-bar-state>svg{color:var(--accent-ink);flex:none}.code-bar-state strong{color:var(--text)}.modal.state-offer{width:min(460px,100%)}.state-offer-icon{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--accent-subtle)}.state-offer .send-body p{margin:0}.state-offer .send-body{gap:6px}.state-offer-label{margin:0;color:var(--text);font-size:17px;font-weight:700}.code-bar-meta{color:var(--muted);font-size:12px}.code-bar-target{max-width:200px}.code-bar-actions{margin-left:auto;display:inline-flex;flex-wrap:wrap;align-items:center;gap:8px}.code-bar-message{color:var(--success);font-weight:600}.code-bar-error{color:var(--danger);font-weight:600}@media(max-width:600px){.page-toolbar{padding:8px 12px}.code-bar-actions{margin-left:0}}.files-page{flex:1;min-height:0;display:grid;grid-template-columns:60px var(--list-col, 320px) 12px minmax(0,1fr);gap:12px 0;padding:12px}.files-page.single{grid-template-columns:60px minmax(0,1fr)}.live-users[hidden],.files-trees[hidden]{display:none}@media(max-width:900px){.files-page,.files-page.single{grid-template-columns:48px minmax(0,1fr);grid-template-rows:auto minmax(420px,1fr);column-gap:12px}.files-page>.activity-bar{grid-row:1 / 3}.files-page.single{grid-template-rows:minmax(0,1fr)}.files-page.single>.activity-bar{grid-row:auto}}.files-trees{min-height:0;display:grid;grid-template-rows:minmax(0,1fr) minmax(0,1fr);gap:12px}.files-detail{min-height:0;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);overflow:hidden}.files-detail>.live-empty{flex:1;border:0;border-radius:0;background:var(--surface-2)}.files-detail .editor{flex:1;min-height:0;font-size:14px}.files-detail .cm-editor{height:100%}.files-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;min-height:52px;padding:8px 12px 8px 16px;border-bottom:1px solid var(--border)}.files-title{display:inline-flex;align-items:center;gap:8px;font-size:14px}.files-title svg{color:var(--muted)}.files-library{padding:1px 9px;border-radius:999px;background:var(--surface-3);font-size:12px;font-weight:600;color:var(--text-2)}.files-readonly{font-size:12px;color:var(--warning);font-weight:600}.files-actions{margin-left:auto;display:inline-flex;flex-wrap:wrap;align-items:center;gap:8px}.files-message{margin:10px 12px 0;font-size:13px}.files-folder{padding:20px;color:var(--muted);font-size:14px}.files-folder p{margin:6px 0}.files-folder ul{margin:0;padding-left:18px;font-family:var(--mono);font-size:12.5px;color:var(--text)}.brand-button{display:inline-flex;align-items:center;padding:4px 8px 4px 4px;margin-left:-4px;border:0;border-radius:var(--radius);background:none;color:inherit;font:inherit;cursor:pointer;transition:background-color .12s}.brand-button:hover,.brand-button.active{background:#ffffff12}.home-page{flex:1;min-height:0;overflow:auto}.home-inner{max-width:1120px;margin:0 auto;padding:32px 24px 40px;display:flex;flex-direction:column;gap:28px}.home-hero{position:relative;overflow:hidden;padding:32px 36px;border-radius:16px;color:var(--chrome-text);background:radial-gradient(circle at 8% 20%,rgb(107 94 62 / .32),transparent 42%),radial-gradient(circle at 92% 80%,rgb(71 182 217 / .16),transparent 45%),linear-gradient(135deg,#2a3233,#1f2728 55%,#171e1f);box-shadow:var(--shadow-sm)}.home-eyebrow{margin:0 0 8px;color:var(--accent);font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.home-hero h1{margin:0;font-size:30px;font-weight:700;letter-spacing:-.02em;color:#fff}.home-lead{margin:10px 0 0;color:#b4bfc1;font-size:15.5px;line-height:1.55}.home-scene{margin-top:22px}.scene{display:block;width:100%;height:auto;overflow:visible}.scene *{transform-box:fill-box}.scene-panel{fill:#ffffff0a;stroke:#ffffff1a}.scene-file{fill:#7d898b;font-family:var(--mono);font-size:11px}.scene-mono{fill:#c9d3d5;font-family:var(--mono);font-size:13px}.scene-k{fill:var(--accent)}.scene-f{fill:#e8b34b}.scene-n{fill:#f39a7b}.scene-chip{fill:#6b7779;font-family:var(--mono);font-size:10px;text-anchor:middle}.scene-silk{fill:#b9dbe3;font-family:var(--mono);font-size:7px;text-anchor:end;opacity:.7}.scene-hole{fill:#1f2728;stroke:#c4ccce;stroke-width:1.5}.scene-led{fill:#f2c94c}.scene-led-power{fill:#5cc28a}.scene-led-l{fill:#e5736a}.scene-trace{fill:none;stroke:#47b6d940;stroke-width:2}.scene-trace-dotted{stroke-dasharray:2 5}.scene-pulse{fill:none;stroke:#7fd3ee;stroke-width:3;stroke-linecap:round;stroke-dasharray:14 100;stroke-dashoffset:14}.scene-ground{stroke:#ffffff24;stroke-width:2;stroke-dasharray:8 10}.scene-bulb{fill:#e8b34b}.scene-eye{fill:var(--accent)}.scene-eyes{transform-origin:center}.scene-meter{fill:#5cc28a;transform-origin:left center}.scene-arm{fill:none;stroke:#6b7779;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;transform-origin:100% 100%}.scene-sonar{fill:none;stroke:var(--accent);stroke-width:2;stroke-linecap:round;opacity:0}.scene-wheel{transform-origin:center}.scene-edge{stroke:#ffffff1f;stroke-width:1.5}.scene-node{fill:#1f2728;stroke:var(--accent);stroke-width:2}@media(prefers-reduced-motion:no-preference){.scene-code{animation:scene-code 8s infinite}.scene-type{transform-origin:left center;animation:8s infinite}.scene-type-0{animation-name:scene-type-0}.scene-type-1{animation-name:scene-type-1}.scene-type-2{animation-name:scene-type-2}.scene-type-3{animation-name:scene-type-3}.scene-pulse{animation:8s linear infinite}.scene-pulse-upload{animation-name:scene-pulse-upload}.scene-pulse-run{animation-name:scene-pulse-run}.scene-pulse-think{animation-name:scene-pulse-think}.scene-pulse-net-0{animation-name:scene-pulse-net-0}.scene-pulse-net-1{animation-name:scene-pulse-net-1}.scene-led-tx,.scene-led-rx{animation:scene-data 8s infinite}.scene-led-rx{animation-delay:.12s}.scene-led-l{animation:scene-blink 1s steps(1) infinite}.scene-robot{animation:scene-bob 1.2s ease-in-out infinite}.scene-eye{animation:scene-awake 8s infinite}.scene-eyes{animation:scene-eyelids 4s infinite}.scene-bulb{animation:scene-bulb 1.4s ease-in-out infinite}.scene-meter{animation:scene-meter 8s infinite}.scene-arm{animation:scene-wave 8s ease-in-out infinite}.scene-sonar{animation:scene-sonar 2.1s ease-out infinite}.scene-sonar-1{animation-delay:.7s}.scene-sonar-2{animation-delay:1.4s}.scene-wheel{animation:scene-spin 1.6s linear infinite}.scene-ground{animation:scene-drive .9s linear infinite}.scene-node{animation:8s infinite}.scene-node-0{animation-name:scene-node-0}.scene-node-1{animation-name:scene-node-1}.scene-node-2{animation-name:scene-node-2}}@keyframes scene-code{0%,90%{opacity:1}96%,99%{opacity:0}to{opacity:1}}@keyframes scene-type-0{0%,2%{transform:scaleX(0);animation-timing-function:steps(18)}10%,96%{transform:scaleX(1)}97%,to{transform:scaleX(0)}}@keyframes scene-type-1{0%,11%{transform:scaleX(0);animation-timing-function:steps(22)}20%,96%{transform:scaleX(1)}97%,to{transform:scaleX(0)}}@keyframes scene-type-2{0%,21%{transform:scaleX(0);animation-timing-function:steps(14)}28%,96%{transform:scaleX(1)}97%,to{transform:scaleX(0)}}@keyframes scene-type-3{0%,29%{transform:scaleX(0);animation-timing-function:steps(16)}37%,96%{transform:scaleX(1)}97%,to{transform:scaleX(0)}}@keyframes scene-pulse-upload{0%,40%{stroke-dashoffset:14}48%,to{stroke-dashoffset:-100}}@keyframes scene-pulse-run{0%,55%{stroke-dashoffset:14}64%,to{stroke-dashoffset:-100}}@keyframes scene-pulse-think{0%,70%{stroke-dashoffset:14}77%,to{stroke-dashoffset:-100}}@keyframes scene-pulse-net-0{0%,78%{stroke-dashoffset:14}83%,to{stroke-dashoffset:-100}}@keyframes scene-pulse-net-1{0%,83%{stroke-dashoffset:14}88%,to{stroke-dashoffset:-100}}@keyframes scene-data{0%,46%{opacity:.2}47%,49%,51%,53%{opacity:1}48%,50%,52%{opacity:.3}55%,to{opacity:.2}}@keyframes scene-blink{0%{opacity:1}50%{opacity:.2}}@keyframes scene-awake{0%,62%{opacity:.3}66%,94%{opacity:1}to{opacity:.3}}@keyframes scene-eyelids{0%,92%,to{transform:scaleY(1)}95%{transform:scaleY(.1)}}@keyframes scene-meter{0%,62%{transform:scaleX(.15)}75%,94%{transform:scaleX(1)}to{transform:scaleX(.15)}}@keyframes scene-wave{0%,64%,92%,to{transform:rotate(0)}68%,76%,84%{transform:rotate(28deg)}72%,80%,88%{transform:rotate(-6deg)}}@keyframes scene-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}@keyframes scene-bulb{0%,to{opacity:.45}50%{opacity:1}}@keyframes scene-sonar{0%{opacity:.9;transform:translate(0) scale(.7)}to{opacity:0;transform:translate(26px) scale(1.25)}}@keyframes scene-spin{to{transform:rotate(360deg)}}@keyframes scene-drive{to{stroke-dashoffset:18}}@keyframes scene-node-0{0%,76%{fill:#1f2728}79%,92%{fill:var(--accent)}to{fill:#1f2728}}@keyframes scene-node-1{0%,82%{fill:#1f2728}85%,92%{fill:var(--accent)}to{fill:#1f2728}}@keyframes scene-node-2{0%,87%{fill:#1f2728}89%,94%{fill:#e8b34b}to{fill:#1f2728}}.home-steps{list-style:none;margin:14px 0 0;padding:0;display:grid;grid-template-columns:31fr 34fr 35fr;gap:12px;color:#a9b4b6;font-size:13px}.home-steps li{display:flex;align-items:center;justify-content:center;gap:8px;text-align:center}.home-steps li:first-child{justify-content:flex-start}.home-step-number{display:grid;place-items:center;flex:none;width:22px;height:22px;border-radius:50%;background:#47b6d92e;color:var(--accent);font-size:12px;font-weight:700}.home-section-title{margin:0 0 12px;font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.home-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.home-card{display:flex;flex-direction:column;align-items:flex-start;gap:8px;min-height:250px;padding:24px;border:1px solid var(--border);border-radius:14px;background:var(--surface);box-shadow:var(--shadow-xs);color:var(--text);font:inherit;text-align:left;cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .15s}.home-card:hover{border-color:var(--accent-border);box-shadow:var(--shadow-md);transform:translateY(-2px)}.home-card:focus-visible{outline:none;border-color:var(--accent);box-shadow:var(--ring),var(--shadow-sm)}.home-card-icon{display:grid;place-items:center;width:48px;height:48px;margin-bottom:8px;border-radius:var(--radius-lg);background:var(--accent-subtle);color:var(--accent-ink)}.home-card-title{font-size:19px;font-weight:700;letter-spacing:-.01em}.home-card-text{color:var(--text-2);font-size:14px;line-height:1.5}.home-card-points{margin:4px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:5px;color:var(--muted);font-size:13px}.home-card-points li{position:relative;padding-left:16px}.home-card-points li:before{content:"";position:absolute;left:2px;top:.6em;width:6px;height:6px;border-radius:50%;background:var(--accent-border)}.home-card-open{display:inline-flex;align-items:center;gap:6px;margin-top:auto;padding-top:12px;color:var(--accent-ink);font-size:14px;font-weight:600}.home-card:hover .home-card-open svg{transform:translate(3px)}.home-card-open svg{transition:transform .15s}.home-note{display:flex;align-items:center;gap:8px;margin:0;color:var(--muted);font-size:13px}@media(max-width:760px){.home-inner{padding:16px;gap:20px}.home-hero{padding:24px 20px}.home-hero h1{font-size:24px}.home-steps{grid-template-columns:minmax(0,1fr);gap:6px}.home-steps li{justify-content:flex-start;text-align:left}.home-card{min-height:0}}.legal-notice{padding-top:16px;border-top:1px solid var(--border);color:var(--muted);font-size:12px;line-height:1.6}.legal-notice p{margin:0}.login-page .legal-notice{max-width:640px;padding:16px 0 0;border-top:0;color:#7f8b8d;text-align:center}.legal-links{display:flex;flex-wrap:wrap;gap:4px 16px;margin-bottom:6px}.legal-links a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px}.legal-links a:hover{color:var(--accent-ink)}.login-page .legal-links{justify-content:center}.login-page .legal-links a:hover{color:var(--accent)}.legal-page{min-height:100vh;padding:32px 16px;background:radial-gradient(circle at 12% 18%,rgb(107 94 62 / .28),transparent 40%),radial-gradient(circle at 88% 80%,rgb(71 182 217 / .12),transparent 40%),linear-gradient(135deg,#283030,#1d2425,#141a1b);background-attachment:fixed}.legal-card{width:min(760px,100%);margin:0 auto;padding:28px 40px 40px;background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);color:var(--text-2);font-size:15px;line-height:1.65}.legal-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding-bottom:18px;border-bottom:1px solid var(--border)}.legal-back{display:inline-flex;align-items:center;gap:6px;color:var(--accent-ink);font-size:14px;font-weight:600;text-decoration:none}.legal-back:hover{text-decoration:underline}.legal-tabs{display:flex;gap:4px;margin:18px 0 8px;padding:4px;width:fit-content;background:var(--surface-3);border-radius:var(--radius)}.legal-tabs a{padding:6px 14px;border-radius:var(--radius-sm);color:var(--muted);font-size:14px;font-weight:600;text-decoration:none}.legal-tabs a:hover{color:var(--text)}.legal-tabs a[aria-current=page]{background:var(--surface);color:var(--text);box-shadow:var(--shadow-xs)}.legal-card h1{margin:18px 0 2px;color:var(--text);font-size:28px;line-height:1.25}.legal-updated{margin:0 0 18px;color:var(--muted);font-size:13px}.legal-lead{margin:0 0 8px;color:var(--text);font-size:16px}.legal-card h2{margin:28px 0 8px;color:var(--text);font-size:17px}.legal-card p{margin:0 0 10px}.legal-card ul{margin:0 0 10px;padding-left:20px}.legal-card li{margin-bottom:8px}.legal-card li strong{color:var(--text)}.legal-card section a,.legal-lead a{color:var(--accent-ink)}.legal-card h3{margin:20px 0 6px;color:var(--text);font-size:15px}.license-list{list-style:none;padding:0!important;border-top:1px solid var(--border);font-size:14px}.license-list li{margin:0!important;padding:7px 0;border-bottom:1px solid var(--border)}.license-list li:not(:has(details)),.license-list summary{display:flex;align-items:baseline;gap:4px}.license-list summary{cursor:pointer}.license-note{color:var(--muted);font-size:13px}.license-package{color:var(--accent-ink);font-weight:600}.license-source{display:inline-block;margin-top:8px;font-size:13px}.license-name{margin-left:auto;padding-left:12px;color:var(--muted);font-size:13px;white-space:nowrap}.license-list pre{max-height:280px;overflow:auto;margin:8px 0 4px;padding:12px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:12px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}@media(max-width:600px){.legal-page{padding:16px}.legal-card{padding:20px 18px 28px;font-size:14px}.legal-card h1{font-size:24px}}.pet{position:fixed;z-index:90;width:80px;height:80px;padding:0;border:0;border-radius:18px;background:transparent;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;transition:transform .15s}.pet .pet-robot{filter:drop-shadow(0 0 1px rgb(255 255 255 / .7)) drop-shadow(0 6px 10px rgb(16 24 26 / .28));transition:filter .2s}.pet:hover{transform:translateY(-2px) scale(1.04)}.pet:hover .pet-robot{filter:drop-shadow(0 0 1px rgb(255 255 255 / .8)) drop-shadow(0 10px 14px rgb(16 24 26 / .32))}.pet:active{cursor:grabbing}.pet.open .pet-robot{filter:drop-shadow(0 0 1px rgb(255 255 255 / .8)) drop-shadow(0 0 10px rgb(71 182 217 / .75))}.pet:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.pet-robot{display:block;width:100%;height:100%;overflow:visible}.pet-robot g{transform-box:fill-box}.pet-body{transform-origin:50% 100%;animation:pet-float 3.2s ease-in-out infinite}.pet-antenna{transform-origin:50% 100%;animation:pet-sway 2.8s ease-in-out infinite}.pet-face{transform-origin:50% 50%;animation:pet-look 9s ease-in-out infinite;transition:transform .3s}.pet-eyes{transform-origin:50% 50%;animation:pet-blink 5s infinite}.pet-arm{transform-origin:50% 10%}.pet-arm-right{animation:pet-wave 9s ease-in-out 1.2s infinite}.pet-cheek{opacity:.45;transition:opacity .3s}.pet:hover .pet-arm-right,.pet:focus-visible .pet-arm-right{animation:pet-wave-now .9s ease-in-out}.pet:hover .pet-body{animation-duration:1.6s}.pet-robot.thinking .pet-face{animation:none;transform:translate(1.5px,-1.5px)}.pet-robot.thinking .pet-eyes{animation:none;transform:scaleY(.6)}.pet-robot.thinking .pet-antenna{animation-duration:1s}.pet-robot.thinking .pet-antenna-light{animation:pet-glow .8s ease-in-out infinite}.pet-robot.thinking .pet-body{animation-duration:1.4s}.pet-robot.happy .pet-body{animation:pet-hop .6s ease-out 2}.pet-robot.happy .pet-face{animation:none}.pet-robot.happy .pet-arm-left{animation:pet-cheer-left .6s ease-out 2}.pet-robot.happy .pet-arm-right{animation:pet-cheer-right .6s ease-out 2}.pet-robot.happy .pet-cheek{opacity:.85}@keyframes pet-float{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}@keyframes pet-sway{0%,to{transform:rotate(-7deg)}50%{transform:rotate(7deg)}}@keyframes pet-blink{0%,93%,to{transform:scaleY(1)}95%{transform:scaleY(.1)}}@keyframes pet-look{0%,38%,to{transform:translate(0)}44%,52%{transform:translate(-2.2px)}58%,66%{transform:translate(2.2px)}72%{transform:translate(0)}}@keyframes pet-wave{0%,84%,to{transform:rotate(0)}87%,93%{transform:rotate(-150deg)}90%,96%{transform:rotate(-115deg)}}@keyframes pet-wave-now{0%,to{transform:rotate(0)}25%,75%{transform:rotate(-150deg)}50%{transform:rotate(-115deg)}}@keyframes pet-hop{0%,to{transform:translateY(0) scale(1)}40%{transform:translateY(-5px) scale(1.04,.97)}}@keyframes pet-cheer-left{0%,to{transform:rotate(0)}40%{transform:rotate(140deg)}}@keyframes pet-cheer-right{0%,to{transform:rotate(0)}40%{transform:rotate(-140deg)}}@keyframes pet-glow{0%,to{fill:#f2a33a}50%{fill:#ffe08a}}.pet.welcoming{z-index:120;cursor:pointer;transition:transform .9s cubic-bezier(.34,1.2,.64,1)}.pet.welcoming.leaving{transition:transform .85s cubic-bezier(.5,0,.3,1)}.pet.welcoming:hover{transform:none}.pet.welcoming .pet-robot{filter:drop-shadow(0 0 1px rgb(255 255 255 / .9)) drop-shadow(0 8px 16px rgb(16 24 26 / .3))}.pet.welcoming.talking .pet-arm-right{animation:pet-wave-now 1s ease-in-out infinite}.pet.welcoming.talking .pet-body{animation:pet-float 1.8s ease-in-out infinite}.pet-welcome-glass{position:fixed;inset:0;z-index:110;background:radial-gradient(circle at 50% 50%,#ffffff59,#fff0 60%),linear-gradient(135deg,#ffffff38,#e8f6fb1f);backdrop-filter:blur(14px) saturate(1.5);-webkit-backdrop-filter:blur(14px) saturate(1.5);animation:glass-in .6s ease-out both}.pet-welcome-glass.leaving{animation:glass-out .8s ease-in both}@keyframes glass-in{0%{opacity:0}to{opacity:1}}@keyframes glass-out{0%{opacity:1}to{opacity:0}}.pet-speech{position:fixed;z-index:125;min-width:220px;padding:14px 16px 10px;border-radius:20px 20px 20px 6px;background:#ffffffeb;border:1px solid rgb(255 255 255 / .9);box-shadow:0 12px 32px #10181a2e,0 2px 6px #10181a14,inset 0 1px #fff;color:var(--text);cursor:pointer;transform-origin:0% 100%;animation:speech-pop .45s cubic-bezier(.34,1.56,.64,1) both}.pet-speech:after{content:"";position:absolute;left:14px;bottom:-9px;width:18px;height:18px;background:inherit;border-right:1px solid rgb(255 255 255 / .9);border-bottom:1px solid rgb(255 255 255 / .9);border-bottom-right-radius:4px;transform:rotate(45deg);box-shadow:4px 4px 8px #10181a0f}.pet-speech.above{border-radius:20px;transform-origin:50% 100%;text-align:center}.pet-speech.above:after{left:calc(50% - 9px)}.pet-speech-line{margin:0;font-size:17px;font-weight:600;line-height:1.4;animation:speech-line .4s ease-out both}.pet-speech-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px}.pet-speech-dots{display:inline-flex;gap:5px}.pet-speech-dots span{width:6px;height:6px;border-radius:50%;background:var(--border-strong, #cbd5d8);transition:background .3s,transform .3s}.pet-speech-dots span.on{background:var(--accent);transform:scale(1.3)}.pet-speech-skip{border:0;background:none;padding:2px 4px;color:var(--accent-ink);font:inherit;font-size:12.5px;font-weight:600;cursor:pointer}.pet-speech-skip:hover{text-decoration:underline}@keyframes speech-pop{0%{opacity:0;transform:scale(.4) translateY(8px)}to{opacity:1;transform:none}}@keyframes speech-line{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.pet.welcoming,.pet.welcoming.leaving{transition:none}.pet.welcoming.talking .pet-arm-right,.pet.welcoming.talking .pet-body,.pet-speech,.pet-speech-line,.pet-welcome-glass{animation:none}}.pet-panel{position:fixed;z-index:91;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-lg);overflow:hidden;animation:pet-open .14s ease-out}@keyframes pet-open{0%{opacity:0;transform:translateY(6px) scale(.98)}}.pet-head{display:flex;align-items:center;gap:10px;padding:10px 10px 10px 12px;background:var(--chrome);color:var(--chrome-text)}.pet-head .icon-button{color:var(--chrome-muted)}.pet-head .icon-button:hover{background:#ffffff1a;color:#fff}.pet-head-avatar{width:34px;height:34px;flex:none;padding:3px;border-radius:50%;background:#ffffff14}.pet-head-avatar .pet-body{animation:none}.pet-head-text{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25}.pet-head-text strong{font-size:15px}.pet-context{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 12px;border-bottom:1px solid var(--border);background:var(--surface-2);font-size:12px}.pet-context-label{color:var(--muted);font-weight:600}.pet-chip{display:inline-flex;align-items:center;gap:4px;max-width:160px;padding:2px 4px 2px 8px;border-radius:999px;background:var(--accent-subtle);border:1px solid var(--accent-border);color:#0f5f7a;font-family:var(--mono);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pet-chip button{display:grid;place-items:center;width:18px;height:18px;padding:0;border:0;border-radius:50%;background:none;color:inherit;cursor:pointer}.pet-chip button:hover{background:#13799b26}.pet-add{position:relative}.pet-add-button{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border:1px dashed var(--border-strong, #cbd5d8);border-radius:999px;background:var(--surface);color:var(--text-2);font:inherit;font-size:12px;font-weight:600;cursor:pointer}.pet-add-button:hover{border-color:var(--accent);color:var(--accent-ink)}.pet-add-menu{position:absolute;top:calc(100% + 4px);left:0;z-index:5;display:flex;flex-direction:column;min-width:180px;max-height:220px;overflow:auto;padding:4px;border:1px solid var(--border);border-radius:10px;background:var(--surface);box-shadow:var(--shadow-lg)}.pet-add-menu button{display:flex;align-items:center;gap:7px;padding:6px 8px;border:0;border-radius:6px;background:none;color:var(--text);font-family:var(--mono);font-size:12px;text-align:left;cursor:pointer;white-space:nowrap}.pet-add-menu button:hover{background:var(--accent-subtle)}.pet-about{overflow:hidden;color:var(--chrome-muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.pet-messages{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:10px;padding:14px;background:var(--surface-2)}.pet-bubble{min-width:0;max-width:88%;padding:9px 12px;border-radius:14px;font-size:14px;line-height:1.5;overflow-wrap:anywhere}.pet-bubble p{margin:0;white-space:pre-wrap}.pet-bubble p+p,.pet-bubble pre+p,.pet-bubble p+pre{margin-top:8px}.pet-bubble p:empty{display:none}.pet-bubble.assistant{align-self:flex-start;background:var(--surface);border:1px solid var(--border);border-bottom-left-radius:4px;box-shadow:var(--shadow-xs)}.pet-bubble.student{align-self:flex-end;background:var(--accent);color:var(--on-accent);border-bottom-right-radius:4px}.pet-bubble.notice{background:var(--warning-subtle);border-color:var(--warning-border);color:#7a4510}.pet-bubble code{padding:1px 5px;border-radius:4px;background:var(--surface-3);font-family:var(--mono);font-size:12.5px}.pet-markdown>:not(:first-child){margin-top:8px}.pet-markdown p{white-space:normal}.pet-markdown :is(h1,h2,h3,h4,h5,h6){margin:0;font-size:14px;font-weight:650;line-height:1.4}.pet-markdown :is(h1,h2){font-size:16px}.pet-markdown>:is(h1,h2,h3,h4,h5,h6):not(:first-child){margin-top:12px}.pet-markdown :is(ul,ol){margin:0;padding-left:20px}.pet-markdown>:is(ul,ol):not(:first-child){margin-top:8px}.pet-markdown li+li,.pet-markdown li>:is(ul,ol){margin-top:4px}.pet-markdown li>p+p{margin-top:4px}.pet-markdown blockquote{margin:0;padding-left:10px;border-left:3px solid var(--border);color:var(--text-2)}.pet-markdown>blockquote:not(:first-child){margin-top:8px}.pet-markdown a{color:var(--accent-ink);text-decoration:underline;text-underline-offset:2px}.pet-markdown hr{border:0;border-top:1px solid var(--border)}.pet-markdown img{max-width:100%;height:auto;border-radius:6px}.pet-markdown .contains-task-list{list-style:none;padding-left:0}.pet-markdown input[type=checkbox]{margin-right:6px;vertical-align:middle}.pet-markdown-table{max-width:100%;overflow-x:auto}.pet-markdown table{width:100%;border-collapse:collapse;font-size:12.5px}.pet-markdown :is(th,td){padding:5px 7px;border:1px solid var(--border);text-align:left}.pet-markdown th{background:var(--surface-2);font-weight:650}.pet-code{margin:0;padding:10px 12px;overflow-x:auto;border-radius:8px;background:var(--terminal);color:var(--terminal-text);font-size:12.5px;line-height:1.55}.pet-code code{padding:0;background:none;color:inherit}.pet-code-block{position:relative}.pet-code-block .pet-code{padding-right:40px}.pet-code-copy{position:absolute;top:6px;right:6px;display:grid;place-items:center;width:28px;height:28px;border:1px solid rgb(255 255 255 / .14);border-radius:7px;background:#ffffff14;color:var(--terminal-text);cursor:pointer;opacity:.75;transition:opacity .15s,background .15s,color .15s}.pet-code-block:hover .pet-code-copy,.pet-code-copy:focus-visible{opacity:1}.pet-code-copy:hover{background:#ffffff29}.pet-code-copy.copied{color:#6fdc9a;border-color:#6fdc9a66;opacity:1}.pet-typing{display:flex;gap:4px;padding:12px 14px}.pet-typing span{width:7px;height:7px;border-radius:50%;background:var(--accent);animation:pet-dot 1s infinite ease-in-out}.pet-typing span:nth-child(2){animation-delay:.15s}.pet-typing span:nth-child(3){animation-delay:.3s}@keyframes pet-dot{0%,80%,to{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}.pet-form{display:flex;align-items:flex-end;gap:8px;padding:10px 12px 6px;border-top:1px solid var(--border)}.pet-form textarea{flex:1;min-height:40px;max-height:120px;padding:9px 11px;resize:none;border:1px solid var(--border-strong);border-radius:10px;font:inherit;font-size:14px;line-height:1.4}.pet-form textarea:focus{outline:none;border-color:var(--accent);box-shadow:var(--ring)}.pet-form textarea:disabled{background:var(--surface-2)}.pet-form .btn{height:40px;width:40px;padding:0;border-radius:10px}.pet-foot{display:flex;justify-content:space-between;gap:8px;min-height:26px;padding:0 14px 8px;color:var(--muted);font-size:12px}.pet-over{color:var(--danger);font-weight:600}@media(prefers-reduced-motion:reduce){.pet-robot *,.pet:hover .pet-robot *,.pet-panel,.pet-typing span{animation:none!important}}.assistant-admin{display:flex;flex-direction:column;gap:14px}.assistant-admin-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px}.assistant-admin-head h2{display:inline-flex;align-items:center;gap:8px;margin:0}.assistant-admin-head h2 svg{color:var(--accent-ink)}.assistant-admin-head p{flex-basis:100%}.assistant-usage{display:block;font-variant-numeric:tabular-nums}.assistant-meter{display:block;width:140px;height:4px;margin-top:5px;border-radius:999px;background:var(--surface-3);overflow:hidden}.assistant-meter span{display:block;height:100%;border-radius:999px;background:var(--accent)}.assistant-refusals{border-top:1px solid var(--border);padding-top:14px}.assistant-refusals-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin-bottom:10px}.assistant-refusals-head h3{margin:0;font-size:14px;font-weight:650}.assistant-refusals-head>.btn,.assistant-refusals-head>.admin-inline{margin-left:auto}.assistant-refusals ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.assistant-refusals li{padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2)}.assistant-refusals q{display:block;margin:6px 0 4px;color:var(--text);font-size:14px;quotes:"“" "”";overflow-wrap:anywhere}.assistant-refusals .admin-optional{margin:0;font-size:12px}.assistant-refusal-meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;color:var(--muted);font-size:12px}.assistant-refusal-meta strong{color:var(--text);font-size:13px}.refusal-tag{padding:1px 8px;border-radius:999px;background:var(--surface-3);color:var(--text-2);font-weight:600}.refusal-tag.unsafe{background:var(--danger-subtle);color:var(--danger)}.refusal-tag.personal_info,.refusal-tag.prompt_attack{background:var(--warning-subtle);color:var(--warning)}.assistant-switch{margin-left:auto}.assistant-blocked td:first-child{color:var(--muted)}.assistant-off{margin-left:8px;vertical-align:1px}.live-tree .tree-row.clickable,.live-tabs .clickable{cursor:pointer}.live-tabs .clickable:hover{color:var(--text)}.code-page{position:relative}.live-pointers{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:200}.live-pointer{position:absolute;top:0;left:0;will-change:transform;transition:opacity .15s}.live-pointer.hidden{opacity:0}.live-pointer svg{transform-origin:2px 2px;transition:transform .12s ease-out}.live-pointer.pressed svg{transform:scale(.82)}.live-click{position:absolute;top:0;left:0;width:0;height:0;pointer-events:none}.live-click:before,.live-click:after{content:"";position:absolute;left:2px;top:2px;border-radius:50%;transform:translate(-50%,-50%)}.live-click:before{width:34px;height:34px;border:2px solid color-mix(in srgb,var(--pointer-color) 85%,white);background:color-mix(in srgb,var(--pointer-color) 15%,transparent);animation:live-click-ring .6s cubic-bezier(.2,.7,.3,1) forwards}.live-click:after{width:12px;height:12px;background:color-mix(in srgb,var(--pointer-color) 75%,white);animation:live-click-dot .6s ease-out forwards}@keyframes live-click-ring{0%{opacity:.8;transform:translate(-50%,-50%) scale(.25)}to{opacity:0;transform:translate(-50%,-50%) scale(1)}}@keyframes live-click-dot{0%{opacity:.65;transform:translate(-50%,-50%) scale(.6)}35%{opacity:.55;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-50%) scale(.8)}}@media(prefers-reduced-motion:reduce){.live-click:before{animation:live-click-fade .6s ease-out forwards;transform:translate(-50%,-50%) scale(.7)}.live-click:after{animation:live-click-fade .6s ease-out forwards}.live-pointer svg{transition:none}}@keyframes live-click-fade{0%{opacity:.65}to{opacity:0}}.live-pointer svg{display:block;filter:drop-shadow(0 1px 2px rgb(16 24 26 / .3))}.live-pointer span{position:absolute;top:17px;left:13px;padding:4px 8px;border-radius:999px;background:var(--pointer-color);color:#fff;font:600 11px/1 var(--sans);letter-spacing:.01em;white-space:nowrap;box-shadow:0 2px 6px #10181a2e,0 0 0 1.5px #fff}.live-view .live-board{padding:0;border:0;background:none;font-size:12px;color:var(--text-2)}.live-mirror{flex:1;min-height:0;background:var(--bg)}.live-mirror .workspace{padding:12px}.live-mirror .splitter{cursor:default}.live-mirror .splitter:after{display:none}.live-mirror .editor-tabs .save-state{visibility:hidden}.save-library-dialog{width:min(520px,calc(100vw - 32px));padding:20px;overflow:auto}.save-library-dialog h2{margin:0 0 20px;font-size:18px;overflow-wrap:anywhere}.save-library-dialog .modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.save-library-dialog fieldset{display:grid;gap:16px;border:0;margin:0 0 20px;padding:0;min-width:0}.save-library-dialog label{display:grid;gap:6px;font-size:13px;font-weight:600}.save-library-dialog select,.save-library-dialog input{width:100%;min-width:0;padding:9px 10px;border:1px solid var(--border);border-radius:6px;background:var(--surface-2);color:var(--text);font:inherit}.save-library-dialog p{margin:0;font-size:13px;overflow-wrap:anywhere}.save-library-dialog .save-library-source{margin:-12px 0 20px;color:var(--muted);font-family:var(--mono);font-size:12px;font-weight:400}.save-library-message{margin:0;padding:5px 16px;background:var(--surface-2);color:var(--text-2);font-size:12px}.support-editor{display:flex;flex-direction:column;min-width:0;min-height:0;flex:1;overflow:hidden}.support-editor>.editor{flex:1;min-height:0}.support-view{flex:1;min-height:0;display:flex;flex-direction:column}.support-viewport{flex:1;min-height:0;position:relative;overflow:hidden}.support-canvas{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.support-frame{position:absolute;top:0;left:0;border:0;background:var(--bg);transform-origin:0 0}.support-error{margin:0;padding:8px 16px;background:#fff2d9;color:#654900}.support-embedded-placeholder{flex:1;padding:32px;color:var(--muted);text-align:center}.groups-admin>fieldset{border:0;padding:0;min-width:0}.groups-admin header p,.groups-detail p{color:var(--muted);font-size:13px}.groups-create,.groups-actions{display:flex;align-items:end;flex-wrap:wrap;gap:10px;margin:12px 0}.groups-admin label{display:flex;flex-direction:column;gap:5px;font-size:13px}.groups-layout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:20px;margin:18px 0}.groups-layout nav{display:flex;flex-direction:column;gap:5px}.groups-layout nav button{justify-content:flex-start;overflow-wrap:anywhere;white-space:normal}.groups-layout nav button[aria-pressed=true]{background:var(--accent-subtle);color:var(--accent-ink)}.groups-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:12px 0}.groups-members{height:168px;max-height:32vh;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-gutter:stable;display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));grid-auto-rows:minmax(62px,max-content);align-content:start;gap:8px;padding:8px;margin-top:8px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2)}.groups-members label,.groups-resources>label:has(input[type=checkbox]){flex-direction:row;align-items:center;gap:8px}.groups-members label{padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.groups-members label:has(input:checked){background:var(--accent-subtle);border-color:var(--accent-border)}.group-member-info{display:flex;flex-direction:column;gap:4px;min-width:0}.group-member-name{font-weight:600;overflow-wrap:anywhere}.groups-members small{color:var(--text-2);background:var(--surface-3);border-radius:4px;padding:2px 6px;width:fit-content;font-size:11px}.groups-admin input[type=checkbox]{width:auto}.groups-admin details{border-top:1px solid var(--border);padding:14px 0}.groups-admin details>label{margin:12px 0}.groups-admin summary{cursor:pointer;font-weight:600}.group-current-lesson{max-width:min(300px,100%);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:700px){.groups-layout,.groups-fields{grid-template-columns:minmax(0,1fr)}.groups-layout nav{flex-direction:row;flex-wrap:wrap}}.admin-sections{display:flex;flex-wrap:wrap;gap:6px}.admin-sections [aria-pressed=true]{color:var(--accent-ink);background:var(--accent-subtle)}.admin-section:not([hidden]){display:flex;flex-direction:column;gap:18px}.admin-section[hidden]{display:none}.groups-admin input:not([type=checkbox]),.groups-admin select{width:100%;min-width:0;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);color:var(--text);font:inherit}.groups-create>label{min-width:200px;width:min(350px,100%)}.admin-group-field{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600;color:var(--text-2)}.account-groups-trigger{min-width:130px;max-width:230px;justify-content:space-between;gap:10px}.account-groups-trigger>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-group-menu{position:fixed;z-index:300;width:min(300px,calc(100vw - 24px));max-height:min(340px,calc(100vh - 24px));display:flex;flex-direction:column;gap:8px;padding:12px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);font-size:13px}.account-group-menu header,.account-group-menu footer{display:flex;align-items:center;justify-content:space-between;gap:8px;flex:none}.account-group-menu footer{justify-content:flex-end}.account-group-options{min-height:0;overflow:auto}.account-group-options label{display:flex;align-items:center;gap:8px;padding:8px;border-radius:5px;cursor:pointer;overflow-wrap:anywhere}.account-group-options label:hover{background:var(--surface-3)}.account-group-options input{flex:none;width:auto;accent-color:var(--accent)}.account-group-menu small{color:var(--muted)}.account-group-menu p[role=alert]{color:var(--danger)}.account-users-card{overflow-x:auto}.admin-table .account-groups-trigger{min-width:112px;max-width:170px}.content-audience-browser{margin-top:16px;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.content-library-tabs{display:flex;gap:4px;padding:6px;background:var(--surface-2);border-bottom:1px solid var(--border)}.content-library-tabs button{display:inline-flex;align-items:center;gap:7px;border:0;border-radius:6px;padding:9px 12px;background:transparent;color:var(--muted);font:inherit;font-size:13px;cursor:pointer}.content-library-tabs button:hover{background:var(--surface-3);color:var(--text)}.content-library-tabs [aria-selected=true]{color:var(--accent-ink);background:var(--surface);box-shadow:var(--shadow-xs);font-weight:600}.content-audience-layout{display:grid;grid-template-columns:minmax(250px,1.1fr) minmax(280px,1fr);align-items:stretch}.content-audience-list{min-width:0;padding:14px;border-right:1px solid var(--border)}.content-audience-search{position:relative}.content-audience-search>svg{position:absolute;left:10px;top:11px;color:var(--muted)}.groups-admin .content-audience-search input{padding-left:34px}.content-breadcrumbs{display:flex;align-items:center;flex-wrap:wrap;gap:3px;margin:12px 0;font-size:12px}.content-breadcrumbs span{display:inline-flex;align-items:center;gap:3px}.content-breadcrumbs button{border:0;background:none;padding:4px;color:var(--accent-ink);font:inherit;cursor:pointer;overflow-wrap:anywhere}.content-breadcrumbs [aria-current]{color:var(--text);font-weight:600}.content-audience-items{min-height:220px;max-height:430px;overflow:auto}.content-audience-items h4{display:flex;align-items:center;gap:8px;margin:10px 6px 6px;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em}.content-audience-items h4 span{font-size:10px;background:var(--surface-3);border-radius:9px;padding:1px 5px}.content-audience-item{display:flex;align-items:center;gap:9px;width:100%;padding:10px 8px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--text);text-align:left;font:inherit;font-size:13px;cursor:pointer}.content-audience-item:hover{background:var(--surface-2)}.content-audience-item.selected{background:var(--accent-subtle);border-color:var(--accent-border)}.content-item-name{min-width:0;flex:1;display:flex;flex-direction:column;gap:3px;overflow-wrap:anywhere}.content-item-name strong{font-weight:550}.content-item-name small{color:var(--muted);font-size:11px}.content-audience-badge{flex:none;color:var(--muted);font-size:10px;padding:2px 6px;border-radius:4px;background:var(--surface-3)}.content-sharing-panel{min-width:0;padding:18px;background:var(--surface-2)}.content-sharing-panel header>small{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.content-sharing-panel h3{margin:6px 0;font-size:16px;overflow-wrap:anywhere}.content-sharing-panel .content-sharing-path{font-family:var(--mono);font-size:11px;overflow-wrap:anywhere;margin-bottom:8px}.content-sharing-panel header>p{font-size:12px}.content-sharing-empty{padding:55px 10px;text-align:center;color:var(--muted)}.content-sharing-empty p{font-size:12px;max-width:270px;margin:8px auto 0}.groups-admin .content-audience-modes,.groups-admin .content-audience-groups{border:0;padding:0;margin:20px 0 12px;min-width:0}.content-sharing-panel legend{font-size:12px;font-weight:600;margin-bottom:8px}.content-audience-modes label{flex-direction:row;align-items:flex-start;padding:8px 0;gap:8px;cursor:pointer}.groups-admin .content-audience-modes input[type=radio]{width:auto;padding:0;margin:3px 0 0;flex:none;accent-color:var(--accent)}.content-audience-modes label>span{display:flex;flex-direction:column;gap:3px}.content-audience-modes strong{font-size:12px;font-weight:600}.content-audience-modes small{font-size:11px;color:var(--muted)}.content-audience-groups{max-height:220px;overflow:auto}.content-audience-groups label{flex-direction:row;align-items:center;padding:7px 8px;gap:8px;border-radius:5px;cursor:pointer}.content-audience-groups label:has(input:checked){background:var(--accent-subtle)}.content-sharing-inherited{padding:10px;border:1px solid var(--border);border-radius:6px;margin:16px 0;font-size:11px;background:var(--surface)}.content-sharing-inherited ul{padding-left:16px;margin:6px 0;overflow-wrap:anywhere}.content-sharing-panel .content-sharing-inherited p,.content-sharing-panel .content-sharing-note{font-size:11px;color:var(--muted)}.content-sharing-actions{display:flex;justify-content:flex-end;align-items:center;flex-wrap:wrap;gap:6px;border-top:1px solid var(--border);padding-top:12px;margin-top:18px}.content-sharing-actions>small{margin-right:auto;color:var(--muted);font-size:10px}.content-sharing-panel .content-sharing-saved{margin-top:10px;color:var(--accent-ink);font-size:12px}.content-audience-list .content-audience-empty{text-align:center;padding:32px 8px;font-size:12px}@media(max-width:800px){.content-audience-layout{grid-template-columns:minmax(0,1fr)}.content-audience-list{border-right:0;border-bottom:1px solid var(--border)}.content-audience-items{max-height:260px;min-height:100px}}.assistant-refusal-filters{display:flex;flex-wrap:wrap;align-items:end;gap:12px;margin:14px 0 8px}.assistant-refusal-filters label{display:grid;gap:5px;flex:1 1 180px;min-width:0;font-size:12px;color:var(--muted)}.assistant-refusal-filters label:first-child{flex:2 1 260px}.assistant-refusal-filters input,.assistant-refusal-filters select{width:100%;min-width:0;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);color:var(--text);font:inherit;font-size:13px}.assistant-refusal-filters :is(input,select):focus-visible{outline:2px solid var(--accent);outline-offset:1px}.assistant-refusals-scroll{max-height:min(520px,60vh);overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;margin-top:10px}.assistant-refusals-scroll:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.boards-page{position:relative;flex:1;min-height:0;display:grid;grid-template-columns:60px var(--list-col, 260px) 12px minmax(0,1fr);gap:12px 0;padding:12px}.boards-page.single{grid-template-columns:60px minmax(0,1fr)}.boards-list[hidden]{display:none}@media(max-width:900px){.boards-page,.boards-page.single{grid-template-columns:48px minmax(0,1fr);grid-template-rows:auto minmax(520px,1fr);column-gap:12px}.boards-page>.activity-bar{grid-row:1 / 3}.boards-page.single{grid-template-rows:minmax(0,1fr)}.boards-page.single>.activity-bar{grid-row:auto}}.boards-list{min-height:0;overflow:auto;display:flex;flex-direction:column;gap:10px;padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs)}.boards-list h2{display:flex;align-items:center;gap:8px;margin:4px 4px 0;font-size:15px;font-weight:650}.boards-list h2 svg{color:var(--muted)}.boards-add{margin-left:auto}.boards-for{margin:0 4px;color:var(--muted);font-size:12.5px}.boards-group{display:flex;flex-direction:column;gap:4px;margin:0 4px;color:var(--muted);font-size:12px;font-weight:600}.boards-group select{height:32px;padding:0 8px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--text);font:inherit;font-size:13.5px}.boards-empty{margin:4px;color:var(--muted);font-size:13px;line-height:1.45}.boards-list ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.boards-row{position:relative;display:flex;align-items:center}.board-item{flex:1;min-width:0;display:flex;align-items:center;gap:8px;padding:9px 12px;border:1px solid transparent;border-radius:var(--radius);background:none;color:var(--text);font:inherit;font-size:14px;font-weight:550;text-align:left;cursor:pointer}.board-item:hover{background:var(--surface-3)}.board-item.active{background:var(--accent-subtle);border-color:var(--accent-border)}.board-item svg{flex:none;color:var(--muted)}.board-item-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.board-item-tools{position:absolute;right:4px;display:flex;gap:2px;padding-left:8px;opacity:0;transition:opacity .12s}.boards-row:hover .board-item-tools,.board-item-tools:focus-within{opacity:1}.boards-row:hover .board-item svg{visibility:hidden}.board-item-tools .icon-button{background:var(--surface)}.boards-form{display:flex;align-items:center;gap:4px}.boards-form input{flex:1;min-width:0;height:32px;padding:0 10px;border:1px solid var(--border-strong);border-radius:var(--radius);font:inherit;font-size:13.5px}.boards-form input:focus{outline:none;border-color:var(--accent);box-shadow:var(--ring)}.board-stage{min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs)}.board-head{display:flex;align-items:center;gap:12px;min-height:52px;padding:8px 10px 8px 16px;border-bottom:1px solid var(--border)}.board-title{display:flex;align-items:center;gap:8px;min-width:0}.board-title strong{overflow:hidden;font-size:15px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.board-locked{display:inline-flex;align-items:center;gap:4px;padding:1px 8px;border-radius:999px;background:var(--warning-subtle);color:var(--warning);font-size:11.5px;font-weight:700}.board-people{display:flex;margin:0 0 0 auto;padding:0 0 0 6px;list-style:none}.board-people li{display:grid;place-items:center;width:28px;height:28px;margin-left:-6px;border-radius:50%;background:var(--surface-3);box-shadow:0 0 0 2px var(--surface);color:var(--text-2);font-size:12px;font-weight:700}.board-people li.staff{background:linear-gradient(135deg,#5fc2e2,#2f9fc4);color:var(--on-accent)}.board-people li.more{background:var(--surface-2);color:var(--muted);font-size:11px}.board-actions{display:flex;gap:6px}.board-people:empty+.board-actions{margin-left:auto}.board-banner,.board-problem,.board-notice{display:flex;align-items:center;gap:8px;margin:0;padding:8px 16px;border-bottom:1px solid var(--border);font-size:13px}.board-banner{background:var(--warning-subtle);color:#7a4510}.board-problem{background:var(--danger-subtle);color:var(--danger)}.board-notice{background:var(--success-subtle);color:var(--success)}.board-canvas{position:relative;flex:1;min-height:0}.board-surface{position:absolute;inset:0}.board-surface.loading .excalidraw{visibility:hidden}.board-loading{position:absolute;inset:0;display:grid;place-items:center;margin:0;color:var(--muted);font-size:14px}.board-none{flex:1;display:grid;place-content:center;justify-items:center;gap:10px;color:var(--muted);font-size:14px}.board-none svg{color:var(--accent-ink)}.board-confirm{width:min(460px,100%)}.board-confirm>p{margin:0;padding:16px 18px;color:var(--text-2);font-size:14px;line-height:1.5}.board-confirm h2{margin:0;font-size:15px}.board-canvas .library-menu-browse-button,.board-canvas .library-menu-control-buttons a{display:none}.messages-button{position:relative;display:grid;place-items:center;width:36px;height:36px;border:1px solid transparent;border-radius:999px;background:none;color:var(--chrome-muted);cursor:pointer;transition:background-color .12s,border-color .12s,color .12s}.messages-button:hover,.messages-button[aria-expanded=true]{background:#ffffff14;border-color:#ffffff1a;color:var(--chrome-text)}.messages-button[aria-expanded=true]{color:var(--accent)}.messages-button:focus-visible{outline:none;box-shadow:var(--ring)}.messages-badge{position:absolute;top:1px;right:-1px;min-width:17px;height:17px;padding:0 4px;border-radius:999px;background:var(--danger);box-shadow:0 0 0 2px var(--chrome);color:#fff;font-size:10.5px;font-weight:700;line-height:17px;text-align:center}.app.chat-open :is(.pet,.pet-panel,.pet-speech,.pet-welcome-glass){visibility:hidden}.chat-drawer{position:fixed;top:calc(var(--chat-top, 56px) + 10px);right:12px;bottom:12px;z-index:95;width:min(400px,calc(100vw - 24px));display:flex;flex-direction:column;overflow:hidden;background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-lg);transform-origin:top right;animation:chat-in .18s cubic-bezier(.2,.8,.2,1)}.chat-drawer:focus{outline:none}@keyframes chat-in{0%{opacity:0;transform:translateY(-8px) scale(.98)}}.chat-thread{position:relative;flex:1;min-height:0;display:flex;flex-direction:column}.chat-head{display:flex;align-items:center;gap:10px;min-height:58px;padding:10px 10px 10px 16px;border-bottom:1px solid var(--border);background:var(--surface)}.chat-head>svg{color:var(--accent-ink)}.chat-head .icon-button{width:32px;height:32px;border-radius:var(--radius)}.chat-head .icon-button.on{background:var(--accent-subtle);color:var(--accent-ink)}.chat-head-text{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25}.chat-head-text strong{font-size:15px;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-head-text>span{color:var(--muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-presence-label.on{color:var(--success);font-weight:600}.chat-search{padding:12px 12px 4px}.chat-search input{width:100%;height:36px;padding:0 12px;border:1px solid var(--border);border-radius:999px;background:var(--surface-2);font:inherit;font-size:14px}.chat-search input:focus{outline:none;border-color:var(--accent);background:var(--surface);box-shadow:var(--ring)}.chat-list{flex:1;min-height:0;overflow-y:auto;padding:4px 8px 10px}.chat-list h3{margin:14px 10px 6px;color:var(--muted);font-size:11.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.chat-row{position:relative;width:100%;display:flex;align-items:center;gap:12px;padding:9px 10px;border:0;border-radius:var(--radius-lg);background:none;color:var(--text);font:inherit;text-align:left;cursor:pointer;transition:background-color .12s}.chat-row:hover{background:var(--surface-3)}.chat-row:focus-visible{outline:none;box-shadow:var(--ring)}.chat-row.unread{background:var(--accent-subtle)}.chat-row.unread:hover{background:#dcf1f8}.chat-avatar{position:relative;display:grid;place-items:center;flex:none;width:38px;height:38px;border-radius:12px;background:var(--surface-3);color:var(--text-2)}.chat-avatar.group{background:var(--accent-subtle);color:var(--accent-ink)}.chat-row.unread .chat-avatar.group{background:var(--surface)}.chat-avatar.student{border-radius:50%}.chat-head .chat-avatar{width:34px;height:34px}.chat-presence{position:absolute;right:-1px;bottom:-1px;width:11px;height:11px;border-radius:50%;background:#22a35a;box-shadow:0 0 0 2px var(--surface)}.chat-presence.off{background:#c3ccd0}.chat-row.offline .chat-avatar{color:var(--muted)}.chat-row-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.chat-row-top,.chat-row-bottom{display:flex;align-items:center;gap:8px}.chat-row-title{flex:1;min-width:0;overflow:hidden;font-size:14px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.chat-row-time{flex:none;color:var(--muted);font-size:11.5px}.chat-row-preview{flex:1;min-width:0;overflow:hidden;color:var(--muted);font-size:13px;text-overflow:ellipsis;white-space:nowrap}.chat-row.unread .chat-row-title{font-weight:700}.chat-row.unread .chat-row-preview{color:var(--text-2);font-weight:550}.chat-row.unread .chat-row-time{color:var(--accent-ink);font-weight:600}.chat-badge{flex:none;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--accent);color:var(--on-accent);font-size:11.5px;font-weight:700;line-height:20px;text-align:center}.chat-empty{margin:28px 20px;color:var(--muted);font-size:14px;line-height:1.5;text-align:center}.chat-error{margin:8px 12px;padding:8px 12px;border:1px solid var(--danger-border);border-radius:var(--radius);background:var(--danger-subtle);color:var(--danger);font-size:13px}.chat-foot{display:flex;align-items:center;gap:6px;margin:0;padding:10px 16px;border-top:1px solid var(--border);background:var(--surface-2);color:var(--muted);font-size:12px}.chat-messages{flex:1;min-height:0;overflow-y:auto;padding:12px 14px 16px;background:var(--surface-2)}.chat-stack{display:flex;flex-direction:column}.chat-older{align-self:center;margin-bottom:8px}.chat-day{width:fit-content;margin:14px auto 8px;padding:3px 10px;border-radius:999px;background:var(--surface);box-shadow:var(--shadow-xs);color:var(--muted);font-size:11.5px;font-weight:600}.chat-item{display:flex;flex-direction:column}.chat-message{display:flex;align-items:flex-end;gap:8px;max-width:88%;margin-top:10px}.chat-message.follows{margin-top:3px}.chat-message.mine{align-self:flex-end}.chat-face{display:grid;place-items:center;flex:none;width:28px;height:28px;border-radius:50%;background:var(--surface-3);color:var(--text-2);font-size:12px;font-weight:700}.chat-message.follows .chat-face{visibility:hidden}.chat-face.staff{background:linear-gradient(135deg,#5fc2e2,#2f9fc4);color:var(--on-accent)}.chat-message:not(.follows) .chat-face{align-self:flex-start;margin-top:18px}.chat-body{position:relative;min-width:0;display:flex;flex-direction:column;align-items:flex-start}.chat-message.mine .chat-body{align-items:flex-end}.chat-sender{display:flex;align-items:center;gap:6px;margin:0 0 3px 4px;color:var(--text-2);font-size:12px;font-weight:650}.chat-role{padding:0 7px;border-radius:999px;background:var(--accent-subtle);color:var(--accent-ink);font-size:10.5px;font-weight:700;line-height:17px}.chat-bubble{min-width:0;padding:8px 12px 6px;border:1px solid var(--border);border-radius:16px;background:var(--surface);box-shadow:var(--shadow-xs);font-size:14px;line-height:1.45;overflow-wrap:anywhere}.chat-message:not(.mine):not(.follows) .chat-bubble{border-top-left-radius:6px}.chat-message.mine .chat-bubble{border-color:transparent;background:var(--accent);color:var(--on-accent)}.chat-message.mine:not(.follows) .chat-bubble{border-top-right-radius:6px}.chat-message.deleted .chat-bubble{border-style:dashed;background:none;box-shadow:none;color:var(--muted)}.chat-message.mine.deleted .chat-bubble{border-color:var(--border-strong)}.chat-bubble p{margin:0;white-space:pre-wrap}.chat-bubble em{font-size:13px}.chat-time{display:block;margin-top:2px;color:var(--muted);font-size:10.5px;text-align:right}.chat-message.mine .chat-time{color:#0d1a1d99}.chat-image{display:block;margin:0 -8px 6px}.chat-bubble>.chat-image:first-child{margin-top:-4px}.chat-image img{display:block;max-width:100%;max-height:260px;width:auto;height:auto;border-radius:11px;background:var(--surface-3);object-fit:contain;cursor:zoom-in}.chat-delete{position:absolute;top:50%;right:-34px;transform:translateY(-50%);opacity:0;transition:opacity .12s}.chat-message.mine .chat-delete{right:auto;left:-34px}.chat-message:hover .chat-delete,.chat-delete:focus-visible{opacity:1}.chat-confirm{display:flex;align-items:center;gap:6px;margin-top:6px;padding:6px 6px 6px 10px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-sm);color:var(--text-2);font-size:12.5px}.chat-readonly{display:flex;align-items:center;justify-content:center;gap:6px;margin:0;padding:14px 16px;border-top:1px solid var(--border);color:var(--muted);font-size:13px}.chat-form{display:flex;flex-direction:column;gap:8px;padding:10px 12px 12px;border-top:1px solid var(--border);background:var(--surface)}.chat-composer{display:flex;align-items:flex-end;gap:4px;padding:4px;border:1px solid var(--border-strong);border-radius:14px;background:var(--surface);transition:border-color .12s,box-shadow .12s}.chat-composer:focus-within{border-color:var(--accent);box-shadow:var(--ring)}.chat-composer .icon-button{width:36px;height:36px;border-radius:10px}.chat-composer textarea{flex:1;min-height:36px;max-height:140px;padding:8px 4px;resize:none;field-sizing:content;border:0;background:none;font:inherit;font-size:14px;line-height:1.4}.chat-composer textarea:focus{outline:none}.chat-composer .btn{width:36px;height:36px;padding:0;border-radius:10px}.chat-attachment{position:relative;align-self:flex-start}.chat-attachment img{display:block;max-width:160px;max-height:110px;border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.chat-attachment .icon-button{position:absolute;top:-8px;right:-8px;width:22px;height:22px;border-radius:50%;background:var(--chrome);color:#fff;box-shadow:var(--shadow-sm)}.chat-attachment .icon-button:hover{background:var(--danger);color:#fff}.chat-drop{position:absolute;inset:66px 10px 10px;display:grid;place-items:center;border:2px dashed var(--accent);border-radius:var(--radius-lg);background:#e8f6fbeb;color:var(--accent-ink);font-size:15px;font-weight:650;pointer-events:none}.chat-bubble code{padding:1px 5px;border-radius:5px;background:var(--surface-3);font-family:var(--mono);font-size:12.5px}.chat-message.mine .chat-bubble>p code{background:#ffffff73}.chat-bubble>p+p,.chat-bubble>p+.code-snippet,.chat-bubble>.code-snippet+p{margin-top:6px}.chat-message:has(.code-snippet){max-width:100%}.chat-message:has(.code-snippet) .chat-body{flex:1;align-items:stretch}.chat-message:has(.code-snippet) .chat-bubble{width:100%}.code-snippet{position:relative;margin:6px -6px 2px;overflow:hidden;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--text)}.code-snippet-tools{position:absolute;top:4px;right:4px;display:flex;align-items:center;gap:4px}.code-snippet-language{padding:0 6px;color:var(--muted);font-size:11px;font-weight:650}.code-snippet-copy{display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 8px;border:1px solid var(--border);border-radius:6px;background:#ffffffeb;color:var(--text-2);font:inherit;font-size:11.5px;font-weight:600;cursor:pointer;opacity:.85;transition:opacity .12s,background-color .12s}.code-snippet:hover .code-snippet-copy,.code-snippet-copy:focus-visible,.code-snippet-copy.copied{opacity:1}.code-snippet-copy:hover{background:var(--surface-3);color:var(--text)}.code-snippet-copy:focus-visible{outline:none;box-shadow:var(--ring)}.code-snippet-copy.copied{border-color:var(--success-border);color:var(--success)}.code-snippet pre{margin:0;padding:9px 10px 10px;overflow-x:auto;font-family:var(--mono);font-size:12.5px;line-height:1.55;tab-size:2}.code-snippet pre code{padding:0;border-radius:0;background:none;font-size:inherit;white-space:pre}.hl-keyword{color:#cf222e}.hl-type{color:#953800}.hl-function{color:#8250df}.hl-string{color:#0a3069}.hl-number,.hl-property{color:#0550ae}.hl-comment{color:#6e7781;font-style:italic}.pet-code .hl-keyword{color:#ff7b72}.pet-code .hl-type{color:#ffa657}.pet-code .hl-function{color:#d2a8ff}.pet-code .hl-string{color:#a5d6ff}.pet-code :is(.hl-number,.hl-property){color:#79c0ff}.pet-code .hl-comment{color:#8b949e}@media(max-width:900px){.chat-drawer{top:calc(var(--chat-top, 56px) + 6px);right:6px;bottom:6px;width:calc(100vw - 12px);border-radius:14px}.chat-message{max-width:92%}.chat-delete{position:static;transform:none;opacity:1;align-self:flex-end}}@media(prefers-reduced-motion:reduce){.chat-drawer{animation:none}}@media(max-width:600px){.topbar{gap:6px 8px;padding:6px 10px;min-height:52px}.topbar-left{flex:1 1 0;min-width:0;gap:6px}.topbar .brand-button{flex:none}.nav-tabs{min-width:0;overflow-x:auto;scrollbar-width:none}.nav-tabs::-webkit-scrollbar{display:none}.nav-tab{flex:none;padding:0 9px}.topbar .account{flex:none;margin-left:0;gap:4px}.topbar .toolbar{order:3;flex:1 1 100%;flex-wrap:nowrap;gap:6px}.topbar .toolbar .btn{flex:none;padding:0 10px}.board-select{flex:1 1 auto;min-width:0}.board-select select{width:100%;min-width:0}.board-hint,.tool-label{display:none}:is(.workspace,.workspace.with-explorer,.files-page,.files-page.single,.lessons-page,.lessons-page.lesson-manager,.lessons-page.single,.boards-page,.boards-page.single,.live-page,.live-page.single,.live-page.with-activity,.live-page.with-activity.single){grid-template-columns:minmax(0,1fr);grid-template-rows:none;grid-auto-rows:max-content;align-content:start;gap:10px;padding:10px;overflow-y:auto;overscroll-behavior:contain}:is(.workspace,.files-page,.lessons-page,.boards-page,.live-page)>.activity-bar{grid-row:auto;width:auto;flex-direction:row;justify-content:flex-start;padding:4px}.lessons-list,.boards-list,.live-users{max-height:45vh}.files-trees{grid-template-rows:max-content max-content}.files-trees>*{max-height:40vh}.workspace .explorer{max-height:200px}.workspace .editor-pane{height:62vh;min-height:320px}.workspace .side-pane{height:45vh;min-height:260px}:is(.files-detail,.lesson-preview,.board-stage,.live-page>.live-empty,.live-page>.live-view){height:75vh;min-height:360px}:is(.files-detail:has(>.live-empty),.lesson-preview:has(>.live-empty),.board-stage:has(>.board-none),.live-page>.live-empty){height:auto;min-height:180px}.page-toolbar .btn{padding:0 10px}.page-toolbar.code-bar{padding:8px 10px}}
