:root{--bg:#f6f3ee;--surface:#fff;--surface-2:#faf8f5;--ink:#1f1c19;--muted:#6f665d;--line:#e6dfd4;--power:#c0602a;--power-soft:#f8e6da;--signal:#1d7a73;--signal-soft:#dcefec;--good:#23855a;--good-soft:#def2e7;--bad:#c03d3d;--bad-soft:#f9e1e1;--warn:#b0730f;--warn-soft:#f8ecd4;--pv:#c9930c;--soc:#3f74c9;--soc-soft:#3f74c91f;--load:#5a55d0;--load-soft:#e8e7fa;--grid-in:#d98a57;--grid-out:#6aa88a;--pv-soft:#f8efd6;--dg:#a8457e;--dg-soft:#f6e3ee;--solar-use:#2f9a62;--solar-export:#8fcca8;--hover:#1f1c190a;--hero-a:#1d7a73;--hero-b:#0f4d55;--on-signal:#fff;--radius:12px;--radius-lg:16px;--shadow-sm:0 1px 2px #1f1c190a, 0 1px 3px #1f1c190d;--shadow-md:0 6px 18px -6px #1f1c1924, 0 2px 4px #1f1c190a;--shadow-lg:0 24px 48px -12px #1f1c1940}@media (prefers-color-scheme:dark){:root{--bg:#0e0d0b;--surface:#171512;--surface-2:#1d1a16;--ink:#f1ebe2;--muted:#a59a8b;--line:#2e2a24;--power:#eb9a62;--power-soft:#eb9a6224;--signal:#4fc7bb;--signal-soft:#4fc7bb21;--good:#5fd394;--good-soft:#5fd39421;--bad:#f08585;--bad-soft:#f0858524;--warn:#e9b65a;--warn-soft:#e9b65a24;--pv:#ecc455;--soc:#86aef0;--soc-soft:#86aef024;--load:#a19cf5;--load-soft:#a19cf524;--grid-in:#e8a87e;--grid-out:#8fcbae;--pv-soft:#ecc45524;--dg:#e58fc0;--dg-soft:#e58fc024;--solar-use:#5fd394;--solar-export:#46a874;--hover:#f1ebe20d;--hero-a:#1f8a80;--hero-b:#0d3f47;--on-signal:#06302b;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 8px 22px -8px #0009, 0 2px 4px #00000040;--shadow-lg:0 28px 56px -12px #000000b3}}*{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{background:var(--bg);color:var(--ink);margin:0;font-family:IBM Plex Sans,ui-sans-serif,system-ui,sans-serif;font-size:15px;line-height:1.45}::selection{background:var(--signal-soft)}:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.app-header{border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--surface) 85%, transparent);-webkit-backdrop-filter:saturate(160%)blur(10px);backdrop-filter:saturate(160%)blur(10px);z-index:40;flex-wrap:wrap;align-items:center;gap:18px;min-height:57px;padding:10px 22px;display:flex;position:sticky;top:0}.app-header-brand{color:var(--ink);align-items:center;gap:10px;text-decoration:none;display:inline-flex}.brand-mark{color:#fff;background:linear-gradient(145deg, var(--hero-a), var(--hero-b));width:30px;height:30px;box-shadow:var(--shadow-sm);border-radius:9px;place-items:center;display:grid}.brand-mark-lg{background:#ffffff29;border-radius:11px;width:38px;height:38px}.brand-text{letter-spacing:-.01em;font-size:1rem;font-weight:700}.brand-text span{color:var(--muted);font-weight:450}.app-header-tabs{gap:2px;margin-left:12px;display:flex}.app-header-tab{color:var(--muted);border-radius:9px;align-items:center;gap:7px;padding:7px 12px;font-size:.86rem;font-weight:500;text-decoration:none;transition:background .15s,color .15s;display:inline-flex}.app-header-tab:hover{color:var(--ink);background:var(--hover)}.app-header-tab.active{color:var(--ink);background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--line), var(--shadow-sm);font-weight:600}.app-header-tab.active svg{color:var(--signal)}.app-header-nav{align-items:center;gap:14px;margin-left:auto;font-size:.86rem;display:flex}.app-header-clock{background:var(--surface-2);border:1px solid var(--line);color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:8px;align-items:baseline;gap:6px;padding:5px 10px;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.76rem;display:inline-flex}.clock-time{color:var(--ink);font-weight:600}.clock-tz{letter-spacing:.06em;font-size:.66rem}.app-header-user{align-items:center;gap:9px;display:flex}.app-header-user-text{flex-direction:column;line-height:1.15;display:flex}.app-header-user-text strong{font-size:.84rem;font-weight:600}.app-header-user-text span{color:var(--muted);text-transform:capitalize;font-size:.7rem}.avatar{letter-spacing:.02em;width:32px;height:32px;color:var(--signal);background:var(--signal-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--signal) 25%, transparent);border-radius:50%;flex-shrink:0;place-items:center;font-size:.72rem;font-weight:700;display:grid}.avatar-sm{width:26px;height:26px;font-size:.64rem}@media (max-width:900px){.app-header-clock,.app-header-user-text{display:none}.app-header-tabs{margin-left:0}}.page{width:100%;max-width:1720px;margin:0 auto;padding:28px clamp(16px,3vw,40px) 64px}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:22px;display:flex}.page-header h1{letter-spacing:-.02em;margin:0;font-size:1.55rem;font-weight:650}.page-header p{color:var(--muted);margin:3px 0 0;font-size:.9rem}.page-title{align-items:center;gap:14px;display:flex}.page-title-icon{width:44px;height:44px;color:var(--signal);background:var(--signal-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--signal) 20%, transparent);border-radius:13px;flex-shrink:0;place-items:center;display:grid}.header-right{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.station-back{margin-bottom:14px;display:inline-flex}.section-heading{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin:30px 0 14px;font-size:.74rem;font-weight:650}.card-head{align-items:center;gap:12px;margin-bottom:14px;display:flex}.card-head .card-title{margin:0}.card-head .download-hint{margin:2px 0 0}.kpi-icon-inline{border-radius:10px;flex-shrink:0;place-items:center;width:36px;height:36px;display:grid}.empty-state{text-align:center;flex-direction:column;align-items:center;gap:6px;padding:48px 20px;display:flex}.empty-state h2{margin:10px 0 0;font-size:1.05rem}.empty-state p{color:var(--muted);margin:0;font-size:.9rem}.search-field{border:1px solid var(--line);background:var(--surface);height:38px;color:var(--muted);box-shadow:var(--shadow-sm);border-radius:10px;align-items:center;gap:8px;width:260px;max-width:100%;padding:0 12px;transition:border-color .15s,box-shadow .15s;display:inline-flex}.search-field:focus-within{border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-soft)}.search-field input{color:var(--ink);font:inherit;background:0 0;border:none;outline:none;width:100%;font-size:.86rem}.freshness-badge{color:var(--muted);background:var(--hover);border-radius:999px;align-items:center;gap:6px;padding:5px 12px;font-size:.76rem;font-weight:600;display:inline-flex}.freshness-badge:before{content:"";background:currentColor;border-radius:50%;width:7px;height:7px}.freshness-badge.freshness-live{color:var(--good);background:var(--good-soft)}.freshness-badge.freshness-live:before{animation:2s ease-out infinite live-pulse}.freshness-badge.freshness-stale{color:var(--bad);background:var(--bad-soft)}.status{color:var(--muted);border:1px solid var(--line);background:var(--surface);border-radius:999px;align-items:center;gap:7px;padding:5px 12px;font-size:.78rem;display:inline-flex}.status-dot{background:var(--warn);border-radius:50%;width:7px;height:7px}.status-dot.open{background:var(--good)}.status-dot.closed{background:var(--bad)}.metric-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;margin-bottom:20px;display:grid}.metric-label{color:var(--muted);text-transform:uppercase;letter-spacing:.07em;font-size:.72rem;font-weight:600}.metric-value{font-variant-numeric:tabular-nums;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:1.3rem;font-weight:600}.chart-card,.table-card,.download-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);margin-bottom:18px;padding:18px 20px}.chart-card h2,.table-card h2{margin:0 0 12px;font-size:.95rem;font-weight:650}.chart-title{color:var(--muted);margin:16px 0 10px;font-size:.86rem;font-weight:600}.table-scroll{overflow-x:auto}table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.85rem}th,td{text-align:right;border-bottom:1px solid var(--line);white-space:nowrap;padding:8px 12px}th:first-child,td:first-child{text-align:left}th{color:var(--muted);text-transform:uppercase;letter-spacing:.07em;font-size:.7rem;font-weight:600}.readings-table th,.readings-table td{text-align:right}.readings-table th:first-child,.readings-table td:first-child{text-align:left;color:var(--muted);background:var(--surface);font-family:IBM Plex Mono,ui-monospace,monospace;position:sticky;left:0}.readings-table th:first-child{background:var(--surface-2)}.readings-table td{font-family:IBM Plex Mono,ui-monospace,monospace}.empty-row{color:var(--muted);text-align:center!important;padding:28px!important}.download-hint{color:var(--muted);margin:0 0 14px;font-size:.84rem}.download-row{flex-wrap:wrap;align-items:flex-end;gap:14px;display:flex}.download-row label,.station-edit-form label{color:var(--muted);flex-direction:column;gap:6px;font-size:.78rem;font-weight:500;display:flex}.download-row input,.download-row select,.station-edit-form input,.station-edit-form select,.users-reset-row input,.station-assign-row select{font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:9px;min-width:180px;padding:9px 12px;font-size:.88rem;transition:border-color .15s,box-shadow .15s}.download-row input:focus,.download-row select:focus,.station-edit-form input:focus,.station-edit-form select:focus,.users-reset-row input:focus,.station-assign-row select:focus{border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-soft);outline:none}.download-button,.login-button{background:linear-gradient(180deg, color-mix(in srgb, var(--signal) 88%, #fff), var(--signal));color:var(--on-signal);border:1px solid color-mix(in srgb, var(--signal) 80%, #000);font:inherit;cursor:pointer;box-shadow:0 1px 0 #ffffff2e inset, var(--shadow-sm);border-radius:9px;justify-content:center;align-items:center;gap:8px;padding:9px 16px;font-size:.86rem;font-weight:600;text-decoration:none;transition:filter .15s,transform .15s;display:inline-flex}.download-button:hover,.login-button:hover{filter:brightness(1.06)}.download-button:active,.login-button:active{transform:translateY(1px)}.download-button:disabled,.login-button:disabled{opacity:.55;cursor:default;filter:none}.app-header-signout,.users-reset-button{background:var(--surface);border:1px solid var(--line);font:inherit;color:var(--ink);cursor:pointer;box-shadow:var(--shadow-sm);border-radius:9px;align-items:center;gap:6px;padding:7px 13px;font-size:.82rem;font-weight:600;transition:background .15s;display:inline-flex}.app-header-signout:hover,.users-reset-button:hover:not(:disabled){background:var(--surface-2)}.users-reset-button:disabled{opacity:.5;cursor:default}.users-delete-button{border:1px solid color-mix(in srgb, var(--bad) 35%, var(--line));font:inherit;color:var(--bad);cursor:pointer;background:0 0;border-radius:9px;align-items:center;gap:6px;padding:7px 13px;font-size:.82rem;font-weight:600;transition:background .15s;display:inline-flex}.users-delete-button:hover:not(:disabled){background:var(--bad-soft)}.users-delete-button:disabled{opacity:.4;cursor:default}.role-badge{color:var(--muted);background:var(--hover);border:1px solid var(--line);border-radius:999px;padding:3px 9px;font-size:.7rem;font-weight:600;display:inline-block}.role-select{font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:8px;padding:6px 10px;font-size:.82rem}.role-select:disabled{opacity:.5}.period-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:4px;display:flex}.period-tabs{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;gap:2px;padding:3px;display:inline-flex}.period-tab{color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:7px;padding:6px 16px;font-size:.84rem;font-weight:600;transition:background .15s,color .15s}.period-tab:hover{color:var(--ink)}.period-tab.active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}.period-nav{align-items:center;gap:8px;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.86rem;display:flex}.period-nav-btn{background:var(--surface);border:1px solid var(--line);width:30px;height:30px;color:var(--ink);cursor:pointer;box-shadow:var(--shadow-sm);border-radius:8px;font-size:1rem;line-height:1}.period-nav-btn:hover{background:var(--surface-2)}.period-input{border:1px solid var(--line);background:var(--surface);height:30px;color:var(--ink);font:inherit;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;cursor:pointer;border-radius:8px;padding:0 8px;font-family:IBM Plex Mono,ui-monospace,monospace;font-weight:600}@media (prefers-color-scheme:dark){.period-input{--lightningcss-light: ;--lightningcss-dark:initial}}.period-input:focus{border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-soft);outline:none}.period-input-year{text-align:center;width:84px}.period-label{text-align:center;min-width:100px;font-weight:600}.dashboard-grid{grid-template-columns:minmax(0,1fr) minmax(280px,360px);align-items:start;gap:18px;display:grid}@media (max-width:960px){.dashboard-grid{grid-template-columns:1fr}}.kpi-strip-even{grid-template-columns:repeat(4,minmax(0,1fr))}.kpi-value small{color:var(--muted);letter-spacing:0;font-size:.55em;font-weight:500}.kpi-icon-good{color:var(--good);background:var(--good-soft)}.chart-empty{color:var(--muted);text-align:center;margin:0;padding:44px 0;font-size:.9rem}.chart-empty-inline{color:var(--muted);font-size:.78rem;font-style:italic}.flow-card .card-title{margin-bottom:18px}.mflow{flex-direction:column;align-items:center;display:flex}.mflow-node{align-items:center;gap:12px;width:100%;max-width:220px;display:flex}.mflow-node-text{flex-direction:column;line-height:1.2;display:flex}.mflow-node-text strong{color:var(--ink);font-size:.92rem}.mflow-node-text span{color:var(--muted);font-size:.74rem}.mflow-leg{width:100%;max-width:220px;height:64px;position:relative}.mflow-leg svg{width:12px;height:100%;position:absolute;top:0;left:20px;overflow:visible}.mflow-value{color:var(--muted);font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.84rem;font-weight:600;position:absolute;top:50%;left:52px;transform:translateY(-50%)}.mflow-leg.is-live .mflow-value{color:currentColor}.mflow-leg .flow-track{vector-effect:non-scaling-stroke}.mflow-node .flow-node2-badge{width:52px;height:52px}.flow-hint{text-align:center;color:var(--muted);border-top:1px solid var(--line);margin:18px 0 0;padding-top:14px;font-size:.82rem}.login-page{grid-template-columns:minmax(0,1.1fr) minmax(360px,1fr);min-height:100vh;display:grid}@media (max-width:860px){.login-page{grid-template-columns:1fr}.login-brand{display:none!important}}.login-brand{color:#fff;background:radial-gradient(90% 70% at 85% 10%, #ffffff29, transparent 60%), radial-gradient(70% 60% at 0% 100%, #00000040, transparent 60%), linear-gradient(150deg, var(--hero-a), var(--hero-b));flex-direction:column;justify-content:space-between;padding:40px clamp(28px,4vw,56px);display:flex;position:relative;overflow:hidden}.login-brand-top{align-items:center;gap:12px;display:flex}.login-brand-name{font-size:1.05rem;font-weight:650}.login-brand-copy h2{letter-spacing:-.025em;max-width:18ch;margin:0 0 14px;font-size:clamp(1.6rem,2.6vw,2.3rem);font-weight:650;line-height:1.15}.login-brand-copy p{opacity:.8;max-width:40ch;margin:0;font-size:.98rem}.login-brand-art svg{width:100%;height:auto;display:block}.login-art-line{stroke:#ffffffd9;stroke-width:2px}.login-art-fill{fill:#ffffff14}.login-art-dot{fill:#fff;stroke:#ffffff59;stroke-width:6px}.login-card{flex-direction:column;place-self:center;gap:16px;width:100%;max-width:380px;margin:32px 24px;display:flex}.login-card h1{letter-spacing:-.02em;margin:0;font-size:1.6rem}.login-hint{color:var(--muted);margin:-10px 0 6px;font-size:.9rem}.login-card label{color:var(--muted);flex-direction:column;gap:6px;font-size:.8rem;font-weight:500;display:flex}.login-card input,.login-card select{font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm);border-radius:10px;padding:11px 13px;font-size:.95rem;transition:border-color .15s,box-shadow .15s}.login-card input:focus{border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-soft);outline:none}.login-error{color:var(--bad);background:var(--bad-soft);border-radius:9px;margin:0 0 12px;padding:9px 12px;font-size:.85rem}.login-form .login-error{margin:0}.login-form{flex-direction:column;gap:16px;display:flex}.login-mode-tabs{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;gap:2px;padding:3px;display:flex}.login-mode-tab{color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:7px;flex:1;justify-content:center;align-items:center;gap:7px;padding:8px 0;font-size:.84rem;font-weight:600;display:inline-flex}.login-mode-tab.active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}.login-resend-link{color:var(--signal);font:inherit;cursor:pointer;background:0 0;border:none;align-self:center;padding:0;font-size:.84rem;font-weight:600}.login-resend-link:hover{text-decoration:underline}.login-button{padding:11px 16px;font-size:.92rem}.users-table td{vertical-align:middle}.user-cell{align-items:center;gap:10px;font-weight:600;display:inline-flex}.users-email-cell{color:var(--ink);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:7px;margin-left:-8px;padding:4px 8px;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.82rem}.users-email-cell:hover{background:var(--hover)}.users-row-actions{justify-content:flex-end;gap:8px;display:flex}.users-reset-row{flex-wrap:wrap;align-items:center;gap:8px;padding:6px 0;display:flex}.station-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;display:grid}.station-pick-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);color:var(--ink);box-shadow:var(--shadow-sm);flex-direction:column;gap:4px;padding:18px 20px;text-decoration:none;transition:box-shadow .2s,transform .2s,border-color .2s;display:flex}.station-pick-card:hover{box-shadow:var(--shadow-md);border-color:color-mix(in srgb, var(--signal) 40%, var(--line));transform:translateY(-2px)}.station-pick-head{justify-content:space-between;align-items:flex-start;margin-bottom:10px;display:flex}.station-pick-icon{width:38px;height:38px;color:var(--power);background:var(--power-soft);border-radius:11px;flex-shrink:0;place-items:center;display:grid}.station-pick-icon.is-bess{color:var(--signal);background:var(--signal-soft)}.station-pick-icon.is-solar{color:var(--pv);background:var(--pv-soft)}.station-pick-arrow{color:var(--muted);transition:transform .2s,color .2s}.station-pick-card:hover .station-pick-arrow{color:var(--signal);transform:translate(3px)}.station-pick-card h2{letter-spacing:-.01em;margin:0;font-size:1.05rem;font-weight:650}.station-meter-count{border-top:1px solid var(--line);color:var(--muted);margin:12px 0 0;padding-top:12px;font-size:.8rem}.station-back-link{color:var(--muted);font-size:.84rem;font-weight:500;text-decoration:none;display:inline-flex}.station-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);margin-bottom:16px;padding:18px 20px}.station-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.station-header h2{margin:0;font-size:1.05rem;font-weight:650}.station-title-row{align-items:center;gap:10px;display:flex}.kind-chip{letter-spacing:.07em;text-transform:uppercase;color:var(--power);background:var(--power-soft);border-radius:6px;padding:3px 8px;font-size:.66rem;font-weight:700}.kind-chip.is-bess{color:var(--signal);background:var(--signal-soft)}.kind-chip.is-solar{color:var(--pv);background:var(--pv-soft)}.station-location{color:var(--muted);margin:4px 0 0;font-size:.86rem}.station-title-row+.station-location{margin-left:48px}.station-tenants{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.station-header-actions{gap:8px;display:flex}.station-edit-form{flex-wrap:wrap;align-items:flex-end;gap:14px;display:flex}.station-edit-actions{gap:8px;display:flex}.station-devices{border-top:1px solid var(--line);margin-top:16px;padding-top:14px}.station-devices .metric-label{margin-bottom:8px;display:block}.station-device-list{flex-direction:column;gap:6px;margin:0 0 10px;padding:0;list-style:none;display:flex}.station-device-list li{border:1px solid var(--line);background:var(--surface-2);border-radius:10px;justify-content:space-between;align-items:center;gap:10px;padding:8px 12px;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.84rem;display:flex}.station-assign-row{flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;display:flex}.plant-shell{grid-template-columns:236px minmax(0,1fr);min-height:calc(100vh - 57px);display:grid}.plant-sidebar{background:var(--surface);border-right:1px solid var(--line);flex-direction:column;gap:16px;height:calc(100vh - 57px);padding:18px 14px;display:flex;position:sticky;top:57px}.plant-back{color:var(--muted);align-items:center;gap:6px;padding:2px 6px;font-size:.82rem;font-weight:500;text-decoration:none;transition:color .15s;display:inline-flex}.plant-back:hover{color:var(--ink)}.plant-sidebar-hero{border-radius:var(--radius);color:#fff;background:radial-gradient(120% 90% at 100% 0%, #ffffff2e, transparent 55%), linear-gradient(145deg, var(--hero-a), var(--hero-b));box-shadow:var(--shadow-md);flex-direction:column;gap:2px;padding:16px 14px 14px;display:flex;position:relative;overflow:hidden}.plant-sidebar-mark{background:#ffffff29;border-radius:10px;place-items:center;width:36px;height:36px;margin-bottom:10px;display:grid}.plant-sidebar-name{letter-spacing:-.01em;font-size:1.05rem;font-weight:650}.plant-sidebar-kind{text-transform:uppercase;letter-spacing:.08em;opacity:.78;font-size:.7rem;font-weight:600}.plant-sidebar-cap{border-top:1px solid #ffffff2e;flex-direction:column;gap:2px;margin-top:12px;padding-top:10px;display:flex}.plant-sidebar-cap span{opacity:.75;text-transform:uppercase;letter-spacing:.06em;font-size:.7rem}.plant-sidebar-cap strong{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.92rem;font-weight:600}.plant-nav{flex-direction:column;gap:2px;display:flex}.plant-nav-link{color:var(--muted);border-radius:9px;align-items:center;gap:11px;padding:9px 12px;font-size:.9rem;font-weight:500;text-decoration:none;transition:background .15s,color .15s;display:flex;position:relative}.plant-nav-link:hover{background:var(--hover);color:var(--ink)}.plant-nav-link.active{color:var(--ink);background:var(--signal-soft);font-weight:600}.plant-nav-link.active:before{content:"";background:var(--signal);border-radius:0 3px 3px 0;width:3px;position:absolute;top:8px;bottom:8px;left:-14px}.plant-nav-link.active .plant-nav-icon{color:var(--signal)}.plant-content{min-width:0}@media (max-width:860px){.plant-shell{grid-template-columns:1fr}.plant-sidebar{border-right:none;border-bottom:1px solid var(--line);height:auto;position:static}.plant-nav{flex-flow:wrap}.plant-nav-link.active:before{display:none}}.plant-page{max-width:1720px;padding:24px clamp(16px,2.6vw,36px) 56px}@keyframes page-in{0%{opacity:0;transform:translateY(4px)}}.plant-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;display:flex}.plant-header-title{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.plant-header-title h1{letter-spacing:-.02em;margin:0 4px 0 0;font-size:1.55rem;font-weight:650}.plant-id{color:var(--muted);background:var(--surface-2);border:1px solid var(--line);border-radius:6px;padding:2px 7px;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.74rem}.plant-header-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.plant-updated{color:var(--muted);font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.76rem}.icon-button{border:1px solid var(--line);background:var(--surface);width:34px;height:34px;color:var(--ink);cursor:pointer;box-shadow:var(--shadow-sm);border-radius:9px;flex-shrink:0;place-items:center;transition:background .15s,transform .15s;display:inline-grid}.icon-button:hover{background:var(--surface-2)}.icon-button:active{transform:scale(.96)}.status-pill{white-space:nowrap;color:var(--muted);background:var(--hover);border-radius:999px;align-items:center;gap:6px;padding:3px 10px 3px 8px;font-size:.74rem;font-weight:600;display:inline-flex}.status-pill-dot{background:currentColor;border-radius:50%;width:7px;height:7px}.status-pill.status-online{color:var(--good);background:var(--good-soft)}.status-pill.status-online .status-pill-dot{animation:2s ease-out infinite live-pulse;box-shadow:0 0}@keyframes live-pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb, currentColor 55%, transparent)}70%{box-shadow:0 0 0 6px #0000}to{box-shadow:0 0 #0000}}.status-pill.status-warning,.status-pill.status-partially_offline{color:var(--warn);background:var(--warn-soft)}.status-pill.status-fault{color:var(--bad);background:var(--bad-soft)}.level-pill{text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;border-radius:999px;padding:3px 9px;font-size:.68rem;font-weight:700;display:inline-block}.level-info{color:var(--muted);background:var(--hover)}.level-minor{color:var(--warn);background:var(--warn-soft)}.level-major{color:var(--bad);background:var(--bad-soft)}.level-critical{color:#fff;background:var(--bad)}.plant-banner{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--power);border-radius:var(--radius);box-shadow:var(--shadow-sm);margin-bottom:18px;padding:12px 16px;font-size:.88rem}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);margin-bottom:18px;padding:18px 20px}.card-title{letter-spacing:-.005em;margin:0 0 12px;font-size:.95rem;font-weight:650}.plant-grid{grid-template-columns:minmax(0,1fr) minmax(310px,390px);align-items:start;gap:18px;display:grid}@media (max-width:1100px){.plant-grid{grid-template-columns:1fr}}.plant-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.plant-toolbar .period-bar{width:100%;margin-bottom:0}.kpi-strip{grid-template-columns:minmax(0,1.6fr) repeat(3,minmax(0,1fr));gap:14px;margin-bottom:18px;display:grid}@media (max-width:1200px){.kpi-strip{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:600px){.kpi-strip{grid-template-columns:1fr}}.kpi-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);flex-direction:column;gap:4px;min-width:0;padding:16px 18px;transition:box-shadow .2s,transform .2s;display:flex;position:relative}.kpi-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.kpi-battery{background:radial-gradient(120% 140% at 0% 0%, var(--signal-soft), transparent 60%), var(--surface);flex-direction:row;align-items:center;gap:18px}.kpi-body{flex-direction:column;align-items:flex-start;gap:4px;min-width:0;display:flex}.kpi-label{color:var(--muted);text-transform:uppercase;letter-spacing:.07em;font-size:.72rem;font-weight:600}.kpi-value{letter-spacing:-.02em;font-variant-numeric:tabular-nums;white-space:nowrap;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:clamp(1.35rem,2vw,1.75rem);font-weight:600}.kpi-sub{color:var(--muted);font-size:.78rem}.kpi-icon{border-radius:10px;place-items:center;width:34px;height:34px;display:grid;position:absolute;top:14px;right:14px}.kpi-icon-grid{color:var(--power);background:var(--power-soft)}.kpi-icon-load{color:var(--load);background:var(--load-soft)}.kpi-icon-pcs{color:var(--signal);background:var(--signal-soft)}.kpi-icon-pv{color:var(--pv);background:var(--pv-soft)}.kpi-icon-dg{color:var(--dg);background:var(--dg-soft)}.kpi-meter{background:var(--hover);border-radius:999px;height:6px;margin:4px 0 2px;display:block;overflow:hidden}.kpi-meter span{border-radius:inherit;background:linear-gradient(90deg, var(--signal), var(--soc));height:100%;transition:width .6s;display:block}.state-chip{color:var(--muted);background:var(--hover);border-radius:999px;align-items:center;gap:6px;padding:3px 10px 3px 8px;font-size:.74rem;font-weight:600;display:inline-flex}.state-chip-dot{background:currentColor;border-radius:50%;width:7px;height:7px}.state-chip.state-charging{color:var(--power);background:var(--power-soft)}.state-chip.state-discharging{color:var(--signal);background:var(--signal-soft)}.state-chip.state-charging .state-chip-dot,.state-chip.state-discharging .state-chip-dot{animation:1.6s ease-out infinite live-pulse}.soc-ring{flex-shrink:0;position:relative}.soc-ring svg{display:block}.soc-ring-track{stroke:color-mix(in srgb, var(--line) 70%, transparent)}.soc-ring-value{stroke:var(--signal);transition:stroke-dasharray .8s}.soc-ring-warn .soc-ring-value{stroke:var(--warn)}.soc-ring-bad .soc-ring-value{stroke:var(--bad)}.soc-ring-text{flex-direction:column;justify-content:center;align-items:center;line-height:1.05;display:flex;position:absolute;inset:0}.soc-ring-text strong{letter-spacing:-.03em;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:1.45rem;font-weight:600}.soc-ring-text span{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-size:.66rem;font-weight:600}.energy-tiles{grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr);gap:12px;margin:18px 0 22px;display:grid}@media (max-width:760px){.energy-tiles{grid-template-columns:1fr}}.energy-tile{border-radius:var(--radius);background:var(--surface-2);border:1px solid var(--line);flex-direction:column;justify-content:center;gap:12px;padding:16px;display:flex;position:relative}.energy-tile-wide{background:radial-gradient(140% 120% at 100% 0%, var(--signal-soft), transparent 60%), var(--surface-2);padding-top:40px;container-type:inline-size}.energy-pair{text-align:center;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:12px;padding:0 0 2px;display:grid}.energy-pair>div:not(.energy-divider){flex-direction:column;gap:4px;display:flex}.energy-divider{background:var(--line);width:1px;height:56px}.energy-big{letter-spacing:-.02em;font-variant-numeric:tabular-nums;white-space:nowrap;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:clamp(1.15rem,8cqi,1.9rem);font-weight:600;display:block}.energy-big small{color:var(--muted);letter-spacing:0;margin-left:.3em;font-size:.5em;font-weight:500}.energy-value{font-variant-numeric:tabular-nums;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:1.02rem;font-weight:600;display:block}.energy-label{color:var(--muted);font-size:.76rem;display:block}.energy-period{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-size:.68rem;font-weight:600;position:absolute;top:12px;left:16px}.energy-more{background:var(--surface);color:var(--signal);cursor:pointer;box-shadow:var(--shadow-sm);border:none;border-radius:999px;padding:3px 10px;font-family:inherit;font-size:.74rem;font-weight:600;position:absolute;top:9px;right:10px}.energy-popover{z-index:5;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);width:min(320px,92%);box-shadow:var(--shadow-lg);flex-direction:column;gap:10px;padding:14px 16px;animation:.18s ease-out page-in;display:flex;position:absolute;top:38px;right:10px}.energy-popover-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.energy-icon{border-radius:9px;align-self:center;place-items:center;width:32px;height:32px;display:grid}.energy-icon-grid{color:var(--power);background:var(--power-soft)}.energy-icon-load{color:var(--load);background:var(--load-soft)}.energy-stack{text-align:center;flex-direction:column;gap:2px;display:flex}.plant-chart{flex-direction:column;gap:8px;display:flex}.chart-legend{flex-wrap:wrap;align-items:center;gap:6px 8px;font-size:.8rem;display:flex}.legend-item{border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;border-radius:999px;align-items:center;gap:7px;padding:4px 10px;font-family:inherit;font-size:.78rem;transition:opacity .15s;display:inline-flex}.legend-item.off{opacity:.4}.legend-dot{border-radius:50%;width:8px;height:8px}.legend-switch{color:var(--muted);align-items:center;gap:6px;margin-left:auto;font-size:.78rem;display:inline-flex}.legend-switch input{accent-color:var(--signal)}.chart-note{color:var(--muted);margin:4px 0 8px;font-size:.74rem}.side-tabs,.drawer-tabs{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;flex-wrap:wrap;gap:4px;margin:-2px 0 14px;padding:3px;display:flex}.side-tab{color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:7px;flex:auto;padding:6px 10px;font-family:inherit;font-size:.82rem;font-weight:500;transition:background .15s,color .15s}.side-tab:hover{color:var(--ink)}.side-tab.active{color:var(--ink);background:var(--surface);box-shadow:var(--shadow-sm);font-weight:600}.type-tabs .side-tab,.drawer-tabs .side-tab{flex:none}.tab-count{background:var(--bad);color:#fff;border-radius:999px;margin-left:6px;padding:1px 6px;font-size:.66rem}.flow-track{fill:none;stroke-width:2px;stroke:var(--line);stroke-linecap:round}.flow-path.is-live .flow-track{stroke-opacity:.45;stroke-width:2.5px}.flow-dot{fill:currentColor;filter:drop-shadow(0 0 3px)}@media (prefers-reduced-motion:reduce){.flow-dot{display:none}}.flow-tone-battery{color:var(--signal)}.flow-tone-grid{color:var(--power)}.flow-tone-load{color:var(--load)}.flow-tone-pv{color:var(--pv)}.flow-tone-dg{color:var(--dg)}.flow-path.is-live .flow-track{stroke:currentColor}.flow3{flex-direction:column;gap:6px;padding-top:6px;display:flex}.flow3-summary{background:var(--surface-2,color-mix(in srgb, var(--line) 35%, var(--surface)));color:var(--ink);text-align:center;border-radius:999px;align-items:center;gap:8px;margin:0 auto;padding:5px 12px;font-size:.76rem;display:inline-flex}.flow3-state{background:var(--muted);border-radius:50%;flex:none;width:8px;height:8px}.flow3-state.is-charging,.flow3-state.is-discharging{background:var(--signal);box-shadow:0 0 0 4px color-mix(in srgb, var(--signal) 18%, transparent)}.flow3-state.is-live{background:var(--good);box-shadow:0 0 0 4px color-mix(in srgb, var(--good) 18%, transparent)}.flow3-canvas{width:100%;max-width:340px;margin:4px auto 0;position:relative}.flow3-canvas>svg{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.flow3 .flow-track{stroke-width:3px;stroke-dasharray:1 7}.flow3 .flow-path.is-live .flow-track{stroke-dasharray:none;stroke-opacity:.28;stroke-width:4px}.flow3-hub{color:#fff;background:linear-gradient(150deg, var(--hero-a), var(--hero-b));width:78px;height:78px;box-shadow:var(--shadow-md), 0 0 0 6px var(--surface), 0 0 0 7px var(--line);border-radius:22px;flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex;position:absolute;transform:translate(-50%,-50%)}.flow3-hub strong{letter-spacing:.1em;font-size:.72rem;line-height:1}.flow3-hub span{opacity:.8;text-transform:capitalize;text-overflow:ellipsis;white-space:nowrap;max-width:88%;font-size:.6rem;line-height:1;overflow:hidden}.flow3-hub span.flow3-hub-plain{text-transform:none}.flow3-node{position:absolute;transform:translate(-50%,-50%)}.flow3-badge{color:currentColor;background:var(--surface);border:1.5px solid color-mix(in srgb, currentColor 30%, var(--line));width:56px;height:56px;box-shadow:var(--shadow-sm);border-radius:50%;place-items:center;transition:box-shadow .3s,background .3s;display:grid;position:relative}.flow3-node.is-live .flow3-badge{background:color-mix(in srgb, currentColor 10%, var(--surface));box-shadow:0 0 0 7px color-mix(in srgb, currentColor 9%, transparent), var(--shadow-sm)}.flow3-ring{background:conic-gradient(currentColor calc(var(--soc) * 1%), color-mix(in srgb, currentColor 14%, transparent) 0);border-radius:50%;position:absolute;inset:-6px;-webkit-mask:radial-gradient(farthest-side,#0000 calc(100% - 4px),#000 calc(100% - 3px));mask:radial-gradient(farthest-side,#0000 calc(100% - 4px),#000 calc(100% - 3px))}.flow3-label{white-space:nowrap;flex-direction:column;line-height:1.25;display:flex;position:absolute}.flow3-node.label-below .flow3-label{align-items:center;top:calc(100% + 8px);left:50%;transform:translate(-50%)}.flow3-node.label-right .flow3-label{align-items:flex-start;top:50%;left:calc(100% + 14px);transform:translateY(-50%)}.flow3-label strong{color:var(--ink);font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.95rem}.flow3-label span{color:currentColor;font-size:.72rem;font-weight:600}.flow3-node:not(.is-live) .flow3-label span{color:var(--muted);font-weight:400}.flow-node2{flex-direction:column;align-items:center;display:flex;position:absolute;transform:translate(-50%,-50%)}.flow-node2-badge{color:currentColor;background:var(--surface);border:1.5px solid color-mix(in srgb, currentColor 35%, var(--line));width:52px;height:52px;box-shadow:var(--shadow-sm);border-radius:50%;place-items:center;transition:box-shadow .3s;display:grid}.flow-node2.is-live .flow-node2-badge{background:color-mix(in srgb, currentColor 12%, var(--surface));box-shadow:0 0 0 6px color-mix(in srgb, currentColor 10%, transparent), var(--shadow-sm)}.flow-node2-label{white-space:nowrap;flex-direction:column;align-items:center;line-height:1.25;display:flex;position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%)}.flow-node2-label strong{color:var(--ink);font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.86rem}.flow-node2-label span{color:var(--muted);font-size:.72rem}.flow-node2.flow-tone-load .flow-node2-label,.flow-node2.flow-tone-pv .flow-node2-label{align-items:flex-start;top:50%;left:calc(100% + 10px);transform:translateY(-50%)}.side-devices,.side-alerts{flex-direction:column;gap:10px;display:flex}.side-device{border:1px solid var(--line);border-radius:var(--radius);color:var(--ink);background:var(--surface-2);flex-direction:column;gap:10px;padding:12px 14px;text-decoration:none;transition:border-color .15s,box-shadow .15s;display:flex}.side-device:hover{border-color:var(--signal);box-shadow:var(--shadow-sm)}.side-device-head{justify-content:space-between;align-items:center;gap:8px;font-size:.86rem;font-weight:600;display:flex}.side-device-metrics{grid-template-columns:1fr 1fr;gap:8px;display:grid}.muted-sn{color:var(--muted);font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.74rem;font-weight:400}.side-alert{border-bottom:1px solid var(--line);align-items:flex-start;gap:10px;padding-bottom:10px;font-size:.85rem;display:flex}.side-alert>div{flex-direction:column;gap:2px;display:flex}.side-alert span{color:var(--muted);font-size:.74rem}.side-more-link{color:var(--signal);align-self:flex-end;font-size:.84rem;font-weight:600;text-decoration:none}.kv-list{flex-direction:column;margin:0;display:flex}.kv-list>div{border-bottom:1px solid var(--line);justify-content:space-between;gap:12px;padding:9px 0;font-size:.85rem;display:flex}.kv-list>div:last-child{border-bottom:none;padding-bottom:0}.kv-list dt{color:var(--muted)}.kv-list dd{text-align:right;margin:0;font-family:IBM Plex Mono,ui-monospace,monospace;font-weight:500}.segmented{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;gap:2px;padding:3px;display:inline-flex}.segmented button{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:7px;padding:5px 12px;font-family:inherit;font-size:.8rem;font-weight:500}.segmented button.active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm);font-weight:600}.search-input,.filter-select{border:1px solid var(--line);background:var(--surface);color:var(--ink);min-width:0;box-shadow:var(--shadow-sm);border-radius:9px;padding:8px 12px;font-family:inherit;font-size:.84rem;transition:border-color .15s,box-shadow .15s}.search-input:focus,.filter-select:focus{border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-soft);outline:none}.search-input{width:240px;max-width:100%}.table-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;display:flex}.type-tabs{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;flex-wrap:wrap;gap:4px;min-width:0;margin:0;padding:3px;display:flex}.toolbar-right{align-items:center;gap:8px;display:flex}.plant-table{border-collapse:separate;border-spacing:0}.plant-table th,.plant-table td{text-align:left;vertical-align:middle;padding:11px 14px}.plant-table th{color:var(--muted);text-transform:uppercase;letter-spacing:.07em;white-space:nowrap;background:var(--surface-2);border-bottom:1px solid var(--line);font-size:.7rem;font-weight:600}.plant-table th:first-child{border-top-left-radius:9px}.plant-table th:last-child{border-top-right-radius:9px}.plant-table td:first-child{color:var(--ink);font-family:inherit}.plant-table tbody tr{transition:background .12s}.plant-table tbody tr:last-child td{border-bottom:none}.plant-table.clickable tbody tr{cursor:pointer}.plant-table.clickable tbody tr:hover{background:var(--hover)}.cell-title{color:var(--ink);font-weight:600;text-decoration:none;display:block}a.cell-title:hover{color:var(--signal)}.cell-sub{color:var(--muted);font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.74rem;display:block}.mono{white-space:nowrap;font-family:IBM Plex Mono,ui-monospace,monospace}.muted{color:var(--muted)}.text-bad{color:var(--bad)}.soc-bar{vertical-align:middle;background:var(--hover);border-radius:6px;width:84px;height:20px;display:inline-block;position:relative;overflow:hidden}.soc-bar-fill{background:linear-gradient(90deg, var(--signal-soft), color-mix(in srgb, var(--signal) 45%, transparent));position:absolute;inset:0 auto 0 0}.soc-bar-text{text-align:center;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.74rem;font-weight:600;line-height:20px;display:block;position:relative}.drawer-backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:50;background:#0f0c0961;justify-content:flex-end;animation:.2s ease-out fade-in;display:flex;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}}.drawer{background:var(--bg);width:min(1000px,100%);height:100%;box-shadow:var(--shadow-lg);flex-direction:column;animation:.28s cubic-bezier(.2,.8,.2,1) drawer-in;display:flex}@keyframes drawer-in{0%{opacity:.4;transform:translate(32px)}}.drawer-header{background:var(--surface);flex-wrap:wrap;justify-content:space-between;gap:12px;padding:18px 24px 12px;display:flex}.drawer-header h2{letter-spacing:-.01em;margin:0;font-size:1.2rem;font-weight:650}.drawer-sub{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;font-size:.8rem;display:flex}.drawer-header-right{align-items:center;gap:8px;display:flex}.drawer-close:hover{background:var(--bad-soft);color:var(--bad)}.drawer-tabs{align-self:flex-start;margin:0 24px}.drawer>.drawer-tabs{border:none;border-bottom:1px solid var(--line);background:var(--surface);border-radius:0;align-self:stretch;margin:0;padding:4px 20px 10px}.drawer-body{flex:1;padding:18px 24px 36px;overflow-y:auto}.detail-block{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);margin-bottom:14px;padding:16px 18px}.detail-block-head{width:100%;color:var(--ink);cursor:pointer;background:0 0;border:none;justify-content:space-between;margin-bottom:14px;padding:0;font-family:inherit;font-size:.95rem;font-weight:650;display:flex}.detail-collapse{color:var(--signal);font-size:.76rem;font-weight:500}.detail-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px 28px;margin:0;display:grid}.detail-grid>div{border-bottom:1px dashed var(--line);flex-direction:column;gap:2px;min-width:0;padding-bottom:8px;font-size:.86rem;display:flex}.detail-grid dt{color:var(--muted);font-size:.74rem}.detail-grid dd{overflow-wrap:anywhere;min-width:0;margin:0;font-family:IBM Plex Mono,ui-monospace,monospace;font-weight:500}.detail-grid dd input{border:1px solid var(--line);background:var(--bg);width:100%;color:var(--ink);border-radius:7px;padding:6px 8px;font-family:inherit;font-size:.85rem}.detail-grid dd input:focus{border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-soft);outline:none}.history-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.preset-row{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:10px;font-size:.8rem;display:flex}.preset-chip{border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;border-radius:999px;padding:4px 12px;font-family:inherit;font-size:.78rem}.preset-chip.active{color:var(--signal);background:var(--signal-soft);border-color:#0000;font-weight:600}.param-picker{margin-bottom:10px;font-size:.82rem}.param-picker summary{cursor:pointer;color:var(--signal);font-weight:600}.param-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:4px 12px;padding:8px 0;display:grid}.param-grid label{align-items:center;gap:6px;display:flex}.param-grid input{accent-color:var(--signal)}.topology{flex-direction:column;gap:22px;padding:10px 0;display:flex}.topo-tier{flex-direction:column;gap:10px;display:flex;position:relative}.topo-tier+.topo-tier:before{content:"";border-left:2px dashed var(--line);height:22px;position:absolute;top:-22px;left:50%}.topo-tier-title{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;text-align:center;font-size:.68rem;font-weight:600}.topo-row{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.topo-node{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink);text-align:left;cursor:pointer;min-width:180px;box-shadow:var(--shadow-sm);flex-direction:column;gap:2px;padding:10px 14px 10px 18px;font-family:inherit;font-size:.8rem;transition:box-shadow .15s,transform .15s;display:flex;position:relative}.topo-node:before{content:"";background:var(--good);border-radius:3px;width:3px;position:absolute;top:10px;bottom:10px;left:7px}.topo-node:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.topo-node span{color:var(--muted)}.topo-node.topo-warning:before{background:var(--warn)}.topo-node.topo-fault:before{background:var(--bad)}.topo-node.topo-offline{opacity:.7}.topo-node.topo-offline:before{background:var(--muted)}.info-section .detail-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.ems-key-box{flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0;display:flex}.ems-key-box code{background:var(--bg);border:1px solid var(--line);overflow-wrap:anywhere;border-radius:7px;padding:6px 8px;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.8rem}.ems-key-box p{flex-basis:100%;margin:0}.station-edit-form select,.download-row select{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:8px;padding:7px 10px;font-family:inherit}.plant-list-card{padding-top:14px}.skeleton{border-radius:var(--radius);background:linear-gradient(90deg, var(--hover) 25%, color-mix(in srgb, var(--line) 50%, transparent) 50%, var(--hover) 75%);background-size:200% 100%;animation:1.4s linear infinite shimmer}.skeleton-chart{height:320px}@keyframes shimmer{to{background-position:-200% 0}}.kpi-card .state-chip{align-self:flex-start;margin-top:2px}.station-device-list li button{font-family:IBM Plex Sans,ui-sans-serif,system-ui,sans-serif}.download-row input,.download-row select,.station-edit-form input,.station-edit-form select{height:40px}@media (max-width:860px){.plant-sidebar{gap:10px;padding:12px 14px}.plant-sidebar-hero{padding:12px 14px}.plant-sidebar-mark,.plant-sidebar-cap{display:none}}@media (max-width:600px){.app-header{gap:10px;padding:8px 14px}.app-header-tabs{order:3;width:100%}.app-header-tab{flex:1;justify-content:center}.page-title-icon{display:none}}.offline-notice{border-radius:var(--radius);border:1px solid color-mix(in srgb, var(--warn) 30%, var(--line));background:var(--warn-soft);margin-top:14px;padding:12px 14px;font-size:.84rem}.offline-notice strong{color:var(--warn)}.offline-notice ul{margin:6px 0;padding-left:18px}.offline-notice li{margin:2px 0}.offline-notice p{color:var(--muted);margin:4px 0 0;font-size:.78rem}.chart-tooltip{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-md);border-radius:10px;flex-direction:column;gap:3px;padding:8px 12px;font-size:12px;display:flex}.chart-tooltip strong{margin-bottom:2px}.inline-edit{align-items:center;gap:6px;display:inline-flex}.inline-edit input{font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:8px;width:200px;padding:6px 10px;font-size:.85rem}.inline-edit input:focus{border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-soft);outline:none}.inline-edit .download-button,.inline-edit .app-header-signout{padding:6px 11px}.cell-link{color:var(--signal);margin-top:4px;font-size:.76rem;font-weight:600;text-decoration:none;display:block}.cell-link:hover{text-decoration:underline}.link-button{font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;padding:0}.link-button:hover,.link-button:focus-visible{color:var(--signal)}.ctl-section{flex-direction:column;gap:14px;display:flex}.ctl-muted{color:var(--muted);font-size:.8rem;font-weight:400}.ctl-sync{border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);flex-wrap:wrap;align-items:center;gap:8px 12px;padding:10px 14px;font-size:.86rem;display:flex}.ctl-sync .ctl-muted{margin-left:auto}.ctl-sync-dot{background:var(--good);width:9px;height:9px;box-shadow:0 0 0 4px var(--good-soft);border-radius:50%;flex:none}.ctl-sync.is-warn{background:var(--warn-soft);border-color:color-mix(in srgb, var(--warn) 30%, var(--line))}.ctl-sync.is-warn .ctl-sync-dot{background:var(--warn);box-shadow:none}.ctl-sync.is-bad{background:var(--bad-soft);border-color:color-mix(in srgb, var(--bad) 30%, var(--line))}.ctl-sync.is-bad .ctl-sync-dot{background:var(--bad);box-shadow:none}.ctl-modes{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}@media (max-width:760px){.ctl-modes{grid-template-columns:1fr}}.ctl-mode{text-align:left;border-radius:var(--radius);border:1.5px solid var(--line);background:var(--surface-2);color:var(--ink);font:inherit;cursor:pointer;flex-direction:column;gap:4px;padding:14px;display:flex}.ctl-mode:disabled{cursor:default}.ctl-mode:not(:disabled):hover{border-color:color-mix(in srgb, var(--signal) 40%, var(--line))}.ctl-mode span{color:var(--muted);font-size:.8rem}.ctl-mode.active{border-color:var(--signal);background:var(--signal-soft)}.ctl-mode.active strong{color:var(--signal)}.ctl-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px 20px;display:grid}.ctl-field{flex-direction:column;gap:5px;min-width:0;display:flex}.ctl-field label{color:var(--muted);font-size:.78rem;font-weight:600}.ctl-field small{color:var(--muted);font-size:.74rem}.ctl-value{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:1.05rem}.ctl-input{border:1px solid var(--line);background:var(--surface);border-radius:9px;align-items:center;display:flex;overflow:hidden}.ctl-input:focus-within{border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-soft)}.ctl-input input{min-width:0;font:inherit;color:var(--ink);background:0 0;border:none;outline:none;flex:1;padding:8px 10px;font-family:IBM Plex Mono,ui-monospace,monospace}.ctl-input span{color:var(--muted);white-space:nowrap;padding:0 10px;font-size:.78rem}.ctl-gauge{padding:22px 4px 4px}.ctl-gauge-track{background:color-mix(in srgb, var(--line) 60%, var(--surface));border-radius:999px;height:14px;position:relative}.ctl-gauge-fill{border-radius:999px;transition:width .6s;position:absolute;inset:0 auto 0 0}.ctl-gauge-fill.is-ok{background:var(--good)}.ctl-gauge-fill.is-warn{background:var(--warn)}.ctl-gauge-fill.is-bad{background:var(--bad)}.ctl-gauge-peak{background:var(--ink);opacity:.45;width:2px;margin-left:-1px;position:absolute;top:-3px;bottom:-3px}.ctl-gauge-mark{width:2px;margin-left:-1px;position:absolute;top:-6px;bottom:-6px}.ctl-gauge-mark span{white-space:nowrap;font-size:.7rem;font-weight:600;position:absolute;bottom:calc(100% + 2px);left:50%;transform:translate(-50%)}.ctl-gauge-mark.is-threshold{background:var(--warn)}.ctl-gauge-mark.is-threshold span{color:var(--warn);transform:translate(-100%)}.ctl-gauge-mark.is-limit{background:var(--bad)}.ctl-gauge-mark.is-limit span{color:var(--bad);transform:none}.ctl-live{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;display:grid}.ctl-live>div{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;flex-direction:column;gap:3px;padding:10px 12px;display:flex}.ctl-live span{color:var(--muted);font-size:.74rem}.ctl-live strong{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.95rem}.ctl-warn-text{color:var(--warn)}.ctl-sizing{border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;display:flex;overflow:hidden}.ctl-sizing>div{border-left:3px solid var(--good);justify-content:space-between;gap:12px;padding:9px 14px;font-size:.84rem;display:flex}.ctl-sizing>div+div{border-top:1px solid var(--line)}.ctl-sizing>div.is-warn{border-left-color:var(--warn);background:var(--warn-soft)}.ctl-sizing>div.is-bad{border-left-color:var(--bad);background:var(--bad-soft)}.ctl-sizing span{color:var(--muted)}.ctl-sizing strong{text-align:right;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.82rem}.ctl-schedule{flex-direction:column;gap:8px;display:flex;container-type:inline-size}.ctl-schedule-head,.ctl-schedule-row{grid-template-columns:105px 105px 90px 90px minmax(0,1fr) minmax(0,1fr) auto;align-items:center;gap:10px;display:grid}.ctl-schedule-head{color:var(--muted);font-size:.74rem;font-weight:600}.ctl-schedule-row input,.ctl-schedule-row select{border:1px solid var(--line);font:inherit;background:var(--surface);color:var(--ink);border-radius:8px;min-width:0;padding:7px 9px}.ctl-schedule-row strong{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.9rem}.ctl-dis{color:var(--signal)}.ctl-chg{color:var(--soc)}.ctl-add{align-self:flex-start}@media (max-width:560px){.ctl-schedule-head{display:none}.ctl-schedule-head,.ctl-schedule-row{grid-template-columns:1fr 1fr}}.ctl-note{color:var(--muted);margin:0;font-size:.84rem}.ctl-savebar{z-index:20;border-radius:var(--radius);border:1px solid color-mix(in srgb, var(--signal) 35%, var(--line));background:var(--surface);box-shadow:var(--shadow-lg);flex-wrap:wrap;align-items:center;gap:10px 12px;padding:12px 14px;font-size:.86rem;display:flex;position:sticky;bottom:12px}.ctl-savebar span{flex:220px}.ctl-link{background:var(--warn-soft);color:var(--warn);border-radius:999px;padding:2px 9px;font-size:.76rem}.ctl-link.is-up{background:var(--good-soft);color:var(--good)}.ctl-override{border-radius:var(--radius);background:var(--surface-2);border:1px solid var(--line);padding:10px 14px;font-size:.88rem}.ctl-override.is-active{background:var(--warn-soft);border-color:color-mix(in srgb, var(--warn) 35%, var(--line));font-weight:600}.ctl-commands{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.ctl-stop{font:inherit;color:#fff;background:var(--bad);cursor:pointer;border:none;border-radius:9px;padding:9px 16px;font-weight:600}.ctl-stop:disabled{opacity:.5;cursor:default}.ctl-manual{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.ctl-manual .ctl-input{width:190px}.ctl-manual .ctl-input:nth-child(2){width:110px}.ctl-log{border-top:1px solid var(--line);flex-direction:column;font-size:.8rem;display:flex}.ctl-log>div{border-bottom:1px solid var(--line);grid-template-columns:150px minmax(0,1fr) 90px minmax(0,1.4fr);gap:10px;padding:7px 0;display:grid}.ctl-log span{color:var(--muted)}.ctl-ok{color:var(--good)!important}.ctl-bad{color:var(--bad)!important}@media (max-width:560px){.ctl-log>div{grid-template-columns:1fr 1fr}}.kpi-strip.kpi-strip-solar{grid-template-columns:repeat(4,minmax(0,1fr))}@media (max-width:1200px){.kpi-strip.kpi-strip-solar{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:600px){.kpi-strip.kpi-strip-solar{grid-template-columns:1fr}}.plant-banner-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 16px;display:flex}.mix-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:18px 0 12px;display:grid}@media (max-width:760px){.mix-cards{grid-template-columns:1fr}}.mix-card{border-radius:var(--radius);border:1px solid var(--line);flex-direction:column;gap:10px;min-width:0;padding:14px 16px 16px;display:flex;container-type:inline-size}.mix-card.mix-pv{background:radial-gradient(140% 120% at 100% 0%, var(--pv-soft), transparent 60%), var(--surface-2)}.mix-card.mix-load{background:radial-gradient(140% 120% at 100% 0%, var(--load-soft), transparent 60%), var(--surface-2)}.mix-head{align-items:center;gap:8px;min-width:0;display:flex}.mix-icon{border-radius:8px;flex:none;place-items:center;width:28px;height:28px;display:grid}.mix-pv .mix-icon{color:var(--pv);background:var(--pv-soft)}.mix-load .mix-icon{color:var(--load);background:var(--load-soft)}.mix-title{font-size:.86rem;font-weight:650}.mix-period{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;white-space:nowrap;margin-left:auto;font-size:.68rem;font-weight:600}.mix-card .energy-big{font-size:clamp(1.3rem,9cqi,2rem)}.mix-bar{background:var(--hover);border-radius:7px;gap:2px;height:22px;display:flex;overflow:hidden}.mix-bar>span{color:#fff;font-variant-numeric:tabular-nums;white-space:nowrap;text-shadow:0 1px 1px #0000002e;place-items:center;min-width:4px;font-size:.68rem;font-weight:650;display:grid;overflow:hidden}@media (prefers-color-scheme:dark){.mix-bar>span{color:#0e0d0b;text-shadow:none}}.mix-bar>.mix-bar-empty{flex:1}.mix-legend{flex-direction:column;gap:6px;margin:0;padding:0;font-size:.8rem;list-style:none;display:flex}.mix-legend li{grid-template-columns:auto minmax(0,1fr) auto 4.2em;align-items:center;gap:8px;display:grid}.mix-legend-label{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mix-legend-value,.mix-legend-pct{font-variant-numeric:tabular-nums;text-align:right;font-family:IBM Plex Mono,ui-monospace,monospace}.mix-legend-value{font-weight:600}.mix-legend-pct{color:var(--muted);font-size:.76rem}.mix-tiles{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:22px;display:grid}@media (max-width:760px){.mix-tiles{grid-template-columns:1fr}}.mix-tile{border-radius:var(--radius);background:var(--surface-2);border:1px solid var(--line);align-items:center;gap:12px;min-width:0;padding:12px 14px;display:flex}.mix-tile>div{min-width:0}.mix-tile-note{color:var(--muted);margin-top:2px;font-size:.72rem;display:block}.mix-tile-grid{color:var(--power);background:var(--power-soft)}.mix-tile-export{color:var(--solar-use);background:color-mix(in srgb, var(--solar-use) 14%, transparent)}.mix-tile-dg{color:var(--dg);background:var(--dg-soft)}.peak-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-2);flex-direction:column;gap:12px;margin:0 0 22px;padding:14px 16px;display:flex}.peak-head{justify-content:space-between;align-items:baseline;display:flex}.peak-head span{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-size:.68rem;font-weight:600}.peak-grid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;display:grid}.peak-item{background:var(--surface);border:1px solid var(--line);border-radius:10px;align-items:flex-start;gap:10px;padding:10px 12px;display:flex}.peak-item>div{flex-direction:column;min-width:0;display:flex}.peak-label{color:var(--muted);font-size:.74rem}.peak-item strong{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:1.05rem}.peak-item small{color:var(--muted);font-size:.72rem}.peak-bars{flex-direction:column;gap:6px;display:flex}.peak-bars-legend{color:var(--muted);flex-wrap:wrap;gap:14px;font-size:.74rem;display:flex}.peak-bars-legend i{vertical-align:-1px;border-radius:2px;width:9px;height:9px;margin-right:6px;display:inline-block}.dot-load,.pb-load{background:var(--load)}.dot-grid,.pb-grid{background:var(--power)}.peak-bars-plot{border-bottom:1px solid var(--line);align-items:flex-end;gap:2px;height:90px;display:flex}.peak-bar{flex:1;justify-content:center;align-items:flex-end;gap:1px;min-width:0;height:100%;display:flex}.peak-bar span{opacity:.85;border-radius:2px 2px 0 0;flex:1;max-width:14px}.peak-bar:hover span{opacity:1}.peak-bars-axis{color:var(--muted);justify-content:space-between;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.7rem;display:flex}.sim-card{min-width:0;margin-top:18px}.sim-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.sim-head .card-title{margin-bottom:2px}.sim-sub{color:var(--muted);margin:0;font-size:.8rem}.sim-inputs{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));align-items:end;gap:10px 12px;margin-top:16px;display:grid}.sim-field{color:var(--muted);flex-direction:column;gap:4px;min-width:0;font-size:.74rem;font-weight:600;display:flex}.sim-input{border:1px solid var(--line);background:var(--surface-2);border-radius:9px;align-items:center;gap:6px;height:36px;padding:0 10px;display:flex}.sim-input:focus-within{border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-soft)}.sim-input input{width:100%;min-width:0;color:var(--ink);background:0 0;border:none;outline:none;flex:1;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.88rem}.sim-input small{color:var(--muted);font-weight:500}.sim-toggle{color:var(--ink);grid-column:1/-1;align-items:center;gap:8px;font-size:.82rem;display:inline-flex}.sim-toggle input{accent-color:var(--signal)}.sim-derived{color:var(--muted);margin:8px 0 0;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.78rem}.sim-body{margin-top:16px;transition:opacity .2s}.sim-body.is-loading{opacity:.55}.sim-kpis{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;margin-bottom:18px;display:grid}.sim-kpi{border-radius:var(--radius);border:1px solid var(--line);background:radial-gradient(140% 120% at 100% 0%, var(--signal-soft), transparent 65%), var(--surface-2);flex-direction:column;gap:3px;min-width:0;padding:12px 14px;display:flex}.sim-before{color:var(--muted);text-decoration:line-through;-webkit-text-decoration-color:color-mix(in srgb, var(--muted) 60%, transparent);text-decoration-color:color-mix(in srgb, var(--muted) 60%, transparent);font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.8rem}.sim-before span{text-decoration:none;display:inline-block}.sim-after{color:var(--signal);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:1.08rem;font-weight:650}.sim-chart-title{color:var(--muted);font-size:.78rem;font-weight:650}.legend-dot.is-dashed{opacity:.5}a.app-header-user{color:var(--ink);border-radius:999px;padding:3px 8px 3px 3px;text-decoration:none;transition:background .15s}a.app-header-user:hover,a.app-header-user.active{background:var(--hover)}.app-header-user-text span{text-transform:none}.nowrap{white-space:nowrap}.role-chip{white-space:nowrap;border-radius:999px;align-items:center;padding:3px 9px;font-size:.7rem;font-weight:650;display:inline-flex}.role-chip.role-admin,.user-summary-chip.role-admin strong{color:var(--signal)}.role-chip.role-admin{background:var(--signal-soft)}.role-chip.role-operator,.user-summary-chip.role-operator strong{color:var(--power)}.role-chip.role-operator{background:var(--power-soft)}.role-chip.role-viewer,.user-summary-chip.role-viewer strong{color:var(--load)}.role-chip.role-viewer{background:var(--load-soft)}.avatar-role-operator{color:var(--power);background:var(--power-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--power) 25%, transparent)}.avatar-role-viewer{color:var(--load);background:var(--load-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--load) 25%, transparent)}.user-summary{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.user-summary-chip{border:1px solid var(--line);background:var(--surface);color:var(--muted);box-shadow:var(--shadow-sm);border-radius:999px;align-items:baseline;gap:6px;padding:6px 12px;font-size:.8rem;display:inline-flex}.user-summary-chip strong{color:var(--ink);font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.95rem}.user-summary-chip.is-disabled strong{color:var(--bad)}.users-toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;display:flex}.users-toolbar .search-field{flex:220px;min-width:0}.users-toolbar-note{margin-right:auto;font-size:.8rem}.users-add{margin-left:auto}.user-cell-text{flex-direction:column;min-width:0;line-height:1.25;display:flex}.user-cell-text strong{align-items:center;gap:6px;font-weight:600;display:inline-flex}.user-cell-text>span{color:var(--muted);font-size:.76rem;font-weight:400}.user-contact{flex-direction:column;font-size:.82rem;line-height:1.35;display:flex}.users-list tr.is-disabled td{opacity:.62}.users-list tr.is-disabled td:last-child{opacity:1}.users-edit-cell{text-align:right!important}.station-chips{flex-wrap:wrap;gap:4px;display:inline-flex}.station-chip{background:var(--surface-2);border:1px solid var(--line);white-space:nowrap;text-overflow:ellipsis;border-radius:6px;max-width:180px;padding:2px 8px;font-size:.72rem;font-weight:600;display:inline-block;overflow:hidden}.station-chip.is-all{color:var(--good);background:var(--good-soft);border-color:#0000}.session-current{letter-spacing:.04em;color:var(--signal);background:var(--signal-soft);border-radius:999px;padding:1px 7px;font-size:.64rem;font-weight:700}.audit-action{white-space:nowrap;font-size:.78rem;font-weight:600}.audit-create{color:var(--good)}.audit-delete{color:var(--bad)}.audit-details{color:var(--muted);overflow-wrap:anywhere;font-size:.8rem}.audit-table td.audit-details{max-width:420px}@media (max-width:720px){.users-table-wrap{overflow:visible}.users-list thead{display:none}.users-list,.users-list tbody,.users-list tr{width:100%;display:block}.users-list tr{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);margin-bottom:10px;padding:10px 12px}.users-list td{text-align:right;justify-content:space-between;align-items:center;gap:12px;width:100%;min-width:0;display:flex;border:none!important;padding:4px 0!important}.users-list td>*{min-width:0}.users-list td.audit-details{white-space:normal;text-align:right}.users-list td:before{content:attr(data-label);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);text-align:left;flex:none;font-size:.7rem;font-weight:600}.users-list td:first-child{padding-bottom:8px!important}.users-list td:first-child:before,.users-list td.users-edit-cell:before{display:none}.users-list td.users-edit-cell{justify-content:flex-end}.users-list .user-contact{overflow-wrap:anywhere;align-items:flex-end;min-width:0}.users-list .station-chips{justify-content:flex-end}.audit-table td.audit-details{max-width:none}.users-add{margin-left:0}}.user-drawer{width:min(640px,100%)}.user-drawer .drawer-header{flex-wrap:nowrap;align-items:center}.user-drawer-title{align-items:center;gap:12px;min-width:0;display:flex}.user-drawer-title .avatar{width:42px;height:42px;font-size:.85rem}.user-drawer-title h2{overflow-wrap:anywhere}.user-block-title{margin:4px 0 10px;font-size:.82rem;font-weight:650}.user-form{flex-direction:column;gap:10px;display:flex}.user-form .user-block-title{margin-top:8px}.user-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px 12px;display:grid}.user-field{color:var(--muted);flex-direction:column;gap:5px;min-width:0;font-size:.76rem;font-weight:600;display:flex}.user-field small{font-size:.72rem;font-weight:400}.user-field input,.user-field textarea,.user-confirm-input,.pw-input{font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:9px;width:100%;min-width:0;padding:8px 11px;font-size:.88rem;font-weight:400;transition:border-color .15s,box-shadow .15s}.user-field textarea{resize:vertical}.user-field input:focus,.user-field textarea:focus,.user-confirm-input:focus,.pw-input:focus-within{border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-soft);outline:none}.user-field input[aria-invalid=true]{border-color:var(--bad)}.pw-input{align-items:center;gap:4px;padding:3px 4px 3px 11px;display:flex}.user-field .pw-input input{min-width:0;color:var(--ink);box-shadow:none;background:0 0;border:none;outline:none;flex:1;padding:5px 0;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.86rem}.pw-input input{min-width:0;color:var(--ink);background:0 0;border:none;outline:none;flex:1;padding:5px 0;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.86rem}.pw-btn{background:var(--surface-2);color:var(--signal);font:inherit;cursor:pointer;border:none;border-radius:7px;flex:none;padding:5px 9px;font-size:.74rem;font-weight:600}.pw-btn:hover:not(:disabled){background:var(--signal-soft)}.pw-btn:disabled{opacity:.5;cursor:default}.pw-value{flex-wrap:wrap;align-items:center;gap:8px;display:inline-flex}.pw-value code{background:var(--surface);border:1px solid var(--line);overflow-wrap:anywhere;border-radius:7px;padding:4px 10px;font-size:1.05rem;font-weight:600}.user-issued{border-radius:var(--radius);background:var(--good-soft);border:1px solid color-mix(in srgb, var(--good) 30%, transparent);flex-direction:column;gap:8px;margin-bottom:14px;padding:14px 16px;font-size:.82rem;display:flex}.role-cards{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px;display:grid}.role-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--muted);cursor:pointer;flex-direction:column;align-items:flex-start;gap:6px;padding:10px 12px;font-size:.76rem;transition:border-color .15s,box-shadow .15s;display:flex;position:relative}.role-card input{opacity:0;pointer-events:none;position:absolute}.role-card.active{border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-soft);color:var(--ink)}.role-card.is-locked{cursor:not-allowed}.role-card:not(.active).is-locked{opacity:.55}.role-card:focus-within{border-color:var(--signal)}.user-switch{cursor:pointer;align-items:center;gap:8px;font-size:.84rem;display:inline-flex}.user-switch input{accent-color:var(--signal);width:16px;height:16px}.station-checklist{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:6px;display:grid}.station-checklist label{border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:9px;align-items:center;gap:9px;min-width:0;padding:7px 10px;font-size:.84rem;display:flex}.station-checklist label.active{border-color:color-mix(in srgb, var(--signal) 60%, var(--line));background:color-mix(in srgb, var(--signal) 6%, var(--surface))}.station-checklist input{accent-color:var(--signal)}.station-checklist .station-pick-icon{border-radius:8px;width:26px;height:26px}.station-check-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.user-hint{color:var(--muted);margin:0;font-size:.78rem}.user-hint.is-bad{color:var(--bad)}.user-hint.is-good{color:var(--good)}.user-notice{color:var(--good);margin:0;font-size:.82rem}.user-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:6px;display:flex}.user-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;margin:8px 0;display:flex}.user-row .user-block-title,.user-row .card-title{margin:0}.user-confirm-input{flex:180px;width:auto}.user-danger{border-color:color-mix(in srgb, var(--bad) 30%, var(--line))}.session-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.session-list li{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:10px 0;display:flex}.session-list li:last-child{border-bottom:none}.session-main{flex-direction:column;gap:2px;min-width:0;display:flex}.session-main strong{align-items:center;gap:8px;font-size:.86rem;display:inline-flex}.session-main>span{color:var(--muted);overflow-wrap:anywhere;font-size:.76rem}.audit-mini{flex-direction:column;gap:8px;margin:0;padding:0;font-size:.82rem;list-style:none;display:flex}.audit-mini li{grid-template-columns:82px minmax(0,1fr);gap:10px;display:grid}.audit-mini-when{color:var(--muted);font-size:.76rem}.account-avatar{width:42px;height:42px;font-size:.85rem}.account-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:18px;display:grid}.account-sessions{grid-column:1/-1}@media (max-width:900px){.account-grid{grid-template-columns:1fr}}.account-facts{margin-top:18px}.account-facts dd{text-align:right;margin:0}.account-role-help{padding-top:0!important}.account-role-help dd{text-align:left;color:var(--muted);font-size:.78rem}.password-form{max-width:420px}.account-forced{place-items:center;min-height:calc(100vh - 140px);display:grid}.account-force-card{flex-direction:column;gap:12px;width:min(460px,100%);display:flex}.account-force-card h1{letter-spacing:-.01em;margin:4px 0 0;font-size:1.25rem}.account-force-card .password-form{max-width:none}.account-logout{align-self:flex-start}.role-chip.role-custom{color:var(--ink);background:var(--hover);box-shadow:inset 0 0 0 1px var(--line)}.role-flag{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);background:var(--surface-2);border:1px solid var(--line);border-radius:6px;padding:2px 7px;font-size:.64rem;font-weight:700}.role-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;display:grid}.role-tile{text-align:left;font:inherit;color:var(--ink);cursor:pointer;flex-direction:column;align-items:flex-start;gap:10px;min-width:0;transition:border-color .15s,box-shadow .15s,transform .15s;display:flex}.role-tile:hover{border-color:color-mix(in srgb, var(--signal) 50%, var(--line));box-shadow:var(--shadow-md);transform:translateY(-1px)}.role-tile-head{flex-wrap:wrap;align-items:center;gap:6px 8px;display:flex}.role-tile-desc{color:var(--muted);margin:0;font-size:.82rem}.perm-chips{flex-wrap:wrap;gap:5px;display:flex}.perm-chip{color:var(--signal);background:var(--signal-soft);border-radius:6px;padding:3px 8px;font-size:.72rem;font-weight:600}.role-tile-users{color:var(--muted);align-items:center;gap:6px;margin-top:auto;font-size:.78rem;display:inline-flex}.perm-list{flex-direction:column;gap:6px;display:flex}.perm-item{border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:9px;align-items:flex-start;gap:10px;padding:9px 12px;display:flex}.perm-item.active{border-color:color-mix(in srgb, var(--signal) 60%, var(--line));background:color-mix(in srgb, var(--signal) 6%, var(--surface))}.perm-item input{accent-color:var(--signal);flex:none;margin-top:3px}.perm-item>span{flex-direction:column;gap:2px;min-width:0;display:flex}.perm-item strong{font-size:.86rem;font-weight:600}.perm-item code{color:var(--muted);font-size:.72rem}.perm-item small{color:var(--warn);font-size:.72rem}.user-notice-plain{background:var(--surface-2);border:1px solid var(--line);border-radius:9px;margin:0;padding:10px 12px;font-size:.82rem}.user-field input:disabled,.user-field textarea:disabled{opacity:.6}@media (max-width:600px){.page-header .segmented{width:100%}.page-header .segmented button{flex:1}}.sim-strategy{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px;display:grid}.sim-strategy-opt{text-align:left;border-radius:var(--radius);border:1.5px solid var(--line);background:var(--surface-2);color:var(--ink);font:inherit;cursor:pointer;flex-direction:column;gap:4px;padding:12px 14px;display:flex}.sim-strategy-opt span{color:var(--muted);font-size:.8rem}.sim-strategy-opt.active{border-color:var(--signal);background:var(--signal-soft)}.sim-strategy-opt.active strong{color:var(--signal)}.sim-inputs-evening{margin-top:4px}.eb{border-top:1px solid var(--line);flex-direction:column;gap:12px;margin-top:22px;padding-top:18px;display:flex}.eb-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.eb-head h3{margin:0 0 4px;font-size:1rem}.eb-head p{max-width:720px;margin:0}.eb-rates{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.eb-rate{border:1px solid var(--line);background:var(--surface-2);border-radius:999px;padding:4px 10px;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.78rem}.eb-tariff{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-2);flex-direction:column;gap:8px;padding:12px;display:flex}.eb-slot{grid-template-columns:70px minmax(0,1.2fr) minmax(0,1.4fr) 130px;align-items:center;gap:8px;display:grid}.eb-slot-head{color:var(--muted);font-size:.74rem;font-weight:600}.eb-slot input,.eb-money-input input{border:1px solid var(--line);width:100%;min-width:0;font:inherit;background:var(--surface);color:var(--ink);border-radius:8px;padding:7px 9px}.eb-money-input{color:var(--muted);white-space:nowrap;align-items:center;gap:6px;font-size:.82rem;display:flex}.eb-money-input input{font-family:IBM Plex Mono,ui-monospace,monospace}.eb-tariff-extra{flex-wrap:wrap;gap:18px;display:flex}.eb-tariff-extra label{color:var(--muted);flex-direction:column;gap:4px;font-size:.78rem;font-weight:600;display:flex}.eb-tariff-extra .eb-money-input input{width:110px}.eb-actions{justify-content:flex-end;gap:8px;display:flex}.eb-table-wrap{transition:opacity .2s;overflow-x:auto}.eb-table-wrap.is-loading{opacity:.55}.eb-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.82rem}.eb-table th{text-align:right;color:var(--muted);border-bottom:1px solid var(--line);white-space:nowrap;padding:8px 10px;font-size:.72rem;font-weight:600}.eb-table td{text-align:right;border-bottom:1px solid var(--line);white-space:nowrap;padding:10px;font-family:IBM Plex Mono,ui-monospace,monospace}.eb-table th:first-child,.eb-table td:first-child{text-align:left;font-family:inherit}.eb-table td small{color:var(--muted);font-size:.7rem;display:block}.eb-table tr.is-actual td{background:var(--surface-2)}.eb-total{font-weight:700}.eb-save{color:var(--good);font-weight:600}.eb-loss{color:var(--bad);font-weight:600}.eb-toggle{color:var(--signal);font:inherit;cursor:pointer;background:0 0;border:none;margin-top:10px;padding:0;font-weight:600}.eb-months{margin-top:8px}@media (max-width:640px){.eb-slot,.eb-slot-head{grid-template-columns:56px minmax(0,1fr)}.eb-slot-head span:nth-child(n+3){display:none}}.eb-ceiling{margin-top:18px}.eb-ceiling h4{flex-wrap:wrap;align-items:baseline;gap:10px;margin:0 0 8px;font-size:.95rem;display:flex}.eb-ceiling-pct{color:var(--signal);background:var(--signal-soft);border-radius:999px;padding:2px 8px;font-size:.8rem;font-weight:600}@container (max-width:820px){.ctl-schedule-head,.ctl-schedule-row{grid-template-columns:repeat(4,minmax(0,1fr))}.ctl-schedule-head>:nth-child(5),.ctl-schedule-head>:nth-child(6),.ctl-schedule-row>:nth-child(5),.ctl-schedule-row>:nth-child(6){grid-column:span 2}.ctl-schedule-head>:nth-child(7){display:none}.ctl-schedule-row>:nth-child(7){grid-column:1/-1;justify-self:end}.ctl-schedule-row{border-bottom:1px solid var(--line);padding-bottom:8px}}@container (max-width:460px){.ctl-schedule-head{display:none}.ctl-schedule-row{grid-template-columns:repeat(2,minmax(0,1fr))}.ctl-schedule-row>:nth-child(5),.ctl-schedule-row>:nth-child(6){grid-column:span 1}}
