body.lab{--bb-plus:#e5484d;--bb-minus:#3b82f6}.lab-title{align-items:baseline;gap:var(--s3);min-width:0;display:flex}.lab-title h1{flex-shrink:0}.title-input{width:26ch;min-width:0;height:30px!important;padding:0 var(--s2)!important;color:var(--text-2)!important;font:700 14px var(--font-ui)!important;background:0 0!important;border-color:#0000!important}.title-input:hover{border-color:var(--line)!important}.title-input:focus{border-color:var(--accent)!important;color:var(--text)!important}.save-state{font:600 12px var(--font-ui);color:var(--muted);white-space:nowrap}.save-state[data-kind=error]{color:#fecaca}.save-state[data-kind=ok]{color:var(--text-2)}.lab-actions{align-items:center;gap:var(--s2);margin-left:auto;display:flex}.lab-actions .btn-quiet{height:32px;padding:0 var(--s3)}.lab-banner{align-items:center;gap:var(--s3);padding:var(--s2) var(--s5);background:var(--accent-soft);color:var(--text);border-bottom:1px solid #22d3ee59;font-weight:600;display:flex}.lab-banner svg{width:18px;height:18px;color:var(--accent)}.lab-banner .btn{margin-left:auto}.lab-grid{--lib-w:252px;--side-w:min(460px, 36%);grid-template-columns:var(--lib-w) minmax(0, 1fr) var(--side-w);flex:1;grid-template-areas:"lib stage side";min-height:0;display:grid}.lab-lib{grid-area:lib}.lab-stage{grid-area:stage}.lab-side{grid-area:side}.lab-lib{background:var(--surface);border-right:1px solid var(--line);flex-direction:column;min-height:0;display:flex}.lib-head{padding:var(--s3);gap:var(--s2);border-bottom:1px solid var(--line);display:grid}.lib-search{position:relative}.lib-search svg{width:16px;height:16px;color:var(--muted);pointer-events:none;position:absolute;top:50%;left:10px;translate:0 -50%}.lib-search input{width:100%;height:34px;padding-left:32px}.lib-search-row{align-items:center;gap:6px;display:flex}.lib-search-row .lib-search{flex:1;min-width:0}.lib-search-row .tool{flex:none}.lib-filter-btn .dot{background:var(--accent);border-radius:50%;width:7px;height:7px;position:absolute;top:5px;right:5px}.lib-cats{flex-wrap:wrap;gap:6px;display:flex}.lib-cats[hidden]{display:none}.cat-chip{border:1px solid var(--line);height:26px;color:var(--text-2);font:700 12px var(--font-ui);cursor:pointer;background:0 0;border-radius:999px;padding:0 10px}.cat-chip:hover{border-color:var(--line-strong);color:var(--text)}.cat-chip[aria-pressed=true]{color:var(--accent);background:var(--accent-soft);border-color:#22d3ee80}.lib-list{min-height:0;padding:var(--s2) var(--s2) var(--s3);flex:1;overflow-y:auto}.lib-group{font:800 13px var(--font-ui);color:var(--text-2);padding:var(--s3) var(--s2) var(--s1)}.lib-item{gap:var(--s3);width:100%;padding:6px var(--s2);border-radius:var(--r);color:var(--text);text-align:left;cursor:grab;background:0 0;border:1px solid #0000;grid-template-columns:56px 1fr;align-items:center;display:grid}.lib-item:hover{background:var(--surface-2)}.lib-item:active{cursor:grabbing}.lib-item:focus-visible{outline-offset:-2px}.lib-thumb{border-radius:var(--r-sm);background:var(--canvas);border:1px solid var(--line);place-items:center;width:56px;height:40px;display:grid;overflow:hidden}.lib-thumb svg{width:100%;height:100%}.lib-name{font:700 13px/1.25 var(--font-ui);display:block}.lib-meta{align-items:center;gap:6px;margin-top:3px;display:flex}.sup{font:700 11px var(--font-ui);color:var(--muted);white-space:nowrap;align-items:center;gap:5px;display:inline-flex}.sup:before{content:"";border-radius:50%;width:7px;height:7px}.sup-sim:before{background:var(--ok)}.sup-wiring:before{background:var(--warn)}.lib-legend{padding:var(--s2) var(--s4) var(--s3);border-top:1px solid var(--line);font:600 12px/1.5 var(--font-ui);color:var(--muted)}.lib-empty{padding:var(--s4);color:var(--muted);font-weight:600}.lab-stage{background:var(--bg);grid-template-rows:auto minmax(0,1fr) 210px;min-width:0;min-height:0;display:grid}.lab-toolbar{padding:var(--s2) var(--s3);border-bottom:1px solid var(--line);background:var(--surface);align-items:center;gap:6px;min-width:0;display:flex;overflow-x:auto}.lab-toolbar .tool{flex-shrink:0;justify-content:center;width:32px;padding:0}.tb-sep{background:var(--line);flex-shrink:0;width:1px;height:22px;margin:0 6px}.tb-push{flex:1}.wire-colours{flex-shrink:0;gap:4px;display:flex}.wire-swatch{background:var(--c);cursor:pointer;border:1px solid #ffffff2e;border-radius:6px;width:22px;height:22px;padding:0}.wire-swatch[aria-checked=true]{outline:2px solid var(--accent);outline-offset:2px}.bench-wrap{background:var(--canvas);min-height:0;position:relative}#bench{touch-action:none;-webkit-user-select:none;user-select:none;cursor:default;text-rendering:geometricprecision;shape-rendering:geometricprecision;width:100%;height:100%;display:block}#bench:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}#bench text,#schematic text,.lib-item svg text{stroke:none}#bench.wiring{cursor:crosshair}.bench-hint{left:var(--s3);bottom:var(--s3);border:1px solid var(--line);color:var(--text-2);font:600 12px var(--font-ui);pointer-events:none;transition:opacity .3s var(--ease);background:#0e1726db;border-radius:999px;padding:6px 10px;position:absolute}.bench-hint.gone{opacity:0}.grid-dot{fill:#e2e8f033}.bench-bg{cursor:grab}.bb-body{fill:#eef1f5;stroke:#c9d1dc;stroke-width:1px}.bb-gap{fill:#dde2ea}.bb-hole{fill:#4a5568}.bb-label{font:700 5.2px var(--font-mono);fill:#5d6b82;text-anchor:middle}.bb-rail{font-size:7px;font-weight:700}.bb-num{font-size:4.5px}.hole{fill:#0000}.hole.used{fill:#0b13228c}.pcb{stroke:#00000059;stroke-width:.8px}.pcb-green{fill:#1f7a46}.pcb-teal{fill:#00727a}.pcb-black{fill:#1d2229}.pcb-blue{fill:#1f5fae}.pcb-red{fill:#b3262c}.pcb-purple{fill:#6d28d9}.esc-wrap{fill:#2563eb;stroke:#1e3a8a;stroke-width:1px}.bldc-bell{fill:#3f3f46;stroke:#a1a1aa;stroke-width:2px}.bldc-spoke{stroke:#d4d4d8;stroke-width:3px;stroke-linecap:round}.lipo-body{fill:#1f2937;stroke:#facc15;stroke-width:1.4px}.inductor{fill:#27272a;stroke:#a16207;stroke-width:3px}.inductor-sq{fill:#27272a;stroke:#52525b;stroke-width:1px}.mq-body{fill:#9aa3ad;stroke:#5b6470;stroke-width:1px}.mq-mesh{fill:#c9ced6;stroke:#7a828c;stroke-width:.8px;stroke-dasharray:1.2 1.2}.mq-core{fill:#b45309}.rain-track{fill:none;stroke:#e5c07b;stroke-width:1.6px}.probe{fill:#1d2229;stroke:#6b7280;stroke-width:1px}.heart{fill:#fb7185}.heart.on{fill:#ff1744;filter:drop-shadow(0 0 4px #ff1744e6)}.screen-dark{fill:#0b1322;stroke:#3a4250;stroke-width:1px}.cam-lens{fill:#11151b;stroke:#6b7280;stroke-width:1.4px}.cam-glass{fill:#2b3a55}.cam-mount{fill:#1d2229;stroke:#3a4250;stroke-width:1px}.flash-led{fill:#fef3c7;stroke:#a3a3a3;stroke-width:.6px}.rfid-coil{fill:none;stroke:#e5c07b;stroke-width:1.4px}.gps-antenna{fill:#c2a26b;stroke:#8f7a4f;stroke-width:1px}.gps-patch{fill:#d6c08f}.chip{fill:#1a1d22;stroke:#3a3f47;stroke-width:.6px}.metal{fill:#c4cbd4;stroke:#8b949e;stroke-width:.6px}.pad{fill:#d8b24a;stroke:#9c7a22;stroke-width:.5px}.terminal{fill:#2f74d0;stroke:#1b4d91;stroke-width:.6px}.header{fill:#1d2229}.silk{font:800 5px var(--font-ui);fill:#fff}.val-tag{font:700 5.4px var(--font-mono);fill:#e2e8f0;text-anchor:middle;pointer-events:none;paint-order:stroke;stroke-width:1.6px;stroke-linejoin:round;stroke:#0b1322d9!important}.thumb .val-tag{display:none}.silk-small{fill:#ffffffb3;font-size:4px}.silk-tiny{fill:#c3cee0;font-size:4px}.silk-pin{font:600 3.6px var(--font-mono);fill:#ffffffd1;dominant-baseline:middle}.silk-chip{fill:#9aa3ad;text-anchor:middle;font-size:4px}.btn-boot{fill:#f2f2f2;stroke:#9aa3ad;stroke-width:.5px}.onboard-led{fill:#2b3a2f}.onboard-led.on{fill:#6dff8f;filter:drop-shadow(0 0 3px #6dff8f)}.res-body{fill:#d9c49b;stroke:#a8925f;stroke-width:.5px}.led-body{opacity:.55;stroke:#0000004d;stroke-width:.5px}.led-body.on{opacity:calc(.55 + var(--b,0) * .45)}.led-glow{filter:blur(4px);pointer-events:none}.led-rim{opacity:.7}.btn-housing{fill:#2a2f36;stroke:#14171b;stroke-width:.6px}.btn-cap{fill:#4b5563;stroke:#1f2937;stroke-width:.8px;cursor:pointer;transition:fill 80ms}.btn-cap:hover{fill:#5b6574}.btn-cap.down{fill:#22d3ee}.switch-knob{fill:#e6edf7;cursor:pointer}.pot-body{fill:#2563eb;stroke:#1e3a8a;stroke-width:.6px}.pot-knob{fill:#e5e7eb;stroke:#9ca3af;stroke-width:.6px}.pot-mark{stroke:#1f2937;stroke-width:1.6px;stroke-linecap:round}.ldr-body{fill:#f4e6c3;stroke:#b49b5d;stroke-width:.6px}.ldr-track{fill:none;stroke:#b4462a;stroke-width:.9px}.to92{fill:#1d2229}.us-mesh{fill:#3b4352;stroke:#7d8592;stroke-width:.4px;stroke-dasharray:.8 .8}.echo-led{fill:#3a2626}.echo-led.on{fill:#ff5a3c}.pir-dome{fill:#f3f4f6;stroke:#c7cdd6;stroke-width:.6px;cursor:pointer}.pir-dome.on{fill:#fff7d6;stroke:#ffc93c}.buzzer-body{fill:#1d2229;stroke:#3a3f47;stroke-width:.6px}.buzzer-hole{fill:#0b0d10}.sound-waves{fill:none;stroke:var(--accent);stroke-width:1.2px;stroke-linecap:round}.seg-body{fill:#22252b}.seg{fill:#3a2020}.seg.on{fill:#ff4a3a;filter:drop-shadow(0 0 2px #ff4a3a)}.oled-glass{fill:#05070b;stroke:#2f3540;stroke-width:.6px}.servo-body{fill:#2c64c7;stroke:#183f86;stroke-width:.6px}.servo-tab{fill:#3470d6}.servo-hub{fill:#f2f2f2;stroke:#b9bec6;stroke-width:.6px}.servo-horn{fill:#f8f8f8;stroke:#b9bec6;stroke-width:.6px}.servo-wire{fill:none;stroke-width:2.2px;stroke-linecap:round}.w-brown{stroke:#7a4a1e}.w-red{stroke:#d92d2d}.w-orange{stroke:#f08a24}.w-black{stroke:#111}.w-yellow{stroke:#eab308}.motor-end{fill:#9aa3ad}.motor-shaft{fill:#e6e9ee}.battery-box{fill:#22252b;stroke:#0e1013;stroke-width:.6px}.aa{fill:#3a3f47;stroke:#555c66;stroke-width:.4px}.pin{fill:#0000;stroke:#0000;stroke-width:1.2px;cursor:crosshair}.part:not(.part-breadboard) .pin{fill:#d8b24a00}.pin:hover,.hole:hover{stroke:var(--accent);fill:#22d3ee40}#bench.wiring .pin{stroke:#22d3ee59}.net-hl{fill:none;stroke:var(--accent);stroke-width:1.4px;pointer-events:none}.part-hit{fill:#0000}.part:not(.part-breadboard){cursor:move}.part.selected>.part-hit{stroke:var(--accent);stroke-width:1.2px;stroke-dasharray:3 2;fill:#22d3ee0d}.wire-line{fill:none;stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round}.wire-shadow{fill:none;stroke:#00000059;stroke-width:3.6px;stroke-linecap:round;stroke-linejoin:round;transform:translate(.6px,.8px)}.wire-hit{fill:none;stroke:#0000;stroke-width:8px;cursor:pointer}.wire-end{stroke:#0006;stroke-width:.6px}.wire.selected .wire-line{stroke-width:3px;filter:drop-shadow(0 0 2px #22d3eee6)}.wire-bend{fill:#fff;stroke:var(--accent);stroke-width:1.4px;cursor:move}.wire-bend:hover{fill:var(--accent)}.wire-add{fill:var(--accent);stroke:#0b1322;stroke-width:.8px;opacity:.75;cursor:copy}.wire-add:hover{opacity:1}.wire.selected .wire-hit{cursor:copy}.wire-line.draft{stroke-dasharray:4 3;opacity:.9;pointer-events:none}.pin-tip{z-index:60;max-width:300px;padding:var(--s2) var(--s3);border-radius:var(--r);border:1px solid var(--line-strong);background:var(--surface-2);box-shadow:var(--shadow);pointer-events:none;position:fixed}.pin-tip strong{font:800 13px var(--font-ui);display:block}.pin-tip .note{font:600 12px/1.4 var(--font-ui);color:var(--text-2);margin-top:2px;display:block}.pin-tip .links{font:600 12px/1.4 var(--font-ui);color:var(--muted);margin-top:4px;display:block}.pin-tip .v{font:600 12px var(--font-mono);color:var(--accent);margin-top:4px;display:block}.lab-dock{border-top:1px solid var(--line);background:var(--surface);grid-template-rows:auto minmax(0,1fr);min-height:0;display:grid}.dock-tabs{padding:4px var(--s2);border-bottom:1px solid var(--line);align-items:center;gap:2px;display:flex}.dock-tab,.side-tab{height:30px;padding:0 var(--s3);border-radius:var(--r-sm);color:var(--muted);font:700 12px var(--font-ui);cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;display:inline-flex}.dock-tab:hover,.side-tab:hover{color:var(--text);background:var(--surface-2)}.dock-tab.active,.side-tab.active{color:var(--accent);background:var(--accent-soft)}.count{min-width:18px;height:18px;color:var(--warn);font:700 11px var(--font-mono);background:#fbbf242e;border-radius:999px;place-items:center;padding:0 5px;display:inline-grid}.count.err{background:var(--stop-soft);color:var(--stop)}.sim-clock{color:var(--muted);padding:0 var(--s2);font-size:12px}.tool-sm{height:28px;width:28px!important}.dock-panel{flex-direction:column;min-height:0;display:flex}.serial{min-height:0;padding:var(--s2) var(--s3);background:var(--canvas);font:400 12.5px/1.55 var(--font-mono);color:var(--text-2);white-space:pre-wrap;word-break:break-word;flex:1;margin:0;overflow-y:auto}.serial .err{color:#fca5a5}.serial .sys{color:var(--muted);font-style:italic}.serial .err a{color:#fecaca;cursor:pointer;text-decoration:underline}.serial:empty:before{content:"Output from print() appears here when you run the program.";color:#7d8ca8;font-family:var(--font-ui);font-size:13px;font-weight:600}.serial-input{border-top:1px solid var(--line)}.serial-input input{width:100%;height:32px;background:var(--canvas)!important;font-family:var(--font-mono)!important;border:0!important;border-radius:0!important}.problems{padding:var(--s2);align-content:start;gap:4px;list-style:none;display:grid;overflow-y:auto}.problem{gap:var(--s2);padding:var(--s2) var(--s3);border-radius:var(--r);cursor:pointer;grid-template-columns:18px 1fr;display:grid}.problem:hover{background:var(--surface-2)}.problem svg{width:16px;height:16px;margin-top:2px}.problem[data-level=error] svg{color:var(--stop)}.problem[data-level=warn] svg{color:var(--warn)}.problem[data-level=info] svg{color:var(--muted)}.problem p{font:600 13px/1.4 var(--font-ui)}.problem .fix{font:600 12px/1.45 var(--font-ui);color:var(--muted);margin-top:2px}.problems-empty{padding:var(--s3);color:var(--muted);align-items:center;gap:var(--s2);font-weight:600;display:flex}.problems-empty svg{width:16px;height:16px;color:var(--ok)}.pins-view{padding:var(--s2) var(--s3);overflow:auto}.pins-table{border-collapse:collapse;width:100%;font:600 12px var(--font-ui)}.pins-table th{text-align:left;color:var(--muted);padding:4px var(--s2);border-bottom:1px solid var(--line);background:var(--surface);font-weight:700;position:sticky;top:0}.pins-table td{padding:3px var(--s2);border-bottom:1px solid #2a3a5c80}.pins-table .mono{font-size:12px}.lvl{background:var(--canvas);border:1px solid var(--line);vertical-align:middle;border-radius:3px;width:26px;height:10px;display:inline-block;position:relative;overflow:hidden}.lvl>i{background:var(--accent);position:absolute;inset:0 auto 0 0}.pins-empty{color:var(--muted);padding:var(--s2);font-weight:600}.help-table td{font-size:12.5px}.help-table .muted{color:var(--muted)}.help-list{color:var(--text-2);gap:8px;padding-left:18px;font-size:13px;line-height:1.5;display:grid}.help-list code,.dlg-body code{font:500 12px var(--font-mono);color:var(--text)}.lab-dialog{width:min(820px,100vw - 32px)}.conn-view{padding:var(--s2) var(--s3) var(--s3);overflow:auto}.conn-cols{gap:var(--s4);grid-template-columns:minmax(180px,240px) 1fr;display:grid}.conn-cols h3{font:800 13px var(--font-ui);color:var(--text-2);align-items:center;gap:6px;margin:4px 0 6px;display:flex}.count-plain{font:600 11px var(--font-mono);color:var(--muted)}.bom{gap:2px;list-style:none;display:grid}.bom li{justify-content:space-between;align-items:center;gap:6px;display:flex}.bom button{color:var(--text);font:600 12.5px var(--font-ui);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:4px;padding:3px 4px}.bom button:hover{background:var(--surface-2);color:var(--accent)}.conn-table td{vertical-align:top;font-size:12px;line-height:1.5}.conn-table .join{color:var(--muted)}.net-tag{font:600 11px var(--font-mono);white-space:nowrap;border:1px solid;border-radius:999px;padding:1px 8px;display:inline-block}.net-tag.t-pwr{color:#fca5a5;background:#e5484d1f;border-color:#e5484d}.net-tag.t-gnd{color:#c3cee0;background:#9aa9c21a;border-color:#6b7a96}.net-tag.t-dig{color:var(--accent);background:var(--accent-soft);border-color:#22d3ee99}.net-tag.t-ana{color:#d8b4fe;background:#a855f71f;border-color:#a855f7}.net-tag.t-net{color:var(--text-2);border-color:var(--line-strong)}.conn-loose{margin-top:var(--s2);color:var(--muted);font:600 12px var(--font-ui)}.ex-filter{top:calc(-1 * var(--s4));z-index:1;margin:0 0 var(--s3);padding:var(--s2) 0;background:var(--surface);display:block;position:sticky}.ex-filter svg{width:16px;height:16px;color:var(--muted);pointer-events:none;position:absolute;top:50%;left:10px;translate:0 -50%}.ex-filter input{width:100%;height:36px;padding-left:34px}.ex-board{border:1px solid var(--line-strong);color:var(--text-2);font:700 11px var(--font-ui);border-radius:999px;margin:0 0 0 6px;padding:1px 8px;display:inline-block}.ex-sec[hidden],.ex-list li[hidden]{display:none}.ex-group{font:800 14px var(--font-ui);margin-top:var(--s2);align-items:baseline;gap:8px;display:flex}.ex-group span{font:600 11px var(--font-mono);color:var(--muted)}.lab-side{background:var(--surface);border-left:1px solid var(--line);flex-direction:column;min-width:0;min-height:0;display:flex}.side-tabs{padding:4px var(--s2);border-bottom:1px solid var(--line);gap:2px;display:flex}.side-panel{flex-direction:column;flex:1;min-height:0;display:flex}.file-tabs{padding:4px var(--s2);border-bottom:1px solid var(--line);align-items:center;gap:2px;display:flex;overflow-x:auto}.file-tab{border-radius:var(--r-sm);height:28px;color:var(--text-2);font:500 12px var(--font-mono);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;align-items:center;gap:4px;padding:0 6px 0 10px;display:inline-flex}.file-tab.active{background:var(--canvas);border-color:var(--line);color:var(--text)}.file-tab .x{width:18px;height:18px;color:var(--muted);border-radius:4px;place-items:center;display:grid}.file-tab .x:hover{background:var(--surface-3);color:var(--text)}.file-tab .x svg{width:12px;height:12px}.file-add{justify-content:center;width:28px;height:28px;padding:0}.code-host{background:var(--canvas);flex:1;min-height:0}.code-host .cm-editor{height:100%}.code-note{padding:var(--s2) var(--s3);border-top:1px solid var(--line);color:var(--muted);font:600 12px/1.45 var(--font-ui)}.code-note code{font:500 12px var(--font-mono);color:var(--text-2)}.cm-line.err-line{background:#f8717124}.inspector{padding:var(--s4);gap:var(--s4);align-content:start;display:grid;overflow-y:auto}.insp-empty{color:var(--muted);font-weight:600;line-height:1.5}.insp-empty strong{color:var(--text);font:800 15px var(--font-ui);margin-bottom:var(--s1);display:block}.insp-head h2{font:800 16px/1.25 var(--font-ui)}.insp-head .sup{margin-top:4px}.insp-desc{color:var(--text-2);max-width:60ch;font-size:13px;line-height:1.5}.insp-section{gap:var(--s2);padding-top:var(--s3);border-top:1px solid var(--line);display:grid}.insp-section h3{font:800 13px var(--font-ui);color:var(--text-2)}.insp-row{gap:6px;display:grid}.insp-row label{font:700 12px var(--font-ui);color:var(--text-2);justify-content:space-between;display:flex}.insp-row label .mono{color:var(--accent);font-weight:600}.insp-row input[type=range]{width:100%;accent-color:var(--accent)}.insp-row select,.insp-row input[type=text]{width:100%}.insp-toggle{align-items:center;gap:var(--s2);font:700 13px var(--font-ui);cursor:pointer;display:flex}.insp-toggle input{accent-color:var(--accent);width:16px;height:16px}.specs{gap:4px var(--s3);grid-template-columns:auto 1fr;font-size:12.5px;display:grid}.specs dt{color:var(--muted);font-weight:700}.specs dd{color:var(--text-2);font-weight:600}.pin-list{gap:2px;display:grid}.pin-row{gap:var(--s2);border-bottom:1px solid #2a3a5c80;grid-template-columns:minmax(70px,auto) 1fr auto;align-items:baseline;padding:4px 0;font-size:12.5px;display:grid}.pin-row .pl{font:600 12px var(--font-mono);color:var(--text)}.pin-row .to{color:var(--muted);overflow-wrap:anywhere;min-width:0;font-weight:600}.pin-row .pv{font:600 12px var(--font-mono);color:var(--accent);white-space:nowrap}.kind-dot{vertical-align:1px;border-radius:50%;width:7px;height:7px;margin-right:6px;display:inline-block}.k-power{background:#e5484d}.k-gnd{background:#9aa9c2}.k-gpio{background:var(--accent)}.k-analog{background:#a855f7}.k-signal{background:#f59e0b}.k-passive{background:#6b7a96}.wire-swatches{flex-wrap:wrap;gap:6px;display:flex}.lab-dialog{border:1px solid var(--line-strong);border-radius:var(--r-lg);background:var(--surface);width:min(680px,100vw - 32px);max-height:min(80vh,760px);color:var(--text);box-shadow:var(--shadow);margin:auto;padding:0}.lab-dialog::backdrop{background:#0509129e}.dlg-head{align-items:center;gap:var(--s3);padding:var(--s4) var(--s5);border-bottom:1px solid var(--line);display:flex}.dlg-head h2{font:800 18px var(--font-ui)}.dlg-head .tool{justify-content:center;width:32px;margin-left:auto;padding:0}.dlg-body{padding:var(--s4) var(--s5) var(--s5);gap:var(--s3);max-height:calc(min(80vh,760px) - 70px);display:grid;overflow-y:auto}.dlg-note{color:var(--muted);font-size:13px;font-weight:600;line-height:1.5}.ex-list,.proj-list{gap:6px;list-style:none;display:grid}.ex-item,.proj-item{gap:var(--s1) var(--s3);padding:var(--s3);border:1px solid var(--line);border-radius:var(--r);color:var(--text);text-align:left;cursor:pointer;background:0 0;grid-template-columns:1fr auto;align-items:center;width:100%;display:grid}.ex-item:hover,.proj-item:hover{background:var(--surface-2);border-color:var(--line-strong)}.ex-item strong,.proj-item strong{font:800 14px var(--font-ui)}.ex-item p{color:var(--text-2);grid-column:1/-1;font-size:13px;line-height:1.45}.ex-level{font:700 11px var(--font-ui);color:var(--muted)}.proj-item{cursor:default}.proj-item .meta{font:600 12px var(--font-ui);color:var(--muted);grid-column:1}.proj-actions{grid-area:1/2/span 2;gap:4px;display:flex}.proj-actions .tool{justify-content:center;width:32px;padding:0}.dlg-actions{gap:var(--s2);flex-wrap:wrap;display:flex}.panel-toggle{position:relative}.panel-toggle[aria-pressed=true]{color:var(--accent);background:var(--accent-soft)}.panel-toggle .dot{background:var(--accent);border-radius:50%;width:7px;height:7px;position:absolute;top:5px;right:5px}.side-tabs{align-items:center}body.dock-hidden .lab-stage{grid-template-rows:auto minmax(0,1fr)}body.dock-hidden .lab-dock{display:none}body.side-hidden .lab-grid{--side-w:0px}body.side-hidden .lab-side{display:none}body.lib-hidden .lab-grid{--lib-w:0px}body.lib-hidden .lab-lib{display:none}.view-seg .tool{width:auto!important;padding:0 10px!important}.view-seg .tool[aria-pressed=true]{background:var(--surface-3);color:var(--text)}#schematic{background:var(--canvas);width:100%;height:100%;display:block;position:absolute;inset:0}#schematic[hidden]{display:none}.sy{fill:none;stroke:#c3cee0;stroke-width:1.6px;stroke-linejoin:round;stroke-linecap:round}.sy-thin{stroke-width:1.1px}.sy-box{fill:var(--surface)}.sy-dot{fill:#c3cee0}.sy-val{font:600 11px var(--font-mono);fill:var(--text-2);text-anchor:middle}.sy-big{font:800 16px var(--font-ui);fill:var(--text-2);text-anchor:middle}.sy-name{font:700 12px var(--font-ui);fill:var(--text);text-anchor:middle}.sy-pin{font:500 10px var(--font-mono);fill:var(--muted)}.sy-nc{stroke:var(--stop);stroke-width:1.4px}.sy-gnd{fill:none;stroke:#9aa9c2;stroke-width:1.6px;stroke-linecap:round}.sy-tag rect{stroke-width:1px}.sy-wire{fill:none;stroke-width:1.4px;stroke-linejoin:round;stroke-linecap:round}.sy-junction{stroke:none}.sy-tag-sm text{font-size:9px}.sy-wire.w-pwr{stroke:#e5484d}.sy-junction.w-pwr{fill:#e5484d}.sy-wire.w-dig{stroke:#22d3ee}.sy-junction.w-dig{fill:#22d3ee}.sy-wire.w-ana{stroke:#a855f7}.sy-junction.w-ana{fill:#a855f7}.sy-wire.w-pwm{stroke:#f97316}.sy-junction.w-pwm{fill:#f97316}.sy-wire.w-net{stroke:#9aa9c2}.sy-junction.w-net{fill:#9aa9c2}.sy-tag text{font:600 10.5px var(--font-mono);text-anchor:middle}.t-pwr rect{fill:#e5484d29;stroke:#e5484d}.t-pwr text{fill:#fca5a5}.t-dig rect{fill:var(--accent-soft);stroke:#22d3eeb3}.t-dig text{fill:var(--accent)}.t-ana rect{fill:#a855f729;stroke:#a855f7}.t-ana text{fill:#d8b4fe}.t-pwm rect{fill:#f9731629;stroke:#f97316}.t-pwm text{fill:#fdba74}.t-net rect{fill:var(--surface-2);stroke:var(--line-strong)}.t-net text{fill:var(--text-2)}.sy-part{cursor:pointer}.sy-part.selected .sy{stroke:var(--accent)}.lab-readonly .lib-item{cursor:default;opacity:.55}.lab-readonly .lib-item:hover{background:0 0}@media (width<=1180px){.lab-grid{--lib-w:220px;--side-w:min(400px, 38%)}body.side-hidden .lab-grid{--side-w:0px}body.lib-hidden .lab-grid{--lib-w:0px}.lab-actions .btn-quiet span{display:none}.lab-actions .btn-quiet{width:36px;padding:0}.title-input{width:18ch}}@media (width<=900px){.lab-grid{display:block;overflow-y:auto}.lab-lib{display:none}.lab-stage{grid-template-rows:auto 46vh 240px}.lab-side{border-left:0;border-top:1px solid var(--line);height:60vh}.lab-title{flex:1}.lab-title h1,.save-state{display:none}.title-input{width:100%}#topbar{gap:var(--s2);padding:0 var(--s3)}.lab-actions{flex-shrink:0;gap:4px;margin-left:0}.lab-actions .btn-quiet span,.lab-actions .chip span{display:none}.lab-actions .btn-quiet{width:36px;padding:0}.lab-actions .chip{justify-content:center;width:36px;padding:0}.lab-banner{padding:var(--s2) var(--s3);font-size:13px}.wire-colours,.tb-sep,#tool-rotate,#tool-dup,#tool-del,#tool-undo,#tool-redo,.bench-hint{display:none}}@media (prefers-reduced-motion:reduce){.bench-hint,.btn-cap{transition:none}}.board{stroke:#00000073;stroke-width:1px}.board-teal{fill:#1d5fa8}.board-blue{fill:#1f5fae}.board-black{fill:#1c2026}.board-black-2{fill:#24292f}.board-green{fill:#1d7a43}.mount{fill:#c9a227}.mount-hole{fill:#0b1322}.metal-dark{fill:#59616b}.usb-tongue{fill:#2b3038}.jack{fill:#16181c;stroke:#000;stroke-width:.6px}.jack-hole{fill:#050506}.tact{fill:#d9dde2;stroke:#8f979f;stroke-width:.5px}.btn-cap-red{fill:#c62828}.btn-cap-dark{fill:#2a2f36}.smd-led{fill:#3b3f45}.smd-led.led-amber.on{fill:#ffb020;filter:drop-shadow(0 0 3px #ffb020)}.smd-led.led-green.on{fill:#4ade80;filter:drop-shadow(0 0 2px #4ade80)}.ic{fill:#17191d;stroke:#353a42;stroke-width:.6px}.ic-notch{fill:#2a2e35}.ic-leg{fill:#b9c0c8}.ic-dot{fill:#3a3f47}.chip-text{font:600 4.6px var(--font-mono);fill:#a7b0ba;letter-spacing:.02em}.chip-text-lg{fill:#3b4048;font-size:6.5px}.hdr{fill:#15171b;shape-rendering:crispedges}.hdr-hole{fill:#000;stroke:#3a3f47;stroke-width:.5px;shape-rendering:crispedges}.pin-gold{fill:#d8b24a;stroke:#8f6f1c;stroke-width:.4px}.pad-round{fill:#d8b24a;stroke:#8f6f1c;stroke-width:.5px}.pad-hole{fill:#0b0d10}.bsilk{font:800 6.2px var(--font-ui);fill:#fff;dominant-baseline:middle;text-rendering:geometricprecision;letter-spacing:.01em}.bsilk-end{text-anchor:end}.bsilk-mid{text-anchor:middle;letter-spacing:.06em;font-size:7px}.bsilk-sm{font-size:4.8px}.brand-silk{font:900 24px var(--font-ui);fill:#fff;text-anchor:middle;letter-spacing:.04em}.brand-silk-sm{font-size:13px}.shield{fill:#c9ced6;stroke:#8a929c;stroke-width:.8px}.antenna{fill:none;stroke:#d8b24a;stroke-width:1.6px;stroke-linejoin:round}.thumb .silk-pin,.thumb .bsilk,.thumb .bb-label,.thumb .chip-text,.thumb .silk{display:none}.rgb-body{fill:#e9eef6;opacity:.7;stroke:#0000004d;stroke-width:.5px;transition:fill 50ms}.rgb-body.on{opacity:.96}.rgb-rim{fill:#d7dde6}.cap-ceramic{fill:#e8b33a;stroke:#a87a14;stroke-width:.6px}.cap-text{fill:#5b3d00}.cap-body{fill:#1f4aa8;stroke:#12306f;stroke-width:.6px}.cap-stripe{fill:#c7d2e8}.diode-body{fill:#1b1d21}.diode-band{fill:#d1d5db}.terminal-block{fill:#1e6fd9;stroke:#0f4596;stroke-width:.6px}.screw{fill:#c4cbd4;stroke:#6b7280;stroke-width:.5px}.relay-cube{fill:#1d4ed8;stroke:#1e3a8a;stroke-width:.8px}.relay-arm{stroke:#e6edf7;stroke-width:2px;stroke-linecap:round}.mini-led{fill:#3a3030}.mini-led.on{fill:#4ade80;filter:drop-shadow(0 0 2px #4ade80)}.mini-led.on-red{fill:#ef4444;filter:drop-shadow(0 0 2px #ef4444)}.mini-led.blink{animation:1.2s step-end infinite lab-blink}@keyframes lab-blink{50%{opacity:.25}}.ir-emitter{fill:#e5ecf5;stroke:#94a3b8;stroke-width:.6px}.ir-receiver{fill:#111827;stroke:#374151;stroke-width:.6px}.trimpot{fill:#2563eb;stroke:#1e3a8a;stroke-width:.5px}.trimpot-screw{fill:#f8fafc;stroke:#94a3b8;stroke-width:.5px}.tcrt{fill:#111318}.dht-white{fill:#f3f5f8;stroke:#c3cad4;stroke-width:.6px}.dht-blue{fill:#2f7de1;stroke:#1d4f99;stroke-width:.6px}.dht-slot{fill:#0b13228c}.soil-probe{fill:#1f6f3d;stroke:#10411f;stroke-width:.6px}.soil-trace{stroke:#d8b24a;stroke-width:1.4px;stroke-linecap:round}.mic{fill:#c9ced6;stroke:#6b7280;stroke-width:.6px}.mic-mesh{fill:#1f2328}.joy-base{fill:#2c3138;stroke:#111;stroke-width:.6px}.joy-ring{fill:#1a1d22}.joy-cap{fill:#3a3f47;stroke:#0b0d10;stroke-width:.8px}.joy-cap-top{fill:#4b5563}.lcd-bezel{fill:#15181d}.lcd-glass{fill:#1a3570}.pcf-board{fill:#111318}.stepper-can{fill:#c4cbd4;stroke:#7b848e;stroke-width:1px}.stepper-face{fill:#aeb6c0}.stepper-shaft{fill:#e5e8ec;stroke:#8a929c;stroke-width:.5px}.jst{fill:#f3f4f6;stroke:#9ca3af;stroke-width:.5px}.heatsink{fill:#16181c}.heatsink-fin{fill:#2f343b}.bt-module{fill:#2b5fb8;stroke:#1b3d7a;stroke-width:.6px}.bat9-body{fill:#1b1d21;stroke:#000;stroke-width:.6px}.bat9-top{fill:#c9a227}.bat9-text{font:900 16px var(--font-ui);fill:#f4c430}.mono-live{font-family:var(--font-mono);fill:var(--accent);font-size:6px}.lang-chip{border:1px solid var(--line);height:22px;color:var(--muted);font:700 11px var(--font-ui);white-space:nowrap;border-radius:999px;align-items:center;margin-left:auto;padding:0 8px;display:inline-flex}.part.hot .part-art{filter:drop-shadow(0 0 calc(2px + var(--heat,.3) * 9px) rgba(255, 90, 30, calc(.4 + var(--heat,.3) * .6)));animation:.6s ease-in-out infinite alternate lab-hot}@keyframes lab-hot{to{filter:drop-shadow(0 0 calc(4px + var(--heat,.3) * 12px) #ff3c14f2)}}.part.burnt .part-art{filter:grayscale(.7)brightness(.55)sepia(.5)}.scorch{fill:#0a0604bf;filter:blur(2px)}.smoke circle{fill:#c8cdd48c;transform-box:fill-box;transform-origin:50%;animation:2.6s ease-out forwards lab-smoke}@keyframes lab-smoke{0%{opacity:.9;transform:translateY(0)scale(.6)}to{opacity:0;transform:translateY(-60px)scale(2.4)}}.burnt-note{padding:var(--s3);border-radius:var(--r);background:var(--stop-soft);color:#fecaca;border:1px solid #f8717173;gap:8px;font-size:13px;font-weight:600;line-height:1.45;display:grid}.burnt-note strong{color:var(--stop);font:800 14px var(--font-ui)}.burnt-note .btn{justify-self:start}.piezo-brass{fill:#c9a227;stroke:#8f6f1c;stroke-width:.8px}.piezo-ceramic{fill:#f1f3f6;stroke:#c7cdd6;stroke-width:.6px}.piezo-solder{fill:#9aa3ad}@media (prefers-reduced-motion:reduce){.part.hot .part-art,.smoke circle{animation:none}}.board-r4{fill:#0b8f9a}.challenge-bar{gap:var(--s4);padding:var(--s3) var(--s5);background:var(--surface);border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) auto;align-items:start;display:grid}.challenge-bar[hidden]{display:none}.cb-tag{font:700 11px var(--font-ui);color:var(--accent);background:var(--accent-soft);border-radius:999px;margin-right:6px;padding:2px 8px;display:inline-block}.cb-main strong{font:800 15px var(--font-ui)}.cb-main p{color:var(--text-2);max-width:70ch;margin-top:4px;font-size:13px;line-height:1.45}.cb-hints{color:var(--muted);margin-top:4px;font-size:12.5px}.cb-hints summary{cursor:pointer;color:var(--text-2);font-weight:700}.cb-hints ul{gap:2px;margin-top:4px;padding-left:18px;display:grid}.cb-results{font:600 12.5px/1.4 var(--font-ui);gap:3px;list-style:none;display:grid}.cb-results li{padding-left:20px;position:relative}.cb-results li.ok{color:var(--ok)}.cb-results li.no{color:#fca5a5}.cb-results li.ok:before{content:"";border-bottom:2px solid;border-left:2px solid;width:9px;height:5px;position:absolute;top:4px;left:3px;transform:rotate(-45deg)}.cb-results li.no:before{content:"×";font-size:15px;position:absolute;top:-2px;left:3px}.cb-results li.cb-wait{color:var(--muted)}.cb-results li.cb-win{color:var(--ok);padding-left:0;font-weight:800}.cb-actions{gap:var(--s2);display:flex}@media (width<=900px){.challenge-bar{padding:var(--s3);grid-template-columns:1fr}}#sch-mode[hidden]{display:none}.sy-lane-name{font:600 9px var(--font-mono);fill:#9aa9c2}.sy-lane-name.l-pwr{fill:#fca5a5}.sy-lane-name.l-dig{fill:var(--accent)}.sy-lane-name.l-ana{fill:#d8b4fe}.sy-lane-name.l-pwm{fill:#fdba74}
