:root{--steel-50: #f2eadc;--steel-100: #d9cfbf;--steel-200: #b6aa98;--steel-300: #9e9384;--steel-400: #6b6154;--steel-500: #4e463c;--steel-600: #3a342c;--steel-700: #2c2721;--steel-750: #282320;--steel-800: #211d19;--steel-850: #1a1714;--steel-900: #141210;--steel-950: #0e0d0b;--blueprint-400: #8ccbee;--blueprint-500: #5cb0de;--blueprint-600: #3e90b4;--blueprint-700: #2e6f8c;--blueprint-tint: #10222c;--amber-400: #f2b95c;--amber-500: #e8a33d;--amber-600: #c6832a;--amber-700: #8a5c1c;--amber-tint: #2a1e0c;--green-400: #9bc98a;--green-500: #7fb069;--green-700: #3e5f32;--green-tint: #15200f;--rust-400: #f0907a;--rust-500: #d9573c;--rust-700: #7a3020;--rust-tint: #2a140e;--violet-500: #b08be0;--violet-700: #4b3f6e;--violet-tint: #1b1526;--teal-500: #3fc2a8;--teal-700: #2a6b5e;--teal-tint: #0f211e;--surface-board: #0e0d0b;--surface-well: #141210;--surface-chassis: #1a1714;--surface-panel: #211d19;--surface-raised: #282320;--surface-control: #2c2721;--surface-paper: #e9dfc9;--surface-scrim: rgba(6, 5, 4, .74);--text-primary: #d9cfbf;--text-secondary: #b6aa98;--text-dim: #9e9384;--text-emphasis: #f2eadc;--text-on-paper: #241e15;--text-on-paper-dim: #5a4e3c;--text-on-accent: #08131f;--border-hairline: #3a342c;--border-base: #4e463c;--border-strong: #6b6154;--border-on-paper: #c3b694;--accent-base: #5cb0de;--accent-hover: #8ccbee;--accent-press: #3e90b4;--accent-tint: #10222c;--accent-line: #2e6f8c;--accent-wash: rgba(92, 176, 222, .1);--material-base: #e8a33d;--material-hover: #f2b95c;--material-deep: #c6832a;--material-tint: #2a1e0c;--material-line: #8a5c1c;--status-pass-fg: #9bc98a;--status-pass-line: #7fb069;--status-pass-bg: #15200f;--status-pass-border: #3e5f32;--status-fail-fg: #f0907a;--status-fail-line: #d9573c;--status-fail-bg: #2a140e;--status-fail-border: #7a3020;--status-warn-fg: #f2b95c;--status-warn-line: #e8a33d;--status-warn-bg: #2a1e0c;--status-warn-border: #8a5c1c;--status-info-fg: #8ccbee;--status-info-line: #5cb0de;--status-info-bg: #10222c;--status-info-border: #2e6f8c;--domain-electrical: #a08f79;--domain-optical: #f0a93c;--domain-vector: #b08be0;--domain-control: #3fc2a8;--domain-invalid: #d9573c;--grid-minor: #191512;--grid-major: #241e19;--grid-blueprint: #2e6f8c;--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: 2px;--r-sm: 4px;--r-md: 6px;--r-lg: 10px;--r-xl: 14px;--r-pill: 999px;--bevel-hi: inset 0 1px 0 rgba(255, 240, 214, .1);--bevel-lo: inset 0 -1px 0 rgba(0, 0, 0, .45);--bevel: inset 0 1px 0 rgba(255, 240, 214, .1), inset 0 -1px 0 rgba(0, 0, 0, .45);--engrave: inset 0 1px 3px rgba(0, 0, 0, .6), inset 0 -1px 0 rgba(255, 240, 214, .06);--elev-1: 0 1px 2px rgba(0, 0, 0, .5);--elev-2: 0 4px 10px -2px rgba(0, 0, 0, .55);--elev-3: 0 12px 28px -6px rgba(0, 0, 0, .6);--elev-4: 0 24px 60px -12px rgba(0, 0, 0, .7);--z-board: 0;--z-hud: 6;--z-pop: 8;--z-sheet: 20;--z-backdrop: 90;--z-modal: 91;--z-toast: 100;--z-tooltip: 120;--dur-1: 90ms;--dur-2: .14s;--dur-3: .22s;--dur-4: .36s;--dur-5: .6s;--ease-mech: cubic-bezier(.34, .02, .16, 1);--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-in: cubic-bezier(.55, 0, 1, .45);--ease-snap: cubic-bezier(.2, .9, .25, 1.2);--type-base: 15px;--leading-tight: 1.15;--leading-snug: 1.3;--leading-normal: 1.5;--leading-relaxed: 1.6;--hit-min: 44px;--hit-compact: 38px;--topbar-h: 52px;--side-w: 340px;--tray-w: 260px;--font-sans: "Archivo Variable", Archivo, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: "JetBrains Mono Variable", "JetBrains Mono", ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace;--font-symbol: "Segoe UI Symbol", "Apple Symbols", "Noto Sans Symbols2", sans-serif}body{--type-2xs: calc(var(--type-base) * .7333);--type-xs: calc(var(--type-base) * .8);--type-sm: calc(var(--type-base) * .8667);--type-md: calc(var(--type-base) * 1);--type-lg: calc(var(--type-base) * 1.1333);--type-xl: calc(var(--type-base) * 1.4667);--type-2xl: calc(var(--type-base) * 1.8667);--type-3xl: calc(var(--type-base) * 2.6667)}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../fonts/archivo-latin-wght.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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../fonts/archivo-latin-ext-wght.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(../fonts/jetbrains-mono-latin-wght.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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;padding:0}body{background:var(--surface-board);color:var(--text-primary);font-family:var(--font-sans);font-size:var(--type-md);line-height:var(--leading-normal);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overscroll-behavior:none}body.large-text{--type-base: 17.5px}button{font:inherit;font-family:var(--font-sans);font-weight:500;color:var(--text-primary);background:var(--surface-control);border:1px solid var(--border-base);border-radius:var(--r-sm);padding:7px 14px;cursor:pointer;min-height:var(--hit-min);box-shadow:var(--bevel),var(--elev-1);transition:background-color var(--dur-2) var(--ease-mech),border-color var(--dur-2) var(--ease-mech),box-shadow var(--dur-1) var(--ease-mech),transform var(--dur-1) var(--ease-mech)}button:active:not(:disabled){transform:translateY(1px);box-shadow:var(--bevel-lo)}button:hover:not(:disabled){background:var(--steel-600);border-color:var(--border-strong)}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent-base);border-color:var(--accent-hover);color:var(--text-on-accent);font-weight:650}button.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--blueprint-400)}button.danger{border-color:var(--status-fail-border);color:var(--status-fail-fg)}button.danger:hover:not(:disabled){background:var(--status-fail-bg)}input[type=text],input[type=number],select,textarea{font:inherit;font-family:var(--font-sans);color:var(--text-primary);background:var(--surface-well);border:1px solid var(--border-base);border-radius:var(--r-sm);padding:6px 10px;min-height:var(--hit-compact);max-width:100%;box-shadow:var(--engrave)}input[type=number]{font-family:var(--font-mono);font-variant-numeric:tabular-nums}select{appearance:none;-webkit-appearance:none;padding-right:30px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%239e9384' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center}:where(a,button,input,select,textarea,summary,label.file-button,[tabindex]):focus-visible{outline:none;box-shadow:0 0 0 2px var(--surface-board),0 0 0 4px var(--accent-base)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}h1,h2,h3,h4,h5,h6{margin:0 0 var(--s-2);color:var(--text-emphasis);font-weight:650;line-height:var(--leading-tight);text-wrap:balance}h1{font-size:var(--type-3xl);letter-spacing:.02em}h2{font-size:var(--type-2xl)}h3{font-size:var(--type-xl)}h4{font-size:var(--type-lg)}h5,h6{font-size:var(--type-md)}p{margin:0 0 var(--s-2)}p:last-child{margin-bottom:0}ul,ol{margin:0 0 var(--s-2);padding-left:var(--s-5)}li+li{margin-top:var(--s-1)}a{color:var(--accent-base);text-decoration-color:var(--accent-line);text-underline-offset:.18em}a:hover{color:var(--accent-hover);text-decoration-color:currentColor}strong,b{font-weight:650;color:var(--text-emphasis)}small{font-size:var(--type-xs)}code,kbd,samp{font-family:var(--font-mono);font-size:.92em;background:var(--surface-well);border-radius:var(--r-xs);padding:.1em .36em;box-shadow:var(--engrave)}kbd{border:1px solid var(--border-base);box-shadow:var(--bevel);background:var(--surface-control)}hr{height:1px;border:0;margin:var(--s-4) 0;background:var(--border-hairline);box-shadow:0 1px #fff0d60d}dl{margin:0}::selection{background:var(--material-tint);color:var(--text-emphasis)}::placeholder{color:var(--steel-400);opacity:1}.etched{font-size:var(--type-2xs);letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim);text-shadow:0 1px 0 rgba(255,240,214,.06),0 -1px 0 rgba(0,0,0,.5)}input[type=range]{appearance:none;-webkit-appearance:none;width:100%;background:transparent;min-height:30px;cursor:pointer}input[type=range]::-webkit-slider-runnable-track{height:6px;border-radius:var(--r-pill);background:var(--surface-well);box-shadow:var(--engrave)}input[type=range]::-moz-range-track{height:6px;border-radius:var(--r-pill);background:var(--surface-well);box-shadow:var(--engrave)}input[type=range]::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:18px;height:18px;margin-top:-6px;border-radius:var(--r-pill);background:var(--material-base);border:1px solid var(--material-line);box-shadow:var(--bevel),var(--elev-1)}input[type=range]::-moz-range-thumb{width:18px;height:18px;border-radius:var(--r-pill);background:var(--material-base);border:1px solid var(--material-line);box-shadow:var(--bevel),var(--elev-1)}input[type=checkbox]{appearance:none;-webkit-appearance:none;width:20px;height:20px;flex:0 0 auto;border:1px solid var(--border-base);border-radius:var(--r-xs);background:var(--surface-well);box-shadow:var(--engrave);cursor:pointer;position:relative;transition:background-color var(--dur-1) var(--ease-mech),border-color var(--dur-1) var(--ease-mech)}input[type=checkbox]:checked{background:var(--accent-base);border-color:var(--accent-press);box-shadow:var(--bevel)}input[type=checkbox]:checked:after{content:"";position:absolute;left:6px;top:2px;width:5px;height:10px;border:solid var(--text-on-accent);border-width:0 2px 2px 0;transform:rotate(45deg)}input[type=checkbox]:disabled{opacity:.45;cursor:default}input[type=radio]{appearance:none;-webkit-appearance:none;width:20px;height:20px;flex:0 0 auto;border:1px solid var(--border-base);border-radius:var(--r-pill);background:var(--surface-well);box-shadow:var(--engrave);cursor:pointer;position:relative;transition:border-color var(--dur-1) var(--ease-mech)}input[type=radio]:checked{border-color:var(--accent-base)}input[type=radio]:checked:after{content:"";position:absolute;inset:4px;border-radius:var(--r-pill);background:var(--accent-base)}input[type=radio]:disabled{opacity:.45;cursor:default}*{scrollbar-width:thin;scrollbar-color:var(--steel-600) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--steel-600);border-radius:var(--r-pill);border:2px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:var(--steel-500);background-clip:content-box}.app{height:100%;display:flex;flex-direction:column}.home{flex:1;overflow-y:auto;padding:28px clamp(16px,5vw,64px) 48px}.home-backdrop{position:absolute;inset:0;overflow:hidden;pointer-events:none;opacity:.34;mask-image:linear-gradient(to bottom,rgba(0,0,0,1),rgba(0,0,0,.28) 32%,transparent 58%);-webkit-mask-image:linear-gradient(to bottom,rgba(0,0,0,1),rgba(0,0,0,.28) 32%,transparent 58%)}.home-header{max-width:1100px;margin:0 auto 28px}.home-title{font-size:var(--type-3xl);letter-spacing:.12em;font-weight:800;margin:0}.home-title .forge{color:var(--accent-base)}.home-subtitle{color:var(--text-dim);margin:6px 0 0;max-width:72ch}.home-progress{margin-top:14px;display:flex;gap:10px;flex-wrap:wrap;align-items:baseline}.campaign-grid{max-width:1100px;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px}.campaign-card{background:var(--surface-panel);border:1px solid var(--border-base);border-radius:var(--r-lg);padding:18px;display:flex;flex-direction:column;gap:8px}.campaign-card h2{margin:0;font-size:var(--type-lg)}.campaign-card p{margin:0;color:var(--text-dim);flex:1}.campaign-card .primary{align-self:flex-start}.home-footer{max-width:1100px;margin:26px auto 0;display:flex;gap:12px;flex-wrap:wrap;align-items:center}.mission-browser{max-width:1100px;margin:0 auto}.mission-browser-head{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;margin:0 0 14px}.mission-browser-head select{min-height:44px;min-width:0}.mission-list{display:flex;flex-direction:column;gap:8px}.mission-row{display:flex;align-items:center;gap:14px;background:var(--surface-panel);border:1px solid var(--border-base);border-radius:var(--r-lg);padding:12px 16px;text-align:left;width:100%;min-height:60px}.mission-row:hover:not(:disabled){background:var(--surface-raised)}.mission-row.locked{opacity:.5}.mission-row .mission-code{font-family:var(--font-mono);font-weight:700;color:var(--accent-base);min-width:3.2em}.mission-row .mission-name{flex:1}.mission-row .mission-name .dim{display:block;font-size:.86em}.mission-stars{color:var(--status-warn-line);letter-spacing:2px;white-space:nowrap}.star-placeholder{color:var(--steel-400);letter-spacing:2px}.game{flex:1;display:flex;flex-direction:column;min-height:0}.topbar{display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:1px solid var(--border-base);background:var(--surface-chassis);flex-wrap:wrap;min-height:var(--topbar-h)}.topbar .spacer{flex:1}.topbar-title{font-weight:700;display:flex;align-items:baseline;gap:10px;margin-right:6px}.topbar-title .mission-code{font-family:var(--font-mono);color:var(--accent-base)}.view-switcher{display:flex;gap:0;border:1px solid var(--border-base);border-radius:var(--r-sm);overflow:hidden}.view-switcher button{border:none;border-radius:0;background:transparent;padding:7px 12px;min-height:38px}.view-switcher button+button{border-left:1px solid var(--border-base)}.view-switcher button.active{background:var(--accent-line);color:var(--blueprint-400)}.game-main{flex:1;display:flex;min-height:0}.game-stage{flex:1;min-width:0;display:flex;flex-direction:column}.game-side{width:340px;flex-shrink:0;border-left:1px solid var(--border-base);background:var(--surface-chassis);overflow-y:auto;display:flex;flex-direction:column}.game-bottom{border-top:1px solid var(--border-base);background:var(--surface-chassis);display:flex;min-height:200px;max-height:44vh}.game-bottom>.panel{flex:1;min-width:0;overflow-y:auto;padding:10px 14px}.game-bottom>.panel+.panel{border-left:1px solid var(--border-hairline)}.bottom-tabs{display:flex;gap:6px;padding:6px 10px 0;flex-wrap:wrap}@media (max-width: 860px){.topbar{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;gap:6px;padding:6px 10px;-webkit-overflow-scrolling:touch;mask-image:linear-gradient(to right,rgba(0,0,0,1) calc(100% - 28px),transparent 100%)}.topbar::-webkit-scrollbar{display:none}.topbar>*{flex-shrink:0}.topbar .spacer{flex:0 0 4px}.topbar button{padding:6px 10px;min-height:38px}.topbar-title{font-size:var(--type-sm);gap:6px}.view-switcher button{padding:6px 9px}.game-bottom{max-height:52vh}}@media (max-width: 620px){.game-bottom{flex-direction:column;max-height:58vh;overflow-y:auto}.game-bottom>*{flex:0 0 auto}.game-bottom>.panel{overflow-y:visible}.game-bottom>.panel+.panel{border-left:0;border-top:1px solid var(--border-hairline)}.tray{min-width:0;max-width:none;overflow-y:visible}.mission-panel{min-width:0;max-width:none}}@media (max-width: 860px){.game-main{position:relative;overflow-x:hidden;overflow-x:clip}.game-side{position:absolute;right:0;top:0;bottom:0;width:min(88vw,360px);box-shadow:var(--elev-3);transform:translate(100%);transition:transform var(--dur-3) var(--ease-mech);z-index:var(--z-sheet)}.game-side.open{transform:translate(0)}.side-toggle{display:inline-flex}}.side-toggle{display:none}.panel-title{font-size:var(--type-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--text-dim);margin:4px 0 10px;display:flex;align-items:center;justify-content:space-between;gap:8px}.sheet-close{min-height:32px;min-width:32px;padding:0;border-radius:var(--r-sm);font-size:var(--type-sm);line-height:1}@media (min-width: 861px){.sheet-close{display:none}}.badge{display:inline-block;padding:2px 10px;border-radius:var(--r-pill);border:1px solid var(--border-base);background:var(--surface-well);font-size:var(--type-xs);color:var(--text-dim);white-space:nowrap}.badge.warn{color:var(--status-warn-line);border-color:var(--status-warn-border);background:var(--status-warn-bg)}.badge.small{font-size:var(--type-2xs);padding:1px 8px}.dim{color:var(--text-dim)}.small{font-size:var(--type-xs)}.note{color:var(--text-dim);font-size:var(--type-sm)}.note.small{font-size:var(--type-xs)}.field{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}.field>label{font-size:var(--type-xs);color:var(--text-dim)}.field .range-row{display:flex;align-items:center;gap:10px}.field input[type=range]{flex:1;min-height:28px}.field .range-value{font-family:var(--font-mono);min-width:5.5em;text-align:right}.checkbox{display:flex;align-items:center;gap:10px;padding:6px 0;cursor:pointer}.checkbox input{width:20px;height:20px;min-height:20px;accent-color:var(--accent-base)}.checkbox.small{font-size:var(--type-sm)}select.small,input.small{min-height:32px;padding:4px 8px;font-size:var(--type-sm)}.numeric-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.numeric-row input[type=number]{width:5.2em}:where(.mission-panel,.inspector,.debugger,.lab-panel,.glossary,.sandbox-panel,.matrix-view,.signal-trace,.performance,.layer-map,.shortcuts,.equation-inspector) h2{font-size:var(--type-xl)}:where(.mission-panel,.inspector,.debugger,.lab-panel,.glossary,.sandbox-panel,.matrix-view,.signal-trace,.performance,.layer-map,.shortcuts,.equation-inspector) :is(h3,h4){font-size:var(--type-lg)}.tray{display:flex;flex-direction:column;min-width:260px;max-width:380px;overflow-y:auto}.tray-header{padding:8px 14px 4px;display:flex;align-items:center;justify-content:space-between;gap:8px}.tray-groups{display:flex;flex-direction:column;gap:10px;padding:6px 14px 14px}.tray-group-title{font-size:var(--type-2xs);letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim)}.tray-items{display:flex;flex-wrap:wrap;gap:6px}.tray-item{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border-radius:var(--r-sm);border:1px solid var(--border-base);background:var(--surface-raised);cursor:grab;user-select:none;touch-action:manipulation}.tray-item:active{cursor:grabbing;border-color:var(--accent-base)}.tray-contents{margin-top:14px;padding-top:10px;border-top:1px solid var(--border-hairline)}.tray-item.placed{cursor:pointer;background:var(--surface-well)}.tray-item.placed.active{border-color:var(--accent-base);background:var(--accent-tint)}.tray-item.placed.armed{border-color:var(--accent-base);box-shadow:0 0 0 1px var(--accent-base) inset}.tray-item .swatch{width:12px;height:12px;border-radius:var(--r-xs);flex-shrink:0}.tray-item-label{font-size:var(--type-sm)}.mission-panel{display:flex;flex-direction:column;gap:10px;min-width:300px;max-width:460px}.mission-panel h3{margin:0}.learning{margin:0;padding-left:18px;color:var(--text-dim);font-size:var(--type-sm)}.tutorial{background:var(--surface-well);border:1px solid var(--border-hairline);border-radius:var(--r-lg);padding:12px 14px}.tutorial .beat-title{font-weight:700;margin-bottom:6px;display:flex;gap:8px;align-items:center}.tutorial-nav{display:flex;gap:8px;justify-content:space-between;margin-top:10px}.prediction{background:var(--surface-well);border:1px solid var(--border-strong);border-radius:var(--r-lg);padding:12px 14px}.prediction .prompt{font-weight:600;margin-bottom:8px}.prediction .options{display:flex;flex-direction:column;gap:6px}.prediction .options button{text-align:left}.prediction .options button.correct{border-color:var(--status-pass-border);background:var(--status-pass-bg)}.prediction .options button.wrong{border-color:var(--status-fail-border);background:var(--status-fail-bg)}.explanations{margin-top:8px;display:flex;flex-direction:column;gap:6px}.explanations .correct{color:var(--status-pass-line)}.explanations .wrong{color:var(--status-fail-line)}.objectives{display:flex;flex-direction:column;gap:4px;font-size:var(--type-sm)}.objective-mark{display:inline-block;width:1.4em;font-weight:700}.objective-mark.pass{color:var(--status-pass-line)}.objective-mark.fail{color:var(--status-fail-line)}.objective-detail{padding-left:1.6em}.vectors{display:flex;flex-direction:column;gap:2px;font-family:var(--font-mono);font-size:var(--type-xs)}.difficulty{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.difficulty select{min-width:150px}.hint{background:var(--status-warn-bg);border:1px solid var(--status-warn-border);border-radius:var(--r-sm);padding:10px 12px;color:var(--status-warn-fg);font-size:var(--type-sm)}.disclaimer{background:var(--violet-tint);border:1px solid var(--violet-700);border-radius:var(--r-sm);padding:10px 12px;color:var(--domain-vector);font-size:var(--type-sm)}.debrief{background:var(--status-pass-bg);border:1px solid var(--status-pass-border);border-radius:var(--r-lg);padding:14px}.debrief .stars{font-size:var(--type-xl);color:var(--status-warn-line);letter-spacing:4px}.inspector{padding:12px 14px}.inspector .ports{display:flex;flex-direction:column;gap:4px;font-size:var(--type-xs);font-family:var(--font-mono)}.inspector .ports .port-row{display:flex;gap:8px;align-items:center}.kv{display:grid;grid-template-columns:minmax(140px,max-content) 1fr;gap:4px 18px;margin:0;font-size:var(--type-sm)}.kv dt{color:var(--text-dim)}.kv dd{margin:0;font-family:var(--font-mono)}.inspector .kv{display:flex;justify-content:space-between;gap:10px;font-size:var(--type-sm);padding:3px 0}.inspector .kv span:first-child{color:var(--text-dim)}.inspector .kv span:last-child{font-family:var(--font-mono)}.inspector .kv.big span:last-child{font-size:var(--type-lg);font-weight:700}.warnings{display:flex;flex-direction:column;gap:6px}.warnings .warning{border-radius:var(--r-sm);padding:8px 10px;font-size:var(--type-sm)}.warnings .warning.error{background:var(--status-fail-bg);border:1px solid var(--status-fail-border)}.warnings .warning.warn{background:var(--status-warn-bg);border:1px solid var(--status-warn-border)}.warnings .warning.info{background:var(--surface-well);border:1px solid var(--border-strong)}.workbench{position:relative;flex:1;min-height:220px;background:var(--surface-board);overflow:hidden}.workbench-controls{position:absolute;right:12px;top:12px;display:flex;flex-direction:column;gap:6px}.workbench-controls button{min-width:44px;min-height:44px;padding:4px 10px}.workbench-controls button.active{border-color:var(--accent-base);color:var(--accent-base)}.workbench canvas:focus-visible{outline:3px solid var(--accent-base);outline-offset:-3px}.workbench canvas:focus{outline:3px solid var(--accent-base);outline-offset:-3px}.workbench canvas:focus:not(:focus-visible){outline:none}.shortcuts{position:absolute;right:68px;top:12px;max-width:min(92%,420px);background:var(--surface-panel);border:1px solid var(--accent-base);border-radius:var(--r-lg);padding:12px 16px;box-shadow:0 12px 34px #0000008c;z-index:var(--z-pop);font-size:var(--type-sm)}.shortcuts h3{margin:0 0 8px;font-size:var(--type-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--text-dim)}.shortcuts dl{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;margin:0}.shortcuts dt{font-family:var(--font-mono);color:var(--accent-base);white-space:nowrap}.shortcuts dd{margin:0;color:var(--text-dim)}.port-list{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}.port-row{border:1px solid var(--border-hairline);border-left:3px solid var(--border-base);border-radius:var(--r-sm);padding:8px 10px;background:#ffffff04}.port-row.output{border-left-color:var(--steel-400)}.port-row.input{border-left-color:var(--steel-500)}.port-row.armed{border-color:var(--accent-base);border-left-color:var(--accent-base);background:var(--accent-wash)}.port-row-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.port-arrow{color:var(--text-dim)}.port-name{font-weight:600}.port-value{font-family:ui-monospace,SFMono-Regular,monospace;font-size:var(--type-xs);color:var(--accent-base);margin:4px 0 0;word-break:break-word}.port-actions{margin-top:6px}.port-actions button{min-height:34px;padding:4px 12px}.port-reason{color:var(--status-fail-fg);margin:6px 0 0}.port-wires{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:4px}.port-wires li{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:var(--type-xs)}.link-danger{background:none;border:none;color:var(--status-fail-fg);text-decoration:underline;padding:2px 4px;min-height:28px;cursor:pointer}.link-danger:hover{color:var(--status-fail-fg)}.wire-banner{position:absolute;left:50%;transform:translate(-50%);top:12px;pointer-events:none;display:flex;align-items:center;gap:10px;background:var(--accent-tint);color:var(--blueprint-400);border:1px solid var(--accent-base);border-radius:var(--r-pill);padding:7px 8px 7px 14px;font-size:var(--type-sm);max-width:92%;box-shadow:0 6px 20px #00000073;z-index:var(--z-hud)}.wire-banner strong{color:var(--text-emphasis)}.wire-banner button{pointer-events:auto}.wire-banner button{min-height:30px;padding:3px 12px;border-radius:var(--r-pill)}.wire-banner-dot{width:10px;height:10px;border-radius:50%;background:var(--accent-base);flex-shrink:0;animation:wire-pulse 1.4s ease-in-out infinite}@keyframes wire-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.75)}}.wire-help{position:absolute;left:50%;transform:translate(-50%);bottom:14px;background:var(--status-fail-bg);color:var(--status-fail-fg);border:1px solid var(--status-fail-border);border-radius:var(--r-sm);padding:6px 14px;font-size:var(--type-sm);max-width:86%;text-align:center}.workbench-empty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:var(--text-dim);pointer-events:none;text-align:center;padding:20px 76px}.debugger{display:flex;flex-direction:column;gap:10px;min-width:320px}.output-picker{display:flex;gap:6px;flex-wrap:wrap}.contributions{width:100%;border-collapse:collapse;font-size:var(--type-xs);font-family:var(--font-mono)}.contributions th,.contributions td{border-bottom:1px solid var(--border-hairline);padding:4px 8px;text-align:right}.contributions th:first-child,.contributions td:first-child{text-align:left}.contributions th{color:var(--text-dim);font-weight:600}.contributions td.ok{color:var(--status-pass-line)}.contributions td.wrong{color:var(--status-fail-line);font-weight:700}.contributions tr.first-divergence td{background:var(--status-fail-bg)}.causes{display:flex;flex-direction:column;gap:6px}.causes .cause{background:var(--status-fail-bg);border:1px solid var(--status-fail-border);border-radius:var(--r-sm);padding:8px 10px;font-size:var(--type-sm)}.power-tree{font-family:var(--font-mono);font-size:var(--type-xs);display:flex;flex-direction:column;gap:2px}.power-tree .step{display:flex;justify-content:space-between;gap:12px}.power-tree .step .label{color:var(--text-dim)}.converters{font-family:var(--font-mono);font-size:var(--type-xs)}.raw-report{background:var(--surface-board);border:1px solid var(--border-hairline);border-radius:var(--r-sm);padding:10px 12px;font-family:var(--font-mono);font-size:var(--type-xs);white-space:pre-wrap;max-height:240px;overflow-y:auto}.equation-inspector{display:flex;flex-direction:column;gap:8px}.equation{font-family:var(--font-mono);font-size:var(--type-sm);display:flex;flex-direction:column;gap:2px}.equation .term-body{padding-left:1em}.equation .term-label{color:var(--text-dim)}.equation .term-value{float:right}.equation .term-expected{color:var(--status-pass-line)}.matrix-view,.signal-trace,.performance,.layer-map{padding:14px 18px;overflow-y:auto;flex:1}.heatmap{display:flex;flex-direction:column;gap:2px;font-family:var(--font-mono);font-size:var(--type-2xs)}.heatmap-row{display:flex;gap:2px}.heatmap-cell{width:22px;height:22px;min-width:22px;border-radius:var(--r-xs);border:none;padding:0;display:flex;align-items:center;justify-content:center;font-size:9px;font-family:var(--font-mono);color:var(--text-secondary);cursor:pointer}.heatmap-cell.active{outline:2px solid var(--accent-base);outline-offset:-2px}.heat-toggle{display:flex;gap:6px;margin:6px 0 10px}.heat-toggle button{font-size:var(--type-xs);padding:5px 12px;border-radius:var(--r-pill)}.heat-toggle button.active{background:var(--accent-base);color:var(--text-on-accent);font-weight:600}.file-button,.imported-meta+.file-button{display:inline-flex;align-items:center;gap:6px;background:var(--accent-base);color:var(--text-on-accent);font-weight:600;padding:10px 16px;border-radius:var(--r-sm);cursor:pointer;min-height:40px}.imported-meta{margin:8px 0;font-size:var(--type-xs)}.imported-meta dt{color:var(--text-dim);margin-top:4px}.imported-meta dd{font-family:var(--font-mono);word-break:break-all}.cli-hint{display:block;margin-top:6px;font-size:var(--type-2xs);font-family:var(--font-mono);color:var(--text-dim);word-break:break-all}.reuse{font-size:var(--type-sm)}.reuse table{border-collapse:collapse;font-family:var(--font-mono);font-size:var(--type-xs)}.reuse td,.reuse th{border-bottom:1px solid var(--border-hairline);padding:3px 10px 3px 0;text-align:left}.outputs{width:100%;border-collapse:collapse;font-family:var(--font-mono);font-size:var(--type-sm)}.outputs th,.outputs td{text-align:left;padding:4px 18px 4px 0;border-bottom:1px solid var(--border-hairline)}.outputs thead th{color:var(--text-dim);font-weight:600}.outputs tbody tr.fail td{color:var(--status-fail-line)}.scrubber{display:flex;align-items:center;gap:8px}.scrubber input[type=range]{flex:1;min-height:30px}.path{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.path-step{min-height:32px;padding:2px 10px;font-size:var(--type-xs);font-family:var(--font-mono)}.channels{display:flex;flex-wrap:wrap;gap:6px}.channel{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border-base);border-radius:var(--r-sm);padding:4px 10px;font-family:var(--font-mono);font-size:var(--type-xs)}.layer-map{display:flex;flex-direction:column;gap:6px}.layer-rows{display:flex;flex-direction:column;gap:4px}.layer-label{font-family:var(--font-mono);font-size:var(--type-sm);padding:6px 12px;border-radius:var(--r-sm);border:1px solid var(--border-base);background:var(--surface-well)}.layer-kind{font-size:var(--type-2xs);text-transform:uppercase;letter-spacing:.1em;color:var(--text-dim);margin-left:10px}.sandbox-panel{display:flex;flex-direction:column;gap:10px;padding:12px 16px;overflow-y:auto}.sandbox-outputs{display:flex;flex-wrap:wrap;gap:8px}.sandbox-output{font-family:var(--font-mono);background:var(--surface-well);border:1px solid var(--border-base);border-radius:var(--r-sm);padding:6px 12px}.histogram{display:flex;flex-direction:column;gap:6px;margin:10px 0 16px}.histogram-bars{display:flex;align-items:flex-end;gap:3px;height:72px}.histogram-bar{flex:1;min-height:2px;background:var(--status-warn-line);border-radius:2px 2px 0 0}.histogram-axis{display:flex;justify-content:space-between;gap:8px;font-size:var(--type-2xs);color:var(--text-dim);font-family:var(--font-mono)}.labs{max-width:1100px;margin:0 auto;padding:18px 20px 60px;overflow-y:auto}.labs .home-header{text-align:left}.labs .ghost{background:transparent;border:1px solid var(--border-hairline);color:var(--text-primary);padding:8px 14px;border-radius:var(--r-sm);min-height:40px;margin-bottom:10px}.lab-panel{margin-top:16px;padding:16px 18px;border:1px solid var(--border-hairline);border-radius:var(--r-lg);background:#ffffff05}.lab-panel h2{margin-top:0}.lab-controls{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:12px 0}.lab-controls label{display:inline-flex;align-items:center;gap:8px;font-size:var(--type-sm);min-height:40px}.lab-controls select,.lab-controls input[type=number]{background:var(--surface-well);color:var(--text-primary);border:1px solid var(--border-hairline);border-radius:var(--r-md);padding:8px 10px;min-height:40px;font-family:var(--font-mono)}.lab-table{width:100%;border-collapse:collapse;font-size:var(--type-sm);font-family:var(--font-mono)}.lab-table th,.lab-table td{border-bottom:1px solid var(--border-hairline);padding:8px 10px 8px 0;text-align:left}.lab-table thead th{font-size:var(--type-2xs);text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim)}.lab-table .badge.small{margin-left:8px}.challenge-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;margin-top:14px}.lab-seed{display:inline-flex;align-items:center;gap:8px;min-height:40px}.lab-seed input{background:var(--surface-well);color:var(--text-primary);border:1px solid var(--border-hairline);border-radius:var(--r-md);padding:8px 10px;min-height:40px;font-family:var(--font-mono);width:100px}.glossary{display:flex;flex-direction:column;gap:10px}.glossary-entry{background:var(--surface-well);border:1px solid var(--border-hairline);border-radius:var(--r-lg);padding:12px 14px}.glossary-entry h4{margin:0 0 4px;display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}.glossary-entry .analogy{color:var(--text-dim);font-style:italic;margin:4px 0}.glossary-filter{width:100%}.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%);background:var(--surface-raised);border:1px solid var(--border-base);color:var(--text-primary);border-radius:var(--r-lg);padding:10px 18px;max-width:min(80vw,560px);z-index:var(--z-toast);box-shadow:var(--bevel-hi),var(--elev-3);text-align:center}.modal-backdrop{position:fixed;inset:0;background:var(--surface-scrim);display:flex;align-items:center;justify-content:center;z-index:var(--z-backdrop);padding:20px}.modal{background:var(--surface-panel);border:1px solid var(--border-base);border-radius:var(--r-xl);max-width:760px;width:100%;max-height:86vh;overflow-y:auto;padding:22px 26px;box-shadow:var(--bevel-hi),var(--elev-4)}.modal h2{margin-top:0}.modal .modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.mission-complete{max-width:520px;text-align:center}.mission-complete-eyebrow{margin:0 0 4px;color:var(--text-dim);font-size:var(--type-sm);letter-spacing:.04em;text-transform:uppercase}.mission-complete h2{margin:0 0 10px}.mission-complete-stars{margin:6px 0 14px;font-size:var(--type-2xl);letter-spacing:6px;line-height:1}.mission-complete-stars .star{display:inline-block;color:var(--steel-400)}.mission-complete-stars .star.earned{color:var(--status-warn-line);animation:star-pop var(--dur-4) var(--ease-snap) both}body.reduced-motion .mission-complete-stars .star.earned{animation:none}@keyframes star-pop{0%{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}.mission-complete-lede{margin:0 0 10px;font-size:var(--type-md)}.mission-complete-scores{justify-content:center;grid-template-columns:max-content max-content;margin:14px auto 4px;text-align:left}.mission-complete-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:18px}.mission-complete-actions .primary{flex:1 1 100%}.mission-complete-campaign{margin:14px 0 0;color:var(--status-warn-line);font-size:var(--type-sm)}.view-mode-field{border:1px solid var(--border-base);border-radius:var(--r-lg);padding:10px 14px 14px;margin:0}.view-mode-field legend{padding:0 6px;color:var(--text-dim);font-size:var(--type-xs);text-transform:uppercase;letter-spacing:.06em}.view-mode-field .segmented{display:flex;flex-wrap:wrap;gap:8px 22px}.view-mode-field .segmented label{display:inline-flex;align-items:center;gap:7px;min-height:32px}body.reduced-motion *,body.reduced-motion *:before,body.reduced-motion *:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}@media (prefers-reduced-motion: reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
