:root{--bg: #0b0f12;--panel: #141a1e;--raised: #1c252a;--ink: #e7eef2;--muted: #8fa0a8;--amber: #f0a050;--teal: #5bc4b0;--coral: #f07070;--paper: #f3ede3;--paper-ink: #1a1f22;--line: #2e3d4d;--haze: #8fa0b2;--text: var(--ink);--panel-2: #22303c;--dvc: #3776ab;--code: #60a5fa;--ok: var(--teal);--warn: var(--amber);--err: var(--coral);--remote: var(--amber);--cache: var(--teal);--font-display: "Fraunces", "Iowan Old Style", Georgia, serif;--font-body: "IBM Plex Sans", "Segoe UI", sans-serif;--font-mono: "IBM Plex Mono", "Cascadia Code", "Consolas", monospace;--ui: var(--font-body);--mono: var(--font-mono);--ease: cubic-bezier(.32, .72, 0, 1);color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;height:100%;min-height:100%;background:var(--bg);color:var(--text);font-family:var(--ui);font-size:14px;line-height:1.45;overflow:hidden}#app{height:100vh;height:100dvh;display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,360px);min-height:0;overflow:hidden}.app-main{display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;min-height:0;min-width:0;height:100%;max-height:100vh;max-height:100dvh;overflow:hidden;border-inline-end:1px solid var(--line)}.toolbar{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--panel);border-bottom:1px solid var(--line);border-inline-end:1px solid var(--line);flex-wrap:wrap}.brand{display:inline-flex;align-items:center;gap:9px;font-weight:700;font-size:15px;letter-spacing:.02em;color:var(--text);text-decoration:none}.brand:focus-visible{outline:2px solid var(--amber);outline-offset:3px;border-radius:6px}.brand-logo{display:block;width:22px;height:22px;border-radius:6px;flex:0 0 auto}.brand-text{white-space:nowrap}.brand-accent{color:var(--amber)}.level-title{font-family:var(--mono);color:var(--haze);font-size:12px}.lang-menu{position:relative;display:inline-flex}.lang-btn{min-width:3.2rem;min-height:36px;padding:6px 10px;font-size:12px;letter-spacing:.04em;border:1px solid var(--line);border-radius:8px;background:transparent;color:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:6px}.lang-btn:hover{border-color:currentColor}.lang-caret{width:0;height:0;border-inline-start:4px solid transparent;border-inline-end:4px solid transparent;border-top:5px solid currentColor;opacity:.7}.lang-dropdown{display:none;position:absolute;top:calc(100% + 6px);inset-inline-end:0;flex-direction:column;gap:4px;min-width:88px;padding:6px;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 16px 40px #0006;z-index:60}.lang-dropdown.is-open{display:flex}.lang-dropdown[hidden]{display:none!important}.lang-dropdown.is-open[hidden]{display:flex!important}.lang-option{min-height:36px;padding:8px 10px;border:1px solid transparent;border-radius:6px;background:transparent;color:inherit;cursor:pointer;text-align:start;font-size:12px;letter-spacing:.04em}.lang-option:hover{background:var(--panel-2)}.lang-option.on{border-color:color-mix(in srgb,var(--dvc) 50%,var(--line));background:color-mix(in srgb,var(--dvc) 14%,transparent)}.toolbar-actions{margin-inline-start:auto;display:flex;gap:8px;flex-wrap:wrap;align-items:center;position:relative}.nav-toggle{display:none;width:42px;height:42px;border:1px solid var(--line);border-radius:8px;background:transparent;color:var(--text);cursor:pointer;align-items:center;justify-content:center;padding:0}.nav-bars,.nav-bars:before,.nav-bars:after{display:block;width:18px;height:2px;background:currentColor;border-radius:1px;position:relative}.nav-bars:before,.nav-bars:after{content:"";position:absolute;inset-inline-start:0}.nav-bars:before{top:-6px}.nav-bars:after{top:6px}.nav-drawer{display:contents}.help-btn{width:40px;height:40px;min-width:40px;min-height:40px;padding:0;border:1px solid var(--line);border-radius:8px;background:transparent;color:var(--text);font-family:var(--ui);font-size:16px;font-weight:600;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.help-btn:hover{border-color:var(--haze);background:var(--panel-2)}.tb-link{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:7px 12px;border-radius:8px;border:1px solid var(--line);background:transparent;color:var(--text);text-decoration:none;font-family:var(--ui);font-size:13px;box-sizing:border-box}.tb-link:hover{border-color:var(--haze);background:var(--panel-2);text-decoration:none}.tb-link:focus-visible{outline:2px solid var(--code);outline-offset:2px}.tb-stat{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:6px 10px;border-radius:8px;border:1px solid color-mix(in srgb,var(--dvc) 35%,var(--line));background:color-mix(in srgb,var(--panel-2) 65%,transparent);color:color-mix(in srgb,var(--text) 90%,var(--dvc));font-family:var(--mono);font-size:13px;font-weight:600;letter-spacing:.04em;box-sizing:border-box;-webkit-user-select:none;user-select:none}.tb-stat .visitor-icon{color:var(--dvc);flex-shrink:0}.tb-stat[hidden]{display:none!important}.tb-link.support{color:#ffe6b0;border-color:color-mix(in srgb,var(--remote) 55%,var(--line));background:color-mix(in srgb,var(--remote) 14%,var(--panel-2))}.tb-link.support:hover{background:color-mix(in srgb,var(--remote) 24%,var(--panel-2))}.tb-link.gh{gap:0;justify-content:center;width:40px;min-width:40px;height:40px;padding:0}.tb-link .gh-mark{display:block;flex:0 0 18px}button,.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line);background:var(--panel-2);color:var(--text);border-radius:8px;padding:7px 12px;font-family:var(--ui);font-size:13px;cursor:pointer;min-height:36px;transition:border-color .16s var(--ease),color .16s var(--ease),background .16s var(--ease)}button:hover,.btn:hover{border-color:var(--haze);background:#2a3a4a}button:focus-visible,.btn:focus-visible{outline:2px solid var(--code);outline-offset:2px}button:disabled,.btn:disabled{opacity:.45;cursor:not-allowed}button.primary,.btn.primary{background:color-mix(in srgb,var(--dvc) 35%,var(--panel-2));border-color:color-mix(in srgb,var(--dvc) 55%,var(--line));color:var(--text)}button.primary:hover,.btn.primary:hover{color:#fff}button.ghost,.btn.ghost{background:transparent}.btn-sm{min-height:28px;padding:4px 10px;font-size:12px}.board-wrap{display:flex;flex-direction:column;min-height:0;overflow:hidden;background:var(--bg)}.board-header{padding:8px 14px;background:var(--panel);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.board-tabs{display:flex;gap:6px}.board-tab{background:transparent;border:1px solid transparent;color:var(--haze);font-size:13px;padding:4px 10px;border-radius:6px;cursor:pointer;display:inline-flex;align-items:center;gap:8px;min-height:32px}.board-tab.is-active{background:var(--panel-2);border-color:var(--line);color:var(--text);font-weight:600}.tab-badge{font-family:var(--mono);font-size:11px;background:var(--line);padding:1px 6px;border-radius:10px}.tab-badge.ok{background:transparent;color:var(--ok);font-size:14px}.step-bar{display:flex;align-items:center;gap:8px;padding:6px 14px;background:var(--panel);border-bottom:1px solid var(--line)}.step-label{font-family:var(--mono);font-size:11px;color:var(--haze);text-transform:uppercase;letter-spacing:.08em;margin-right:2px}.step-btn{background:var(--panel-2);border:1px solid var(--line);color:var(--text);font-size:13px;line-height:1;width:30px;height:28px;border-radius:6px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.step-btn:hover:not(:disabled){border-color:var(--amber)}.step-btn:disabled{opacity:.4;cursor:default}.step-bar[hidden]{display:none}.step-btn.play{color:var(--ok);font-weight:700}.step-count{font-family:var(--mono);font-size:12px;color:var(--haze);margin-left:4px;min-width:52px;text-align:right}.board-body{flex:1;min-height:0;overflow:hidden;padding:0}.board-pane{display:none;height:100%;min-height:0}.board-pane.is-active{display:block}.canvas-wrap{height:100%;overflow:auto;padding:16px;background:radial-gradient(ellipse 80% 60% at 30% 20%,rgba(240,160,80,.045),transparent 60%),var(--bg)}.canvas-wrap svg{display:block;min-width:420px}.ref-edge{stroke-dasharray:1}.board-empty{display:flex;align-items:center;justify-content:center;height:100%;color:var(--haze);text-align:center;padding:24px}.board-empty code{font-family:var(--mono);color:var(--amber)}.plot-stage{display:flex;align-items:flex-start;justify-content:flex-start;height:100%;overflow:auto;padding:16px}.plot-cards{display:flex;flex-direction:column;gap:16px;width:100%;max-width:560px}.plot-card{margin:0;border:1px solid var(--line);background:#10161a;border-radius:12px;padding:8px 10px 10px}.plot-card .plot-svg{display:block;width:100%;height:auto}.plot-canvas-img{max-width:100%;border-radius:6px;border:1px solid var(--line);background:#fff}.editor-drawer{display:none;background:var(--panel);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.editor-drawer.is-open{display:block}.editor-bar{display:flex;align-items:center;justify-content:space-between;padding:6px 14px;background:var(--panel-2)}.editor-title{font-size:12px;font-family:var(--mono);color:var(--haze)}.editor-bar-actions{display:flex;align-items:center;gap:8px}.kbd-badge{font-size:10px;font-family:var(--mono);opacity:.8;background:#00000040;padding:1px 4px;border-radius:3px}.editor-textarea-wrap{padding:8px 14px}.editor-textarea{width:100%;background:var(--bg);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:8px 10px;font-family:var(--mono);font-size:13px;line-height:1.5;resize:vertical}.editor-textarea:focus{outline:none;border-color:var(--amber)}.terminal{display:flex;flex-direction:column;background:var(--bg);height:220px;min-height:140px;border-top:1px solid var(--line)}.term-toolbar{display:flex;align-items:center;justify-content:space-between;padding:4px 12px;background:var(--panel);border-bottom:1px solid var(--line)}.term-status-badge{font-size:11px;font-family:var(--mono);color:var(--haze)}.term-log{flex:1;min-height:0;overflow-y:auto;padding:8px 12px;font-family:var(--mono);font-size:13px;line-height:1.5}.term-row{margin-bottom:3px;white-space:pre-wrap;word-break:break-word}.term-row.is-cmd{color:var(--amber)}.term-row.is-out{color:var(--text)}.term-row.is-err{color:var(--err)}.term-row.is-meta{color:var(--haze);font-style:italic}.term-row.is-ok{color:var(--ok);font-weight:600}.term-hint{padding:6px 14px 0;font-family:var(--ui);font-size:12px;color:var(--haze);background:var(--bg)}.term-hint code{font-family:var(--mono);color:var(--amber);background:color-mix(in srgb,var(--amber) 12%,var(--panel-2));border:1px solid color-mix(in srgb,var(--amber) 45%,var(--line));border-radius:4px;padding:1px 6px}.term-hint[hidden]{display:none!important}.term-input-row{display:flex;align-items:center;padding:6px 12px;background:var(--panel);border-top:1px solid var(--line)}.prompt{font-family:var(--mono);color:var(--amber);font-weight:700;margin-inline-end:8px}.term-input-wrap{position:relative;flex:1;display:flex;align-items:center}.term-ghost{position:absolute;top:0;inset-inline-start:0;height:100%;display:none;align-items:center;padding:0;font-family:var(--mono);font-size:13px;color:color-mix(in srgb,var(--haze) 90%,transparent);opacity:.65;pointer-events:none;white-space:pre;overflow:hidden;max-width:calc(100% - 8px);z-index:2}.term-ghost[data-visible="1"]{display:flex}.term-input{width:100%;background:transparent;border:0;color:var(--text);font-family:var(--mono);font-size:13px;outline:none;padding:0;position:relative;z-index:3}.dock{grid-column:2;grid-row:1 / -1;height:100vh;height:100dvh;max-height:100vh;max-height:100dvh;border-inline-start:1px solid var(--line);background:var(--panel);padding:14px;overflow-x:hidden;overflow-y:auto;min-height:0;min-width:0;box-sizing:border-box;font-size:13px}.dock-pulse{animation:dock-pulse-anim 1.2s ease-out}@keyframes dock-pulse-anim{0%{box-shadow:inset 0 0 0 2px var(--amber)}to{box-shadow:none}}.dock h2{margin:0 0 8px;font-size:14px;position:sticky;top:0;background:var(--panel);padding-bottom:6px;z-index:1}.dock .objective{color:var(--haze);font-size:13px;margin-bottom:12px;line-height:1.5}.dock .objective code{font-family:var(--mono);font-size:12px;color:var(--text);background:var(--raised);border-radius:4px;padding:1px 4px}.goal-list{list-style:none;margin:0 0 14px;padding:0;display:flex;flex-direction:column;gap:8px}.goal-list li{border:1px solid var(--line);border-radius:8px;padding:8px;background:var(--bg);font-size:12px}.goal-list li.met{border-color:color-mix(in srgb,var(--ok) 45%,var(--line))}.goal-list li.current{border-color:var(--amber);background:color-mix(in srgb,var(--amber) 12%,var(--bg));box-shadow:0 0 0 1px color-mix(in srgb,var(--amber) 70%,transparent);animation:neon-pulse 1.6s ease-in-out infinite}.goal-list li.current code{color:#ffd29a}.goal-list li.current .g-detail{color:#ffc07a}.chip.current-chip{color:#1a0d00;background:var(--amber);border-color:var(--amber);font-weight:700;letter-spacing:.04em}@keyframes neon-pulse{0%,to{box-shadow:0 0 0 1px color-mix(in srgb,var(--amber) 70%,transparent),0 0 12px color-mix(in srgb,var(--amber) 40%,transparent)}50%{box-shadow:0 0 0 1px color-mix(in srgb,var(--amber) 90%,transparent),0 0 18px color-mix(in srgb,var(--amber) 60%,transparent)}}.goal-list li.optional{opacity:.72}.goal-list li code{font-family:var(--mono);font-size:12px;color:var(--text)}.g-step-cmd{cursor:pointer;border-radius:4px;padding:1px 4px;transition:background-color .15s ease,color .15s ease;-webkit-user-select:all;user-select:all}.g-step-cmd:hover{background:color-mix(in srgb,var(--amber) 24%,var(--line));color:#fff}.goal-list .g-label{font-family:var(--ui);color:var(--text)}.goal-list .g-detail{color:var(--haze);font-family:var(--mono);margin-top:2px}.goal-list li.met .g-detail{color:var(--ok)}.g-cmd{display:block;margin-top:6px;font-family:var(--mono);font-size:12px;color:var(--amber);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:4px 6px;word-break:break-all}.learning-box{border:1px solid color-mix(in srgb,var(--amber) 40%,var(--line));background:color-mix(in srgb,var(--amber) 8%,var(--bg));border-radius:10px;padding:10px;margin:0 0 10px}.field-box{border:1px solid color-mix(in srgb,var(--teal) 40%,var(--line));background:color-mix(in srgb,var(--teal) 8%,var(--bg));border-radius:10px;padding:10px;margin:0 0 10px}.field-box ul,.learning-box ul{margin:6px 0 0;padding-inline-start:16px}.field-box li,.learning-box li{font-size:12px;color:var(--text);margin-bottom:4px;line-height:1.4}.next-box{border:1px solid color-mix(in srgb,var(--amber) 40%,var(--line));background:color-mix(in srgb,var(--amber) 10%,var(--bg));border-radius:10px;padding:10px;margin-bottom:12px}.next-box.met{border-color:color-mix(in srgb,var(--ok) 40%,var(--line));background:color-mix(in srgb,var(--ok) 10%,var(--bg))}.next-title{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--haze);margin-bottom:6px;font-weight:700}.next-row{margin-bottom:6px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.next-row .g-cmd{margin-top:0}.par-note{font-size:12px;color:var(--haze);margin:8px 0;line-height:1.4;font-family:var(--mono)}.chip{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:1px 8px;font-family:var(--ui);font-size:11px;border:1px solid var(--line);color:var(--haze);background:var(--panel-2)}.chip.ok{color:#b8ffd9;border-color:color-mix(in srgb,var(--ok) 45%,var(--line))}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#060a0eb8;display:flex;align-items:center;justify-content:center;padding:20px;z-index:100}.modal{width:min(720px,100%);max-height:min(82vh,720px);overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px;box-shadow:0 20px 60px #00000073}.modal:focus{outline:none}.modal h2{margin:0 0 8px;font-family:var(--font-display);font-size:22px;font-weight:600;line-height:1.15}.modal .markdown,.modal-body{color:var(--text);font-size:14px;line-height:1.55}.modal .markdown code,.modal-body code{font-family:var(--mono);background:var(--bg);border:1px solid var(--line);border-radius:4px;padding:1px 5px;font-size:12.5px}.modal .markdown pre,.modal-body pre,.modal-body pre.md-code{background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:10px;overflow:auto;font-family:var(--mono);font-size:12.5px}.modal .markdown p,.modal-body p{margin:0 0 10px}.modal .markdown ul,.modal-body ul{margin:0 0 12px;padding-inline-start:18px}.modal .markdown li,.modal-body li{margin-bottom:4px}.modal .markdown strong,.modal-body strong{font-weight:600}.modal .markdown a,.modal-body a{color:var(--amber);text-underline-offset:3px}.modal .markdown a:hover,.modal-body a:hover{color:var(--text);text-decoration:underline}.modal .markdown h4,.modal-body h4{margin:14px 0 6px;font-size:14px;font-weight:600}.modal .md-table-wrap,.modal-body .md-table-wrap{overflow-x:auto;margin:8px 0 12px;border:1px solid var(--line);border-radius:8px}.modal .md-table,.modal-body table.md-table{width:100%;border-collapse:collapse;font-size:12.5px}.modal .md-table th,.modal-body table.md-table th,.modal .md-table td,.modal-body table.md-table td{border-bottom:1px solid var(--line);padding:8px 10px;text-align:start;vertical-align:top}.modal .md-table th,.modal-body table.md-table th{background:var(--panel-2);color:var(--amber);font-weight:600;white-space:nowrap}.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:16px;flex-wrap:wrap}.overlay-celebrate{background:#060a0ed1;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-celebrate{width:min(520px,100%);text-align:center;border-color:color-mix(in srgb,var(--ok) 35%,var(--line));box-shadow:0 0 0 1px color-mix(in srgb,var(--ok) 20%,transparent),0 24px 80px #5bc4b01f,0 20px 60px #00000080;animation:celebrate-pop .42s cubic-bezier(.2,.9,.25,1.2)}.celebrate{text-align:center;padding:4px 2px 2px}.celebrate-visual{position:relative;width:88px;height:88px;margin:0 auto 8px;display:grid;place-items:center}.celebrate-ring{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;border:2px solid color-mix(in srgb,var(--ok) 55%,transparent);background:radial-gradient(circle,color-mix(in srgb,var(--ok) 22%,transparent),transparent 70%);animation:ring-pulse 1.8s ease-out infinite}.celebrate-star{position:relative;font-size:42px;line-height:1;color:var(--amber);text-shadow:0 0 18px color-mix(in srgb,var(--amber) 55%,transparent);animation:star-bounce .7s cubic-bezier(.2,.9,.3,1.4)}.celebrate-badge{display:inline-block;font-family:var(--mono);font-size:12px;letter-spacing:.14em;color:#062016;background:linear-gradient(135deg,var(--ok),var(--teal));border-radius:999px;padding:5px 14px;margin-bottom:10px;font-weight:700}.celebrate-title{margin:0 0 4px;font-family:var(--font-display);font-size:26px;font-weight:600}.celebrate-sub{margin:0 0 8px;color:var(--haze);font-family:var(--mono);font-size:12px}.celebrate-cheer{margin:0 0 12px;color:var(--text);font-size:15px}.celebrate-stats{margin:0 auto 12px;max-width:420px;border:1px solid var(--line);background:var(--bg);border-radius:10px;padding:10px 12px;text-align:start;font-family:var(--mono);font-size:13px}.celebrate-next{color:var(--haze);font-size:13px}@keyframes celebrate-pop{0%{opacity:0;transform:scale(.88) translateY(18px)}to{opacity:1;transform:none}}@keyframes ring-pulse{0%{transform:scale(.85);opacity:.9}50%{transform:scale(1.12);opacity:.4}to{transform:scale(.85);opacity:.9}}@keyframes star-bounce{0%{transform:scale(.3) rotate(-20deg);opacity:0}60%{transform:scale(1.2) rotate(10deg);opacity:1}to{transform:scale(1) rotate(0)}}.legend-box{border:1px solid var(--line);background:var(--bg);border-radius:10px;padding:10px 12px;margin:0 0 14px}.legend-box .next-title{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--haze);margin-bottom:6px}.legend-list{margin:6px 0 0;padding-inline-start:16px}.legend-list li{margin-bottom:6px;font-size:12.5px;line-height:1.4}.legend-list li code{font-family:var(--mono);font-size:12px}.ui-help{display:grid;gap:12px}.ui-help-item{border:1px solid var(--line);background:var(--bg);border-radius:10px;padding:10px 12px}.ui-help-item h3{margin:0 0 6px;font-size:14px;color:var(--teal)}.ui-help-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}.ui-help-head h3{margin:0}.ui-help-focus{flex:0 0 auto;min-height:32px;padding:6px 10px;border:1px solid var(--line);border-radius:8px;background:transparent;color:var(--text);font-family:var(--ui);font-size:12px;cursor:pointer}.ui-help-focus:hover{border-color:var(--haze);background:var(--panel-2)}.ui-help-what{margin-bottom:6px;font-size:13px;color:var(--text)}.ui-help-how{font-size:12px;color:var(--haze)}.ui-tour-on{outline:2px dashed color-mix(in srgb,var(--amber) 70%,transparent)!important;outline-offset:3px;animation:tour-pulse 1.2s ease-in-out infinite}@keyframes tour-pulse{0%,to{outline-color:color-mix(in srgb,var(--amber) 45%,transparent)}50%{outline-color:color-mix(in srgb,var(--teal) 75%,transparent)}}@media(prefers-reduced-motion:reduce){.ui-tour-on{animation:none;outline:2px solid var(--amber)!important}}.series-block{margin-bottom:16px}.series-block h3{margin:0 0 8px;color:var(--haze);font-size:12px;text-transform:uppercase;letter-spacing:.06em}.level-list{display:grid;gap:8px}.level-row{display:grid;grid-template-columns:auto 1fr auto auto;gap:10px;align-items:center;border:1px solid var(--line);border-radius:10px;padding:10px;background:var(--bg);text-align:start;width:100%}.level-row.start-here{border-color:color-mix(in srgb,var(--ok) 45%,var(--line))}.diff-dots{display:inline-flex;align-items:center;gap:3px;vertical-align:middle;line-height:1}.diff-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:transparent;border:1px solid var(--haze);box-sizing:border-box;flex:0 0 7px}.diff-dot.on{background:var(--amber);border-color:var(--amber)}.legend-list .start-mark{color:var(--ok);font-weight:700}.level-row:hover{border-color:var(--haze);background:#222c32}.level-row.active{border-color:var(--amber);background:color-mix(in srgb,var(--amber) 12%,var(--panel-2))}.level-row.solved{border-color:color-mix(in srgb,var(--ok) 40%,var(--line))}.series-deep{margin-top:10px;display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:11px;color:var(--teal);background:color-mix(in srgb,var(--teal) 10%,var(--panel-2));border:1px solid color-mix(in srgb,var(--teal) 40%,var(--line));border-radius:8px;padding:5px 10px;cursor:pointer;transition:border-color .16s var(--ease),background .16s var(--ease)}.series-deep:hover{border-color:var(--teal);background:color-mix(in srgb,var(--teal) 20%,var(--panel-2))}.modal-body .schematic{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:8px}.level-row .id{font-family:var(--mono);color:var(--haze);font-size:11px}.level-row .name{font-weight:600}.confetti-canvas{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:150}@media(prefers-reduced-motion:reduce){.dock-pulse,.goal-list li.current,.celebrate-visual .celebrate-ring,.celebrate-star,.modal-celebrate{animation:none}button,.btn,.level-row,.g-step-cmd{transition:none}}@media(max-width:1100px){#app{display:grid!important;grid-template-columns:minmax(0,1fr)!important;grid-template-rows:minmax(0,1fr) minmax(180px,34vh)!important}.app-main{grid-column:1!important;grid-row:1!important;min-height:0!important}.dock{grid-column:1!important;grid-row:2!important;height:auto!important;max-height:34vh!important;border-inline-start:none!important;border-top:1px solid var(--line)!important}.toolbar,.board-wrap,.terminal{border-inline-end:none!important}}@media(max-width:768px){.toolbar{padding:8px 10px;gap:8px}.brand{font-size:16px}.nav-toggle{display:inline-flex}.nav-drawer{display:none;position:absolute;top:calc(100% + 6px);inset-inline-end:0;flex-direction:column;align-items:stretch;gap:6px;min-width:min(240px,calc(100vw - 24px));padding:10px;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:0 16px 40px #00000080;z-index:60}.nav-drawer.is-open{display:flex}.nav-drawer[hidden]{display:none!important}.nav-drawer.is-open[hidden]{display:flex!important}.nav-drawer button,.nav-drawer .tb-link{width:100%;justify-content:flex-start;min-height:44px}.modal-actions{flex-wrap:wrap}.modal-actions button{flex:1 1 auto;min-height:44px}.level-row{grid-template-columns:1fr auto;grid-template-areas:"id chip" "name name" "par par";gap:6px 10px}.level-row .id{grid-area:id}.level-row .name{grid-area:name}.level-row .par-note{grid-area:par}.level-row .chip{grid-area:chip;justify-self:end}}
