/* ============================================================================
 * Opencode-style theme palette definitions.
 *
 * Each `:root[data-theme="..."]` block defines the same 14-token contract
 * used by the rest of the stylesheet:
 *   --bg / --fg / --dim / --bright / --accent / --accent-dim
 *   --warn / --err / --archived / --line / --line-strong / --accent-soft
 *   plus the tag-system aliases --tag-fg / --tag-fg-accent / --tag-fg-warn
 *   / --tag-border / --tag-border-accent / --tag-border-warn
 *   / --tag-bg-neutral / --tag-radius
 *
 * Adding a new theme = one block here + one entry in
 * `src/Interface/Twig/ThemeContext.php` ALLOWED_NAMES + one i18n key pair
 * (per `docs/development/THEMES.md`).
 *
 * Hex values are sourced from the canonical upstream palette projects
 * cited per-block. Where the upstream palette has fewer semantic roles
 * than the 14-token contract (e.g. TUI syntax-highlight-only colours),
 * the closest semantic role wins and the omission is documented in the
 * block comment.
 *
 * Cascade order matters: this file is loaded AFTER `base.css` (see
 * `templates/base.html.twig:144`) so the `:root[data-theme="..."]`
 * selectors win over the bare `:root` fallback that `base.css` keeps for
 * visitors who arrive without `data-theme` set.
 * ========================================================================== */

/* ----- Matrix (current / default; do not change hex values) --------------
 * Source: elrise-symfony original `base.css :root` block (2026-07).
 * Matrix is the canonical "matrix" theme per `https://opencode.ai/docs/themes`.
 * The bare `:root` block in `base.css` still carries these same values so
 * that visitors who arrive without `data-theme` see no visual change. */
:root[data-theme="matrix"] {
  --bg: #000000;
  --fg: #D4D4D4;
  --dim: #6B6B6B;
  --bright: #FFFFFF;
  --accent: #00FF9C;
  --accent-dim: #00B36F;
  --warn: #FFD93D;
  --err: #FF6B6B;
  --archived: #FF8C42;
  --line: #1A1A1A;
  --line-strong: #2A2A2A;
  --accent-soft: rgba(0, 255, 156, 0.18);

  --tag-fg: var(--dim);
  --tag-fg-accent: var(--accent);
  --tag-fg-warn: var(--warn);
  --tag-border: var(--line-strong);
  --tag-border-accent: var(--accent-dim);
  --tag-border-warn: rgba(255, 217, 61, 0.3);
  --tag-bg-neutral: rgba(255, 255, 255, 0.03);
  --tag-radius: 999px;
}

/* ----- Opencode (own default) -------------------------------------------
 * Source: `https://opencode.ai/docs/themes` — the canonical opencode TUI
 * default theme. Inspired by a soft warm-paper dark scheme; primary
 * accent is a desaturated indigo/violet, secondary a warm orange. */
:root[data-theme="opencode"] {
  --bg: #1A1B1E;
  --fg: #E4E4E4;
  --dim: #6E6E6E;
  --bright: #FFFFFF;
  --accent: #7D7DD7;
  --accent-dim: #5C5CC2;
  --warn: #E0B450;
  --err: #E06C75;
  --archived: #D08770;
  --line: #232428;
  --line-strong: #2E2F33;
  --accent-soft: rgba(125, 125, 215, 0.18);

  --tag-fg: var(--dim);
  --tag-fg-accent: var(--accent);
  --tag-fg-warn: var(--warn);
  --tag-border: var(--line-strong);
  --tag-border-accent: var(--accent-dim);
  --tag-border-warn: rgba(224, 180, 80, 0.3);
  --tag-bg-neutral: rgba(255, 255, 255, 0.03);
  --tag-radius: 999px;
}

/* ----- Tokyonight ------------------------------------------------------
 * Source: `https://github.com/folke/tokyonight.nvim` (night variant).
 * Canonical dark scheme; primary accent is the signature cyan-blue. */
