/* tokens.css — the SHARED layer, linked by every route.
 *
 * Deliberately plain: custom properties and a reset, and not one modern technique.
 * technique-floor.mjs excludes any stylesheet linked by every direction from that direction's
 * authored cell, so anything clever in here would be invisible to the archive AND would still
 * count toward the floor — which would let a direction score 5/5 on work it did not do.
 * Every technique on this build is authored in a direction's own sheet. That is the point.
 *
 * Brand values are sampled, not chosen: build/docs/design-system.md carries the method.
 */

:root {
  /* --- brand signal colours. brand-fidelity.mjs requires BOTH to survive into every direction. */
  --brand-blue: #034d88;
  --brand-orange: #f07422;

  /* --- spacing scale. Declared once here so no direction types a padding literal.
         Tier 0 of site-baseline.md; baseline.mjs measures the drift. */
  --s-1: 0.25rem;
  --s-2: 0.5rem;
  --s-3: 0.75rem;
  --s-4: 1rem;
  --s-5: 1.5rem;
  --s-6: 2rem;
  --s-7: 3rem;
  --s-8: 4rem;
  --s-9: 6rem;
  --s-10: 8rem;
  --s-11: 12rem;

  /* --- radius scale */
  --r-0: 0px;
  --r-1: 2px;
  --r-2: 4px;
  --r-3: 8px;
  --r-4: 16px;
  --r-full: 999px;

  /* --- durations. Directions pick from these; nobody types a millisecond. */
  --t-fast: 140ms;
  --t-base: 240ms;
  --t-slow: 420ms;
  --t-long: 900ms;

  /* --- measure */
  --measure: 68ch;
  --measure-tight: 46ch;

  /* --- the page gutter, one value so a direction's bands share an outer edge */
  --gutter: clamp(1.25rem, 5vw, 5rem);
}

*, *::before, *::after { box-sizing: border-box; }

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

body {
  margin: 0;
  min-height: 100vh;
  overflow-x: hidden;
}

img, video, svg { max-width: 100%; height: auto; display: block; }

button, input, select, textarea { font: inherit; color: inherit; }

h1, h2, h3, h4, h5, h6, p, figure, blockquote, dl, dd { margin: 0; }

ul[class], ol[class] { list-style: none; margin: 0; padding: 0; }

a { color: inherit; }

/* The skip link is chrome every route needs and no direction should re-solve.
   It is visually hidden until focused, and it must be visible against whatever
   ground the direction paints, so each direction sets --skip-ink / --skip-ground. */
.skip-link {
  position: absolute;
  left: var(--s-4);
  top: var(--s-4);
  z-index: 999;
  padding: var(--s-3) var(--s-5);
  background: var(--skip-ground, #fff);
  color: var(--skip-ink, #000);
  border-radius: var(--r-2);
  transform: translateY(-200%);
}
.skip-link:focus { transform: translateY(0); }

/* A single reduced-motion stance for the shared layer only. Directions declare their OWN
   reduced-motion behaviour beside each animation they author — a blanket `animation: none`
   in a shared file kills entrance animations that leave content invisible, which is the
   defect v18 banked (to-bank/defect-tokens-css-ships-the-blanket-reduced-motion-kill.md). */
@media (prefers-reduced-motion: reduce) {
  .skip-link { transition: none; }
}
