/*
 * Meridian design tokens — cgms-labs.
 * Two hand-tuned themes (day / night). No CSS invert.
 * Every text/UI pair used by components is listed in checks/contrast.test.cjs.
 */

/* ---------- Local fonts (SIL OFL 1.1, see fonts/OFL-*.txt) ---------- */
@font-face{font-family:"Noto Sans";font-style:normal;font-weight:400;font-display:swap;src:url(fonts/noto-sans-cyrillic-400-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Noto Sans";font-style:normal;font-weight:400;font-display:swap;src:url(fonts/noto-sans-latin-400-normal.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}
@font-face{font-family:"Noto Sans";font-style:normal;font-weight:600;font-display:swap;src:url(fonts/noto-sans-cyrillic-600-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Noto Sans";font-style:normal;font-weight:600;font-display:swap;src:url(fonts/noto-sans-latin-600-normal.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}
@font-face{font-family:"Noto Sans";font-style:normal;font-weight:700;font-display:swap;src:url(fonts/noto-sans-cyrillic-700-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Noto Sans";font-style:normal;font-weight:700;font-display:swap;src:url(fonts/noto-sans-latin-700-normal.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}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400;font-display:swap;src:url(fonts/ibm-plex-mono-cyrillic-400-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400;font-display:swap;src:url(fonts/ibm-plex-mono-latin-400-normal.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}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:500;font-display:swap;src:url(fonts/ibm-plex-mono-cyrillic-500-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:500;font-display:swap;src:url(fonts/ibm-plex-mono-latin-500-normal.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{
  /* typography */
  --font-ui:"Noto Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --font-mono:"IBM Plex Mono",ui-monospace,"SFMono-Regular",Consolas,monospace;
  --fs-h1:40px;--lh-h1:44px;
  --fs-h2:26px;--lh-h2:32px;
  --fs-station:20px;--lh-station:26px;
  --fs-ui:15px;--lh-ui:22px;
  --fs-small:13px;--lh-small:18px;
  --fs-mono:13px;

  /* geometry */
  --line-w:2px;
  --node-s:10px;--node-m:12px;--node-l:14px;
  --r-control:6px;
  --r-inset:12px;
  --space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;
  --touch:44px;

  /* motion */
  --t-feedback:160ms;
  --t-stroke:280ms;
  --t-panel:220ms;
  --ease:cubic-bezier(.2,.7,.2,1);
}

/* ---------- Day ---------- */
:root,[data-theme="day"]{
  color-scheme:light;
  --bg:#EEF3F4;
  --panel:#FFFFFF;
  --inset:#F5F8F9;
  --ink:#17313D;
  --ink-2:#49616C;
  --line:#C4D2D8;          /* hairlines / separators (decorative) */
  --line-ui:#6D8792;       /* control borders, 3:1+ against panel */
  --route:#185D84;         /* confirmed route segments, primary action */
  --route-ink:#FFFFFF;     /* text on route */
  --route-soft:#DCEAF2;
  --copper:#984F1F;        /* time-window marks, optional legs (brief #A35A28, darkened for AA) */
  --copper-soft:#F5E6DA;
  --ok:#1D6B47;--ok-soft:#DFF0E6;
  --warn:#7D5300;--warn-soft:#F7ECCF;
  --bad:#A2302A;--bad-soft:#F7E0DD;
  --muted-node:#748A94;
  --focus:#0B4A6F;
  --overlay:rgba(12,32,42,.46);
  --shadow:0 1px 2px rgba(23,49,61,.08),0 6px 20px rgba(23,49,61,.06);
  --hatch:rgba(163,90,40,.18);
}

/* ---------- Night ---------- */
[data-theme="night"]{
  color-scheme:dark;
  --bg:#101F2A;
  --panel:#182D3B;
  --inset:#132634;
  --ink:#E7F0F2;
  --ink-2:#ACC0CB;
  --line:#2D4757;
  --line-ui:#7892A1;
  --route:#83C8EE;
  --route-ink:#0B1C26;
  --route-soft:#1E4257;
  --copper:#E6AF73;
  --copper-soft:#3A2E22;
  --ok:#86D6AE;--ok-soft:#173A2E;
  --warn:#EBC36F;--warn-soft:#3A3120;
  --bad:#F3A29A;--bad-soft:#452523;
  --muted-node:#6C8796;
  --focus:#B7E2FA;
  --overlay:rgba(3,10,15,.66);
  --shadow:0 1px 2px rgba(0,0,0,.3),0 8px 24px rgba(0,0,0,.25);
  --hatch:rgba(230,175,115,.2);
}
