/* therka – colour tokens. Every colour lives here: the palette (--p-*), the
   role tokens per theme, and the fixed data palettes. Pages and scripts use
   role tokens only. A theme is one [data-theme] block with the full role set;
   .tema-sotet gives an always-dark surface the dark set. */

/* ── 1. Palette ── */
:root{
  /* @group brand */
  --p-teal-50:#eef6f3;--p-teal-75:#e3f2ee;--p-teal-100:#dcebe6;--p-teal-150:#c9e4dc;
  --p-teal-200:#6ad9ce;--p-teal-300:#4fc3b8;--p-teal-350:#3ec9c0;--p-teal-500:#2f9d92;
  --p-teal-700:#227d72;--p-teal-750:#7fc9c0;--p-teal-800:#1c6b62;--p-teal-850:#1e6b65;
  --p-brand-ink:#1a1714;
  --p-teal-600:#25807a;--p-teal-650:#1f6e66;--p-teal-720:#21796f;--p-teal-740:#177269;--p-teal-760:#157167;--p-teal-780:#0e6a60;
  --p-teal-580:#008379;--p-teal-slate:#427674;
  --p-teal-300-a08:rgba(79,195,184,.08);--p-teal-300-a10:rgba(79,195,184,.10);--p-teal-300-a22:rgba(79,195,184,.22);--p-teal-700-a09:rgba(34,125,114,.09);--p-teal-700-a18:rgba(34,125,114,.18);

  /* @group view */
  --p-view-character-d:#4fc3b8;--p-view-character-l:#227d72;
  --p-view-inner-d:#a78bfa;--p-view-inner-l:#7c5cd6;
  --p-view-profile-d:#fb9a6d;--p-view-profile-l:#bd5734;
  --p-view-memory-d:#e3c02e;--p-view-memory-l:#8a6d00;
  --p-view-character-fill-d:#25807a;--p-view-character-fill-l:#227d72;
  --p-view-character-dot-d:#4fc3b8;--p-view-character-dot-l:#629b94;
  --p-view-on-memory-d:#1a1714;--p-view-on-memory-l:#ffffff;
  --p-view-character-ink-l:#157167;--p-view-inner-ink-l:#6e50c3;--p-view-profile-ink-l:#a74827;--p-view-memory-ink-l:#7c6200;
  --p-view-character-strong-l:#1e7a70;--p-view-inner-strong-l:#7757d1;--p-view-profile-strong-l:#b44e2b;--p-view-memory-strong-l:#866a00;

  /* @group signal */
  --p-red-400:#f87171;--p-red-600:#dc2626;
  --p-amber-400:#f5b641;--p-amber-600:#d97706;
  --p-green-400:#6fcf97;--p-green-700:#15803d;
  --p-emerald-400:#34d399;--p-emerald-500:#10b981;
  --p-amber-500:#f59e0b;
  --p-red-50:#fdf2f2;--p-red-650:#d52424;--p-amber-700:#b16105;--p-amber-750:#a55a00;--p-amber-800:#955000;--p-amber-660:#d27200;--p-emerald-600:#0ea170;

  /* @group neutral */
  --p-ink-1000:#04040a;--p-ink-975:#07070e;--p-ink-960:#0b0b12;--p-ink-950:#0c0c14;--p-ink-900:#13131f;--p-ink-850:#18181f;
  --p-ink-plum:#1a1420;--p-ink-edge:#080810;
  --p-cream:#eeeae4;--p-white:#ffffff;--p-black:#000000;--p-white-90:rgba(255,255,255,.9);
  --p-shade-08:rgba(0,0,0,.08);--p-shade-05:rgba(0,0,0,.05);--p-shade-32:rgba(0,0,0,.32);--p-shade-25:rgba(0,0,0,.25);--p-shade-22:rgba(0,0,0,.22);--p-shade-18:rgba(0,0,0,.18);--p-shade-03:rgba(0,0,0,.03);--p-shade-06:rgba(0,0,0,.06);--p-shade-10:rgba(0,0,0,.10);--p-shade-15:rgba(0,0,0,.15);--p-shade-28:rgba(0,0,0,.28);--p-shade-30:rgba(0,0,0,.30);--p-shade-65:rgba(0,0,0,.65);--p-shade-20:rgba(0,0,0,.20);--p-shade-50:rgba(0,0,0,.50);--p-shade-14:rgba(0,0,0,.14);--p-shade-35:rgba(0,0,0,.35);--p-shade-45:rgba(0,0,0,.45);--p-shade-55:rgba(0,0,0,.55);--p-shade-60:rgba(0,0,0,.60);--p-shade-72:rgba(0,0,0,.72);
  --p-gray-900:#111827;--p-gray-700:#374151;--p-gray-600:#4b5563;--p-gray-500:#6b7280;
  --p-gray-400:#9ca3af;--p-gray-300:#d1d5db;--p-gray-bb:#bbbbbb;
  --p-gray-25:#f6f7fb;--p-gray-450:#929599;--p-gray-520:#686f7d;--p-gray-580:#595f6d;--p-gray-530:#686c74;--p-gray-6d:#6d6d6d;--p-gray-76:#767676;
  --p-gray-11:#111111;--p-gray-33:#333333;--p-gray-44:#444444;--p-gray-55:#555555;--p-gray-66:#666666;--p-gray-7f:#7f7f7f;--p-indigo-ink:#1a1831;
  --p-lav-25:#f9f8ff;--p-lav-75:#edeef8;--p-lav-200:#e0daf5;
  --p-lav-100:#e5e7f0;--p-lav-150:#e6e2f6;--p-gray-50:#f0f2f8;--p-warm-25:#fffef8;--p-warm-100:#ece9e0;

  /* @group always-dark */
  --p-scrim-55:rgba(4,4,10,.55);--p-scrim-60:rgba(4,4,10,.60);--p-scrim-92:rgba(4,4,10,.92);
  --p-scrim-96:rgba(4,4,10,.96);--p-scrim-98:rgba(4,4,10,.98);--p-scrim-00:rgba(4,4,10,0);
  --p-glass:rgba(8,8,16,.75);

  /* @group paper */
  --p-paper:#f7f4ed;--p-paper-ink:#1c1814;--p-paper-note:#9a9490;--p-paper-gold:#8b6a20;
  --p-paper-hint:#141210;--p-brand-scene-paper:#928c88;

  /* @group fixed */
  --fixed-arc-1:#3ec9c0;--fixed-arc-2:#c9a84c;--fixed-arc-3:#f59e0b;--fixed-arc-4:#f87171;
  --fixed-avatar-1a:#c9a84c;--fixed-avatar-1b:#3ec9c0;--fixed-avatar-2a:#6366f1;--fixed-avatar-2b:#8b5cf6;
  --fixed-avatar-3a:#f59e0b;--fixed-avatar-3b:#10b981;--fixed-avatar-4a:#f43f5e;--fixed-avatar-4b:#6366f1;
  --fixed-avatar-5a:#06b6d4;--fixed-avatar-5b:#8b5cf6;
  --fixed-avatar-default-a:#2f9d92;--fixed-avatar-default-b:#3ec9c0;
  --fixed-conflict-ext-fg:#1e40af;--fixed-conflict-ext-bg:#dbeafe;
  --fixed-conflict-int-fg:#065f46;--fixed-conflict-int-bg:#d1fae5;

  /* always-dark roles: the same in every theme */
  --dark-scrim-00:var(--p-scrim-00);--dark-scrim-55:var(--p-scrim-55);--dark-scrim-60:var(--p-scrim-60);
  --dark-scrim-92:var(--p-scrim-92);--dark-scrim-96:var(--p-scrim-96);--dark-scrim-98:var(--p-scrim-98);
  --dark-surface-glass:var(--p-glass);
  --dark-bg:var(--p-ink-1000);
}