:root[data-theme="tokyonight"] {
  --bg: #1A1B26;
  --fg: #C0CAF5;
  --dim: #565F89;
  --bright: #D8DEE9;
  --accent: #7AA2F7;
  --accent-dim: #5C7BD9;
  --warn: #E0AF68;
  --err: #F7768E;
  --archived: #FF9E64;
  --line: #16161E;
  --line-strong: #24283B;
  --accent-soft: rgba(122, 162, 247, 0.18);

  --tag-fg: var(--dim);
  --tag-fg-accent: var(--accent);
  --tag-fg-warn: var(--warn);
  --tag-border: var(--line-strong);
  --tag-border-accent: var(--accent-dim);
  --tag-border-warn: rgba(224, 175, 104, 0.3);
  --tag-bg-neutral: rgba(255, 255, 255, 0.03);
  --tag-radius: 999px;
}

/* ----- Everforest ------------------------------------------------------
 * Source: `https://github.com/sainnhe/everforest` (hard dark variant).
 * Forest-green-tinted dark scheme; primary accent is a soft green. */
:root[data-theme="everforest"] {
  --bg: #2D353B;
  --fg: #D3C6AA;
  --dim: #859289;
  --bright: #E0DDC8;
  --accent: #A7C080;
  --accent-dim: #83B073;
  --warn: #DBBC7F;
  --err: #E67E80;
  --archived: #E69875;
  --line: #232A2E;
  --line-strong: #3D484D;
  --accent-soft: rgba(167, 192, 128, 0.18);

  --tag-fg: var(--dim);
  --tag-fg-accent: var(--accent);
  --tag-fg-warn: var(--warn);
  --tag-border: var(--line-strong);
  --tag-border-accent: var(--accent-dim);
  --tag-border-warn: rgba(219, 188, 127, 0.3);
  --tag-bg-neutral: rgba(255, 255, 255, 0.03);
  --tag-radius: 999px;
}

/* ----- Ayu -------------------------------------------------------------
 * Source: `https://github.com/ayu-theme` (ayu dark / mirage variant).
 * Warm-tinted dark scheme; primary accent is the signature soft yellow. */
:root[data-theme="ayu"] {
  --bg: #1F2430;
  --fg: #CBCCC6;
  --dim: #707A8C;
  --bright: #FFFFFF;
  --accent: #FFB454;
  --accent-dim: #E0A040;
  --warn: #E0B450;
  --err: #FF6666;
  --archived: #FF8C42;
  --line: #191E2A;
  --line-strong: #232834;
  --accent-soft: rgba(255, 180, 84, 0.18);

  --tag-fg: var(--dim);
  --tag-fg-accent: var(--accent);
  --tag-fg-warn: var(--warn);
  --tag-border: var(--line-strong);
  --tag-border-accent: var(--accent-dim);
  --tag-border-warn: rgba(224, 180, 80, 0.3);
  --tag-bg-neutral: rgba(255, 255, 255, 0.03);
  --tag-radius: 999px;
}

/* ----- Catppuccin (Latte + Frappe) --------------------------------------
 * Source: `https://github.com/catppuccin/catppuccin`.
 * Catppuccin "Frappe" dark variant — primary accent is the signature
 * lavender. */
:root[data-theme="catppuccin"] {
  --bg: #303446;
  --fg: #C6D0F5;
  --dim: #838BA7;
  --bright: #FFFFFF;
  --accent: #CA9EE6;
  --accent-dim: #A992DE;
  --warn: #E5C890;
  --err: #E78284;
  --archived: #EF9F76;
  --line: #292C3C;
  --line-strong: #414559;
  --accent-soft: rgba(202, 158, 230, 0.18);

  --tag-fg: var(--dim);
  --tag-fg-accent: var(--accent);
  --tag-fg-warn: var(--warn);
  --tag-border: var(--line-strong);
  --tag-border-accent: var(--accent-dim);
  --tag-border-warn: rgba(229, 200, 144, 0.3);
  --tag-bg-neutral: rgba(255, 255, 255, 0.03);
  --tag-radius: 999px;
}

/* ----- Catppuccin Macchiato --------------------------------------------
 * Source: `https://github.com/catppuccin/catppuccin` (Macchiato variant).
 * Slightly darker than Frappe; the same lavender signature accent. */
