/* Fonts are loaded via Google Fonts <link> in each page's <head>:
   Fraunces (display, optical), Hanken Grotesk (body), Space Mono (labels). */

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:clamp(72px,9vw,110px);}
body{
  font-family:var(--font-body);
  font-size:var(--fs-body);
  font-weight:400;
  line-height:1.55;
  color:var(--ink);
  background:var(--paper);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:clip;
}

/* subtle paper grain */
body::before{
  content:"";position:fixed;inset:0;z-index:1;pointer-events:none;opacity:.2;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.5'/%3E%3C/svg%3E");
  mix-blend-mode:multiply;
}

img{max-width:100%;height:auto;display:block;}
a{color:inherit;text-decoration:none;}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;}

h1,h2,h3,h4{
  font-family:var(--font-display);
  font-weight:340;
  line-height:.98;
  letter-spacing:-.015em;
  font-optical-sizing:auto;
}
h1 em,h2 em,h3 em{font-style:italic;font-weight:340;}
p{max-width:60ch;}

/* ---- Layout primitives ---- */
.wrap{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter);}
.grid12{display:grid;grid-template-columns:repeat(12,1fr);column-gap:var(--gutter);}
.section{padding-block:var(--section-y);position:relative;}
.rule{border:0;border-top:1px solid var(--line);}
.rule--ink{border:0;border-top:1px solid var(--line-strong);}

/* editorial devices */
.kicker{
  font-family:var(--font-mono);
  font-size:var(--fs-mono);
  letter-spacing:.28em;
  text-transform:uppercase;
  color:var(--oxblood);
  font-weight:400;
  display:inline-flex;align-items:center;gap:.6em;
}
.kicker--ink{color:var(--ink-2);}
.mono{font-family:var(--font-mono);font-size:var(--fs-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);}
.idx{font-family:var(--font-mono);font-size:.8rem;letter-spacing:.1em;color:var(--oxblood);}
.lead{font-family:var(--font-display);font-weight:330;font-size:var(--fs-lead);line-height:1.15;letter-spacing:-.01em;color:var(--ink);max-width:24ch;}
.serif{font-family:var(--font-display);}
.oxblood{color:var(--oxblood);}

.stroke{color:transparent;-webkit-text-stroke:1px var(--ink);}

:focus-visible{outline:2px solid var(--oxblood);outline-offset:4px;}

/* keep interactive content above grain */
header,main,footer{position:relative;z-index:2;}

::selection{background:var(--oxblood);color:var(--paper);}
