/*
Palette provenance — every literal below is sampled from the real asset bytes,
not invented. See scratchpad/analyze_assets.py (k-means, k=6, snapped to the
nearest real pixel, coordinates given in each asset's own pixel grid).

brand/LOGO OPENBOOK PNG...png (2000x2000, IHDR colortype 6 truecolor+alpha,
alpha histogram: 84.8% fully transparent, 14.8% fully opaque, 0.4% AA edge):
  --ob-green   #40DC75  coord (610,1210)  left panel, book-open green
  --ob-yellow  #C7E132  coord (900,790)   left panel spine, yellow-green
  --ob-gold    #FDBE08  weight 3784       right panel spine, gold
  --ob-orange  #FD7007  coord (1390,710)  right panel outer, deep orange

reference/SAMPUL OPENBOOK JPG.jpg.jpeg (1500x500 JPEG, banner):
  --ob-ink     #091217  weight 576        wordmark black
  --ob-paper   #FFFCFA  coord (1400,560)  logo background (also brand PNG bg)
  --ob-mist    #F2F6F9  coord (217,80)    banner card fill
  --ob-line    #DADFE5  coord (133,84)    banner card border
  --ob-slate   #88929C  weight 168        banner secondary text
*/
:root {
  --ob-green: #40DC75;
  --ob-yellow: #C7E132;
  --ob-gold: #FDBE08;
  --ob-orange: #FD7007;
  --ob-ink: #091217;
  --ob-paper: #FFFCFA;
  --ob-mist: #F2F6F9;
  --ob-line: #DADFE5;
  --ob-slate: #88929C;

  --bg: var(--ob-paper);
  --surface: #FFFFFF;
  --surface-2: var(--ob-mist);
  --border: var(--ob-line);
  --text: var(--ob-ink);
  --text-muted: var(--ob-slate);
  --accent-grad: linear-gradient(135deg, var(--ob-green), var(--ob-yellow) 50%, var(--ob-gold) 60%, var(--ob-orange));
  --live-dot: var(--ob-green);
  --focus-ring: #1D6FE0;
  --on-accent: #06210F;
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg: #0B0E11;
    --surface: #14181C;
    --surface-2: #1B2025;
    --border: #262C32;
    --text: #F3F5F6;
    --text-muted: #8B949C;
  }
}

:root[data-theme="dark"] {
  --bg: #0B0E11;
  --surface: #14181C;
  --surface-2: #1B2025;
  --border: #262C32;
  --text: #F3F5F6;
  --text-muted: #8B949C;
}
