/* ============================================================
   Tokens + reset. Loaded on the front end AND inside the editor
   iframe (enqueue_block_assets), so the canvas matches the site.

   --od-page-margin is here rather than in theme.json because it
   needs a media query, which theme.json cannot express.
   ============================================================ */
:root {
  --od-page-margin: 64px;
  --od-section-gap: 160px;
  --od-gutter: 24px;
  --od-transition: 120ms ease-out;
  --od-hairline: 1px solid var(--wp--preset--color--black, #000);
  --od-hairline-soft: 1px solid var(--wp--preset--color--outline-variant, #cfc4c5);
}

@media (max-width: 900px) {
  :root {
    --od-page-margin: 20px;
    --od-section-gap: 80px;
  }
}

html { scroll-behavior: smooth; }

/* The sticky header must never cover an anchor target. */
:target { scroll-margin-top: 96px; }

img { max-width: 100%; height: auto; }

/* DESIGN.md: strictly sharp. The two legitimate circles opt back in
   by class, never by the radius control. */
.wp-block-button__link,
.wp-block-image img,
input,
textarea,
select { border-radius: 0; }

.is-style-rounded img,
.od-round { border-radius: 50%; }

/* Hard cuts, per the design system. */
a, .wp-block-button__link {
  transition: color var(--od-transition), background-color var(--od-transition), border-color var(--od-transition);
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
  }
}

/* Focus: visible everywhere, never removed. */
:where(a, button, input, select, textarea, [tabindex]):focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 3px;
}

/* Museum-plaque metadata. */
.od-label {
  font-size: var(--wp--preset--font-size--label, 12px);
  font-weight: 500;
  line-height: 1;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
