@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-vietnamese-wght-normal-D0rl6rjA.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-latin-ext-wght-normal-D9tNdqV9.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-latin-wght-normal-BhU9QXUp.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/space-mono-vietnamese-400-normal-BNOj0Qhp.woff2)format("woff2"),url(/assets/space-mono-vietnamese-400-normal-B0PMp_xB.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/space-mono-latin-ext-400-normal-DTLbW2xa.woff2)format("woff2"),url(/assets/space-mono-latin-ext-400-normal-D4cJI_B-.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Space Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/space-mono-latin-400-normal-Rg4St2Dn.woff2)format("woff2"),url(/assets/space-mono-latin-400-normal-_3DlpgIW.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-mono-vietnamese-700-normal-DWQgDHuA.woff2)format("woff2"),url(/assets/space-mono-vietnamese-700-normal-D-KrLuLr.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-mono-latin-ext-700-normal-B2s3bDs2.woff2)format("woff2"),url(/assets/space-mono-latin-ext-700-normal-B_E7P90g.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Space Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-mono-latin-700-normal-mWgeinG7.woff2)format("woff2"),url(/assets/space-mono-latin-700-normal-D7A851RN.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#1b1917;--panel:#23201d;--panel-2:#2a2622;--panel-3:#332e29;--line:#3a3530;--line-2:#4c463f;--fg:#f2ede4;--fg-2:#cdc5b8;--fg-3:#94897b;--fg-4:#665e54;--amber:#f5a524;--amber-dim:#f5a52429;--green:#8be37d;--green-dim:#8be37d29;--red:#ff5f52;--red-dim:#ff5f522e;--cyan:#5ec8dc;--cyan-dim:#5ec8dc29;--grey:#6f675d;--accent:var(--amber);--accent-fg:#1f1403;--sans:"Space Grotesk Variable", "Space Grotesk", system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"Space Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--radius:5px;--radius-lg:8px;--bar-h:54px}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;height:100%}body{background:radial-gradient(1200px 600px at 20% -10%, #f5a5240f, transparent 60%), var(--bg);min-height:100%;color:var(--fg);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;font-size:13.5px;line-height:1.45}h1,h2,h3,p,ol,ul{margin:0}a{color:var(--cyan);text-decoration:none}a:hover{text-decoration:underline}button,input{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}:focus-visible{outline:2px solid var(--cyan);outline-offset:1px}.mono,.num{font-family:var(--mono)}.num{font-variant-numeric:tabular-nums}.muted{color:var(--fg-3)}.small{font-size:11.5px}.error{color:var(--red)}.btn{border:1px solid var(--line-2);border-radius:var(--radius);background:linear-gradient(180deg, var(--panel-3), var(--panel-2));height:30px;color:var(--fg);white-space:nowrap;justify-content:center;align-items:center;gap:6px;padding:0 12px;font-size:12.5px;font-weight:500;transition:background .12s,border-color .12s,color .12s;display:inline-flex;box-shadow:0 1px #0000004d}.btn:hover:not(:disabled){border-color:var(--fg-4)}.btn:active:not(:disabled){box-shadow:none;transform:translateY(1px)}.btn:disabled{opacity:.45}.btn-sm{height:25px;padding:0 9px;font-size:11.5px}.btn-primary{background:linear-gradient(180deg, #ffbd45, var(--accent));border-color:var(--accent);color:var(--accent-fg)}.btn-ghost{box-shadow:none;color:var(--fg-2);background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){border-color:var(--line);color:var(--fg)}.btn-danger{color:var(--red);border-color:#ff5f5266}.btn-danger:hover:not(:disabled){background:var(--red-dim);border-color:var(--red)}.btn.selected{border-color:var(--fg-3);background:var(--panel-3)}.segmented{border:1px solid var(--line-2);border-radius:var(--radius);background:var(--bg);padding:2px;display:inline-flex}.segmented button{height:24px;color:var(--fg-3);background:0 0;border:0;border-radius:3px;padding:0 10px;font-size:12px;font-weight:500}.segmented button[aria-pressed=true]{background:var(--panel-3);color:var(--fg)}.segmented button:hover:not([aria-pressed=true]):not(:disabled){color:var(--fg-2)}.option{color:var(--fg-2);cursor:pointer;align-items:center;gap:6px;display:inline-flex}.option input{accent-color:var(--amber)}.panel{background:linear-gradient(180deg, var(--panel-2), var(--panel));border:1px solid var(--line);border-radius:var(--radius-lg);flex-direction:column;min-width:0;display:flex;box-shadow:inset 0 1px #ffffff0a,0 1px 2px #0000004d}.faceplate{border-bottom:1px solid var(--line);align-items:center;gap:10px;min-height:36px;padding:6px 12px;display:flex}.faceplate h2{letter-spacing:.08em;text-transform:uppercase;color:var(--fg-2);font-size:11px;font-weight:600}.faceplate .spacer{flex:1}.panel-note{border-top:1px solid var(--line);color:var(--fg-3);margin-top:auto;padding:8px 12px 10px;font-size:11.5px;line-height:1.5}.led{background:#2b2723;border:1px solid #00000080;border-radius:50%;flex:none;transition:background .1s,box-shadow .1s;display:inline-block;box-shadow:inset 0 1px 1px #ffffff14}.led.on.tone-amber{background:var(--amber);box-shadow:0 0 8px var(--amber), inset 0 0 2px #fff9}.led.on.tone-green{background:var(--green);box-shadow:0 0 8px var(--green), inset 0 0 2px #fff9}.led.on.tone-red{background:var(--red);box-shadow:0 0 9px var(--red), inset 0 0 2px #fff9}.led.on.tone-cyan{background:var(--cyan);box-shadow:0 0 8px var(--cyan), inset 0 0 2px #fff9}.led.on.tone-grey{background:var(--fg-3)}.meter{background:var(--bg);border:1px solid var(--line);border-radius:3px;flex:1;min-width:60px;height:6px;overflow:hidden}.meter-fill{background:var(--green);height:100%;transition:width .1s linear}.meter.tripped .meter-fill{background:var(--red)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.app{flex-direction:column;min-height:100vh;display:flex}.topbar{z-index:10;height:var(--bar-h);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);background:#1b1917eb;align-items:center;gap:16px;padding:0 16px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:10px;min-width:0;display:flex}.brand .mark{width:26px;height:24px;display:block}.wordmark{letter-spacing:-.01em;font-size:15.5px;font-weight:650}.product{color:var(--fg-3);border-left:1px solid var(--line-2);padding-left:10px;font-size:12.5px}.bar-controls{flex:1;justify-content:flex-end;align-items:center;gap:14px;min-width:0;display:flex}.bar-controls .status{color:var(--fg-2);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:7px;display:inline-flex;overflow:hidden}.source{color:var(--fg-2);align-items:center;gap:5px;font-size:12.5px;font-weight:500;display:inline-flex}.source:hover{color:var(--fg);text-decoration:none}.bench{flex-direction:column;flex:1;gap:14px;width:100%;max-width:1600px;margin:0 auto;padding:14px 16px 20px;display:flex}.bench-top{grid-template-columns:minmax(0,1fr) 320px 400px;align-items:start;gap:14px;display:grid}.column{flex-direction:column;gap:14px;min-width:0;display:flex}.viewport .screen{border-radius:0 0 var(--radius-lg) var(--radius-lg);background:#141210;position:relative;overflow:hidden}.viewport canvas{width:100%;height:100%;display:block}.hidden-video{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.screen-note{text-align:center;color:var(--fg-2);background:#141210db;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:24px;display:flex;position:absolute;inset:0}.screen-note p{max-width:440px;line-height:1.5}.screen-note .meter{flex:none;width:240px}.screen-note .meter-fill{background:var(--amber)}.screen-note.stalled{color:var(--amber);background:#f5a52414;justify-content:flex-end;padding-bottom:14px;font-weight:500}.digits{align-items:center;gap:16px;padding:12px 14px 6px;display:flex}.digit{color:var(--amber);text-shadow:0 0 18px #f5a52459;text-align:center;min-width:48px;font-size:64px;font-weight:700;line-height:1}.digit-side{grid-template-columns:auto auto;align-items:baseline;gap:2px 12px;display:grid}.digit-side .mapping{font-weight:500}.digit-side .raw{font-size:15px}.confirm{justify-content:space-between;align-items:center;gap:10px;padding:4px 14px 12px;display:flex}.pips{gap:4px;display:flex}.pip{background:var(--panel-3);border:1px solid var(--line-2);border-radius:2px;width:14px;height:6px}.pip.on{background:var(--amber);border-color:var(--amber);box-shadow:0 0 6px var(--amber-dim)}.channels{flex-direction:column;gap:7px;padding:10px 12px;display:flex}.channel{grid-template-columns:52px minmax(0,1fr) 42px 12px;align-items:center;gap:10px;display:grid}.channel .name{color:var(--fg-2);text-transform:capitalize;font-size:12px}.channel.on .name{color:var(--fg)}.band{background:var(--bg);border:1px solid var(--line);border-radius:3px;height:14px;position:relative;overflow:hidden}.band .hysteresis{background:var(--amber-dim);border-left:1px solid #f5a52480;border-right:1px solid #f5a52480;position:absolute;top:0;bottom:0}.band .zero{background:var(--line-2);width:1px;position:absolute;top:0;bottom:0}.band .marker{background:var(--fg);border-radius:1px;width:3px;margin-left:-1.5px;transition:left 60ms linear;position:absolute;top:2px;bottom:2px}.channel.on .band .marker{background:var(--green);box-shadow:0 0 6px var(--green)}.channel .value{text-align:right;color:var(--fg-2);font-size:11.5px}.module{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:12px;display:grid}.relay{border-radius:var(--radius);background:#1e2a44;border:1px solid #2f3f60;flex-direction:column;gap:6px;padding:8px;display:flex;box-shadow:inset 0 1px #ffffff0d}.relay-head{justify-content:space-between;align-items:center;gap:6px;display:flex}.relay-head .label{letter-spacing:.04em;color:#d8e2f5;font-size:11px;font-weight:600}.relay-head .label .muted{color:#7f8fb0;font-weight:500}.coil{background:linear-gradient(#2f3b55,#1b2437);border:1px solid #3b4d73;border-radius:3px;justify-content:center;align-items:center;height:26px;display:flex}.coil .contact{transform-origin:0;background:#5f719a;width:60%;height:2px;transition:transform .12s ease-out;transform:rotate(-14deg)}.relay.on .coil{background:linear-gradient(#3a3122,#2a2217);border-color:#6b5422}.relay.on .coil .contact{background:var(--amber);box-shadow:0 0 6px var(--amber-dim);transform:rotate(0)}.relay-foot{color:#d8e2f5;justify-content:space-between;font-size:11px;display:flex}.relay-foot .muted{color:#7f8fb0}.hold{color:#d8e2f5;background:#00000040;border-radius:3px;justify-content:center;align-items:center;height:16px;display:flex;position:relative;overflow:hidden}.hold .small{white-space:nowrap;font-size:10.5px;position:relative}.hold .muted{color:#7f8fb0}.hold-fill{background:#f5a52459;transition:width 80ms linear;position:absolute;top:0;bottom:0;left:0}.relays.tripped .relay{border-color:#ff5f5280}.relays.unpowered .relay{opacity:.55}.units{grid-template-columns:minmax(0,1fr) 56px minmax(0,1fr);align-items:stretch;gap:8px;padding:12px 12px 6px;display:grid}.unit{border-radius:var(--radius);background:var(--bg);border:1px solid var(--line);flex-direction:column;gap:8px;padding:8px 10px;display:flex}.unit-head{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.unit-name{font-size:12.5px;font-weight:600}.unit-row{align-items:center;gap:8px;display:flex}.state-running{color:var(--green)}.state-stalled{color:var(--amber)}.state-exited{color:var(--red)}.cable{flex-direction:column;justify-content:center;align-items:center;gap:4px;display:flex}.cable .wire{background:var(--fg-3);border-radius:2px;width:100%;height:3px}.cable .wire.cut{background:repeating-linear-gradient(90deg, var(--red) 0 8px, transparent 8px 14px)}.watchdog .spacer{flex:1}.watchdog .num{white-space:nowrap}.unit .meter{width:100%}.unit-head .small{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.faults{flex-wrap:wrap;gap:6px;padding:8px 12px 12px;display:flex}.scope-screen{background:#141210;flex:1;min-height:150px;padding:6px 8px}.scope-screen canvas{width:100%;height:150px;display:block}.legend{color:var(--fg-3);align-items:center;gap:5px;display:inline-flex}.legend i{vertical-align:middle;width:12px;height:2px;margin-left:6px;display:inline-block}.legend i:first-child{margin-left:0}.legend .trace-raw{background:repeating-linear-gradient(90deg, var(--fg-3) 0 3px, transparent 3px 6px)}.legend .trace-filtered{background:var(--amber)}.legend .src-host{background:var(--fg-2)}.legend .src-board{background:var(--cyan)}.legend .src-bench{background:var(--amber)}.transport{border-bottom:1px solid var(--line);background:#0000001f;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 12px;display:flex}.sequences{max-height:236px;margin:0;padding:6px 0;list-style:none;overflow:auto}.sequence{text-align:left;width:100%;color:var(--fg);background:0 0;border:0;grid-template-columns:10px minmax(0,1fr) 44px;align-items:center;gap:10px;padding:5px 12px;display:grid}.sequence:hover{background:var(--panel-3)}.sequences li.current .sequence{background:var(--amber-dim)}.seq-name{font-size:12px}.seq-desc{display:none}.sequences li.current .seq-desc{white-space:normal;grid-column:2/-1;display:block}.seq-frames{text-align:right}.timings table{border-collapse:collapse;width:100%;font-size:12.5px}.timings th{text-align:left;letter-spacing:.06em;text-transform:uppercase;color:var(--fg-3);border-bottom:1px solid var(--line);padding:8px 12px 4px;font-size:10.5px;font-weight:600}.timings th.num,.timings td.num{text-align:right;font-family:var(--mono)}.timings th.num{font-family:var(--sans)}.timings td{border-bottom:1px solid var(--line);vertical-align:top;padding:7px 12px}.timings td .note{display:block}.log-body{height:200px;padding:8px 12px;font-size:11.5px;line-height:1.55;overflow:auto}.line{white-space:nowrap;align-items:baseline;gap:8px;display:flex}.line .t,.line .lvl{color:var(--fg-3);white-space:pre}.line.level-WARN .lvl{color:var(--amber)}.line.level-ERROR .lvl{color:var(--red)}.line .src{width:42px;color:var(--fg-3)}.line.src-board .src{color:var(--cyan)}.line.src-bench .src{color:var(--amber)}.line .msg{white-space:pre-wrap;overflow-wrap:anywhere;min-width:0}.line.level-ERROR .msg{color:var(--red)}.explain{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid}.card-body{color:var(--fg-2);flex-direction:column;gap:10px;padding:10px 12px 12px;font-size:12.5px;line-height:1.55;display:flex}.mapping{border-collapse:collapse;font-size:12px}.mapping td{padding:2px 10px 2px 0}.wiring{border-radius:var(--radius);background:var(--bg);border:1px solid var(--line);color:var(--fg-2);margin:0;padding:10px;font-size:11px;line-height:1.5;overflow-x:auto}.foot{border-top:1px solid var(--line);color:var(--fg-3);width:100%;max-width:1600px;margin:0 auto;padding:14px 16px 22px;font-size:12px;line-height:1.5}.foot .constants{color:var(--fg-4);margin-top:4px}.foot a{color:var(--fg-3);text-decoration:underline}.foot a:hover{color:var(--fg)}.fatal{flex-direction:column;gap:12px;max-width:560px;margin:80px auto;padding:20px;display:flex}@media (max-width:1360px){.bench-top{grid-template-columns:minmax(0,1fr) 300px}.column.hardware{grid-column:1/-1;grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;display:grid}.explain{grid-template-columns:repeat(2,minmax(0,1fr))}.product{display:none}}@media (max-width:900px){.bench-top,.column.hardware,.explain,.units{grid-template-columns:minmax(0,1fr)}.cable{flex-direction:row;gap:10px}.cable .wire{width:40px}}@media (max-width:760px){.topbar{height:auto;min-height:var(--bar-h);flex-wrap:wrap;gap:8px;padding:8px 12px}.bar-controls{flex-wrap:wrap;flex-basis:100%;order:3;justify-content:flex-start;gap:8px}.segmented button{white-space:nowrap}.source{margin-left:auto}.bench{padding:12px 12px 16px}.module{grid-template-columns:repeat(2,minmax(0,1fr))}.digits{gap:12px}.faceplate{flex-wrap:wrap}.foot{padding:12px 12px 20px}}
