/* Haven derived tokens. Scoped to [data-hvn-palette] (the attribute is on <body>, not :root). */
:root,
[data-hvn-palette] {
  --hvn-error: #C2452D;
  --hvn-success: #4C7A3F;
  --hvn-warning: #C08A2D;

  --hvn-border: color-mix(in oklab, var(--hvn-text) 10%, var(--hvn-bg));
  /* 3:1 non-text floor on bg AND surface in all 5 palettes (35% was 2.29:1 Clay bg, 2.28 Terracotta surface); worst case at 48% is checked by scripts/haven/contrast-check.mjs. */
  --hvn-border-strong: color-mix(in oklab, var(--hvn-text) 48%, var(--hvn-bg));
  /* Empty rating stars are graphics, not borders: kept at the old 35% mix so filled vs empty stays distinguishable. */
  --hvn-rating-empty: color-mix(in oklab, var(--hvn-text) 35%, var(--hvn-bg));
  --hvn-text-muted: color-mix(in oklab, var(--hvn-text) 65%, var(--hvn-bg));
  /* AA floor 4.5:1 for text; 60% is Harvest's calibrated floor and clears (OKLab) on all 5 Haven palettes, worst case 4.69:1 on Clay. */
  --hvn-text-subtle: color-mix(in oklab, var(--hvn-text) 60%, var(--hvn-bg));
  --hvn-accent-hover: color-mix(in oklab, var(--hvn-accent) 85%, black);
  /* AA-safe accent-coloured TEXT (not the hover fill above). 75%-to-black clears 4.5 on the 4 light palettes; Terracotta Night overrides both lines below. */
  --hvn-accent-strong: color-mix(in oklab, var(--hvn-accent) 75%, black);
  --hvn-accent-2-strong: color-mix(in oklab, var(--hvn-accent-2) 75%, black);
  /* accent-2 painted as TEXT; palettes whose raw accent-2 misses 4.5:1 on bg override it below. */
  --hvn-accent-2-text: var(--hvn-accent-2);
  --hvn-accent-text: var(--hvn-surface);
  --hvn-focus-ring: color-mix(in oklab, var(--hvn-accent) 60%, var(--hvn-bg));

  /* Two ring tones: one colour cannot clear 3:1 on both a light field and a dark fill in every palette. */
  --hvn-focus-ring-light: var(--hvn-surface);
  --hvn-focus-ring-dark: var(--hvn-text);

  --hvn-band-text: var(--hvn-bg);
  /* Secondary text ON a dark band; 82% mix clears 4.5 on all 5 palettes, worst case 4.54:1 on Terracotta Night. */
  --hvn-band-text-muted: color-mix(in oklab, var(--hvn-band-text) 82%, var(--hvn-band));
  --hvn-accent-tint: color-mix(in oklab, var(--hvn-accent) 8%, var(--hvn-surface));
  --hvn-overlay-scrim: color-mix(in oklab, var(--hvn-text) 72%, var(--hvn-bg));
  --hvn-shadow-tint: color-mix(in oklab, var(--hvn-text) 22%, transparent);

  /* Type tokens - Libre Caslon Text (display) + Work Sans (body). */
  --hvn-font-display: 'Libre Caslon Text', 'Georgia', serif;
  --hvn-font-body: 'Work Sans', 'Segoe UI', sans-serif;
  --hvn-font-mono: ui-monospace, 'SFMono-Regular', 'Consolas', monospace;
}

/* Terracotta Night (dark): mix toward white; same (0,1,0) specificity as above, so it must stay after it. */
[data-hvn-palette="terracotta"] {
  --hvn-accent-strong: color-mix(in oklab, var(--hvn-accent) 75%, white);
  --hvn-accent-2-strong: color-mix(in oklab, var(--hvn-accent-2) 75%, white);
  /* Darkening to 85% black puts the dark label at 3.46:1; 85% to white is 6.23 and a lighter link hover. */
  --hvn-accent-hover: color-mix(in oklab, var(--hvn-accent) 85%, white);
  /* #4C7A3F is 3.04:1 on surface; #88A780 (#4C7A3F 65% to white) is 5.19 on the accent-tint row, its lightest field. */
  --hvn-success: #88A780;
  /* 60% is 4.32:1 on accent-tint and 4.37 on the 4% raised row; 63% clears both (4.66 / 4.72), still below muted 65%. */
  --hvn-text-subtle: color-mix(in oklab, var(--hvn-text) 63%, var(--hvn-bg));
  /* #C2452D is 3.05:1 on surface; #F37258 (same OKLab hue/chroma, L +0.14) is 4.84 on accent-tint, its lightest field. */
  --hvn-error: #F37258;
}

/* Stone: #8A6F4D is 4.24:1 on bg; #856B4A (same hue, L 42.2%->40.6%) is 4.50 on bg, 5.00 on surface. Must stay after the base block. */
[data-hvn-palette="stone"] {
  --hvn-accent-2-text: #856B4A;
  /* #C2452D is 4.48:1 on accent-tint (payment billing errors); #C1442C (same hue, L -0.003) is 4.54. */
  --hvn-error: #C1442C;
}

/* Moss: #A6693F is 3.99:1 on bg; #9E6034 (same hue, L 57.8%->55.0%) is 4.50 on bg, 5.03 on surface. */
[data-hvn-palette="moss"] {
  --hvn-accent-2-text: #9E6034;
  /* #C2452D is 4.49:1 on bg; #C1442C (same hue, L -0.003) is 4.55 on bg, 4.56 on accent-tint. */
  --hvn-error: #C1442C;
}

/* Indigo: #A6693F is 4.02:1 on bg; #9C6036 (same hue, L 57.8%->54.7%) is 4.57 on bg, 5.07 on surface. */
[data-hvn-palette="indigo"] {
  --hvn-accent-2-text: #9C6036;
  /* #C2452D is 4.41:1 on accent-tint (payment billing errors); #C0432B (same hue, L -0.006) is 4.52. */
  --hvn-error: #C0432B;
}

/* Base document wiring. */
body {
  background: var(--hvn-bg);
  color: var(--hvn-text);
  font-family: var(--hvn-font-body);
}
