:root{--bg-0:#101218;--bg-1:#161922;--bg-2:#1d212c;--bg-3:#252a38;--line:#323846;--text:#d7dce8;--muted:#8b93a7;--accent:#e2b15c;--accent-2:#5ce1e6;--danger:#e36b6b;--part-stroke:#c9d0e0;--part-fill:#2a3142;--part-fill-active:#3a3340;--part-plunger:#6d778c;--part-shine:#ffffff2e;--sans:"Segoe UI", system-ui, sans-serif;--mono:ui-monospace, "Cascadia Mono", Consolas, monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font:13px/1.4 var(--sans);color:var(--text);background:var(--bg-0)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}html:has(.app){overflow:hidden}body:has(.app){overflow:hidden}#root:has(.app){overflow:hidden}button,input,select{font:inherit;color:inherit}button{background:var(--bg-3);border:1px solid var(--line);cursor:pointer;border-radius:6px;padding:6px 10px}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.4;cursor:default}button.primary{color:var(--accent);background:#3a3224;border-color:#6f5a32}button.danger{color:var(--danger)}button.ghost{background:0 0}.app{grid-template-rows:auto 1fr;height:100%;display:grid;overflow:hidden}.toolbar{border-bottom:1px solid var(--line);background:var(--bg-1);flex-wrap:wrap;flex-shrink:0;justify-content:space-between;align-items:center;gap:18px;padding:8px 12px;display:flex}.toolbar-left{flex-wrap:wrap;align-items:center;gap:18px;min-width:0;display:flex}.toolbar-right{flex-shrink:0;align-items:center;gap:8px;margin-left:auto;display:flex}.osb-dialog{background:var(--bg-1);border:1px solid var(--line);width:min(440px,94vw);max-height:90vh;color:var(--text);border-radius:10px;padding:16px 18px 14px;overflow:auto}.gallery-dialog{width:min(720px,96vw)}.osb-dialog header h2{margin:0 0 4px;font-size:18px}.osb-dialog header p{color:var(--muted);margin:0 0 12px;font-size:12px}.osb-dialog-actions{justify-content:flex-end;gap:8px;margin-top:12px;display:flex}.order-receipt-dialog{width:min(480px,94vw)}.order-receipt-facts{gap:10px;margin:0;display:grid}.order-receipt-facts>div{grid-template-columns:7.5rem 1fr;align-items:baseline;gap:8px;display:grid}.order-receipt-facts dt{color:var(--muted);margin:0;font-size:12px}.order-receipt-facts dd{word-break:break-word;margin:0;font-size:13px}.order-receipt-facts a{color:var(--accent,#2563eb)}button.linkish{appearance:none;color:var(--accent,#2563eb);font:inherit;font-size:inherit;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.turnstile-slot{min-height:65px;margin:10px 0}.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin:0 0 14px;display:grid}.gallery-grid figure{background:var(--bg-0);border:1px solid var(--line);border-radius:6px;margin:0;overflow:hidden}.gallery-grid img{aspect-ratio:1;object-fit:cover;width:100%;display:block}.gallery-grid figcaption{color:var(--muted);padding:6px 8px;font-size:11px}.brand{align-items:center;gap:10px;min-width:180px;display:flex}.brand .mark{background:linear-gradient(135deg, var(--accent), #9a6b24);border-radius:3px;width:14px;height:14px;box-shadow:0 0 0 3px #3a3224}.brand strong{letter-spacing:.02em;font-size:14px;display:block}.brand em{color:var(--muted);font-size:11px;font-style:normal;display:block}.tool-group{flex-wrap:wrap;align-items:center;gap:8px;display:flex}button.export-launch{letter-spacing:.04em;border-color:var(--accent);color:var(--accent);background:#5a4520;padding:10px 18px;font-size:15px;font-weight:700;box-shadow:0 0 0 1px #6f5a32}button.export-launch:hover:not(:disabled){background:#6d5426}.toggle{color:var(--muted);-webkit-user-select:none;user-select:none;align-items:center;gap:6px;display:inline-flex}.toggle.block{margin-top:8px;display:flex}.workspace{grid-template-columns:340px minmax(0,1fr) 320px;min-height:0;display:grid;overflow:hidden}.library,.inspector{background:var(--bg-1);border-right:1px solid var(--line);flex-direction:column;min-height:0;padding:0;display:flex;overflow:hidden}.library .plate-setup{flex:none;padding:12px}.library-scroll{flex:1;min-height:0;padding:12px;overflow:auto}.library-save{border-top:1px solid var(--line);background:var(--bg-1);flex:none;padding:12px}.admin-entry{color:var(--muted);flex:none;padding:0 12px 12px;font-size:11px;text-decoration:none;display:block}.admin-entry:hover{color:var(--accent-2)}.inspector{border-right:none;border-left:1px solid var(--line);flex-direction:column;padding:0;display:flex;overflow:hidden}.inspector-scroll{flex:1;min-height:0;padding:12px;overflow:auto}.inspector-export{border-top:1px solid var(--line);background:var(--bg-1);flex:none;padding:12px}.inspector-export .export-launch{width:100%}.pane-head{margin-bottom:10px}.pane-head h2,.pane-head h3,.export h3,.bom-group h4{text-transform:uppercase;letter-spacing:.08em;color:var(--accent);margin:0 0 2px;font-size:12px}.hint{color:var(--muted);margin:0;font-size:12px}.hint.warn{color:var(--danger);border:1px solid color-mix(in srgb, var(--danger) 35%, transparent);background:color-mix(in srgb, var(--danger) 8%, transparent);border-radius:6px;padding:8px 10px}.source-admin .source-vendor{margin-bottom:4px;font-weight:600}.overlap-warn{color:var(--danger);margin-top:8px}.export-error{color:var(--danger);background:#2a1818;border:1px solid #7a3030;border-radius:6px;margin:0 0 10px;padding:8px 10px;font-size:12px}.export-error strong{margin-bottom:4px;display:block}.export-error ul{margin:0;padding-left:16px}.export-error li+li{margin-top:4px}.search{background:var(--bg-0);border:1px solid var(--line);border-radius:6px;width:100%;margin-bottom:8px;padding:7px 9px}.chips{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.chip{padding:4px 8px;font-size:11px}.chip.active{border-color:var(--accent);color:var(--accent);background:#3a3224}.part-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.part-card{border:1px solid var(--line);background:var(--bg-2);cursor:grab;border-radius:8px;grid-template-columns:64px minmax(0,1fr);align-items:center;gap:10px;padding:8px;display:grid}.part-card:hover{border-color:var(--accent)}.part-card-hidden{background:#241f16;border-style:dashed;border-color:#6a5a38}.part-card-hidden:hover{border-color:#b89345}.part-hidden-tag{letter-spacing:.04em;text-transform:uppercase;color:#c4a35a;margin-top:2px;font-size:10px;display:inline-block}.layout-card{cursor:default;grid-template-columns:1fr;align-items:start}.layout-thumb{background:#141820;width:100%;height:80px}.layout-plate{fill:#c5ccd8;stroke:#8e98a8;stroke-width:1.2px}.layout-heading{text-transform:uppercase;letter-spacing:.06em;margin:10px 0 6px;font-size:11px}.library-section+.library-section{border-top:1px solid var(--line);margin-top:18px;padding-top:14px}.library-section .pane-head{margin-bottom:8px}.library-section-head{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.library-section-head .chip{flex:none;margin-top:2px}.add-custom-part{box-sizing:border-box;border:1px dashed var(--line);background:var(--bg-2);text-align:center;width:100%;color:var(--muted);cursor:pointer;border-radius:8px;margin:0;padding:14px 8px;font-size:12px;display:block}.add-custom-part:hover{border-color:var(--accent);color:var(--accent)}.custom-part-form{box-sizing:border-box;border:1px dashed var(--line);background:var(--bg-2);border-radius:8px;width:100%;margin:0;padding:8px}.thumb{background:radial-gradient(circle at 32% 24%,#e4e9f0 0%,#b7bfcb 58%,#8e97a6 100%);border-radius:6px;width:64px;height:64px;overflow:hidden}img.thumb{object-fit:contain;padding:3px;display:block}.layout-card .thumb{width:100%;height:80px}.part-meta strong,.bom-group strong{font-size:12px;display:block}.part-meta span,.bom-group span{color:var(--muted);font-size:11px}.mpn{font-family:var(--mono);color:var(--accent);font-size:10px;display:block}.mpn-list{margin:8px 0 0;padding-left:16px;font-size:11px}.mpn-list li+li{margin-top:6px}.mpn-list code{font-family:var(--mono);color:var(--accent);font-size:11px;display:block}.mpn-list span{color:var(--muted);display:block}.source-list{margin:6px 0 8px;padding:0;list-style:none}.source-list li{flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin-bottom:4px;display:flex}.source-list span{letter-spacing:.04em;min-width:22px;color:var(--accent);font-size:10px;font-weight:700}.source-list a{color:var(--accent-2);font-size:11px}.source-list.compact li{margin-bottom:2px}.source-list.compact a{font-size:10px}.add-part{margin-top:6px;padding:3px 8px;font-size:11px}.canvas-wrap{background:radial-gradient(circle at 20% 0%, #1c2433, transparent 40%), var(--bg-0);grid-template-rows:minmax(0,1fr) auto 240px;min-width:0;min-height:0;display:grid;position:relative;overflow:hidden}.canvas-wrap.iso-tall{grid-template-rows:minmax(0,1fr) auto minmax(380px,.72fr)}.board-stage{min-width:0;min-height:0;position:relative;overflow:hidden}.board{touch-action:none;width:100%;height:100%;min-height:0;overflow:hidden}.plate{fill:#c5ccd8;stroke:#8e98a8;stroke-width:.6px}.cut-view .board-shadow{display:none}.cut-view .plate{fill:#11141c;stroke:red;stroke-width:.25px}.cut-shapes{fill:none;stroke:red;stroke-width:.25px}.screw-mark circle:first-child{fill:#0c0e12b8;stroke:none}.screw-mark circle:last-child{fill:none;stroke:currentColor;stroke-width:.4px}.cut-view .origin-x,.cut-view .origin-y{stroke:red;opacity:.7}.board-shadow{fill:#0b0d12;opacity:.45}.grid-minor{stroke:#28304047;stroke-width:.2px}.grid-major{stroke:#2830408c;stroke-width:.28px}.origin-x,.origin-y{stroke:var(--accent);stroke-width:.5px}.guide{stroke-width:.35px;stroke-dasharray:2 1.5;pointer-events:none}.guide-grid{stroke:#7d879c}.guide-part{stroke:#e85cff}.guide-panel{stroke:var(--accent-2)}.placed{cursor:grab}.placed.selected{cursor:grabbing}.select-box{fill:none;stroke:var(--accent);stroke-width:.45px;stroke-dasharray:1.6 1.1;pointer-events:none}.hit-area{fill:#0000;stroke:none}.rear-box{fill:#e036361a;stroke:#e03636;stroke-width:.45px;stroke-dasharray:1.5 1;pointer-events:none}.rear-box.overlap{fill:#e0363652;stroke:#ff2a2a;stroke-width:.7px;stroke-dasharray:none}.canvas-caption{color:var(--muted);border-top:1px solid var(--line);padding:6px 12px;font-size:11px}.sticker-sheet{background:color-mix(in srgb, var(--bg-1) 92%, transparent);border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:2;border-radius:10px;width:min(280px,100% - 20px);padding:10px 12px;position:absolute;bottom:10px;left:10px;box-shadow:0 8px 24px #00000047}.sticker-sheet header{justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;display:flex}.sticker-sheet header strong{letter-spacing:.06em;text-transform:uppercase;color:var(--accent);font-size:11px}.sticker-sheet header .ghost{padding:3px 8px;font-size:11px}.sticker-sheet .hint{margin:0;font-size:11px}.sticker-sheet ul{flex-wrap:wrap;gap:6px;max-height:72px;margin:0 0 8px;padding:0;list-style:none;display:flex;overflow:auto}.sticker-chip{text-overflow:ellipsis;white-space:nowrap;border:1px solid #0003;border-radius:6px;max-width:120px;padding:4px 8px;font-size:11px;overflow:hidden}.sticker-chip.active{outline:2px solid var(--accent);outline-offset:1px}.sticker-editor{border-top:1px solid var(--line);flex-direction:column;gap:6px;padding-top:4px;display:flex}.sticker-toolbar{flex-wrap:wrap;gap:6px;margin-bottom:4px;display:flex}.sticker-toolbar .chip{margin:0}.sticker-editor .field{margin-bottom:0}.sticker-swatches{color:var(--muted);flex-wrap:wrap;align-items:center;gap:5px;font-size:10px;display:flex}.sticker-swatches span{min-width:28px}.sticker-swatches .swatch{border:1px solid var(--line);border-radius:4px;width:18px;height:18px;padding:0}.sticker-swatches .swatch.active{outline:2px solid var(--accent);outline-offset:1px}.plate-sticker{cursor:grab}.plate-sticker.selected{cursor:grabbing}.inspector section,.export,.wiring,.share,.plate-setup,.basket,.make{margin-bottom:18px}.plate-setup{border-bottom:1px solid var(--line);padding-bottom:12px}.field{color:var(--muted);flex-direction:column;gap:4px;margin-bottom:8px;font-size:11px;display:flex}.field input,.field select{background:var(--bg-0);border:1px solid var(--line);border-radius:6px;padding:6px 8px}.row{grid-template-columns:1fr 1fr;gap:8px;display:grid}.align-tools{flex-direction:column;gap:6px;margin-top:10px;display:flex}.align-tools>span{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:11px}.align-grid{grid-template-columns:1fr 1fr 1fr;gap:6px;display:grid}.align-grid button,.align-tools .row button{padding:5px 6px;font-size:11px}.share .row{margin-bottom:8px}.share .hint{margin-top:8px}.layout-list{flex-direction:column;gap:8px;margin:10px 0 0;padding:0;list-style:none;display:flex}.layout-list li{border:1px solid var(--line);background:var(--bg-2);border-radius:8px;padding:8px}.layout-meta strong{font-size:12px;display:block}.layout-meta span{color:var(--muted);font-size:11px}.layout-actions{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.layout-actions button{padding:4px 8px;font-size:11px}.mount-hole-list li{justify-content:space-between;align-items:center;gap:8px;display:flex}.mount-hole-list button{flex:none}.usb-wall-pick{border-top:1px solid var(--line);margin-top:10px;padding-top:10px}.usb-wall-pick .pane-head{margin-bottom:8px}.export-actions{grid-template-columns:1fr 1fr;gap:6px;margin-bottom:8px;display:grid}.flash-guide{background:var(--bg-2);border:1px solid var(--line);border-radius:8px;margin:16px 0 18px;padding:12px 14px}.flash-guide .pane-head{margin-bottom:6px}.flash-guide .pane-head p{color:var(--muted);margin:0;font-size:12px}.flash-guide h3{text-transform:uppercase;letter-spacing:.08em;color:var(--accent);margin:0;font-size:12px}.flash-guide ol{margin:10px 0 0;padding-left:22px}.flash-guide li{color:var(--text);margin-bottom:12px}.flash-guide li strong{margin-bottom:2px;display:block}.flash-guide a{color:var(--accent-2)}.depth-fig{background:var(--bg-0);border:1px solid var(--line);cursor:zoom-in;border-radius:6px;width:100%;height:auto;margin:8px 0}.lightbox{z-index:60;cursor:zoom-out;background:#06080ceb;flex-direction:column;justify-content:center;align-items:center;padding:2vh 1.5vw;display:flex;position:fixed;inset:0}.lightbox-fig{cursor:zoom-out;border-radius:10px;width:96vw;height:86vh;margin:0;box-shadow:0 16px 48px #00000073}.lightbox-hint{color:var(--muted);margin:12px 0 0;font-size:12px}.wiring h3{text-transform:uppercase;letter-spacing:.08em;color:var(--accent);margin:12px 0 6px;font-size:12px}.wiring button{margin-top:8px}.wiring-actions{flex-wrap:wrap;gap:6px;display:flex}.wiring-gnd{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px;margin:6px 0 2px;font-size:12px;display:flex}.wiring-gnd button[aria-pressed=true]{border-color:var(--accent);color:var(--accent)}.depth-fig-wrap{width:100%}.depth-legend{color:var(--muted);flex-wrap:wrap;gap:6px 10px;margin:4px 0 0;padding:0;font-size:10px;line-height:1.3;list-style:none;display:flex}.depth-legend li{align-items:center;gap:5px;min-width:0;display:inline-flex}.depth-swatch{border:1px solid #0006;border-radius:2px;flex-shrink:0;width:8px;height:8px}.wiring-diagram{background:var(--bg-0);border:1px solid var(--line);cursor:zoom-in;border-radius:6px;width:100%;margin:8px 0;overflow:hidden}.wiring-diagram.is-focused{border-color:var(--accent)}.wiring-diagram :is(.wiring-part,.wiring-part-lugs){cursor:pointer}.wiring-diagram svg{width:100%;height:auto;display:block}.wiring-diagram-tools{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin:4px 0 0;display:flex}.wiring-focus-clear{border-color:var(--accent);color:var(--accent)}.wiring-focus-hint{margin:0}.wiring-lightbox-bar{color:#e8edf6;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;width:min(96vw,1200px);margin-bottom:8px;font-size:14px;display:flex}.lightbox-fig.wiring-diagram{cursor:default;width:96vw;height:88vh;max-height:88vh;overflow:hidden}.lightbox-fig.wiring-diagram svg{width:100%;height:100%;max-height:none}.swatches{flex-wrap:wrap;gap:6px;margin:4px 0 10px;display:flex}.swatch{color:#f4f6fa;text-shadow:0 1px 2px #000;min-width:52px;padding:8px 6px;font-size:10px}.swatch.active{outline:2px solid var(--accent)}.basket-list,.quote-lines{margin:8px 0;padding:0;list-style:none}.basket-list li,.quote-lines li{border-bottom:1px solid var(--line);margin-bottom:8px;padding-bottom:8px}.basket-list a,.admin a{color:var(--accent-2);font-size:11px}.basket-list a{margin-left:8px;display:inline}.basket-list li{flex-wrap:wrap;align-items:baseline;gap:4px 0;display:flex}.build-total{letter-spacing:-.03em;color:var(--text,#f4f6fa);margin:12px 0 4px;font-size:36px;font-weight:700}.admin-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:12px 0;display:grid}.admin-stat{background:var(--bg-2);border:1px solid var(--line);border-radius:8px;padding:10px 12px}.admin-stat span{color:var(--muted);font-size:11px;display:block}.admin-stat strong{margin-top:4px;font-size:22px;display:block}.order-history{color:var(--muted);margin:4px 0 0;padding-left:18px;font-size:12px}.admin h3{margin:14px 0 6px;font-size:13px}.admin{background:var(--bg-0);min-height:100%}.admin-main{max-width:960px;margin:0 auto;padding:16px}.admin-tabs{flex-wrap:wrap;gap:6px;margin-bottom:16px;display:flex}.admin-tabs .chip{margin:0}.admin-main h2{text-transform:uppercase;letter-spacing:.08em;color:var(--accent);font-size:13px}.admin-lock{border:1px solid var(--line);background:var(--bg-1);border-radius:10px;max-width:320px;margin:48px auto 0;padding:20px}.admin-lock-error{color:var(--danger)}.row-hidden{opacity:.55}.row-hidden code{color:var(--muted)}.admin .toolbar a{color:var(--accent);margin-left:auto}.table-wrap{border:1px solid var(--line);border-radius:6px;max-height:220px;overflow:auto}table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:11px}th,td{text-align:left;border-bottom:1px solid var(--line);padding:5px 6px}th{color:var(--muted);background:var(--bg-2);font-weight:600;position:sticky;top:0}.bom-group ul{margin:4px 0 10px;padding-left:16px}.bom-group li+li{margin-top:4px}.iso-view{border-top:1px solid var(--line);background:#0e1118;grid-template-rows:auto 1fr;min-height:0;display:grid}.iso-head{color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:6px 10px 4px;font-size:11px;display:flex}.iso-head strong{color:var(--accent);text-transform:uppercase;letter-spacing:.08em}.iso-tools{flex-wrap:wrap;gap:6px;margin-left:auto;display:flex}.iso-tools .chip{margin:0}.iso-svg{pointer-events:none;width:100%;height:100%}.iso-mount-hit{pointer-events:all;fill:#0000;stroke:#0000;cursor:grab}.iso-mount-hit:active{cursor:grabbing}.iso-stage{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;min-height:0;overflow:hidden}.iso-stage:active{cursor:grabbing}.iso-stage:focus{outline:none}.iso-stage .iso-cut,.iso-stage .iso-mount,.iso-stage .iso-usb{fill:none}.iso-cut{fill:#0b0d12;stroke:#ff4d4d;stroke-width:.35px}.iso-mount{fill:#0b0d12;stroke:var(--accent-2);stroke-width:.4px}.iso-usb{fill:#0b0d12;stroke:#7ec8ff;stroke-width:.45px}.iso-side-num{fill:#d7e2f0;paint-order:stroke fill;stroke:#080a0ebf;stroke-width:1.2px;pointer-events:none;-webkit-user-select:none;user-select:none;font-size:7px;font-weight:700}.side-num{fill:var(--muted,#8b97a8);pointer-events:none;-webkit-user-select:none;user-select:none;font-size:7px;font-weight:700}.export-overlay{z-index:40;background:#080a0eb8;justify-content:center;align-items:flex-start;padding:40px 16px 16px;display:flex;position:fixed;inset:0;overflow:auto}.export-panel{background:var(--bg-1);border:1px solid var(--line);border-radius:10px;width:min(720px,100%);margin-bottom:24px;padding:16px}.export-panel-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px;display:flex}.export-panel-head h2{text-transform:uppercase;letter-spacing:.08em;color:var(--accent);margin:0 0 2px;font-size:12px}.export-panel-head p{color:var(--muted);margin:0;font-size:12px}.export-choice{grid-template-columns:1fr 1fr 1fr;gap:8px;margin-bottom:16px;display:grid}.export-path{text-align:left;background:var(--bg-2);padding:12px}.export-path strong{margin-bottom:4px;display:block}.export-path span{color:var(--muted);font-size:11px;display:block}.export-path.active{border-color:var(--accent);background:#3a3224}.export-panel .table-wrap{max-height:280px}.source-admin{max-height:360px;margin:8px 0}.source-admin input{background:var(--bg-0);border:1px solid var(--line);border-radius:4px;width:100%;min-width:120px;padding:4px 6px}@media (width<=1100px){.workspace{grid-template-columns:280px minmax(0,1fr) 280px}.export-choice{grid-template-columns:1fr}}
