:root{color-scheme:light;--page-background: linear-gradient(180deg, #f4f7fb 0%, #e8eef8 100%);--panel-background: rgba(255, 255, 255, .86);--panel-border: rgba(28, 53, 87, .12);--text-primary: #132238;--text-secondary: #43556d;--accent: #0f6d8c;--accent-strong: #0b5670;--shadow: 0 18px 50px rgba(19, 34, 56, .12);--font-display: "Avenir Next", "Segoe UI", sans-serif;--font-body: "Source Sans 3", "Segoe UI", sans-serif}*{box-sizing:border-box}html,body{margin:0;min-height:100%}body{background:var(--page-background);color:var(--text-primary);font-family:var(--font-body)}a{color:var(--accent-strong)}button{font:inherit}#app{min-height:100vh}.page-shell{min-height:100vh;display:grid;place-items:center;padding:2rem}.hero,.module-page{width:min(760px,100%);background:var(--panel-background);border:1px solid var(--panel-border);border-radius:24px;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:clamp(1.5rem,4vw,3rem)}.hero{display:grid;align-content:start;width:min(1120px,100%);min-height:min(840px,calc(100vh - 4rem))}.module-page-wide{width:min(1400px,100%)}.branding{margin-bottom:1.5rem}.brand-logo{display:block;max-width:min(320px,100%);height:auto}.eyebrow{margin:0 0 .75rem;color:var(--accent);font-size:.95rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.hero-title,.module-title,.section-title{font-family:var(--font-display)}.hero-title,.module-title{margin:0;font-size:clamp(2.5rem,7vw,4.5rem);line-height:.95}.hero-description,.module-description{max-width:58ch;color:var(--text-secondary);font-size:1.1rem;line-height:1.6}.language-picker{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;margin:1.5rem 0 2rem}.language-label{color:var(--text-secondary);font-weight:600}.language-button{padding:.55rem 1rem;border:1px solid var(--panel-border);border-radius:999px;background:#fff;color:var(--text-primary);cursor:pointer}.language-button.active{border-color:transparent;background:var(--accent);color:#fff}.section-title{margin:0 0 1rem;font-size:1.35rem}.module-menu{margin-top:.5rem}.module-list{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.9rem;margin:0}.module-link{display:grid;grid-template-rows:auto 1fr;gap:.75rem;align-items:center;min-height:9.2rem;padding:1rem .75rem;border:1px solid rgba(28,53,87,.12);border-radius:18px;background:#ffffffc2;color:var(--text-primary);font-family:var(--font-display);font-size:.98rem;font-weight:800;line-height:1.12;text-align:center;text-decoration:none;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease}.module-link:hover,.module-link:focus-visible{border-color:#0f6d8c42;box-shadow:0 14px 30px #1322381a;transform:translateY(-2px)}.module-icon{width:100%;max-width:6rem;height:auto;justify-self:center;overflow:visible}.module-link[href="#/three-phase"] .module-icon{max-width:6.4rem}.module-icon .stroke,.module-icon .reference,.module-icon .field,.module-icon .arc,.module-icon .wave,.module-icon .guide,.module-icon .three-phase,.module-icon .neutral,.module-icon .three-phase-load,.module-icon .terminal{fill:none;stroke:#132238;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}.module-icon .electrostatic-bg{stroke:none}.module-icon .negative-bg{fill:#2560c733}.module-icon .positive-bg{fill:#d93d3733}.module-icon .accent,.module-icon .positive{stroke:#c9252d}.module-icon .battery-pole{stroke-width:6}.module-icon .negative,.module-icon .wave,.module-icon .phasor{stroke:#0f6d8c}.module-icon .red-wave{stroke:#c9252d;stroke-width:3}.module-icon .charge,.module-icon .node,.module-icon .terminal,.module-icon .three-phase-load{fill:#fff;stroke-width:4}.module-icon .charge.positive{fill:#d93d37}.module-icon .charge.negative{fill:#2560c7}.module-icon .reference,.module-icon .field.faint{stroke:#13223873;stroke-width:1.6}.module-icon .field{stroke:#132238b8;stroke-width:1.8}.module-link[href="#/phasor-diagram"] .module-icon .phasor{stroke-width:5}.module-icon .guide{stroke:#dc2f19;stroke-width:1.4;stroke-dasharray:4 4}.module-icon .three-phase.a{stroke:#ff2530}.module-icon .three-phase.b{stroke:#00a35b}.module-icon .three-phase.c{stroke:#29368f}.module-icon .three-phase-load.a{stroke:#ff2530}.module-icon .three-phase-load.b{stroke:#00a35b}.module-icon .three-phase-load.c{stroke:#29368f}.module-icon .terminal.a{stroke:#ff2530}.module-icon .terminal.b{stroke:#00a35b}.module-icon .terminal.c{stroke:#29368f}.module-icon .neutral{stroke:#13223873;stroke-width:3}.module-icon .neutral-terminal{stroke:#13223873}.module-icon .text,.module-icon .charge-text,.module-icon .phase-text{fill:#fff;font-family:ui-monospace,SFMono-Regular,monospace;font-size:16px;font-weight:900;text-anchor:middle}.module-icon .phase-text{font-size:10px;text-anchor:middle}.module-icon-title{display:block}.module-header-info{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1rem;align-items:start}.module-header-info .module-description{margin:0}.module-menu-button{display:inline-flex;align-items:center;justify-content:center;min-width:4.75rem;min-height:2.4rem;padding:.55rem .95rem;border:1px solid rgba(15,109,140,.22);border-radius:999px;background:#fff;color:var(--accent-strong);font-family:var(--font-display);font-size:.9rem;font-weight:800;letter-spacing:.08em;text-decoration:none;text-transform:uppercase;box-shadow:0 8px 20px #13223814}.module-menu-button:hover,.module-menu-button:focus-visible{border-color:transparent;background:var(--accent);color:#fff}.package-credit{margin:1.75rem 0 0;color:var(--text-secondary);font-size:.92rem;line-height:1.45}.repository-link{margin:.35rem 0 0;color:var(--text-secondary);font-size:.92rem;line-height:1.45}.rlc-page{display:grid;gap:1.25rem}.rlc-header{display:grid;grid-template-columns:minmax(320px,.8fr) minmax(360px,1fr);gap:2rem;align-items:end}.rlc-header .module-title{font-size:clamp(2.4rem,4vw,4rem)}.rlc-header .module-description{margin:0}.rlc-layout{display:grid;grid-template-columns:minmax(280px,330px) minmax(840px,1fr);gap:1.25rem;align-items:start}.rlc-controls,.rlc-stage{border:1px solid rgba(28,53,87,.1);border-radius:20px;background:#ffffffc7;padding:1.1rem}.rlc-controls{display:grid;gap:.8rem}.rlc-panel-title{margin:.4rem 0 0;font-family:var(--font-display);font-size:1.08rem}.rlc-slider{display:grid;gap:.35rem}.rlc-slider-header{display:flex;justify-content:space-between;gap:1rem;color:var(--text-secondary);font-size:.95rem}.rlc-slider-header strong{color:var(--text-primary);font-family:ui-monospace,SFMono-Regular,monospace}.rlc-slider input{width:100%}.rlc-circuit-block{display:grid;gap:.45rem}.rlc-circuit-diagram{width:100%;padding:.45rem;border:1px solid rgba(19,34,56,.14);border-radius:12px;background:#fff;cursor:zoom-in}.rlc-circuit-diagram.expanded{cursor:zoom-out}.rlc-circuit-svg{display:block;width:100%;height:auto}.rlc-circuit-diagram.expanded .rlc-circuit-svg{transform:scale(1.35);transform-origin:center;margin:1.4rem 0}.rlc-circuit-line,.rlc-circuit-capacitor,.rlc-circuit-terminal,.rlc-circuit-voltage-mark,.rlc-circuit-current{fill:none;stroke:#132238;stroke-width:5;stroke-linecap:round}.rlc-circuit-voltage-mark{stroke-width:2.4}.rlc-circuit-current{fill:#132238;stroke-width:3}.rlc-circuit-current.arrowhead{stroke:none}.rlc-circuit-terminal{fill:#fff}.rlc-circuit-resistor{fill:#fff;stroke:#132238;stroke-width:4}.rlc-circuit-label{fill:#132238;font-family:ui-monospace,SFMono-Regular,monospace;font-size:17px;font-weight:800}.rlc-circuit-equation{color:#132238;font-family:ui-monospace,SFMono-Regular,monospace;font-size:1rem;font-weight:800;text-align:center}.rlc-equation-symbol sub{font-size:70%;font-style:italic}.rlc-stage{display:grid;gap:1rem;justify-items:center}.rlc-display{width:100%;display:grid;grid-template-columns:460px minmax(300px,360px);gap:1rem;justify-content:center;align-items:start}.rlc-scope-box{display:grid;gap:.8rem}.rlc-phasor-box{display:grid;gap:.8rem;justify-items:center}.rlc-scope{width:460px;height:460px;border-radius:18px;background:#111827}.rlc-phasor{width:min(100%,360px);height:460px;border-radius:18px;background:#111827}.rlc-time-button{min-width:9.5rem;padding:.65rem 1.05rem;border:2px solid rgba(19,34,56,.18);border-radius:999px;background:#fff;color:#132238;font-family:ui-monospace,SFMono-Regular,monospace;font-size:.95rem;font-weight:800;cursor:pointer}.rlc-scope-screen,.rlc-phasor-screen{fill:#030712;stroke:#243244;stroke-width:2}.rlc-scope-grid,.rlc-phasor-grid{stroke:#94a3b83d;stroke-width:1}.rlc-scope-axis{stroke:#e2e8f080;stroke-width:1.5}.rlc-phasor-axis{stroke:#e2e8f052;stroke-width:1.5}.rlc-wave-source,.rlc-wave-resistor,.rlc-wave-inductor,.rlc-wave-capacitor{fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.rlc-wave-source{stroke:#60a5fa}.rlc-wave-resistor{stroke:#f97316}.rlc-wave-inductor{stroke:#22c55e}.rlc-wave-capacitor{stroke:#a78bfa}.rlc-scope-legend-source,.rlc-scope-legend-resistor,.rlc-scope-legend-inductor,.rlc-scope-legend-capacitor{stroke-width:4;stroke-linecap:round}.rlc-scope-legend-source{stroke:#60a5fa}.rlc-scope-legend-resistor{stroke:#f97316}.rlc-scope-legend-inductor{stroke:#22c55e}.rlc-scope-legend-capacitor{stroke:#a78bfa}.rlc-scope-label{fill:#cbd5e1;font-family:ui-monospace,SFMono-Regular,monospace;font-size:15px;font-weight:700}.rlc-scope-label.source{fill:#60a5fa}.rlc-scope-label.resistor{fill:#f97316}.rlc-scope-label.inductor{fill:#22c55e}.rlc-scope-label.capacitor{fill:#a78bfa}.rlc-phasor-ur,.rlc-phasor-ul,.rlc-phasor-uc,.rlc-phasor-u{stroke-width:4;stroke-linecap:round}.rlc-phasor-ur{stroke:#f97316;fill:#f97316}.rlc-phasor-ul{stroke:#22c55e;fill:#22c55e}.rlc-phasor-uc{stroke:#a78bfa;fill:#a78bfa}.rlc-phasor-u{stroke:#60a5fa;fill:#60a5fa}.rlc-phasor-ur.label,.rlc-phasor-ul.label,.rlc-phasor-uc.label,.rlc-phasor-u.label{stroke:none;font-family:ui-monospace,SFMono-Regular,monospace;font-size:15px;font-weight:800}.rlc-phasor-ur.arrowhead,.rlc-phasor-ul.arrowhead,.rlc-phasor-uc.arrowhead,.rlc-phasor-u.arrowhead{stroke:none}.rlc-scope-knobs{display:flex;justify-content:center;align-items:flex-start;gap:1rem}.rlc-scope-knobs>.rlc-knob-control,.rlc-channel-control{align-self:start}.rlc-scope-knobs>.rlc-knob-control{position:relative;padding-right:1rem}.rlc-channel-control{position:relative;padding-left:1rem}.rlc-scope-knobs>.rlc-knob-control:after,.rlc-channel-control+.rlc-channel-control:before{content:"";position:absolute;top:1.45rem;bottom:.2rem;width:2px;border-radius:999px;background:#13223824}.rlc-scope-knobs>.rlc-knob-control:after{right:-.5rem}.rlc-channel-control+.rlc-channel-control:before{left:-.5rem}.rlc-channel-control{display:grid;grid-template-columns:auto auto;grid-template-rows:1.35rem auto auto;gap:.35rem .55rem;align-items:start;justify-items:center}.rlc-channel-label{grid-column:1 / -1;color:var(--text-secondary);font-family:ui-monospace,SFMono-Regular,monospace;font-size:.9rem;font-weight:800}.rlc-channel-control .rlc-knob-control{grid-template-rows:auto auto;align-self:start}.rlc-channel-toggle{--active-index: 0;position:relative;display:grid;gap:.08rem;width:3.75rem;padding:.22rem .22rem .22rem .48rem;border:2px solid rgba(19,34,56,.18);border-radius:999px;background:#fff;align-self:start}.rlc-channel-toggle:before{content:"";position:absolute;top:.48rem;bottom:.48rem;left:1.05rem;width:.14rem;border-radius:999px;background:#1322382e;transform:translate(-50%)}.rlc-channel-thumb{position:absolute;left:1.05rem;top:calc(.54rem + var(--active-index) * 1.72rem);width:.48rem;height:.48rem;border-radius:50%;background:#132238;transform:translate(-50%);transition:top .12s ease}.rlc-channel-toggle button{position:relative;z-index:1;width:100%;height:1.64rem;border:0;border-radius:999px;background:transparent;color:#5b6a7d;font-family:ui-monospace,SFMono-Regular,monospace;font-size:.8rem;font-weight:800;cursor:pointer;text-align:right}.rlc-channel-toggle button.active{color:#132238}.rlc-knob-control{display:grid;justify-items:center;gap:.35rem;grid-template-rows:1.35rem auto auto}.rlc-knob-label{color:var(--text-secondary);font-size:.9rem;font-weight:700}.rlc-knob{position:relative;width:4.1rem;height:4.1rem;border:2px solid rgba(19,34,56,.18);border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff 0 22%,#d8dee8 65%,#aeb8c7);cursor:pointer}.rlc-knob:after{content:"";position:absolute;left:calc(50% - .08rem);top:.55rem;width:.16rem;height:1.45rem;border-radius:999px;background:#132238;transform:rotate(var(--knob-angle));transform-origin:50% 1.5rem}.rlc-knob-value{font-family:ui-monospace,SFMono-Regular,monospace;font-size:.95rem}.rlc-readout{width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem}.rlc-readout-card{display:flex;align-items:baseline;justify-content:space-between;gap:.35rem;min-width:0;padding:.55rem .65rem;border:1px solid rgba(28,53,87,.12);border-radius:8px;background:#fff}.rlc-readout-card span{color:var(--text-primary);font-family:ui-monospace,SFMono-Regular,monospace;font-size:.95rem;font-weight:800}.rlc-readout-card strong{font-family:ui-monospace,SFMono-Regular,monospace;font-size:.95rem;white-space:nowrap}.electrostatics-page{display:grid;gap:1.2rem}.electrostatics-header{display:grid;grid-template-columns:minmax(16rem,.9fr) minmax(18rem,1fr);gap:1.5rem;align-items:end}.electrostatics-header .module-title{font-size:clamp(2.1rem,4vw,3.6rem)}.electrostatics-header .module-description{margin:0}.electrostatics-layout{display:grid;grid-template-columns:minmax(240px,290px) minmax(900px,1fr);gap:1.25rem;align-items:start}.electrostatics-sidebar{display:grid;gap:1.25rem;align-self:start;min-width:0;width:100%}.module-intro{width:100%;max-width:18rem;padding:1.25rem;background:#ffffffc2;border:1px solid rgba(28,53,87,.1);border-radius:20px}.module-intro .module-title{margin-bottom:.85rem;font-size:clamp(2rem,4.2vw,3.7rem);overflow-wrap:anywhere}.module-intro .module-description{margin:0;max-width:24ch}.electrostatics-controls,.electrostatics-board{background:#ffffffc2;border:1px solid rgba(28,53,87,.1);border-radius:20px;padding:1.25rem}.electrostatics-board{min-width:0;justify-self:stretch;align-self:start}.electrostatics-panel-title{margin:0 0 .85rem;font-family:var(--font-display);font-size:1.2rem}.electrostatics-board .electrostatics-panel-title{font-size:.8rem;letter-spacing:.08em;text-transform:uppercase}.electrostatics-board-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin:0 0 .85rem}.electrostatics-board-header .electrostatics-panel-title{margin:0}.electrostatics-board-toolbar{display:flex;justify-content:flex-end;margin:0}.toggle-control{display:inline-flex;align-items:center;gap:.55rem;color:var(--text-secondary);font-size:.96rem;font-weight:600}.toggle-control input{width:1rem;height:1rem;margin:0}.electrostatics-subtitle{margin:1.25rem 0 .75rem;font-family:var(--font-display);font-size:1rem}.electrostatics-help,.electrostatics-board-hint{margin:0 0 1rem;color:var(--text-secondary);line-height:1.5}.charge-selector{display:grid;gap:.75rem;margin-bottom:1rem}.preset-buttons{display:grid;gap:.65rem;margin-bottom:1rem}.charge-type-button,.reset-button,.preset-button{width:100%;padding:.9rem 1rem;border-radius:16px;border:1px solid rgba(19,34,56,.12);background:#fff;color:var(--text-primary);cursor:pointer;transition:transform .12s ease,border-color .12s ease,background .12s ease}.charge-type-button:hover,.reset-button:hover,.preset-button:hover{transform:translateY(-1px)}.charge-symbol-button{display:grid;grid-template-columns:2.8rem minmax(0,1fr);gap:.8rem;align-items:center;text-align:left;font-weight:750}.charge-button-icon{display:grid;place-items:center;width:2.45rem;height:2.45rem;border:2px solid #203045;border-radius:999px;color:#fff;font-family:var(--font-display);font-size:1rem;line-height:1;box-shadow:0 2px 6px #1322382e}.charge-button-icon.positive{background:#d93d37}.charge-button-icon.negative{background:#2560c7}.charge-button-label{min-width:0}.preset-button{background:#f6f9fd}.preset-button.active{border-color:transparent;background:#132238;color:#fff;box-shadow:inset 0 0 0 1px #ffffff0f}.charge-type-button.active{border-color:transparent;color:#fff}.charge-type-positive.active{background:#d93d37}.charge-type-negative.active{background:#2560c7}.charge-symbol-button.active{color:var(--text-primary)}.charge-symbol-button.charge-type-positive.active{border-color:#d93d378c;background:#fff7f6;box-shadow:inset 0 0 0 2px #d93d372e}.charge-symbol-button.charge-type-negative.active{border-color:#2560c78c;background:#f4f8ff;box-shadow:inset 0 0 0 2px #2560c72e}.materials-metal-button.active{background:#516173;color:#fff}.materials-dielectric-button.active{background:#c98312;color:#fff}.materials-remove-button.active{background:#7f1d1d;color:#fff}.electrostatics-canvas-frame{width:100%;padding:.9rem;background:linear-gradient(180deg,#fff,#f2f6fb);border:1px solid rgba(28,53,87,.12);border-radius:22px;box-shadow:inset 0 1px #fffffff2}.electrostatics-canvas{display:block;width:min(900px,100%);max-width:none;height:auto;aspect-ratio:9 / 7;border-radius:14px;background:#fbfcfe;border:1px solid rgba(28,53,87,.08);cursor:crosshair}.electrostatics-canvas.is-dragging{cursor:grabbing}.materials-canvas{cursor:crosshair}.materials-canvas.is-resizing{cursor:nwse-resize}.circuit-builder-shell{place-items:start center}.circuit-builder-page{display:grid;gap:1.2rem;width:min(1500px,100%)}.circuit-builder-header{display:grid;grid-template-columns:minmax(16rem,.9fr) minmax(18rem,1fr);gap:1.5rem;align-items:end}.circuit-builder-header .module-title{font-size:clamp(2.1rem,4vw,3.6rem)}.circuit-builder-header .module-description{margin:0}.circuit-builder-layout{display:grid;grid-template-columns:minmax(260px,320px) minmax(900px,1fr);gap:1.25rem;align-items:start}.circuit-builder-controls,.circuit-builder-board-panel{background:#ffffffc7;border:1px solid rgba(28,53,87,.1);border-radius:20px;padding:1.25rem}.circuit-builder-controls{display:grid;gap:1rem;align-content:start}.circuit-builder-panel-title{margin:0;font-family:var(--font-display);font-size:1.15rem}.circuit-builder-tool-grid,.circuit-builder-actions{display:grid;gap:.6rem}.circuit-builder-tool-row{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 2rem;gap:.45rem;align-items:center}.circuit-builder-tool,.circuit-builder-reset{width:100%;padding:.78rem .9rem;border:1px solid rgba(19,34,56,.12);border-radius:14px;background:#fff;color:var(--text-primary);cursor:pointer}.circuit-builder-tool{display:grid;grid-template-columns:3.2rem minmax(0,1fr);gap:.6rem;align-items:center;min-height:3.2rem;text-align:left}.circuit-builder-tool-label{min-width:0}.circuit-builder-tool-icon{justify-self:center;width:2.8rem;height:1.6rem;overflow:visible}.circuit-builder-tool-icon .stroke{fill:none;stroke:currentColor;stroke-width:3.2;stroke-linecap:round;stroke-linejoin:round}.circuit-builder-tool-icon .fill{fill:currentColor;stroke:none}.circuit-builder-tool-icon .text{fill:currentColor;font-family:ui-monospace,SFMono-Regular,monospace;font-size:15px;font-weight:800;text-anchor:middle}.circuit-builder-tool-info{width:2rem;height:2rem;border:1px solid rgba(19,34,56,.16);border-radius:999px;background:#fff;color:#132238;font-weight:800;cursor:pointer}.circuit-builder-tool-popup{position:absolute;z-index:4;right:0;top:calc(100% + .25rem);width:min(260px,100%);margin:0;padding:.65rem .75rem;border:1px solid rgba(19,34,56,.18);border-radius:10px;background:#fff;box-shadow:0 12px 28px #13223829;color:var(--text-secondary);font-size:.86rem;line-height:1.35}.circuit-builder-tool.active{border-color:transparent;background:#132238;color:#fff}.circuit-builder-board-panel{position:relative;display:grid;gap:1rem;justify-items:center}.circuit-builder-snap-control{position:absolute;top:.75rem;right:.85rem;z-index:2;display:inline-flex;align-items:center;gap:.45rem;padding:.45rem .65rem;border:1px solid rgba(19,34,56,.12);border-radius:999px;background:#ffffffdb;color:var(--text-secondary);font-size:.86rem;font-weight:700;box-shadow:0 8px 20px #13223814}.circuit-builder-snap-control input{width:1rem;height:1rem;margin:0;accent-color:#0e7893}.circuit-builder-board{display:block;width:min(900px,100%);height:auto;aspect-ratio:9 / 7;border:1px solid rgba(28,53,87,.12);border-radius:16px;background:#fbfcfe;touch-action:none;user-select:none;-webkit-user-select:none}.circuit-builder-grid-line{stroke:#43556d1f;stroke-width:1}.circuit-builder-wire-line{stroke:#1f2937;stroke-width:5;stroke-linecap:round}.circuit-builder-component{cursor:pointer}.circuit-builder-resistor-body{fill:#fff7d6;stroke:#8a6a16;stroke-width:3;cursor:pointer}.circuit-builder-battery-plate{stroke:#b91c1c;stroke-width:5;stroke-linecap:round}.circuit-builder-battery-hit{stroke:transparent;stroke-width:22;stroke-linecap:round;pointer-events:stroke}.circuit-builder-component-label{fill:#132238;font-family:ui-monospace,SFMono-Regular,monospace;font-size:15px;font-weight:700;paint-order:stroke;stroke:#fbfcfee6;stroke-width:3;pointer-events:none}.circuit-builder-current-arrow{stroke:#0f6d8c;stroke-width:5;stroke-linecap:round}.circuit-builder-current-arrowhead{fill:#0f6d8c}.circuit-builder-current-label{fill:#0b5670;font-family:ui-monospace,SFMono-Regular,monospace;font-size:18px;font-weight:800;paint-order:stroke;stroke:#fbfcfe;stroke-width:5;pointer-events:none}.circuit-builder-ammeter-body{fill:#eef9fc;stroke:#0f6d8c;stroke-width:3}.circuit-builder-voltmeter-lead{stroke:#2563eb;stroke-width:2;stroke-linecap:round;stroke-dasharray:5 4}.circuit-builder-voltmeter-lead.positive{stroke:#dc2626}.circuit-builder-voltmeter-lead.negative{stroke:#2563eb}.circuit-builder-voltmeter-body{fill:#eef6ff;stroke:#1d4ed8;stroke-width:3}.circuit-builder-ohmmeter-lead{stroke:#6f4a1f;stroke-width:2;stroke-linecap:round;stroke-dasharray:5 4}.circuit-builder-ohmmeter-body{fill:#f5eadb;stroke:#5b3412;stroke-width:3}.circuit-builder-meter-symbol{fill:#132238;font-family:ui-monospace,SFMono-Regular,monospace;font-size:16px;font-weight:900;pointer-events:none}.circuit-builder-ohmmeter-label{fill:#5b3412;font-family:ui-monospace,SFMono-Regular,monospace;font-size:17px;font-weight:800;paint-order:stroke;stroke:#fbfcfe;stroke-width:5;pointer-events:none}.circuit-builder-potential-probe-dot{fill:#eef6ff;stroke:#1d4ed8;stroke-width:3}.circuit-builder-voltage-label{fill:#1d4ed8;font-family:ui-monospace,SFMono-Regular,monospace;font-size:17px;font-weight:800;paint-order:stroke;stroke:#fbfcfe;stroke-width:5;pointer-events:none}.circuit-builder-node{cursor:pointer}.circuit-builder-node.soldering{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'%3E%3Cg fill='none' stroke='%23000000' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 27 L11 22' stroke-width='2'/%3E%3Cpath d='M10 23 L15 18' stroke-width='6'/%3E%3Cpath d='M16 17 L25 8' stroke-width='6'/%3E%3Cpath d='M14 16 L18 20' stroke-width='3'/%3E%3Cpath d='M16 14 L20 18' stroke-width='3'/%3E%3Cpath d='M24 8 C26 5 29 6 30 9' stroke-width='2.4'/%3E%3Cpath d='M6 12 C4 15 8 17 6 20' stroke-width='2.4'/%3E%3Cpath d='M10 10 C8 13 12 15 10 18' stroke-width='2.4'/%3E%3C/g%3E%3C/svg%3E") 6 27,pointer}.circuit-builder-node-hit{fill:transparent}.circuit-builder-node-dot{fill:#fff;stroke:#132238;stroke-width:3}.circuit-builder-node.connected .circuit-builder-node-dot{fill:#132238;stroke:none}.circuit-builder-node.grounded .circuit-builder-node-dot{fill:#132238}.circuit-builder-ground-symbol{fill:none;stroke:#132238;stroke-width:3;stroke-linecap:round}.circuit-builder-results{width:100%;min-height:5rem;padding:.8rem;border:1px solid rgba(28,53,87,.08);border-radius:16px;background:#f5f8fc;color:var(--text-secondary)}.three-phase-shell{place-items:start center;padding:1rem}.phasor-shell{place-items:start center}.phasor-page{display:grid;gap:1.2rem;width:min(1380px,100%)}.phasor-header{display:grid;grid-template-columns:minmax(18rem,.8fr) minmax(20rem,1fr);gap:1.5rem;align-items:end}.phasor-header .module-title{font-size:clamp(2.1rem,4vw,3.6rem)}.phasor-header .module-description{margin:0}.phasor-layout{display:grid;grid-template-columns:minmax(260px,320px) minmax(0,1fr);gap:1.25rem;align-items:start}.phasor-controls,.phasor-stage{background:#ffffffc7;border:1px solid rgba(28,53,87,.1);border-radius:20px;padding:1.25rem}.phasor-controls{display:grid;gap:1rem;align-content:start}.phasor-panel-title{margin:0;font-family:var(--font-display);font-size:1.15rem}.phasor-slider-row{display:grid;gap:.45rem}.phasor-slider-top{display:flex;justify-content:space-between;gap:1rem;color:var(--text-secondary)}.phasor-slider-top strong{color:var(--text-primary);font-family:ui-monospace,SFMono-Regular,monospace}.phasor-slider-quantity{color:var(--text-primary);font-family:Georgia,Times New Roman,serif;font-style:italic;font-weight:700}.phasor-slider-row input{width:100%;accent-color:#0f6d8c}.phasor-play-button{width:100%;padding:.78rem .9rem;border:1px solid transparent;border-radius:14px;background:#132238;color:#fff;cursor:pointer}.phasor-formula{display:grid;gap:.45rem;padding:.85rem;border:1px solid rgba(28,53,87,.1);border-radius:14px;background:#f5f8fc;color:var(--text-secondary)}.phasor-formula p{margin:0;color:var(--text-primary);font-family:Georgia,Times New Roman,serif;font-size:1.4rem;font-style:italic;font-weight:700}.phasor-upright{font-style:normal}.phasor-formula span{line-height:1.35}.phasor-stage{display:grid}.phasor-diagram{display:block;width:100%;height:auto;border:1px solid rgba(28,53,87,.12);border-radius:16px;background:#fff}.phasor-grid-line{stroke:#5b67d81f;stroke-width:1}.phasor-axis{stroke:#1118279e;stroke-width:2.2;stroke-linecap:round}.phasor-axis.arrowhead{fill:#1118279e;stroke:none}.phasor-axis-label,.phasor-symbol,.phasor-dimension-label,.phasor-tick-label{fill:#111827;font-family:Georgia,Times New Roman,serif;font-size:25px;font-style:italic;font-weight:700}.phasor-symbol.small{font-size:18px}.phasor-instant-label{fill:#27348b}.phasor-axis-label .unit{font-family:Georgia,Times New Roman,serif;font-style:normal;font-weight:700}.phasor-tick{stroke:#1118279e;stroke-width:2;stroke-linecap:round}.phasor-tick-label{font-family:ui-monospace,SFMono-Regular,monospace;font-size:15px;font-style:normal;font-weight:700}.phasor-y-tick-label{text-anchor:end}.phasor-x-tick-label{text-anchor:middle}.phasor-reference-circle{fill:none;stroke:#8b9098;stroke-width:2.5}.phasor-vector{stroke:#050505;stroke-width:5;stroke-linecap:round}.phasor-phase-line{stroke:#050505;stroke-width:2.8;stroke-linecap:round}.phasor-vector.arrowhead{fill:#050505;stroke:none}.phasor-waveform{fill:none;stroke:#27348b;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}.phasor-guide-line,.phasor-time-line,.phasor-projection-line,.phasor-rms-line{fill:none;stroke:#dc2f19;stroke-width:2.2;stroke-dasharray:6 6}.phasor-time-line{stroke:#111827;stroke-dasharray:none;opacity:.8}.phasor-projection-line{stroke:#11182785}.phasor-wave-point{fill:#27348b;stroke:#fff;stroke-width:2}.phasor-instant-voltage{stroke:#27348b;stroke-width:7;stroke-linecap:round}.phasor-rms-label{fill:#dc2f19;font-family:Georgia,Times New Roman,serif;font-size:17px;font-style:italic;font-weight:700;paint-order:stroke;stroke:#fff;stroke-width:4;text-anchor:middle}.phasor-rms-label .value{font-family:Georgia,Times New Roman,serif;font-style:normal;font-weight:700}.phasor-phase-arc,.phasor-omega-arc{fill:none;stroke:#050505;stroke-width:3.5;stroke-linecap:round}.phasor-omega-arc{stroke-width:3}.phasor-dimension{stroke:#111827;stroke-width:2;marker:none}.phasor-dimension-label{font-size:18px}.phasor-dimension-label .value{font-style:normal}.three-phase-page{--three-phase-bg: #080a0d;--three-phase-panel: #10151b;--three-phase-panel-strong: #151b23;--three-phase-border: rgba(210, 224, 240, .16);--three-phase-text: #eef5fb;--three-phase-muted: #a9b8c8;--three-phase-grid: rgba(210, 224, 240, .22);display:grid;width:min(1600px,100%);min-height:calc(100vh - 2rem);gap:0;background:var(--three-phase-bg);border-color:#ffffff14;box-shadow:0 20px 60px #00000057;color:var(--three-phase-text);padding:clamp(1rem,2vw,1.5rem)}.three-phase-header .module-title{margin:.5rem 0 .35rem;font-size:clamp(1.7rem,2.6vw,3rem);line-height:1}.three-phase-header .module-description{margin:0;color:var(--three-phase-muted);font-size:.96rem;line-height:1.4}.three-phase-layout{display:grid;grid-template-rows:auto minmax(0,1fr);gap:1rem;height:100%;min-height:0}.three-phase-header{display:grid;grid-template-columns:minmax(280px,1fr) minmax(420px,.95fr);gap:1rem;align-items:end}.three-phase-page .module-menu-button{border-color:#8fd6ff40;background:#8fd6ff14;color:#8fd6ff;box-shadow:none}.three-phase-page .module-menu-button:hover,.three-phase-page .module-menu-button:focus-visible{border-color:#8fd6ff73;background:#8fd6ff2e;color:#fff}.three-phase-main-layout{display:grid;grid-template-columns:minmax(300px,.38fr) minmax(0,1fr);gap:1rem;min-height:0}.three-phase-left-column,.three-phase-right-column{display:grid;gap:1rem;min-width:0;min-height:0}.three-phase-left-column{min-height:0}.three-phase-visualization{grid-column:2;display:grid;grid-template-rows:auto auto;align-content:start;gap:.85rem;min-height:0}.three-phase-panel{background:var(--three-phase-panel);border:1px solid var(--three-phase-border);border-radius:20px;padding:1.25rem;min-width:0;box-shadow:inset 0 1px #ffffff0a}.three-phase-panel-title{margin:0 0 .75rem;font-family:var(--font-display);font-size:1rem}.three-phase-sliders{display:grid;align-content:start;gap:.9rem;min-height:0}.three-phase-slider-group{display:grid;gap:.45rem;margin-bottom:1rem}.three-phase-slider-row{display:grid;grid-template-columns:minmax(5.5rem,7.4rem) minmax(7rem,1fr) 5rem;align-items:center;gap:.55rem}.three-phase-load-label{min-width:0;color:var(--three-phase-muted);font-weight:700;overflow-wrap:anywhere}.three-phase-slider-row input{accent-color:currentColor}.three-phase-slider-row input{width:100%}.three-phase-load-value{color:var(--three-phase-text);font-family:ui-monospace,SFMono-Regular,monospace;font-size:.88rem;text-align:right;white-space:nowrap}.three-phase-reset-button,.three-phase-run-button{border:1px solid rgba(210,224,240,.18);border-radius:14px;background:#171e27;color:var(--three-phase-text);cursor:pointer;transition:transform .12s ease,border-color .12s ease,background .12s ease}.three-phase-reset-button{width:100%;padding:.85rem 1rem}.three-phase-reset-button:hover,.three-phase-run-button:hover{transform:translateY(-1px);border-color:#8fd6ff80;background:#1e2834}.three-phase-current-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.45rem;padding:.75rem;background:#0b0f14;border:1px solid rgba(210,224,240,.12);border-radius:16px}.three-phase-current-chip{display:grid;grid-template-columns:auto minmax(4.5rem,1fr) auto;align-items:center;gap:.55rem;min-width:0;padding:.45rem .55rem;border:1px solid rgba(210,224,240,.12);border-radius:10px;background:#151b23;color:var(--three-phase-muted);font-family:ui-monospace,SFMono-Regular,monospace;font-size:.84rem}.three-phase-current-chip .name,.three-phase-current-chip strong{color:var(--three-phase-text);font-weight:700}.three-phase-current-chip .amp,.three-phase-current-chip .angle{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.three-phase-circuit{position:relative;margin:0;width:100%;aspect-ratio:var(--image-width) / var(--image-height);overflow:hidden;border:1px solid var(--three-phase-border);border-radius:16px;background:#050608}.three-phase-circuit-thumbnail{width:100%;min-width:0;cursor:zoom-in}.three-phase-circuit-thumbnail:focus-visible{outline:3px solid rgba(143,214,255,.76);outline-offset:4px}.three-phase-circuit-open{position:absolute;right:.65rem;bottom:.65rem;border:1px solid rgba(210,224,240,.22);border-radius:999px;background:#080a0dd1;color:var(--three-phase-text);cursor:zoom-in;font-size:.75rem;padding:.35rem .65rem}.three-phase-circuit-full{width:min(92vw,1400px);max-height:82vh}.three-phase-circuit-image{display:block;width:100%;height:100%;object-fit:contain}.three-phase-circuit-modal{width:min-content;max-width:calc(100vw - 2rem);max-height:calc(100vh - 2rem);padding:0;border:0;background:transparent}.three-phase-circuit-modal::backdrop{background:#000000c2}.three-phase-circuit-modal-content{position:relative;padding:1rem;border:1px solid var(--three-phase-border);border-radius:20px;background:var(--three-phase-bg);box-shadow:0 24px 70px #0000008c}.three-phase-circuit-close{position:absolute;top:1.65rem;right:1.65rem;z-index:3;border:1px solid rgba(210,224,240,.22);border-radius:999px;background:#080a0de0;color:var(--three-phase-text);cursor:pointer;padding:.45rem .75rem}.three-phase-load-hotspot{position:absolute;left:var(--load-left);top:var(--load-top);width:var(--load-width);height:var(--load-height);transform:translate(-50%,-50%);border:0;border-radius:8px;background:transparent;cursor:help}.three-phase-load-hotspot:after{content:"";position:absolute;inset:0;border:1px solid transparent;border-radius:inherit;transition:border-color .12s ease,background .12s ease}.three-phase-load-hotspot:hover:after,.three-phase-load-hotspot:focus-visible:after{border-color:color-mix(in srgb,var(--load-color) 72%,white 28%);background:color-mix(in srgb,var(--load-color) 13%,transparent)}.three-phase-floating-tooltip{position:fixed;z-index:1000;display:grid;gap:.18rem;min-width:8rem;padding:.48rem .58rem;border:1px solid color-mix(in srgb,var(--load-color) 56%,white 44%);border-radius:10px;background:#0c1016fa;box-shadow:0 10px 24px #00000061;color:var(--three-phase-muted);font-family:ui-monospace,SFMono-Regular,monospace;font-size:.76rem;line-height:1.25;opacity:0;pointer-events:none;transform:translate(-50%) translateY(calc(-100% - .2rem));transition:opacity .12s ease,transform .12s ease;white-space:nowrap}.three-phase-floating-tooltip-title{color:var(--tooltip-color);font-weight:700}.three-phase-floating-tooltip.visible{opacity:1;transform:translate(-50%) translateY(calc(-100% - .45rem))}.three-phase-viz-stage{display:grid;gap:.55rem;height:auto}.three-phase-viz-svg{display:block;width:100%;height:auto;min-height:0;aspect-ratio:2.1 / 1;border:1px solid var(--three-phase-border);border-radius:16px;background:#050608}.three-phase-run-button{position:static;justify-self:center;min-width:7.5rem;min-height:2.75rem;padding:.62rem 1.1rem;background:#121820f0;z-index:5}.three-phase-run-button:hover{transform:translateY(-1px)}.three-phase-phasor-grid{fill:none;stroke:var(--three-phase-grid);stroke-width:1}.three-phase-axis{stroke:#d2e0f05c;stroke-width:1}.three-phase-wave-grid{stroke:#d2e0f029;stroke-dasharray:4 4;stroke-width:1}.three-phase-phasor-dashed{stroke-dasharray:4 3;stroke-width:1;opacity:.68}.three-phase-viz-label,.three-phase-scale-label{font-family:ui-monospace,SFMono-Regular,monospace}.three-phase-viz-label{font-size:12px}.three-phase-scale-label{fill:#dce8f4d1;font-size:10px}@media(max-width:640px){.page-shell{padding:1rem}.hero,.module-page{border-radius:18px}.hero{min-height:0}.module-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:641px)and (max-width:960px){.module-list{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:960px){.electrostatics-header,.electrostatics-layout{grid-template-columns:1fr}.module-intro{max-width:none}.module-intro .module-description{max-width:58ch}.electrostatics-canvas-frame{width:100%}.electrostatics-canvas{max-width:none}.three-phase-header,.three-phase-main-layout{grid-template-columns:1fr}.three-phase-left-column,.three-phase-visualization{grid-column:auto}.three-phase-circuit{max-width:100%}}@media(max-width:1280px){.circuit-builder-header,.circuit-builder-layout,.phasor-header,.phasor-layout{grid-template-columns:1fr}}@media(max-width:720px){.three-phase-slider-row{grid-template-columns:1fr;align-items:stretch}.three-phase-load-value{text-align:left}.three-phase-current-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.three-phase-viz-svg{height:auto;aspect-ratio:1.25 / 1}.three-phase-run-button{top:.55rem;min-width:6.5rem;padding:.4rem .58rem;font-size:.82rem}.three-phase-tooltip{min-width:7rem;font-size:.68rem}}
