/* ============================================================
   structure.css — theme-neutral chrome.

   Rules here survive any theme swap. Themes layer on color,
   typography, decoration; this file owns layout primitives,
   resets, and accessibility baselines.

   Touch this file when a rule applies to every theme. If a rule
   makes sense for Stoa but not chess-bulletin, it belongs in the
   theme's CSS, not here.

   See docs/THEMING.md for the contract between this file and
   per-theme stylesheets.
   ============================================================ */

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

html, body {
  margin: 0;
  padding: 0;
}

body {
  min-height: 100vh;
}

/* Reduce motion on request — every theme's animations should
   defer to this. Themes that violate it are broken themes. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
  }
}
