/* ═══════════════════════════════════════════════════════════════════
   AsliProperty — PREMIUM HOMEPAGE ANIMATIONS
   animations.css  |  Drop-in enhancement layer
   Zero changes to style.css / script.js / HTML structure
═══════════════════════════════════════════════════════════════════ */

/* ── 0. GPU ACCELERATION HINT ─────────────────────────────────────── */
.pv-reveal,
.pv-reveal-left,
.pv-reveal-right,
.pv-card-stagger,
.pv-float,
.pv-counter,
.gov-card,
.testimonial-card,
.compare-card,
.grid-item,
.transport-item,
.trust-item,
.btn,
.nav-link {
  will-change: transform, opacity;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}


/* ═══════════════════════════════════════════════════════════════════
   1. PREMIUM PAGE LOADER  (replaces basic fade)
═══════════════════════════════════════════════════════════════════ */
#pv-page-loader {
  position: fixed;
  inset: 0;
  z-index: 99999;
  background: #ffffff;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 20px;
  transition: opacity 0.7s cubic-bezier(0.4,0,0.2,1),
              visibility 0.7s cubic-bezier(0.4,0,0.2,1);
}
#pv-page-loader.pv-loader-out {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}
.pv-loader-logo {
  display: flex;
  align-items: center;
  gap: 10px;
  opacity: 0;
  transform: translateY(12px);
  animation: pvLoaderLogoIn 0.6s 0.1s cubic-bezier(0.34,1.56,0.64,1) forwards;
}
.pv-loader-icon {
  width: 48px; height: 48px;
  border-radius: 14px;
  background: #141E3A;
  color: #fff;
  display: flex; align-items: center; justify-content: center;
  font-size: 20px;
  box-shadow: 0 12px 32px rgba(20,30,58,0.22);
}
.pv-loader-brand {
  font-family: 'Playfair Display', serif;
  font-weight: 900;
  font-size: 22px;
  letter-spacing: -0.02em;
  color: #141E3A;
}
.pv-loader-brand span { color: #141E3A; }
.pv-loader-bar-wrap {
  width: 180px;
  height: 3px;
  background: rgba(20,30,58,0.08);
  border-radius: 99px;
  overflow: hidden;
  opacity: 0;
  animation: pvFadeIn 0.4s 0.5s ease forwards;
}
.pv-loader-bar {
  height: 100%;
  width: 0%;
  background: linear-gradient(90deg, #141E3A 0%, rgba(20,30,58,0.6) 100%);
  border-radius: 99px;
  animation: pvLoaderBar 1.1s 0.6s cubic-bezier(0.4,0,0.2,1) forwards;
}
.pv-loader-text {
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(20,30,58,0.4);
  opacity: 0;
  animation: pvFadeIn 0.4s 0.7s ease forwards;
}
@keyframes pvLoaderLogoIn {
  to { opacity: 1; transform: translateY(0); }
}
@keyframes pvLoaderBar {
  to { width: 100%; }
}
@keyframes pvFadeIn {
  to { opacity: 1; }
}


/* ═══════════════════════════════════════════════════════════════════
   2. HERO ENTRANCE  (step-1 section)
═══════════════════════════════════════════════════════════════════ */

/* Hero ambient background pulse */
#step-1 {
  position: relative;
  overflow: visible;
}
#step-1::before {
  content: '';
  position: absolute;
  top: -120px; left: 50%;
  transform: translateX(-50%);
  width: 900px; height: 600px;
  background: radial-gradient(ellipse 60% 50% at 50% 40%,
    rgba(20,30,58,0.05) 0%,
    rgba(20,30,58,0.02) 50%,
    transparent 100%);
  pointer-events: none;
  z-index: 0;
  animation: pvHeroGlow 8s ease-in-out infinite alternate;
}
@keyframes pvHeroGlow {
  from { opacity: 0.6; transform: translateX(-50%) scale(1); }
  to   { opacity: 1;   transform: translateX(-50%) scale(1.08); }
}

/* Ad banner entrance */
.ad-banner {
  opacity: 0;
  transform: translateY(-18px) scale(0.985);
  animation: pvBannerIn 0.9s 0.3s cubic-bezier(0.34,1.2,0.64,1) forwards;
}
@keyframes pvBannerIn {
  to { opacity: 1; transform: translateY(0) scale(1); }
}

