/* =========================================================================
   Animations — route-draw, shimmer, float, scroll reveals (CSS-only, no
   external animation library so the front end stays dependency-free / fast).
   Every rule is neutralised under prefers-reduced-motion (see tokens.css).
   ========================================================================= */

@keyframes wander-draw{
	0%{ stroke-dashoffset:260; }
	55%{ stroke-dashoffset:0; }
	100%{ stroke-dashoffset:0; }
}
@keyframes wander-fly{
	0%{ transform:translate(40px,118px) rotate(-18deg); opacity:1; }
	55%{ transform:translate(232px,52px) rotate(-18deg); opacity:1; }
	58%{ opacity:0; }
	59%{ transform:translate(40px,118px) rotate(-18deg); opacity:0; }
	60%{ opacity:1; }
	100%{ transform:translate(232px,52px) rotate(-18deg); opacity:1; }
}
@keyframes sweep{
	0%,62%{ transform:translateX(-130%); }
	100%{ transform:translateX(130%); }
}
@keyframes wander-float{
	0%,100%{ transform:translateY(0); }
	50%{ transform:translateY(-9px); }
}
@keyframes wander-fade-up{
	from{ opacity:0; transform:translateY(24px); }
	to{ opacity:1; transform:translateY(0); }
}
@keyframes wander-pulse{
	0%{ box-shadow:0 0 0 0 var(--sun-glow); }
	70%{ box-shadow:0 0 0 10px transparent; }
	100%{ box-shadow:0 0 0 0 transparent; }
}
@keyframes itin-badge-change{
	0%{ opacity:.55; transform:translateY(8px) scale(.98); }
	100%{ opacity:1; transform:translateY(0) scale(1); }
}

.load-in{ animation:wander-fade-up .8s var(--ease-out) both; }
.load-in.d1{ animation-delay:.09s; } .load-in.d2{ animation-delay:.18s; }
.load-in.d3{ animation-delay:.27s; } .load-in.d4{ animation-delay:.36s; }
.load-in.d5{ animation-delay:.45s; } .load-in.d6{ animation-delay:.54s; }

.pulse-once{ animation:wander-pulse 1.6s ease-out 1; }

/* stagger destination / feature grids on reveal */
.grid .reveal:nth-child(1){ transition-delay:0s; }
.grid .reveal:nth-child(2){ transition-delay:.08s; }
.grid .reveal:nth-child(3){ transition-delay:.16s; }
.grid .reveal:nth-child(4){ transition-delay:.24s; }

@media (prefers-reduced-motion: reduce){
	.load-in,.trip-card .route path,.trip-card .route .plane,.btn-primary::after,.trust-badge,.itin-photo-badge.is-changing{ animation:none!important; }
	.itin-track-fill,.itin-icon,.itin-connector::before,.itin-connector::after,.itin-card,.itin-card-indicator,.itin-card-panel,.itin-photo-image{ transition:none!important; }
}
