/* ==========================================================================
   Equal Vision — Design Tokens
   Product: Equal PDF from Equal Vision
   --------------------------------------------------------------------------
   Import this once at the top of the site build. Every color pair below is
   verified against WCAG 2.1. Because we sell accessibility, the identity is
   itself the proof point: do not introduce ad-hoc colors or focus styles that
   are not defined here.

   Contrast reference (foreground / background = ratio):
     Ink        #0A0A0A / Paper   #F7F7F5 = 18.46:1  (AAA)
     Ink        #0A0A0A / White   #FFFFFF = 19.80:1  (AAA)
     Ink        #0A0A0A / Archive #F4F2ED = 17.70:1  (AAA)
     Slate      #3A3A38 / Paper   #F7F7F5 = 10.63:1  (AAA)
     Muted      #5B6470 / White   #FFFFFF =  6.00:1  (AA normal / AAA large)
     Muted      #5B6470 / Paper   #F7F7F5 =  5.59:1  (AA normal)
     Verify     #1B4DB3 / White   #FFFFFF =  7.61:1  (AAA)
     Verify     #1B4DB3 / Paper   #F7F7F5 =  7.10:1  (AAA)
     White      #FFFFFF / Ink     #0A0A0A = 19.80:1  (AAA)  [dark hero text]
     Focus dark #7FA6FF / Ink     #0A0A0A =  8.30:1  (AAA)  [dark-surface focus/links]
   ========================================================================== */

:root {
  /* ---- Core palette --------------------------------------------------- */
  --ev-ink:            #0A0A0A; /* primary: mark tile, headlines, body text (near-black, not #000) */
  --ev-paper:          #F7F7F5; /* primary background: warm off-white, document-like */
  --ev-white:          #FFFFFF; /* card/surface fill; reversed mark tile on dark sections */
  --ev-slate:          #3A3A38; /* secondary type: "Vision" half of wordmark, sub-headings */
  --ev-muted:          #5B6470; /* metadata, captions, footnotes, disabled — AA floor */
  --ev-archive-paper:  #F4F2ED; /* warm section-band / table-zebra neutral ("filing cabinet") */

  /* ---- Accent (single, restrained institutional blue) ----------------- */
  --ev-verify:         #1B4DB3; /* links, primary CTA, focus ring on LIGHT surfaces (7.61:1 AAA) */
  --ev-verify-dark:    #7FA6FF; /* links + focus ring on DARK surfaces (8.30:1 AAA on ink) */

  /* ---- Semantic aliases (use these in components) --------------------- */
  --ev-bg:             var(--ev-paper);
  --ev-bg-surface:     var(--ev-white);
  --ev-bg-band:        var(--ev-archive-paper);
  --ev-bg-inverse:     var(--ev-ink);      /* Palantir-style dark hero / footer */
  --ev-text:           var(--ev-ink);
  --ev-text-secondary: var(--ev-slate);
  --ev-text-muted:     var(--ev-muted);
  --ev-text-inverse:   var(--ev-white);
  --ev-border:         #D9D9D4;            /* hairline rules on light (Ink alpha-equivalent) */
  --ev-border-strong:  var(--ev-ink);
  --ev-link:           var(--ev-verify);
  --ev-link-inverse:   var(--ev-verify-dark);
  --ev-cta-bg:         var(--ev-ink);
  --ev-cta-text:       var(--ev-white);

  /* ---- Focus ring (accessible, never removed) ------------------------- */
  --ev-focus:          var(--ev-verify);      /* 2px ring on light surfaces */
  --ev-focus-inverse:  var(--ev-verify-dark); /* 2px ring on dark surfaces */
  --ev-focus-width:    2px;
  --ev-focus-offset:   2px;
  /* Apply as: outline: var(--ev-focus-width) solid var(--ev-focus);
               outline-offset: var(--ev-focus-offset);  (never outline:none) */

  /* ---- Type: font-family stacks --------------------------------------- */
  /* Libre Franklin (Google Fonts / self-host) = display + body/UI voice.
     Georgia = optional serif for long-form compliance/legal copy.
     Websafe fallbacks are metric-friendly so the page renders identically
     on locked-down institutional machines even if the webfont fails. */
  --ev-font-display: 'Libre Franklin', 'Helvetica Neue', Arial, sans-serif;
  --ev-font-body:    'Libre Franklin', 'Helvetica Neue', Arial, sans-serif;
  --ev-font-legal:   Georgia, 'Times New Roman', serif;
  --ev-font-mono:    'IBM Plex Mono', 'SFMono-Regular', Menlo, Consolas, monospace;

  /* ---- Type: weights -------------------------------------------------- */
  --ev-weight-regular: 400;
  --ev-weight-medium:  500;
  --ev-weight-semi:    600;
  --ev-weight-bold:    700;

  /* ---- Type scale (1.250 major-third; body never below 16px) ---------- */
  --ev-fs-caption: 0.875rem;  /* 14px — captions/meta only; pair with --ev-muted */
  --ev-fs-body:    1rem;      /* 16px — body floor */
  --ev-fs-body-lg: 1.125rem;  /* 18px — lead paragraphs */
  --ev-fs-h5:      1.25rem;   /* 20px */
  --ev-fs-h4:      1.5625rem; /* 25px */
  --ev-fs-h3:      1.953rem;  /* 31px */
  --ev-fs-h2:      2.441rem;  /* 39px */
  --ev-fs-h1:      3.052rem;  /* 49px */
  --ev-fs-display: 3.815rem;  /* 61px — hero proposition */

  /* ---- Line height & tracking ----------------------------------------- */
  --ev-lh-tight:   1.15;   /* display / headings */
  --ev-lh-snug:    1.35;   /* sub-heads */
  --ev-lh-body:    1.6;    /* body copy — generous for legibility */
  --ev-tracking-tight:  -0.02em; /* display / wordmark */
  --ev-tracking-normal:  0;

  /* ---- Spacing (4px base, 8pt-friendly) ------------------------------- */
  --ev-space-0:  0;
  --ev-space-1:  0.25rem;  /* 4  */
  --ev-space-2:  0.5rem;   /* 8  */
  --ev-space-3:  0.75rem;  /* 12 */
  --ev-space-4:  1rem;     /* 16 */
  --ev-space-5:  1.5rem;   /* 24 */
  --ev-space-6:  2rem;     /* 32 */
  --ev-space-7:  3rem;     /* 48 */
  --ev-space-8:  4rem;     /* 64 */
  --ev-space-9:  6rem;     /* 96 — section rhythm */
  --ev-space-10: 8rem;     /* 128 */

  /* ---- Radii (restrained; echoes the mark's 9px tile corner) ---------- */
  --ev-radius-sm:   4px;
  --ev-radius-md:   8px;
  --ev-radius-lg:   12px;
  --ev-radius-tile: 9px;   /* matches the logo tile corner */
  --ev-radius-full: 999px;

  /* ---- Layout & misc -------------------------------------------------- */
  --ev-maxwidth-prose: 68ch;   /* readable measure for long-form copy */
  --ev-maxwidth-page:  1200px;
  --ev-border-hairline: 1px;
  --ev-duration-fast:   150ms;
  --ev-duration-base:   240ms;
  --ev-duration-reveal: 500ms;
  --ev-ease:            cubic-bezier(0.2, 0, 0, 1);
}

/* Honor the accessibility contract we sell: collapse motion to final state. */
@media (prefers-reduced-motion: reduce) {
  :root {
    --ev-duration-fast:   0ms;
    --ev-duration-base:   0ms;
    --ev-duration-reveal: 0ms;
  }
}
