/* ══════════════════════════════════════════
   THEME — Design tokens (colours, fonts)
   Single source of truth for both Editor and Suite.

   Default: Parchment (warm light — player portal + admin)
   Override: [data-theme="dark"] — dark mode opt-in, and
             hardcoded on index.html (game/suite app)
   ══════════════════════════════════════════ */

/* ── Parchment (default) ── */
:root {
  /* Backgrounds & surfaces */
  --bg:#F4EFE4;--surf:#EDE7D8;--surf1:#E9E2D1;--surf2:#E5DEC9;--surf3:#DBD3BC;
  --surf-a6:rgba(244,239,228,.6);--surf2-a8:rgba(229,222,201,.8);
  --overlay:rgba(0,0,0,.50);--overlay2:rgba(0,0,0,.65);

  /* Borders (warm brown, varying opacity) */
  --bdr:rgba(120,90,40,.20);--bdr2:rgba(120,90,40,.38);--bdr3:rgba(120,90,40,.55);

  /* Gold accents — dark amber for legibility on light bg */
  --gold:#8B6010;--gold2:#7A5208;--gdim:#A07A20;
  --gold-a4:rgba(120,90,40,.04);--gold-a5:rgba(120,90,40,.05);
  --gold-a6:rgba(120,90,40,.06);--gold-a7:rgba(120,90,40,.07);
  --gold-a8:rgba(120,90,40,.08);--gold-a10:rgba(120,90,40,.10);
  --gold-a12:rgba(120,90,40,.12);--gold-a15:rgba(120,90,40,.15);
  --gold-a20:rgba(120,90,40,.20);--gold-a30:rgba(120,90,40,.30);
  --gold2-a12:rgba(122,82,8,.12);--gold2-a25:rgba(122,82,8,.25);
  --golddark-a8:rgba(100,60,5,.08);--golddark-a50:rgba(100,60,5,.50);

  /* Crimson accents */
  --crim:#7A0000;--crim2:#8B1010;
  --crim-a8:rgba(122,0,0,.08);--crim-a12:rgba(122,0,0,.12);
  --crim-a15:rgba(122,0,0,.15);--crim-a22:rgba(122,0,0,.22);
  --crim-a25:rgba(122,0,0,.25);--crim-a30:rgba(122,0,0,.30);
  --crim-a40:rgba(122,0,0,.40);--crim-a45:rgba(122,0,0,.45);
  --crim-a50:rgba(122,0,0,.50);--crim-a55:rgba(122,0,0,.55);
  --crim-a60:rgba(122,0,0,.60);--crim-a70:rgba(122,0,0,.70);
  --crim-a85:rgba(122,0,0,.85);
  --crim3-a30:rgba(104,22,22,.30);--crim3-a60:rgba(104,22,22,.60);
  --crim4-a40:rgba(160,20,20,.40);

  /* Text */
  --txt:#1C1410;--txt2:#4A3A28;--txt3:#6A5238;
  /* Aliases — resolve via the theme-overrideable tokens above */
  --txt1:var(--txt);--txt-dim:var(--txt3);

  /* Fonts — same for all themes */
  --fh:'Cinzel',serif;--fl:'Lato',sans-serif;--ft:'Libre Baskerville',serif;
  /* Display variant — used for reading-pane h1/h2 in rules/lore documents */
  --fh-decorative:'Cinzel Decorative','Cinzel',serif;
  /* Transition aliases — kept until DS-02 through DS-12 sweep removes all usages */
  --fhd:var(--fh);--fb:var(--ft);

  /* Status: success / green */
  --green:#1E6A1E;--green2:#2A7A4A;--green3:#1A5A30;--green4:#2A8A4A;
  --green-a15:rgba(30,106,30,.15);--green-a45:rgba(30,106,30,.45);
  --green2-a8:rgba(42,122,74,.80);--green2-a9:rgba(42,122,74,.90);
  --green3-a5:rgba(26,90,48,.50);--green3-a9:rgba(26,90,48,.90);
  --green4-a15:rgba(30,80,50,.15);--green4-a8:rgba(50,110,50,.08);
  --green4-a50:rgba(50,110,50,.50);--green4-a55:rgba(50,110,50,.55);
  --green5-a35:rgba(50,110,50,.35);
  --green6-a40:rgba(38,84,49,.40);--green6-a70:rgba(38,84,49,.70);
  /* DT Story complete state */
  --story-compl:#5a9a6e;--story-compl-a15:rgba(90,154,110,.15);--story-compl-a40:rgba(90,154,110,.4);

  /* Status: error / red */
  --err:#8B1010;--err2:#7A0808;
  --err-a8:rgba(139,16,16,.80);--err-a9:rgba(139,16,16,.90);
  --err-a12:rgba(139,16,16,.12);--err-a25:rgba(139,16,16,.25);--err-a40:rgba(139,16,16,.40);
  --err3-a8:rgba(160,40,40,.80);--err3-a9:rgba(160,40,40,.90);
  --err4-a9:rgba(170,60,60,.90);--err4-a95:rgba(170,60,60,.95);
  --err5:rgba(130,40,40,.90);--err6:rgba(150,60,60,.80);
  --err7:rgba(170,110,80,.90);
  --err8:#a0620a;--err9:#feed;

  /* Status: info / blue */
  --info:#1A4A7A;--info2:#1A3A6A;
  --info-a9:rgba(26,74,122,.90);--info2-a9:rgba(26,58,106,.90);
  --info3-a8:rgba(20,60,110,.80);
  --info4-a30:rgba(38,70,94,.30);--info4-a60:rgba(38,70,94,.60);

  /* Warm dark overlays (replaces white overlays on light bg) */
  --w-a5:rgba(60,40,10,.05);--w-a6:rgba(60,40,10,.06);
  --w-a7:rgba(60,40,10,.07);--w-a8:rgba(60,40,10,.08);
  --w-a10:rgba(60,40,10,.10);--w-a12:rgba(60,40,10,.12);

  /* Semantic accent — crimson on parchment */
  --accent:var(--crim);--accent2:var(--crim2);
  --accent-a8:rgba(122,0,0,.08);--accent-a25:rgba(122,0,0,.25);--accent-a40:rgba(122,0,0,.40);

  /* Label contrast */
  --label-secondary:#5a4a3a;--label-tertiary:#8a7060;

  /* Result states */
  --result-succ:#2e7d32;--result-succ-bg:rgba(46,125,50,.10);--result-succ-bdr:rgba(46,125,50,.35);
  --result-pend:#c04040;--result-pend-bg:rgba(192,64,64,.10);--result-pend-bdr:rgba(192,64,64,.35);
  --green-dk:#1b5e20;--green-dk-bg:rgba(27,94,32,.12);--green-dk-bdr:rgba(27,94,32,.35);
  --warn-dk:#7a5c00;--warn-dk-bg:rgba(122,92,0,.12);

  /* Reading pane — warm parchment surfaces (questionnaires, player portal, dossiers).
     Used in both light (parchment tokens below) and dark (overrides at bottom of file). */
  --rp-bg:#F0E6D4;--rp-surf:#FFF8EE;--rp-surf2:#E8DCC8;
  --rp-txt:#2A1F14;--rp-txt2:#3A2A1A;--rp-txt3:#7A6A50;
  --rp-head:#5A1A1A;--rp-accent:#8B0000;--rp-placeholder:#9A8A70;
  --rp-bdr:rgba(139,0,0,.12);--rp-bdr2:rgba(139,0,0,.20);

  /* Alert badges — character grid warning dots (admin parchment only) */
  --badge-err-bg:rgba(180,30,30,.9);--badge-err-bdr:rgba(255,80,80,.4);
  --badge-warn-bg:rgba(180,140,20,.85);--badge-warn-bdr:rgba(255,210,60,.4);

  /* Ticket / task badge palette (admin only) — parchment values */
  --tk-inprog-bg:rgba(80,140,200,.2);--tk-inprog-fg:#7ab4e0;
  --tk-resolved-bg:rgba(80,180,100,.2);--tk-resolved-fg:#72c47a;
  --tk-bug-bg:rgba(180,60,60,.2);--tk-bug-fg:#c47272;
  --tk-feature-bg:rgba(130,80,180,.12);--tk-feature-fg:#6A30A0;
  --tk-question-bg:rgba(20,120,110,.10);--tk-question-fg:#186058;
  --tk-sheet-bg:rgba(200,150,50,.2);--tk-sheet-fg:#d4a84b;

  /* Lethal damage colour (amber — suite tracker, parchment variant) */
  --dmg-lethal:#A05820;

  /* Blood Sorcery rote pool badge (parchment variant) */
  --rote:#6040A8;--rote-a40:rgba(100,64,168,.4);

  /* Discord external brand (fixed — no theme variant) */
  --discord-bg:#5865F2;--discord-bg-hover:#4752C4;

  /* Text on coloured surfaces — theme-invariant and theme-flipping */
  /* --txt-on-dark: for text on always-dark surfaces (crim, discord, dark rgba overlays). Parchment cream, warmer than stark white. */
  /* --txt-inverse: for text on theme-flipping surfaces (--err, --green when they become light) */
  --txt-on-dark:#F4EFE4;--txt-inverse:var(--bg);

  /* Text on gold accent surfaces (theme-invariant, always dark on yellowy gold) */
  --txt-on-gold:#1a1208;

  /* Roll result — exceptional success tier (distinct from --green family) */
  --success-exceptional:#3a7a50;--success-exceptional-hover:#3a8a50;

  /* Toast component palette */
  --toast-succ-bg:#1B3A1B;--toast-succ-fg:#4CAF50;
  --toast-err-bg:#3A1B1B;--toast-err-fg:#E57373;

  /* Territory pill states (feeding rights / poaching) */
  --terr-rights-fg:#1e6b35;--terr-poach-fg:#8a5000;

  /* Influence / feeding positive state */
  --influence-ok:#2A7A3A;

  /* Damage tiers (aggravated / critical) */
  --dmg-agg:#E07070;--dmg-crit:#CC0000;

  /* Structural neutrals — pure-ish blacks for inputs and dividers */
  --surf-ink:#111;--divider-neutral:#333;

  /* Story / chip draft state */
  --chip-draft:#c89040;

  /* Reading pane — extended text hierarchy (always parchment, no dark override needed) */
  --rp-neutral-warm:#C8B8A0;--rp-strong:#3A1A0F;--rp-label:#3A2010;
  --rp-badge-approved:#2A6A2A;--rp-brown-mid:#5A3A20;--rp-brown-dark:#4A2A10;

  /* Crim interaction states (hover = lighter, active = darker) */
  --crim-hover:#A00000;--crim-active:#6B0000;

  /* Pure black — reserved for map canvases and maximum-contrast overlays */
  --ink-black:#000;

  /* Registration / confirmation state (admin scheduling) */
  --reg-confirmed-fg:#5dc86a;
}

