:root{--bg:#0e0f12;--panel:#17181c;--panel-2:#1e2026;--ink:#eceef2;--muted:#8b8f99;--line:#2a2d35;--accent:#4d8dff;--accent-soft:#17263f;--wire:#c7ccd6;--pin:#7a8496;--pin-live:#4d8dff;--good:#34d399;--bad:#f87171;--volt:#fbbf24}.app{font-family:Inter,system-ui,sans-serif;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;overscroll-behavior:none;display:flex;flex-direction:column;height:100dvh}.topbar{display:flex;align-items:center;gap:.4rem;padding:max(.6rem,env(safe-area-inset-top)) .6rem .6rem;background:var(--panel);border-bottom:1px solid var(--line);z-index:20}.title{font-size:1rem;font-weight:600;letter-spacing:-.01em;white-space:nowrap}.freqctl{display:flex;align-items:center;gap:.25rem;margin-left:auto;background:var(--panel-2);border:1px solid var(--line);border-radius:10px;padding:.2rem .5rem;height:38px}.freq-lbl{color:var(--accent);font-weight:600;font-style:italic}.freq-lbl,.freqctl input{font-family:JetBrains Mono,monospace}.freqctl input{width:62px;background:transparent;border:none;color:var(--ink);font-size:.9rem;text-align:right;outline:none}.freq-unit{color:var(--muted);font-size:.78rem;font-family:JetBrains Mono,monospace}.topbar-actions{display:flex;gap:.3rem}.ghost-btn{display:inline-grid;place-items:center;min-width:38px;height:38px;padding:0 .5rem;background:var(--panel-2);border:1px solid var(--line);border-radius:10px;color:var(--ink);font-size:1.1rem;font-weight:600;cursor:pointer;text-decoration:none;transition:border-color .15s,background .15s}.ghost-btn:hover{border-color:var(--accent)}.ghost-btn.danger:hover{border-color:var(--bad);color:var(--bad)}.stage{position:relative;flex:1 1;overflow:hidden;touch-action:none}#svg{width:100%;height:100%;display:block}.grid-dot{fill:var(--line)}.hint{position:absolute;top:12px;left:50%;transform:translateX(-50%);max-width:92%;background:var(--panel);border:1px solid var(--line);color:var(--muted);font-size:.8rem;line-height:1.4;padding:.5rem .85rem;border-radius:10px;text-align:center;pointer-events:none;transition:opacity .3s}.hint b{color:var(--ink)}.status{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);background:var(--panel);border:1px solid var(--line);font-family:JetBrains Mono,monospace;font-size:.78rem;padding:.4rem .8rem;border-radius:999px;pointer-events:none;opacity:0;transition:opacity .2s;white-space:nowrap}.status.show{opacity:1}.status.ok{color:var(--good);border-color:color-mix(in srgb,var(--good) 40%,var(--line))}.status.bad{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 40%,var(--line))}.comp-body{fill:var(--panel-2)}.comp-body,.comp-line{stroke:#ffffff;stroke-width:2}.comp-line{fill:none;stroke-linecap:round;stroke-linejoin:round}.comp-fill{fill:#ffffff;stroke:none}.comp-label{font:600 11px JetBrains Mono,monospace}.comp-label,.comp-sub{fill:#ffffff;text-anchor:middle}.comp-sub{font:700 12px JetBrains Mono,monospace}.comp.selected .comp-body,.comp.selected .comp-line{stroke:var(--accent)}.comp.selected .comp-fill,.comp.selected .comp-label,.comp.selected .comp-sub{fill:var(--accent)}.pin{fill:var(--panel);stroke:var(--pin);stroke-width:2;cursor:crosshair}.pin.hot{fill:var(--pin-live);stroke:var(--pin-live)}.pin-minus,.pin-plus{fill:var(--muted);font:700 11px JetBrains Mono,monospace;text-anchor:middle}.wire{stroke:var(--wire);stroke-width:3;fill:none;stroke-linecap:round}.wire-hit{stroke:transparent;stroke-width:16;fill:none;cursor:pointer}.temp-wire{stroke:var(--accent);stroke-width:2.5;stroke-dasharray:6 5;fill:none;pointer-events:none}.measure-line{stroke:var(--volt);stroke-width:2.5;stroke-dasharray:8 4;fill:none;stroke-linecap:round}.temp-measure{stroke:var(--volt);stroke-width:2.5;stroke-dasharray:8 4;fill:none;pointer-events:none}.measure-hit{stroke:transparent;stroke-width:16;fill:none;cursor:pointer}.node-badge rect{fill:var(--accent-soft);stroke:var(--accent);stroke-width:1}.node-badge text{fill:#cfe0ff;font:600 11px JetBrains Mono,monospace;text-anchor:middle}.probe-badge rect{fill:#2a2410;stroke:var(--volt);stroke-width:1}.probe-badge text{fill:var(--volt);font:600 11px JetBrains Mono,monospace;text-anchor:middle}.ctx-btn{cursor:pointer}.ctx-btn circle{fill:var(--panel-2);stroke:var(--line);stroke-width:1.5;transition:stroke .15s}.ctx-btn text{fill:var(--ink);font-size:14px;font-weight:600;text-anchor:middle;dominant-baseline:middle;pointer-events:none}.ctx-btn:hover circle{stroke:var(--accent)}.ctx-btn.danger:hover circle{stroke:var(--bad)}.ctx-btn.danger:hover text{fill:var(--bad)}.rot-ring-hit{fill:none;stroke:transparent;stroke-width:24;cursor:-webkit-grab;cursor:grab;pointer-events:auto}.rot-ring-hit:active{cursor:-webkit-grabbing;cursor:grabbing}.rot-ring{fill:none;stroke:var(--bad);stroke-width:2;stroke-dasharray:6 6;pointer-events:none}.rot-handle{fill:var(--panel);stroke:var(--accent);stroke-width:2;cursor:-webkit-grab;cursor:grab}.rot-handle:active{cursor:-webkit-grabbing;cursor:grabbing;fill:var(--accent)}.inspector{position:fixed;left:0;right:0;bottom:0;background:var(--panel-2);padding:1rem;border-top:1px solid var(--line);box-shadow:0 -4px 20px rgba(0,0,0,.5);z-index:100;transform:translateY(0);transition:transform .2s cubic-bezier(0,0,.2,1)}.inspector.hidden{transform:translateY(110%)}.insp-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.insp-head span{font-weight:700;font-size:1.1rem;color:var(--ink)}.insp-field{display:flex;flex-direction:column;gap:.4rem;margin-bottom:.75rem}.insp-field label{font-size:.85rem;color:var(--muted);font-weight:500}.input-row{display:flex;align-items:center;gap:.5rem}.insp-field input{flex:1 1;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:.5rem;font:14px JetBrains Mono,monospace}.insp-field input:focus{border-color:var(--accent);outline:none}.unit{font-family:JetBrains Mono,monospace;min-width:18px}.insp-hint,.unit{color:var(--muted)}.insp-hint{font-size:.78rem;line-height:1.4;margin:.2rem 0 .75rem}.insp-hint.hidden{display:none}.vars-panel{position:fixed;top:1rem;right:1rem;background:var(--panel-2);border:1px solid var(--line);border-radius:12px;padding:.75rem;box-shadow:0 8px 24px rgba(0,0,0,.4);min-width:150px;z-index:100}.vars-head{font-size:.85rem;font-weight:600;color:var(--muted);margin-bottom:.5rem;text-transform:uppercase;letter-spacing:1px}.var-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.4rem}.var-name{font:600 13px JetBrains Mono,monospace;color:var(--accent);width:30px}.var-input{flex:1 1;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:6px;padding:.3rem .5rem;font:13px JetBrains Mono,monospace;width:60px}.var-input:focus{border-color:var(--accent);outline:none}.palette{display:flex;gap:.5rem;overflow-x:auto;overflow-y:hidden;padding:.6rem .75rem calc(.6rem + env(safe-area-inset-bottom));background:var(--panel);border-top:1px solid var(--line);scrollbar-width:thin;z-index:20}.palette::-webkit-scrollbar{height:6px}.palette::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}.pal-item{flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:.3rem;width:74px;padding:.5rem .3rem;background:var(--panel-2);border:1px solid var(--line);border-radius:12px;cursor:pointer;color:var(--ink);transition:border-color .15s,transform .1s}.pal-item:hover{border-color:var(--accent)}.pal-item:active{transform:scale(.95)}.pal-item svg{width:42px;height:28px}.pal-item .pal-name{font-size:.64rem;color:var(--muted);text-align:center;line-height:1.1}.pal-sym{stroke:#ffffff;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}.pal-sym-fill{fill:#ffffff;stroke:none}.pal-txt{fill:#ffffff;font:700 9px JetBrains Mono,monospace;text-anchor:middle}.hidden{display:none!important}.subbar{display:flex;align-items:center;gap:.4rem;padding:.45rem .6rem;background:var(--panel);border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none;z-index:19}.subbar::-webkit-scrollbar{display:none}.subbar-lbl{font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:1px;flex-shrink:0}.subbtn{flex-shrink:0;background:var(--panel-2);border:1px solid var(--line);color:var(--ink);border-radius:999px;padding:.35rem .85rem;font:600 .82rem Inter,system-ui,sans-serif;cursor:pointer;transition:border-color .15s,background .15s,color .15s}.subbtn.active,.subbtn:hover{border-color:var(--accent)}.subbtn.active{background:var(--accent);color:#fff}.an-eq{background:var(--panel-2);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:8px;padding:.7rem .85rem;margin-bottom:1rem;font:.85rem JetBrains Mono,monospace;color:var(--ink);line-height:1.8}.an-eq b{color:var(--accent);font-weight:700}.an-eq-title{font:600 .72rem Inter,system-ui,sans-serif;text-transform:uppercase;letter-spacing:1px;color:var(--muted);margin-bottom:.5rem}.an-eq-note{color:var(--muted);font-size:.76rem}.an-body h3{font-size:.8rem;text-transform:uppercase;letter-spacing:1px;color:var(--muted);margin-bottom:.6rem;font-weight:600}.an-table3{width:100%}.an-table3 th{text-align:right;padding:.35rem .5rem;color:var(--muted);font:600 .78rem Inter,system-ui,sans-serif;border-bottom:1px solid var(--line)}.an-table3 th:first-child{text-align:left}.an-table3 td{text-align:right}.an-table3 td.an-k{text-align:left}.an-scroll{overflow-x:auto;scrollbar-width:thin}.an-super{min-width:100%}.an-super th{text-align:right;padding:.35rem .6rem;color:var(--muted);font:600 .76rem JetBrains Mono,monospace;border-bottom:1px solid var(--line);white-space:nowrap}.an-super th:first-child{text-align:left}.an-super td{text-align:right;white-space:nowrap;padding:.35rem .6rem}.an-super td.an-k{text-align:left;color:var(--accent)}.an-super td.an-total{color:var(--accent);font-weight:700;border-left:1px solid var(--line)}.analysis-overlay{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:200;display:flex;align-items:flex-end;justify-content:center}.analysis-panel{background:var(--panel);width:100%;max-width:560px;max-height:88dvh;border-radius:16px 16px 0 0;border:1px solid var(--line);border-bottom:none;display:flex;flex-direction:column;box-shadow:0 -8px 40px rgba(0,0,0,.5)}.an-head{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-bottom:1px solid var(--line)}.an-head span{font-weight:700;font-size:1.1rem}.an-body{overflow-y:auto;padding:1rem 1rem calc(1.5rem + env(safe-area-inset-bottom))}.an-sec{margin-bottom:1.5rem}.an-sec h3{font-size:.8rem;text-transform:uppercase;letter-spacing:1px;color:var(--muted);margin-bottom:.6rem;font-weight:600}.an-note{color:var(--muted);font-size:.88rem;line-height:1.5}.an-note b{color:var(--ink)}.an-table{width:100%;border-collapse:collapse}.an-table td{padding:.35rem .5rem;border-bottom:1px solid var(--line);font:.9rem JetBrains Mono,monospace}.an-table .an-k{color:var(--accent);width:60px}.an-table .an-v{text-align:right;color:var(--ink)}.an-thev{display:flex;flex-wrap:wrap;gap:.6rem;align-items:stretch}.an-card{flex:1 1;min-width:90px;display:flex;flex-direction:column;gap:.25rem;background:var(--panel-2);border:1px solid var(--line);border-radius:10px;padding:.7rem .8rem}.an-lbl{font-size:.85rem;color:var(--muted)}.an-big{font:700 1.05rem JetBrains Mono,monospace;color:var(--ink)}.an-formula{width:100%;margin:.5rem 0;color:var(--accent);font:600 .95rem JetBrains Mono,monospace;text-align:center}.an-matrices{display:flex;flex-direction:column;gap:.4rem}.mat-wrap{gap:1.2rem;justify-content:center;flex-wrap:wrap;padding:.4rem 0}.mat-blk,.mat-wrap{display:flex;align-items:center}.mat-blk{gap:.4rem}.mat-name{font:700 1rem JetBrains Mono,monospace;color:var(--accent)}.mat-bracket{border-left:2px solid var(--muted);border-right:2px solid var(--muted);border-radius:4px/12px;padding:.2rem .5rem}.mat-table{border-collapse:collapse}.mat-table td{padding:.2rem .55rem;text-align:right;font:.82rem JetBrains Mono,monospace;color:var(--ink);white-space:nowrap}