@keyframes vp-reveal-up{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
@keyframes vp-reveal-fade{from{opacity:0;transform:scale(.985)}to{opacity:1;transform:scale(1)}}
@keyframes vp-modal-out{to{opacity:0;transform:translateY(14px)}}
@keyframes vp-toast-in{from{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%,0)}}
@keyframes vp-toast-out{to{opacity:0;transform:translate(-50%,12px)}}
@keyframes vp-shake{25%{transform:translateX(5px)}50%{transform:translateX(-5px)}75%{transform:translateX(3px)}}
@keyframes vp-lamp-image{0%,13%,77%,100%{opacity:0}22%,68%{opacity:1}}
@keyframes vp-scooter{0%,100%{transform:translateX(0) rotate(0)}50%{transform:translateX(7px) rotate(-2deg)}}
@keyframes vp-chevron-guide{0%,100%{transform:translateX(0);opacity:.72}50%{transform:translateX(7px);opacity:1}}
@keyframes vp-logo{from{opacity:0;transform:translateY(-15px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes vp-title{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
@keyframes vp-breathe{0%,100%{box-shadow:0 0 0 0 rgb(93 86 141/.15)}50%{box-shadow:0 0 0 11px rgb(93 86 141/0)}}
@keyframes vp-icon-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes vp-equalizer{from{transform:scaleY(.45);opacity:.55}to{transform:scaleY(1.35);opacity:1}}
@keyframes vp-light-sweep{from{transform:translateX(-180%) skewX(-24deg)}to{transform:translateX(470%) skewX(-24deg)}}
@keyframes vp-tap{50%{transform:scale(.97)}}
.motion-enabled .is-reveal-pending{opacity:0}
.motion-enabled .is-revealing[data-reveal='up']{animation:vp-reveal-up .65s both}
.motion-enabled .is-revealing[data-reveal='fade']{animation:vp-reveal-fade .75s both}
.ambient-enabled .hero.is-ambient-visible .hero__light-image{animation:vp-lamp-image 2.4s ease-in-out infinite}
body[data-view='home'] .brand img{animation:vp-logo .9s cubic-bezier(.2,.7,.2,1) both}
body[data-view='home'] .campaign-title span{animation:vp-title .7s ease both}
body[data-view='home'] .campaign-title span:nth-child(2){animation-delay:.2s}
.ambient-enabled body[data-view='home'] .campaign-action,.ambient-enabled body[data-view='music'] .instagram-action{animation:vp-breathe 3.7s ease-in-out infinite}
.ambient-enabled body[data-view='register'] .road-art__motor{animation:vp-register-motor 1.6s ease-in-out infinite}
body[data-view='register'] .road-art__chevrons{animation:none;transform:none;opacity:1}
body[data-view='register'] .english-kicker strong{animation:vp-title .75s .12s ease both}
body[data-view='register'] .english-kicker span{animation:vp-title .75s .27s ease both}
.ambient-enabled body[data-view='register'] .privacy-assurance .icon{animation:vp-breathe 3.6s ease-in-out infinite}
.input-wrap .icon{transition:transform .25s ease,color .25s ease}.input-wrap:focus-within .icon{transform:translateY(-3px) scale(1.1)}.consent-label input{transition:transform .25s ease}.consent-label input:checked{transform:scale(1.12)}
.ambient-enabled body[data-view='music'] .music-heading::before{animation:vp-icon-float 3.5s ease-in-out infinite}
.ambient-enabled body[data-view='music'] .step-card__action .icon{animation:vp-icon-float 3s ease-in-out infinite}.ambient-enabled body[data-view='music'] .step-card:nth-child(2) .icon{animation-delay:-.8s}.ambient-enabled body[data-view='music'] .step-card:nth-child(3) .icon{animation-delay:-1.6s}
.audio-player.is-playing .waveform__bar{animation:vp-equalizer .65s ease-in-out infinite alternate}.audio-player.is-playing .waveform__bar:nth-child(3n){animation-duration:.48s;animation-delay:-.2s}.audio-player.is-playing .waveform__bar:nth-child(5n){animation-duration:.82s;animation-delay:-.4s}.audio-player.is-playing .waveform__bar:nth-child(7n){animation-duration:.56s;animation-delay:-.1s}
.audio-player.is-playing .player-toggle{box-shadow:0 0 0 5px rgb(255 255 255/.15)}.download-button .icon{transition:transform .25s ease}.download-button:hover .icon{transform:translateY(3px)}
.button{position:relative;overflow:hidden}.button::before{content:"";position:absolute;inset-block:0;width:24%;background:linear-gradient(90deg,transparent,rgb(255 255 255/.18),transparent);transform:translateX(-180%) skewX(-24deg);pointer-events:none}.button:hover::before{animation:vp-light-sweep .8s ease both}.button.is-tapped{animation:vp-tap .35s ease}
.motion-enabled .is-revealing[data-stagger='1']{animation-delay:.09s}.motion-enabled .is-revealing[data-stagger='2']{animation-delay:.18s}.motion-enabled .is-revealing[data-stagger='3']{animation-delay:.27s}.motion-enabled .is-revealing[data-stagger='4']{animation-delay:.36s}
.is-page-hidden .hero,.is-page-hidden .hero__light-image,.is-page-hidden .road-art__scooter,.is-page-hidden .road-art__motor,.is-page-hidden .road-art__chevrons,.is-page-hidden .waveform__bar{animation-play-state:paused!important}
.is-dialog-closing{--motion-dialog-out:180ms;animation:vp-modal-out 180ms ease both}
.is-dialog-opening{animation:vp-reveal-fade .35s ease both}
.is-error-bump{animation:vp-shake .4s ease}.toast.is-toast-entering{animation:vp-toast-in .35s ease both}.toast.is-toast-exiting{animation:vp-toast-out .2s ease both}

/* Gentle suspension movement keeps the wheels above the static road. */
@keyframes vp-register-motor{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}
