/* ============================================================================
 * Bootstrap ↔ UKLSH token mapping.
 *
 * Loaded AFTER bootstrap.css and 02-tokens.css so the UKLSH palette wins on
 * source order without specificity hacks (ADR-016).
 *
 * Bootstrap component variables are pointed at the design tokens here so that
 * tables, badges, modals, dropdowns and forms inherit the palette instead of
 * Bootstrap's defaults. Component-level overrides elsewhere are a smell;
 * add a variable mapping here instead.
 * ==========================================================================*/

:root,
[data-theme="dark"] {
  /* Body ------------------------------------------------------------- */
  --bs-body-bg: var(--bg);
  --bs-body-color: var(--ink);
  --bs-body-font-family: var(--sans);
  --bs-body-font-weight: 300;
  --bs-body-line-height: 1.55;

  /* Emphasis text ---------------------------------------------------- */
  --bs-emphasis-color: var(--ink);
  --bs-secondary-color: var(--ink-soft);
  --bs-secondary-bg: var(--bg-elev);
  --bs-tertiary-color: var(--ink-mute);
  --bs-tertiary-bg: var(--bg-warm);

  /* Borders ---------------------------------------------------------- */
  --bs-border-color: var(--rule);
  --bs-border-color-translucent: var(--rule-soft);
  --bs-border-radius: 0.375rem;
  --bs-border-radius-sm: 0.25rem;
  --bs-border-radius-lg: 0.5rem;

  /* Links ------------------------------------------------------------ */
  --bs-link-color: var(--moss-bright);
  --bs-link-color-rgb: var(--moss-bright);
  --bs-link-hover-color: var(--moss-deep);
  /* The UKLSH shell underlines links on hover only (landing.css resets the
     base anchor decoration). Bootstrap would underline everything. */
  --bs-link-decoration: none;
  --bs-link-hover-decoration: underline;

  /* Primary ---------------------------------------------------------- */
  --bs-primary: var(--moss-bright);
  --bs-primary-rgb: var(--moss-bright);
  --bs-primary-bg-subtle: var(--bg-elev);
  --bs-primary-border-subtle: var(--rule);
  --bs-primary-text-emphasis: var(--moss-deep);

  /* Secondary / neutral ---------------------------------------------- */
  --bs-secondary: var(--ink-soft);
  --bs-secondary-rgb: var(--ink-soft);

  /* Feedback colours, kept muted to sit inside the palette ----------- */
  --bs-success: var(--moss-bright);
  --bs-success-rgb: var(--moss-bright);
  --bs-success-bg-subtle: var(--bg-elev);
  --bs-success-border-subtle: var(--rule);
  --bs-success-text-emphasis: var(--moss-deep);

  --bs-danger: var(--umber);
  --bs-danger-rgb: var(--umber);
  --bs-danger-bg-subtle: var(--bg-warm);
  --bs-danger-border-subtle: var(--rule);
  --bs-danger-text-emphasis: var(--umber-light);

  --bs-warning: var(--umber);
  --bs-warning-rgb: var(--umber);
  --bs-warning-bg-subtle: var(--bg-warm);
  --bs-warning-border-subtle: var(--rule);
  --bs-warning-text-emphasis: var(--umber-light);

  --bs-info: var(--moss);
  --bs-info-rgb: var(--moss);
  --bs-info-bg-subtle: var(--bg-elev);
  --bs-info-border-subtle: var(--rule);
  --bs-info-text-emphasis: var(--moss-deep);

  /* Tables ----------------------------------------------------------- */
  --bs-table-bg: transparent;
  --bs-table-color: var(--ink);
  --bs-table-border-color: var(--rule);
  --bs-table-striped-bg: var(--bg-elev);
  --bs-table-striped-color: var(--ink);
  --bs-table-hover-bg: var(--bg-warm);
  --bs-table-hover-color: var(--ink);
  --bs-table-active-bg: var(--bg-warm);
  --bs-table-active-color: var(--ink);

  /* Forms ------------------------------------------------------------ */
  --bs-form-valid-color: var(--moss-bright);
  --bs-form-valid-border-color: var(--moss);
  --bs-form-invalid-color: var(--umber);
  --bs-form-invalid-border-color: var(--umber);
}

/* Bootstrap paints the page background itself; the shell owns that instead. */
body {
  background-color: var(--bg);
  color: var(--ink);
}

/* Keep focus rings visible in both themes (ADR-010, WCAG 2.2 AA). */
:focus-visible {
  outline: 2px solid var(--moss-bright);
  outline-offset: 2px;
}