/* ============================================================
   Audri marketing site — base layer
   ============================================================
   Loaded by the marketing pages (index.html) on top of tokens.css.
   tokens.css owns the palette + the `* { box-sizing; margin; padding }`
   reset and is the single source of truth shared with the legal pages;
   this file only adds the typeface (self-hosted @font-face below) +
   document defaults.

   Fonts are SELF-HOSTED (assets/fonts/*.woff2), not loaded from Google
   Fonts. Both faces are variable woff2 (one file spans the whole weight
   range), latin subset only — matching the glyphs the marketing copy
   uses. index.html <head> additionally <link rel="preload">s the sans
   file so the browser fetches it before this stylesheet finishes
   parsing (shortens the critical chain → better LCP/FCP). Self-hosting
   also lets _headers drop the Google font origins from the CSP and
   removes the third-party DNS/TLS hop + privacy leak.

   Theme: tokens.css is data-theme based (mirrors the backend). The
   pages set data-theme on <html> via a tiny inline script that reads
   localStorage / prefers-color-scheme — same contract as the app, so
   the legal pages' [data-theme="dark"] rules work too.
   ============================================================ */

/* Hanken Grotesk — variable (wght 400–800), latin subset. One file
   covers every weight the site uses; `font-weight: 400 800` advertises
   that range so the browser synthesises nothing. */
@font-face {
  font-family: "Hanken Grotesk";
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url("../assets/fonts/hanken-grotesk-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* IBM Plex Mono — 400 only (used for the small 01/02/03 step numerals). */
@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../assets/fonts/ibm-plex-mono-latin-400.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ── Dark-mode token correction (marketing page only) ──────────
   The landing page uses `--gradient-primary` (the deep blue
   blue-500→blue-700) as a SOLID fill behind on-primary text — the
   hero/nav CTAs, the chat bubble, the "average doctor consult…"
   statement band, and the Send-message button. That gradient does
   NOT change in dark mode (it stays blue), but tokens.css flips
   `--text-on-primary` to near-black `#06121f` in dark mode — an
   app-specific value meant for the app's LIGHT-blue dark-mode
   buttons, a pattern this page never uses. The result was black
   text on a blue gradient (failing contrast). Pin it back to white
   here; scoped to base.css so it only affects index.html and leaves
   tokens.css a faithful mirror of the app. */
[data-theme="dark"] {
  --text-on-primary: #ffffff;
}

html {
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  font-family: var(--font-sans);
  font-size: 1rem;
  line-height: 1.62;
  color: var(--text-primary);
  background: var(--bg-primary);
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  font-feature-settings: "kern", "liga", "calt";
}

h1,
h2,
h3,
h4,
h5,
h6 {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 700;
  line-height: 1.3;
  letter-spacing: -0.01em;
  color: var(--text-primary);
}

p {
  margin: 0;
}

a {
  color: var(--color-primary);
  text-decoration: none;
}

:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
}

::selection {
  background: var(--color-primary-bg);
}

code,
kbd,
samp,
pre {
  font-family: var(--font-mono);
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
}
