/* Ledger palette. Source of truth: uploads/Metryka_New_Project_Kit_v2.2/tokens/metryka.tokens.json.
   Raw hex outside these tokens is forbidden. Role grammar is enforced in the semantic block. */
:root{
  /* base */
  --m-ink:#141414;
  --m-ink-deep:#0D0F0C;
  --m-paper:#F4EFE3;
  --m-paper-light:#FAF7EF;
  --m-surface:#EBE4D4;
  --m-mist:#DDD6C6;
  --m-muted:#6B6F7E;
  --m-brand:#1E2A78;
  --m-marker:#F2C400;
  --m-verdict:#1D5C46;
  --m-exception:#C43A2E;

  /* tints — derived only for status fields and quiet grounds. Never for text. */
  --m-marker-tint:color-mix(in oklab, var(--m-marker) 18%, var(--m-paper-light));
  --m-verdict-tint:color-mix(in oklab, var(--m-verdict) 12%, var(--m-paper-light));
  --m-exception-tint:color-mix(in oklab, var(--m-exception) 10%, var(--m-paper-light));
  --m-brand-tint:color-mix(in oklab, var(--m-brand) 8%, var(--m-paper-light));

  /* semantic — text */
  --text-primary:var(--m-ink);
  --text-secondary:var(--m-muted);
  --text-brand:var(--m-brand);
  --text-reverse:var(--m-paper);
  --text-verdict:var(--m-verdict);
  --text-exception:var(--m-exception);

  /* semantic — surfaces */
  --surface-page:var(--m-paper);
  --surface-card:var(--m-paper-light);
  --surface-quiet:var(--m-surface);
  --surface-brand:var(--m-brand);
  --surface-ink:var(--m-ink-deep);
  --surface-verdict:var(--m-verdict);

  /* semantic — lines. Always square endpoints, always hairline or base. */
  --rule-hairline:var(--m-mist);
  --rule-base:var(--m-ink);
  --rule-quiet:color-mix(in oklab, var(--m-mist) 70%, var(--m-paper));

  /* semantic — status (surowe / do wyjaśnienia / uzgodnione / rozbieżność) */
  --status-raw-fg:var(--m-muted);
  --status-raw-bg:var(--m-surface);
  --status-open-fg:var(--m-ink);
  --status-open-bg:var(--m-marker-tint);
  --status-agreed-fg:var(--m-verdict);
  --status-agreed-bg:var(--m-verdict-tint);
  --status-discrepancy-fg:var(--m-exception);
  --status-discrepancy-bg:var(--m-exception-tint);

  /* semantic — interactive. CTA is ink/paper; verdict is never a CTA colour. */
  --cta-bg:var(--m-ink);
  --cta-fg:var(--m-paper-light);
  --cta-bg-hover:var(--m-ink-deep);
  --cta-bg-active:var(--m-brand);
  --link-fg:var(--m-brand);
  --link-fg-hover:var(--m-ink);
  --focus-ring:var(--m-brand);
}

/* Dark mode: ink-deep ground, paper type. Brand lifts slightly to stay legible on ink. */
:root[data-theme="dark"]{
  --text-primary:var(--m-paper);
  --text-secondary:color-mix(in oklab, var(--m-paper) 62%, var(--m-ink-deep));
  --text-brand:color-mix(in oklab, var(--m-brand) 55%, var(--m-paper));
  --text-reverse:var(--m-ink-deep);
  --text-verdict:color-mix(in oklab, var(--m-verdict) 55%, var(--m-paper));
  --surface-page:var(--m-ink-deep);
  --surface-card:color-mix(in oklab, var(--m-paper) 6%, var(--m-ink-deep));
  --surface-quiet:color-mix(in oklab, var(--m-paper) 3%, var(--m-ink-deep));
  --rule-hairline:color-mix(in oklab, var(--m-paper) 22%, var(--m-ink-deep));
  --rule-base:var(--m-paper);
  --rule-quiet:color-mix(in oklab, var(--m-paper) 12%, var(--m-ink-deep));
  --status-raw-bg:color-mix(in oklab, var(--m-paper) 8%, var(--m-ink-deep));
  --status-open-bg:color-mix(in oklab, var(--m-marker) 22%, var(--m-ink-deep));
  --status-agreed-bg:color-mix(in oklab, var(--m-verdict) 28%, var(--m-ink-deep));
  --status-agreed-fg:color-mix(in oklab, var(--m-verdict) 45%, var(--m-paper));
  --status-discrepancy-bg:color-mix(in oklab, var(--m-exception) 22%, var(--m-ink-deep));
  --status-discrepancy-fg:color-mix(in oklab, var(--m-exception) 55%, var(--m-paper));
  --cta-bg:var(--m-paper);
  --cta-fg:var(--m-ink-deep);
  --cta-bg-hover:var(--m-paper-light);
  --cta-bg-active:var(--m-mist);
  --link-fg:color-mix(in oklab, var(--m-brand) 50%, var(--m-paper));
  --link-fg-hover:var(--m-paper);
  --focus-ring:var(--m-marker);
}
