:root{--bg: #0a0e17;--panel: #111827;--panel-border: #1e293b;--accent: #f59e0b;--text: #e2e8f0;--text-dim: #8494a7;--grid: rgba(148, 163, 184, .06)}*{margin:0;padding:0;box-sizing:border-box}body{background:var(--bg);color:var(--text);font-family:DM Sans,sans-serif;min-height:100vh}.noise{position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.03;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.app{position:relative;z-index:1;max-width:1540px;margin:0 auto;padding:18px 24px}header{text-align:center;margin-bottom:12px;animation:fadeIn .6s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}header h1{font-family:JetBrains Mono,monospace;font-size:1.3rem;font-weight:600;color:var(--accent);letter-spacing:-.5px}header p{color:var(--text-dim);font-size:.78rem;margin-top:2px}.formula-bar{background:var(--panel);border:1px solid var(--panel-border);border-radius:10px;padding:10px 20px;text-align:center;margin-bottom:12px;font-family:JetBrains Mono,monospace;font-size:.95rem;color:var(--text);line-height:2.2}.formula-bar .frac{display:inline-flex;flex-direction:column;align-items:center;vertical-align:middle}.formula-bar .frac .num{border-bottom:2px solid var(--accent);padding:0 6px 3px}.formula-bar .frac .den{padding:3px 6px 0}.formula-bar .var{color:var(--accent);font-weight:600}.formula-bar .cst{color:#10b981}.formula-bar .info{display:block;font-size:.68rem;color:var(--text-dim);margin-top:2px;line-height:1.5}.layout{display:grid;grid-template-columns:420px 1fr;gap:14px}@media(max-width:1080px){.layout{grid-template-columns:1fr}}.controls-panel{display:flex;flex-direction:column;gap:0}.tab-nav{display:flex;gap:2px;background:var(--panel);border:1px solid var(--panel-border);border-radius:10px 10px 0 0;padding:4px 4px 0}.tab-btn{flex:1;padding:10px 8px;background:none;border:none;font-family:JetBrains Mono,monospace;font-size:.65rem;font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:.3px;cursor:pointer;border-radius:6px 6px 0 0;transition:color .2s,background .2s;white-space:nowrap}.tab-btn:hover{color:var(--text);background:#ffffff08}.tab-btn.active{color:var(--accent);background:var(--bg);border-bottom:2px solid var(--accent)}.tab-pane{background:var(--panel);border:1px solid var(--panel-border);border-top:none;border-radius:0 0 10px 10px;padding:14px 16px;max-height:calc(100vh - 260px);overflow-y:auto}.tab-section{margin-bottom:14px}.tab-section:last-child{margin-bottom:0}.tab-section-title{font-family:JetBrains Mono,monospace;font-size:.68rem;font-weight:600;color:var(--accent);text-transform:uppercase;letter-spacing:.5px;margin-bottom:10px;padding-bottom:6px;border-bottom:1px solid var(--panel-border)}.action-buttons{display:flex;gap:8px;margin-top:8px}.action-buttons .reset-btn,.action-buttons .export-btn,.action-buttons .share-btn{flex:1}.tx-fields{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:6px 8px}.tx-results{margin-top:8px;padding:8px 10px;background:#8b5cf614;border:1px solid rgba(139,92,246,.2);border-radius:6px;font-family:JetBrains Mono,monospace;font-size:.7rem;color:var(--text-dim);display:flex;flex-wrap:wrap;gap:4px 16px}.tx-results .tx-val{color:#c4b5fd;font-weight:600;font-size:.78rem}.tx-results .tx-label{white-space:nowrap}.relay-card{background:var(--panel);border:1px solid var(--panel-border);border-radius:10px;padding:12px 14px;border-left:3px solid var(--accent);transition:opacity .2s}.relay-card.disabled{opacity:.25;pointer-events:none}.relay-card.disabled .toggle-wrap{pointer-events:auto}.remove-relay-btn{background:none;border:none;color:var(--text-dim);font-size:1.1rem;cursor:pointer;padding:0 4px;line-height:1;transition:color .2s;font-family:JetBrains Mono,monospace}.remove-relay-btn:hover{color:#ef4444}.add-relay-btn{display:block;width:100%;margin-bottom:8px;padding:10px;background:#ffffff08;border:1px dashed var(--panel-border);border-radius:10px;color:var(--text-dim);cursor:pointer;font-family:JetBrains Mono,monospace;font-size:.72rem;text-align:center;transition:background .2s,color .2s}.add-relay-btn:hover{background:#ffffff0f;color:var(--text)}.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;gap:6px}.card-header .title{font-family:JetBrains Mono,monospace;font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap}.label-input{flex:1;min-width:0;padding:3px 7px;background:#ffffff0a;border:1px solid var(--panel-border);border-radius:4px;color:var(--text);font-family:JetBrains Mono,monospace;font-size:.7rem;font-weight:500;outline:none;transition:border-color .2s;text-align:center}.label-input:focus{border-color:var(--accent);background:#ffffff12}.toggle-wrap{display:flex;align-items:center;gap:6px;flex-shrink:0}.toggle-wrap>span{font-size:.63rem;color:var(--text-dim);font-family:JetBrains Mono,monospace}.toggle{position:relative;width:34px;height:18px;cursor:pointer;display:inline-block}.toggle input{opacity:0;width:0;height:0}.toggle .sl{position:absolute;inset:0;background:var(--panel-border);border-radius:9px;transition:background .2s}.toggle .sl:before{content:"";position:absolute;width:14px;height:14px;left:2px;top:2px;background:var(--text-dim);border-radius:50%;transition:transform .2s,background .2s}.toggle input:checked+.sl{background:#f59e0b66}.toggle input:checked+.sl:before{transform:translate(16px);background:var(--accent)}.card-fields{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px 8px}.field{display:flex;flex-direction:column;gap:3px}.field label{font-family:JetBrains Mono,monospace;font-size:.65rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.3px;white-space:nowrap}.num-input{width:100%;padding:6px;background:var(--bg);border:1px solid var(--panel-border);border-radius:5px;color:var(--text);font-family:JetBrains Mono,monospace;font-size:.8rem;outline:none;transition:border-color .2s}.num-input:focus{border-color:var(--accent)}.curve-select{width:100%;padding:6px;background:var(--bg);border:1px solid var(--panel-border);border-radius:5px;color:var(--text);font-family:JetBrains Mono,monospace;font-size:.72rem;outline:none;transition:border-color .2s;cursor:pointer}.curve-select:focus{border-color:var(--accent)}.curve-select option,.curve-select optgroup{background:var(--panel);color:var(--text)}.dt-section{margin-top:6px;padding:5px 8px;background:#ffffff05;border-radius:5px}.dt-toggle-label{display:flex;align-items:center;gap:6px;cursor:pointer;font-family:JetBrains Mono,monospace;font-size:.65rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px}.dt-toggle-label input[type=checkbox]{accent-color:var(--accent)}.dt-label-text{-webkit-user-select:none;user-select:none}.dt-fields{display:grid;grid-template-columns:1fr 1fr;gap:6px 8px;margin-top:6px}.calc-row{margin-top:6px;padding:5px 8px;background:#ffffff08;border-radius:5px;font-family:JetBrains Mono,monospace;font-size:.65rem;color:var(--text-dim);display:flex;flex-wrap:wrap;gap:3px 10px;align-items:center}.calc-row .computed{color:var(--accent);font-weight:600;font-size:.73rem}.card-result{margin-top:4px;padding:5px 8px;background:#ffffff05;border-radius:5px;font-family:JetBrains Mono,monospace;font-size:.7rem;color:var(--text-dim);display:flex;justify-content:space-between}.card-result .tv{font-weight:700;color:var(--text);font-size:.8rem}.reset-btn,.export-btn{margin-top:4px;padding:8px 12px;border-radius:8px;cursor:pointer;text-align:center;transition:background .2s;font:inherit;font-family:JetBrains Mono,monospace;font-size:.7rem}.reset-btn{background:#ef44441a;border:1px solid rgba(239,68,68,.25);color:#ef4444}.reset-btn:hover{background:#ef444433}.export-btn{background:#8b5cf61a;border:1px solid rgba(139,92,246,.25);color:#c4b5fd}.export-btn:hover{background:#8b5cf633}.share-btn{background:#06b6d41a;border:1px solid rgba(6,182,212,.25);color:#06b6d4}.share-btn:hover{background:#06b6d433}.share-toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%) translateY(20px);background:var(--accent);color:var(--bg);padding:8px 20px;border-radius:8px;font-family:JetBrains Mono,monospace;font-size:.75rem;font-weight:600;z-index:1001;opacity:0;transition:opacity .3s,transform .3s;pointer-events:none}.share-toast.visible{opacity:1;transform:translate(-50%) translateY(0)}.remarks-card{background:var(--panel);border:1px solid var(--panel-border);border-radius:10px;padding:12px 14px;border-left:3px solid #64748b}.remarks-label{display:block;font-family:JetBrains Mono,monospace;font-size:.7rem;font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}.remarks-input{width:100%;padding:8px 10px;background:var(--bg);border:1px solid var(--panel-border);border-radius:6px;color:var(--text);font-family:DM Sans,sans-serif;font-size:.8rem;outline:none;resize:vertical;min-height:60px;line-height:1.5;transition:border-color .2s}.remarks-input:focus{border-color:var(--accent)}.remarks-input::placeholder{color:var(--text-dim);opacity:.5}.report-fields{display:grid;grid-template-columns:1fr 1fr;gap:4px}.report-fields .label-input{font-size:.68rem;padding:5px 7px}.chart-panel{background:var(--panel);border:1px solid var(--panel-border);border-radius:12px;padding:18px;position:relative;display:flex;flex-direction:column;align-self:start;min-width:0}.chart-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;flex-wrap:wrap;gap:8px}.chart-top h2{font-family:JetBrains Mono,monospace;font-size:.74rem;font-weight:500;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px}.chart-legend{display:flex;gap:10px;flex-wrap:wrap;font-family:JetBrains Mono,monospace;font-size:.6rem}.leg-item{display:flex;align-items:center;gap:5px;color:var(--text-dim)}.leg-dot{width:12px;height:3px;border-radius:2px}.fault-summary{margin-top:4px;margin-bottom:6px;padding:6px 10px;background:#8b5cf60f;border:1px solid rgba(139,92,246,.15);border-radius:6px;font-family:JetBrains Mono,monospace;font-size:.68rem;color:var(--text-dim);display:flex;gap:16px;flex-wrap:wrap}.fault-summary .fv{color:#c4b5fd;font-weight:600}.cti-summary{display:flex;flex-wrap:wrap;gap:6px 14px;font-family:JetBrains Mono,monospace;font-size:.65rem;color:var(--text-dim);margin-bottom:6px}.cti-summary:empty{display:none}.cti-pair{display:flex;align-items:center;gap:4px}.cti-badge{display:inline-block;padding:1px 6px;border-radius:4px;font-weight:600;font-size:.6rem}.cti-good{background:#10b98126;color:#10b981}.cti-warning{background:#f59e0b26;color:#f59e0b}.cti-danger{background:#ef444426;color:#ef4444}.overlay-section{padding:8px 0;border-bottom:1px solid var(--panel-border)}.overlay-section:last-child{border-bottom:none}.overlay-enable{display:flex;align-items:center;gap:8px;font-family:JetBrains Mono,monospace;font-size:.68rem;color:var(--text);cursor:pointer}.overlay-enable input[type=checkbox]{accent-color:var(--accent)}.overlay-fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:6px 8px;margin-top:8px}.overlay-auto-note{font-family:JetBrains Mono,monospace;font-size:.58rem;color:var(--text-dim);font-style:italic;grid-column:1 / -1}.canvas-wrap{position:relative;width:100%;padding-bottom:62.5%;min-width:0;overflow:hidden}@supports (aspect-ratio: 16/10){.canvas-wrap{padding-bottom:0;aspect-ratio:16 / 10}}canvas{display:block;width:100%;height:100%;border-radius:8px;background:var(--bg)}.tooltip{position:absolute;pointer-events:none;background:#111827f2;border:1px solid var(--accent);border-radius:8px;padding:10px 14px;font-family:JetBrains Mono,monospace;font-size:.68rem;color:var(--text);display:none;z-index:10;box-shadow:0 4px 20px #00000080;line-height:1.7;max-width:320px}.results-table{margin-top:12px;max-height:320px;overflow:auto}.results-table table{width:100%;border-collapse:collapse;font-family:JetBrains Mono,monospace;font-size:.63rem}.results-table th{text-align:left;padding:5px 6px;color:var(--text-dim);border-bottom:1px solid var(--panel-border);text-transform:uppercase;letter-spacing:.3px;position:sticky;top:0;background:var(--panel);font-weight:500}.results-table td{padding:4px 6px;border-bottom:1px solid var(--grid)}.results-table::-webkit-scrollbar{width:4px}.results-table::-webkit-scrollbar-track{background:transparent}.results-table::-webkit-scrollbar-thumb{background:var(--panel-border);border-radius:2px}#faultPctSlider{-webkit-appearance:none;appearance:none;width:100%;height:6px;background:var(--panel-border);border-radius:3px;outline:none;cursor:pointer}#faultPctSlider::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;background:#8b5cf6;border-radius:50%;cursor:pointer;box-shadow:0 0 12px #8b5cf680}#faultPctSlider::-moz-range-thumb{width:20px;height:20px;border:none;background:#8b5cf6;border-radius:50%;cursor:pointer;box-shadow:0 0 12px #8b5cf680}#faultPctSlider::-moz-range-track{height:6px;background:var(--panel-border);border-radius:3px;border:none}.num-input:focus-visible,.label-input:focus-visible,.remarks-input:focus-visible,.curve-select:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-color:var(--accent)}.reset-btn:focus-visible,.export-btn:focus-visible,.share-btn:focus-visible,.add-relay-btn:focus-visible,.remove-relay-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.toggle input:focus-visible+.sl{outline:2px solid var(--accent);outline-offset:2px}#faultPctSlider:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media(max-width:540px){.app{padding:12px 10px}.tab-nav{flex-wrap:wrap}.tab-btn{flex:1 1 45%;font-size:.6rem;padding:8px 6px}.tab-pane{max-height:none}.tx-fields,.card-fields{grid-template-columns:1fr 1fr}.formula-bar{font-size:.8rem;overflow-x:auto;padding:8px 12px}.num-input{padding:10px 8px}.label-input{padding:8px 7px}.toggle{width:44px;height:24px}.toggle .sl:before{width:18px;height:18px;left:3px;top:3px}.toggle input:checked+.sl:before{transform:translate(20px)}#faultPctSlider::-webkit-slider-thumb{width:24px;height:24px}#faultPctSlider::-moz-range-thumb{width:24px;height:24px}header h1{font-size:1rem}}@media(max-width:360px){.tx-fields,.card-fields{grid-template-columns:1fr}}@media print{@page{size:A4 landscape;margin:10mm}*{color:#000!important;background:#fff!important;border-color:#ccc!important;box-shadow:none!important;text-shadow:none!important}body{background:#fff!important}.noise{display:none!important}.app{max-width:100%;padding:0}.toggle-wrap,.num-input,.label-input,.curve-select,input[type=range],.reset-btn,.export-btn,.share-btn,.add-relay-btn,.remove-relay-btn,.tooltip,.share-toast,#faultPctSlider,[type=number],[type=text],[type=range]{display:none!important}header h1{color:#000!important;font-size:14pt}header p{color:#555!important;font-size:8pt}.formula-bar{border:1px solid #ccc;padding:6px 12px;font-size:9pt}.formula-bar .var,.formula-bar .cst{color:#000!important}.formula-bar .info{color:#555!important}.layout{display:block!important}.tx-card{border:1px solid #ccc;border-left:3px solid #000;padding:8px 12px;margin-bottom:8px;page-break-inside:avoid}.tx-card .tx-title{color:#000!important;font-size:9pt}.tx-fields{display:none!important}.tx-results{border:1px solid #ccc;font-size:9pt;padding:4px 8px}.tx-results .tx-val{color:#000!important;font-weight:700}.tx-results .tx-label{color:#333!important}#faultPctDisplay{color:#000!important}.relay-card{border:1px solid #ccc;border-left:3px solid #000;padding:6px 10px;margin-bottom:6px;page-break-inside:avoid}.relay-card.disabled{display:none!important}.card-header .title{color:#000!important;font-size:9pt}.card-fields,.dt-section{display:none!important}.calc-row{border:none;font-size:8pt;padding:2px 0}.calc-row .computed{color:#000!important;font-weight:700}.card-result{font-size:9pt;border:none;padding:2px 0}.card-result .tv{color:#000!important;font-size:10pt}.chart-panel{border:1px solid #ccc;padding:8px;page-break-before:auto}.chart-top h2{color:#000!important;font-size:10pt}.chart-legend{font-size:7pt}.leg-item{color:#000!important}.leg-dot{background:#000!important}.fault-summary{border:1px solid #ccc;font-size:8pt}.fault-summary .fv{color:#000!important}.canvas-wrap{aspect-ratio:16 / 9;width:100%}canvas{border:1px solid #ccc}.results-table{max-height:none!important;overflow:visible!important;margin-top:8px;page-break-inside:avoid}.results-table table{font-size:8pt}.results-table th{background:#eee!important;color:#000!important;border:1px solid #ccc;font-size:8pt}.results-table td{color:#000!important;border:1px solid #ccc;font-size:7.5pt}.print-stamp{display:block!important;font-size:8pt;color:#888!important;text-align:right;margin-top:6px}.print-label{display:inline!important;color:#000!important}.print-params{display:block!important;color:#333!important}}.print-stamp{display:none;font-family:JetBrains Mono,monospace;font-size:.6rem;color:var(--text-dim);margin-top:8px;text-align:right}.pwa-install-banner{position:fixed;bottom:0;left:0;right:0;z-index:1000;display:flex;align-items:center;justify-content:center;gap:12px;padding:12px 20px;background:var(--panel);border-top:1px solid var(--accent);font-family:JetBrains Mono,monospace;font-size:.78rem;color:var(--text);transform:translateY(100%);transition:transform .3s ease;box-shadow:0 -4px 20px #0006}.pwa-install-banner.visible{transform:translateY(0)}.pwa-install-text{color:var(--text-dim)}.pwa-install-text strong{color:var(--accent)}.pwa-install-btn{padding:6px 16px;background:var(--accent);color:var(--bg);border:none;border-radius:6px;font-family:JetBrains Mono,monospace;font-size:.72rem;font-weight:600;cursor:pointer;transition:background .2s}.pwa-install-btn:hover{background:#d97706}.pwa-dismiss-btn{background:none;border:none;color:var(--text-dim);font-size:1.2rem;cursor:pointer;padding:2px 6px;line-height:1;transition:color .2s}.pwa-dismiss-btn:hover{color:var(--text)}@media print{.pwa-install-banner{display:none!important}}
