/* public/css/themes.css — the ONLY file that holds colors. Themes may set only these tokens:
   --bg --ink --muted --rule --mark --link --visited --accent --ok --focus --field --grid --pattern
   --font-display (and --font-ui for Terminal) and color-scheme. Tokens are from docs/design/ux.md §1.9;
   every text/background pair passes WCAG (ink >= 7:1, other text >= 4.5:1, focus >= 3:1).
   Round 2: the accent is asterisk violet (not orange), and visited links look like links (--visited = --link).
   Selectors are plain attribute selectors so a profile's <main data-theme="..."> repaints its own area. */
[data-theme="paper"], [data-theme="auto"], :root {
  --bg:#ffffff; --ink:#1a1a1a; --muted:#5c5c5c; --rule:#d6d6d6; --mark:#f2f2f2;
  --link:#0645ad; --visited:#0645ad; --accent:#6d28d9; --ok:#1a7f37; --focus:#0645ad;
  --field:#ffffff; --pattern:none; color-scheme:light; }

[data-theme="midnight"] {
  --bg:#121416; --ink:#e6e4e0; --muted:#a3a3a3; --rule:#3a3f44; --mark:#1f2327;
  --link:#8ab4f8; --visited:#8ab4f8; --accent:#b69cff; --ok:#5fd38a; --focus:#8ab4f8;
  --field:#1b1e21; --pattern:none; color-scheme:dark; }

[data-theme="high-contrast"] {
  --bg:#ffffff; --ink:#000000; --muted:#333333; --rule:#000000; --mark:#ffff00;
  --link:#0000cc; --visited:#0000cc; --accent:#5b21b6; --ok:#006400; --focus:#000000;
  --field:#ffffff; --pattern:none; color-scheme:light; }   /* focus ring 3px */

[data-theme="graph-paper"] {
  --bg:#fbfcfe; --ink:#17263a; --muted:#4d5b6b; --rule:#c3d3e4; --mark:#eef3f9;
  --link:#0a4db3; --visited:#0a4db3; --accent:#6d28d9; --ok:#146a33; --focus:#0a4db3;
  --field:#ffffff; --grid:#dde8f3;
  --pattern: linear-gradient(var(--grid) 1px, transparent 1px) 0 0/20px 20px,
             linear-gradient(90deg, var(--grid) 1px, transparent 1px) 0 0/20px 20px;
  color-scheme:light; }

[data-theme="library"] {
  --bg:#f5eddc; --ink:#3a2e20; --muted:#685741; --rule:#d6c6a5; --mark:#ece0c6;
  --link:#1d4f8c; --visited:#1d4f8c; --accent:#6a2bc4; --ok:#2f6b2f; --focus:#1d4f8c;
  --field:#fbf6ea; --pattern:none; --font-display:var(--font-serif); color-scheme:light; }

[data-theme="ledger"] {
  --bg:#f2f7ec; --ink:#1f2d1f; --muted:#4c5e4c; --rule:#b3cfa6; --mark:#e4eedb;
  --link:#1e4d99; --visited:#1e4d99; --accent:#6528c9; --ok:#18612d; --focus:#1e4d99;
  --field:#ffffff; --grid:#cfe3c4;
  --pattern: linear-gradient(transparent 27px, var(--grid) 27px) 0 0/100% 28px;
  color-scheme:light; }

[data-theme="chalkboard"] {
  --bg:#243b30; --ink:#f3f0e6; --muted:#bccabf; --rule:#4a6457; --mark:#2f4a3d;
  --link:#ffe79a; --visited:#ffe79a; --accent:#e2c6ff; --ok:#a8f0b8; --focus:#ffe79a;
  --field:#1d3027; --pattern:none;
  --font-display:"Chalkboard SE", "Chalkboard", "Segoe Print", var(--font-ui); color-scheme:dark; }

[data-theme="blueprint"] {
  --bg:#123f73; --ink:#eef5fd; --muted:#b3cbe6; --rule:#4a77a8; --mark:#1b4d86;
  --link:#ffffff; --visited:#ffffff; --accent:#ffd166; --ok:#9ff0b5; --focus:#ffffff;
  --field:#0e3460; --grid:#2a5283;
  --pattern: linear-gradient(var(--grid) 1px, transparent 1px) 0 0/24px 24px,
             linear-gradient(90deg, var(--grid) 1px, transparent 1px) 0 0/24px 24px;
  --font-display:var(--font-mono); color-scheme:dark; }

[data-theme="terminal"] {
  --bg:#0a0e0a; --ink:#39ff6a; --muted:#22b34a; --rule:#1d4a2a; --mark:#132313;
  --link:#7dffa0; --visited:#7dffa0; --accent:#ffb000; --ok:#7dffa0; --focus:#ffb000;
  --field:#0f160f; --pattern:none;
  --font-ui:var(--font-mono); --font-display:var(--font-mono); color-scheme:dark; }

[data-theme="golden-asterisk"] {
  --bg:#15120b; --ink:#f6ecd2; --muted:#cbbd97; --rule:#4d4228; --mark:#221d12;
  --link:#ffd97a; --visited:#ffd97a; --accent:#ffc933; --ok:#b9e59a; --focus:#ffd97a;
  --field:#1e1a10; --pattern:none; --font-display:var(--font-serif); color-scheme:dark; }

@media (prefers-color-scheme: dark) {
  [data-theme="auto"] {
    --bg:#121416; --ink:#e6e4e0; --muted:#a3a3a3; --rule:#3a3f44; --mark:#1f2327;
    --link:#8ab4f8; --visited:#8ab4f8; --accent:#b69cff; --ok:#5fd38a; --focus:#8ab4f8;
    --field:#1b1e21; --pattern:none; color-scheme:dark; }
}
[data-theme="high-contrast"] :focus-visible { outline-width: 3px; }
/* The color goes last: a background shorthand allows a color only in its final layer, and Graph Paper and Blueprint have two. */
body, .themed { background: var(--pattern, none), var(--bg); color: var(--ink); font-family: var(--font-ui); }
.problem-zone { background: var(--bg); }   /* patterns never sit behind the numbers */
