:root {
    --excel-grid: #d0d0d0;
    --excel-grid-strong: #909090;
    --excel-header-bg: #e8eaed;
    --excel-header-text: #404040;
    --excel-row-header: #f3f4f6;
    --excel-text: #1a1a1a;
    --excel-muted: #707070;
    --excel-tco-bg: #e6f0fa;
    --excel-roi-bg: #f0e6fa;
    --green: #1e7a3c;
    --green-bg: #e8f5ec;
    --green-strong-bg: #c8eed4;
    --red: #b41e1e;
    --red-bg: #fbeaea;
    --gold: #b8860b;
    --gold-bg: #fef5e0;
    --accent-dark: #0d2438;
    --accent: #1e4d6b;
    --sans: -apple-system, BlinkMacSystemFont, 'Inter', 'Segoe UI', sans-serif;
    --mono: 'SF Mono', Menlo, Consolas, monospace;
    --serif: 'Charter', 'Iowan Old Style', Georgia, serif;
    /* sticky bar: collapses from --bar-exp (top) to --bar-col (scrolled); driven by --collapse 0..1 */
    --bar-exp: 404px; --bar-col: 94px;
    --val-base: 24px; --val-grow: 6px; --fig-w: 14%;
    --collapse: 0; --desc-scale: 1;
  }
  .bar-h { height: calc(var(--bar-exp) - (var(--bar-exp) - var(--bar-col)) * var(--collapse) + env(safe-area-inset-top, 0px)); }
  * { box-sizing: border-box; }
  html { scrollbar-gutter: stable; overflow-y: scroll; }
  body { margin: 0; position: relative; background: #f0f0f0; color: var(--excel-text); font-family: var(--sans); font-size: 13px; line-height: 1.4; padding-top: calc(var(--bar-exp) + env(safe-area-inset-top, 0px)); }
  .sticky-bar { position: absolute; top: 0; left: 0; right: 0; width: 100%; z-index: 50; background: var(--accent-dark); color: white; padding: 0 14px; padding-top: env(safe-area-inset-top, 0px); box-shadow: 0 2px 8px rgba(0,0,0,0.15); box-sizing: border-box; height: calc(var(--bar-exp) - (var(--bar-exp) - var(--bar-col)) * var(--collapse) + env(safe-area-inset-top, 0px)); overflow: hidden; }

  /* STICKY BAR — big = the 5 KPIs stacked on the left; scrolling sweeps each one along a quarter-ellipse
     (pivoting on the top-left KPI) up into the compact row. JS sets each cell's transform + width;
     --collapse (0..1) drives bar height, font sizes and the fading descriptions. */
  .sticky-grid { position: relative; max-width: 980px; margin: 0 auto; height: 100%; }
  .sticky-cell { position: absolute; top: 0; left: 0; display: flex; flex-direction: row; align-items: flex-start; column-gap: calc((1 - var(--collapse)) * 2px); text-align: left; line-height: 1.15; text-decoration: none; cursor: pointer; border-radius: 6px; padding: calc(3px + (1 - var(--collapse)) * 4px) 14px calc((1 - var(--collapse)) * 4px) 13px; box-sizing: border-box; overflow: hidden; transition: background 0.12s; will-change: transform, width, height; }
  @media (hover: hover) { .sticky-cell:hover { background: rgba(255,255,255,0.08); } }
  @media (hover: hover) { .sticky-cell:hover .sticky-value { text-decoration: underline; text-underline-offset: 3px; } }
  .sticky-cell:hover .kpi-arrow { transform: translateY(calc(-50% + 2px)); }
  .kpi-arrow { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); color: #b3e5c7; font-weight: 800; line-height: 1; font-size: calc(13px + (1 - var(--collapse)) * 9px); opacity: 0; display: none; pointer-events: none; transition: transform 0.12s; }
  /* left column = figure (label+value), ~1/5 of the width; right = description, ~4/5; divider lines up because every big line spans the full width */
  .sticky-fig { display: flex; flex-direction: column; flex: 0 0 auto; width: calc(var(--fig-w) * (1 - var(--collapse)) + 100% * var(--collapse)); min-width: 0; overflow: hidden; justify-content: flex-start; row-gap: calc(1px + (1 - var(--collapse)) * 2px); padding-right: calc((1 - var(--collapse)) * 5px); }
  .sticky-label { font-family: var(--mono); font-size: calc(10px + (1 - var(--collapse)) * 4px); letter-spacing: 0.1em; text-transform: uppercase; color: rgba(255,255,255,0.62); font-weight: 700; line-height: 1.18; margin-top: -0.09em; }
  /* expanded: figure matches the description size exactly (33px = 17+16, same as .sticky-desc) and rides the
     same --desc-scale the search maximizes; collapsed: stays at --val-base so the scrolled bar is readable */
  .sticky-value { font-size: min(calc(var(--val-base) + (1 - var(--collapse)) * (33px * var(--desc-scale) - var(--val-base))), 40px); font-weight: 800; color: #b3e5c7; letter-spacing: -0.015em; line-height: 1; white-space: nowrap; font-variant-numeric: tabular-nums; }
  .sticky-value.main { color: white; }
  .sticky-value .decimals { font-size: 0.6em; opacity: 0.85; font-weight: 600; }
  .sticky-value .unit { font-size: 0.5em; opacity: 0.8; font-weight: 700; margin-left: 1px; vertical-align: baseline; letter-spacing: 0; }
  .sticky-desc { flex: 1 1 0; min-width: 0; max-width: calc(max(0, 1 - var(--collapse) * 3) * 100%); font-size: calc((17px + (1 - var(--collapse)) * 16px) * var(--desc-scale)); line-height: 1.28; margin-top: -0.14em; color: rgba(255,255,255,0.98); opacity: calc(1 - var(--collapse) * 4); overflow: hidden; font-weight: 500; letter-spacing: 0.002em; }
  .sticky-desc strong { color: #b3e5c7; font-weight: 800; }
  .excel-block { scroll-margin-top: 152px; }
  /* ---- View toggle: starts in place, sticks under the KPI bar when reached, overlays site ---- */
  .view-toggle-bar { position: sticky; top: var(--bar-now, 0px); z-index: 45; background: transparent; margin: 0 0 14px; padding: 6px 14px; pointer-events: none; }
  .view-toggle-inner { max-width: 980px; margin: 0 auto; width: 100%; display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; pointer-events: none; }
  .view-toggle-prefix { flex: 1; text-align: left; font-family: var(--sans); font-size: 11px; font-weight: 400; letter-spacing: 0; text-transform: none; color: var(--excel-muted); line-height: 1.5; pointer-events: auto; }
  .view-toggle { display: inline-flex; flex: none; flex-direction: row; background: rgba(255,255,255,0.97); border: 1px solid var(--excel-grid-strong); border-radius: 7px; padding: 1px; gap: 2px; pointer-events: auto; box-shadow: 0 1px 4px rgba(0,0,0,0.12); transform-origin: 0% 0%; will-change: transform; }
  .view-toggle button { border: none; background: transparent; font-family: var(--mono); font-size: 10.5px; font-weight: 700; letter-spacing: 0.02em; text-transform: uppercase; color: var(--excel-muted); padding: 2px 8px; border-radius: 5px; cursor: pointer; transition: background 0.15s, color 0.15s; white-space: nowrap; }
  .view-toggle button.on { background: var(--excel-header-bg); color: var(--accent-dark); box-shadow: inset 0 0 0 1px var(--excel-grid-strong); }
  /* ---- Collapsible result blocks ---- */
  .excel-block-title.collapsible { cursor: pointer; }
  .excel-block-title.collapsible::after { content: '▾'; position: absolute; right: 12px; top: 50%; transform: translateY(-50%); font-size: 11px; opacity: 0.6; transition: transform 0.15s; }
  .excel-block-title.collapsible { position: relative; padding-right: 30px; }
  .excel-block.collapsed .excel-block-title.collapsible::after { transform: translateY(-50%) rotate(-90deg); }
  .excel-block.collapsed > *:not(.excel-block-title) { display: none; }
  /* Cashflow + returns side by side only on wide desktop; stacked otherwise */
  .cf-returns-row { display: block; }
  #inv-svg { text-align: center; }
  #inv-svg svg { width: 100%; max-width: 640px; height: auto; display: inline-block; }
  .inv-chart-cap { font-family: var(--mono); font-size: 10px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--excel-muted); margin: 8px 0 4px; }
  .inv-legend { margin: 6px 0 14px; font-size: 11px; color: var(--excel-muted); }
  .inv-legend strong { color: var(--accent-dark); }
  #tbl-invest .inv-row-truck td { background: #e3efe6; font-weight: 700; }
  #tbl-invest .inv-row-truck td:first-child { box-shadow: inset 4px 0 0 var(--green); }
  .inv-scrollx { overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid var(--excel-grid-strong); }
  #tbl-invest .yc { table-layout: auto; width: auto; min-width: 100%; }
  #tbl-invest .yc th, #tbl-invest .yc td { white-space: nowrap; text-align: right; }
  #tbl-invest .yc thead th { background: var(--accent-dark); color: #fff; }
  #tbl-invest .yc tr.inv-row-truck td { background: #e3efe6; font-weight: 700; }
  #tbl-invest .yc td.yc-name, #tbl-invest .yc th.yc-name { position: sticky; left: 0; background: #fff; z-index: 1; text-align: left; }
  #tbl-invest .yc thead th.yc-name { background: var(--accent-dark); }
  #tbl-invest .yc tr.inv-row-truck td.yc-name { background: #e3efe6; }
  #tbl-invest .yc tr.yc-sub td { background: #faf8f2; color: var(--excel-muted); font-weight: 400; font-size: 10.5px; border-top: none; }
  #tbl-invest .yc tr.yc-sub td.yc-name { background: #faf8f2; padding-left: 18px; font-style: italic; }
  /* keep sign + € + number + M/k together on one line everywhere */
  td.val-pos, td.val-neg, td.cf-pos, td.cf-neg { white-space: nowrap; }
  .inv-detail-toggle { display: inline-flex; align-items: center; gap: 6px; margin: 4px 0 6px; font-size: 11px; color: var(--excel-muted); cursor: pointer; }
  .inv-frame { border: 1px solid var(--excel-grid-strong); border-radius: 5px; padding: 9px 11px 11px; margin: 12px 0 16px; background: #fff; }
  .inv-frame-title { font-weight: 700; font-size: 14px; color: var(--accent-dark); margin-bottom: 2px; }
  .inv-frame .inv-chart-cap { margin: 6px 0 3px; }
  .inv-frame #inv-cap { margin-top: 0; }
  .inv-frame .inv-legend { margin: 4px 0 4px; }
  .inv-frame .inv-detail-toggle { margin: 2px 0 5px; }
  @media (max-width: 720px) { #inv-svg svg { max-width: 100%; } }
  @media (min-width: 1080px) {
    .cf-returns-row { display: flex; gap: 18px; align-items: flex-start; }
    .cf-returns-row > .excel-block { flex: 1 1 0; min-width: 0; }
  }
  .excel-block.kpi-flash { animation: kpiflash 1.6s ease; }
  @keyframes kpiflash { 0%,15% { box-shadow: 0 0 0 3px var(--gold); } 100% { box-shadow: 0 0 0 3px transparent; } }

  .wrap { max-width: 980px; margin: 0 auto; padding: 0 16px 60px; }

  /* BELGIAN BANNER */
  .be-banner { background: white; border: 1px solid var(--excel-grid-strong); border-left: 3px solid var(--accent); border-radius: 4px; padding: 14px 18px; margin-bottom: 14px; }
  .be-banner .be-flag { font-family: var(--mono); font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--accent-dark); font-weight: 700; margin-bottom: 4px; }
  .be-banner h1 { font-family: var(--serif); font-size: 24px; margin: 0 0 4px; color: var(--accent-dark); letter-spacing: -0.01em; }
  .be-banner p { margin: 0; font-size: 13px; color: var(--excel-text); }
  .be-banner strong { color: var(--accent-dark); }

  /* DEMO BANNER */
  .demo-banner { background: var(--gold-bg); border: 1px solid var(--gold); border-left: 3px solid var(--gold); padding: 12px 18px; margin-bottom: 14px; font-size: 13px; line-height: 1.55; border-radius: 4px; }
  .demo-banner strong { color: var(--accent-dark); }
  .demo-banner .demo-label { font-family: var(--mono); font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--gold); font-weight: 700; margin-bottom: 4px; display: block; }

  /* ABSTRACT */
  .abstract { background: var(--accent-dark); color: white; width: 100%; border-top: 1px solid rgba(179,229,199,0.22); }
  .ab-band { max-width: 980px; margin: 0 auto; padding: 2px 16px; display: flex; align-items: center; justify-content: space-between; gap: 20px; }
  .ab-band #abstract-text { margin: 0; font-size: calc((17px + (1 - var(--collapse)) * 16px) * var(--desc-scale)); line-height: 1.28; font-weight: 500; color: rgba(255,255,255,0.85); }
  .sticky-bar .ab-title { max-width: 980px; margin: 0 auto calc(3px * var(--desc-scale)); padding: 16px 14px 16px 13px; font-size: calc((17px + (1 - var(--collapse)) * 16px) * var(--desc-scale)); line-height: 1.3; font-weight: 600; color: rgba(255,255,255,0.92); letter-spacing: 0.01em; }
  .sticky-bar .ab-title::before { content: "eTruck TCO analysis"; display: block; font-family: var(--mono); font-size: 1em; letter-spacing: 0.06em; text-transform: uppercase; color: #b3e5c7; font-weight: 800; opacity: 1; margin-bottom: 0.3em; }
  .sticky-bar .ab-title strong { color: #b3e5c7; font-weight: 800; }
  .abstract .ab-cta { flex: none; display: inline-flex; align-items: center; gap: 7px; color: #b3e5c7; font-weight: 800; font-size: 13.5px; letter-spacing: 0.01em; text-decoration: none; border: 1px solid rgba(179,229,199,0.45); border-radius: 999px; padding: 8px 16px; white-space: nowrap; transition: background 0.14s ease, color 0.14s ease; }
  .abstract .ab-cta:hover { background: #b3e5c7; color: var(--accent-dark); }
  .abstract .ab-cta .ab-cta-arrow { font-size: 15px; line-height: 1; }
  .abstract strong { color: #b3e5c7; font-weight: 800; }
  .abstract a { color: #fff; text-decoration: underline; text-underline-offset: 2px; font-weight: 700; white-space: nowrap; }
  /* the one-liner pins right under the shrinking header through the big + transition phases; JS releases it (position:static) once the bar is compact, so it scrolls away under the compact bar */
  .head-sticky { position: sticky; top: var(--bar-now, 0px); z-index: 46; }
  /* band now lives INSIDE the fixed bar (JS controls its max-height/opacity during the sweep) */
  .abstract.in-bar { position: static; z-index: auto; margin: 0 -14px; width: calc(100% + 28px); }
  .abstract-label { font-family: var(--mono); font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--green-strong-bg); font-weight: 700; margin-bottom: 5px; }
  .abstract p { margin: 0; font-size: 15px; line-height: 1.5; color: rgba(255,255,255,0.92); }
  .abstract strong { color: #b3e5c7; }
  .abstract a { color: white; text-decoration: underline; font-weight: 700; white-space: nowrap; }
  .abstract a:hover { color: #b3e5c7; }

  /* DOC HEADER */
  .doc-header { background: white; padding: 20px 22px; margin-bottom: 14px; border: 1px solid var(--excel-grid); display: flex; justify-content: space-between; align-items: baseline; }
  .doc-title { font-size: 22px; font-weight: 700; color: var(--accent-dark); margin: 0; font-family: var(--serif); letter-spacing: -0.01em; }
  .doc-meta { font-family: var(--mono); font-size: 11px; color: var(--excel-muted); letter-spacing: 0.04em; text-align: right; }

  /* PARAMS */
  .params { background: white; padding: 18px 22px; margin-bottom: 14px; border: 1px solid var(--excel-grid); border-top: 3px solid var(--accent); }
  .params-header { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 14px; }
  .params-title { font-family: var(--mono); font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--accent); font-weight: 700; }
  .params-hint { font-size: 12px; color: var(--excel-muted); font-style: italic; }
  .params-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
  .param-group label { display: block; font-family: var(--mono); font-size: 10px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--excel-muted); font-weight: 700; margin-bottom: 4px; }
  .info-btn { display: inline-flex; align-items: center; justify-content: center; width: 14px; height: 14px; border-radius: 50%; background: var(--accent); color: white; font-family: var(--serif); font-style: italic; font-size: 10px; font-weight: 700; text-decoration: none; vertical-align: middle; margin-left: 3px; line-height: 1; transition: background 0.15s; }
  .info-btn:hover { background: var(--accent-dark); }
  .explain-target { scroll-margin-top: 80px; }
  .explain-target:target { box-shadow: 0 0 0 2px var(--accent); animation: flash-explain 1.4s ease; }
  @keyframes flash-explain { 0% { background: var(--gold-bg); } 100% { background: white; } }
  .to-top { position: fixed; right: 18px; bottom: 18px; width: 44px; height: 44px; border-radius: 50%; background: var(--accent-dark); color: #fff; border: none; cursor: pointer; font-size: 20px; line-height: 1; display: flex; align-items: center; justify-content: center; box-shadow: 0 3px 12px rgba(0,0,0,0.28); opacity: 0; visibility: hidden; transform: translateY(8px); transition: opacity 0.2s, transform 0.2s, visibility 0.2s; z-index: 200; }
  .to-top.show { opacity: 0.92; visibility: visible; transform: translateY(0); }
  .to-top:hover { opacity: 1; background: var(--accent); }
  @media (max-width: 640px) { .to-top { right: 12px; bottom: 12px; width: 40px; height: 40px; } }
  .param-group select, .param-group input[type="range"] { width: 100%; padding: 7px 10px; border: 1px solid var(--excel-grid); border-radius: 4px; font-size: 13px; background: white; color: var(--excel-text); font-family: var(--sans); }
  .param-group select:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 2px rgba(30,77,107,0.12); }
  .param-group .range-wrap { display: flex; align-items: center; gap: 8px; }
  .param-group .range-value { font-family: var(--mono); font-size: 12px; font-weight: 700; color: var(--accent); min-width: 50px; text-align: right; }
  .param-group input[type="range"] { padding: 0; height: 6px; cursor: pointer; }
  .param-hint { margin-top: 6px; padding-top: 5px; border-top: 1px dashed var(--excel-grid); display: flex; justify-content: space-between; align-items: baseline; font-family: var(--mono); font-size: 10px; color: var(--excel-muted); letter-spacing: 0.02em; line-height: 1.4; }
  .param-hint-value { color: var(--green); font-weight: 700; white-space: nowrap; }
  .be-params-note { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--excel-grid); font-size: 11.5px; color: var(--excel-muted); line-height: 1.5; }
  .param-note { margin-top: 6px; font-size: 11px; color: var(--excel-muted); line-height: 1.55; }
  .param-note > summary { list-style: none; cursor: pointer; display: inline-flex; align-items: center; gap: 5px; font-family: var(--mono); font-size: 9.5px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--accent); font-weight: 700; user-select: none; }
  .param-note > summary::-webkit-details-marker { display: none; }
  .param-note > summary::before { content: 'i'; display: inline-flex; align-items: center; justify-content: center; width: 13px; height: 13px; border-radius: 50%; background: var(--accent); color: #fff; font-family: var(--serif); font-style: italic; font-size: 9px; font-weight: 700; }
  .param-note[open] > summary { color: var(--accent-dark); }
  .param-note > div { margin-top: 6px; }
  .param-note strong { color: var(--accent-dark); }
  .be-params-note strong { color: var(--accent-dark); }
  .infl-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }

  /* COUNTRY SPLIT */
  .split { background: white; padding: 18px 22px; margin-bottom: 14px; border: 1px solid var(--excel-grid); border-top: 3px solid var(--gold); }
  .split-title { font-family: var(--mono); font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--gold); font-weight: 700; margin-bottom: 4px; }
  .split-sub { font-size: 12px; color: var(--excel-muted); margin-bottom: 14px; }
  .split-rows { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; margin-bottom: 12px; }
  .split-country { }
  .split-country label { display: block; font-family: var(--mono); font-size: 10px; letter-spacing: 0.04em; text-transform: uppercase; color: var(--excel-muted); font-weight: 700; margin-bottom: 4px; }
  .split-country label .dot { display: inline-block; width: 8px; height: 8px; border-radius: 2px; margin-right: 4px; vertical-align: baseline; }
  .split-country input { width: 100%; padding: 7px 8px; border: 1px solid var(--excel-grid); border-radius: 4px; font-size: 14px; font-family: var(--mono); font-weight: 700; text-align: right; color: var(--excel-text); }
  .split-country input:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 2px rgba(30,77,107,0.12); }
  .split-country .toll-note { font-family: var(--mono); font-size: 9px; color: var(--excel-muted); margin-top: 3px; text-align: right; }
  .split-bar { height: 22px; border-radius: 4px; overflow: hidden; display: flex; border: 1px solid var(--excel-grid); margin-bottom: 10px; }
  .split-bar-seg { height: 100%; transition: width 0.25s ease; }
  .split-foot { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
  .split-total { font-family: var(--mono); font-size: 12px; font-weight: 700; }
  .split-total.ok { color: var(--green); }
  .split-total.bad { color: var(--red); }

  /* EXPLAINER */
  .explainer { background: white; padding: 14px 18px; border: 1px solid var(--excel-grid); border-left: 3px solid var(--accent); margin-bottom: 18px; font-size: 13px; line-height: 1.65; }
  .explainer h4 { margin: 0 0 6px; font-family: var(--mono); font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--accent); font-weight: 700; }
  .explainer p { margin: 0; color: var(--excel-text); }
  .table-caption { background: #fbfaf7; border-bottom: 1px solid var(--excel-grid); font-size: 12px; line-height: 1.55; color: var(--excel-text); }
  .table-caption > summary { list-style: none; cursor: pointer; padding: 8px 13px; font-family: var(--mono); font-size: 9.5px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--accent); font-weight: 700; display: flex; align-items: center; gap: 6px; user-select: none; }
  .table-caption > summary::-webkit-details-marker { display: none; }
  .table-caption > summary::before { content: '▸'; font-size: 9px; transition: transform 0.15s; }
  .table-caption[open] > summary::before { transform: rotate(90deg); }
  .table-caption > summary:hover { color: var(--accent-dark); }
  .table-caption .cap-body { padding: 0 13px 11px 13px; user-select: text; -webkit-user-select: text; }

  /* EXCEL TABLE */
  .excel-block { background: white; border: 1px solid var(--excel-grid-strong); margin-bottom: 18px; overflow: auto; }
  .excel-block-title { background: var(--excel-header-bg); border-bottom: 1px solid var(--excel-grid-strong); padding: 8px 12px; font-family: var(--mono); font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--excel-header-text); font-weight: 700; display: flex; flex-direction: column; gap: 2px; align-items: flex-start; position: sticky; left: 0; }
  .excel-block-title .sub { font-size: 10px; letter-spacing: 0.05em; color: var(--excel-muted); text-transform: none; font-weight: 600; }
  .section-bridge { margin: 26px 0 14px; padding-bottom: 8px; border-bottom: 2px solid var(--accent-dark); }
  .section-bridge h3 { margin: 0; font-family: var(--serif); font-size: 19px; font-weight: 700; color: var(--accent-dark); letter-spacing: -0.01em; }
  .section-bridge p { margin: 5px 0 0; font-size: 12.5px; color: var(--excel-muted); line-height: 1.55; }
  table.excel { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; font-family: var(--sans); }
  table.excel th, table.excel td { border: 1px solid var(--excel-grid); padding: 7px 10px; font-size: 13px; text-align: right; background: white; color: var(--excel-text); }
  table.excel thead th { background: var(--excel-header-bg); color: var(--excel-header-text); font-weight: 700; font-size: 11px; letter-spacing: 0.05em; text-transform: uppercase; text-align: center; padding: 8px 10px; border-bottom: 1px solid var(--excel-grid-strong); }
  table.excel thead tr.col-letters th { background: #f7f7f7; color: var(--excel-muted); font-family: var(--mono); font-size: 10px; font-weight: 600; text-transform: none; padding: 4px 0; text-align: center; }
  table.excel tbody td.row-label { background: var(--excel-row-header); color: var(--excel-header-text); font-weight: 700; text-align: left; font-size: 12px; padding-left: 12px; border-right: 1px solid var(--excel-grid-strong); width: 200px; }
  table.excel tbody td.row-num { background: #f7f7f7; color: var(--excel-muted); font-family: var(--mono); font-size: 10px; font-weight: 600; text-align: center; width: 28px; padding: 0; border-right: 1px solid var(--excel-grid); }
  tr.row-tco td { background: var(--excel-tco-bg); font-weight: 700; }
  tr.row-tco td.row-label { background: #cfe0ee; }
  tr.row-roi td { background: var(--excel-roi-bg); }
  tr.row-roi td.row-label { background: #ddd0ee; }
  tr.row-sub td { background: #fafafa; font-size: 12px; color: var(--excel-muted); padding-top: 5px; padding-bottom: 5px; }
  tr.row-sub td.row-label.sub-label { background: #f3f4f6; font-weight: 600; color: var(--excel-muted); padding-left: 22px; font-size: 11.5px; }
  tr.row-sub td.val-pos { background: #ecf6ef !important; color: #2d8a52; font-weight: 600; }
  tr.row-sub td.val-neg { background: #faf0f0 !important; color: #b46464; font-weight: 600; }
  tr.row-sub td.row-num { font-size: 9px; color: #b0b0b0; }
  td.cell-formula { font-family: var(--mono); font-size: 11.5px; color: var(--excel-muted); text-align: center; }
  .frac { display: inline-flex; flex-direction: column; align-items: center; line-height: 1.25; vertical-align: middle; }
  .frac .fr-num { padding: 0 3px; }
  .frac .fr-den { padding: 0 3px; border-top: 1px solid var(--excel-muted); }
  td.val-pos { color: var(--green); background: var(--green-bg) !important; font-weight: 700; }
  td.val-neg { color: var(--red); background: var(--red-bg) !important; font-weight: 700; }
  tr.row-tco td.val-pos { background: #d4ecd9 !important; }
  tr.row-tco td.val-neg { background: #f5d3d3 !important; }
  table.excel.cashflow td.cf-neg { background: var(--red-bg); color: var(--red); font-weight: 700; }
  table.excel.cashflow td.cf-pos { background: var(--green-bg); color: var(--green); font-weight: 700; }
  table.excel.cashflow td.cf-check { background: var(--green-strong-bg) !important; }

  @keyframes flash { 0% { background-color: #fff3a8; } 100% { background-color: inherit; } }
  .updated { animation: flash 0.6s ease-out; }

  /* COLLAPSIBLE */
  details.toll-details { background: white; border: 1px solid var(--excel-grid); margin-bottom: 18px; }
  details.toll-details summary { cursor: pointer; padding: 14px 18px; font-family: var(--mono); font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--accent); font-weight: 700; list-style: none; display: flex; justify-content: space-between; align-items: center; }
  details.toll-details summary::-webkit-details-marker { display: none; }
  details.toll-details summary::after { content: '▸ show'; font-size: 10px; color: var(--excel-muted); }
  details.toll-details[open] summary::after { content: '▾ hide'; }
  /* The data summary shown when collapsed — make it readable, not cramped uppercase mono */
  details.toll-details summary > span { font-family: var(--sans); font-size: 12.5px; letter-spacing: 0; text-transform: none; font-weight: 500; color: var(--excel-text); }
  details.toll-details summary { flex-wrap: wrap; gap: 2px 8px; line-height: 1.5; }
  details.toll-details .toll-body { padding: 0 18px 16px; font-size: 12.5px; line-height: 1.6; color: var(--excel-text); }
  details.toll-details table { width: 100%; border-collapse: collapse; margin: 10px 0; font-size: 12px; }
  details.toll-details th, details.toll-details td { border: 1px solid var(--excel-grid); padding: 6px 9px; text-align: left; }
  details.toll-details th { background: var(--excel-header-bg); font-family: var(--mono); font-size: 10px; text-transform: uppercase; letter-spacing: 0.04em; }
  details.toll-details .warn { background: var(--gold-bg); border-left: 3px solid var(--gold); padding: 8px 12px; margin-top: 10px; font-size: 12px; }

  /* MATH */
  .math-block { background: #fdfcf9; border: 1px solid var(--excel-grid-strong); margin-top: 24px; margin-bottom: 18px; }
  .math-block-header { padding: 20px 22px; background: linear-gradient(180deg, #f7f5f0 0%, #fdfcf9 100%); border-bottom: 1px solid var(--excel-grid-strong); }
  .math-block-tag { display: inline-block; font-family: var(--mono); font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--accent); font-weight: 700; background: white; padding: 4px 10px; border: 1px solid var(--excel-grid); border-radius: 3px; margin-bottom: 8px; }
  .math-block h3 { font-family: var(--serif); font-size: 22px; margin: 4px 0 8px; color: var(--accent-dark); letter-spacing: -0.01em; }
  .math-block > .math-block-header > p { margin: 0; font-size: 13px; line-height: 1.55; color: var(--excel-muted); max-width: 760px; }
  .math-legend { margin-top: 12px; background: white; border: 1px solid var(--excel-grid); border-radius: 4px; padding: 10px 14px; font-size: 12px; line-height: 1.6; }
  .math-legend strong { color: var(--accent); font-family: var(--mono); }
  .math-section { padding: 18px 22px; border-bottom: 1px solid var(--excel-grid); display: grid; grid-template-columns: 40px 1fr; gap: 14px; }
  .math-section:last-of-type { border-bottom: none; }
  .math-section-num { font-family: var(--mono); font-size: 14px; font-weight: 700; color: var(--accent); letter-spacing: 0.04em; padding-top: 2px; }
  .math-section-body h4 { margin: 0 0 12px; font-family: var(--serif); font-size: 17px; color: var(--accent-dark); letter-spacing: -0.01em; }
  .math-section-body > p { margin: 0 0 10px; font-size: 12.5px; line-height: 1.55; }
  .math-grid { background: white; border: 1px solid var(--excel-grid); }
  .math-row { display: grid; grid-template-columns: 60px 1fr 170px; align-items: baseline; padding: 7px 12px; border-bottom: 1px solid #f0eee5; font-family: var(--mono); font-size: 12px; }
  .math-row:last-child { border-bottom: none; }
  .math-row:nth-child(even) { background: #fbfaf6; }
  .math-var { font-weight: 700; color: var(--accent); font-size: 13px; }
  .math-eq { color: var(--excel-muted); font-family: var(--sans); font-size: 12px; }
  .math-val { text-align: right; font-weight: 700; color: var(--excel-text); font-variant-numeric: tabular-nums; }
  .math-derive { background: white; border: 1px solid var(--excel-grid); }
  .math-formula { padding: 11px 14px; border-bottom: 1px solid #f0eee5; }
  .math-formula:last-child { border-bottom: none; }
  .math-formula:nth-child(even) { background: #fbfaf6; }
  .math-formula.highlight { background: #f0f6fc; border-left: 3px solid var(--accent); }
  .math-formula.highlight.green { background: #ecf6ef; border-left: 3px solid var(--green); }
  .math-fhead { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin-bottom: 3px; }
  .math-label { font-size: 12px; color: var(--excel-text); font-weight: 700; font-family: var(--sans); }
  .math-result { text-align: right; font-family: var(--mono); font-size: 13px; font-weight: 700; color: var(--green); font-variant-numeric: tabular-nums; white-space: nowrap; }
  .math-formula.highlight .math-result { color: var(--accent-dark); font-size: 14px; }
  .math-formula.highlight.green .math-result { color: var(--green); font-size: 14px; }
  .math-expr { font-family: var(--mono); font-size: 12.5px; color: var(--excel-text); font-weight: 700; line-height: 1.4; margin-bottom: 2px; }
  .math-words { font-size: 11.5px; color: var(--excel-text); line-height: 1.5; margin: 1px 0 4px; }
  details.math-fold > summary { cursor: pointer; list-style: none; display: flex; align-items: baseline; gap: 8px; }
  details.math-fold > summary::-webkit-details-marker { display: none; }
  details.math-fold > summary h4 { margin: 0; }
  details.math-fold > summary .fold-hint { font-size: 10px; color: var(--accent); font-weight: 600; }
  details.math-fold > summary .fold-hint::before { content: '▸ '; }
  .fold-legend { margin: 8px 0 6px; font-size: 11px; color: var(--excel-muted); line-height: 1.5; }
  .fold-legend .lg-edit { display: inline-block; border: 1px solid var(--excel-grid); background: #fffdf5; border-radius: 3px; padding: 0 4px; font-family: var(--mono); font-size: 10px; font-weight: 700; }
  details.math-fold[open] > summary .fold-hint::before { content: '▾ '; }
  .ma-in { font-family: var(--mono); font-size: 11px; font-weight: 700; color: var(--excel-text); width: 58px; padding: 2px 4px; border: 1px solid var(--excel-grid); border-radius: 3px; background: #fffdf5; text-align: right; -moz-appearance: textfield; }
  .ma-in::-webkit-outer-spin-button, .ma-in::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
  .ma-in:focus { outline: 2px solid var(--gold); outline-offset: 0; }
  .math-words::before { content: 'in words'; display: inline-block; font-weight: 700; text-transform: uppercase; font-size: 8.5px; letter-spacing: 0.06em; color: var(--accent); background: var(--excel-header-bg); border-radius: 3px; padding: 1px 5px; margin-right: 6px; vertical-align: 1px; }
  /* merged diesel vs electric comparison */
  .cmp-derive { display: block; }
  .cmp-row { display: grid; grid-template-columns: 1fr minmax(84px, 0.78fr) 1fr; gap: 7px; align-items: stretch; padding: 11px 0; border-top: 1px solid var(--excel-grid); }
  .cmp-row:first-child { border-top: none; padding-top: 2px; }
  .cmp-row.cmp-total { background: var(--gold-bg); border-radius: 5px; padding: 11px 7px; border-top: 1px solid var(--gold); }
  .cmp-mid { display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; padding: 0 3px; }
  .cmp-name { font-family: var(--mono); font-size: 9.5px; letter-spacing: 0.06em; text-transform: uppercase; font-weight: 700; color: var(--accent); margin-bottom: 3px; }
  .cmp-formula { font-family: var(--mono); font-size: 10.5px; font-weight: 700; line-height: 1.3; color: var(--excel-text); }
  .cmp-words { font-size: 9.5px; font-style: italic; color: var(--excel-muted); line-height: 1.35; margin-top: 3px; }
  .cmp-side { background: #fff; border: 1px solid var(--excel-grid); border-radius: 4px; padding: 7px 8px; }
  .cmp-side.diesel { border-top: 2px solid var(--excel-muted); }
  .cmp-side.electric { border-top: 2px solid var(--green); }
  .cmp-side-label { font-family: var(--mono); font-size: 8.5px; text-transform: uppercase; letter-spacing: 0.05em; color: var(--excel-muted); margin-bottom: 1px; }
  .cmp-val { font-size: 14px; font-weight: 700; color: var(--excel-text); white-space: nowrap; line-height: 1.15; }
  .cmp-side.electric .cmp-val { color: var(--green); }
  .cmp-detail { font-size: 10px; color: var(--excel-muted); line-height: 1.4; margin-top: 3px; }
  .cmp-sub { font-family: var(--mono); font-size: 9.5px; color: var(--excel-muted); margin-top: 2px; white-space: nowrap; overflow-x: auto; }
  .cmp-line { margin-top: 5px; padding-top: 5px; border-top: 1px dotted var(--excel-grid); }
  @media (max-width: 560px) {
    .show-detail .cmp-extra { grid-template-columns: 1fr; gap: 7px 0; }
    .cmp-sub, .cmp-extra .cmp-sub { white-space: normal; overflow-x: visible; word-break: break-word; }
    .cmp-crow { grid-template-columns: 1fr 76px 1fr; }
    .cmp-row { grid-template-columns: 1fr 1fr; gap: 6px 6px; padding: 10px 0; }
    .cmp-mid { grid-column: 1 / -1; order: -1; flex-direction: row; flex-wrap: wrap; gap: 4px 8px; justify-content: center; margin-bottom: 2px; }
    .cmp-name { margin-bottom: 0; }
  }
  /* ultra-compact comparison: fits one mobile viewport; detail behind a toggle */
  .cmp-compact { display: block; }
  .cmp-crow { display: grid; grid-template-columns: 1fr 88px 1fr; align-items: center; gap: 6px; padding: 5px 0; border-top: 1px solid var(--excel-grid); }
  .cmp-crow:first-child { border-top: none; }
  .cmp-crow.head { border-top: none; padding: 0 0 3px; }
  .cmp-crow.total { background: var(--gold-bg); border-radius: 4px; padding: 6px 6px; border-top: 1px solid var(--gold); }
  .cmp-c-d { text-align: right; font-weight: 700; font-size: 12.5px; white-space: nowrap; color: var(--excel-text); }
  .cmp-c-e { text-align: left; font-weight: 700; font-size: 12.5px; white-space: nowrap; color: var(--green); }
  .cmp-c-name { text-align: center; font-family: var(--mono); font-size: 9.5px; text-transform: uppercase; letter-spacing: 0.03em; font-weight: 700; color: var(--excel-text); line-height: 1.15; }
  .cmp-crow.head .cmp-c-d, .cmp-crow.head .cmp-c-e { font-family: var(--mono); font-size: 9.5px; text-transform: uppercase; letter-spacing: 0.05em; color: var(--excel-muted); font-weight: 700; }
  .cmp-c-f { display: none; font-family: var(--mono); font-size: 8px; font-weight: 400; color: var(--excel-muted); text-transform: none; letter-spacing: 0; margin-top: 1px; line-height: 1.2; }
  .show-detail .cmp-c-f { display: block; }
  .cmp-extra { display: none; grid-column: 1 / -1; font-size: 10px; color: var(--excel-muted); line-height: 1.4; padding: 3px 0 1px; }
  .show-detail .cmp-extra { display: grid; grid-template-columns: 1fr 1fr; gap: 2px 12px; }
  .cmp-extra .xw { grid-column: 1 / -1; font-style: italic; text-align: center; }
  .show-detail .cmp-extra > div:nth-child(1):not(.xw), .show-detail .cmp-extra > div:nth-child(2):not(.xw) { border-left: 2px solid var(--excel-muted); padding-left: 7px; }
  .show-detail .cmp-extra > div:nth-child(2):not(.xw) { border-left-color: var(--green); }
  .show-detail .cmp-extra > div:nth-child(1):not(.xw)::before { content: 'Diesel'; display: block; font-family: var(--mono); font-size: 8px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: var(--excel-muted); margin-bottom: 1px; }
  .show-detail .cmp-extra > div:nth-child(2):not(.xw)::before { content: 'Electric'; display: block; font-family: var(--mono); font-size: 8px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: var(--green); margin-bottom: 1px; }
  .cmp-extra .cmp-sub { font-family: var(--mono); font-size: 9px; white-space: nowrap; overflow-x: auto; display: block; color: var(--excel-muted); }
  .cmp-detail-toggle { display: inline-flex; align-items: center; gap: 6px; margin: 0 0 8px; font-size: 11px; color: var(--accent); cursor: pointer; font-weight: 600; }
  /* FINAL OVERRIDE (must stay last of the .cmp rules): never horizontal-scroll the formula detail on phones */
  @media (max-width: 720px) {
    .cmp-sub, .cmp-extra .cmp-sub, .show-detail .cmp-extra .cmp-sub { white-space: normal !important; overflow-x: visible !important; word-break: break-word; }
    .cmp-extra, .cmp-extra .xw { word-break: break-word; }
  }
  @keyframes kpiFlash { 0%, 15% { box-shadow: inset 0 0 0 2000px rgba(245,184,0,0.55); } 100% { box-shadow: inset 0 0 0 2000px rgba(245,184,0,0); } }
  td.kpi-flash { animation: kpiFlash 1.9s ease-out 1; }
  @keyframes viewFlash { 0% { box-shadow: 0 0 0 0 rgba(245,184,0,0); } 12% { box-shadow: 0 0 0 4px rgba(245,184,0,0.75); } 100% { box-shadow: 0 0 0 0 rgba(245,184,0,0); } }
  .view-toggle button.view-flash { animation: viewFlash 1.7s ease-out 1; }
  .th-hint { display: block; font-weight: 400; font-size: 8.5px; text-transform: none; letter-spacing: 0; color: var(--excel-muted); margin-top: 1px; line-height: 1.1; }
  .math-expr sub { font-size: 0.75em; vertical-align: sub; }
  .math-expr sup { font-size: 0.75em; vertical-align: super; }
  .math-note { font-size: 12px; color: var(--excel-muted); font-style: italic; line-height: 1.5; margin-bottom: 3px; }
  .math-sub { font-family: var(--mono); font-size: 11.5px; color: var(--accent); line-height: 1.4; }
  .math-disclaimer { padding: 18px 22px; background: #fef9ed; border-top: 2px solid var(--gold); }
  .math-disclaimer h4 { margin: 0 0 8px; font-family: var(--mono); font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--gold); font-weight: 700; }
  .math-disclaimer ul { margin: 4px 0 0; padding-left: 18px; font-size: 12px; line-height: 1.6; }
  .math-disclaimer li { margin-bottom: 4px; }
  .math-disclaimer strong { color: var(--excel-text); }

  /* FOOTER NOTE */
  .footer-note { background: white; padding: 14px 18px; margin-top: 18px; border: 1px solid var(--excel-grid); font-size: 12px; color: var(--excel-muted); line-height: 1.65; }
  .footer-note strong { color: var(--excel-text); }
  .footer-note h4 { margin: 0 0 6px; font-family: var(--mono); font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--accent); font-weight: 700; }
  .footer-note h4:not(:first-child) { margin-top: 12px; }
  .footer-note ul { margin: 4px 0 0; padding-left: 18px; }
  .footer-note table { width: 100%; border-collapse: collapse; margin: 10px 0; font-size: 12px; }
  .footer-note th, .footer-note td { border: 1px solid var(--excel-grid); padding: 6px 9px; text-align: left; }
  .footer-note th { background: var(--excel-header-bg); font-family: var(--mono); font-size: 10px; text-transform: uppercase; letter-spacing: 0.04em; color: var(--accent-dark); }
  .footer-note .warn { background: var(--gold-bg); border-left: 3px solid var(--gold); padding: 8px 12px; margin: 10px 0 0; font-size: 12px; }

  .backlink { display: inline-block; font-family: var(--mono); font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--accent); text-decoration: none; margin-bottom: 14px; }
  .backlink:hover { color: var(--accent-dark); text-decoration: underline; }

  @media (max-width: 720px) {
    /* TCO table: fit the full phone width, no horizontal scroll */
    #tbl-fleet { overflow: visible; }
    #tbl-fleet table.excel { table-layout: fixed; width: 100%; }
    #tbl-fleet table.excel th, #tbl-fleet table.excel td { padding: 5px 4px; font-size: 11px; white-space: normal; word-break: break-word; }
    #tbl-fleet table.excel thead th { font-size: 9px; padding: 6px 2px; letter-spacing: 0.02em; }
    #tbl-fleet table.excel tbody td.row-label { width: auto; font-size: 10.5px; padding-left: 5px; line-height: 1.25; }
    #tbl-fleet table.excel tbody td.row-num { width: 18px; font-size: 8.5px; }
    #tbl-fleet table.excel tr.row-sub td.row-label.sub-label { padding-left: 10px; font-size: 10px; }
    #tbl-fleet table.excel colgroup col.c-num { width: 18px; }
    #tbl-fleet table.excel colgroup col.c-lab { width: 31%; }
    /* figures never break: sign, number and M/k stay on one line */
    #tbl-fleet table.excel td:not(.row-label) { white-space: nowrap; word-break: normal; }
    #tbl-fleet td.cell-formula { font-size: 9px; }
    /* Cashflow, NPV/MIRR & capital-alternatives tables: full phone width, no horizontal scroll */
    #tbl-cashflow, #tbl-returns, #tbl-bench { overflow: visible; }
    #tbl-cashflow table.excel, #tbl-returns table.excel, #tbl-bench table.excel { table-layout: fixed; width: 100%; }
    #tbl-cashflow table.excel th, #tbl-cashflow table.excel td,
    #tbl-returns table.excel th, #tbl-returns table.excel td,
    #tbl-bench table.excel th, #tbl-bench table.excel td { padding: 5px 3px; font-size: 10.5px; white-space: normal; word-break: break-word; }
    #tbl-cashflow table.excel thead th, #tbl-returns table.excel thead th, #tbl-bench table.excel thead th { font-size: 8.5px; padding: 5px 2px; letter-spacing: 0.02em; }
    /* money cells stay on one line — sign, €, number, unit and ✓ never split */
    #tbl-cashflow table.excel td:not(:first-child), #tbl-returns table.excel td:not(:first-child) { white-space: nowrap; word-break: normal; }
    #tbl-bench td.val-pos, #tbl-bench td.val-neg { white-space: nowrap; word-break: normal; }
    #tbl-cashflow table.excel th:first-child, #tbl-cashflow table.excel td:first-child { width: 21%; text-align: left; padding-left: 5px; }
    #tbl-returns table.excel th:first-child, #tbl-returns table.excel td:first-child { width: 15%; text-align: left; padding-left: 5px; }
    #tbl-returns table.excel td.cell-formula { white-space: normal; word-break: break-word; font-size: 8.5px; line-height: 1.2; }
    #tbl-bench table.excel tbody td.row-num, #tbl-bench table.excel thead th:first-child { width: 16px; font-size: 8.5px; }
    #tbl-bench table.excel tbody td.row-label { width: auto; font-size: 10px; padding-left: 4px; line-height: 1.25; }
    #tbl-bench .th-hint { display: none; }
    body { font-size: 14px; padding-top: calc(var(--bar-exp) + env(safe-area-inset-top, 0px)); }
    :root { --bar-exp: 372px; --bar-col: 88px; --val-base: 14px; --val-grow: 7px; --fig-w: 29%; }
    .view-toggle-bar { padding: 6px 10px; }
    .sticky-bar { padding-left: 4px; padding-right: 4px; }
    .sticky-cell { padding: calc(3px + (1 - var(--collapse)) * 3px) calc(3px + (1 - var(--collapse)) * 3px) calc((1 - var(--collapse)) * 3px) calc(3px + (1 - var(--collapse)) * 3px); }
    .sticky-label { font-size: calc(9px + (1 - var(--collapse)) * 4px); letter-spacing: 0.05em; }
    .sticky-value { font-size: min(calc(var(--val-base) + (1 - var(--collapse)) * (40px * var(--desc-scale) - var(--val-base))), 30px); }
    .sticky-desc { font-size: calc((16px + (1 - var(--collapse)) * 24px) * var(--desc-scale)); line-height: 1.24; }
    .sticky-bar .ab-title { padding: 12px 6px; font-size: calc((16px + (1 - var(--collapse)) * 24px) * var(--desc-scale)); }
    .kpi-arrow { right: 8px; font-size: calc(11px + (1 - var(--collapse)) * 7px); }
    .ab-band { flex-direction: column; align-items: flex-start; gap: 5px; padding: 2px 16px; }
    .ab-band #abstract-text { font-size: calc((16px + (1 - var(--collapse)) * 24px) * var(--desc-scale)); line-height: 1.26; }
    .abstract .ab-cta { display: block; align-self: stretch; white-space: normal; text-align: center; line-height: 1.3; font-size: 12.5px; padding: 8px 14px; }
    .abstract .ab-cta .ab-cta-arrow { display: inline; }
    .be-banner h1 { font-size: 18px; }
    .doc-header { flex-direction: column; gap: 4px; align-items: flex-start; padding: 14px; }
    .doc-title { font-size: 18px; }
    .doc-meta { text-align: left; }
    .params-grid { grid-template-columns: 1fr 1fr; gap: 10px; }
    .infl-grid { grid-template-columns: 1fr 1fr; gap: 10px; }
    .params { padding: 14px; }
    .param-hint { font-size: 12px; }
    .split-rows { grid-template-columns: 1fr 1fr; gap: 8px; }
    .excel-block-title { padding: 6px 10px; font-size: 9.5px; flex-direction: column; gap: 2px; align-items: flex-start; }
    table.excel th, table.excel td { padding: 5px 6px; font-size: 11px; }
    table.excel thead th { font-size: 9px; padding: 6px 4px; }
    /* Returns build-up table has 6 columns — tighten so it fits the screen */
    #tbl-returns table.excel th, #tbl-returns table.excel td { padding: 5px 3px; font-size: 10px; }
    #tbl-returns table.excel thead th { font-size: 8px; padding: 5px 2px; }
    #tbl-returns table.excel td:first-child { font-size: 9px; }
    table.excel tbody td.row-label { font-size: 10px; width: 120px; padding-left: 8px; }
    table.excel tbody td.row-label.sub-label { font-size: 9.5px; padding-left: 14px; }
    table.excel tbody td.row-num { width: 18px; font-size: 9px; }
    td.cell-formula { font-size: 9.5px; }
    .math-section { grid-template-columns: 1fr; gap: 6px; padding: 14px 16px; }
    .math-row { grid-template-columns: 44px 1fr 90px; padding: 6px 8px; font-size: 10.5px; }
    .math-eq { font-size: 13px; }
    .math-expr { font-size: 11.5px; }
    .math-sub { font-size: 10.5px; }
    .math-note { font-size: 13px; }
    /* Explainer reference tables (toll / charging systems / residual) live in .footer-note.
       Force a fixed layout so prose columns get the room and numeric columns stay tight. */
    .footer-note table { font-size: 12px; table-layout: fixed; width: 100%; }
    .footer-note th, .footer-note td { padding: 7px 6px; word-break: normal; overflow-wrap: break-word; vertical-align: top; }
    .footer-note td:first-child, .footer-note th:first-child { width: 22%; }
    .footer-note td.num, .footer-note th.num { width: 13%; text-align: center; white-space: nowrap; }
    /* Numeric headers: let them wrap within their narrow column instead of overflowing */
    .footer-note thead th { vertical-align: bottom; }
    .footer-note th.num { white-space: normal; word-break: normal; overflow-wrap: break-word; font-size: 9px; line-height: 1.15; padding: 6px 3px; }
    .footer-note th:not(.num) { white-space: normal; word-break: normal; }
    /* 4-column charging table: System | Architecture | Loss | Verdict */
    .footer-note table.t-charge { font-size: 11px; }
    .footer-note table.t-charge td:first-child, .footer-note table.t-charge th:first-child { width: 20%; }
    .footer-note table.t-charge td:nth-child(2), .footer-note table.t-charge th:nth-child(2) { width: 24%; }
    .footer-note table.t-charge td.num, .footer-note table.t-charge th.num { width: 14%; }
    .footer-note table.t-charge td.num { white-space: normal; text-align: center; font-size: 10px; }
    /* Explainer collapsible tables, if any */
    details.toll-details table { font-size: 12px; table-layout: fixed; width: 100%; }
    details.toll-details th, details.toll-details td { padding: 7px 6px; word-break: normal; overflow-wrap: break-word; vertical-align: top; }
    .footer-note { padding: 12px; font-size: 13.5px; }
    .footer-note li { line-height: 1.6; }
    details summary { font-size: 13px; }
    details.toll-details summary > span { font-size: 13.5px; }
  }

  /* ===== Config / preset panel (bottom) ===== */
  .cfg-panel { background:#fff; border:1px solid var(--excel-grid-strong); border-left:3px solid var(--accent); border-radius:4px; padding:18px 18px 16px; margin:22px 0; }
  .cfg-flag { font-family:var(--mono); font-size:10px; letter-spacing:0.12em; text-transform:uppercase; color:var(--accent-dark); font-weight:700; margin-bottom:6px; }
  .cfg-panel h3 { font-family:var(--serif); font-size:19px; margin:0 0 4px; color:var(--accent-dark); letter-spacing:-0.01em; }
  .cfg-sub { font-size:12.5px; color:var(--excel-muted); margin:0 0 14px; line-height:1.5; }
  .cfg-presets { display:flex; gap:8px; margin-bottom:10px; }
  .cfg-preset { flex:1; text-align:left; background:#faf8f2; border:1px solid var(--excel-grid-strong); border-radius:6px; padding:11px 13px; cursor:pointer; transition:border-color .15s, background .15s, box-shadow .15s; }
  .cfg-preset:hover { background:#fff; }
  .cfg-preset.on { background:#fff; border-color:var(--accent); box-shadow:inset 0 0 0 1px var(--accent); }
  .cfg-preset .cp-name { font-family:var(--mono); font-size:11px; font-weight:700; letter-spacing:0.04em; text-transform:uppercase; color:var(--accent-dark); }
  .cfg-preset .cp-desc { font-size:11.5px; color:var(--excel-muted); margin-top:3px; line-height:1.45; }
  .cfg-mix { flex:0.8; background:#faf8f2; border:1px solid var(--excel-grid-strong); border-radius:6px; padding:11px 13px; display:flex; flex-direction:column; gap:6px; }
  .cfg-mix-btn { text-align:left; background:#fff; border:1px solid var(--excel-grid-strong); border-radius:5px; padding:7px 9px; font-size:11px; font-weight:600; color:var(--excel-muted); cursor:pointer; line-height:1.35; }
  .cfg-mix-btn.on { border-color:var(--accent); box-shadow:inset 0 0 0 1px var(--accent); color:var(--accent-dark); }
  .cfg-stateline { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:4px 0 14px; font-size:12px; color:var(--excel-muted); }
  .cfg-badge { font-family:var(--mono); font-size:10px; font-weight:700; letter-spacing:0.06em; text-transform:uppercase; padding:2px 7px; border-radius:4px; }
  .cfg-badge.clean { background:#eef4ee; color:#2f6f3f; }
  .cfg-badge.dirty { background:#fbf0e3; color:#9a5a16; }
  .cfg-reset { background:none; border:none; color:var(--accent); font-family:var(--sans); font-size:12px; text-decoration:underline; cursor:pointer; padding:0; }
  .cfg-reset[disabled] { color:#bbb; text-decoration:none; cursor:default; }
  .cfg-io { display:flex; gap:8px; flex-wrap:wrap; }
  .cfg-btn { flex:1; min-width:150px; border:1px solid var(--accent); background:var(--accent); color:#fff; font-family:var(--mono); font-size:11px; font-weight:700; letter-spacing:0.05em; text-transform:uppercase; padding:11px 14px; border-radius:6px; cursor:pointer; transition:background .15s; }
  .cfg-btn:hover { background:var(--accent-dark); border-color:var(--accent-dark); }
  .cfg-btn.ghost { background:#fff; color:var(--accent); }
  .cfg-btn.ghost:hover { background:#f3f7f9; }
  .cfg-status { margin-top:11px; font-size:12px; line-height:1.5; color:var(--excel-muted); min-height:1.2em; }
  .cfg-status.ok { color:#2f6f3f; }
  .cfg-status.warn { color:#9a5a16; }
  .cfg-status.err { color:#a8331f; }
  .cfg-status ul { margin:5px 0 0; padding-left:18px; }
  .cfg-status li { margin:1px 0; }
  @media (max-width:560px){ .cfg-presets { flex-direction:column; } .cfg-btn { min-width:0; } }
  /* ===== six-zone split UI + toll params + per-year table ===== */
  #split-rows { display:flex; flex-direction:column; gap:8px; margin-bottom:12px; }
  .zone-item { display:flex; flex-direction:column; gap:2px; }
  .zone-row { display:flex; align-items:center; gap:8px; }
  .zone-corr { display:none; font-family:var(--mono); font-size:10.5px; color:var(--excel-muted); margin-left:24px; }
  #split-rows.one-zone .zone-corr { display:none !important; }
  .split-total.corr { color:var(--accent-dark); font-weight:700; }
  .zone-row .zone-name { flex:1; display:flex; align-items:center; gap:6px; font-size:13px; cursor:pointer; }
  .zone-row .zone-name input[type=checkbox] { margin:0; }
  .zone-row .dot { width:10px; height:10px; border-radius:50%; display:inline-block; flex:0 0 auto; }
  .zone-row .zone-pct { width:64px; }
  .zone-row .zone-note { font-family:var(--mono); font-size:10.5px; color:var(--excel-muted); white-space:nowrap; }
  #split-rows.one-zone .zone-pct, #split-rows.one-zone .zone-note { display:none; }
  .split-extra { overflow:hidden; max-height:2000px; opacity:1; transition:max-height .35s ease, opacity .25s ease; }
  .split-extra.collapsed { max-height:0; opacity:0; }
  .split-collapsed-note { display:none; font-size:12px; color:var(--excel-muted); margin-top:6px; }
  .br-subsplit { margin-top:12px; }
  .toll-params-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px 16px; margin-top:12px; }
  .toll-params-grid .chk-label { display:flex; align-items:center; gap:8px; font-size:12.5px; }
  .toll-yeardetail { margin-top:12px; }
  .toll-yeardetail summary { cursor:pointer; font-size:12px; font-weight:700; color:var(--accent-dark); }
  .ty-table { width:100%; border-collapse:collapse; margin-top:8px; font-size:11.5px; }
  .ty-table th, .ty-table td { padding:3px 6px; border-bottom:1px solid var(--excel-grid); text-align:right; }
  .ty-table th:first-child, .ty-table td:first-child { text-align:left; }
  .ty-table tr.ty-cliff { background:#fbf0e3; }
  .ty-table tr.ty-step { background:#eef4ee; }
  .ty-leg { font-size:10.5px; color:var(--excel-muted); margin-top:6px; }
  .ty-key { display:inline-block; width:12px; height:12px; border-radius:2px; vertical-align:middle; }
  .ty-key.ty-cliff { background:#fbf0e3; border:1px solid #e0c79b; }
  .ty-key.ty-step  { background:#eef4ee; border:1px solid #bcd3bc; }
  @media (max-width:560px){ .toll-params-grid { grid-template-columns:1fr; } }
  /* ---- MOBILE compact bar: rich 2-row labelled grid first, then 1-line value-only once the fleet/truck button shows ---- */
  #ckpi { display: none; }
  .sticky-bar.is-compact { position: fixed; top: 0; left: 0; right: 0; }
  .sticky-bar.is-compact #abstract-band { display: none !important; }
  /* compact-mini: collapse to one value-only line once the fleet/truck button is on screen */
  .sticky-bar.is-compact.is-mini .sticky-grid { display: none !important; }
  .sticky-bar.is-compact.is-mini { height: calc(54px + env(safe-area-inset-top, 0px)) !important; }
  .sticky-bar.is-compact.is-mini #ckpi {
    display: flex; align-items: stretch; justify-content: space-between; gap: 2px;
    height: 100%; padding: env(safe-area-inset-top, 0px) 6px 0; box-sizing: border-box;
    font-family: var(--mono); overflow: hidden;
  }
  #ckpi .ck-chip { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; justify-content: center; gap: 2px; padding: 0 5px; overflow: hidden; }
  #ckpi .ck-chip + .ck-chip { border-left: 1px solid rgba(255,255,255,0.10); }
  #ckpi .ck-lab { font-size: 8.5px; letter-spacing: 0.03em; text-transform: uppercase; color: rgba(255,255,255,0.55); font-weight: 700; line-height: 1.1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  #ckpi .ck-lab em { font-style: normal; color: #b3e5c7; font-weight: 800; }
  #ckpi .ck-val { font-size: 14px; font-weight: 800; color: #b3e5c7; letter-spacing: -0.01em; line-height: 1.05; white-space: nowrap; overflow: hidden; }
  #ckpi .ck-val .unit { font-weight: 700; font-size: 0.78em; opacity: 0.85; }
  /* ---- COMPACT KPI BAR (rebuilt) ---- */
  #kbar { position: fixed; top: 0; left: 0; right: 0; z-index: 60; display: none;
    transform: translateZ(0); -webkit-backface-visibility: hidden; will-change: transform;
    grid-template-columns: repeat(4, 1fr); box-sizing: border-box;
    background: var(--accent-dark); color: #fff; box-shadow: 0 2px 10px rgba(0,0,0,0.2);
    padding-top: env(safe-area-inset-top, 0px); font-family: var(--mono); }
  #kbar.show { display: grid; }
  #kbar.full   { height: calc(88px + env(safe-area-inset-top, 0px)); }
  #kbar.single { height: calc(52px + env(safe-area-inset-top, 0px)); }
  #kbar .kb-item { display: flex; flex-direction: column; justify-content: center; gap: 2px;
    padding: 4px 5px; min-width: 0; overflow: hidden; text-decoration: none; color: inherit;
    border-left: 1px solid rgba(255,255,255,0.08); }
  #kbar .kb-item:first-child { border-left: none; }
  #kbar.full .kb-item:nth-child(5) { border-left: none; }
  #kbar.full .kb-item:nth-child(n+5) { border-top: 1px solid rgba(255,255,255,0.10); }
  #kbar .kb-lab { font-size: clamp(7px, 2.3vw, 8.5px); letter-spacing: 0.02em; text-transform: uppercase; font-weight: 700;
    color: rgba(255,255,255,0.55); line-height: 1.08; white-space: normal; overflow: visible; }
  #kbar .kb-lab em { font-style: normal; color: #b3e5c7; font-weight: 800; }
  #kbar .kb-val { font-size: clamp(11px, 3.7vw, 14px); font-weight: 800; color: #b3e5c7; letter-spacing: -0.01em; line-height: 1.05;
    white-space: nowrap; overflow: hidden; }
  #kbar .kb-val .unit { font-weight: 700; font-size: 0.8em; opacity: 0.85; }
  #kbar.single .k-fullonly { display: none; }
  body[data-view="fleet"] #kbar.single .k-truck { display: none; }
  body[data-view="truck"] #kbar.single .k-fleet { display: none; }
  /* DESKTOP: align the full-bleed compact bar to the 980px content column + scale type up */
  @media (min-width: 981px) {
    #kbar { padding-left: calc((100% - 980px) / 2); padding-right: calc((100% - 980px) / 2); }
    #kbar.full   { height: calc(96px + env(safe-area-inset-top, 0px)); }
    #kbar.single { height: calc(58px + env(safe-area-inset-top, 0px)); }
    #kbar .kb-item { padding: 6px 16px; gap: 3px; }
    #kbar .kb-lab { font-size: 10.5px; }
    #kbar .kb-val { font-size: 18px; }
  }