/* base.css */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html{font-size:16px;scroll-behavior:smooth;}
body{font-family:var(--sans);background:var(--bg);color:var(--ink);line-height:1.6;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  overflow-x:hidden;transition:background .25s,color .25s;}
img{display:block;max-width:100%;}
a{text-decoration:none;color:inherit;}
button{border:none;background:none;font-family:inherit;cursor:pointer;}
ul{list-style:none;}
svg{display:block;}

/* Typography */
.t-display{font-family:var(--serif);font-weight:700;letter-spacing:-.04em;line-height:.95;}
.t-hero{font-size:clamp(60px,10vw,148px);}
.t-xl{font-size:clamp(32px,5vw,60px);letter-spacing:-.03em;line-height:1.02;}
.t-lg{font-size:clamp(24px,3.5vw,40px);letter-spacing:-.025em;line-height:1.08;}
.t-md{font-size:clamp(18px,2.5vw,26px);letter-spacing:-.02em;}
.t-body{font-size:clamp(.88rem,1.1vw,.975rem);line-height:1.78;color:var(--ink-2);}
.t-sm{font-size:.8rem;color:var(--ink-3);}
.t-label{font-size:.68rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);}
.t-red{color:var(--red);}
.t-italic{font-style:italic;}

/* Layout */
.container{max-width:var(--max);margin:0 auto;padding:0 var(--pad);}
.page-pt{padding-top:var(--nav-h);}
.section{padding:clamp(4rem,7vw,7rem) 0;}

/* Reveal animation */
.reveal{opacity:0;transform:translateY(22px);transition:opacity .65s ease,transform .65s ease;}
.reveal.in{opacity:1;transform:none;}

/* Utility */
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);}
.divider{width:100%;height:1px;background:var(--border);}
.nowrap{white-space:nowrap;}
