/* ===== Hot Springs Australia — base: reset, tokens, type, utilities ===== */

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body,h1,h2,h3,h4,h5,p,figure,blockquote,ul,ol,dl,dd{margin:0}
ul[role="list"],ol[role="list"]{list-style:none;padding:0;margin:0}
img,picture,svg,video{display:block;max-width:100%;height:auto}
button,input,select,textarea{font:inherit;color:inherit}
a{color:inherit;text-decoration:none}
:focus-visible{outline:2px solid var(--olive);outline-offset:3px;border-radius:2px}

:root{
  /* palette (measured from reference) */
  --bone:#EFECE7;
  --bone-2:#E6E1D8;
  --paper:#FBFAF7;
  --olive:#514F13;
  --olive-ink:#31311D;
  --ink:#14140E;
  --cream:#F3EFE7;
  --line:rgba(81,79,19,.14);
  --olive-70:#6e6c3a;         /* muted olive text */
  --olive-55:#8a8963;
  --white:#ffffff;

  /* fonts */
  --serif:"Newsreader",Georgia,"Times New Roman",serif;
  --sans:"Archivo",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;

  /* radii */
  --r-card:16px;
  --r-pill:62px;
  --r-sm:10px;

  /* rhythm */
  --pad-top:clamp(84px,12vw,184px);
  --pad-top-sm:clamp(64px,9vw,120px);
  --gut:clamp(20px,5vw,48px);
  --maxw:1280px;

  --ease:cubic-bezier(.22,1,.36,1);
}

/* Lenis drives smooth scroll in JS; native smooth would double-ease and fight it
   (slow-then-rush). Keep native smooth only as the no-JS fallback for anchors. */
html{scroll-behavior:auto}
html:not(.js){scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html:not(.js){scroll-behavior:auto}}

body{
  background:var(--bone);
  color:var(--olive);
  font-family:var(--sans);
  font-size:18px;
  line-height:1.6;
  font-weight:400;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:clip;
}

/* ---- type ---- */
h1,h2,h3,h4{font-family:var(--serif);font-weight:300;letter-spacing:-.02em;line-height:1.05;color:var(--olive)}
h1 em,h2 em,h3 em,h4 em,.i{font-style:italic;font-weight:400}
.h-display{font-size:clamp(44px,9vw,120px);font-weight:300;letter-spacing:-.035em;line-height:1.02}
h2,.h2{font-size:clamp(34px,6vw,74px);line-height:1.04}
h3,.h3{font-size:clamp(28px,4.4vw,52px)}
h4,.h4{font-size:clamp(25px,3.2vw,42px);font-weight:400;letter-spacing:-.02em}
.lead{font-size:clamp(18px,2.2vw,22px);line-height:1.55}
p{color:var(--olive);font-size:clamp(15px,1.3vw,17px);line-height:1.62}
.muted{color:var(--olive-70)}
small,.small{font-size:14px}

.eyebrow{
  font-family:var(--sans);font-size:12px;font-weight:600;
  letter-spacing:.2em;text-transform:uppercase;color:var(--olive);
  display:inline-flex;align-items:center;gap:.6em;
}
.eyebrow::before{content:"";width:22px;height:1px;background:currentColor;opacity:.6}
.eyebrow.center::before{display:none}

/* ---- utilities ---- */
.container{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gut)}
.container.fluid{max-width:none;padding-inline:clamp(20px,4vw,64px)}
.section{padding-top:var(--pad-top);padding-bottom:var(--pad-top-sm)}
.section.tight{padding-top:var(--pad-top-sm)}
.center{text-align:center}
.mx-auto{margin-inline:auto}
.measure{max-width:56ch}
.measure-sm{max-width:44ch}
.stack-s>*+*{margin-top:.75rem}
.stack-m>*+*{margin-top:1.25rem}
.stack-l>*+*{margin-top:2rem}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.on-dark{color:var(--cream)}
.on-dark h1,.on-dark h2,.on-dark h3,.on-dark h4,.on-dark p,.on-dark .eyebrow{color:#fff}
.no-js .js-only{display:none}
