/* THE ONLY PLACE BRAND LIVES. Every colour, font, radius and spacing value is a variable here.
   site.css, paper.css and demo.css use var(--…) only. Source: brand/truman-brand-book.html (2026-11-06), whose
   :root is the app's own (truman/ui/style.css). Each colour is light-dark(light, dark); color-scheme follows the
   OS and [data-theme] overrides it. Proportion: ground 86%, ink 9%, accent 3%, state 2%. Budapest Bright
   (sun, apricot, coral, cream, pink, brick, ink) is reserved for state; headlines are ink, never colour. */

/* IBM Plex (SIL Open Font License 1.1, see fonts/LICENSE-IBM-Plex-OFL.txt), WOFF2 from the @ibm/plex-sans and
   @ibm/plex-mono 1.1.0 packages. Latin 1 plus the "Pi" subset (arrows, math, super/subscripts). URLs are relative to
   this file so the same block works at any base path and from the brand book. */
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 400; font-display: swap; src: url("fonts/IBMPlexSans-Regular-Latin1.woff2") format("woff2"); unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+FB01-FB02; }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 400; font-display: swap; src: url("fonts/IBMPlexSans-Regular-Pi.woff2") format("woff2"); unicode-range: U+0E3F, U+2000-200D, U+2015, U+2028-2029, U+202F, U+2032-2033, U+2070, U+2074-2079, U+2080-2089, U+2113, U+2116, U+2126, U+212E, U+2150-2151, U+2153-215E, U+2190-2199, U+21A9-21AA, U+21B0-21B3, U+21B6-21B7, U+21BA-21BB, U+21C4, U+21C6, U+2202, U+2206, U+220F, U+2211, U+2215, U+221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+25CA, U+2713, U+274C, U+2B0E-2B11, U+ECE0, U+EFCC, U+FEFF, U+FFFD; }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 500; font-display: swap; src: url("fonts/IBMPlexSans-Medium-Latin1.woff2") format("woff2"); unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+FB01-FB02; }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 500; font-display: swap; src: url("fonts/IBMPlexSans-Medium-Pi.woff2") format("woff2"); unicode-range: U+0E3F, U+2000-200D, U+2015, U+2028-2029, U+202F, U+2032-2033, U+2070, U+2074-2079, U+2080-2089, U+2113, U+2116, U+2126, U+212E, U+2150-2151, U+2153-215E, U+2190-2199, U+21A9-21AA, U+21B0-21B3, U+21B6-21B7, U+21BA-21BB, U+21C4, U+21C6, U+2202, U+2206, U+220F, U+2211, U+2215, U+221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+25CA, U+2713, U+274C, U+2B0E-2B11, U+ECE0, U+EFCC, U+FEFF, U+FFFD; }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 600; font-display: swap; src: url("fonts/IBMPlexSans-SemiBold-Latin1.woff2") format("woff2"); unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+FB01-FB02; }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 600; font-display: swap; src: url("fonts/IBMPlexSans-SemiBold-Pi.woff2") format("woff2"); unicode-range: U+0E3F, U+2000-200D, U+2015, U+2028-2029, U+202F, U+2032-2033, U+2070, U+2074-2079, U+2080-2089, U+2113, U+2116, U+2126, U+212E, U+2150-2151, U+2153-215E, U+2190-2199, U+21A9-21AA, U+21B0-21B3, U+21B6-21B7, U+21BA-21BB, U+21C4, U+21C6, U+2202, U+2206, U+220F, U+2211, U+2215, U+221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+25CA, U+2713, U+274C, U+2B0E-2B11, U+ECE0, U+EFCC, U+FEFF, U+FFFD; }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 700; font-display: swap; src: url("fonts/IBMPlexSans-Bold-Latin1.woff2") format("woff2"); unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+FB01-FB02; }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 700; font-display: swap; src: url("fonts/IBMPlexSans-Bold-Pi.woff2") format("woff2"); unicode-range: U+0E3F, U+2000-200D, U+2015, U+2028-2029, U+202F, U+2032-2033, U+2070, U+2074-2079, U+2080-2089, U+2113, U+2116, U+2126, U+212E, U+2150-2151, U+2153-215E, U+2190-2199, U+21A9-21AA, U+21B0-21B3, U+21B6-21B7, U+21BA-21BB, U+21C4, U+21C6, U+2202, U+2206, U+220F, U+2211, U+2215, U+221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+25CA, U+2713, U+274C, U+2B0E-2B11, U+ECE0, U+EFCC, U+FEFF, U+FFFD; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 400; font-display: swap; src: url("fonts/IBMPlexMono-Regular-Latin1.woff2") format("woff2"); unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+FB01-FB02; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 400; font-display: swap; src: url("fonts/IBMPlexMono-Regular-Pi.woff2") format("woff2"); unicode-range: U+0E3F, U+2000-200D, U+2015, U+2028-2029, U+202F, U+2032-2033, U+2070, U+2074-2079, U+2080-2089, U+2113, U+2116, U+2126, U+212E, U+2150-2151, U+2153-215E, U+2190-2199, U+21A9-21AA, U+21B0-21B3, U+21B6-21B7, U+21BA-21BB, U+21C4, U+21C6, U+2202, U+2206, U+220F, U+2211, U+2215, U+221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+25CA, U+2713, U+274C, U+2B0E-2B11, U+ECE0, U+EFCC, U+FEFF, U+FFFD; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 500; font-display: swap; src: url("fonts/IBMPlexMono-Medium-Latin1.woff2") format("woff2"); unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+FB01-FB02; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 500; font-display: swap; src: url("fonts/IBMPlexMono-Medium-Pi.woff2") format("woff2"); unicode-range: U+0E3F, U+2000-200D, U+2015, U+2028-2029, U+202F, U+2032-2033, U+2070, U+2074-2079, U+2080-2089, U+2113, U+2116, U+2126, U+212E, U+2150-2151, U+2153-215E, U+2190-2199, U+21A9-21AA, U+21B0-21B3, U+21B6-21B7, U+21BA-21BB, U+21C4, U+21C6, U+2202, U+2206, U+220F, U+2211, U+2215, U+221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+25CA, U+2713, U+274C, U+2B0E-2B11, U+ECE0, U+EFCC, U+FEFF, U+FFFD; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 600; font-display: swap; src: url("fonts/IBMPlexMono-SemiBold-Latin1.woff2") format("woff2"); unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+FB01-FB02; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 600; font-display: swap; src: url("fonts/IBMPlexMono-SemiBold-Pi.woff2") format("woff2"); unicode-range: U+0E3F, U+2000-200D, U+2015, U+2028-2029, U+202F, U+2032-2033, U+2070, U+2074-2079, U+2080-2089, U+2113, U+2116, U+2126, U+212E, U+2150-2151, U+2153-215E, U+2190-2199, U+21A9-21AA, U+21B0-21B3, U+21B6-21B7, U+21BA-21BB, U+21C4, U+21C6, U+2202, U+2206, U+220F, U+2211, U+2215, U+221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+25CA, U+2713, U+274C, U+2B0E-2B11, U+ECE0, U+EFCC, U+FEFF, U+FFFD; }

