*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
body{
  margin:0;
  background:var(--dark);
  color:var(--ink);
  font-family:var(--f-body);
  font-size:var(--t-body);
  line-height:1.55;
  overflow-x:hidden;
}
h1,h2,h3,h4,p,figure,ul,ol{ margin:0; padding:0; }
ul,ol{ list-style:none; }
img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
mark{ background:none; color:inherit; }

.svg-defs{ position:absolute; width:0; height:0; overflow:hidden; }

/* visually hidden but readable by screen readers / crawlers */
.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;
}

.wrap{
  max-width:var(--maxw);
  margin-inline:auto;
  padding:var(--pad-y) var(--pad-x);
  position:relative;
  z-index:2;
}

/* ── reveal on scroll ── */
[data-reveal]{
  opacity:0;
  transform:translateY(26px);
  transition:opacity var(--dur) var(--ease), transform var(--dur) var(--ease);
}
[data-reveal].is-in{ opacity:1; transform:none; }

@media (prefers-reduced-motion: reduce){
  [data-reveal]{ opacity:1; transform:none; }
}

::selection{ background:var(--hl); color:var(--ink); }