/* ── 2. Roles: dark (and every always-dark surface) ── */
[data-theme="dark"],.tema-sotet{
  /* brand */
  --brand-accent:var(--p-teal-300);
  --brand-accent-hover:var(--p-teal-200);
  --brand-logo:var(--p-cream);
  --brand-fill:var(--p-teal-600);
  --brand-fill-hover:var(--p-teal-650);
  --brand-fill-soft:color-mix(in srgb,var(--p-teal-500) 10%,transparent);
  --brand-fill-line:color-mix(in srgb,var(--p-teal-500) 22%,transparent);
  --brand-fill-plan:var(--p-teal-600);
  --brand-progress-end:var(--p-teal-500);
  --brand-drop-bg:var(--p-teal-300-a08);
  --brand-drop-line:color-mix(in srgb,var(--p-teal-300) 50%,transparent);
  --brand-drop-icon-bg:color-mix(in srgb,var(--p-teal-300) 15%,transparent);
  --brand-drop-format:color-mix(in srgb,var(--p-teal-300) 55%,transparent);
  --brand-drop-hint:color-mix(in srgb,var(--p-teal-300) 38%,transparent);
  --brand-accent-on-tint:var(--p-teal-300);
  --brand-spinner-track:color-mix(in srgb,var(--p-teal-300) 20%,transparent);
  --brand-row-highlight:color-mix(in srgb,var(--p-teal-300) 12%,transparent);
  --brand-on-fill:var(--p-white);
  --brand-soft-btn:var(--p-teal-300-a10);
  --brand-line-btn:var(--p-teal-300-a22);
  --brand-mark-fg:var(--p-teal-200);
  --brand-mark-bg:color-mix(in srgb,var(--p-teal-300) 30%,transparent);
  --brand-row-tint:color-mix(in srgb,var(--p-teal-300) 6%,transparent);
  --brand-row-line:color-mix(in srgb,var(--p-teal-300) 12%,transparent);
  --brand-avatar-a:var(--p-teal-500);
  --brand-avatar-b:var(--p-teal-300);
  --brand-scene-number:var(--p-teal-300);
  --brand-stat-number:var(--p-teal-300);
  --brand-scene-number-paper:var(--p-brand-scene-paper);
  --brand-stat-chip:color-mix(in srgb,var(--p-cream) 50%,transparent);
  --brand-ink:var(--p-brand-ink);
  --meta-theme:var(--p-ink-960);

  /* view colours */
  --view-character:var(--p-view-character-d);
  --view-inner:var(--p-view-inner-d);
  --view-profile:var(--p-view-profile-d);
  --view-memory:var(--p-view-memory-d);
  --view-character-mark:var(--p-view-character-d);
  --view-inner-mark:var(--p-view-inner-d);
  --view-profile-mark:var(--p-view-profile-d);
  --view-memory-mark:var(--p-view-memory-d);
  --view-on-memory:var(--p-view-on-memory-d);
  --view-inner-soft:color-mix(in srgb,var(--p-view-inner-d) 14%,transparent);
  --view-character-fill:var(--p-view-character-fill-d);
  --view-character-dot:var(--p-view-character-dot-d);
  --view-character-soft:color-mix(in srgb,var(--p-view-character-d) 12%,transparent);
  --view-character-line:color-mix(in srgb,var(--p-view-character-d) 25%,transparent);
  --view-character-ink:var(--p-view-character-d);
  --view-inner-line:color-mix(in srgb,var(--p-view-inner-d) 25%,transparent);
  --view-inner-ink:var(--p-view-inner-d);
  --view-inner-quote:color-mix(in srgb,var(--p-view-inner-d) 8%,transparent);
  --view-profile-soft:color-mix(in srgb,var(--p-view-profile-d) 12%,transparent);
  --view-profile-line:color-mix(in srgb,var(--p-view-profile-d) 25%,transparent);
  --view-profile-ink:var(--p-view-profile-d);
  --view-memory-soft:color-mix(in srgb,var(--p-view-memory-d) 12%,transparent);
  --view-memory-line:color-mix(in srgb,var(--p-view-memory-d) 25%,transparent);
  --view-memory-ink:var(--p-view-memory-d);

  /* signals */
  --signal-danger:var(--p-red-400);
  --signal-warn:var(--p-amber-400);
  --signal-ok:var(--p-green-400);
  --signal-on-warn:var(--p-brand-ink);
  --signal-danger-soft:color-mix(in srgb,var(--p-red-400) 15%,transparent);
  --signal-danger-line:color-mix(in srgb,var(--p-red-400) 25%,transparent);
  --signal-danger-hover:color-mix(in srgb,var(--p-red-400) 12%,transparent);
  --signal-danger-menu-hover:color-mix(in srgb,var(--p-red-400) 10%,transparent);
  --signal-warn-silent:var(--p-amber-500);
  --signal-warn-ink:var(--p-amber-400);
  --signal-warn-on-tint:var(--p-amber-400);

  /* neutrals */
  --neutral-bg:radial-gradient(ellipse at 30% 0%,var(--p-ink-plum) 0%,var(--p-ink-950) 60%,var(--p-ink-edge) 100%);
  --neutral-surface:color-mix(in srgb,var(--p-white) 3.5%,transparent);
  --neutral-surface-raised:var(--p-ink-900);
  --neutral-surface-editor:var(--p-ink-850);
  --neutral-surface-panel:color-mix(in srgb,var(--p-black) 22%,transparent);
  --neutral-surface-panel-opaque:var(--p-ink-975);
  --neutral-text:var(--p-cream);
  --neutral-text-2:color-mix(in srgb,var(--p-cream) 85%,transparent);
  --neutral-text-muted:color-mix(in srgb,var(--p-cream) 68%,transparent);
  --neutral-text-toggle:color-mix(in srgb,var(--p-cream) 68%,transparent);
  --neutral-text-faint:color-mix(in srgb,var(--p-cream) 50%,transparent);
  --neutral-text-control:color-mix(in srgb,var(--p-cream) 58%,transparent);
  --neutral-chat-text:color-mix(in srgb,var(--p-cream) 55%,transparent);
  --neutral-chart-gap:color-mix(in srgb,var(--p-cream) 55%,transparent);
  --neutral-icon-faint:color-mix(in srgb,var(--p-cream) 37%,transparent);
  --neutral-line:color-mix(in srgb,var(--p-white) 7%,transparent);
  --neutral-line-card:color-mix(in srgb,var(--p-white) 7%,transparent);
  --neutral-line-input:color-mix(in srgb,var(--p-white) 12%,transparent);
  --neutral-surface-tint:color-mix(in srgb,var(--p-white) 6%,transparent);
  --neutral-surface-sunk:color-mix(in srgb,var(--p-white) 5%,transparent);
  --neutral-chat-ink:var(--p-cream);
  --neutral-chat-label:color-mix(in srgb,var(--p-cream) 50%,transparent);
  --neutral-chat-meta:color-mix(in srgb,var(--p-cream) 50%,transparent);
  --neutral-chat-name:var(--p-cream);
  --neutral-chat-input:var(--p-cream);
  --neutral-text-input:var(--p-cream);
  --neutral-topbar:color-mix(in srgb,var(--p-ink-950) 96%,transparent);
  --neutral-topbar-line:color-mix(in srgb,var(--p-white) 6%,transparent);
  --neutral-veil:var(--p-white);
  --neutral-veil-90:var(--p-white-90);
  --neutral-shade-08:var(--p-shade-08);
  --neutral-shade-05:var(--p-shade-05);
  --neutral-shade-32:var(--p-shade-32);
  --neutral-shade-25:var(--p-shade-25);
  --neutral-shade-22:var(--p-shade-22);
  --neutral-shade-18:var(--p-shade-18);
  --neutral-shade-03:var(--p-shade-03);
  --neutral-shade-06:var(--p-shade-06);
  --neutral-shade-10:var(--p-shade-10);
  --neutral-shade-15:var(--p-shade-15);
  --neutral-shade-28:var(--p-shade-28);
  --neutral-shade-30:var(--p-shade-30);
  --neutral-shade-65:var(--p-shade-65);
  --neutral-shade-20:var(--p-shade-20);
  --neutral-shade-50:var(--p-shade-50);
  --neutral-shade-14:var(--p-shade-14);
  --neutral-shade-35:var(--p-shade-35);
  --neutral-shade-45:var(--p-shade-45);
  --neutral-shade-55:var(--p-shade-55);
  --neutral-shade-60:var(--p-shade-60);
  --neutral-shade-72:var(--p-shade-72);

  /* paper (the same in every theme) */
  --paper-bg:var(--p-paper);
  --paper-ink:var(--p-paper-ink);
  --paper-placeholder:color-mix(in srgb,var(--p-paper-ink) 32%,transparent);
  --paper-note:var(--p-paper-note);
  --paper-gold:var(--p-paper-gold);
  --paper-hint-bg:color-mix(in srgb,var(--p-paper-hint) 90%,transparent);
  --paper-hint-text:var(--p-cream);

  /* fixed, per theme */
  --fixed-ai-ok:var(--p-emerald-400);
  --fixed-ai-stale:var(--p-amber-400);
  --fixed-ai-offline:var(--p-red-400);
}