/* ── Dark mode override ── */
[data-theme="dark"] {
  /* Backgrounds & surfaces */
  --bg:#0D0B09;--surf:#161210;--surf2:#1E1A16;--surf3:#252018;
  --surf-a6:rgba(22,18,16,.6);--surf2-a8:rgba(30,26,22,.8);
  --overlay:rgba(0,0,0,.65);--overlay2:rgba(0,0,0,.78);

  /* Borders */
  --bdr:rgba(201,169,98,.18);--bdr2:rgba(201,169,98,.35);--bdr3:rgba(201,169,98,.55);

  /* Gold accents */
  --gold:#C9A962;--gold2:#E0C47A;--gdim:#A08848;
  --gold-a4:rgba(201,169,98,.04);--gold-a5:rgba(201,169,98,.05);
  --gold-a6:rgba(201,169,98,.06);--gold-a7:rgba(201,169,98,.07);
  --gold-a8:rgba(201,169,98,.08);--gold-a10:rgba(201,169,98,.1);
  --gold-a12:rgba(201,169,98,.12);--gold-a15:rgba(201,169,98,.15);
  --gold-a20:rgba(201,169,98,.2);--gold-a30:rgba(201,169,98,.3);
  --gold2-a12:rgba(224,196,122,.12);--gold2-a25:rgba(224,196,122,.25);
  --golddark-a8:rgba(200,144,10,.08);--golddark-a50:rgba(200,144,10,.5);

  /* Crimson accents */
  --crim:#8B0000;--crim2:#A81010;
  --crim-a8:rgba(139,0,0,.08);--crim-a12:rgba(139,0,0,.12);
  --crim-a15:rgba(139,0,0,.15);--crim-a22:rgba(139,0,0,.22);
  --crim-a25:rgba(139,0,0,.25);--crim-a30:rgba(139,0,0,.3);
  --crim-a40:rgba(139,0,0,.4);--crim-a45:rgba(139,0,0,.45);
  --crim-a50:rgba(139,0,0,.5);--crim-a55:rgba(139,0,0,.55);
  --crim-a60:rgba(139,0,0,.6);--crim-a70:rgba(139,0,0,.7);
  --crim-a85:rgba(139,0,0,.85);
  --crim3-a30:rgba(124,42,42,.3);--crim3-a60:rgba(124,42,42,.6);
  --crim4-a40:rgba(180,40,40,.4);

  /* Text */
  --txt:#E8E0D0;--txt2:#C4B49A;--txt3:#8A7A6A;

  /* Status: success / green */
  --green:#5A8A5A;--green2:#7EC8A0;--green3:#8bc878;--green4:#A8D8B4;
  --green-a15:rgba(90,138,90,.15);--green-a45:rgba(90,138,90,.45);
  --green2-a8:rgba(140,200,140,.8);--green2-a9:rgba(140,200,140,.9);
  --green3-a5:rgba(140,210,140,.5);--green3-a9:rgba(140,210,140,.9);
  --green4-a15:rgba(70,110,80,.15);--green4-a8:rgba(100,160,80,.08);
  --green4-a50:rgba(100,160,80,.5);--green4-a55:rgba(100,160,80,.55);
  --green5-a35:rgba(100,160,100,.35);
  --green6-a40:rgba(78,124,89,.4);--green6-a70:rgba(78,124,89,.7);
  /* DT Story complete state */
  --story-compl:#5a9a6e;--story-compl-a15:rgba(90,154,110,.15);--story-compl-a40:rgba(90,154,110,.4);

  /* Status: error / red */
  --err:#E8A0A0;--err2:#c06060;
  --err-a8:rgba(200,80,80,.8);--err-a9:rgba(200,80,80,.9);
  --err-a12:rgba(200,80,80,.12);--err-a25:rgba(200,80,80,.25);--err-a40:rgba(200,80,80,.4);
  --err3-a8:rgba(220,130,130,.8);--err3-a9:rgba(220,130,130,.9);
  --err4-a9:rgba(220,150,150,.9);--err4-a95:rgba(220,150,150,.95);
  --err5:rgba(180,80,80,.9);--err6:rgba(200,100,100,.8);
  --err7:rgba(220,160,120,.9);
  --err8:#d4971a;--err9:#feed;

  /* Status: info / blue */
  --info:#A8C4E0;--info2:#A0C8E8;
  --info-a9:rgba(100,150,200,.9);--info2-a9:rgba(120,170,220,.9);
  --info3-a8:rgba(70,110,155,.8);
  --info4-a30:rgba(78,110,124,.3);--info4-a60:rgba(78,110,124,.6);

  /* White overlays */
  --w-a5:rgba(255,255,255,.05);--w-a6:rgba(255,255,255,.06);
  --w-a7:rgba(255,255,255,.07);--w-a8:rgba(255,255,255,.08);
  --w-a10:rgba(255,255,255,.1);--w-a12:rgba(255,255,255,.12);

  /* Semantic accent — gold on dark */
  --accent:var(--gold2);--accent2:var(--gold);
  --accent-a8:rgba(224,196,122,.08);--accent-a25:rgba(224,196,122,.25);--accent-a40:rgba(224,196,122,.40);

  /* Label contrast */
  --label-secondary:var(--txt2);--label-tertiary:var(--txt3);

  /* Result states */
  --result-succ:#6abf6a;--result-succ-bg:rgba(106,191,106,.12);--result-succ-bdr:rgba(106,191,106,.35);
  --result-pend:#ff9090;--result-pend-bg:rgba(255,144,144,.12);--result-pend-bdr:rgba(255,144,144,.35);
  --green-dk:#6abf6a;--green-dk-bg:rgba(106,191,106,.15);--green-dk-bdr:rgba(106,191,106,.40);
  --warn-dk:#d4a832;--warn-dk-bg:rgba(212,168,50,.15);

  /* Lethal damage (dark amber) */
  --dmg-lethal:#D4830A;

  /* Blood Sorcery rote pool badge (dark purple) */
  --rote:#9E7AE0;--rote-a40:rgba(158,122,224,.4);

  /* DT processing merit action modes (dark; parchment overrides already use tokens) */
  --proc-instant-bg:rgba(60,120,60,.35);--proc-instant-fg:#8ecf8e;--proc-instant-bdr:rgba(60,120,60,.5);
  --proc-auto-bg:rgba(50,90,160,.35);--proc-auto-fg:#8ab4e8;--proc-auto-bdr:rgba(50,90,160,.5);
  --proc-blocked-bg:rgba(100,0,0,.45);--proc-blocked-fg:#e08080;--proc-blocked-bdr:rgba(139,0,0,.6);
  --proc-contested-bg:rgba(180,120,30,.35);--proc-contested-bdr:rgba(180,120,30,.5);
  --proc-pos:#5dbb6a;

  /* Roll result — exceptional success (dark variant is brighter to pop on dark surface) */
  --success-exceptional:#7fbf8f;--success-exceptional-hover:#7fbf8f;

  /* Ticket badge overrides — feature/question use brighter variants on dark */
  --tk-feature-bg:rgba(130,80,180,.2);--tk-feature-fg:#b080d8;
  --tk-question-bg:rgba(60,170,160,.2);--tk-question-fg:#60c8be;

  /* Reading pane — mode-aware. In dark mode the pane inherits the app surface
     rather than forcing parchment. Used by archive detail, questionnaire,
     downtime doc cards. */
  --rp-bg:var(--surf);--rp-surf:var(--surf2);--rp-surf2:var(--surf3);
  --rp-txt:var(--txt);--rp-txt2:var(--txt2);--rp-txt3:var(--txt3);--rp-strong:var(--txt);
  --rp-head:var(--gold2);--rp-accent:var(--accent);--rp-placeholder:var(--txt3);
  --rp-bdr:var(--bdr);--rp-bdr2:var(--bdr2);
}

/* ── Cross-app navigation buttons ── */
.app-nav-btn{display:inline-block;padding:6px 14px;background:var(--crim,#8B0000);color:var(--txt-on-dark);border:1px solid var(--crim-a70);border-radius:4px;font-family:var(--fh);font-size:12px;font-weight:700;text-decoration:none;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;cursor:pointer;}
.app-nav-btn:hover{filter:brightness(1.15);}
