/* =========================================================
   ASVA TRANSPORT SOLUTIONS — Animations & Effects
   ========================================================= */

/* Parallax layer */
.parallax { background-attachment: fixed; background-position: center; background-size: cover; background-repeat: no-repeat; }
@media (max-width: 992px) { .parallax { background-attachment: scroll; } }

/* Gradient sheen on hover for cards */
.card, .stile, .ind-tile { will-change: transform; }

/* Animated gradient background for hero fallback */
.hero__bg--gradient { background: linear-gradient(120deg, #0A1F40, #163B72, #2563EB, #163B72); background-size: 300% 300%; animation: gradientShift 14s ease infinite; }
@keyframes gradientShift { 0%{background-position:0% 50%;} 50%{background-position:100% 50%;} 100%{background-position:0% 50%;} }

/* Moving truck marquee accent */
.marquee { overflow: hidden; white-space: nowrap; }
.marquee__track { display: inline-flex; gap: 60px; animation: marquee 22s linear infinite; }
.marquee:hover .marquee__track { animation-play-state: paused; }
@keyframes marquee { from { transform: translateX(0);} to { transform: translateX(-50%);} }

/* Route dash line */
.route-line { stroke-dasharray: 8 8; animation: dash 1.4s linear infinite; }
@keyframes dash { to { stroke-dashoffset: -32; } }

/* Count-up initial state */
.counter b[data-count] { min-height: 1em; }

/* Reveal helpers (used if AOS unavailable) */
.reveal { opacity: 0; transform: translateY(30px); transition: opacity .7s var(--ease), transform .7s var(--ease); }
.reveal.in { opacity: 1; transform: none; }

/* Icon float */
.floaty-ic { animation: floaty 3.4s ease-in-out infinite; }

/* Shine on buttons */
.btn-accent::before, .btn-primary::before {
  content: ""; position: absolute; top: 0; left: -60%; width: 40%; height: 100%;
  background: linear-gradient(120deg, transparent, rgba(255,255,255,.4), transparent);
  transform: skewX(-20deg); transition: left .6s var(--ease); border-radius: inherit;
}
.btn-accent { overflow: hidden; }
.btn-primary { overflow: hidden; }
.btn-accent:hover::before, .btn-primary:hover::before { left: 130%; }

/* Pulse ring for live indicator */
.live-dot { display: inline-flex; align-items: center; gap: 8px; font-size: .8rem; }
.live-dot::before { content: ""; width: 9px; height: 9px; border-radius: 50%; background: #22c55e; box-shadow: 0 0 0 0 rgba(34,197,94,.7); animation: livepulse 1.8s infinite; }
@keyframes livepulse { 0%{box-shadow:0 0 0 0 rgba(34,197,94,.6);} 70%{box-shadow:0 0 0 10px rgba(34,197,94,0);} 100%{box-shadow:0 0 0 0 rgba(34,197,94,0);} }

/* Card hover glow accent for dark sections */
.section--dark .card { background: rgba(255,255,255,.06); border-color: rgba(255,255,255,.12); color: #dbe6fb; }
.section--dark .card h3 { color: #fff; }
.section--dark .card p { color: rgba(255,255,255,.7); }

/* Number/percentage bar fill */
.bar { height: 8px; border-radius: 8px; background: rgba(255,255,255,.15); overflow: hidden; }
.bar__fill { height: 100%; border-radius: 8px; background: var(--grad-accent); width: 0; transition: width 1.4s var(--ease); }

/* Header shrink on scroll */
.header { transition: box-shadow .3s var(--ease), background .3s var(--ease); }

/* Hover lift utility */
.hover-lift { transition: transform .35s var(--ease), box-shadow .35s var(--ease); }
.hover-lift:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg); }

/* AOS timing niceties */
[data-aos] { pointer-events: none; }
[data-aos].aos-animate { pointer-events: auto; }
