/* Campaign motion. No content depends on JavaScript or animation completion. */
.hero-phrase{display:inline-block}
@media(prefers-reduced-motion:no-preference){
  .hero .brand{animation:brand-arrive .5s ease-out both}
  .hero-phrase{animation:phrase-arrive 1s cubic-bezier(.2,.7,.2,1) both}
  .hero-phrase:nth-of-type(2){animation-delay:.18s}
  .hero .lead,.hero .cta-row,.hero-terms{animation:copy-arrive .5s ease-out both;animation-delay:.06s}
  .reward-stage.is-waiting .reward-disc{opacity:0;transform:translateY(48px) scale(.86) rotate(-5deg)}
  .reward-stage.is-visible .reward-disc{animation:disc-arrive 1.3s cubic-bezier(.16,1,.3,1) both}
  .reward-stage.is-visible .reward-copy{animation:sticker-attach 1s cubic-bezier(.2,.8,.2,1) both;animation-delay:.5s}
  .reward-disc::after{content:'';position:absolute;inset:0;border-radius:50%;pointer-events:none;background:linear-gradient(115deg,transparent 28%,rgba(255,255,255,.3) 48%,transparent 62%);opacity:0}
  .reward-stage.is-visible .reward-disc::after{animation:glass-light 1.4s ease-out .5s both}
  .reward-stage{transform:translate3d(var(--pointer-x,0px),var(--pointer-y,0px),0);transition:transform .7s cubic-bezier(.2,.6,.3,1)}
  .page-donut{translate:0 var(--parallax-y,0px);animation:background-flight var(--flight-time,22s) ease-in-out infinite alternate;will-change:transform}
  .page-donut:nth-child(1){width:clamp(145px,16vw,240px);--flight-time:25s;opacity:.18}
  .page-donut:nth-child(2){width:clamp(75px,8vw,120px);--flight-time:18s;opacity:.14}
  .page-donut:nth-child(3){width:clamp(110px,12vw,190px);--flight-time:23s;opacity:.14}
  .page-donut:nth-child(4){width:clamp(165px,19vw,280px);--flight-time:28s;opacity:.15}
  .route{position:relative;border-top:0}
  .route::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:var(--ink);transform:scaleX(0);transform-origin:left;transition:transform 1.1s cubic-bezier(.2,.6,.2,1)}
  .route.is-visible::before{transform:scaleX(1)}
  .route .step-number{transition:transform .5s ease;transform:translateY(5px)}
  .route.is-visible .step-number{transform:none}
  .route-step:nth-child(2) .step-number{transition-delay:.18s}.route-step:nth-child(3) .step-number{transition-delay:.36s}
  .conditions.is-waiting{opacity:0;transform:translateY(34px)}
  .conditions.is-visible{animation:section-arrive 1s cubic-bezier(.16,1,.3,1) both,step-gradient 15s ease-in-out infinite}
  .mobile-action:not([hidden]){animation:mobile-arrive .3s ease-out both}
  body.page-paused .page-donut,body.page-paused .hero-donut,body.page-paused .donut,body.page-paused .hero{animation-play-state:paused}
}
@keyframes brand-arrive{from{opacity:.4;transform:translateY(-6px)}to{opacity:1;transform:none}}
@keyframes phrase-arrive{from{opacity:0;transform:translateY(30px);clip-path:inset(0 0 8% 0)}to{opacity:1;transform:none;clip-path:inset(0)}}
@keyframes copy-arrive{from{opacity:.65;transform:translateY(7px)}to{opacity:1;transform:none}}
@keyframes disc-arrive{from{opacity:0;transform:translateY(48px) scale(.86) rotate(-5deg)}to{opacity:1;transform:translateY(0) scale(1) rotate(5deg)}}
@keyframes sticker-attach{0%{opacity:0;transform:translate(12px,-16px) rotate(19deg) scale(1.08)}65%{opacity:1}100%{opacity:1;transform:translate(0,0) rotate(8deg) scale(1)}}
@keyframes glass-light{0%{opacity:0;transform:translateX(-12%)}40%{opacity:1}100%{opacity:0;transform:translateX(12%)}}
@keyframes background-flight{0%{transform:translate3d(-15px,45px,0) rotate(-24deg)}45%{transform:translate3d(65px,-40px,0) rotate(8deg)}100%{transform:translate3d(-20px,-150px,0) rotate(42deg)}}
@keyframes section-arrive{from{opacity:0;transform:translateY(34px)}to{opacity:1;transform:none}}
@keyframes mobile-arrive{from{transform:translateY(100%)}to{transform:none}}
@media(max-width:820px) and (prefers-reduced-motion:no-preference){.route::before{top:0;bottom:0;left:0;width:2px;height:auto;right:auto;transform:scaleY(0);transform-origin:top}.route.is-visible::before{transform:scaleY(1)}.route .route-step{border-top:0;padding-left:26px}.route .route-step::before{left:-5px;top:30px}.page-donut:nth-child(n){max-width:160px;opacity:.11}}
@media(prefers-reduced-motion:reduce){.reward-stage{transform:none!important}.page-donut{translate:none!important}.reward-copy{transform:rotate(8deg)}.route::before{transform:none}}
