/* Glidfer v159 - balanced portal contrast, not an image-wide contrast filter.
   Load LAST on the eleven EaaS portal pages only. No layout, data or logic changes.
   Existing navy / teal / sage / orange identities and original artwork are retained.
   WCAG 2.2 contrast targets: normal text 4.5:1; key visual controls 3:1.
   This stylesheet is not a claim of complete WCAG conformance. */
html[data-portal-contrast="v159"] {
  --pc-canvas:#e9f0f4; --pc-surface:#ffffff; --pc-inset:#e0eaf0;
  --pc-teal-surface:#dfefe9; --pc-blue-surface:#e2ecf5; --pc-sage-surface:#edf0dc;
  --pc-ink:#243f59; --pc-heading:#294c70; --pc-muted:#526b7f;
  --pc-border:#a9bfcc; --pc-control:#6d8799;
  --pc-accent:#216c63; --pc-hover:#19574f; --pc-focus:#00224f;
  --pc-positive:#24664f; --pc-warning:#805919; --pc-danger:#a0442c;
  --navy-dark:#001C40; --navy-deep:#00224F; --navy:#365879; --navy-soft:#536f8d;
  --teal-dark:#1F7168; --teal-deep:#246f66; --teal:#297a70;
  --teal-mid:#5b9a8e; --teal-light:#a0d1c8; --teal-pale:#dfefe9; --teal-very:#eff7f3;
  --ink:var(--pc-ink); --muted:var(--pc-muted); --navy-text:#385a75;
  --line:#b8cbd5; --line-soft:rgba(151,176,191,.65);
  --alert:#bd542f; --alert-deep:#9f4028; --alert-soft:#fae6dc;
  --live-green:#20854d; --shadow:0 7px 22px rgba(24,50,86,.085);
  --teal-900:#1F7168; --teal-800:#246f66; --teal-700:#246f66;
  --teal-650:#297a70; --teal-560:#297a70; --teal-500:#4d8f82;
  --teal-100:#dfefe9; --teal-060:#dfefe9; --teal-50:#eff7f3; --teal-030:#eff7f3;
  --navy-600:#365879; --navy-520:#365879; --navy-500:#496580; --navy-380:#496580;
  color-scheme:light; background:var(--pc-canvas);
}
html[data-portal-tone="navy"] { --pc-accent:#284b70; --pc-hover:#163859; --pc-teal-surface:#e2ecf5; }
html[data-portal-contrast] body { background:var(--pc-canvas); color:var(--pc-ink); }
html[data-portal-contrast] .site-shell { background:var(--pc-canvas); }
html[data-portal-contrast] .payments-page { --muted:var(--pc-muted); --navy-text:#385a75; }
/* Decorative illustrations remain intact; only the functional surfaces gain definition. */
html[data-portal-contrast] :is(.workspace-panel,.login-panel,.module-board,.detail-board,.side-panel,.panel,.dashboard-panel,.kpi-card,.metric-card,.health-card,.ops-panel,.chart-card,.spv-card,.return-card,.report-pack,.control-room,.asset-card,.timeline-card) {
  background-color:var(--pc-surface); border-color:var(--pc-border); box-shadow:var(--shadow);
}
html[data-portal-contrast] :is(.workspace-panel,.login-panel,.module-board,.panel,.dashboard-panel,.kpi-card,.metric-card) { background-image:none; }
html[data-portal-contrast] :is(.workspace-panel,.login-panel) { border-top:3px solid var(--pc-accent); }
html[data-portal-contrast] :is(.workspace-panel,.module-board,.metric-card,.kpi-card,.dashboard-panel,.health-card,.ops-panel)::before { background:var(--pc-accent); }
html[data-portal-contrast] :is(.workspace-panel,.module-board,.metric-card,.kpi-card,.dashboard-panel)::after { opacity:.12; }
html[data-portal-contrast] .dashboard-board { background:var(--pc-inset); border-color:var(--pc-border); box-shadow:var(--shadow); }
html[data-portal-contrast] :is(.detail-board,.side-panel) { background:#f3f7f9; }
html[data-portal-contrast] :is(.overview-tile,.forecast-chip,.ops-mini,.env-tile,.meta-tile,.mini-metric,.valuation-item,.document-categories article,.reference-facts>div,.dialog-kpis>div) { background:#f0f5f8; border-color:var(--pc-border); }
html[data-portal-contrast] :is(.workspace-panel h2,.module-head h2,.payments-page h2,.payments-page h3,.detail-board h2,.side-title,.kpi-value,.metric-value,.money-value) { color:var(--pc-heading); }
html[data-portal-contrast] :is(.tagline-text,.utility-nav,.user-chip,.panel-note,.metric-unit,.kpi-unit,.source-note,.workspace-panel p,.portal-head p,.support,.access-note) { color:var(--pc-muted); }
html[data-portal-contrast] :is(.tagline-text a:hover,.tagline-text a:focus-visible) { color:var(--navy-deep); }
html[data-portal-contrast] :is(.eyebrow,.section-kicker,.metric-label,.kpi-label,.panel-kicker,.side-title) { color:var(--pc-accent); }
/* Inputs, secondary controls and an unambiguous selected state. */
html[data-portal-contrast] :is(input:not([type=checkbox]):not([type=radio]),select,textarea) { border-color:var(--pc-control); color:var(--pc-ink); background-color:#fff; }
html[data-portal-contrast] :is(input,textarea)::placeholder { color:#587185; opacity:1; }
html[data-portal-contrast] :is(input[type=checkbox],input[type=radio]) { border-color:var(--pc-control); accent-color:var(--pc-accent); }
html[data-portal-contrast] :is(.workspace-link,.date-button,.filter-button,.button-outline,.button-quiet,.icon-button,.nav-btn,.action-btn,.doc-btn,.entity-tabs button,.map-zoom-button,.map-btn,.currency-option,.pagination button,.ws-jump) {
  border-color:var(--pc-control); color:var(--pc-accent); background-color:#fff;
}
html[data-portal-contrast] :is(.workspace-link.is-active,.filter-button,.button-primary,.nav-btn.primary,.action-btn.primary,.doc-btn.primary,.entity-tabs button.is-active,.submit,.btn:not(.secondary):not(.danger)) {
  color:#fff; background:var(--pc-accent); border-color:var(--pc-accent);
}
html[data-portal-contrast] .workspace-link.is-active svg { color:#fff; }
html[data-portal-contrast] :is(.workspace-link:not(.is-active),.button-outline,.button-quiet,.ws-jump,.nav-btn:not(.primary)):hover { background:var(--pc-teal-surface); border-color:var(--pc-accent); }
html[data-portal-contrast] :is(.filter-button,.button-primary,.submit):hover { background:var(--pc-hover); border-color:var(--pc-hover); }
html[data-portal-contrast] :is(.period-switch,.sv-mode-switch) { background:var(--pc-inset); border-color:var(--pc-border); }
html[data-portal-contrast] :is(.period-switch,.sv-mode-switch) button { color:#34586c; }
html[data-portal-contrast] :is(.period-switch,.sv-mode-switch) button[aria-pressed=true] { background:var(--pc-accent); color:white; border-color:var(--pc-accent); box-shadow:0 2px 4px #19355520; }
html[data-portal-contrast] .workspace-tabs { border-bottom:2px solid var(--pc-border); }
html[data-portal-contrast] .workspace-tabs button { color:#4c647a; }
html[data-portal-contrast] .workspace-tabs button[aria-selected=true] { background:var(--pc-teal-surface); border-bottom:3px solid var(--pc-accent); color:#174e49; box-shadow:inset 0 1px var(--pc-border); }
html[data-portal-contrast] :is(.workspace-link,.asset-tab,.sv-accum,.ws-result):focus-visible,
html[data-portal-contrast] :is(a,button,input,select,textarea,summary,[tabindex]):focus-visible {
  outline:3px solid var(--pc-focus); outline-offset:3px;
}
html[data-portal-contrast] :is(.period-switch,.sv-mode-switch) button:focus-visible { outline-offset:1px; }
html[data-portal-contrast] .ws-input-wrap { border-color:var(--pc-control); background:#fff; }
html[data-portal-contrast] .workspace-search .ws-input-wrap input { border:0; background:transparent; box-shadow:none; }
html[data-portal-contrast] .ws-input-wrap:focus-within { border-color:var(--pc-focus); box-shadow:0 0 0 2px #00224f; }
html[data-portal-contrast] .workspace-search .ws-input-wrap input:focus-visible { outline:none; }
html[data-portal-contrast] .workspace-search { background:var(--pc-surface); border-color:var(--pc-border); border-left-color:var(--pc-accent); box-shadow:var(--shadow); }
html[data-portal-contrast] :is(.ws-icon,.ws-count,.ws-jump .ws-icon) { color:var(--pc-accent); }
html[data-portal-contrast] :is(.ws-scope,.ws-help-row,.ws-help-row p,.ws-result small) { color:var(--pc-muted); }
html[data-portal-contrast] .ws-result { border-color:var(--pc-border); background:#f3f7f9; }
html[data-portal-contrast] .ws-result:hover { background:var(--pc-teal-surface); border-color:var(--pc-accent); }
/* Tables and notices: surface hierarchy, not a dense grid of heavy outlines. */
html[data-portal-contrast] :is(.table-frame,.table-scroll,.log-table-wrap,.equipment-table-wrap,.statement-table-wrap,.report-table-wrap) { border-color:var(--pc-border); }
html[data-portal-contrast] th { background-color:#e0eaf0; color:#244e65; border-bottom-color:#8ba7b8; }
html[data-portal-contrast] td { border-bottom-color:#c6d5de; }
html[data-portal-contrast] :is(.module-board,.payment-workspace,.report-table-wrap,.statement-table-wrap) tbody tr:nth-child(even) { background-color:#f0f5f8; }
html[data-portal-contrast] :is(.payment-table,.fee-details-table,.sv-record-table,.module-board table,.device-table) tbody tr:hover td { background:#e1efea; }
html[data-portal-contrast] :is(.demo-notice,.document-notice,.sv-demo-note,.recon-explainer>div,.subpanel,.sv-method,.fee-reference-details) { background:#e8f0f5; border-color:var(--pc-border); }
html[data-portal-contrast] :is(.billing-ribbon,.metric-outstanding,.reference-notice) { background:var(--pc-teal-surface); border-color:#83ab9f; }
html[data-portal-contrast] :is(.due-date-tile,.metric-outstanding .money-value) { color:#1d6157; }
html[data-portal-contrast] .badge { color:#205c4e; background:#e0efe6; border-color:#88b19d; }
html[data-portal-contrast] .badge.paid { color:#205b43; background:#dfefe2; border-color:#87ad93; }
html[data-portal-contrast] :is(.badge.partial,.badge.warning,.badge.pending) { color:#745216; background:#f4ebd1; border-color:#b59a5b; }
html[data-portal-contrast] :is(.badge.overdue,.badge.query,.status-pill.alert,.status-pill.alert-status) { color:#923b24; background:#fbe7dc; border-color:#ca927b; }
html[data-portal-contrast] :is(.badge.due,.badge.neutral) { color:#375776; background:#e4ecf5; border-color:#92abc1; }
/* Three fee families retain the original teal, blue and sage identities. */
html[data-portal-contrast] .fee-card { background:var(--pc-teal-surface); border-color:#83ab9f; border-top:3px solid #216c63; }
html[data-portal-contrast] .fee-ems { background:var(--pc-blue-surface); border-color:#92aac4; border-top-color:#355d87; }
html[data-portal-contrast] .fee-performance { background:var(--pc-sage-surface); border-color:#a5b47b; border-top-color:#5b702e; }
html[data-portal-contrast] :is(.fee-amount,.fee-link) { color:#1d6257; }
html[data-portal-contrast] .fee-ems :is(.fee-amount,.fee-link) { color:#2d527a; }
html[data-portal-contrast] .fee-performance :is(.fee-amount,.fee-link) { color:#4c6022; }
html[data-portal-contrast] :is(.fee-kind,.fee-currency,.fee-basis strong,.fee-basis span) { color:#3a6359; }
html[data-portal-contrast] .fee-ems :is(.fee-kind,.fee-currency,.fee-basis strong,.fee-basis span) { color:#415e7b; }
html[data-portal-contrast] .fee-performance :is(.fee-kind,.fee-currency,.fee-basis strong,.fee-basis span) { color:#526333; }
html[data-portal-contrast] :is(.fee-basis,.fee-link) { border-color:#adc9bf; }
html[data-portal-contrast] .fee-ems :is(.fee-basis,.fee-link) { border-color:#b0c2d8; }
html[data-portal-contrast] .fee-performance :is(.fee-basis,.fee-link) { border-color:#becb9e; }
html[data-portal-contrast] .fee-number { background:#fff; border-color:#81a69c; color:#21675b; }
html[data-portal-contrast] .fee-ems .fee-number { border-color:#8da7c0; color:#30567d; }
html[data-portal-contrast] .fee-performance .fee-number { border-color:#9ead79; color:#50622b; }
html[data-portal-contrast] .fee-composition { height:7px; }
html[data-portal-contrast] .fee-composition>span { background:#24766a; }
html[data-portal-contrast] .fee-composition>span:nth-child(2) { background:#3d648e; }
html[data-portal-contrast] .fee-composition>span:nth-child(3) { background:#647c37; }
html[data-portal-contrast] .fee-savings-launch { color:#45571e; background:#dce6bd; border-color:#8d9f62; }
html[data-portal-contrast] .fee-savings-launch:hover { background:#cfdcac; border-color:#5b702e; }
html[data-portal-contrast] :is(.reference-settlement,.sv-fee-linkage) { background:var(--pc-sage-surface); border-color:#a5b47b; }
html[data-portal-contrast] :is(.fee-details-table tfoot td,.reference-table .reference-total td,.fee-details-table .fee-col-emphasis) { background:#dceee5; color:#245c50; }
/* Savings workspace: four clearly differentiated surfaces plus distinct chart marks. */
html[data-portal-contrast] .savings-panel {
  --sv-base:#466c96; --sv-actual:#196859; --sv-fill:#c3e1d4; --sv-cumulative:#263f65; --sv-negative:#a0442c;
}
html[data-portal-contrast] .sv-kpis { border-color:#96b0bf; }
html[data-portal-contrast] .sv-kpi { background:var(--pc-blue-surface); border-color:#a6bccc; }
html[data-portal-contrast] .sv-kpi-actual { background:#e0eee9; }
html[data-portal-contrast] .sv-kpi-saving { background:#d0e7dc; }
html[data-portal-contrast] .sv-kpi strong { color:#2c527a; }
html[data-portal-contrast] .sv-kpi-actual strong { color:#205f54; }
html[data-portal-contrast] .sv-kpi-saving strong { color:#184f3b; }
html[data-portal-contrast] :is(.sv-kpi p,.sv-kpi span) { color:#3d5d73; }
html[data-portal-contrast] .sv-equation { background:#e0eee8; border-color:#9fbcb0; color:#305c4e; }
html[data-portal-contrast] .sv-equation b { color:#4e6e62; }
html[data-portal-contrast] .sv-accum { background:#edf5ef; border-color:#83ab96; border-top:3px solid #377052; }
html[data-portal-contrast] .sv-accum:hover { background:#dfeee3; border-color:#2f6d4d; }
html[data-portal-contrast] :is(.sv-accum strong,.sv-accum-top,.sv-accum small,.sv-accum em) { color:#335f49; }
html[data-portal-contrast] .sv-chart-card { background:#fff; border-color:var(--pc-border); }
html[data-portal-contrast] .sv-chart .sv-axis { fill:#47627c; }
html[data-portal-contrast] .sv-chart .sv-grid { stroke:#c5d4de; }
html[data-portal-contrast] .sv-chart .sv-baseline-path { stroke-width:2.6; stroke-dasharray:6 4; }
html[data-portal-contrast] .sv-chart .sv-actual-path { stroke-width:3; }
html[data-portal-contrast] .sv-chart .sv-cumulative-path { stroke-width:2.8; }
html[data-portal-contrast] .sv-chart .sv-gap-area { opacity:.85; }
html[data-portal-contrast] .sv-chart .sv-bar { fill:#397f65; stroke:#24654d; stroke-width:1; }
html[data-portal-contrast] .sv-chart .sv-bar.negative { fill:#b05d43; stroke:#93452f; }
html[data-portal-contrast] .sv-legend-area { border-color:#528371; }
html[data-portal-contrast] .sv-chart .sv-hit:focus-visible { stroke:#00224f; stroke-width:2; }
html[data-portal-contrast] :is(.sv-back-button,.sv-back-floating) { color:#fff; background:#216c63; border-color:#216c63; }
html[data-portal-contrast] :is(.sv-back-button,.sv-back-floating):hover { background:#19574f; }
html[data-portal-contrast] .sv-return-bar { border-color:var(--pc-border); background:#edf4f7; }
/* Other existing customer charts; logos and illustrated SVGs are deliberately excluded. */
html[data-portal-contrast] :is(.line-chart,.bar-chart,.mini-chart,.rte-mini-chart,.downtime-chart,.area-chart,.chart-card) :is(.axis-text,.axis-muted,.axis-label) { fill:#496780; }
html[data-portal-contrast] .line-discharge { stroke:#4c7699; stroke-dasharray:6 3; }
html[data-portal-contrast] :is(.dot-discharge,.bar-discharge) { stroke:#4c7699; fill:#4c7699; }
html[data-portal-contrast] :is(.line-charge,.line-discharge,.line-alert) { stroke-width:2.8; }
html[data-portal-contrast] :is(.bar-history i,.progress-fill) { background:#377b6d; }
html[data-portal-contrast] .bar-history i:nth-child(odd) { background:#4d7097; }
html[data-portal-contrast] .progress-fill.alert { background:#aa4d30; }
html[data-portal-contrast] .asset-tab { border-color:#9eb5c3; }
html[data-portal-contrast] .asset-tab.active { background:#204b5c; border-color:#204b5c; }
html[data-portal-contrast] .asset-tab.active :is(strong,span,.num) { color:#fff; }
html[data-portal-contrast] .asset-tab.active .num { background:#3b6471; }
/* Reverse text, panels and popovers keep readable contrast on their dark surfaces. */
html[data-portal-contrast] :is(.sv-tooltip,.dashboard-tooltip,.asset-tooltip,.payment-toast) { color:#fff; }
html[data-portal-contrast] :is(.sv-tooltip,.dashboard-tooltip,.asset-tooltip) :is(small,span,strong,b,p,div) { color:#e1eef4; }
html[data-portal-contrast] .payment-dialog { border-color:#8da7b8; background:#fff; }
html[data-portal-contrast] .dialog-header { background:#e5eef3; border-color:#a0b8c7; }
html[data-portal-contrast] .payment-dialog::backdrop { background:rgba(12,31,49,.52); }
html[data-portal-contrast] .footer { opacity:1; }
html[data-portal-contrast] .footer-message { opacity:1; }
html[data-portal-contrast][data-portal-page="admin-console_v01"] .hero { background:linear-gradient(120deg,#19584f,#28496b); }
html[data-portal-contrast][data-portal-page="admin-console_v01"] .hero :is(h1,p,span,strong) { color:#fff; }
html[data-portal-contrast][data-portal-page="admin-console_v01"] .session-card { background:#ffffff17; border-color:#ffffff77; color:#fff; }
html[data-portal-contrast][data-portal-page="admin-console_v01"] .session-card * { color:#fff; }
html[data-portal-contrast][data-portal-page="internal-login_v18"] .login-panel { background:#fff; }
html[data-portal-contrast][data-portal-page="internal-login_v18"] .footer { color:var(--pc-muted); }
/* OS high-contrast and motion preferences remain meaningful. */
@media (prefers-contrast:more) {
  html[data-portal-contrast] { --pc-border:#6b8797; --pc-control:#456579; --pc-muted:#344f65; --line:#91a9b7; }
  html[data-portal-contrast] :is(.panel,.workspace-panel,.sv-chart-card,.fee-card,.metric-card) { box-shadow:none; }
}
@media (prefers-reduced-motion:reduce) {
  html[data-portal-contrast] :is(.utility-dot,.status-pill::before,.map-legend-dot.issue) { animation:none!important; }
}
@media (forced-colors:active) {
  html[data-portal-contrast] :is(.workspace-link,.button,.fee-card,.sv-kpi,.sv-accum,.ws-input-wrap) { border:1px solid CanvasText; forced-color-adjust:auto; }
  html[data-portal-contrast] :is(.workspace-link.is-active,.period-switch button[aria-pressed=true],.sv-mode-switch button[aria-pressed=true]) { outline:2px solid Highlight; }
}
/* Final measured fixes and synchronized legends. */
html[data-portal-contrast] .tagline-text { opacity:1!important; }
html[data-portal-contrast] .clock-card .clock-icon { color:#fff; }
html[data-portal-contrast] .facility-visual text { fill:#3c5d7b; }
html[data-portal-contrast] .legend-swatch { height:2px; background:#1f7168; color:#1f7168; }
html[data-portal-contrast] .legend-swatch.discharge { background:repeating-linear-gradient(90deg,#4c7699 0 6px,transparent 6px 9px); color:#4c7699; }
html[data-portal-contrast] .sv-legend-bar { background:#397f65; border-color:#24654d; }
html[data-portal-contrast] .sv-dot { background:#276c55; }
html[data-portal-contrast] .sv-dot.baseline { background:var(--sv-base); }
html[data-portal-contrast] .sv-dot.actual { background:var(--sv-actual); }
@media print {
  html[data-portal-contrast] body,html[data-portal-contrast] .site-shell { background:#fff; }
  html[data-portal-contrast] :is(.panel,.metric-card,.fee-card,.workspace-panel,.dashboard-panel) { box-shadow:none; }
}
html[data-portal-contrast] { --danger:#9f3f4f; --ok:#246b4d; }
html[data-portal-contrast][data-portal-page="admin-console_v01"] .table-wrap td span { color:var(--pc-muted)!important; }
html[data-portal-contrast][data-portal-page="admin-console_v01"] .mini { border-color:var(--pc-control); }
html[data-portal-contrast][data-portal-page="admin-console_v01"] .mini.delete { color:#923d45; }
html[data-portal-contrast] :is(.dashboard-tooltip,.asset-tooltip) { background:#173c53; border-color:#52768b; }
html[data-portal-contrast] .recon-explainer>div>span { color:#216c63; }
/* Contain the existing admin account table on narrow screens. */
html[data-portal-contrast][data-portal-page="admin-console_v01"] .grid>.panel { min-width:0; }
html[data-portal-contrast][data-portal-page="admin-console_v01"] .filters :is(input,select) { min-width:0; max-width:100%; }
