*,*::before,*::after { box-sizing:border-box; }
html { -webkit-text-size-adjust:100%; }
body {
  margin:0; background:var(--plane); color:var(--ink-1);
  font-family:var(--font-sans); font-size:15px; line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4 { margin:0; font-family:var(--font-display); font-weight:800; letter-spacing:-.01em; text-wrap:balance; }
h1 { font-size:clamp(30px,4.5vw,44px); line-height:1.08; }
h2 { font-size:26px; } h3 { font-size:18px; } h4 { font-size:15px; }
p { margin:0 0 var(--sp-4); }
a { color:var(--accent-ink); text-decoration:none; }
a:hover { text-decoration:underline; text-underline-offset:3px; }
:focus-visible { outline:none; box-shadow:var(--ring-focus); border-radius:var(--r-sm); }
img { max-width:100%; height:auto; }
code,pre,.mono { font-family:var(--font-mono); }
.serif { font-family:var(--font-display); }
.muted { color:var(--ink-3); }
.eyebrow { font-size:12px; font-weight:600; color:var(--accent-ink); }
.tabnum { font-variant-numeric:tabular-nums; }
/* layout */
.shell { width:100%; max-width:1140px; margin:0 auto; padding:0 var(--sp-6); }
.stack > * + * { margin-top:var(--sp-4); }
.section { padding:var(--sp-12) 0; }
.grid { display:grid; gap:var(--sp-4); }
.cols-2 { grid-template-columns:repeat(2,1fr); }
.cols-3 { grid-template-columns:repeat(3,1fr); }
.cols-4 { grid-template-columns:repeat(4,1fr); }
@media (max-width:880px){ .cols-3,.cols-4 { grid-template-columns:repeat(2,1fr); } }
@media (max-width:560px){ .cols-2,.cols-3,.cols-4 { grid-template-columns:1fr; } }
.scroll-x { overflow-x:auto; }
@media (prefers-reduced-motion:reduce){ *{ animation-duration:.001ms!important; transition-duration:.001ms!important; } }
