/* Minimal modern reset */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }

/* Smooth same-page scrolling for every anchor jump — nav links, the
   status/vacation pills, footer links, the logo's #top link, all of it.
   `scroll-behavior` applies to the browser's native anchor-jump handling
   symmetrically in both directions, so this also covers scrolling back
   up to an earlier section, not just forward. Gated behind
   prefers-reduced-motion so people who've asked their OS for less motion
   still get an instant jump instead of an animated scroll. */
@media (prefers-reduced-motion: no-preference) {
  html {
    scroll-behavior: smooth;
  }
}
body { -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
img, svg, video { display: block; max-width: 100%; }
h1, h2, h3, h4, p, figure { margin: 0; }
ul, ol { margin: 0; padding: 0; list-style: none; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; background: none; border: none; padding: 0; }
input, select, textarea { border: none; }
:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; }

/* Make the `hidden` attribute/property always actually hide things.
   Without this, any element whose own class sets `display` (flex, grid,
   inline-flex, ...) silently overrides the browser's default
   `[hidden] { display: none }` — author-stylesheet rules beat the
   user-agent stylesheet regardless of selector specificity, so e.g.
   `.vacation-pill { display: flex }` wins over `[hidden]` even though
   `[hidden]` "looks" more specific. `!important` here is deliberate and
   the right tool for exactly this: it's restoring a baseline platform
   guarantee (an element marked hidden via .hidden/[hidden] must not
   render) against being silently undone by unrelated component CSS,
   the same job !important does in most CSS resets. This one rule
   replaces having to remember a `.my-component[hidden] { display: none }`
   override every single time something togglable gets its own display
   value — a mistake already made twice before this rule existed (menu
   item filtering, the catering form's status message) and a third time
   without it (the vacation notices, see openspec/changes/archive/2026-09-17-vacation-visibility/
   "Post-ship" log) before it was generalized here. */
[hidden] {
  display: none !important;
}