:root[data-theme="catppuccin-macchiato"] {
  --bg: #24273A;
  --fg: #CAD3F5;
  --dim: #8087A2;
  --bright: #FFFFFF;
  --accent: #C6A0F6;
  --accent-dim: #A88FED;
  --warn: #EED49F;
  --err: #ED8796;
  --archived: #F5A97F;
  --line: #1E2030;
  --line-strong: #363A4F;
  --accent-soft: rgba(198, 160, 246, 0.18);

  --tag-fg: var(--dim);
  --tag-fg-accent: var(--accent);
  --tag-fg-warn: var(--warn);
  --tag-border: var(--line-strong);
  --tag-border-accent: var(--accent-dim);
  --tag-border-warn: rgba(238, 212, 159, 0.3);
  --tag-bg-neutral: rgba(255, 255, 255, 0.03);
  --tag-radius: 999px;
}

/* ----- Gruvbox ---------------------------------------------------------
 * Source: `https://github.com/morhetz/gruvbox` (dark hard variant).
 * Warm earth-tone dark scheme; primary accent is a muted orange. */
:root[data-theme="gruvbox"] {
  --bg: #282828;
  --fg: #EBDBB2;
  --dim: #928374;
  --bright: #F9F5D7;
  --accent: #FE8019;
  --accent-dim: #D65D0E;
  --warn: #FABD2F;
  --err: #FB4934;
  --archived: #FF8C42;
  --line: #1D2021;
  --line-strong: #3C3836;
  --accent-soft: rgba(254, 128, 25, 0.18);

  --tag-fg: var(--dim);
  --tag-fg-accent: var(--accent);
  --tag-fg-warn: var(--warn);
  --tag-border: var(--line-strong);
  --tag-border-accent: var(--accent-dim);
  --tag-border-warn: rgba(250, 189, 47, 0.3);
  --tag-bg-neutral: rgba(255, 255, 255, 0.03);
  --tag-radius: 999px;
}

/* ----- Kanagawa -------------------------------------------------------
 * Source: `https://github.com/rebelot/kanagawa.nvim` (wave variant).
 * Japanese-ink inspired dark scheme; primary accent is a soft slate-blue. */
:root[data-theme="kanagawa"] {
  --bg: #1F1F28;
  --fg: #DCD7BA;
  --dim: #727169;
  --bright: #FFFFFF;
  --accent: #7FB4CA;
  --accent-dim: #5A93B0;
  --warn: #E6C384;
  --err: #E8242C;
  --archived: #FFA066;
  --line: #16161D;
  --line-strong: #2A2A37;
  --accent-soft: rgba(127, 180, 202, 0.18);

  --tag-fg: var(--dim);
  --tag-fg-accent: var(--accent);
  --tag-fg-warn: var(--warn);
  --tag-border: var(--line-strong);
  --tag-border-accent: var(--accent-dim);
  --tag-border-warn: rgba(230, 195, 132, 0.3);
  --tag-bg-neutral: rgba(255, 255, 255, 0.03);
  --tag-radius: 999px;
}

/* ----- Nord ------------------------------------------------------------
 * Source: `https://github.com/nordtheme/nord` (nord0..nord15 from the
 * official palette; also cited inline in `https://opencode.ai/docs/themes`).
 * Primary accent is the signature frost-blue (nord8 / nord10). */
:root[data-theme="nord"] {
  --bg: #2E3440;
  --fg: #D8DEE9;
  --dim: #4C566A;
  --bright: #ECEFF4;
  --accent: #88C0D0;
  --accent-dim: #5E81AC;
  --warn: #EBCB8B;
  --err: #BF616A;
  --archived: #D08770;
  --line: #242933;
  --line-strong: #3B4252;
  --accent-soft: rgba(136, 192, 208, 0.18);

  --tag-fg: var(--dim);
  --tag-fg-accent: var(--accent);
  --tag-fg-warn: var(--warn);
  --tag-border: var(--line-strong);
  --tag-border-accent: var(--accent-dim);
  --tag-border-warn: rgba(235, 203, 139, 0.3);
  --tag-bg-neutral: rgba(255, 255, 255, 0.03);
  --tag-radius: 999px;
}

/* ----- One Dark --------------------------------------------------------
 * Source: `https://github.com/Th3Whit3Wolf/one-nvim` (atom-one dark).
 * Primary accent is the signature blue. */
