@font-face{font-family:Poppins;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/poppins-400.woff2)format("woff2")}@font-face{font-family:Poppins;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/poppins-500.woff2)format("woff2")}@font-face{font-family:Poppins;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/poppins-600.woff2)format("woff2")}@font-face{font-family:Poppins;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/poppins-700.woff2)format("woff2")}:root{--ink:#0e0e0e;--surface:#fcf9f8;--surface-lowest:#fff;--surface-low:#f6f3f2;--border:#e5e2e1;--border-strong:#d6d3d1;--muted:#5b6656;--primary:#7bea6f;--primary-hover:#6ed962;--primary-dark:#006e0e;--text-2:#44403c;--text-3:#57534e;--text-4:#716a65;--chip-bg:#f5f5f4;--dot:#e5e7eb;--live:#1e9e18;--live-glow:#7bea6f;--dead:#b9b4af;--earth:#f5c400;--earth-dark:#9a7600;--fault:#e5484d;--arc:#ff8a00;--risk-low:#1e9e18;--risk-mid:#c98a00;--risk-high:#e5484d;--radius-sm:6px;--radius:8px;--radius-lg:12px;--radius-xl:16px;--container:1280px;--gutter:48px;--header-h:64px;--btn-h:44px;--shadow-soft:0 2px 8px #00000005;--shadow-pop:0 18px 40px -12px #0e0e0e47,0 4px 12px #0e0e0e14;--ease:cubic-bezier(.2,.7,.2,1)}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{color:var(--ink);background:var(--surface);-webkit-font-smoothing:antialiased;margin:0;font-family:Poppins,system-ui,-apple-system,Segoe UI,sans-serif;line-height:1.5}::selection{background:var(--primary);color:var(--ink)}img,svg{max-width:100%;display:block}a{color:inherit;text-decoration:none}h1,h2,h3,h4,p{margin:0}ol,ul{margin:0;padding:0;list-style:none}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--ink);outline-offset:3px;border-radius:4px}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.container{width:100%;max-width:var(--container);padding:0 var(--gutter);margin:0 auto}.eyebrow{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:600}.btn{height:var(--btn-h);border-radius:var(--radius);white-space:nowrap;cursor:pointer;border:1px solid #0000;flex-shrink:0;justify-content:center;align-items:center;gap:8px;padding:0 22px;font-size:14px;font-weight:600;line-height:1;transition:background-color .2s,border-color .2s,color .2s,opacity .2s,transform .15s;display:inline-flex}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--primary);color:var(--ink)}.btn-primary:hover{background:var(--primary-hover)}.btn-dark{background:var(--ink);color:#fff}.btn-dark:hover{background:#2a2a2a}.btn-outline{background:var(--surface-lowest);color:var(--text-2);border-color:var(--border-strong);font-weight:500}.btn-outline:hover{background:#fafaf9;border-color:#a8a29e}.btn-ghost{color:var(--text-2);background:0 0}.btn-ghost:hover{background:var(--chip-bg)}.btn-sm{height:34px;padding:0 14px;font-size:13px}.btn[disabled]{opacity:.4;cursor:not-allowed}.btn svg{width:16px;height:16px}.tag{white-space:nowrap;background:var(--chip-bg);height:22px;color:var(--text-3);border:1px solid var(--border);border-radius:4px;align-items:center;padding:0 10px;font-size:12px;font-weight:500;line-height:1;display:inline-flex}.app-header{z-index:40;height:var(--header-h);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--border);background:#ffffffeb;position:sticky;top:0}.app-header .bar{align-items:center;gap:16px;height:100%;display:flex}.brand{border-radius:6px;flex-shrink:0;align-items:center;display:inline-flex}.brand svg{width:54px;height:36px}.crumbs{color:var(--muted);align-items:center;gap:8px;min-width:0;font-size:14px;display:flex}.crumbs a:hover{color:var(--ink)}.crumbs .sep{color:var(--text-4)}.crumbs .here{color:var(--ink);white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.app-header .actions{align-items:center;gap:8px;margin-left:auto;display:flex}@media (width<=1023px){:root{--gutter:32px}}@media (width<=640px){:root{--gutter:16px}.crumbs .hide-sm{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.bar--wide[data-astro-cid-urxya6sf]{max-width:none;padding:0 20px}.sld{user-select:none;width:100%;height:100%;font-family:Poppins,system-ui,sans-serif;overflow:visible}.sld text{font-family:Poppins,system-ui,sans-serif}.sld .w,.sld .c,.sld .arrow{fill:none;stroke:var(--ink);stroke-width:2.5px;stroke-linecap:round;stroke-linejoin:round;transition:stroke .45s ease var(--d,0s)}.sld [data-s=E].w,.sld [data-s=E].c,.sld [data-s=E].arrow{stroke:var(--live)}.sld [data-s=D].w,.sld [data-s=D].c,.sld [data-s=D].arrow{stroke:var(--dead)}.sld [data-s=T].w,.sld [data-s=T].c,.sld [data-s=T].arrow{stroke:var(--earth-dark)}.sld [data-s=F].w,.sld [data-s=F].c,.sld [data-s=F].arrow{stroke:var(--fault)}.sld .hatch{fill:none;stroke-linecap:round;stroke-width:9px;opacity:0;transition:opacity .5s ease var(--d,0s),stroke-width .4s}.sld [data-s=E].hatch{stroke:var(--live-glow);opacity:.32}.sld [data-s=T].hatch{stroke:url(#sl-hatch);stroke-width:12px;opacity:1;animation:hatch-in .7s var(--ease) both}.sld [data-s=F].hatch{stroke:var(--fault);opacity:.35;stroke-width:14px;animation:.35s ease-in-out infinite alternate fault-glow}.sld .bus-hatch[data-s=T]{stroke-width:20px}@keyframes hatch-in{0%{stroke-dasharray:0 2000}to{stroke-dasharray:2000 0}}@keyframes fault-glow{0%{opacity:.15}to{opacity:.55}}.sld .flow{fill:none;stroke:#e8ffe4;stroke-width:2.4px;stroke-linecap:round;stroke-dasharray:0 15;opacity:0;transition:opacity .3s ease var(--d,0s)}.sld [data-s=E].flow{opacity:.95;animation:1.15s linear infinite flow}.sld .bus-flow{stroke-width:3.2px;stroke-dasharray:0 22}.sld [data-s=E].bus-flow{animation-duration:1.6s}@keyframes flow{to{stroke-dashoffset:-15px}}.sld .bus{fill:var(--ink);transition:fill .5s ease var(--d,0s)}.sld .bus[data-s=E]{fill:var(--live)}.sld .bus[data-s=D]{fill:var(--dead)}.sld .bus[data-s=T]{fill:var(--earth-dark)}.sld .bus[data-s=F]{fill:var(--fault)}.sld .bus--t{stroke:var(--ink);stroke-width:2.2px;transition:stroke .5s ease var(--d,0s);fill:#fff!important}.sld .bus--t[data-s=E]{stroke:var(--live)}.sld .bus--t[data-s=D]{stroke:var(--dead)}.sld .bus--t[data-s=T]{stroke:var(--earth-dark)}.sld .bus-lbl{fill:var(--ink);font-size:13px;font-weight:700}.sld .halo{fill:none;stroke:#fff;stroke-width:7px}.sld .node-dot{fill:var(--ink);transition:fill .45s ease var(--d,0s)}.sld .node-dot[data-s=E]{fill:var(--live)}.sld .node-dot[data-s=D]{fill:var(--dead)}.sld .k{fill:none;stroke:var(--ink);stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round}.sld .nf{fill:none}.sld .wf,.sld .wf-bg{fill:#fff}.sld .fk{fill:var(--ink)}.sld .piv{fill:#fff;stroke:var(--ink);stroke-width:2px}.sld .deco-lbl{fill:var(--text-4);letter-spacing:.02em;font-size:9.5px;font-weight:600}.sld .deco-ct .ct-ring{transition:stroke .45s,filter .45s}.sld .deco-ct[data-s=E] .ct-ring{stroke:var(--live);filter:drop-shadow(0 0 3px #7bea6fe6)}.sld .deco-dps[data-s=E] .dps-body{stroke:var(--live)}.sld .bay-lbl{fill:var(--muted);letter-spacing:.04em;text-transform:uppercase;font-size:11px;font-weight:600}.sld .brk-body{fill:var(--ink);stroke:var(--ink);stroke-width:2.4px;transition:fill .35s}.sld .sw-brk.is-open .brk-body{fill:#fff}.sld .spark{opacity:0;pointer-events:none}.sld .spark path{fill:none;stroke:var(--arc);stroke-width:2px;stroke-linecap:round}.sld .sw.go-spark .spark{animation:.6s ease-out spark}@keyframes spark{0%{opacity:1;transform:scale(.4)}60%{opacity:1}to{opacity:0;transform:scale(1.9)}}.sld .blade{transition:transform .65s cubic-bezier(.45,0,.2,1)}.sld .sw.is-open .blade{transform:rotate(-30deg)}.sld .sw-earth .gnd-blade{stroke:var(--ink)}.sld .sw-earth:not(.is-open) .gnd-blade{stroke:var(--earth-dark)}.sld .hit{fill:#0000;pointer-events:none}.board.is-practice .sld .hit,.board.is-free .sld .hit{pointer-events:all;cursor:pointer}.sld .focus-ring{fill:none;stroke:var(--ink);stroke-width:1.6px;stroke-dasharray:5 4;opacity:0;transition:opacity .25s}.board.is-practice .sld .sw:hover .focus-ring,.board.is-free .sld .sw:hover .focus-ring{opacity:.45}.sld .sw.is-focus .focus-ring{opacity:1;stroke:var(--ink);animation:6s linear infinite ring-spin,1.4s ease-in-out infinite ring-pulse}.sld .sw.is-wrong .focus-ring{opacity:1;stroke:var(--fault);stroke-dasharray:none}.sld .sw.is-wrong{animation:.45s shake}@keyframes ring-spin{to{stroke-dashoffset:-90px}}@keyframes ring-pulse{0%,to{stroke-width:1.6px}50%{stroke-width:3px}}@keyframes shake{0%,to{translate:0}20%{translate:-3px}40%{translate:3px}60%{translate:-2px}80%{translate:2px}}.sld .lock-ico,.sld .pat-ico{opacity:0;pointer-events:none;transition:opacity .35s,transform .35s}.sld .lock-ico .k{stroke:var(--ink)}.sld .lock-ico .wf{fill:#ffe27a}.sld .sw-over.is-locked .lock-ico,.sld .sw-over.has-pat .pat-ico{opacity:1;animation:pop .45s var(--ease)}.sld .pat-clamp{fill:var(--earth);stroke:var(--earth-dark);stroke-width:1.5px}@keyframes pop{0%{transform:scale(.2)}to{transform:scale(1)}}.sld .chip rect{fill:#fff;stroke:var(--border-strong);stroke-width:1.1px}.sld .chip text{fill:#1f2937;text-anchor:middle;font-size:10.5px;font-weight:600}.sld .chip--src rect{fill:var(--ink);stroke:var(--ink)}.sld .chip--src text{fill:#fff}.sld .chip--load rect{fill:#f0fdf0;stroke:#b8e6b3}.sld .chip--sw{transition:opacity .2s}.sld .chip.is-hot rect{fill:var(--ink);stroke:var(--ink)}.sld .chip.is-hot text{fill:#fff}.sld .tripped rect{fill:var(--fault);stroke:var(--fault)}.sld .tripped text{fill:#fff}.sld .src-pulse{fill:var(--live-glow);opacity:0;transform-box:fill-box;transform-origin:50%}.sld .src-pulse[data-s=E]{animation:1.8s ease-out infinite src-pulse}@keyframes src-pulse{0%{opacity:.7;transform:scale(.5)}to{opacity:0;transform:scale(2.4)}}.sld .remote{cursor:help}.sld .remote text{fill:var(--live);font-size:8.5px;font-weight:600;transition:opacity .4s}.sld .remote .r-off{fill:var(--fault);opacity:0}.sld .remote.is-off .r-on{opacity:0}.sld .remote.is-off .r-off{opacity:1}.sld .remote-dot{fill:var(--live);transform-box:fill-box;transform-origin:50%;transition:fill .4s;animation:1.4s ease-in-out infinite remote-blink}.sld .remote.is-off .remote-dot{fill:var(--fault);animation:none}@keyframes remote-blink{50%{opacity:.25;transform:scale(.6)}}@media (prefers-reduced-motion:reduce){.sld .remote-dot{animation:none}}.sld .tr-w1,.sld .tr-w2{transition:stroke .45s}.sld .tr-w1[data-s=E]{stroke:var(--live)}.sld .tr-w2[data-s=E]{stroke:var(--live);animation:2.4s ease-in-out infinite breathe}.sld .tr-w1[data-s=D],.sld .tr-w2[data-s=D]{stroke:var(--dead)}@keyframes breathe{50%{stroke-width:3.4px}}.sld .mt-txt{fill:var(--muted);font-size:11px;font-weight:600}.sld .bolt{fill:var(--dead);transition:fill .4s}.sld .mt[data-s=E] .bolt{fill:var(--earth);animation:1.6s ease-in-out infinite bolt}.sld .mt[data-s=E] .mt-txt{fill:var(--live)}.sld .mt[data-s=D] .mt-txt{fill:var(--fault)}@keyframes bolt{50%{opacity:.45}}.sld--thumb .chip,.sld--thumb .deco-lbl,.sld--thumb .mt,.sld--thumb .bay-lbl,.sld--thumb .lbl{display:none}.sld--thumb .w,.sld--thumb .c,.sld--thumb .arrow{stroke-width:3px}.sld .arc{pointer-events:none}.sld .arc .bolt-core{fill:none;stroke:#fff;stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round}.sld .arc .bolt-glow{fill:none;stroke:#8ec9ff;stroke-width:7px;stroke-linecap:round;stroke-linejoin:round;opacity:.55;filter:blur(2px)}.sld .arc .bolt-hot{fill:none;stroke:var(--arc);stroke-width:4px;stroke-linecap:round;opacity:.7}.sld .arc .flash{fill:#fff6c2;opacity:0;animation:.5s ease-out flash}.sld .arc .ring{fill:none;stroke:var(--arc);stroke-width:2px;opacity:0;transform-box:fill-box;transform-origin:50%;animation:.7s ease-out ring-out}.sld .arc .ember{fill:var(--arc);animation:.9s ease-out forwards ember}@keyframes flash{0%{opacity:.95}to{opacity:0}}@keyframes ring-out{0%{opacity:.9;transform:scale(.3)}to{opacity:0;transform:scale(2.2)}}@keyframes ember{to{transform:translate(var(--ex),var(--ey));opacity:0}}.sld .trip-tag{animation:pop .4s var(--ease)}.sld .trip-tag rect{fill:var(--fault)}.sld .trip-tag text{fill:#fff;text-anchor:middle;font-size:10px;font-weight:700}.sld .meter{animation:pop .4s var(--ease)}.sld .meter rect{fill:var(--ink)}.sld .meter text{fill:#fff;text-anchor:middle;font-size:11px;font-weight:700}.sld .meter.is-live rect{fill:var(--fault)}.sld .fault-mark{animation:.5s ease-in-out infinite alternate fault-glow}.sld .fault-mark path{fill:var(--fault)}
