:root{--color-parchment: #f3f1ed;--color-pure-white: #ffffff;--color-ink-black: #181011;--color-charcoal: #222222;--color-aubergine-black: #302023;--color-ash: #aaaaaa;--color-dim: #666666;--color-bone: #d8d4d4;--color-danger: #9b3f3f;--color-status-live: #2f7d4a;--color-status-connecting: #a87500;--color-status-disconnected: #9b3f3f;--font-abcfavorit-book: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--page-max-width: 1200px;--radius-md: 4px;--radius-full: 100px;font-family:var(--font-abcfavorit-book);color:var(--color-ink-black);background:var(--color-parchment);font-synthesis:none;font-feature-settings:"ss04" 1,"ss11" 1;text-rendering:optimizeLegibility}*,*:before,*:after{box-sizing:border-box}html{overflow-x:clip;scroll-behavior:smooth}body{position:relative;min-width:320px;min-height:100vh;margin:0;overflow-x:clip;background:var(--color-parchment)}h1,h2,h3,p{margin:0}h1,h2{color:var(--color-ink-black);font-weight:400;letter-spacing:-.035em}h1{font-size:clamp(32px,4vw,48px);line-height:1.1}h2{font-size:28px;line-height:1.2}h3{font-size:20px;font-weight:700;line-height:1.3}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid var(--color-ink-black);outline-offset:3px}.alert{display:flex;width:100%;min-height:48px;align-items:center;padding:12px 16px;font-size:14px}.error-alert{width:100vw;min-height:48px;margin:0 0 24px calc(50% - 50vw);justify-content:center;border:0;border-radius:0;background:var(--color-danger);color:var(--color-pure-white);font-size:13px;padding-right:max(16px,calc((100vw - var(--page-max-width)) / 2));padding-left:max(16px,calc((100vw - var(--page-max-width)) / 2));text-align:center}code{border:1px solid var(--color-bone);border-radius:var(--radius-md);background:var(--color-parchment);color:var(--color-ink-black);padding:2px 5px;font-size:12px}.footnote-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--color-ash)}.footnote-dot-connected,.footnote-dot.is-active{background:var(--color-status-live);animation:signalPulse 1.8s ease-in-out infinite}.footnote-dot-connecting{background:var(--color-status-connecting);animation:signalPulse 1.2s ease-in-out infinite}.footnote-dot-disconnected{background:var(--color-status-disconnected)}@keyframes signalPulse{0%,to{opacity:.45}50%{opacity:1}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}.app-shell{width:min(var(--page-max-width),calc(100% - 64px));margin:0 auto}.dashboard-header{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,.8fr);align-items:center;gap:20px 48px;padding:48px 0 32px}.dashboard-header h1{margin-top:0}.device-switcher{width:min(100%,320px);max-width:320px;margin:0;justify-self:end}.device-switcher label,.chart-axis,.panel-reading span{color:var(--color-dim);font-size:10px;letter-spacing:.1em;line-height:1.4;text-transform:uppercase}.device-switcher label{display:block;margin-bottom:8px}.device-switcher-row{display:flex;align-items:center;gap:8px}.device-select-wrap{position:relative;flex:1;min-width:0}select{width:100%;min-width:0;height:46px;border:1px solid var(--color-ink-black);border-radius:var(--radius-md);outline:none;appearance:none;background:var(--color-parchment);color:var(--color-ink-black);cursor:pointer;padding:11px 42px 11px 13px}select:focus{background:var(--color-pure-white)}select:disabled{color:var(--color-dim);cursor:wait;opacity:.75}.device-select-chevron{position:absolute;top:50%;right:16px;width:8px;height:8px;border-right:1px solid var(--color-ink-black);border-bottom:1px solid var(--color-ink-black);pointer-events:none;transform:translateY(-65%) rotate(45deg)}select:disabled+.device-select-chevron{border-color:var(--color-ash)}.dashboard-status-row{grid-column:1 / -1;display:flex;align-items:center;justify-content:space-between;gap:16px;min-width:0}.dashboard-status{display:flex;flex-wrap:nowrap;align-items:center;gap:12px 18px;min-width:0;color:var(--color-dim);font-size:12px}.dashboard-meter-status{display:inline-flex;align-items:center;gap:7px;color:var(--color-charcoal)}.dashboard-meter-status-connected{color:var(--color-status-live)}.dashboard-meter-status-connecting{color:var(--color-status-connecting)}.dashboard-meter-status-disconnected{color:var(--color-status-disconnected)}.dashboard-updated{flex-shrink:0;color:var(--color-dim);font-size:12px;text-align:right;white-space:nowrap}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}.metric-grid-light{margin-bottom:24px;overflow:hidden;border:1px solid var(--color-bone);border-radius:var(--radius-md);background:var(--color-pure-white)}.metric-readout{min-width:0;border-right:1px solid var(--color-bone);border-bottom:0;background:var(--color-pure-white);padding:24px}.metric-readout:last-child{border-right:0}.metric-readout p{color:var(--color-dim);font-size:12px;line-height:1.4}.metric-number{margin-top:16px;color:var(--color-ink-black);font-size:clamp(24px,3vw,30px);font-weight:400;letter-spacing:-.04em;line-height:1;white-space:nowrap}.metric-number span{color:var(--color-dim);font-size:12px;letter-spacing:0}.dashboard-grid{display:grid;gap:24px;margin-bottom:24px}.dashboard-grid-primary{grid-template-columns:minmax(0,1fr)}.dashboard-grid-primary .phase-panel{order:-1}.dashboard-grid-secondary{grid-template-columns:minmax(280px,.72fr) minmax(0,1.28fr)}.panel{min-width:0;border:1px solid var(--color-bone);border-radius:var(--radius-md);background:var(--color-pure-white);padding:24px}.panel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.panel-heading h2{margin-top:0}.history-panel{grid-column:1 / -1;border:0;border-radius:0;background:transparent;padding:0}@media(max-width:900px){.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.metric-readout:nth-child(2n){border-right:0}.metric-readout:nth-child(-n+2){border-bottom:1px solid var(--color-bone)}.dashboard-grid-secondary{grid-template-columns:1fr}}@media(max-width:700px){.app-shell{width:min(100% - 32px,var(--page-max-width))}.dashboard-header{grid-template-columns:1fr;align-items:start;gap:28px;padding-top:40px}.dashboard-header .device-switcher{width:100%;max-width:none;justify-self:start}.dashboard-grid{gap:16px;margin-bottom:16px}.metric-grid-light{margin-bottom:16px}}@media(max-width:600px){.dashboard-status-row,.dashboard-status{gap:10px}.dashboard-updated{font-size:11px}}@media(max-width:500px){.panel{padding:18px}.history-panel{padding:0}.panel-heading h2{font-size:24px}.metric-readout{padding:20px 18px}}.device-actions{position:relative;flex-shrink:0}.device-actions-trigger{display:grid;width:42px;height:46px;place-items:center;border:1px solid var(--color-ink-black);border-radius:var(--radius-md);background:transparent;color:var(--color-ink-black);font-size:22px;line-height:1}.device-actions-trigger:hover,.device-actions-trigger[aria-expanded=true]{background:var(--color-pure-white)}.device-actions-trigger:disabled{border-color:var(--color-bone);color:var(--color-ash);cursor:not-allowed}.device-actions-menu{position:absolute;z-index:10;top:calc(100% + 8px);right:0;display:grid;width:236px;gap:2px;padding:6px;border:1px solid var(--color-bone);border-radius:var(--radius-md);background:var(--color-pure-white)}.device-actions-menu button{width:100%;border:0;border-radius:var(--radius-md);background:transparent;color:var(--color-ink-black);cursor:pointer;padding:10px;text-align:left;font-size:13px}.device-actions-menu button:hover:not(:disabled){background:var(--color-parchment)}.device-actions-menu button:disabled{color:var(--color-ash);cursor:wait}.device-actions-menu .device-actions-danger{color:var(--color-danger)}.device-actions-error{margin:4px 6px 2px;color:var(--color-danger);font-size:12px;line-height:1.4}.action-dialog-backdrop{position:fixed;z-index:50;inset:0;display:grid;place-items:center;padding:20px;background:#18101147}.action-dialog{width:min(100%,440px);border:1px solid var(--color-ink-black);border-radius:var(--radius-md);background:var(--color-pure-white);padding:24px}.action-dialog h2{margin-top:10px;font-size:24px}.action-dialog p{margin-top:12px;color:var(--color-charcoal);font-size:14px;line-height:1.5}.action-dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:24px}.action-dialog-button{border:1px solid var(--color-ink-black);border-radius:var(--radius-md);padding:9px 16px;font-size:13px}.action-dialog-button-secondary{background:transparent;color:var(--color-ink-black)}.action-dialog-button-danger{border-color:var(--color-danger);background:var(--color-danger);color:var(--color-pure-white)}.action-dialog-button:disabled{cursor:wait;opacity:.6}@media(max-width:500px){.device-actions-menu{right:0;left:auto}.action-dialog{padding:20px}}.chart-panel{border:0;border-radius:0;background:transparent;padding:0}.chart-metric-control{position:relative;display:inline-flex;min-width:0;align-items:center}.chart-metric-select{width:auto;max-width:100%;min-width:0;height:auto;min-height:0;border:0;border-radius:0;outline:none;appearance:none;background:transparent;color:var(--color-ink-black);cursor:pointer;padding:0 24px 0 0;font-size:28px;font-weight:400;letter-spacing:-.035em;line-height:1.2}.chart-metric-select:hover,.chart-metric-select:focus{background:transparent}.chart-metric-select option{color:var(--color-ink-black);background:var(--color-pure-white);font-size:14px;font-weight:400;letter-spacing:normal}.chart-metric-select optgroup{color:var(--color-ink-black);background:var(--color-pure-white);font-size:12px;font-weight:700;letter-spacing:normal}.chart-metric-chevron{position:absolute;top:50%;right:6px;width:8px;height:8px;border-right:1px solid var(--color-ink-black);border-bottom:1px solid var(--color-ink-black);pointer-events:none;transform:translateY(-65%) rotate(45deg)}.records-trigger{display:inline-flex;flex-shrink:0;align-items:center;gap:9px;min-height:36px;border:1px solid var(--color-ink-black);border-radius:var(--radius-md);background:transparent;color:var(--color-ink-black);padding:7px 12px;font-size:12px;line-height:1.2;white-space:nowrap}.records-trigger:hover,.records-trigger[aria-expanded=true]{background:var(--color-pure-white)}.chart-axis{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:32px;padding-bottom:12px}.chart-series-legend{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:14px;margin:12px 0 0;color:var(--color-dim);font-size:11px;letter-spacing:.06em;text-transform:uppercase}.chart-series-legend-item,.chart-tooltip-series-label{display:inline-flex;align-items:center;gap:6px}.chart-series-legend-swatch,.chart-tooltip-series-swatch{display:inline-block;width:18px;height:2px;border-radius:100px}.chart-wrap{position:relative;height:200px;overflow:visible;margin-top:0;border-top:1px solid var(--color-bone);border-bottom:1px solid var(--color-bone)}.sparkline{position:absolute;inset:0;display:block;width:100%;height:100%;color:var(--color-aubergine-black)}.sparkline:focus,.sparkline:focus-visible,.sparkline .recharts-wrapper:focus,.sparkline .recharts-wrapper:focus-visible,.sparkline .recharts-surface:focus,.sparkline .recharts-surface:focus-visible{outline:0}.chart-tooltip{z-index:3;display:grid;min-width:164px;gap:4px;padding:10px 12px;border:1px solid var(--color-ink-black);border-radius:var(--radius-cards);background:var(--color-pure-white);color:var(--color-ink-black);pointer-events:none}.chart-tooltip-label{color:var(--color-dim);font-size:10px;letter-spacing:.1em}.chart-tooltip strong{font-size:16px;font-weight:400;line-height:1.2}.chart-tooltip strong small{color:var(--color-dim);font-size:11px}.chart-tooltip-series{display:grid;gap:5px;margin-top:2px}.chart-tooltip-series-row{display:flex;align-items:baseline;justify-content:space-between;gap:14px;font-size:11px}.chart-tooltip-series-label{color:var(--color-dim);font-size:11px}.chart-tooltip-series-row strong{font-size:13px;white-space:nowrap}.chart-tooltip time{color:var(--color-dim);font-size:11px;line-height:1.3}.chart-empty{position:relative;z-index:1;display:grid;height:100%;place-items:center;color:var(--color-dim);font-size:13px}.chart-empty-message{padding:0 12px;background:var(--color-parchment);line-height:1.4}.chart-time-axis{display:grid;margin-top:8px;color:var(--color-dim);font-size:11px;letter-spacing:.04em}.chart-time-axis span:not(:first-child):not(:last-child){text-align:center}.chart-time-axis span:last-child{text-align:right}@media(max-width:500px){.chart-metric-select{font-size:24px}}.phase-panel{min-width:0;padding:24px 0;color:var(--color-ink-black)}.phase-panel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.phase-panel-heading .phase-factor-reading{text-align:left}.panel-reading{flex-shrink:0;text-align:right}.panel-reading strong{display:block;margin-top:5px;color:var(--color-ink-black);font-size:24px;font-weight:400;letter-spacing:-.04em;white-space:nowrap}.panel-reading small{color:var(--color-dim);font-size:11px;letter-spacing:0}.phase-schematic{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,420px) minmax(0,1fr);column-gap:0;width:100vw;min-height:210px;margin-top:32px;margin-left:calc(50% - 50vw)}.phase-cable-area{position:relative;min-width:0;min-height:210px}.phase-mobile-cable-area{display:none}.phase-cable-map{position:absolute;inset:0;display:block;width:100%;height:100%;overflow:visible}.phase-cable-line{fill:none;stroke-width:3.2;stroke-linecap:round;stroke-linejoin:round}.phase-energy-pulse{opacity:0;pointer-events:none}.phase-cable-map.is-live .phase-energy-pulse{opacity:1}.phase-energy-pulse-r{color:#ef3f3f}.phase-energy-pulse-s{color:#e7b800}.phase-energy-pulse-t{color:var(--color-ink-black)}.phase-energy-halo{fill:currentColor;opacity:.35}.phase-energy-core{fill:var(--color-pure-white);opacity:.95}.phase-cable-line-r{fill:none;stroke:#ef3f3f}.phase-cable-line-s{fill:none;stroke:#e7b800}.phase-cable-line-t{fill:none;stroke:var(--color-ink-black)}.phase-terminal-list{position:relative;z-index:1;display:grid;grid-template-rows:repeat(3,62px);gap:12px;min-height:210px}.phase-terminal{display:grid;grid-template-columns:48px minmax(0,1fr) minmax(0,1fr);align-items:center;gap:14px;min-height:62px;border:1px solid var(--phase-color);border-radius:var(--radius-md);background:var(--color-pure-white);padding:0 16px 0 0}.phase-terminal-r{--phase-color: #ef3f3f}.phase-terminal-s{--phase-color: #e7b800}.phase-terminal-t{--phase-color: var(--color-ink-black)}.phase-terminal-letter{display:inline-grid;width:100%;height:100%;align-self:stretch;place-items:center;border-radius:calc(var(--radius-md) - 1px) 0 0 calc(var(--radius-md) - 1px);background:var(--phase-color);color:var(--color-pure-white);font-size:22px;font-weight:700;letter-spacing:-.02em}.phase-terminal-reading{display:flex;align-items:baseline;gap:6px;min-width:0}.phase-terminal-reading strong{color:var(--color-ink-black);font-size:clamp(24px,3vw,30px);font-weight:400;white-space:nowrap}.phase-terminal-reading span{color:var(--color-dim);font-size:12px}.phase-terminal-reading:nth-child(2){justify-self:center}.phase-terminal-reading:nth-child(3){justify-self:end}@media(prefers-reduced-motion:reduce){.phase-cable-map.is-live .phase-energy-pulse{display:none}}@media(max-width:900px)and (min-width:601px){.phase-schematic{grid-template-columns:minmax(150px,.7fr) minmax(360px,1.6fr) minmax(150px,.7fr);gap:10px}.phase-terminal{grid-template-columns:44px minmax(0,1fr) minmax(0,1fr);gap:12px;padding:0 14px 0 0}}@media(max-width:600px){.phase-panel-heading{gap:12px}.panel-reading strong{font-size:20px}.phase-schematic{display:block;width:100vw;min-height:210px;margin-left:calc(50% - 50vw)}.phase-cable-area{display:none}.phase-mobile-cable-area{position:absolute;top:0;left:0;z-index:0;display:block;width:100%;height:210px}.phase-mobile-cable-area .phase-cable-map{inset:0;width:100%;height:100%}.phase-terminal-list{width:min(420px,calc(100% - 48px));min-height:210px;margin:0 auto;gap:10px;padding:0}.phase-terminal{position:relative;min-height:62px;gap:12px;padding:0 14px 0 0}.phase-terminal-letter,.phase-terminal-reading strong{font-size:24px}}.history-panel .table-frame{margin-top:24px;border:0;border-radius:0;background:transparent;padding:0}.records-drawer-overlay{position:fixed;z-index:100;inset:0;min-height:100dvh;background:#18101147;opacity:1;transition:opacity .45s cubic-bezier(.32,.72,0,1)}.records-drawer-overlay[data-starting-style],.records-drawer-overlay[data-ending-style]{opacity:0}.records-drawer-overlay[data-swiping]{transition-duration:0ms}.records-drawer-viewport{position:fixed;z-index:101;inset:0;pointer-events:none;-webkit-user-select:auto;user-select:auto}.records-drawer-viewport[data-modal=true]{pointer-events:auto}.records-drawer{pointer-events:auto;position:fixed;right:0;bottom:0;left:0;display:flex;z-index:101;width:100%;min-height:0;flex-direction:column;height:95vh;max-height:95vh;border-radius:var(--radius-lg) var(--radius-lg) 0 0;background:var(--color-parchment);outline:none;transform:translate3d(var(--translate-x, 0px),var(--translate-y, 0px),0);transition:transform .45s cubic-bezier(.22,1,.36,1);will-change:transform}.records-drawer[data-swipe-direction=down]{--closed-transform: translate3d(0, calc(100% + 2px) , 0)}.records-drawer[data-starting-style],.records-drawer[data-ending-style]{transform:var(--closed-transform)}.records-drawer[data-swiping]{transition-duration:0ms}.records-drawer-swipe-handle{display:none;width:52px;height:4px;flex-shrink:0;margin:12px auto 0;border-radius:var(--radius-full);background:var(--color-bone);cursor:grab;-webkit-user-select:none;user-select:none}.records-drawer-content{display:flex;min-height:0;flex:1;flex-direction:column;overflow:hidden;overscroll-behavior:contain;-webkit-user-select:text;user-select:text}.records-drawer-inner{display:flex;width:min(var(--page-max-width),calc(100% - 64px));min-height:0;flex:1;flex-direction:column;margin:0 auto}.records-drawer-header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;flex-shrink:0;border-bottom:1px solid var(--color-bone);background:var(--color-parchment);padding:24px}.records-drawer-header h2{margin-top:6px}.records-drawer-close{display:grid;width:36px;height:36px;flex-shrink:0;align-items:center;justify-items:center;place-items:center;border:1px solid transparent;border-radius:var(--radius-md);background:transparent;color:var(--color-ink-black);padding:0}.records-drawer-close svg{display:block;width:16px;height:16px}.records-drawer-close path{fill:none;stroke:currentColor;stroke-linecap:round;stroke-width:1.4}.records-drawer-close:hover{border-color:var(--color-ink-black)}.records-drawer-body{min-height:0;flex:1;overflow-y:auto;overscroll-behavior:contain;padding:24px}.records-drawer-footer{flex-shrink:0;border-top:1px solid var(--color-bone);background:var(--color-parchment);padding:12px 24px 24px}.records-drawer-footer .history-pagination,.history-panel-drawer .table-frame{margin-top:0}.table-scroll{overflow-x:auto}table{width:100%;min-width:700px;border-collapse:collapse}th,td{border-bottom:1px solid var(--color-bone);padding:13px 0;text-align:left;white-space:nowrap}th{color:var(--color-dim);font-size:11px;font-weight:400;letter-spacing:.1em;text-transform:uppercase}td{color:var(--color-charcoal);font-size:14px}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#d8d4d42e}.empty-state{display:grid;justify-items:center;padding:56px 24px;text-align:center}.empty-state h3{color:var(--color-ink-black)}.empty-state p{max-width:520px;margin-top:8px;color:var(--color-dim);font-size:14px;line-height:1.5}.history-pagination{display:flex;align-items:center;justify-content:flex-end;gap:4px;margin-top:16px}.history-pagination button{display:grid;width:32px;height:32px;place-items:center;border:1px solid var(--color-bone);border-radius:var(--radius-md);background:transparent;color:var(--color-ink-black);font-size:13px;line-height:1;transition:background-color .16s ease,color .16s ease,border-color .16s ease}.history-pagination button:hover,.history-pagination button.is-active{border-color:var(--color-ink-black);background:var(--color-ink-black);color:var(--color-pure-white)}.history-pagination button:disabled,.history-pagination button:disabled:hover{border-color:var(--color-bone);background:transparent;color:var(--color-ash);cursor:not-allowed;opacity:.7}.history-pagination-arrow{font-size:18px!important}.history-pagination-ellipsis{display:grid;width:24px;height:32px;place-items:center;color:var(--color-dim);font-size:13px}.value-skeleton{display:inline-block;height:.78em;border-radius:2px;background:var(--color-bone);font-size:inherit;line-height:1;vertical-align:middle;animation:valueSkeletonPulse 1.25s ease-in-out infinite}.metric-number .value-skeleton,.phase-terminal-reading strong .value-skeleton{font-size:inherit}.value-skeleton-metric{width:5.4ch}.value-skeleton-panel{width:4.8ch}.value-skeleton-table{width:8ch}.value-skeleton-timestamp{width:17ch}.value-skeleton-chart{width:13ch}@keyframes valueSkeletonPulse{0%,to{opacity:.45}50%{opacity:1}}@media(max-width:600px){.history-pagination{justify-content:center}}@media(max-width:700px){.records-drawer-swipe-handle{display:block}.records-drawer-close{display:none}}@media(max-width:500px){.records-drawer-header,.records-drawer-body{padding:18px}.records-drawer-footer{padding:12px 18px 18px}.records-drawer-inner{width:100%}}@media(prefers-reduced-motion:reduce){.records-drawer-overlay,.records-drawer{transition:none}}
