/* Shared GSAP reveals with an intersection-observer fallback. */
@view-transition{navigation:auto}
::view-transition-old(root){animation:page-leave .22s ease both}
::view-transition-new(root){animation:page-arrive .42s cubic-bezier(.2,.75,.25,1) both}
@keyframes page-leave{to{opacity:.82;transform:translateY(-5px)}}
@keyframes page-arrive{from{opacity:.7;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}

.motion-ready [data-motion="waiting"]{opacity:0;transform:translate3d(0,28px,0) scale(.985);transition:opacity .8s cubic-bezier(.2,.75,.25,1),transform .85s cubic-bezier(.2,.75,.25,1);transition-delay:var(--motion-delay,0ms);will-change:opacity,transform}
.motion-ready [data-motion="visible"]{opacity:1;transform:translate3d(0,0,0) scale(1);}
.gsap-ready [data-motion="waiting"]{transition:none;will-change:opacity,transform}
.gsap-ready .v3-header,.gsap-ready .v3-hero-image img,.gsap-ready .v3-hero-copy>*,.gsap-ready .v3-hero-note,.gsap-ready .v3-hero-bottom,.gsap-ready .v3-route-dock{animation:none}

@keyframes hero-copy-arrive{from{opacity:0;transform:translate3d(0,22px,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@keyframes hero-image-drift{from{transform:scale(1.015)}to{transform:scale(1.075)}}
@keyframes dock-arrive{from{opacity:0;transform:translate3d(0,18px,0)}to{opacity:1;transform:translate3d(0,0,0)}}
.v3-header{animation:hero-copy-arrive .7s .05s both}
.v3-hero-image img{animation:hero-image-drift 12s cubic-bezier(.18,.6,.25,1) both;transform-origin:center}
.v3-hero-copy>*{animation:hero-copy-arrive .75s cubic-bezier(.2,.75,.25,1) both}
.v3-hero-copy>*:nth-child(1){animation-delay:.18s}
.v3-hero-copy>*:nth-child(2){animation-delay:.28s}
.v3-hero-copy>*:nth-child(3){animation-delay:.38s}
.v3-hero-copy>*:nth-child(4){animation-delay:.48s}
.v3-hero-note{animation:hero-copy-arrive .75s .55s both}
.v3-hero-bottom{animation:hero-copy-arrive .75s .65s both}
.v3-route-dock{animation:dock-arrive .8s .45s both}
.v3-inner .inner-hero-photo,.v3-inner .utility-hero>img{animation-duration:2.2s;animation-timing-function:cubic-bezier(.16,1,.3,1)}

.v3-service-main img,.v3-service-stack img,.v3-fleet-image img,.v3-city>img,.destination-image img,.editorial-media img{will-change:transform}
.v3-service-main,.v3-service-stack a,.v3-fleet-card,.v3-story-grid blockquote,.v3-route-dock>button,.v3-route-dock>a,.destination-row,.vehicle-showcase-card,.contact-methods a,.v3-button,.button-primary,.button-outline,.v3-header-book,.v3-nav a,.v3-footer-main a{transition-timing-function:cubic-bezier(.2,.75,.25,1)}
.v3-service-main img,.v3-service-stack img,.v3-fleet-image img,.v3-city>img,.destination-image img,.editorial-media img{transition:transform .8s cubic-bezier(.16,1,.3,1)}
.v3-service-main:hover img,.v3-service-stack a:hover img,.v3-fleet-card:hover .v3-fleet-image img,.destination-row:hover .destination-image img,.editorial-media:hover img{transform:scale(1.045)}
.v3-fleet-card,.v3-story-grid blockquote,.v3-service-stack a,.v3-service-main,.v3-inner .value-card,.v3-inner .vehicle-showcase-card{transition:transform .45s cubic-bezier(.2,.75,.25,1),border-color .3s ease,box-shadow .45s ease,background .3s ease}
.v3-fleet-card:hover,.v3-story-grid blockquote:hover{transform:translateY(-6px)}
.v3-service-main:hover,.v3-service-stack a:hover{transform:translateY(-3px)}
.v3-button:active,.button-primary:active,.button-outline:active,.v3-header-book:active{transform:translateY(1px) scale(.985)}
.v3-inner .text-link .icon,.v3-inner .journey-nav .icon,.v3-footer-bottom .icon,.v3-service-action .icon,.v3-fleet-link .icon{transition:transform .35s cubic-bezier(.2,.75,.25,1)}
.v3-inner .text-link:hover .icon,.v3-inner .journey-nav a:hover .icon,.v3-footer-bottom a:hover .icon,.v3-service-action:hover .icon,.v3-fleet-card:hover .v3-fleet-link .icon{transform:translateX(4px)}
.v3-mobile-nav:not([hidden]){transform-origin:top;animation:mobile-nav-open .32s cubic-bezier(.2,.75,.25,1) both}
@keyframes mobile-nav-open{from{opacity:0;transform:translateY(-9px) scaleY(.97)}to{opacity:1;transform:translateY(0) scaleY(1)}}
.v3-faq-list details,.contact-faq-list details{transition:border-color .25s ease}
.v3-faq-list details[open] p,.contact-faq-list details[open]>p{animation:faq-answer-open .35s cubic-bezier(.2,.75,.25,1) both}
@keyframes faq-answer-open{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}
.booking-step:not([hidden]){animation:step-arrive .42s cubic-bezier(.2,.75,.25,1) both}
@keyframes step-arrive{from{opacity:0;transform:translateX(12px)}to{opacity:1;transform:translateX(0)}}

@media(max-width:700px){
  .v3-hero-image img{animation-duration:15s}
  .v3-fleet-card:hover,.v3-story-grid blockquote:hover,.v3-service-main:hover,.v3-service-stack a:hover{transform:none}
  .motion-ready [data-motion="waiting"]{transform:translate3d(0,18px,0) scale(.99);}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-delay:0ms!important}
  ::view-transition-old(root),::view-transition-new(root){animation:none}
  .motion-ready [data-motion="waiting"],.motion-ready [data-motion="visible"]{opacity:1;transform:none;filter:none;will-change:auto}
}
