/* Motion infrastructure — route transition + reveal */
.route-transition{position:fixed;inset:0;z-index:3000;visibility:hidden;overflow:hidden;pointer-events:none!important}
.route-transition.is-leaving,.route-transition.is-finished{pointer-events:none!important}
.route-transition__frame{position:absolute;left:-3%;right:-3%;bottom:-3%;height:clamp(120px,20vh,210px);background:linear-gradient(112deg,#050506 0%,#0b0809 68%,#170608 100%);clip-path:polygon(0 30%,100% 0,100% 100%,0 100%);transform:translateY(112%);transition:transform .17s cubic-bezier(.78,0,.22,1);will-change:transform;pointer-events:none!important}
.route-transition__frame::after{position:absolute;left:-12%;top:22%;width:124%;height:1px;background:linear-gradient(90deg,transparent 4%,#e01d26 37%,rgba(255,255,255,.85) 50%,#e01d26 63%,transparent 96%);box-shadow:0 0 12px rgba(224,29,38,.48);content:"";opacity:0;transform:rotate(-4deg) translateX(-90%)}
.route-transition.is-leaving{visibility:visible}
.route-transition.is-leaving .route-transition__frame{transform:translateY(0)}
.route-transition.is-leaving .route-transition__frame::after{animation:routeBlade .15s ease-out .02s forwards}
.route-transition.is-finished{visibility:hidden}
body.route-locked{overflow:hidden}
@keyframes routeBlade{0%{opacity:0;transform:rotate(-4deg) translateX(-90%)}20%{opacity:1}78%{opacity:1;transform:rotate(-4deg) translateX(0)}100%{opacity:0;transform:rotate(-4deg) translateX(90%)}}
@media(max-width:720px){.route-transition__frame{height:clamp(96px,17vh,150px)}}
@media(prefers-reduced-motion:reduce){.route-transition{display:none}}

.reveal{opacity:0;transform:translateY(28px);transition:opacity .72s ease,transform .72s cubic-bezier(.2,.72,.2,1)}.reveal.on{opacity:1;transform:none}
.clip-reveal{clip-path:inset(0 100% 0 0);transition:clip-path 1s cubic-bezier(.2,.75,.2,1)}.clip-reveal.on{clip-path:inset(0 0 0 0)}
body.is-swup-arrived .reveal,body.is-swup-arrived .clip-reveal{opacity:1;transform:none;clip-path:none}
.tilt{transform-style:preserve-3d;will-change:transform}.magnetic{will-change:transform}

@media(prefers-reduced-motion:reduce){
  *{scroll-behavior:auto!important;animation:none!important;transition-duration:.01ms!important}
  .reveal{opacity:1;transform:none}
  .clip-reveal{clip-path:none}
  .intro{display:none}
}
