/* Extracted from Hub Admin.dc.html — all six schemes + four font pairings.
   Themes switch by attribute: :root:has([data-theme="slate"]) etc.
   Font pairings switch by :root:has([data-font="plex"|"instrument"|"compact"]). */

  /* Type scale — six sizes, defined once, above the themes because size does not vary
   * by colour scheme.
   *
   * Replaces fifteen hardcoded sizes (27 / 22 / 21 / 20 / 16 / 13.5 / 13 / 12.5 / 12 /
   * 11.5 / 11 / 10.5 / 10 / 9.5 / 9). Four of those were half-pixel pairs — 13 vs 13.5,
   * 12 vs 12.5, 11 vs 11.5, 10 vs 10.5 — differences nobody can see, which bought no
   * hierarchy and made "which size is this?" unanswerable.
   *
   * 13px is the floor, deliberately: the old scale ran down to 9px for a dropdown caret
   * and 9.5px for a nav note, which Josh could not read. Everything that used to sit
   * between 9 and 11.5 is now --fs-xs; body text moved 13 → 15; secondary text 12 → 14.
   * The two display sizes were already right and did not move.
   */
  :root {
    --fs-display: 27px;  /* stat-card numbers */
    --fs-xl:      22px;  /* page title, login heading */
    --fs-lg:      16px;  /* generated password, remove button */
    --fs-body:    15px;  /* body, tables, buttons, alerts, nav */
    --fs-sm:      14px;  /* captions, hints, form labels, subtitles */
    --fs-xs:      13px;  /* FLOOR — th, badges, pills, sidebar meta, carets */
  }

  :root {
    --sans: 'Helvetica Neue', Helvetica, Arial, sans-serif;
    --mono: 'JetBrains Mono', ui-monospace, monospace;
    --canvas:#f1efeb; --paper:#fffefb; --wash:#f8f7f4; --wash2:#f3f1ec;
    --text:#17181a; --ink-surface:#17181a; --ink-line:#2c2d2f; --ink-hi:#242628;
    --on-ink:#fffefb; --side-fg:#cfccc6; --side-dim:#7d7a74; --side-dim2:#6f6c66; --side-dim3:#575450;
    --muted:#8d8a83; --muted-2:#77746e; --muted-3:#9a968e; --faint:#b3aea5;
    --body:#5c5850; --body-2:#4a4741; --body-3:#3d3a35;
    --rule:#dedbd4; --rule-2:#ece9e3; --rule-3:#f2efe9; --rule-strong:#d3d0c9; --rule-soft:#e6e3dc; --track:#efece6;
    --ok:#2f5c34; --ok-2:#5c8a52; --ok-tint:#e7efe6;
    --alert:#a33f1c; --alert-2:#b4441f; --alert-tint:#fdf3ef; --alert-line:#e8bfae; --alert-tint2:#fbe6df; --alert-3:#c98a6a;
    --warn:#c08a2a; --warn-2:#a06a2c; --warn-3:#7d5a17; --warn-tint:#f7efdf;
    --link:#2c4a7c; --link-2:#4a6b9a; --link-3:#7b93b8; --link-tint:#e5eaf3; --sel:#dbe3f0;
  }
  :root:has([data-font="plex"]) { --sans:'IBM Plex Sans', sans-serif; --mono:'IBM Plex Mono', ui-monospace, monospace; }
  :root:has([data-font="instrument"]) { --sans:'Instrument Sans', sans-serif; --mono:'Spline Sans Mono', ui-monospace, monospace; }
  :root:has([data-font="compact"]) { --sans:'Archivo', sans-serif; --mono:'Roboto Mono', ui-monospace, monospace; }
  :root:has([data-theme="newsprint"]) {
    --canvas:#f3f3f3; --paper:#ffffff; --wash:#f7f7f7; --wash2:#efefef;
    --text:#0b0b0b; --ink-surface:#000000; --ink-line:#232323; --ink-hi:#1a1a1a;
    --on-ink:#ffffff; --side-fg:#d8d8d8; --side-dim:#8a8a8a; --side-dim2:#767676; --side-dim3:#5c5c5c;
    --muted:#6e6e6e; --muted-2:#4f4f4f; --muted-3:#7d7d7d; --faint:#a8a8a8;
    --body:#333333; --body-2:#222222; --body-3:#1a1a1a;
    --rule:#d4d4d4; --rule-2:#e6e6e6; --rule-3:#efefef; --rule-strong:#bcbcbc; --rule-soft:#dcdcdc; --track:#e8e8e8;
    --ok:#14601f; --ok-2:#3c7a44; --ok-tint:#e9f0e9;
    --alert:#b21b0e; --alert-2:#c22314; --alert-tint:#fdefed; --alert-line:#edb5ae; --alert-tint2:#fbe3df; --alert-3:#c07a70;
    --warn:#8a6a00; --warn-2:#7a5d00; --warn-3:#5f4800; --warn-tint:#f7f0d9;
    --link:#0f45a8; --link-2:#3a68c0; --link-3:#7791ce; --link-tint:#e7edf9; --sel:#d6e2fb;
  }
  :root:has([data-theme="field"]) {
    --canvas:#edeade; --paper:#fbfaf3; --wash:#f4f2e8; --wash2:#efece0;
    --text:#1e2019; --ink-surface:#23261c; --ink-line:#343829; --ink-hi:#2c3024;
    --on-ink:#f8f7ee; --side-fg:#cbcdba; --side-dim:#83866f; --side-dim2:#737663; --side-dim3:#5b5e4d;
    --muted:#8a8b76; --muted-2:#6f7160; --muted-3:#9a9b86; --faint:#b4b5a0;
    --body:#575a49; --body-2:#47493c; --body-3:#393b30;
    --rule:#d7d4c2; --rule-2:#e7e4d5; --rule-3:#efede0; --rule-strong:#c6c3b0; --rule-soft:#dedbca; --track:#e5e2d2;
    --ok:#3f6b2f; --ok-2:#6a9152; --ok-tint:#e8efdf;
    --alert:#9e4212; --alert-2:#b04f1c; --alert-tint:#fbf1e8; --alert-line:#e0bb9c; --alert-tint2:#f7e6d7; --alert-3:#c08a63;
    --warn:#957214; --warn-2:#7f611a; --warn-3:#62490f; --warn-tint:#f4edd4;
    --link:#2c5560; --link-2:#497683; --link-3:#7ea3ad; --link-tint:#e4eef0; --sel:#d6e6e6;
  }
  :root:has([data-theme="amber"]) {
    --canvas:#14110d; --paper:#1c1813; --wash:#241f19; --wash2:#2a241c;
    --text:#ece4d8; --ink-surface:#0d0b08; --ink-line:#2e281f; --ink-hi:#29231b;
    --on-ink:#f5efe4; --side-fg:#cfc5b4; --side-dim:#8a7f6d; --side-dim2:#988c78; --side-dim3:#6d6355;
    --muted:#9a8f7c; --muted-2:#b3a893; --muted-3:#8d8271; --faint:#74695a;
    --body:#cbc1b0; --body-2:#dad1c1; --body-3:#e5ddce;
    --rule:#3a3229; --rule-2:#2d2720; --rule-3:#29231d; --rule-strong:#4a4135; --rule-soft:#322b23; --track:#322b23;
    --ok:#8fbf76; --ok-2:#6f9c5c; --ok-tint:#1b2415;
    --alert:#ef8a63; --alert-2:#f5977a; --alert-tint:#2b1a13; --alert-line:#6d3f2b; --alert-tint2:#301d15; --alert-3:#b8785d;
    --warn:#e3b45c; --warn-2:#c99a45; --warn-3:#efc879; --warn-tint:#2c2414;
    --link:#8fbadf; --link-2:#7099c0; --link-3:#5d7c9c; --link-tint:#16202a; --sel:#3a3020;
  }
  :root:has([data-theme="slate"]) {
    --canvas:#e9ecf0; --paper:#fbfcfd; --wash:#f2f4f7; --wash2:#eef1f5;
    --text:#141821; --ink-surface:#171c26; --ink-line:#272d38; --ink-hi:#1e242f;
    --on-ink:#fbfcfd; --side-fg:#c6ccd6; --side-dim:#79818e; --side-dim2:#6a7280; --side-dim3:#535a66;
    --muted:#828a95; --muted-2:#6e7681; --muted-3:#939aa4; --faint:#adb4bd;
    --body:#555d68; --body-2:#444b55; --body-3:#373e47;
    --rule:#d5dae1; --rule-2:#e5e9ee; --rule-3:#eef0f4; --rule-strong:#c8ced7; --rule-soft:#dee3e9; --track:#e7ebf0;
    --ok:#1f5f56; --ok-2:#45877c; --ok-tint:#e2efec;
    --alert:#a3303a; --alert-2:#b23a44; --alert-tint:#fdf1f2; --alert-line:#e8b6bb; --alert-tint2:#fbe4e6; --alert-3:#c9838a;
    --warn:#946a15; --warn-2:#86611a; --warn-3:#6a4c12; --warn-tint:#f6eeda;
    --link:#274c9c; --link-2:#4568b4; --link-3:#7a93c8; --link-tint:#e6ebf6; --sel:#d9e2f5;
  }
  :root:has([data-theme="night"]) {
    --canvas:#101215; --paper:#191c20; --wash:#20242a; --wash2:#232830;
    --text:#e8eaed; --ink-surface:#0a0c0e; --ink-line:#272c33; --ink-hi:#242a31;
    --on-ink:#f2f4f6; --side-fg:#c9ced5; --side-dim:#7d848c; --side-dim2:#8b929a; --side-dim3:#666d75;
    --muted:#8f959d; --muted-2:#a4aab2; --muted-3:#858c94; --faint:#6d747c;
    --body:#c1c7ce; --body-2:#d2d7dd; --body-3:#dee2e7;
    --rule:#2c323a; --rule-2:#262b32; --rule-3:#22272e; --rule-strong:#39404a; --rule-soft:#2a3038; --track:#2a3038;
    --ok:#7fc08a; --ok-2:#5c9a68; --ok-tint:#18291d;
    --alert:#e88a6c; --alert-2:#ef9174; --alert-tint:#2a1a15; --alert-line:#6b3a2a; --alert-tint2:#2f1c16; --alert-3:#b0715a;
    --warn:#e0b25c; --warn-2:#c99a45; --warn-3:#e9c479; --warn-tint:#2b2415;
    --link:#8fb0e8; --link-2:#7092d0; --link-3:#5a76a8; --link-tint:#1a2231; --sel:#2b3a55;
  }
