/* ==========================================================================
   RVC Logistics — Animations & Preloader
   ========================================================================== */

/* ---------- Preloader ---------- */
.preloader {
    position: fixed; inset: 0; z-index: 9999;
    display: grid; place-items: center;
    background: radial-gradient(1000px 600px at 50% 30%, #16233a 0%, #0B1220 70%);
    transition: opacity .6s ease, visibility .6s ease;
}
.preloader.is-hidden { opacity: 0; visibility: hidden; }
.preloader__inner { text-align: center; }

.preloader__badge {
    position: relative; width: 96px; height: 96px; margin: 0 auto 22px;
    display: grid; place-items: center;
}
.preloader__logo { max-width: 60px; max-height: 60px; width: auto; object-fit: contain; animation: pl-pop .8s cubic-bezier(.2,.8,.2,1) both; }
.preloader__mark {
    width: 60px; height: 60px; border-radius: 16px;
    background: linear-gradient(135deg, var(--gold), var(--gold-bright));
    display: grid; place-items: center; color: var(--navy);
    animation: pl-pop .8s cubic-bezier(.2,.8,.2,1) both, pl-float 2.4s ease-in-out .8s infinite;
}
.preloader__ring {
    position: absolute; inset: 0; border-radius: 50%;
    border: 2px solid rgba(242,169,0,.18);
    border-top-color: var(--gold);
    animation: pl-spin 1s linear infinite;
}
.preloader__name {
    color: #fff; font-weight: 800; letter-spacing: .04em; font-size: 1.05rem;
    opacity: 0; animation: pl-fade .6s ease .3s forwards;
}
.preloader__track {
    width: 180px; height: 2px; margin: 18px auto 0; border-radius: 2px;
    background: rgba(255,255,255,.12); position: relative; overflow: hidden;
}
.preloader__plane {
    position: absolute; top: 50%; left: -20px; color: var(--gold);
    transform: translateY(-50%);
    animation: pl-fly 1.6s cubic-bezier(.5,0,.5,1) infinite;
}
.preloader__track::after {
    content: ''; position: absolute; top: 0; left: 0; height: 100%; width: 40%;
    background: linear-gradient(90deg, transparent, var(--gold)); border-radius: 2px;
    animation: pl-load 1.6s cubic-bezier(.5,0,.5,1) infinite;
}

@keyframes pl-spin { to { transform: rotate(360deg); } }
@keyframes pl-pop { from { transform: scale(.4); opacity: 0; } to { transform: scale(1); opacity: 1; } }
@keyframes pl-float { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
@keyframes pl-fade { to { opacity: 1; } }
@keyframes pl-fly { 0% { left: -18px; opacity: 0; } 20% { opacity: 1; } 100% { left: 190px; opacity: 0; } }
@keyframes pl-load { 0% { transform: translateX(-100%); } 100% { transform: translateX(360%); } }

/* ---------- Scroll reveal ---------- */
[data-reveal] {
    opacity: 0; transform: translateY(28px);
    transition: opacity .7s cubic-bezier(.2,.8,.2,1), transform .7s cubic-bezier(.2,.8,.2,1);
    will-change: opacity, transform;
}
[data-reveal="left"]  { transform: translateX(-32px); }
[data-reveal="right"] { transform: translateX(32px); }
[data-reveal="zoom"]  { transform: scale(.92); }
[data-reveal].is-visible { opacity: 1; transform: none; }
/* Stagger children */
[data-reveal-stagger] > * {
    opacity: 0; transform: translateY(24px);
    transition: opacity .6s cubic-bezier(.2,.8,.2,1), transform .6s cubic-bezier(.2,.8,.2,1);
}
[data-reveal-stagger].is-visible > * { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
    [data-reveal], [data-reveal-stagger] > * { opacity: 1 !important; transform: none !important; transition: none !important; }
    .preloader__mark { animation: none; }
}

/* ---------- Hero entrance ---------- */
.hero__inner > * { opacity: 0; animation: heroUp .8s cubic-bezier(.2,.8,.2,1) forwards; }
.hero__inner > .eyebrow { animation-delay: .15s; }
.hero__inner > h1 { animation-delay: .3s; }
.hero__inner > p { animation-delay: .45s; }
.hero__inner > .hero__cta { animation-delay: .6s; }
.hero__inner > .hero__trust { animation-delay: .75s; }
@keyframes heroUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: none; } }

/* Subtle Ken Burns zoom on hero image */
.hero__bg img { animation: kenburns 18s ease-in-out infinite alternate; }
@keyframes kenburns { from { transform: scale(1); } to { transform: scale(1.08); } }

/* ---------- Card / element hover lift ---------- */
.card, .service-card, .kpi { transition: transform .25s cubic-bezier(.2,.8,.2,1), box-shadow .25s ease, border-color .2s ease; }
.reveal-hover:hover { transform: translateY(-4px); box-shadow: var(--shadow); }

/* Gold shimmer underline on section headings */
.section-head h2 { position: relative; }

/* Floating shapes in navy sections (decorative) */
.float-slow { animation: floatY 6s ease-in-out infinite; }
.float-slow--alt { animation: floatY 7.5s ease-in-out infinite reverse; }
@keyframes floatY { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-14px); } }

/* Count-up numbers start slightly dimmed */
.stat-item .num[data-count] { font-variant-numeric: tabular-nums; }

/* Button pulse for primary CTAs in hero */
.hero__cta .btn--primary { position: relative; }
.hero__cta .btn--primary::after {
    content: ''; position: absolute; inset: 0; border-radius: inherit;
    box-shadow: 0 0 0 0 rgba(242,169,0,.5); animation: ctaPulse 2.6s ease-out infinite;
}
@keyframes ctaPulse { 0% { box-shadow: 0 0 0 0 rgba(242,169,0,.5); } 70%,100% { box-shadow: 0 0 0 16px rgba(242,169,0,0); } }
