/* =====================================================================
   Angom admin · design tokens (direction 4 · Ledger, style only)
   Source of truth: docs/design-tokens.md §4 (v1.0, 25 Oct 2026) and §6
   (fonts). Values change in that file first, then here. Components read
   these variables only; they never hard-code colours, sizes, font
   families or durations.
   - Light on :root, dark on :root[data-theme="dark"], and a copy of the
     dark block for data-theme="system" under prefers-color-scheme: dark
     (the server writes data-theme from the theme cookie, so no flash).
   - Names marked "proposed" in the doc (spacing, radii, motion, shell
     and component metrics, fixed artwork colours) are named here.
   ===================================================================== */

/* §6 · self-hosted WOFF2 subsets (SIL OFL 1.1; licences in ../fonts/<family>/OFL.txt) */
/* Inter 300 800 · latin-ext · Google Fonts v20 */
@font-face{font-family:"Inter";font-style:normal;font-weight:300 800;font-display:swap;src:url("../fonts/Inter/inter-var-latin-ext.woff2") format("woff2");unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
/* Inter 300 800 · latin · Google Fonts v20 */
@font-face{font-family:"Inter";font-style:normal;font-weight:300 800;font-display:swap;src:url("../fonts/Inter/inter-var-latin.woff2") format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
/* Sora 300 800 · latin-ext · Google Fonts v17 */
@font-face{font-family:"Sora";font-style:normal;font-weight:300 800;font-display:swap;src:url("../fonts/Sora/sora-var-latin-ext.woff2") format("woff2");unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
/* Sora 300 800 · latin · Google Fonts v17 */
@font-face{font-family:"Sora";font-style:normal;font-weight:300 800;font-display:swap;src:url("../fonts/Sora/sora-var-latin.woff2") format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
/* IBM Plex Sans Arabic 400 · arabic · Google Fonts v15 */
@font-face{font-family:"IBM Plex Sans Arabic";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/IBMPlexSansArabic/ibmplexsansarabic-400-arabic.woff2") format("woff2");unicode-range:U+0600-06FF, U+0750-077F, U+0870-0891, U+0897-08E1, U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74, U+FE76-FEFC, U+102E0-102FB, U+10E60-10E7E, U+10EC2-10EC7, U+10EC9-10EEE, U+10EF0-10EFF, U+1EE00-1EE03, U+1EE05-1EE1F, U+1EE21-1EE22, U+1EE24, U+1EE27, U+1EE29-1EE32, U+1EE34-1EE37, U+1EE39, U+1EE3B, U+1EE42, U+1EE47, U+1EE49, U+1EE4B, U+1EE4D-1EE4F, U+1EE51-1EE52, U+1EE54, U+1EE57, U+1EE59, U+1EE5B, U+1EE5D, U+1EE5F, U+1EE61-1EE62, U+1EE64, U+1EE67-1EE6A, U+1EE6C-1EE72, U+1EE74-1EE77, U+1EE79-1EE7C, U+1EE7E, U+1EE80-1EE89, U+1EE8B-1EE9B, U+1EEA1-1EEA3, U+1EEA5-1EEA9, U+1EEAB-1EEBB, U+1EEF0-1EEF1}
/* IBM Plex Sans Arabic 400 · latin · Google Fonts v15 */
@font-face{font-family:"IBM Plex Sans Arabic";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/IBMPlexSansArabic/ibmplexsansarabic-400-latin.woff2") format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
/* IBM Plex Sans Arabic 500 · arabic · Google Fonts v15 */
@font-face{font-family:"IBM Plex Sans Arabic";font-style:normal;font-weight:500;font-display:swap;src:url("../fonts/IBMPlexSansArabic/ibmplexsansarabic-500-arabic.woff2") format("woff2");unicode-range:U+0600-06FF, U+0750-077F, U+0870-0891, U+0897-08E1, U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74, U+FE76-FEFC, U+102E0-102FB, U+10E60-10E7E, U+10EC2-10EC7, U+10EC9-10EEE, U+10EF0-10EFF, U+1EE00-1EE03, U+1EE05-1EE1F, U+1EE21-1EE22, U+1EE24, U+1EE27, U+1EE29-1EE32, U+1EE34-1EE37, U+1EE39, U+1EE3B, U+1EE42, U+1EE47, U+1EE49, U+1EE4B, U+1EE4D-1EE4F, U+1EE51-1EE52, U+1EE54, U+1EE57, U+1EE59, U+1EE5B, U+1EE5D, U+1EE5F, U+1EE61-1EE62, U+1EE64, U+1EE67-1EE6A, U+1EE6C-1EE72, U+1EE74-1EE77, U+1EE79-1EE7C, U+1EE7E, U+1EE80-1EE89, U+1EE8B-1EE9B, U+1EEA1-1EEA3, U+1EEA5-1EEA9, U+1EEAB-1EEBB, U+1EEF0-1EEF1}
/* IBM Plex Sans Arabic 500 · latin · Google Fonts v15 */
@font-face{font-family:"IBM Plex Sans Arabic";font-style:normal;font-weight:500;font-display:swap;src:url("../fonts/IBMPlexSansArabic/ibmplexsansarabic-500-latin.woff2") format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
/* IBM Plex Sans Arabic 600 · arabic · Google Fonts v15 */
@font-face{font-family:"IBM Plex Sans Arabic";font-style:normal;font-weight:600;font-display:swap;src:url("../fonts/IBMPlexSansArabic/ibmplexsansarabic-600-arabic.woff2") format("woff2");unicode-range:U+0600-06FF, U+0750-077F, U+0870-0891, U+0897-08E1, U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74, U+FE76-FEFC, U+102E0-102FB, U+10E60-10E7E, U+10EC2-10EC7, U+10EC9-10EEE, U+10EF0-10EFF, U+1EE00-1EE03, U+1EE05-1EE1F, U+1EE21-1EE22, U+1EE24, U+1EE27, U+1EE29-1EE32, U+1EE34-1EE37, U+1EE39, U+1EE3B, U+1EE42, U+1EE47, U+1EE49, U+1EE4B, U+1EE4D-1EE4F, U+1EE51-1EE52, U+1EE54, U+1EE57, U+1EE59, U+1EE5B, U+1EE5D, U+1EE5F, U+1EE61-1EE62, U+1EE64, U+1EE67-1EE6A, U+1EE6C-1EE72, U+1EE74-1EE77, U+1EE79-1EE7C, U+1EE7E, U+1EE80-1EE89, U+1EE8B-1EE9B, U+1EEA1-1EEA3, U+1EEA5-1EEA9, U+1EEAB-1EEBB, U+1EEF0-1EEF1}
/* IBM Plex Sans Arabic 600 · latin · Google Fonts v15 */
@font-face{font-family:"IBM Plex Sans Arabic";font-style:normal;font-weight:600;font-display:swap;src:url("../fonts/IBMPlexSansArabic/ibmplexsansarabic-600-latin.woff2") format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
/* IBM Plex Sans Arabic 700 · arabic · Google Fonts v15 */
@font-face{font-family:"IBM Plex Sans Arabic";font-style:normal;font-weight:700;font-display:swap;src:url("../fonts/IBMPlexSansArabic/ibmplexsansarabic-700-arabic.woff2") format("woff2");unicode-range:U+0600-06FF, U+0750-077F, U+0870-0891, U+0897-08E1, U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74, U+FE76-FEFC, U+102E0-102FB, U+10E60-10E7E, U+10EC2-10EC7, U+10EC9-10EEE, U+10EF0-10EFF, U+1EE00-1EE03, U+1EE05-1EE1F, U+1EE21-1EE22, U+1EE24, U+1EE27, U+1EE29-1EE32, U+1EE34-1EE37, U+1EE39, U+1EE3B, U+1EE42, U+1EE47, U+1EE49, U+1EE4B, U+1EE4D-1EE4F, U+1EE51-1EE52, U+1EE54, U+1EE57, U+1EE59, U+1EE5B, U+1EE5D, U+1EE5F, U+1EE61-1EE62, U+1EE64, U+1EE67-1EE6A, U+1EE6C-1EE72, U+1EE74-1EE77, U+1EE79-1EE7C, U+1EE7E, U+1EE80-1EE89, U+1EE8B-1EE9B, U+1EEA1-1EEA3, U+1EEA5-1EEA9, U+1EEAB-1EEBB, U+1EEF0-1EEF1}
/* IBM Plex Sans Arabic 700 · latin · Google Fonts v15 */
@font-face{font-family:"IBM Plex Sans Arabic";font-style:normal;font-weight:700;font-display:swap;src:url("../fonts/IBMPlexSansArabic/ibmplexsansarabic-700-latin.woff2") format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
/* Noto Kufi Arabic 300 800 · arabic · Google Fonts v27 */
@font-face{font-family:"Noto Kufi Arabic";font-style:normal;font-weight:300 800;font-display:swap;src:url("../fonts/NotoKufiArabic/notokufiarabic-var-arabic.woff2") format("woff2");unicode-range:U+0600-06FF, U+0750-077F, U+0870-0891, U+0897-08E1, U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74, U+FE76-FEFC, U+102E0-102FB, U+10E60-10E7E, U+10EC2-10EC7, U+10EC9-10EEE, U+10EF0-10EFF, U+1EE00-1EE03, U+1EE05-1EE1F, U+1EE21-1EE22, U+1EE24, U+1EE27, U+1EE29-1EE32, U+1EE34-1EE37, U+1EE39, U+1EE3B, U+1EE42, U+1EE47, U+1EE49, U+1EE4B, U+1EE4D-1EE4F, U+1EE51-1EE52, U+1EE54, U+1EE57, U+1EE59, U+1EE5B, U+1EE5D, U+1EE5F, U+1EE61-1EE62, U+1EE64, U+1EE67-1EE6A, U+1EE6C-1EE72, U+1EE74-1EE77, U+1EE79-1EE7C, U+1EE7E, U+1EE80-1EE89, U+1EE8B-1EE9B, U+1EEA1-1EEA3, U+1EEA5-1EEA9, U+1EEAB-1EEBB, U+1EEF0-1EEF1}
/* Noto Kufi Arabic 300 800 · latin · Google Fonts v27 */
@font-face{font-family:"Noto Kufi Arabic";font-style:normal;font-weight:300 800;font-display:swap;src:url("../fonts/NotoKufiArabic/notokufiarabic-var-latin.woff2") format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
/* Barlow Condensed 700 · latin-ext · Google Fonts v13 */
@font-face{font-family:"Barlow Condensed";font-style:normal;font-weight:700;font-display:swap;src:url("../fonts/BarlowCondensed/barlowcondensed-700-latin-ext.woff2") format("woff2");unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
/* Barlow Condensed 700 · latin · Google Fonts v13 */
@font-face{font-family:"Barlow Condensed";font-style:normal;font-weight:700;font-display:swap;src:url("../fonts/BarlowCondensed/barlowcondensed-700-latin.woff2") format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}

:root{
  color-scheme:light;

  /* §4.1 colour · light */
  --bg:#F4F3F1; --surface:#FFFFFF; --surface-2:#FAF9F7; --ink:#141416; --ink-2:#3C3B40; --muted:#67666C;
  --line:#E6E4E0; --line-2:#D6D4CF; --fill:#EDECE9; --hover:rgba(20,20,22,.04);
  --red:#AE2628; --red-t:#AE2628; --red-soft:#FBEDEC; --on-red:#FFFFFF;
  --good:#0CA30C; --good-t:#1C7A3E; --good-soft:rgba(12,163,12,.10);
  --warn:#FAB219; --warn-t:#8F5400; --warn-soft:rgba(250,178,25,.16);
  --crit:#D03B3B; --crit-t:#B42323; --crit-soft:rgba(208,59,59,.10);
  --info-t:#3C3B40; --info-soft:rgba(20,20,22,.06);
  --s1:#2a78d6; --s2:#eb6834; --s3:#1baf7a; --bar:#3C3B40; --grid:#ECEAE6; --axis:#C3C2B7;
  --side:#141416; --side-ink:#F2F0ED; --side-mut:#A6A4AB; --side-hover:rgba(255,255,255,.06); --side-cur:rgba(255,255,255,.1);
  --paper:#FFFFFF; /* receipt paper: upgrade view only, not used in v1 */

  /* §4.1 fixed colours (not themed; names proposed) */
  --side-badge:rgba(255,255,255,.12);  /* nav count badge ground */
  --side-focus:#fff;                   /* focus outline inside the side nav */
  --scrim:rgba(10,10,12,.32);
  --switch-knob:#fff;
  --plate-ground:#fff; --plate-ink:#141416; --plate-band:#AE2628; --plate-band-ink:#fff; /* Saudi plate artwork */
  --qr-ground:#fff; --qr-ink:#141416; /* TOTP enrolment QR code: dark on light in both themes, like the plate */

  /* §4.5 elevation */
  --shadow:0 1px 2px rgba(20,20,22,.05),0 8px 24px -12px rgba(20,20,22,.12);
  --shadow-drawer:-20px 0 60px -20px rgba(0,0,0,.3);
  --shadow-drawer-rtl:20px 0 60px -20px rgba(0,0,0,.3); /* D-61: mirrored in RTL */
  --shadow-seg:0 1px 3px rgba(0,0,0,.12);
  --shadow-knob:0 1px 3px rgba(0,0,0,.25);
  --z-th:1; --z-tip:5; --z-gres:60; --z-menu:65; --z-scrim:80; --z-drawer:81; --z-toast:95;

  /* §4.2 typography */
  --f:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --f-ar:"IBM Plex Sans Arabic","Segoe UI",Tahoma,sans-serif;
  --f-disp:"Sora","Inter",sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,monospace; /* receipt only (upgrade); font not shipped, D-15 */
  --f-plate-lat:"Barlow Condensed",sans-serif;
  --f-plate-ar:"Noto Kufi Arabic",sans-serif;
  --fs-body:15px; --lh-body:1.45;
  --fs-odo:clamp(40px,5.4vw,68px); --ls-odo:-.02em; --fs-odo-cur:.32em;
  --fs-kpi:34px; --fs-kpi-sm:26px; --lh-kpi:1.1;
  --fs-h1:26px; --lh-h1:1.15; --ls-h1:-.01em;
  --fs-h2:18px;      /* drawer title */
  --fs-section:17px; /* in-page h2, split value */
  --fs-h3:15px;      /* card title */
  --fs-ui:14px;      /* table cell, field, button, search, key-value */
  --fs-row:13.5px;   /* activity row, note */
  --fs-sm:13px;      /* chip, segment, small button, .small, KPI caption, field label */
  --fs-xs:12.5px;    /* badge, table second line, eyebrow, tooltip */
  --fs-th:12px;      /* table header, drawer section label */
  --fs-label:11.5px; /* nav group heading, chart direct label */
  --fs-tick:11px;    /* chart tick, nav count badge */
  --ls-eyebrow:.06em; --ls-caps:.04em; --ls-th:.02em;

  /* §4.3 spacing (names proposed) */
  --sp-1:2px; --sp-2:4px; --sp-3:6px; --sp-4:8px; --sp-5:10px; --sp-6:12px; --sp-7:14px;
  --sp-8:16px; --sp-9:18px; --sp-10:20px; --sp-11:24px; --sp-12:32px; --sp-13:40px; --sp-14:48px;

  /* §4.4 radii */
  --r:14px; --r-s:10px; --r-pill:999px; --r-12:12px; --r-9:9px; --r-8:8px; --r-focus:6px;
  --r-bar:4px; --r-stack:5px; --r-swatch:3px;

  /* §4.6 focus */
  --focus-w:2px;

  /* §4.7 motion */
  --ease:cubic-bezier(.32,.72,0,1);
  --ease-odo:cubic-bezier(.2,.8,.2,1);
  --dur-filter:.15s; --dur-press:.1s; --dur-switch:.2s; --dur-drawer:.32s; --dur-scrim:.25s;
  --dur-toast:.25s; --dur-bar:.15s; --dur-tip:.12s; --dur-hover:.15s;
  --dur-odo:1.6s; --odo-stagger:.06s; --dur-pulse:2s;
  --toast-rise:20px;

  /* §4.9 shell metrics */
  --shell-side-w:236px;
  --shell-side-w-collapsed:84px; /* D-63 / DQ-16: direction 1 rail */
  --logo-h:38px; --logo-h-sm:30px;
  --nav-item-h:36px;
  --hdr-ctl-h:34px;
  --gsearch-w:340px;
  --main-max:1500px;
  --drawer-w:min(480px,100vw);
  --menu-w:250px;

  /* §4.11 component metrics */
  --icon:18px; --icon-sm:16px; --icon-xs:14px; --icon-sort:12px; --icon-badge:13px;
  --btn-h:36px; --btn-h-sm:30px;
  --chip-h:32px; --seg-h:30px;
  --field-h:38px; --field-h-sm:34px; --textarea-h:84px; --field-row-input:120px;
  --search-h:36px; --search-min:220px; --search-max:340px;
  --switch-w:42px; --switch-h:26px; --knob:20px; --knob-inset:3px; --knob-travel:19px;
  --th-h:38px; --td-h:48px;
  --avatar:30px;
  --card-hd-h:44px;
  --kv-key:minmax(110px,40%);
  --stack-h:14px; --swatch:10px; --legend-pct:3.2em;
  --live-dot:7px; --pulse-ring:6px;
  --chart-gutter:44px; --chart-pt:18px; --chart-pb:26px;
  --hero-l:1.25fr; --hero-r:1fr; --row2-l:1.5fr; --row2-r:1fr;
  --drawer-btn-basis:140px;
  --odo-digit-w:.64em; --odo-comma-w:.3em; --odo-gap:3px;

  /* Phase 4 component metrics (sign-in, dialog, pager, skeleton, inspections; names proposed, values from the kit's scale) */
  --z-dlg-scrim:88; --z-dlg:89;
  --dlg-w:min(440px,calc(100vw - 2 * var(--sp-8)));
  --acct-spine-w:minmax(240px,32%); --acct-card-w:420px;
  --qr-size:176px; --thumb:64px; --skel-bar-w:70%; --skel-odo-h:68px; --skel-chart-h:240px; --skel-weekly-h:150px; --skel-split-h:56px;
  --skel-drawer-h:360px; --otp-ls:.3em;

  /* Phase 4 stage B metrics (timeline, manual-booking wizard, handover; names proposed, values from the kit's scale) */
  --tl-car-w:252px; --tl-car-w-sm:168px; --tl-day-w:64px; --tl-max-h:min(72vh,900px); --tl-bar-inset:9px; --tl-key-w:20px;
  --steps-border:3px; --wiz-quote-w:380px; --upl-thumb:104px; --fuel-seg-min:30px;
  /* Phase 4 admin round 2 metrics (photo galleries, KYC document viewer and zoom, permission matrix, recovery codes; names proposed) */
  --gallery-thumb:132px; --doc-ratio:85.6/54; --zoom-w:min(1100px,calc(100vw - 2 * var(--sp-8))); --zoom-h:min(78vh,820px);
  --perm-col:92px; --code-ls:.08em; --msg-clamp:3;
  /* Phase 4 admin round 2 stage B metrics (pricing grid, content, reports, phone preview; values from the Ledger demo kit.css) */
  --grid-pricing:440px; --grid-content:380px; --grid-reports:460px; --rate-input-w:110px; --wrap-col-min:180px; --banner-ratio:12/5; --r-phone:16px; --r-phone-card:14px;
  --pv-max:340px; --settings-max:760px; --clause-n:2em;
  /* Phase 4 pay on delivery metrics (the handover on a driver's phone: touch targets, inputs iOS does not zoom into, the sticky action
     bar, the bottom-sheet dialog, the booking cards; names proposed) */
  --touch-h:44px; --fs-input-phone:16px; --z-hbar:20; --card-label-w:104px; --td-h-card:24px; --sheet-gap:12px;

  /* §4.11 component details (values from K / L; names proposed) */
  --icon-stroke:1.8; --badge-stroke:2.4;
  --badge-gap:5px; --badge-pad-start:7px; --badge-pad-end:9px; --lh-badge:1.5;
  --lh-tight:1.2; --lh-tip:1.35; --tip-pad:7px 10px;
  --gres-pad:9px 10px; --nb-pad:1px 7px;
  --activity-pad:9px 16px; --activity-time-w:3em;
  --toast-bottom:22px; --logo-gap:22px; --main-pb-mobile:90px;
  --reconnect-w:640px;

  /* §4.10 Saudi plate (md default, sm, lg); always LTR */
  --plate-w:148px; --plate-h:56px; --plate-bw:2px; --plate-r:7px; --plate-rule:1.25px;
  --plate-band-w:16px; --plate-band-fs:7px; --plate-fs-lat:17px; --plate-fs-ar:14px;
  --plate-ls-lat:.1em; --plate-ls-ar:.12em;
  --plate-sm-w:104px; --plate-sm-h:40px; --plate-sm-bw:1.5px; --plate-sm-r:5px;
  --plate-sm-fs-lat:12.5px; --plate-sm-fs-ar:10.5px; --plate-sm-band-fs:5.5px;
  --plate-lg-w:220px; --plate-lg-h:84px; --plate-lg-bw:2.5px; --plate-lg-r:9px;
  --plate-lg-band-w:22px; --plate-lg-fs-lat:25px; --plate-lg-fs-ar:20px; --plate-lg-band-fs:9px;
}

/* §4.1 colour · dark (unlisted variables inherit the light values) */
:root[data-theme="dark"]{
  color-scheme:dark;
  --bg:#0B0B0C; --surface:#1A1A1D; --surface-2:#202023; --ink:#F2F0ED; --ink-2:#D4D2D8; --muted:#A6A4AB;
  --line:#2C2C30; --line-2:#3A3A3F; --fill:#242427; --hover:rgba(242,240,237,.05);
  --red:#C3302F; --red-t:#FF6159; --red-soft:rgba(255,97,89,.14);
  --good-t:#3DCB7A; --good-soft:rgba(61,203,122,.13); --warn-t:#F2B544; --warn-soft:rgba(242,181,68,.14);
  --crit-t:#FF7A70; --crit-soft:rgba(255,107,97,.14); --info-t:#D4D2D8; --info-soft:rgba(242,240,237,.08);
  --s1:#3987e5; --s2:#d95926; --s3:#199e70; --bar:#C9C7CD; --grid:#26262A; --axis:#3A3A3F;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 12px 32px -14px rgba(0,0,0,.6);
  --side:#121214; --paper:#F4F2EE;
}

/* data-theme="system": the same dark block when the OS asks for dark */
@media (prefers-color-scheme:dark){
  :root[data-theme="system"]{
    color-scheme:dark;
    --bg:#0B0B0C; --surface:#1A1A1D; --surface-2:#202023; --ink:#F2F0ED; --ink-2:#D4D2D8; --muted:#A6A4AB;
    --line:#2C2C30; --line-2:#3A3A3F; --fill:#242427; --hover:rgba(242,240,237,.05);
    --red:#C3302F; --red-t:#FF6159; --red-soft:rgba(255,97,89,.14);
    --good-t:#3DCB7A; --good-soft:rgba(61,203,122,.13); --warn-t:#F2B544; --warn-soft:rgba(242,181,68,.14);
    --crit-t:#FF7A70; --crit-soft:rgba(255,107,97,.14); --info-t:#D4D2D8; --info-soft:rgba(242,240,237,.08);
    --s1:#3987e5; --s2:#d95926; --s3:#199e70; --bar:#C9C7CD; --grid:#26262A; --axis:#3A3A3F;
    --shadow:0 1px 2px rgba(0,0,0,.3),0 12px 32px -14px rgba(0,0,0,.6);
    --side:#121214; --paper:#F4F2EE;
  }
}

/* §4.7 reduced motion: every duration collapses (K) */
@media (prefers-reduced-motion:reduce){
  :root{
    --dur-filter:.01ms; --dur-press:.01ms; --dur-switch:.01ms; --dur-drawer:.01ms; --dur-scrim:.01ms;
    --dur-toast:.01ms; --dur-bar:.01ms; --dur-tip:.01ms; --dur-hover:.01ms; --dur-odo:.01ms; --odo-stagger:0s;
  }
}

/* Touch screens (the driver's phone, owner decision 2 of 1 Nov 2026): buttons, fields, segments and chips at least 44px high */
@media (pointer:coarse){
  :root{
    --btn-h:var(--touch-h); --btn-h-sm:var(--touch-h); --field-h:var(--touch-h); --field-h-sm:var(--touch-h); --seg-h:var(--touch-h); --chip-h:var(--touch-h);
  }
}
