/* reveal-on-scroll -- the slight blur-to-sharp settle (on top of the existing
   fade+rise) reads as content quietly resolving into focus rather than
   popping in, which is what makes consecutive sections feel continuous
   rather than independently "switched on" as you reach each one. */
.reveal{opacity:0;transform:translateY(26px);filter:blur(6px);
  transition:opacity .9s var(--ease),transform .9s var(--ease),filter .9s var(--ease)}
.reveal.in{opacity:1;transform:none;filter:blur(0)}
[data-delay="1"]{transition-delay:.08s}[data-delay="2"]{transition-delay:.16s}
[data-delay="3"]{transition-delay:.24s}[data-delay="4"]{transition-delay:.32s}

@keyframes scrolldown{0%{transform:scaleY(0);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}
  51%{transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}

/* ---- hero ---- */
@keyframes navFadeDown{to{opacity:1;transform:none}}
@keyframes heroZoom{from{transform:scale(1.05)}to{transform:scale(1)}}
@keyframes heroDriftA{0%{transform:translate(0,0)}100%{transform:translate(-6%,4%)}}
@keyframes heroDriftB{0%{transform:translate(0,0)}100%{transform:translate(5%,-5%)}}
@keyframes heroParticle{0%{transform:translateY(0) translateX(0);opacity:0}10%{opacity:.7}90%{opacity:.3}100%{transform:translateY(-90px) translateX(12px);opacity:0}}
@keyframes heroFadeDown{to{opacity:1;transform:none}}
@keyframes heroLineReveal{to{opacity:1;transform:none}}
@keyframes heroFadeUp{to{opacity:1;transform:none}}
@keyframes heroBtnIn{to{opacity:1;transform:scale(1)}}
@keyframes heroCardIn{to{opacity:1;transform:none}}
@keyframes heroArrowBounce{0%,100%{transform:translateY(0)}50%{transform:translateY(6px)}}

/* =========================================================
   RESPONSIVE
   ========================================================= */
@media(max-width:1080px){
  .stats{grid-template-columns:repeat(2,1fr)}
  .services-grid{grid-template-columns:repeat(2,1fr)}
  .inventory-grid{grid-template-columns:repeat(2,1fr)}
  .filter-bar{grid-template-columns:repeat(4,1fr);}
  .filter-actions{grid-column:1/-1}
  .partners-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .testi-track > .testi{flex:0 0 calc((100% - 22px)/2)}
}
@media(max-width:900px){
  .nav-links{display:none}.burger{display:flex}
  /* nav-cta collapses to just the burger here: the hero already shows its
     own prominent "Browse Inventory" CTA right below, so keeping nav's
     near-identical "View Inventory" button visible at the same time reads
     as a duplicated button rather than a deliberate second action */
  .nav-cta .btn-ghost,.nav-cta .btn-primary{display:none}
  .about-grid,.finance-grid,.detail-grid,.contact-grid{grid-template-columns:1fr;gap:40px}
  .section{padding:78px 0}
  .hero-trust{grid-template-columns:repeat(2,minmax(0,1fr));max-width:520px}
  .location-info{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:600px){
  .wrap{padding:0 20px}
  .services-grid,.inventory-grid{grid-template-columns:1fr}
  .partners-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
  .partner-card{padding:24px 16px}
  .stats{grid-template-columns:1fr 1fr;gap:12px}
  .stat b{font-size:30px}
  .filter-bar{grid-template-columns:1fr 1fr}
  .form-row{grid-template-columns:1fr}
  .footer-top{grid-template-columns:1fr 1fr}
  .hero-actions{flex-direction:column}.hero-actions .btn-hero{width:100%;justify-content:center}
  .hero-trust{grid-template-columns:minmax(0,1fr)}
  .trust-bar{grid-template-columns:repeat(2,1fr)}
  .location-info{grid-template-columns:1fr}
  .testi-track > .testi{flex:0 0 100%}
  .testi-nav{width:38px;height:38px}
}
@media(prefers-reduced-motion:reduce){
  *{animation:none!important;transition-duration:.01ms!important}
  .reveal{opacity:1;transform:none;filter:none}
  .bg-orb{transform:none!important}
  .nav,.hero-tag,.hero-heading .line,.hero-sub,.hero-actions,.trust-card{opacity:1;transform:none}
  html{scroll-behavior:auto}
}
