@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500&display=swap');

:root{--bg:#F5F5F5;--text:#171717}
*{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--bg);scroll-snap-type:y mandatory;scroll-padding-top:0}
body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,Arial,sans-serif;-webkit-font-smoothing:antialiased}
a{color:inherit}

.site-nav{
  position:fixed;
  top:0;left:0;right:0;
  z-index:50;
  display:flex;
  justify-content:center;
  padding:34px 20px 0;
  transition:opacity .6s ease;
}
.site-nav.is-hidden{opacity:0;pointer-events:none}
.site-nav__group{display:flex;gap:72px;align-items:center;justify-content:center}
.site-nav__link{
  position:relative;
  padding-bottom:8px;
  font-size:11px;
  font-weight:300;
  letter-spacing:.2em;
  text-transform:uppercase;
  text-decoration:none;
  white-space:nowrap;
  transition:opacity .2s ease, transform .2s ease;
}
.site-nav__link:active{
  opacity:0.6;
  transform:scale(0.97);
}
.site-nav__link::after{
  content:"";position:absolute;left:0;right:100%;bottom:0;height:1px;background:currentColor;
  transition:right 1.1s cubic-bezier(.22,.72,.22,1);
}
.site-nav__link:hover::after{right:0}

.hero,.story,.finale{
  position:relative;
  min-height:100vh;
  min-height:100dvh;
  overflow:hidden;
  background:var(--bg);
  scroll-snap-align:start;
  scroll-snap-stop:always;
}

.hero{
  display:grid;
  place-items:center;
  padding:120px 24px 150px;
}
.hero h1,.story__line{
  margin:0;
  width:min(1180px,calc(100% - 48px));
  text-align:center;
  font-size:clamp(34px,3.3vw,60px);
  line-height:1.08;
  letter-spacing:-.04em;
  font-weight:400;
  white-space:nowrap;
}
.hero h1{
  opacity:0;
  filter:blur(4px);
  animation:heroReveal 1.35s ease-out .16s forwards;
}

.scroll-cue{
  position:absolute;
  left:50%;
  bottom:36px;
  width:44px;
  height:44px;
  min-width:44px;
  min-height:44px;
  border:0;
  background:transparent;
  padding:5px;
  color:var(--text);
  transform:translateX(-50%);
  opacity:0;
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  transition:opacity .3s ease, transform .2s ease;
}
.scroll-cue:active{
  opacity:0.6;
  transform:translateX(-50%) scale(0.92);
}
#heroArrow{animation:cueIn .9s ease 1.45s forwards}
.scroll-cue svg{
  width:100%;
  height:100%;
  animation:arrowBreathe 2s ease-in-out infinite, arrowFloat 2s ease-in-out infinite;
}
@keyframes arrowFloat{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(5px)}
}
.scroll-cue path{fill:none;stroke:currentColor;stroke-width:1.05;stroke-linecap:round;stroke-linejoin:round}


