/* BASE — lifted from the site's css/base.css (reset, elements, reduced-motion gate).
   Utility classes here are the four the system actually uses; everything else is a component. */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--s)*24)}
body{margin:0;background:var(--surface-page);color:var(--text-primary);font-family:var(--font-sans);font-size:var(--text-body);line-height:var(--text-body--line-height);font-weight:var(--weight-regular);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
h1,h2,h3,h4{margin:0;color:var(--text-primary);text-wrap:balance}
p,li,figcaption,td{text-wrap:pretty}
p{margin:0}
img,svg{display:block;max-width:100%}
a{color:var(--text-link)}
a:hover{color:var(--text-link-hover)}
code{font-family:inherit;font-size:.94em;font-weight:var(--weight-medium);background:var(--border-rule);padding:.05em .35em;border-radius:var(--radius-sm);color:var(--text-primary);white-space:nowrap}
.num{font-variant-numeric:tabular-nums}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px;border-radius:var(--radius-sm)}
.skip-link{position:absolute;left:var(--spacing-gutter);top:calc(var(--s)*-20);z-index:100;background:var(--interactive);color:var(--text-on-dark);padding:calc(var(--s)*3) calc(var(--s)*5);border-radius:var(--radius);font-weight:var(--weight-medium);font-size:var(--text-sm);text-decoration:none;transition:top var(--duration-fast) var(--ease-brand)}
.skip-link:focus{top:calc(var(--s)*3)}
.container{width:100%;max-width:var(--container-max);margin-inline:auto;padding-inline:var(--spacing-gutter)}
/* Scroll reveal — only armed when JS runs (html.js), so content never depends on motion */
.js .reveal{opacity:0;transform:translateY(12px);transition:opacity var(--duration-slow) var(--ease-brand),transform var(--duration-slow) var(--ease-brand);transition-delay:calc(var(--i,0) * 60ms)}
.js .reveal.is-in{opacity:1;transform:none}
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;scroll-behavior:auto !important}
  html{scroll-behavior:auto}
  .reveal,.js .reveal{opacity:1;transform:none}
}