/* ── 2. Roles: light ── */
[data-theme="light"]{
  /* brand */
  --brand-accent:var(--p-teal-720);
  --brand-accent-hover:var(--p-teal-800);
  --brand-logo:var(--p-teal-720);
  --brand-fill:var(--p-teal-700);
  --brand-fill-hover:var(--p-teal-800);
  --brand-fill-soft:color-mix(in srgb,var(--p-teal-700) 10%,transparent);
  --brand-fill-line:color-mix(in srgb,var(--p-teal-700) 22%,transparent);
  --brand-fill-plan:var(--p-teal-580);
  --brand-progress-end:var(--p-teal-500);
  --brand-drop-bg:var(--p-teal-300-a08);
  --brand-drop-line:color-mix(in srgb,var(--p-teal-300) 50%,transparent);
  --brand-drop-icon-bg:color-mix(in srgb,var(--p-teal-300) 15%,transparent);
  --brand-drop-format:color-mix(in srgb,var(--p-teal-300) 55%,transparent);
  --brand-drop-hint:var(--p-teal-slate);
  --brand-accent-on-tint:var(--p-teal-740);
  --brand-spinner-track:color-mix(in srgb,var(--p-teal-300) 20%,transparent);
  --brand-row-highlight:color-mix(in srgb,var(--p-teal-300) 12%,transparent);
  --brand-on-fill:var(--p-white);
  --brand-soft-btn:var(--p-teal-700-a09);
  --brand-line-btn:var(--p-teal-700-a18);
  --brand-mark-fg:var(--p-teal-780);
  --brand-mark-bg:color-mix(in srgb,var(--p-teal-720) 15%,transparent);
  --brand-row-tint:var(--p-teal-50);
  --brand-row-line:var(--p-teal-100);
  --brand-avatar-a:var(--p-teal-500);
  --brand-avatar-b:var(--p-teal-300);
  --brand-scene-number:var(--p-teal-760);
  --brand-stat-number:var(--p-teal-720);
  --brand-scene-number-paper:var(--p-brand-scene-paper);
  --brand-stat-chip:var(--p-gray-530);
  --brand-ink:var(--p-brand-ink);
  --meta-theme:var(--p-teal-75);

  /* view colours */
  --view-character:var(--p-view-character-strong-l);
  --view-inner:var(--p-view-inner-strong-l);
  --view-profile:var(--p-view-profile-strong-l);
  --view-memory:var(--p-view-memory-strong-l);
  --view-character-mark:var(--p-view-character-l);
  --view-inner-mark:var(--p-view-inner-l);
  --view-profile-mark:var(--p-view-profile-l);
  --view-memory-mark:var(--p-view-memory-l);
  --view-on-memory:var(--p-view-on-memory-l);
  --view-inner-soft:color-mix(in srgb,var(--p-view-inner-l) 10%,transparent);
  --view-character-fill:var(--p-view-character-fill-l);
  --view-character-dot:var(--p-view-character-dot-l);
  --view-character-soft:color-mix(in srgb,var(--p-view-character-l) 10%,transparent);
  --view-character-line:color-mix(in srgb,var(--p-view-character-l) 25%,transparent);
  --view-character-ink:var(--p-view-character-ink-l);
  --view-inner-line:color-mix(in srgb,var(--p-view-inner-l) 25%,transparent);
  --view-inner-ink:var(--p-view-inner-ink-l);
  --view-inner-quote:color-mix(in srgb,var(--p-view-inner-l) 6%,transparent);
  --view-profile-soft:color-mix(in srgb,var(--p-view-profile-l) 10%,transparent);
  --view-profile-line:color-mix(in srgb,var(--p-view-profile-l) 25%,transparent);
  --view-profile-ink:var(--p-view-profile-ink-l);
  --view-memory-soft:color-mix(in srgb,var(--p-view-memory-l) 10%,transparent);
  --view-memory-line:color-mix(in srgb,var(--p-view-memory-l) 25%,transparent);
  --view-memory-ink:var(--p-view-memory-ink-l);

  /* signals */
  --signal-danger:var(--p-red-650);
  --signal-warn:var(--p-amber-700);
  --signal-ok:var(--p-green-700);
  --signal-on-warn:var(--p-white);
  --signal-danger-soft:var(--p-red-50);
  --signal-danger-line:color-mix(in srgb,var(--p-red-400) 25%,transparent);
  --signal-danger-hover:color-mix(in srgb,var(--p-red-400) 12%,transparent);
  --signal-danger-menu-hover:color-mix(in srgb,var(--p-red-400) 10%,transparent);
  --signal-warn-silent:var(--p-amber-750);
  --signal-warn-ink:var(--p-amber-750);
  --signal-warn-on-tint:var(--p-amber-800);

  /* neutrals */
  --neutral-bg:var(--p-gray-50);
  --neutral-surface:var(--p-white);
  --neutral-surface-raised:var(--p-white);
  --neutral-surface-editor:var(--p-gray-25);
  --neutral-surface-panel:var(--p-warm-25);
  --neutral-surface-panel-opaque:var(--p-warm-25);
  --neutral-text:var(--p-gray-900);
  --neutral-text-2:var(--p-gray-700);
  --neutral-text-muted:var(--p-gray-520);
  --neutral-text-toggle:var(--p-gray-580);
  --neutral-text-faint:var(--p-gray-530);
  --neutral-text-control:var(--p-gray-600);
  --neutral-chat-text:var(--p-gray-6d);
  --neutral-chart-gap:var(--p-gray-76);
  --neutral-icon-faint:var(--p-gray-450);
  --neutral-line:var(--p-lav-100);
  --neutral-line-card:var(--p-lav-150);
  --neutral-line-input:var(--p-lav-200);
  --neutral-surface-tint:var(--p-lav-25);
  --neutral-surface-sunk:var(--p-lav-75);
  --neutral-chat-ink:var(--p-gray-33);
  --neutral-chat-label:var(--p-gray-55);
  --neutral-chat-meta:var(--p-gray-66);
  --neutral-chat-name:var(--p-indigo-ink);
  --neutral-chat-input:var(--p-gray-44);
  --neutral-text-input:var(--p-gray-11);
  --neutral-topbar:var(--p-teal-75);
  --neutral-topbar-line:var(--p-teal-150);
  --neutral-veil:var(--p-white);
  --neutral-veil-90:var(--p-white-90);
  --neutral-shade-08:var(--p-shade-08);
  --neutral-shade-05:var(--p-shade-05);
  --neutral-shade-32:var(--p-shade-32);
  --neutral-shade-25:var(--p-shade-25);
  --neutral-shade-22:var(--p-shade-22);
  --neutral-shade-18:var(--p-shade-18);
  --neutral-shade-03:var(--p-shade-03);
  --neutral-shade-06:var(--p-shade-06);
  --neutral-shade-10:var(--p-shade-10);
  --neutral-shade-15:var(--p-shade-15);
  --neutral-shade-28:var(--p-shade-28);
  --neutral-shade-30:var(--p-shade-30);
  --neutral-shade-65:var(--p-shade-65);
  --neutral-shade-20:var(--p-shade-20);
  --neutral-shade-50:var(--p-shade-50);
  --neutral-shade-14:var(--p-shade-14);
  --neutral-shade-35:var(--p-shade-35);
  --neutral-shade-45:var(--p-shade-45);
  --neutral-shade-55:var(--p-shade-55);
  --neutral-shade-60:var(--p-shade-60);
  --neutral-shade-72:var(--p-shade-72);

  /* paper (the same in every theme) */
  --paper-bg:var(--p-paper);
  --paper-ink:var(--p-paper-ink);
  --paper-placeholder:color-mix(in srgb,var(--p-paper-ink) 32%,transparent);
  --paper-note:var(--p-paper-note);
  --paper-gold:var(--p-paper-gold);
  --paper-hint-bg:color-mix(in srgb,var(--p-paper-hint) 90%,transparent);
  --paper-hint-text:var(--p-cream);

  /* fixed, per theme */
  --fixed-ai-ok:var(--p-emerald-600);
  --fixed-ai-stale:var(--p-amber-660);
  --fixed-ai-offline:var(--p-red-600);
}
