/* ============================================================================
   rating-palette.css — GENERATED. DO NOT EDIT BY HAND.

       node tools/rating-palette.mjs --emit

   Source of truth: the app repo's lib/theme/fetch_theme.dart — ratingRamp()
   and the tintLight getter. `node tools/rating-palette.mjs` (no flag) fails
   if this file and that Dart have diverged.

   Light mode  fg = ramp.onLight, bg = ramp.hue at 0.14 over white
   Dark mode   fg = ramp.onDark,  bg = ramp.tintDark (already translucent)

   ⚠ These are the APP'S colours, unmodified. Several pairs measure between
   4.04:1 and 4.40:1, which is under the 4.5:1 that normal-size text needs —
   see PRE_MERGE.md. That is a shipped app decision; any web-side correction
   belongs in the consuming rule, NOT in this generated file, which must keep
   matching the Dart.
   ========================================================================== */

:root {
/* SURF — eight bands, low to high */
  --rating-flat-fg: #5B6B7A;
  --rating-flat-bg: #ECEFF1;
  --rating-flat-fg-dark: #A8B6C2;
  --rating-flat-bg-dark: rgba(255, 255, 255, 0.071);
  --rating-flat-hue: #7A8A99;
  --rating-poor-fg: #B0392E;
  --rating-poor-bg: #FAE6E4;
  --rating-poor-fg-dark: #EC8A82;
  --rating-poor-bg-dark: rgba(219, 74, 60, 0.180);
  --rating-poor-hue: #DB4A3C;
  --rating-poor-fair-fg: #A85A1C;
  --rating-poor-fair-bg: #F9EDE1;
  --rating-poor-fair-fg-dark: #E8A45C;
  --rating-poor-fair-bg-dark: rgba(215, 126, 42, 0.180);
  --rating-poor-fair-hue: #D77E2A;
  --rating-fair-fg: #92670F;
  --rating-fair-bg: #F6EDDE;
  --rating-fair-fg-dark: #E3B65A;
  --rating-fair-bg-dark: rgba(190, 124, 16, 0.200);
  --rating-fair-hue: #BE7C10;
  --rating-fair-good-fg: #5F7A1E;
  --rating-fair-good-bg: #EFF4E2;
  --rating-fair-good-fg-dark: #BBD06A;
  --rating-fair-good-bg-dark: rgba(143, 176, 46, 0.180);
  --rating-fair-good-hue: #8FB02E;
  --rating-good-fg: #0E7A66;
  --rating-good-bg: #E4FBF7;
  --rating-good-fg-dark: #6FE3CC;
  --rating-good-bg-dark: rgba(61, 224, 196, 0.129);
  --rating-good-hue: #3DE0C4;
  --rating-good-epic-fg: #1B7F9E;
  --rating-good-epic-bg: #E0F4F9;
  --rating-good-epic-fg-dark: #5FCDE6;
  --rating-good-epic-bg-dark: rgba(34, 176, 214, 0.180);
  --rating-good-epic-hue: #22B0D6;
  --rating-epic-fg: #6D4AA8;
  --rating-epic-bg: #EFE9F7;
  --rating-epic-fg-dark: #B79BE6;
  --rating-epic-bg-dark: rgba(140, 100, 200, 0.180);
  --rating-epic-hue: #8C64C8;

/* MARINE — five bands, calm to hazardous. Four ramps are SHARED with
   surf (GOOD/CALM, FAIR/CHOPPY, POOR/HAZARDOUS, POOR-FAIR/ROUGH); only
   MODERATE is marine-only. Duplicated as its own variables anyway, so a
   future divergence in the Dart needs no change here. */
  --rating-calm-fg: #0E7A66;
  --rating-calm-bg: #E4FBF7;
  --rating-calm-fg-dark: #6FE3CC;
  --rating-calm-bg-dark: rgba(61, 224, 196, 0.129);
  --rating-calm-hue: #3DE0C4;
  --rating-moderate-fg: #4F7A55;
  --rating-moderate-bg: #ECF3EC;
  --rating-moderate-fg-dark: #9FC79A;
  --rating-moderate-bg-dark: rgba(120, 170, 120, 0.161);
  --rating-moderate-hue: #78AA78;
  --rating-choppy-fg: #92670F;
  --rating-choppy-bg: #F6EDDE;
  --rating-choppy-fg-dark: #E3B65A;
  --rating-choppy-bg-dark: rgba(190, 124, 16, 0.200);
  --rating-choppy-hue: #BE7C10;
  --rating-rough-fg: #A85A1C;
  --rating-rough-bg: #F9EDE1;
  --rating-rough-fg-dark: #E8A45C;
  --rating-rough-bg-dark: rgba(215, 126, 42, 0.180);
  --rating-rough-hue: #D77E2A;
  --rating-hazardous-fg: #B0392E;
  --rating-hazardous-bg: #FAE6E4;
  --rating-hazardous-fg-dark: #EC8A82;
  --rating-hazardous-bg-dark: rgba(219, 74, 60, 0.180);
  --rating-hazardous-hue: #DB4A3C;
}

