/* ── Signitri colour system ───────────────────────────────────────────────
   Two ideas hold the palette together:
   1. PAPER → INK. The neutral ramp starts as warm paper and ends as cool ink,
      so light surfaces feel like documents and dark surfaces feel like ink.
   2. BRASS is the only decorative accent — the seal, the notary, the thing
      being bought. Never used for body copy; never used for danger.
   Semantics are earthy, not neon, so verification bands sit beside brass. */

:root {
  /* Neutrals — warm paper to cool ink */
  --n-0: #ffffff;
  --n-25: #fdfcfa;
  --n-50: #f8f5f0;
  --n-100: #f1ede6;
  --n-200: #e4ded4;
  --n-300: #cfc7ba;
  --n-400: #a9a29a;
  --n-500: #7c7871;
  --n-600: #5a5b5b;
  --n-700: #3e4147;
  --n-800: #282c33;
  --n-900: #191d24;
  --n-950: #0e1116;

  /* Brass — seal, evidence, brand accent */
  --brass-50: #faf4e8;
  --brass-100: #f2e7d2;
  --brass-200: #e6d3ac;
  --brass-300: #d4b981;
  --brass-400: #c2a05c;
  --brass-500: #b08843;
  --brass-600: #8f6b2f;
  --brass-700: #6d5124;
  --brass-800: #48351a;

  /* Verified — identity match, completed documents */
  --green-50: #eef7f2;
  --green-100: #d7ecdf;
  --green-200: #aed8c2;
  --green-400: #3f9a74;
  --green-500: #2a8462;
  --green-600: #1f6b4e;
  --green-700: #17513c;

  /* Review — manual review band, expiring windows */
  --amber-50: #fdf6e8;
  --amber-100: #fbebcb;
  --amber-200: #f4d799;
  --amber-400: #d69d1c;
  --amber-500: #c4880f;
  --amber-600: #9a6510;
  --amber-700: #744c0d;

  /* Reject — failed verification, declined, cancelled */
  --red-50: #fdf0ed;
  --red-100: #f8ded9;
  --red-200: #eebdb4;
  --red-400: #d1503f;
  --red-500: #c23a2e;
  --red-600: #a32b23;
  --red-700: #7c211b;

  /* Slate — in-flight, informational, "sent" */
  --slate-50: #eff3f7;
  --slate-100: #dfe7ef;
  --slate-200: #c0cfdd;
  --slate-400: #5d80a5;
  --slate-500: #446b92;
  --slate-600: #34557a;
  --slate-700: #26405c;

  /* ── Semantic aliases — always prefer these in components ───────────── */
  --text-primary: var(--n-900);
  --text-secondary: var(--n-700);
  --text-muted: var(--n-500);
  --text-faint: var(--n-400);
  --text-inverse: var(--n-25);
  --text-inverse-muted: #a2a8b2;
  --text-brand: var(--brass-600);
  --text-link: var(--n-900);
  --text-link-hover: var(--brass-600);
  --text-on-brand: #ffffff;
  --text-danger: var(--red-600);
  --text-success: var(--green-600);
  --text-warning: var(--amber-700);

  --surface-page: var(--n-50);
  --surface-card: var(--n-0);
  --surface-raised: var(--n-0);
  --surface-sunken: var(--n-100);
  --surface-inset: var(--n-25);
  --surface-inverse: var(--n-950);
  --surface-inverse-raised: #1a1f27;
  /* Solid brass that carries text must be brass-600 — brass-500 does not clear 4.5:1
     against either white or ink. brass-500 is for rules, borders and decoration only. */
  --surface-brand: var(--brass-600);
  --surface-brand-subtle: var(--brass-50);
  --surface-document: var(--n-0);
  --surface-desk: #d9d3c8;
  --surface-overlay: rgba(14, 17, 22, 0.55);

  --border-hairline: var(--n-200);
  --border-subtle: var(--n-200);
  --border-default: var(--n-300);
  --border-strong: var(--n-400);
  --border-inverse: rgba(255, 255, 255, 0.14);
  --border-brand: var(--brass-400);
  --border-focus: var(--brass-500);

  --state-hover-tint: rgba(25, 29, 36, 0.045);
  --state-press-tint: rgba(25, 29, 36, 0.09);
  --state-selected-tint: var(--brass-50);
  --state-disabled-opacity: 0.42; /* @kind other */

  /* Verification bands — the product's central signal */
  --band-match-fg: var(--green-700);
  --band-match-bg: var(--green-50);
  --band-match-border: var(--green-200);
  --band-review-fg: var(--amber-700);
  --band-review-bg: var(--amber-50);
  --band-review-border: var(--amber-200);
  --band-reject-fg: var(--red-700);
  --band-reject-bg: var(--red-50);
  --band-reject-border: var(--red-200);

  /* Document lifecycle: draft → sent → in_progress → completed | cancelled */
  --status-draft-fg: var(--n-600);
  --status-draft-bg: var(--n-100);
  --status-sent-fg: var(--slate-700);
  --status-sent-bg: var(--slate-50);
  --status-progress-fg: var(--brass-700);
  --status-progress-bg: var(--brass-50);
  --status-completed-fg: var(--green-700);
  --status-completed-bg: var(--green-50);
  --status-cancelled-fg: var(--red-700);
  --status-cancelled-bg: var(--red-50);
  --status-expired-fg: var(--n-700);
  --status-expired-bg: var(--n-200);

  /* Signature ink is never pure black — it is a fountain-pen blue-black. */
  --ink-signature: #16233b;
}

[data-theme="dark"] {
  --text-primary: var(--n-25);
  --text-secondary: #c8ccd3;
  --text-muted: #9aa1ab;
  --text-faint: #6f7883;
  --text-inverse: var(--n-950);
  --text-link: var(--n-25);
  --text-link-hover: var(--brass-300);
  --text-brand: var(--brass-300);

  --surface-page: var(--n-950);
  --surface-card: #171b22;
  --surface-raised: #1d222a;
  --surface-sunken: #0a0d11;
  --surface-inset: #12161c;
  --surface-inverse: var(--n-25);
  --surface-brand-subtle: rgba(176, 136, 67, 0.14);

  --border-hairline: rgba(255, 255, 255, 0.09);
  --border-subtle: rgba(255, 255, 255, 0.11);
  --border-default: rgba(255, 255, 255, 0.18);
  --border-strong: rgba(255, 255, 255, 0.28);

  --state-hover-tint: rgba(255, 255, 255, 0.06);
  --state-press-tint: rgba(255, 255, 255, 0.11);
  --state-selected-tint: rgba(176, 136, 67, 0.16);

  --band-match-bg: rgba(42, 132, 98, 0.16);
  --band-match-fg: #8ed3b2;
  --band-match-border: rgba(42, 132, 98, 0.4);
  --band-review-bg: rgba(196, 136, 15, 0.16);
  --band-review-fg: #e8be6a;
  --band-review-border: rgba(196, 136, 15, 0.4);
  --band-reject-bg: rgba(194, 58, 46, 0.16);
  --band-reject-fg: #eda49a;
  --band-reject-border: rgba(194, 58, 46, 0.4);
}
