/* =============================================================
   Base — reset, typography, utilities
   ============================================================= */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  margin:0;
  font-family:var(--font-sans);
  font-size:var(--fs-base);
  line-height:1.65;
  color:var(--text-primary);
  background:var(--bg-canvas);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img,svg,video{display:block;max-width:100%;height:auto}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer;padding:0}
a{color:inherit;text-decoration:none;transition:color var(--dur-fast) var(--ease-out)}
ul,ol{margin:0;padding:0;list-style:none}
h1,h2,h3,h4,h5,h6{margin:0;font-weight:400;letter-spacing:-.015em}
p{margin:0}
hr{border:none;border-top:1px solid var(--border-default);margin:0}
::selection{background:var(--brand-primary);color:#fff}

/* Typography hierarchy */
.t-display{
  font-family:var(--font-en);
  font-weight:600;
  font-style:normal;
  line-height:.95;
  letter-spacing:-.03em;
  font-size:clamp(3rem,8vw,var(--fs-7xl));
  color:var(--text-primary);
}
.t-headline{
  font-family:var(--font-en);
  font-weight:600;
  font-style:normal;
  line-height:1.05;
  letter-spacing:-.02em;
  font-size:clamp(2.25rem,5vw,var(--fs-5xl));
  color:var(--text-primary);
}
.t-title{
  font-family:var(--font-en);
  font-weight:500;
  font-style:normal;
  line-height:1.15;
  font-size:clamp(1.75rem,3.2vw,var(--fs-3xl));
}
.t-eyebrow,.edge-label{
  font-family:var(--font-mono);
  font-size:var(--fs-2xs);
  font-weight:500;
  text-transform:uppercase;
  letter-spacing:.32em;
  color:var(--brand-primary);
  line-height:1;
}
.t-body{
  font-size:var(--fs-lg);
  line-height:1.75;
  color:var(--text-secondary);
  font-weight:300;
}
.t-body-sm{
  font-size:var(--fs-sm);
  line-height:1.7;
  color:var(--text-muted);
}
.t-lead{
  font-family:var(--font-jp);
  font-style:normal;
  font-weight:400;
  font-size:clamp(1.25rem,2vw,var(--fs-2xl));
  line-height:1.55;
  color:var(--text-secondary);
}
.mono{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.18em;text-transform:uppercase}

/* Layout helpers */
.container{
  width:100%;
  max-width:var(--container-max);
  margin-inline:auto;
  padding-inline:clamp(1.25rem,4vw,3rem);
}
.container-wide{max-width:var(--container-wide)}
.container-text{max-width:var(--container-text)}

.section{padding-block:clamp(5rem,10vw,var(--sp-40))}
.section--alt{background:var(--bg-surface-alt)}
.section--inverse{background:var(--glv-indigo-600);color:var(--text-inverse)}
.section--inverse .t-display,
.section--inverse .t-headline,
.section--inverse .t-title{color:#fff}
.section--inverse .t-body,
.section--inverse .t-body-sm,
.section--inverse .t-lead{color:rgba(255,255,255,.78)}
.section--inverse .edge-label{color:var(--brand-secondary)}

.grid{display:grid;gap:var(--sp-8)}
.flex{display:flex}
.hidden{display:none}
.is-invisible{visibility:hidden}

.divider{height:1px;background:var(--border-default);width:100%}

/* Reveal-on-scroll (JS adds .is-visible) */
.reveal{
  opacity:0;
  transform:translateY(28px);
  transition:opacity .9s var(--ease-studio),transform .9s var(--ease-studio);
}
.reveal.is-visible{opacity:1;transform:none}
.reveal--d1{transition-delay:.08s}
.reveal--d2{transition-delay:.16s}
.reveal--d3{transition-delay:.24s}
.reveal--d4{transition-delay:.32s}

/* Accessibility */
.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}
:focus-visible{outline:2px solid var(--glv-indigo-400);outline-offset:3px;border-radius:2px}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
  .reveal{opacity:1;transform:none}
}
