:root{color-scheme:dark;--bg:#1a1a1a;--panel:#262626;--panel2:#202020;--edge:#404040;--text:#f1f5f9;--muted:#a1a1aa;--blue:#60a5fa;--air:#38bdf8;--vent:#f5a524;--green:#00e676}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;font-family:system-ui,-apple-system,"Segoe UI",sans-serif;background:var(--bg);color:var(--text)}button,input{font:inherit}button{cursor:pointer}button:disabled{opacity:.4;cursor:not-allowed}button:focus-visible,input:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.app{height:100dvh;display:flex;flex-direction:column;min-height:0}.toolbar{display:flex;align-items:center;gap:18px;min-height:66px;background:#262626;border-bottom:1px solid var(--edge);padding:8px 14px;z-index:5}.brand{display:flex;align-items:center;gap:6px;font-size:18px;letter-spacing:.04em;white-space:nowrap}.brand strong,.brand-icon{color:var(--blue)}.brand-icon{font-size:24px;margin-right:4px}.brand small{font-size:11px;letter-spacing:0;color:var(--muted);margin-left:6px}.toolbar-scroll{display:flex;align-items:center;gap:10px;overflow-x:auto;scrollbar-width:thin}.toolgroup{display:flex;align-items:center;gap:3px;background:#1b1b1b;border:1px solid var(--edge);border-radius:9px;padding:4px;white-space:nowrap}.toolgroup button,.library-footer button,.secondary{border:0;border-radius:6px;background:transparent;color:#e5e7eb;padding:7px 10px;font-size:12px;font-weight:600}.toolgroup button:hover:not(:disabled),.library-footer button:hover,.secondary:hover{background:#3b3b3b}.toolgroup button.primary{background:#2563eb;color:white}.toolgroup button.primary:hover{background:#1d4ed8}.workspace{flex:1;display:grid;grid-template-columns:205px minmax(0,1fr) 245px;min-height:0}.library,.inspector{background:#242424;overflow:auto;min-height:0;padding:14px 12px}.library{border-right:1px solid var(--edge)}.inspector{border-left:1px solid var(--edge)}.aside-title{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:12px;font-weight:700;font-size:13px}.aside-title small{color:var(--muted);font-weight:400;font-size:10px}.aside-help,.selection-panel p,.privacy-note,.restore-panel p{color:var(--muted);font-size:11px;line-height:1.55;margin:0 0 14px}.library-items{display:grid;gap:7px}.library-item{width:100%;text-align:left;background:#303030;border:1px solid var(--edge);border-radius:9px;padding:9px 10px;color:var(--text);display:flex;align-items:center;gap:10px}.library-item:hover,.library-item.active{border-color:var(--blue);background:#25354b}.library-item .glyph{display:grid;place-items:center;width:34px;height:34px;border:1px solid #526071;border-radius:7px;background:#1b222b;color:var(--blue);font-size:17px;flex:none}.library-item strong{display:block;font-size:12px}.library-item small{display:block;font-size:10px;color:var(--muted);margin-top:2px}.library-footer{margin-top:18px;border-top:1px solid var(--edge);padding-top:13px;display:grid;gap:6px}.library-footer button{background:#303030;border:1px solid var(--edge);text-align:left}.canvas-panel{position:relative;min-width:0;min-height:0;overflow:hidden;background:#1a1a1a}.canvas-top{position:absolute;z-index:2;left:16px;top:14px;right:16px;display:flex;justify-content:space-between;gap:12px;pointer-events:none;font-size:11px;color:#cbd5e1}.canvas-top span{padding:6px 9px;background:#252525e8;border:1px solid var(--edge);border-radius:6px}#circuitCanvas{display:block;width:100%;height:100%;touch-action:none;cursor:crosshair}#circuitCanvas.pan{cursor:grab}#circuitCanvas.dragging{cursor:grabbing}.legend{position:absolute;bottom:16px;left:16px;display:flex;gap:12px;padding:8px 10px;background:#252525eb;border:1px solid var(--edge);border-radius:7px;font-size:10px;color:#d4d4d8}.legend span{display:flex;align-items:center;gap:5px}.line{display:inline-block;width:19px;height:3px;border-radius:2px}.line.pressure{background:var(--air)}.line.exhaust{background:var(--vent)}.line.idle{background:#71717a}.field-label{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:6px}.text-field{background:#171717;border:1px solid var(--edge);color:var(--text);border-radius:6px;width:100%;padding:8px;font-size:12px}.selection-panel{margin-top:17px;min-height:130px}.selection-panel h3{font-size:13px;margin:0 0 7px}.selection-panel .pill{display:inline-block;padding:4px 7px;border-radius:5px;background:#1b3345;color:#8ad6ff;font-size:11px;margin:2px 2px 5px 0}.selection-panel button{margin-top:9px}.section-divider{height:1px;background:var(--edge);margin:18px 0}.switch-row{display:flex;gap:8px;align-items:flex-start;font-size:12px;cursor:pointer}.switch-row input{accent-color:var(--blue);margin-top:2px}.switch-row small{display:block;color:var(--muted);font-size:10px;line-height:1.4;margin-top:4px}.wide{width:100%;text-align:center}.secondary{background:#303030;border:1px solid var(--edge);margin-top:10px}.restore-panel{margin-top:14px;background:#203a35;border:1px solid #357668;padding:10px;border-radius:8px;font-size:11px}.restore-panel p{margin:4px 0}.privacy-note{margin:0}.statusbar{display:flex;justify-content:space-between;gap:10px;background:#222;border-top:1px solid var(--edge);padding:6px 12px;min-height:28px;color:#c9d1da;font-size:10px}.component .body{fill:#2b3440;stroke:#b4c4d4;stroke-width:2}.component.selected .body{stroke:#60a5fa;stroke-width:3}.component .label{fill:#f1f5f9;font-size:12px;font-weight:700;pointer-events:none}.component .sub{fill:#aab7c5;font-size:10px;pointer-events:none}.component .symbol{stroke:#d9e6f2;stroke-width:3;fill:none;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.component .port{fill:#1a1a1a;stroke:#cbd5e1;stroke-width:2;cursor:crosshair}.component .port.pending{stroke:#60a5fa;fill:#1e3a5f;stroke-width:3}.component .port-label{fill:#d2dee9;font-size:10px;font-weight:700;pointer-events:none}.component .actuator{fill:#27618c;stroke:#8ad6ff;stroke-width:2;cursor:pointer}.component .actuator.on{fill:#1381ba}.component .actuator-label{fill:#fff;font-size:10px;font-weight:700;pointer-events:none}.wire{fill:none;stroke:#71717a;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;cursor:pointer}.wire.pressure{stroke:var(--air);stroke-dasharray:10 7;animation:flow 1s linear infinite}.wire.exhaust{stroke:var(--vent);stroke-dasharray:3 7}.wire.conflict{stroke:#fb7185}.wire.selected{stroke-width:6}.component .piston{fill:#b7c7d8;stroke:#e2e8f0;stroke-width:1}@keyframes flow{to{stroke-dashoffset:-17}}@media(prefers-reduced-motion:reduce){.wire.pressure{animation:none}*{scroll-behavior:auto!important}}@media(max-width:900px){.workspace{grid-template-columns:165px minmax(0,1fr)}.inspector{grid-column:1/-1;max-height:180px;border-left:0;border-top:1px solid var(--edge)}.toolbar{gap:8px}.brand small{display:none}}@media(max-width:610px){.workspace{grid-template-columns:1fr;grid-template-rows:auto minmax(220px,1fr) auto}.library{max-height:120px;border-right:0;border-bottom:1px solid var(--edge)}.library-items{display:flex;overflow-x:auto}.library-item{min-width:142px}.library-footer{display:flex;margin-top:8px;padding-top:8px}.inspector{max-height:155px}.toolbar{flex-wrap:wrap}.toolbar-scroll{width:100%}.toolgroup button span{display:none}.canvas-top{top:6px;left:6px;right:6px}.canvas-top span{font-size:9px}.legend{left:6px;bottom:6px;gap:6px;font-size:9px}}
.toolgroup button{min-width:36px;height:34px;display:inline-grid;place-items:center;line-height:1;font-size:16px}.toolgroup button.active-tool{background:#1e3a5f;color:#93c5fd;box-shadow:inset 0 0 0 1px #3b82f6}
.toolgroup button.tool-button{width:48px;min-width:48px;height:50px;padding:4px 2px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:10px;font-weight:500;line-height:1;transform-origin:center}.toolgroup button.tool-button:hover:not(:disabled){background:#404040}.toolgroup button.tool-button .tool-icon{display:block;width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;color:#d4d4d8}.toolgroup button.tool-button .tool-label{display:block!important;color:#a3a3a3;font-size:10px;font-weight:500;line-height:12px;white-space:nowrap}.toolgroup button.tool-button:hover:not(:disabled) .tool-label{color:#f5f5f5}.toolgroup button.tool-button:active:not(:disabled){transform:scale(.95)}.toolgroup button.tool-button.primary .tool-label{color:#fff}.toolgroup button.tool-button.active-tool{background:#1e3a5f;color:#93c5fd;box-shadow:inset 0 0 0 1px #3b82f6}.toolgroup button.tool-button.active-tool .tool-label{color:#bfdbfe}.toolbar-scroll{gap:8px}.toolgroup{gap:1px}.toolgroup button.tool-button:disabled .tool-icon,.toolgroup button.tool-button:disabled .tool-label{opacity:.48}
