:root{--color-surface: #ffffff;--color-surface-muted: #f8f9fa;--color-surface-raised: #fcfcfc;--color-diagram-surface: #ffffff;--color-diagram-veil: rgba(255, 255, 255, .85);--color-border: #cccccc;--color-border-subtle: #eeeeee;--color-border-strong: #999999;--color-text-primary: #1f2937;--color-text-secondary: #555555;--color-text-tertiary: #888888;--color-text-on-brand: #ffffff;--color-text-on-bright: #1f2937;--color-brand: #1e40af;--color-brand-strong: #1d4ed8;--color-brand-soft: #dbeafe;--color-brand-mid: #3b82f6;--color-success: #28a745;--color-success-strong: #2e7d32;--color-success-soft: #d1fae5;--color-success-text: #065f46;--color-warning: #ffc107;--color-warning-strong: #f0ad4e;--color-warning-soft: #fff3cd;--color-warning-border: #ffeeba;--color-warning-text: #856404;--color-danger: #dc3545;--color-danger-strong: #b91c1c;--color-danger-soft: #f8d7da;--color-danger-text: #c62828;--color-accent: #8e44ad;--color-accent-soft: #f3e8ff;--color-accent-border: #c084fc;--color-accent-text: #6b21a8;--color-chrome: #2c3e50;--color-chrome-soft: #7f8c8d;--color-disabled: #95a5a6;--color-info: #0284c7;--color-info-soft: #e0f2fe;--color-info-border: #7dd3fc;--color-info-text: #075985;--space-0: 0;--space-half: 2px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-7: 32px;--text-xs: 11px;--text-sm: 12px;--text-md: 14px;--text-lg: 16px;--text-xl: 20px;--text-xxl: 24px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--signal-overload: #ff8c00;--signal-contingency: #ffe033;--signal-action-target: #ff4081;--signal-action-target-strong: #ec407a;--signal-action-target-darker: #ad1457;--signal-action-target-soft: #fce4ec;--signal-breaker: #ce93d8;--signal-delta-positive: #ff9800;--signal-delta-negative: #2196f3;--signal-delta-neutral: #999999;--signal-edit-open: #d81b60;--signal-edit-closed: #1976d2;--signal-edit-injection: #00897b;--pin-green: #28a745;--pin-orange: #f0ad4e;--pin-red: #dc3545;--pin-grey: #9ca3af;--pin-green-dimmed: #a3c9ab;--pin-orange-dimmed: #dcd0b8;--pin-red-dimmed: #d4a5ab;--pin-grey-dimmed: #c8cdd2;--pin-green-highlighted: #1e9e3a;--pin-orange-highlighted: #e89e20;--pin-red-highlighted: #c82333;--pin-grey-highlighted: #7b8a96;--pin-glyph-bg: #ffffff;--pin-glyph-text: #1f2937;--pin-stroke-neutral: #6b7280;--pin-gold: #eab308;--pin-gold-dark: #a16207;--pin-cross-fill: #ef4444;--pin-cross-stroke: #b91c1c;--color-surface-dark: #242424}[data-theme=dark]{--color-surface: #1b1f24;--color-surface-muted: #232830;--color-surface-raised: #2a3038;--color-diagram-surface: #0c0f13;--color-diagram-veil: rgba(12, 15, 19, .78);--color-border: #3a4049;--color-border-subtle: #2d333b;--color-border-strong: #555c66;--color-text-primary: #e6e8eb;--color-text-secondary: #b5bac1;--color-text-tertiary: #8b9098;--color-text-on-brand: #ffffff;--color-brand: #3b82f6;--color-brand-strong: #60a5fa;--color-brand-soft: #1e3a8a;--color-brand-mid: #60a5fa;--color-success: #22c55e;--color-success-strong: #16a34a;--color-success-soft: #14532d;--color-success-text: #bbf7d0;--color-warning: #facc15;--color-warning-strong: #eab308;--color-warning-soft: #422006;--color-warning-border: #713f12;--color-warning-text: #fde68a;--color-danger: #ef4444;--color-danger-strong: #dc2626;--color-danger-soft: #4c1d1d;--color-danger-text: #fecaca;--color-accent: #c084fc;--color-accent-soft: #3b1f5c;--color-accent-border: #7e22ce;--color-accent-text: #e9d5ff;--color-chrome: #0f1419;--color-chrome-soft: #4a5159;--color-disabled: #4b5563;--color-info: #38bdf8;--color-info-soft: #0c3445;--color-info-border: #075985;--color-info-text: #bae6fd}:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light;color:var(--color-text-primary);background-color:var(--color-surface);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh;background-color:var(--color-surface);color:var(--color-text-primary)}#root{width:100%;height:100vh}.action-table{width:100%;border-collapse:collapse;font-size:13px}.action-table th,.action-table td{padding:var(--space-2);text-align:left;border-bottom:1px solid var(--color-border-subtle);overflow-wrap:anywhere;word-break:break-word}.action-table th{background:var(--color-surface-muted);font-weight:600}.action-table tr:hover,.action-table tr.selected{background:var(--color-brand-soft)}.metric-badge{display:inline-block;padding:1px 5px;border-radius:3px;font-size:var(--text-xs);font-weight:700}.metric-score{background:var(--color-brand-soft);color:var(--color-brand)}.metric-rho{background:var(--color-warning-soft);color:var(--color-warning-text)}.modal-tab{padding:var(--space-3) var(--space-5);cursor:pointer;border-bottom:3px solid transparent;font-weight:700;color:var(--color-text-tertiary);transition:all .2s}.game-app-host{position:fixed;inset:56px 0 0;overflow:hidden}.game-app-host>div{height:100%!important}.modal-tab.active{border-bottom-color:var(--color-brand);color:var(--color-brand);background:var(--color-surface-muted)}.svg-container{width:100%;height:100%;overflow:hidden;background:var(--color-diagram-surface);contain:layout style paint}[data-theme=dark] .svg-container .nad-edge-infos text{fill:var(--color-text-primary)!important;stroke:var(--color-diagram-surface)!important;paint-order:stroke fill!important}[data-theme=dark] .svg-container foreignObject.nad-text-nodes div,[data-theme=dark] .svg-container .nad-vl-nodes foreignObject div,[data-theme=dark] .svg-container .nad-label-nodes foreignObject div,[data-theme=dark] .svg-container .nad-label-box{color:var(--color-text-primary)!important;background-color:#1b1f24d9!important;border-color:var(--color-border)!important}.svg-container .nad-overview-dim-rect{fill:var(--color-diagram-surface)}[data-theme=dark] [data-testid=sld-overlay] text:not([class*=sld-delta-text]){fill:var(--color-text-primary)!important}.svg-container svg{width:100%;height:100%}.svg-container svg path,.svg-container svg line,.svg-container svg polyline,.svg-container svg rect{vector-effect:non-scaling-stroke}.svg-container.svg-interacting svg *{pointer-events:none!important}.svg-container.svg-interacting .nad-edge-infos,.svg-container.svg-interacting .nad-text-nodes,.svg-container.svg-interacting foreignObject.nad-text-nodes,.svg-container.svg-interacting .nad-vl-nodes foreignObject,.svg-container.svg-interacting .nad-label-nodes foreignObject,.svg-container.svg-interacting .nad-label-nodes,.svg-container.svg-interacting .nad-label-box,.svg-container.svg-interacting .nad-text-edges{display:none!important}[data-zoom-tier=overview] .nad-edge-infos{display:none}[data-zoom-tier=overview] .nad-vl-nodes foreignObject{display:none}[data-zoom-tier=region] .nad-vl-nodes foreignObject{display:none}.svg-container.nad-hide-vl-labels .nad-text-nodes,.svg-container.nad-hide-vl-labels foreignObject.nad-text-nodes,.svg-container.nad-hide-vl-labels .nad-vl-nodes foreignObject,.svg-container.nad-hide-vl-labels .nad-label-nodes foreignObject,.svg-container.nad-hide-vl-labels .nad-label-nodes,.svg-container.nad-hide-vl-labels .nad-label-box,.svg-container.nad-hide-vl-labels .nad-text-edges{display:none!important}.svg-container .nad-vl-nodes,.svg-container .nad-label-box{cursor:pointer}.nad-highlight{stroke:var(--color-danger)!important;stroke-width:4px!important;opacity:1}circle.nad-highlight{fill:var(--color-danger)!important}.nad-overloaded{opacity:1!important}.nad-overloaded path,.nad-overloaded line,.nad-overloaded polyline,.nad-overloaded rect,.nad-overloaded polygon{stroke:var(--signal-overload)!important;stroke-width:120px!important;stroke-opacity:1!important;stroke-dasharray:none!important;fill:none!important;stroke-linecap:round!important;stroke-linejoin:round!important}.nad-overloaded text,.nad-overloaded foreignObject{display:none!important}.nad-disconnected,.nad-disconnected>g,.nad-disconnected path,.nad-disconnected line,.nad-disconnected polyline,.nad-disconnected>g path,.nad-disconnected>g line,.nad-disconnected>g polyline{stroke-dasharray:20 10!important;stroke-opacity:1!important;vector-effect:non-scaling-stroke!important}.nad-action-target,.nad-contingency-highlight{opacity:1!important}.nad-action-target path,.nad-action-target line,.nad-action-target polyline,.nad-action-target rect,.nad-action-target polygon{stroke:var(--signal-action-target)!important;stroke-width:150px!important;stroke-opacity:1!important;stroke-dasharray:none!important;fill:none!important;stroke-linecap:round!important;stroke-linejoin:round!important}.nad-contingency-highlight path,.nad-contingency-highlight line,.nad-contingency-highlight polyline,.nad-contingency-highlight rect,.nad-contingency-highlight polygon{stroke:var(--signal-contingency)!important;stroke-width:150px!important;stroke-opacity:1!important;stroke-dasharray:none!important;fill:none!important;stroke-linecap:round!important;stroke-linejoin:round!important}.nad-overloaded path,.nad-overloaded line,.nad-overloaded polyline,.nad-overloaded rect,.nad-overloaded polygon,.nad-action-target path,.nad-action-target line,.nad-action-target polyline,.nad-action-target rect,.nad-action-target polygon,.nad-contingency-highlight path,.nad-contingency-highlight line,.nad-contingency-highlight polyline,.nad-contingency-highlight rect,.nad-contingency-highlight polygon{stroke-width:var(--nad-halo-w, 24px)!important;vector-effect:non-scaling-stroke!important}.nad-action-target circle,.nad-action-target rect{stroke:var(--signal-action-target)!important;stroke-width:45px!important;stroke-opacity:1!important;fill:var(--signal-action-target)!important;fill-opacity:1!important;vector-effect:non-scaling-stroke!important}.nad-contingency-highlight circle,.nad-contingency-highlight rect{stroke:var(--signal-contingency)!important;stroke-width:45px!important;stroke-opacity:1!important;fill:var(--signal-contingency)!important;fill-opacity:1!important;opacity:1!important;vector-effect:non-scaling-stroke!important}.nad-highlight-clone{opacity:1!important}.nad-action-target-original,.sld-highlight-action-original,.sld-highlight-breaker-original,.sld-highlight-contingency-original,.sld-highlight-overloaded-original{opacity:1!important;stroke-opacity:1!important;fill-opacity:1!important}.nad-action-target text,.nad-action-target foreignObject{display:none!important}.svg-container.svg-interacting .nad-action-target,.svg-container.svg-interacting .nad-contingency-highlight,.svg-container.svg-interacting .nad-overloaded{filter:none!important}.nad-delta-positive path,.nad-delta-positive line,.nad-delta-positive polyline{stroke:var(--signal-delta-positive)!important;stroke-width:3px!important}.nad-delta-negative path,.nad-delta-negative line,.nad-delta-negative polyline{stroke:var(--signal-delta-negative)!important;stroke-width:3px!important}.nad-delta-grey path,.nad-delta-grey line,.nad-delta-grey polyline{stroke:var(--signal-delta-neutral)!important;stroke-opacity:.4!important}.sld-delta-positive path,.sld-delta-positive line,.sld-delta-positive polyline,.sld-delta-positive rect,.sld-delta-positive circle{stroke:var(--signal-overload)!important;stroke-width:2px!important}.sld-preview-stale text{fill:var(--signal-delta-neutral)!important;opacity:.55!important}.sld-preview-stale .sld-feeder-info,.sld-preview-stale [class*=ARROW]{opacity:.4!important}.sld-switch-editable,.sld-injection-editable{cursor:pointer}.sld-feeder-navigable{cursor:pointer;text-decoration:underline;text-decoration-style:dotted}.sld-feeder-navigable:hover{fill:var(--color-brand-strong)!important}.sld-injection-name-btn{fill:var(--color-brand);cursor:pointer}.sld-injection-name-btn:hover{fill:var(--color-brand-strong)}.sld-injection-name-label{fill:var(--color-text-on-brand)!important;font-weight:600;cursor:pointer}.sld-user-toggle-open path,.sld-user-toggle-open line,.sld-user-toggle-open polyline,.sld-user-toggle-open rect,.sld-user-toggle-open circle{stroke:var(--signal-edit-open)!important;stroke-width:2.5px!important;stroke-dasharray:4 2!important}.sld-user-toggle-closed path,.sld-user-toggle-closed line,.sld-user-toggle-closed polyline,.sld-user-toggle-closed rect,.sld-user-toggle-closed circle{stroke:var(--signal-edit-closed)!important;stroke-width:2.5px!important;stroke-dasharray:4 2!important}.sld-user-injection path,.sld-user-injection line,.sld-user-injection polyline,.sld-user-injection rect,.sld-user-injection circle{stroke:var(--signal-edit-injection)!important;stroke-width:2.5px!important;stroke-dasharray:4 2!important}.sld-delta-negative path,.sld-delta-negative line,.sld-delta-negative polyline,.sld-delta-negative rect,.sld-delta-negative circle{stroke:var(--signal-delta-negative)!important;stroke-width:2px!important}.sld-delta-grey path,.sld-delta-grey line,.sld-delta-grey polyline,.sld-delta-grey rect,.sld-delta-grey circle{stroke:var(--signal-delta-neutral)!important;stroke-opacity:.5!important}.sld-delta-text-positive{fill:var(--signal-overload)!important}.sld-delta-text-negative{fill:var(--signal-delta-negative)!important}.sld-delta-text-grey{fill:var(--signal-delta-neutral)!important;fill-opacity:.5!important}.sld-highlight-clone.sld-highlight-contingency{filter:drop-shadow(0 0 4px var(--signal-contingency)) drop-shadow(0 0 8px var(--signal-contingency))}.sld-highlight-clone.sld-highlight-contingency path,.sld-highlight-clone.sld-highlight-contingency line,.sld-highlight-clone.sld-highlight-contingency polyline,.sld-highlight-clone.sld-highlight-contingency rect,.sld-highlight-clone.sld-highlight-contingency circle{stroke:var(--signal-contingency)!important;stroke-width:6px!important;stroke-opacity:1!important;stroke-dasharray:none!important;fill:none!important}.sld-highlight-clone.sld-highlight-action{filter:drop-shadow(0 0 4px var(--signal-action-target)) drop-shadow(0 0 8px var(--signal-action-target))}.sld-highlight-clone.sld-highlight-action path,.sld-highlight-clone.sld-highlight-action line,.sld-highlight-clone.sld-highlight-action polyline,.sld-highlight-clone.sld-highlight-action rect,.sld-highlight-clone.sld-highlight-action circle{stroke:var(--signal-action-target)!important;stroke-width:6px!important;stroke-opacity:1!important;fill:none!important}.sld-highlight-clone.sld-highlight-overloaded{filter:drop-shadow(0 0 4px var(--signal-overload)) drop-shadow(0 0 8px var(--signal-overload))}.sld-highlight-clone.sld-highlight-overloaded path,.sld-highlight-clone.sld-highlight-overloaded line,.sld-highlight-clone.sld-highlight-overloaded polyline,.sld-highlight-clone.sld-highlight-overloaded rect,.sld-highlight-clone.sld-highlight-overloaded circle{stroke:var(--signal-overload)!important;stroke-width:6px!important;stroke-opacity:1!important;stroke-dasharray:none!important;fill:none!important}.sld-highlight-clone.sld-highlight-breaker{filter:drop-shadow(0 0 3px var(--signal-breaker)) drop-shadow(0 0 6px var(--signal-breaker))}.sld-highlight-clone.sld-highlight-breaker path,.sld-highlight-clone.sld-highlight-breaker line,.sld-highlight-clone.sld-highlight-breaker rect,.sld-highlight-clone.sld-highlight-breaker circle{stroke:var(--signal-breaker)!important;stroke-width:6px!important;stroke-opacity:1!important;fill:none!important}.sld-highlight-clone text,.sld-highlight-clone .sld-label,.sld-highlight-clone foreignObject{display:none!important}.voltage-sidebar{position:absolute;top:0;right:0;bottom:0;width:62px;background:var(--color-surface-muted);border-left:1px solid var(--color-border);display:flex;flex-direction:column;align-items:center;z-index:15;padding:var(--space-2) 0;box-sizing:border-box}.voltage-sidebar .vs-label{font-size:.65rem;font-weight:700;color:var(--color-chrome);writing-mode:vertical-rl;text-orientation:mixed;letter-spacing:.5px;margin-bottom:var(--space-1)}.voltage-sidebar .vs-range-label{font-size:.6rem;font-weight:700;color:var(--color-chrome);background:var(--color-brand-soft);border-radius:3px;padding:var(--space-half) var(--space-1);margin-bottom:var(--space-2);text-align:center;line-height:1.2}.voltage-slider-container{position:relative;flex:1;width:28px;min-height:0}.voltage-slider-track{position:absolute;left:12px;top:0;bottom:0;width:4px;background:var(--color-border);border-radius:2px}.voltage-slider-range{position:absolute;left:12px;width:4px;background:var(--color-brand-mid);border-radius:2px}.voltage-slider-container input[type=range]{position:absolute;left:0;width:28px;-webkit-appearance:none;appearance:none;background:transparent;pointer-events:none;margin:0;writing-mode:vertical-lr;direction:rtl}input[data-testid=sidebar-filter-threshold-input]::-webkit-inner-spin-button,input[data-testid=sidebar-filter-threshold-input]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.voltage-slider-container input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;height:18px;width:18px;border-radius:50%;background:var(--color-brand-mid);border:2px solid white;box-shadow:0 1px 3px #0000004d;cursor:pointer;pointer-events:all}.voltage-slider-container input[type=range]::-moz-range-thumb{height:18px;width:18px;border-radius:50%;background:var(--color-brand-mid);border:2px solid white;box-shadow:0 1px 3px #0000004d;cursor:pointer;pointer-events:all}.voltage-slider-ticks{position:absolute;top:0;bottom:0;left:28px;width:24px}.voltage-slider-ticks span{position:absolute;font-size:.58rem;color:var(--color-text-tertiary);white-space:nowrap;transform:translateY(-50%);left:2px}.voltage-sidebar-toggle{position:absolute;top:0;right:0;bottom:0;width:24px;background:var(--color-surface-muted);border:none;border-left:1px solid var(--color-border);cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:15;color:var(--color-text-tertiary);font-size:var(--text-xs);padding:0}.voltage-sidebar-toggle:hover{background:var(--color-surface-raised);color:var(--color-text-primary)}.action-card-rail{opacity:0;pointer-events:none;transition:opacity .12s ease}.action-card:hover .action-card-rail,.action-card:focus-within .action-card-rail,.action-card.is-viewing .action-card-rail{opacity:1;pointer-events:auto}.nad-action-overview-pin{transition:transform .15s ease;transform-box:fill-box;transform-origin:center bottom}.nad-action-overview-pin:hover{filter:drop-shadow(0 2px 4px rgba(0,0,0,.35))}.nad-action-overview-pin:hover>path{stroke-width:2.5}.nad-action-overview-container svg{display:block;shape-rendering:optimizeSpeed;text-rendering:optimizeSpeed}