.story__media{
  position:absolute;inset:0;overflow:hidden;background:#0d0d0d;
  opacity:0;transition:opacity .85s ease;
}
.story__media.is-visible{opacity:1}
.story__media.is-fading-out{opacity:0}
.story__video{
  position:absolute;inset:-2%;width:104%;height:104%;object-fit:cover;
  opacity:0;transform:scale(1.035) translate3d(0,0,0);
  filter:saturate(1.08) contrast(1.04);
  transition:opacity .22s ease,clip-path .58s cubic-bezier(.2,.75,.2,1),transform 2.8s ease-out;
  clip-path:inset(0 100% 0 0);
}
.story__video.is-active{
  opacity:1;clip-path:inset(0 0 0 0);transform:scale(1.075) translate3d(-.8%,0,0);z-index:1;
}
.story__video.is-incoming{
  opacity:1;clip-path:inset(0 0 0 0);transform:scale(1.045) translate3d(.8%,0,0);z-index:3;
}
.story__video.is-slice{
  opacity:1;clip-path:polygon(0 0,34% 0,52% 100%,0 100%);z-index:4;
}
.story__video.is-flash{
  opacity:.96;clip-path:inset(0 0 0 0);transition:opacity .11s linear;z-index:5;
}
.story__scan{
  position:absolute;inset:0;z-index:6;pointer-events:none;opacity:0;
  background:linear-gradient(100deg,
    transparent 0 37%,
    rgba(255,255,255,.06) 43%,
    rgba(255,255,255,.28) 50%,
    rgba(255,255,255,.06) 57%,
    transparent 63% 100%);
  filter:blur(12px);
  transform:translateX(-72%);
}
.story__media.is-searching .story__scan{animation:searchSweep .82s cubic-bezier(.22,.72,.22,1)}
@keyframes searchSweep{0%{opacity:0;transform:translateX(-72%)}22%{opacity:.62}70%{opacity:.62}100%{opacity:0;transform:translateX(72%)}}
.story__overlay{
  position:absolute;inset:0;background:rgba(0,0,0,.16);
  opacity:0;transition:opacity 1.1s ease;
}
.story__overlay.is-visible{opacity:1}
.story__copy{
  position:relative;
  min-height:100vh;
  min-height:100dvh;
  display:flex;align-items:center;justify-content:center;
  padding:120px 24px 150px;
}
.story__line{
  position:absolute;
  left:50%;top:50%;
  transform:translate(-50%,-50%);
  opacity:0;
  transition:opacity .55s ease;
}
.story__line.is-visible{opacity:1}
.story__line--final{font-weight:400}
.story__arrow.is-visible{opacity:1;transition:opacity .8s ease}

.finale{
  display:grid;
  place-items:center;
  padding:90px 24px;
}
.finale__composition{
  width:min(760px,100%);
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:16px;
  text-align:center;
}
.finale h2{
  margin:4px 0 0;
  font-size:clamp(42px,4.2vw,68px);
  line-height:1.02;
  letter-spacing:-.05em;
  font-weight:300;
  opacity:0;
  
}
.finale__status{
  margin:0;
  font-size:clamp(20px,1.7vw,26px);
  font-weight:300;
  color:rgba(23,23,23,.46);
  opacity:0;
}
.finale__trail{
  margin-top:20px;
  display:flex;
  flex-direction:row;
  align-items:center;
  justify-content:center;
  gap:clamp(22px,3vw,46px);
  flex-wrap:nowrap;
  width:min(1100px,calc(100vw - 64px));
}

.finale__trail span{
  font-size:clamp(18px,1.45vw,23px);
  font-weight:300;
  opacity:0;
  white-space:nowrap;
}
.finale__cta{
  position:relative;
  margin-top:28px;
  padding:16px 20px;
  min-height:44px;
  min-width:44px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
  font-size:12px;
  font-weight:400;
  letter-spacing:.18em;
  text-transform:uppercase;
  text-decoration:none;
  opacity:0;
  transition:opacity .2s ease, transform .2s ease;
}
.finale__cta:active{
  opacity:0.75;
  transform:scale(0.97);
}
.finale__cta::after{
  content:"";position:absolute;left:20px;right:100%;bottom:10px;height:1px;background:var(--text);
  transition:right 1.1s cubic-bezier(.22,.72,.22,1);
}
.finale__cta:hover::after{right:20px}
.finale__cta::before{
  content:attr(data-text);
  position:absolute;
  inset:16px 20px;
  display:flex;
  align-items:center;
  justify-content:center;
  color:#171717;
  font:inherit;
  letter-spacing:inherit;
  text-transform:inherit;
  white-space:nowrap;
  opacity:0;
  filter:blur(.35px);
  transform:scale(1.008);
  font-weight:500;
  text-shadow:0 0 0 rgba(23,23,23,0);
  pointer-events:none;
}

.finale.is-visible h2{animation:fadeUp .65s ease 1.55s forwards}
.finale.is-visible .finale__status{animation:fade .55s ease 2.3s forwards}
.finale.is-visible .finale__trail span:nth-child(1){animation:fadeUp .6s ease 3.25s forwards}
.finale.is-visible .finale__trail span:nth-child(2){animation:fadeUp .6s ease 4.55s forwards}
.finale.is-visible .finale__trail span:nth-child(3){animation:fadeUp .6s ease 5.85s forwards}
.finale.is-visible .finale__cta{animation:fade .6s ease 7.35s forwards}
.finale.is-visible .finale__cta::before{animation:inkDensity 4.8s cubic-bezier(.22,.72,.22,1) 8.35s infinite}

