/* ===========================================================================
   base.css — design tokens, reset, base elements, utilities, reveal animation
   =========================================================================== */

:root{
  --bone:#F4F1EA; --bone-2:#EFEBE2; --sand:#E4DED2;
  --espresso:#1A1714; --ink:#2A2620; --muted:#6E6456;
  --line:rgba(26,23,20,0.12); --line-2:rgba(26,23,20,0.20);
  --terracotta:#C0563B; --terracotta-deep:#A2452E;
  --display:"Fraunces",Georgia,serif; --body:"Hanken Grotesk",sans-serif; --mono:"JetBrains Mono",ui-monospace,monospace;
  --pad:clamp(1.25rem,5vw,5rem);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none}  /* hide scrollbar, keep scrolling (Firefox / legacy Edge) */
body{background:var(--bone);color:var(--ink);font-family:var(--body);font-size:clamp(1rem,1.05vw,1.125rem);line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden;scrollbar-width:none}
/* hide scrollbars site-wide (Chrome / Safari / Brave / Edge) */
html::-webkit-scrollbar,body::-webkit-scrollbar,*::-webkit-scrollbar{width:0;height:0;display:none}
body::before{content:"";position:fixed;inset:0;z-index:1;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E");mix-blend-mode:multiply;opacity:0.04}
a{color:inherit;text-decoration:none}
::selection{background:var(--terracotta);color:var(--bone)}
:focus-visible{outline:2px solid var(--terracotta);outline-offset:3px;border-radius:2px}
.mono{font-family:var(--mono);font-size:0.72rem;letter-spacing:0.08em;text-transform:uppercase;color:var(--muted)}
.wrap{max-width:1280px;margin:0 auto;padding-left:var(--pad);padding-right:var(--pad)}

/* reveal (load-stagger rules live in preloader.css so they fire as the
   intro curtain lifts) */
.reveal{opacity:0;transform:translateY(22px);filter:blur(5px)}
@media (prefers-reduced-motion:no-preference){
  .reveal{transition:opacity .85s cubic-bezier(.2,.7,.2,1),transform .85s cubic-bezier(.2,.7,.2,1),filter .85s ease}
  .reveal.in{opacity:1;transform:none;filter:blur(0)}
}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;filter:none}}
@keyframes rise{to{opacity:1;transform:none}}
