:root{--color-bg: #f4f2ee;--color-bg-panel: #fbfaf8;--color-bg-overlay: #eef1f5;--color-border-overlay: #c9d2dc;--color-bg-explanation: #e6f1ea;--color-border-explanation: #b6d4c3;--color-bg-deep: #ece8e1;--color-border: #d9d3c8;--color-text: #24211c;--color-text-soft: #6b655a;--color-field: #ffffff;--color-accent: #2f6f4f;--color-accent-hover: #26583f;--color-accent-text: #ffffff;--color-accent-soft: #e3efe8;--color-ok: #2c764b;--color-ok-hover: #26663f;--color-step1-bg: #d2e7db;--color-step1-bg-hover: #c0dccd;--color-step1-fg: #1d4f36;--color-diff-bg: #ffdf8a;--color-diff-text: #3a2d05;--color-diff-border: #b98c12;--color-error: #b23b2e;--color-error-soft: #f8eae7;--color-error-background: #f6e2df;--color-info: #2c5f86;--color-info-background: #e3eef6;--team-fg: #ffffff;--team-wash: rgba(0, 0, 0, .32);--color-warning: #866020;--color-hit-bg: #ffe9a8;--color-hit-now-bg: #ffc233;--color-hit-fg: #3a2f10;--color-terminal-bg: #1e1b16;--color-terminal-text: #eae6dc;--color-terminal-input: #9fd4b6;--color-terminal-muted: #a9a397;--hl-kw: #a626a4;--hl-type: #0a6c74;--hl-str: #2f6f4f;--hl-num: #8a5a1a;--hl-com: #6b655a;--hl-pre: #2c5f86;--hl-punct: #4a5568;--lock-on-bg: #fcd34d;--lock-on-fg: #5c3d07;--live-cursor: #c2410c;--live-selection: #fde2c4;--live-line: #fdf0e3;--font-ui: "Atkinson Hyperlegible Next", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "Atkinson Hyperlegible Mono", "SFMono-Regular", ui-monospace, "JetBrains Mono", "Fira Mono", Consolas, monospace;--fs-small: .82rem;--fs-normal: .95rem;--fs-large: 1.2rem;--wall-base: max(1.1rem, 2.2vh);--wall-text: max(1.3rem, 2.6vh);--wall-header: max(1.6rem, 3.2vh);--wall-clock-room: 14rem;--wall-large: max(2.3rem, 4.6vh);--wall-clock: max(3.7rem, 7.4vh);--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 3rem;--radius: 10px;--radius-small: 6px;--shadow: 0 1px 3px rgba(40, 34, 24, .12);--ring: 0 0 0 3px var(--color-accent-soft)}@media(prefers-color-scheme:dark){:root{--color-bg: #1a1815;--color-bg-panel: #232019;--color-bg-overlay: #2b3138;--color-border-overlay: #3f4954;--color-bg-explanation: #1d2c24;--color-border-explanation: #33513f;--color-bg-deep: #14120f;--color-border: #38332b;--color-text: #ece8df;--color-text-soft: #a49d8f;--color-field: #14120f;--color-accent: #4f9e73;--color-accent-hover: #63b184;--color-accent-text: #10130f;--color-accent-soft: #1d2a22;--color-ok: #5aa877;--color-ok-hover: #6dbc8a;--color-step1-bg: #24352c;--color-step1-bg-hover: #2e4437;--color-step1-fg: #9fd4b6;--color-diff-bg: #5c4a12;--color-diff-text: #ffeab0;--color-diff-border: #c9a63f;--color-error: #d9695c;--color-error-soft: #33201d;--color-error-background: #2d1b18;--color-info: #8ab4e8;--color-info-background: #223543;--color-warning: #d9a441;--color-hit-bg: #5c4a17;--color-hit-now-bg: #a8831f;--color-hit-fg: #fdf3d8;--color-terminal-bg: #14120f;--color-terminal-text: #ece8df;--color-terminal-input: #9fd4b6;--color-terminal-muted: #a9a397;--hl-kw: #d9a3d6;--hl-type: #6fc7c9;--hl-str: #93c98f;--hl-num: #e0a860;--hl-com: #a49d8f;--hl-pre: #8ab4e8;--hl-punct: #cfc8bb;--lock-on-bg: #a16207;--lock-on-fg: #fff7d6;--live-cursor: #fb923c;--live-selection: #4a220e;--live-line: #2b1f16}}@font-face{font-family:Atkinson Hyperlegible Next;font-style:normal;font-display:swap;font-weight:200 800;src:url(./atkinson-hyperlegible-next-latin-ext-wght-normal-C6vrW8VD.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:Atkinson Hyperlegible Next;font-style:normal;font-display:swap;font-weight:200 800;src:url(./atkinson-hyperlegible-next-latin-wght-normal-BcXVPD7q.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:Atkinson Hyperlegible Next;font-style:italic;font-display:swap;font-weight:200 800;src:url(./atkinson-hyperlegible-next-latin-ext-wght-italic-Cigfgs4r.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:Atkinson Hyperlegible Next;font-style:italic;font-display:swap;font-weight:200 800;src:url(./atkinson-hyperlegible-next-latin-wght-italic-DC5MiAaX.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:Atkinson Hyperlegible Mono;font-style:normal;font-display:swap;font-weight:200 800;src:url(./atkinson-hyperlegible-mono-latin-ext-wght-normal-CXgNM06D.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:Atkinson Hyperlegible Mono;font-style:normal;font-display:swap;font-weight:200 800;src:url(./atkinson-hyperlegible-mono-latin-wght-normal-CoA7y8X5.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:Atkinson Hyperlegible Mono;font-style:italic;font-display:swap;font-weight:200 800;src:url(./atkinson-hyperlegible-mono-latin-ext-wght-italic-CM_msFld.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:Atkinson Hyperlegible Mono;font-style:italic;font-display:swap;font-weight:200 800;src:url(./atkinson-hyperlegible-mono-latin-wght-italic-BkGwxmNN.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}/**
 * Copyright (c) 2014 The xterm.js authors. All rights reserved.
 * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
 * https://github.com/chjj/term.js
 * @license MIT
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 *
 * Originally forked from (with the author's permission):
 *   Fabrice Bellard's javascript vt100 for jslinux:
 *   http://bellard.org/jslinux/
 *   Copyright (c) 2011 Fabrice Bellard
 *   The original design remains. The terminal itself
 *   has been extended to include xterm CSI codes, among
 *   other features.
 */.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;inset:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;inset:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{user-select:text;white-space:pre}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;height:100%}body{font-family:var(--font-ui);font-size:var(--fs-normal);color:var(--color-text);background:var(--color-bg);-webkit-text-size-adjust:100%}button,input,select,textarea{font-family:inherit}.app{display:flex;flex-direction:column;min-height:100vh}.icon{display:inline-block;width:1em;height:1em;vertical-align:-.125em;flex:none}.topbar{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-2) var(--sp-4);background:var(--color-bg-panel);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:5;flex-wrap:wrap}.topbar__room{color:var(--color-text-soft);font-family:var(--font-mono)}.topbar__chip,.topbar__activity{display:inline-flex;align-items:baseline;gap:var(--sp-2);padding:var(--sp-1) var(--sp-3);border-radius:999px;background:var(--color-bg-deep);border:1px solid var(--color-border)}.topbar__chip-cap,.topbar__activity-label{font-size:var(--fs-small);color:var(--color-text-soft);text-transform:uppercase;letter-spacing:.04em}.topbar__chip-value{font-family:var(--font-mono);font-size:var(--fs-large);font-weight:700;font-variant-numeric:tabular-nums}.topbar__activity-name{font-weight:700}.topbar__clock{margin-left:auto;display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1) var(--sp-2);font-variant-numeric:tabular-nums}.topbar__clock-cap{font-size:var(--fs-small);color:var(--color-text-soft);text-transform:uppercase;letter-spacing:.04em}.topbar__clock strong{font-family:var(--font-mono);font-size:var(--fs-large)}.topbar__clock-sep{color:var(--color-text-soft)}.topbar__clock-left[hidden]+.topbar__clock-sep{display:none}#timer.is-low,.topbar__exam.is-over .topbar__chip-value{color:var(--color-error)}.topbar__exam.is-done .topbar__chip-value{color:var(--color-ok)}.topbar__exam.is-done.is-over .topbar__chip-value{color:var(--color-error)}.topbar__lesson{display:inline-flex;align-items:center;gap:var(--sp-1)}.topbar__lesson-input{font:inherit;font-family:var(--font-mono);font-size:var(--fs-small);padding:1px var(--sp-1);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg);color:var(--color-text);width:8.5ch}.topbar__lesson:not(.is-set) .topbar__lesson-input:not(:focus){border-style:dashed;color:var(--color-text-soft)}.topbar__lesson-input:focus-visible{outline:none;box-shadow:var(--ring)}.topbar__lesson-left{font-family:var(--font-mono);font-size:var(--fs-small);color:var(--color-text-soft)}.topbar__lesson-left.is-warn{color:var(--color-warning);font-weight:700}.topbar__lesson-left.is-urgent,.topbar__lesson-left.is-over{color:var(--color-error);font-weight:700}.topbar__lesson.is-set .topbar__clock-cap,.topbar__lesson.is-set .topbar__lesson-input,.topbar__lesson.is-set .help-dot{display:none}.topbar__lesson.is-set .topbar__lesson-left{cursor:pointer;text-decoration:underline dotted}.topbar__menu{position:relative}.menu{position:absolute;right:0;top:calc(100% + 6px);z-index:40;min-width:15rem;display:flex;flex-direction:column;padding:var(--sp-2);gap:2px;background:var(--color-bg-panel);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow)}.menu__item{font:inherit;text-align:left;padding:var(--sp-2) var(--sp-3);border:none;border-radius:var(--radius-small);background:none;color:var(--color-text);cursor:pointer;min-height:36px}.menu__item:hover:not(:disabled){background:var(--color-bg-deep)}.menu__item:disabled{opacity:.45;cursor:not-allowed}.menu__item:focus-visible{outline:none;box-shadow:var(--ring)}.menu__sep{border:none;border-top:1px solid var(--color-border);margin:var(--sp-1) 0;width:100%}.menu__label{font-size:var(--fs-small);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-soft);padding:var(--sp-1) var(--sp-3) 0}.field--est span{color:var(--color-text-soft)}.field--est input{max-width:8ch}.ex-precheck-opts .field--est{flex-wrap:wrap}.ex-precheck-opts .ex-pc-grace{flex:none;width:7ch}.time-warn{max-width:460px}.time-warn__title{margin:0 0 var(--sp-2)}.time-warn__body{margin:0 0 var(--sp-3);color:var(--color-text)}.time-warn__actions{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-bottom:var(--sp-4)}.time-warn__actions:empty{display:none}.time-warn__foot{display:flex;justify-content:flex-end;gap:var(--sp-2)}.start-classes{max-width:520px;text-align:left}.start-classes__title{margin:0 0 var(--sp-2)}.start-classes__intro{margin:0 0 var(--sp-3);color:var(--color-text)}.start-classes__list{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-bottom:var(--sp-3);max-height:40vh;overflow:auto}.start-classes__class{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border:1px solid var(--color-border);border-radius:999px;cursor:pointer}.start-classes__n{color:var(--color-text-soft);font-size:var(--fs-small)}.start-classes__rollcall{display:flex;align-items:center;gap:var(--sp-2);font-weight:600;cursor:pointer}.start-classes__rollcall input:disabled+span{color:var(--color-text-soft)}.start-classes__hint{margin:var(--sp-1) 0 var(--sp-4);color:var(--color-text-soft);font-size:var(--fs-small)}.start-classes__foot{display:flex;justify-content:flex-end;gap:var(--sp-2);flex-wrap:wrap}.start-continue{margin:0 0 var(--sp-4);padding-top:var(--sp-3);border-top:1px solid var(--color-border)}.start-continue__title{margin:0 0 var(--sp-2);font-size:1rem}.start-continue__list{display:flex;flex-direction:column;gap:var(--sp-2);max-height:40vh;overflow:auto}.start-continue__line{display:flex;align-items:flex-start;gap:var(--sp-2);cursor:pointer}.start-continue__line input{flex:none;margin-top:3px}.start-continue__text{overflow-wrap:anywhere}.start-continue__details{margin:var(--sp-1) 0 0;padding-left:calc(var(--sp-2) + 1.6rem);color:var(--color-text-soft);font-size:var(--fs-small)}.start-continue__how,.start-continue__why{margin:var(--sp-2) 0 0;color:var(--color-text-soft);font-size:var(--fs-small)}.start-continue__why{color:var(--color-text)}.roominfo__continued{color:var(--color-text-soft);font-size:var(--fs-small);overflow-wrap:anywhere}.catalog__retention{margin:0 0 var(--sp-3);padding:var(--sp-2) var(--sp-3);border-left:3px solid var(--color-warning);background:var(--color-bg-deep);font-size:var(--fs-small)}.catalog__retention[hidden]{display:none}.catalog__sync{margin:0 0 var(--sp-3);padding:var(--sp-2) var(--sp-3);border-left:3px solid var(--color-border);background:var(--color-bg-deep);font-size:var(--fs-small)}.catalog__sync.is-warn{border-left-color:var(--color-warning)}.catalog__sync[hidden]{display:none}.catalog__sync-warn{font-weight:600}.admin__dates{display:flex;flex-wrap:wrap;gap:var(--sp-2);width:100%}.admin__date{display:inline-flex;align-items:center;gap:4px}.admin__row{flex-basis:100%;margin:0}.admin__weeks{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}.admin__weeks input,.admin__date-input{padding:5px 8px;border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-field);color:inherit;font:inherit}.admin__weeks input{width:5em}.admin__weeks input[aria-invalid=true]{border-color:var(--color-warning)}.admin__label{font-size:var(--fs-small);color:var(--color-text-soft)}.admin__preview{font-size:var(--fs-small)}.admin__preview:empty{display:none}.admin__preview.is-warn{border-left:3px solid var(--color-warning);padding-left:var(--sp-2)}.admin__status{margin-top:var(--sp-2)}.panel{background:var(--color-bg-panel);border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column}.panel__bar{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border)}.panel__title{font-size:var(--fs-small);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-soft);margin:0}.panel__actions{margin-left:auto;display:flex;align-items:center;gap:var(--sp-2)}.panel--editor .panel__actions{row-gap:2px;flex-wrap:wrap}.student-layout{--termh: 260px;--promptw: clamp(320px, 32vw, 560px);display:grid;gap:var(--sp-3);padding:var(--sp-3);flex:1;grid-template-columns:minmax(0,1fr);grid-template-areas:"prompt" "editor" "split" "terminal"}.panel--prompt{grid-area:prompt}.panel--prompt .panel__bar{position:sticky;top:0;z-index:1;background:var(--color-bg-panel)}.panel--prompt .panel__bar{flex-wrap:wrap;gap:var(--sp-1)}.panel--prompt{scroll-padding-top:var(--prompt-bar-h, 0px)}.panel--editor{grid-area:editor;min-height:240px;position:relative}.panel--terminal{grid-area:terminal;min-height:200px;display:flex;flex-direction:column}.terminal-body{flex:1;min-height:0;display:flex;flex-direction:column;overflow-y:auto}.student-layout.is-term-collapsed .terminal-body{display:none}.student-layout.is-term-collapsed .panel--terminal{min-height:0;height:auto}.student-layout.is-term-collapsed .splitter:not(.splitter--v){display:none}.term-toggle{border:none;background:none;cursor:pointer;font:inherit;color:var(--color-text-soft);padding:0 var(--sp-2) 0 0;line-height:1}.term-toggle:focus-visible{outline:none;box-shadow:var(--ring);border-radius:var(--radius-small)}.term-status{font-size:var(--fs-small);color:var(--color-text-soft);font-family:var(--font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:40em}.splitter{grid-area:split;display:none;height:1px;cursor:row-resize;background:var(--color-border);position:relative;z-index:3}.splitter:after{content:"";position:absolute;inset:-4px 0}.splitter:before{content:"";position:absolute;left:50%;top:-1px;width:32px;height:3px;margin-left:-16px;border-radius:2px;background:var(--color-text-soft);opacity:.45}.splitter:hover,.splitter.is-dragging{background:var(--color-accent);box-shadow:0 0 0 1px var(--color-accent)}.splitter:hover:before,.splitter.is-dragging:before{opacity:0}.splitter:focus-visible{outline:none;background:var(--color-accent);box-shadow:0 0 0 1px var(--color-accent),0 0 0 4px var(--color-accent-soft)}.splitter--v{grid-area:vsplit;height:auto;width:1px;cursor:col-resize}.splitter--v:after{inset:0 -5px 0 -3px}.splitter--v:before{left:-1px;top:50%;width:3px;height:32px;margin:-16px 0 0}.app--student{min-height:0;height:var(--apph, 100dvh);overflow:hidden}@media(min-width:900px){.student-layout{grid-template-columns:var(--promptw) 1px minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto auto;grid-template-areas:"prompt vsplit editor" "prompt vsplit split" "prompt vsplit terminal";flex:1;min-height:0;gap:0;padding:0}.app--student .panel{min-height:0}.student-layout>.panel{border:0;border-radius:0;isolation:isolate}.student-layout>.panel--editor:has(.cm-tooltip){z-index:4}.student-layout.is-term-collapsed .panel--terminal{border-top:1px solid var(--color-border)}.student-layout .panel--prompt .panel__bar,.student-layout .panel--editor .panel__bar{min-height:42px;padding:4px var(--sp-3)}.student-layout .panel--editor .panel__bar .btn{min-height:30px;padding:3px var(--sp-3)}.student-layout .panel--editor .panel__bar .btn--sm{min-height:28px;padding:2px var(--sp-2)}.student-layout .panel--terminal .panel__bar{min-height:32px;padding:2px var(--sp-3)}.student-layout .panel--editor .filetabs{flex:0 20 auto;min-width:5.5em}.app--student .topbar{padding:var(--sp-1) var(--sp-3)}.app--student .footer{padding:2px var(--sp-3)}.panel--prompt{overflow:auto}.prompt-foot{position:sticky;bottom:0;background:var(--color-bg-panel)}.prompt-foot:not(:first-child){border-top:1px solid var(--color-border)}.panel--editor{min-height:200px}.panel--terminal{height:var(--termh);min-height:0}.splitter{display:block}}.run-actions{display:contents}.panel--editor .panel__actions #stuckBtn,.panel--editor .panel__actions>.help-dot{order:1}.panel--editor .panel__actions #testResult,.panel--editor .panel__actions #refSolutionBtn,.panel--editor .panel__actions #explainBtn,.panel--editor .panel__actions #outputCheck,.panel--editor .panel__actions #testRuns{order:2}#stepperBtn{display:inline-flex;align-items:center;gap:4px}#stepperBtn[hidden]{display:none}@media(max-width:1399.98px){.stepper-btn__label{display:none}}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}@media(min-width:900px){.student-layout .panel--terminal .panel__bar{min-height:42px;padding:4px var(--sp-3)}.run-actions-slot{margin-left:auto;display:flex;align-items:center;min-width:0}.run-actions-slot .run-actions{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;justify-content:flex-end;row-gap:4px}.run-actions-slot .run-actions>*{flex:none}.run-actions-slot .btn{min-height:30px;padding:3px var(--sp-3);white-space:nowrap}.run-actions-slot .btn--sm{min-height:28px;padding:2px var(--sp-2)}.student-layout .panel--terminal .term-status{flex:1 1 0;min-width:0}.run-actions-slot #runBtn{order:0}.run-actions-slot #testHint{order:1}.run-actions-slot #testResult{order:2}.run-actions-slot #testRuns{order:3}.run-actions-slot #outputCheck{order:4}.run-actions-slot #doneHint{order:5}.run-actions-slot #refSolutionBtn{order:6}.run-actions-slot .testresult{max-width:24em;white-space:normal;line-height:1.25}.run-actions-slot .hinted[data-hint]:hover:after{left:auto;right:0;transform:none}.student-layout .panel--editor .panel__actions #explainBtn{order:0}}.app--student .footer{gap:var(--sp-3);min-height:28px;flex-wrap:nowrap}.app--student .footer__version{flex:1 1 0;min-width:0;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app--student .footer .lang-toggle{flex:none;white-space:nowrap}.footer__work{display:flex;align-items:center;gap:var(--sp-2);min-width:0;flex:0 1 auto;font-family:var(--font-ui)}.footer__work>*{flex:none}.footer__work>.savestate{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app--student .footer:has(.savestate.is-pending) .footer__version{display:none}.savestate__why{display:inline-flex;align-items:center;gap:var(--sp-1);min-height:24px;padding:0 var(--sp-1);border:0;border-radius:var(--radius-small);background:none;color:inherit;font:inherit;font-weight:700;cursor:pointer}.savestate__why:after{content:"?";content:"?" / "";display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border:1px solid currentColor;border-radius:999px;font-size:.7rem;line-height:1}.savestate__why:hover{text-decoration:underline;text-underline-offset:2px}.savestate__why:focus-visible{outline:none;box-shadow:var(--ring)}.footer .savestate.has-why{overflow:visible}.footer__work .btn--sm{min-height:24px;padding:0 var(--sp-2)}.app--student .footer .lang-toggle{font:inherit;padding:2px var(--sp-1);border:0;background:none;color:var(--color-text-soft);cursor:pointer}.app--student .footer .lang-toggle:hover{color:var(--color-text);text-decoration:underline;text-underline-offset:2px}.app--student .footer .lang-toggle:focus-visible{outline:none;box-shadow:var(--ring)}.student-layout .expected,.student-layout .student-hints{margin:0;border:0;border-top:1px solid var(--color-border);border-radius:0;background:none;padding:var(--sp-2) var(--sp-3)}.student-layout .student-hints{box-shadow:inset 3px 0 var(--color-warning)}.student-layout .panel__title{font-family:var(--font-mono);text-transform:lowercase;letter-spacing:0;font-weight:700;color:var(--color-text)}.student-layout .badge{border-radius:3px;padding:1px 6px;text-transform:lowercase;letter-spacing:0;font-family:var(--font-mono);font-weight:600}.app--student .btn{border-radius:3px}.app--student .topbar__chip{border:0;border-left:1px solid var(--color-border);border-radius:0;background:none;padding:0 0 0 var(--sp-3)}.app--student .topbar__chip-cap{text-transform:none;letter-spacing:0}@media(min-width:900px){.student-layout .panel__bar,.student-layout .panel--prompt .panel__bar{background:var(--color-bg)}.student-layout .panel--editor .panel__bar{padding-bottom:0;align-items:stretch;border-bottom:0;box-shadow:inset 0 -1px var(--color-border)}.student-layout .panel--editor .filetabs{align-items:flex-end;gap:0}.student-layout .panel--editor .filetab{height:36px;padding:0 var(--sp-3);border:1px solid transparent;border-top:2px solid transparent;border-bottom:0;border-radius:0;background:none}.student-layout .panel--editor .filetab.is-active{background:var(--color-bg-panel);border-color:var(--color-border);border-top-color:var(--color-accent);border-bottom:0}.student-layout .panel--editor .filetab.has-error{border-top-color:var(--color-error)}.student-layout .panel--editor .panel__actions{align-self:center;padding-bottom:2px}}@media(max-width:899.98px){.student-layout>.paneswitch{background:var(--color-bg);padding:0 var(--sp-1);gap:0}.student-layout .paneswitch__btn{border:0;border-radius:0}.student-layout .paneswitch__btn.is-active{background:none;box-shadow:inset 0 -3px var(--color-accent)}}.paneswitch{display:none;grid-area:switch;gap:3px;padding:3px;background:var(--color-bg-panel);border:1px solid var(--color-border);border-radius:var(--radius)}.paneswitch__btn{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-height:40px;padding:0 var(--sp-2);border:1px solid transparent;border-radius:var(--radius-small);background:none;color:var(--color-text-soft);font:inherit;font-weight:600;cursor:pointer}.paneswitch__btn.is-active{background:var(--color-bg-deep);border-color:var(--color-border);color:var(--color-text)}.paneswitch__btn:focus-visible{outline:none;box-shadow:var(--ring)}@media(max-width:899.98px){.paneswitch{display:flex}.student-layout{gap:1px;padding:0;min-height:0;background:var(--color-border);grid-template-areas:"switch" "prompt" "editor";grid-template-rows:auto minmax(0,1fr) auto}.student-layout>.panel,.student-layout>.paneswitch{border:0;border-radius:0}.student-layout[data-pane=editor]{grid-template-areas:"switch" "editor";grid-template-rows:auto minmax(0,1fr)}.student-layout[data-pane=term]{grid-template-areas:"switch" "terminal" "editor";grid-template-rows:auto minmax(0,1fr) auto}.student-layout>.panel{min-height:0}.student-layout[data-pane=prompt] .panel--prompt,.student-layout[data-pane=term] .panel--terminal{overflow:auto}.student-layout[data-pane=prompt] .panel--terminal,.student-layout[data-pane=editor] .panel--prompt,.student-layout[data-pane=editor] .panel--terminal,.student-layout[data-pane=term] .panel--prompt{display:none}.student-layout:not([data-pane=editor]) .editor,.student-layout:not([data-pane=editor]) .keybar{display:none}.student-layout .editor{min-height:0}.app--student.is-short .filetabs,.app--student.is-short .footer,.app--student.is-short .panel--editor .help-dot,.app--student.is-short .panel--editor .testruns,.app--student.is-short .panel--editor .outputcheck,.app--student.is-short .panel--editor .testresult,.app--student.is-short .panel--editor #doneHint,.app--student.is-short .panel--editor .btn--stuck{display:none}.app--student .footer{flex-wrap:nowrap;gap:var(--sp-2);padding:2px var(--sp-2)}.app--student .footer__version{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.app--student .lang-toggle{white-space:nowrap}.student-layout .term-toggle{display:none}.student-layout.is-term-collapsed .terminal-body{display:flex}.student-layout.is-term-collapsed .panel--terminal{min-height:0;height:auto}.app--student .topbar{gap:var(--sp-4);padding:var(--sp-1) var(--sp-2)}.panel--prompt .panel__title{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.panel--prompt .panel__bar{position:static}.panel--prompt{scroll-padding-top:0}}.connbar{display:none;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-bottom:2px solid var(--color-warning);background:var(--color-bg-deep);font-size:var(--fs-small);line-height:1.4}.connbar:not([hidden]){display:flex}.connbar.is-back{border-bottom-color:var(--color-ok)}.connbar.is-gone{border:2px solid var(--color-warning);border-left-width:6px;font-weight:600}.connbar.is-blocked{border-left-width:10px}.connbar__msg{flex:1 1 auto}.connbar__actions{display:flex;gap:var(--sp-2);flex:none}.savestate.is-pending{color:var(--color-warning)}.laptophint{display:none;align-items:flex-start;gap:var(--sp-2);margin:0;padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border);background:var(--color-bg-deep);color:var(--color-text-soft);font-size:var(--fs-small);line-height:1.4}@media(max-width:899.98px){.student-layout[data-pane=editor] .laptophint{display:flex}.app--student.is-short .student-layout[data-pane=editor] .laptophint{display:none}}.laptophint__x{margin-left:auto;flex:none;min-width:32px;min-height:32px;padding:0;border:0;border-radius:var(--radius-small);background:none;color:inherit;font:inherit;cursor:pointer}.laptophint__x:focus-visible{outline:none;box-shadow:var(--ring)}.lockhint{margin:0;padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border);background:var(--color-bg-deep);color:var(--color-text-soft);font-size:var(--fs-small);line-height:1.4}.prompt{padding:var(--sp-3);line-height:1.5}.prompt,.screen-prompt,.prompt-preview__text,.steppreview__prose{white-space:pre-wrap}.prompt[data-format=markdown],.screen-prompt[data-format=markdown],.prompt-preview__text[data-format=markdown],.steppreview__prose[data-format=markdown]{white-space:normal}[data-nocopy=true]{user-select:none;-webkit-user-select:none}.reference{border-top:1px solid var(--color-border)}.reference summary{padding:var(--sp-2) var(--sp-3);cursor:pointer;color:var(--color-text-soft);font-size:var(--fs-small)}input,textarea,select,[contenteditable=true]{caret-color:currentColor}.editor{flex:1;min-height:0;overflow:hidden}.cm-editor{height:100%;font-family:var(--font-mono);font-size:var(--fs-normal)}.cm-editor.cm-focused{outline:none}.editor.is-locked{opacity:.6;pointer-events:none}.keybar{display:flex;gap:var(--sp-1);padding:var(--sp-1);flex-wrap:wrap;border-top:1px solid var(--color-border);background:var(--color-bg-deep)}.keybar button{font-family:var(--font-mono);min-width:34px;min-height:34px;border:1px solid var(--color-border);background:var(--color-bg-panel);color:var(--color-text);border-radius:var(--radius-small);font-size:var(--fs-normal)}@media(min-width:900px){.keybar{display:none}}.terminal:not(.xterm){flex:1;min-height:160px;background:var(--color-terminal-bg);overflow:hidden}.terminal.xterm{padding:var(--sp-2)}.compilehint{padding:0 var(--sp-3) var(--sp-2);font-size:var(--fs-small);color:var(--color-error);font-weight:600}.hintjump{margin-left:var(--sp-2);padding:0;border:0;background:none;cursor:pointer;font:inherit;color:inherit;text-decoration:underline;text-underline-offset:2px}.hintjump:after{content:" →"}.hintjump:hover,.hintjump:focus-visible{text-decoration-thickness:2px}.rawcompile{border-top:1px solid var(--color-border);background:var(--color-bg-deep)}.rawcompile summary{padding:var(--sp-2) var(--sp-3);cursor:pointer;color:var(--color-text-soft);font-size:var(--fs-small)}.rawcompile pre{margin:0;padding:var(--sp-3);font-family:var(--font-mono);font-size:var(--fs-small);overflow:auto;max-height:200px;white-space:pre-wrap}.btn{font:inherit;padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-small);border:1px solid var(--color-border);background:var(--btn-bg, var(--color-bg-panel));color:var(--btn-fg, var(--color-text));cursor:pointer;min-height:38px}.btn:hover{background:var(--btn-bg-hover, var(--color-bg-deep))}.btn:focus-visible{outline:none;box-shadow:var(--ring)}.btn--primary{--btn-bg: var(--color-accent);--btn-bg-hover: var(--color-accent-hover);--btn-fg: var(--color-accent-text);border-color:transparent;font-weight:600}.btn--primary:disabled{opacity:.5;cursor:not-allowed}.btn--ok{--btn-bg: var(--color-ok);--btn-bg-hover: var(--color-ok-hover);--btn-fg: var(--color-accent-text);border-color:transparent;font-weight:600}.btn--ok:disabled{opacity:.5;cursor:not-allowed}.btn--step1{--btn-bg: var(--color-step1-bg);--btn-bg-hover: var(--color-step1-bg-hover);--btn-fg: var(--color-step1-fg);border-color:transparent;font-weight:600}.btn--step1:disabled{opacity:.5;cursor:not-allowed}.btn--ghost{border-color:transparent;--btn-bg: transparent}.btn--quiet{--btn-fg: var(--color-text-soft);font-weight:400}.savestate{font-size:var(--fs-small);color:var(--color-text-soft)}.savestate.is-saved{color:var(--color-ok)}.btn--done{--btn-bg: var(--color-ok);--btn-bg-hover: var(--color-ok-hover);--btn-fg: var(--color-accent-text);border-color:transparent}.btn--sm{min-height:30px;padding:var(--sp-1) var(--sp-2);font-size:var(--fs-small)}.steps{display:flex;flex-wrap:wrap;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);margin-bottom:var(--sp-2);border-bottom:1px solid var(--color-border)}.steps__item{display:inline-flex;align-items:center;gap:var(--sp-2);font:inherit;padding:var(--sp-2) var(--sp-3);border:1px solid var(--color-border);border-radius:999px;background:var(--color-bg-panel);color:var(--color-text-soft);cursor:pointer;min-height:38px}.steps__item:hover:not(:disabled){background:var(--color-bg-deep)}.steps__item:focus-visible{outline:none;box-shadow:var(--ring)}.steps__n{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--color-bg-deep);font-size:var(--fs-small);font-weight:700}.steps__item.is-current{border-color:var(--color-accent);color:var(--color-text);font-weight:600}.steps__item.is-current .steps__n{background:var(--color-accent);color:var(--color-accent-text)}.steps__item.is-locked{opacity:.45;cursor:not-allowed}.steps__item--link{border-style:dashed;background:transparent}.admin,.attendance,.settings{background:var(--color-bg-overlay);border:1px solid var(--color-border-overlay);border-top-width:3px;border-radius:var(--radius) var(--radius) 0 0;box-shadow:0 -16px 40px #00000057}.lesson-head{display:flex;flex-wrap:wrap;gap:var(--sp-4);align-items:flex-end}.lesson-head__title{flex:1 1 22em}.lesson-head__plan{flex:0 0 auto}.lesson-head__plan input{width:7em}.lesson-plan-meta{display:flex;flex-wrap:wrap;gap:var(--sp-3);align-items:flex-end;margin-top:var(--sp-2)}.lesson-plan-meta input[type=date],.lesson-plan-meta input[type=time]{width:auto}.lesson-plan-meta__classes{flex:1 1 14em;min-width:0}.panel__titlenote{font-size:var(--fs-small);color:var(--color-text-soft);margin-left:auto}.lesson-overview{list-style:none;margin:var(--sp-3) 0;padding:0;display:flex;flex-direction:column;gap:var(--sp-2)}.lesson-overview__row{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg-panel)}.lesson-overview__open{flex:1;min-width:0;text-align:left;font:inherit;background:none;border:0;color:inherit;cursor:pointer;padding:0;min-height:24px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lesson-overview__open:hover{text-decoration:underline}.lesson-overview__open.is-empty{color:var(--color-text-soft);font-style:italic}.lesson-overview__thumb{width:56px;height:34px;object-fit:cover;border:1px solid var(--color-border);border-radius:3px;cursor:pointer;background:var(--color-bg-deep);flex:0 0 auto}.actpanel{position:fixed;inset:auto 0 0;z-index:18;max-height:84vh;overflow:auto;padding:var(--sp-3) var(--sp-4);background:var(--color-bg-explanation);border:1px solid var(--color-border-explanation);border-top:3px solid var(--color-accent);border-radius:var(--radius) var(--radius) 0 0;box-shadow:0 -16px 40px #00000057}.actpanel__bar{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-3)}.actpanel__bar .panel__title{flex:1;margin:0}.slidelib__bar{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;margin:var(--sp-3) 0 var(--sp-2)}.slidelib__count{font-size:var(--fs-small);color:var(--color-text-soft);flex:1}.slidelib__zoom{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-small);color:var(--color-text-soft)}.slidelib__empty{color:var(--color-text-soft);font-style:italic}.slidelib__group+.slidelib__group{margin-top:var(--sp-4)}.slidelib__file{margin:0 0 var(--sp-2);font-size:.95em}.slidelib__n{color:var(--color-text-soft);font-weight:400}.slidelib__grid{display:grid;gap:var(--sp-2);grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.slidelib--s .slidelib__grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr))}.slidelib--l .slidelib__grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.slidelib__item{margin:0;padding:4px;border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg-panel);display:flex;flex-direction:column;gap:4px}.slidelib__item.is-used{border-color:var(--color-accent)}.slidelib__item img{width:100%;height:auto;display:block;background:#fff;cursor:zoom-in;border-radius:2px}.slidelib__item figcaption{font-size:var(--fs-small);color:var(--color-text-soft)}.slidepreview__body{display:flex;flex-direction:column;gap:var(--sp-3);max-height:82vh;overflow:auto}.slidepreview__one{margin:0}.slidepreview__one figcaption{font-size:var(--fs-small);color:var(--color-text-soft);margin-top:2px}.slidepreview__row{display:flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-1)}.slidepreview__caption{flex:1}.slidepreview__moves{display:inline-flex;gap:2px}.slidepreview__notes{margin-top:var(--sp-2)}.slidepreview__notes .field{margin-bottom:0}.slidepreview__notes textarea{min-height:4.5rem;resize:vertical;font:inherit}.slidepreview__notes .builder-langbar{margin-bottom:var(--sp-1)}.slidepreview__notes--read{padding:var(--sp-2) var(--sp-3);border-left:3px solid var(--color-accent);background:var(--color-bg-panel);border-radius:var(--radius-small)}.lesson-overview__notes{cursor:default}.slidelib__title{width:100%;font-size:var(--fs-small);padding:2px 4px;border:1px solid var(--color-border);border-radius:3px;background:var(--color-field);color:inherit}.slidepreview__est input{width:9em;min-height:38px;font-size:1em}.pagepick{width:min(1000px,100%);max-width:min(1000px,100%)}.pagepick__bar{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;margin-bottom:var(--sp-3)}.pagepick__title{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pagepick__count{flex:0 0 auto;font-size:var(--fs-small);color:var(--color-text-soft)}.pagepick__bar .btn{flex:0 0 auto;white-space:nowrap}.pagepick__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--sp-2);max-height:60vh;overflow:auto;padding:2px}.pagepick__item{border:2px solid var(--color-border);border-radius:var(--radius-small);padding:4px;cursor:pointer;background:var(--color-bg-panel)}.pagepick__item img{display:block;width:100%;height:auto;background:#fff}.pagepick__item:hover{border-color:var(--color-accent)}.pagepick__item.is-picked{border-color:var(--color-accent);box-shadow:var(--ring)}.pagepick__item.is-already{opacity:.6}.pagepick__label{display:block;font-size:var(--fs-small);color:var(--color-text-soft);margin-top:2px}.pagepick__actions{display:flex;gap:var(--sp-2);margin-top:var(--sp-3)}.lesson-overview__strip{display:inline-flex;gap:3px;align-items:center;flex:0 0 auto}.lesson-overview__more{font-size:var(--fs-small);color:var(--color-text-soft)}.overlay--steps .overlay__card.stepsov{width:min(860px,94vw);max-width:min(860px,94vw);max-height:84vh;overflow:auto;text-align:left}.overlay--steppreview{z-index:28}.overlay--steppreview .overlay__card.steppreview{width:min(980px,95vw);max-width:min(980px,95vw);max-height:88vh;display:flex;flex-direction:column;text-align:left}.steppreview .panel__title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.steppreview__hint{margin:0 0 var(--sp-3);font-size:var(--fs-small);color:var(--color-text-soft)}.steppreview__body{flex:1 1 auto;overflow:auto}.steppreview__chips{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-bottom:var(--sp-3)}.steppreview__chip{font-size:var(--fs-small);color:var(--color-text-soft);background:var(--color-bg-deep);border:1px solid var(--color-border);border-radius:999px;padding:1px var(--sp-2)}.steppreview__block{margin-bottom:var(--sp-4)}.steppreview__label{margin:0 0 var(--sp-1);font-size:var(--fs-small);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-soft)}.steppreview__note{margin:0 0 var(--sp-1);font-size:var(--fs-small);color:var(--color-text-soft);font-style:italic}.steppreview__code{max-height:40vh}.steppreview__prose.is-empty{color:var(--color-text-soft);font-style:italic}.steppreview__list{margin:0;padding-left:var(--sp-5)}.steppreview__slide{display:block;width:100%;height:auto;max-height:60vh;object-fit:contain;background:var(--color-bg-deep);border:1px solid var(--color-border);border-radius:var(--radius-small)}.steppreview__caption{margin:var(--sp-1) 0 0;font-size:var(--fs-small);color:var(--color-text-soft)}.lesson-item__peek{flex:0 0 auto}.overlay--roster .overlay__card.roster-add{width:min(520px,94vw);max-width:min(520px,94vw);text-align:left}.overlay--slide .overlay__card.slidepreview{width:min(1600px,96vw);max-width:min(1600px,96vw)}.slidepreview__bar{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-2)}.slidepreview__title{flex:1}.slidepreview__img{display:block;width:100%;height:auto;object-fit:contain;background:var(--color-bg-deep);border:1px solid var(--color-border);border-radius:var(--radius-small)}.lesson-overview__meta{color:var(--color-text-soft);font-size:var(--fs-small);white-space:nowrap;display:inline-flex;align-items:center;gap:4px}.lesson-overview__mark{font-size:1em}.lang-tag{display:inline-flex;align-items:center;justify-content:center;min-width:2.1em;padding:0 6px;border-radius:var(--radius-small);border:1px solid var(--color-info);background:var(--color-info-background);color:var(--color-info);font-family:var(--font-mono);font-size:var(--fs-small);font-weight:700;line-height:1.5;white-space:nowrap}.lang-tag--c{border-color:var(--color-border);background:var(--color-bg-deep);color:var(--color-text-soft)}.screen-marks .lang-tag{font-size:var(--wall-base);padding:2px 10px;border-width:2px}.ex-lang{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}.ex-lang__seg{display:inline-flex;border:1px solid var(--color-border);border-radius:var(--radius-small);overflow:hidden}.ex-lang__opt{display:inline-flex;align-items:center;gap:4px;padding:2px 12px;cursor:pointer;font-family:var(--font-mono);font-weight:700}.ex-lang__opt input{position:absolute;opacity:0;pointer-events:none}.ex-lang__opt.is-on{background:var(--color-info);color:var(--color-bg-panel)}.ex-lang__opt:focus-within{outline:2px solid var(--color-info);outline-offset:-2px}.ex-cpp{margin:8px 0;padding:8px 12px;border:1px solid var(--color-info);border-radius:var(--radius-small);background:var(--color-info-background)}.ex-cpp__list{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:4px}.ex-cpp__row{display:flex;gap:8px;align-items:baseline}.ex-cpp__chip{flex:none;min-width:4.5em;text-align:center;padding:0 6px;border-radius:999px;font-size:var(--fs-small);border:1px solid var(--color-border);background:var(--color-bg-panel)}.ex-cpp__chip--ok{color:var(--color-ok);border-color:var(--color-ok)}.ex-cpp__chip--conly{color:var(--color-text-soft)}.mark-chip{display:inline-flex;align-items:center;gap:4px;padding:1px 8px;border-radius:999px;border:1px solid var(--color-border);background:var(--color-bg-deep);color:var(--color-text-soft);font-size:var(--fs-small);white-space:nowrap}.mark-chip__icon{font-size:1.05em;line-height:1}.lesson-overview__actions{display:inline-flex;gap:2px}.lesson-overview__actions .btn--sm{min-width:24px;min-height:24px;display:inline-flex;align-items:center;justify-content:center}.badge--exercise{background:var(--color-bg-deep);color:var(--color-text)}.badge-level{font-size:var(--fs-small);color:var(--color-text-soft);margin-left:4px;white-space:nowrap}.lesson-totals{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-4);margin:var(--sp-2) 0 var(--sp-3)}.lesson-totals__sum{font-size:var(--fs-small);color:var(--color-text-soft)}.lesson-totals__sum.is-over{color:var(--color-error);font-weight:600}.lesson-item--plenary{border-left:3px solid var(--color-accent)}.badge--plenary{background:var(--color-accent-soft);color:var(--color-text)}.lesson-overview__none{color:var(--color-text-soft);font-style:italic;padding:var(--sp-2)}.lesson-overview__row[data-kind=plenary],.lesson-item--plenary{background:var(--color-bg-explanation);border-color:var(--color-border-explanation)}.is-flash{animation:flash-hint 1.6s ease-out}@keyframes flash-hint{0%,40%{box-shadow:var(--ring)}to{box-shadow:none}}@media(prefers-reduced-motion:reduce){.is-flash{animation:none;box-shadow:var(--ring)}}.pres-form__cancel{margin-left:var(--sp-2)}.steps__bridge{display:inline-flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.steps__arrow{color:var(--color-text-soft)}.steps__hint{font-size:var(--fs-small);color:var(--color-text-soft);max-width:34ch}.picker{width:min(760px,100%)}.picker__bar{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-3)}.picker__title{margin:0;font-size:1.15em;flex:1}.picker__group+.picker__group{margin-top:var(--sp-4);padding-top:var(--sp-3);border-top:1px solid var(--color-border)}.picker__grouptitle{margin:0 0 var(--sp-2);font-size:.95em;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-soft)}.picker__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:var(--sp-2)}.picker__item{display:flex;flex-direction:column;gap:2px;text-align:left;padding:var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg);color:inherit;font:inherit;cursor:pointer}.picker__item:hover{border-color:var(--color-accent);background:var(--color-bg-deep)}.picker__item:focus-visible{outline:none;box-shadow:var(--ring)}.picker__icon{font-size:1.3em}.picker__item small{color:var(--color-text-soft);font-size:var(--fs-small)}.overlay__card.picker{max-width:min(1240px,96vw);width:96vw;max-height:94vh;overflow:auto;padding:var(--sp-4)}.picker .picker__grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}.picker .picker__group+.picker__group{margin-top:var(--sp-3);padding-top:var(--sp-2)}.picker .picker__item{display:grid;grid-template-columns:auto 1fr;column-gap:var(--sp-2);row-gap:0;align-items:start;padding:var(--sp-2) var(--sp-3)}.picker .picker__icon{grid-row:span 2;font-size:1.2em;line-height:1.3}.picker .picker__item small{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}#stepExercise{background:var(--color-bg-deep);border-left:4px solid var(--color-accent);border-radius:var(--radius)}.step-back{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-3);margin-bottom:var(--sp-3);padding-bottom:var(--sp-2);border-bottom:1px solid var(--color-border)}.step-back__title{font-size:1.05em}.step-back__saved{margin-left:auto;font-size:var(--fs-small);color:var(--color-text-soft)}.step-back__crumb{color:var(--color-text-soft);font-size:var(--fs-small)}.footer{padding:var(--sp-2) var(--sp-4);font-size:var(--fs-small);color:var(--color-text-soft);border-top:1px solid var(--color-border);font-family:var(--font-mono)}.footer{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-4)}body[data-view=teach] #footer{position:fixed;left:0;right:0;bottom:0;z-index:1;background:var(--color-bg)}body[data-view=teach] #footer:focus-within{z-index:13}body[data-view=teach] #app.app--teacher{padding-bottom:40px}.overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;overflow-y:auto;background:#14120f8c;z-index:20;padding:var(--sp-4)}.overlay--feedback{z-index:25}.overlay>*{margin:auto}.overlay__card{background:var(--color-bg-panel);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--sp-5);max-width:420px;width:100%;box-shadow:var(--shadow)}.overlay__card h2{margin-top:0}.shell{background:var(--color-bg-panel);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);width:100%}.shell__title{margin:0;text-wrap:balance}.shell__actions{display:flex;gap:var(--sp-2);flex-wrap:wrap}.shell--stage{max-width:560px;padding:var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-3)}.overlay--cloze .shell--stage{max-width:900px}.overlay--parsons{align-items:stretch;justify-content:stretch;padding:0;overflow:auto;background:var(--color-bg)}.overlay--parsons .shell--stage{width:100%;max-width:none;min-height:100%;border:0;border-radius:0;box-shadow:none}.parsons-round__clock{margin-left:auto}.overlay--cards{z-index:25}.overlay--cards-scan{z-index:26}.overlay--cards .shell--stage{max-width:720px}.cards-members{font-size:var(--fs-small);color:var(--color-text-soft);margin:0 0 var(--sp-2)}.cards-blocked{padding:var(--sp-3);background:var(--color-bg-deep);border-radius:var(--radius);text-align:center}.cards-canvas{display:flex;flex-direction:column;gap:var(--sp-4)}.cards-empty{color:var(--color-text-soft);text-align:center;padding:var(--sp-2)}.cards-card{position:relative;margin-left:calc(var(--depth, 0) * var(--sp-4));border:1px solid var(--color-border);border-left:4px solid var(--fam, var(--color-border));border-radius:var(--radius-small);padding:var(--sp-2);background:var(--color-bg)}.cards-card:not(:first-child):before{content:"";position:absolute;left:50%;transform:translate(-50%);bottom:100%;height:var(--sp-4);border-left:2px solid var(--color-accent)}.cards-card:not(:first-child):after{content:"";position:absolute;left:50%;transform:translate(-50%);bottom:100%;margin-bottom:-1px;border:5px solid transparent;border-bottom:0;border-top-color:var(--color-accent)}.cards-scan__list .cards-card:before,.cards-scan__list .cards-card:after{content:none}.cards-card__head{display:flex;align-items:center;gap:var(--sp-1)}.cards-card__label{font-weight:700;font-family:var(--font-mono);margin-right:auto}.cards-card__shape,.cards-card__icon{display:inline-flex;align-items:center;flex:none}.cards-card__icon svg{display:block}.cards-card__shape svg{display:block}.cards-move,.cards-remove{min-height:28px;padding:2px 8px}.cards-slot{display:flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-1)}.cards-slot>span{min-width:8ch;font-size:var(--fs-small)}.cards-slot__input{min-width:6ch}.cards-slot__expr{min-width:6ch;padding:2px 8px;border-radius:6px;background:var(--color-bg-deep);font-variant-numeric:tabular-nums;font-weight:600}.cards-slot__zone{display:inline-flex;flex-wrap:wrap;gap:4px;align-items:center;min-height:1.5rem}.cards-slot__zone.is-empty:before{content:"-";color:var(--color-text-soft)}.cards-strip{padding:1px 8px;border-radius:999px;background:var(--color-bg-deep);border:1px solid var(--fam, var(--color-border));font-size:var(--fs-small);font-weight:600}.cards-slot__code{flex:1;min-width:18ch;font-family:var(--font-mono)}.cards-palette{margin-top:var(--sp-3)}.cards-palette__title{font-size:var(--fs-small);color:var(--color-text-soft);margin:0 0 var(--sp-1)}.cards-palette__row{display:flex;flex-wrap:wrap;gap:4px;max-height:8.5rem;overflow-y:auto}.cards-palette-btn{font-family:var(--font-mono);display:inline-flex;align-items:center;gap:5px}.cards-channels{margin-top:var(--sp-3);border-top:1px solid var(--color-border);padding-top:var(--sp-2)}.cards-text{margin:0;padding:var(--sp-2);background:var(--color-bg-deep);border-radius:var(--radius-small);font-family:var(--font-mono);min-height:2em;white-space:pre-wrap;overflow-x:auto}.cards-led{display:flex;gap:3px;margin-top:var(--sp-2);flex-wrap:wrap}.cards-led__cell{width:20px;height:20px;border-radius:3px;border:1px solid var(--color-border)}.cards-led__cell[data-colour=RED]{background:#e03131}.cards-led__cell[data-colour=BLUE]{background:#1b6fd6}.cards-led__cell[data-colour=YELLOW]{background:#f1c40f}.cards-led__cell[data-colour=OFF]{background:#26313d}.cards-state{display:flex;flex-wrap:wrap;gap:6px;margin-top:var(--sp-2)}.cards-state__cell{font-family:var(--font-mono);font-size:var(--fs-small);padding:2px 6px;background:var(--color-bg-deep);border-radius:3px}.cards-state__pc{font-weight:700}.cards-note{margin:var(--sp-2) 0 0;font-size:var(--fs-small)}.cards-cap{color:var(--color-warning)}.cards-error{color:var(--color-error)}.cards-dash__bar{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-bottom:var(--sp-2)}.cards-dash{display:flex;flex-direction:column;gap:var(--sp-2)}.cards-dash__row{border:1px solid var(--color-border);border-radius:var(--radius-small);padding:var(--sp-2);display:flex;flex-direction:column;gap:6px}.cards-dash__head{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.cards-dash__name{display:inline-flex;align-items:center;gap:6px;font-weight:600}.cards-dash__dot{width:10px;height:10px;border-radius:50%;flex:none}.cards-dash__phase{font-size:var(--fs-small);padding:1px 8px;border-radius:20px;background:var(--color-accent-soft);color:var(--color-accent)}.cards-dash__prog{font-family:var(--font-mono);font-size:var(--fs-small);color:var(--color-text-soft)}.cards-dash__run{margin-left:auto;font-weight:700}.cards-dash__run.is-ok{color:var(--color-ok)}.cards-dash__run.is-error{color:var(--color-error)}.cards-dash__run.is-capped{color:var(--color-accent)}.cards-dash__signals{display:flex;flex-wrap:wrap;gap:4px}.cards-sig{font-size:var(--fs-small);padding:1px 8px;border-radius:20px;border:1px solid var(--color-border);background:var(--color-field)}.cards-dash__members{display:flex;flex-wrap:wrap;gap:6px 12px;list-style:none;padding:0;margin:0}.cards-dash__member{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-small)}.cards-dash__member .is-offline{color:var(--color-text-soft);text-decoration:line-through}.cards-dash__move{font-size:var(--fs-small);padding:1px 4px;border:1px solid var(--color-border);border-radius:4px;background:var(--color-field);color:var(--color-text)}.cards-dash__solo{align-self:flex-start}.cards-dash__metrics{font-family:var(--font-mono);font-size:var(--fs-small);color:var(--color-text-soft)}.cards-records{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:var(--sp-2);padding:6px 10px;border-radius:var(--radius-small);background:var(--color-accent-soft)}.cards-records__title{font-weight:600;color:var(--color-accent)}.cards-record{font-family:var(--font-mono);font-size:var(--fs-small);padding:1px 8px;border-radius:20px;background:var(--color-field)}.cards-metrics{margin-top:var(--sp-2);border-top:1px solid var(--color-border);padding-top:var(--sp-2)}.cards-metrics__title{font-weight:600;font-size:var(--fs-small);color:var(--color-text-soft);margin:0 0 4px}.cards-metrics__list{display:flex;flex-direction:column;gap:3px}.cards-metric{font-family:var(--font-mono);font-size:var(--fs-small)}.screen-cards-mem{width:100%;max-width:1100px;margin:0 auto}.cards-mem{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:center;gap:12px;margin-top:var(--sp-3)}.cards-mem__empty{color:var(--color-text-soft);font-size:var(--fs-large);text-align:center}.cards-mem__seg{border:3px solid var(--seg);border-radius:10px;padding:6px 8px}.cards-mem__tag{font-family:var(--font-mono);font-weight:700;color:var(--seg);font-size:var(--fs-small);margin-bottom:5px;text-transform:uppercase;letter-spacing:.05em}.cards-mem__cells,.cards-mem__free{display:grid;grid-template-columns:repeat(8,22px);gap:3px}.cards-mem__free{align-content:start;opacity:.45;padding:6px 0}.cards-mem__cell{width:22px;height:22px;border-radius:4px;background:var(--color-field);border:1px solid var(--color-border);display:inline-flex;align-items:center;justify-content:center;font-size:10px;font-family:var(--font-mono)}.cards-mem__cell.is-free{background:transparent;border-style:dashed}.cards-scanbar{margin-top:var(--sp-2)}.overlay--cards-scan .overlay__card.cards-scan{max-width:460px;width:100%;max-height:92vh;overflow-y:auto;display:flex;flex-direction:column;gap:var(--sp-2)}.cards-scan__view{background:#000;border-radius:var(--radius-small);overflow:hidden;min-height:160px;display:flex;align-items:center;justify-content:center}.cards-scan__view video{width:100%;height:auto;max-height:45vh}.cards-scan__list{display:flex;flex-direction:column;gap:var(--sp-1)}.cards-scan__list:empty{display:none}.cards-scan__list .cards-canvas{gap:var(--sp-1)}.cards-scan__status{min-height:1.4em;font-size:var(--fs-small);color:var(--color-text-soft)}.cards-scan__status.is-ok{color:var(--color-ok)}.cards-scan__status.is-fail{color:var(--color-error)}.cards-scan__actions{display:flex;gap:var(--sp-2);justify-content:flex-end}.cards-sheet{margin-top:var(--sp-2);display:flex;flex-direction:column;gap:var(--sp-2)}.cards-sheet__table{width:100%;border-collapse:collapse;font-family:var(--font-mono);font-size:var(--fs-small)}.cards-sheet__table th{text-align:left;font-weight:600;color:var(--color-text-soft);padding:4px 8px;border-bottom:1px solid var(--color-border)}.cards-sheet__row td{padding:6px 8px;border-bottom:1px solid var(--color-border);vertical-align:top}.cards-sheet__n{color:var(--color-text-soft);width:2em}.cards-sheet__card{font-weight:600;white-space:nowrap}.cards-sheet__pred{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.cards-sheet__machine{font-weight:600}.cards-sheet__machine--empty{color:var(--color-text-soft);font-weight:400}.cards-sheet__row.is-correct .cards-sheet__machine{color:var(--color-ok)}.cards-sheet__row.is-wrong .cards-sheet__machine{color:var(--color-error)}.cards-sheet__row.is-current{background:var(--color-accent-soft)}.cards-sheet__hint{font-size:var(--fs-small);color:var(--color-text-soft)}.cards-sheet__done{font-size:var(--fs-small);color:var(--color-accent);font-weight:600}.cards-sheet__predform{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.cards-peer__status{font-size:var(--fs-small);color:var(--color-text-soft);margin:4px 0}.cards-peer__reveal{margin-top:2px}.cards-peer__spread{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}.cards-peer__chip{font-family:var(--font-mono);font-size:var(--fs-small);padding:1px 8px;border-radius:20px;border:1px solid var(--color-border);background:var(--color-accent-soft)}.cards-peer__chip.is-nofill{background:var(--color-field);color:var(--color-text-soft)}.cards-predict{display:inline-flex;align-items:center;gap:4px}.cards-predict__key{color:var(--color-text-soft)}.cards-predict__input{padding:4px 6px;border:1px solid var(--color-border);border-radius:4px;font:inherit;max-width:9em;background:var(--color-field);color:var(--color-text)}.shell__badge{align-self:flex-start;font-family:var(--font-mono);font-size:var(--fs-small);letter-spacing:.04em;color:var(--color-accent);background:var(--color-accent-soft);padding:3px 10px;border-radius:20px}.shell--stage .shell__title{font-size:var(--fs-large)}.shell--stage .shell__actions{margin-top:var(--sp-1)}.shell--focus{max-width:560px;padding:var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-3);max-height:88vh;overflow:auto}.shell--focus .shell__title{font-size:var(--fs-large)}.shell__step{display:flex;align-items:center;gap:var(--sp-2);font-family:var(--font-mono);font-size:var(--fs-small);letter-spacing:.04em;text-transform:uppercase;color:var(--color-accent)}.shell__pip{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;border:1.5px solid var(--color-accent);color:var(--color-accent);font-size:.7em;box-shadow:0 0 0 3px var(--color-accent-soft);flex:none}.shell__steplabel{font-weight:600}.shell--curtain{max-width:400px;padding:var(--sp-5);text-align:center;display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);border-top:3px solid var(--shell-tone, var(--color-accent))}.shell--curtain .shell__icon{font-size:2rem;line-height:1}.shell--curtain .shell__title{font-size:var(--fs-large)}.shell--curtain .shell__msg{margin:0;color:var(--color-text-soft)}.shell--curtain .shell__body{width:100%;text-align:left;margin-top:var(--sp-2)}.shell--curtain .shell__actions{justify-content:center;margin-top:var(--sp-2)}.shell--curtain .shell__savenote{margin:var(--sp-1) 0 0;padding:var(--sp-2) var(--sp-3);border-left:4px solid var(--color-warning);background:var(--color-bg-deep);text-align:left;font-size:var(--fs-small);line-height:1.4}.shell--pause{--shell-tone: var(--color-warning)}.shell--timeup{--shell-tone: var(--color-error)}.shell--wait,.shell--ended,.shell--neutral{--shell-tone: var(--color-accent)}.field{display:flex;flex-direction:column;gap:var(--sp-1);margin-bottom:var(--sp-3)}.field--inline{flex-direction:row;align-items:center;gap:var(--sp-2);min-width:0}.field select,.field input,.field textarea{max-width:100%}.field--inline>select,.field--inline>input,.field--inline>textarea{min-width:0;flex:1 1 0}.field--inline>input[type=checkbox],.field--inline>input[type=radio]{flex:0 0 auto;margin:0}.field--inline>input[type=checkbox]+span,.field--inline>input[type=radio]+span{flex:1 1 auto}.field--inline:has(>input[type=checkbox]:first-child){justify-content:flex-start}.field>span{font-size:var(--fs-small);color:var(--color-text-soft)}.field input,.field textarea{font:inherit;padding:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg);color:var(--color-text)}.field input:focus,.field textarea:focus{outline:none;box-shadow:var(--ring)}.field-hint{margin:calc(var(--sp-1) * -1) 0 var(--sp-3);font-size:var(--fs-small);color:var(--color-text-soft)}.field-hint--note{color:var(--color-warning);font-weight:600}.testmode-note{margin:0 0 var(--sp-2);font-size:var(--fs-small);color:var(--color-text-soft);font-style:italic}.testcase-note{margin:0 0 var(--sp-2);color:var(--color-warning);font-size:var(--fs-small);line-height:1.4}.selfpaced-controls{display:inline-flex}.overlay--selfpaced{z-index:19}.overlay--selfpaced .overlay__card.selfpacedview{width:min(46rem,100%);max-height:calc(100vh - 2 * var(--sp-4));overflow:auto}.selfpacedview__body{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-2);padding-top:var(--sp-2)}.selfpacedview__body #selfpacedMin{width:5rem}.selfpacedview__actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);padding-top:var(--sp-2);border-top:1px solid var(--color-border);width:100%}.selfpaced-pick{width:100%}.selfpaced-pick__head{margin:0;font-size:var(--fs-small);color:var(--color-text-soft)}.selfpaced-status{font-size:var(--fs-small);color:var(--color-info);font-weight:600}.exercise-picker{margin-bottom:var(--sp-3)}.exercise-picker__title{margin:0 0 var(--sp-2);font-size:var(--fs-small);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-soft)}.exercise-picker__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-1);max-height:34vh;overflow:auto}.picker-item{display:flex;align-items:center;gap:var(--sp-2);width:100%;text-align:left;padding:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg);color:var(--color-text);cursor:pointer;font:inherit}.picker-item:hover{border-color:var(--color-accent)}.picker-item.is-current{border-color:var(--color-info);box-shadow:var(--ring)}.picker-item__icon{font-weight:700;width:1.2em;text-align:center}.picker-item--passed .picker-item__icon,.picker-item--done .picker-item__icon{color:var(--color-ok)}.picker-item--done{border-color:var(--color-ok)}.exercise-picker__count{margin:0 0 var(--sp-2);font-size:var(--fs-small);color:var(--color-text-soft)}.picker-item--started .picker-item__icon{color:var(--color-warning)}.picker-item--todo .picker-item__icon{color:var(--color-text-soft)}.picker-item__prompt{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker-item__time,.picker-part__time{flex:0 0 auto;margin-left:auto;padding-left:var(--sp-2);font-size:var(--fs-small);font-variant-numeric:tabular-nums;color:var(--color-text-soft);white-space:nowrap}.picker-item__time.is-over,.picker-part__time.is-over{color:var(--color-error)}.progress-trail{display:flex;align-items:flex-start;flex-wrap:wrap;gap:var(--sp-1);margin:var(--sp-2) 0 0}.progress-trail__session{flex-basis:100%;font-size:.8em;color:var(--color-text-soft);margin-bottom:var(--sp-1)}.trail-step{display:flex;flex-direction:column;align-items:center;gap:2px;flex:1 1 auto;min-width:3.2em;text-align:center}.trail-step__pip{display:flex;align-items:center;justify-content:center;width:1.7em;height:1.7em;border-radius:50%;border:2px solid var(--color-border);background:var(--color-bg);color:var(--color-text-soft);font-weight:700;font-size:.85em;line-height:1}.trail-step__label{font-size:var(--fs-small);color:var(--color-text-soft);line-height:1.1}.trail-step--done .trail-step__pip{border-color:var(--color-ok);background:var(--color-ok);color:var(--color-accent-text)}.trail-step--done .trail-step__label{color:var(--color-text)}.trail-step--current .trail-step__pip{border-color:var(--color-warning);color:var(--color-warning);box-shadow:0 0 0 3px color-mix(in srgb,var(--color-warning) 25%,transparent)}.trail-step--current .trail-step__label{color:var(--color-warning);font-weight:600}.trail-step--failed .trail-step__pip{border-color:var(--color-error);background:var(--color-error);color:var(--color-accent-text)}.trail-step--failed .trail-step__label{color:var(--color-error);font-weight:600}body[data-view=teach] .present-panel__help,body[data-view=teach] .present-panel__file,body.is-ended .roominfo__links,body.is-ended #stepsBtn,body.is-ended .runstrip,body.is-ended .runmore,body.is-ended .teach-side,body.is-ended[data-view=teach] .teach-side{display:none}body.is-ended[data-view=teach] .teach-body{grid-template-columns:minmax(0,1fr)}.pagepick__lead{font-size:var(--fs-small);color:var(--color-text-soft);margin:0 0 var(--sp-2);max-width:70ch}.card__struggle.is-clearable{cursor:pointer;text-decoration:underline dotted}.lesson-locked{font-size:var(--fs-small);color:var(--color-text);background:color-mix(in srgb,var(--color-warning) 12%,transparent);border:1px solid color-mix(in srgb,var(--color-warning) 35%,transparent);border-radius:var(--radius-small);padding:var(--sp-2) var(--sp-3);margin:0 0 var(--sp-2)}.overlay--code .overlay__card.codeview{width:min(900px,94vw);max-width:min(900px,94vw);max-height:88vh;display:flex;flex-direction:column;text-align:left}.overlay--code .codeview__body{flex:1 1 auto;max-height:none;overflow:auto;margin-top:var(--sp-2)}.card__code.is-openable{cursor:pointer}.card__code.is-openable:hover{outline:1px solid var(--color-border)}.card__code.is-openable:focus-visible{outline:none;box-shadow:var(--ring)}[data-format=markdown]{white-space:normal}[data-format=markdown] h2{font-size:1.15em;margin:0 0 var(--sp-2)}[data-format=markdown] h3{font-size:1.05em;margin:var(--sp-3) 0 var(--sp-1)}[data-format=markdown] h4{font-size:1em;margin:var(--sp-2) 0 var(--sp-1)}[data-format=markdown] p{margin:0 0 var(--sp-2)}[data-format=markdown] ul,[data-format=markdown] ol{margin:0 0 var(--sp-2);padding-left:1.4em}[data-format=markdown] li{margin:2px 0}[data-format=markdown] code,[data-format=markdown-inline] code{font-family:var(--font-mono);font-size:.95em;background:var(--color-bg-deep);border-radius:var(--radius-small);padding:0 3px}[data-format=markdown] pre{margin:0 0 var(--sp-2);padding:var(--sp-2);background:var(--color-bg-deep);border-radius:var(--radius-small);overflow-x:auto}[data-format=markdown] pre code{background:none;padding:0}[data-format=markdown] blockquote{margin:0 0 var(--sp-2);padding-left:var(--sp-3);border-left:3px solid var(--color-border);color:var(--color-text-soft)}[data-format=markdown] hr{border:0;border-top:1px solid var(--color-border);margin:var(--sp-3) 0}.md-heading{font-weight:700}.md-heading pre{font-weight:400}.md-text>:last-child{margin-bottom:0}.md-text pre,.md-text ul,.md-text ol,.md-text blockquote{text-align:left}.app--screen .md-text code,.app--screen [data-format=markdown-inline] code{font-size:1em}.app--screen .md-text pre{font-size:var(--wall-base)}.md-diagram-btn{display:block;width:100%;margin:var(--sp-2) 0;padding:var(--sp-2);border:1px dashed var(--color-border);border-radius:var(--radius-small);background:var(--color-bg-deep);color:var(--color-text);cursor:pointer;text-align:left;font:inherit}.md-diagram-btn:hover,.md-diagram-btn:focus-visible{border-style:solid}.md-diagram{position:relative;margin:var(--sp-2) 0;padding:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);overflow:auto;max-height:70vh}.md-diagram svg{max-width:none;height:auto}.md-zoom{position:sticky;top:0;left:0;z-index:1;display:flex;gap:var(--sp-1);justify-content:flex-end}.md-diagram-error{margin:var(--sp-2) 0;color:var(--color-text-soft);font-size:var(--fs-small)}.ex-debug>summary{cursor:pointer;padding:var(--sp-2) 0}.ex-debug .ex-extra-ro{display:flex;margin:2px 0}.debugbar{display:inline-flex;align-items:center;gap:var(--sp-1);margin:0 var(--sp-3) var(--sp-2);font-size:var(--fs-small)}.debugbar__label{color:var(--color-text-soft);white-space:nowrap}.debugbar .btn{padding:0 var(--sp-1);line-height:1.4}@media(max-width:900px){.debugbar .btn{font-size:0;padding:0 6px}.debugbar .btn:after{font-size:var(--fs-small)}#debugLess:after{content:"−"}#debugMore:after{content:"+"}}.runtimehint{color:var(--color-error)}.compilehint--warn{color:var(--hl-num)}.runtimehint__why{font-weight:400;color:var(--color-text)}.compilehint__means,.compilehint__cause{display:block;margin-top:var(--sp-1);font-weight:400;color:var(--color-text)}.compilehint__means b,.compilehint__cause b{color:var(--color-text-soft);font-weight:600}.runtimehint__raw{font-family:var(--font-mono);font-weight:400;color:var(--color-text-soft)}.ex-mdbar{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2);margin:calc(-1 * var(--sp-1)) 0 var(--sp-2)}.ex-md-hint{flex:1 1 240px}body[data-role=ta] button:not([data-ta]):not([data-help]),body[data-role=ta] input:not([data-ta]),body[data-role=ta] select:not([data-ta]),body[data-role=ta] textarea:not([data-ta]),body[data-role=ta] .app>section:not([data-ta]),body[data-role=ta] .app>aside:not([data-ta]),body[data-role=ta] .teach-main>section:not([data-ta]),body[data-role=ta] #runMore,body[data-role=ta] .detail-note,body[data-role=ta] .steps__bridge,body[data-role=ta] #stepNav .steps__item:not([data-goto=teach]),body[data-role=ta] .run-groups,body[data-role=ta] .selfpaced-controls,body[data-role=ta] #roomInfo{display:none!important}.help-pages{display:flex;flex-direction:column;gap:var(--sp-2);margin:var(--sp-2) 0}.help-actions{display:flex;gap:var(--sp-2);flex-wrap:wrap;align-items:center}.help-deck{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:var(--sp-2)}.help-deck__item{position:relative;display:flex;flex-direction:column;gap:var(--sp-1)}.help-deck__item img{width:100%;height:auto;border:1px solid var(--color-border);border-radius:var(--radius-small);background:#fff;cursor:zoom-in}.help-deck__cap{font-size:var(--fs-small);width:100%}.help-deck__del{position:absolute;top:2px;right:2px;border:0;border-radius:var(--radius-small);background:#0000008c;color:#fff;cursor:pointer;line-height:1;padding:2px 5px}.help-page{border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg-panel)}.help-page>summary{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2);cursor:pointer}.help-page__title{font-weight:600}.help-page__fmt{color:var(--color-text-soft);font-size:var(--fs-small)}.help-page__body{padding:0 var(--sp-2) var(--sp-2);display:flex;flex-direction:column;gap:var(--sp-2)}.help-page__body textarea{font-family:var(--font-mono);font-size:var(--fs-small)}.app--student.is-modal>*:not(.overlay):not(.diag){display:none!important}mark.refhit{background:var(--color-hit-bg);color:var(--color-hit-fg);padding:0 1px;border-radius:2px}mark.refhit.is-current{background:var(--color-hit-now-bg);outline:2px solid var(--color-hit-now-bg)}.refview__find{display:flex;align-items:center;gap:var(--sp-1);margin-top:var(--sp-1)}.refview__count{color:var(--color-text-soft);font-size:var(--fs-small);flex:1}.ref-item__n{margin-left:auto;padding:0 var(--sp-1);border-radius:999px;background:var(--color-border);font-size:var(--fs-small)}.ref-item{display:flex;align-items:center;gap:var(--sp-1)}.refview__body[data-format=slides]{display:flex;flex-direction:column;gap:var(--sp-3)}.refslide{margin:0;display:flex;flex-direction:column;gap:var(--sp-1)}.refslide__img{width:100%;height:auto;display:block;border:1px solid var(--color-border);border-radius:var(--radius-small);cursor:zoom-in;background:#fff}.refslide.is-missing .refslide__img{display:none}.refslide.is-missing .refslide__cap:before{content:"⚠ "}.refslide.is-missing .refslide__cap{border:1px dashed var(--color-border);border-radius:var(--radius-small);padding:var(--sp-3) var(--sp-2)}.refslide__cap{color:var(--color-text-soft);font-size:var(--fs-small)}.refslide__text summary{color:var(--color-text-soft);font-size:var(--fs-small);cursor:pointer}.refslide__text p{margin:var(--sp-1) 0 0;font-size:var(--fs-small)}.refzoom{position:fixed;inset:0;z-index:1000;background:#000000e6;overflow:auto;cursor:zoom-out}.refzoom img{display:block;max-width:none}#helpStore{margin-top:var(--sp-3);border-top:1px solid var(--color-border);padding-top:var(--sp-2)}.help-store{display:flex;flex-direction:column;gap:var(--sp-1);margin-top:var(--sp-2)}.help-store__row{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-1) var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small)}.help-store__title{font-weight:600;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.help-store__meta{color:var(--color-text-soft);font-size:var(--fs-small);white-space:nowrap}.overlay--ref .overlay__card.refview{width:min(1000px,96vw);max-width:min(1000px,96vw);height:88vh;display:flex;flex-direction:column;text-align:left}.refview__cols{flex:1 1 auto;display:grid;grid-template-columns:240px 1fr;gap:var(--sp-3);min-height:0;margin-top:var(--sp-2)}.refview__side{display:flex;flex-direction:column;gap:var(--sp-2);min-height:0}.refview__search{padding:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg);color:var(--color-text);font:inherit}.refview__list{flex:1 1 auto;overflow:auto;display:flex;flex-direction:column;gap:2px}.ref-item{text-align:left;padding:var(--sp-2);border:0;border-radius:var(--radius-small);background:none;color:var(--color-text);cursor:pointer;font:inherit}.ref-item:hover{background:var(--color-bg-deep)}.ref-item.is-active{background:var(--color-bg-deep);font-weight:600}.refview__body{overflow:auto;min-height:0;padding-right:var(--sp-2)}.refview__body[data-format=text]{white-space:pre-wrap}@media(max-width:700px){.refview__cols{grid-template-columns:1fr;grid-template-rows:auto 1fr}.refview__list{max-height:22vh}}.refview__shelves{display:flex;gap:2px;padding:2px;border-radius:var(--radius-small);background:var(--color-bg-deep)}.refview__shelf{flex:1 1 0;padding:var(--sp-1) var(--sp-2);border:0;border-radius:var(--radius-small);background:none;color:var(--color-text-soft);font:inherit;font-size:var(--fs-small);cursor:pointer}.refview__shelf.is-active{background:var(--color-bg-panel);color:var(--color-text);font-weight:600;box-shadow:var(--shadow)}.refview__back{margin-left:auto}.refview__back+.help-card__close{margin-left:var(--sp-2)}.ref-item--c{flex-wrap:wrap;row-gap:0}.ref-item__name{font-family:var(--font-mono);overflow-wrap:anywhere}.ref-item__type{margin-left:auto;color:var(--color-text-soft);font-size:var(--fs-small)}.ref-empty{color:var(--color-text-soft);padding:var(--sp-2);margin:0}.lookup-own__hdr{color:var(--color-text-soft);font-size:var(--fs-small)}.cm-editor .cm-tooltip.lookup-card{width:min(460px,calc(100vw - 24px));max-height:min(380px,60vh);display:flex;flex-direction:column;background:var(--color-bg-panel);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:0 8px 24px #2822182e;font-family:var(--font-ui);font-size:var(--fs-normal)}.lookup-card__head{display:flex;align-items:baseline;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3) 0}.lookup-card__name{font-family:var(--font-mono);font-weight:700;font-size:1.02rem}.lookup-card__hdr{font-family:var(--font-mono);color:var(--color-text-soft);font-size:var(--fs-small)}.lookup-card__x{margin-left:auto;border:0;background:none;color:var(--color-text-soft);font-size:1rem;cursor:pointer;padding:0 var(--sp-1)}.lookup-card__x:hover{color:var(--color-text)}.lookup-card__body{overflow:auto;padding:var(--sp-1) var(--sp-3) var(--sp-2);min-height:0}.lookup-card__sub{margin:var(--sp-2) 0 2px;font-size:var(--fs-small);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-soft)}.lookup-card__foot{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border-top:1px solid var(--color-border);background:var(--color-bg-deep);border-radius:0 0 var(--radius) var(--radius)}.lookup-card__go{border:0;background:none;padding:0;color:var(--color-accent);font:inherit;font-weight:600;cursor:pointer}.lookup-card__go:hover{text-decoration:underline}.lookup-card__src{margin-left:auto;color:var(--color-text-soft);font-size:var(--fs-small)}.overlay--prompt .overlay__card.promptview{width:min(900px,94vw);max-width:min(900px,94vw);max-height:88vh;display:flex;flex-direction:column;text-align:left}.overlay--prompt .promptview__body{flex:1 1 auto;overflow:auto;margin-top:var(--sp-2)}.overlay--plan .overlay__card.planview{width:min(760px,94vw);max-width:min(760px,94vw);max-height:86vh;overflow:auto;text-align:left}.planview__who{font-size:var(--fs-small);color:var(--color-text-soft);margin-right:auto}.planview__body{display:flex;flex-direction:column;gap:2px}.planview__body>*{flex:0 0 auto}.planview__h{font-weight:700;margin-top:var(--sp-3)}.planview__h:first-child{margin-top:0}.planview__row{color:var(--color-text)}.planview__steps{margin:2px 0 0;padding-left:1.4em;display:flex;flex-direction:column;gap:2px}.planview__step{color:var(--color-text)}.planview__parts{display:flex;flex-direction:column;gap:2px;margin-top:2px}.planview__partshead,.planview__part{display:grid;grid-template-columns:minmax(7em,12em) 1fr;gap:var(--sp-2);align-items:baseline}.planview__partshead{font-size:var(--fs-small);color:var(--color-text-soft);text-transform:uppercase;letter-spacing:.04em}.planview__partname{font-weight:700;font-family:var(--font-mono);overflow-wrap:anywhere}.planview__partrole{color:var(--color-text)}.planview__qas{display:flex;flex-direction:column;gap:var(--sp-2);margin-top:2px}.planview__qa{display:flex;flex-direction:column}.planview__q{font-size:var(--fs-small);color:var(--color-text-soft)}.planview__a{color:var(--color-text)}.planview__protos{list-style:none;margin:2px 0 0;padding:0;display:flex;flex-direction:column;gap:4px}.planview__proto{display:flex;flex-direction:column}.planview__protoline{font-family:var(--font-mono);font-weight:600;overflow-wrap:anywhere}.planview__protorole{color:var(--color-text)}.dz-blocks--ro{margin-top:2px}.dz-block__ro{flex:1;overflow-wrap:anywhere}.dz-block__elsebar{margin:6px 0 0 18px;font-size:var(--fs-small);font-weight:600;color:var(--color-text-soft)}.dz-flow--ro{overflow:auto}.dz-flow__canvas{position:relative}.dz-flow--ro .dz-node__bar{cursor:default}.dz-flow--ro .dz-node--start,.dz-flow--ro .dz-node--end{border-radius:14px}.dz-node__ro{margin-top:3px;padding-bottom:2px;line-height:1.25;font-size:var(--fs-small);overflow-wrap:anywhere}.card__plan{font:inherit;font-size:var(--fs-small);padding:1px 8px;border:1px solid var(--color-border);border-radius:999px;background:var(--color-bg);color:var(--color-text-soft)}.card__plan.is-done{color:var(--color-ok);border-color:color-mix(in srgb,var(--color-ok) 45%,transparent);cursor:pointer}.card__plan.is-done:hover{background:var(--color-bg-deep)}.trail-step--open{border:none;background:none;cursor:pointer;padding:0;font:inherit}.trail-step__open{font-size:.85em;margin-left:3px;opacity:.8}.picker__item.is-unreleased{opacity:.45;cursor:not-allowed;filter:grayscale(1)}.labs-badge{font-size:var(--fs-small);background:#ffe9b0;color:#6b4e00;border-radius:999px;padding:1px 10px;margin-right:var(--sp-2)}.labs-warn{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-small);border:1px solid var(--color-warning);color:var(--color-text);border-radius:999px;padding:1px 4px 1px 10px;margin-right:var(--sp-2);max-width:46ch}.labs-on-btn{white-space:nowrap}.trail-why{margin:0;padding:0 var(--sp-3) var(--sp-3);font-size:var(--fs-small);color:var(--color-text-soft);line-height:1.4}.hinted{position:relative;display:inline-flex}.hinted[data-hint]:hover:after{content:attr(data-hint);position:absolute;top:calc(100% + 6px);bottom:auto;left:50%;transform:translate(-50%);background:var(--color-text);color:var(--color-bg-panel);font-size:var(--fs-small);line-height:1.3;padding:4px 8px;border-radius:var(--radius-small);white-space:normal;width:max-content;max-width:260px;box-shadow:var(--shadow);z-index:5;pointer-events:none}.trail-step--open:focus-visible{outline:none;box-shadow:var(--ring);border-radius:var(--radius-small)}.ex-pitfalls{margin-top:var(--sp-2);padding-top:var(--sp-2);border-top:1px dashed var(--color-border)}.field-label{display:block;font-size:var(--fs-small);color:var(--color-text-soft);margin-bottom:var(--sp-1)}.ex-pitfall-list{display:flex;flex-direction:column;gap:var(--sp-1);margin-bottom:var(--sp-1)}.ex-pitfall-row{display:flex;gap:var(--sp-1);align-items:center}.ex-pitfall-q{flex:1;font:inherit;font-size:var(--fs-small);padding:4px var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg);color:var(--color-text)}.ex-pitfall-q.is-missing{border-color:var(--color-warning)}.ex-pitfall-missing{flex:none;font-size:max(.8em,12px);font-weight:600;color:var(--color-warning)}.ex-pitfall-missing-count{margin:calc(-1 * var(--sp-3)) 0 var(--sp-3) calc(1.7rem + var(--sp-2))}.ex-design-code{margin-top:var(--sp-2);padding-top:var(--sp-2);border-top:1px dashed var(--color-border)}.ex-tocode-chips{display:flex;flex-wrap:wrap;gap:var(--sp-1) var(--sp-3)}.ex-expected-protos{margin-top:var(--sp-2)}.ex-expected-protos__in{width:100%;box-sizing:border-box;padding:6px var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);color:var(--color-text);resize:vertical}.ex-expected-protos__bad{margin:var(--sp-1) 0 0;padding-left:1.2em;color:var(--color-error)}.ex-expected-protos__bad:empty{display:none}.selfpaced-pick__count{font-variant-numeric:tabular-nums}.selfpaced-pick__list{display:flex;flex-direction:column;gap:2px;padding:var(--sp-1) 0 var(--sp-2)}.selfpaced-pick__row{margin-bottom:0}.selfpaced-pick__row>span{font-size:var(--fs-small)}.matrix-drawer{position:fixed;left:0;right:0;bottom:0;z-index:12;display:flex;flex-direction:column;background:var(--color-bg-panel);border-top:1px solid var(--color-border);box-shadow:0 -2px 10px #00000014}.matrix-drawer__tab{display:flex;align-items:center;gap:var(--sp-2);width:100%;font:inherit;font-size:var(--fs-small);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-soft);background:none;border:none;padding:var(--sp-2) var(--sp-4);cursor:pointer;min-height:36px}.matrix-drawer__tab:hover{background:var(--color-bg-deep)}.matrix-drawer__tab:focus-visible{outline:none;box-shadow:var(--ring)}.matrix-drawer__caret{transition:transform .15s ease}.matrix-drawer.is-open .matrix-drawer__caret{transform:rotate(180deg)}.matrix-drawer__count{margin-left:auto;font-variant-numeric:tabular-nums}.matrix-drawer__body{padding:0 var(--sp-4) var(--sp-3);max-height:60vh;overflow:auto}.matrix-panel__bar{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap;margin-bottom:var(--sp-2)}.matrix-panel__bar .panel__title{margin:0}.matrix-legend{display:flex;gap:var(--sp-3);flex-wrap:wrap;font-size:var(--fs-small);color:var(--color-text-soft)}.matrix-legend__item{display:inline-flex;align-items:center;gap:4px}.matrix-legend__item .matrix__cell{width:1.4em;height:1.4em;display:inline-flex;align-items:center;justify-content:center;border-radius:3px}.matrix-scroll{overflow-x:auto}.matrix{border-collapse:collapse;font-size:var(--fs-small)}.matrix th,.matrix td{border:1px solid var(--color-border);padding:4px 6px;text-align:center}.matrix__corner,.matrix__exrow{text-align:left;position:sticky;left:0;background:var(--color-bg-panel);white-space:nowrap;font-weight:600}.matrix__stud{min-width:2.2em;max-width:6.5em;font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.matrix__exlabel{font-weight:400;color:var(--color-text-soft)}.matrix__cell[role=button]{cursor:pointer}.matrix__cell[role=button]:focus-visible{outline:none;box-shadow:var(--ring)}.matrix-who{position:fixed;z-index:14;max-width:22rem;padding:var(--sp-2) var(--sp-3);background:var(--color-bg-panel);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);font-size:var(--fs-small)}.matrix-who__num{font-family:var(--font-mono);color:var(--color-text-soft)}.matrix-who__line{color:var(--color-text-soft);margin-top:2px}.matrix-who__line.is-stuck{color:var(--color-error);font-weight:600}.matrix__exnum{font-weight:700}.matrix__cell{font-weight:700;min-width:1.8em}.matrix__cell--todo{background:var(--color-bg);color:var(--color-text-soft)}.matrix__cell--busy{background:#fff3d6;color:#866900}.matrix__cell--passed{background:#dff0d8;color:#2c7730}.matrix__cell--done{background:#cfe8cf;color:#1b5e20}.matrix__cell.is-current{outline:2px solid var(--color-info);outline-offset:-2px}.matrix .is-inactive{background:var(--color-bg-deep);color:var(--color-text-soft)}.matrix__peek{min-width:24px;min-height:24px;padding:0 2px;border:1px solid transparent;border-radius:var(--radius-small);background:none;color:inherit;font:inherit;cursor:pointer}.matrix__peek:hover{border-color:var(--color-border)}.matrix__peek:focus-visible{outline:none;box-shadow:var(--ring)}.matrix__parts{font-weight:400;color:var(--color-text-soft);margin-left:4px}.matrix .matrix__exrow--part{font-weight:400;padding-left:var(--sp-4)}.matrix__partarrow{color:var(--color-text-soft)}.matrix__stuck{font-size:.9em}@media(prefers-color-scheme:dark){.matrix__cell--busy{background:#3a3010;color:#d9b84a}.matrix__cell--passed{background:#1e3320;color:#6fbf73}.matrix__cell--done{background:#14401a;color:#8fd694}}.dbg{font-size:var(--fs-small)}.dbg__bar{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:var(--sp-2);gap:var(--sp-3)}.dbg__label{font-weight:700}.dbg__pos{color:var(--color-text-soft)}.dbg__body{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:var(--sp-3);align-items:start}.dbg__code{margin:0;padding:0;list-style:none;font-family:var(--font-mono);background:#1e1b16;color:#eae6dc;border-radius:var(--radius-small);overflow:auto;max-height:60vh;tab-size:4}.dbg{--dbg-scope-tint: rgba(126, 170, 230, .06);--dbg-scope-rail: rgba(126, 170, 230, .55)}.dbg__line{display:flex;gap:var(--sp-2);padding:0 var(--sp-2);white-space:pre}.dbg__line.is-current{background:#3b4a2f;outline:1px solid #7bb04a}.dbg__ln{color:#948d7e;text-align:right;min-width:2.2em;user-select:none}.dbg__line.is-current .dbg__ln{color:#d4cdbd}.dbg__linecode{flex:1;padding-left:4px}.dbg__side{display:flex;flex-direction:column;gap:var(--sp-2);min-width:0}.dbg__panel{border:1px solid var(--color-border);border-radius:var(--radius-small);padding:var(--sp-2);background:var(--color-bg)}.dbg__panel h4{margin:0 0 var(--sp-1);font-size:var(--fs-small);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-soft)}.dbg__vars{display:flex;flex-direction:column;gap:2px;font-family:var(--font-mono)}.dbg__var{display:flex;gap:6px;padding:1px 4px;border-radius:3px}.dbg__var.is-changed{background:var(--color-diff-bg);color:var(--color-diff-text)}.dbg__var.is-changed .dbg__veq{color:inherit}.dbg__vname{font-weight:700}.dbg__veq{color:var(--color-text-soft)}.dbg__empty{color:var(--color-text-soft);font-style:italic}.dbg__out{margin:0;white-space:pre-wrap;font-family:var(--font-mono);max-height:20vh;overflow:auto}.dbg__in{display:flex;flex-wrap:wrap;gap:6px;font-family:var(--font-mono)}.dbg__inchip{padding:1px 8px;border:1px solid var(--color-border);border-radius:999px;background:var(--color-bg-panel)}.dbg__inchip.is-used{opacity:.4;text-decoration:line-through}.dbg__var--arr{flex-direction:column;align-items:stretch;gap:3px}.dbg__arrhead{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px}.dbg__arrdims,.dbg__arrref{color:var(--color-text-soft)}.dbg__arrtext{color:var(--color-text)}.dbg__cells{display:flex;flex-wrap:wrap;align-items:flex-start;gap:3px}.mem-vec .mem-ptr__to{font-family:var(--font-ui)}.mem-spare{display:inline-block;min-width:1.6em;min-height:1.2em;background:repeating-linear-gradient(135deg,transparent 0 4px,var(--color-border) 4px 6px)}.mem-owner{margin-right:6px;padding:0 6px;border-radius:999px;background:var(--color-info-background);color:var(--color-info)}.mem-arrow--owner{stroke:var(--color-info)!important}.mem-block__state--auto{color:var(--color-info)}.dbg__cell--spare{background:repeating-linear-gradient(135deg,transparent 0 4px,var(--color-border) 4px 6px);opacity:.75;min-width:1.6em}.dbg__cell--obj .dbg__val{display:grid;gap:0 4px;text-align:left;font-size:.92em}.dbg__objf{white-space:nowrap}.dbg__objn{color:var(--color-text-soft)}.dbg__alias{margin-left:8px;padding:0 6px;border:1px dashed var(--color-info);border-radius:var(--radius-small);background:var(--color-info-background);color:var(--color-info);white-space:nowrap}.is-aliased{outline:2px dashed var(--color-info);outline-offset:1px}.dbg__owner{margin-left:6px;padding:0 6px;border-radius:999px;background:var(--color-info-background);color:var(--color-info);white-space:nowrap}.dbg__arrdims--vec{font-family:var(--font-ui)}.dbg__exception{margin:8px 0 0;padding:6px 10px;border-left:3px solid var(--color-error);background:var(--color-error-soft);color:var(--color-text)}.dbg__cell{display:inline-flex;flex-direction:column;align-items:center;min-width:2em;padding:1px 5px 2px;border:1px solid var(--color-text-soft);border-radius:4px;background:var(--color-field);line-height:1.2}.dbg__idx,.dbg__mark,.dbg__gidx{font-size:max(12px,.62em)}.dbg__idx{color:var(--color-text-soft)}.dbg__val{font-weight:700;white-space:pre}.dbg__cell.is-changed{background:var(--color-diff-bg);border-color:var(--color-diff-border);color:var(--color-diff-text)}.dbg__cell.is-changed .dbg__idx,.dbg__cell.is-changed .dbg__mark{color:var(--color-diff-text)}.dbg__arrhead.is-changed,.dbg__arrref.is-changed{background:var(--color-diff-bg);color:var(--color-diff-text);border-radius:3px;padding:0 4px}.dbg__arrhead.is-changed .dbg__arrdims,.dbg__arrhead.is-changed .dbg__arrref,.dbg__arrhead.is-changed .dbg__arrtext{color:inherit}.dbg__arrhead.is-changed{align-self:flex-start}@keyframes dbg-glow{0%{box-shadow:0 0 0 3px var(--color-diff-border)}to{box-shadow:0 0 0 0 transparent}}.dbg .is-changed{animation:dbg-glow 1.2s ease-out}@media(prefers-reduced-motion:reduce){.dbg .is-changed{animation:none}}.dbg__deref{padding-left:1.2em}.dbg__was{font-size:max(12px,.8em);font-weight:400;margin-left:.6em;white-space:nowrap}.dbg__never{font-size:max(12px,.8em);font-style:italic;margin-left:.6em;color:var(--color-text-soft);white-space:nowrap}.dbg__var.is-never-set .dbg__vval,.dbg__cell.is-never-set .dbg__val,.dbg__arrtext.is-never-set{font-style:italic;opacity:.75}.runtimehint__details{margin-top:.3em;font-size:max(12px,.85em)}.runtimehint__details pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:12em;overflow:auto;margin:.3em 0 0}.dbg__was--line{margin:0;align-self:flex-start;white-space:normal;padding:0 4px;border-radius:3px;background:var(--color-diff-bg);color:var(--color-diff-text)}.dbg__cell.is-marked{outline:2px solid var(--color-accent);outline-offset:1px}.dbg__mark{color:var(--color-accent);font-weight:700;white-space:nowrap}.dbg__mark--ptr{color:var(--color-info)}.dbg__cell.is-nul .dbg__val{color:var(--color-text-soft);font-weight:400}.dbg__cell--out{border:1px dashed var(--color-error);background:transparent}.dbg__cell--out .dbg__val,.dbg__cell--out .dbg__idx{color:var(--color-error)}.dbg__cell--more{align-self:center;justify-content:center;border-style:dotted;color:var(--color-text-soft);background:transparent}.dbg__arrout{margin:0;color:var(--color-error);font-family:var(--font-ui)}.dbg__grid{display:grid;gap:3px;justify-content:start;align-items:center;max-width:100%;overflow-x:auto}.dbg__gidx{color:var(--color-text-soft);text-align:center}.dbg__gidx--row{text-align:right;padding-right:2px}.dbg__cell--grid{min-width:1.8em}.dbg__arrtext--row{padding-left:6px;white-space:pre}.dbg__gridwrap{display:flex;flex-direction:column;align-items:flex-start;gap:3px;max-width:100%}.dbg__gridtext{display:grid;grid-template-columns:auto auto;gap:3px;justify-content:start;align-items:center;max-width:100%;overflow-x:auto}.dbg__arrtext--row.is-changed{background:var(--color-diff-bg);color:var(--color-diff-text);border-radius:3px}.screen-debug .dbg__idx,.screen-debug .dbg__mark,.screen-debug .dbg__gidx{font-size:var(--wall-base)}.screen-debug .dbg__val{font-size:var(--wall-text)}.screen-debug .dbg__was,.screen-debug .dbg__never{font-size:var(--wall-base)}.debug-panel{margin:var(--sp-3) 0;padding:var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg-panel)}.debug-panel__bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--sp-2)}.debug-panel__bar .panel__title{margin:0}.debug-panel__row{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.dbg-code-input.ex-code-editor{height:190px}.debug-status{font-size:var(--fs-small);color:var(--color-text-soft)}.debug-status.is-error{color:var(--color-error)}.debug-transport{display:flex;align-items:center;gap:var(--sp-2);margin:var(--sp-3) 0}.debug-transport input[type=range]{flex:1}.debug-pos{font-size:var(--fs-small);color:var(--color-text-soft);min-width:6em}.screen-debug{width:100%;max-width:1400px}.screen-debug.dbg,.screen-debug .dbg{font-size:var(--wall-base)}.screen-debug .dbg__label{font-size:var(--wall-text)}.screen-debug .dbg__panel h4{font-size:1em}.dbg-host__vars[hidden],.dbg-host__algo[hidden]{display:none}.algo .dbg__bar{flex-wrap:wrap}.algo__chips{display:flex;gap:var(--sp-2);flex-wrap:wrap;margin-left:auto}.algo__chip{padding:0 .5em;border:1px solid var(--color-border);border-radius:999px;background:var(--color-bg-panel);white-space:nowrap}.algo__vchips{display:flex;gap:var(--sp-2);flex-wrap:wrap}.algo__vchips:empty{display:none}.algo__chip--version{font-weight:700}.algo__chip--tests.is-ok{color:var(--color-ok);border-color:currentColor}.algo__chip--tests.is-fail{color:var(--color-error);border-color:currentColor}.algo__change{margin:0 0 var(--sp-2);font-weight:600}.algo-answer[hidden]{display:none}.algo-q{margin:var(--sp-2) 0;padding:var(--sp-2) var(--sp-3);border:2px solid var(--color-accent);border-radius:var(--radius-small);background:var(--color-bg-panel)}.algo-q[hidden]{display:none}.algo__stoptitle{margin:0 0 var(--sp-1);font-weight:700;color:var(--color-accent)}.algo__stoptitle[hidden]{display:none}.algo-inp{margin:var(--sp-2) 0;padding:var(--sp-2) var(--sp-3);border:2px solid var(--color-accent);border-radius:var(--radius-small);background:var(--color-bg-panel)}.algo-inp[hidden]{display:none}.algo-inp__title{margin:0;font-weight:700;color:var(--color-accent)}.algo-inp__lead,.algo-inp__count,.algo-inp__mine{margin:var(--sp-1) 0}.algo-inp__slots,.algo-inp__nums,.algo-inp__acts,.algo-inp__plays{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;margin:var(--sp-1) 0}.algo-inp__slot{display:inline-flex;flex-direction:column;align-items:center;min-width:2.6em;padding:var(--sp-1) var(--sp-2);border:2px solid var(--color-border);border-radius:var(--radius-small);font-family:var(--font-mono);font-weight:700}.algo-inp__slot small{font-weight:400;color:var(--color-text-soft)}.algo-inp__num{min-width:2.75em;min-height:2.75em;font-family:var(--font-mono);font-size:1.15em}.algo-inp__predict{width:5em}.algo-inp__result{margin:var(--sp-2) 0;padding:var(--sp-1) var(--sp-2);border-left:4px solid var(--color-border)}.algo-inp__result p{margin:var(--sp-1) 0;overflow-wrap:anywhere}.algo-inp__result.is-ok{border-left-color:var(--color-ok)}.algo-inp__result.is-bad{border-left-color:var(--color-error)}.algo-inp__hist{display:flex;align-items:flex-end;gap:var(--sp-2);height:6em;margin:var(--sp-2) 0}.algo-inp__col{flex:1 1 0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;min-width:0}.algo-inp__bar{width:100%;min-height:2px;background:var(--color-border);border-radius:3px 3px 0 0}.algo-inp__col.is-goal .algo-inp__bar{background:var(--color-accent)}.algo-inp__subs{list-style:none;margin:var(--sp-1) 0;padding:0;display:flex;flex-wrap:wrap;gap:var(--sp-1) var(--sp-3)}.algo-inp__sub{font-family:var(--font-mono)}.algo-inp__sub.is-playing,.algo-inp__play.is-playing{outline:3px solid var(--color-accent);outline-offset:2px}.algo-inp__aha{margin:var(--sp-2) 0 0;font-weight:700}.screen-algocard .algo-inp{font-size:var(--wall-base)}.algo-ord{margin:var(--sp-2) 0;padding:var(--sp-2) var(--sp-3);border:2px solid var(--color-accent);border-radius:var(--radius-small);background:var(--color-bg-panel)}.algo-ord[hidden]{display:none}.algo-ord__title{margin:0;font-weight:700;color:var(--color-accent)}.algo-ord__lead,.algo-ord__count,.algo-ord__mine{margin:var(--sp-1) 0}.algo-ord__acts,.algo-ord__playbar,.algo-ord__plays,.algo-ord__lines{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;margin:var(--sp-1) 0}.algo-ord__result{margin:var(--sp-2) 0;padding:var(--sp-1) var(--sp-2);border-left:4px solid var(--color-border)}.algo-ord__result p{margin:var(--sp-1) 0;overflow-wrap:anywhere}.algo-ord__result.is-ok{border-left-color:var(--color-ok)}.algo-ord__result.is-bad{border-left-color:var(--color-error)}.algo-ord__legend,.algo-ord__subs{list-style:none;margin:var(--sp-1) 0;padding:0;display:grid;gap:2px}.algo-ord__legend code{overflow-wrap:anywhere}.algo-ord__sub{font-family:var(--font-mono);overflow-wrap:anywhere}.algo-ord__sub.is-playing,.algo-ord__line.is-picked{outline:3px solid var(--color-accent);outline-offset:2px}.algo-ord__line code{overflow-wrap:anywhere}.screen-algocard .algo-ord{font-size:var(--wall-base)}.algo-q__label{margin:0;color:var(--color-accent);font-weight:700}.algo-q__text{margin:var(--sp-1) 0 var(--sp-2);font-size:1.25em;font-weight:700;font-family:var(--font-mono)}.algo-q__count,.algo-q__correct,.algo-q__wrong,.algo-q__shift{margin:var(--sp-1) 0}.algo-q__correct{font-weight:700}.algo-q__notyet[hidden]{display:none}.algo-q__notyet{margin:var(--sp-1) 0 0;color:var(--color-text-soft)}.algo-q__tally{list-style:none;margin:var(--sp-1) 0;padding:0;display:grid;gap:2px}.algo-q__tally li{display:grid;grid-template-columns:minmax(4em,max-content) 1fr 2.5em;gap:var(--sp-2);align-items:center}.algo-q__tally li.is-correct .algo-q__v{font-weight:700;color:var(--color-ok)}.algo-q__v{font-family:var(--font-mono)}.algo-q__bar{height:.8em;min-width:2px;border-radius:2px;background:var(--color-accent)}.algo-q__n{text-align:right;font-variant-numeric:tabular-nums}.algo__vote{min-width:1.6em;text-align:center;color:#e6b26e;font-weight:700;user-select:none}.algo__line.has-vote .algo__vote{background:#e6b26e2e;border-radius:3px}.algo__line.is-voted{outline:2px solid #e6b26e;outline-offset:-2px}.algo__line.is-bug{box-shadow:inset 4px 0 #f07c6c;background:#f07c6c29}.algo__code.is-voting .algo__line{cursor:pointer}.algo__linevote{margin:0 0 var(--sp-1);font-weight:600}.algo__linevote[hidden]{display:none}.algo-q__claims{list-style:none;margin:var(--sp-1) 0;padding:0;display:grid;gap:var(--sp-1)}.algo-q__claims li{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--sp-2)}.algo-q__verdict.is-yes,.algo-q__round.is-yes{color:var(--color-ok)}.algo-q__verdict.is-no,.algo-q__round.is-no{color:var(--color-error)}.algo-q__rounds{display:inline-flex;gap:2px;font-family:var(--font-mono);font-weight:700}.algo-q__yesno{color:var(--color-text-soft)}.algo-answer__claim{flex-basis:100%}.algo-ask{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);margin:0 0 var(--sp-2)}.algo-ask[hidden]{display:none}.algo-answer__part{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);margin:0 0 var(--sp-2);padding:var(--sp-1);border-radius:var(--radius-small)}.algo-answer__opt{min-width:3em;font-family:var(--font-mono)}.algo-answer__opt.is-mine{color:var(--color-accent-text);background:var(--color-accent);border-color:transparent}.algo-answer__opt.is-correct{outline:3px solid var(--color-ok);outline-offset:2px}.algo-answer__part.is-right{border-left:4px solid var(--color-ok)}.algo-answer__part.is-wrong{border-left:4px dashed var(--color-error)}.algo-answer__was{color:var(--color-text-soft)}.algo-answer__status{margin:0;min-height:1.3em}.algo__change[hidden]{display:none}.algo__change code{font-family:var(--font-mono)}.algo__body{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr)}.algo__cnt{min-width:2.4em;text-align:right;color:#c2bbad;user-select:none}.algo__arrow{min-width:1em;color:#e6b26e;font-weight:700;user-select:none}.algo__line.is-just{background:#e6b26e24}.algo__line.is-just .dbg__ln{color:#d4cdbd}.algo__chain{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--sp-1) var(--sp-2)}.algo__step{font-family:var(--font-mono)}.algo__step.is-last{font-weight:700}.algo__pre{font-style:italic}.algo__then,.algo__soft{color:var(--color-text-soft)}.algo__q{color:var(--color-accent);font-weight:700}.algo__list{margin:0;padding-left:1.2em}.algo__list code{font-family:var(--font-mono)}.algo__true{color:var(--color-ok)}.algo__false{color:var(--color-error)}.algo__out{max-height:8em}.algo__subgoal{font-weight:700;color:var(--color-accent)}.algo__subgoal[hidden],.algo__stop[hidden],.algo__summary[hidden]{display:none}.algo__summary{padding:var(--sp-1) var(--sp-2);border-left:4px solid var(--color-accent);background:var(--color-bg-panel);margin-bottom:var(--sp-1)}.algo__wall>:first-child{margin-top:0}.algo__wall>:last-child{margin-bottom:0}.algo-teacher__stop{margin:0 0 var(--sp-2);padding:var(--sp-1) var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small)}.algo-teacher__stop[hidden],.algo-teacher__notes[hidden]{display:none}.algo-teacher__notes{margin:var(--sp-1) 0 0;white-space:pre-wrap;color:var(--color-text-soft)}.algo-pod__name{font-family:var(--font-mono);font-weight:700;margin-bottom:var(--sp-1)}.algo-pod__stage{display:grid;grid-template-columns:repeat(var(--algo-cols),minmax(0,1fr));column-gap:4px;row-gap:2px;align-items:end}.algo-pod__float{grid-row:1;justify-self:center;padding:0 .4em;border:2px solid var(--color-accent);border-radius:var(--radius-small);background:var(--color-bg);font-family:var(--font-mono);font-weight:700;white-space:nowrap}.algo-pod__float.is-never{font-style:italic}.algo-pod__never{font-weight:400;color:var(--color-text-soft)}.algo-pod__region{grid-row:2;border-bottom:3px solid var(--color-accent);text-align:center;color:var(--color-accent);font-weight:700;white-space:nowrap;overflow:hidden}.algo-pod__region.is-empty{border-bottom-style:dashed;color:var(--color-text-soft)}.algo-pod__region.is-broken{border-bottom:6px double var(--color-error);color:var(--color-error);white-space:normal}.algo-pod__cell{grid-row:3;display:flex;flex-direction:column;align-items:center;min-width:0}.algo-pod__tag,.algo-pod__was,.algo-pod__arrow{min-height:1.3em;white-space:nowrap}.algo-pod__tag{font-family:var(--font-mono);color:var(--color-text-soft)}.algo-pod__tag.is-raised{margin-bottom:1.3em}.algo-pod__box{width:100%;padding:.25em 0;border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg);text-align:center;font-family:var(--font-mono);font-weight:700}.algo-pod__well{position:relative;width:100%;height:7em}.algo-pod__stage.is-bars .algo-pod__well{margin-top:1.4em}.algo-pod__zero{position:absolute;left:0;right:0;border-top:1px solid var(--color-border)}.algo-pod__bar{position:absolute;left:12%;right:12%;border-radius:3px 3px 0 0;background:var(--color-accent)}.algo-pod__bar.is-unknown{background:repeating-linear-gradient(45deg,var(--color-border) 0 4px,transparent 4px 8px);border:1px dashed var(--color-text-soft)}.algo-pod__val{position:absolute;left:0;right:0;text-align:center;font-family:var(--font-mono);font-weight:700}.algo-pod__box .algo-pod__val{position:static}.algo-pod__idx{font-family:var(--font-mono);color:var(--color-text-soft)}.algo-pod__arrow{color:var(--color-accent);font-family:var(--font-mono);font-weight:700}.algo-pod__cell.is-changed .algo-pod__box{background:var(--color-diff-bg);border-color:var(--color-diff-border);color:var(--color-diff-text)}.algo-pod__cell.is-changed .algo-pod__bar{background:var(--color-diff-border)}.algo-pod__cell.is-changed .algo-pod__was{color:var(--color-diff-text);background:var(--color-diff-bg);border-radius:3px;padding:0 .2em}.algo-pod__cell.is-compared .algo-pod__box,.algo-pod__cell.is-compared .algo-pod__well{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:var(--radius-small)}.algo-pod__cell.is-outside .algo-pod__box{border:2px dashed var(--color-error);background:transparent}.algo-pod__cell.is-outside .algo-pod__was{color:var(--color-error)}.algo-pod__cell.is-never .algo-pod__val{font-style:italic;opacity:.75}.algo-pod__outs{margin-top:var(--sp-1);color:var(--color-error);font-family:var(--font-mono)}.algo-ghost{position:fixed;z-index:50;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-small);background:var(--color-accent);color:var(--color-accent-text);font-family:var(--font-mono);font-weight:700;pointer-events:none;transition:transform .5s ease}@media(prefers-reduced-motion:reduce){.algo-ghost{display:none}}.screen-debug .algo .dbg__code{max-height:72vh}.screen-debug .algo__body,.debug-mirror .algo__body,.algo-teacher__mirror .algo__body{display:flex;flex-wrap:wrap}.screen-debug .algo__body>.dbg__code,.debug-mirror .algo__body>.dbg__code,.algo-teacher__mirror .algo__body>.dbg__code{flex:0 1 auto;max-width:100%}.screen-debug .algo__body>.dbg__side,.debug-mirror .algo__body>.dbg__side,.algo-teacher__mirror .algo__body>.dbg__side{flex:1 1 32em;min-width:0}.screen-debug:has(.algo__body),.screen-algocard:has(.algo__body){max-width:none}.algo__podium{overflow-x:auto}.mem__body{display:flex;flex-wrap:wrap;gap:var(--sp-3);align-items:flex-start}.mem__left{flex:0 1 auto;max-width:100%;min-width:0;display:flex;flex-direction:column;gap:var(--sp-2)}.mem__side{flex:1 1 32em;min-width:0;display:flex;flex-direction:column;gap:var(--sp-2)}.mem__code{padding-bottom:1.5em}.mem__mark{min-width:1em;color:#e6b26e;font-weight:700;user-select:none}.mem__line.is-just{background:#e6b26e24}.mem__line.is-just .dbg__ln{color:#d4cdbd}.mem__line.has-event{box-shadow:inset 4px 0 #f07c6c;background:#f07c6c29}.mem__line.has-event .mem__mark{color:#f07c6c}.mem__alert{margin:0 0 var(--sp-2);padding:var(--sp-1) var(--sp-2);border:2px solid var(--color-error);border-radius:var(--radius-small);background:var(--color-error-background)}.mem__alert[hidden]{display:none}.mem__event{margin:0;font-weight:600}.mem__event:before{content:"● ";color:var(--color-error)}.mem__space{position:relative;display:flex;flex-wrap:wrap;gap:var(--sp-3) var(--sp-5);align-items:flex-start;padding:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg)}.mem__space h4{margin:0 0 var(--sp-1);font-size:var(--fs-small);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-soft)}.mem__stack{flex:0 1 auto;min-width:0}.mem__frames{display:flex;flex-direction:column;gap:var(--sp-2)}.mem__heap{flex:1 1 22em;min-width:0}@media(min-width:900px){.mem__space>:is(.mem__stack,.mem__heap,.mem__files){min-width:min-content}}.mem__arrows{position:absolute;left:0;top:0;overflow:visible;pointer-events:none}.mem__empty{margin:0;color:var(--color-text-soft);font-style:italic}.mem__end{margin:0;font-weight:600}.mem__end.is-leak{color:var(--color-error)}.mem__end[hidden],.mem__note[hidden]{display:none}.mem__note{margin:0;color:var(--color-text-soft)}.mem-frame{padding:var(--sp-1) var(--sp-2);border:2px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg-panel)}.mem-frame.is-current{border-color:var(--color-ok);box-shadow:0 0 0 1px var(--color-ok)}.mem-frame__head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--sp-3);margin-bottom:.2em}.mem-frame__func{font-family:var(--font-mono);font-weight:700}.mem-frame__line{color:var(--color-text-soft);white-space:nowrap}.mem-frame--globals{border-style:dashed}.mem-frames-toggle{align-self:flex-start;padding:.1em .6em;border:1.5px dashed var(--color-text-soft);border-radius:var(--radius-small);background:var(--color-bg-panel);color:var(--color-text);font:inherit;cursor:pointer}.mem-frames-toggle:hover{border-style:solid}.mem-frame__vars{display:grid;grid-template-columns:auto minmax(0,auto);gap:.3em .6em;align-items:center}.mem-var{display:contents}.mem-var__head{display:flex;flex-direction:column;align-items:flex-end;min-width:0}.mem-var__val{display:flex;flex-wrap:wrap;align-items:center;gap:.15em .4em;min-width:0}.mem-var__name{font-family:var(--font-mono);font-weight:600}.mem-var__type{font-family:var(--font-mono);font-size:max(12px,.8em);color:var(--color-text-soft);white-space:nowrap}.mem-cell{display:inline-flex;align-items:center;gap:.35em;min-width:2.2em;padding:.05em .4em;border:1.5px solid var(--color-text-soft);border-radius:4px;background:var(--color-bg);font-family:var(--font-mono);white-space:nowrap}.mem-cell.is-changed{border-color:var(--color-diff-border);background:var(--color-diff-bg);color:var(--color-diff-text)}.mem-cell.is-unset{border-style:dashed;color:var(--color-text-soft);font-style:italic}.mem-ptr__dot{flex:none;width:.6em;height:.6em;border-radius:50%;background:currentColor}.mem-ptr.st-null{color:var(--color-text-soft)}.mem-ptr.st-unset{border-style:dashed;color:var(--color-text-soft);font-style:italic}.mem-ptr.st-freed,.mem-ptr.st-freed-garbage,.mem-ptr.st-stack-gone,.mem-ptr.st-wild{border-color:var(--color-error);border-width:2px;color:var(--color-error);font-weight:600}.mem-was{padding:0 .3em;border-radius:3px;background:var(--color-diff-bg);color:var(--color-diff-text);font-size:max(12px,.8em);white-space:nowrap}.mem__never{color:var(--color-text-soft);font-size:max(12px,.8em);font-style:italic;white-space:nowrap}.mem__warn{color:var(--color-error);font-weight:600;white-space:nowrap}.mem-addr{color:var(--color-text-soft);font-family:var(--font-mono);font-size:max(12px,.8em)}.mem-bytes{letter-spacing:.05em}.mem-struct{display:inline-grid;grid-template-columns:auto auto;gap:.1em .5em;align-items:center;padding:.1em .4em .15em;border:1.5px solid var(--color-border);border-radius:6px;background:var(--color-bg-panel)}.mem-struct__type{grid-column:1 / -1;color:var(--color-text-soft);font-family:var(--font-mono);font-size:max(12px,.8em)}.mem-field{display:contents}.mem-struct--row{display:inline-flex;flex-wrap:wrap;align-items:center;gap:.15em .5em;padding:.1em .4em}.mem-struct--row>.mem-field{display:inline-flex;align-items:center;gap:.3em}.mem-field__name{color:var(--color-text-soft);font-family:var(--font-mono);text-align:right;white-space:nowrap}.mem-field__val{display:inline-flex;flex-wrap:wrap;align-items:center;gap:.15em .4em}.mem-arr{display:inline-flex;flex-wrap:wrap;align-items:flex-end;gap:.2em}.mem-arr__item{display:inline-flex;flex-direction:column;align-items:center}.mem-arr__idx{color:var(--color-text-soft);font-family:var(--font-mono);font-size:max(12px,.8em)}.mem-arr--tall{flex-direction:column;align-items:flex-start}.mem-arr--tall>.mem-arr__item{flex-direction:row;align-items:center;gap:max(16px,1.2em)}.mem-arr__more{align-self:center;color:var(--color-text-soft)}.mem__heap>h4{display:inline-block;margin-right:.7em}.mem__heapbody{display:contents}.mem__heapsum,.mem__heap .mem__empty{display:inline;margin:0;color:var(--color-text-soft)}.mem-layers{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--sp-3) 2.4em;margin-top:var(--sp-1)}.mem-layer{display:flex;flex-direction:column;gap:var(--sp-2)}.mem-block{padding:.15em .45em .25em;border:2px solid var(--color-text-soft);border-radius:6px;background:var(--color-bg-panel)}.mem-block__head{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 .5em;font-family:var(--font-mono)}.mem-block__size{color:var(--color-text-soft);font-family:var(--font-ui);white-space:nowrap}.mem-block__no{font-weight:700}.mem-block__type{color:var(--color-text-soft);white-space:nowrap}.mem-block__new{color:var(--color-ok);font-weight:700}.mem-block__meta{display:flex;flex-wrap:wrap;gap:0 .7em;color:var(--color-text-soft);font-size:max(12px,.8em)}.mem-block__state{display:inline-block;padding:0 .45em;border-radius:999px;background:var(--color-error);color:var(--color-bg);font-size:max(12px,.8em);font-weight:600}.mem-block__body{display:grid;grid-template-columns:auto auto;gap:.1em .5em;align-items:center;margin-top:.15em}.mem-block__body>:not(.mem-field){grid-column:1 / -1}.mem-block.is-new{border-style:dashed;border-color:var(--color-ok)}.mem-block.st-freed,.mem-block.st-moved{border-style:dashed;border-color:var(--color-error);background:repeating-linear-gradient(135deg,var(--color-bg-panel) 0 7px,var(--color-error-soft) 7px 9px)}.mem-block.st-freed .mem-block__body,.mem-block.st-moved .mem-block__body{opacity:.7}.mem-block.st-leak{border-style:dashed;border-color:var(--color-error)}.mem-leaks{margin-top:var(--sp-3);padding-top:var(--sp-2);border-top:2px dashed var(--color-error)}.mem-leaks__title{margin:0 0 var(--sp-1);color:var(--color-error);font-weight:600}.mem-leaks__row{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--sp-2) 2.4em;margin-bottom:var(--sp-2)}.mem-collapsed{padding:.6em 1em;border:2px dotted var(--color-text-soft);border-radius:6px;color:var(--color-text-soft);font-style:italic;white-space:nowrap}.mem-chain__cap{margin:0 0 .1em;color:var(--color-text-soft);font-family:var(--font-mono)}.mem-chain table{border-collapse:separate;border-spacing:0 .2em;margin-right:2.4em}.mem-chain th{padding:0 .45em;font-weight:400;text-align:left;white-space:nowrap}.mem-chain__field{color:var(--color-text-soft);font-family:var(--font-mono)}.mem-row>*{padding:0 .45em;border-block:2px solid var(--color-text-soft);background:var(--color-bg-panel)}.mem-row .mem-cell{border-color:transparent;background:transparent;padding-block:0}.mem-row .mem-cell.is-changed{border-color:var(--color-diff-border);background:var(--color-diff-bg)}.mem-row>:first-child{border-left:2px solid var(--color-text-soft);border-radius:6px 0 0 6px}.mem-row>:last-child{border-right:2px solid var(--color-text-soft);border-radius:0 6px 6px 0}.mem-row__no{font-family:var(--font-mono);font-weight:700}.mem-row.is-new>*{border-style:dashed;border-color:var(--color-ok)}.mem__files{flex:1 1 18em;min-width:0}.mem__heap:has(.mem__empty){flex:0 1 auto}.mem__filecards{display:flex;flex-direction:column;gap:var(--sp-2)}.mem-file{padding:.2em .5em .4em;border:2px solid var(--color-info);border-radius:6px;background:var(--color-bg-panel)}.mem-file.is-closed{border-style:dashed;border-color:var(--color-text-soft)}.mem-file.is-closed .mem-file__bytes{opacity:.75}.mem-file__head{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 .6em}.mem-file__name{font-family:var(--font-mono);font-weight:700}.mem-file__mode,.mem-file__state,.mem-file__pos{color:var(--color-text-soft);white-space:nowrap}.mem-file__lamps{display:flex;flex-wrap:wrap;gap:.1em 1em;margin:.15em 0}.mem-lamp{color:var(--color-text-soft);white-space:nowrap}.mem-lamp:before{content:"";display:inline-block;width:.7em;height:.7em;margin-right:.3em;border:2px solid currentColor;border-radius:50%;vertical-align:-.05em}.mem-lamp.is-on{color:var(--color-text);font-weight:700}.mem-lamp.is-on:before{background:var(--color-diff-border);border-color:var(--color-diff-border)}.mem-lamp--error.is-on:before{background:var(--color-error);border-color:var(--color-error)}.mem-file__bytes{display:flex;flex-wrap:wrap;row-gap:1.1em;padding:1em 0 .2em;font-family:var(--font-mono)}.mem-byte{position:relative;min-width:1.5em;margin-left:-1.5px;padding:0 .15em;border:1.5px solid var(--color-text-soft);background:var(--color-bg);text-align:center;line-height:1.5}.mem-byte.is-read{background:var(--color-bg-deep);color:var(--color-text-soft)}.mem-byte.is-buf{box-shadow:inset 0 -4px 0 var(--color-info)}.mem-byte.is-cursor{border-color:var(--color-accent);border-width:2px;z-index:1}.mem-byte.is-cursor:before{content:"▼";position:absolute;left:50%;bottom:100%;transform:translate(-50%);color:var(--color-accent);font-weight:700;line-height:1.1}.mem-byte--eof{border-style:dashed;color:var(--color-text-soft);padding:0 .3em}.mem-byte--more{border-color:transparent;background:transparent;color:var(--color-text-soft)}.mem-byte--pending{border-color:var(--color-info)}.mem-file__pending{margin-top:.2em}.mem-file__lane,.mem-file__legend{margin:0;color:var(--color-text-soft);font-size:max(12px,.8em)}.screen-debug .mem-file__lane,.screen-debug .mem-file__legend{font-size:var(--wall-base)}.mem-arrow{fill:none;stroke:var(--color-text);stroke-width:2}.mem-arrow--changed{stroke:var(--color-diff-border);stroke-width:3.5}.mem-arrow--freed{stroke:var(--color-error);stroke-dasharray:7 4}.mem-head--ok{fill:var(--color-text)}.mem-head--changed{fill:var(--color-diff-border)}.mem-head--freed{fill:var(--color-error)}.mem__arrows.has-focus .mem-arrow:not(.is-focus){opacity:.15}.mem.is-picking .is-pickable{cursor:pointer;outline:2px dashed var(--color-accent);outline-offset:2px}.mem.is-picking .is-pickable:hover,.mem.is-picking .is-pickable:focus-visible{outline:3px solid var(--color-accent);outline-offset:2px}.mem .is-mark-picked{outline:3px solid var(--color-accent);outline-offset:2px}.mem .is-mark-right,.mem .is-mark-answer{outline:3px solid var(--color-ok);outline-offset:2px}.mem .is-mark-answer{outline-style:dashed}.mem .is-mark-wrong{outline:3px solid var(--color-error);outline-offset:2px}.mem .is-mark-missed{outline:3px dashed var(--color-warning);outline-offset:2px}.mem .is-mark-asked{outline:2px dotted var(--color-accent);outline-offset:2px}.mem :is(.is-mark-picked,.is-mark-right,.is-mark-answer,.is-mark-wrong,.is-mark-missed,.is-mark-asked):is(.mem-block)>.mem-block__head:after,.mem :is(.is-mark-picked,.is-mark-right,.is-mark-answer,.is-mark-wrong,.is-mark-missed,.is-mark-asked):is(.mem-row)>th:first-child:after,.mem :is(.is-mark-picked,.is-mark-right,.is-mark-answer,.is-mark-wrong,.is-mark-missed,.is-mark-asked):not(.mem-block,.mem-row):before{display:inline-block;flex:none;margin-left:.35em;min-width:1.35em;height:1.35em;border-radius:50%;vertical-align:middle;font:700 .8rem/1.35em var(--font-ui);font-style:normal;text-align:center;color:#fff}.mem .is-mark-picked.mem-block>.mem-block__head:after,.mem .is-mark-picked.mem-row>th:first-child:after,.mem .is-mark-picked:not(.mem-block,.mem-row):before{content:"●";background:var(--color-accent)}.mem :is(.is-mark-right,.is-mark-answer).mem-block>.mem-block__head:after,.mem :is(.is-mark-right,.is-mark-answer).mem-row>th:first-child:after,.mem :is(.is-mark-right,.is-mark-answer):not(.mem-block,.mem-row):before{content:"✓";background:var(--color-ok)}.mem .is-mark-wrong.mem-block>.mem-block__head:after,.mem .is-mark-wrong.mem-row>th:first-child:after,.mem .is-mark-wrong:not(.mem-block,.mem-row):before{content:"✗";background:var(--color-error)}.mem .is-mark-missed.mem-block>.mem-block__head:after,.mem .is-mark-missed.mem-row>th:first-child:after,.mem .is-mark-missed:not(.mem-block,.mem-row):before{content:"!";background:var(--color-warning)}.mem .is-mark-asked.mem-block>.mem-block__head:after,.mem .is-mark-asked.mem-row>th:first-child:after,.mem .is-mark-asked:not(.mem-block,.mem-row):before{content:"?";background:var(--color-accent)}.mem :is(.is-mark-picked,.is-mark-right,.is-mark-answer,.is-mark-wrong,.is-mark-missed,.is-mark-asked):not(.mem-block,.mem-row):before{margin-left:0}.screen-debug .mem{font-size:var(--wall-base)}.screen-debug .mem__side{flex-basis:26em}.screen-debug .mem__space h4,.screen-debug .mem-was,.screen-debug .mem__never,.screen-debug .mem-addr,.screen-debug .mem-arr__idx,.screen-debug .mem-block__meta,.screen-debug .mem-block__state,.screen-debug .mem-struct__type,.screen-debug .mem__note{font-size:var(--wall-base)}.screen-debug .mem-var__type,.screen-debug .mem-block__meta--site{display:none}.screen-debug .mem .dbg__code{max-height:72vh}.screen-debug:has(.mem__body){max-width:none}.mem-frame__vars>.mem__empty{grid-column:1 / -1}@media(max-width:700px){.algo__body{grid-template-columns:minmax(0,1fr)}}.debug-mode,.debug-size{display:inline-flex;align-items:center;gap:var(--sp-1);flex-wrap:wrap}.debug-size{display:flex;gap:var(--sp-2);margin:0 0 var(--sp-2)}.debug-size[hidden],.debug-mode[hidden]{display:none}.debug-mode [aria-pressed=true],.debug-size [aria-pressed=true]{color:var(--color-accent-text);background:var(--color-accent);border-color:transparent}.debug-guess{margin:0 0 var(--sp-2);font-size:var(--fs-small);color:var(--color-text-soft)}.screen-algocard{display:flex;flex-direction:column;gap:var(--sp-3);width:100%;max-width:1600px}.screen-algocard[hidden],.present-view__algocard[hidden]{display:none}.screen-algocard>.screen-algocard__view{order:1}.screen-algocard__intro{display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);text-align:center;padding:var(--sp-5) var(--sp-4)}.screen-algocard__intro.is-small{flex-direction:row;justify-content:flex-start;padding:0;text-align:left}.screen-algocard__intro.is-small .screen-algocard__text{display:none}.screen-algocard__text{font-size:var(--wall-text);max-width:60ch}.screen-algocard .algo-q,.screen-algocard .algo-fill{font-size:var(--wall-base)}.algo-self{margin:var(--sp-2) 0;padding:var(--sp-2) var(--sp-3);border:2px solid var(--color-accent);border-radius:var(--radius-small);background:var(--color-bg-panel)}.algo-self[hidden]{display:none}.algo-self__title{margin:0 0 var(--sp-1);font-weight:700;color:var(--color-accent)}.algo-self__n,.algo-self__sum{margin:0 0 var(--sp-1)}.algo-self__verdict.is-right,.algo-self__parts .is-right{color:var(--color-ok)}.algo-self__verdict.is-wrong,.algo-self__parts .is-wrong{color:var(--color-error)}.algo-self__verdict{font-weight:700}.algo-self__parts,.algo-self__qs,.algo-self__rows{margin:var(--sp-1) 0;padding-left:1.4em}.algo-self__qs .is-hardest{font-weight:700}.screen-algocard .algo-self,.screen-debug .algo-q{font-size:var(--wall-base)}.present-view__algocard{display:flex;flex-direction:column;gap:var(--sp-2);min-width:0}.present-view__algointro.is-small .md-text{display:none}.algo-follow__bar{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;margin-bottom:var(--sp-2)}.algo-follow__who{flex:1 1 12em;color:var(--color-text-soft)}.algo-follow__error{color:var(--color-error);font-weight:600}.algo-follow__error[hidden],.algo-follow__view[hidden],.algo-follow__follow[hidden]{display:none}.algo-follow__bar .btn:disabled{opacity:.45;cursor:not-allowed}@media(min-width:701px){.present-view__algocard .algo__body{grid-template-columns:minmax(0,max-content) minmax(15em,1fr)}}.algo-teacher__warn{color:var(--color-error)}.algo-teacher__mirror{max-width:100%;overflow-x:auto}.algo-form__preview{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.algo-form__cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.8fr) minmax(0,1.2fr);gap:var(--sp-3);align-items:start}@media(max-width:1100px){.algo-form__cols{grid-template-columns:minmax(0,1fr)}}.algo-set__code{max-height:50vh}.algo-set__name{all:unset;cursor:pointer;border-bottom:1px dashed currentColor}.algo-set__name:focus-visible{outline:2px solid var(--color-accent)}.algo-set__name.is-array{background:#e6b26e40}.algo-set__name.is-arrow{background:#7eaae64d}.algo-set__name.is-floating{background:#93c98f4d}.algo-set__menu{position:absolute;z-index:20;display:flex;flex-direction:column;gap:2px;padding:var(--sp-1);margin-top:1.4em;border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg);color:var(--color-text);box-shadow:0 4px 14px #00000040;white-space:normal}.algo-set__code .dbg__linecode{position:relative}.algo-set__state{margin:0 0 var(--sp-2)}.algo-set__badge{padding:0 .5em;border-radius:999px;background:var(--color-bg-panel);border:1px solid var(--color-border);font-size:var(--fs-small)}.algo-set__missing{color:var(--color-error)}.algo-set__group{border:1px solid var(--color-border);border-radius:var(--radius-small);margin:0 0 var(--sp-2);padding:var(--sp-1) var(--sp-2);display:flex;flex-wrap:wrap;gap:var(--sp-1) var(--sp-3)}.algo-set__check{white-space:nowrap}.algo-teacher__settings{margin:var(--sp-2) 0}.algo-teacher__settings[hidden],.algo-form__settings[hidden],.algo-form__script[hidden]{display:none}.algo-tl{display:flex;flex-wrap:wrap;gap:2px;padding:var(--sp-1);border:1px solid var(--color-border);border-radius:var(--radius-small)}.algo-tl:focus-visible{outline:2px solid var(--color-accent)}.algo-tl__step{width:12px;height:22px;padding:0;border:0;border-radius:2px;background:var(--color-border);cursor:pointer}.algo-tl__step.is-band{box-shadow:inset 0 -4px #7eaae673}.algo-tl__step.is-round{background:#7eaae6}.algo-tl__step.is-compare{background:#e6b26e}.algo-tl__step.is-write{background:#93c98f}.algo-tl__step.is-print{background:#c2bbad}.algo-tl__step.is-press{height:26px}.algo-tl__step.is-stop{outline:3px solid var(--color-accent);outline-offset:1px}.algo-tl__step.is-selected{transform:translateY(-3px);box-shadow:0 3px 0 var(--color-text)}.algo-script{margin-top:var(--sp-2)}.algo-script__presets,.algo-script__play{display:inline-flex;flex-wrap:wrap;gap:var(--sp-1);align-items:center}.algo-script__where{margin:var(--sp-1) 0;font-weight:600}.algo-script__fields{display:flex;flex-direction:column;gap:var(--sp-1)}.algo-script__pair{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--sp-2)}@media(max-width:700px){.algo-script__pair{grid-template-columns:minmax(0,1fr)}}.algo-script__presses{color:var(--color-text-soft)}.badge{font-size:var(--fs-small);padding:2px 8px;border-radius:999px;text-transform:uppercase;letter-spacing:.05em;font-weight:700}.badge--warmup{background:var(--color-info-background);color:var(--color-info)}.badge--core{background:var(--color-accent-soft);color:var(--color-ok)}.badge--challenge{background:#f6ecda;color:#8a5a1a}@media(prefers-color-scheme:dark){.badge--challenge{background:#3a2f1c;color:#d8ab63}}.panel__pos{font-size:var(--fs-small);color:var(--color-text-soft);margin-left:auto}.ex-list{display:flex;flex-direction:column;gap:var(--sp-3);margin:var(--sp-3) 0}.builder-langbar{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2);margin-bottom:var(--sp-3)}.builder-langbar__label{font-weight:600;font-size:.9em}.builder-langbar .lang-pick{border:1px solid var(--color-border);border-radius:var(--radius-small)}.builder-langbar .lang-pick:has(+.lang-pick){border-top-right-radius:0;border-bottom-right-radius:0}.builder-langbar .lang-pick+.lang-pick{margin-left:calc(-1 * var(--sp-2) - 1px);border-top-left-radius:0;border-bottom-left-radius:0}.builder-langbar .lang-pick.is-active{background:var(--color-accent-soft);color:var(--color-text);border-color:var(--color-accent);box-shadow:inset 0 0 0 1px var(--color-accent);position:relative}.builder-langbar__hint{flex-basis:100%;font-size:.85em;color:var(--color-text-soft)}.field-lang{font-style:normal;font-size:max(.8em,12px);padding:0 .35em;border-radius:4px;background:var(--color-accent);color:var(--color-accent-text)}.field-lang--tr{margin-left:.35em}.field input.is-tr,.field textarea.is-tr{border-color:var(--color-accent)}.form-mdhint{margin:0 0 var(--sp-3)}.present-step__btn.is-active{outline:2px solid var(--color-accent)}.ex-card{display:flex;flex-direction:column;gap:var(--sp-3)}.ex-card__head{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2)}.ex-card__head strong{font-size:var(--fs-large)}.ex-card__head .builder-langbar{margin:0 0 0 auto;justify-content:flex-end}.ex-card__head .builder-langbar__hint{contain:inline-size;text-align:right}.ex-card select,.ex-starter textarea{font:inherit}.ex-starter textarea{width:100%;font-family:var(--font-mono);font-size:var(--fs-small);padding:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg-deep);color:var(--color-text)}.ex-card details>summary{cursor:pointer;color:var(--color-text-soft);font-size:var(--fs-small);padding:var(--sp-1) 0}.ex-card details.is-on>summary{color:var(--color-text);font-weight:700}.ex-card details[open]{background:var(--color-bg-deep);border:1px solid var(--color-border);border-radius:var(--radius-small);padding:2px var(--sp-3) var(--sp-3);margin-bottom:var(--sp-2)}.ex-card details[open]>summary{margin-bottom:var(--sp-1)}.ex-card__kind{font-size:var(--fs-small);color:var(--color-text-soft);border:1px solid var(--color-border);border-radius:999px;padding:2px 10px}.ex-card details>textarea{width:100%;box-sizing:border-box;font:inherit;padding:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg);color:var(--color-text);resize:vertical}.ex-card details>textarea:focus{outline:none;box-shadow:var(--ring)}.ex-card .ex-mono{font-family:var(--font-mono);font-size:var(--fs-small);background:var(--color-bg-deep)}.ex-extra-list{display:flex;flex-direction:column;gap:var(--sp-2);margin:var(--sp-1) 0}.ex-extra-row{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small)}.ex-extra-bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1) var(--sp-2)}.ex-data-list{display:flex;flex-direction:column;gap:var(--sp-2);margin-bottom:var(--sp-2)}.ex-data-row{display:flex;flex-direction:column;gap:var(--sp-1);padding:var(--sp-2);border:1px solid var(--color-border);border-left:3px solid var(--color-info);border-radius:var(--radius-small)}.ex-data-content{width:100%;font-family:var(--font-mono);font-size:var(--fs-small);resize:vertical}.ex-data-problem[hidden]{display:none}.ex-extra-name{flex:1 1 14ch;min-width:10ch;font-family:var(--font-mono);font-size:var(--fs-small);padding:3px var(--sp-1);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg);color:var(--color-text)}.ex-extra-ro{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-small);color:var(--color-text-soft);white-space:nowrap}.ex-extra-del{color:var(--color-text-soft)}.ex-extra-del:hover{color:var(--color-error)}.ex-extra-box{margin-bottom:0}.ex-extra-fixed{display:block;padding:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg-deep)}.ex-extra-fixed>summary{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-1) var(--sp-2);cursor:pointer;font-size:var(--fs-small)}.ex-extra-fixed-name{font-family:var(--font-mono)}.ex-extra-fixed-badge{color:var(--color-text-soft)}.ex-extra-fixed .ex-extra-box{margin-top:var(--sp-2)}.ex-extra-fixed .ex-extra-content{height:340px}.ex-extra-fixed-tag{font-weight:400;font-size:var(--fs-small);color:var(--color-text-soft)}.ex-extra-content{grid-column:1 / -1;width:100%;box-sizing:border-box;font-family:var(--font-mono);font-size:var(--fs-small);padding:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg-deep);color:var(--color-text);resize:vertical}.ex-layout{display:grid;grid-template-columns:15rem minmax(0,1fr);gap:var(--sp-5);align-items:start}.ex-secs{display:flex;flex-direction:column;gap:var(--sp-4);min-width:0}.ex-rail{position:sticky;top:4.25rem;display:flex;flex-direction:column;gap:2px}.ex-rail__item{display:grid;grid-template-columns:1.6rem minmax(0,1fr);column-gap:var(--sp-2);align-items:center;padding:var(--sp-2);border-left:3px solid transparent;border-radius:var(--radius-small);color:var(--color-text);text-decoration:none}.ex-rail__item:hover{background:var(--color-bg-panel)}.ex-rail__item:focus-visible{outline:none;box-shadow:var(--ring)}.ex-rail__item.is-current{background:var(--color-bg-panel);border-left-color:var(--color-accent)}.ex-rail__item.is-current .ex-rail__label{font-weight:700}.ex-rail__no{grid-row:span 2;display:inline-grid;place-items:center;width:1.5rem;height:1.5rem;border:1px solid var(--color-border);border-radius:50%;background:var(--color-bg-panel);color:var(--color-text-soft);font-size:var(--fs-small);font-weight:700}.ex-rail__item.is-current .ex-rail__no{background:var(--color-accent);border-color:transparent;color:var(--color-accent-text)}.ex-rail__label,.ex-rail__status{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ex-rail__status{grid-column:2;font-size:var(--fs-small);color:var(--color-text-soft)}.ex-rail__status[data-tone=ok]:before{content:"✓ ";color:var(--color-ok)}.ex-rail__status[data-tone=warn]{color:var(--color-warning);font-weight:700}.ex-rail__status[data-tone=bad]:before{content:"✗ ";color:var(--color-error)}.lessec-layout{margin-top:var(--sp-2)}.lessec-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.lessec-status{display:flex;flex-wrap:wrap;gap:var(--sp-1) var(--sp-3);margin:var(--sp-2) 0 0;min-height:1.2em}.lessec-status .panel__titlenote{margin-left:0}.lessec-danger{margin-top:var(--sp-4);padding-top:var(--sp-3);border-top:1px dashed var(--color-border)}.lessec-over{color:var(--color-warning);font-weight:600}.ex-sec,.act-sec{padding:var(--sp-4) var(--sp-5) var(--sp-5);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg-panel);scroll-margin-top:4.5rem}.ex-sec__head{margin-bottom:var(--sp-4)}.ex-sec__title,.act-sec__title{display:flex;align-items:center;gap:var(--sp-2);margin:0;font-size:var(--fs-large)}.ex-sec__title:focus{outline:none}.ex-sec__title:focus-visible{box-shadow:var(--ring);border-radius:var(--radius-small)}.ex-sec__no,.act-sec__no{flex:none;display:inline-grid;place-items:center;width:1.7rem;height:1.7rem;border-radius:50%;background:var(--color-accent-soft);color:var(--color-ok);font-size:var(--fs-small);font-weight:700}.ex-sec__lead{margin:var(--sp-1) 0 0 calc(1.7rem + var(--sp-2));color:var(--color-text-soft)}.ex-sec__body,.act-sec__body{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-5)}.ex-sec__body:has(>.ex-sec__aside),.act-sec__body:has(>.act-sec__aside){grid-template-columns:minmax(0,1fr) minmax(11rem,15rem)}.ex-sec__main,.act-sec__main{min-width:0}.ex-sec__aside,.act-sec__aside{align-self:start;padding-left:var(--sp-4);border-left:2px solid var(--color-border);color:var(--color-text-soft);font-size:.9rem;line-height:1.55;overflow-wrap:break-word;hyphens:auto}.ex-sec__aside p,.act-sec__aside p{margin:0 0 var(--sp-3)}.ex-sec__aside p:last-child,.act-sec__aside p:last-child{margin-bottom:0}.ex-sec[data-sec=parts] .ex-sec__body:has(>.ex-sec__aside){grid-template-columns:minmax(0,1fr);gap:var(--sp-3)}.ex-sec[data-sec=parts] .ex-sec__aside{order:-1;padding:var(--sp-2) var(--sp-3);border-left-width:3px;border-radius:var(--radius-small);background:var(--color-bg)}.ex-taskrow{display:flex;flex-wrap:wrap;gap:0 var(--sp-3);align-items:end}.ex-taskrow>.field{flex:0 0 auto}.ex-taskrow>.ex-taskrow__title{flex:1 1 16rem;min-width:0}.ex-taskrow__time input{width:6rem}.ex-sec select{font:inherit;padding:var(--sp-1) var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg);color:var(--color-text)}.ex-taskrow select{padding:var(--sp-2)}.ex-sec .ex-prompt{width:100%;box-sizing:border-box;resize:vertical;line-height:1.5}.ex-concepts-box{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1) var(--sp-2);min-width:0;padding:2px var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg)}.ex-concepts-box:focus-within{box-shadow:var(--ring)}.ex-concepts-box .ex-concepts-add{flex:1 1 10rem;min-width:min(9em,100%);padding:var(--sp-1);border:0;background:transparent}.ex-concepts-box .ex-concepts-add:focus{box-shadow:none}.ex-codebox{margin-bottom:var(--sp-3);overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg-panel)}.ex-codebox__bar{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-1) var(--sp-2);padding:2px var(--sp-1) 2px var(--sp-3);border-bottom:1px solid var(--color-border);background:var(--color-bg-deep);font-size:var(--fs-small)}.ex-codebox__name{font-family:var(--font-mono);font-weight:700}.ex-codebox__meta{color:var(--color-text-soft)}.ex-codebox__max{margin-left:auto}.ex-codebox>.ex-code-editor{border:0;border-radius:0}.ex-codebox.is-max{position:fixed;inset:3vh 3vw;z-index:70;display:flex;flex-direction:column;margin:0;box-shadow:var(--shadow)}.ex-codebox.is-max>.ex-code-editor{flex:1 1 auto;min-height:0}.ex-codebox.is-max .cm-editor{height:100%;max-height:none}.ex-codebox-backdrop{position:fixed;inset:0;z-index:69;background:#14120f8c}body.has-maxcode{overflow:hidden}body.has-maxcode .actpanel:has(.ex-codebox.is-max){z-index:71}.ex-testgrid{display:flex;flex-direction:column;gap:var(--sp-3)}.ex-testgrid__in{margin-bottom:0}.ex-testgrid__in textarea{font-family:var(--font-mono);font-size:var(--fs-small);resize:vertical}.ex-testgrid__out{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-2)}.ex-testgrid__out .ex-preview-out{display:flex;flex-direction:column;align-self:stretch;gap:var(--sp-2)}.ex-checkrow{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1) var(--sp-5);margin-top:var(--sp-4)}.ex-checkrow>.field{margin-bottom:var(--sp-2)}.ex-checkrow>.field--inline{flex-wrap:wrap;max-width:100%}.ex-checkrow__mode>select{flex:0 1 auto;min-width:min(13rem,100%)}.ex-checkrow__par>input{flex:0 0 6rem}.ex-checkflags{margin:var(--sp-3) 0;padding-top:var(--sp-3);border-top:1px solid var(--color-border)}.ex-optgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,19rem),1fr));gap:var(--sp-3);align-items:start}.ex-card details.ex-opt{margin:0;padding:0 var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg)}.ex-card details.ex-opt[open]{grid-column:1 / -1;padding-bottom:var(--sp-3);background:var(--color-bg-panel)}.ex-optgrid>.ex-hints-wrap:has(>details[open]){grid-column:1 / -1}.ex-card details.ex-opt.is-on{border-color:var(--color-accent)}.ex-fmt-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,15rem),1fr));gap:var(--sp-2);margin:var(--sp-2) 0}.ex-fmt-tile{display:grid;grid-template-columns:auto minmax(0,1fr);gap:2px var(--sp-2);align-items:start;padding:var(--sp-2) var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg);cursor:pointer}.ex-fmt-tile:has(.ex-design-fmt:checked){border-color:var(--color-accent);background:var(--color-bg-panel);box-shadow:inset 3px 0 0 var(--color-accent)}.ex-fmt-tile>.ex-design-fmt{margin-top:3px}.ex-fmt-tile__head{display:flex;align-items:center;gap:var(--sp-1);font-weight:700}.ex-fmt-tile__desc{grid-column:2;font-size:var(--fs-small);color:var(--color-text-soft)}.ex-card details.ex-opt>summary{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px var(--sp-2);align-items:baseline;margin:0 calc(-1 * var(--sp-3));padding:var(--sp-3);color:var(--color-text);font-size:var(--fs-normal);list-style:none}.ex-card details.ex-opt>summary::-webkit-details-marker{display:none}.ex-opt__title{font-weight:700}.ex-opt__title:before{content:"▸";display:inline-block;width:1.1em;color:var(--color-text-soft)}.ex-opt[open]>summary .ex-opt__title:before{content:"▾"}.ex-opt__state{padding:1px 10px;border:1px solid var(--color-border);border-radius:999px;color:var(--color-text-soft);font-size:var(--fs-small);font-weight:400;white-space:nowrap}.ex-card details.ex-opt.is-on .ex-opt__state{border-color:transparent;background:var(--color-accent-soft);color:var(--color-ok);font-weight:700}.ex-opt .ex-extra-ro{white-space:normal}.ex-opt .field--inline>span{min-width:0;overflow-wrap:anywhere}.ex-opt__desc{grid-column:1 / -1;padding-left:1.1em;color:var(--color-text-soft);font-size:var(--fs-small);font-weight:400;line-height:1.45}.ex-notes .ex-notes-text{padding:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg);color:var(--color-text);font:inherit;resize:vertical}@media(max-width:1199.98px){.ex-sec__body:has(>.ex-sec__aside),.act-sec__body:has(>.act-sec__aside){grid-template-columns:minmax(0,1fr) minmax(8.5rem,11rem);gap:var(--sp-3)}.ex-sec__aside,.act-sec__aside{padding-left:var(--sp-3)}}@media(max-width:899.98px){.ex-sec__body:has(>.ex-sec__aside),.act-sec__body:has(>.act-sec__aside){grid-template-columns:minmax(0,1fr)}.ex-sec__aside,.act-sec__aside{order:-1;padding:var(--sp-2) var(--sp-3);border-left-width:3px;border-radius:var(--radius-small);background:var(--color-bg)}}.ed-band{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 var(--sp-2);margin:var(--sp-3) 0 calc(-1 * var(--sp-2));padding-bottom:var(--sp-1);border-bottom:2px solid var(--color-border);font-size:var(--fs-normal);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text)}.ed-band:first-child{margin-top:0}.ed-band__lead{font-size:var(--fs-small);font-weight:400;text-transform:none;letter-spacing:0;color:var(--color-text-soft)}.ed-journey{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1) var(--sp-2);margin:0 0 var(--sp-3);padding:var(--sp-2) var(--sp-3);border:1px solid var(--color-border-explanation);border-radius:var(--radius);background:var(--color-bg-explanation);font-size:var(--fs-small)}.ed-journey__who{font-weight:700}.ed-journey__steps{display:flex;flex:1 1 20rem;flex-wrap:wrap;align-items:center;gap:var(--sp-1) 1.7em;margin:0;padding:0;list-style:none}.ed-journey__step{position:relative;padding:1px var(--sp-2);border:1px solid var(--color-border-explanation);border-radius:999px;background:var(--color-bg-panel);color:var(--color-text)}.ed-journey__step+.ed-journey__step:before{content:"→";position:absolute;left:-1.35em;color:var(--color-text-soft)}.ed-journey__step.is-off{border-style:dashed;background:transparent;color:var(--color-text-soft)}.ed-journey__step.is-warn{border-color:var(--color-warning);color:var(--color-warning);font-weight:700}.ed-journey>.help-dot{flex:none}.ed-top{display:grid;gap:var(--sp-2);justify-items:start}.ed-top>.ed-journey-slot{justify-self:stretch}.ed-journey-slot:empty{display:none}.act-form .ed-journey,.actpanel .ed-journey{margin-bottom:0}.actpanel>.ed-top{margin-bottom:var(--sp-3)}.wizard-panel>.ed-band{margin-bottom:var(--sp-2)}.ed-mode{display:inline-flex;gap:2px;padding:2px;border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg)}.ed-mode__btn[aria-pressed=true]{background:var(--color-accent-soft);color:var(--color-ok);font-weight:700}.ex-rail__band{margin:var(--sp-3) 0 0 var(--sp-2);font-size:var(--fs-small);font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-soft)}.ex-rail__band:first-child{margin-top:0}@media(max-width:899.98px){.ex-rail__band{display:none}}.ex-hints__part{margin:var(--sp-3) 0 var(--sp-1);font-size:var(--fs-normal)}.ex-hints__part:first-child{margin-top:0}.ex-hints__parttitle{font-weight:400;color:var(--color-text-soft)}.ex-summary__head{margin:0 0 var(--sp-2);font-weight:700}.ex-summary__head[data-tone=warn]{color:var(--color-warning)}.ex-summary{display:grid;grid-template-columns:minmax(8rem,max-content) minmax(0,1fr);gap:var(--sp-1) var(--sp-4);margin:0;padding:0;list-style:none}.ex-summary__row{display:contents}.ex-summary__status{color:var(--color-text-soft)}.ex-summary__row[data-tone=ok] .ex-summary__status:before{content:"✓ ";color:var(--color-ok)}.ex-summary__row[data-tone=warn] .ex-summary__status{color:var(--color-warning);font-weight:700}#stepExercise .ex-card.is-guided .ex-layout{grid-template-columns:12.5rem minmax(0,1fr) 15rem}.ex-card.is-guided .ex-sec:not(.is-step-on),.ex-card.is-guided .ed-band,.ex-card.is-guided .ex-sec__no,.ex-card.is-guided .ex-sec__aside{display:none}.ex-card.is-guided .ex-sec__body:has(>.ex-sec__aside){grid-template-columns:minmax(0,1fr)}.ex-card.is-guided .ex-sec__lead{margin-left:0}.ex-card.is-guided .ex-sec.is-step-only .ex-sec__head{display:none}.ex-guided-head{display:grid;gap:var(--sp-2)}.ex-guided-head>*{margin:0}.ex-guided-head h3{font-size:1.35rem}.ex-guided-head h3:focus{outline:none}.ex-guided-head h3:focus-visible{box-shadow:var(--ring);border-radius:var(--radius-small)}.ex-guided-count{color:var(--color-text-soft);font-size:var(--fs-small)}.ex-guided-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:var(--sp-2);margin-top:var(--sp-2)}.ex-guided-card{display:grid;gap:var(--sp-1);padding:var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg-panel);color:var(--color-text);font:inherit;text-align:left;cursor:pointer}.ex-guided-card small{color:var(--color-text-soft);font-size:var(--fs-small);line-height:1.4}.ex-guided-card:hover{border-color:var(--color-accent)}.ex-guided-card:focus-visible{outline:none;box-shadow:var(--ring)}.ex-guided-card[aria-pressed=true]{border-color:var(--color-accent);box-shadow:inset 0 0 0 1px var(--color-accent);background:var(--color-accent-soft)}.ex-guided-nav{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-3);padding-top:var(--sp-2)}.ex-guided-why{align-self:start;position:sticky;top:4.25rem;padding-left:var(--sp-4);border-left:2px solid var(--color-border);color:var(--color-text-soft);font-size:.9rem;line-height:1.55;overflow-wrap:break-word;hyphens:auto}.ex-guided-why h4{margin:0 0 var(--sp-2);color:var(--color-text);font-size:var(--fs-normal)}.ex-guided-why p{margin:0 0 var(--sp-2)}.ex-guided-group{margin:var(--sp-3) 0 0;font-size:var(--fs-normal)}.ex-guided-card:disabled{opacity:.55;cursor:not-allowed}.ex-guided-preview{margin-top:var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg-panel);color:var(--color-text)}.ex-guided-preview h5{margin:0;padding:var(--sp-1) var(--sp-2);border-bottom:1px solid var(--color-border);color:var(--color-text-soft);font-size:var(--fs-small);font-weight:600}.ex-guided-preview__body{max-height:15rem;overflow:auto;padding:var(--sp-2);font-size:var(--fs-small);line-height:1.45;hyphens:none}.ex-guided-preview__body>*{margin:0 0 var(--sp-1)}.ex-guided-preview__body>:last-child{margin-bottom:0}.ex-guided-preview__body pre{font-family:var(--font-mono);font-size:.75rem;white-space:pre;overflow-x:auto}.ex-guided-preview__body ol,.ex-guided-preview__body ul{padding-left:var(--sp-4)}.ex-guided-preview__text{white-space:pre-wrap}@media(max-width:1199.98px){#stepExercise .ex-card.is-guided .ex-layout{grid-template-columns:12.5rem minmax(0,1fr)}.ex-guided-why{grid-column:2;position:static;padding:var(--sp-2) var(--sp-3)}}@media(max-width:899.98px){#stepExercise .ex-card.is-guided .ex-layout{grid-template-columns:minmax(0,1fr)}.ex-guided-why{grid-column:1}}#stepActivity .actpanel{position:static;inset:auto;z-index:auto;width:auto;max-height:none;overflow:visible;padding:0;background:transparent;border:0;border-radius:0;box-shadow:none}#stepActivity .actpanel__bar,#stepActivity #presEscapeSteps{display:none}.act-page__head{position:sticky;top:4.25rem;z-index:4;padding-top:var(--sp-2);background:var(--color-bg)}.act-page__actions{margin-left:auto;display:flex;flex-wrap:wrap;gap:var(--sp-2)}.act-page__actions>.act-form__actions,.act-page__actions>.wizard-nav{position:static;display:flex;flex-wrap:wrap;gap:var(--sp-2);margin:0;padding:0;background:none;border:0}.act-page__actions .wizard-nav__spacer{display:none}#stepActivity .act-layout{margin-top:var(--sp-3)}@media(min-width:900px){#stepExercise .ex-layout,#stepActivity .ex-layout{grid-template-columns:12.5rem minmax(0,1fr)}}#stepActivity .algo-form__cols{grid-template-columns:repeat(auto-fit,minmax(16rem,1fr))}#stepActivity .present-code-form{margin:0;padding:0;border:0;background:transparent}#stepActivity .act-form,#stepActivity .escape-wizard,.act-form{display:grid;gap:var(--sp-3)}.act-form .form-mdhint{margin:0}.act-sec{padding:var(--sp-3) var(--sp-4) var(--sp-4)}.act-sec__title{margin-bottom:var(--sp-3)}.act-sec__main>.field:last-child,.act-sec__main>details:last-child{margin-bottom:0}.act-form__row{display:flex;flex-wrap:wrap;gap:0 var(--sp-4)}.act-form .ex-codebox{margin-top:var(--sp-1)}.act-form__actions{position:sticky;bottom:calc(-1 * var(--sp-3));z-index:1;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--sp-2);margin:0 calc(-1 * var(--sp-4));padding:var(--sp-3) var(--sp-4);background:var(--color-bg-explanation);border-top:1px solid var(--color-border-explanation)}.field--check{flex-direction:row;align-items:flex-start;gap:var(--sp-2)}.field--check>input{flex:none;margin:.2em 0 0}.field--check>span{flex:1 1 auto;min-width:0;font-size:inherit;color:var(--color-text)}@media(max-width:899.98px){.ex-layout{grid-template-columns:minmax(0,1fr);gap:var(--sp-3)}.ex-rail{top:3.5rem;z-index:3;flex-direction:row;overflow-x:auto;padding:var(--sp-1);border-radius:var(--radius-small);background:var(--color-bg-deep)}.ex-rail__item{flex:none;grid-template-columns:auto auto;border-left:0;border-bottom:3px solid transparent}.ex-rail__item.is-current{border-bottom-color:var(--color-accent)}.ex-rail__no{grid-row:auto}.ex-rail__status{display:none}.ex-sec{padding:var(--sp-3);scroll-margin-top:7.5rem}.ex-sec__lead{margin-left:0}}.teacher-run{padding:var(--sp-4);background:var(--color-bg-panel);border-bottom:1px solid var(--color-border)}.lesson-list{list-style:none;margin:var(--sp-2) 0;padding:0;display:flex;flex-direction:column;gap:var(--sp-2)}.lesson-item{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius-small)}.lesson-item.is-active{border-color:var(--color-accent);background:var(--color-accent-soft)}.lesson-item__prompt{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text-soft)}.lesson-item .activate{min-height:32px}.timer-controls{display:flex;gap:var(--sp-2);flex-wrap:wrap;margin-top:var(--sp-2)}.join-lang{display:flex;justify-content:center;margin-top:var(--sp-3)}.runnow{display:flex;align-items:stretch;gap:var(--sp-2);margin:var(--sp-2) 0 var(--sp-3);padding:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg-panel)}.runnow__side{flex:0 1 22%;justify-content:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;border-color:var(--color-border);--btn-bg: var(--color-bg);--btn-bg-hover: var(--color-bg-deep)}.runnow__side:disabled{opacity:.45;cursor:not-allowed}.runnow__cur{flex:1;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--sp-2);text-align:center}.runnow{flex-wrap:wrap}.runnow__cur{flex-basis:10rem;min-width:0;overflow-wrap:anywhere}.runnow__badge{font-size:var(--fs-small);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-soft)}.runnow__title{font-size:1.1em}.runnow__sidekind{font-size:var(--fs-small);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-soft)}.runnow__marks{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1)}.runnow__marks[hidden]{display:none}@media(max-width:700px){#runPrevLabel,#runNextLabel{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.runnow__side{flex:0 0 auto}.runnow{flex-wrap:wrap}.runnow__cur{flex:1 1 100%;order:-1;min-width:0;overflow-wrap:anywhere}}.run-groups{display:flex;flex-wrap:wrap;gap:var(--sp-3);margin-top:var(--sp-2)}.run-group{padding:var(--sp-2) var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg-deep)}.run-group{display:flex;flex-direction:column;gap:2px;min-width:0}.run-group__label{font-size:var(--fs-small);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-soft)}.run-group .timer-controls{margin-top:0}.sr-only,.runnow__prevlabel{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.teacher-run:not([hidden]){display:contents}.runstrip{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2) var(--sp-3);padding:var(--sp-2) var(--sp-4);background:var(--color-bg-panel);border-bottom:1px solid var(--color-border)}.teacher-run .phasebar{background:var(--color-bg-panel)}.runstrip .runnow{flex:1 1 14rem;min-width:0;margin:0;padding:0;border:0;background:none;align-items:center;flex-wrap:nowrap}.runstrip .runnow[hidden]{display:none}.runstrip .runnow__side{flex:0 0 auto;min-height:36px;padding:0 var(--sp-2)}.runstrip .runnow__cur{flex:1 1 auto;flex-direction:column;flex-wrap:nowrap;align-items:flex-start;justify-content:center;gap:0;text-align:left}.runstrip .runnow__title{flex:0 1 auto;min-width:0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;overflow-wrap:anywhere}.runnow__pos{font-size:var(--fs-small);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-soft)}.runnow__line{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1) var(--sp-2);min-width:0}.runclock{display:grid;grid-template-columns:auto auto;column-gap:var(--sp-2);align-items:baseline;min-width:8rem}.runclock[hidden]{display:none}.runclock__cap{grid-column:1 / -1;font-size:var(--fs-small);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-soft)}.runclock__time{font-family:var(--font-mono);font-size:var(--fs-large);font-variant-numeric:tabular-nums}.runclock__of{font-size:var(--fs-small);color:var(--color-text-soft)}.runclock__bar{grid-column:1 / -1;height:4px;margin-top:2px;border-radius:999px;background:var(--color-bg-deep);overflow:hidden}.runclock__fill{display:block;height:100%;width:0;background:var(--color-accent);transition:width .5s linear}.runclock.is-low .runclock__time,.runclock.is-over .runclock__time{color:var(--color-error)}.runclock.is-over .runclock__fill{background:var(--color-error)}.runclock.is-paused .runclock__time,.runclock.is-idle .runclock__time{color:var(--color-text-soft)}.runpace{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}.runpace .btn{min-height:36px}.runclock__start{grid-column:1 / -1;justify-self:start;min-height:36px;margin-top:var(--sp-1)}.runpace .run-group__note{flex-basis:100%}.runnow__next{min-height:36px;max-width:15rem;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;overflow:hidden}#runNextLabel{display:inline-flex;flex-direction:column;align-items:flex-start;min-width:0;max-width:100%;line-height:1.05}.runnow__next:has(.runnow__nexttitle){padding-block:1px}.runnow__nextword{font-weight:600}.runnow__nexttitle{font-size:max(12px,.8em);font-weight:400;max-width:100%;overflow:hidden;text-overflow:ellipsis}.runnow__next[hidden]{display:none}.runscreen{display:flex;flex-direction:column;align-items:flex-start;min-width:0;max-width:11rem;padding:2px var(--sp-2);font:inherit;text-align:left;color:var(--color-text);background:none;border:1px solid transparent;border-radius:var(--radius-small);cursor:pointer}.runscreen:hover{border-color:var(--color-border)}.runscreen:focus-visible{outline:none;box-shadow:var(--ring)}.runscreen__cap{font-size:var(--fs-small);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-soft)}.runscreen__what{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.runscreen.is-on .runscreen__what{color:var(--color-accent);font-weight:600}.runstrip__more{margin-left:auto;min-height:36px}.runstrip__ahead-n{margin-left:var(--sp-1);font-variant-numeric:tabular-nums}.runstrip__more.is-open{background:var(--color-bg-deep)}.runmore{padding:var(--sp-2) var(--sp-4) var(--sp-3);background:var(--color-bg-panel);border-bottom:1px solid var(--color-border)}.runmore[hidden]{display:none}.runmore__help{float:right;margin:0 0 var(--sp-2) var(--sp-2)}.runmore .run-groups{margin-top:0}@media(max-width:699px){body[data-view=teach] .topbar{position:static}}@media(min-width:900px)and (min-height:600px){body[data-view=teach] .runstrip{position:sticky;top:var(--topbar-h, 0px);z-index:4;box-shadow:0 2px 6px #0000000f}body[data-view=teach] .topbar__clock-left,body[data-view=teach] .topbar__clock-left+.topbar__clock-sep{display:none}}body[data-view=teach] .teach-body{display:grid;grid-template-columns:minmax(14rem,17rem) minmax(0,1fr) auto;align-items:start;gap:0 var(--sp-3);padding:0 var(--sp-3) 0 var(--sp-4)}.teach-main{min-width:0}.notes-col[hidden]{display:none}body[data-view=teach] .notes-col{position:sticky;top:calc(var(--topbar-h, 0px) + var(--runbar-h, 0px));max-height:calc(100vh - var(--topbar-h, 0px) - var(--runbar-h, 0px) - 48px);width:19rem;overflow:auto;display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-3) 0}body[data-view=teach] .notes-col.is-collapsed{width:auto}.notes-col__toggle{align-self:flex-start;display:inline-flex;align-items:center;gap:var(--sp-1);min-height:32px;padding:2px var(--sp-2);font:inherit;font-weight:700;color:var(--color-text);background:var(--color-bg-panel);border:1px solid var(--color-border);border-radius:var(--radius-small);cursor:pointer}.notes-col__toggle:focus-visible{outline:none;box-shadow:var(--ring)}.notes-col.is-collapsed .notes-col__label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.notes-col__body[hidden]{display:none}.notes-col:not([data-source=slide]) #slideNotes,.notes-col:not([data-source=live]) #tLiveNotesBox,.notes-col:not([data-source=exercise]) #notesColExercise{display:none}.notes-col #tLiveNotesBox{min-height:18rem}.notes-col #tLiveNotesBox .livecode__notesarea{min-height:14rem}.notes-col__exercise{padding:var(--sp-2) var(--sp-3);border:1px solid var(--color-border);border-left:3px solid var(--color-accent);border-radius:var(--radius-small);background:var(--color-bg-panel)}.notes-col__exercise .notesview__body{white-space:pre-wrap}.teach-side[hidden]{display:none}body[data-view=teach] .teach-side{position:sticky;top:calc(var(--topbar-h, 0px) + var(--runbar-h, 0px));max-height:calc(100vh - var(--topbar-h, 0px) - var(--runbar-h, 0px) - 48px);overflow:auto;display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-3) 0}.teach-main .dashboard{padding:var(--sp-3) 0}@media(max-width:899px),(max-height:599px){body[data-view=teach] .teach-body{grid-template-columns:minmax(0,1fr);padding:0 var(--sp-3)}body[data-view=teach] .teach-side{position:static;max-height:none;overflow:visible}}.attn,.plancol{background:var(--color-bg-panel);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--sp-2) var(--sp-3)}.attn__head,.plancol__head{display:flex;align-items:center;gap:var(--sp-2)}.attn__title,.plancol__title{margin:0;font-size:var(--fs-normal);font-weight:700}.attn__count{display:inline-block;min-width:1.6em;padding:0 6px;border-radius:999px;text-align:center;font-size:var(--fs-small);color:var(--color-accent-text);background:var(--color-error)}.attn__count.is-zero{color:var(--color-text-soft);background:var(--color-bg-deep)}.attn__gear{margin-left:auto;min-height:32px}.attn__list{list-style:none;margin:var(--sp-2) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--sp-1)}.attn__list:empty{display:none}.attn__item{display:flex;align-items:stretch;border:1px solid var(--color-border);border-left:3px solid var(--color-warning);border-radius:var(--radius-small);background:var(--color-bg)}.attn__item.is-stuck{border-left-color:var(--color-error)}.attn__open{flex:1;min-width:0;display:grid;grid-template-columns:1.4em minmax(0,1fr) auto;column-gap:var(--sp-1);align-items:baseline;padding:4px var(--sp-2);font:inherit;text-align:left;color:var(--color-text);background:none;border:0;cursor:pointer}.attn__open:hover,.attn__done:hover{background:var(--color-bg-deep)}.attn__open:focus-visible,.attn__done:focus-visible{outline:none;box-shadow:var(--ring)}.attn__name{font-weight:600;min-width:0;overflow-wrap:anywhere}.attn__wait{font-size:var(--fs-small);color:var(--color-text-soft);font-variant-numeric:tabular-nums;white-space:nowrap}.attn__why{grid-column:2 / -1;font-size:var(--fs-small);color:var(--color-text-soft);overflow-wrap:anywhere}.attn__done{flex:0 0 auto;min-width:36px;font:inherit;font-weight:700;color:var(--color-ok);background:none;border:0;border-left:1px solid var(--color-border);cursor:pointer}.attn__empty,.attn__hint{margin:var(--sp-2) 0 0;font-size:var(--fs-small);color:var(--color-text-soft)}.attn__head .help-dot{margin-left:calc(-1 * var(--sp-1))}.attn__coming{grid-column:2 / -1;font-size:var(--fs-small);font-weight:600;color:var(--color-text);overflow-wrap:anywhere}.attn__claim{flex:0 0 auto;min-width:36px;font:inherit;color:var(--color-text);background:none;border:0;border-left:1px solid var(--color-border);cursor:pointer}.attn__claim:hover{background:var(--color-bg-deep)}.attn__claim:focus-visible{outline:none;box-shadow:var(--ring)}.attn__item.is-claimed{border-left-style:dashed}.plancol__pos{margin-left:auto;font-size:var(--fs-small);color:var(--color-text-soft)}.plancol__list{list-style:none;margin:var(--sp-2) 0;padding:0;display:flex;flex-direction:column;gap:2px;max-height:45vh;overflow:auto}.plancol__item{display:grid;grid-template-columns:1.8em minmax(0,1fr);gap:var(--sp-2);align-items:start;padding:4px var(--sp-1);border-radius:var(--radius-small)}.plancol__item.is-now{background:var(--color-accent-soft)}.plancol__no{display:inline-grid;place-items:center;width:1.6em;height:1.6em;border-radius:999px;font-size:var(--fs-small);color:var(--color-text-soft);background:var(--color-bg-deep)}.plancol__item.is-now .plancol__no{color:var(--color-accent-text);background:var(--color-accent)}.plancol__text{display:flex;flex-direction:column;min-width:0}.plancol__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plancol__item.is-now .plancol__name{font-weight:700}.plancol__item.is-past .plancol__name{color:var(--color-text-soft)}.plancol__meta{font-size:var(--fs-small);color:var(--color-text-soft);overflow-wrap:anywhere}.classbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2) var(--sp-3);padding-top:var(--sp-3)}.classbar__title{margin:0;font-size:var(--fs-large);font-weight:700}.classbar__count{font-size:var(--fs-normal);font-weight:400;color:var(--color-text-soft)}.classbar__filters{display:flex;flex-wrap:wrap;gap:var(--sp-1)}.classbar__filter{font:inherit;font-size:var(--fs-small);padding:2px 10px;min-height:30px;border:1px solid var(--color-border);border-radius:999px;background:var(--color-bg);color:var(--color-text);cursor:pointer}.classbar__filter[aria-pressed=true]{border-color:var(--color-accent);background:var(--color-accent);color:var(--color-accent-text)}.classbar__filter:disabled{opacity:.45;cursor:default}.classbar__filter:focus-visible{outline:none;box-shadow:var(--ring)}.classbar__n{font-variant-numeric:tabular-nums}.detail-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-bottom:var(--sp-2)}body.is-detail-open .live-dash{padding-bottom:62vh}.detail-note{display:flex;flex-direction:column;gap:2px;margin-top:var(--sp-3)}.detail-note__label{font-size:var(--fs-small);color:var(--color-text-soft)}.detail-note__input{width:100%;min-height:3em;resize:vertical;font:inherit;font-size:var(--fs-small);padding:4px 6px;border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg-deep);color:var(--color-text)}.detail-note__input:focus{outline:none;border-color:var(--color-accent)}.session-summary{padding:var(--sp-4);margin:var(--sp-3) var(--sp-4);background:var(--color-accent-soft);border:1px solid var(--color-accent);border-radius:var(--radius)}.session-summary__text{margin:var(--sp-2) 0 var(--sp-3);color:var(--color-text)}.attendance-overview{margin-top:var(--sp-4);padding-top:var(--sp-3);border-top:1px solid var(--color-accent)}.attendance-overview__bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2) var(--sp-3)}.attendance-overview__title{margin:0;font-size:var(--fs-normal);color:var(--color-text)}.attendance-overview__count,.attendance-overview__status{font-size:var(--fs-small);color:var(--color-text-soft);font-variant-numeric:tabular-nums}.attendance-overview__empty{margin:var(--sp-2) 0 0;color:var(--color-text-soft)}.attendance-overview__table{width:100%;margin-top:var(--sp-2);border-collapse:collapse;font-size:var(--fs-small);color:var(--color-text)}.attendance-overview__table th,.attendance-overview__table td{padding:4px var(--sp-2);text-align:left;vertical-align:top;border-bottom:1px solid var(--color-border);overflow-wrap:anywhere}.attendance-overview__table th{color:var(--color-text-soft);font-weight:600}.attendance-overview__table td{font-variant-numeric:tabular-nums}.attendance-overview__table tr.is-byhand td{color:var(--color-text-soft);font-style:italic}.teacher-controls{padding:var(--sp-4);background:var(--color-bg-panel);border-bottom:1px solid var(--color-border)}.teacher-controls{padding-bottom:var(--sp-4)}.teacher-controls__actions{display:flex;gap:var(--sp-2)}.roominfo{margin-left:var(--sp-3);display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-3);font-size:var(--fs-small)}.roominfo__code strong{font-family:var(--font-mono);font-size:var(--fs-large);letter-spacing:.1em}.roominfo__links a{color:var(--color-accent);text-decoration:underline;display:inline-block;min-height:24px;line-height:24px}.roominfo__links a:hover{color:var(--color-text)}.roominfo__links a:focus-visible{outline:none;box-shadow:var(--ring);border-radius:var(--radius-small)}.live-dash{display:flex;flex-direction:column;flex:1;padding-bottom:48px}:root:has(#matrixPanel:not([hidden])){scroll-padding-bottom:48px}.live-pane{display:flex;flex-direction:column;flex:1}.live-pane[hidden]{display:none}.live-pane__head{padding:var(--sp-3) var(--sp-4) 0}.live-pane__head .panel__title{margin:0}.live-pane--idle{align-items:center;justify-content:center;padding:var(--sp-6)}.live-pane__hint{color:var(--color-text-soft);font-size:var(--fs-large);text-align:center}.live-pane[data-pane=escape],.live-pane--activity{padding:var(--sp-3) var(--sp-4);gap:var(--sp-3)}.tpoll__q{font-weight:700;font-size:var(--fs-large);margin:0}.tpoll{display:flex;flex-direction:column;gap:var(--sp-2);max-width:720px}.tpoll__opt{display:grid;grid-template-columns:minmax(6rem,14rem) 1fr 2.5rem;align-items:center;gap:var(--sp-3)}.tpoll__opt.is-correct{color:var(--color-ok);font-weight:700}.tpoll__opt.is-dim{opacity:.5}.tpoll__bar{height:18px;border-radius:999px;background:var(--color-accent-soft);overflow:hidden}.tpoll__fill{display:block;height:100%;width:0;background:var(--team, var(--color-accent));transition:width .4s ease}.tpoll__opt.is-correct .tpoll__fill{background:var(--color-ok)}.tpoll__count{font-variant-numeric:tabular-nums;text-align:right}.tpoll__total{color:var(--color-text-soft);font-variant-numeric:tabular-nums}.tpoll__notyet{margin:0;color:var(--color-text-soft)}.twall{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:baseline}.tbug__board{margin-left:auto;font-variant-numeric:tabular-nums;font-weight:700}#tBugCode{list-style:none;margin:0;padding:0;font-family:var(--font-mono);max-width:820px}.dashboard{display:grid;gap:var(--sp-3);padding:var(--sp-4);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));align-items:start;flex:1}.card{background:var(--color-bg-panel);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-2)}.card.is-inactive{--color-ok: var(--color-text-soft);--color-error: var(--color-text-soft);--color-warning: var(--color-text-soft);--color-accent: var(--color-text-soft);--color-info: var(--color-text-soft);--color-accent-soft: var(--color-bg);--color-error-background: var(--color-bg);--color-info-background: var(--color-bg);--color-bg-overlay: var(--color-bg);--color-border-overlay: var(--color-border);--color-accent-text: var(--color-bg-panel);--hl-kw: var(--color-text-soft);--hl-type: var(--color-text-soft);--hl-str: var(--color-text-soft);--hl-num: var(--color-text-soft);--hl-pre: var(--color-text-soft);--hl-punct: var(--color-text-soft);--ring: 0 0 0 3px var(--color-text-soft);background:var(--color-bg-deep);border:1px dashed var(--color-text-soft);box-shadow:none;animation:none;color:var(--color-text-soft);filter:grayscale(1)}.card.is-inactive .card__code{background:var(--color-bg)}.card.is-inactive .card__struggle.is-watch,.card.is-inactive .card__struggle-msg.is-watch{color:var(--color-text-soft);background:var(--color-bg)}.card.is-inactive .card__name{color:var(--color-text)}.card__inactive{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-small);font-weight:700;font-variant-numeric:tabular-nums;color:var(--color-bg-panel);background:var(--color-text-soft);border-radius:999px;padding:1px 8px;white-space:nowrap}.card__inactive .icon{flex:none}.card__head{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.run-group__note{font-size:var(--fs-small);color:var(--color-text);max-width:22em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.run-group__note.is-off{color:var(--color-text-soft);font-style:italic}.run-group__note--line{max-width:none;overflow:visible;text-overflow:clip;white-space:normal;flex-basis:100%}.card__name{font-weight:600}.card__reflect{font-size:var(--fs-small)}.card__owncode{font-size:var(--fs-small);padding:0 6px;border-radius:10px;border:1px solid var(--color-border);color:var(--color-text);background:var(--color-field);white-space:nowrap}.card__owncode--ok{border-color:var(--color-ok)}.card__owncode--hint{border-color:var(--color-warning)}.card__owncode--wrong{border-color:var(--color-error)}.card__owncode--none{color:var(--color-text-soft)}.outputcheck{font-size:var(--fs-small);border-radius:999px;padding:1px 8px}.outputcheck.is-ok{color:var(--color-ok);background:var(--color-accent-soft)}.outputcheck.is-off{color:var(--color-error);background:var(--color-error-background)}.card__saved{font-size:var(--fs-small);color:var(--color-text-soft)}.card__saved.is-stale{color:var(--color-ok);font-weight:600}.card__status{margin-left:auto;font-size:var(--fs-small);padding:2px 8px;border-radius:999px}.card__status.ok{background:var(--color-accent-soft);color:var(--color-ok)}.card__status.error{background:var(--color-error-background);color:var(--color-error)}.card__status.empty{background:var(--color-bg-deep);color:var(--color-text-soft)}.card__done{font-size:var(--fs-small);font-weight:700;color:var(--color-ok)}.card--done{border-color:var(--color-ok);box-shadow:inset 0 0 0 1px var(--color-ok)}.card--watch{border-color:#d98a00;box-shadow:inset 0 0 0 1px #d98a00}.card--stuck{border-color:var(--color-error);box-shadow:inset 0 0 0 2px var(--color-error)}.card--done{border-color:var(--color-border);box-shadow:inset 3px 0 0 var(--color-ok)}.card--watch{border-color:var(--color-border);box-shadow:inset 3px 0 0 var(--color-warning)}.card__status.ok{background:var(--color-bg-deep);color:var(--color-text-soft)}.session-notice{flex:1 0 100%;display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;padding:var(--sp-1) var(--sp-3);border-left:3px solid var(--color-warning);background:var(--color-bg-deep);font-size:var(--fs-small)}.session-notice[hidden]{display:none}.session-notice[data-kind=expired]{border-left-color:var(--color-error)}.session-notice__text{flex:1 1 16rem;min-width:0}.session-notice__btn{flex:none;padding:var(--sp-1) var(--sp-3)}body.has-maxcode .topbar:has(.session-notice:not([hidden])){position:static;z-index:auto}body.has-maxcode .session-notice:not([hidden]){position:fixed;left:3vw;right:3vw;bottom:var(--sp-2);z-index:72;border-radius:var(--radius);box-shadow:var(--shadow)}body.has-maxcode:has(.session-notice:not([hidden])) .ex-codebox.is-max{bottom:calc(3vh + 3.5rem)}.topbar__teacher{margin-left:auto;font-size:var(--fs-small);font-weight:600;color:var(--color-text-soft)}.topbar__teacher:empty{margin-left:auto}.overlay--login{display:flex;align-items:center;justify-content:center}.overlay--login{z-index:80}.login-reason{margin:0;color:var(--color-text-soft);font-size:var(--fs-small)}.login-card{background:var(--color-bg-panel);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--sp-4);width:min(360px,92vw);display:flex;flex-direction:column;gap:var(--sp-3);box-shadow:var(--shadow)}.login-card h2{margin:0}.login-error{color:var(--color-error);font-weight:600;font-size:var(--fs-small);margin:0}.login-passkey{display:flex;flex-direction:column;gap:var(--sp-2);padding-bottom:var(--sp-3);border-bottom:1px solid var(--color-border)}.login-passkey__hint,.login-passkey__or{margin:0;font-size:var(--fs-small);color:var(--color-text-soft)}.login-passkey__or{text-align:center}.login-enroll{display:flex;flex-direction:column;gap:var(--sp-2)}.login-enroll p{margin:0;font-size:var(--fs-small)}.login-enroll__qr{align-self:center;background:var(--color-bg-panel);padding:var(--sp-2);border-radius:var(--radius);image-rendering:pixelated}.login-enroll__secret{display:block;margin-top:var(--sp-1);word-break:break-all;user-select:all}.login-recovery__list{margin:0;padding:0;list-style-position:inside;display:grid;grid-template-rows:repeat(5,auto);grid-auto-flow:column;column-gap:var(--sp-4);justify-content:center;font-family:var(--font-mono)}.join-error{color:var(--color-error);font-size:var(--fs-small);min-height:1.2em;margin:var(--sp-2) 0 0}.card__present{font-size:var(--fs-small);font-weight:700;color:var(--color-accent-text);background:var(--color-ok);border-radius:999px;padding:0 6px}.attendance{position:fixed;inset:auto 0 0;background:var(--color-bg-panel);border-top:2px solid var(--color-ok);max-height:70vh;overflow:auto;z-index:17;box-shadow:var(--shadow);padding:var(--sp-3) var(--sp-4)}.attendance__bar{display:flex;align-items:center;gap:var(--sp-3)}.attendance__bar .panel__title{margin-right:0}.attendance__count{margin-right:auto;font-size:var(--fs-small);color:var(--color-text-soft);font-variant-numeric:tabular-nums}.attendance__intro{font-size:var(--fs-small);color:var(--color-text-soft);margin:var(--sp-2) 0}.attendance__list{display:grid;grid-template-columns:1fr 1fr;gap:4px var(--sp-4)}@media(max-width:700px){.attendance__list{grid-template-columns:1fr}}.attendance-row{display:flex;align-items:center;gap:var(--sp-2);padding:4px 8px;border-radius:var(--radius-small);cursor:pointer}.attendance-row.is-present{background:var(--color-accent-soft)}.attendance-row input{width:18px;height:18px}.attendance-name{font-weight:600}.attendance-num{color:var(--color-text-soft);font-variant-numeric:tabular-nums}.attendance-joined{margin-left:auto;font-size:var(--fs-small);color:var(--color-ok)}.attendance-empty{color:var(--color-text-soft)}.attendance__classes{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-3)}.attendance-classes__label,.attendance-classes__none{font-size:var(--fs-small);color:var(--color-text-soft)}.attendance-class{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border:1px solid var(--color-border);border-radius:999px;cursor:pointer}.attendance-class__n{font-size:var(--fs-small);color:var(--color-text-soft)}.attendance-group{grid-column:1 / -1;margin:var(--sp-3) 0 0;font-size:var(--fs-small);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-soft)}.attendance-row.is-absent{opacity:.62}.attendance-row.is-absent.is-present{opacity:1}.attendance-notjoined{font-size:var(--fs-small);color:var(--color-text-soft)}.attendance-row.is-present .attendance-notjoined{color:var(--color-ok)}.attendance-guest .attendance-joined{background:var(--color-bg-deep)}.settings{position:fixed;inset:auto 0 0;background:var(--color-bg-panel);border-top:2px solid var(--color-accent);max-height:70vh;overflow:auto;z-index:17;box-shadow:var(--shadow);padding:var(--sp-3) var(--sp-4)}.settings__bar{display:flex;align-items:center;gap:var(--sp-3)}.settings__bar .panel__title{margin-right:auto}.settings__intro{font-size:var(--fs-small);color:var(--color-text-soft);margin:var(--sp-2) 0}.settings__body{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2) var(--sp-4)}@media(max-width:700px){.settings__body{grid-template-columns:1fr}}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3)}.settings-label{font-size:var(--fs-small)}.settings-input{display:inline-flex;align-items:center;gap:var(--sp-1)}.settings-input input{width:5em}.settings-unit{font-size:var(--fs-small);color:var(--color-text-soft)}.settings-row--full{grid-column:1 / -1}.reflect{display:flex;flex-direction:column;gap:var(--sp-3);max-height:88vh}.reflect__q{font-weight:600;font-size:1.1rem;margin:0}.reflect__codelabel{font-size:var(--fs-small);color:var(--color-text-soft);margin-bottom:4px}.reflect__pre{margin:0;font-family:var(--font-mono);font-size:var(--fs-small);background:var(--color-bg-deep);border:1px solid var(--color-border);border-radius:var(--radius-small);padding:var(--sp-2);max-height:32vh;overflow:auto;white-space:pre-wrap;user-select:text}.reflect__answer{font-family:inherit;font-size:var(--fs-normal);border:1px solid var(--color-border);border-radius:var(--radius-small);padding:var(--sp-2);resize:vertical}.reflect__error{color:var(--color-error);font-size:var(--fs-small);margin:0}.reflect__actions{display:flex;justify-content:flex-end;gap:var(--sp-2)}.design-card .reflect__actions{margin-top:var(--sp-4);padding-top:var(--sp-3);border-top:1px solid var(--color-border)}.confidence{text-align:center}.confidence__q{font-size:1.1rem;margin:0 0 var(--sp-3)}.confidence__btns{display:flex;gap:var(--sp-2);justify-content:center;flex-wrap:wrap}.confidence__btn{font-size:1.05rem;padding:var(--sp-2) var(--sp-3)}.testcalib{margin:0 0 var(--sp-2);padding:var(--sp-2);border-radius:var(--radius-small);font-weight:600}.testcalib.is-good{background:var(--color-accent-soft);color:var(--color-ok)}.testcalib.is-off{background:#f3e4c2;color:#8a5a00}.card__confidence.is-over{filter:grayscale(0)}.review{gap:var(--sp-2);overflow:auto}.review>*{flex:0 0 auto}.review .review-lines,.review .codelines{min-height:200px}.review .reflect__pre{min-height:120px}.review h2{margin-bottom:0}.review__norm{font-size:var(--fs-small);color:var(--color-text-soft);margin:0 0 var(--sp-2)}.review__code{margin-bottom:var(--sp-2)}.review__refl{border-left:3px solid var(--color-accent);padding:var(--sp-2);background:var(--color-accent-soft);border-radius:var(--radius-small);margin-bottom:var(--sp-2)}.review__refllabel{font-size:var(--fs-small);color:var(--color-text-soft);margin-bottom:2px}.review__refltext{margin:0;white-space:pre-wrap}.review__flabel{display:block;font-weight:600;font-size:var(--fs-small);margin-bottom:2px}.review__input{width:100%;font:inherit;border:1px solid var(--color-border);border-radius:var(--radius-small);padding:var(--sp-2);resize:vertical;margin-bottom:var(--sp-2);background:var(--color-bg);color:var(--color-text)}.review__done{padding:var(--sp-3);background:var(--color-accent-soft);color:var(--color-ok);border-radius:var(--radius-small);font-weight:600;text-align:center}.review__gothead{margin:var(--sp-3) 0 var(--sp-1);font-size:1.05rem}.review__card{border:1px solid var(--color-border);border-radius:var(--radius-small);padding:var(--sp-2);margin-bottom:var(--sp-2);background:var(--color-bg-deep)}.review__cardrow{display:flex;gap:var(--sp-2);align-items:flex-start;margin:2px 0}.review__fieldlabel{flex:none;min-width:8.5em;font-weight:600;font-size:var(--fs-small);color:var(--color-text-soft)}.review-lines{list-style:none;margin:0 0 var(--sp-2);padding:var(--sp-2);background:var(--color-bg-deep);border:1px solid var(--color-border);border-radius:var(--radius-small);font-family:var(--font-mono);font-size:var(--fs-small);max-height:40vh;overflow:auto}.review-line{display:flex;gap:var(--sp-2);align-items:baseline;padding:1px 4px;border-radius:3px;cursor:pointer}.review-line:hover{background:var(--color-accent-soft)}.review-line.has-comment{background:var(--color-accent-soft);box-shadow:inset 3px 0 0 var(--color-accent)}.review-line__num{flex:none;width:2.2em;text-align:right;color:var(--color-text-soft);user-select:none}.review-line__code{white-space:pre-wrap;word-break:break-word}.review-line__comment{padding:4px 4px 6px 2.6em}.codelines{list-style:none;margin:0 0 var(--sp-2);padding:var(--sp-2);background:var(--color-bg-deep);border:1px solid var(--color-border);border-radius:var(--radius-small);font-family:var(--font-mono);font-size:var(--fs-small);max-height:40vh;overflow:auto}.codeline{display:flex;gap:var(--sp-2);align-items:baseline;padding:1px 4px;border-radius:3px}.codeline__num{flex:none;width:2.2em;text-align:right;color:var(--color-text-soft);user-select:none}.codeline__code{white-space:pre-wrap;word-break:break-word}.codeline.has-note{background:var(--color-accent-soft);box-shadow:inset 3px 0 0 var(--color-accent)}.shell--focus.shell--wide{max-width:min(1100px,96vw);width:100%}.owncode{display:flex;flex-direction:column;gap:var(--sp-3)}.owncode__head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);font-family:var(--font-mono);font-size:var(--fs-small);color:var(--color-text-soft)}.owncode__dots{display:inline-flex;gap:6px}.owncode__dot{width:14px;height:14px;border-radius:50%;border:1.5px solid var(--color-border);background:var(--color-field);padding:0;cursor:pointer}.owncode__dot.is-current{box-shadow:0 0 0 3px var(--color-accent-soft);border-color:var(--color-accent)}.owncode__dot--first{background:var(--color-ok);border-color:var(--color-ok)}.owncode__dot--second{background:var(--color-warning);border-color:var(--color-warning)}.owncode__dot--wrong{background:var(--color-error);border-color:var(--color-error)}.owncode__dot--stored{background:var(--color-text-soft);border-color:var(--color-text-soft)}.owncode__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:var(--sp-4);align-items:start}.owncode__grid--single{grid-template-columns:minmax(0,1fr)}.owncode__q{grid-column:2;grid-row:1;display:flex;flex-direction:column;gap:var(--sp-2)}.owncode__grid--single .owncode__q{grid-column:1}.owncode__code{grid-column:1;grid-row:1;min-width:0}.owncode__code .codelines{max-height:60vh}.owncode__codelabel{font-size:var(--fs-small);color:var(--color-text-soft);margin-bottom:var(--sp-1)}.owncode__text{margin:0;font-size:var(--fs-normal);line-height:1.5}.owncode__text code,.owncode__choice code,.owncode__result code,.owncode__notyet code{font-family:var(--font-mono);background:var(--color-bg-deep);padding:0 4px;border-radius:3px}.owncode__input{background:var(--color-bg-overlay);border:1px solid var(--color-border-overlay);border-radius:var(--radius-small);padding:var(--sp-2) var(--sp-3);font-size:var(--fs-small)}.owncode__input code{font-family:var(--font-mono)}.owncode__inputlabel{color:var(--color-text-soft)}.owncode__field{display:flex;align-items:center;gap:var(--sp-2)}.owncode__number{width:7em;padding:6px 8px;border:1px solid var(--color-border);border-radius:var(--radius-small);font:inherit;background:var(--color-field);color:var(--color-text)}.owncode__choices{display:flex;flex-direction:column;gap:var(--sp-1)}.owncode__choice{display:flex;gap:var(--sp-2);align-items:flex-start;padding:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-field);cursor:pointer}.owncode__choice:has(input:checked){border-color:var(--color-accent);box-shadow:inset 3px 0 0 var(--color-accent)}.owncode__linehint{margin:0;color:var(--color-text-soft)}.owncode__error{color:var(--color-error);margin:0}.owncode__notyet,.owncode__stored,.owncode__result{border-radius:var(--radius-small);padding:var(--sp-2) var(--sp-3)}.owncode__notyet{background:var(--color-bg-overlay);border:1px solid var(--color-border-overlay)}.owncode__stored{background:var(--color-bg-deep);border:1px solid var(--color-border)}.owncode__result p{margin:var(--sp-1) 0 0}.owncode__result--right{background:var(--color-accent-soft);border:1px solid var(--color-accent)}.owncode__result--wrong{background:var(--color-error-soft);border:1px solid var(--color-error)}.owncode__detail{color:var(--color-text-soft);font-size:var(--fs-small)}.owncode__more{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.owncode__back{align-self:flex-start}.owncode__wait{margin:0;color:var(--color-text-soft)}.owncode__change pre{margin:0 0 var(--sp-1);padding:var(--sp-1) var(--sp-2);font-family:var(--font-mono);font-size:var(--fs-small);background:var(--color-bg-deep);border-radius:3px;white-space:pre-wrap}.owncode__before del{color:var(--color-error)}.owncode__after ins{text-decoration:none;color:var(--color-ok)}.owncode__changehead{margin:var(--sp-2) 0 var(--sp-1);font-weight:600}.owncode__tests{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:var(--sp-1) var(--sp-3);font-size:var(--fs-small)}.owncode__test--pass:before{content:"✓ ";color:var(--color-ok)}.owncode__test--fail:before{content:"✗ ";color:var(--color-error)}.owncode__test--hang:before{content:"⟳ ";color:var(--color-warning)}.owncode__transport{display:flex;align-items:center;gap:var(--sp-2);justify-content:center;margin-top:var(--sp-2)}.owncode__code .codeline.is-focus{background:var(--color-accent-soft)}.owncode__code .codeline.is-answer{box-shadow:inset 3px 0 0 var(--color-ok)}.owncode__code .codeline.is-pickable{cursor:pointer}.owncode__code .codeline.is-pickable:hover,.owncode__code .codeline.is-pickable:focus-visible{background:var(--color-bg-overlay);outline:none}.owncode__code .codeline.is-picked{background:var(--color-accent-soft);box-shadow:inset 3px 0 0 var(--color-accent)}@media(max-width:899.98px){.shell--focus.shell--wide{max-width:100vw;max-height:100dvh;border-radius:0}.owncode__grid{grid-template-columns:minmax(0,1fr)}.owncode__q,.owncode__code{grid-column:1;grid-row:auto}.owncode__code .codelines{max-height:45vh}}.codeline__note{display:flex;gap:6px;padding:2px 4px 4px 2.6em;color:var(--color-text)}.codeline__noteicon{flex:none}.review-line__input{width:100%;font:inherit;font-family:var(--font-mono);border:1px solid var(--color-accent);border-radius:var(--radius-small);padding:var(--sp-1) var(--sp-2);background:var(--color-bg);color:var(--color-text);resize:vertical}.review__linerow{display:flex;gap:var(--sp-2);align-items:baseline;margin:2px 0;flex-wrap:wrap}.review__lineno{flex:none;font-family:var(--font-mono);font-weight:700;color:var(--color-accent)}.review__linecode{font-family:var(--font-mono);font-size:var(--fs-small);color:var(--color-text-soft)}.review__linetext{flex:1 1 100%}.review-mod__linecode{font-family:var(--font-mono);color:var(--color-text-soft)}.review__respond{border-top:1px dashed var(--color-border);margin-top:var(--sp-2);padding-top:var(--sp-2)}.review__respondbtns{display:flex;gap:var(--sp-3);margin-bottom:var(--sp-2)}.review__radio{display:inline-flex;align-items:center;gap:4px;cursor:pointer}.review__signal{margin-top:var(--sp-2);padding:var(--sp-2);background:var(--color-accent-soft);border-radius:var(--radius-small);font-size:var(--fs-small)}.review__download{margin-top:var(--sp-4);padding-top:var(--sp-3);border-top:1px solid var(--color-border);display:flex;justify-content:flex-end;gap:var(--sp-2)}.review-mod__resp{font-style:italic;color:var(--color-text-soft)}.review-mod__who{display:flex;align-items:center;gap:var(--sp-2)}.review-mod__proj{margin-left:auto;padding:2px 8px;min-height:28px}.review-mod.is-projected{box-shadow:inset 3px 0 0 var(--color-accent);background:var(--color-accent-soft)}.screen-review{width:100%;display:flex;flex-direction:column}.screen-review__title{flex:none;font-size:var(--wall-header);margin:0 0 var(--sp-3);color:var(--color-text-soft)}.screen-review__cols{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:var(--sp-4);align-items:start;flex:1 1 auto;min-height:0}.screen-review__cols.is-codeonly{grid-template-columns:1fr}.screen-review__code{max-height:100%;min-height:0;overflow:auto;background:var(--color-terminal-bg);border-radius:var(--radius);box-shadow:var(--shadow)}.screen-review__feedback{display:grid;gap:var(--sp-2);max-height:100%;min-height:0;overflow:auto;align-content:start}.screen-review__card{border:1px solid var(--color-border);border-left:4px solid var(--color-accent);border-radius:var(--radius-small);padding:var(--sp-2) var(--sp-3);background:var(--color-bg-panel)}.screen-review__row{margin:4px 0;font-size:var(--wall-base)}.screen-review__lbl{display:inline-block;min-width:7em;font-weight:700;color:var(--color-accent)}.screen-line__note{display:flex;gap:var(--sp-2);align-items:baseline;margin:3px 0 7px 3.5ch;padding:5px 12px;background:var(--color-accent);color:var(--color-accent-text);border-radius:var(--radius-small);font-family:var(--font-ui);font-size:var(--wall-base);line-height:1.35}.screen-line__noteicon{flex:none}@media(max-width:760px){.screen-review__cols{grid-template-columns:1fr}}.review-panel{margin:var(--sp-3) 0;padding:var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg-panel)}.review-panel__bar{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap}.review-panel__bar .panel__title{margin:0}.review-panel__progress{font-family:var(--font-mono);font-size:var(--fs-small);color:var(--color-text-soft)}.review-panel__bar .btn--ghost{margin-left:auto}.review-panel__hint{font-size:var(--fs-small);color:var(--color-text-soft);margin:var(--sp-2) 0}.review-modlist{display:grid;gap:var(--sp-2);max-height:46vh;overflow:auto}.review-modlist__empty{color:var(--color-text-soft);font-size:var(--fs-small);margin:0}.review-mod{border:1px solid var(--color-border);border-radius:var(--radius-small);padding:var(--sp-2);background:var(--color-bg)}.review-mod__who{font-size:var(--fs-small);color:var(--color-text-soft);margin-bottom:4px}.review-mod__row{display:flex;gap:var(--sp-2);align-items:flex-start;margin:2px 0}.review-mod__field{flex:none;min-width:7.5em;font-weight:600;font-size:var(--fs-small);color:var(--color-text-soft)}.roster-add{margin:var(--sp-2) var(--sp-4);border:1px solid var(--color-border);border-radius:var(--radius-small);padding:var(--sp-2) var(--sp-3);background:var(--color-bg-panel)}.roster-add>summary{cursor:pointer;font-size:var(--fs-small);font-weight:600;color:var(--color-text-soft)}.roster-add__form{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;margin-top:var(--sp-2)}.roster-add__form input{flex:1 1 120px}.roster-add__msg{font-size:var(--fs-small);font-weight:600}.roster-add__msg.is-ok{color:var(--color-ok)}.roster-add__msg.is-fail{color:var(--color-error)}.card--alert{animation:struggle-blink 1s ease-in-out infinite}@keyframes struggle-blink{0%,to{box-shadow:inset 0 0 0 2px var(--color-error),0 0 #c5303000}50%{box-shadow:inset 0 0 0 3px var(--color-error),0 0 0 4px #c5303073}}@media(prefers-reduced-motion:reduce){.card--alert{animation:none;box-shadow:inset 0 0 0 3px var(--color-error)}}.card__struggle{font-size:var(--fs-small);font-weight:700;border-radius:999px;padding:1px 8px;cursor:help}.card__struggle.is-watch{color:#7a4d00;background:#ffe6b0}.card__struggle.is-stuck{color:var(--color-accent-text);background:var(--color-error)}.card__struggle-msg{font-size:var(--fs-small);font-weight:600;border-radius:var(--radius-small);padding:2px 8px}.card__struggle-msg.is-watch{color:#7a4d00;background:#fff4dc}.card__struggle-msg.is-stuck{color:var(--color-error);background:var(--color-error-background)}.student-detail{position:fixed;inset:auto 0 0;background:var(--color-bg-panel);border-top:2px solid var(--color-error);max-height:60vh;overflow:auto;z-index:16;box-shadow:var(--shadow);padding:var(--sp-3) var(--sp-4)}.student-detail__bar{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-2)}.student-detail__bar .panel__title{margin-right:auto}.student-detail__body{display:flex;flex-direction:column;gap:4px}.detail-head{font-weight:700;border-radius:999px;padding:2px 10px;align-self:flex-start;margin-bottom:var(--sp-2)}.detail-head.is-ok{color:var(--color-ok);background:var(--color-accent-soft)}.detail-head.is-watch{color:#7a4d00;background:#ffe6b0}.detail-head.is-stuck{color:var(--color-accent-text);background:var(--color-error)}.detail-inactive{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;font-weight:700;color:var(--color-bg-panel);background:var(--color-text-soft);border-radius:999px;padding:2px 10px;margin-bottom:var(--sp-2)}.detail-inactive .icon{flex:none}.detail-row{display:flex;align-items:center;gap:var(--sp-2);padding:4px 8px;border-radius:var(--radius-small)}.detail-row__icon{width:1.4em;text-align:center}.detail-row__label{flex:1 1 auto}.detail-row__value{font-variant-numeric:tabular-nums;font-weight:600}.detail-row.is-off{color:var(--color-text-soft);opacity:.6}.detail-row.is-watch{background:#fff4dc;color:#7a4d00}.detail-row.is-stuck{background:var(--color-error-background);color:var(--color-error);font-weight:600}.detail-empty{color:var(--color-text-soft)}.escape__stuck{align-self:flex-start;margin:var(--sp-1) 0}.btn--stuck.is-stuck{--btn-bg: #d98a00;--btn-bg-hover: #e69c26;--btn-fg: #1f1300;border-color:transparent}.helppanel{position:fixed;z-index:35;display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-3);background:var(--color-bg-panel);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow)}.helppanel p{margin:0}.helppanel__status{font-weight:700}.helppanel__ask,.helppanel__tip{font-size:var(--fs-small);color:var(--color-text-soft)}.helppanel__kinds{display:flex;flex-wrap:wrap;gap:var(--sp-1)}.helppanel__kind{min-height:36px;padding:4px 10px;font:inherit;font-size:var(--fs-small);color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-border);border-radius:999px;cursor:pointer}.helppanel__kind:hover{background:var(--color-bg-deep)}.helppanel__kind[aria-pressed=true]{color:var(--color-accent-text);background:var(--color-accent);border-color:transparent}.helppanel__kind:focus-visible,.helppanel__ok:focus-visible{outline:none;box-shadow:var(--ring)}.helppanel__ok{align-self:flex-end}.card__code{position:relative;margin:0;font-family:var(--font-mono);font-size:var(--fs-small);background:var(--color-bg-deep);border-radius:var(--radius-small);padding:var(--sp-2);max-height:160px;overflow:auto;white-space:pre-wrap}.card__code[data-more]:not([data-more=""]):after{content:"+" attr(data-more);position:absolute;right:6px;bottom:4px;font-size:var(--fs-small);color:var(--color-text-soft);background:var(--color-bg-panel);padding:0 4px;border-radius:var(--radius-small)}.test-spec{background:var(--color-bg-panel);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--sp-3) var(--sp-4);margin:var(--sp-3) 0}.test-spec__cases{display:flex;flex-wrap:wrap;gap:var(--sp-3)}.test-spec--error{border-color:var(--color-error);background:var(--color-error-soft)}.test-spec__why{margin:var(--sp-2) 0 0;white-space:pre-line}.test-spec__detail{margin:var(--sp-2) 0 0;padding:var(--sp-2);max-height:10em;overflow:auto;white-space:pre-wrap;font-family:var(--font-mono);font-size:var(--fs-small);background:var(--color-bg-deep);border-radius:var(--radius-small)}.test-spec .testcase{flex:1 1 220px}#afterClock .test-spec{margin:var(--sp-2) 0 0;padding:var(--sp-2) var(--sp-3)}#afterClock .test-spec__cases{max-height:50vh;overflow:auto}.ex-code-editor{height:130px;border:1px solid var(--color-border);border-radius:var(--radius-small);overflow:hidden;background:var(--color-bg-panel)}.ex-code-editor .cm-editor{height:100%;font-size:var(--fs-small)}.ex-code-editor.ex-code-editor--grow{height:auto}.ex-code-editor--grow .cm-editor{height:auto;max-height:70vh;font-size:var(--fs-normal)}.ex-code-editor--grow .cm-scroller{overflow:auto}.ex-code-editor--grow .cm-content,.ex-code-editor--grow .cm-gutter{min-height:16rem}.filetabs{display:flex;align-items:stretch;gap:2px;flex:1;overflow-x:auto}.filetab{display:inline-flex;align-items:center;gap:var(--sp-1);padding:4px 10px;border:1px solid transparent;border-bottom:none;border-radius:var(--radius-small) var(--radius-small) 0 0;background:var(--color-bg-deep);color:var(--color-text-soft);font-family:var(--font-mono);font-size:var(--fs-small);cursor:pointer;white-space:nowrap}.filetab.is-active{background:var(--color-bg-panel);color:var(--color-text);border-color:var(--color-border);font-weight:600}.filetab--ref{font-style:italic}.filetab--data{border-top:3px solid var(--color-info)}.filetab--made{border-top-color:var(--color-ok);font-family:var(--font-ui)}.filetab--reset{margin-left:2px;padding:0 6px;border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg-panel);color:var(--color-text)}.student-layout .panel--editor .filetab.filetab--reset{align-self:center;height:28px;padding:0 6px;border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg-panel)}@media(max-width:899px){.panel--editor .panel__bar{flex-wrap:wrap}.panel--editor .filetabs{flex:1 1 100%;order:-1}.panel--editor .panel__actions{flex-wrap:wrap;min-width:0}.footer .savestate{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app--student #resetCodeBtn,.app--student #downloadMineBtn{display:none}}.filetab.has-error{color:var(--color-error);border-color:var(--color-error)}.filetab.has-error:after{content:"●";margin-left:4px;font-size:.7em}.filetab--add{font-weight:700;min-width:2em;justify-content:center}.filetab__del{opacity:.5}.filetab__del:hover{opacity:1;color:var(--color-error)}.testresult{font-size:var(--fs-small);font-weight:600}.testresult.is-pass{color:var(--color-ok)}.testresult.is-fail{color:var(--color-error)}.overlay__card--wide{max-width:820px;width:94vw;max-height:88vh;display:flex;flex-direction:column;text-align:left}.testov__head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex:0 0 auto}.testov__partdone{margin:0 0 var(--sp-3) 0;padding:var(--sp-3);border:1px solid var(--color-accent);border-radius:var(--radius);background:var(--color-accent-soft);display:flex;flex-direction:column;gap:var(--sp-2)}.testov__partdone-header{margin:0;display:flex;align-items:baseline;gap:var(--sp-2);font-weight:600}.testov__partdone-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.testov__summary{font-weight:700;flex:0 0 auto;margin:var(--sp-2) 0}.testov__cases{display:flex;flex-direction:column;gap:var(--sp-3);overflow-y:auto;flex:1 1 auto;min-height:0;padding-right:var(--sp-2)}.testcase{border:1px solid var(--color-border);border-radius:var(--radius-small);padding:var(--sp-2) var(--sp-3)}.testcase.is-pass{border-color:var(--color-ok)}.testcase.is-fail{border-color:var(--color-error)}.testcase__head{font-weight:700;margin-bottom:var(--sp-2)}.testcase__mem{margin:0 0 var(--sp-2);color:var(--color-warning);font-size:var(--fs-small);line-height:1.4}.testcase__leak{margin:0 0 var(--sp-2);max-height:40vh;overflow:auto}.testcase__row{display:grid;grid-template-columns:6em 1fr;gap:var(--sp-2);align-items:start;margin-top:4px}.testcase__label{color:var(--color-text-soft);font-size:var(--fs-small)}.testcase__row pre{margin:0;font-family:var(--font-mono);font-size:var(--fs-small);background:var(--color-bg-deep);border-radius:4px;padding:4px 8px;white-space:pre-wrap;max-height:30vh;overflow:auto}.testov__opts{flex:0 0 auto}.testov__opts .field{margin-bottom:var(--sp-2);width:max-content;max-width:100%}.diff-legend{margin:0 0 var(--sp-2);font-size:var(--fs-small);color:var(--color-text-soft)}.diffline--uncounted{opacity:.5}.diffline--none{display:inline-block;box-sizing:border-box;width:100%}.diffline--gap{border-bottom:1px dashed var(--color-border)}.diffmark{background:var(--color-diff-bg);color:var(--color-diff-text);border-radius:2px;padding:0 1px}.diffmark--none{display:inline-block;width:3px;height:1.05em;padding:0;margin:0 -1px;vertical-align:text-bottom;background:var(--color-diff-border)}.diffws{position:relative}.diffws:after{content:"·";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;opacity:.7;pointer-events:none}.diffws--tab:after{content:"→"}.card__meta{font-size:var(--fs-small);color:var(--color-text-soft);display:flex;flex-wrap:wrap;gap:var(--sp-3)}.card__label{font-family:var(--font-mono);font-weight:700;background:var(--color-accent);color:var(--color-accent-text);border-radius:var(--radius-small);padding:0 8px}.card__extra{font-size:var(--fs-small);font-weight:700;font-variant-numeric:tabular-nums;color:var(--color-accent);background:var(--color-accent-soft);border-radius:999px;padding:1px 8px}.card__where{font-size:var(--fs-small);font-weight:700;color:var(--color-accent);background:var(--color-accent-soft);border-radius:999px;padding:1px 8px}.card--projected{border-color:var(--color-accent);box-shadow:inset 0 0 0 2px var(--color-accent)}.card{padding:var(--sp-2) var(--sp-3);gap:var(--sp-1)}.card.is-filtered-out{display:none}.card__code{line-height:1.45;max-height:calc(4 * 1.45em + 2 * var(--sp-2))}.card__name{font:inherit;font-weight:700;padding:0;margin:0;color:var(--color-text);background:none;border:0;cursor:pointer;text-align:left;overflow-wrap:anywhere;min-width:0}.card__name:hover{text-decoration:underline}.card__name:focus-visible{outline:none;box-shadow:var(--ring);border-radius:var(--radius-small)}.card__notemark{font-size:var(--fs-small);cursor:help}.m-analysis .is-ok{color:var(--color-ok)}.m-analysis .is-mismatch{color:var(--color-error)}.m-tests{font-weight:700;border-radius:999px;padding:1px 8px}.m-tests.is-pass{color:var(--color-accent-text);background:var(--color-ok)}.m-tests.is-fail{color:var(--color-error);background:var(--color-error-background)}.m-memerr{color:var(--color-error);font-size:var(--fs-small)}.m-runs{font-weight:600}.m-runs.is-overpar{color:var(--hl-num);font-weight:700}.testruns{font-size:var(--fs-small);font-weight:600;color:var(--color-text-soft);font-variant-numeric:tabular-nums}.testruns.is-overpar{color:var(--hl-num)}.expected{margin-top:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);padding:var(--sp-2) var(--sp-3);background:var(--color-bg-panel)}.expected>summary{cursor:pointer;font-size:var(--fs-small);font-weight:600;color:var(--color-text-soft)}.expected .test-spec__cases{margin-top:var(--sp-2)}.expected .test-spec__cases{flex-direction:column;flex-wrap:nowrap}.expected .test-spec__cases>.testcase{flex:none;width:100%;min-width:0;box-sizing:border-box}.expected .testcase__row pre{overflow-wrap:anywhere;word-break:break-word}.expected .testcase__row pre{max-height:12em}.ex-preview,.ex-preview-out,.ex-part-preview-out,.ex-testex-preview-out{margin-top:var(--sp-2)}.ex-preview-msg{font-size:var(--fs-small);color:var(--color-text-soft)}.ex-preview-msg.is-fail{color:var(--color-error)}.ex-preview-msg.is-warn{color:var(--color-warning)}.noinput{margin:0 0 var(--sp-3)}.noinput__box{display:inline-flex;align-items:center;gap:var(--sp-1);cursor:pointer}.noinput .noinput__help{margin:var(--sp-1) 0 0}.noinput__warn{margin:var(--sp-1) 0 0;color:var(--color-warning);font-weight:600;font-size:var(--fs-small)}textarea.is-noinput{opacity:.55}.testcase__noinput{font-style:italic;color:var(--color-text-soft)}.ex-preview-warn{font-family:var(--font-mono);font-size:var(--fs-small);white-space:pre-wrap;overflow-x:auto;max-height:12em;margin:var(--sp-1) 0 0;padding:var(--sp-2);background:var(--color-bg-deep);border-radius:var(--radius-small);color:var(--color-text)}.projection{position:fixed;inset:auto 0 0;background:var(--color-bg-panel);border-top:2px solid var(--color-accent);max-height:60vh;overflow:auto;z-index:15;box-shadow:var(--shadow)}.is-projecting .dashboard,.is-projecting .live-pane--activity{padding-bottom:64vh}.projection__bar{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-4)}.projection__hint{font-size:var(--fs-small);color:var(--color-text-soft)}.projection__items{display:flex;gap:var(--sp-3);padding:0 var(--sp-4) var(--sp-4);overflow-x:auto}.proj-col{flex:1 1 0;min-width:220px}.proj-col__head{font-weight:700;font-family:var(--font-mono);margin-bottom:var(--sp-2)}.proj-col--solo{flex:none;margin:var(--sp-3) 0}.run-groups>.proj-col--solo{flex:1 1 100%;min-width:0}.proj-col--solo .proj-col__head{display:flex;gap:var(--sp-2);align-items:baseline;font-weight:600;font-family:inherit;font-size:var(--fs-small);color:var(--color-text-soft)}.proj-col--solo .proj-line{cursor:default}.proj-col--solo .proj-line:not(.is-highlight):hover{background:none}.proj-lines{max-height:34vh;overflow:auto;margin:0;padding:var(--sp-2) 0;list-style:none;font-family:var(--font-mono);font-size:var(--fs-small);background:var(--color-bg-deep);border-radius:var(--radius-small)}.proj-line{display:flex;gap:var(--sp-3);padding:0 var(--sp-2);cursor:pointer}.proj-line:hover{background:var(--color-accent-soft)}.proj-ln{flex:0 0 2.5ch;text-align:right;color:var(--color-text-soft);opacity:.7;user-select:none}.proj-code{white-space:pre-wrap;min-width:0}.proj-lines--clickable .proj-line{cursor:pointer}.proj-lines--clickable .proj-line:hover{outline:1px solid var(--color-accent);outline-offset:-1px}.proj-line.is-highlight{background:var(--color-accent)}.proj-line.is-highlight .proj-code,.proj-line.is-highlight .proj-code span{color:var(--color-accent-text)!important}.proj-line.is-highlight .proj-ln{color:var(--color-accent-text);opacity:1}.proj-line.is-diff{background:var(--color-error-background)}.proj-line.is-diff .proj-ln{color:var(--color-error);opacity:1}.btn.is-on{--btn-bg: var(--color-accent);--btn-bg-hover: var(--color-accent-hover);--btn-fg: var(--color-accent-text)}.hl-kw{color:var(--hl-kw);font-weight:600}.hl-type{color:var(--hl-type)}.hl-str{color:var(--hl-str)}.hl-num{color:var(--hl-num)}.hl-com{color:var(--color-text-soft);font-style:italic}.hl-pre{color:var(--hl-pre)}.app--screen{background:var(--color-bg-deep);height:100dvh;overflow:hidden}.app--screen .screen-layout{min-height:0;overflow:hidden}.screen-layout{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;gap:var(--sp-3);padding:var(--sp-4) var(--sp-5)}.screen-top{display:flex;align-items:baseline;gap:var(--sp-4);min-width:0}.app--screen .screen-main{min-height:0;display:flex;flex-direction:column;justify-content:center;overflow:hidden}.app--screen .screen-main>*{min-height:0;max-height:100%;overflow:auto}.app--screen .screen-marks,.app--screen .screen-error,.app--screen .screen-fixwindow,.app--screen .screen-swapboard,.app--screen .screen-more{flex:none}.screen-room{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:center;gap:var(--sp-1) var(--sp-4);min-width:0;text-align:center}.screen-layout.is-started .screen-room__label,.screen-layout.is-started .screen-room__url{display:none}.screen-layout.is-started .screen-room__code{font-size:1rem;opacity:.5}.screen-room__label{color:var(--color-text-soft);text-transform:uppercase;letter-spacing:.1em;font-size:var(--fs-small)}.screen-room__url{font-family:var(--font-mono);font-size:.95rem;color:var(--color-text-soft);word-break:break-all}.screen-room__code{font-family:var(--font-mono);font-size:1.6rem;letter-spacing:.12em;font-weight:700}.screen-timer{font-family:var(--font-mono);font-size:var(--wall-clock);line-height:1;font-variant-numeric:tabular-nums}.screen-timer.is-low{color:var(--color-error)}.screen-clock{position:fixed;top:var(--sp-2);right:var(--sp-3);z-index:40;display:flex;align-items:baseline;gap:var(--sp-2);padding:2px var(--sp-2);border-radius:var(--radius-small);background:var(--color-bg-panel);border:1px solid var(--color-border);font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--fs-normal);color:var(--color-text-soft)}.screen-clock[hidden]{display:none}.app--screen .screen-cloze__prompt,.app--screen .poll__q,.app--screen .wordwall__q,.app--screen #clozeCardPrompt,.app--screen .screen-example__title,.app--screen .escape__title,.app--screen .territory__title,.app--screen .bug__caption{max-width:max(60%,calc(100% - 2 * var(--wall-clock-room)));margin-inline:auto}.app--screen .live-card__head{max-width:calc(100% - var(--wall-clock-room))}.screen-clock__left.is-warn{color:var(--color-warning);font-weight:700}.screen-clock__left.is-urgent,.screen-clock__left.is-over{color:var(--color-error);font-weight:700}.screen-prompt{font-size:var(--wall-header);line-height:1.3}.screen-marks{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--sp-2);margin-bottom:var(--sp-2)}.screen-marks[hidden]{display:none}.screen-marks .mark-chip{font-size:1.1rem;padding:2px 14px;border-width:2px;color:var(--color-text)}.screen-prompt[data-format=markdown] code{font-size:1em}.screen-more{margin-top:var(--sp-2);text-align:center;font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:.08em;color:var(--color-text);font-size:var(--wall-text)}.screen-more[hidden]{display:none}.screen-projection{display:flex;flex-direction:column}.screen-projection__title{flex:none;font-size:var(--wall-text);margin:0 0 var(--sp-3);color:var(--color-text-soft)}.screen-projection__cols{display:flex;gap:var(--sp-4);align-items:stretch;flex:1 1 auto;min-height:0}.screen-col{flex:1 1 0;min-width:0;min-height:0;display:flex;flex-direction:column;border:2px solid var(--color-accent);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);background:var(--color-terminal-bg)}.screen-col__head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);font-family:var(--font-mono);font-weight:700;font-size:var(--wall-base);padding:var(--sp-2) var(--sp-3);background:var(--color-accent);color:var(--color-accent-text)}.screen-col__file{font-size:.95rem;font-weight:500;opacity:.85}.screen-col__more{font-size:.85rem;opacity:.6}.screen-fixwindow{display:flex;align-items:center;justify-content:center;gap:var(--sp-3);margin-top:var(--sp-3);padding:var(--sp-2) var(--sp-4);border-radius:var(--radius);background:var(--color-ok);color:var(--color-accent-text);font-size:var(--wall-text);font-weight:600}.screen-fixwindow__time{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.prompt-preview{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);max-width:none;width:min(96vw,1440px,calc((85vh - 4.5rem) * 16 / 9))}.prompt-preview__bar{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border);font-size:var(--fs-small)}.prompt-preview__bar>:last-child{margin-left:auto}.prompt-preview__screen{aspect-ratio:16 / 9;margin:var(--sp-3);padding:var(--sp-3);overflow:hidden;border-radius:var(--radius-small);background:var(--color-bg-deep);display:flex;align-items:center}.prompt-preview__text{width:100%;max-height:100%;overflow:hidden;line-height:1.3}.input--mini{width:4.5em;margin-left:var(--sp-1)}.proj-col__head{display:flex;align-items:baseline;gap:var(--sp-2);flex-wrap:wrap}.proj-col__files{display:flex;gap:2px}.proj-file{padding:1px var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius);background:transparent;color:var(--color-text-soft);font-family:var(--font-mono);font-size:var(--fs-small);cursor:pointer}.proj-file.is-on{border-color:var(--color-accent);color:var(--color-text);background:var(--color-bg-deep)}.proj-col__window{margin-left:auto;color:var(--color-text-soft);font-size:var(--fs-small);font-variant-numeric:tabular-nums}.proj-line.is-on-screen{box-shadow:inset 2px 0 0 var(--color-accent)}.screen-col .screen-lines{scrollbar-width:none}.screen-col .screen-lines::-webkit-scrollbar{display:none}.screen-lines{flex:1 1 auto;min-height:0;margin:0;padding:var(--sp-3);list-style:none;font-family:var(--font-mono);font-size:var(--wall-base);line-height:1.4;color:var(--color-terminal-text);overflow:auto}.screen-line{display:flex;gap:var(--sp-3);padding:0 4px;border-radius:3px}.screen-ln{flex:0 0 2.5ch;text-align:right;color:#fff6;user-select:none}.screen-code{white-space:pre-wrap;min-width:0}.screen-line.is-highlight{background:var(--color-accent)}.screen-line.is-highlight .screen-code,.screen-line.is-highlight .screen-code span{color:var(--color-accent-text)!important}.screen-line.is-highlight .screen-ln{color:var(--color-accent-text)}.screen-line.is-diff{background:#5a2a2a}.screen-line.is-diff .screen-ln{color:#ff9b8a}.screen-code .hl-kw{color:#c678dd;font-weight:600}.screen-code .hl-type{color:#56b6c2}.screen-code .hl-str{color:#98c379}.screen-code .hl-num{color:#d19a66}.screen-code .hl-com{color:#7f848e;font-style:italic}.screen-code .hl-pre{color:#61afef}.dbg__linecode .hl-kw{color:#e0abdd;font-weight:600}.dbg__linecode .hl-type{color:#6fc7c9}.dbg__linecode .hl-str{color:#93c98f}.dbg__linecode .hl-num{color:#e6b26e}.dbg__linecode .hl-com{color:#c2bbad;font-style:italic}.dbg__linecode .hl-pre{color:#9fc3ef}@media(max-width:720px){.screen-timer{font-size:3rem}.screen-projection__cols{flex-direction:column}}.presence-bar{padding:var(--sp-2) var(--sp-4);border-top:1px solid var(--color-border);background:var(--color-bg-panel)}.presence-bar[hidden]{display:none}.presence-bar__list{display:flex;flex-wrap:wrap;gap:var(--sp-2);justify-content:center;margin:0;padding:0;list-style:none}.presence-chip{font-family:var(--font-mono);font-size:1.2rem;padding:4px 14px;border-radius:999px;border:2px solid var(--color-border);background:var(--color-bg-deep);white-space:nowrap;transition:border-color .3s,color .3s,opacity .3s}.presence-chip.is-online{border-color:var(--color-ok);color:var(--color-text)}.presence-chip.is-offline{border-color:var(--color-error);color:var(--color-error);opacity:.85}.presence-chip.is-missing{border-style:dashed;border-color:var(--color-border);color:var(--color-text-soft)}.presence-chip.is-extra{font-style:italic}.presence-bar.is-popin{position:fixed;left:0;right:0;bottom:0;z-index:30;box-shadow:0 -4px 18px #00000059;animation:presence-slide-in .3s ease-out}@keyframes presence-slide-in{0%{transform:translateY(100%)}to{transform:translateY(0)}}.screen-lobby{position:fixed;inset:0;z-index:20;background:var(--color-bg-deep);display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:var(--sp-5);align-items:center;padding:var(--sp-5)}.screen-lobby[hidden]{display:none}.lobby__join{text-align:center}.lobby__label{color:var(--color-text-soft);text-transform:uppercase;letter-spacing:.12em;font-size:var(--wall-text)}.lobby__url{font-family:var(--font-mono);font-size:var(--wall-large);font-weight:700;color:var(--color-accent);overflow-wrap:anywhere;line-height:1.3;margin:var(--sp-3) 0 var(--sp-2)}.lobby__hint{color:var(--color-text-soft);font-size:var(--wall-base);margin-bottom:var(--sp-5)}.lobby__codelabel{color:var(--color-text-soft);text-transform:uppercase;letter-spacing:.12em;font-size:var(--wall-base)}.lobby__code{font-family:var(--font-mono);font-size:var(--wall-large);letter-spacing:.15em;font-weight:700;line-height:1.1}.lobby__wifi{margin-bottom:var(--sp-5);padding-bottom:var(--sp-4);border-bottom:1px solid var(--color-border);text-align:center}.lobby__wifirows{display:grid;grid-template-columns:auto auto;gap:var(--sp-2) var(--sp-4);justify-content:center;margin:var(--sp-2) 0 0}.lobby__wifirows dt{color:var(--color-text-soft);font-size:var(--wall-base);text-align:right;align-self:center}.lobby__wifirows dd{margin:0;font-family:var(--font-mono);font-size:var(--wall-header);font-weight:700;text-align:left;overflow-wrap:anywhere}.lobby__tips{margin:var(--sp-5) auto 0;padding:0;list-style:none;max-width:46ch;text-align:left;color:var(--color-text-soft);font-size:1.05rem;line-height:1.5}.lobby__tips li{margin:2px 0;padding-left:1.1em;text-indent:-1.1em}.lobby__tips li:before{content:"· "}.lobby__tiphead{max-width:46ch;margin:var(--sp-5) auto calc(-1 * var(--sp-3));text-align:left;color:var(--color-text);font-size:1.1rem;font-weight:600}.lobby__wifi[hidden]{display:none}.lobby__students{max-height:92vh;overflow:auto}.lobby__students-title{font-size:1.6rem;color:var(--color-text-soft);margin-bottom:var(--sp-4)}.lobby__list{display:flex;flex-wrap:wrap;gap:var(--sp-3);margin:0;padding:0;list-style:none}.lobby__list .presence-chip{font-size:1.5rem;padding:6px 18px}.lobby__empty{color:var(--color-text-soft);font-size:1.3rem;font-style:italic}.lobby__empty[hidden]{display:none}@media(max-width:720px){.screen-lobby{grid-template-columns:1fr}.lobby__code{font-size:2.2rem}}.cloze-code{font-family:var(--font-mono);white-space:pre-wrap;word-break:break-word;background:#1e1b16;color:#eae6dc;border-radius:var(--radius-small);padding:var(--sp-3);margin:0;line-height:1.7;overflow:auto}.cloze-gap{box-sizing:content-box;font-family:inherit;font-size:.95em;color:#1e1b16;background:#ffe9a8;border:1px solid #d9a900;border-radius:4px;padding:0 4px;margin:0 1px;min-width:3ch}.cloze-gap:focus-visible{outline:none;box-shadow:0 0 0 2px var(--color-accent)}.cloze-gap:disabled{background:#b7d9a0;border-color:#6fae4a;color:#1e2b16}.cloze-blank{border-bottom:2px solid #d9a900;padding:0 2px;color:#ffe9a8}.cloze-blank.is-filled{background:#7bb04a47;border-bottom-color:#7bb04a;color:#eae6dc}.overlay--cloze{align-items:flex-start;overflow:auto}.cloze-card__hint{margin:0 0 var(--sp-3);color:var(--color-text-soft)}.cloze-card__code{max-height:55vh}.cloze-card__foot{display:flex;align-items:center;gap:var(--sp-3);margin-top:var(--sp-3)}.cloze-card__status{font-weight:600}.cloze-card__status.is-ok{color:var(--color-ok)}.cloze-card__status.is-fail{color:var(--color-error)}.cloze-card__status.is-warn{color:var(--color-warning)}.cloze-card__status.is-busy{color:var(--color-text-soft)}.parsons-round{display:flex;flex-direction:column;gap:var(--sp-3);min-width:0}.parsons-round__prompt{margin:0}.parsons-round__foot{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-3)}.parsons-round__status{font-weight:600}.parsons-round__status.is-ok{color:var(--color-ok)}.parsons-round__status.is-fail{color:var(--color-error)}.parsons-round__status.is-warn{color:var(--color-warning)}.parsons-round__status.is-busy,.parsons-round__status.is-info{color:var(--color-text-soft)}.parsons-board{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:var(--sp-3);min-width:0;user-select:none;-webkit-user-select:none}@media(max-width:760px){.parsons-board{grid-template-columns:minmax(0,1fr)}}.pb-head{margin:0 0 var(--sp-2);font-size:var(--fs-normal)}.pb-file{font-family:var(--font-mono);font-size:var(--fs-small);color:var(--color-text-soft);font-weight:400}.pb-program,.pb-pool{min-width:0;border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--sp-2);background:var(--color-bg-panel)}.pb-pool.is-drop{outline:2px dashed var(--color-accent);outline-offset:2px}.pb-lines{position:relative;list-style:none;margin:0;padding:0;font-family:var(--font-mono);font-size:var(--fs-small);overflow-x:auto}.pb-row{display:flex;align-items:center;gap:var(--sp-2);min-height:2em;border-radius:var(--radius-small);padding-left:calc(var(--pb-level, 0) * 1.6em);white-space:pre;position:relative;background-image:repeating-linear-gradient(to right,transparent 0,transparent calc(1.6em - 1px),var(--color-border) calc(1.6em - 1px),var(--color-border) 1.6em);background-size:calc(var(--pb-level, 0) * 1.6em) 100%;background-repeat:no-repeat}.pb-no{position:sticky;left:0;min-width:2ch;text-align:right;color:var(--color-text-soft);background:var(--color-bg-panel);margin-left:calc(var(--pb-level, 0) * -1.6em);margin-right:calc(var(--pb-level, 0) * 1.6em)}.pb-row--fixed,.pb-row--brace{color:var(--color-text-soft)}.pb-row--brace{font-style:italic}.pb-row--card{cursor:pointer}.pb-row--card:focus-visible{outline:none;box-shadow:var(--ring)}.pb-row.is-selected{background-color:var(--color-accent-soft)}.pb-row.is-mark{outline:2px solid var(--color-warning);outline-offset:-2px}.pb-row.is-error{background-color:var(--color-error-soft)}.pb-row.is-grabbed{outline:2px dashed var(--color-accent);outline-offset:-2px}.pb-lock{color:var(--color-text-soft);font-size:.85em}.pb-grip{display:inline-flex;color:var(--color-text-soft);cursor:grab;touch-action:none;padding:0 2px}.pb-insert{height:0;border-top:2px solid var(--color-accent);margin:1px 0;list-style:none}.parsons-board.is-locked .pb-insert,.parsons-board.is-locked .pb-grip{display:none}.pb-tools{display:flex;gap:var(--sp-1);padding:var(--sp-1) 0 var(--sp-1) calc(2ch + var(--sp-2));list-style:none}.pb-tool{min-width:44px;min-height:40px;display:inline-flex;align-items:center;justify-content:center;font-size:1.1rem;border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg);color:var(--color-text);cursor:pointer}.pb-tool:disabled{opacity:.45;cursor:default}.pb-pool__list,.pb-pair__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-1)}.pb-pool__empty{color:var(--color-text-soft);font-size:var(--fs-small)}.pb-pair{border:1px dashed var(--color-border);border-radius:var(--radius-small);padding:var(--sp-1)}.pb-pair__label{display:block;font-size:var(--fs-small);color:var(--color-text-soft);margin-bottom:var(--sp-1)}.pb-card{display:flex;align-items:flex-start;gap:var(--sp-1);width:100%;min-width:0;text-align:left;font-family:var(--font-mono);font-size:var(--fs-small);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg);color:var(--color-text);padding:var(--sp-1) var(--sp-2);cursor:pointer;min-height:40px}.pb-card:focus-visible{outline:none;box-shadow:var(--ring)}.pb-card:disabled{cursor:default;opacity:.7}.pb-card__code{display:flex;flex-direction:column;min-width:0;overflow-x:auto}.pb-card__line{white-space:pre;padding-left:calc(var(--pb-rel, 0) * 1.6em)}.pb-ghost{position:fixed;left:0;top:0;z-index:1000;pointer-events:none;opacity:.85;box-shadow:var(--shadow)}.pb-drop{position:absolute;right:0;height:0;border-top:2px solid var(--color-accent);pointer-events:none}.pb-drop:before{content:"";position:absolute;left:-5px;top:-6px;width:10px;height:10px;border-radius:50%;background:var(--color-accent)}.parsons-board.is-dragging{cursor:grabbing}.parsons-feedback{min-width:0}.parsons-feedback p{margin:var(--sp-1) 0}.parsons-feedback__head{font-weight:600}.parsons-feedback.is-ok .parsons-feedback__head{color:var(--color-ok)}.parsons-feedback__compiler{white-space:pre-wrap;overflow-wrap:anywhere;font-family:var(--font-mono);font-size:var(--fs-small);background:var(--color-bg-deep);border-radius:var(--radius-small);padding:var(--sp-2);margin:var(--sp-1) 0}.parsons-feedback__diff{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,14rem),1fr));gap:var(--sp-2)}.parsons-feedback__diff h4{margin:0 0 var(--sp-1);font-size:var(--fs-small)}.parsons-feedback__diff pre{margin:0;overflow-x:auto;font-size:var(--fs-small);background:var(--color-bg-deep);border-radius:var(--radius-small);padding:var(--sp-2)}.parsons-feedback__note{font-style:italic}.parsons-help{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.parsons-answer__code{overflow-x:auto;font-size:var(--fs-small);background:var(--color-bg-deep);border-radius:var(--radius-small);padding:var(--sp-2);margin:0}.parsons-answer__distractors{margin:var(--sp-2) 0 0;padding-left:var(--sp-4);font-size:var(--fs-small)}.parsons-answer__distractors .is-struck{text-decoration:line-through}.present-view__note{color:var(--color-text-soft)}.parsons-teacher{display:flex;flex-direction:column;gap:var(--sp-3);min-width:0}.parsons-teacher__counters{margin:0;font-weight:600}.parsons-teacher__section h3{margin:0 0 var(--sp-1);font-size:var(--fs-normal)}.parsons-teacher__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-1)}.parsons-arrangement__head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--sp-2)}.parsons-mistake{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:var(--sp-2);padding:2px var(--sp-2);border-radius:var(--radius-small)}.parsons-mistake.is-on-wall{box-shadow:inset 3px 0 0 var(--color-accent);background:var(--color-accent-soft)}.parsons-arrangement__code{margin:var(--sp-1) 0 0;max-height:14rem;overflow:auto;font-size:var(--fs-small);background:var(--color-bg-deep);border-radius:var(--radius-small);padding:var(--sp-2)}.parsons-student.is-ok{color:var(--color-ok)}.parsons-histo{display:flex;flex-direction:column;gap:2px;font-size:var(--fs-small)}.parsons-histo__row{display:grid;grid-template-columns:9rem 1fr 2rem;align-items:center;gap:var(--sp-2)}.parsons-histo__bar{height:.7rem;border-radius:var(--radius-small);background:var(--color-accent);width:calc(var(--pb-share, 0) * 100%)}.screen-parsonscard__text{font-size:var(--wall-text);max-width:60ch;text-align:center}.parsons-blines{display:flex;flex-direction:column;gap:2px;margin-top:var(--sp-2);max-height:22rem;overflow:auto}.parsons-bline{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);font-size:var(--fs-small);padding:1px var(--sp-1);border-radius:var(--radius-small)}.parsons-bline--fixed,.parsons-bline--auto,.parsons-bline--drop{color:var(--color-text-soft)}.parsons-bline--card{background:var(--color-bg-panel)}.parsons-bline__no{min-width:2ch;text-align:right;color:var(--color-text-soft)}.parsons-bline__code{flex:1 1 14rem;min-width:0;white-space:pre;overflow-x:auto;font-family:var(--font-mono)}.parsons-bline__role{min-width:7rem;font-style:italic}.parsons-bline__flag{display:inline-flex;align-items:center;gap:2px}.parsons-bdists{display:flex;flex-direction:column;gap:var(--sp-2);margin-bottom:var(--sp-2)}.parsons-bdis{border:1px dashed var(--color-border);border-radius:var(--radius-small);padding:var(--sp-2);display:flex;flex-direction:column;gap:var(--sp-1)}.parsons-bdis__head{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center}.parsons-bdis__code{flex:1 1 14rem;min-width:0;font-family:var(--font-mono)}.parsons-bdis__twin{max-width:100%}.parsons-bdis__ideas{display:flex;flex-wrap:wrap;gap:var(--sp-1)}.parsons-bdis__idea{font-family:var(--font-mono)}.parsons-bchecks{list-style:none;margin:0 0 var(--sp-2);padding:0;font-size:var(--fs-small)}.parsons-bcheck.is-error{color:var(--color-error)}.parsons-bcheck.is-warn{color:var(--color-warning)}.parsons-bcheck.is-ok{color:var(--color-ok)}.parsons-bverify{white-space:pre-wrap;font-size:var(--fs-small);background:var(--color-bg-deep);border-radius:var(--radius-small);padding:var(--sp-2)}.parsons-bpreview__title{margin:var(--sp-3) 0 var(--sp-1);font-size:var(--fs-normal)}.screen-parsons{display:flex;flex-direction:column;gap:var(--sp-4);align-items:center;width:100%;min-height:0}.screen-parsons__head{display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);text-align:center}.screen-parsons__title{margin:0;font-size:var(--wall-header)}.screen-parsons__prompt{font-size:var(--wall-text);max-width:60ch}.screen-parsons__work{margin:0;font-size:var(--wall-text);color:var(--color-text-soft)}.screen-parsons.is-answer .screen-parsons__prompt,.screen-parsons.is-answer .screen-parsons__work{display:none}.screen-parsons__mistake{max-width:70ch;text-align:center;font-size:var(--wall-text);border:2px solid var(--color-warning);border-radius:var(--radius);padding:var(--sp-3) var(--sp-4)}.screen-parsons__mistake p{margin:var(--sp-1) 0}.screen-parsons__mistake-count{font-weight:700}.screen-parsons__mistake-question{font-style:italic}.screen-parsons__answer{display:flex;flex-direction:column;gap:var(--sp-2);width:100%;max-width:1100px;min-height:0;flex:1 1 auto}.screen-parsons__code{font-size:var(--wall-text);border-radius:var(--radius);background:var(--color-terminal-bg)}.parsons-wall__line--brace .screen-code,.parsons-wall__line--fixed .screen-code{opacity:.75}.parsons-wall__wrong{margin-left:auto;padding:0 var(--sp-2);border-radius:var(--radius-small);border-left:4px solid var(--color-error);background:var(--color-terminal-text);color:var(--color-terminal-bg);font-weight:700;white-space:nowrap}.screen-parsons__distractors{margin:0;padding-left:var(--sp-4);font-size:var(--wall-text)}.screen-parsons__distractors .is-struck{text-decoration:line-through}.screen-parsons__alt{margin:0;font-size:var(--wall-text);color:var(--color-ok);font-weight:600}.screen-cloze{display:flex;flex-direction:column;gap:var(--sp-4);align-items:center;width:100%;min-height:0}.screen-cloze__prompt{flex:none;margin:0;text-align:center;font-size:var(--wall-header)}.screen-cloze__code{font-size:var(--wall-text);width:100%;max-width:1100px;min-height:0}.screen-cloze__code.is-columns{max-width:none;column-count:2;column-gap:var(--sp-6);column-rule:1px solid rgba(234,230,220,.25)}.screen-cloze__code .cloze-blank{font-size:inherit}.screen-cloze__counters{flex:none;display:flex;gap:var(--sp-6)}.cloze-counter{display:flex;flex-direction:column;align-items:center}.cloze-counter__num{font-size:var(--wall-large);font-weight:800;line-height:1;font-variant-numeric:tabular-nums}.cloze-counter__label{text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-soft);font-size:var(--wall-base)}.cloze-counter--ok .cloze-counter__num{color:var(--color-ok)}.screen-cards-mem .cards-mem__empty{font-size:var(--wall-base)}.cloze-panel{margin:var(--sp-3) 0;padding:var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg-panel)}.cloze-panel__bar{display:flex;justify-content:space-between;align-items:baseline;gap:var(--sp-3);margin-bottom:var(--sp-2)}.cloze-panel__help{margin:0 0 var(--sp-3);color:var(--color-text-soft);font-size:var(--fs-small)}.cloze-panel__controls{display:flex;flex-direction:column;gap:var(--sp-2)}.cloze-template-input,.cloze-tests-input{font-family:var(--font-mono);width:100%;resize:vertical}.cloze-panel__row{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap}.cloze-status{font-weight:600}.cloze-status.is-ok{color:var(--color-ok)}.cloze-status.is-busy{color:var(--color-text-soft)}.cloze-status.is-warn{color:var(--color-warning)}.cloze-panel__counters{margin-top:var(--sp-3);font-weight:600}.cloze-subs{list-style:none;margin:var(--sp-3) 0 0;padding:0;display:flex;flex-direction:column;gap:4px}.cloze-sub{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-1) var(--sp-2);border:1px solid var(--color-border);border-left-width:4px;border-radius:var(--radius-small)}.cloze-sub.is-ok{border-left-color:var(--color-ok)}.cloze-sub.is-test{border-left-color:#d98a00}.cloze-sub.is-compile{border-left-color:#c0392b}.cloze-sub__name{font-weight:600;min-width:8em}.cloze-sub__badge{text-transform:uppercase;font-size:var(--fs-small);letter-spacing:.04em;padding:1px 6px;border-radius:999px;background:var(--color-bg-deep)}.cloze-sub.is-ok .cloze-sub__badge{background:var(--color-ok);color:var(--color-accent-text)}.cloze-sub__att{color:var(--color-text-soft);font-size:var(--fs-small)}.cloze-sub__fills{margin-left:auto;font-family:var(--font-mono);color:var(--color-text-soft)}.cloze-panel__toolbar{display:flex;gap:var(--sp-2);margin:var(--sp-3) 0 var(--sp-1)}.cloze-panel__toolbar .btn{min-height:30px;padding:2px 10px}.cloze-histogram{margin-top:var(--sp-3)}.cloze-histogram__title{margin:0 0 var(--sp-2);font-size:var(--fs-small);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-soft)}.cloze-hist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.cloze-hist__row{display:grid;grid-template-columns:minmax(6em,14em) 1fr;align-items:center;gap:var(--sp-2)}.cloze-hist__label{font-family:var(--font-mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cloze-hist__track{position:relative;display:flex;align-items:center;gap:var(--sp-2)}.cloze-hist__bar{height:20px;border-radius:4px;background:#d98a00;min-width:2px}.cloze-hist__row.is-ok .cloze-hist__bar{background:var(--color-ok)}.cloze-hist__row.is-compile .cloze-hist__bar{background:#c0392b}.cloze-hist__row.is-test .cloze-hist__bar{background:#d98a00}.cloze-hist__count{font-variant-numeric:tabular-nums;color:var(--color-text-soft);font-size:var(--fs-small);white-space:nowrap}.cloze-sub.is-code{flex-wrap:wrap;align-items:flex-start}.cloze-sub__code{margin:var(--sp-1) 0 0;width:100%;font-size:.9em;max-height:40vh}.cloze-sub__actions{display:flex;gap:4px;margin-left:auto}.cloze-sub.is-code .cloze-sub__actions{margin-left:0}.cloze-sub__btn,.cloze-hist__btn{min-height:26px;padding:1px 8px;font-size:var(--fs-small)}.cloze-sub__btn.is-on{background:var(--color-accent);color:var(--color-accent-text);border-color:transparent}.cloze-hist__btn{margin-left:var(--sp-2)}.screen-present{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);width:100%;min-height:0}.screen-present>*{max-width:100%}.screen-slide{flex:1 1 auto;min-height:0;max-width:100%;max-height:100%;object-fit:contain;border-radius:var(--radius-small);box-shadow:var(--shadow)}.screen-layout.is-presenting{padding:var(--sp-2);gap:0}.screen-layout.is-presenting .screen-room{display:none}body.is-no-room .screen-room,body.is-no-room .screen-top,body.is-no-room .screen-lobby,body.is-no-room .screen-clock,body.is-no-room .screen-main>*:not(.screen-error){display:none}.screen-error{max-width:24ch;color:var(--color-error);font-size:var(--wall-header);line-height:1.3;text-align:center}.screen-layout.is-presenting .screen-slide{width:100%}.screen-layout.is-ended .screen-room{display:none}.screen-present__pos{flex:none}.screen-present__pos{color:var(--color-text-soft);font-variant-numeric:tabular-nums}.present-panel{margin:var(--sp-3) 0;padding:var(--sp-3);border:1px solid var(--color-border-explanation);border-top:3px solid var(--color-accent);border-radius:var(--radius);background:var(--color-bg-explanation)}.present-panel__bar{display:flex;justify-content:space-between;align-items:baseline;gap:var(--sp-3);margin-bottom:var(--sp-2)}.present-panel__limit{color:var(--color-error);font-weight:600}.present-panel__help{margin:0 0 var(--sp-3);color:var(--color-text-soft);font-size:var(--fs-small)}.present-panel__add{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.present-status{color:var(--color-text-soft);font-size:var(--fs-small)}.present-code-form{display:flex;flex-direction:column;gap:var(--sp-2);margin:var(--sp-2) 0;padding:var(--sp-2);border:1px dashed var(--color-border);border-radius:var(--radius-small)}.present-steps{list-style:none;margin:var(--sp-3) 0;padding:0;display:flex;flex-direction:column;gap:4px}.present-step{display:flex;align-items:center;gap:var(--sp-2);padding:4px var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small)}.present-step.is-current{border-color:var(--color-accent);box-shadow:inset 3px 0 0 var(--color-accent)}.present-step.is-skipped .present-step__label{text-decoration:line-through;color:var(--color-text-soft)}.present-step.is-skipped .present-step__thumb{opacity:.45}.present-step.is-previewable{cursor:pointer}.present-step.is-preview{border-style:dashed;border-color:var(--color-accent)}.present-step__skip[aria-pressed=true]{border-color:var(--color-accent)}.present-preview{margin:0 0 var(--sp-3)}.present-preview__note{margin-bottom:var(--sp-1);font-size:var(--fs-small);color:var(--color-text-soft)}.present-preview__notes{margin-top:var(--sp-2);padding:var(--sp-2) var(--sp-3);border:1px solid var(--color-border);border-left:3px solid var(--color-accent);border-radius:var(--radius-small);background:var(--color-bg-panel)}.present-preview__notes[hidden]{display:none}.present-preview__notes-title{font-weight:700}.present-preview__notes-text{margin-top:var(--sp-1);max-height:25vh;overflow:auto;line-height:1.5;overflow-wrap:anywhere}.present-preview__img{display:block;width:100%;height:auto;max-height:40vh;object-fit:contain;background:var(--color-bg-deep);border:1px solid var(--color-border);border-radius:var(--radius-small)}.activity-bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);margin:0 0 var(--sp-2);padding:0 var(--sp-4)}.activity-bar:not(:has(>:not([hidden]))){display:none}.present-step__thumb{width:48px;height:32px;object-fit:cover;border-radius:3px;border:1px solid var(--color-border)}.present-step__label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.present-step__actions{display:flex;gap:2px}.present-step__btn{min-height:26px;padding:1px 8px}.slidenotes{margin:0 0 var(--sp-3);padding:var(--sp-2) var(--sp-3);border:1px solid var(--color-border);border-left:3px solid var(--color-accent);border-radius:var(--radius-small);background:var(--color-bg-panel)}body:not([data-view=teach]) .slidenotes{display:none}.slidenotes__head{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-1) var(--sp-2)}.slidenotes__toggle{display:inline-flex;align-items:center;gap:var(--sp-1);min-height:32px;padding:2px 6px;font:inherit;font-weight:700;color:var(--color-text);background:none;border:0;border-radius:var(--radius-small);cursor:pointer}.slidenotes__toggle:hover{background:var(--color-bg-deep)}.slidenotes__toggle:focus-visible{outline:none;box-shadow:var(--ring)}.slidenotes__caret{display:inline-block;width:1em;color:var(--color-text-soft)}.slidenotes.is-collapsed.has-notes .slidenotes__title:after{content:"";display:inline-block;width:8px;height:8px;margin-left:var(--sp-1);border-radius:999px;background:var(--color-accent);vertical-align:middle}.slidenotes__which{min-width:0;overflow-wrap:anywhere;color:var(--color-text-soft);font-size:var(--fs-small)}.slidenotes__lang{padding:0 6px;border-radius:999px;background:var(--color-bg-deep);color:var(--color-text-soft);font-size:var(--fs-small)}.slidenotes__edit{margin-left:auto}.slidenotes__text{margin-top:var(--sp-2);max-height:40vh;overflow:auto;font-size:var(--fs-large);line-height:1.5;overflow-wrap:anywhere}.slidenotes__empty{margin:var(--sp-2) 0 0;color:var(--color-text-soft)}.slidenotes__form{margin-top:var(--sp-2)}.slidenotes__form .builder-langbar,.slidenotes__field{margin-bottom:var(--sp-2)}.slidenotes__field textarea{min-height:8rem;resize:vertical;font:inherit}.slidenotes__formrow,.slidenotes__saverow{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}.slidenotes__count{margin-right:auto;color:var(--color-text-soft);font-size:var(--fs-small);font-variant-numeric:tabular-nums}.slidenotes__hint{margin:var(--sp-2) 0 0;color:var(--color-text-soft);font-size:var(--fs-small)}.slidenotes__saverow{margin-top:var(--sp-2)}.slidenotes__changed,.slidenotes__status{color:var(--color-text-soft);font-size:var(--fs-small)}.escape-wizard{gap:var(--sp-3)}.wizard-steps{list-style:none;display:flex;gap:var(--sp-1);margin:0 0 var(--sp-2);padding:0}.wizard-step{display:flex;align-items:center;gap:var(--sp-2);flex:1;min-width:0;padding:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);font-size:var(--fs-small);color:var(--color-text-soft);background:var(--color-bg)}.wizard-step__no{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;flex:none;border-radius:999px;border:1px solid var(--color-border);font-weight:700;font-variant-numeric:tabular-nums}.wizard-step.is-active{border-color:var(--color-accent);color:var(--color-text);box-shadow:var(--ring)}.wizard-step.is-active .wizard-step__no{background:var(--color-accent);color:var(--color-accent-text);border-color:transparent}.wizard-step.is-done .wizard-step__no{background:var(--color-ok);color:var(--color-accent-text);border-color:transparent}.wizard-panel__lead{margin:0 0 var(--sp-3);color:var(--color-text-soft);font-size:var(--fs-small)}.wizard-nav{display:flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-2);border-top:1px solid var(--color-border);padding-top:var(--sp-3)}.wizard-nav__spacer{flex:1}.mode-choice{border:none;margin:0 0 var(--sp-3);padding:0;display:flex;flex-direction:column;gap:var(--sp-2)}.mode-choice legend{padding:0;margin-bottom:var(--sp-2);font-size:var(--fs-small);color:var(--color-text-soft)}.opt-card{display:flex;align-items:flex-start;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg);cursor:pointer}.opt-card.is-active{border-color:var(--color-accent);box-shadow:var(--ring)}.opt-card__icon{font-size:1.5rem;line-height:1;flex:none}.opt-card__body{display:flex;flex-direction:column;gap:2px;min-width:0}.opt-card__body span{font-size:var(--fs-small);color:var(--color-text-soft)}.lock-type-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--sp-2);margin-bottom:var(--sp-3)}.lock-type-grid__group{grid-column:1 / -1;margin:var(--sp-1) 0 0;font-size:var(--fs-small);font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-soft)}.lock-type-card{display:flex;align-items:flex-start;gap:var(--sp-2);text-align:left;padding:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg);color:var(--color-text);cursor:pointer;font:inherit}.lock-type-card.is-active{border-color:var(--color-accent);box-shadow:var(--ring)}.lock-type-card__icon{font-size:1.3rem;line-height:1;flex:none}.lock-type-card__body{display:flex;flex-direction:column;gap:2px;min-width:0}.lock-type-card__body span{font-size:var(--fs-small);color:var(--color-text-soft)}.lock-type-select{margin-top:0}.lock-type-select span{color:var(--color-text-soft)}.chain-preview{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1);margin-top:var(--sp-2)}.chain-preview__chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;background:var(--color-bg-deep);border:1px solid var(--color-border);font-size:var(--fs-small)}.chain-preview__arrow{color:var(--color-text-soft)}.escape-review__head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-2);flex-wrap:wrap;margin-bottom:var(--sp-3)}.escape-review__mode{font-size:var(--fs-small);color:var(--color-text-soft)}.escape-review__locks{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-1)}.escape-review__locks li{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small)}.escape-review__no{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;flex:none;border-radius:999px;background:var(--color-accent);color:var(--color-accent-text);font-size:var(--fs-small);font-weight:700}.escape-review__type{font-weight:600}.escape-review__prompt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text-soft);font-size:var(--fs-small)}.escape-review__locks li.is-broken{flex-wrap:wrap;border-color:var(--color-error)}.escape-review__compile{flex-basis:100%;color:var(--color-text);font-size:var(--fs-small);font-weight:600}.escape-review__compile pre{font-family:var(--font-mono);font-weight:400;white-space:pre-wrap;overflow-x:auto;max-height:10em;margin:var(--sp-1) 0 0;padding:var(--sp-2);background:var(--color-bg-deep);border-left:3px solid var(--color-error);border-radius:var(--radius-small);color:var(--color-text)}.present-panel__controls{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap}.present-transport{display:flex;align-items:center;gap:var(--sp-2)}.present-pos{font-variant-numeric:tabular-nums;min-width:4em;text-align:center}.screen-clozecard{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);text-align:center;padding:var(--sp-6)}.screen-clozecard__badge{font-size:var(--wall-header);font-weight:800;padding:var(--sp-2) var(--sp-4);border-radius:999px;background:var(--color-accent);color:var(--color-accent-text)}.screen-clozecard__prompt{margin:0;font-size:var(--wall-header)}.screen-clozecard__note{color:var(--color-text-soft);margin:0;font-size:var(--wall-text)}.overlay--present{align-items:stretch;justify-content:stretch;padding:0;background:var(--color-bg);z-index:25}.present-view{display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto;gap:var(--sp-3);width:100%;height:100%;padding:var(--sp-4);position:relative}@media(min-width:900px){.present-view{grid-template-columns:1fr 300px;grid-template-rows:1fr auto}.present-view__stage{grid-column:1;grid-row:1 / 2}.present-notes{grid-column:2}}body.cp-testing .present-notes,body.cp-testing :is(#downloadMineBtn,#curtainDownloadBtn){display:none}body.cp-testing .present-view{grid-template-columns:1fr}body.cp-testing .present-view__stage{grid-column:1}.present-view__slide{cursor:zoom-in}.present-view.is-zoom .present-notes{display:none}.present-view.is-zoom{grid-template-columns:1fr}.present-view.is-zoom .present-view__stage{grid-column:1}.present-view.is-zoom .present-view__slide{cursor:zoom-out;width:100%;height:100%;object-fit:contain}.present-view__stage{display:flex;align-items:center;justify-content:center;min-height:0;overflow:auto}.present-view__slide{max-width:100%;max-height:100%;object-fit:contain;border-radius:var(--radius-small);box-shadow:var(--shadow)}.present-view__clozecard{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);text-align:center}.present-view__clozeprompt{margin:0;font-size:1.5em}.present-view__badge{font-weight:800;padding:var(--sp-2) var(--sp-4);border-radius:999px;background:var(--color-accent);color:var(--color-accent-text)}.poll{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);text-align:center;width:100%}.poll__q{margin:0;font-size:1.4rem}.poll__options{display:flex;flex-direction:column;gap:var(--sp-2);width:100%;max-width:640px}.poll__opt{display:grid;grid-template-columns:minmax(6rem,40%) 1fr auto;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border:2px solid var(--color-border);border-radius:var(--radius);background:transparent;color:var(--color-text);font:inherit;text-align:left}button.poll__opt{cursor:pointer}button.poll__opt:hover:not(:disabled){border-color:var(--color-accent)}[data-fresh]>button.poll__opt:hover:not(:disabled){border-color:var(--color-border)}button.poll__opt:disabled{cursor:default}.poll__opt-label{font-weight:600}.poll__bar{position:relative;height:12px;border-radius:999px;background:var(--color-accent-soft);overflow:hidden}.poll__bar-fill{position:absolute;inset:0 auto 0 0;width:0;background:var(--color-accent);transition:width .35s ease}.poll__opt-count{font-variant-numeric:tabular-nums;font-weight:700;min-width:2ch;text-align:right}.poll__opt.is-mine{border-color:var(--color-accent);box-shadow:var(--ring)}.poll__opt.is-correct{border-color:var(--color-ok)}.poll__opt.is-correct .poll__bar-fill{background:var(--color-ok)}.poll__opt.is-wrong{border-color:var(--color-error)}.poll__opt.is-dim{opacity:.45}.poll__status,.poll__total{color:var(--color-text-soft);margin:0}.poll__code{text-align:left;max-width:640px;width:100%}.poll__code .codelines{margin:0}.poll__output{font-family:var(--font-mono);text-align:left;white-space:pre-wrap;margin:0;padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-small);background:var(--color-accent-soft);max-width:640px;width:100%;overflow-x:auto}.poll__output{border:2px solid var(--color-ok);background:transparent}.poll__confidence{display:flex;gap:var(--sp-2);flex-wrap:wrap;justify-content:center}.poll__chip{border:2px solid var(--color-border);border-radius:999px;padding:var(--sp-1) var(--sp-3);background:transparent;color:var(--color-text);font:inherit;cursor:pointer}.poll__chip.is-sel{border-color:var(--color-accent);background:var(--color-accent-soft);font-weight:700}.poll__calibration{color:var(--color-text-soft);margin:0;font-variant-numeric:tabular-nums}.poll--screen .poll__code,.poll--screen .poll__output{max-width:900px;font-size:var(--wall-base)}.poll--screen .poll__code .codelines{font-size:var(--wall-base);max-height:none}.wordwall{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);text-align:center;width:100%}.wordwall__q{margin:0;font-size:1.4rem}.wordwall__form{display:flex;gap:var(--sp-2);width:100%;max-width:520px}.wordwall__input{flex:1;padding:var(--sp-2) var(--sp-3);border:2px solid var(--color-border);border-radius:var(--radius);font:inherit;color:var(--color-text);background:transparent}.wordwall__status{color:var(--color-text-soft);margin:0}.wordwall__entries{display:flex;flex-wrap:wrap;gap:var(--sp-2);justify-content:center;align-items:baseline;max-width:900px}.wordwall__chip{padding:var(--sp-1) var(--sp-3);border-radius:999px;background:var(--color-accent-soft);color:var(--color-text);line-height:1.3}.wordwall__total{color:var(--color-text-soft);margin:0}.wordwall--screen .wordwall__q{font-size:var(--wall-header)}.wordwall--screen .wordwall__chip{background:var(--color-accent-soft)}.bug{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);width:100%}.bug__caption{margin:0;color:var(--color-text-soft);font-style:italic}.bug__lines{list-style:none;margin:0;padding:0;text-align:left;font-family:var(--font-mono);background:var(--color-accent-soft);border-radius:var(--radius);overflow:hidden;max-width:760px;width:100%}.bug__line{display:grid;grid-template-columns:3ch 1fr;gap:var(--sp-3);padding:1px var(--sp-3)}.bug__ln{color:var(--color-text-soft);text-align:right;user-select:none}.bug__code{white-space:pre-wrap}.present-view__bug .bug__line{cursor:pointer;border-radius:var(--radius-small)}.present-view__bug .bug__line:hover{background:var(--color-accent-soft);box-shadow:inset 0 0 0 2px var(--color-accent)}.bug__line.is-correct{background:color-mix(in srgb,var(--color-ok) 22%,transparent);box-shadow:inset 3px 0 0 var(--color-ok)}.bug__line.is-wrong{background:color-mix(in srgb,var(--color-error) 18%,transparent)}.bug__line.is-bug{background:color-mix(in srgb,var(--color-error) 26%,transparent);box-shadow:inset 3px 0 0 var(--color-error)}.bug__line.is-wrong .bug__ln,.bug__line.is-correct .bug__ln,.bug__line.is-bug .bug__ln{color:var(--color-text)}.bug__line.is-wrong .bug__code span,.bug__line.is-correct .bug__code span,.bug__line.is-bug .bug__code span{color:inherit}.bug__status,.bug__board{margin:0}.bug__board{font-weight:700;font-variant-numeric:tabular-nums}.bug__explanation{margin:0;color:var(--color-text);background:var(--color-accent-soft);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-small);max-width:760px}.bug--screen .bug__caption,.bug--screen .bug__explanation{font-size:var(--wall-text)}.bug--screen .bug__lines{font-size:var(--wall-base);max-width:1000px}.bug--screen .bug__board{font-size:var(--wall-header)}.escape-row--red,.escape__team--red{--team: #d43a3a;--team-fg: #ffffff;--team-wash: rgba(0, 0, 0, .32)}.escape-row--blue,.escape__team--blue{--team: #2c72cf;--team-fg: #ffffff;--team-wash: rgba(0, 0, 0, .32)}.escape-row--green,.escape__team--green{--team: #2f8646;--team-fg: #ffffff;--team-wash: rgba(0, 0, 0, .32)}.escape-row--yellow,.escape__team--yellow{--team: #d6a93b;--team-fg: #24211c;--team-wash: rgba(255, 255, 255, .45)}.escape-row--purple,.escape__team--purple{--team: #8b5cd6;--team-fg: #ffffff;--team-wash: rgba(0, 0, 0, .32)}.escape-row--orange,.escape__team--orange{--team: #d6763b;--team-fg: #24211c;--team-wash: rgba(255, 255, 255, .45)}.escape-row--pink,.escape__team--pink{--team: #d12e89;--team-fg: #ffffff;--team-wash: rgba(0, 0, 0, .32)}.escape-row--cyan,.escape__team--cyan{--team: #3bc5d6;--team-fg: #24211c;--team-wash: rgba(255, 255, 255, .45)}.escape{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);width:100%;text-align:center}.escape__title{margin:0}.escape__story{color:var(--color-text-soft);margin:0}.escape__wait{color:var(--color-text-soft)}.escape__team{display:inline-flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);border-radius:999px;background:var(--team, var(--color-accent));color:var(--team-fg);font-weight:700}.escape__badge{display:inline-grid;place-items:center;width:1.8rem;height:1.8rem;border-radius:50%;background:var(--team-wash)}.escape__progress{margin:0;color:var(--color-text-soft);font-weight:700}.escape__prompt{margin:0;font-weight:600}.escape__code{font-family:var(--font-mono);white-space:pre-wrap;text-align:left;background:var(--color-accent-soft);border-radius:var(--radius);padding:var(--sp-3);max-width:640px;width:100%;line-height:1.9}.escape__gap{font-family:inherit}.escape__gap--mine{border:2px solid var(--color-accent);border-radius:var(--radius-small);padding:1px 6px;background:var(--color-field);color:var(--color-text);min-width:4ch}.escape__gap--other{border:1px dashed var(--color-border);border-radius:var(--radius-small);padding:1px 6px;color:var(--color-text-soft)}.escape__actions{display:flex;gap:var(--sp-2)}.escape__status{margin:0;font-weight:600}.escape__status.is-ok,.territory__status.is-ok{color:var(--color-ok)}.escape__status.is-error,.territory__status.is-error{color:var(--color-error)}.escape__hint{margin:0;color:var(--color-text-soft);background:var(--color-accent-soft);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-small);display:flex;gap:var(--sp-2);align-items:flex-start;text-align:left}.escape__hint-text{min-width:0}.escape__hint-text>:last-child{margin-bottom:0}.escape [data-format=markdown] :is(ul,ol,pre,blockquote),.territory [data-format=markdown] :is(ul,ol,pre,blockquote){text-align:left}.escape__story>:last-child,.escape__prompt>:last-child,.territory__prompt>:last-child{margin-bottom:0}.escape__done h2{margin:0;font-size:2rem}.escape__roles{display:flex;flex-direction:column;gap:var(--sp-2);width:100%;max-width:640px;text-align:left}.escape__role-part{display:flex;flex-direction:column;gap:2px;padding:var(--sp-2);border:2px solid var(--color-border);border-radius:var(--radius);opacity:.55}.escape__role-part.is-mine{opacity:1;border-color:var(--color-accent)}.escape__role-part label{font-weight:700}.escape__role-part textarea,.escape__role-part input{font-family:var(--font-mono);width:100%;border:1px solid var(--color-border);border-radius:var(--radius-small);padding:4px 6px;background:var(--color-field);color:var(--color-text)}.escape__role-part textarea:disabled,.escape__role-part input:disabled{background:var(--color-accent-soft);color:var(--color-text-soft)}.escape__combine{display:flex;flex-direction:column;gap:var(--sp-2);align-items:center;width:100%;max-width:520px}.escape__secret{font-size:1.6rem;font-weight:800;font-family:var(--font-mono);padding:var(--sp-3) var(--sp-4);border:2px dashed var(--color-accent);border-radius:var(--radius);background:var(--color-accent-soft);text-align:center;white-space:pre-wrap}.escape__secret--card{font-size:1.05rem;font-weight:500;font-family:inherit;text-align:left;white-space:normal}.escape__secret{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--sp-2) var(--sp-3)}.escape__secret--card{flex-direction:column;align-items:stretch}.escape__piece{padding:0 var(--sp-2);border-radius:var(--radius-small);background:var(--color-bg-panel)}.escape__secret--card .escape__piece{padding:var(--sp-1) var(--sp-2)}.escape__piece>:last-child{margin-bottom:0}.escape__consensus{display:flex;flex-direction:column;gap:var(--sp-2);width:100%;max-width:520px}.escape__blind{display:flex;flex-direction:column;gap:var(--sp-2);width:100%;max-width:640px;text-align:left}.escape__blind-nav{border:2px solid var(--color-accent);border-radius:var(--radius);padding:var(--sp-2) var(--sp-3)}.escape__blind-role{font-weight:700;margin:0}.escape__blind textarea{width:100%;font-family:var(--font-mono);border:1px solid var(--color-border);border-radius:var(--radius-small);padding:4px 6px;background:var(--color-field);color:var(--color-text)}.escape__blind textarea:disabled{background:var(--color-accent-soft);color:var(--color-text-soft)}.escape__debug{width:100%;max-width:720px}.escape__zone{font-weight:700;margin:0 0 var(--sp-2)}.escape__debug .bug__line{cursor:default;opacity:.5}.escape__debug .bug__line.is-zone{cursor:pointer;opacity:1}.escape__debug .bug__line.is-zone:hover{background:var(--color-accent-soft);box-shadow:inset 0 0 0 2px var(--color-accent)}.escape__board{display:flex;flex-direction:column;gap:var(--sp-2);width:100%;max-width:900px}.escape-row,.escape-dash__row{display:grid;grid-template-columns:4rem 1fr auto;align-items:center;gap:var(--sp-3)}.escape-row__name{display:flex;align-items:center;gap:6px;font-weight:700}.escape-row__dot{width:14px;height:14px;border-radius:50%;background:var(--team, var(--color-accent));display:inline-block}.escape-row__track{height:16px;border-radius:999px;background:var(--color-accent-soft);overflow:hidden}.escape-row__fill{display:block;height:100%;width:0;background:var(--team, var(--color-accent));transition:width .4s ease}.escape-row__status{font-variant-numeric:tabular-nums;color:var(--color-text-soft)}.escape--screen{display:flex;flex-direction:column;align-items:center;gap:var(--sp-4);width:100%}.escape--screen .escape__title{font-size:var(--wall-header)}.escape--screen .escape__story,.escape--screen .escape-row{font-size:var(--wall-text)}.escape--screen .escape-row__track{height:26px}.escape-row--faction{font-weight:800}.escape--screen .escape-row--faction{font-size:var(--wall-header)}.escape--screen .escape-row--faction .escape-row__track{height:34px}.escape--screen .escape-row--faction .escape-row__dot{width:22px;height:22px}.escape-groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:var(--sp-3);margin-top:var(--sp-3)}.escape-groups__title{grid-column:1 / -1;margin:0;font-size:var(--fs-small);color:var(--color-text-soft);text-transform:uppercase;letter-spacing:.04em}.escape-group{border:1px solid var(--color-border);border-left:4px solid var(--team, var(--color-accent));border-radius:var(--radius-small);padding:var(--sp-2) var(--sp-3);background:var(--color-bg-panel)}.escape-group__head{display:flex;align-items:center;gap:6px;font-weight:700;margin-bottom:var(--sp-1)}.escape-group__name{text-transform:capitalize}.escape-group__member.is-offline>span:first-child{color:var(--color-text-soft)}.escape-group__offline{font-size:var(--fs-small);font-style:italic}.escape-group--none{border-left-style:dashed}.escape-group__state{margin-left:auto;font-variant-numeric:tabular-nums;color:var(--color-text-soft);font-weight:600}.escape-group__members{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.escape-group__member{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-small)}.escape-group__move{margin-left:auto;font:inherit;font-size:var(--fs-small);padding:2px 4px;border-radius:var(--radius-small);border:1px solid var(--color-border);background:var(--color-bg-deep);color:var(--color-text);max-width:7rem}.territory{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);width:100%;text-align:center}.territory__prompt{margin:0;font-weight:600;font-size:1.1rem}.territory__grid{display:grid;gap:3px;width:100%;max-width:900px}.territory-cell{aspect-ratio:1 / 1}.island{background-color:var(--island);color:var(--island-fg)}.island[data-pattern=stripes]{background-image:repeating-linear-gradient(45deg,var(--island-wash) 0 4px,transparent 4px 10px)}.island[data-pattern=dots]{background-image:radial-gradient(circle,var(--island-wash) 0 2.5px,transparent 3px);background-size:9px 9px}.island[data-pattern=checks]{background-image:repeating-conic-gradient(var(--island-wash) 0 25%,transparent 0 50%);background-size:12px 12px}.territory__grid{container-type:inline-size}.territory__game{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);width:100%}.territory__island{display:inline-flex;align-items:center;gap:var(--sp-3);padding:var(--sp-1) var(--sp-4) var(--sp-1) var(--sp-1);border-radius:999px;background:var(--color-bg-panel);border:3px solid var(--island);font-weight:700;font-size:1.15rem}.territory__flag{display:inline-grid;place-items:center;flex:none;width:2.2em;height:2.2em;border-radius:50%;font-weight:800;line-height:1}.territory__minimap{display:grid;gap:2px;width:min(240px,60vw)}.territory__mini-cell{aspect-ratio:1 / 1;border-radius:2px;background:var(--color-bg-deep);box-shadow:inset 0 0 0 1px var(--color-border)}.territory__mini-cell.island{background-color:var(--island);box-shadow:none}.territory__class{color:var(--color-text-soft);font-weight:600}.territory__class.is-done{color:var(--color-ok);font-weight:800}.territory__clock{align-self:center;font-family:var(--font-mono);font-weight:800;font-variant-numeric:tabular-nums;background:var(--color-bg-deep);color:var(--color-text);border-radius:var(--radius-small);padding:2px var(--sp-2)}.territory__clock.is-low{color:var(--color-error)}.territory__clock.is-paused{color:var(--color-text-soft)}.territory__clock.is-over{color:var(--color-error);background:var(--color-error-background)}.overlay--present:has(#presTerritoryCard.has-island:not([hidden])){box-shadow:inset 0 0 0 10px var(--island)}@supports (background: color-mix(in srgb,red 50%,white)){.overlay--present:has(#presTerritoryCard.has-island:not([hidden])){background:color-mix(in srgb,var(--island) 22%,var(--color-bg))}}.overlay--present:has(#presTerritoryCard.has-island:not([hidden])) :is(.present-notes,.present-view__foot){background:var(--color-bg-panel);border-radius:var(--radius);padding:var(--sp-2)}.territory.has-island .territory__game{background:var(--color-bg-panel);border-radius:var(--radius);padding:var(--sp-4);box-shadow:var(--shadow);max-width:760px}.territory-islands{margin-top:var(--sp-2)}.territory-islands>summary{cursor:pointer;font-weight:600}.territory-islands__hint{margin:var(--sp-1) 0;font-size:var(--fs-small);color:var(--color-text-soft)}.territory-islands__list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(12rem,1fr));gap:var(--sp-1) var(--sp-3)}.territory-islands__item{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-small)}.territory-islands__item .territory__flag{font-size:.85rem}.territory-islands__item.is-away .territory-islands__name{color:var(--color-text-soft)}.territory-islands__size{margin-left:auto;font-variant-numeric:tabular-nums;color:var(--color-text-soft)}.territory__scores{display:flex;gap:var(--sp-3);justify-content:center;flex-wrap:wrap;font-weight:800;font-variant-numeric:tabular-nums}.territory--screen{display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);width:100%}.territory--screen .territory__title{font-size:var(--wall-header);margin:0}.territory--screen .territory__scores,.territory--screen .territory__clock{font-size:var(--wall-header)}.app--screen .screen-present:has(>#territoryCard:not([hidden])){flex:1 1 auto}.territory--screen{flex:1 1 auto;min-height:0;width:100%}.territory__sea{flex:1 1 auto;min-height:0;width:100%;container-type:size;display:grid;place-items:center}.territory--screen .territory__grid{--terr-sea: #cfe3ea;--terr-wave: rgba(255, 255, 255, .55);--terr-coast: rgba(18, 38, 52, .62);width:min(100cqw,100cqh * var(--cols, 8) / var(--rows, 5));max-width:none;gap:0;border-radius:calc(100cqi / var(--cols, 8) * .22);overflow:hidden;background-color:var(--terr-sea);background-image:radial-gradient(ellipse 60% 40% at 50% 100%,transparent 62%,var(--terr-wave) 64%,transparent 72%);background-size:calc(100cqi / var(--cols, 8) * .7) calc(100cqi / var(--cols, 8) * .35)}@media(prefers-color-scheme:dark){.territory--screen .territory__grid{--terr-sea: #14303b;--terr-wave: rgba(255, 255, 255, .07);--terr-coast: rgba(236, 232, 223, .7)}}.territory--screen .territory-cell{--terr-cell: calc(100cqi / var(--cols, 8));--terr-gap: calc(var(--terr-cell) * .07);--terr-coastw: max(2px, calc(var(--terr-cell) * .045));--terr-round: 34%;--terr-notch: var(--terr-sea) 0 var(--terr-gap), var(--terr-coast) var(--terr-gap) calc(var(--terr-gap) + var(--terr-coastw)), transparent calc(var(--terr-gap) + var(--terr-coastw));position:relative;border-radius:0;background:none;box-shadow:none;transition:none;display:grid;place-items:center;font-weight:800;line-height:1;font-size:max(var(--wall-base),calc(var(--terr-cell) * .5))}.territory--screen .territory-cell.island{background:none}.territory--screen .territory-cell.island:before{content:"";position:absolute;z-index:0;box-sizing:border-box;inset:var(--terr-gn, var(--terr-gap)) var(--terr-ge, var(--terr-gap)) var(--terr-gs, var(--terr-gap)) var(--terr-gw, var(--terr-gap));background-color:var(--island);background-image:var(--terr-k-nw, none),var(--terr-k-ne, none),var(--terr-k-se, none),var(--terr-k-sw, none),var(--terr-pattern, none);background-size:auto,auto,auto,auto,var(--terr-pattern-size, auto);background-attachment:scroll,scroll,scroll,scroll,fixed;background-repeat:no-repeat,no-repeat,no-repeat,no-repeat,repeat;background-origin:border-box;border:solid var(--terr-coast);border-width:var(--terr-bn, var(--terr-coastw)) var(--terr-be, var(--terr-coastw)) var(--terr-bs, var(--terr-coastw)) var(--terr-bw, var(--terr-coastw));border-radius:var(--terr-rtl, var(--terr-round)) var(--terr-rtr, var(--terr-round)) var(--terr-rbr, var(--terr-round)) var(--terr-rbl, var(--terr-round))}.territory--screen .territory-cell.j-n{--terr-gn: 0;--terr-bn: 0;--terr-rtl: 0;--terr-rtr: 0}.territory--screen .territory-cell.j-e{--terr-ge: 0;--terr-be: 0;--terr-rtr: 0;--terr-rbr: 0}.territory--screen .territory-cell.j-s{--terr-gs: 0;--terr-bs: 0;--terr-rbl: 0;--terr-rbr: 0}.territory--screen .territory-cell.j-w{--terr-gw: 0;--terr-bw: 0;--terr-rtl: 0;--terr-rbl: 0}.territory--screen .territory-cell[data-pattern=stripes]{--terr-pattern: repeating-linear-gradient(45deg, var(--island-wash) 0 6px, transparent 6px 15px)}.territory--screen .territory-cell[data-pattern=dots]{--terr-pattern: radial-gradient(circle, var(--island-wash) 0 3.5px, transparent 4px);--terr-pattern-size: 13px 13px}.territory--screen .territory-cell[data-pattern=checks]{--terr-pattern: repeating-conic-gradient(var(--island-wash) 0 25%, transparent 0 50%);--terr-pattern-size: 18px 18px}.territory--screen .territory-cell.k-nw{--terr-k-nw: radial-gradient(circle at 0 0, var(--terr-notch))}.territory--screen .territory-cell.k-ne{--terr-k-ne: radial-gradient(circle at 100% 0, var(--terr-notch))}.territory--screen .territory-cell.k-se{--terr-k-se: radial-gradient(circle at 100% 100%, var(--terr-notch))}.territory--screen .territory-cell.k-sw{--terr-k-sw: radial-gradient(circle at 0 100%, var(--terr-notch))}.territory-cell__label{position:relative;z-index:1}.territory--screen .territory-cell.is-new:before,.territory--screen .territory-cell.is-new .territory-cell__label{animation:territory-rise .55s cubic-bezier(.2,.9,.3,1.25) both}@keyframes territory-rise{0%{transform:scale(.35);opacity:0}to{transform:none;opacity:1}}@media(prefers-reduced-motion:reduce){.territory--screen .territory-cell.is-new:before,.territory--screen .territory-cell.is-new .territory-cell__label{animation:none}}.escape-controls{margin-top:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-2)}.escape-controls__form{display:flex;align-items:end;gap:var(--sp-2)}.escape-dash{display:flex;flex-direction:column;gap:4px}.escape-ref-problems{margin:0;padding:var(--sp-2) var(--sp-3);list-style:none;border:1px solid var(--color-error);border-radius:var(--radius);background:var(--color-error-soft);color:var(--color-text);font-size:var(--fs-small);display:flex;flex-direction:column;gap:4px}.escape-ref-problems code{display:block;white-space:pre-wrap;overflow-wrap:anywhere}.escape-dash__row{grid-template-columns:5rem 1fr}.escape-dash__prog{color:var(--color-text-soft);font-variant-numeric:tabular-nums}.poll--screen .poll__q{font-size:var(--wall-header)}.poll--screen .poll__options{max-width:900px}.poll--screen .poll__opt{font-size:var(--wall-text);padding:var(--sp-3) var(--sp-4)}.poll--screen .poll__bar{height:20px}.poll--screen .poll__total{font-size:1.2rem}.present-notes{display:flex;flex-direction:column;gap:var(--sp-1);grid-row:1 / 2}@media(max-width:899px){.present-notes{grid-row:auto;min-height:120px}.present-view{padding:var(--sp-3);gap:var(--sp-2)}.present-view__stage{align-items:flex-start}.present-view:not(:has(#presSlideImg:not([hidden]))){grid-template-rows:auto auto;align-content:start}}.present-notes__label{font-weight:600}.present-notes__area{flex:1;min-height:100px;resize:none;font:inherit;padding:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg-panel);color:var(--color-text)}.present-notes__area:focus{outline:none;box-shadow:var(--ring)}.present-notes__hint{font-size:var(--fs-small);color:var(--color-text-soft)}.present-notes__download{align-self:flex-start}.present-view__foot{position:absolute;bottom:var(--sp-2);left:var(--sp-4);display:flex;align-items:baseline;gap:var(--sp-3)}.present-view__pos{color:var(--color-text-soft);font-variant-numeric:tabular-nums}.present-view__lang .lang-toggle{font:inherit;padding:2px var(--sp-1);border:0;background:none;color:var(--color-text-soft);cursor:pointer}.present-view__lang .lang-toggle:hover{color:var(--color-text);text-decoration:underline;text-underline-offset:2px}.present-view__lang .lang-toggle:focus-visible{outline:none;box-shadow:var(--ring)}.present-view__logout{font:inherit;padding:2px var(--sp-1);border:0;background:none;color:var(--color-text-soft);cursor:pointer}.present-view__logout:hover{color:var(--color-text);text-decoration:underline;text-underline-offset:2px}.present-view__logout:focus-visible{outline:none;box-shadow:var(--ring)}@media(max-width:899px){.present-view__foot{position:static;justify-content:space-between;flex-direction:row-reverse}}.present-panel__file{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-2);flex-wrap:wrap}.catalog{margin-bottom:var(--sp-3);padding:var(--sp-2) var(--sp-3);border:1px dashed var(--color-border);border-radius:var(--radius-small)}.admin{position:fixed;inset:auto 0 0;background:var(--color-bg-panel);border-top:2px solid var(--color-accent);max-height:80vh;overflow:auto;z-index:18;box-shadow:var(--shadow);padding:var(--sp-3) var(--sp-4)}.admin__section{margin-bottom:var(--sp-4);padding:var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg)}.admin__section>h3{margin:0 0 var(--sp-3);padding-bottom:var(--sp-2);border-bottom:1px solid var(--color-border);font-size:.95em;letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-soft)}.admin__csvfile{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);margin-top:var(--sp-2)}.admin__csvfile input[type=file]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.admin__csvfile label.btn{cursor:pointer}.admin .present-status.is-warn{color:var(--color-error);font-weight:600}.admin__mode{opacity:.7;font-size:.88em;margin:0 0 var(--sp-2)}.admin__mode--named{opacity:1;border-left:3px solid var(--color-accent);padding-left:var(--sp-2)}.admin__form{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;margin-top:var(--sp-2)}.admin__form input[type=text],.admin__form input:not([type]),.admin__form input[type=password]{padding:5px 8px;border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-field);color:inherit;font:inherit}.admin__adminflag{display:inline-flex;align-items:center;gap:4px;font-size:.9em}.admin__form:has(.admin__field){align-items:flex-end}.admin__field{display:inline-flex;flex-direction:column;gap:2px;font-size:.88em}.admin__field>input,.admin__field>textarea{font-size:1rem}.admin__field input[type=url]{width:100%;box-sizing:border-box;padding:5px 8px;border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-field);color:inherit;font:inherit}.admin__field:has(input[type=url]){flex:1 1 42ch;max-width:100%}.admin__csv .admin__field{display:flex}.admin__csv{margin-top:var(--sp-3)}.admin__csv textarea{width:100%;box-sizing:border-box;margin:var(--sp-2) 0;padding:6px;border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-field);color:inherit;font-family:var(--font-mono)}.admin-table{width:100%;border-collapse:collapse;font-size:.9em}.admin-table th,.admin-table td{text-align:left;padding:4px 8px;border-bottom:1px solid var(--color-border)}.admin-table tr.is-off{opacity:.55}.admin-actions{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}.admin-actions .btn{padding:2px 8px;min-height:26px;font-size:var(--fs-small)}.admin-badge{font-size:var(--fs-small);text-transform:uppercase;letter-spacing:.03em;padding:1px 6px;border-radius:999px;margin-left:4px;background:color-mix(in srgb,var(--color-accent) 18%,transparent)}.admin-badge--off{background:color-mix(in srgb,#e5484d 20%,transparent)}.admin-empty{opacity:.6}.admin-rosgroup{margin-bottom:var(--sp-2)}.admin-rosgroup h4{margin:var(--sp-2) 0 4px;font-size:.9em}.admin-count{opacity:.6;font-weight:400}.admin-rosrow{display:grid;grid-template-columns:6em 1fr auto;gap:var(--sp-2);align-items:center;padding:2px 0;font-size:.9em}.admin-rosrm{padding:0 6px;min-height:24px}.ex-concepts-field{min-width:0}.ex-concepts-chips{display:inline-flex;flex-wrap:wrap;gap:4px}.concept-chip{display:inline-flex;align-items:center;gap:3px;padding:1px 6px;border-radius:999px;background:color-mix(in srgb,var(--color-accent) 16%,transparent);font-size:.85em}.concept-chip__x{border:0;background:transparent;color:inherit;cursor:pointer;font-size:1.05em;line-height:1;padding:0}.concept-chip__x:hover{color:var(--color-accent)}.ex-concepts-add{min-width:9em}.concepts-overview__body{padding:var(--sp-2)}.concepts-overview__empty{opacity:.7}.concepts-overview__meta{opacity:.7;font-size:.9em;margin-bottom:var(--sp-2)}.concepts-overview__scroll{overflow-x:auto}.mastery-table{border-collapse:collapse;width:100%;font-size:.9em}.mastery-table th,.mastery-table td{border:1px solid var(--color-border);padding:4px 8px;text-align:center}.mastery-table thead th:first-child,.mastery__name{text-align:left;position:sticky;left:0;background:var(--color-bg-panel)}.mastery{font-variant-numeric:tabular-nums}.mastery--none{opacity:.45}.mastery--struggling{background:color-mix(in srgb,#e5484d 22%,transparent)}.mastery--developing{background:color-mix(in srgb,#f5a623 24%,transparent)}.mastery--solid{background:color-mix(in srgb,#30a46c 26%,transparent)}.mastery__summary th,.mastery__summary td{font-weight:600;border-top:2px solid var(--color-border)}.mastery-legend{display:flex;flex-wrap:wrap;gap:var(--sp-3);margin-top:var(--sp-2);font-size:.85em}.mastery-legend__item{display:inline-flex;align-items:center;gap:4px}.mastery-dot{width:12px;height:12px;border-radius:3px;display:inline-block}.catalog__bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}.catalog__bar>h3{margin-right:auto}.catalog__import{display:inline-flex;align-items:center;gap:var(--sp-2)}.cat-export{min-height:30px;padding:2px 10px}.catalog__hint{margin:var(--sp-1) 0 var(--sp-2);font-size:var(--fs-small);color:var(--color-text-soft)}.catalog__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.catalog__item{display:flex;align-items:center;gap:var(--sp-2);padding:4px var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small)}.catalog__info{flex:1;min-width:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;overflow:hidden}.catalog__title{font-weight:600;overflow-wrap:anywhere;max-width:100%}.catalog__meta{opacity:.6;font-size:.82em}.catalog__module{font-size:.8em;padding:1px 7px;border-radius:999px;background:color-mix(in srgb,var(--color-accent) 16%,transparent)}.catalog__plan{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:6px;font-size:.82em}.catalog__date{color:var(--color-text);font-weight:600}.catalog__classes{padding:1px 7px;border-radius:999px;background:var(--color-bg-deep);color:var(--color-text-soft)}.catalog__when{padding:1px 7px;border-radius:999px;font-weight:700}.catalog__when--today{background:var(--color-ok);color:var(--color-accent-text)}.catalog__when--tomorrow{background:var(--color-bg-deep);color:var(--color-text-soft)}.catalog__use{min-height:30px;padding:2px 12px}.catalog__tools{display:inline-flex;gap:2px;flex-shrink:0}.catalog__tools .btn{padding:2px 6px;min-height:28px}.cat-order{display:none;gap:2px}.catalog__list.is-reorder .cat-order{display:inline-flex}.cat-more{position:relative;display:inline-flex}.cat-more__btn{min-width:32px;font-weight:700}.cat-more__pop{position:absolute;right:0;top:calc(100% + 4px);z-index:30;min-width:14rem;display:flex;flex-direction:column;gap:1px;padding:var(--sp-1) var(--sp-2) var(--sp-2);background:var(--color-bg-panel);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow)}.cat-more__pop[hidden]{display:none}.cat-more__group{font-size:var(--fs-small);color:var(--color-text-soft);text-transform:uppercase;letter-spacing:.04em;margin:var(--sp-2) 0 2px var(--sp-1)}.cat-more__group:first-child{margin-top:var(--sp-1)}.cat-more__item{font:inherit;text-align:left;padding:6px var(--sp-2);min-height:32px;border:none;border-radius:var(--radius-small);background:none;color:var(--color-text);cursor:pointer;white-space:nowrap}.cat-more__item:hover:not(:disabled){background:var(--color-bg-deep)}.cat-more__item:focus-visible{outline:none;box-shadow:var(--ring)}.cat-more__item:disabled{opacity:.45;cursor:not-allowed}.cat-more__item[data-danger]{color:var(--color-error)}.catalog__item.is-more-open{position:relative;z-index:31}.catalog__item--editing{gap:6px}.cat-edit-title,.cat-edit-module{padding:4px 6px;border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-field);color:inherit;font:inherit}.cat-edit-title{flex:2;min-width:8em}.cat-edit-module{flex:1;min-width:6em}.catalog__item--unavailable{background:var(--color-bg-deep);border-style:dashed}.catalog__item--unavailable .catalog__title{color:var(--color-text-soft)}.catalog__unavailable{flex-basis:100%;display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:6px;font-size:.85em;color:var(--color-text)}.catalog__unavailable-badge{padding:1px 7px;border-radius:999px;font-weight:700;border:1px solid var(--color-warning);color:var(--color-text)}.catalog__unavailable-why{white-space:normal}.catalog__labs{flex-basis:100%;display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:6px;font-size:.85em;color:var(--color-text)}.catalog__labs-badge{padding:1px 7px;border-radius:999px;font-weight:700;border:1px solid var(--color-warning);color:var(--color-text);white-space:nowrap}.catalog__labs-why{white-space:normal}.start-labs{margin:0 0 12px;padding:8px 10px;border-left:4px solid var(--color-warning);background:var(--color-bg-panel);color:var(--color-text)}.catalog__pending{flex-basis:100%;display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:.85em;color:var(--color-text)}.catalog__pending-badge{padding:1px 7px;border-radius:999px;font-weight:700;border:1px solid var(--color-warning);color:var(--color-text)}.catalog__pending .cat-adopt{padding:2px 8px;min-height:28px}.admin__sync-msg{font-size:var(--fs-small);white-space:pre-line}.admin__sync-msg:empty{display:none}.admin__sync-msg.is-warn{border-left:3px solid var(--color-warning);padding-left:var(--sp-2)}.overlay--preview{z-index:41}.overlay--preview .overlay__card{max-height:85vh;overflow-y:auto}.lp-meta{opacity:.7;font-size:.9em;margin-bottom:var(--sp-2)}.lp-h{margin:var(--sp-3) 0 var(--sp-1);font-size:1em}.lp-list{margin:0;padding-left:1.4em;display:flex;flex-direction:column;gap:4px}.lp-list li{line-height:1.4}.lp-badge{display:inline-block;font-size:.72em;text-transform:uppercase;letter-spacing:.03em;padding:1px 6px;border-radius:4px;background:color-mix(in srgb,var(--color-accent) 14%,transparent);margin-right:4px}.lp-flags{opacity:.6;font-size:.82em;margin-left:6px}.lp-concepts{display:inline-flex;gap:3px}.lp-empty{opacity:.6}.overlay--history{z-index:39}#noticeOverlay{z-index:42}.overlay--conflict{z-index:41}.app--rehearsal{display:flex;flex-direction:column;min-height:100vh}.reh-bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2) var(--sp-3);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border)}.reh-bar__title{margin:0;font-size:1.1rem;display:flex;align-items:center;gap:var(--sp-1)}.reh-bar__clock{font-variant-numeric:tabular-nums}.reh-bar__actions{margin-left:auto;display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);min-width:0}.reh-bar__status{font-size:.9em;overflow-wrap:anywhere}.reh-note{margin:0;padding:var(--sp-2) var(--sp-3);background:var(--color-info-background);color:var(--color-text);border-bottom:1px solid var(--color-border)}.reh-msg{margin:var(--sp-4) auto;max-width:640px;padding:var(--sp-3);text-align:center}.reh-grid{flex:1;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:var(--sp-2);padding:var(--sp-2);min-height:0}.reh-grid[hidden]{display:none}.reh-pane{display:flex;flex-direction:column;min-width:0;min-height:260px;border:1px solid var(--color-border);border-radius:var(--radius-small);overflow:hidden}.reh-pane__bar{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);padding:2px var(--sp-2);font-size:.9em;background:var(--color-bg-deep);border-bottom:1px solid var(--color-border)}.reh-pane iframe{flex:1;width:100%;border:0;background:var(--color-bg)}.reh-grid.has-zoom{grid-template-columns:1fr;grid-template-rows:1fr}.reh-grid.has-zoom .reh-pane:not(.is-zoomed){display:none}.save-conflict{width:min(640px,100%)}.save-conflict__cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--sp-3);margin-bottom:var(--sp-3)}.save-conflict__head{margin:0 0 var(--sp-1);font-size:.95rem}.save-conflict__list{margin:0;padding-left:1.2em}.save-conflict__foot{flex-wrap:wrap}.overlay--history .overlay__card{max-height:85vh;overflow-y:auto;width:min(720px,100%)}.hist-lead{margin:0 0 var(--sp-2)}.hist-status{margin:0 0 var(--sp-2);font-size:.9em;min-height:1.2em}.hist-status:empty{display:none}.hist-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-2)}.hist-row{border:1px solid var(--color-border);border-radius:8px;padding:var(--sp-2) var(--sp-3)}.hist-row--current{border-color:var(--color-accent)}.hist-row__head{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px}.hist-row__num{font-weight:600}.hist-row__current{font-size:.85em;text-transform:uppercase;letter-spacing:.03em;padding:1px 6px;border-radius:4px;background:color-mix(in srgb,var(--color-accent) 14%,transparent)}.hist-row__meta{opacity:.75;font-size:.9em}.hist-row__changes{margin:4px 0;line-height:1.4;overflow-wrap:anywhere}.hist-row__tools{display:flex;gap:var(--sp-2)}.hist-empty{opacity:.6}.overlay--check{z-index:39}.overlay--check .overlay__card{max-height:85vh;overflow-y:auto;width:min(760px,100%)}.lcheck-lead{margin:0 0 var(--sp-2);font-weight:600;overflow-wrap:anywhere}.lcheck-status{margin:0}.lcheck-summary{margin:0 0 var(--sp-2);padding:var(--sp-2) var(--sp-3);border-radius:8px;border:1px solid var(--color-border)}.lcheck-summary--ok{border-color:var(--color-ok)}.lcheck-summary--fail{border-color:var(--color-error)}.lcheck-list{list-style:none;margin:0 0 var(--sp-2);padding:0;display:flex;flex-direction:column;gap:var(--sp-2)}.lcheck-row{border:1px solid var(--color-border);border-left-width:4px;border-radius:8px;padding:var(--sp-2) var(--sp-3)}.lcheck-row--pass{border-left-color:var(--color-ok)}.lcheck-row--fail{border-left-color:var(--color-error)}.lcheck-row--warn{border-left-color:var(--color-warning)}.lcheck-row--skip{opacity:.75}.lcheck-row__head{font-weight:600}.lcheck-row__items{margin:4px 0 0;padding-left:1.2em;line-height:1.4;overflow-wrap:anywhere}.lcheck-log summary{cursor:pointer}.lcheck-log pre{max-height:40vh;overflow:auto;font-size:var(--fs-small);background:var(--color-bg-deep);padding:var(--sp-2);border-radius:6px;white-space:pre-wrap;overflow-wrap:anywhere}.overlay--proposals{z-index:38}.overlay--proposals .overlay__card{max-height:90vh;overflow-y:auto;width:min(1100px,100%);max-width:min(1100px,100%)}.prop-intro{margin:0 0 var(--sp-2)}.prop-status{margin:0 0 var(--sp-2);min-height:1.2em}.prop-status--error{color:var(--color-error)}.prop-cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,3fr);gap:var(--sp-3);align-items:start}@media(max-width:900px){.prop-cols{grid-template-columns:minmax(0,1fr)}}.prop-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-2)}.prop-item{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;text-align:left;padding:var(--sp-2);border:1px solid var(--color-border);border-radius:8px;background:transparent;color:inherit;cursor:pointer;overflow-wrap:anywhere}.prop-item--on{border-color:var(--color-accent);border-width:2px}.prop-item small{font-size:var(--fs-small)}.prop-empty{opacity:.75}.prop-lead{margin:0 0 var(--sp-1);font-weight:600;overflow-wrap:anywhere}.prop-summary{margin:0 0 var(--sp-2)}.prop-units{list-style:none;margin:0 0 var(--sp-2);padding:0;display:flex;flex-direction:column;gap:var(--sp-2)}.prop-unit{border:1px solid var(--color-border);border-left-width:4px;border-radius:8px;padding:var(--sp-2) var(--sp-3)}.prop-unit--box{border-left-color:var(--color-ok)}.prop-unit--conflict{border-left-color:var(--color-warning)}.prop-unit__head{margin-bottom:4px;overflow-wrap:anywhere}.prop-unit__label{font-weight:600}.prop-chip{font-size:var(--fs-small);padding:1px 6px;border-radius:4px;border:1px solid var(--color-border);white-space:nowrap}.prop-chip--conflict{border-color:var(--color-warning)}.prop-sides{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--sp-2)}@media(max-width:700px){.prop-sides{grid-template-columns:minmax(0,1fr)}}.prop-side h4{margin:0 0 4px;font-size:var(--fs-small)}.prop-diff{margin:0;max-height:30vh;overflow:auto;font-size:var(--fs-small);background:var(--color-bg-deep);padding:var(--sp-2);border-radius:6px;white-space:pre-wrap;overflow-wrap:anywhere}.prop-diff__add{color:var(--color-ok)}.prop-diff__del{color:var(--color-error);text-decoration:line-through}.prop-diff__skip{opacity:.75}.prop-pick{display:flex;flex-wrap:wrap;gap:var(--sp-3);margin-top:var(--sp-2)}.prop-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.overlay--library .overlay__card{max-height:90vh;overflow-y:auto;width:min(1100px,100%)}.lib-filters{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-bottom:var(--sp-2)}.lib-filters__q{flex:1 1 260px;min-width:0}.lib-filters select{max-width:100%}.lib-count{margin:0 0 var(--sp-2);font-size:.9em;min-height:1.2em}.lib-cols{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,3fr);gap:var(--sp-3);align-items:start}@media(max-width:900px){.lib-cols{grid-template-columns:1fr}}.lib-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-2);max-height:60vh;overflow-y:auto}.lib-row{border:1px solid var(--color-border);border-radius:8px;padding:var(--sp-2) var(--sp-3);cursor:pointer}.lib-row:hover,.lib-row:focus-visible{background:var(--color-bg-deep)}.lib-row.is-active{border-color:var(--color-accent)}.lib-row__head{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px}.lib-row__title{overflow-wrap:anywhere}.lib-row__marks{display:inline-flex;gap:2px}.lib-mark small{font-size:var(--fs-small);margin-left:1px}.lib-row__meta{margin:2px 0 0;font-size:.85em;color:var(--color-text-soft)}.lib-row__snippet{margin:4px 0 0;font-size:.9em;overflow-wrap:anywhere}.lib-status{font-size:.8em;padding:1px 6px;border-radius:4px;border:1px solid var(--color-border);color:var(--color-text-soft)}.lib-status--approved{border-color:var(--color-ok);color:var(--color-text)}.lib-status--archived{opacity:.7;font-style:italic}.lib-empty,.lib-preview__hint{color:var(--color-text-soft);font-style:italic}.lib-preview{border:1px solid var(--color-border);border-radius:8px;padding:var(--sp-3);min-height:200px;overflow-wrap:anywhere}.lib-preview__title{margin:0 0 var(--sp-1)}.lib-preview__meta{margin:0 0 var(--sp-2);font-size:.9em;color:var(--color-text-soft)}.lib-preview__actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}.lib-preview__status{margin-left:auto;display:inline-flex;align-items:center;gap:4px}.lib-preview__note{min-height:1.2em;margin:var(--sp-1) 0;font-size:.9em}.lib-preview__prompt{white-space:pre-wrap;margin:var(--sp-2) 0;max-height:14em;overflow-y:auto}.lib-preview__code,.lib-diff__code{background:var(--color-bg-deep);border-radius:var(--radius-small);padding:var(--sp-2);overflow-x:auto;font-size:.85em;max-height:20em}.lib-preview__lessons{margin:0;padding-left:1.2em}.lib-behind{font-size:.8em;color:var(--color-text-soft)}.lib-newer{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);margin:var(--sp-1) 0 var(--sp-2);padding:var(--sp-1) var(--sp-3);border-radius:var(--radius-small);background:var(--color-info-background);border:1px solid var(--color-border)}.lib-newer[hidden]{display:none}.lib-newer__text{overflow-wrap:anywhere}.overlay--library-diff .overlay__card{max-height:90vh;overflow-y:auto;width:min(860px,100%)}.lib-diff__field h4{margin:var(--sp-2) 0 var(--sp-1)}.lib-diff__line{display:inline}.lib-diff__line--ins{background:color-mix(in srgb,var(--color-ok) 22%,transparent)}.lib-diff__line--del{background:color-mix(in srgb,var(--color-error) 22%,transparent);text-decoration:line-through;text-decoration-color:color-mix(in srgb,var(--color-text) 40%,transparent)}.lib-diff__line--gap{color:var(--color-text-soft)}.lib-diff__other{font-size:.9em;color:var(--color-text-soft)}.catalog__empty{color:var(--color-text-soft);font-size:var(--fs-small);font-style:italic;padding:2px}.feedback__anon{font-size:var(--fs-small);color:var(--color-text-soft);background:var(--color-bg-deep);border-radius:var(--radius-small);padding:6px 10px;margin:var(--sp-2) 0}.feedback__q{font-weight:600;margin:var(--sp-3) 0 var(--sp-2)}.feedback__moods{display:flex;gap:var(--sp-2);justify-content:center;margin-bottom:var(--sp-3)}.feedback__mood{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:var(--sp-2);border:2px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg-panel);color:var(--color-text);cursor:pointer}.feedback__mood:hover{background:var(--color-bg-deep)}.feedback__mood.is-selected{border-color:var(--color-accent);background:var(--color-bg-deep)}.feedback__emoji{font-size:2rem;line-height:1}.feedback__moodlabel{font-size:var(--fs-small)}.feedback__clabel{display:block;text-align:left;font-size:var(--fs-small);color:var(--color-text-soft);margin-bottom:4px}.feedback__input{width:100%;font:inherit;border:1px solid var(--color-border);border-radius:var(--radius-small);padding:var(--sp-2);resize:vertical;background:var(--color-bg);color:var(--color-text)}.feedback__thanks{color:var(--color-text-soft)}.feedback__take{font-size:var(--fs-small);color:var(--color-text-soft);max-width:46ch;margin:var(--sp-2) auto 0}.overlay--feedback-results .overlay__card{text-align:left}.fbres{max-width:640px;width:94vw;max-height:90vh;overflow:auto}.fbres__bar{display:flex;align-items:baseline;gap:var(--sp-3)}.fbres__count{color:var(--color-text-soft);font-size:var(--fs-small)}.fbres__anon{font-size:var(--fs-small);color:var(--color-text-soft);background:var(--color-bg-deep);border-radius:var(--radius-small);padding:6px 10px;margin:var(--sp-2) 0}.fbres__sub{font-size:var(--fs-normal);margin:var(--sp-3) 0 var(--sp-2);border-bottom:1px solid var(--color-border);padding-bottom:4px}.fbres__moods{display:flex;flex-direction:column;gap:6px}.fbres__moodrow{display:flex;align-items:center;gap:var(--sp-2)}.fbres__moodemoji{font-size:1.4rem;width:1.6em;text-align:center}.fbres__track{flex:1;height:14px;background:var(--color-bg-deep);border-radius:999px;overflow:hidden}.fbres__trackfill{display:block;height:100%;background:var(--color-accent);border-radius:999px;min-width:2px}.fbres__moodn{width:2em;text-align:right;font-variant-numeric:tabular-nums}.fbres__comments{display:flex;flex-direction:column;gap:6px}.fbres__comment{background:var(--color-bg-deep);border:1px solid var(--color-border);border-radius:var(--radius-small);padding:6px 10px;font-size:var(--fs-small);white-space:pre-wrap}.fbres__empty{color:var(--color-text-soft);font-size:var(--fs-small);font-style:italic}.fbres__reflect{display:flex;flex-direction:column;gap:4px}.fbres__flabel{font-size:var(--fs-small);color:var(--color-text-soft);margin-top:var(--sp-2)}.fbres__scale{display:flex;gap:6px}.fbres__scalerow{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1) var(--sp-3)}.fbres__scalerow .fbres__scalehint{margin:0}.fbres__scalebtn{width:38px;height:34px;border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg-panel);color:var(--color-text);cursor:pointer}.fbres__scalebtn.is-selected{border-color:var(--color-accent);background:var(--color-accent);color:var(--color-accent-text);font-weight:600}.fbres__input{width:100%;font:inherit;border:1px solid var(--color-border);border-radius:var(--radius-small);padding:var(--sp-2);resize:vertical;background:var(--color-bg);color:var(--color-text)}.fbres__saved{font-size:var(--fs-small);color:var(--color-ok);margin-top:4px}.fbres__actions{display:flex;gap:var(--sp-2);margin-top:var(--sp-3);flex-wrap:wrap}.overlay--design{z-index:16}.design-card{max-width:760px;width:94vw;max-height:90vh;overflow:auto;text-align:left}@media(min-width:900px){.overlay--design{position:absolute;inset:0;z-index:5;background:repeating-linear-gradient(135deg,var(--color-bg-panel),var(--color-bg-panel) 11px,var(--color-bg-deep) 11px,var(--color-bg-deep) 22px);padding:var(--sp-4)}.overlay--design .design-card{max-width:620px;width:100%;max-height:100%}}.design-card__intro{color:var(--color-text-soft);font-size:var(--fs-small);margin:0 0 var(--sp-3)}.design-body{display:flex;flex-direction:column;gap:var(--sp-3)}.design-fmt{border:1px solid var(--color-border);border-radius:var(--radius-small);padding:var(--sp-3);background:var(--color-bg-deep)}.design-fmt__title{margin:0 0 2px;font-size:var(--fs-normal)}.design-fmt__hint{margin:0 0 var(--sp-2);font-size:var(--fs-small);color:var(--color-text-soft)}.design-fmt__body{display:flex;flex-direction:column;gap:var(--sp-2)}.dz-input{font:inherit;border:1px solid var(--color-border);border-radius:var(--radius-small);padding:6px 8px;background:var(--color-bg);color:var(--color-text);min-width:0}textarea.dz-input{resize:none;overflow:hidden;line-height:1.35;field-sizing:content;min-height:calc(1.35em + 14px);overflow-wrap:anywhere}.dz-icon{min-width:30px;min-height:30px;border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg-panel);color:var(--color-text);cursor:pointer}.dz-icon:disabled{opacity:.35;cursor:default}.dz-del{color:var(--color-error)}.dz-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.dz-step{display:flex;align-items:flex-start;gap:6px}.dz-step__num{min-width:22px;height:22px;border-radius:999px;background:var(--color-accent);color:var(--color-accent-text);display:grid;place-items:center;font-size:var(--fs-small);font-weight:600}.dz-step__text{flex:1}.dz-parts{display:flex;flex-direction:column;gap:6px}.dz-part{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr) auto;gap:6px}.dz-pit{display:flex;flex-direction:column;gap:3px}.dz-pit__label{font-size:var(--fs-small);font-weight:600}.dz-pit__input{width:100%}.dz-protos{display:flex;flex-direction:column;gap:var(--sp-2)}.dz-proto{position:relative;display:flex;flex-direction:column;gap:6px;padding:var(--sp-2) 44px var(--sp-2) var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg)}.dz-proto__sig{display:grid;grid-template-columns:minmax(8em,1fr) minmax(0,1.6fr);gap:6px}.dz-proto__field--params{grid-column:1 / -1}.dz-proto__field{display:flex;flex-direction:column;gap:2px;min-width:0}.dz-proto__label{font-size:var(--fs-small);font-weight:600;color:var(--color-text-soft)}.dz-proto__sig .dz-input{font-family:var(--font-mono);width:100%}.dz-proto__in.is-bad{border-color:var(--color-error)}.dz-proto__del{position:absolute;top:var(--sp-2);right:var(--sp-2)}.dz-proto__check{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;font-size:var(--fs-small)}.dz-proto__check:empty{display:none}.dz-proto__line{font-family:var(--font-mono);overflow-wrap:anywhere;color:var(--color-text)}.dz-proto__ok{color:var(--color-ok);font-weight:600}.dz-proto__msgs{flex-basis:100%;margin:0;padding-left:1.2em;display:flex;flex-direction:column;gap:2px}.dz-proto__msg--error{color:var(--color-error)}.dz-proto__msg--hint{color:var(--color-text-soft)}.dz-proto__cmp{flex-basis:100%;margin:0;color:var(--color-text-soft)}.dz-proto__cmp.is-match{color:var(--color-ok);font-weight:600}.dz-protocmp{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}.dz-protocmp__out{margin:0;flex:1 1 16em;font-size:var(--fs-small);color:var(--color-text-soft)}.design-card__tocode{border-left:3px solid var(--color-accent);padding-left:var(--sp-2);color:var(--color-text)}.dz-palette{display:flex;flex-wrap:wrap;gap:6px}.dz-palette--sub{margin-top:6px}.dz-palette--else{align-items:center}.dz-palette__note{font-size:var(--fs-small);color:var(--color-text-soft)}.dz-blockbtn{font:inherit;font-size:var(--fs-small);padding:4px 10px;border:1px solid var(--color-border);border-radius:999px;background:var(--color-bg-panel);color:var(--color-text);cursor:pointer}.dz-blockbtn:hover{background:var(--color-bg)}.dz-blocks{display:flex;flex-direction:column;gap:6px;margin-top:6px}.dz-block{border:1px solid var(--color-border);border-left:3px solid var(--color-accent);border-radius:var(--radius-small);padding:6px;background:var(--color-bg)}.dz-block--if,.dz-block--repeat{border-left-color:#e08a1e}.dz-block--input,.dz-block--output{border-left-color:#2d8a5a}.dz-block__head{display:flex;align-items:flex-start;gap:6px}.dz-block__kind{font-size:var(--fs-small);font-weight:600;min-width:62px}.dz-block__text{flex:1}.dz-block__kids{margin:6px 0 0 18px;border-left:2px dashed var(--color-border);padding-left:8px;display:flex;flex-direction:column;gap:6px}.dz-flow{position:relative;height:340px;border:1px dashed var(--color-border);border-radius:var(--radius-small);background:var(--color-bg);overflow:auto;margin-top:6px}.dz-flow__edges{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.dz-flow__edge{stroke:var(--color-text-soft);stroke-width:2}.dz-flow__arrow{fill:var(--color-text-soft)}.dz-flow__help{font-size:var(--fs-small);color:var(--color-text-soft);margin:4px 0 0}.dz-node{position:absolute;width:120px;background:var(--color-bg-panel);border:2px solid var(--color-accent);border-radius:var(--radius-small);padding:4px;box-shadow:var(--shadow)}.dz-node--decision{border-color:#e08a1e}.dz-node--start,.dz-node--end{border-radius:999px}.dz-node--io{border-color:#2d8a5a}.dz-node.is-connecting{outline:2px dashed var(--color-accent)}.dz-node__bar{display:flex;align-items:center;gap:4px;cursor:grab;touch-action:none}.dz-node__kind{flex:1;font-size:11px;font-weight:600;color:var(--color-text-soft)}.dz-node__link,.dz-node__del{border:none;background:none;cursor:pointer;font-size:12px;padding:0 2px}.dz-node__text{width:100%;margin-top:3px;font-size:var(--fs-small)}.detail-design{margin-top:var(--sp-2);border-top:1px solid var(--color-border);padding-top:var(--sp-2)}.detail-design__title{font-weight:600;font-size:var(--fs-small);margin-bottom:4px}.detail-design__body{margin:0;font-size:var(--fs-small);background:var(--color-bg-deep);border-radius:var(--radius-small);padding:var(--sp-2);max-height:40vh;overflow:auto}.review__plan{margin:4px 0 0;font-size:var(--fs-small);background:var(--color-bg-deep);border:1px solid var(--color-border);border-radius:var(--radius-small);padding:var(--sp-2);max-height:30vh;overflow:auto}.screen-points{width:100%;height:100%;min-height:0;display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-4);box-sizing:border-box}.screen-points__list{flex:1;min-height:0;margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:clamp(2px,1vh,var(--sp-2));overflow:hidden}.screen-points__row{display:flex;align-items:baseline;gap:var(--sp-3);font-size:var(--wall-text)}.screen-points__rank{min-width:2.5em;text-align:right;color:var(--color-text-soft);font-variant-numeric:tabular-nums}.screen-points__name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.screen-points__value{font-weight:600;font-variant-numeric:tabular-nums}.screen-design{width:100%;height:100%;min-height:0;display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-4);box-sizing:border-box}.screen-design__cols{display:flex;gap:var(--sp-4);flex:1;min-height:0;align-items:stretch;justify-content:center}.screen-design__col,.screen-swap__col{flex:1 1 0;min-width:0;min-height:0;display:flex;flex-direction:column;background:var(--color-bg-panel);border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden}.screen-design__label,.screen-swap__label{font-weight:700;font-size:var(--wall-text);padding:var(--sp-2) var(--sp-3);background:var(--color-accent);color:var(--color-accent-text)}.screen-design__plan,.screen-swap__plan{padding:var(--sp-3);font-size:var(--wall-base);line-height:1.5;flex:1;min-height:0;overflow:hidden;column-width:20rem;column-gap:var(--sp-4);column-fill:auto;column-rule:1px solid var(--color-border)}.screen-design__plan>*,.screen-swap__plan>*{break-inside:avoid}.screen-design__plan .planview__h,.screen-swap__plan .planview__h{break-after:avoid}.screen-design__plan .planview__h,.screen-swap__plan .planview__h{font-weight:700;margin:var(--sp-2) 0 4px;color:var(--color-accent)}.screen-design__plan .planview__h:first-child,.screen-swap__plan .planview__h:first-child{margin-top:0}.screen-design__plan .planview__row,.screen-swap__plan .planview__row{font-family:var(--font-mono);white-space:pre-wrap}.screen-design__plan .planview__partname,.screen-swap__plan .planview__partname,.screen-design__plan .planview__protoline,.screen-swap__plan .planview__protoline{font-size:var(--wall-base)}.screen-design__plan .dz-flow--ro,.screen-swap__plan .dz-flow--ro{background:var(--color-bg-deep)}.detail-design__bar{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2)}.panel--testex{grid-area:editor;display:flex;flex-direction:column;min-height:0}.panel--testex[hidden]{display:none}.student-layout.is-test>.panel--editor,.student-layout.is-test>.panel--terminal,.student-layout.is-test>#termSplit{display:none}.app--student.is-test-exercise #resetCodeBtn,.app--student.is-test-exercise #saveState{display:none}.panel--testex .panel__bar{gap:var(--sp-2)}.panel--testex .panel__actions{margin-left:auto;display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.testex-buttons{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.testpane{flex:1;min-height:0;overflow:auto;padding:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-3)}.testpane>*{margin:0}.testx-short{font-family:var(--font-mono);font-weight:600;color:var(--color-text-soft)}.testx-error{color:var(--color-error);font-size:var(--fs-small)}.testx-code__pre{counter-reset:testx-line}.testx-code__pre .cl:before{counter-increment:testx-line;content:counter(testx-line);display:inline-block;width:3ch;margin-right:1.5ch;text-align:right;color:var(--color-text-soft);user-select:none;-webkit-user-select:none}@media(min-width:900px){.student-layout .panel--testex .panel__bar{min-height:42px;padding:4px var(--sp-3)}.student-layout .panel--testex .panel__bar .btn{min-height:30px;padding:3px var(--sp-3)}}@media(max-width:899.98px){.student-layout.is-test:not([data-pane=editor]) .testpane{display:none}.student-layout.is-test[data-pane=editor] .panel--testex{overflow:hidden;padding-bottom:calc(var(--tap-bleed, 11px) + 1px)}}.panel--stepper{grid-area:editor;display:flex;flex-direction:column;min-height:0}.panel--stepper[hidden]{display:none}.student-layout.is-stepping>.panel--editor{display:none}.panel--stepper .panel__bar{gap:var(--sp-2)}.stepper__actions{margin-left:auto;display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.stepper__controls,.stepper__transport{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border)}.stepper__transport[hidden]{display:none}.stepper__input{display:flex;align-items:center;gap:var(--sp-2);flex:1 1 14em;min-width:0;font-size:var(--fs-small)}.stepper__input input{flex:1;min-width:6em;font-family:var(--font-mono)}.stepper__status{flex:1 1 100%;font-size:var(--fs-small);color:var(--color-text-soft);min-height:1.2em}.stepper__status.is-error{color:var(--color-error)}.stepper__slider{flex:1 1 8em;min-width:6em}.stepper__pos{font-size:var(--fs-small);color:var(--color-text-soft);min-width:6em}.stepper__scope{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-small);white-space:nowrap}.stepper__mode{display:inline-flex;align-items:center;gap:var(--sp-1)}.stepper__mode [aria-pressed=true]{color:var(--color-accent-text);background:var(--color-accent);border-color:transparent}.stepper__addr{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-small);white-space:nowrap}.stepper__mode[hidden],.stepper__addr[hidden]{display:none}.stepper__practice{display:flex;align-items:center;gap:var(--sp-1) var(--sp-3);flex-wrap:wrap;padding:var(--sp-1) var(--sp-3);border-bottom:1px solid var(--color-border)}.stepper__practice[hidden],.stepper__quiz[hidden],.stepper__quiz-actions [hidden]{display:none}.stepper__practice-side{display:flex;flex-direction:column;align-items:flex-start;gap:2px}.stepper__score{font-size:var(--fs-small);color:var(--color-text-soft);white-space:nowrap}.stepper__score:empty{display:none}.stepper__quiz{flex:1 1 24em;display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1) var(--sp-3);padding:var(--sp-1) var(--sp-2);border:2px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg)}.stepper__quiz:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.stepper__quiz[data-tone=ask]{border-color:var(--color-accent)}.stepper__quiz[data-tone=right]{border-color:var(--color-ok)}.stepper__quiz[data-tone=wrong]{border-color:var(--color-error)}.stepper__quiz-text{flex:1 1 22em;min-width:0;margin:0;overflow-wrap:anywhere}.stepper__quiz[data-tone=ask] .stepper__quiz-text{font-weight:600}.stepper__quiz-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1)}.stepper__quiz-value{display:inline-flex;align-items:center;gap:var(--sp-1)}.stepper__quiz-value input{width:8em;font-family:var(--font-mono)}.student-layout.is-stepping-mem .terminal-body{display:none}.student-layout.is-stepping-mem .panel--terminal{min-height:0;height:auto}.student-layout.is-stepping-mem .splitter:not(.splitter--v){display:none}.student-layout.is-stepping-mem .stepper__view{container-type:size}.stepper__view .mem .mem__code{max-height:calc(100cqh - 9em)}.stepper__view .mem.is-stacked .mem__code{max-height:max(7em,40cqh)}.stepper__view .mem .dbg__bar:has(>.dbg__file[hidden]){display:none}.stepper__view .mem.is-stacked .mem__left{flex:1 1 100%;flex-direction:row;flex-wrap:wrap;align-items:flex-start}.stepper__view .mem.is-stacked .mem__outpanel{flex:1 1 10em;min-width:8em}.panel--stepper:has(#stepperQuiz:not([hidden])) .stepper__view .mem.is-stacked .mem__code{max-height:max(6.5em,30cqh)}.stepper__view{flex:1;min-height:0;overflow:auto;padding:var(--sp-2) var(--sp-3)}.stepper__view:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}.stepper__view .dbg__code{max-height:none}@media(min-width:900px){.stepper__view{display:flex;flex-direction:column;overflow:hidden}.stepper__view>.dbg-host__vars:not([hidden]){flex:1;min-height:0;display:flex;flex-direction:column}.stepper__view .dbg__body{flex:1;min-height:0;grid-template-rows:minmax(0,1fr)}.stepper__view .dbg__code,.stepper__view .dbg__side{max-height:100%;min-height:0;overflow:auto}.student-layout.is-stepping-mem .stepper__view{display:block;overflow:auto}}@media(max-width:899.98px){.student-layout.is-stepping:not([data-pane=editor]) .stepper__view,.student-layout.is-stepping:not([data-pane=editor]) .stepper__controls,.student-layout.is-stepping:not([data-pane=editor]) .stepper__transport,.student-layout.is-stepping:not([data-pane=editor]) .stepper__practice{display:none}.stepper__view .dbg__body{grid-template-columns:minmax(0,1fr)}.stepper__view{display:flex;flex-direction:column;overflow:hidden}.stepper__view>.dbg-host__vars:not([hidden]){flex:1;min-height:0;display:flex;flex-direction:column}.stepper__view .dbg__body{flex:1;min-height:0;grid-template-rows:minmax(5em,1fr) minmax(0,max-content)}.stepper__view .dbg__code,.stepper__view .dbg__side{max-height:100%;min-height:0;overflow:auto}.student-layout.is-stepping-mem .stepper__view{display:block;overflow:auto}}.testx-intro{color:var(--color-text-soft);font-size:var(--fs-small);margin:0 0 var(--sp-3)}.testx-code{margin-bottom:var(--sp-3)}.testx-code__label{font-weight:600;font-size:var(--fs-small);margin-bottom:4px}.testx-code__pre{margin:0;font-family:var(--font-mono);font-size:var(--fs-small);line-height:1.5;white-space:pre;background:var(--color-bg-deep);border:1px solid var(--color-border);border-radius:var(--radius-small);padding:var(--sp-2);overflow:auto}.testx-code__pre code{white-space:inherit}.ex-fb-group{display:flex;flex-direction:column;gap:2px;margin-bottom:var(--sp-2)}.ex-fb-group__label{font-size:var(--fs-small);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-soft)}.review__req{color:var(--color-error);margin-left:2px}.review__reqhint{font-size:var(--fs-small);color:var(--color-text-soft);margin:var(--sp-2) 0 0}.review__norm--trace{font-size:var(--fs-small);color:var(--color-text-soft)}.review-pairs{display:flex;flex-direction:column;gap:4px;margin:var(--sp-2) 0 0}.review-pairs__row{display:flex;flex-wrap:wrap;gap:6px}.review-pairs__out{font-size:var(--fs-small);color:var(--color-text-soft)}.review-pair{font-size:var(--fs-small);border:1px solid var(--color-border);border-radius:999px;padding:1px 10px;color:var(--color-text-soft)}.review-pair.is-done{color:var(--color-ok);border-color:color-mix(in srgb,var(--color-ok) 45%,transparent)}.review-pair__mark{margin-right:4px}.phasebar{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-4);border-bottom:1px solid var(--color-border);flex-wrap:wrap}.phasebar__label{font-size:var(--fs-small);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-soft)}.phasebar__steps{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.phasebar__hint{font-size:var(--fs-small);color:var(--color-text-soft)}.phasestep{font:inherit;font-size:var(--fs-small);display:inline-flex;align-items:center;gap:6px;border:1px solid var(--color-border);border-radius:999px;padding:2px 12px;background:var(--color-bg);color:var(--color-text-soft)}.phasestep--active{border-color:var(--color-accent);color:var(--color-text);font-weight:600}.phasestep--done{color:var(--color-ok);border-color:color-mix(in srgb,var(--color-ok) 45%,transparent)}.phasestep--ready{cursor:pointer;color:var(--color-text);border-color:var(--color-accent);background:var(--color-accent-soft);font-weight:600}.phasestep--locked{opacity:.55}button.phasestep--active{cursor:pointer}.notice{max-width:min(520px,92vw);text-align:left}.notice__title{margin:0 0 var(--sp-2);font-size:1.05rem}.notice__body{margin:0 0 var(--sp-3);white-space:pre-wrap}.notice__foot{display:flex;justify-content:flex-end;gap:var(--sp-2)}.testx-cases{display:flex;flex-direction:column;gap:var(--sp-2)}.testx-case{border:1px solid var(--color-border);border-radius:var(--radius-small);padding:var(--sp-2)}.testx-case.is-ok{border-color:var(--color-ok)}.testx-case.is-no{border-color:var(--color-error)}.testx-case__head{font-weight:600;font-size:var(--fs-small);margin-bottom:4px}.testx-case__mark{font-weight:700}.testx-case__mark--ok{color:var(--color-ok)}.testx-case__mark--no{color:var(--color-error)}.testx-case__input{font-size:var(--fs-small);margin-bottom:4px}.testx-lbl{color:var(--color-text-soft);font-size:var(--fs-small)}.testx-input{width:100%;box-sizing:border-box;font-family:var(--font-mono);font-size:var(--fs-small);resize:vertical}.testx-io{display:flex;gap:var(--sp-3);flex-wrap:wrap}.testx-io__col{flex:1;min-width:180px}.testx-pre{margin:2px 0 0;font-family:var(--font-mono);font-size:var(--fs-small);white-space:pre-wrap;background:var(--color-bg-deep);border-radius:var(--radius-small);padding:var(--sp-2)}.testx-pre--real{border:1px solid var(--color-error)}.testx-score{font-weight:700;margin:var(--sp-3) 0}.detail-test{margin-top:var(--sp-2);border-top:1px solid var(--color-border);padding-top:var(--sp-2)}.detail-test__title{font-weight:600;font-size:var(--fs-small);margin-bottom:4px}.detail-owncode{margin-top:var(--sp-2);border-top:1px solid var(--color-border);padding-top:var(--sp-2);display:flex;flex-direction:column;gap:var(--sp-2)}.detail-owncode__title{font-weight:600;font-size:var(--fs-small)}.ocr__item{display:flex;flex-direction:column;gap:var(--sp-1)}.ocr__title{font-weight:600}.ocr__sum,.ocr__none{margin:0;font-size:var(--fs-small);color:var(--color-text-soft)}.ocr__list{margin:0;padding-left:1.4em;display:flex;flex-direction:column;gap:var(--sp-2)}.ocr__q{font-size:var(--fs-small)}.ocr__qhead{display:flex;gap:var(--sp-2);align-items:center}.ocr__family{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-soft)}.ocr__open{color:var(--color-warning)}.ocr__text{margin:2px 0}.ocr__text code,.ocr__row code,.ocr__talk code{font-family:var(--font-mono);background:var(--color-bg-deep);padding:0 3px;border-radius:3px}.ocr__row{margin:2px 0}.ocr__label{color:var(--color-text-soft)}.ocr__try--ok{color:var(--color-ok)}.ocr__try--wrong{color:var(--color-error)}.ocr__change pre{margin:2px 0;font-family:var(--font-mono);background:var(--color-bg-deep);padding:2px 6px;border-radius:3px;white-space:pre-wrap}.ocr__change del{color:var(--color-error)}.ocr__change ins{text-decoration:none;color:var(--color-ok)}.ocr__talk ul{margin:2px 0 0;padding-left:1.2em;font-size:var(--fs-small)}.ocr__code .codeline.is-focus{background:var(--color-accent-soft)}.detail-test__score{font-family:var(--font-mono);font-size:var(--fs-small)}.detail-test__label{font-size:var(--fs-small);color:var(--color-text-soft);margin-top:var(--sp-2)}.detail-test__answers{margin:2px 0 0;font-family:var(--font-mono);font-size:var(--fs-small);white-space:pre-wrap;overflow-wrap:anywhere;background:var(--color-bg-deep);border-radius:var(--radius-small);padding:var(--sp-2);max-height:30vh;overflow:auto}.testx-chips{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-bottom:var(--sp-3)}.testx-chip{border:1px solid var(--color-border);border-radius:999px;padding:6px 14px;background:var(--color-bg-panel);cursor:pointer;font-size:var(--fs-small)}.testx-chip.is-on{background:var(--color-accent);color:var(--color-accent-text);border-color:var(--color-accent)}.testx-chip:disabled{cursor:default;opacity:1}.testx-chip--ok{background:var(--color-ok);color:var(--color-accent-text);border-color:var(--color-ok)}.testx-chip--missed{background:transparent;color:var(--color-error);border-color:var(--color-error);border-style:dashed}.testx-chip--extra{background:var(--color-bg-panel);color:var(--color-text-soft);border-style:dotted}.testx-note-view{margin-top:var(--sp-2)}.testx-case--edit{display:flex;flex-direction:column;gap:6px}.testx-field{display:flex;flex-direction:column;gap:2px}.testx-rowdel{border:none;background:none;color:var(--color-text-soft);cursor:pointer;float:right;font-size:var(--fs-small)}.testx-rowdel:hover{color:var(--color-error)}.testx-pair{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--sp-2) var(--sp-3)}@media(max-width:700px){.testx-pair{grid-template-columns:minmax(0,1fr)}}.testx-sub{color:var(--color-text-soft);font-size:var(--fs-small);font-weight:400}.testx-multi{margin:0;font-size:var(--fs-small);color:var(--color-text);background:color-mix(in srgb,var(--color-warning) 12%,transparent);border-left:3px solid var(--color-warning);border-radius:var(--radius-small);padding:4px var(--sp-2)}.testx-multi[hidden]{display:none}.testx-example{border:1px dashed var(--color-border);border-radius:var(--radius-small);padding:var(--sp-2);margin-bottom:var(--sp-3);background:var(--color-bg-panel)}.testx-example__head{font-weight:600;font-size:var(--fs-small);margin-bottom:4px}.arena-steps{margin:0 0 var(--sp-3);padding-left:1.4em;display:flex;flex-direction:column;gap:2px}.arena-progress{font-weight:600;margin:0 0 var(--sp-2)}.arena-check{display:flex;align-items:baseline;gap:var(--sp-2);flex-wrap:wrap;font-size:var(--fs-small)}.arena-check__out code{font-family:var(--font-mono);background:var(--color-bg-deep);padding:0 4px;border-radius:3px}.arena-check__pending{color:var(--color-text-soft)}.arena-cause{margin:0 0 4px;font-size:var(--fs-small)}.arena-reveal{border:1px solid var(--color-border);border-radius:var(--radius-small);padding:var(--sp-2);margin-bottom:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-2)}.arena-reveal__title{margin:0;font-size:inherit}.arena-reveal__item{border-left:3px solid var(--color-border);padding-left:var(--sp-2)}.arena-reveal__item.is-dead{border-left-color:var(--color-ok)}.arena-reveal__item.is-alive{border-left-color:var(--color-error)}.arena-reveal__note{margin:2px 0}.arena-diff{display:flex;flex-direction:column;gap:4px}.arena-diff__hunk{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--sp-2)}.arena-diff__side pre{margin:2px 0 0;font-family:var(--font-mono);font-size:var(--fs-small);white-space:pre-wrap;overflow-wrap:anywhere;background:var(--color-bg-deep);border-radius:var(--radius-small);padding:2px 6px}.arena-diff__side--ok pre{border-left:3px solid var(--color-ok)}.arena-diff__side--bug pre{border-left:3px solid var(--color-error)}.arena-diff__cap{font-size:var(--fs-small);color:var(--color-text-soft)}.arena-bugs{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-bottom:var(--sp-3)}.arena-bug{border:1px solid var(--color-border);border-radius:999px;padding:4px 12px;font-size:var(--fs-small)}.arena-bug.is-dead{background:var(--color-ok);color:var(--color-accent-text);border-color:var(--color-ok)}.arena-bug.is-alive{color:var(--color-text-soft);border-style:dashed}.arena-mini{display:inline-flex;flex-wrap:wrap;gap:4px}.arena-mini .arena-bug{padding:1px 8px}.screen-arena{width:100%;height:100%;display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-4);box-sizing:border-box;align-items:center}.screen-arena__sub{flex:none;font-size:var(--wall-text);color:var(--color-text-soft);margin:0}.screen-arena__grid{display:flex;flex-wrap:wrap;gap:var(--sp-4);justify-content:center;align-content:center;flex:1 1 auto;min-height:0;overflow:auto}.arena-tile{min-width:180px;display:flex;flex-direction:column;align-items:center;gap:8px;padding:var(--sp-4);border-radius:var(--radius);border:2px solid var(--color-border);background:var(--color-bg-panel)}.arena-tile.is-dead{border-color:#2e7d32;background:#2e7d3226}.arena-tile.is-alive{border-color:#c0392b;background:#c0392b1f}.arena-tile__icon{font-size:var(--wall-large);line-height:1}.arena-tile__label{font-weight:700;font-size:var(--wall-text)}.arena-tile__status{font-size:var(--wall-base);color:var(--color-text-soft)}.screen-arena__grid.is-revealed{display:grid;grid-template-columns:minmax(0,1fr);align-content:start;justify-content:stretch;width:100%;gap:var(--sp-2)}.arena-tile--revealed{display:grid;grid-template-columns:7.5em minmax(0,1fr) minmax(0,2.2fr);align-items:start;gap:4px var(--sp-3);padding:var(--sp-2) var(--sp-3);min-width:0}@media(max-width:900px){.arena-tile--revealed{grid-template-columns:minmax(0,1fr)}}.arena-tile__head{display:flex;flex-direction:column;gap:2px}.arena-tile__note{margin:0;font-weight:600;font-size:var(--wall-base)}.arena-tile__reveal{text-align:left;display:flex;flex-direction:column;gap:4px;min-width:0}.arena-tile__reveal .arena-diff__hunk{gap:2px var(--sp-2)}.arena-tile__reveal .arena-diff__side pre,.arena-tile__reveal .arena-diff__cap{font-size:var(--wall-base)}.arena-tile .arena-tile__status,.arena-tile__reveal .arena-diff__cap{color:var(--color-text)}.help-btn{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;border-radius:999px;border:1px solid var(--color-border);background:var(--color-bg-panel);color:var(--color-text-soft);font-size:var(--fs-small);font-weight:700;line-height:1;cursor:pointer;flex:none}.help-btn:before{content:"?"}.help-btn:hover{color:var(--color-accent);border-color:var(--color-accent)}.help-dot{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-left:var(--sp-1);padding:0;border-radius:999px;border:1px solid var(--color-border);background:transparent;color:var(--color-text-soft);font-size:.7rem;font-weight:700;line-height:1;cursor:pointer;vertical-align:middle;flex:none}.help-dot:before{content:"?"}.help-dot:hover{color:var(--color-accent);border-color:var(--color-accent)}.help-btn:focus-visible,.help-dot:focus-visible{outline:none;box-shadow:var(--ring)}.overlay--help{z-index:40}.help-card{max-width:520px;width:100%;text-align:left}.help-card__bar{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-3)}.help-card__title{margin:0;flex:1;font-size:var(--fs-large);color:var(--color-text)}.help-card__close{border:none;background:transparent;color:var(--color-text-soft);font-size:1.1rem;line-height:1;cursor:pointer;padding:var(--sp-1)}.help-card__close:hover{color:var(--color-text)}.help-card__close:focus-visible{outline:none;box-shadow:var(--ring);border-radius:var(--radius-small)}.help-card__body{color:var(--color-text);font-size:var(--fs-normal);line-height:1.5}.help-card__body p{margin:0 0 var(--sp-3)}.help-card__body p:last-child,.help-card__body ul:last-child{margin-bottom:0}.help-card__body ul{margin:0 0 var(--sp-3);padding-left:1.3em}.help-card__body li{margin-bottom:var(--sp-1)}.panel__titlewrap{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);max-width:100%}@media(max-width:899.98px){.app--student .btn{min-height:44px}.app--student .btn--sm,.app--student .filetab{min-height:40px}.app--student .menu__item{min-height:44px}.app--student .keybar button{min-width:40px;min-height:40px}.overlay--present .poll__opt,.overlay--present .poll__chip{min-height:44px}.app--student .hintjump{padding:var(--sp-3) 0}.app--student .hinted>.btn:disabled{pointer-events:none}.app--student .hinted[data-hint]:hover:after{content:none}.app--student .rawcompile summary{min-height:40px;padding-top:var(--sp-3);padding-bottom:var(--sp-3)}.app--student{--tap-bleed: 11px}.app--student .help-btn,.app--student .help-dot,.app--student .term-toggle,.app--student .laptophint__x,.app--student .lang-toggle{position:relative}.app--student .help-btn:after,.app--student .help-dot:after,.app--student .term-toggle:after,.app--student .laptophint__x:after,.app--student .lang-toggle:after{content:"";position:absolute;inset:calc(-1 * var(--tap-bleed))}.app--student .footer{padding-right:calc(var(--tap-bleed) + 1px)}}.precheck__lead{margin:0 0 var(--sp-3)}.precheck__list{margin:0 0 var(--sp-4);padding-left:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-1)}.precheck__list li{line-height:1.45}.precheck__where{color:var(--color-text-soft);font-family:var(--font-mono);font-size:var(--fs-small)}.precheck__how{border-top:1px solid var(--color-border);padding-top:var(--sp-3)}.precheck__howlabel{font-size:var(--fs-small);color:var(--color-text-soft);margin-bottom:var(--sp-2)}.ex-precheck-item{border-top:1px solid var(--color-border);padding-top:var(--sp-2);margin-top:var(--sp-2)}.ex-precheck-item:first-of-type{border-top:0;padding-top:0;margin-top:0}.ex-precheck-opts{display:flex;flex-direction:column;gap:var(--sp-1);padding-left:var(--sp-4);margin-top:var(--sp-1)}.diag{position:fixed;right:var(--sp-3);bottom:var(--sp-3);z-index:60;width:15rem;padding:var(--sp-2) var(--sp-3);background:var(--color-bg-panel);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);font-size:var(--fs-small)}.diag__bar{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);margin-bottom:var(--sp-2)}.diag__list{display:flex;flex-direction:column;gap:2px}.diag__row{display:flex;justify-content:space-between;gap:var(--sp-3)}.diag__label{color:var(--color-text-soft)}.diag__val{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.diag__row.is-warn .diag__val{color:var(--color-error);font-weight:700}.selfpaced-row{display:flex;align-items:center;gap:var(--sp-2)}.selfpaced-row__text{flex:1 1 auto;min-width:0}.selfpaced-row__why{display:block;font-style:normal;font-size:var(--fs-small);color:var(--color-text-soft)}.selfpaced-row.is-blocked .selfpaced-row__text{color:var(--color-text-soft)}.selfpaced-row .sp-peek{flex:0 0 auto;padding:0 var(--sp-2)}.selfpaced-row__main{display:flex;align-items:center;gap:var(--sp-2);flex:1 1 auto;min-width:0}.sp-gate-label{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--sp-1);font-size:var(--fs-small);color:var(--color-text-soft);white-space:nowrap;cursor:pointer}.sp-gate-label.is-off{opacity:.45;cursor:default}.sp-gate-label:has(.sp-gate:checked){color:var(--color-text);font-weight:600}.selfpaced-examsum__title{font-size:var(--fs-normal);margin:var(--sp-3) 0 var(--sp-1)}.examsum{width:100%;border-collapse:collapse;font-size:var(--fs-small)}.examsum th,.examsum td{padding:2px var(--sp-2);text-align:left;border-bottom:1px solid var(--color-border);font-weight:400}.examsum thead th{color:var(--color-text-soft)}.examsum tbody th{overflow-wrap:anywhere}.examsum .examsum__num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.examsum .is-over{color:var(--color-error);font-weight:700}.selfpaced-status.is-live{color:var(--color-accent)}.selfpaced-reject{font-size:var(--fs-small);color:var(--color-warning);max-width:32em}.card__where{max-width:20em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-work{margin-top:var(--sp-3);border-top:1px solid var(--color-border);padding-top:var(--sp-2)}.detail-work__title{font-weight:700;margin-bottom:var(--sp-1)}.detail-work__row.is-current{background:var(--color-accent-soft)}.detail-work__row .detail-work__btn{flex:0 0 auto;padding:0 var(--sp-2)}.codeview__source{font-size:var(--fs-small);color:var(--color-text-soft)}.overlay--picker .overlay__card.pickerview{width:min(560px,94vw);max-width:min(560px,94vw);max-height:88vh;display:flex;flex-direction:column;text-align:left}.pickerview .exercise-picker__title{flex:1;margin:0}.overlay--picker .exercise-picker{margin-bottom:0;min-height:0;display:flex;flex-direction:column}.overlay--picker .exercise-picker__list{max-height:none;flex:1 1 auto}.picker-rule{margin:0 0 var(--sp-2);font-size:var(--fs-small);color:var(--color-text-soft);line-height:1.4}.picker-note{margin:0 0 var(--sp-3);padding:var(--sp-2) var(--sp-3);border-left:3px solid var(--color-ok);border-radius:var(--radius-small);background:var(--color-bg-deep);line-height:1.4}.picker-item:disabled{opacity:.55;cursor:not-allowed}.picker-item:disabled:hover{border-color:var(--color-border)}.picker-item__why{margin:2px 0 0 var(--sp-3);font-size:var(--fs-small);color:var(--color-text-soft);line-height:1.3}.picker-parts{list-style:none;margin:2px 0 var(--sp-1) var(--sp-5);padding:0;display:flex;flex-direction:column;gap:2px}.picker-part{display:flex;align-items:center;gap:var(--sp-2);width:100%;min-height:32px;text-align:left;padding:var(--sp-1) var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg);color:var(--color-text);cursor:pointer;font:inherit;font-size:var(--fs-small)}.picker-part:hover{border-color:var(--color-accent)}.picker-part.is-current{border-color:var(--color-info);box-shadow:var(--ring)}.picker-part__icon{width:1.2em;text-align:center;font-weight:700}.picker-part__label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker-part--done .picker-part__icon{color:var(--color-ok)}.picker-part--busy .picker-part__icon{color:var(--color-warning)}.picker-part--open .picker-part__icon{color:var(--color-text-soft)}.picker-part:disabled{opacity:.55;cursor:not-allowed}.picker-part:disabled:hover{border-color:var(--color-border)}.picker-part__why{margin:1px 0 0 var(--sp-3);font-size:var(--fs-small);color:var(--color-text-soft);line-height:1.3}.overlay--sp-intro .shell--curtain{max-width:480px}.sp-intro{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-2)}.sp-intro li{display:flex;align-items:flex-start;gap:var(--sp-2);line-height:1.4}.sp-intro li:not(.sp-intro__item--icon):before{content:"";flex:none;width:6px;height:6px;margin:.55em 4px 0;background:var(--color-accent)}.sp-intro__icon{flex:none;width:1.4em;text-align:center}.sp-moved{display:flex;align-items:flex-start;gap:var(--sp-2);margin:0;padding:var(--sp-2) var(--sp-3);border-bottom:2px solid var(--color-ok);background:var(--color-bg-deep);font-size:var(--fs-small);line-height:1.4}.sp-moved[hidden]{display:none}.sp-moved__text{flex:1 1 auto}.sp-moved__x{flex:none;min-width:32px;min-height:32px;padding:0;border:0;border-radius:var(--radius-small);background:none;color:inherit;font:inherit;cursor:pointer}.sp-moved__x:focus-visible{outline:none;box-shadow:var(--ring)}.ahead-note{align-items:center;flex-wrap:wrap}.ahead-note__go{flex:none}.picker-item__class{flex:none;margin-left:var(--sp-2);padding:0 6px;border-radius:999px;font-size:var(--fs-small);color:var(--color-accent);background:var(--color-accent-soft);white-space:nowrap}.aheadview__body{display:flex;flex-direction:column;gap:var(--sp-2)}.aheadview__line{margin:0}.aheadview__key{font-weight:700;margin-right:var(--sp-1)}.aheadview__why{color:var(--color-warning)}.aheadview__cap{margin:var(--sp-2) 0 var(--sp-1);font-weight:700}.aheadview__none{margin:var(--sp-2) 0 0;color:var(--color-text-soft)}.aheadview__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.aheadview__list li{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:baseline;padding:2px 0;border-bottom:1px solid var(--color-border)}.aheadview__name{font-weight:700;min-width:8em;overflow-wrap:anywhere}.aheadview__where{flex:1 1 12em;overflow-wrap:anywhere}.aheadview__state{color:var(--color-text-soft);font-size:var(--fs-small)}.detail-ahead{margin:var(--sp-2) 0;padding:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small)}.detail-ahead legend{padding:0 var(--sp-1);font-weight:700;font-size:var(--fs-small)}.detail-ahead__where{display:block;margin-bottom:var(--sp-1);color:var(--color-accent);font-size:var(--fs-small);font-weight:700}.detail-ahead__opts{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-3)}.detail-ahead__opt{display:inline-flex;align-items:center;gap:4px;cursor:pointer}.matrix__lane{margin-left:4px;padding:0 5px;border-radius:999px;font-size:var(--fs-small);color:var(--color-accent);background:var(--color-accent-soft);white-space:nowrap}.screen-selfpaced{width:100%;max-width:1400px;margin:0 auto;box-sizing:border-box;display:flex;flex-direction:column;gap:var(--sp-3);font-size:var(--wall-text)}.sp-board__head{flex:none;display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--sp-2) var(--sp-4)}.sp-board__title{margin:0;font-size:1.25em;line-height:1.2}.sp-board__meta{margin:0;color:var(--color-text-soft)}.sp-board__legend{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-4);margin:0 0 0 auto;padding:0;list-style:none}.sp-board__key{display:flex;align-items:center;gap:var(--sp-2);color:var(--color-text-soft)}.sp-board__swatch{flex:none;width:1em;height:1em;border-radius:3px}.sp-board__key--done .sp-board__swatch{background:var(--color-ok)}.sp-board__key--busy .sp-board__swatch{background:var(--color-warning)}.sp-board__list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--sp-2)}.sp-board__empty{margin:0;color:var(--color-text-soft)}.sp-board__empty[hidden]{display:none}.sp-row{--sp-type-size: clamp(.85em, var(--wall-base), 1em);display:grid;grid-template-columns:2ch calc(var(--sp-type-size) * 9.4) minmax(4em,18em) minmax(0,1fr) 4.5em 4.5em;align-items:center;gap:var(--sp-3)}.sp-row__pos{color:var(--color-text-soft);font-variant-numeric:tabular-nums;text-align:right}.sp-row .sp-row__type{font-size:var(--sp-type-size);line-height:1;padding:.12em .5em;justify-self:start;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sp-row__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sp-row__bar{display:flex;height:1.1em;border-radius:999px;background:var(--color-accent-soft);overflow:hidden}.sp-row__seg{flex:0 0 auto;height:100%}.sp-row__seg--done{background:var(--color-ok)}.sp-row__seg--busy{background:var(--color-warning)}.sp-row__n{font-variant-numeric:tabular-nums;font-weight:700;text-align:right;white-space:nowrap}.sp-row__n--done{color:var(--color-ok)}.sp-row__n--busy{color:var(--color-warning)}.screen-timer__cap{font-size:var(--wall-header);color:var(--color-text-soft)}.screen-timer__cap[hidden]{display:none}.ex-preread{margin:0 0 var(--sp-3);padding:var(--sp-2) var(--sp-3);border-left:3px solid var(--color-warning);background:var(--color-bg-deep);border-radius:var(--radius-small)}.ex-preread .field-hint:last-child{margin-bottom:0}.ex-parts{display:block}.ex-parts__sum{display:flex;align-items:center;gap:var(--sp-2);margin:0 0 var(--sp-3);color:var(--color-text-soft)}.ex-parts__count{font-size:var(--fs-small);font-weight:700;color:var(--color-accent);background:var(--color-accent-soft);border-radius:999px;padding:1px 8px}.ex-parts__list{display:flex;flex-direction:column;gap:var(--sp-2)}.ex-part{border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg-panel);padding:var(--sp-2) var(--sp-3)}.ex-part>summary{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px var(--sp-2);cursor:pointer}.ex-part__nr{font-weight:700;color:var(--color-text);white-space:nowrap}.ex-part__name{flex:1 1 auto;min-width:min(12rem,100%);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text)}.ex-part__mode{font-size:var(--fs-small);color:var(--color-text-soft);white-space:nowrap}.ex-part__tools{display:flex;gap:var(--sp-1);justify-content:flex-end;margin-bottom:var(--sp-2)}.ex-part__start{margin:0 0 var(--sp-3);padding:var(--sp-2) var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius-small)}.ex-part__start>legend{font-size:var(--fs-small);color:var(--color-text-soft);padding:0 var(--sp-1)}.ex-part__startercode{margin-top:var(--sp-2)}.ex-part__sub{margin-left:var(--sp-2)}.card__part,.card__hints,.card__points{font-size:var(--fs-small);font-weight:700;border-radius:999px;padding:1px 8px;white-space:nowrap}.card__part{color:var(--color-accent);background:var(--color-accent-soft)}.card__points{color:var(--color-warning);background:var(--color-bg-deep)}.card__hints{color:var(--color-text);background:transparent;border:1px solid var(--color-border)}.overlay--points .overlay__card.pointsview{width:min(520px,94vw);max-width:min(520px,94vw);max-height:86vh;overflow:auto;text-align:left}.points__hint{margin:0 0 var(--sp-3);font-size:var(--fs-small);color:var(--color-text-soft)}.points__empty{margin:0;color:var(--color-text-soft)}.points__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-1)}.points__row{display:flex;align-items:baseline;gap:var(--sp-2);padding:var(--sp-1) var(--sp-2);border-radius:var(--radius-small);background:var(--color-bg-deep)}.points__rank{min-width:2em;text-align:right;color:var(--color-text-soft);font-variant-numeric:tabular-nums}.points__name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.points__value{font-weight:700;color:var(--color-warning);white-space:nowrap}.steppreview__block--part{margin-top:var(--sp-5);padding-top:var(--sp-3);border-top:2px solid var(--color-border)}.steppreview__block--part:first-child{margin-top:0;padding-top:0;border-top:0}.steppreview__block--part>.steppreview__label{font-size:var(--fs-normal);text-transform:none;letter-spacing:0;color:var(--color-text);font-weight:700}.steppreview__acts{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-bottom:var(--sp-2)}.steppreview__act{border-color:var(--color-border);--btn-bg: var(--color-bg-panel);min-height:32px;padding:var(--sp-1) var(--sp-3)}.test-spec__sum{display:flex;align-items:center;gap:var(--sp-2);cursor:pointer}.test-spec__sum>.panel__title{margin:0}.test-spec__count{font-size:var(--fs-small);font-weight:700;color:var(--color-accent);background:var(--color-accent-soft);border-radius:999px;padding:1px 8px}.test-spec__fold[open]>.test-spec__sum{margin-bottom:var(--sp-2)}.lesson-overview__markn{font-size:var(--fs-small);font-weight:700;color:var(--color-text-soft)}.part-badge{font-size:var(--fs-small);font-weight:600;color:var(--color-accent);background:var(--color-accent-soft);border-radius:999px;padding:2px 8px;white-space:nowrap}button.part-badge{border:0;margin:0;font-family:inherit;line-height:inherit;cursor:pointer}button.part-badge:hover{text-decoration:underline}button.part-badge:focus-visible{outline:none;box-shadow:var(--ring)}button.part-badge[aria-expanded=true]{text-decoration:underline}.parts-overview__list{margin:var(--sp-2) 0 0;gap:var(--sp-1)}.overlay--part-done .shell--curtain{max-width:480px}.testov__ref,.testov__done{margin:0 0 var(--sp-2)}#testOverlayPartDone:not([hidden])~.testov__done{display:none}.overlay--solution .overlay__card.solutionview{width:min(820px,94vw);max-width:min(820px,94vw);max-height:88vh;display:flex;flex-direction:column;text-align:left}.solutionview__note{margin:var(--sp-2) 0 0;color:var(--color-text-soft);font-size:var(--fs-small);line-height:1.4}.solutionview__body{flex:1 1 auto;overflow:auto;margin-top:var(--sp-2)}.solutionview__body .codelines{max-height:none;margin-bottom:0}.solutionview__body[data-nocopy=true]{user-select:none;-webkit-user-select:none}.overlay--lock.has-preread .shell--curtain{max-width:min(760px,94vw)}.preread{text-align:left}.preread__text{max-height:46vh;overflow:auto;padding:var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg)}.screen-part{display:flex;align-items:baseline;justify-content:center;gap:.4em;margin-bottom:var(--sp-2);font-size:var(--wall-text);font-weight:700;letter-spacing:.04em;align-self:center;padding:.1em .7em;border:2px solid var(--color-accent);border-radius:999px;background:var(--color-accent-soft);color:var(--color-text)}.screen-part[hidden]{display:none}.app--screen .screen-part{flex:none}.screen-extitle{font-size:var(--wall-header);font-weight:800;line-height:1.15;text-align:center;color:var(--color-text);margin-bottom:var(--sp-2);overflow-wrap:anywhere}.screen-extitle[hidden]{display:none}.app--screen .screen-extitle{flex:none}.app--screen .screen-main.has-hints{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);grid-template-rows:auto auto auto minmax(0,1fr) auto;column-gap:var(--sp-5);align-content:stretch}.screen-main.has-hints>.screen-marks{grid-column:1;grid-row:1}.screen-main.has-hints>.screen-extitle{grid-column:1;grid-row:2}.screen-main.has-hints>.screen-part{grid-column:1;grid-row:3;justify-self:center}.screen-main.has-hints>.screen-prompt{grid-column:1;grid-row:4;align-self:center}.screen-main.has-hints>.screen-more{grid-column:1;grid-row:5}.screen-main.has-hints>.screen-hints{grid-column:2;grid-row:1 / -1;align-self:stretch}.screen-hints{display:flex;flex-direction:column;gap:var(--sp-2);font-size:var(--wall-text);padding:var(--sp-3) var(--sp-4);border-left:4px solid var(--color-warning);border-radius:var(--radius);background:var(--color-bg-panel);color:var(--color-text)}.screen-hints[hidden]{display:none}.screen-hints__title{margin:0;font-size:1em;font-weight:800;color:var(--color-warning)}.screen-hints__list,.student-hints__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-2)}.hint-item{padding:var(--sp-2) var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg)}.hint-item.is-newest{border-color:var(--color-warning);box-shadow:0 0 0 2px var(--color-warning) inset}.hint-item__nr{display:block;font-weight:700;color:var(--color-text-soft);margin-bottom:2px}.hint-item__body>:last-child{margin-bottom:0}.hint-item__body p{margin:0 0 .4em}.hint-item__code{margin:0;padding:var(--sp-2);font-family:var(--font-mono);line-height:1.35;white-space:pre-wrap;overflow-wrap:anywhere;background:var(--color-bg-deep);border-radius:var(--radius-small);color:var(--color-text)}.screen-example{display:flex;flex-direction:column;gap:var(--sp-3);min-height:0}.screen-example__head{flex:none;display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--sp-2) var(--sp-4)}.screen-example__title{margin:0;font-size:var(--wall-header);font-weight:800;color:var(--color-text)}.screen-example__input{font-family:var(--font-mono);font-size:var(--wall-text);color:var(--color-text-soft)}.screen-example__input[hidden]{display:none}.screen-example__term{flex:1 1 auto;min-height:0;margin:0;overflow:auto;padding:var(--sp-3) var(--sp-4);font-family:var(--font-mono);font-size:var(--wall-base);line-height:1.4;white-space:pre-wrap;overflow-wrap:anywhere;background:var(--color-terminal-bg);color:var(--color-terminal-text);border-radius:var(--radius)}.screen-example__in{color:var(--color-terminal-input);font-weight:700}.screen-example__cursor{color:var(--color-terminal-text);animation:blink-cursor 1s steps(1) infinite}@keyframes blink-cursor{50%{opacity:0}}@media(prefers-reduced-motion:reduce){.screen-example__cursor{animation:none}}.screen-prompt .md-diagram,.screen-hints .md-diagram{max-height:none;overflow:visible;border:none;padding:0;width:var(--diagram-width, auto);max-width:100%;margin-inline:auto}.screen-prompt .md-diagram svg,.screen-hints .md-diagram svg{display:block;width:100%;max-width:100%!important;height:auto}.wall-parts{flex-wrap:wrap;align-items:center}.wall-parts__list{display:flex;flex-wrap:wrap;gap:var(--sp-1)}.wall-parts__btn{font:inherit;font-size:var(--fs-small);padding:2px 12px;min-height:30px;border:1px solid var(--color-border);border-radius:999px;background:var(--color-bg);color:var(--color-text);cursor:pointer}.wall-parts__btn[aria-pressed=true]{border-color:var(--color-accent);background:var(--color-accent);color:var(--color-accent-text)}.wall-parts__btn:focus-visible{outline:none;box-shadow:var(--ring)}.wall-ctl{flex-wrap:wrap}.wall-ctl__run{display:inline-flex;align-items:center;gap:var(--sp-1);flex-wrap:wrap}.wall-ctl__run[hidden]{display:none}.runnow__notes{margin-left:var(--sp-1)}.run-group__note.is-warn{color:var(--color-warning)}.notesview__body{margin-top:var(--sp-2);padding:var(--sp-3);overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.5;color:var(--color-text);background:var(--color-bg-panel);border:1px solid var(--color-border);border-radius:var(--radius-small)}.ex-hints>summary{cursor:pointer;padding:var(--sp-2) 0}.ex-notes-text{width:100%;box-sizing:border-box}.ex-hints__list{list-style:none;margin:var(--sp-2) 0;padding:0;display:flex;flex-direction:column;gap:var(--sp-2)}.ex-hint{padding:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg-panel)}.ex-hint__bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1) var(--sp-2);margin-bottom:var(--sp-1)}.ex-hint__nr{font-weight:700;margin-right:auto}.ex-hint-text{width:100%;box-sizing:border-box}.ex-preview-msg.is-ok{color:var(--color-ok)}.ex-compile-row+.ex-compile-row{margin-top:var(--sp-1)}.student-hints{margin-top:var(--sp-2);border:1px solid var(--color-warning);border-radius:var(--radius-small);padding:var(--sp-2) var(--sp-3);background:var(--color-bg-panel)}.student-hints[hidden]{display:none}.student-hints>summary{cursor:pointer;font-size:var(--fs-small);font-weight:700;color:var(--color-warning)}.student-hints__list{margin-top:var(--sp-2);font-size:var(--fs-small)}.student-hints__self{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1) var(--sp-2);margin-top:var(--sp-2)}.student-hints__self:not(:has(>:not([hidden]))){display:none}.student-hints__note{margin:0;flex:1 1 14em;font-size:var(--fs-small);color:var(--color-text-soft)}.student-hints__note[hidden]{display:none}.student-hints.is-flash{animation:hint-flash 1.6s ease-out 1}@keyframes hint-flash{0%{box-shadow:0 0 0 4px var(--color-warning)}to{box-shadow:0 0 0 0 transparent}}@media(prefers-reduced-motion:reduce){.student-hints.is-flash{animation:none}}.swap-tabs{display:flex;gap:var(--sp-1);flex-wrap:wrap;min-width:0;flex:1 1 auto}.swap-tab{font:inherit;font-size:var(--fs-small);font-weight:600;padding:3px var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg);color:var(--color-text-soft);cursor:pointer;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.swap-tab:hover{color:var(--color-text)}.swap-tab.is-active{background:var(--color-accent-soft);border-color:var(--color-accent);color:var(--color-text)}.swap-tab:focus-visible{outline:none;box-shadow:var(--ring)}.panel--prompt[data-swap=plan] #prompt,.panel--prompt[data-swap=plan] #expectedPanel,.panel--prompt[data-swap-strict] #expectedPanel,.panel--prompt[data-swap-strict] #promptOpen{display:none}.swap-plan{padding:var(--sp-2) var(--sp-3);overflow:auto}.swap-plan__body{display:flex;flex-direction:column;gap:var(--sp-2)}.swap-plan__how{margin:0;font-size:var(--fs-small);color:var(--color-text-soft)}.swap-plan__note{margin:0;padding:var(--sp-2);font-size:var(--fs-small);background:var(--color-info-background);color:var(--color-text);border-radius:var(--radius-small)}.swap-plan__note--done{background:var(--color-accent-soft);color:var(--color-ok);font-weight:600}.swap-plan__left{margin:0;font-size:var(--fs-small);color:var(--color-text-soft)}.swap-plan__h{font-weight:600;font-size:var(--fs-small);margin-bottom:var(--sp-1)}.swap-plan__pitfalls{border-top:1px solid var(--color-border);padding-top:var(--sp-2);font-size:var(--fs-small)}.swap-lb__flow{margin-top:var(--sp-2)}.swap-lb__flow .dz-flow--ro{max-height:50vh}.swap-plan__pitfalls .planview__h,.swap-lb__flow .planview__h{display:none}.swap-plan__flow{align-self:flex-start}.swap-items{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-1)}.swap-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:var(--sp-2);align-items:start;padding:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg-panel)}.swap-item--nested{margin-left:var(--sp-4)}.swap-item.is-ticked{background:var(--color-accent-soft);border-color:var(--color-accent)}.swap-item.is-ticked .swap-item__text,.swap-item.is-ticked .swap-item__name{color:var(--color-text-soft)}.swap-item--empty{display:block;color:var(--color-text-soft);font-style:italic}.swap-item__tick{display:inline-flex;align-items:center;gap:var(--sp-1);cursor:pointer}.swap-item__tick input{width:1.1rem;height:1.1rem;margin:0;accent-color:var(--color-accent)}.swap-item__n{font-weight:700;font-variant-numeric:tabular-nums;min-width:1.4em;text-align:right;color:var(--color-text-soft)}.swap-item__body{min-width:0;overflow-wrap:anywhere}.swap-item__name{font-weight:600;font-family:var(--font-mono)}.swap-item__kind{display:inline-block;font-size:.75rem;padding:0 5px;border-radius:999px;background:var(--color-bg-deep);color:var(--color-text-soft)}.swap-item__kind--else{background:var(--color-info-background);color:var(--color-info)}.swap-item__tools{display:flex;gap:2px;align-items:center}.swap-item__btn{font:inherit;color:var(--color-text);min-width:32px;min-height:32px;padding:0 4px;border:1px solid transparent;border-radius:var(--radius-small);background:none;cursor:pointer}.swap-item__btn:hover{border-color:var(--color-border);background:var(--color-bg)}.swap-item__btn:focus-visible{outline:none;box-shadow:var(--ring)}.swap-item__pins{font-size:var(--fs-small);color:var(--color-warning);font-weight:600;white-space:nowrap}.swap-item__qa{margin-top:var(--sp-1);font-size:var(--fs-small)}.swap-item__q{color:var(--color-text)}.swap-item__a{color:var(--color-ok);padding-left:var(--sp-3);white-space:pre-wrap}.swap-item__a.is-open{color:var(--color-text-soft);font-style:italic}.swap-item__askform{margin-top:var(--sp-2)}.swap-item__askinput,.swap-inbox__input{width:100%;font:inherit;border:1px solid var(--color-border);border-radius:var(--radius-small);padding:var(--sp-2);resize:vertical;background:var(--color-field);color:var(--color-text)}.swap-item__askbtns,.swap-inbox__btns{display:flex;gap:var(--sp-2);justify-content:flex-end;margin-top:var(--sp-1)}.swap-inbox{display:flex;flex-direction:column;gap:var(--sp-2);margin-bottom:var(--sp-2)}.swap-inbox__q{border:1px solid var(--color-border-overlay);border-left:4px solid var(--color-info);border-radius:var(--radius-small);padding:var(--sp-2);background:var(--color-info-background)}.swap-inbox__title{font-weight:600;font-size:var(--fs-small)}.swap-inbox__text{margin:var(--sp-1) 0 var(--sp-2);white-space:pre-wrap;overflow-wrap:anywhere}.swap-intro{border-left:3px solid var(--color-accent);padding-left:var(--sp-2)}.swap-closed{margin:0 0 var(--sp-2);padding:var(--sp-2);border-radius:var(--radius-small);background:var(--color-info-background);color:var(--color-info);font-weight:600}.swap-wait__edit{margin-top:var(--sp-3);border-top:1px solid var(--color-border);padding-top:var(--sp-2)}.swap-wait__edit>summary{cursor:pointer;font-weight:600;color:var(--color-accent)}.swap-wait__saved{margin:var(--sp-2) 0 0;color:var(--color-ok);font-weight:600}.overlay--swap .swap-lb{max-width:1100px;width:96vw;max-height:92vh;overflow:auto;gap:var(--sp-2)}.overlay--swap .swap-lb>*{flex:0 0 auto}.swap-lb__title{margin:0}.swap-lb__grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,3fr);gap:var(--sp-3);align-items:start}.swap-lb__h{margin:0 0 var(--sp-2);font-size:1rem}.swap-lb__pick{display:flex;gap:var(--sp-1);flex-wrap:wrap;margin-bottom:var(--sp-2)}.swap-lb__srchead{display:flex;gap:var(--sp-2);justify-content:space-between;font-size:var(--fs-small);color:var(--color-text-soft);margin-bottom:var(--sp-1)}.swap-lb__ro{font-style:italic}.swap-lb__theirtests{font-weight:600}.swap-lb__verdictOnMine{margin:0 0 var(--sp-2);padding:var(--sp-2);border-radius:var(--radius-small);background:var(--color-accent-soft)}.swap-lb__src .codelines{max-height:38vh}.swap-lb__actions{display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap;margin:var(--sp-2) 0}.swap-lb__term{height:180px;border-radius:var(--radius-small);overflow:hidden;background:var(--color-terminal-bg)}.swap-lb__term:empty{display:none}.swap-lb__testsum{margin:var(--sp-2) 0;font-weight:600}.swap-lb__testsum.is-ok{color:var(--color-ok)}.swap-lb__testsum.is-off{color:var(--color-error)}.swap-lb__verdict{border-top:1px solid var(--color-border);padding-top:var(--sp-2)}.swap-lb__verdictset{border:0;padding:0;margin:0 0 var(--sp-2);display:flex;gap:var(--sp-3);flex-wrap:wrap;align-items:center}.swap-lb__verdictset legend{font-weight:600;margin-bottom:var(--sp-1)}.swap-lb__radio{display:inline-flex;gap:var(--sp-1);align-items:center;cursor:pointer;min-height:32px}.swap-lb__notelabel{display:block;font-size:var(--fs-small);font-weight:600;margin-bottom:2px}.swap-lb__thanks{margin:var(--sp-2) 0 0;color:var(--color-ok);font-weight:600}.swap-items--ro .swap-item{grid-template-columns:auto minmax(0,1fr) auto}@media(max-width:900px){.swap-lb__grid{grid-template-columns:minmax(0,1fr)}.overlay--swap .swap-lb{width:100%;max-height:none}}.swap-panel__tally{margin:var(--sp-2) 0 0;font-weight:600;color:var(--color-ok)}.swap-panel__tally:empty{display:none}.swap-panel__rows{overflow-x:auto;margin-top:var(--sp-2)}.swap-panel__empty{color:var(--color-text-soft);margin:0}.swap-rows{width:100%;border-collapse:collapse;font-size:var(--fs-small)}.swap-rows th,.swap-rows td{text-align:left;padding:4px var(--sp-2);border-bottom:1px solid var(--color-border);vertical-align:top}.swap-rows thead th{color:var(--color-text-soft);font-weight:600;white-space:nowrap}.swap-rows tbody th{font-weight:600;white-space:nowrap}.swap-rows__note{color:var(--color-text-soft);font-style:italic;max-width:22em;overflow-wrap:anywhere}.swap-rows__noplan{font-weight:400;color:var(--color-warning)}.swap-rows .btn.is-on{background:var(--color-accent-soft);border-color:var(--color-accent)}.swap-stage{display:inline-block;white-space:nowrap;font-size:.78rem;font-weight:600;padding:1px 6px;border-radius:999px;background:var(--color-bg-deep);color:var(--color-text-soft)}.swap-stage--waiting{background:var(--color-info-background);color:var(--color-info)}.swap-stage--building{background:var(--color-bg-overlay);color:var(--color-warning);box-shadow:inset 0 0 0 1px var(--color-border-overlay)}.swap-stage--built,.swap-stage--lookback{background:var(--color-accent-soft);color:var(--color-ok)}.card__swap{margin-left:2px}.swap-qs__title{margin:var(--sp-3) 0 var(--sp-1);font-size:.95rem}.swap-qs{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:var(--fs-small)}.swap-qs__q{display:grid;grid-template-columns:minmax(10em,auto) minmax(0,1fr);gap:2px var(--sp-2);padding:4px var(--sp-2);border-left:3px solid var(--color-accent);background:var(--color-bg);border-radius:3px}.swap-qs__q.is-open{border-left-color:var(--color-info)}.swap-qs__who{color:var(--color-text-soft);font-weight:600}.swap-qs__text{overflow-wrap:anywhere}.swap-qs__answer{grid-column:2;color:var(--color-ok);overflow-wrap:anywhere}.swap-qs__q.is-open .swap-qs__answer{color:var(--color-text-soft);font-style:italic}@media(max-width:700px){.swap-qs__q{grid-template-columns:minmax(0,1fr)}.swap-qs__answer{grid-column:1}}.screen-swapboard{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:center;gap:var(--sp-2) var(--sp-5);margin-top:var(--sp-3);padding:var(--sp-2) var(--sp-4);border-radius:var(--radius);background:var(--color-bg-explanation);border:1px solid var(--color-border-explanation);color:var(--color-text)}.screen-swapboard__count{font-size:var(--wall-header);font-weight:700;font-variant-numeric:tabular-nums}.screen-swapboard__literal{font-size:var(--wall-text);color:var(--color-text-soft);font-variant-numeric:tabular-nums}.screen-swapboard__race{flex-basis:100%;list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;justify-content:center;gap:var(--sp-2) var(--sp-3);font-size:var(--wall-base)}.screen-swapboard__g{display:inline-flex;align-items:center;gap:var(--sp-2);padding:2px var(--sp-2);border-radius:var(--radius);background:var(--color-bg-panel)}.screen-swapboard__g.is-done{box-shadow:inset 0 0 0 2px var(--color-ok)}.screen-swapboard__badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.8em;height:1.8em;border-radius:999px;font-weight:700;background:var(--team);color:var(--team-fg)}.screen-swapboard__time{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.screen-swapboard__q{color:var(--color-text-soft)}.screen-swap{width:100%;height:100%;min-height:0;display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-4);box-sizing:border-box}.screen-swap__cols{display:flex;gap:var(--sp-4);flex:1;min-height:0;align-items:stretch}.screen-swap__cols .screen-swap__col:first-child{flex:2 1 0}.screen-swap__cols .screen-swap__col:last-child{flex:3 1 0}.screen-swap .screen-review__code{flex:1;min-height:0;margin:0;border-radius:0;border:0}.live-editor{display:flex;flex-direction:column;min-height:0;min-width:0;flex:1;position:relative}.live-editor__cm{flex:1;min-height:0;border:1px solid var(--color-border);border-radius:0 0 var(--radius-small) var(--radius-small);background:var(--color-bg-panel);overflow:hidden}.live-tabs{display:flex;flex-wrap:wrap;gap:var(--sp-1);align-items:flex-end;padding-top:var(--sp-1)}.live-tab{display:inline-flex;align-items:center;gap:var(--sp-1);min-height:36px;padding:var(--sp-1) var(--sp-3);border:1px solid var(--color-border);border-bottom:none;border-radius:var(--radius-small) var(--radius-small) 0 0;background:var(--color-bg-deep);color:var(--color-text);font-family:var(--font-mono);font-size:var(--fs-small);cursor:pointer}.live-tab.is-active{background:var(--color-bg-panel);font-weight:600}.live-tab.is-teacher:not(.is-active){box-shadow:inset 0 -3px 0 var(--live-cursor)}.live-tab.has-error{color:var(--color-error)}.live-tab.has-error .live-tab__name:after{content:" ●"}.live-tab__del{padding:0 var(--sp-1);color:var(--color-text-soft);border-radius:var(--radius-small)}.live-tab__del:hover{color:var(--color-error);background:var(--color-error-background)}.live-tab--add{font-weight:700}.live-tab--add:disabled{opacity:.5;cursor:not-allowed}.live-tab__input{font-family:var(--font-mono);font-size:var(--fs-small);min-height:36px;width:12ch;padding:var(--sp-1) var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-field);color:var(--color-text)}.live-tab__input.is-invalid{border-color:var(--color-error);outline:2px solid var(--color-error)}.live-editor--wall .live-tab{cursor:default}.live-editor--wall .cm-content,.live-editor--wall .cm-gutters{line-height:1.3}.live-follow{position:absolute;right:var(--sp-3);bottom:var(--sp-3);z-index:5;box-shadow:var(--shadow)}.live-editor.is-browsing .live-editor__cm{border-color:var(--live-cursor)}.live-card.is-browsing{box-shadow:0 0 0 2px var(--live-cursor);border-radius:var(--radius-small)}.live-card__head .live-follow{position:static;margin-left:auto;box-shadow:none}.live-pane--livecode{padding:0 var(--sp-4) var(--sp-3);gap:var(--sp-2);min-height:0;position:relative}.livecode__head{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-3);padding-left:0;padding-right:0}.livecode__head .panel__title{flex:1 1 14rem;min-width:0;overflow-wrap:anywhere}.livecode__views{display:inline-flex;gap:var(--sp-1)}.livecode__release.is-on{background:var(--color-accent);color:var(--color-accent-text);border-color:var(--color-accent)}.livecode__bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}.livecode__status{font-size:var(--fs-small);color:var(--color-text-soft)}.livecode__status.is-error{color:var(--color-error)}.livecode__flags{position:relative}.livecode__flags summary{cursor:pointer;min-height:36px;display:inline-flex;align-items:center;padding:0 var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg-panel)}.livecode__flagsbox{position:absolute;z-index:20;top:calc(100% + var(--sp-1));left:0;display:grid;gap:var(--sp-2);padding:var(--sp-3);min-width:280px;max-width:min(90vw,480px);background:var(--color-bg-overlay);border:1px solid var(--color-border-overlay);border-radius:var(--radius);box-shadow:var(--shadow)}.livecode__flagsbox label{display:flex;align-items:center;gap:var(--sp-2)}.livecode__cmd{display:block;padding:var(--sp-2);background:var(--color-terminal-bg);color:var(--color-terminal-text);border-radius:var(--radius-small);font-size:var(--fs-small);overflow-wrap:anywhere}.livecode__zoom{display:inline-flex;align-items:center;gap:var(--sp-1)}.livecode__zoomlevel{min-width:5ch;text-align:center;font-size:var(--fs-small);color:var(--color-text-soft)}.livecode__code{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-3);height:max(420px,calc(100dvh - 250px))}.livecode__code[hidden]{display:none}.livecode__main{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(260px,3fr) minmax(160px,2fr);gap:var(--sp-2);min-height:0}.livecode__editor{display:flex;min-height:0;min-width:0}.livecode__term{min-height:0;background:var(--color-terminal-bg);border-radius:var(--radius-small);overflow:hidden}.livecode__notes{display:flex;flex-direction:column;gap:var(--sp-1);min-height:0}.livecode__noteslabel{font-size:var(--fs-small);color:var(--color-text-soft)}.livecode__noteshint{margin:var(--sp-1) 0 0;font-size:var(--fs-small);color:var(--color-text-soft)}.livecode__notesrow{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);margin-top:var(--sp-1)}.livecode__notesstatus{font-size:var(--fs-small);color:var(--color-text-soft)}.livecode__notesarea{flex:1;min-height:160px;resize:vertical;padding:var(--sp-2);font-family:var(--font-mono);font-size:var(--fs-small);background:var(--color-field);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-small)}.livecode__work{position:relative;isolation:isolate}body:has(#tLiveClassView:not([hidden])) #detailGiveTimeBtn{display:none}.livecode__class{flex:1;min-height:0}.livecode__class[hidden]{display:none}@media(max-width:900px){.livecode__code{grid-template-columns:1fr;grid-template-rows:max(420px,calc(100dvh - 250px)) auto;height:auto}.livecode__notesarea{min-height:120px}}.livetests{position:absolute;z-index:30;inset:var(--sp-5) var(--sp-4) auto;max-height:calc(100% - 2 * var(--sp-5));overflow:auto;padding:var(--sp-4);background:var(--color-bg-overlay);border:2px solid var(--color-border-overlay);border-radius:var(--radius);box-shadow:var(--shadow);color:var(--color-text)}.livetests[hidden]{display:none}.livetests.is-all-green{border-color:var(--color-ok)}.livetests__head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-3)}.livetests__title{margin:0;font-size:var(--fs-large)}.livetests__cases{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-2)}.livetests__case{padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-small);background:var(--color-bg-panel);border-left:4px solid var(--color-ok)}.livetests__case.is-fail{border-left-color:var(--color-error)}.livetests__row{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--sp-2)}.livetests__mark{font-weight:700}.livetests__case.is-pass .livetests__mark{color:var(--color-ok)}.livetests__case.is-fail .livetests__mark{color:var(--color-error)}.livetests__n{font-weight:600}.livetests__verdict{color:var(--color-text-soft)}.livetests__in{font-family:var(--font-mono);overflow-wrap:anywhere}.livetests__cmp{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--sp-2);margin-top:var(--sp-2)}.livetests__label{font-size:var(--fs-small);color:var(--color-text-soft)}.livetests__out{margin:0;padding:var(--sp-2);font-family:var(--font-mono);font-size:var(--fs-small);background:var(--color-bg-deep);border-radius:var(--radius-small);white-space:pre-wrap;overflow-wrap:anywhere}.actpanel--wide{width:min(1100px,100%)}.livecode-form__field{display:flex;flex-direction:column;gap:var(--sp-1)}.livecode-form__editor{display:flex;height:280px}.livecode-form__flags{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-4);border:1px solid var(--color-border);border-radius:var(--radius-small);padding:var(--sp-2) var(--sp-3)}.livecode-form__flags label{display:inline-flex;align-items:center;gap:var(--sp-1)}.livecode-form__tests summary{cursor:pointer;font-weight:600;min-height:36px;display:flex;align-items:center}.livecode-form__actions{display:flex;gap:var(--sp-2);flex-wrap:wrap}.actpanel__error{margin:0;padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-small);background:var(--color-error-background);color:var(--color-error)}.actpanel__error[hidden]{display:none}.live-card:not([hidden]){display:flex;flex-direction:column;gap:var(--sp-2);width:100%;height:100%;min-height:0;position:relative}.live-card__head{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2) var(--sp-3)}.live-card__label{margin:0;font-size:var(--fs-large);overflow-wrap:anywhere}.live-card__released{padding:var(--sp-1) var(--sp-3);border-radius:999px;background:var(--color-accent-soft);color:var(--color-ok);font-weight:600}.live-card__released[hidden]{display:none}.live-card__caption{margin:0;color:var(--color-text-soft);overflow-wrap:anywhere}.live-card__caption[hidden]{display:none}.live-card__body{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) var(--live-term-h, 96px);gap:var(--sp-2);flex:1;min-height:0;position:relative;transition:grid-template-rows .2s ease}@media(prefers-reduced-motion:reduce){.live-card__body{transition:none}}.live-card__editor{display:flex;min-height:0;min-width:0}.live-card__editor[hidden],.live-card__debug[hidden]{display:none}.live-card__term{min-height:0;background:var(--color-terminal-bg);border-radius:var(--radius-small);overflow:hidden}.live-card__debug{min-height:0;overflow:auto}.screen-present.is-live{align-items:stretch;height:100%}.screen-present.is-live>.screen-present__pos{align-self:flex-end}.screen-live .live-card__label{font-size:var(--wall-header)}.screen-live .live-tab{font-size:var(--wall-base)}.screen-live .live-card__caption,.screen-live .live-card__released,.screen-live .livetests{font-size:var(--wall-text)}.screen-live .livetests__title{font-size:var(--wall-header)}.screen-live .livetests__label,.screen-live .livetests__out{font-size:var(--wall-base)}.present-view.is-live .present-view__stage{align-items:stretch;justify-content:stretch;padding-bottom:var(--sp-5)}@media(max-width:899px){.present-view.is-live .present-view__stage{padding-bottom:0}.present-view.is-live .live-card:not([hidden]){height:auto;min-height:75vh}.live-card__body{grid-template-rows:minmax(260px,1fr) minmax(160px,auto)}}body.is-live-release #doneHint,body.is-live-release #stuckBtn,body.is-live-release #progressTrail,body.is-live-release #trailWhy,body.is-live-release #exType{display:none}.live-release-note{margin:0 0 var(--sp-2);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-small);background:var(--color-accent-soft);color:var(--color-text);font-weight:600}.live-release-note[hidden]{display:none}.poll--hidden .poll__bar,.poll--hidden .poll__opt-count{visibility:hidden}.tpoll__output{margin:var(--sp-2) 0 0;padding:var(--sp-2);background:var(--color-terminal-bg);color:var(--color-terminal-text);border-radius:var(--radius-small);white-space:pre-wrap}.tpoll__output[hidden],.tpoll__calibration[hidden]{display:none}.tpoll__calibration{margin:var(--sp-2) 0 0;color:var(--color-text-soft)}.poll__bar-first{position:absolute;inset:0 auto 0 0;width:0;background:color-mix(in srgb,var(--color-accent) 40%,transparent)}.poll__opt.has-first .poll__bar{height:20px}.poll--screen .poll__opt.has-first .poll__bar{height:28px}.poll__opt.has-first .poll__bar-first{bottom:50%}.poll__opt.has-first .poll__bar-fill{top:50%}.poll__opt.is-correct .poll__bar-first{background:color-mix(in srgb,var(--color-ok) 40%,transparent)}.tpoll__opt.has-first .tpoll__bar{position:relative;height:24px}.tpoll__opt.has-first .tpoll__fill{position:absolute;inset:50% auto 0 0;height:auto}.tpoll__fill-first{position:absolute;inset:0 auto 50% 0;background:color-mix(in srgb,var(--color-accent) 40%,transparent)}.tpoll__opt.is-correct .tpoll__fill-first{background:color-mix(in srgb,var(--color-ok) 40%,transparent)}.poll__phase{display:flex;flex-direction:column;gap:var(--sp-1);align-items:center;padding:var(--sp-3) var(--sp-4);border:2px solid var(--color-accent);border-radius:var(--radius);background:var(--color-accent-soft);max-width:900px;width:100%}.poll__phase[hidden],.poll__shift[hidden],.tpoll__advice[hidden],.tpoll__legend[hidden],.tpoll__shift[hidden]{display:none}.poll__phase-title{margin:0;font-weight:800;font-size:var(--wall-header)}.poll__phase-sub{margin:0;font-size:var(--wall-text)}.poll__shift{margin:0;font-weight:700;font-variant-numeric:tabular-nums}.poll--screen .poll__shift{font-size:var(--wall-text)}.poll__tag{margin-left:var(--sp-2);padding:0 var(--sp-2);border-radius:999px;border:1px solid var(--color-border);color:var(--color-text-soft);font-size:var(--fs-small);font-weight:600;white-space:nowrap}.poll__opt.is-first:not(.is-mine){border-style:dashed}.activity-bar__group{display:inline-flex;align-items:center;gap:var(--sp-2)}.activity-bar__group[hidden]{display:none}.tpoll__advice{margin:var(--sp-2) 0 0;font-weight:600}.tpoll__legend{margin:var(--sp-1) 0 0;color:var(--color-text-soft);font-size:var(--fs-small)}.tpoll__shift{margin:var(--sp-2) 0 0;font-weight:600;font-variant-numeric:tabular-nums}.twall__bar{display:flex;flex-wrap:wrap;gap:var(--sp-2);padding:0 var(--sp-4)}.twall__bar .is-on{background:var(--color-accent);color:var(--color-accent-text);border-color:var(--color-accent)}.twall__hint{margin:var(--sp-2) var(--sp-4) 0;font-size:var(--fs-small);color:var(--color-text-soft)}.twall__chip{cursor:pointer;border:1px solid transparent;font:inherit}.twall__chip:hover,.twall__chip:focus-visible{border-color:var(--color-error)}.twall__chip.is-hidden{opacity:.7;text-decoration:line-through}.twall__chip.is-hidden:hover,.twall__chip.is-hidden:focus-visible{border-color:var(--color-ok);text-decoration:none}.twall__hidden[hidden],.twall__authors[hidden],.tbug__results[hidden],.tbug__explanation[hidden]{display:none}.twall__hidden,.twall__authors,.tbug__results{margin:var(--sp-3) var(--sp-4) 0}.twall__subtitle{margin:0 0 var(--sp-2);font-size:var(--fs-small);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-soft)}.twall__authorlist{margin:0;padding-left:var(--sp-4);display:grid;gap:var(--sp-1)}.twall__authorlist li{overflow-wrap:anywhere}.twall__authorlist li.is-hidden span:not(.twall__tag){text-decoration:line-through}.twall__tag{font-size:var(--fs-small);color:var(--color-error)}.twall__empty{color:var(--color-text-soft);list-style:none}.wordwall__closed{margin:var(--sp-2) 0 0;font-weight:700;color:var(--color-text-soft)}.wordwall--screen .wordwall__closed{font-size:var(--wall-text)}.wordwall__closed[hidden]{display:none}.tbug__explanation{margin:var(--sp-2) var(--sp-4) 0;padding:var(--sp-2) var(--sp-3);background:var(--color-accent-soft);color:var(--color-text);border-radius:var(--radius-small)}.tbug__list{margin:0;padding-left:var(--sp-5);display:grid;gap:var(--sp-1)}.tbug__list .is-found{color:var(--color-ok)}.tbug__list .is-stuck{color:var(--color-error)}.tbug__list .is-busy{color:var(--color-text-soft)}.bug__lines.is-locked .bug__line{cursor:not-allowed}.bug__explanation[hidden]{display:none}.present-transport__status{font-size:var(--fs-small);color:var(--color-text-soft)}.present-transport__status[hidden]{display:none}.cloze-gap.is-answer{border-color:var(--color-ok);background:var(--color-accent-soft);color:var(--color-text)}.screen-cloze.is-answer .cloze-blank.is-filled{background:var(--color-accent-soft);color:var(--color-ok);font-weight:700}.livecode__part{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2)}.livecode__status.is-warn{color:var(--color-warning)}.m-live{border-radius:999px;padding:1px 8px;background:var(--color-accent-soft);color:var(--color-text);font-weight:600}.live-offer{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2) var(--sp-3);margin:0;padding:var(--sp-2) var(--sp-3);border-bottom:2px solid var(--color-accent);background:var(--color-accent-soft);color:var(--color-text);font-size:var(--fs-small);line-height:1.4}.live-offer__text{flex:1 1 16rem;min-width:0;overflow-wrap:anywhere}.live-offer__actions{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.live-offer-view{margin:0 0 var(--sp-3);padding:var(--sp-2) var(--sp-3);border:1px solid var(--color-border);border-left:4px solid var(--color-accent);border-radius:var(--radius-small);background:var(--color-bg-deep)}.live-offer-view__head{display:flex;align-items:center;gap:var(--sp-2)}.live-offer-view__title{flex:1;min-width:0;margin:0;font-size:1em;overflow-wrap:anywhere}.live-offer-view__name{margin:var(--sp-2) 0 var(--sp-1);font-family:var(--font-mono);font-size:var(--fs-small);color:var(--color-text-soft)}.live-offer-view__code .codelines{max-height:none;margin-bottom:0}.overlay--lock.has-live-offer .shell--curtain{max-width:min(760px,94vw)}.live-offer-curtain{margin-top:var(--sp-3);padding:var(--sp-2) var(--sp-3);border-left:4px solid var(--color-accent);border-radius:var(--radius-small);background:var(--color-accent-soft);text-align:left}.live-offer-curtain__text{margin:0 0 var(--sp-2);overflow-wrap:anywhere}.live-offer-curtain__confirm{margin-top:var(--sp-2);padding-top:var(--sp-2);border-top:1px solid var(--color-border)}.live-offer-curtain__confirm p{margin:0 0 var(--sp-2)}.live-offer-curtain__code{margin-top:var(--sp-2);max-height:50vh;overflow:auto;text-align:left}.live-offer-curtain__code .codelines{max-height:none;margin-bottom:0}.gdbt{display:flex;flex-direction:column;min-height:0;height:100%;border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden;background:var(--color-terminal-bg)}.gdbt__src{flex:0 1 45%;min-height:6em;overflow:auto;background:var(--color-bg-panel);color:var(--color-text);font-family:var(--font-mono);font-size:var(--fs-small);border-bottom:1px solid var(--color-border);padding:var(--sp-1) 0}.gdbt__src[hidden]{display:none}.gdbt__line{display:flex;gap:var(--sp-1);white-space:pre;tab-size:4;line-height:1.45}.gdbt__line.is-current{background:var(--color-accent-soft);box-shadow:inset 4px 0 0 var(--color-accent)}.gdbt__line.is-current .gdbt__no{color:var(--color-text);font-weight:700}.gdbt__no{flex:0 0 3.2em;text-align:right;color:var(--color-text-soft);cursor:pointer;user-select:none}.gdbt__no:hover{color:var(--color-error);text-decoration:underline}.gdbt__mark{flex:0 0 1.8em;font-weight:700;color:var(--color-text)}.gdbt__line.has-bp .gdbt__mark{color:var(--color-error)}.gdbt__line.has-bp-off .gdbt__mark{color:var(--color-text-soft)}.gdbt__line.is-current .gdbt__mark{color:var(--color-text)}.gdbt__code{font:inherit;background:none;padding:0}.gdbt__out{flex:1 1 55%;min-height:8em;overflow:auto;padding:var(--sp-2);font-family:var(--font-mono);font-size:var(--fs-small);color:var(--color-terminal-text);white-space:pre-wrap;tab-size:8;overflow-wrap:anywhere}.gdbt:not(.is-tui) .gdbt__out{flex-basis:100%}.gdbt__row{line-height:1.4}.gdbt__row--echo{color:var(--color-terminal-input)}.gdbt__row--prog{font-style:italic}.gdbt__row--err{color:var(--color-terminal-text);font-weight:600}.gdbt__row--note{color:var(--color-terminal-input);border-left:3px solid var(--color-terminal-input);padding-left:var(--sp-2);margin:var(--sp-1) 0;font-family:var(--font-ui)}.gdbt__in{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-1) var(--sp-2);border-top:1px solid var(--color-border);background:var(--color-terminal-bg)}.gdbt__prompt{font-family:var(--font-mono);color:var(--color-terminal-input);font-size:var(--fs-small)}.gdbt__field{flex:1;min-width:0;font-family:var(--font-mono);font-size:var(--fs-small);color:var(--color-terminal-text);background:transparent;border:none;padding:var(--sp-1) 0}.gdbt__field:focus{outline:none}.gdbt__in:focus-within{box-shadow:inset 0 0 0 2px var(--color-terminal-input)}.present-view__gdbcard{display:flex;flex-direction:column;gap:var(--sp-2);min-width:0;width:100%}.present-view__gdbcard[hidden]{display:none}.present-view__gdbhost{min-width:0}.gdbm{display:flex;flex-direction:column;gap:var(--sp-3);min-width:0}.gdbm__head{display:flex;flex-direction:column;gap:var(--sp-1)}.gdbm__title{margin:0;font-size:var(--fs-large)}.gdbm__prompt:empty{display:none}.gdbm__body{display:grid;grid-template-columns:minmax(18rem,2fr) minmax(0,3fr);gap:var(--sp-3);align-items:stretch;min-height:26rem}.gdbm.is-waiting .gdbm__body{display:none}.gdbm__side{display:flex;flex-direction:column;gap:var(--sp-2);min-width:0}.gdbm__term{min-width:0;min-height:24rem;height:min(70vh,40rem)}.gdbm__list{display:flex;flex-wrap:wrap;gap:var(--sp-1);list-style:none;margin:0;padding:0}.gdbm__step{min-width:2.2em;height:2.2em;border-radius:50%;border:2px solid var(--color-border);background:var(--color-bg);color:var(--color-text);font-weight:700;cursor:pointer}.gdbm__step:disabled{cursor:default;color:var(--color-text-soft)}.gdbm__item[data-state=current] .gdbm__step{border-color:var(--color-accent)}.gdbm__item[data-state=done] .gdbm__step{background:var(--color-ok);border-color:var(--color-ok);color:var(--color-accent-text)}.gdbm__item[data-state=skipped] .gdbm__step{border-style:dashed}.gdbm__step[aria-current=step]{box-shadow:var(--ring)}.gdbm__card{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg-panel)}.gdbm__count{margin:0;font-size:var(--fs-small);color:var(--color-text-soft)}.gdbm__tools{margin:0;font-size:var(--fs-small);font-family:var(--font-mono)}.gdbm__predict,.gdbm__answer{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--sp-2)}.gdbm__predict .field,.gdbm__answer .field{flex:1 1 12rem;margin:0}.gdbm__field{width:100%;font-family:var(--font-mono)}.gdbm__choices{border:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-1);flex:1 1 100%}.gdbm__choice{display:flex;gap:var(--sp-2);align-items:baseline}.gdbm__feedback{margin:0;font-weight:600}.gdbm__feedback.is-good{color:var(--color-ok)}.gdbm__feedback.is-bad{color:var(--color-error)}.gdbm__predicted,.gdbm__hintline,.gdbm__reveal{margin:0;font-size:var(--fs-small);color:var(--color-text-soft)}.gdbm__hint{padding:var(--sp-2);border-left:3px solid var(--color-accent);background:var(--color-bg)}.gdbm__actions{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.gdbm__alldone{margin:0;font-weight:600}.gdbm__status{margin:0;font-size:var(--fs-small);color:var(--color-text-soft)}@media(max-width:900px){.gdbm__body{grid-template-columns:1fr}.gdbm__term{height:60vh}}.present-view__breakcard,.screen-breakcard{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-3);width:100%;min-height:40vh;text-align:center}.present-view__breakcard[hidden],.screen-breakcard[hidden]{display:none}.breakcard__title{margin:0;font-size:clamp(2.5rem,7vw,6rem);font-weight:700}.breakcard__until{margin:0;font-size:clamp(1.25rem,3.5vw,3rem);color:var(--color-text-soft)}.screen-gdbcard{display:flex;flex-direction:column;gap:var(--sp-3);width:100%;max-width:1600px}.screen-gdbcard[hidden]{display:none}.gdbw{display:flex;flex-direction:column;gap:var(--sp-3);font-size:var(--wall-base)}.gdbw__head{display:flex;flex-direction:column;gap:var(--sp-2)}.gdbw__title{margin:0;font-size:calc(var(--wall-text) * 1.3)}.gdbw__prompt{font-size:var(--wall-text)}.gdbw__prompt:empty{display:none}.gdbw__status{margin:0;font-size:var(--wall-text);color:var(--color-text-soft)}.gdbw__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-2)}.gdbw__item{display:grid;grid-template-columns:minmax(0,3fr) minmax(8rem,2fr) auto;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius);background:var(--color-bg-panel)}.gdbw__item.is-revealed{box-shadow:inset 0 0 0 3px var(--color-accent)}.gdbw__text{display:flex;gap:var(--sp-2);align-items:baseline;min-width:0;font-size:var(--wall-text)}.gdbw__no{font-weight:700}.gdbw__q p{margin:0}.gdbw__bar{height:1.1em;border-radius:var(--radius-small);background:var(--color-bg);border:1px solid var(--color-border);overflow:hidden}.gdbw__fill{display:block;height:100%;background:var(--color-ok)}.gdbw__n{font-size:var(--wall-text);white-space:nowrap}.gdbw__solution{display:flex;flex-direction:column;gap:var(--sp-2)}.gdbw__solution[hidden]{display:none}.gdbw__soltitle{margin:0;font-size:var(--wall-text)}.gdbw__term{height:56vh}.gdbw__term .gdbt{flex-direction:row}.gdbw__term .gdbt__src{flex:1 1 50%;min-height:0;border-bottom:none;border-right:1px solid var(--color-border)}.gdbw__term .gdbt__out{flex:1 1 50%;min-height:0}.gdbw__term .gdbt__src,.gdbw__term .gdbt__out{font-size:var(--wall-base)}.gdbw__item[hidden],.gdbw__status[hidden]{display:none}.gdbw__answer{margin:0;font-size:var(--wall-text);font-weight:700}.gdbteach{display:flex;flex-direction:column;gap:var(--sp-2)}.gdbteach[hidden]{display:none}.gdbteach__title,.gdbteach__subtitle{margin:0}.gdbteach__missions{display:flex;flex-direction:column;gap:var(--sp-2)}.gdbteach__mission{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--sp-1) var(--sp-3);align-items:center;padding:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius)}.gdbteach__q{grid-column:1}.gdbteach__facts{grid-column:1;display:flex;flex-wrap:wrap;gap:var(--sp-1) var(--sp-3);font-size:var(--fs-small);color:var(--color-text-soft)}.gdbteach__fact.is-answer{color:var(--color-text);font-family:var(--font-mono)}.gdbteach__fact.is-error{color:var(--color-error)}.gdbteach__fact.is-warn,.gdbteach__table .is-warn{color:var(--color-warning);font-weight:600}.gdbteach__mission>.btn{grid-column:2;grid-row:1 / span 2}.gdbteach__table{width:100%;border-collapse:collapse;font-size:var(--fs-small)}.gdbteach__table th,.gdbteach__table td{text-align:left;padding:var(--sp-1) var(--sp-2);border-bottom:1px solid var(--color-border)}.gdbteach__table tr.is-offline{color:var(--color-text-soft)}.gdb-form__missions{display:flex;flex-direction:column;gap:var(--sp-3)}.gdb-form__mission{position:relative;border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-2)}.gdb-form__mission legend{font-weight:700;padding:0 var(--sp-1)}.gdb-form__bar{position:absolute;top:var(--sp-1);right:var(--sp-2);display:flex;gap:var(--sp-1)}.gdb-form__ask{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.gdb-form__ask .field{flex:1 1 10rem;margin:0}.gdb-form__texts{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2)}.gdb-form__texts .field{margin:0}.gdb-form__use{display:flex;flex-wrap:wrap;gap:var(--sp-1) var(--sp-3);align-items:center;font-size:var(--fs-small)}.gdb-form__tool{font-family:var(--font-mono)}.gdb-form__answer{margin:0;font-family:var(--font-mono)}.gdb-form__answer.is-error{color:var(--color-error);font-family:var(--font-ui)}.gdb-form__add{display:flex;align-items:flex-end;gap:var(--sp-2);flex-wrap:wrap}.gdb-form__try{min-height:30rem}@media(max-width:900px){.gdb-form__texts{grid-template-columns:1fr}}.gdbhome{max-width:1400px;margin:0 auto;padding:var(--sp-3) var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-2)}.gdbhome__bar{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap}.gdbhome__title{margin:0;font-size:var(--fs-large)}.asan{display:flex;flex-direction:column;gap:var(--sp-2);min-width:0}.asan__panes{display:grid;grid-template-columns:1fr;gap:var(--sp-3);min-width:0}.asan--side .asan__panes{grid-template-columns:repeat(auto-fit,minmax(26em,1fr))}.asan__pane{min-width:0;display:flex;flex-direction:column;gap:var(--sp-1)}.asan__pane[hidden]{display:none}.asan__panehead{margin:0;font-size:var(--fs-small);color:var(--color-text-soft);font-weight:600;text-transform:none}.asan__raw{margin:0;padding:var(--sp-2);max-height:32em;overflow:auto;font-family:var(--font-mono);font-size:var(--fs-small);background:var(--color-terminal-bg);color:var(--color-terminal-text);border-radius:var(--radius-small);white-space:pre}.asan__ann{font-family:var(--font-mono);font-size:var(--fs-small);max-height:32em;overflow:auto;border:1px solid var(--color-border);border-radius:var(--radius-small);padding:var(--sp-1) 0}.asan-line{display:block;padding:0 var(--sp-2);border-left:4px solid transparent;min-height:1.35em}.asan-head{margin-top:var(--sp-1);padding:0 var(--sp-2);border-left:4px solid transparent;font-family:var(--font-ui);font-size:var(--fs-small);font-weight:700;color:var(--color-text)}.asan-head.is-muted{color:var(--color-text-soft);font-weight:600}.asan-head--error,.asan-head--ubsan{border-left-color:#d64545}.asan-head--access{border-left-color:#d9822b}.asan-head--stack{border-left-color:#c99700}.asan-head--place,.asan-head--objects,.asan-head--frame{border-left-color:#2a9d8f}.asan-head--alloc{border-left-color:#3b82f6}.asan-head--free{border-left-color:#8b5cf6}.asan-head--leak{border-left-color:#c2410c}.asan-head--summary{border-left-color:var(--color-accent)}.asan-head--shadow,.asan-head--legend,.asan-head--hint,.asan-head--note{border-left-color:var(--color-border)}.asan-fold{all:unset;cursor:pointer;font-family:var(--font-ui);font-size:var(--fs-small);color:var(--color-text-soft);text-decoration:underline}.asan-fold:focus-visible{box-shadow:var(--ring)}.asan-line__text{white-space:pre;overflow-wrap:normal;min-width:0}.asan-line__ref{all:unset;white-space:pre;cursor:pointer;border-radius:var(--radius-small)}.asan-line__ref:hover,.asan-line__ref:focus-visible{box-shadow:var(--ring)}.asan--norefs .asan-line__ref{cursor:text}.asan-line.is-muted{color:var(--color-text-soft)}.asan-line.is-first .asan-line__text{font-weight:700}.asan-line.is-lit{box-shadow:var(--ring)}.asan-line--error,.asan-line--ubsan{border-left-color:#d64545}.asan-line--access{border-left-color:#d9822b}.asan-line--stack{border-left-color:#c99700}.asan-line--place,.asan-line--objects,.asan-line--frame{border-left-color:#2a9d8f}.asan-line--alloc{border-left-color:#3b82f6}.asan-line--free{border-left-color:#8b5cf6}.asan-line--leak{border-left-color:#c2410c}.asan-line--summary{border-left-color:var(--color-accent)}.asan-line--shadow,.asan-line--legend,.asan-line--hint,.asan-line--note{border-left-color:var(--color-border)}.asan-s--kind,.asan-s--op{font-weight:700}.asan-s--size,.asan-s--func,.asan-s--name,.asan-s--num{font-weight:600}.asan-s--loc{font-weight:700;text-decoration:underline;text-underline-offset:2px}.asan-s--addr,.asan-s--muted{color:var(--color-text-soft)}.asan-s--hit{font-weight:700;outline:2px solid currentColor;outline-offset:1px}.asan-note{font-family:var(--font-ui);font-size:var(--fs-small);margin:var(--sp-1) var(--sp-2) var(--sp-2) var(--sp-4);padding:var(--sp-1) var(--sp-2);border-left:3px solid var(--color-border);background:var(--color-bg-explanation);color:var(--color-text);white-space:normal}.asan__key{display:flex;flex-wrap:wrap;gap:var(--sp-1);align-items:center;font-size:var(--fs-small)}.asan__key:empty{display:none}.asan__keyhead{color:var(--color-text-soft)}.asan-chip{display:inline-block;padding:0 var(--sp-2);border:1px solid var(--color-border);border-left-width:4px;border-radius:var(--radius-small);font-size:var(--fs-small)}.asan-chip--error,.asan-chip--ubsan{border-left-color:#d64545}.asan-chip--access{border-left-color:#d9822b}.asan-chip--stack{border-left-color:#c99700}.asan-chip--place,.asan-chip--objects,.asan-chip--frame{border-left-color:#2a9d8f}.asan-chip--alloc{border-left-color:#3b82f6}.asan-chip--free{border-left-color:#8b5cf6}.asan-chip--leak{border-left-color:#c2410c}.asan-chip--summary{border-left-color:var(--color-accent)}.asan-chip--muted{color:var(--color-text-soft)}.asan__shadow{display:flex;flex-direction:column;gap:var(--sp-1)}.asan__shadow[hidden]{display:none}.asan-shadow__intro{margin:0;font-size:var(--fs-small);color:var(--color-text-soft)}.asan-shadow__grid{display:flex;flex-direction:column;gap:2px;overflow-x:auto}.asan-shadow__row{display:flex;gap:2px;align-items:center;font-family:var(--font-mono);font-size:var(--fs-small)}.asan-shadow__addr{color:var(--color-text-soft);min-width:10em}.asan-shadow__cell{display:inline-flex;align-items:center;justify-content:center;min-width:2.2em;height:1.7em;border-radius:3px;background:#e5e7eb;color:#111827}.asan-shadow__cell[data-k=ok]{background:#b7e4c7;color:#111827}.asan-shadow__cell[data-k=partial]{background:#d8f3dc;color:#111827}.asan-shadow__cell[data-k=heap-redzone],.asan-shadow__cell[data-k=global-redzone]{background:#f4a3a3;color:#111827}.asan-shadow__cell[data-k=stack-redzone]{background:#f9c5c5;color:#111827}.asan-shadow__cell[data-k=freed]{background:#d7c4f2;color:#111827}.asan-shadow__cell[data-k=after-return],.asan-shadow__cell[data-k=after-scope]{background:#fde68a;color:#111827}.asan-shadow__cell.is-hit{outline:3px solid var(--color-text);outline-offset:1px;font-weight:700}.asan-shadow__legend{display:flex;flex-wrap:wrap;gap:var(--sp-1) var(--sp-2);align-items:center;font-size:var(--fs-small)}.asan-shadow__legend .asan-shadow__cell{min-width:1.4em;height:1.2em}.asan-code__lines{margin:0;padding:var(--sp-1) 0;list-style:none;font-family:var(--font-mono);font-size:var(--fs-small);border:1px solid var(--color-border);border-radius:var(--radius-small);max-height:26em;overflow:auto}.asan-code__line{display:grid;grid-template-columns:2.5em 1fr auto;gap:var(--sp-2);padding:0 var(--sp-2);border-left:4px solid transparent}.asan-code__ln{color:var(--color-text-soft);text-align:right;user-select:none}.asan-code__text{white-space:pre}.asan-code__marks{display:flex;gap:var(--sp-1);justify-content:flex-end}.asan-code__marks:empty{display:none}.asan-code__mark{font-family:var(--font-ui);font-size:var(--fs-small);padding:0 var(--sp-1);border:1px solid var(--color-border);border-radius:var(--radius-small);white-space:nowrap}.asan-code__line.is-access{border-left-color:#d9822b}.asan-code__line.is-alloc{border-left-color:#3b82f6}.asan-code__line.is-free{border-left-color:#8b5cf6}.asan-code__line.is-decl{border-left-color:#2a9d8f}.asan-code__mark--access{border-left:4px solid #d9822b}.asan-code__mark--alloc{border-left:4px solid #3b82f6}.asan-code__mark--free{border-left:4px solid #8b5cf6}.asan-code__mark--decl{border-left:4px solid #2a9d8f}.asan-code.is-picking .asan-code__line{cursor:pointer}.asan-code.is-picking .asan-code__line:hover,.asan-code.is-picking .asan-code__line:focus-visible{background:var(--color-bg-explanation);outline:none;box-shadow:var(--ring)}.asan-code__line.is-ok{box-shadow:inset 0 0 0 2px var(--color-ok)}.asan-code__line.is-wrong{box-shadow:inset 0 0 0 2px var(--color-error)}.asan-round{display:flex;flex-direction:column;gap:var(--sp-2);min-width:0}.asan-round__status{margin:0;color:var(--color-text-soft);white-space:pre-line}.asan-round__status[hidden],.asan-round__grid[hidden],.asan-missions[hidden]{display:none}.asan-round__grid{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:var(--sp-3);align-items:start}.asan-round__side{display:flex;flex-direction:column;gap:var(--sp-3);min-width:0}.asan-round__codewrap{display:flex;flex-direction:column;gap:var(--sp-1)}.asan-round__memwrap>summary{cursor:pointer;font-weight:600}.asan-round__memwrap[hidden]{display:none}.asan-round__memnav{display:flex;gap:var(--sp-1);align-items:center;margin:var(--sp-1) 0;flex-wrap:wrap}.asan-round__mempos{color:var(--color-text-soft);font-size:var(--fs-small);min-width:7em;text-align:center}.asan-round__mem .mem__left{display:none}@media(max-width:1100px){.asan-round__grid{grid-template-columns:minmax(0,1fr)}}.asan-missions{display:flex;flex-direction:column;gap:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--sp-2) var(--sp-3);background:var(--color-bg-panel);color:var(--color-text)}.asan-missions__list{margin:0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:var(--sp-1) var(--sp-3);font-size:var(--fs-small)}.asan-missions__item{display:flex;gap:var(--sp-1);align-items:baseline;color:var(--color-text-soft)}.asan-missions__item.is-current{color:var(--color-text);font-weight:700}.asan-missions__item.is-done,.asan-missions__item.is-help{color:var(--color-text)}.asan-missions__icon{width:1em;text-align:center}.asan-missions__no{display:none}.asan-missions__ask{margin:0;font-weight:600}.asan-missions__done{margin:0;font-weight:700}.asan-missions__notice{margin:0;color:var(--color-text-soft);font-size:var(--fs-small)}.asan-missions__target{margin:0}.asan-choices{display:grid;grid-template-columns:repeat(auto-fit,minmax(14em,1fr));gap:var(--sp-1)}.asan-choices--fix{grid-template-columns:1fr}.asan-choice{text-align:left;justify-content:flex-start;white-space:normal}.asan-choice.is-chosen{box-shadow:var(--ring)}.asan-choice__letter{font-weight:700;margin-right:var(--sp-1)}.asan-targets{margin:0;padding-left:1.4em;font-size:var(--fs-small)}.asan-targets .is-current{font-weight:700}.asan-targets .is-done{color:var(--color-text-soft)}.asan-fb{margin:0;padding:var(--sp-1) var(--sp-2);border-left:4px solid var(--color-border);background:var(--color-bg-explanation);color:var(--color-text)}.asan-fb.is-ok{border-left-color:var(--color-ok)}.asan-fb.is-wrong{border-left-color:var(--color-error)}.asan-editor{width:100%;box-sizing:border-box;font-family:var(--font-mono);font-size:var(--fs-small);background:var(--color-field);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-small);padding:var(--sp-2);tab-size:4}.asan-editor__bar{display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap}.asan-run{display:flex;flex-direction:column;gap:var(--sp-1);border-top:1px solid var(--color-border);padding-top:var(--sp-2)}.asan-run__head,.asan-run__outhead{margin:0;font-size:var(--fs-small);color:var(--color-text-soft)}.asan-run__out,.asan-run__compile,.asan-solution__code{margin:0;padding:var(--sp-2);max-height:12em;overflow:auto;font-family:var(--font-mono);font-size:var(--fs-small);background:var(--color-terminal-bg);color:var(--color-terminal-text);border-radius:var(--radius-small);white-space:pre}.asan-run .asan__ann{max-height:18em}.asan-counts{display:flex;flex-direction:column;gap:var(--sp-2)}.asan-counts__rows{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--sp-1)}.asan-counts__row{display:grid;grid-template-columns:minmax(8em,1fr) 2fr auto;gap:var(--sp-2);align-items:center}.asan-counts__bar{height:.9em;border:1px solid var(--color-border);border-radius:var(--radius-small);overflow:hidden}.asan-counts__bar>span{display:block;height:100%;background:var(--color-ok)}.asan-counts__mix{margin:0;display:flex;flex-wrap:wrap;gap:var(--sp-1);align-items:center}.present-view__asancard{display:flex;flex-direction:column;gap:var(--sp-2);min-width:0;width:100%}.present-view__asancard[hidden],.screen-asancard[hidden]{display:none}.present-view__asanintro{display:flex;flex-direction:column;gap:var(--sp-1)}.screen-asancard{display:flex;flex-direction:column;gap:var(--sp-3);width:100%;max-width:1800px}.screen-asancard__intro{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-3);align-items:baseline}.screen-asancard__text{font-size:var(--wall-text);max-width:70ch}.screen-asancard .asan__ann,.screen-asancard .asan-code__lines{font-size:var(--wall-base);max-height:none}.screen-asancard .asan-head,.screen-asancard .asan-note,.screen-asancard .asan-counts{font-size:var(--wall-base)}.asan-round--wall.is-counts .asan-round__report,.asan-round--wall.is-counts .asan-round__codewrap,.asan-round--wall.is-counts .asan-round__memwrap{display:none}.asan-round--wall.is-counts .asan-round__grid{grid-template-columns:minmax(0,1fr)}.asan-round--wall.is-counts .asan-counts{font-size:var(--wall-large)}.asan-teacher{display:flex;flex-direction:column;gap:var(--sp-2)}.asan-teacher[hidden]{display:none}.asan-teacher__wall{display:inline-flex;gap:var(--sp-1);align-items:center;flex-wrap:wrap}.asan-teacher__walllabel{color:var(--color-text-soft)}.asan-teacher__wall [aria-pressed=true]{box-shadow:var(--ring);font-weight:700}.asan-teacher__cols{display:grid;grid-template-columns:minmax(18em,1fr) minmax(0,2fr);gap:var(--sp-3);align-items:start}@media(max-width:1100px){.asan-teacher__cols{grid-template-columns:minmax(0,1fr)}}.asan-teacher__section{display:flex;flex-direction:column;gap:var(--sp-2);min-width:0}.asan-teacher__section h3{margin:0;font-size:var(--fs-normal)}.asan-teacher__list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--sp-1);max-height:18em;overflow:auto}.asan-teacher__row{display:flex;gap:var(--sp-2);flex-wrap:wrap;align-items:baseline}.asan-teacher__row.is-done .asan-teacher__cur{color:var(--color-text-soft)}.asan-teacher__name{font-weight:600;min-width:10em}.asan-teacher__empty{color:var(--color-text-soft)}.asan-teacher__answers{margin:0;padding-left:1.2em}.asan-form__code{font-family:var(--font-mono);font-size:var(--fs-small);width:100%;box-sizing:border-box}.field--radios,.field--checks{display:flex;flex-direction:column;gap:var(--sp-1)}.asan-builder__preview{display:flex;flex-direction:column;gap:var(--sp-2)}.asan-builder__preview[hidden]{display:none}.asan-builder__code{margin:0;padding:var(--sp-2);max-height:16em;overflow:auto;font-family:var(--font-mono);font-size:var(--fs-small);background:var(--color-terminal-bg);color:var(--color-terminal-text);border-radius:var(--radius-small)}.asan-reader{display:flex;flex-direction:column;gap:var(--sp-2)}.asan-reader[hidden]{display:none}.asan-reader__input{width:100%;box-sizing:border-box;font-family:var(--font-mono);font-size:var(--fs-small)}.asan-reader__bar{display:flex;gap:var(--sp-2);align-items:center}.present-view__stage:has(>.present-view__asancard:not([hidden])){align-items:flex-start;justify-content:stretch}@media(min-width:900px){.present-view__stage:has(>.present-view__asancard:not([hidden])){margin-bottom:calc(var(--sp-2) + 1.8em)}}.screen-asancard .asan__panehead,.screen-asancard .asan-round__memwrap>summary,.screen-asancard .asan-round__memnav,.screen-asancard .asan-round__mempos,.screen-asancard .asan-fold,.screen-asancard .asan-shadow__intro,.screen-asancard .asan-shadow__legend,.screen-asancard .asan-shadow__row,.screen-asancard .asan__key,.screen-asancard .asan-code__mark,.screen-asancard .mem,.screen-asancard .mem__space h4,.screen-asancard .mem-block__meta,.screen-asancard .mem-block__state,.screen-asancard .mem__note,.screen-asancard .mem-addr{font-size:var(--wall-base)}.asan-round--wall:not(.is-counts) .asan-counts{display:none}.screen-asancard .asan-round__memnav .btn{font-size:var(--wall-base)}.screen-asancard .mem-var__type,.screen-asancard .mem-block__meta--site,body[data-view=teach] #stepNav,.topbar__teachnav{display:none}.topbar__roomslot:empty{display:none}.topbar__roomslot .roominfo{display:inline-flex;align-items:center;gap:var(--sp-2);margin:0;padding:0;font-size:var(--fs-small)}.topbar__roomslot .roominfo[hidden],.topbar__roomslot .roominfo__code{display:none}.topbar__roomslot .roominfo__links a{display:inline-block;min-height:24px;line-height:24px}body[data-view=teach] .topbar__teachnav{display:inline-flex;gap:var(--sp-2);margin-left:auto}body[data-view=teach] .topbar__teachnav .btn{min-height:32px}body[data-view=teach] #activeActivity{display:none}#runGroupMenu .menu{z-index:auto;position:static;display:flex;flex-flow:row wrap;align-items:center;gap:var(--sp-2);min-width:0;padding:0;background:none;border:0;box-shadow:none}#runGroupMenu .menu[hidden],#runGroupMenu .menu__sep{display:none}#runGroupMenu .menu__group:not([hidden]){display:contents}#runGroupNowItems{display:flex;flex-flow:row wrap;align-items:center;gap:var(--sp-2)}#runGroupNowItems .menu__group:not([hidden]){display:contents}#runGroupNowItems .menu__sep,#runGroupNowItems .menu__label{display:none}#runGroupNow:not(:has(#runGroupNowItems>:not([hidden]))){display:none}.run-group--danger{background:none;border-color:transparent;border-top:1px solid var(--color-border);border-radius:0;align-items:flex-start}.btn--danger-outline{background:none;color:var(--color-error);border-color:var(--color-error)}.btn--danger-outline:hover:not(:disabled){background:color-mix(in srgb,var(--color-error) 10%,transparent)}#runGroupMenu .menu__label{display:none}#runGroupMenu .menu__item{border:1px solid var(--color-border);border-radius:var(--radius-small);min-height:32px;padding:0 var(--sp-3)}#runGroupMenu .menu__item[hidden]{display:none}.runstrip__ahead-label{margin-left:var(--sp-1)}.runstrip .runnow__title{-webkit-line-clamp:1;line-clamp:1}.runnow__head{display:flex;flex-wrap:wrap;column-gap:6px;min-width:0;max-width:100%}.runnow__head .runnow__pos:not(:empty):after{content:"·";margin-left:6px}.runstrip .runnow__cur{gap:2px}.runstrip .runnow__line{flex-wrap:wrap;max-width:100%}.runstrip .runnow__line .runnow__title{flex:1 1 6rem}.runstrip .runnow__marks{flex-wrap:wrap;max-width:100%}.runstrip .runnow__marks .mark-chip{padding:0 6px}.runstrip .runnow__notes{flex:none;min-height:24px;padding:0 6px;white-space:nowrap}@media(min-width:900px){.runstrip{column-gap:var(--sp-2);padding-inline:var(--sp-3)}.runstrip .runnow{flex-basis:11rem}.runscreen{max-width:9.5rem}.runnow__next{max-width:11rem}.runstrip .runstrip__ahead,.runstrip .afterclock__btn,.runstrip .runstrip__more{padding-inline:var(--sp-2)}}.afterclock{position:relative;display:inline-flex}.afterclock[hidden]{display:none}.afterclock__btn{min-height:36px}.afterclock__btn.is-open{background:var(--color-bg-deep)}.afterclock__pop{position:absolute;top:calc(100% + 6px);right:0;z-index:15;display:block;min-width:20rem;max-width:min(34rem,90vw);padding:var(--sp-3);background:var(--color-bg-panel);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow)}.afterclock__pop[hidden]{display:none}.afterclock__pop .run-group{display:flex;flex-direction:column;gap:var(--sp-2);margin:0}.afterclock__pop .timer-controls{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}.afterclock__pop [hidden]{display:none}.keysview{max-width:34rem}.keysview__list{display:grid;grid-template-columns:auto 1fr;gap:var(--sp-2) var(--sp-3);margin:var(--sp-3) 0;align-items:baseline}.keysview__list dt{white-space:nowrap}.keysview__list dd{margin:0}.keysview kbd{display:inline-block;min-width:1.6em;padding:1px 6px;font:inherit;font-family:var(--font-mono);font-size:var(--fs-small);text-align:center;border:1px solid var(--color-border);border-bottom-width:2px;border-radius:var(--radius-small);background:var(--color-bg-deep)}:root:has(#app.app--teacher){scroll-padding-top:var(--topbar-h, 0px)}@media(min-width:900px)and (min-height:600px){:root:has(body[data-view=teach] #app.app--teacher){scroll-padding-top:calc(var(--topbar-h, 0px) + var(--runbar-h, 0px))}}#app.app--teacher:has(#matrixPanel:not([hidden])){padding-bottom:48px}.app--teacher .help-dot{width:24px;height:24px;margin:-4px 0;border:0;background:none}.app--teacher .help-dot:before{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:16px;height:16px;border:1px solid var(--color-border);border-radius:999px}.app--teacher .help-dot:hover{border:0}.app--teacher .help-dot:hover:before{color:var(--color-accent);border-color:var(--color-accent)}.app--teacher .catalog__info .help-dot{margin-block:0}.app--teacher .help-btn{width:24px;height:24px}.app--teacher .attn__done,.app--teacher .attn__claim{min-height:24px;min-width:36px}.catalog__meta{opacity:1;color:var(--color-text-soft)}.regie{display:flex;align-items:center;gap:var(--sp-2) var(--sp-3);min-height:48px;padding:var(--sp-1) var(--sp-4);border-bottom:1px solid var(--color-border)}.regie[hidden]{display:none}.regie__front{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2) var(--sp-3);flex:1 1 auto;min-width:0}.regie__end{display:flex;align-items:center;gap:var(--sp-2);flex:0 0 auto;margin-left:auto}.regie__end:empty{display:none}.regie__more{position:relative;display:inline-flex;flex:0 0 auto}.regie__more[hidden]{display:none}.regie .btn{min-height:32px}.regie__morebtn.is-open,#algoSizeBtn.is-open,.runscreen.is-open{background:var(--color-bg-deep)}.regie .timer-controls{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1) var(--sp-2);margin:0}.regie .timer-controls[hidden],.regie .run-group[hidden]{display:none}.regie .run-group{flex-direction:row;flex-wrap:wrap;align-items:center;gap:var(--sp-1) var(--sp-2);padding:2px var(--sp-2)}.regie .wall-parts__list{gap:4px}.regie .regie__front{column-gap:var(--sp-2)}.regie .wall-parts{column-gap:var(--sp-1)}.regie #wallPartLabel{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.regie #exampleInput{flex:none;min-width:6.5rem;max-width:8.5rem}.regie .wall-ctl__run{flex-wrap:nowrap;gap:2px}.regie #exampleRun .btn{min-width:32px;padding-inline:var(--sp-2)}.regie #exampleNote{min-width:4ch;text-align:center;white-space:nowrap;font-variant-numeric:tabular-nums}.regie #exampleCtl{position:relative}.regie #exampleError{position:absolute;top:calc(100% + 2px);left:0;z-index:15;width:max-content;max-width:min(30rem,70vw);padding:var(--sp-1) var(--sp-2);background:var(--color-bg-panel);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);pointer-events:none}.regie #hintNote{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.regie #hintHide{font-size:0;min-width:32px;padding-inline:var(--sp-2)}.regie #hintHide:before{content:"✕";font-size:var(--fs-normal)}.regie #hintHide[hidden]{display:inline-flex!important;visibility:hidden}.regie #hintNext{width:10.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.present-panel .regie,.algo-teacher__regie,.livecode__bar.regie{padding-inline:0;border-bottom:0}.present-panel .regie{margin-bottom:var(--sp-2)}.algo-teacher__regie .debug-pos{min-width:0}.regie.activity-bar{margin:0 0 var(--sp-2)}.live-pane>#modelPreview{margin:var(--sp-2) 0;padding-inline:var(--sp-4)}.live-pane>#modelPreview .proj-lines{max-height:9.5rem}.class-area{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr;flex:1;align-items:start;min-width:0}.class-area:has(>#modelPreview:not([hidden]),>#refError:not([hidden])){grid-template-columns:minmax(0,1fr) clamp(20rem,40%,28rem)}.class-area__main{display:flex;flex-direction:column;grid-column:1;grid-row:1 / span 2;align-self:stretch;min-width:0}.class-area>#refError{grid-column:2;grid-row:1;min-width:0;margin:var(--sp-3) var(--sp-4) 0 var(--sp-2)}.class-area>#modelPreview{grid-column:2;grid-row:2;min-width:0;margin:var(--sp-3) 0 0 var(--sp-2);padding-inline:0 var(--sp-4)}.class-area>#modelPreview .proj-lines{max-height:min(56vh,30rem)}@media(max-width:900px){.class-area,.class-area:has(>#modelPreview:not([hidden]),>#refError:not([hidden])){display:flex;flex-direction:column;align-items:stretch}.class-area__main{flex:1 1 auto}.class-area>#refError{margin:var(--sp-2) var(--sp-4)}.class-area>#modelPreview{flex:none;margin:var(--sp-2) 0;padding-inline:var(--sp-4)}.class-area>#modelPreview .proj-lines{max-height:9.5rem}}.regie-pop{position:absolute;top:calc(100% + 6px);right:0;z-index:15;display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);min-width:16rem;max-width:min(30rem,90vw);padding:var(--sp-3);background:var(--color-bg-panel);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow)}.regie-pop[hidden]{display:none}.regie-size{position:relative;display:inline-flex}.regie-size .regie-pop{left:0;right:auto}.regie-pop .debug-size{margin:0}.regie-pop .livecode__flags[open]{flex-basis:100%}.regie-pop .livecode__flagsbox{position:static;margin-top:var(--sp-2);min-width:0;max-width:none;box-shadow:none}body[data-view=teach] #presentCloseBtn{display:none}.present-panel__controls:empty{display:none}.afterclock-home{display:contents}.runclock .runclock__start[hidden]{display:block!important;visibility:hidden}.runscreen-wrap{position:relative;display:inline-flex;min-width:0}.runscreen:disabled{cursor:default;color:var(--color-text)}.runscreen:disabled:hover{border-color:transparent}.runscreen__pop{left:auto;right:0;min-width:20rem}.runscreen__pop .run-group{display:flex;flex-direction:column;gap:var(--sp-2);margin:0;padding:0;border:0;background:none}.runscreen__pop .timer-controls{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}.runscreen__pop [hidden]{display:none}@media(min-width:900px)and (min-height:600px){body[data-view=teach] .runmore{position:fixed;top:calc(var(--topbar-h, 0px) + var(--runbar-h, 0px));right:var(--sp-3);z-index:16;width:min(44rem,calc(100vw - 2 * var(--sp-3)));max-height:calc(100vh - var(--topbar-h, 0px) - var(--runbar-h, 0px) - var(--sp-4));overflow:auto;border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow)}}.present-view__gp{width:100%;max-width:1180px;align-self:stretch;text-align:left}.gp{display:flex;flex-direction:column;gap:var(--sp-3)}.gp-statusline{margin:var(--sp-2) 0 0;min-height:1.2em;color:var(--color-text-soft)}.gp-statusline.is-error{color:var(--color-error)}.gp-statusline.is-ok{color:var(--color-ok)}.gp-lobby{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);text-align:center;padding:var(--sp-5) 0}.gp-lobby__title{margin:0}.gp-lobby__wait{color:var(--color-text-soft);margin:0}.gp-bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}.gp-members{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.gp-chip{display:inline-flex;align-items:center;gap:var(--sp-1);padding:2px var(--sp-2);border:1px solid var(--color-border);border-radius:999px;background:var(--color-bg-panel);font-size:var(--fs-small);max-width:100%}.gp-chip.is-you{border-color:var(--team, var(--color-accent))}.gp-chip__dot{width:8px;height:8px;flex:none;border-radius:50%;background:var(--color-ok)}.gp-chip.is-away .gp-chip__dot{background:var(--color-border)}.gp-chip.is-away{color:var(--color-text-soft)}.gp-chip__name{font-weight:700}.gp-chip__doing{color:var(--color-text-soft);overflow-wrap:anywhere}.gp-phases{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--sp-2)}.gp-phases__list{display:flex;flex-wrap:wrap;gap:var(--sp-1);margin:0;padding:0;list-style:none}.gp-phase{padding:2px var(--sp-2);border-radius:var(--radius-small);background:var(--color-bg-deep);color:var(--color-text-soft);font-size:var(--fs-small)}.gp-phase.is-done{color:var(--color-ok)}.gp-phase.is-now{background:var(--color-accent);color:var(--color-accent-text);font-weight:700}.gp-clock{font-variant-numeric:tabular-nums;color:var(--color-text-soft);font-size:var(--fs-small)}.gp-clock.is-over{color:var(--color-warning);font-weight:700}.gp-talk{display:flex;flex-wrap:wrap;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-left:4px solid var(--team, var(--color-accent));border-radius:0 var(--radius-small) var(--radius-small) 0;background:var(--color-bg-panel)}.gp-waiting{margin:0;padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-small);background:var(--color-info-background);color:var(--color-info)}.gp-work{display:flex;flex-direction:column;gap:var(--sp-4)}.gp-title{margin:0}.gp-story{color:var(--color-text-soft)}.gp-hint{margin:0;color:var(--color-text-soft);font-size:var(--fs-small)}.gp-ok{margin:0;color:var(--color-ok);font-weight:700}.gp-busy{margin:0;color:var(--color-info)}.gp-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.btn.is-busy{opacity:.7;cursor:progress}.gp-meet{padding:var(--sp-4);border:4px solid var(--team, var(--color-accent));border-radius:var(--radius);background:var(--color-bg-panel)}.gp-meet p{margin:0 0 var(--sp-1)}.gp-meet__big{font-size:var(--fs-large);font-weight:700}.gp-fns{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(220px,100%),1fr));gap:var(--sp-2)}.gp-fn{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-1);padding:var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg-panel);color:inherit;font:inherit;text-align:left;cursor:pointer;min-width:0}.gp-fn.is-mine{border-color:var(--team, var(--color-accent));box-shadow:inset 0 0 0 2px var(--team, var(--color-accent))}.gp-fn.is-taken{background:var(--color-bg-deep)}.gp-fn__name{display:flex;gap:var(--sp-2);align-items:center;font-weight:700;overflow-wrap:anywhere}.gp-fn__desc{color:var(--color-text-soft);overflow-wrap:anywhere}.gp-fn__owner{font-size:var(--fs-small)}.gp-stars{color:var(--color-warning);letter-spacing:1px}.gp-balance{margin:0}.gp-contract,.gp-review,.gp-build,.gp-look,.gp-together,.gp-received,.gp-others{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg-panel);min-width:0}.gp-contract h3,.gp-review h3,.gp-build h3,.gp-look h3,.gp-together h3,.gp-received h3,.gp-others h3{margin:0;font-size:var(--fs-normal);overflow-wrap:anywhere}.gp-contract.is-submitted,.gp-review.is-done,.gp-review.is-quiet{background:var(--color-bg)}.gp-review--fix{border-color:var(--color-warning)}.gp-tests{display:flex;flex-direction:column;gap:var(--sp-2)}.gp-tests__title{font-weight:700}.gp-test{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--sp-1);align-items:start}.gp-test__label{grid-column:1}.gp-test input,.gp-test textarea{font:inherit;padding:var(--sp-1) var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg);color:var(--color-text)}.gp-test textarea{font-family:var(--font-mono)}.gp-test input:focus,.gp-test textarea:focus{outline:none;box-shadow:var(--ring)}.gp-test__code{grid-column:1;width:100%}.gp-test .btn{grid-column:2;grid-row:1 / span 2}.gp-local__list{margin:0;padding-left:var(--sp-4);font-size:var(--fs-small);color:var(--color-text-soft)}.gp-local__list .is-error{color:var(--color-error)}.gp-local__ok{margin:0;color:var(--color-ok);font-size:var(--fs-small)}.gp-check__bad{padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-small);background:var(--color-error-background);color:var(--color-text)}.gp-check__bad p{margin:0 0 var(--sp-1);color:var(--color-error);font-weight:700}.gp-check__bad ul{margin:0;padding-left:var(--sp-4)}.gp-check__ok p{margin:0;color:var(--color-ok)}.gp-flags{margin:var(--sp-1) 0 0;padding-left:var(--sp-4);color:var(--color-warning)}.gp-code{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font-size:var(--fs-small)}.gp-cview .codelines{margin:0}.gp-cview__tests{margin:var(--sp-2) 0 0;padding-left:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-1)}.gp-testname{font-weight:700;font-size:var(--fs-small)}.gp-status{display:inline-block;padding:0 var(--sp-2);border-radius:999px;background:var(--color-bg-deep);color:var(--color-text-soft);font-size:var(--fs-small);font-weight:400}.gp-status--submitted{background:var(--color-info-background);color:var(--color-info)}.gp-status--changes{background:var(--color-error-soft);color:var(--color-text)}.gp-status--approved,.gp-status--given{background:var(--color-accent-soft);color:var(--color-ok)}.gp-status.is-green{background:var(--color-ok);color:var(--color-accent-text)}.gp-exchange{padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-small);background:var(--color-info-background);color:var(--color-info);font-weight:700}.gp-review__grid,.gp-build__grid,.gp-other__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);gap:var(--sp-3);align-items:start}@media(max-width:760px){.gp-review__grid,.gp-build__grid,.gp-other__grid{grid-template-columns:minmax(0,1fr)}}.gp-review__form{display:flex;flex-direction:column;gap:var(--sp-2)}.gp-checkq{display:flex;gap:var(--sp-2);align-items:baseline}.gp-quote{margin:0;padding:var(--sp-2) var(--sp-3);border-left:4px solid var(--color-warning);background:var(--color-bg)}.gp-dispute{margin:0;color:var(--color-warning)}.gp-tabs{display:flex;gap:2px}.gp-tab{padding:var(--sp-1) var(--sp-3);border:1px solid var(--color-border);border-bottom:0;border-radius:var(--radius-small) var(--radius-small) 0 0;background:var(--color-bg-deep);color:var(--color-text-soft);font:inherit;font-family:var(--font-mono);font-size:var(--fs-small);cursor:pointer}.gp-tab.is-on{background:var(--color-field);color:var(--color-text)}.gp-editor{min-height:220px;border:1px solid var(--color-border);border-radius:0 var(--radius-small) var(--radius-small) var(--radius-small);background:var(--color-field)}.gp-editor__host .cm-editor{min-height:220px;max-height:60vh}.gp-headerview{max-height:60vh;overflow:auto;border:1px solid var(--color-border);border-radius:0 var(--radius-small) var(--radius-small) var(--radius-small)}.gp-score{margin:0;font-weight:700}.gp-score.is-green{color:var(--color-ok)}.gp-cases{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:2px}.gp-case{overflow-wrap:anywhere}.gp-case--pass .gp-case__icon{color:var(--color-ok)}.gp-case--fail .gp-case__icon,.gp-case--crash .gp-case__icon{color:var(--color-error)}.gp-other{border-top:1px solid var(--color-border);padding-top:var(--sp-2)}.gp-other summary{cursor:pointer;overflow-wrap:anywhere}.gp-read .codelines{margin:0;max-height:40vh;overflow:auto}.gp-files{display:flex;flex-direction:column;gap:var(--sp-1)}.gp-file summary{cursor:pointer}.gp-diff{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--sp-2)}.gp-actions--merge{align-items:center}.gp-mine summary{cursor:pointer;font-weight:700}.gp-fb{padding:var(--sp-2) 0;border-top:1px solid var(--color-border)}.gp-fb p{margin:0 0 var(--sp-1);overflow-wrap:anywhere}.gp-done{padding:var(--sp-4);border:4px solid var(--team, var(--color-accent));border-radius:var(--radius);background:var(--color-bg-panel);text-align:center}.gp-done p{margin:0 0 var(--sp-1)}.gp-done__big{font-size:var(--fs-large);font-weight:700}.screen-gp{display:flex;flex-direction:column;gap:var(--sp-3);width:100%;height:100%;min-height:0}.gp-wall__head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--sp-3)}.gp-wall__title{margin:0;font-size:var(--wall-header)}.gp-goal{display:flex;align-items:center;gap:var(--sp-3);font-size:var(--wall-text);font-weight:700}.gp-goal__bar{display:inline-block;width:min(28vw,360px);height:.7em;border-radius:999px;background:var(--color-bg-deep);overflow:hidden}.gp-goal__bar i{display:block;height:100%;background:var(--color-ok)}.gp-wall__main{display:flex;gap:var(--sp-4);flex:1;min-height:0}.gp-wall__quiet{margin:auto;font-size:var(--wall-text)}.gp-city{flex:1;min-width:0;display:flex;align-items:flex-end;justify-content:center;border-radius:var(--radius);background:#dbe7f3;color:#24211c;padding:var(--sp-3);transition:background .8s}.gp-city.is-night{background:#18203a;color:#e6e9f2}.gp-city__svg{width:100%;height:100%;max-height:72vh}.gp-city__ground{fill:#8a7f6f}.gp-floor--0{fill:none;stroke:#6b655a;stroke-width:2;stroke-dasharray:6 5}.gp-city.is-night .gp-floor--0{stroke:#9aa3b5}.gp-floor--1{fill:none;stroke:#b98c12;stroke-width:3}.gp-scaffold{stroke:#b98c12;stroke-width:2;fill:none}.gp-floor--2,.gp-floor--3{fill:#b5533c;stroke:#dbe7f3;stroke-width:2}.gp-city.is-night .gp-floor--2,.gp-city.is-night .gp-floor--3{stroke:#18203a}.gp-win{fill:#2b3242}.gp-win.is-lit{fill:#ffd966}.gp-roof,.gp-flag,.gp-door,.gp-plate{fill:var(--team, var(--color-accent))}.gp-pole{stroke:#6b655a;stroke-width:3}.gp-crane{stroke:#b98c12;stroke-width:4;fill:none}.gp-plate__text{fill:var(--team-fg);font-size:15px;font-weight:700;font-family:var(--font-ui)}.gp-counts{margin:auto;padding:0;list-style:none;font-size:var(--wall-text);display:flex;flex-direction:column;gap:var(--sp-2)}.gp-proj{flex:0 1 46%;min-width:0;overflow:auto;display:flex;flex-direction:column;gap:var(--sp-2)}.gp-proj__title{margin:0;font-size:var(--wall-text)}.gp-proj__name,.gp-proj .codelines{font-size:var(--wall-base)}.gp-t-goal{margin-left:auto;color:var(--color-text-soft);font-size:var(--fs-small)}.gp-t-status{min-height:1.2em;margin:var(--sp-1) 0}.gp-t{display:flex;flex-direction:column;gap:var(--sp-2)}.gp-t-unassigned{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;padding:var(--sp-2);border:1px dashed var(--color-border);border-radius:var(--radius-small)}.gp-t-person{display:inline-flex;gap:var(--sp-1);align-items:center}.gp-t-group{padding:var(--sp-2) var(--sp-3);border:1px solid var(--color-border);border-left:6px solid var(--team, var(--color-accent));border-radius:var(--radius-small);background:var(--color-bg-panel)}.gp-t-group.is-waiting{box-shadow:inset 0 0 0 1px var(--color-info)}.gp-t-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}.gp-t-name{font-weight:700}.gp-t-members{color:var(--color-text-soft);overflow-wrap:anywhere}.gp-t-member.is-away{text-decoration:line-through}.gp-t-phase{font-size:var(--fs-small)}.gp-t-actions{margin-left:auto;display:flex;gap:var(--sp-1)}.gp-t-parts{display:flex;flex-wrap:wrap;gap:var(--sp-1);margin-top:var(--sp-2)}.gp-t-part{display:flex;flex-direction:column;align-items:flex-start;gap:0;padding:var(--sp-1) var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg);color:inherit;font:inherit;font-size:var(--fs-small);text-align:left;cursor:pointer}.gp-t-part.is-green{border-color:var(--color-ok);background:var(--color-accent-soft)}.gp-t-part.is-long-red{border-color:var(--color-error)}.gp-t-part__state{color:var(--color-text-soft)}.gp-t-meta{font-size:var(--fs-small);color:var(--color-text-soft);margin-top:var(--sp-1)}.gp-t-more summary{cursor:pointer;font-size:var(--fs-small)}.gp-t-more__body{display:flex;flex-direction:column;gap:var(--sp-2);padding-top:var(--sp-2);font-size:var(--fs-small)}.gp-t-reassign{display:inline-flex;flex-wrap:wrap;gap:var(--sp-1);align-items:center;margin-right:var(--sp-3)}.gp-b-levels{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(200px,100%),1fr));gap:var(--sp-2);margin-bottom:var(--sp-2)}.gp-b-level{display:flex;flex-direction:column;gap:2px;padding:var(--sp-2) var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg);color:inherit;font:inherit;text-align:left;cursor:pointer}.gp-b-level[aria-pressed=true]{border-color:var(--color-accent);box-shadow:inset 0 0 0 2px var(--color-accent)}.gp-b-level small{color:var(--color-text-soft)}.gp-b-settings{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-4);align-items:center}.gp-b-minutes{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-top:var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius-small)}.gp-b-minutes input{width:5em}.gp-b-project{position:relative;display:flex;flex-direction:column;gap:var(--sp-2);margin:0 0 var(--sp-3);padding:var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius-small)}.gp-b-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:var(--sp-2)}.gp-b-fn{position:relative;padding:var(--sp-2) var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg)}.gp-b-fn summary{cursor:pointer;font-weight:700}.gp-b-del{position:absolute;top:var(--sp-1);right:var(--sp-1)}.gp-b-warn{color:var(--color-warning)}.analysis__top{gap:var(--sp-3);flex-wrap:wrap;align-items:center}.analysis__title{font-size:var(--fs-large);margin:0;flex:1 1 auto}.analysis__pick,.analysis__hide{display:inline-flex;align-items:center;gap:var(--sp-1)}.analysis{padding:var(--sp-3) var(--sp-4);max-width:1200px;width:100%;margin:0 auto;flex:1}.analysis__privacy{border-left:4px solid var(--color-info);background:var(--color-info-background);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-small);margin:0 0 var(--sp-3)}.analysis__status{color:var(--color-text-soft);margin:0 0 var(--sp-2);min-height:1.4em}.analysis__tabs{display:flex;flex-wrap:wrap;gap:var(--sp-1);border-bottom:1px solid var(--color-border);margin-bottom:var(--sp-3)}.analysis__tabs [role=tab]{background:none;border:none;border-bottom:3px solid transparent;padding:var(--sp-2) var(--sp-3);color:var(--color-text-soft);cursor:pointer;font:inherit}.analysis__tabs [role=tab][aria-selected=true]{color:var(--color-text);border-bottom-color:var(--color-accent);font-weight:600}.analysis__tabs [role=tab]:focus-visible{outline:none;box-shadow:var(--ring)}.analysis__meta{color:var(--color-text-soft);font-size:var(--fs-small)}.analysis__empty{opacity:.8;padding:var(--sp-3) 0}.analysis__na{color:var(--color-text-soft)}.analysis__sub{color:var(--color-text-soft);font-size:var(--fs-small)}.analysis__alert{color:var(--color-error);font-weight:600}.analysis__scroll{overflow-x:auto}.analysis__h3{margin:var(--sp-4) 0 var(--sp-2)}.analysis__counts{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin:var(--sp-2) 0}.analysis-chip{border:1px solid var(--color-border);border-radius:999px;padding:2px 10px;font-size:var(--fs-small)}.analysis-chip--serious{border-color:var(--color-error)}.analysis-chip--warning{border-color:var(--color-warning)}.analysis-signals{list-style:none;padding:0;margin:0 0 var(--sp-3)}.analysis-signal{display:grid;grid-template-columns:7.5em 7em 1fr;gap:var(--sp-2);padding:var(--sp-2) 0;border-bottom:1px solid var(--color-border);align-items:baseline}.analysis-signal__level{font-weight:600;white-space:nowrap}.analysis-signal--serious .analysis-signal__level{color:var(--color-error)}.analysis-signal--warning .analysis-signal__level{color:var(--color-warning)}.analysis-signal--info .analysis-signal__level{color:var(--color-text-soft)}.analysis-signal__area{font-size:var(--fs-small);color:var(--color-text-soft)}.analysis-table{border-collapse:collapse;width:100%;font-size:.92em}.analysis-table th,.analysis-table td{border-bottom:1px solid var(--color-border);padding:6px 8px;text-align:left;vertical-align:top}.analysis-table .num{text-align:right;font-variant-numeric:tabular-nums}.analysis-bar{display:inline-block;width:80px;height:8px;background:var(--color-border);border-radius:4px;vertical-align:middle;overflow:hidden}.analysis-bar__fill{display:block;height:100%;background:var(--color-accent);border-radius:4px}.analysis-heat .analysis-row{cursor:pointer}.analysis .mastery-table .mastery__name{text-align:left}.analysis-heat .analysis-row:focus-visible{outline:none;box-shadow:var(--ring)}@media(max-width:700px){.analysis-signal{grid-template-columns:1fr;gap:2px}}.present-view__checkpointcard,.screen-checkpointcard{display:flex;flex-direction:column;gap:var(--sp-2);width:100%;min-width:0;max-width:1100px}.screen-checkpointcard{max-width:1800px;gap:var(--sp-3)}.present-view__checkpointcard[hidden],.screen-checkpointcard[hidden]{display:none}.present-view__stage:has(>.present-view__checkpointcard:not([hidden])){align-items:flex-start;justify-content:stretch}@media(min-width:900px){.present-view__stage:has(>.present-view__checkpointcard:not([hidden])){margin-bottom:calc(var(--sp-2) + 1.8em)}}.cp-wait{color:var(--color-text-soft);margin:0}.cp-wait[hidden]{display:none}.cp-muted{color:var(--color-text-soft)}.cp-badge{display:inline-block;font-size:var(--fs-small);font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--color-accent);background:var(--color-accent-soft);border-radius:var(--radius-small);padding:2px var(--sp-2)}.cp-chip{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:1px 10px;font-weight:700;font-size:var(--fs-small);white-space:nowrap}.cp-chip--ok{color:var(--color-text);background:var(--color-step1-bg);box-shadow:inset 0 0 0 1px var(--color-ok)}.cp-chip--amber{color:var(--color-text);background:var(--color-hit-bg);box-shadow:inset 0 0 0 1px var(--color-warning)}.cp-chip--bad{color:var(--color-text);background:var(--color-error-background);box-shadow:inset 0 0 0 1px var(--color-error)}.cp-chip--none{color:var(--color-text-soft);background:var(--color-bg-deep)}.cp-code{margin:0;background:var(--color-field);border:1px solid var(--color-border);border-radius:var(--radius-small);padding:var(--sp-2) var(--sp-3);font-family:var(--font-mono);font-size:.92rem;line-height:1.45;overflow-x:auto;user-select:none;-webkit-user-select:none}.cp-code__ln{display:block;white-space:pre}.cp-code__no{display:inline-block;width:2.4em;color:var(--color-text-soft);user-select:none}.cp-code--wall{font-size:var(--wall-base)}.cp-pre{font-family:var(--font-mono);white-space:pre-wrap;word-break:break-word}.cp-start,.cp-done,.cp-result{display:flex;flex-direction:column;gap:var(--sp-3);max-width:70ch}.cp-start__lead,.cp-done__title{font-size:var(--fs-large);font-weight:700;margin:0}.cp-rules{margin:0;padding-left:1.2em;display:grid;gap:var(--sp-1)}.cp-actions,.cp-foot{display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap}.cp-spacer{flex:1}.cp-item{position:relative;display:flex;flex-direction:column;gap:var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg-panel);padding:var(--sp-3)}.cp-bar{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-3);align-items:center}.cp-pips{display:flex;gap:4px}.cp-pip{width:22px;height:8px;border-radius:999px;background:var(--color-bg-deep);border:1px solid var(--color-border)}.cp-pip.is-saved{background:var(--color-accent);border-color:var(--color-accent)}.cp-pip.is-here{outline:2px solid var(--color-accent);outline-offset:1px}.cp-clock{margin-left:auto;font-family:var(--font-mono);font-weight:700;font-variant-numeric:tabular-nums;background:var(--color-bg-deep);border-radius:var(--radius-small);padding:2px var(--sp-2)}.cp-clock.is-over{color:var(--color-error);background:var(--color-error-background)}.cp-cols{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:var(--sp-3)}@media(max-width:800px){.cp-cols{grid-template-columns:minmax(0,1fr)}}.cp-read,.cp-work{display:flex;flex-direction:column;gap:var(--sp-2);min-width:0}.cp-prompt{font-weight:700;margin:0}.cp-goal{font-size:var(--fs-small);color:var(--color-text-soft);margin:0}.cp-label{font-weight:700}.cp-terminal{width:100%;box-sizing:border-box;font-family:var(--font-mono);background:var(--color-terminal-bg);color:var(--color-terminal-text);border:1px solid var(--color-border);border-radius:var(--radius-small);padding:var(--sp-2)}.cp-terminal--wall{font-size:var(--wall-base);margin:0;white-space:pre-wrap}.cp-options{border:0;padding:0;margin:0;display:grid;gap:var(--sp-2)}.cp-option{display:grid;grid-template-columns:auto 1fr;gap:var(--sp-2);align-items:start;border:1px solid var(--color-border);border-radius:var(--radius-small);padding:var(--sp-2) var(--sp-3);background:var(--color-field);cursor:pointer}.cp-option:has(input:checked){border-color:var(--color-accent);background:var(--color-accent-soft)}.cp-option input{margin-top:4px;accent-color:var(--color-accent)}.cp-inputs{display:grid;gap:var(--sp-2)}.cp-input{display:flex;gap:var(--sp-2);align-items:center}.cp-input input{font-family:var(--font-mono);width:12em}.cp-saved{color:var(--color-ok);margin:0}.cp-note{color:var(--color-warning);margin:0;min-height:1.2em}.cp-confirm{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;background:var(--color-hit-bg);border-radius:var(--radius-small);padding:var(--sp-2) var(--sp-3)}.cp-cover{position:absolute;inset:0;display:grid;place-items:center;padding:var(--sp-3);background:color-mix(in srgb,var(--color-bg) 94%,transparent);border-radius:var(--radius);z-index:5}.cp-cover__box{display:flex;flex-direction:column;gap:var(--sp-2);max-width:46ch;background:var(--color-bg-panel);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--sp-4)}.cp-verdict{font-size:var(--fs-large);font-weight:700;margin:0}.cp-verdict--ready{color:var(--color-ok)}.cp-verdict--almost{color:var(--color-warning)}.cp-verdict--practice{color:var(--color-error)}.cp-override{margin:0;font-weight:700;color:var(--color-info)}.cp-goals{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-2)}.cp-goals li{display:grid;grid-template-columns:9rem 1fr;gap:var(--sp-2);align-items:baseline}.cp-practice{background:var(--color-info-background);border-radius:var(--radius-small);padding:var(--sp-2) var(--sp-3)}.cp-practice p,.cp-practice ul{margin:0}.cp-res-items{display:grid;gap:var(--sp-2)}.cp-res-item{border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg-panel)}.cp-res-item>summary{cursor:pointer;padding:var(--sp-2) var(--sp-3);display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap}.cp-res-body{padding:0 var(--sp-3) var(--sp-2);display:grid;gap:var(--sp-1)}.cp-res-body p{margin:0}.cp-wall{display:flex;flex-direction:column;gap:var(--sp-2);font-size:var(--wall-base)}.screen-checkpointcard:has(.cp-wall__grid) #checkpointCardPrompt{display:none}.screen-checkpointcard .cp-wait,.screen-checkpointcard .cp-badge{font-size:var(--wall-base)}.cp-wall .cp-bars__why{font-size:inherit}.cp-wall__count{margin:0;color:var(--color-text-soft)}.cp-wall__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--sp-3) var(--sp-4);align-items:start}.cp-wall__grid>div{display:flex;flex-direction:column;gap:var(--sp-2);min-width:0}.cp-wall__grid--nocode{grid-template-columns:minmax(0,1fr)}.cp-wall__alone,.cp-wall__big{font-size:1.25em;font-weight:700;margin:0}.cp-wall__q{font-size:1.15em;font-weight:700;margin:0}.cp-wall__sub{margin:0;color:var(--color-text-soft)}.cp-wall__explain{margin:0;font-weight:700}.cp-bars{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-2)}.cp-bars__row{display:grid;grid-template-columns:minmax(10rem,2fr) 3fr 3rem;gap:var(--sp-2) var(--sp-3);align-items:center}.cp-bars__row.is-right .cp-bars__label{color:var(--color-ok);font-weight:700}.cp-bars__bar{height:18px;border-radius:999px;background:var(--color-bg-deep);overflow:hidden}.cp-bars__bar>span{display:block;height:100%;background:var(--color-warning)}.cp-bars__row.is-right .cp-bars__bar>span{background:var(--color-ok)}.cp-bars__n{font-variant-numeric:tabular-nums;text-align:right}.cp-bars__why{grid-column:1 / -1;color:var(--color-text-soft);font-size:1.05rem;padding-left:var(--sp-3)}.cp-wrong{margin:0;padding-left:1.2em;display:grid;gap:var(--sp-1)}.cp-teacher{display:flex;flex-direction:column;gap:var(--sp-3)}.cp-teacher[hidden]{display:none}.cp-teacher__counters{margin:0;font-weight:700}.cp-teacher__goals{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:var(--sp-3)}.cp-tgoal{display:flex;flex-direction:column;gap:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg-panel);padding:var(--sp-3)}.cp-tgoal__text{margin:0;font-weight:700}.cp-tgoal__counts{margin:0;display:flex;flex-wrap:wrap;gap:var(--sp-1)}.cp-stack{display:flex;height:12px;border-radius:999px;overflow:hidden;background:var(--color-bg-deep)}.cp-stack>span{display:block;height:100%}.cp-stack .g{background:var(--color-ok)}.cp-stack .a{background:var(--color-warning)}.cp-stack .r{background:var(--color-error)}.cp-mis{display:flex;flex-wrap:wrap;gap:var(--sp-1) var(--sp-2);align-items:center;background:var(--color-bg-deep);border-radius:var(--radius-small);padding:var(--sp-2)}.cp-titems{margin:0;padding:0;list-style:none;display:grid;gap:var(--sp-1)}.cp-titem{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;padding:var(--sp-1) 0;border-bottom:1px solid var(--color-border)}.cp-titem.is-on{background:var(--color-accent-soft)}.cp-titem__q{flex:1;min-width:12rem}.cp-teacher__rowsbar{display:flex;gap:var(--sp-3);align-items:center;justify-content:space-between;flex-wrap:wrap}.cp-teacher__rowsbar h3{margin:0}.cp-check{display:inline-flex;gap:var(--sp-1);align-items:center}.cp-rows{overflow-x:auto}.cp-table{border-collapse:collapse;width:100%;font-size:var(--fs-small)}.cp-table th,.cp-table td{text-align:left;padding:6px var(--sp-2);border-bottom:1px solid var(--color-border);vertical-align:top}.cp-table th{color:var(--color-text-soft);font-weight:700}.cp-link{background:none;border:0;padding:0;font:inherit;font-weight:700;color:inherit;cursor:pointer;text-align:left}.cp-link:hover{text-decoration:underline}.cp-sig{color:var(--color-text-soft)}.cp-ov select,.cp-ov input{font-size:var(--fs-small)}.cp-ov input{display:block;margin-top:4px;width:14rem}.cp-detail ol{margin:0;padding-left:1.4em;display:grid;gap:var(--sp-1)}.cp-bitems{display:grid;gap:var(--sp-3)}.cp-bitem{display:grid;gap:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--sp-3);background:var(--color-bg-panel)}.cp-bitem__bar{display:flex;justify-content:space-between;align-items:center}.cp-bitem__code{font-family:var(--font-mono);width:100%;box-sizing:border-box}.cp-badd{display:flex;gap:var(--sp-2);flex-wrap:wrap;margin-top:var(--sp-2)}.admin__linkcode{margin-top:var(--sp-3);padding:var(--sp-3);border:1px solid var(--color-accent);border-radius:var(--radius)}.admin__linkcode-code{display:block;padding:var(--sp-2);background:var(--color-accent-soft);border:1px solid var(--color-border);border-radius:var(--radius);word-break:break-all;user-select:all;font-size:var(--fs-small)}.admin__checks{display:flex;flex-wrap:wrap;gap:var(--sp-1) var(--sp-3);width:100%}.admin__check{display:inline-flex;align-items:center;gap:4px}.admin-cell--warn{color:var(--color-warning);font-weight:700}.admin-table--boxes td{vertical-align:top}.admin__sel-edit summary{cursor:pointer;color:var(--color-accent);font-size:var(--fs-small)}.admin__checks[hidden],.admin__linkcode[hidden]{display:none}.catalog__today{margin:0 0 var(--sp-3);padding:var(--sp-2) var(--sp-3);border-left:4px solid var(--color-accent);background:var(--color-accent-soft);border-radius:4px}.catalog__today[hidden]{display:none}.catalog__today-title{margin:0 0 var(--sp-2);font-size:var(--fs-normal)}.today__list{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-2)}.today__item{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap}.today__title{display:block;font-weight:700}.today__what{flex:1 1 16em}.today__meta{display:block;font-size:var(--fs-small);color:var(--color-text-soft)}.today__missing{font-size:var(--fs-small);color:var(--color-text-soft)}.today__item--past .today__what{color:var(--color-text-soft)}.today__item--past .today__start{background:var(--color-bg-panel);color:var(--color-text);border-color:var(--color-border)}.overlay--planning .overlay__card{max-height:90vh;overflow-y:auto;width:min(1100px,100%)}.plan-week__nav{display:flex;align-items:center;gap:var(--sp-2);margin:var(--sp-2) 0;flex-wrap:wrap}.plan-week__label{min-width:14em;text-align:center}.plan-week__scroll{overflow-x:auto}.plan-week{border-collapse:collapse;width:100%;font-size:var(--fs-small)}.plan-week th,.plan-week td{border:1px solid var(--color-border);padding:var(--sp-1) var(--sp-2);vertical-align:top;text-align:left}.plan-week thead th.is-today{background:var(--color-accent-soft)}.plan-week tbody th{white-space:nowrap}.plan-empty{color:var(--color-text-soft);text-align:center}.plan-chip{display:block;width:100%;text-align:left;margin:0 0 var(--sp-1);padding:var(--sp-1) var(--sp-2);border:1px solid var(--color-border);border-radius:4px;background:var(--color-bg-panel);color:var(--color-text);font:inherit;cursor:pointer}.plan-chip.is-editing{border-color:var(--color-accent);outline:2px solid var(--color-accent)}.plan-chip__time{font-weight:700;font-variant-numeric:tabular-nums}.plan-chip__label,.plan-chip__box{display:block;color:var(--color-text-soft)}.plan-form{margin-top:var(--sp-4)}.plan-form h3{margin:0 0 var(--sp-2);font-size:var(--fs-normal)}.plan-form__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(12em,1fr));gap:var(--sp-2)}.plan-form__grid label{display:flex;flex-direction:column;gap:2px;font-size:var(--fs-small)}.plan-form__wide{grid-column:1 / -1}.plan-form__actions{display:flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-2);flex-wrap:wrap}.plan-form__status{font-size:var(--fs-small)}.plan-ical{margin-top:var(--sp-4)}.plan-ical summary{cursor:pointer;font-weight:600}.plan-ical__hint,.plan-ical__status{font-size:var(--fs-small)}.plan-ical__row{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;margin:var(--sp-2) 0}.plan-ical__row input[type=url]{flex:1 1 20em}.plan-ical__warnings{font-size:var(--fs-small);color:var(--color-text-soft)}.plan-ical__blocks{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-1)}.ical-block{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;padding:var(--sp-1) 0;border-bottom:1px solid var(--color-border);font-size:var(--fs-small)}.ical-block.is-planned{background:var(--color-accent-soft)}.ical-block__when{font-variant-numeric:tabular-nums;min-width:12em}.ical-block__what{flex:1 1 12em}.ical-block__where{color:var(--color-text-soft)}.app--walk{min-height:100vh;display:flex;flex-direction:column}.walk-bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2) var(--sp-3);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:2;background:var(--color-bg)}.walk-bar__title{margin:0;font-size:1.1rem;display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--sp-2);min-width:0}.walk-bar__lesson{font-weight:400;overflow-wrap:anywhere}.walk-bar__meta{color:var(--color-text-soft)}.walk-bar__actions{margin-left:auto;display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);min-width:0}.walk-bar__status{overflow-wrap:anywhere}.walk-msg{margin:var(--sp-4) auto;max-width:640px;padding:var(--sp-3);text-align:center}.walk{flex:1;width:100%;max-width:1100px;margin:0 auto;padding:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-3)}.walk[hidden]{display:none}.walk-approved{margin:0;padding:var(--sp-2) var(--sp-3);border-radius:8px;border-left:4px solid var(--color-ok);background:var(--color-bg-panel)}.walk-approved--older{border-left-color:var(--color-warning)}.walk-since{padding:var(--sp-2) var(--sp-3);border:1px solid var(--color-border);border-left:4px solid var(--color-info);border-radius:8px;background:var(--color-info-background)}.walk-since[data-state=changed]{border-left-color:var(--color-warning)}.walk-since__title{margin:0;font-size:1rem}.walk-since__list{margin:var(--sp-1) 0 0;padding-left:1.2em;line-height:1.4;overflow-wrap:anywhere}.walk-since__list:empty{display:none}.walk-list{display:flex;flex-direction:column;gap:var(--sp-3)}.walk-empty{color:var(--color-text-soft)}.walk-part{border:1px solid var(--color-border);border-left-width:4px;border-radius:8px;padding:var(--sp-2) var(--sp-3);background:var(--color-bg);min-width:0}.walk-part--ticked{border-left-color:var(--color-ok)}.walk-part--changed{border-left-color:var(--color-warning)}.walk-part__head{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--sp-1) var(--sp-2);margin-bottom:var(--sp-2)}.walk-part__n{color:var(--color-text-soft);font-weight:600}.walk-part__title{margin:0;font-size:1.05rem;flex:1 1 14em;min-width:0;overflow-wrap:anywhere}.walk-part__extra{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1)}.walk-part__changed{padding:0 var(--sp-1);border-radius:4px;background:var(--color-warning);color:var(--color-bg);font-weight:600}.walk-status{padding:0 var(--sp-1);border-radius:4px;border:1px solid var(--color-border)}.walk-status--approved{border-color:var(--color-ok)}.walk-status--checked{border-color:var(--color-info)}.walk-tick-slot{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}.walk-tick{display:inline-flex;align-items:center;gap:4px;cursor:pointer}.walk-tick__stale{color:var(--color-error);font-weight:600}.walk-langs{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--sp-2);margin-bottom:var(--sp-2)}.walk-langs__col{min-width:0;padding:var(--sp-2);border:1px solid var(--color-border);border-radius:6px;background:var(--color-bg-panel)}.walk-langs__col h4{margin:0 0 var(--sp-1);font-size:.95rem;color:var(--color-text-soft)}.walk-langs__text{overflow-wrap:anywhere}.walk-langs__text[data-format=text]{white-space:pre-wrap}.walk-langs__text--none{color:var(--color-text-soft);font-style:italic}.walk-preview{min-width:0}.walk-preview img{max-width:min(100%,480px);height:auto;border:1px solid var(--color-border);border-radius:4px}.walk-diff{margin-top:var(--sp-2)}.walk-diff summary{cursor:pointer;font-weight:600}.walk-comments{margin-top:var(--sp-2);display:flex;flex-direction:column;gap:var(--sp-2)}.walk-comments__title{margin:0;font-size:.95rem}.walk-comment{padding:var(--sp-1) var(--sp-2);border:1px solid var(--color-border);border-left:3px solid var(--color-accent);border-radius:6px}.walk-comment--resolved{border-left-color:var(--color-ok);opacity:.8}.walk-comment__meta{margin:0;color:var(--color-text-soft)}.walk-comment__text{margin:4px 0;white-space:pre-wrap;overflow-wrap:anywhere}.walk-comment__resolved{margin:0;color:var(--color-text-soft)}.walk-comment-form{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:flex-end}.walk-comment-form__text{flex:1 1 18em;min-width:0;font:inherit}.catalog__reviews{display:inline-flex;flex-wrap:wrap;gap:var(--sp-1)}.catalog__review{padding:0 var(--sp-1);border-radius:4px;border:1px solid var(--color-border)}.catalog__review--open{border-color:var(--color-accent);font-weight:600}.catalog__review--current{border-color:var(--color-ok)}.catalog__review--older{border-color:var(--color-warning)}@media print{.app--walk .walk-bar__actions,.app--walk .walk-tick-slot,.app--walk .walk-comments,.app--walk .walk-since,.app--walk .walk-part__changed,.app--walk .walk-diff,.app--walk .footer,.app--walk .walk-approved{display:none!important}.app--walk .walk-bar{position:static;border-bottom:2px solid #000}.app--walk .walk{max-width:none;padding:0}.app--walk .walk-part{break-inside:avoid;border:0;border-top:1px solid #999;border-radius:0;padding:var(--sp-2) 0}.app--walk pre,.app--walk code{white-space:pre-wrap;overflow-wrap:anywhere}.app--walk .walk-preview img{max-width:60%}}.cs-host{margin-top:var(--sp-2);display:flex;flex-direction:column;gap:var(--sp-2)}.cs-host[hidden]{display:none}.cs-strip{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2)}.cs-strip__state{color:var(--color-text-soft);font-size:var(--fs-small)}.cs-strip__msg{flex-basis:100%;margin:0;color:var(--color-error);font-size:var(--fs-small)}.cs-strip__msg[hidden]{display:none}.cs-own{font-family:var(--font-mono);min-width:14em}.cs-row{display:flex;gap:var(--sp-2);align-items:stretch}.cs-row>.cs-term{flex:1 1 0;min-width:0}.cs-term{margin:0;display:flex;flex-direction:column;border-radius:var(--radius);overflow:hidden;background:var(--color-terminal-bg);color:var(--color-terminal-text)}.cs-term__head{display:flex;justify-content:space-between;gap:var(--sp-2);padding:var(--sp-1) var(--sp-2);font-family:var(--font-mono);font-size:var(--fs-small);background:#ffffff14}.cs-term__input{color:var(--color-terminal-input)}.cs-term__out{margin:0;padding:var(--sp-2);font-family:var(--font-mono);font-size:var(--fs-small);white-space:pre;overflow:hidden}.cs-term__quiet,.cs-term__more{opacity:.7;font-style:italic}.cs-term__status{font-weight:700}.cs-term__err{opacity:.85}.cs-term__older{margin:0;padding:0 var(--sp-2) var(--sp-1);font-size:var(--fs-small);opacity:.75}.cs-wall-row{flex:none;display:flex;gap:var(--sp-4);margin-top:var(--sp-3)}.cs-wall-row[hidden]{display:none}.cs-wall-row>.cs-term{flex:1 1 0;min-width:0;border:2px solid var(--color-accent)}.cs-wall-row .cs-term__head,.cs-wall-row .cs-term__out,.cs-wall-row .cs-term__older{font-size:var(--wall-base)}.screen-practice{width:100%;height:100%;display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-4);box-sizing:border-box;overflow:hidden}.screen-practice[hidden]{display:none}.cs-odd__head{display:flex;align-items:baseline;gap:var(--sp-3)}.cs-odd__title{margin:0;font-size:var(--wall-text)}.cs-odd__round{font-size:var(--wall-base);color:var(--color-text-soft)}.cs-odd__input{display:flex;align-items:baseline;gap:var(--sp-3);font-size:var(--wall-text)}.cs-odd__input code{font-family:var(--font-mono);font-weight:700;padding:0 var(--sp-2);border-radius:var(--radius);background:var(--color-terminal-bg);color:var(--color-terminal-input)}.cs-odd__ask,.cs-odd__count,.cs-odd__notes{margin:0;font-size:var(--wall-base)}.cs-odd__blocks{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:var(--sp-3);align-content:flex-start;min-height:0;overflow:hidden}.cs-odd__block{position:relative;flex:1 1 18rem;max-width:32rem;display:flex;flex-direction:column;border:2px solid var(--color-border);border-radius:var(--radius);background:var(--color-terminal-bg);color:var(--color-terminal-text)}.cs-odd__block.is-correct{border-color:var(--color-ok);box-shadow:0 0 0 2px var(--color-ok)}.cs-odd__out{margin:0;padding:var(--sp-2) var(--sp-3);font-family:var(--font-mono);font-size:var(--wall-base);white-space:pre;overflow:hidden}.cs-odd__n{align-self:flex-end;margin:0 var(--sp-2) var(--sp-2);padding:0 var(--sp-2);border-radius:var(--radius);background:var(--color-accent);color:var(--color-accent-text);font-size:var(--wall-base);font-weight:700}.cs-odd__ok{position:absolute;top:var(--sp-1);right:var(--sp-2);color:var(--color-terminal-input);font-weight:700;font-size:var(--wall-base)}.cs-odd__stamps{list-style:none;margin:auto 0 0;padding:0;display:flex;flex-wrap:wrap;gap:var(--sp-2)}.cs-odd__stamp{display:flex;gap:var(--sp-2);align-items:center;padding:var(--sp-1) var(--sp-3);border-radius:var(--radius);border:2px solid var(--color-border);font-size:var(--wall-base)}.cs-odd__marks{min-width:1em}.cs-panel{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius)}.cs-panel__label{font-weight:600}.cs-panel__blocks{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:var(--sp-2)}.cs-panel__block{display:flex;flex-direction:column;gap:var(--sp-1);flex:1 1 14rem;max-width:22rem;padding:var(--sp-1);border:1px solid var(--color-border);border-radius:var(--radius)}.cs-panel__block.is-hidden{opacity:.55}.cs-panel__block.is-correct{border-color:var(--color-ok)}.cs-panel__out{margin:0;padding:var(--sp-1) var(--sp-2);border-radius:var(--radius-small);background:var(--color-terminal-bg);color:var(--color-terminal-text);font-family:var(--font-mono);font-size:var(--fs-small);white-space:pre;overflow:hidden}.cs-panel__n{font-weight:700;font-size:var(--fs-small)}.cs-panel__names{color:var(--color-text-soft);font-size:var(--fs-small)}.cs-panel__expected code{font-family:var(--font-mono);white-space:pre-wrap}.cs-student{margin:var(--sp-2) 0;padding:var(--sp-2) var(--sp-3);border:2px solid var(--color-accent);border-radius:var(--radius);display:flex;flex-direction:column;gap:var(--sp-2)}.cs-student[hidden]{display:none}.cs-student__head{font-weight:700}.cs-student__head code{font-family:var(--font-mono);padding:0 var(--sp-1);border-radius:var(--radius-small);background:var(--color-bg-deep)}.cs-student__form{display:flex;flex-direction:column;gap:var(--sp-1);align-items:flex-start}.cs-student__ask,.cs-student__pred,.cs-student__saved,.cs-student__verdict{margin:0}.cs-student__saved{color:var(--color-text-soft);font-size:var(--fs-small)}.cs-ok{color:var(--color-ok)}.cs-no{color:var(--color-text-soft)}.cs-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));gap:var(--sp-3);align-content:start;min-height:0;overflow:hidden}.screen-practice .cs-gallery>.cs-term{border:2px solid var(--color-accent)}.screen-practice .cs-gallery .cs-term__head,.screen-practice .cs-gallery .cs-term__out{font-size:var(--wall-base)}.cs-gallery--teacher{grid-template-columns:repeat(auto-fill,minmax(12rem,1fr));gap:var(--sp-2)}.cs-gallery__tile{display:flex;flex-direction:column;gap:var(--sp-1)}.cs-gallery__tile.is-hidden{opacity:.55}.cs-student__gallery{display:flex;flex-direction:column;gap:var(--sp-1);align-items:flex-start}.cs-goal{display:flex;align-items:center;gap:var(--sp-3);font-size:var(--wall-base);font-weight:600}.cs-goal[hidden]{display:none}.cs-goal__bar{position:relative;width:14em;height:.9em;border-radius:999px;background:var(--color-bg-deep);overflow:hidden;border:1px solid var(--color-border)}.cs-goal__bar>i{position:absolute;inset:0 auto 0 0;background:var(--color-accent)}.cs-goal__half{position:absolute;top:0;bottom:0;left:50%;width:2px;background:var(--color-text-soft)}.cs-goal.is-reached .cs-goal__bar>i{background:var(--color-ok)}.gp-break{display:flex;flex-direction:column;gap:var(--sp-3);font-size:var(--wall-base)}.gp-break[hidden],#gpCard.has-break .gp-city{display:none}.gp-break__title{margin:0;font-size:var(--wall-text)}.gp-break__attacks{margin:0;padding-left:1.4em;display:flex;flex-direction:column;gap:var(--sp-1)}.gp-break__attacks code,.gp-break__list code,.gp-break__mine code{font-family:var(--font-mono);padding:0 var(--sp-1);border-radius:var(--radius-small);background:var(--color-terminal-bg);color:var(--color-terminal-input)}.gp-break__quiet{margin:0;color:var(--color-text-soft)}.gp-break__castles{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:var(--sp-2)}.gp-break__castle{display:flex;flex-direction:column;gap:2px;padding:var(--sp-1) var(--sp-3);border:2px solid var(--color-border);border-radius:var(--radius)}.cs-panel .gp-break__castles,.cs-panel .gp-break__castle{font-size:var(--fs-small)}.gp-bounty__board{margin-top:var(--sp-3)}.gp-bounty__board-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:var(--sp-2)}.gp-bounty__board-list>li{display:flex;gap:var(--sp-2);align-items:baseline;padding:var(--sp-1) var(--sp-3);border:2px solid var(--color-border);border-radius:var(--radius)}.gp-break__list{margin:0;padding-left:1.4em;display:flex;flex-direction:column;gap:var(--sp-1)}.gp-break__row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}.gp-break__row[data-status=rejected]{opacity:.6}.gp-break__mine{margin:0;padding-left:1.2em}.gp-break__us{display:flex;flex-direction:column;gap:var(--sp-2)}.gp-break__code{width:100%;font-family:var(--font-mono)}.gp-bounty__count{font-variant-numeric:tabular-nums}.gp-bounty__goal{font-size:inherit}.gp-bounty__ring{margin:0;padding-left:1.2em;display:flex;flex-direction:column;gap:var(--sp-1)}.gp-bounty__target{display:flex;flex-direction:column;gap:var(--sp-2)}.gp-bounty__file{margin:0}.gp-bounty__code,.gp-bounty__expected{margin:0;max-height:18em;overflow:auto;padding:var(--sp-2);border-radius:var(--radius-small);background:var(--color-terminal-bg);color:var(--color-terminal-input);font-family:var(--font-mono);font-size:var(--fs-small);white-space:pre}.gp-bounty__ln{display:inline-block;min-width:2.2em;margin-right:var(--sp-2);color:var(--color-terminal-muted);text-align:right;user-select:none}.gp-bounty__report{display:flex;flex-direction:column;gap:var(--sp-1)}.gp-bounty__report p{margin:0}.gp-bounty__row code{font-family:var(--font-mono)}.present-view:has(#presGpCard:not([hidden])) .present-view__stage{margin-bottom:2.6rem}.runstrip{position:relative}.cue-card{position:absolute;top:calc(100% + var(--sp-2));right:var(--sp-4);z-index:6;width:min(26rem,calc(100vw - 2 * var(--sp-4)));padding:var(--sp-2) var(--sp-3);background:var(--color-bg-panel);border:1px solid var(--color-border);border-left:4px solid var(--color-accent);border-radius:var(--radius);box-shadow:0 4px 14px #00000024;animation:cue-in .18s ease-out}.cue-card[hidden]{display:none}.cue-card__title{margin:0;font-weight:600;display:flex;align-items:center;gap:var(--sp-1)}.cue-card__icon{color:var(--color-accent)}.cue-card__ask{margin:var(--sp-1) 0 var(--sp-2)}.cue-card__btns{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}.cue-card__snooze{position:relative;display:inline-flex}.cue-card__more{padding-inline:var(--sp-1)}.cue-card__menu{position:absolute;top:100%;left:0;z-index:1;display:flex;flex-direction:column;margin-top:2px;padding:var(--sp-1);background:var(--color-bg-panel);border:1px solid var(--color-border);border-radius:var(--radius-small);box-shadow:var(--shadow)}.cue-card__menu[hidden]{display:none}.cue-card__x{margin-left:auto}@keyframes cue-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.cue-card{animation:none}}.ex-ahead-cue{margin:0 0 var(--sp-3)}.ex-ahead-cue__row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}.ex-ahead-cue__row input{width:5.5rem}.ex-ahead-cue .field-hint{display:block;margin:var(--sp-1) 0 0}.ex-ahead-warn{margin:var(--sp-1) 0 0;padding:0;list-style:none}.ex-ahead-warn:empty{display:none}.ex-ahead-warn .field-warn{color:var(--color-warning);font-size:var(--fs-small)}.ltl{margin:0 0 var(--sp-3)}.ltl[hidden]{display:none}.ltl__track{position:relative;padding-top:1.4em}.ltl__bars{list-style:none;margin:0;padding:0;position:relative;height:44px;border-bottom:1px solid var(--color-border)}.ltl__bar{position:absolute;top:0;bottom:2px;min-width:6px;padding-right:1px;box-sizing:border-box}.ltl__face{display:flex;align-items:center;gap:4px;width:100%;height:100%;padding:0 6px;overflow:hidden;font:inherit;font-size:var(--fs-small);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg-deep);box-sizing:border-box}button.ltl__face{cursor:pointer}button.ltl__face:hover{outline:2px solid var(--color-accent);outline-offset:-2px}.ltl__bar.is-coding .ltl__face{background:var(--color-accent-soft)}.ltl__bar.is-test .ltl__face{background:var(--color-info-background)}.ltl__bar.is-break .ltl__face{background:var(--color-bg-panel);border-style:dashed}.ltl__bar.is-untimed .ltl__face{padding:0;justify-content:center}.ltl__bar.is-untimed .ltl__name,.ltl__bar.is-untimed .ltl__icon{display:none}.ltl__icon{flex:0 0 auto}.ltl__name{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ltl__bell{position:absolute;top:0;bottom:0;width:0;border-left:2px solid var(--color-text);z-index:2;pointer-events:none}.ltl__bell>span{position:absolute;top:-2px;left:2px;font-size:var(--fs-small)}.ltl__late{position:absolute;top:1.4em;bottom:0;z-index:1;pointer-events:none;background:repeating-linear-gradient(45deg,transparent 0 6px,color-mix(in srgb,var(--color-warning) 30%,transparent) 6px 12px)}.ltl__axis{position:relative;height:1.5em;font-size:var(--fs-small);color:var(--color-text-soft)}.ltl__tick{position:absolute;top:0;transform:translate(-50%)}.ltl__tick:first-child{transform:none}.ltl__grip{position:absolute;top:0;bottom:0;right:0;width:8px;cursor:ew-resize;touch-action:none}.ltl__grip:hover{background:color-mix(in srgb,var(--color-accent) 40%,transparent)}.ltl__bar.is-dragging{z-index:4;opacity:.8}.ltl__hint{margin:2px 0 0;font-size:var(--fs-small);color:var(--color-text-soft)}.ltl__flag{position:absolute;top:-1.3em;transform:translate(-50%);font-size:var(--fs-small);line-height:1;cursor:default;z-index:3}.cueed{margin:0 0 var(--sp-3);padding:var(--sp-2) var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg-panel)}.cueed[hidden]{display:none}.cueed__head{display:flex;align-items:center;gap:var(--sp-2)}.cueed__head strong{flex:1;min-width:0;overflow-wrap:anywhere}.cueed__list{list-style:none;margin:var(--sp-2) 0 0;padding:0}.cueed__row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);padding:2px 0}.cueed__form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--sp-2);margin-top:var(--sp-2)}.cueed__form .field[hidden]{display:none}.cue-note{position:fixed;top:var(--sp-3);left:50%;transform:translate(-50%);z-index:50;max-width:min(90vw,1200px);margin:0;padding:var(--sp-2) var(--sp-4);font-size:clamp(1rem,2.2vw,2rem);font-weight:700;color:var(--color-text);background:var(--color-bg-panel);border:2px solid var(--color-accent);border-radius:var(--radius);box-shadow:0 4px 16px #0003}.cue-note[hidden]{display:none}.cue-card__queue{margin-left:var(--sp-1);font-size:var(--fs-small);font-weight:400;color:var(--color-text-soft);white-space:nowrap}.plancol__cue.is-lapsed{color:var(--color-text-soft);font-style:italic}.ltl__msg{margin:var(--sp-1) 0 0;font-size:var(--fs-small);color:var(--color-text-soft)}.ltl__msg.is-over{color:var(--color-warning);font-weight:700}@media(max-width:600px){.ltl__bars{height:auto;border:0}.ltl__bar{position:static;width:auto!important;min-height:28px;margin-bottom:2px}.ltl__bell,.ltl__late,.ltl__axis{display:none}}.plancol__end{margin:var(--sp-1) 0 0;font-size:var(--fs-small);color:var(--color-text-soft)}.plancol__end[hidden]{display:none}.plancol__end.is-over{color:var(--color-warning);font-weight:700}.plancol__track{position:relative;display:block;height:4px;margin-top:3px;border-radius:2px;background:var(--color-bg-deep);max-width:100%}.plancol__track[hidden]{display:none}.plancol__fill{position:absolute;left:0;top:0;bottom:0;border-radius:2px;background:var(--color-accent)}.plancol__track.is-over .plancol__fill{background:var(--color-warning)}.plancol__planline{position:absolute;top:-2px;bottom:-2px;width:2px;margin-left:-1px;background:var(--color-text)}.plancol__time.is-over{color:var(--color-warning)}.plancol__cue{white-space:nowrap}.plancol__cue.is-accepted,.plancol__cue.is-already{color:var(--color-accent)}.plancol__cue.is-dismissed{text-decoration:line-through}.lesson-overview__cue,.lesson-item__cue{color:var(--color-text-soft);font-size:var(--fs-small);white-space:nowrap}.topbar__series{cursor:pointer;border:1px solid var(--color-border);background:transparent;color:inherit;font:inherit}.topbar__series:disabled{cursor:default}.topbar__series-arrow{margin-left:2px}.series-cards{list-style:none;margin:var(--sp-3) 0 0;padding:0;display:grid;gap:var(--sp-2);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));max-height:60vh;overflow-y:auto}.series-who__settings{display:flex;flex-wrap:wrap;gap:var(--sp-1) var(--sp-3);margin:var(--sp-1) 0}.series-stepbar{position:fixed;right:var(--sp-3);bottom:var(--sp-3);z-index:39;display:flex;align-items:center;gap:var(--sp-2);max-width:calc(100vw - 2 * var(--sp-3))}.series-stepbar[hidden]{display:none}.series-stepbar__note{padding:var(--sp-1) var(--sp-2);border-radius:6px;background:var(--color-bg);color:var(--color-text);border:1px solid var(--color-border)}.series-card{display:grid;gap:2px;width:100%;height:100%;text-align:left;padding:var(--sp-3);border:1px solid var(--color-border);border-radius:8px;background:var(--color-bg);color:var(--color-text);cursor:pointer;font:inherit}.series-card:hover:not(:disabled){border-color:var(--color-accent)}.series-card:disabled{cursor:default;opacity:.7}.series-card.is-current{border-color:var(--color-accent);box-shadow:inset 0 0 0 1px var(--color-accent)}.series-card__title{font-weight:600;overflow-wrap:anywhere}.series-card__size,.series-card__state{font-size:var(--fs-small);color:var(--color-text-soft)}.series-slide{display:flex;justify-content:center}.series-slide__img{max-width:100%;max-height:62vh;object-fit:contain}.picker-item--class{display:flex;align-items:center;gap:var(--sp-2);margin:0;color:var(--color-text-soft);background:transparent;border-style:dashed;cursor:default}.runstrip__series{white-space:nowrap}.runstrip__chip{align-self:center;font-size:var(--fs-small);color:var(--color-text-soft);white-space:nowrap}.seriescol{list-style:none;margin:0;padding:0;overflow-y:auto}.seriescol__row{border-bottom:1px solid var(--color-border)}.seriescol__head{display:flex;align-items:baseline;gap:var(--sp-2);padding:var(--sp-2) 0;cursor:pointer}.seriescol__title{font-weight:600;flex:1;min-width:0;overflow-wrap:anywhere}.seriescol__count{font-size:var(--fs-small);color:var(--color-text-soft);white-space:nowrap}.seriescol__items{list-style:none;margin:0 0 var(--sp-2);padding:0}.seriescol__item{display:flex;align-items:flex-start;gap:var(--sp-1);padding:2px 0}.seriescol__item--class{color:var(--color-text-soft)}.seriescol__peek{border:0;background:transparent;color:var(--color-text);cursor:pointer;padding:0 2px;font:inherit}.seriescol__text{min-width:0;display:grid}.seriescol__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.seriescol__meta{font-size:var(--fs-small);color:var(--color-text-soft)}.overlay--series .overlay__card.seriesview{width:min(58rem,96vw);max-width:min(58rem,96vw)}.seriesview__body{display:grid;gap:var(--sp-3);min-width:0}.seriesview__note{flex-basis:100%;margin:0;font-size:var(--fs-small);color:var(--color-text-soft)}#seriesMoveTo{max-width:min(28rem,60vw)}.seriesview__who{display:grid;gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));max-height:50vh;overflow-y:auto}.seriesview__move{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}.series-who__title{margin:0 0 var(--sp-1);font-size:1rem;overflow-wrap:anywhere}.series-who__n{color:var(--color-text-soft);font-weight:400}.series-who__list{list-style:none;margin:0;padding:0}.series-who__row{display:flex;justify-content:space-between;gap:var(--sp-2);align-items:center}.series-who__free{border:0;background:transparent;color:var(--color-accent);cursor:pointer;font-size:var(--fs-small);white-space:nowrap}.series-who__none{color:var(--color-text-soft);font-size:var(--fs-small)}.dash-series-head{grid-column:1 / -1;text-align:left;border:0;background:transparent;color:var(--color-text);font:inherit;font-weight:600;cursor:pointer;padding:var(--sp-1) 0}.matrix-tabs{display:flex;flex-wrap:wrap;gap:var(--sp-1);margin-bottom:var(--sp-2)}.matrix-tab{border:1px solid var(--color-border);border-radius:999px;background:transparent;color:inherit;font:inherit;padding:2px var(--sp-2);cursor:pointer}.matrix-tab[aria-selected=true]{background:var(--color-accent);color:var(--color-accent-text);border-color:var(--color-accent)}.detail-series{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);padding:0 var(--sp-3) var(--sp-2)}.start-lessons{margin-bottom:var(--sp-3)}.start-lessons__list{list-style:none;margin:var(--sp-1) 0;padding:0;max-height:28vh;overflow-y:auto}.start-lessons__row{display:flex;align-items:center;gap:var(--sp-2)}.start-lessons__name{overflow-wrap:anywhere}.start-lessons__meta{color:var(--color-text-soft);font-size:var(--fs-small)}.start-lessons__drop{margin-left:auto;padding:0 var(--sp-1)}.start-lessons__pick{display:block;width:100%;text-align:left;border:0;background:transparent;color:inherit;font:inherit;padding:var(--sp-1);cursor:pointer}.start-lessons__pick:hover:not(:disabled){background:var(--color-accent-soft)}.start-lessons__pick:disabled{cursor:default;opacity:.6}.start-lessons__picker{margin-top:var(--sp-2)}.series-board{display:grid;grid-template-columns:repeat(auto-fit,minmax(16em,1fr));gap:var(--sp-4)}.series-board__title{margin:0 0 var(--sp-2);font-size:1.1em;overflow-wrap:anywhere}.series-board__n{color:var(--color-text-soft);font-weight:400}.series-board__items{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-1)}.series-board__item{display:flex;align-items:baseline;gap:var(--sp-2)}.series-board__name{flex:1;min-width:0;overflow-wrap:anywhere}.lesson-series{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-3)}.runstrip__class{display:inline-flex;align-items:center;gap:var(--sp-1);white-space:nowrap;font-size:var(--fs-small)}#classSeriesPick{max-width:14rem}.series-card__blurb{font-size:var(--fs-small);color:var(--color-text)}.series-who__version{margin:0 0 var(--sp-1);font-size:var(--fs-small);color:var(--color-text-soft)}.series-who__remove{margin-top:var(--sp-1);border:0;background:transparent;color:var(--color-accent);cursor:pointer;font-size:var(--fs-small);padding:0}.seriesview__add{display:grid;gap:var(--sp-2);justify-items:start}.seriesview__add .start-lessons__picker{width:100%}.hp{margin:0;min-height:100vh;display:flex;flex-direction:column}.hp-trial{margin:0;padding:var(--sp-2) var(--sp-4);background:var(--color-warning);color:var(--color-accent-text);font-weight:600;text-align:center}.hp-bar{display:flex;align-items:baseline;gap:var(--sp-3);flex-wrap:wrap;padding:var(--sp-3) var(--sp-4) 0}.hp-title{margin:0;font-size:var(--fs-large)}.hp-settitle{color:var(--color-text-soft)}.hp-lang{margin-left:auto;display:inline-flex;gap:2px}.hp-lang button{font:inherit;padding:var(--sp-1) var(--sp-2);border:1px solid var(--color-border);background:var(--color-bg-panel);color:var(--color-text);border-radius:var(--radius-small);cursor:pointer}.hp-lang button[aria-pressed=true]{background:var(--color-accent);color:var(--color-accent-text);border-color:transparent}.hp-compiler{margin:var(--sp-2) var(--sp-4) 0;color:var(--color-text-soft);font-size:var(--fs-small)}.hp-compiler[data-state=ready]{color:var(--color-ok)}.hp-compiler[data-state=failed]{color:var(--color-error);font-weight:600}.hp-main{flex:1;display:grid;grid-template-columns:minmax(180px,240px) minmax(0,1fr);gap:var(--sp-4);padding:var(--sp-3) var(--sp-4)}.hp-list__head{font-size:var(--fs-normal);margin:0 0 var(--sp-2)}.hp-list ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-1)}.hp-ex{width:100%;display:flex;justify-content:space-between;gap:var(--sp-2);text-align:left;font:inherit;padding:var(--sp-2);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg-panel);color:var(--color-text);cursor:pointer}.hp-ex.is-current{border-color:var(--color-accent);box-shadow:inset 3px 0 0 var(--color-accent)}.hp-ex__done{color:var(--color-text-soft);font-variant-numeric:tabular-nums;white-space:nowrap}.hp-ex__done.is-all{color:var(--color-ok);font-weight:600}.hp-work{min-width:0;display:flex;flex-direction:column;gap:var(--sp-3)}.hp-extitle{margin:0;font-size:var(--fs-large)}.hp-parts{display:flex;flex-wrap:wrap;gap:var(--sp-1)}.hp-part{font:inherit;padding:var(--sp-1) var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-bg-panel);color:var(--color-text);cursor:pointer}.hp-part.is-current{border-color:var(--color-accent);font-weight:600}.hp-part.is-done{color:var(--color-ok)}.hp-part:disabled{opacity:.55;cursor:not-allowed}.hp-prompt{background:var(--color-bg-panel);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--sp-3) var(--sp-4);max-height:40vh;overflow:auto;line-height:1.5}.hp-editor{min-height:280px;height:42vh;border:1px solid var(--color-border);border-radius:var(--radius-small);flex:none}.hp-actions{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.hp-result{font-weight:600}.hp-result.is-ok{color:var(--color-ok)}.hp-result.is-fail{color:var(--color-error)}.hp-terminal{height:240px;flex:none;border-radius:var(--radius-small)}.hp-tests{display:flex;flex-direction:column;gap:var(--sp-2)}.hp-case{border:1px solid var(--color-border);border-radius:var(--radius-small);padding:var(--sp-2) var(--sp-3);background:var(--color-bg-panel)}.hp-case.is-ok summary{color:var(--color-ok)}.hp-case.is-fail summary{color:var(--color-error);font-weight:600}.hp-case__cols{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3);margin-top:var(--sp-2)}.hp-case__label{font-size:var(--fs-small);color:var(--color-text-soft)}.hp-case pre{margin:0;white-space:pre-wrap;font-family:var(--font-mono);font-size:var(--fs-small);background:var(--color-field);border:1px solid var(--color-border);border-radius:var(--radius-small);padding:var(--sp-2)}.hp-privacy{border-top:1px solid var(--color-border);padding:var(--sp-3) var(--sp-4) var(--sp-5);background:var(--color-bg-panel)}.hp-privacy h2{font-size:var(--fs-normal);margin:0 0 var(--sp-1)}.hp-privacy p{margin:var(--sp-1) 0}.hp-warn{color:var(--color-warning);font-weight:600}.hp-footbtns{display:flex;gap:var(--sp-2);flex-wrap:wrap;margin:var(--sp-2) 0}.hp-details ul{margin:var(--sp-2) 0 0;padding-left:var(--sp-5)}@media(max-width:720px){.hp-main,.hp-case__cols{grid-template-columns:1fr}}
