*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--background);
  color:var(--foreground);
  font-family:var(--sans);
  font-size:16px;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
  transition:background var(--transition-medium),color var(--transition-medium);
}
img,svg{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
button{font-family:inherit;cursor:pointer;background:none;border:none;color:inherit;}
input,textarea,select{font-family:inherit;font-size:inherit;color:inherit;}
ul{list-style:none;margin:0;padding:0;}
h1,h2,h3,h4,p{margin:0;}

::selection{background:var(--accent);color:var(--background);}

:focus-visible{outline:2px solid var(--accent-rust);outline-offset:3px;}

.wrap{max-width:var(--content-width);margin:0 auto;padding:0 32px;}
.wrap-wide{max-width:var(--wide-width);margin:0 auto;padding:0 32px;}
.wrap-narrow{max-width:var(--narrow-width);margin:0 auto;padding:0 32px;}

@media (max-width:720px){
  .wrap,.wrap-wide,.wrap-narrow{padding:0 20px;}
}

section.section{padding:var(--section-gap) 0;}
section.section.tight{padding:calc(var(--section-gap) * .55) 0;}
section.section.dark{background:var(--foreground);color:var(--background);}
html.dark section.section.dark{background:#000;color:var(--foreground);}
section.section.surface{background:var(--surface);}

.rule{border:0;border-top:1px solid var(--border);margin:0;}
.rule-strong{border:0;border-top:1px solid var(--border-strong);}

/* ---------- Typography voices ---------- */

.editorial{
  font-family:var(--serif);
  font-weight:500;
  letter-spacing:-0.01em;
  line-height:1.04;
}
h1.editorial,.h1{font-size:clamp(2.6rem,6.4vw,5.6rem);}
h2.editorial,.h2{font-size:clamp(2rem,4.6vw,3.6rem);}
h3.editorial,.h3{font-size:clamp(1.4rem,2.6vw,2rem);}

.lede{
  font-family:var(--serif);
  font-size:clamp(1.05rem,1.6vw,1.35rem);
  line-height:1.5;
  color:var(--muted);
  max-width:640px;
}

.label{
  font-family:var(--mono);
  font-size:.72rem;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--muted);
}
.label.on-accent{color:var(--accent);}

.data{
  font-family:var(--mono);
}

.pull-quote{
  font-family:var(--serif);
  font-size:clamp(1.5rem,2.6vw,2.2rem);
  line-height:1.35;
  font-style:italic;
  max-width:760px;
}

.body-copy{font-size:1.02rem;max-width:640px;color:var(--foreground);}
.body-copy p + p{margin-top:1.1em;}

/* ---------- Buttons & links ---------- */

.btn{
  display:inline-flex;
  align-items:center;
  gap:10px;
  font-family:var(--mono);
  font-size:.78rem;
  letter-spacing:.08em;
  text-transform:uppercase;
  padding:15px 26px;
  border-radius:var(--radius-small);
  transition:all var(--transition-fast);
  white-space:nowrap;
}
.btn-primary{background:var(--foreground);color:var(--background);}
.btn-primary:hover{background:var(--accent-rust);color:#fff;}
html.dark .btn-primary{background:var(--foreground);color:var(--background);}
html.dark .btn-primary:hover{background:var(--accent-rust);color:#100E0A;}

.btn-ghost{border:1px solid var(--border-strong);color:var(--foreground);}
.btn-ghost:hover{border-color:var(--foreground);background:var(--accent-soft);}

.btn-block{width:100%;justify-content:center;}
.btn[disabled]{opacity:.4;cursor:not-allowed;pointer-events:none;}
.btn-sm{padding:10px 16px;font-size:.7rem;}

.link-arrow{
  display:inline-flex;
  align-items:center;
  gap:8px;
  font-family:var(--mono);
  font-size:.76rem;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--foreground);
  border-bottom:1px solid var(--border-strong);
  padding-bottom:4px;
  transition:all var(--transition-fast);
}
.link-arrow svg{width:13px;height:9px;transition:transform var(--transition-fast);}
.link-arrow:hover{color:var(--accent-rust);border-color:var(--accent-rust);}
.link-arrow:hover svg{transform:translateX(3px);}

/* ---------- Reveal-on-scroll ---------- */
.reveal{opacity:0;transform:translateY(14px);transition:opacity .6s ease, transform .6s ease;}
.reveal.is-visible{opacity:1;transform:none;}
@media (prefers-reduced-motion: reduce){
  .reveal{opacity:1;transform:none;}
}

/* ---------- Grids ---------- */
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:48px;}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:32px;}
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:28px;}
@media (max-width:960px){
  .grid-3{grid-template-columns:repeat(2,1fr);}
  .grid-4{grid-template-columns:repeat(2,1fr);}
}
@media (max-width:640px){
  .grid-2,.grid-3,.grid-4{grid-template-columns:1fr;}
}

.section-head{display:flex;justify-content:space-between;align-items:flex-end;gap:32px;margin-bottom:56px;}
@media (max-width:720px){.section-head{flex-direction:column;align-items:flex-start;gap:20px;}}

.two-col-asym{display:grid;grid-template-columns:1.1fr .9fr;gap:64px;align-items:center;}
@media (max-width:900px){.two-col-asym{grid-template-columns:1fr;gap:40px;}}

/* skip link */
.skip-link{position:absolute;left:-999px;top:0;background:var(--foreground);color:var(--background);padding:12px 20px;z-index:999;font-family:var(--mono);font-size:.8rem;}
.skip-link:focus{left:16px;top:16px;}