@keyframes heroReveal{to{opacity:1;filter:blur(0)}}
@keyframes cueIn{to{opacity:1}}
@keyframes arrowBreathe{0%,100%{opacity:.25}50%{opacity:1}}
@keyframes fade{to{opacity:1}}
@keyframes fadeUp{to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes inkDensity{
  0%,12%,100%{opacity:0;filter:blur(.8px);transform:scale(1.012);text-shadow:0 0 0 rgba(23,23,23,0)}
  22%{opacity:.48;filter:blur(.28px);transform:scale(1.008);text-shadow:0 0 .45px rgba(23,23,23,.38)}
  38%{opacity:1;filter:blur(0);transform:scale(1.002);text-shadow:0 0 1.15px rgba(23,23,23,.92)}
  55%{opacity:.88;filter:blur(0);transform:scale(.998);text-shadow:0 0 .85px rgba(23,23,23,.78)}
  72%{opacity:.38;filter:blur(.2px);transform:scale(1.005);text-shadow:0 0 .35px rgba(23,23,23,.3)}
  86%{opacity:0;filter:blur(.7px);transform:scale(1.01);text-shadow:0 0 0 rgba(23,23,23,0)}
}

@media(max-width:900px){
  .hero h1,.story__line{white-space:normal}
}
@media(max-width:640px){
  .site-nav{padding-top:28px}
  .site-nav__group{gap:18px}
  .site-nav__link{font-size:8px;letter-spacing:.12em}
  .scroll-cue{bottom:28px;width:30px;height:30px}
  .hero h1,.story__line{font-size:clamp(36px,11vw,50px)}
}

@media(max-width:760px){
  .finale__trail{
    flex-wrap:wrap;
    row-gap:12px;
  }
}

.finale__status{display:none!important;}



.story__arrow{
opacity:0!important;
pointer-events:none;
}

.scroll-hint{
  position:absolute;
  left:50%;
  bottom:74px;
  transform:translateX(-50%);
  font-size:10px;font-weight:300;letter-spacing:.14em;text-transform:uppercase;
  color:rgba(23,23,23,.48);pointer-events:none;
  opacity:0;
  animation:cueIn .9s ease 1.45s forwards;
}
.hero .scroll-hint{
  animation:cueIn .9s ease 1.45s forwards, hintPulse 2.2s ease-in-out 2.4s infinite;
}
@keyframes hintPulse{
  0%,100%{opacity:.35}
  50%{opacity:1}
}
.scroll-hint kbd{
  font:inherit;border:1px solid rgba(23,23,23,.18);
  border-radius:5px;padding:2px 7px;background:rgba(255,255,255,.45);
}

.story-hint{
position:absolute;
left:50%;
bottom:74px;
transform:translateX(-50%);
font-size:10px;
font-weight:300;
letter-spacing:.14em;
text-transform:uppercase;
color:rgba(23,23,23,.48);
opacity:0;
transition:opacity .6s ease;
pointer-events:none;
}
.story-hint kbd{
font:inherit;
border:1px solid rgba(23,23,23,.18);
border-radius:5px;
padding:2px 7px;
background:rgba(255,255,255,.45);
}
.story__arrow.is-visible + .dummy{}
.story__arrow.is-visible,
.story__arrow.is-visible ~ .story-hint{}
.story-hint.is-visible{opacity:.85;}

/* v36 — restore the arrow after “That’s where Via begins.” */
.story__arrow {
  opacity: 0 !important;
  pointer-events: none;
}

.story__arrow.is-visible {
  opacity: 1 !important;
  pointer-events: auto;
  transition: opacity .8s ease;
}

.story__arrow.is-visible svg {
  display: block;
}




/* v38 — final Via wordmark only */
.finale__brand {
  position: absolute;
  top: calc(50% - 240px);
  left: 0;
  right: 0;
  margin: 0 auto;
  width: max-content;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transform: translateY(10px);
  pointer-events: none;
}

.finale__brand-logo {
  width: clamp(220px, 22vw, 360px);
  height: auto;
  color: #171717;
  display: block;
}

.finale__brand-name {
  font-size: clamp(72px, 7.2vw, 112px);
  line-height: .9;
  letter-spacing: -.06em;
  font-weight: 500;
  color: #171717;
  text-rendering: geometricPrecision;
  -webkit-font-smoothing: antialiased;
}

.finale.is-visible .finale__brand {
  animation: finaleBrandArrive .8s cubic-bezier(.22,.72,.22,1) 9.9s forwards;
}

@keyframes finaleBrandArrive {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@media(max-width:640px) {
  .finale__brand {
    top: calc(50% - 205px);
  }

  .finale__brand-logo {
    width: clamp(180px, 55vw, 230px);
  }

  .finale__brand-name {
    font-size: 72px;
  }
}


/* v38.1 hide top CTA only on final screen */
.finale.is-visible ~ .site-header .site-nav__link[href="#finale"],
body.finale-active .site-header .site-nav__link[href="#finale"]{
  opacity:0;
  pointer-events:none;
  transition:opacity .3s ease;
}

/* v38.2 — three-item nav on hero; hide only the top waitlist link on the finale */
body.finale-active .site-nav__link--waitlist{
  opacity:0;
  pointer-events:none;
  transition:opacity .3s ease;
}

/* v38.4 — final navigation spacing matched exactly to v43 */
body.finale-active .site-nav__link--waitlist{
  display:none;
}
body.finale-active .site-nav__group{
  gap:56px;
}

/* v3 — faster finale entrance and stronger Via hierarchy */
.finale__brand{
  top:26%;
}
.finale__brand-name{
  font-size:clamp(108px,10.8vw,168px);
}
.finale.is-visible .finale__brand{
  animation:finaleBrandArrive .65s cubic-bezier(.22,.72,.22,1) .2s forwards;
}
.finale.is-visible h2{
  animation:fadeUp .65s ease .85s forwards;
}
.finale.is-visible .finale__trail span:nth-child(1){animation:fadeUp .55s ease 1.65s forwards}
.finale.is-visible .finale__trail span:nth-child(2){animation:fadeUp .55s ease 2.45s forwards}
.finale.is-visible .finale__trail span:nth-child(3){animation:fadeUp .55s ease 3.25s forwards}
.finale.is-visible .finale__cta{animation:fade .55s ease 4.2s forwards}
.finale.is-visible .finale__cta::before{animation:inkDensity 4.8s cubic-bezier(.22,.72,.22,1) 4.9s infinite}
@media(max-width:640px){
  .finale__brand{top:25%;}
  .finale__brand-name{font-size:108px;}
}


.contact-screen{
  min-height:100vh;
  min-height:100dvh;
  display:flex;
  align-items:center;
  justify-content:center;
  background:#f7f7f5;
}
.contact-wrap{width:min(620px,88vw);text-align:center}
.contact-wrap h2{font-size:64px;font-weight:400;margin:0 0 64px}
.contact-form{display:flex;flex-direction:column;gap:28px}
.contact-form input,.contact-form textarea{
border:none;border-bottom:1px solid #ddd;background:transparent;
font:400 24px/1.5 Inter,sans-serif;padding:12px 0;outline:none;color:#171717}
.contact-form textarea{min-height:180px;resize:none}
.contact-send{align-self:center;border:none;background:none;font:400 22px Inter,sans-serif;cursor:pointer;margin-top:24px}




/* Pass it on */
.pass-it-on{
  position:fixed;
  inset:0;
  height:100vh;
  height:100dvh;
  z-index:1000;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  background:var(--bg);
  opacity:0;
  pointer-events:none;
  transition:opacity .6s ease;
  text-align:center;
  padding:24px 16px;
}
.pass-it-on.is-visible{opacity:1;pointer-events:auto}
.pass-it-on__home{
  position:absolute;
  top:34px;
  left:50%;
  transform:translateX(-50%);
  z-index:2;
}
@media(max-width:640px){.pass-it-on__home{top:20px}}

.pass-it-on__share{
  position:relative;
  border:0;
  background:transparent;
  color:var(--text);
  font:400 12px/1 Inter,Arial,sans-serif;
  letter-spacing:.18em;
  text-transform:uppercase;
  padding:16px 24px;
  min-height:44px;
  min-width:44px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
  opacity:0;
  pointer-events:none;
  overflow:hidden;
  transition:opacity .65s ease, transform .2s ease;
  margin:0 auto;
}
.pass-it-on__share:active{
  opacity:0.7;
  transform:scale(0.97);
}
.pass-it-on__share::after{
  content:"";
  position:absolute;
  left:20px;
  right:100%;
  bottom:10px;
  height:1px;
  background:var(--text);
  transition:right 1.1s cubic-bezier(.22,.72,.22,1);
}
.pass-it-on__share:hover::after{right:20px}
.pass-it-on__share::before{
  content:attr(data-text);
  position:absolute;
  inset:16px 20px;
  display:flex;
  align-items:center;
  justify-content:center;
  color:#171717;
  font:inherit;
  letter-spacing:inherit;
  text-transform:inherit;
  white-space:nowrap;
  opacity:0;
  filter:blur(.35px);
  transform:scale(1.008);
  font-weight:500;
  text-shadow:0 0 0 rgba(23,23,23,0);
  pointer-events:none;
}
.pass-it-on__share.is-visible{
  opacity:1;
  pointer-events:auto;
}
.pass-it-on__share.is-visible::before{
  animation:inkDensity 4.8s cubic-bezier(.22,.72,.22,1) .65s infinite;
}

.pass-it-on__message{
position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
font-size:clamp(42px,5vw,84px);font-weight:400;transition:opacity .25s ease;
}
.pass-it-on__message.is-hidden{opacity:0;pointer-events:none;}

/* Screen Reader Only (visually hidden but accessible) */
.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;
}

/* Mobile Viewport & Small Screen Optimizations (<768px) */
@media (max-width: 767px) {
  .site-nav {
    padding: 16px 12px 0;
  }
  .site-nav__group,
  body.finale-active .site-nav__group {
    gap: 4px 12px;
    flex-wrap: wrap;
  }
  .site-nav__link {
    font-size: 10px;
    letter-spacing: .15em;
    padding: 10px 4px;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }
  .hero {
    padding: 80px 16px 100px;
  }
  .hero h1 {
    white-space: normal !important;
    text-wrap: balance;
    word-break: break-word;
    font-size: clamp(26px, 7vw, 38px);
    line-height: 1.15;
    width: 100%;
  }
  .story__copy {
    padding: 80px 16px 100px;
  }
  .story__line {
    white-space: normal !important;
    text-wrap: balance;
    word-break: break-word;
    font-size: clamp(22px, 5.5vw, 32px);
    line-height: 1.25;
    width: min(92vw, 1180px);
    padding: 0 8px;
  }
  .finale {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 80px 16px 40px;
  }
  .finale__brand {
    position: relative !important;
    top: auto !important;
    left: auto !important;
    right: auto !important;
    transform: none !important;
    margin-bottom: 24px !important;
    width: auto !important;
  }
  .finale__brand-logo {
    width: min(180px, 48vw) !important;
    height: auto;
  }
  .finale h2 {
    margin-top: 0 !important;
    font-size: clamp(32px, 7.5vw, 44px);
  }
  .finale__composition {
    gap: 12px;
  }
  .finale__trail {
    flex-direction: column;
    gap: 12px;
    margin-top: 16px;
    width: 100%;
  }
  .finale__trail span {
    white-space: normal !important;
    text-wrap: balance;
    font-size: clamp(16px, 4.2vw, 20px);
    text-align: center;
  }
  .pass-it-on__message {
    font-size: clamp(28px, 7vw, 56px);
    padding: 0 20px;
    text-wrap: balance;
    text-align: center;
  }
}
