/* ============================================================
   Impact Unfiltered — Summit design system
   Brand tokens lifted from impactunfiltered.org (Webflow export):
   primary #15d5fe · primary-dark #0a0f12 · primary-light #cbf6ff
   blue-gray-dark #141a20 · blue-gray #28313a
   Montserrat 600 headings · Lato body
   ============================================================ */
:root{
  --primary:#15d5fe;
  --primary-light:#cbf6ff;
  --primary-dark:#0a0f12;
  --blue-gray-dark:#141a20;
  --blue-gray:#28313a;

  --bg:var(--primary-dark);
  --surface:var(--blue-gray-dark);
  --surface-2:#1b232b;
  --line:rgba(255,255,255,.10);
  --line-strong:rgba(255,255,255,.20);

  --ink:#ffffff;
  --ink-2:#d3dae0;      /* 13.6:1 on bg */
  --ink-3:#9aa6b1;      /*  7.8:1 on bg */

  --measure:68ch;
  --gutter:clamp(1.25rem,5vw,4.5rem);
  --shell:1240px;

  /* Floors are set for a 360px phone, not a 768px tablet — the small end is
     where oversized display type turns every heading into four ragged lines. */
  --step--1:clamp(.8125rem,.78rem + .16vw,.875rem);
  --step-0:clamp(1rem,.96rem + .2vw,1.0625rem);
  --step-1:clamp(1.125rem,1.03rem + .42vw,1.5rem);
  --step-2:clamp(1.375rem,1.2rem + .78vw,2.125rem);
  --step-3:clamp(1.625rem,1.32rem + 1.36vw,3rem);
  --step-4:clamp(2rem,1.42rem + 2.6vw,4.25rem);
  --step-5:clamp(2.125rem,1.44rem + 3.05vw,4.75rem);

  --ease:cubic-bezier(.16,1,.3,1);
  --z-nav:200;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

body{
  margin:0;
  background:var(--bg);
  color:var(--ink-2);
  font-family:Lato,system-ui,sans-serif;
  font-size:var(--step-0);
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
h1,h2,h3,h4{
  font-family:Montserrat,system-ui,sans-serif;
  font-weight:600;line-height:1.1;letter-spacing:-.02em;
  color:var(--ink);margin:0;text-wrap:balance;
}
p{margin:0;text-wrap:pretty}
a{color:var(--primary);text-decoration:none;transition:color .35s var(--ease)}
a:hover{color:var(--primary-light)}
img{max-width:100%;display:block}
ul,ol{margin:0;padding:0;list-style:none}
:focus-visible{outline:2px solid var(--primary);outline-offset:3px;border-radius:2px}

/* Anchored targets must clear the fixed nav, or every in-page link lands with
   the heading tucked underneath it. */
section[id],header[id],div[id]{scroll-margin-top:5.5rem}

.shell{width:min(100% - var(--gutter)*2,var(--shell));margin-inline:auto}
.shell--narrow{width:min(100% - var(--gutter)*2,840px);margin-inline:auto}
.section{padding-block:clamp(4.5rem,10vw,9rem)}
.section--tight{padding-block:clamp(3.5rem,7vw,6rem)}
.surface{background:var(--surface)}

.skip{position:absolute;left:-9999px;top:0;z-index:999;background:var(--primary);color:#04181f;padding:.75rem 1.25rem;font-family:Montserrat,sans-serif;font-weight:600}
.skip:focus{left:1rem;top:1rem}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.6rem;
  font-family:Montserrat,sans-serif;font-weight:600;font-size:.9375rem;letter-spacing:.01em;
  padding:1.0625rem 1.9rem;border-radius:2px;border:1px solid transparent;cursor:pointer;
  transition:background-color .35s var(--ease),color .35s var(--ease),
    border-color .35s var(--ease),transform .35s var(--ease),box-shadow .35s var(--ease);
}
.btn-primary{background:var(--primary);color:#04181f}
.btn-primary:hover{background:var(--primary-light);color:#04181f;transform:translateY(-2px);box-shadow:0 14px 38px -14px rgba(21,213,254,.8)}
.btn-ghost{border-color:var(--line-strong);color:var(--ink)}
.btn-ghost:hover{border-color:var(--primary);color:var(--primary);transform:translateY(-2px)}
.btn-dark{background:#04181f;color:var(--primary)}
.btn-dark:hover{background:#0a2630;color:var(--primary-light);transform:translateY(-2px)}

/* ---------- nav ---------- */
.nav{
  position:fixed;inset:0 0 auto 0;z-index:var(--z-nav);
  display:flex;align-items:center;gap:1.25rem;padding:1rem var(--gutter);
  background:rgba(10,15,18,0);border-bottom:1px solid transparent;
  transition:background-color .4s var(--ease),border-color .4s var(--ease);
}
.nav.is-stuck,.nav.is-solid{background:rgba(10,15,18,.9);backdrop-filter:blur(14px);border-bottom-color:var(--line)}
.nav__logo{height:34px;width:auto}
.nav__spacer{flex:1}
.nav__link{
  display:none;font-family:Montserrat,sans-serif;font-weight:600;font-size:.8125rem;
  letter-spacing:.04em;text-transform:uppercase;color:var(--ink-2);
}
.nav__link:hover{color:var(--primary)}
.nav .btn{padding:.75rem 1.35rem;font-size:.8125rem}
@media(min-width:880px){.nav__link{display:inline-block}}

/* ---------- shared type bits ---------- */
.lede{font-size:var(--step-1);line-height:1.55;font-weight:300;color:var(--ink-2)}
.eyebrow{
  font-family:Montserrat,sans-serif;font-weight:700;font-size:.75rem;
  letter-spacing:.16em;text-transform:uppercase;color:var(--primary);
}
.badge{
  display:inline-flex;align-items:center;gap:.5rem;
  font-family:Montserrat,sans-serif;font-weight:600;font-size:.75rem;
  letter-spacing:.12em;text-transform:uppercase;padding:.5rem .85rem;border-radius:2px;
}
@media(max-width:600px){
  .badge{font-size:.6875rem;padding:.4rem .7rem;letter-spacing:.08em}
}
.badge--live{background:var(--primary);color:#04181f}
.badge--plain{border:1px solid var(--line-strong);color:var(--ink-2)}
.badge__dot{width:7px;height:7px;border-radius:50%;background:#04181f;animation:pulse 2.4s var(--ease) infinite}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.7)}}

/* ---------- motion (enhancement only) ---------- */
.js .reveal{opacity:0;transform:translateY(22px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.js .reveal.in{opacity:1;transform:none}
.js .reveal[data-d="1"]{transition-delay:.08s}
.js .reveal[data-d="2"]{transition-delay:.16s}
.js .reveal[data-d="3"]{transition-delay:.24s}
.js .reveal[data-d="4"]{transition-delay:.32s}

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

/* ---------- footer ---------- */
.footer{border-top:1px solid var(--line);padding-block:3rem}
.footer__row{display:flex;flex-wrap:wrap;gap:1.5rem;align-items:center;justify-content:space-between}
.footer img{height:36px;width:auto}
.footer p{font-size:.875rem;color:var(--ink-3)}
