:root{--bg:#f6f7f9;--panel:#fff;--border:#d9dce3;--text:#1f2937;--muted:#6b7280;--accent:#2563eb;--accent-bg:#e8effc;--accent-strong:#2563eb;--accent-strong-hover:#1d4ed8;--error:#dc2626;--warning:#d97706;--review:#7c3aed;--info:#0891b2;--success:#16a34a;--error-bg:#fee2e2;--error-border:#fca5a5;--error-text:#991b1b;--hint-bg:#fef9c3;--hint-border:#fde047;--success-bg:#ecfdf5;--success-border:#86efac;--success-text:#15803d;--success-text-strong:#166534;--info-bg:#eff6ff;--info-border:#93c5fd;--info-text:#1e3a8a;--input-bg:#fff;--hover:#f1f3f7;--hover-soft:#eef2f7;--panel-translucent:#fffffff2;--detail-scrim:#eef2f708;--scrim:#0f172a66;--table-border:#eef0f4;--pin-wired-bg:#fffbeb;--pin-wired-border:#f59e0b;--canvas-bg:#eef0f4;--grid-dot:#c7c9d1;--canvas-label:#1f2937;--wire-tag-bg:#fff;--wire-tag-text:#111827;--artwork-bg:#eef1f5;--handle-bg:#e5e7eb;--preview-1:#fff;--preview-2:#f4f6f9;--preview-3:#e9edf3;color:var(--text);font-family:system-ui,-apple-system,PingFang SC,Hiragino Sans GB,Noto Sans CJK SC,Microsoft YaHei,sans-serif;font-size:13px}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#10141a;--panel:#181d24;--border:#2c333d;--text:#e2e6ec;--muted:#97a1ad;--accent:#60a5fa;--accent-bg:#1c2c45;--accent-strong:#2563eb;--accent-strong-hover:#3b82f6;--error:#f87171;--warning:#fbbf24;--review:#a78bfa;--info:#22d3ee;--success:#4ade80;--error-bg:#3a1a1c;--error-border:#7f2b2e;--error-text:#fca5a5;--hint-bg:#332a08;--hint-border:#857112;--success-bg:#12271a;--success-border:#2b5e3f;--success-text:#4ade80;--success-text-strong:#86efac;--info-bg:#142639;--info-border:#2d5182;--info-text:#bfdbfe;--input-bg:#141920;--hover:#232a33;--hover-soft:#1e242c;--panel-translucent:#181d24f2;--detail-scrim:#00000059;--scrim:#000000a6;--table-border:#242b34;--pin-wired-bg:#38270a;--pin-wired-border:#b45309;--canvas-bg:#14181e;--grid-dot:#3a424d;--canvas-label:#cbd5e1;--wire-tag-bg:#1f2937;--wire-tag-text:#f8fafc;--artwork-bg:#12161c;--handle-bg:#232a33;--preview-1:#222933;--preview-2:#1b2129;--preview-3:#151a20}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);overscroll-behavior:none}button{font:inherit;color:inherit;background:var(--panel);border:1px solid var(--border);cursor:pointer;border-radius:6px;padding:4px 9px}button:hover:not(:disabled){background:var(--hover)}button:disabled{opacity:.45;cursor:default}button.active{background:var(--accent-bg);border-color:var(--accent);color:var(--accent)}button.primary{background:var(--accent-strong);border-color:var(--accent-strong);color:#fff}button.primary:hover:not(:disabled){background:var(--accent-strong-hover)}button.danger{color:var(--error);border-color:var(--error-border)}button.small{padding:2px 6px;font-size:12px}input,select,textarea{font:inherit;border:1px solid var(--border);background:var(--input-bg);color:inherit;border-radius:6px;min-width:0;padding:4px 6px}input.invalid{border-color:var(--error)}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}a{color:var(--accent)}.muted{color:var(--muted)}.small{font-size:12px}.error{color:var(--error)}.hint-text{color:var(--muted);font-size:11px;font-style:normal;display:block}.app{flex-direction:column;height:100%;display:flex}.toolbar{background:var(--panel);border-bottom:1px solid var(--border);z-index:5;align-items:center;gap:4px;padding:6px 10px;display:flex;position:relative}.toolbar .zone{flex-shrink:0;align-items:center;gap:4px;display:flex}.toolbar button,.toolbar select,.toolbar label,.toolbar .brand{white-space:nowrap}.toolbar .zone button,.toolbar .zone select,.toolbar .zone label,.toolbar .tool-group button,.toolbar .menu-wrap>button,.toolbar .zoom-cluster button,.toolbar>.zone,.toolbar .tool-group,.toolbar .zoom-cluster,.toolbar .menu-wrap{flex-shrink:0}.icon-btn{justify-content:center;align-items:center;width:30px;height:28px;padding:0;display:inline-flex}.icon{display:block}.zoom-cluster{align-items:center;gap:2px;display:inline-flex}.toolbar .menu-wrap>button{align-items:center;gap:6px;display:inline-flex}.wire-options-popover .wire-colors{padding:2px 8px 6px}.wire-options-popover select{width:calc(100% - 16px);margin:0 8px 4px}.view-row{cursor:pointer;border-radius:5px;align-items:center;gap:8px;padding:5px 8px;font-size:12px;display:flex}.view-row:hover{background:var(--hover)}.view-row input{margin:0}.menu .view-action{width:100%;color:var(--text);background:0 0;border:none}.brand{align-items:baseline;gap:6px;margin-right:8px;display:flex}@media (max-width:1480px){.toolbar .brand{display:none}}.sep{background:var(--border);width:1px;height:22px;margin:0 4px}.spacer{flex:1}.tool-group{flex-shrink:0;align-items:center;gap:2px;display:flex}.tool-group label{color:var(--muted);align-items:center;gap:4px;display:flex}.swatch{border:1px solid #0003;border-radius:3px;width:14px;height:14px;display:inline-block}.wire-colors{flex-wrap:wrap;align-items:center;gap:4px;display:inline-flex}.wire-color-dot{cursor:pointer;border:1px solid #0003;border-radius:50%;flex:none;width:18px;height:18px;padding:0;transition:transform 80ms}.wire-color-dot:hover:not(:disabled){background-image:none;transform:scale(1.15)}.wire-color-dot.on{box-shadow:inset 0 0 0 2px #fff,0 0 0 2px #111827}.wire-color-custom{cursor:pointer;background:conic-gradient(#ef4444,#eab308,#22c55e,#06b6d4,#3b82f6,#a855f7,#ef4444);border:1px solid #0003;border-radius:50%;flex:none;width:18px;height:18px;position:relative;overflow:hidden}.wire-color-custom.on{box-shadow:inset 0 0 0 2px #fff,0 0 0 2px #111827}.wire-color-custom input{opacity:0;cursor:pointer;border:0;width:100%;height:100%;padding:0;position:absolute;inset:0}.toggle{cursor:pointer;align-items:center;gap:4px;display:inline-flex}.storage{text-align:right;text-overflow:ellipsis;white-space:nowrap;width:72px;color:var(--muted);flex:none;font-size:12px;overflow:hidden}.mode-switch{border:1px solid var(--border);background:var(--bg);border-radius:999px;gap:2px;margin-right:10px;padding:2px;display:inline-flex}.mode-switch button{color:var(--muted);background:0 0;border:none;border-radius:999px;padding:3px 10px;font-weight:600}.mode-switch button:hover:not(.active){background:var(--accent-bg);color:var(--accent)}.mode-switch button.active{background:var(--accent-strong);border-color:var(--accent-strong);color:#fff}.storage.error,.storage.unavailable{color:var(--error);font-weight:600}.menu-wrap{position:relative}.menu{background:var(--panel);border:1px solid var(--border);z-index:20;border-radius:8px;flex-direction:column;gap:2px;min-width:260px;padding:6px;display:flex;position:absolute;top:100%;left:0;box-shadow:0 8px 24px #0002}.menu button{text-align:left;background:0 0;border:none}.menu button:hover:not(:disabled){background:var(--accent-bg)}.menu-label{color:var(--muted);padding:4px 8px;font-size:11px}.menu-sep{background:var(--border);height:1px;margin:4px 0}.main{flex:1;min-height:0;display:flex}:root{--panel-rail-width:10px;--panel-left-width:260px;--panel-right-width:340px;--panel-left-slot:max(var(--panel-rail-width), var(--panel-left-width));--panel-right-slot:max(var(--panel-rail-width), var(--panel-right-width))}.left{width:var(--panel-left-slot);background:var(--panel);min-width:0;min-height:0;display:flex}.right{width:var(--panel-right-slot);background:var(--panel);min-width:0;min-height:0;display:flex}.panel-side[data-collapsed=true]{overflow:hidden}.panel-body{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.panel-rail{width:var(--panel-rail-width);background:var(--panel);color:var(--muted);cursor:col-resize;touch-action:none;border:0;border-radius:0;flex:none;align-items:stretch;padding:0;display:flex;position:relative}.panel-rail.left{justify-content:flex-end}.panel-rail.right{justify-content:flex-start}.panel-rail-grip{background:var(--border);pointer-events:none;width:1px}.panel-rail:hover{background:var(--hover);color:var(--text)}.panel-rail.dragging,.panel-rail.dragging:hover{background:var(--accent-bg);color:var(--accent)}.panel-rail:hover .panel-rail-grip,.panel-rail.dragging .panel-rail-grip{background:0 0}.panel-rail-chevron{text-align:center;opacity:0;pointer-events:none;font-size:13px;line-height:1;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.panel-rail:hover .panel-rail-chevron,.panel-rail:focus-visible .panel-rail-chevron,.panel-rail.collapsed .panel-rail-chevron{opacity:1}.panel-rail.collapsed{background:var(--panel);color:var(--text)}.panel-rail.collapsed:hover{background:var(--hover)}.panel-rail:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.center{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.panel-title{padding:8px 10px 4px;font-size:14px;font-weight:600}.panel-footer{border-top:1px solid var(--border);padding:6px 10px;font-size:12px}.library{flex-direction:column;height:100%;min-height:0;display:flex}.library .search{flex:1}.lib-actions{flex-wrap:nowrap;align-items:center;padding:0 10px 6px}.library-list{flex:1;padding:0 6px 6px;overflow:auto}.lib-cat{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:8px 4px 2px;font-size:11px}.lib-item{border:1px solid var(--border);background:var(--panel);border-radius:6px;flex-direction:row;align-items:stretch;width:100%;margin-bottom:3px;display:flex;overflow:hidden}.lib-item.active{border-color:var(--accent);background:var(--accent-bg)}.lib-pick{text-align:left;background:0 0;border:none;border-radius:0;flex-direction:column;flex:1;align-items:flex-start;min-width:0;padding:6px 8px;display:flex}.lib-pick:hover{background:var(--hover)}.lib-del{color:var(--muted);background:0 0;border-color:#0000;align-self:center;margin:0 5px;padding:1px 6px;font-size:12px;line-height:1.4}.lib-del:hover:not(:disabled){color:var(--error);background:var(--error-bg)}.lib-name{font-weight:500}.lib-meta{color:var(--muted);font-size:11px}.lib-more{text-align:left;width:calc(100% - 8px);color:var(--muted);border:1px dashed var(--border);background:0 0;border-radius:6px;margin:2px 4px 4px;padding:3px 8px;font-size:11px;display:block}.lib-more:hover{color:var(--text);background:var(--hover)}.lib-search-note{padding:6px 4px 0;font-size:11px}.hint{background:var(--hint-bg);border:1px solid var(--hint-border);border-radius:6px;margin:0 10px 6px;padding:6px 8px;font-size:12px}.placed{flex-direction:column;height:100%;min-height:0;display:flex}.placed-empty{margin:4px 10px;font-size:12px;line-height:1.6}.placed-list{flex:1;min-height:0;padding:0 6px 6px;overflow:auto}.placed-block{margin-bottom:2px}.placed-item{text-align:left;border-radius:6px;flex-direction:column;align-items:flex-start;width:100%;padding:6px 8px;display:flex}.placed-item:hover{background:var(--hover-soft)}.placed-item.active{background:var(--accent-bg);box-shadow:inset 2px 0 0 var(--accent)}.placed-name{font-weight:500}.placed-meta{color:var(--muted);font-size:11px}.placed-detail{border-left:2px solid var(--accent-bg);margin-left:8px;padding:4px 8px 8px 12px}.placed-sub{color:var(--muted);margin:6px 0 3px;font-size:11px}.placed-pins{flex-wrap:wrap;gap:3px;display:flex}.pin-chip{border:1px solid var(--border);background:var(--panel);border-radius:4px;flex-direction:column;align-items:flex-start;gap:0;padding:2px 5px;font-size:10.5px;line-height:1.25;display:inline-flex}.pin-chip:hover{border-color:var(--accent);color:var(--accent)}.pin-chip.wired{border-color:var(--pin-wired-border);background:var(--pin-wired-bg)}.pin-chip-name{font-family:ui-monospace,monospace;font-weight:600}.pin-chip-hole{color:var(--muted);font-size:9.5px}.placed-wires{flex-direction:column;gap:3px;display:flex}.wire-chip{text-align:left;border-radius:6px;align-items:center;gap:6px;width:100%;padding:3px 6px;font-size:11px;display:flex}.wire-chip:hover{background:var(--hover-soft)}.wire-chip-text{text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,monospace;overflow:hidden}.board-form{flex-direction:column;gap:10px;margin:14px 0 4px;display:flex}.board-form .field{flex:none}.inline-check{color:var(--text);align-items:center;gap:6px;font-size:12.5px;display:flex}.inline-check input{margin:0}.model-detail-layer{inset:49px var(--panel-right-slot) 0 var(--panel-left-slot);z-index:30;background:var(--detail-scrim);justify-content:flex-start;align-items:flex-start;padding:clamp(24px,8vh,84px) 24px;display:flex;position:fixed}.model-detail-card{background:var(--panel);border:1px solid var(--border);border-radius:14px;width:min(440px,100vw - 64px);max-height:calc(100vh - 105px);position:relative;overflow:auto;box-shadow:0 20px 55px #0f172a2e,0 3px 12px #0f172a1a}.model-detail-card.has-back{width:min(760px,100vw - 64px)}.model-detail-close{z-index:1;background:var(--panel-translucent);border-radius:999px;width:30px;height:30px;padding:0;font-size:21px;line-height:1;position:absolute;top:9px;right:9px}.model-preview{border-bottom:1px solid var(--table-border);background:radial-gradient(circle at 50% 35%, var(--preview-1) 0, var(--preview-2) 68%, var(--preview-3) 100%);border-radius:14px 14px 0 0;justify-content:center;align-items:center;height:235px;padding:18px;display:flex;overflow:hidden}.model-preview.two-sided{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;height:270px;display:grid}.model-preview-face{justify-content:center;align-items:center;width:100%;min-width:0;height:100%;min-height:0;display:flex;position:relative}.model-preview-label{z-index:1;border:1px solid var(--border);background:var(--panel-translucent);color:var(--muted);letter-spacing:.08em;border-radius:999px;padding:3px 9px;font-size:11px;font-weight:700;position:absolute;top:0;left:0}.model-preview svg{filter:drop-shadow(0 6px 5px #0f172a24);width:100%;height:100%;display:block}.model-preview .component-name,.model-preview .board-name{display:none}.model-detail-body{padding:18px 20px 8px}.model-detail-body h2{margin:5px 34px 5px 0;font-size:20px;line-height:1.3}.model-detail-body>p{color:var(--muted);margin:13px 0;line-height:1.65}.model-kind{background:var(--accent-bg);color:var(--accent);border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700;display:inline-flex}.model-facts{border:1px solid var(--border);background:var(--border);border-radius:9px;grid-template-columns:1fr 1fr;gap:1px;margin:12px 0 0;display:grid;overflow:hidden}.model-facts>div{background:var(--panel);min-width:0;padding:8px 10px}.model-facts dt{color:var(--muted);font-size:11px}.model-facts dd{overflow-wrap:anywhere;margin:2px 0 0}.model-detail-actions{background:var(--panel-translucent);border-radius:0 0 14px 14px;justify-content:flex-end;gap:8px;padding:13px 20px 17px;display:flex;position:sticky;bottom:0}@media (max-width:900px){.model-detail-layer{background:#0f172a1f;justify-content:center;align-items:center;padding:16px;inset:49px 0 0}.model-detail-card{width:min(440px,100vw - 32px);max-height:calc(100vh - 81px)}.model-detail-card.has-back{width:min(760px,100vw - 32px)}}@media (max-width:620px){.model-preview.two-sided{grid-template-rows:repeat(2,minmax(0,1fr));grid-template-columns:1fr;height:470px}}.canvas-wrap{flex:1;min-height:120px;position:relative}.canvas{touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.canvas .scene-dim{opacity:.55}.canvas .component-hit{cursor:move}.canvas .hole,.canvas .wire{cursor:pointer}.canvas .waypoint{cursor:grab}.selection-toolbar{z-index:4;max-width:calc(100% - 24px);color:var(--text);background:var(--panel-translucent);border:1px solid var(--border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);white-space:nowrap;pointer-events:none;border-radius:9px;align-items:center;gap:4px;padding:5px;display:flex;position:absolute;transform:translate(-50%,-100%);box-shadow:0 8px 22px #0f172a2e}.selection-toolbar.below{transform:translate(-50%)}.selection-toolbar-caption{color:var(--muted);padding:0 4px;font-size:11px}.selection-toolbar button{pointer-events:auto;padding:3px 7px;font-size:12px}.selection-toolbar button.danger{color:var(--error)}.selection-toolbar-field,.selection-toolbar-toggle{pointer-events:auto;align-items:center;gap:4px;font-size:11px;display:inline-flex}.selection-toolbar-field select{max-width:118px;padding:3px 5px;font-size:11px}.selection-toolbar-toggle input{margin:0}.selection-toolbar-config{border-left:1px solid var(--border);align-items:center;gap:4px;padding-left:4px;display:inline-flex}.selection-toolbar-label{color:var(--muted);font-size:11px}.canvas .resize-handle{fill:var(--accent);stroke:#fff;stroke-width:.28px;opacity:.92;pointer-events:all}.canvas-hud{background:var(--panel-translucent);color:var(--muted);pointer-events:none;border-radius:6px;gap:12px;padding:3px 8px;font-size:12px;display:flex;position:absolute;bottom:8px;left:10px}.canvas-empty{color:var(--muted);pointer-events:none;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.canvas .canvas-bg{fill:var(--canvas-bg)}.canvas .grid-dot{fill:var(--grid-dot)}.canvas text.overlay-hint{fill:var(--canvas-label)}.canvas text.overlay-bad{fill:var(--error)}.canvas text.overlay-good{fill:var(--success)}:root[data-theme=dark] .canvas .component-name{fill:var(--canvas-label)}:root[data-theme=dark] .canvas .offboard-hint{fill:#c4b5fd}:root[data-theme=dark] .canvas circle.wire-tag{fill:var(--wire-tag-bg)}:root[data-theme=dark] .canvas text.wire-tag{fill:var(--wire-tag-text)}.validation{border-top:1px solid var(--border);background:var(--panel);flex-direction:column;max-height:34%;display:flex}.validation.collapsed{max-height:none}.validation-head{cursor:pointer;flex-wrap:wrap;align-items:center;gap:10px;padding:4px 10px;display:flex}.validation-head .note{flex:1;font-size:12px}.counts{gap:4px;display:flex}.chip{opacity:.5;border-radius:999px;padding:2px 8px;font-size:12px}.chip.on{opacity:1}.chip.error{border-color:var(--error);color:var(--error)}.chip.warning{border-color:var(--warning);color:var(--warning)}.chip.needs_review{border-color:var(--review);color:var(--review)}.chip.info{border-color:var(--info);color:var(--info)}.results{margin:0;padding:0 6px 6px;list-style:none;overflow:auto}.result{cursor:pointer;border-radius:6px;grid-template-columns:auto auto 1fr;align-items:baseline;gap:4px 8px;padding:4px 6px;display:grid}.result:hover{background:var(--hover)}.result .eps,.result .sug{color:var(--muted);grid-column:3;font-size:11px}.tag{color:#fff;white-space:nowrap;border-radius:4px;padding:1px 6px;font-size:11px}.tag.error{background:var(--error)}.tag.warning{background:var(--warning)}.tag.needs_review{background:var(--review)}.tag.info{background:var(--info)}.tabs{border-bottom:1px solid var(--border);display:flex}.tabs button{background:0 0;border:none;border-radius:0;flex:1;padding:8px}.tabs button.active{border-bottom:2px solid var(--accent);color:var(--accent)}.tab-body{flex:1;min-height:0;overflow:auto}.props{flex-direction:column;gap:6px;padding:0 10px 10px;display:flex}.props p{margin:4px 0}.autowire-card{border:1px solid var(--info-border);background:var(--info-bg);border-radius:8px;flex-direction:column;gap:7px;padding:9px;display:flex}.autowire-card p{margin:0}.autowire-title{color:var(--accent);font-weight:700}.board-join-card{border:1px solid var(--success-border);background:var(--success-bg);border-radius:8px;flex-direction:column;gap:7px;padding:9px;display:flex}.board-join-card p{margin:0}.board-join-title{color:var(--success-text);font-weight:700}.join-status{color:var(--success-text-strong);font-size:12px}.board-join-options{align-items:center}.board-join-actions{grid-template-columns:1fr 1fr;gap:5px;display:grid}.field{flex-direction:column;flex:1;gap:2px;display:flex}.field>span{color:var(--muted);font-size:11px}.field .static{padding:4px 0}.rgb-field{grid-template-columns:repeat(3,minmax(0,1fr)) 34px;align-items:end;gap:5px;display:grid}.rgb-field label{color:var(--muted);align-items:center;gap:3px;font-size:11px;display:flex}.rgb-field input[type=number]{width:100%}.rgb-field input[type=color]{cursor:pointer;width:34px;height:29px;padding:2px}.row{flex-wrap:wrap;align-items:flex-end;gap:6px;display:flex}details{border:1px solid var(--border);border-radius:6px;padding:4px 8px}summary{cursor:pointer;font-weight:500}table.pins{border-collapse:collapse;width:100%;font-size:12px}table.pins td{border-top:1px solid var(--table-border);vertical-align:top;padding:2px 4px}.net{background:var(--accent-bg);color:var(--accent);border-radius:4px;padding:0 5px;font-size:11px}.intent{border-top:1px solid var(--table-border);flex-direction:column;gap:4px;padding:6px 0;display:flex}.dsl{flex-direction:column;gap:6px;height:100%;padding:0 10px 10px;display:flex}.dsl .dirty{color:var(--warning)}.dsl-text{resize:none;white-space:pre;flex:1;min-height:240px;font-family:ui-monospace,Menlo,monospace;font-size:11.5px;line-height:1.4}.dsl-errors{background:var(--error-bg);color:var(--error-text);border-radius:6px;max-height:160px;margin:0;padding:6px 6px 6px 22px;font-size:12px;overflow:auto}.build{flex-direction:column;gap:8px;padding:0 10px 10px;display:flex}.step-card{border:1px solid var(--accent);background:var(--accent-bg);border-radius:8px;flex-direction:column;gap:6px;padding:8px;display:flex}.step-card.done{border-color:var(--success);background:var(--success-bg)}.step-head{align-items:center;gap:8px;display:flex}.step-body{flex-direction:column;gap:2px;display:flex}.wire-no{background:var(--panel);border:3px solid;border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;font-family:ui-monospace,monospace;font-weight:700;display:inline-flex}.wire-no.small{border-width:2px;width:20px;height:20px;font-size:11px}.step-list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.step-list li{cursor:pointer;border-radius:6px;align-items:center;gap:6px;padding:3px 6px;display:flex}.step-list li.current{background:var(--accent-bg)}.step-list li.done{color:var(--muted);text-decoration:line-through}.toasts{z-index:50;flex-direction:column;gap:6px;max-width:420px;display:flex;position:fixed;bottom:12px;right:12px}.toast{color:#fff;cursor:pointer;background:#1f2937;border-radius:8px;padding:8px 12px;font-size:12.5px;box-shadow:0 6px 20px #0004}.toast.error{background:#991b1b}.toast.success{background:#166534}.toast ul{margin:4px 0 0;padding-left:16px}.canvas .badge,.canvas .annotations text,.canvas .board-label,.canvas .rail-mark,.canvas .wire-tag,.canvas .wire-shadow,.canvas .wire-halo,.canvas .wire-end,.canvas .upright-ghost{pointer-events:none}.canvas .wire-end-hit{pointer-events:all;cursor:grab}.canvas .wire-end-hit:active{cursor:grabbing}.artwork-layer{z-index:40;background:var(--scrim);justify-content:stretch;align-items:stretch;padding:18px;display:flex;position:fixed;inset:0}.artwork-panel{background:var(--panel);border:1px solid var(--border);border-radius:10px;flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden;box-shadow:0 12px 40px #0005}.artwork-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:8px 12px;display:flex}.artwork-tools{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:6px;padding:6px 12px;display:flex}.artwork-tools .spacer{flex:1}.artwork-main{flex:1;min-height:0;display:flex}.artwork-canvas{background:var(--artwork-bg);touch-action:none;-webkit-user-select:none;user-select:none;flex:1;min-width:0;display:block}.artwork-canvas.photo-mode{cursor:grab}.artwork-side{border-left:1px solid var(--border);flex-direction:column;gap:6px;width:300px;padding:10px 12px;font-size:12.5px;display:flex;overflow:auto}.artwork-help{color:var(--muted);margin:0;padding-left:18px}.artwork-help li{margin-bottom:4px}.field-inline{color:var(--muted);align-items:center;gap:4px;font-size:12px;display:inline-flex}.sim-controls{gap:3px}.sim-controls button{white-space:nowrap;padding:4px 7px}@media (max-width:1720px){.sim-controls .sim-label{display:none}.sim-controls button{min-width:28px;padding:4px 6px}}.hardware{overflow:auto}.hardware p{margin:0}.hardware-console{max-height:40vh}.sim-timeline{padding:0 10px 4px}.sim-timeline-scale{padding:0 0 2px}.sim-timeline-dropped{color:var(--warning)}.sim-strip-row{grid-template-columns:84px 1fr;align-items:center;gap:6px;display:grid}.sim-strip-name{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;text-align:left;background:0 0;border:none;padding:1px 4px;font-size:11px;overflow:hidden}.sim-strip-name:hover{color:var(--accent);background:var(--accent-bg)}.sim-strip-name.armed{color:var(--error);font-weight:600}.sim-strip{min-width:0}.sim-strip svg{width:100%;height:22px;display:block}.sim-strip polyline{fill:none;stroke:var(--accent);stroke-width:1.2px;vector-effect:non-scaling-stroke}.sim-strip-z{fill:#94a3b833}.sim-strip-x{fill:#dc262633}.sim-slider{grid-template-columns:1fr auto;align-items:center;gap:2px 8px;padding:4px 10px;display:grid}.sim-slider-name{color:var(--muted);font-size:12px}.sim-slider output{font-variant-numeric:tabular-nums;font-size:12px}.sim-slider input[type=range]{grid-column:1/-1;width:100%}.sim-status{color:#fff;background:#6b7280;border-radius:999px;align-items:center;gap:5px;margin-left:4px;padding:1px 8px;font-size:12px;font-weight:600;display:inline-flex}.sim-status:before,.sim-light:before{content:"";opacity:.9;background:#fff;border-radius:50%;width:7px;height:7px}.sim-light{color:#fff;background:#6b7280;border-radius:999px;align-items:center;gap:5px;padding:1px 8px;font-size:12px;font-weight:600;display:inline-flex}.sim-status-idle,.sim-light-idle{background:#6b7280}.sim-status-compiling,.sim-light-compiling,.sim-status-prepared,.sim-light-prepared{background:var(--accent)}.sim-status-running,.sim-light-running{background:var(--success)}.sim-status-paused,.sim-light-paused,.sim-status-stepping,.sim-light-stepping{background:var(--warning)}.sim-status-faulted,.sim-light-faulted{background:var(--error)}.sim-blockers{color:#fff;background:var(--error);white-space:nowrap;cursor:help;border-radius:999px;align-items:center;margin-left:4px;padding:1px 8px;font-size:12px;font-weight:600;display:inline-flex}.sim-force-toggle{color:var(--error);white-space:nowrap;font-weight:600}.sim-force-banner{z-index:6;pointer-events:none;background:var(--error);color:#fff;padding:5px 12px;font-size:12px;font-weight:600;line-height:1.5;position:absolute;top:100%;left:0;right:0;box-shadow:0 1px 4px #00000040}.sim-panel{flex-direction:column;gap:8px;padding:0 10px 10px;display:flex}.sim-panel .panel-title{padding-left:0;padding-right:0}.sim-header{color:var(--muted);flex-wrap:wrap;align-items:center;gap:10px;font-size:12px;display:flex}.sim-section{border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:6px;padding:6px 8px;display:flex}.sim-section-title{font-size:12px;font-weight:600}.sim-section-head{align-items:center;gap:6px;display:flex}.sim-section p{margin:0}.sim-program-list{flex-direction:column;gap:4px;display:flex}.sim-program{border:1px solid var(--border);border-radius:6px;flex-direction:column;gap:4px;padding:6px;display:flex}.sim-program.active{border-color:var(--accent);background:var(--accent-bg)}.sim-program-head{align-items:center;gap:6px;display:flex}.sim-program-head input[type=text]{flex:1}.sim-program-meta{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.sim-lang{color:var(--muted);font-size:11px}.sim-diagnostics{flex-direction:column;gap:3px;max-height:200px;margin:0;padding:0;list-style:none;display:flex;overflow:auto}.sim-diagnostic{cursor:pointer;border-radius:6px;grid-template-columns:auto 1fr;align-items:baseline;gap:6px;padding:4px 6px;font-size:12px;display:grid}.sim-diagnostic:hover{background:var(--hover)}.sim-serial{color:#e2e8f0;white-space:pre-wrap;background:#0f172a;border-radius:6px;min-height:40px;max-height:140px;padding:6px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;line-height:1.45;overflow:auto}.sim-serial .muted{color:#94a3b8}.sim-serial-line.stderr{color:#fca5a5}.sim-nets-wrap{max-height:220px;overflow:auto}table.sim-nets{border-collapse:collapse;width:100%;font-size:12px}table.sim-nets th{text-align:left;color:var(--muted);padding:2px 4px;font-weight:500}table.sim-nets td{border-top:1px solid var(--table-border);padding:2px 4px}.sim-info{background:var(--info-bg);border:1px solid var(--info-border);color:var(--info-text);border-radius:6px;padding:6px 8px;font-size:12px;line-height:1.5}.sim-overlay,.sim-visual{pointer-events:none}.sim-visual-led{stroke:#0f172a59;stroke-width:.12px}.sim-visual-pressed{fill:#2563eb47;stroke:#1d4ed8;stroke-width:.3px;opacity:0}.sim-visual-pressed[data-active=true]{opacity:1}.sim-control{pointer-events:all;cursor:pointer;touch-action:none}.sim-control:hover{fill:#2563eb1f}.sim-control:active{fill:#2563eb3d}.code-editor{background:var(--panel);border-top:1px solid var(--border);flex-direction:column;flex:none;min-height:120px;max-height:calc(66% - 130px);display:flex}.code-handle{cursor:row-resize;background:var(--handle-bg);touch-action:none;flex:none;height:6px}.code-handle:hover,.code-handle.dragging{background:var(--accent-bg)}.code-head{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:8px;padding:4px 10px;font-size:12px;display:flex}.code-dirty{color:var(--muted);font-size:11px}.code-dirty.dirty{color:var(--warning);font-weight:600}.code-body{flex:1;min-height:0;display:flex;overflow:hidden}.code-gutter,.code-text{margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.5}.code-gutter{min-width:34px;color:var(--muted);text-align:right;background:var(--bg);border-right:1px solid var(--border);-webkit-user-select:none;user-select:none;flex:none;padding:6px 6px 6px 8px;overflow:hidden}.code-text{resize:none;white-space:pre;tab-size:2;border:none;border-radius:0;outline:none;flex:1;padding:6px 8px;overflow:auto}.solder-hole-head{flex-wrap:wrap;align-items:center;gap:6px;font-size:13px;display:flex}.solder-status{background:var(--bg);color:var(--muted);border:1px solid var(--border);white-space:nowrap;border-radius:999px;padding:1px 6px;font-size:11px}.solder-status-occupied,.solder-status-blocked{background:var(--hint-bg);color:#92400e;border-color:#fde047}.solder-link{text-align:left;color:var(--accent);cursor:pointer;background:0 0;border:none;padding:2px 4px;font-size:12px}.solder-link:hover{text-decoration:underline}.solder-actions{gap:6px;margin-top:6px;display:flex}.solder-actions button{padding:4px 8px;font-size:12px}.solder-progress-row{color:var(--muted);justify-content:space-between;margin-bottom:4px;font-size:12px;display:flex}.solder-progress-bar{background:var(--bg);border:1px solid var(--border);border-radius:3px;height:6px;overflow:hidden}.solder-progress-fill{background:var(--accent);height:100%}.solder-list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.solder-list li{justify-content:space-between;align-items:center;gap:4px;display:flex}.solder-remove{color:var(--error);cursor:pointer;background:0 0;border:none;border-radius:4px;flex:none;padding:2px 6px;font-size:12px}.solder-remove:hover{background:var(--error-bg)}.solder-empty{color:var(--muted);margin:0;font-size:12px}
