@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap";:root{--bg-canvas:#1b1e22;--bg-panel:#202328;--bg-panel-alt:#25292e;--bg-raised:#2a2e34;--line-grid:#343a41;--line-border:#3a4048;--phosphor:#5aa974;--phosphor-dim:#3d6e4e;--amber:#e0a040;--amber-dim:#8a6a3a;--select:#4da3ff;--sim-voltage:#ffe680;--sim-current:#fff;--sim-label-ink:#15171a;--danger:#e5534b;--text-primary:#d3d8de;--label-ref:#eef1f4;--label-value:#c3cad2;--text-dim:#8b949e;--text-faint:#5a626b;--font-display:"IBM Plex Sans", "Segoe UI", Arial, sans-serif;--font-label:"IBM Plex Sans", "Segoe UI", Arial, sans-serif;--font-mono:"IBM Plex Mono", Consolas, ui-monospace, monospace;--radius-sm:3px;--radius-md:6px;--ui-island:#1f2226;--ui-island-alt:#15171a;--ui-border:#3a3f46;--ui-border-light:#2c3036;--ui-hover:#2b3a4a;--ui-hover-border:#3d8fd6;--ui-accent:#6cb6ff;--ui-accent-strong:#1f6fbf;--ui-accent-bg:#1d3a57;--ui-header:linear-gradient(#2c3035, #23262a);--ui-btn-top:#3a3f46;--ui-btn-bottom:#2c3036;--ui-btn-border:#4d545d;--ui-text:#e2e5e9;--ui-text-dim:#a3aab3;--ui-text-faint:#6f7680;--ui-danger:#ff7b72;--ui-radius:2px;--ui-radius-lg:2px;--ui-shadow:none;--font-ui:"Segoe UI", Tahoma, Arial, sans-serif;--font-hand:"Segoe UI", Tahoma, Arial, sans-serif}*{box-sizing:border-box}html,body,#root{background:var(--bg-canvas);height:100%;color:var(--text-primary);margin:0}body{font-family:var(--font-ui);-webkit-font-smoothing:antialiased;overflow:hidden}button{color:inherit;font-family:inherit}::selection{background:var(--ui-accent-bg)}:focus-visible{outline:2px solid var(--ui-accent);outline-offset:1px}.app-shell{background:var(--ui-island);grid-template-rows:40px 1fr;grid-template-columns:72px 1fr 270px;width:100vw;height:100vh;display:grid}.app-titlebar,.app-palette,.app-inspector{background:var(--ui-island);color:var(--ui-text)}.app-titlebar{background:var(--ui-header);border-bottom:1px solid var(--ui-border);grid-column:1/span 3;justify-content:space-between;align-items:center;gap:12px;padding:0 8px 0 10px;display:flex}.app-palette{border-right:1px solid var(--ui-border);grid-row:2;overflow-y:auto}.app-canvas-area{background:var(--bg-canvas);grid-row:2;position:relative;overflow:hidden;box-shadow:inset 1px 1px #0b0c0e,inset -1px -1px #34393f}.app-inspector{border-left:1px solid var(--ui-border);flex-direction:column;grid-row:2;display:flex;overflow-y:auto}.brand{align-items:baseline;gap:8px;display:flex}.brand-mark{font-family:var(--font-ui);letter-spacing:.04em;color:var(--ui-text);font-size:14px;font-weight:700}.brand-mark span{color:var(--ui-accent-strong)}.brand-sub{color:var(--ui-text-faint);font-size:11px}.hint-text{color:var(--ui-text-dim);font-size:11.5px;line-height:1.45}.palette-tile{border:1px solid var(--ui-border);border-radius:var(--ui-radius);background:var(--bg-panel-alt);cursor:grab;justify-content:center;align-items:center;width:52px;height:52px;transition:background .12s,border-color .12s;display:flex}.palette-tile:hover{border-color:var(--ui-hover-border);background:var(--bg-raised)}.palette-tile:active{cursor:grabbing;background:var(--ui-accent-bg);border-color:var(--ui-accent)}.panel-section{border-bottom:1px solid var(--ui-border);flex-direction:column;gap:10px;padding:0 10px 12px;display:flex}.panel-section:last-child{border-bottom:none}.panel-section-grow{flex:1;overflow-y:auto}.panel-title{font-family:var(--font-ui);color:var(--ui-text);background:var(--ui-header);border-bottom:1px solid var(--ui-border-light);align-items:baseline;gap:8px;margin:0 -10px;padding:5px 10px;font-size:12px;font-weight:600;display:flex}.ref-badge{font-family:var(--font-ui);color:var(--ui-accent);background:var(--ui-accent-bg);border-radius:2px;padding:0 6px;font-size:11px;font-weight:600}.field{flex-direction:column;gap:4px;display:flex}.field-label{color:var(--ui-text-dim);font-size:12px}.field-input{background:var(--ui-island-alt);border:1px solid var(--ui-border);border-radius:var(--ui-radius);color:var(--ui-text);font-family:var(--font-ui);outline:none;padding:3px 6px;font-size:12px;transition:border-color .12s,box-shadow .12s}.field-input:focus{border-color:var(--ui-accent);box-shadow:none}.field-input-invalid{border-color:var(--ui-danger)}.button-row{gap:8px;display:flex}.btn{background:linear-gradient(var(--ui-btn-top), var(--ui-btn-bottom));border:1px solid var(--ui-btn-border);color:var(--ui-text);border-radius:var(--ui-radius);font-size:12px;font-weight:400;font-family:var(--font-ui);cursor:pointer;flex:1;padding:4px 10px;transition:background .12s,border-color .12s,color .12s}.btn:hover:not(:disabled){background:var(--ui-hover);border-color:var(--ui-hover-border)}.btn:active:not(:disabled){background:var(--ui-accent-bg);border-color:var(--ui-hover-border)}.btn-danger{color:var(--ui-danger)}.btn-danger:hover:not(:disabled){border-color:var(--ui-danger);background:#ff7b721f}.btn-load{color:var(--ui-text);background:linear-gradient(#3b4a5a,#2c3846);border:1px solid #4f6275;flex:none;padding:5px 14px;font-weight:600;box-shadow:inset 0 1px #ffffff14,0 1px 2px #00000080}.btn-load:hover:not(:disabled){border-color:var(--ui-hover-border);background:linear-gradient(#45586c,#33424f)}.btn-load:active:not(:disabled){background:linear-gradient(#2c3846,#33424f);box-shadow:inset 1px 1px 3px #00000080}.btn-primary{background:var(--ui-accent-strong);color:#fff;border-radius:var(--ui-radius);width:100%;font-family:var(--font-ui);cursor:pointer;border:1px solid #2a82d6;padding:6px;font-size:12px;font-weight:600;transition:background .12s,transform 50ms}.btn-primary:hover:not(:disabled){background:#2a82d6}.btn-primary:active:not(:disabled){transform:scale(.98)}.btn-primary:disabled{background:var(--ui-btn-bottom);border-color:var(--ui-border);color:var(--ui-text-faint);cursor:not-allowed}.btn-link{color:var(--ui-text-dim);font-family:var(--font-ui);text-underline-offset:2px;cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:0;font-size:12px;text-decoration:underline}.btn-link:hover{color:var(--ui-accent)}.json-preview{background:var(--ui-island-alt);border:1px solid var(--ui-border);border-radius:var(--ui-radius);font-family:var(--font-mono);max-height:220px;color:var(--ui-text-dim);white-space:pre-wrap;word-break:break-word;padding:8px;font-size:10.5px;line-height:1.4;overflow:auto}.result-box{border-radius:var(--ui-radius);border:1px solid var(--ui-border);background:var(--ui-island);padding:8px 10px;font-size:12.5px}.result-ok{color:#8cc9a0;background:#5aa97414;border-color:#3d6e4e}.result-error{color:var(--ui-danger);background:#ff7b721a;border-color:#7a3833}.hint-text.warn{color:#e3b341}.view-toggle{border:1px solid var(--ui-btn-border);border-radius:var(--ui-radius);background:linear-gradient(var(--ui-btn-top), var(--ui-btn-bottom));gap:0;padding:0;display:flex}.view-toggle-btn{color:var(--ui-text);font-family:var(--font-ui);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:0;padding:3px 10px;font-size:12px;font-weight:400;transition:color .12s,background .12s}.view-toggle-btn:hover:not(:disabled){color:var(--ui-text);background:var(--ui-hover)}.view-toggle-btn+.view-toggle-btn{border-left:1px solid var(--ui-btn-border)}.view-toggle-btn.active{background:var(--ui-accent-bg);color:var(--ui-text);box-shadow:inset 1px 1px 3px #00000080}.view-toggle-btn:disabled{opacity:.4;cursor:not-allowed}.btn-xs{flex:none;padding:3px 9px;font-size:12px;text-decoration:none;display:inline-block}.cjs-viewer{background:var(--bg-canvas);flex-direction:column;width:100%;height:100%;display:flex}.cjs-infobar{border-bottom:1px solid var(--ui-border);border-radius:var(--ui-radius-lg);background:var(--ui-island);box-shadow:var(--ui-shadow);flex-shrink:0;justify-content:space-between;align-items:center;padding:4px 8px 4px 10px;display:flex}.cjs-infobar-label{font-family:var(--font-ui);color:var(--ui-text-dim);font-size:12.5px}.cjs-infobar-name{color:var(--ui-accent)}.cjs-infobar-actions{gap:8px;display:flex}.cjs-iframe{border:none;flex:1;width:100%;display:block}.cjs-placeholder{background:var(--bg-canvas);justify-content:center;align-items:center;width:100%;height:100%;display:flex}.cjs-placeholder-inner{text-align:center;flex-direction:column;align-items:center;gap:14px;max-width:320px;padding:40px 24px;display:flex}.cjs-placeholder-title{font-family:var(--font-ui);color:var(--text-dim);margin:0;font-size:15px}.cjs-placeholder-hint{color:var(--text-faint);margin:0;font-size:12px;line-height:1.6}.cjs-placeholder-hint code{font-family:var(--font-mono);color:var(--ui-accent);background:var(--ui-accent-bg);border-radius:var(--radius-sm);padding:1px 5px}.modal-backdrop{z-index:100;background:#040806b8;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal{background:var(--bg-panel);border:1px solid var(--line-border);border-radius:var(--radius-md);flex-direction:column;gap:12px;max-height:100%;padding:16px;display:flex;box-shadow:0 16px 48px #00000080}.modal-header,.modal-footer{justify-content:space-between;align-items:center;gap:12px;display:flex}.modal-title{font-family:var(--font-display);letter-spacing:.04em;margin:0 0 4px;font-size:15px;font-weight:600}.draw-overlay{z-index:5;position:absolute;inset:0}.draw-toolbar{background:var(--ui-island);border:1px solid var(--ui-border);border-radius:var(--ui-radius-lg);max-width:calc(100% - 24px);color:var(--ui-text);flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;padding:6px 8px;display:flex;position:absolute;top:8px;left:50%;transform:translate(-50%);box-shadow:2px 2px 6px #00000059}.draw-width{align-items:center;gap:6px;display:flex}.draw-width input{accent-color:var(--ui-accent);width:90px}.draw-hint,.draw-error{text-align:center;pointer-events:none;max-width:calc(100% - 32px);position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.draw-error{pointer-events:auto}.draw-hint{color:var(--text-dim)}.draw-canvas{background-color:var(--bg-canvas);background-image:radial-gradient(circle, var(--line-grid) 1.5px, transparent 1.6px);cursor:crosshair;touch-action:none;background-position:0 0;background-size:24px 24px;width:100%;height:100%;display:block}.rtp-toggle.on{color:#fff;background:linear-gradient(#2a82d6,#1f6fbf);border-color:#3d8fd6}.rtp-status{min-width:80px}.draw-detections{pointer-events:none;position:absolute;inset:0}.draw-detection{border:1.5px dashed #ffb454;border-radius:2px;position:absolute}.draw-detection-label{font-family:var(--font-ui);white-space:nowrap;color:#1a1206;background:#ffb454;border-radius:2px;margin-bottom:2px;padding:0 4px;font-size:11px;position:absolute;bottom:100%;left:-1px}.draw-canvas.has-image{cursor:default;background:0 0;position:relative}.draw-image{object-fit:contain;border-radius:var(--radius-sm);pointer-events:none;background:#fff;width:calc(100% - 32px);height:calc(100% - 72px);position:absolute;inset:56px 16px 16px}.draw-canvas.erasing{cursor:cell}.draw-busy{color:var(--ui-text);font-family:var(--font-ui);background:#1212128c;justify-content:center;align-items:center;font-size:14px;display:flex;position:absolute;inset:0}.draw-generate{width:auto;padding:6px 16px}.btn:disabled{opacity:.45;cursor:not-allowed}.component-badge{font-family:var(--font-label);-webkit-user-select:none;user-select:none;pointer-events:none;font-size:10px;font-weight:600}.component-badge-bg{fill:#0f172aeb;stroke:#38bdf873;stroke-width:1px;rx:4}.component-badge-text-v{fill:#38bdf8}.component-badge-text-i{fill:#4ade80}@keyframes wireFlowAnim{0%{stroke-dashoffset:24px}to{stroke-dashoffset:0}}@keyframes wireFlowReverseAnim{0%{stroke-dashoffset:0}to{stroke-dashoffset:24px}}.wire-flow-forward{animation:wireFlowAnim var(--flow-speed,.8s) linear infinite}.wire-flow-reverse{animation:wireFlowReverseAnim var(--flow-speed,.8s) linear infinite}.branch-table{border-collapse:collapse;width:100%;font-size:11px}.branch-table th,.branch-table td{text-align:left;vertical-align:middle;border-bottom:1px solid #ffffff0d;padding:5px 7px}.branch-table th{color:#64748b;text-transform:uppercase;letter-spacing:.06em;z-index:1;background:#080c14bf;font-size:10px;font-weight:700;position:sticky;top:0}.branch-table tr:last-child td{border-bottom:none}.branch-table tr:hover td{background:#ffffff05}.branch-table .val-v{color:var(--sim-voltage);font-family:var(--font-label)}.branch-table .val-i{color:var(--sim-current);font-family:var(--font-label)}.branch-table .val-dir{color:#fbbf24;font-weight:500}.branch-scroll{background:#080c14a6;border:1px solid #ffffff12;border-radius:5px;max-height:280px;overflow-y:auto}.branch-scroll::-webkit-scrollbar{width:4px}.branch-scroll::-webkit-scrollbar-track{background:0 0}.branch-scroll::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:2px}.sim-section{flex-direction:column;gap:6px;display:flex}.sim-section-title{text-transform:uppercase;letter-spacing:.08em;color:#64748b;border-bottom:1px solid #ffffff0f;padding-bottom:3px;font-size:10px;font-weight:700}.node-voltage-grid{grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:5px;display:grid}.node-voltage-item{background:#080c14b3;border:1px solid #ffffff12;border-radius:4px;flex-direction:column;align-items:center;gap:2px;padding:5px 4px;display:flex}.node-id{font-family:var(--font-label);color:#64748b;text-transform:uppercase;letter-spacing:.06em;font-size:9px;font-weight:700}.node-v{font-family:var(--font-label);font-size:11px;font-weight:600;line-height:1.1}.analysis-overlay text{-webkit-user-select:none;user-select:none;pointer-events:none}.display-toggle{font-family:var(--font-ui);color:var(--ui-text);cursor:pointer;justify-content:space-between;align-items:center;gap:8px;font-size:12px;display:flex}.display-toggle .view-toggle-btn{padding:2px 7px}.display-toggle-label{min-width:0}.display-switch{appearance:none;border:1px solid var(--ui-btn-border);background:var(--ui-island-alt);cursor:pointer;border-radius:8px;flex:none;width:28px;height:15px;margin:0;transition:background .12s,border-color .12s;position:relative}.display-switch:after{content:"";background:var(--ui-text-faint);border-radius:50%;width:9px;height:9px;transition:transform .12s,background .12s;position:absolute;top:2px;left:2px}.display-switch:checked{background:var(--ui-accent-strong);border-color:var(--ui-hover-border)}.display-switch:checked:after{background:#fff;transform:translate(13px)}.display-switch:focus-visible{outline:1px solid var(--ui-accent);outline-offset:2px}.zoom-controls{border:1px solid var(--ui-btn-border);border-radius:var(--ui-radius);background:linear-gradient(var(--ui-btn-top), var(--ui-btn-bottom));z-index:2;align-items:stretch;display:flex;position:absolute;bottom:12px;right:12px;box-shadow:0 2px 8px #00000073}.zoom-btn,.zoom-level{color:var(--ui-text);font-family:var(--font-ui);cursor:pointer;background:0 0;border:none;border-radius:0;justify-content:center;align-items:center;transition:background .12s;display:flex}.zoom-btn{width:28px;height:26px;font-size:16px;line-height:1}.zoom-level{font-variant-numeric:tabular-nums;min-width:48px;color:var(--ui-text-dim);padding:0 6px;font-size:11px}.zoom-controls>*+*{border-left:1px solid var(--ui-btn-border)}.zoom-btn:hover:not(:disabled),.zoom-level:hover{background:var(--ui-hover);color:var(--ui-text)}.zoom-btn:disabled{opacity:.4;cursor:not-allowed}.zoom-btn:focus-visible,.zoom-level:focus-visible{outline:1px solid var(--ui-accent);outline-offset:-2px}.display-toggle-label .display-swatch{vertical-align:0;border-radius:50%;width:8px;height:8px;margin-right:6px;display:inline-block}svg text,.branch-table,.node-voltage-grid{font-variant-numeric:tabular-nums}.panel-toggle{border:none;border-bottom:1px solid var(--ui-border-light);text-align:left;cursor:pointer;border-radius:0;align-items:center;width:calc(100% + 20px)}.panel-toggle:hover{background:var(--ui-hover)}.panel-toggle:focus-visible{outline:1px solid var(--ui-accent);outline-offset:-1px}.panel-chevron{color:var(--ui-text-dim);flex:none;transition:transform .12s;transform:rotate(90deg)}.panel-section.collapsed{padding-bottom:0}.panel-section.collapsed .panel-chevron{transform:rotate(0)}.sidebar-head{z-index:1;background:var(--ui-island-alt);flex:none;position:sticky;top:0}.btn-run{color:#fff;background:linear-gradient(#2f80d0,#1f6fbf);border-color:#3d8fd6;justify-content:center;align-items:center;gap:7px;min-width:132px;display:flex}.btn-run:hover:not(:disabled){background:linear-gradient(#3a8ddc,#2577c8);border-color:#6cb6ff}.btn-run:active:not(:disabled){background:linear-gradient(#1f6fbf,#2577c8)}.btn-run.running,.btn-run.running:hover:not(:disabled){cursor:progress;background:linear-gradient(#36a35a,#2b8a4b);border-color:#4cc274}.btn-run:disabled{background:var(--ui-btn-bottom);border-color:var(--ui-border);color:var(--ui-text-faint);box-shadow:none;cursor:not-allowed}.run-spinner{border:2px solid #ffffff59;border-top-color:#fff;border-radius:50%;width:11px;height:11px;animation:.7s linear infinite run-spin}@keyframes run-spin{to{transform:rotate(360deg)}}.btn-eye{color:var(--ui-text-dim);align-items:center;gap:6px;display:flex}.btn-eye.active,.btn-eye.active:hover:not(:disabled){color:#fff;background:var(--ui-accent-bg);border-color:var(--ui-accent);box-shadow:inset 1px 1px 3px #00000080}.sidebar-tabs{background:var(--ui-island-alt);border-bottom:1px solid var(--ui-border);display:flex}.sidebar-tab{color:var(--ui-text-dim);font-family:var(--font-ui);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;flex:1;justify-content:center;align-items:center;gap:6px;padding:7px 8px;font-size:12px;font-weight:600;display:flex}.sidebar-tab+.sidebar-tab{border-left:1px solid var(--ui-border-light)}.sidebar-tab:hover{color:var(--ui-text);background:var(--ui-hover)}.sidebar-tab.active{color:var(--ui-text);background:var(--ui-island);border-bottom-color:var(--ui-accent)}.sidebar-tab:focus-visible{outline:1px solid var(--ui-accent);outline-offset:-2px}.sidebar-tab-count{background:var(--ui-accent-bg);min-width:16px;color:var(--ui-text);font-variant-numeric:tabular-nums;border-radius:8px;padding:0 5px;font-size:10px;line-height:16px}.branch-tab{padding-top:10px}.branch-tab .branch-scroll{max-height:none}svg text.canvas-label{paint-order:stroke;stroke:var(--bg-canvas);stroke-width:3px;stroke-linejoin:round}.capture-freeze{z-index:1000;cursor:wait;background:#12121273;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.capture-freeze-card{background:var(--ui-island);border:1px solid var(--ui-border);border-radius:var(--radius-md);color:var(--ui-text);font-family:var(--font-ui);align-items:center;gap:12px;padding:14px 22px;font-size:14px;display:flex;box-shadow:0 8px 24px #0006}.capture-spinner{border:2px solid var(--ui-border);border-top-color:var(--ui-accent);border-radius:50%;width:16px;height:16px;animation:.8s linear infinite capture-spin}@keyframes capture-spin{to{transform:rotate(360deg)}}
