/**
 * 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;right:0;left:0;top:0;bottom: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;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{-webkit-user-select:text;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}:root,:root[data-theme=light]{--bg: #f7f7f8;--bg-tint: #eef0fb;--bg-subtle: #f1f1f3;--surface: #ffffff;--surface-2: #fafafa;--line: #e6e6e9;--line-strong: #d6d6da;--text: #18181b;--text-2: #45454c;--muted: #76767f;--accent: #4f46e5;--accent-hover: #4338ca;--accent-soft: #eef0fe;--accent-line: #d7daf9;--accent-contrast: #ffffff;--accent-glow: rgba(79, 70, 229, .22);--green: #15803d;--green-soft: #ebfaef;--green-line: #bfe6cb;--amber: #a16207;--amber-soft: #fdf6e7;--amber-line: #efdfb4;--red: #b91c1c;--red-soft: #fdf1f0;--red-line: #f2c8c5;--code-bg: #f2f2f5;--code-fg: #3a3f83;--shadow-sm: 0 1px 1px rgba(24, 24, 27, .04), 0 1px 3px rgba(24, 24, 27, .05);--shadow-md: 0 1px 2px rgba(24, 24, 27, .04), 0 4px 8px -2px rgba(24, 24, 27, .06), 0 12px 24px -8px rgba(24, 24, 27, .08);--shadow-lg: 0 1px 2px rgba(24, 24, 27, .05), 0 8px 16px -4px rgba(24, 24, 27, .08), 0 24px 48px -16px rgba(24, 24, 27, .16);--ring: 0 0 0 3px var(--accent-glow);--hi: inset 0 1px 0 rgba(255, 255, 255, .55);--hi-strong: inset 0 1px 0 rgba(255, 255, 255, .28);--term-bg: #101215;--term-bar-a: #23262c;--term-bar-b: #1a1d22;--term-fg: #e6e6e6;--term-muted: #8b9299;--term-green: #7ee787;--term-blue: #79b8ff;--term-edge: rgba(255, 255, 255, .08);--font-ui: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 24px;--s-6: 32px;--s-7: 48px;--s-8: 64px;--r-xs: 6px;--r-sm: 10px;--r-md: 14px;--r-lg: 18px;--r-pill: 999px;--t: .15s cubic-bezier(.3, 0, .2, 1)}:root[data-theme=dark]{--bg: #131316;--bg-tint: #1e1f2e;--bg-subtle: #202024;--surface: #1c1c20;--surface-2: #27272a;--line: #2e2e34;--line-strong: #3f3f47;--text: #ededf0;--text-2: #c4c4cc;--muted: #8d8d99;--accent: #8b93f8;--accent-hover: #a3a9fb;--accent-soft: #232541;--accent-line: #3b3f70;--accent-contrast: #12121c;--accent-glow: rgba(139, 147, 248, .26);--green: #6ee7a0;--green-soft: #14241b;--green-line: #2c5c3f;--amber: #f0c674;--amber-soft: #252013;--amber-line: #574a28;--red: #fb7a75;--red-soft: #2b1918;--red-line: #6b3330;--code-bg: #26262c;--code-fg: #aebdfb;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .5);--shadow-md: 0 1px 2px rgba(0, 0, 0, .5), 0 8px 20px -8px rgba(0, 0, 0, .6);--shadow-lg: 0 2px 4px rgba(0, 0, 0, .5), 0 24px 48px -16px rgba(0, 0, 0, .75);--hi: inset 0 1px 0 rgba(255, 255, 255, .06);--hi-strong: inset 0 1px 0 rgba(255, 255, 255, .16);--term-bg: #0c0e11;--term-bar-a: #1d2026;--term-bar-b: #15181c}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-ui);font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4{font-weight:650;line-height:1.25;letter-spacing:-.018em;margin:0}h1{font-size:30px}h2{font-size:22px}h3{font-size:17px}h4{font-size:15px}p{margin:0 0 var(--s-3)}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.muted{color:var(--muted)}.mono{font-family:var(--mono);font-variant-ligatures:none}.label{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.label svg{width:13px;height:13px}.ico{flex:0 0 auto}::selection{background:var(--accent-soft)}:focus-visible{outline:none;box-shadow:var(--ring);border-radius:var(--r-xs)}.screen{max-width:1160px;margin:0 auto;padding:var(--s-7) var(--s-5) var(--s-8)}.screen.narrow{max-width:820px}.back-link{display:inline-flex;align-items:center;gap:6px;background:none;border:none;padding:4px 8px 4px 4px;cursor:pointer;font:inherit;font-size:14px;color:var(--muted);margin-bottom:var(--s-4);border-radius:var(--r-sm);transition:color var(--t),background var(--t)}.back-link:hover{color:var(--accent);background:var(--accent-soft)}.back-link svg{width:16px;height:16px}.page-head{margin-bottom:var(--s-6)}.page-head .meta-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2);margin-bottom:var(--s-3)}.page-head h1{font-size:32px;margin-bottom:var(--s-2)}.lede{color:var(--muted);font-size:16px;max-width:62ch;margin:0}.btn{font-family:inherit;font-size:14px;font-weight:600;letter-spacing:-.005em;cursor:pointer;position:relative;display:inline-flex;align-items:center;justify-content:center;gap:7px;background:var(--btn-bg);color:var(--btn-fg);border:1px solid var(--btn-line);padding:9px 16px;border-radius:var(--r-sm);box-shadow:none;transition:background var(--t),color var(--t),border-color var(--t),box-shadow var(--t);white-space:nowrap;-webkit-tap-highlight-color:transparent}.btn svg{width:16px;height:16px;flex:0 0 auto;opacity:.9}.btn{--btn-bg: var(--bg-subtle);--btn-fg: var(--text);--btn-line: transparent}.btn:hover{--btn-bg: var(--accent-soft);--btn-fg: var(--accent);--btn-line: var(--accent-line)}.btn:active{--btn-bg: var(--accent-soft);transform:none}.btn:focus-visible{outline:none;box-shadow:var(--ring)}.btn.primary{--btn-bg: var(--accent);--btn-fg: var(--accent-contrast);--btn-line: transparent;box-shadow:0 4px 14px -6px var(--accent-glow)}.btn.primary:hover{--btn-bg: var(--accent-hover);--btn-fg: var(--accent-contrast);--btn-line: transparent;box-shadow:0 8px 20px -6px var(--accent-glow)}.btn.primary:active{box-shadow:0 2px 8px -6px var(--accent-glow)}.btn.primary svg{opacity:1}.btn.secondary{--btn-bg: transparent;--btn-fg: var(--accent);--btn-line: var(--accent-line)}.btn.secondary:hover{--btn-bg: var(--accent-soft);--btn-fg: var(--accent);--btn-line: var(--accent)}.btn.ghost{--btn-bg: transparent;--btn-fg: var(--muted);--btn-line: transparent}.btn.ghost:hover{--btn-bg: var(--bg-subtle);--btn-fg: var(--text);--btn-line: transparent}.btn.danger{--btn-bg: var(--red-soft);--btn-fg: var(--red);--btn-line: transparent}.btn.danger:hover{--btn-bg: var(--red);--btn-fg: var(--accent-contrast);--btn-line: transparent}:root[data-theme=dark] .btn.danger:hover{--btn-fg: #1a0f0f}.btn.block{width:100%}.btn.lg{padding:12px 20px;font-size:15px;border-radius:var(--r-md)}.btn.lg svg{width:18px;height:18px}.btn.sm{padding:6px 12px;font-size:13px}.btn.sm svg{width:15px;height:15px}.btn:disabled{opacity:.42;cursor:default;box-shadow:none}.btn:disabled:hover{--btn-bg: var(--bg-subtle);--btn-fg: var(--text);--btn-line: transparent;box-shadow:none}.btn.ghost:disabled:hover{--btn-bg: transparent;--btn-fg: var(--muted)}.link{background:none;border:none;padding:0;cursor:pointer;font:inherit;color:var(--accent)}.link:hover{text-decoration:underline}.actions{display:flex;flex-wrap:wrap;gap:var(--s-3);margin-top:var(--s-6)}.pill{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;line-height:1;padding:5px 10px;border-radius:var(--r-pill);border:1px solid transparent;background:var(--bg-subtle);color:var(--muted)}.pill svg{width:13px;height:13px}.pill.easy{color:var(--green);background:var(--green-soft)}.pill.medium{color:var(--amber);background:var(--amber-soft)}.pill.hard{color:var(--red);background:var(--red-soft)}.pill.accent{color:var(--accent);background:var(--accent-soft)}.pill.done{color:var(--green);background:var(--green-soft)}.tag{display:inline-flex;align-items:center;font-size:12px;padding:3px 9px;border-radius:var(--r-xs);background:var(--bg-subtle);color:var(--muted);border:1px solid transparent}.tag-row{display:flex;flex-wrap:wrap;gap:6px}.chip-mono{font-family:var(--mono);font-size:13px;background:var(--code-bg);color:var(--code-fg);padding:2px 7px;border-radius:var(--r-xs)}.copy-chip{display:inline-flex;align-items:center;gap:var(--s-2);font-family:var(--mono);font-size:13px;cursor:pointer;background:var(--code-bg);color:var(--code-fg);border:1px solid transparent;padding:5px 9px;border-radius:var(--r-xs);max-width:100%;transition:border-color var(--t),background var(--t)}.copy-chip:hover{border-color:var(--accent-line);background:var(--accent-soft)}.copy-chip .copy-ico{display:inline-flex;color:var(--muted)}.copy-chip .copy-ico svg{width:14px;height:14px}.copy-chip.copied .copy-ico{color:var(--green)}.copy-chip span.val{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.theme-toggle{position:fixed;top:14px;right:16px;z-index:60;font-family:inherit;font-size:13px;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;gap:6px;background:var(--surface);color:var(--muted);border:1px solid var(--line);border-radius:var(--r-pill);padding:6px 13px;box-shadow:var(--shadow-sm);transition:color var(--t),border-color var(--t),background var(--t)}.theme-toggle svg{width:15px;height:15px}.theme-toggle:hover{color:var(--accent);border-color:var(--accent-line);background:var(--accent-soft)}.md{color:var(--text-2);font-size:15px;line-height:1.65}.md>*:first-child{margin-top:0}.md>*:last-child{margin-bottom:0}.md h1{font-size:24px;margin:var(--s-6) 0 var(--s-3);color:var(--text)}.md h2{font-size:20px;margin:var(--s-6) 0 var(--s-3);color:var(--text)}.md h3{font-size:16px;margin:var(--s-5) 0 var(--s-2);color:var(--text)}.md h4{font-size:15px;margin:var(--s-4) 0 var(--s-2);color:var(--text)}.md p{margin:0 0 var(--s-3)}.md strong{color:var(--text);font-weight:650}.md ul,.md ol{margin:0 0 var(--s-3);padding-left:22px}.md li{margin:4px 0}.md li::marker{color:var(--muted)}.md hr{border:none;border-top:1px solid var(--line);margin:var(--s-5) 0}.md blockquote{display:flex;align-items:flex-start;gap:var(--s-3);margin:var(--s-4) 0;padding:var(--s-3) var(--s-4);background:var(--accent-soft);border:none;border-left:3px solid var(--accent);border-radius:var(--r-sm);color:var(--text-2)}.md blockquote>.bq-ico{flex:0 0 auto;color:var(--accent);margin-top:3px}.md blockquote>.bq-ico svg{width:16px;height:16px;display:block}.md blockquote>.bq-body{min-width:0;flex:1}.md blockquote>*:last-child{margin-bottom:0}.md code.chip{font-family:var(--mono);font-size:.86em;background:var(--code-bg);color:var(--code-fg);padding:1px 5px;border-radius:var(--r-xs);word-break:break-word}.md .table-wrap{overflow-x:auto;margin:var(--s-4) 0;border-radius:var(--r-sm);background:var(--surface-2)}.md table{border-collapse:collapse;width:100%;font-size:14px}.md thead th{text-align:left;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:9px 12px;border-bottom:1px solid var(--line);white-space:nowrap;background:var(--bg-subtle)}.md tbody td{padding:9px 12px;border-bottom:none;vertical-align:top}.md tbody tr:nth-child(odd){background:color-mix(in srgb,var(--bg-subtle) 55%,transparent)}.md tbody td:first-child{color:var(--muted);white-space:nowrap}.code-block{position:relative;margin:var(--s-4) 0;background:var(--term-bg);border-radius:var(--r-sm);border:1px solid var(--term-edge);box-shadow:var(--shadow-sm),inset 0 0 0 1px #ffffff08;overflow:hidden}.code-block pre{margin:0;padding:13px 15px;overflow-x:auto;font-family:var(--mono);font-size:13px;line-height:1.65;color:var(--term-fg)}.code-block.shell pre{color:var(--term-green)}.code-block .prompt{color:var(--term-blue);-webkit-user-select:none;user-select:none}.code-block .copy-btn{position:absolute;top:7px;right:7px;display:inline-flex;align-items:center;gap:5px;font-family:var(--font-ui);font-size:11px;font-weight:500;cursor:pointer;background:#ffffff12;color:var(--term-muted);border:1px solid rgba(255,255,255,.1);border-radius:var(--r-xs);padding:4px 8px;opacity:.5;transition:opacity var(--t),color var(--t),background var(--t)}.code-block .copy-btn svg{width:13px;height:13px}.code-block:hover .copy-btn,.code-block .copy-btn:focus{opacity:1}.code-block .copy-btn:hover{color:var(--term-fg);background:#ffffff1f}.code-block .copy-btn.copied{color:var(--term-green);opacity:1}.hero{position:relative;margin-bottom:var(--s-6);border-radius:var(--r-lg);padding:var(--s-6) var(--s-6) var(--s-5);background:radial-gradient(120% 140% at 12% -20%,var(--bg-tint) 0%,transparent 62%),linear-gradient(180deg,var(--surface),var(--surface-2));border:1px solid var(--line);box-shadow:var(--shadow-md);overflow:hidden}.hero:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(70% 100% at 100% 0%,var(--accent-glow) 0%,transparent 55%);opacity:.35}.hero>*{position:relative;z-index:1}.brand{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:600;letter-spacing:.02em;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:var(--r-pill);padding:5px 13px;margin-bottom:var(--s-4)}.brand svg{width:15px;height:15px}.hero h1{font-size:38px;letter-spacing:-.032em;margin-bottom:var(--s-3)}.hero .lede{font-size:17px}.stats-strip{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-6);background:color-mix(in srgb,var(--surface) 70%,transparent);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--s-4) var(--s-5);margin:var(--s-5) 0 0;box-shadow:var(--shadow-sm);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.stat .label{margin-top:2px}.stat-value{font-size:24px;font-weight:650;letter-spacing:-.02em;display:flex;align-items:baseline;gap:5px;line-height:1.2}.stat-value .of{color:var(--muted);font-weight:500;font-size:16px}.stat-bar{flex:1;min-width:160px;display:flex;flex-direction:column;justify-content:center;gap:7px}.bar{height:7px;border-radius:var(--r-pill);background:var(--bg-subtle);overflow:hidden;box-shadow:inset 0 1px 2px #0000000f}.bar>i{display:block;height:100%;border-radius:var(--r-pill);background:linear-gradient(90deg,var(--accent),color-mix(in srgb,var(--accent) 60%,#22d3ee));transition:width .4s ease}.cards{display:grid;gap:var(--s-4);margin-top:var(--s-5);grid-template-columns:repeat(auto-fill,minmax(330px,1fr))}.card{display:flex;flex-direction:column;gap:var(--s-3);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--s-5);box-shadow:var(--shadow-sm);transition:box-shadow var(--t),border-color var(--t),transform var(--t)}.card:hover{box-shadow:var(--shadow-md);border-color:var(--line-strong);transform:translateY(-2px)}.card-top{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2)}.card-top .spacer{margin-left:auto}.card-host{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:12.5px;color:var(--muted)}.card-host svg{width:14px;height:14px;opacity:.75}.card-title{font-size:19px}.card-summary{color:var(--muted);font-size:14px;margin:0;flex:1}.card-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);margin-top:var(--s-2);padding-top:var(--s-4);border-top:1px solid var(--line)}.card-score{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--muted)}.card-score svg{width:15px;height:15px;opacity:.8}.card-score b{color:var(--text);font-weight:600}.card-buttons{display:flex;gap:var(--s-2)}.brief-grid{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:var(--s-6);align-items:start}.brief-main{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--s-5) var(--s-6);box-shadow:var(--shadow-sm)}.brief-side{position:sticky;top:var(--s-5);display:flex;flex-direction:column;gap:var(--s-4)}.side-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--s-5);box-shadow:var(--shadow-md)}.side-card+.side-card{margin-top:0}.side-card h3{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:var(--s-3)}.side-card h3 svg{width:14px;height:14px}.side-card h3+*{margin-top:0}.access-list{display:flex;flex-direction:column;gap:var(--s-3);margin:0 0 var(--s-5)}.access-row{display:flex;flex-direction:column;gap:5px}.access-row .label{font-size:10.5px}.obj-preview{list-style:none;margin:0 0 var(--s-4);padding:0}.obj-preview li{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);font-size:14px;color:var(--text-2);padding:8px 10px;border-radius:var(--r-xs)}.obj-preview li:nth-child(odd){background:var(--surface-2)}.obj-preview .pts{color:var(--muted);font-size:12px;font-weight:600;font-variant-numeric:tabular-nums;background:var(--bg-subtle);border-radius:var(--r-pill);padding:2px 8px}.side-note{display:flex;align-items:flex-start;gap:7px;font-size:13px;line-height:1.5;color:var(--muted);margin:var(--s-3) 0 0}.side-note svg{width:14px;height:14px;flex:0 0 auto;margin-top:3px}.trainer{height:100vh;height:100dvh;display:flex;flex-direction:column;background:var(--bg)}.topbar{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3) 150px var(--s-3) var(--s-4);background:var(--surface);border-bottom:1px solid var(--line);box-shadow:var(--shadow-sm);flex:0 0 auto;z-index:50}.topbar-title{display:flex;align-items:center;gap:var(--s-3);min-width:0}.topbar-title strong{font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-actions{margin-left:auto;display:flex;align-items:center;gap:var(--s-2)}.host-chip{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:12px;color:var(--green);background:var(--green-soft);border:1px solid transparent;border-radius:var(--r-pill);padding:4px 11px}.host-chip svg{width:13px;height:13px}.host-chip .dot{width:6px;height:6px;border-radius:50%;background:var(--green)}.drawer-btn{display:inline-flex;align-items:center;gap:7px;font:inherit;font-size:13.5px;font-weight:550;cursor:pointer;background:var(--bg-subtle);color:var(--text-2);border:1px solid transparent;border-radius:var(--r-sm);padding:7px 12px;transition:background var(--t),color var(--t),border-color var(--t)}.drawer-btn svg{width:16px;height:16px}.drawer-btn:hover{border-color:var(--accent-line);color:var(--accent)}.drawer-btn.on{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent)}.confirm-bar{display:inline-flex;align-items:center;gap:var(--s-2);font-size:13px;color:var(--text-2);background:var(--amber-soft);border:1px solid var(--amber-line);border-radius:var(--r-sm);padding:4px 6px 4px 12px}.trainer-body{flex:1;min-height:0;display:grid;grid-template-columns:0 minmax(0,1fr) 320px;transition:grid-template-columns .22s cubic-bezier(.3,0,.2,1)}.trainer-body.with-drawer{grid-template-columns:370px minmax(0,1fr) 320px}.task-drawer{min-width:0;overflow:hidden;display:flex;flex-direction:column;background:var(--surface);border-right:1px solid var(--line)}.drawer-head{display:flex;align-items:center;justify-content:space-between;padding:var(--s-3) var(--s-4);border-bottom:1px solid var(--line);flex:0 0 auto;background:var(--surface-2)}.drawer-head .label{font-size:11px}.drawer-close{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;color:var(--muted);padding:4px;border-radius:var(--r-xs);transition:color var(--t),background var(--t)}.drawer-close svg{width:16px;height:16px}.drawer-close:hover{color:var(--text);background:var(--bg-subtle)}.drawer-body{overflow-y:auto;padding:var(--s-4);font-size:14px}.drawer-body .md{font-size:14px}.drawer-body .md table{font-size:13px}.drawer-body .md thead th{padding:6px 8px}.drawer-body .md tbody td{padding:7px 8px}.drawer-body .md tbody td:first-child{white-space:normal}.drawer-body .md code.chip{font-size:.82em}.drawer-body .md h2{font-size:16px}.drawer-body .md h3{font-size:14px}.terminal-col{min-width:0;min-height:0;display:flex;flex-direction:column}.tabs{display:flex;gap:6px;padding:var(--s-3) var(--s-3) 0}.tab{font-family:var(--mono);font-size:12px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;background:var(--bg-subtle);color:var(--muted);border:1px solid transparent;border-radius:var(--r-sm);padding:6px 11px;transition:color var(--t),background var(--t),border-color var(--t)}.tab:hover{color:var(--text-2)}.tab.active{color:var(--green);border-color:var(--green-line);background:var(--green-soft)}.tab svg{width:13px;height:13px;opacity:.85}.tab .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.terminal-card{flex:1;min-height:0;margin:var(--s-3);display:flex;flex-direction:column;background:var(--term-bg);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;box-shadow:var(--shadow-lg),inset 0 0 0 1px var(--term-edge)}.terminal-bar{display:flex;align-items:center;gap:var(--s-2);padding:9px 12px;background:linear-gradient(180deg,var(--term-bar-a),var(--term-bar-b));border-bottom:1px solid rgba(0,0,0,.55);box-shadow:inset 0 1px #ffffff0f;flex:0 0 auto}.terminal-bar .dots{display:inline-flex;gap:6px}.terminal-bar .dots i{width:11px;height:11px;border-radius:50%;display:inline-block;box-shadow:inset 0 -1px 1px #00000040}.terminal-bar .dots i:nth-child(1){background:#ff5f57}.terminal-bar .dots i:nth-child(2){background:#febc2e}.terminal-bar .dots i:nth-child(3){background:#28c840}.terminal-title{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;font-family:var(--mono);font-size:12px;color:var(--term-muted)}.terminal-title svg{width:13px;height:13px}.terminal-holder{flex:1;min-height:0;margin:8px 4px 8px 10px;background:var(--term-bg);overflow:hidden}.terminal-holder .xterm{height:100%}.side-panel{min-width:0;overflow-y:auto;border-left:1px solid var(--line);background:var(--surface);padding:var(--s-4);display:flex;flex-direction:column;gap:var(--s-5)}.metrics{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-3)}.metric{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--s-3) var(--s-3) var(--s-2);box-shadow:var(--shadow-sm)}.metric .value{font-size:22px;font-weight:650;font-variant-numeric:tabular-nums;letter-spacing:-.02em;line-height:1.25}.metric .value .of{font-size:14px;color:var(--muted);font-weight:500}.panel-section>h3{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:var(--s-3)}.panel-section>h3 svg{width:14px;height:14px}.panel-section>h3 .count{margin-left:auto;font-variant-numeric:tabular-nums;letter-spacing:0}.obj-progress{height:6px;border-radius:var(--r-pill);background:var(--bg-subtle);overflow:hidden;margin-bottom:var(--s-3)}.obj-progress>i{display:block;height:100%;border-radius:var(--r-pill);background:linear-gradient(90deg,var(--green),color-mix(in srgb,var(--green) 65%,var(--accent)));transition:width .45s cubic-bezier(.3,0,.2,1)}.objectives{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:3px}.objectives li{display:grid;grid-template-columns:20px minmax(0,1fr) auto;gap:var(--s-2);align-items:start;padding:9px 10px;border-radius:var(--r-xs);color:var(--muted);font-size:14px;transition:background var(--t),color var(--t)}.objectives li .check{width:18px;height:18px;border-radius:50%;margin-top:1px;display:inline-flex;align-items:center;justify-content:center;border:1.5px solid var(--line-strong);color:transparent;transition:background .2s,border-color .2s,color .2s}.objectives li .check svg{width:12px;height:12px}.objectives li.done{color:var(--text);background:var(--green-soft)}.objectives li.done .check{background:var(--green);border-color:var(--green);color:var(--accent-contrast)}:root[data-theme=light] .objectives li.done .check{color:#fff}.objectives .points{color:var(--muted);font-size:12.5px;font-variant-numeric:tabular-nums}.objectives li.done .points{color:var(--green);font-weight:600}.objectives li.pop .check{animation:pop .55s cubic-bezier(.34,1.56,.64,1)}.objectives li.pop{animation:rowflash 1s ease-out}.objectives.static li:not(.done) .check{border-color:var(--red-line);color:var(--red)}@keyframes pop{0%{transform:scale(.3)}60%{transform:scale(1.35)}to{transform:scale(1)}}@keyframes rowflash{0%{background:color-mix(in srgb,var(--green) 32%,transparent)}to{background:var(--green-soft)}}.hint-note{background:var(--amber-soft);border:1px solid var(--amber-line);border-left:3px solid var(--amber);border-radius:var(--r-sm);padding:var(--s-3);margin-bottom:var(--s-3);font-size:13.5px}.hint-note .hint-head{display:flex;justify-content:space-between;align-items:center;gap:var(--s-2);margin-bottom:5px}.hint-note .hint-head .label{color:var(--amber)}.hint-note .penalty{font-size:11px;font-weight:600;color:var(--amber);white-space:nowrap}.hint-note .md{font-size:13.5px;color:var(--text-2)}.score-hero{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-6);background:radial-gradient(110% 160% at 0% 0%,var(--bg-tint) 0%,transparent 60%),linear-gradient(180deg,var(--surface),var(--surface-2));border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s-5) var(--s-6);box-shadow:var(--shadow-md);margin-bottom:var(--s-6)}.score-big{display:flex;align-items:baseline;gap:var(--s-2)}.score-big .num{font-size:56px;font-weight:700;letter-spacing:-.04em;line-height:1;background:linear-gradient(180deg,var(--accent),var(--accent-hover));-webkit-background-clip:text;background-clip:text;color:transparent}.score-big .max{font-size:20px;color:var(--muted)}.score-hero .divider{width:1px;align-self:stretch;background:var(--line)}.score-facts{display:flex;flex-wrap:wrap;gap:var(--s-6)}.fact .value{font-size:20px;font-weight:600;font-variant-numeric:tabular-nums}.result-table{width:100%;border-collapse:collapse;font-size:14px;margin-bottom:var(--s-6);border-radius:var(--r-md);overflow:hidden;background:var(--surface);box-shadow:var(--shadow-sm)}.result-table th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600;padding:10px 12px;background:var(--bg-subtle);border-bottom:1px solid var(--line)}.result-table td{padding:12px;border-bottom:none;vertical-align:top}.result-table tbody tr:nth-child(2n){background:var(--surface-2)}.result-table td.st{width:30px}.result-table td.st svg{width:17px;height:17px;display:block;margin-top:1px}.result-table td.pts{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.result-table tr.ok td.st{color:var(--green)}.result-table tr.fail td.st{color:var(--red)}.result-table tr.fail{color:var(--muted)}.result-table .why{display:block;color:var(--muted);font-size:13px;margin-top:3px}.section{margin:var(--s-7) 0}.section>h2{margin-bottom:var(--s-4)}.section-head{display:flex;align-items:center;gap:9px;margin-bottom:var(--s-4)}.section-head svg{width:18px;height:18px;color:var(--muted);flex:0 0 auto}.section-head h2{margin:0}.tech-cards{display:grid;gap:var(--s-3);grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.tech-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--s-4);box-shadow:var(--shadow-sm);transition:box-shadow var(--t),transform var(--t)}.tech-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.tech-card .tid{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:11.5px;font-weight:500;color:var(--accent);background:var(--accent-soft);border:1px solid transparent;border-radius:var(--r-pill);padding:3px 9px;margin-bottom:var(--s-2)}.tech-card .tid svg{width:12px;height:12px}.tech-card .tname{font-weight:600;font-size:14.5px;margin-bottom:4px}.tech-card .tnote{color:var(--muted);font-size:13px}.timeline{list-style:none;margin:0;padding:0;font-size:13px;border-radius:var(--r-md);overflow:hidden}.timeline li{display:flex;gap:var(--s-3);padding:7px 12px;border-bottom:none}.timeline li:nth-child(odd){background:var(--surface-2)}.timeline .t{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;min-width:52px}.timeline .cmd{font-family:var(--mono);color:var(--text-2);word-break:break-all}.herrings{list-style:none;margin:0;padding:0}.herrings li{display:flex;align-items:baseline;gap:var(--s-2);padding:10px 12px;border-radius:var(--r-xs);font-size:14px;color:var(--muted)}.herrings li:nth-child(odd){background:var(--surface-2)}.herrings li svg{width:15px;height:15px;color:var(--amber);flex:0 0 auto;align-self:center}.solution-screen{max-width:1160px}.sol-grid{display:grid;grid-template-columns:220px minmax(0,1fr);gap:var(--s-7);align-items:start}.toc{position:sticky;top:var(--s-5)}.toc .label{display:flex;margin-bottom:var(--s-3)}.toc ol{list-style:none;margin:0;padding:0}.toc a{display:flex;align-items:center;gap:8px;padding:7px 0 7px var(--s-3);font-size:14px;color:var(--muted);border-left:2px solid var(--line);transition:color var(--t),border-color var(--t)}.toc a svg{width:15px;height:15px;flex:0 0 auto}.toc a:hover{color:var(--accent);border-left-color:var(--accent);text-decoration:none}.sol-main{min-width:0}.principle{background:var(--accent-soft);border:none;border-left:3px solid var(--accent);border-radius:var(--r-md);padding:var(--s-4) var(--s-5);margin-bottom:var(--s-5)}.principle .label{color:var(--accent)}.principle p{margin:6px 0 0;font-size:16px;color:var(--text)}.goals{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--s-5);box-shadow:var(--shadow-sm)}.goals h3{display:flex;align-items:center;gap:8px;margin-bottom:var(--s-3)}.goals h3 svg{width:17px;height:17px;color:var(--accent)}.goals ul{margin:0;padding:0;list-style:none}.goals li{display:flex;align-items:flex-start;gap:9px;margin:8px 0;color:var(--text-2)}.goals li svg{width:16px;height:16px;color:var(--green);flex:0 0 auto;margin-top:4px}.goals li .md p{margin:0}.empty-solution{color:var(--muted);border:1px dashed var(--line-strong);border-radius:var(--r-md);padding:var(--s-6);text-align:center}.solution-phase{margin:var(--s-7) 0;scroll-margin-top:var(--s-4)}.phase-head{display:flex;align-items:center;gap:var(--s-3);margin-bottom:var(--s-2)}.phase-badge{width:34px;height:34px;border-radius:var(--r-sm);flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center}.phase-badge svg{width:18px;height:18px}.phase-note{font-size:14px;font-weight:400;color:var(--muted)}.phase-intro{color:var(--muted);margin:0 0 var(--s-4);max-width:72ch}.phase-investigate{--phase: var(--accent);--phase-soft: var(--accent-soft);--phase-line: var(--accent-line)}.phase-remediate{--phase: var(--amber);--phase-soft: var(--amber-soft);--phase-line: var(--amber-line)}.phase-verify{--phase: var(--green);--phase-soft: var(--green-soft);--phase-line: var(--green-line)}.phase-badge{background:var(--phase-soft);border:1px solid var(--phase-line);color:var(--phase)}.step{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--s-5);margin-top:var(--s-4);box-shadow:var(--shadow-sm)}.step-head{display:flex;align-items:center;gap:var(--s-3);margin-bottom:var(--s-3)}.step-head h4{font-size:16px}.step-num{flex:0 0 30px;width:30px;height:30px;border-radius:50%;background:var(--phase-soft);border:1px solid var(--phase-line);color:var(--phase);font-size:12.5px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;font-variant-numeric:tabular-nums}.step-phase-ico{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;color:var(--phase);opacity:.75}.step-phase-ico svg{width:16px;height:16px}.step .code-block{margin-top:0}.step-output{margin:calc(-1 * var(--s-2)) 0 var(--s-4)}.step-output>button{display:inline-flex;align-items:center;gap:5px;background:none;border:none;padding:4px 0;cursor:pointer;font:inherit;font-size:13px;color:var(--muted);transition:color var(--t)}.step-output>button svg{width:14px;height:14px}.step-output>button:hover{color:var(--accent)}.step-output pre{background:var(--term-bg);color:var(--term-fg);border-radius:var(--r-sm);padding:12px 14px;margin:var(--s-2) 0 0;overflow-x:auto;font-family:var(--mono);font-size:12.5px;line-height:1.6;border:1px solid var(--term-edge)}.step-why{margin-bottom:var(--s-3)}.box{border-radius:var(--r-sm);padding:var(--s-3) var(--s-4);margin:var(--s-3) 0;font-size:14px;border-left:3px solid transparent}.box .md{font-size:14px}.box .md p:last-child{margin-bottom:0}.box-label{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:var(--s-2)}.box-label svg{width:14px;height:14px}.box.theory{background:var(--accent-soft);border:none;border-left:3px solid var(--accent)}.box.theory .box-label{color:var(--accent)}.box.pitfall{background:var(--amber-soft);border:none;border-left:3px solid var(--amber)}.box.pitfall .box-label{color:var(--amber)}.alternatives{margin:var(--s-3) 0;font-size:14px}.alternatives ul{margin:0;padding-left:20px;color:var(--muted)}.alternatives li{margin:4px 0}.alternatives li .md{font-size:14px}.alternatives li .md p{margin:0}.step .pill.objective{margin-top:var(--s-3)}@media (max-width: 1100px){.sol-grid{grid-template-columns:1fr;gap:var(--s-5)}.toc{position:static}.toc ol{display:flex;flex-wrap:wrap;gap:var(--s-2)}.toc a{border-left:none;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-pill);padding:6px 13px}.toc a:hover{border-color:var(--accent-line)}.brief-grid{grid-template-columns:1fr}.brief-side{position:static}}@media (max-width: 1000px){.trainer-body,.trainer-body.with-drawer{grid-template-columns:minmax(0,1fr) 300px}.task-drawer{position:absolute;top:0;bottom:0;left:0;width:min(380px,85vw);z-index:40;box-shadow:var(--shadow-lg);border-right:1px solid var(--line);animation:drawer-in .22s cubic-bezier(.3,0,.2,1)}.trainer-body:not(.with-drawer) .task-drawer{display:none}.trainer-body{position:relative}}@keyframes drawer-in{0%{transform:translate(-100%);opacity:.4}to{transform:translate(0);opacity:1}}@media (max-width: 760px){.screen{padding:var(--s-6) var(--s-4) var(--s-7)}.hero{padding:var(--s-5) var(--s-4)}.hero h1{font-size:30px}.page-head h1,h1{font-size:26px}.cards{grid-template-columns:1fr}.stats-strip,.score-hero{gap:var(--s-4);padding:var(--s-4)}.score-hero .divider{display:none}.brief-main{padding:var(--s-4)}.topbar{flex-wrap:wrap;padding:var(--s-3) var(--s-4) var(--s-3) var(--s-4)}.topbar-title strong{max-width:40vw}.topbar-actions{width:100%;margin-left:0;justify-content:flex-end}.theme-toggle{top:auto;bottom:12px;right:12px}.trainer{height:auto;min-height:100dvh}.trainer-body,.trainer-body.with-drawer{display:flex;flex-direction:column}.terminal-col{min-height:62vh}.side-panel{border-left:none;border-top:1px solid var(--line)}.task-drawer{position:fixed;top:0;bottom:0;left:0;width:min(360px,92vw);z-index:70}.step{padding:var(--s-4)}.md .table-wrap{margin-left:calc(-1 * var(--s-2));margin-right:calc(-1 * var(--s-2))}}.rvb-promo{margin:var(--s-6) 0 0;border-radius:var(--r-lg);border:1px solid var(--line);background:linear-gradient(135deg,color-mix(in srgb,var(--red-soft) 70%,var(--surface)) 0%,var(--surface) 45%,color-mix(in srgb,var(--accent-soft) 70%,var(--surface)) 100%);box-shadow:var(--shadow-sm)}.rvb-promo-body{padding:var(--s-5);display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-4);justify-content:space-between}.rvb-promo-head{display:flex;gap:var(--s-4);align-items:flex-start;min-width:260px;flex:1}.rvb-promo-ico{flex:0 0 auto;width:44px;height:44px;border-radius:var(--r-md);display:grid;place-items:center;color:var(--accent-contrast);background:linear-gradient(135deg,var(--red) 0%,var(--accent) 100%);box-shadow:var(--shadow-sm),var(--hi)}.rvb-promo-head h2{font-size:20px;margin:0 0 4px}.rvb-promo-head p{margin:0;color:var(--muted);font-size:14px;max-width:58ch}.rvb-promo-actions{display:flex;flex-wrap:wrap;gap:var(--s-2)}.rvb-mode-cards{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-4);margin:var(--s-5) 0}.rvb-mode-card{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);padding:var(--s-5);box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:var(--s-3)}.rvb-mode-card h2{font-size:20px;margin:0}.rvb-mode-card p{margin:0;color:var(--muted);font-size:14px;flex:1}.rvb-mode-ico{width:46px;height:46px;border-radius:var(--r-md);display:grid;place-items:center;color:var(--accent-contrast);box-shadow:var(--shadow-sm),var(--hi)}.rvb-mode-card.red .rvb-mode-ico{background:linear-gradient(135deg,var(--red) 0%,#d64545 100%)}.rvb-mode-card.blue .rvb-mode-ico{background:linear-gradient(135deg,var(--accent) 0%,var(--accent-hover) 100%)}.rvb-mode-card.red{border-top:3px solid var(--red)}.rvb-mode-card.blue{border-top:3px solid var(--accent)}.rvb-baseline-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-4);margin:var(--s-5) 0}.rvb-baseline-card{text-align:left;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);padding:var(--s-4);cursor:pointer;transition:border-color var(--t),box-shadow var(--t),transform var(--t);display:flex;flex-direction:column;gap:var(--s-2);color:var(--text);font:inherit}.rvb-baseline-card:hover{border-color:var(--accent-line);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.rvb-baseline-card.sel{border-color:var(--accent);box-shadow:var(--ring)}.rvb-baseline-head{display:flex;align-items:center;gap:8px;font-size:16px}.rvb-baseline-head svg{color:var(--muted)}.rvb-baseline-summary{margin:0;color:var(--muted);font-size:14px}.rvb-baseline-facts{margin:4px 0 0;padding-left:18px;color:var(--text-2);font-size:13px}.rvb-baseline-facts li{margin:3px 0}.rvb-field{margin:var(--s-4) 0;display:flex;flex-direction:column;gap:var(--s-2)}.rvb-input{width:100%;font:14px var(--font-ui);color:var(--text);background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r-sm);padding:9px 12px}.rvb-input.mono{font-family:var(--mono);font-size:13px}.rvb-input:focus-visible{outline:none;border-color:var(--accent);box-shadow:var(--ring)}select.rvb-input{cursor:pointer}.rvb-textarea{width:100%;font:14px var(--font-ui);color:var(--text);background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r-sm);padding:10px 12px;resize:vertical;line-height:1.55}.rvb-textarea.mono{font-family:var(--mono);font-size:12.5px}.rvb-textarea:focus-visible{outline:none;border-color:var(--accent);box-shadow:var(--ring)}.rvb-share-row{display:flex;gap:var(--s-2);align-items:stretch}.rvb-share-row .rvb-input{flex:1}.rvb-note{display:flex;align-items:flex-start;gap:9px;margin-top:var(--s-4);padding:var(--s-3) var(--s-4);border-radius:var(--r-sm);font-size:14px}.rvb-note svg{flex:0 0 auto;margin-top:2px}.rvb-note.ok{background:var(--green-soft);color:var(--green);border:1px solid var(--green-line)}.rvb-note.err{background:var(--red-soft);color:var(--red);border:1px solid var(--red-line)}.rvb-red-panel{gap:var(--s-4)}.rvb-red-panel .btn.block{margin-top:auto}.rvb-diff-total{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--s-2)}.rvb-diff-count{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}.rvb-diff-count b{color:var(--text)}.rvb-diff-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px}.rvb-diff-list li{display:flex;align-items:center;gap:8px;padding:7px 9px;border-radius:var(--r-xs);background:var(--surface-2);font-size:13px}.rvb-diff-cat{flex:0 0 auto;font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--accent);background:var(--accent-soft);border-radius:var(--r-pill);padding:2px 8px}.rvb-diff-title{flex:1;min-width:0;color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rvb-diff-pts{flex:0 0 auto;color:var(--muted);font-variant-numeric:tabular-nums;font-weight:600}.rvb-diff-empty{display:flex;align-items:flex-start;gap:9px;padding:var(--s-3);border-radius:var(--r-sm);background:var(--amber-soft);color:var(--amber);border:1px solid var(--amber-line);font-size:13px}.rvb-diff-empty svg{flex:0 0 auto;margin-top:1px}.rvb-saved-group{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--muted);margin:var(--s-4) 0 var(--s-2)}.rvb-saved-list{list-style:none;margin:0 0 var(--s-4);padding:0;display:flex;flex-direction:column;gap:var(--s-2)}.rvb-saved-row{display:flex;align-items:center;gap:var(--s-3);flex-wrap:wrap;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);padding:var(--s-3) var(--s-4)}.rvb-saved-main{flex:1;min-width:180px}.rvb-saved-head{display:flex;align-items:center;gap:8px;font-size:14px}.rvb-saved-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;color:var(--muted);font-size:13px;margin-top:3px}.rvb-saved-result{display:inline-flex;align-items:center;gap:5px;color:var(--green)}.rvb-saved-result svg{width:13px;height:13px}.rvb-saved-actions{display:flex;flex-wrap:wrap;gap:var(--s-2)}.rvb-result-share{border:1px solid var(--accent-line);border-radius:var(--r-md);background:var(--accent-soft);padding:var(--s-4)}.rvb-result-share .section-head{margin-bottom:var(--s-2)}.rvb-result-share .section-head svg{color:var(--accent)}@media (max-width: 760px){.rvb-mode-cards,.rvb-baseline-grid{grid-template-columns:1fr}.rvb-promo-body{flex-direction:column;align-items:flex-start}.rvb-red-panel{border-left:none;border-top:1px solid var(--line)}}@media (prefers-reduced-motion: reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}.pill.blackbox,.host-chip.blackbox{color:var(--text-2);background:var(--bg-subtle);border-color:var(--line-strong)}.metrics.single{grid-template-columns:1fr}.blackbox-note{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-2);padding:var(--s-3)}.blackbox-count{font-weight:650;font-size:15px;color:var(--text-1);margin-bottom:6px}.blackbox-note p{margin:0;font-size:12px;line-height:1.55;color:var(--text-3)}.obj-hidden{display:flex;gap:8px;align-items:flex-start;margin:0 0 var(--s-4);padding:var(--s-3);border:1px dashed var(--line-strong);border-radius:var(--r-sm);font-size:12px;line-height:1.55;color:var(--text-3)}.obj-hidden svg{flex:none;margin-top:2px}.switch-row{display:flex;gap:10px;align-items:flex-start;margin:0 0 var(--s-3);padding:var(--s-3);border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-2);cursor:pointer}.switch-row:hover{border-color:var(--line-strong)}.switch-row.on{border-color:var(--accent-line);background:var(--accent-soft)}.switch-row input{position:absolute;opacity:0;width:0;height:0}.switch-track{flex:none;margin-top:2px;width:34px;height:20px;border-radius:999px;background:var(--line-strong);transition:background var(--t, .14s) ease;display:block}.switch-track i{display:block;width:14px;height:14px;margin:3px;border-radius:50%;background:#fff;transition:transform var(--t, .14s) ease}.switch-row.on .switch-track{background:var(--accent)}.switch-row.on .switch-track i{transform:translate(14px)}.switch-row input:focus-visible+.switch-track{box-shadow:var(--ring)}.switch-text{display:flex;flex-direction:column;gap:3px}.switch-title{display:flex;gap:6px;align-items:center;font-size:13px;font-weight:600;color:var(--text-1)}.switch-note{font-size:11.5px;line-height:1.5;color:var(--text-3)}.score-bonus{display:flex;gap:6px;align-items:center;margin-top:4px;font-size:12px;color:var(--text-3)}.tab.locked{opacity:.55;cursor:not-allowed}.tab.locked:hover{color:var(--text-3)}.tab-chain{display:inline-flex;align-items:center;gap:2px;margin-left:auto;padding:0 var(--s-3);font-size:11.5px;color:var(--text-3);font-family:var(--mono, ui-monospace, monospace)}.tab-chain .chain-node{display:inline-flex;align-items:center;gap:2px}.tab-chain b{font-weight:600;color:var(--text-2)}.tab-chain svg{width:12px;height:12px;opacity:.7}