/* ── DARK ─────────────────────────────────────────────────────────────────
   Rebinds the SAME token names to the app's dark pair, so every consuming
   rule is theme-agnostic. Reachable from session 3's toggle; before that,
   only by setting data-theme by hand.

   ⚠ The per-band CONTRAST CORRECTIONS that the light consumers apply
   (forecast.css's blanket mixes, home.css's seven hand-derived hexes) MUST
   NOT be reproduced here in dark, and they are not needed: measured, all 13
   dark pairs clear 4.5:1 on their own tint over the dark card (worst 5.91,
   POOR/HAZARDOUS) and over the inset strip (worst 5.24). The reason is
   structural rather than lucky — light's container is an OPAQUE pastel of
   the hue over white, which crowds a mid-tone fg, while dark's is the hue at
   ~18% over a near-black card, which barely moves off the card. A correction
   derived against white is meaningless here, so dark's correction is 100%,
   i.e. none. See the dark contrast table in tools/a11y.mjs, which asserts it
   rather than trusting this comment. */
:root[data-theme='dark'] {
/* SURF */
  --rating-flat-fg: #A8B6C2;
  --rating-flat-bg: rgba(255, 255, 255, 0.071);
  --rating-poor-fg: #EC8A82;
  --rating-poor-bg: rgba(219, 74, 60, 0.180);
  --rating-poor-fair-fg: #E8A45C;
  --rating-poor-fair-bg: rgba(215, 126, 42, 0.180);
  --rating-fair-fg: #E3B65A;
  --rating-fair-bg: rgba(190, 124, 16, 0.200);
  --rating-fair-good-fg: #BBD06A;
  --rating-fair-good-bg: rgba(143, 176, 46, 0.180);
  --rating-good-fg: #6FE3CC;
  --rating-good-bg: rgba(61, 224, 196, 0.129);
  --rating-good-epic-fg: #5FCDE6;
  --rating-good-epic-bg: rgba(34, 176, 214, 0.180);
  --rating-epic-fg: #B79BE6;
  --rating-epic-bg: rgba(140, 100, 200, 0.180);

/* MARINE */
  --rating-calm-fg: #6FE3CC;
  --rating-calm-bg: rgba(61, 224, 196, 0.129);
  --rating-moderate-fg: #9FC79A;
  --rating-moderate-bg: rgba(120, 170, 120, 0.161);
  --rating-choppy-fg: #E3B65A;
  --rating-choppy-bg: rgba(190, 124, 16, 0.200);
  --rating-rough-fg: #E8A45C;
  --rating-rough-bg: rgba(215, 126, 42, 0.180);
  --rating-hazardous-fg: #EC8A82;
  --rating-hazardous-bg: rgba(219, 74, 60, 0.180);
}
