/* Fortified Networks — shared base tokens & reset
   Used by both option-1 and fortified-networks. Do not add build-specific values here. */

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  font-family: 'Inter', sans-serif;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
img, svg { display: block; max-width: 100%; }
a { text-decoration: none; color: inherit; }

:root {
  /* Shared brand constants — both options key off these, per-option tokens.css can override display/head sizing.
     One family, Inter, across heading, body and eyebrow/mono roles (weight is the
     only lever) — per the Fortified Networks Brand Book 2026 (Inter Bold for
     headings, Inter Light for sub-heads/body). Was Public Sans/Archivo before
     the brand book landed. */
  --font-display: 'Inter', sans-serif;
  --font-word: 'Inter', sans-serif;
  --font-body: 'Inter', sans-serif;
  --font-mono: 'Inter', sans-serif;

  --accent: #0082f3;
  --accent-deep: #0050bd;
  --cream: #ece9e4;
  --cream-soft: #f4f3ef;
  --ink: #010314;

  --ease-out: cubic-bezier(0.23, 1, 0.32, 1);
  --ease-in-out: cubic-bezier(0.77, 0, 0.175, 1);
  --ease-drawer: cubic-bezier(0.32, 0.72, 0, 1);
}

.sr-only {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 3px;
}
/* tabindex="-1" only ever gets applied by our own JS, right before a
   script-triggered .focus() -- e.g. toc.js moving focus to a section
   after an in-page jump, so screen-reader/keyboard users get the same
   "you're here now" context the scroll already gives sighted visitors.
   It's never in the real tab order (browsers skip negative tabindex on
   Tab), so nothing here is ever reached by actual keyboard tabbing --
   only by that scripted call. Mobile Safari draws the default outline
   for it anyway (confirmed on-device: a heavy blue box around the whole
   jumped-to section), which the desktop :focus-visible heuristic
   normally suppresses for script focus but Safari doesn't reliably.
   Suppressing it here is scoped to exactly that pattern and doesn't
   touch the ring on any real interactive element. */
[tabindex="-1"]:focus,
[tabindex="-1"]:focus-visible {
  outline: none;
}

/* Reduced motion is the resting state until JS confirms Lenis is running */
html:not(.motion-on) [data-chapter-pin] { position: static !important; height: auto !important; }
html:not(.motion-on) [data-reveal] { opacity: 1 !important; transform: none !important; filter: none !important; }
