@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";body{-webkit-font-smoothing:antialiased}:root{--bg:#fff;--canvas:#fff;--sidebar:#f7f6f3;--soft:#f7f6f3;--hover:#37352f0f;--active:#37352f29;--ink:#37352f;--muted:#787774;--faint:#9b9a97;--line:#37352f17;--line-strong:#37352f29;--link:#2383e2;--cta:#0075de;--cta-hover:#005bab;--accent-soft:#f2f9ff;--callout:#f1f1ef;--ok:#448361;--warn:#c47d1a;--fill:#fff;--danger:#eb5757;--radius:6px;--font:Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--mono:"SFMono-Regular", Menlo, Consolas, "Liberation Mono", Courier, monospace;--shadow-panel:0 0 0 1px #0f0f0f0f;--shadow-popover:#0f0f0f0d 0px 0px 0px 1px, #0f0f0f1a 0px 3px 6px, #0f0f0f33 0px 9px 24px;--shadow:var(--shadow-panel);--focus-ring:#2383e291 0px 0px 0px 1px inset, #2383e259 0px 0px 0px 2px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);color:var(--ink);background:var(--bg)}.app{flex-direction:column;height:100%;min-height:0;display:flex}.top{border-bottom:1px solid var(--line);background:var(--bg);align-items:center;gap:1rem;padding:.55rem 1rem;display:flex}.brand{letter-spacing:-.01em;color:var(--ink);align-items:center;gap:.5rem;font-size:.95rem;font-weight:600;display:flex}.mark{background:var(--ink);opacity:.35;border-radius:2px;width:8px;height:8px}.tabs{background:0 0;border:0;gap:2px;padding:0;display:flex}.tabs button{color:var(--muted);border-radius:var(--radius);cursor:pointer;font:inherit;background:0 0;border:0;padding:.35rem .65rem;font-size:.875rem;font-weight:500}.tabs button:hover{background:var(--hover);color:var(--ink)}.tabs button.active{background:var(--hover);color:var(--ink);font-weight:500}.top-actions{gap:.15rem;margin-left:auto;display:flex}.reset{color:var(--muted);border-radius:var(--radius);cursor:pointer;font:inherit;background:0 0;border:0;padding:.35rem .65rem;font-size:.8rem}.reset:hover{background:var(--hover);color:var(--ink)}.main{flex:1;grid-template-columns:1fr 340px;min-height:0;display:grid}.canvas-pane{background:var(--sidebar);min-width:0;min-height:0;padding:.75rem}.schematic-wrap{background:var(--fill);border:1px solid var(--line);height:100%;box-shadow:var(--shadow-panel);border-radius:8px;flex-direction:column;display:flex;position:relative;overflow:hidden}.schematic-meta{border-bottom:1px solid var(--line);background:var(--fill);align-items:center;gap:.65rem;padding:.5rem .75rem;font-size:.78rem;display:flex}.sim-clock{font-family:var(--font);font-variant-numeric:tabular-nums;color:var(--muted);cursor:help;white-space:nowrap;-webkit-user-select:none;user-select:none;margin-left:auto;font-size:.72rem}.sim-clock:hover{color:var(--ink)}.sim-clock-sep{color:var(--faint);margin:0 .25rem}.badge{background:var(--callout);color:var(--muted);font-family:var(--font);border:0;border-radius:4px;padding:.15rem .45rem;font-size:.75rem;font-weight:500}.power-btn{border:1px solid var(--line);background:var(--bg);color:var(--muted);font:inherit;cursor:pointer;border-radius:20px;align-items:center;gap:.35rem;padding:.15rem .55rem .15rem .4rem;font-size:.72rem;display:inline-flex}.power-btn:hover{background:var(--hover);color:var(--ink)}.power-btn.on{color:var(--ink);border-color:var(--line-strong)}.power-dot{background:var(--faint);border-radius:50%;width:7px;height:7px}.power-btn.on .power-dot{background:var(--ink)}.meta-ok{color:var(--faint);font-size:.75rem}.meta-err{color:var(--danger);font-size:.75rem}.schematic{cursor:crosshair;background:#fff;flex:1;width:100%;display:block}.analysis-split{grid-template-columns:220px 1fr;gap:.65rem;height:100%;min-height:0;display:grid}.wire{fill:none;stroke:var(--ink);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;opacity:.85}.wire:hover{opacity:1;stroke-width:2.25px}.wire.flowing{stroke-dasharray:6 5;stroke-width:2px;animation-name:wire-flow;animation-timing-function:linear;animation-iteration-count:infinite}@keyframes wire-flow{to{stroke-dashoffset:-44px}}.junction{fill:var(--ink);stroke:none;pointer-events:none}.comp:hover,.comp.pinned{stroke:var(--link);stroke-width:2px;opacity:1}.comp:hover .mcu-body,.comp:hover .btn-body,.comp.pinned .mcu-body,.comp.pinned .btn-body{stroke:var(--link)}.comp:hover .sym-label,.comp.pinned .sym-label{fill:var(--link)}.comp.pinned{stroke-dasharray:none}.comp-id.pinned{fill:var(--link)}.mcu-code:hover .sym-label{fill:var(--link);text-decoration:underline}.health-head-row{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.pin-chip{font-size:10px;font-family:var(--font);color:var(--link);background:var(--accent-soft);cursor:pointer;border:1px solid #2383e259;border-radius:4px;flex:none;align-items:center;gap:.25rem;padding:.1rem .35rem;display:inline-flex}.pin-chip:hover{background:#2383e21f}.analysis-side{flex-direction:column;gap:.65rem;min-width:0;min-height:0;display:flex}.inputs-panel{background:var(--bg);border:1px solid var(--line);box-shadow:var(--shadow-panel);border-radius:8px;flex-shrink:0;overflow:hidden}.inputs-list{flex-direction:column;gap:.3rem;padding:.4rem;display:flex}.input-row{background:var(--sidebar);border-radius:6px;justify-content:space-between;align-items:center;gap:.5rem;padding:.4rem .5rem;display:flex}.input-meta{min-width:0}.input-id{font-size:.78rem;font-weight:500}.input-kind{color:var(--faint);margin-top:.08rem;font-size:.62rem}.input-toggle{border:1px solid var(--line-strong);background:var(--bg);cursor:pointer;border-radius:999px;flex-shrink:0;width:36px;height:20px;padding:0;position:relative}.input-toggle.on{background:var(--ink);border-color:var(--ink)}.input-toggle-knob{background:var(--ink);border-radius:50%;width:14px;height:14px;transition:transform .15s;position:absolute;top:2px;left:2px}.input-toggle.on .input-toggle-knob{background:var(--bg);transform:translate(16px)}.comp.stress-warn,.comp.stress-warn .mcu-body,.comp.stress-warn .btn-body{stroke:#c47d1a}.comp.stress-fail,.comp.stress-fail .mcu-body,.comp.stress-fail .btn-body{stroke:var(--danger)}.health-panel{background:var(--bg);border:1px solid var(--line);min-height:0;box-shadow:var(--shadow-panel);border-radius:8px;flex-direction:column;flex:1;display:flex;overflow:hidden}.health-head{border-bottom:1px solid var(--line);padding:.75rem .85rem}.health-list{flex-direction:column;flex:1;gap:.3rem;padding:.4rem;display:flex;overflow:auto}.health-list.dimmed{opacity:.45}.probe-sidebar{border-bottom:1px solid var(--line);flex-direction:column;gap:.45rem;padding:.55rem .65rem .35rem;display:flex}.probe-metric{min-width:0}.probe-metric-row{justify-content:space-between;align-items:baseline;gap:.35rem;margin-bottom:.1rem;display:flex}.probe-metric-val{font-family:var(--font);font-variant-numeric:tabular-nums;font-variant-numeric:tabular-nums;font-size:.72rem}.health-row.focused{opacity:1;background:var(--accent-soft);outline:1px solid var(--line-strong)}.health-row{background:var(--sidebar);border-left:3px solid var(--line-strong);border-radius:6px;padding:.4rem .5rem}.health-row.ok{border-left-color:var(--ok)}.health-row.warn{border-left-color:var(--warn);background:#c47d1a14}.health-row.fail{border-left-color:var(--danger);background:#eb57571a}.health-row.idle{opacity:.55}.health-id{font-size:.78rem;font-weight:500}.health-metric{font-family:var(--font);font-variant-numeric:tabular-nums;margin-top:.1rem;font-size:.75rem}.health-metrics{font-family:var(--font);font-variant-numeric:tabular-nums;color:var(--ink);flex-wrap:wrap;gap:.15rem .45rem;margin-top:.15rem;font-size:.68rem;line-height:1.35;display:flex}.health-metrics em{color:var(--faint);margin-right:.15rem;font-size:.6rem;font-style:normal}.health-row.fail .health-metric,.health-row.fail .health-metrics{color:var(--danger)}.health-row.warn .health-metric,.health-row.warn .health-metrics{color:var(--warn)}.health-detail{color:var(--faint);margin-top:.1rem;font-size:.68rem}@media (width<=900px){.analysis-split{grid-template-rows:1fr auto;grid-template-columns:1fr}.analysis-side{max-height:220px}.health-panel{min-height:0}}.comp{stroke:var(--ink);stroke-width:1.5px;fill:none;cursor:pointer;opacity:.9}.comp:hover{opacity:1;stroke-width:2px}.comp-id{fill:var(--muted);font-size:11px;font-family:var(--font);paint-order:stroke fill;stroke:#fafaf9e6;stroke-width:3px}.sym-label{fill:var(--ink);stroke:none;font-size:12px;font-family:var(--font);font-weight:500}.pin-hit{fill:#0000;stroke:none}.pin-hit:hover{fill:#37352f1a}.net-v{fill:var(--muted);font-size:10px;font-family:var(--font);font-variant-numeric:tabular-nums;pointer-events:none;paint-order:stroke fill;stroke:#fafaf9e6;stroke-width:3px}.probe{pointer-events:auto;background:var(--fill);border:1px solid var(--line);z-index:5;border-radius:8px;min-width:110px;padding:.45rem .6rem;position:absolute;box-shadow:0 4px 12px #0f0f0f14}.probe-link{color:var(--link);text-decoration:none}.probe-link:hover{color:var(--cta-hover);text-decoration:underline}.theoretical-tag{color:var(--faint);font-style:italic}.comp.theoretical{stroke-dasharray:4 3;opacity:.75}.comp.theoretical .mcu-body,.comp.theoretical .btn-body{stroke-dasharray:4 3}.probe-wide{min-width:180px}.probe-charts{flex-direction:column;gap:.25rem;margin-top:.35rem;display:flex}.probe-chart-label{color:var(--muted);margin-bottom:.1rem;font-size:.75rem;font-weight:500}.sparkline{width:100%;margin-top:.15rem;display:block;overflow:hidden}.sparkline.live polyline{opacity:.9}.sparkline polyline{stroke:var(--ink);stroke-width:1.25px;stroke-linejoin:round;stroke-linecap:round;opacity:.75}.comp.interactive{cursor:pointer}.ui-hint{fill:var(--faint);stroke:none;font-size:9px;font-family:var(--font)}.ui-hit{fill:#0000;stroke:none}.btn-body{fill:var(--hover);stroke:var(--ink);stroke-width:1.5px}.mcu-body{fill:var(--fill);stroke:var(--ink);stroke-width:1.5px}.mcu-play{cursor:pointer}.mcu-play-dot{fill:var(--ink);stroke:none;opacity:.55}.mcu-play-glow{fill:#37352f1f;stroke:none}.mcu-play:hover .mcu-play-dot{opacity:.9}.mcu-play.live .mcu-play-dot{fill:var(--link);opacity:1}.mcu-play.live .mcu-play-glow{fill:#2383e24d;transform-origin:0 10px;transform-box:fill-box;animation:1.4s ease-in-out infinite mcu-pulse}@keyframes mcu-pulse{0%,to{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.45)}}.pin-name{fill:var(--faint);stroke:none;font-size:8px;font-family:var(--font)}.board-outline{fill:var(--fill);stroke:var(--ink);stroke-width:1.25px;stroke-dasharray:4 3}.fp-body{fill:var(--hover);stroke:var(--line-strong);stroke-width:1px}.fp-pad{fill:var(--ink);opacity:.72;stroke:none}.fp-trace{stroke:#37352f8c;stroke-width:3.2px;stroke-linecap:round;stroke-linejoin:round;fill:none}.fp-name{fill:var(--faint);stroke:none;font-size:9px;font-family:var(--font)}.fab-warn{border-bottom:1px solid var(--line);color:var(--muted);background:var(--sidebar);padding:.45rem .85rem;font-size:.75rem}.modal-backdrop{z-index:50;background:#37352f47;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.modal{background:var(--bg);border:1px solid var(--line);width:min(920px,100%);max-height:min(860px,92vh);box-shadow:var(--shadow-popover);border-radius:10px;flex-direction:column;display:flex;overflow:hidden}.modal-head,.modal-foot{border-bottom:1px solid var(--line);align-items:center;gap:.75rem;padding:.75rem 1rem;display:flex}.modal-foot{border-bottom:0;border-top:1px solid var(--line);justify-content:flex-end}.modal-title{font-size:.95rem;font-weight:500}.modal-sub{color:var(--faint);margin-top:.15rem;font-size:.72rem}.modal-sub a{color:var(--link)}.modal-sub a:hover{color:var(--cta-hover)}.modal-body{flex:1;grid-template-columns:1fr 220px;min-height:0;display:grid}.code-editor{border:0;border-right:1px solid var(--line);resize:none;width:100%;min-height:360px;font-family:var(--mono);color:var(--ink);background:#f9f8f7;outline:none;padding:.85rem 1rem;font-size:.8125rem;line-height:1.45}.view3d-canvas{flex:1;min-height:0;position:relative}.view3d-tip{z-index:2;pointer-events:none;background:var(--bg);border:1px solid var(--line-strong);box-shadow:var(--shadow-popover);border-radius:6px;max-width:220px;padding:.4rem .55rem;position:absolute}.view3d-tip-id{color:var(--ink);font-size:.82rem;font-weight:600}.view3d-tip-sub{color:var(--muted);margin-top:.1rem;font-size:.72rem}.modal.arduino-ide{border-color:#007a7c;border-radius:4px;width:min(980px,100%);box-shadow:0 18px 50px #003c3e38}.arduino-menubar{color:#fff;background:#00979c;align-items:center;gap:.75rem;padding:.4rem .75rem;font-size:.78rem;display:flex}.arduino-app{letter-spacing:.01em;font-weight:600}.arduino-file{font-family:var(--mono);opacity:.92}.arduino-x{color:#fff;cursor:pointer;opacity:.85;background:0 0;border:0;margin-left:auto;padding:0 .25rem;font-size:1.25rem;line-height:1}.arduino-x:hover{opacity:1}.arduino-toolbar{background:#e7e7e7;border-bottom:1px solid #cfcfcf;align-items:center;gap:.4rem;padding:.45rem .65rem;display:flex}.arduino-tool{color:#222;font:inherit;cursor:pointer;background:#f4f4f4;border:1px solid #bdbdbd;border-radius:3px;align-items:center;gap:.35rem;padding:.28rem .55rem;font-size:.75rem;font-weight:500;display:inline-flex}.arduino-tool:hover{background:#fff}.arduino-tool.verify{color:#00666a;border-color:#008184}.arduino-tool.upload{color:#fff;background:#00979c;border-color:#007a7c}.arduino-tool.upload:hover{color:#fff;background:#007a7c}.arduino-tool.ghost{background:0 0}.arduino-tool-icon{font-family:var(--mono);font-weight:600}.arduino-board{font-family:var(--mono);color:#555;margin-left:auto;font-size:.68rem}.arduino-tabs{background:#dcdcdc;border-bottom:1px solid silver;padding:0 .4rem;display:flex}.arduino-tab{font-family:var(--mono);color:#444;border:1px solid #0000;border-bottom:0;margin-top:.25rem;padding:.35rem .75rem;font-size:.72rem}.arduino-tab.active{color:#111;background:#fff8e8;border-color:silver;border-radius:3px 3px 0 0}.arduino-body{background:#fff8e8}.arduino-editor{border-right:1px solid #d8d0b8;grid-template-columns:48px 1fr;min-width:0;min-height:0;display:grid}.arduino-gutter{text-align:right;font-family:var(--mono);color:#8a8470;-webkit-user-select:none;user-select:none;background:#f0ead2;border-right:1px solid #d8d0b8;margin:0;padding:.85rem .4rem;font-size:.78rem;line-height:1.5;overflow:hidden}.code-editor.arduino-code{color:#1a1a1a;white-space:pre;tab-size:2;background:#fff8e8;border-right:0;min-height:380px;padding:.85rem;font-size:.78rem;line-height:1.5}.arduino-console{background:#f7f6f3}.arduino-console-label{color:var(--faint);font-size:.62rem;font-weight:500}.arduino-statusbar{color:#e8fffe;font-family:var(--mono);background:#00979c;justify-content:space-between;gap:.75rem;padding:.35rem .75rem;font-size:.68rem;display:flex}.arduino-statusbar-right{opacity:.85}.code-side{background:var(--bg);padding:.75rem;overflow:auto}.code-log{background:var(--hover);font-family:var(--mono);color:var(--muted);white-space:pre-wrap;border-radius:6px;max-height:260px;margin:.35rem 0 0;padding:.5rem;font-size:.68rem;line-height:1.4;overflow:auto}.run-btn{border:1px solid var(--line);background:var(--bg);color:var(--ink);font:inherit;cursor:pointer;border-radius:8px;padding:.4rem .85rem;font-size:.82rem;font-weight:500}.run-btn.primary{background:var(--cta);color:#fff;border-color:var(--cta)}.run-btn:hover{background:var(--hover);color:var(--ink)}.run-btn.primary:hover{color:#fff;background:var(--cta-hover);border-color:var(--cta-hover)}.bom-total-chip{font-family:var(--font);font-variant-numeric:tabular-nums;color:var(--ink);background:var(--hover);border-radius:6px;margin-left:auto;padding:.2rem .55rem;font-size:.82rem;font-weight:500}.bom-body{flex:1;padding:.75rem 1rem 1rem;overflow:auto}.bom-table{border-collapse:collapse;width:100%;font-size:.82rem}.bom-table th{text-align:left;color:var(--faint);border-bottom:1px solid var(--line);padding:.45rem .5rem;font-size:.7rem;font-weight:500}.bom-table td{border-bottom:1px solid var(--line);vertical-align:top;color:var(--ink);padding:.55rem .5rem}.bom-table th.num,.bom-table td.num{text-align:right;font-family:var(--font);font-variant-numeric:tabular-nums;white-space:nowrap}.bom-table .mono{font-family:var(--font);color:var(--muted);font-variant-numeric:tabular-nums;font-size:.75rem}.bom-table .desc{color:var(--muted);max-width:220px}.bom-table a{color:var(--link);text-decoration:none}.bom-table a:hover{color:var(--cta-hover);text-underline-offset:2px;text-decoration:underline}.bom-table tfoot td{border-bottom:0;padding-top:.85rem;font-weight:500}.bom-table .total-label{text-align:right;color:var(--muted)}.bom-table .total-value{font-size:.95rem}.probe-k{color:var(--faint);font-size:.68rem;font-weight:500}.probe-v{font-family:var(--font);color:var(--ink);font-variant-numeric:tabular-nums;margin-top:.12rem;font-size:.95rem;font-weight:600}.probe-sub{color:var(--faint);margin-top:.1rem;font-size:.68rem}.placeholder{height:100%;color:var(--muted);background:var(--fill);border:1px solid var(--line);text-align:center;box-shadow:var(--shadow-panel);border-radius:8px;place-items:center;padding:2rem;display:grid}.agent{border-left:1px solid var(--line);background:var(--bg);flex-direction:column;min-height:0;display:flex}.agent-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:.5rem;padding:.75rem 1rem;display:flex}.agent-gear{width:30px;height:30px;color:var(--faint);cursor:pointer;background:0 0;border:0;border-radius:6px;flex-shrink:0;place-items:center;margin:-.15rem -.25rem 0 0;display:grid}.agent-gear:hover,.agent-gear.open{background:var(--hover);color:var(--ink)}.agent-prompt{flex-direction:column;flex:1;gap:.5rem;min-height:0;padding:.75rem .85rem .85rem;display:flex}.agent-prompt-label{color:var(--faint);font-size:.72rem}.agent-prompt-editor{resize:none;border:1px solid var(--line);background:var(--sidebar);min-height:0;color:var(--ink);font-family:var(--mono);border-radius:8px;outline:none;flex:1;padding:.65rem .75rem;font-size:.72rem;line-height:1.45}.agent-prompt-editor:focus{box-shadow:var(--focus-ring);border-color:#0000}.agent-prompt-actions{justify-content:flex-end;gap:.35rem;display:flex}.agent-prompt-btn{border:1px solid var(--line);background:var(--bg);color:var(--muted);font:inherit;cursor:pointer;border-radius:6px;padding:.35rem .65rem;font-size:.75rem}.agent-prompt-btn:hover{background:var(--hover);color:var(--ink)}.agent-prompt-btn.primary{background:var(--cta);border-color:var(--cta);color:#fff}.agent-prompt-btn.primary:hover{background:var(--cta-hover);border-color:var(--cta-hover);color:#fff}.agent-title{color:var(--ink);font-size:.92rem;font-weight:600}.agent-sub{color:var(--faint);margin-top:.15rem;font-size:.72rem}.agent-msgs{flex-direction:column;flex:1;gap:.5rem;padding:.85rem;display:flex;overflow:auto}.bubble{white-space:pre-wrap;border-radius:8px;max-width:100%;padding:.55rem .7rem;font-size:.875rem;line-height:1.5}.bubble.user{background:var(--hover);color:var(--ink);align-self:flex-end}.bubble.assistant{color:var(--ink);background:0 0;border:0;align-self:stretch;padding-left:.15rem}.bubble.dim{color:var(--faint)}.agent-suggestions{flex-wrap:wrap;gap:.3rem;padding:0 .85rem .5rem;display:flex}.agent-suggestions button{border:1px solid var(--line-strong);background:var(--bg);color:var(--muted);font:inherit;cursor:pointer;border-radius:6px;padding:.22rem .55rem;font-size:.72rem}.agent-suggestions button:hover:not(:disabled){background:var(--hover);color:var(--ink);border-color:var(--line-strong)}.agent-form{border-top:1px solid var(--line);gap:.4rem;padding:.7rem .85rem;display:flex}.agent-form input{border:1px solid var(--line);background:var(--bg);color:var(--ink);font:inherit;box-shadow:none;border-radius:8px;outline:none;flex:1;padding:.5rem .7rem;font-size:.875rem}.agent-form input:focus{background:var(--sidebar);box-shadow:var(--focus-ring);border-color:#0000}.agent-form input::placeholder{color:var(--faint)}.agent-form button{background:var(--cta);color:#fff;font:inherit;cursor:pointer;border:0;border-radius:6px;padding:0 .85rem;font-size:.82rem;font-weight:500}.agent-form button:hover:not(:disabled){background:var(--cta-hover)}.agent-form button:disabled{opacity:.4;cursor:not-allowed}@media (width<=900px){.main{grid-template-rows:1fr 42vh;grid-template-columns:1fr}.agent{border-left:0;border-top:1px solid var(--line)}}