:root[data-theme="one-dark"] {
  --bg: #282C34;
  --fg: #ABB2BF;
  --dim: #5C6370;
  --bright: #FFFFFF;
  --accent: #61AFEF;
  --accent-dim: #528BCC;
  --warn: #E5C07B;
  --err: #E06C75;
  --archived: #D19A66;
  --line: #21252B;
  --line-strong: #3E4452;
  --accent-soft: rgba(97, 175, 239, 0.18);

  --tag-fg: var(--dim);
  --tag-fg-accent: var(--accent);
  --tag-fg-warn: var(--warn);
  --tag-border: var(--line-strong);
  --tag-border-accent: var(--accent-dim);
  --tag-border-warn: rgba(229, 192, 123, 0.3);
  --tag-bg-neutral: rgba(255, 255, 255, 0.03);
  --tag-radius: 999px;
}

/* ----- System ----------------------------------------------------------
 * Source: `https://opencode.ai/docs/themes` — "Adapts to your terminal's
 * background color". On the web the analogue is the `prefers-color-scheme`
 * media query: dark when the OS reports dark, light when light.
 *
 * The dark variant re-uses the opencode default (matches opencode's
 * "respects terminal defaults" intent for the dark case); the light
 * variant uses a paper-style palette. */
:root[data-theme="system"] {
  --bg: #1A1B1E;
  --fg: #E4E4E4;
  --dim: #6E6E6E;
  --bright: #FFFFFF;
  --accent: #7D7DD7;
  --accent-dim: #5C5CC2;
  --warn: #E0B450;
  --err: #E06C75;
  --archived: #D08770;
  --line: #232428;
  --line-strong: #2E2F33;
  --accent-soft: rgba(125, 125, 215, 0.18);

  --tag-fg: var(--dim);
  --tag-fg-accent: var(--accent);
  --tag-fg-warn: var(--warn);
  --tag-border: var(--line-strong);
  --tag-border-accent: var(--accent-dim);
  --tag-border-warn: rgba(224, 180, 80, 0.3);
  --tag-bg-neutral: rgba(255, 255, 255, 0.03);
  --tag-radius: 999px;
}

@media (prefers-color-scheme: light) {
  :root[data-theme="system"] {
    --bg: #FAFAFA;
    --fg: #1F2024;
    --dim: #6E6E6E;
    --bright: #000000;
    --accent: #5C5CC2;
    --accent-dim: #4040A8;
    --warn: #B58A30;
    --err: #C04646;
    --archived: #A85F30;
    --line: #ECECEC;
    --line-strong: #D8D8D8;
    --accent-soft: rgba(92, 92, 194, 0.18);

    --tag-fg: var(--dim);
    --tag-fg-accent: var(--accent);
    --tag-fg-warn: var(--warn);
    --tag-border: var(--line-strong);
    --tag-border-accent: var(--accent-dim);
    --tag-border-warn: rgba(181, 138, 48, 0.3);
    --tag-bg-neutral: rgba(0, 0, 0, 0.04);
    --tag-radius: 999px;
  }
}
/* ----- Bare :root fallback (no data-theme attribute) --------------------
 * Visitors who arrive without `data-theme` set land here. Values
 * mirror `:root[data-theme="matrix"]` above so the site renders
 * byte-identical to the pre-DE-001 look. The bare `:root` selector
 * (specificity 0,1,0) is overridden by any `:root[data-theme="..."]`
 * (specificity 0,2,0) that follows in the cascade, so visitors who
 * arrive with `data-theme` set see the named theme. */
:root {
  --bg: #000000;
  --fg: #D4D4D4;
  --dim: #6B6B6B;
  --bright: #FFFFFF;
  --accent: #00FF9C;
  --accent-dim: #00B36F;
  --warn: #FFD93D;
  --err: #FF6B6B;
  --archived: #FF8C42;
  --line: #1A1A1A;
  --line-strong: #2A2A2A;
  --accent-soft: rgba(0, 255, 156, 0.18);

  --tag-fg: var(--dim);
  --tag-fg-accent: var(--accent);
  --tag-fg-warn: var(--warn);
  --tag-border: var(--line-strong);
  --tag-border-accent: var(--accent-dim);
  --tag-border-warn: rgba(255, 217, 61, 0.3);
  --tag-bg-neutral: rgba(255, 255, 255, 0.03);
  --tag-radius: 999px;
}
