/* APEX motion: progressive enhancement, no animation libraries. */
@keyframes apex-enter{from{opacity:0;transform:translateY(26px);filter:blur(5px)}to{opacity:1;transform:none;filter:none}}
@keyframes apex-photo{from{transform:scale(1.08)}to{transform:scale(1)}}
@keyframes apex-pulse{0%,100%{box-shadow:0 0 0 0 #d7f56850}60%{box-shadow:0 0 0 9px #d7f56800}}
@keyframes apex-float{0%,100%{transform:translateY(0)}50%{transform:translateY(5px)}}
@keyframes apex-dialog{from{opacity:0;transform:translateY(22px) scale(.97)}to{opacity:1;transform:none}}
@keyframes apex-check{0%{transform:scale(.4) rotate(-35deg);opacity:0}70%{transform:scale(1.12) rotate(5deg)}100%{transform:none;opacity:1}}
@keyframes apex-ripple{to{transform:translate(-50%,-50%) scale(1);opacity:0}}
@media(prefers-reduced-motion:no-preference){
header{animation:apex-enter .7s both}
.hero-image{animation:apex-photo 2.2s cubic-bezier(.2,.65,.3,1) both;will-change:transform}
.hero-copy>.eyebrow{animation:apex-enter .8s .15s both}
.hero h1{animation:apex-enter 1s .28s both}
.hero .intro{animation:apex-enter .85s .45s both}
.hero .actions{animation:apex-enter .85s .6s both}
.hero-label,.hero-bottom{animation:apex-enter .9s .8s both}
.dot{animation:apex-pulse 3s 2s infinite}
.hero-bottom>span:last-child{animation:apex-float 2.6s 2s infinite}
.reveal-ready{opacity:0;transform:translateY(32px);transition:opacity .7s var(--reveal-delay,0ms),transform .7s cubic-bezier(.2,.7,.2,1) var(--reveal-delay,0ms)}
.reveal-ready.is-visible{opacity:1;transform:none}
.package{transition:transform .28s,box-shadow .28s,border-color .28s}
.package:hover{transform:translateY(-7px);box-shadow:0 18px 35px #18292010;border-color:#8b9d6c}
.button{position:relative;overflow:hidden;isolation:isolate;transition:background .22s,transform .22s,box-shadow .22s}
.button:hover{box-shadow:0 8px 24px #18292018}
.button:active{transform:scale(.97)}
.button>span{transition:transform .25s}.button:hover>span{transform:translate(3px,-2px)}
nav a,.underlined{position:relative}nav a:after{content:'';position:absolute;left:0;bottom:-6px;width:100%;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .25s}nav a:hover:after,nav a:focus-visible:after{transform:scaleX(1)}
.vehicle-switch button{transition:background .25s,color .25s,border-color .25s,transform .2s}.vehicle-switch button:active{transform:scale(.95)}
.price span,#total{display:inline-block;font-variant-numeric:tabular-nums}
dialog[open]{animation:apex-dialog .3s cubic-bezier(.2,.75,.3,1)}
dialog[open]::backdrop{animation:apex-enter .25s both}
.success-icon{animation:apex-check .65s cubic-bezier(.2,.8,.2,1) both}
.receipt{animation:apex-enter .45s .12s both}
.saved-item{animation:apex-enter .35s both}
details[open]>p{animation:apex-enter .3s both}
summary:after{transition:transform .25s}details[open] summary:after{transform:rotate(180deg)}
input,select,textarea{transition:border-color .2s,box-shadow .2s}input:focus,select:focus,textarea:focus{box-shadow:0 0 0 3px #8b9d6c20}
.apex-ripple{position:absolute!important;pointer-events:none;border-radius:50%;background:currentColor;opacity:.16;width:var(--ripple-size);height:var(--ripple-size);left:var(--ripple-x);top:var(--ripple-y);transform:translate(-50%,-50%) scale(0);animation:apex-ripple .65s ease-out forwards;z-index:-1}
}
.apex-progress{position:fixed;left:0;top:0;width:100%;height:3px;background:#a4c94c;transform:scaleX(0);transform-origin:left;z-index:100;pointer-events:none}
@media(hover:none){.package:hover{transform:none;box-shadow:none}}
@media(prefers-reduced-motion:reduce){.reveal-ready{opacity:1;transform:none}.apex-progress{display:none}}