/* Step-1 header pill + title */
.step1-header .pill {
  opacity: 0;
  transform: translateY(10px);
  animation: pvSlideUp 0.7s 0.5s cubic-bezier(0.34,1.4,0.64,1) forwards;
}
.hero-title {
  opacity: 0;
  transform: translateY(16px);
  animation: pvSlideUp 0.9s 0.65s cubic-bezier(0.34,1.2,0.64,1) forwards;
}

/* Main form card entrance */
#step-1 .glass-card {
  opacity: 0;
  transform: translateY(28px) scale(0.98);
  animation: pvCardIn 1s 0.8s cubic-bezier(0.34,1.1,0.64,1) forwards;
}
@keyframes pvCardIn {
  to { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes pvSlideUp {
  to { opacity: 1; transform: translateY(0); }
}


/* ═══════════════════════════════════════════════════════════════════
   3. FLOATING PARTICLES  (hero background)
═══════════════════════════════════════════════════════════════════ */
#pv-particles {
  position: absolute;
  inset: 0;
  pointer-events: none;
  overflow: hidden;
  z-index: 0;
}
.pv-particle {
  position: absolute;
  border-radius: 50%;
  background: rgba(20,30,58,0.06);
  animation: pvParticleFloat linear infinite;
}
@keyframes pvParticleFloat {
  0%   { transform: translateY(0px) translateX(0px) scale(1);   opacity: 0; }
  10%  { opacity: 1; }
  50%  { transform: translateY(-60px) translateX(20px) scale(1.1); }
  90%  { opacity: 0.6; }
  100% { transform: translateY(-120px) translateX(-10px) scale(0.8); opacity: 0; }
}


/* ═══════════════════════════════════════════════════════════════════
   4. SCROLL REVEAL — BASE STATES
═══════════════════════════════════════════════════════════════════ */
.pv-reveal {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity 0.75s cubic-bezier(0.4,0,0.2,1),
              transform 0.75s cubic-bezier(0.34,1.1,0.64,1);
}
.pv-reveal-left {
  opacity: 0;
  transform: translateX(-52px);
  transition: opacity 0.75s cubic-bezier(0.4,0,0.2,1),
              transform 0.75s cubic-bezier(0.34,1.1,0.64,1);
}
.pv-reveal-right {
  opacity: 0;
  transform: translateX(52px);
  transition: opacity 0.75s cubic-bezier(0.4,0,0.2,1),
              transform 0.75s cubic-bezier(0.34,1.1,0.64,1);
}
.pv-reveal-scale {
  opacity: 0;
  transform: scale(0.92) translateY(20px);
  transition: opacity 0.8s cubic-bezier(0.4,0,0.2,1),
              transform 0.8s cubic-bezier(0.34,1.15,0.64,1);
}

/* Triggered state — added by IntersectionObserver */
.pv-visible {
  opacity: 1 !important;
  transform: none !important;
}

/* Stagger delays for children */
.pv-stagger > *:nth-child(1)  { transition-delay: 0s; }
.pv-stagger > *:nth-child(2)  { transition-delay: 0.1s; }
.pv-stagger > *:nth-child(3)  { transition-delay: 0.18s; }
.pv-stagger > *:nth-child(4)  { transition-delay: 0.26s; }
.pv-stagger > *:nth-child(5)  { transition-delay: 0.34s; }
.pv-stagger > *:nth-child(6)  { transition-delay: 0.42s; }
.pv-stagger > *:nth-child(7)  { transition-delay: 0.50s; }
.pv-stagger > *:nth-child(8)  { transition-delay: 0.58s; }

/* Delay helpers for manual use */
.pv-d1 { transition-delay: 0.08s !important; }
.pv-d2 { transition-delay: 0.18s !important; }
.pv-d3 { transition-delay: 0.28s !important; }
.pv-d4 { transition-delay: 0.38s !important; }
.pv-d5 { transition-delay: 0.48s !important; }


/* ═══════════════════════════════════════════════════════════════════
   5. GOVERNMENT INTEGRATIONS SECTION
═══════════════════════════════════════════════════════════════════ */

/* Section heading reveal */
.gov-integrations-wrap .section-label-wrap,
.gov-integrations-wrap .section-heading,
.gov-integrations-wrap .gov-section-sub {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.7s cubic-bezier(0.4,0,0.2,1),
              transform 0.7s cubic-bezier(0.34,1.2,0.64,1);
}
.gov-integrations-wrap .section-label-wrap.pv-visible,
.gov-integrations-wrap .section-heading.pv-visible,
.gov-integrations-wrap .gov-section-sub.pv-visible {
  opacity: 1; transform: none;
}

/* Gov cards stagger */
.gov-card {
  opacity: 0;
  transform: translateY(20px) scale(0.97);
  transition: opacity 0.55s cubic-bezier(0.4,0,0.2,1),
              transform 0.55s cubic-bezier(0.34,1.2,0.64,1),
              box-shadow 0.25s ease,
              border-color 0.25s ease;
}
.gov-card.pv-visible {
  opacity: 1; transform: none;
}

/* Gov card premium hover — accent-driven (see style.css) */
.gov-v2 .gov-card:hover {
  transform: translateY(-6px) scale(1.02) !important;
}
.gov-badge.live {
  transition: box-shadow 0.25s ease, background 0.25s ease;
}
.gov-v2 .gov-card:hover .gov-badge.live {
  box-shadow: 0 0 12px rgba(var(--gov-accent-rgb), 0.3);
}


/* ═══════════════════════════════════════════════════════════════════
   6. COMPARISON SECTION
═══════════════════════════════════════════════════════════════════ */
.comparison-wrap .section-heading {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.7s 0s cubic-bezier(0.4,0,0.2,1),
              transform 0.7s 0s cubic-bezier(0.34,1.2,0.64,1);
}
.comparison-wrap .section-heading.pv-visible { opacity:1; transform:none; }

.compare-without {
  opacity: 0;
  transform: translateX(-44px);
  transition: opacity 0.75s 0.15s cubic-bezier(0.4,0,0.2,1),
              transform 0.75s 0.15s cubic-bezier(0.34,1.1,0.64,1);
}
.compare-with {
  opacity: 0;
  transform: translateX(44px);
  transition: opacity 0.75s 0.25s cubic-bezier(0.4,0,0.2,1),
              transform 0.75s 0.25s cubic-bezier(0.34,1.1,0.64,1);
}
.compare-without.pv-visible,
.compare-with.pv-visible {
  opacity: 1;
  transform: none !important;
  transition: box-shadow 0.3s ease !important;
}

/* Compare card hover lift */
.compare-without:hover {
  box-shadow: 0 16px 48px rgba(20,30,58,0.10) !important;
  transform: none !important;
  transition: box-shadow 0.3s ease !important;
}
.compare-with:hover {
  box-shadow: 0 20px 56px rgba(20,30,58,0.25) !important;
  transform: none !important;
  transition: box-shadow 0.3s ease !important;
}

/* Compare list items stagger */
.compare-list li {
  opacity: 0;
  transform: translateX(-12px);
  transition: opacity 0.4s ease, transform 0.4s ease;
}
.compare-with .compare-list li {
  transform: translateX(12px);
}
.pv-list-visible .compare-list li {
  opacity: 1; transform: none;
}
.pv-list-visible .compare-list li:nth-child(1) { transition-delay: 0.1s; }
.pv-list-visible .compare-list li:nth-child(2) { transition-delay: 0.17s; }
.pv-list-visible .compare-list li:nth-child(3) { transition-delay: 0.24s; }
.pv-list-visible .compare-list li:nth-child(4) { transition-delay: 0.31s; }
.pv-list-visible .compare-list li:nth-child(5) { transition-delay: 0.38s; }


/* ═══════════════════════════════════════════════════════════════════
   7. TESTIMONIALS SECTION
═══════════════════════════════════════════════════════════════════ */
.testimonials-wrap .section-label-wrap,
.testimonials-wrap .section-heading {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.7s cubic-bezier(0.4,0,0.2,1),
              transform 0.7s cubic-bezier(0.34,1.2,0.64,1);
}
.testimonials-wrap .section-label-wrap.pv-visible,
.testimonials-wrap .section-heading.pv-visible { opacity:1; transform:none; }

.testimonial-card {
  opacity: 0;
  transform: translateY(32px) scale(0.97);
  transition: opacity 0.65s cubic-bezier(0.4,0,0.2,1),
              transform 0.65s cubic-bezier(0.34,1.15,0.64,1),
              box-shadow 0.3s ease,
              border-color 0.3s ease;
}
.testimonial-card.pv-visible {
  opacity: 1; transform: none;
}

/* Premium testimonial hover */
.testimonial-card:hover {
  box-shadow: 0 20px 56px rgba(20,30,58,0.12) !important;
  border-color: rgba(20,30,58,0.18) !important;
  transform: translateY(-6px) scale(1.015) !important;
}
.testimonial-card:hover .testimonial-avatar {
  transform: scale(1.08);
  box-shadow: 0 6px 20px rgba(20,30,58,0.2);
}
.testimonial-avatar {
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.testimonial-card:hover .testimonial-stars i {
  animation: pvStarPop 0.4s ease both;
}
.testimonial-stars i:nth-child(1) { animation-delay: 0s; }
.testimonial-stars i:nth-child(2) { animation-delay: 0.06s; }
.testimonial-stars i:nth-child(3) { animation-delay: 0.12s; }
.testimonial-stars i:nth-child(4) { animation-delay: 0.18s; }
.testimonial-stars i:nth-child(5) { animation-delay: 0.24s; }
@keyframes pvStarPop {
  0%   { transform: scale(1); }
  50%  { transform: scale(1.35) rotate(8deg); }
  100% { transform: scale(1) rotate(0deg); }
}


/* ═══════════════════════════════════════════════════════════════════
   8. SECTION DIVIDERS  (wave / gradient separators)
═══════════════════════════════════════════════════════════════════ */
.pv-divider {
  width: 100%;
  height: 64px;
  margin: 0;
  overflow: hidden;
  line-height: 0;
  position: relative;
}
.pv-divider svg {
  display: block;
  width: 100%;
  height: 100%;
}

/* Gradient blur divider between major sections */
.pv-divider-gradient {
  height: 2px;
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(20,30,58,0.08) 20%,
    rgba(20,30,58,0.14) 50%,
    rgba(20,30,58,0.08) 80%,
    transparent 100%);
  margin: 0;
  border: none;
  position: relative;
  overflow: visible;
}
.pv-divider-gradient::before {
  content: '';
  position: absolute;
  top: -1px; left: 50%;
  transform: translateX(-50%);
  width: 40px; height: 4px;
  background: rgba(20,30,58,0.22);
  border-radius: 99px;
}


/* ═══════════════════════════════════════════════════════════════════
   9. FLOATING CARD EFFECT  (subtle perpetual float)
═══════════════════════════════════════════════════════════════════ */
.pv-float-card {
  animation: pvFloatCard 6s ease-in-out infinite;
}
.pv-float-card:nth-child(2) { animation-delay: -2s; }
.pv-float-card:nth-child(3) { animation-delay: -4s; }
@keyframes pvFloatCard {
  0%, 100% { transform: translateY(0px); }
  50%       { transform: translateY(-6px); }
}

/* Hover glow for grid items */
.grid-item {
  transition: background 0.28s ease,
              box-shadow 0.28s ease,
              border-color 0.28s ease !important;
}
.grid-item:hover {
  box-shadow: 0 12px 36px rgba(20,30,58,0.10) !important;
}

/* Transport items */
.transport-item {
  transition: background 0.28s ease,
              box-shadow 0.28s ease,
              border-color 0.28s ease !important;
}
.transport-item:hover {
  box-shadow: 0 10px 30px rgba(20,30,58,0.10) !important;
}


/* ═══════════════════════════════════════════════════════════════════
   10. NAV — premium scroll-aware enhancement
═══════════════════════════════════════════════════════════════════ */
.nav {
  transition: box-shadow 0.4s ease,
              background 0.4s ease,
              padding 0.3s ease !important;
}
.nav.pv-nav-scrolled {
  box-shadow: 0 4px 32px rgba(20,30,58,0.10);
  background: rgba(250,250,250,0.97) !important;
}

/* Nav brand hover */
.brand {
  transition: transform 0.25s cubic-bezier(0.34,1.4,0.64,1);
}
.brand:hover {
  transform: scale(1.04);
}
.brand-icon {
  transition: box-shadow 0.25s ease, transform 0.25s ease;
}
.brand:hover .brand-icon {
  box-shadow: 0 16px 36px rgba(20,30,58,0.25) !important;
  transform: rotate(-4deg);
}

/* Nav links enhanced */
.nav-link {
  transition: transform 0.25s cubic-bezier(0.34,1.4,0.64,1),
              box-shadow 0.25s ease,
              background 0.25s ease !important;
  position: relative;
  overflow: hidden;
}
.nav-link::after {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(255,255,255,0.1);
  opacity: 0;
  transition: opacity 0.2s;
  border-radius: inherit;
}
.nav-link:hover::after { opacity: 1; }
.nav-link:active { transform: translateY(0) scale(0.97) !important; }


/* ═══════════════════════════════════════════════════════════════════
   11. BUTTON MICRO-INTERACTIONS
═══════════════════════════════════════════════════════════════════ */
.btn-primary {
  transition: transform 0.25s cubic-bezier(0.34,1.4,0.64,1),
              box-shadow 0.25s ease,
              background 0.25s ease !important;
  position: relative;
  overflow: hidden;
}
/* Ripple shine on hover */
.btn-primary::before {
  content: '';
  position: absolute;
  top: 0; left: -100%;
  width: 60%; height: 100%;
  background: linear-gradient(90deg,
    transparent,
    rgba(255,255,255,0.12),
    transparent);
  transform: skewX(-20deg);
  transition: left 0.5s ease;
}
.btn-primary:hover::before { left: 160%; }
.btn-primary:hover {
  transform: translateY(-3px) !important;
  box-shadow: 0 24px 48px rgba(20,30,58,0.24) !important;
}
.btn-primary:active {
  transform: translateY(-1px) scale(0.98) !important;
}

/* Arrow icon bounce */
.btn-primary i.fa-arrow-right {
  transition: transform 0.25s cubic-bezier(0.34,1.6,0.64,1);
  display: inline-block;
}
.btn-primary:hover i.fa-arrow-right {
  transform: translateX(4px);
}


/* ═══════════════════════════════════════════════════════════════════
   12. INPUT FIELD — PREMIUM FOCUS
═══════════════════════════════════════════════════════════════════ */
.input-field {
  transition: border-color 0.25s ease,
              background 0.25s ease,
              box-shadow 0.25s ease,
              transform 0.2s ease !important;
}
.input-field:focus {
  transform: translateY(-1px);
}


/* ═══════════════════════════════════════════════════════════════════
   13. SCROLL PROGRESS BAR (top of viewport)
═══════════════════════════════════════════════════════════════════ */
#pv-scroll-progress {
  position: fixed;
  top: 0; left: 0;
  width: 0%;
  height: 3px;
  background: linear-gradient(90deg, #141E3A 0%, rgba(20,30,58,0.7) 100%);
  z-index: 99998;
  border-radius: 0 2px 2px 0;
  transition: width 0.1s linear;
  transform-origin: left;
}


/* ═══════════════════════════════════════════════════════════════════
   14. FOOTER — PREMIUM ENTRANCE
═══════════════════════════════════════════════════════════════════ */
.footer-trust-bar {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.7s 0s ease, transform 0.7s 0s cubic-bezier(0.34,1.1,0.64,1);
}
.footer-trust-bar.pv-visible { opacity:1; transform:none; }

.trust-item {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 0.5s ease,
              transform 0.5s cubic-bezier(0.34,1.2,0.64,1),
              box-shadow 0.25s ease;
}
.trust-item.pv-visible { opacity:1; transform:translateY(0); }

/* Stagger trust items */
.trust-item:nth-child(1) { transition-delay: 0.05s; }
.trust-item:nth-child(3) { transition-delay: 0.12s; }
.trust-item:nth-child(5) { transition-delay: 0.19s; }
.trust-item:nth-child(7) { transition-delay: 0.26s; }

.footer-main {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.8s 0.1s ease, transform 0.8s 0.1s cubic-bezier(0.34,1.1,0.64,1);
}
.footer-main.pv-visible { opacity:1; transform:none; }

.footer-newsletter {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.7s ease, transform 0.7s cubic-bezier(0.34,1.1,0.64,1);
}
.footer-newsletter.pv-visible { opacity:1; transform:none; }


/* ═══════════════════════════════════════════════════════════════════
   15. ICON ANIMATIONS
═══════════════════════════════════════════════════════════════════ */
.icon {
  transition: transform 0.3s cubic-bezier(0.34,1.6,0.64,1),
              box-shadow 0.3s ease !important;
}
.grid-item:hover .icon,
.transport-item:hover .icon {
  transform: scale(1.15) rotate(-5deg);
}

/* Trust bar icons */
.trust-icon {
  transition: background 0.25s ease,
              box-shadow 0.25s ease,
              transform 0.3s cubic-bezier(0.34,1.6,0.64,1) !important;
}
.trust-item:hover .trust-icon {
  transform: scale(1.1) rotate(-4deg);
}

/* Shield icon in brand — subtle heartbeat */
.brand-icon i {
  display: inline-block;
  animation: pvShieldPulse 4s ease-in-out infinite;
}
@keyframes pvShieldPulse {
  0%,100% { transform: scale(1); }
  50%      { transform: scale(1.08); }
}


/* ═══════════════════════════════════════════════════════════════════
   16. AD BANNER — parallax class applied via JS
═══════════════════════════════════════════════════════════════════ */
.pv-parallax {
  transition: transform 0.1s linear;
  will-change: transform;
}


/* ═══════════════════════════════════════════════════════════════════
   17. COUNTER NUMBERS  (stats animated by JS)
═══════════════════════════════════════════════════════════════════ */
.pv-counter-wrap {
  opacity: 0;
  transform: translateY(16px) scale(0.95);
  transition: opacity 0.6s ease, transform 0.6s cubic-bezier(0.34,1.3,0.64,1);
}
.pv-counter-wrap.pv-visible {
  opacity:1; transform:none;
}


/* ═══════════════════════════════════════════════════════════════════
   18. WAVE SECTION SEPARATOR  (inserted between major sections)
═══════════════════════════════════════════════════════════════════ */
.pv-wave-sep {
  width: 100%;
  overflow: hidden;
  line-height: 0;
  margin: 0;
  padding: 0;
  height: 48px;
  position: relative;
}
.pv-wave-sep svg {
  display: block;
  width: 100%;
  height: 100%;
}


/* ═══════════════════════════════════════════════════════════════════
   19. SOCIAL BUTTONS — enhanced hover
═══════════════════════════════════════════════════════════════════ */
.social-btn {
  transition: background 0.25s ease,
              color 0.25s ease,
              transform 0.3s cubic-bezier(0.34,1.6,0.64,1),
              box-shadow 0.25s ease !important;
}


/* ═══════════════════════════════════════════════════════════════════
   20. FOOTER LINKS — underline slide
═══════════════════════════════════════════════════════════════════ */
.footer-link {
  position: relative;
  overflow: hidden;
}


/* ═══════════════════════════════════════════════════════════════════
   21. NEWSLETTER BUTTON — enhanced
═══════════════════════════════════════════════════════════════════ */
.newsletter-btn {
  transition: background 0.25s ease, gap 0.25s ease,
              transform 0.2s cubic-bezier(0.34,1.4,0.64,1),
              box-shadow 0.25s ease !important;
}
.newsletter-btn:hover {
  transform: translateX(3px);
}


/* ═══════════════════════════════════════════════════════════════════
   22. IMAGE / BANNER REVEAL
═══════════════════════════════════════════════════════════════════ */
.pv-img-reveal {
  overflow: hidden;
  border-radius: inherit;
}
.pv-img-reveal img {
  transform: scale(1.06);
  transition: transform 1s cubic-bezier(0.4,0,0.2,1);
  will-change: transform;
}
.pv-img-reveal.pv-visible img {
  transform: scale(1);
}


/* ═══════════════════════════════════════════════════════════════════
   23. GOV GRID — staggered glow line
═══════════════════════════════════════════════════════════════════ */
.gov-grid::before {
  content: '';
  display: none;
}


/* ═══════════════════════════════════════════════════════════════════
   24. MOBILE OPTIMISATIONS
═══════════════════════════════════════════════════════════════════ */
@media (max-width: 720px) {
  .pv-reveal,
  .pv-reveal-left,
  .pv-reveal-right {
    transform: translateY(24px) !important;
  }
  #step-1::before { width: 100%; }
  .pv-float-card { animation: none; }
  #pv-particles { display: none; }

  /* Reduce motion on mobile for perf */
  .btn-primary::before { display: none; }
}

/* Respect reduced-motion preference */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}