/* Global base layer. Loaded by every page, splash and site alike.
   Rules here were lifted verbatim out of app.css when it was split into
   base / components / splash, so the splash renders unchanged. */

* { box-sizing: border-box; }
html, body { margin: 0; height: 100%; background: var(--paper-50); font-family: var(--font-sans); }
a { color: var(--text-link); text-decoration: none; }
/* Two things are load-bearing here: excluding buttons, and :where().

   Excluding buttons, because most of them are anchors and `a:hover` (0,1,1)
   outranks `.btn` (0,1,0) — so an unscoped rule repainted every button's label
   to --text-link-hover, which is navy-900. On the navy primary that is navy
   text on a navy fill. That was issue #73: the buttons were not styled wrong,
   they were being overridden by the base layer.

   :where(), because the obvious spelling — a:not(.btn):hover — does NOT have
   the same specificity. :not() contributes its argument's weight, taking the
   rule to (0,2,1), which then beats .foot__link:hover (0,2,0) and every other
   component hover on a navy surface. The footer's "Firm" links turned navy on
   hover for exactly that reason. :where() matches identically but contributes
   zero, holding the rule at (0,1,1) — the weight it had before any of this.

   So: a component owns its own colors in every state, and this base rule stays
   weak enough to lose to any of them. */
a:where(:not(.btn)):hover { color: var(--text-link-hover); }

[hidden] { display: none !important; }

/* Focus is always visible — the design system treats this as non-negotiable
   rather than a default that pages may override. */
*:focus-visible { outline: 2px solid var(--blue-700); outline-offset: 2px; border-radius: 2px; }

/* The design system's motion standard is fades and small translations only.
   Under reduced-motion everything collapses rather than merely shortening. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
}

/* Sends keyboard users past the header without tabbing the whole nav.
   Visually hidden until focused. */
.skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 100;
  padding: 12px 20px;
  background: var(--navy-900);
  color: var(--paper-50);
  font: 600 14px var(--font-sans);
  border-radius: 0 0 var(--radius-sm) 0;
}
.skip-link:focus {
  left: 0;
  color: var(--paper-50);
}
