/* ============================================================================
   Structural Readings — canonical design tokens (v1.67.0)

   SINGLE SOURCE OF TRUTH. This file is mirrored BYTE-IDENTICALLY into
   structural-readings/assets/tokens.css and that equality is enforced by
   premium-readings/tests/design-tokens.test.js, exactly as the Spanish
   glossary is. Edit here, copy across, run the tests.

   Before this file there were three drifting palettes: the app shell's inline
   :root, the premium pages' premium.css :root, and the plugin's .lbls-premium
   block. Four values had already diverged — --danger, --muted, --panel and the
   --bg/--navy naming — which is how a "same" gold ends up looking different on
   the storefront and in the delivered report.

   Both selectors are declared together so one file serves both hosts. Custom
   properties are inert until referenced, so :root inside WordPress paints
   nothing on its own; .lbls-premium is what actually scopes the plugin's rules.
   ========================================================================= */

:root,
.lbls-premium {
  /* --- Palette ------------------------------------------------------------
     Reconciled where the three sets disagreed. Each choice is the higher
     contrast option; all pairs clear WCAG AA on --bg (measured, not assumed:
     --muted 9.23:1, --gold 9.03:1, --gold2 13.02:1, --danger 8.57:1). */
  --bg: #08111f;
  --navy: #08111f;              /* alias: the plugin's rules were written against --navy */
  --panel: #0e1a2d;             /* was #102039 in the plugin */
  --panel2: #142641;
  --text: #edf3ff;
  --muted: #a9b6cc;             /* was #abb8cc in the plugin */
  --gold: #d8ad54;
  --gold2: #f2d389;
  --ok: #74d99f;
  --danger: #ff8e8e;            /* was #ff7b7b in the app shell */
  --line: rgba(255, 255, 255, .13);

  /* --- Surface hierarchy --------------------------------------------------
     Previously every container — card, journey, notice, trust item, gate —
     resolved to the same 1px translucent border over the same barely-there
     fill, so nothing on a dense page told the eye where to land. Three tiers:
     recessed for inputs and secondary detail, base for ordinary content,
     raised for the one thing that matters on the screen. Use raised sparingly;
     if everything is raised, nothing is. */
  --surface-recessed-bg: rgba(0, 0, 0, .22);
  --surface-recessed-line: rgba(255, 255, 255, .07);
  --surface-bg: rgba(255, 255, 255, .035);
  --surface-line: rgba(255, 255, 255, .13);
  --surface-raised-bg: rgba(255, 255, 255, .065);
  --surface-raised-line: rgba(216, 173, 84, .34);
  --surface-raised-shadow: 0 18px 44px rgba(0, 0, 0, .4);

  /* --- Type ---------------------------------------------------------------
     --font-display is a system serif stack and costs ZERO bytes: no webfont,
     no extra request, nothing added to the install budget we just cut by 61%.
     It carries the editorial register the writing already has and separates
     the product from the sans-everywhere consumer app look. */
  --font: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --font-display: ui-serif, Georgia, "Iowan Old Style", "Times New Roman", serif;
  --mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;

  /* Type scale. The floor was .68rem — about 10.9px, below what anyone should
     be asked to read on a phone, and it was used for gate tags and badges
     which carry real meaning. The new floor is .78rem (~12.5px). */
  --step--1: .78rem;
  --step-0: 1rem;
  --step-1: 1.15rem;
  --step-2: 1.42rem;
  --step-3: 1.8rem;

  --radius: 18px;
  --shadow: 0 24px 70px rgba(0, 0, 0, .35);
}

/* Display face for the headings that carry the voice. Deliberately narrow:
   body copy, UI labels and data stay in the sans, which is what keeps the
   serif from reading as decoration. */
.lbls-premium h1, .lbls-premium h2, .lbls-premium h3,
.page > header h1, .print-cover h1, .lbls-article h1, .lbls-article h2 {
  font-family: var(--font-display);
  letter-spacing: -.01em;
}

/* Print inherits the same tokens so the delivered PDF and the screen cannot
   drift. Surfaces flatten; ink-coloured text replaces the dark palette. */
@media print {
  :root,
  .lbls-premium {
    --text: #171717;
    --muted: #4b4b4b;
    --gold2: #755611;
    --line: #c9c2b3;
    --surface-bg: transparent;
    --surface-recessed-bg: transparent;
    --surface-raised-bg: transparent;
    --surface-line: #c9c2b3;
    --surface-recessed-line: #c9c2b3;
    --surface-raised-line: #c9c2b3;
    --surface-raised-shadow: none;
  }
}

/* v1.73.0 (P2 punch list): respect prefers-reduced-motion — no smooth
   scrolling, transforms, or nonessential transitions for users who asked
   the OS to reduce motion. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  html { scroll-behavior: auto !important; }
}