:root {
  color-scheme: light dark;

  /* palette: state only */
  --pink: #ff9ac8; --coral: #ff4d5a; --brick: #e03a1e; --sun: #ffc90e; --apricot: #ffb25b; --clay: #d98a4a; --cream: #fff3d6; --ink: #4a0f18;

  /* surfaces and text */
  --bg: light-dark(#fafafa, #1c1c1c);
  --bg-deep: light-dark(#f1f1f1, #121212);
  --panel: light-dark(#ffffff, #171717);
  --raised: light-dark(#f4f4f4, #2a2a2a);
  --border: light-dark(#d9d9d9, #2e2e2e);
  --control-border: light-dark(#767676, #707070);
  --text: light-dark(#1c1c1c, #ededed);
  --muted: light-dark(#5f5f5f, #b4b4b4);
  --subtle: light-dark(#6b6b6b, #a0a0a0);

  /* accent (cyan-blue): the one action per screen, links, selection */
  --accent: light-dark(#0b6ea3, #1e9bd7);
  --accent-text: light-dark(#0b6ea3, #3fb0e6);
  --on-accent: light-dark(#ffffff, #04141c);
  --focus: light-dark(#0b6ea3, #3fb0e6);

  /* state. Stamp colours: Cal's decision of 2026-11-07 (newest wins over the book): approve and resolve are green,
     retire and reject are red. These are the values the Truman app uses. */
  --stamp: light-dark(#1f7a3a, #5fd38a);
  --stamp-neg: light-dark(#b8290c, #ff9ac8);
  --danger-text: light-dark(#b8290c, #ff4d5a);
  --warn-text: light-dark(#7a4a1e, #ffb25b);
  --add: light-dark(#1a7f37, #3fb950);
  --del: light-dark(#c4212d, #ff6b73);
  --ok-text: var(--add);
  --pill-pending: var(--sun);
  --pill-stale: var(--apricot);
  --pill-danger: var(--coral);
  --pill-info: var(--cream);
  --on-pill: var(--ink);
  --selected-bar: light-dark(var(--brick), var(--coral));
  --selected-bg: light-dark(var(--cream), #2a2a2a);
  --select-bg: light-dark(var(--cream), var(--pink));
  --select-fg: var(--ink);
  --shadow: light-dark(0 8px 30px rgb(0 0 0 / .14), 0 8px 30px rgb(0 0 0 / .55)); /* floating layers only (consent panel) */
  --edge: light-dark(#a8a8a8, #5a5a5a);

  /* logo: the T follows the text token, the dot never changes */
  --mark-ink: light-dark(#000000, #ededed);
  --mark-dot: #ffc70a;

  /* aliases kept so older rules read the book's tokens */
  --code-bg: var(--bg-deep);
  --card: var(--panel);
  --card-border: var(--border);
  --add-bg: color-mix(in srgb, var(--add) 12%, transparent);
  --del-bg: color-mix(in srgb, var(--del) 12%, transparent);

  /* type (brand book v2, 2026-11-09): IBM Plex Sans for headings, UI and body; IBM Plex Mono for evidence.
     Self-hosted (@font-face above); no external font request. Change the type here and nowhere else. */
  --font-body: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-display: var(--font-body);
  /* The countdown headline only: Newsreader when installed, else Georgia. Same stack as main. No font file is shipped and
     there is no network request. */
  --font-serif: "Newsreader", Georgia, "Times New Roman", serif;
  --font-head: var(--font-body);
  --font-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  --fs-base: 15px;
  --fs-small: 13.5px;
  --fs-mono: 12.5px;
  --lh-body: 1.6;
  --fw-head: 600;
  --fw-display: 600;   /* hero and section headlines */
  --fw-display-md: 500; /* quotes, prices, row titles: large text that is not a headline */
  --ls-display: -.02em;
  --ls-display-md: -.01em;
  --measure: 68ch;

  /* split-flap clock (countdown page): matte tiles one to two steps off the ground; follows light/dark */
  --flap-top: light-dark(#ececec, #2a2a2a); --flap-bot: light-dark(#e6e6e6, #262626);
  --flap-ink: light-dark(#1c1c1c, #f2f2f0); --flap-split: var(--bg); --flap-shadow: rgb(0 0 0 / .15);
  --sound-line: light-dark(var(--text), #ffffff); /* white on dark; the text colour on light so it stays visible */

  /* shape and space: radii 3 focus, 4 stamp, 6 controls, 8 panels, 10 pills; 4 px base */
  --r-focus: 3px;
  --r-stamp: 4px;
  --radius-sm: 6px;
  --radius: 8px;
  --radius-lg: 8px;
  --r-pill: 10px;
  --r-full: 999px; /* header bar buttons (floating-bar pattern, 2026-11-07) */
  --r-bar: 16px; --r-bar-item: 10px; --bar-inset: clamp(16px, 2vw, 24px);
  --maxw: 1240px;
  --gutter: clamp(16px, 4vw, 48px);
  --gap: 24px;
  --section-pad: clamp(48px, 8vw, 96px);
}
:root[data-theme="light"] { color-scheme: light; }
:root[data-theme="dark"] { color-scheme: dark; }
