/* ═══════════════════════════════════════════════════════════════
   Apex Transit — Whimsy Pass 2 (2026-07-29)
   Site-wide polish: button sheen, scroll reveal, card lift, focus glow.
   Professional logistics energy — shiny, not silly. Honours reduced-motion.
   ═══════════════════════════════════════════════════════════════ */

/* ── Primary CTA sheen (light sweep on hover) ── */
a.bg-apex-blue,
button.bg-apex-blue,
a.bg-apex-cta,
button.bg-apex-cta,
.apex-cta-btn.bg-apex-blue,
.apex-cta-btn.bg-apex-cta,
header a.bg-apex-blue,
footer a.bg-apex-cta,
footer a.bg-apex-blue,
button[type="submit"].bg-apex-blue {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  transition:
    transform 280ms cubic-bezier(0.2, 0.7, 0.2, 1),
    box-shadow 280ms cubic-bezier(0.2, 0.7, 0.2, 1),
    background-color 200ms ease,
    border-color 200ms ease;
}
a.bg-apex-blue::before,
button.bg-apex-blue::before,
a.bg-apex-cta::before,
button.bg-apex-cta::before,
.apex-cta-btn.bg-apex-blue::before,
.apex-cta-btn.bg-apex-cta::before,
header a.bg-apex-blue::before,
footer a.bg-apex-cta::before,
footer a.bg-apex-blue::before,
button[type="submit"].bg-apex-blue::before {
  content: "";
  position: absolute;
  inset: -20% -40%;
  background: linear-gradient(
    115deg,
    transparent 35%,
    rgba(255, 255, 255, 0.08) 42%,
    rgba(255, 255, 255, 0.42) 50%,
    rgba(2, 187, 255, 0.25) 54%,
    transparent 62%
  );
  transform: translateX(-70%) skewX(-12deg);
  transition: transform 0.65s cubic-bezier(0.2, 0.7, 0.2, 1);
  pointer-events: none;
  z-index: 1;
}
a.bg-apex-blue:hover::before,
button.bg-apex-blue:hover::before,
a.bg-apex-cta:hover::before,
button.bg-apex-cta:hover::before,
.apex-cta-btn.bg-apex-blue:hover::before,
.apex-cta-btn.bg-apex-cta:hover::before,
header a.bg-apex-blue:hover::before,
footer a.bg-apex-cta:hover::before,
footer a.bg-apex-blue:hover::before,
button[type="submit"].bg-apex-blue:hover::before {
  transform: translateX(70%) skewX(-12deg);
}
a.bg-apex-blue:hover,
button.bg-apex-blue:hover,
a.bg-apex-cta:hover,
button.bg-apex-cta:hover,
.apex-cta-btn.bg-apex-blue:hover,
header a.bg-apex-blue:hover,
footer a.bg-apex-cta:hover,
button[type="submit"].bg-apex-blue:hover {
  transform: translateY(-2px);
  box-shadow:
    0 12px 28px -10px rgba(25, 133, 200, 0.55),
    0 0 0 1px rgba(2, 187, 255, 0.15);
}
/* Keep label above sheen */
a.bg-apex-blue > *,
button.bg-apex-blue > *,
a.bg-apex-cta > *,
.apex-cta-btn > * {
  position: relative;
  z-index: 2;
}

/* Ghost / outline CTAs — soft cyan rim glow */
a.border-white\/40,
.apex-cta-btn.border,
a.backdrop-blur-md.border {
  transition:
    transform 280ms cubic-bezier(0.2, 0.7, 0.2, 1),
    box-shadow 280ms ease,
    background-color 200ms ease,
    border-color 200ms ease;
}
a.border-white\/40:hover,
.apex-cta-btn.border:hover,
a.backdrop-blur-md.border:hover {
  transform: translateY(-2px);
  box-shadow: 0 0 0 1px rgba(2, 187, 255, 0.45), 0 10px 28px -12px rgba(2, 187, 255, 0.4);
}

/* ── Scroll reveal (JS adds .apex-reveal / .is-in) ── */
.apex-reveal {
  opacity: 0;
  transform: translate3d(0, 22px, 0);
  transition:
    opacity 0.7s cubic-bezier(0.2, 0.7, 0.2, 1),
    transform 0.7s cubic-bezier(0.2, 0.7, 0.2, 1);
  will-change: opacity, transform;
}
.apex-reveal.is-in {
  opacity: 1;
  transform: none;
}
.apex-reveal-delay-1 { transition-delay: 60ms; }
.apex-reveal-delay-2 { transition-delay: 120ms; }
.apex-reveal-delay-3 { transition-delay: 180ms; }
.apex-reveal-delay-4 { transition-delay: 240ms; }
.apex-reveal-delay-5 { transition-delay: 300ms; }

/* ── Card / tile lift (JS tags .apex-card) ── */
.apex-card {
  transition:
    transform 360ms cubic-bezier(0.2, 0.7, 0.2, 1),
    box-shadow 360ms cubic-bezier(0.2, 0.7, 0.2, 1),
    border-color 280ms ease;
}
.apex-card:hover {
  transform: translateY(-4px);
  box-shadow:
    0 20px 40px -16px rgba(50, 54, 67, 0.18),
    0 0 0 1px rgba(77, 131, 195, 0.12);
}

/* Icon chips in cards — gentle pop */
.apex-card .rounded-full {
  transition: transform 320ms cubic-bezier(0.2, 0.7, 0.2, 1), background-color 200ms ease;
}
.apex-card:hover .rounded-full {
  transform: scale(1.06);
}

/* ── Nav polish ── */
.glass-nav .nav-trigger,
.glass-nav a[href]:not(.bg-apex-blue) {
  position: relative;
  transition: color 180ms ease;
}
.glass-nav nav a[href]:not(.bg-apex-blue)::after {
  content: "";
  position: absolute;
  left: 0.5rem;
  right: 0.5rem;
  bottom: 0.55rem;
  height: 2px;
  border-radius: 2px;
  background: linear-gradient(90deg, #146B9E, #02BBFF);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 220ms cubic-bezier(0.2, 0.7, 0.2, 1);
  opacity: 0.9;
}
.glass-nav nav a[href]:not(.bg-apex-blue):hover::after {
  transform: scaleX(1);
}
/* Header top bar soft pulse on phone CTA */
header .bg-apex-blue-deep a[href^="tel"] {
  transition: color 180ms ease, text-shadow 180ms ease;
}
header .bg-apex-blue-deep a[href^="tel"]:hover {
  color: #fff;
  text-shadow: 0 0 12px rgba(2, 187, 255, 0.65);
}

/* ── Form focus sheen ── */
#main input[type="text"],
#main input[type="email"],
#main input[type="tel"],
#main input[type="number"],
#main input[type="url"],
#main select,
#main textarea {
  transition: border-color 180ms ease, box-shadow 180ms ease, background-color 180ms ease;
}
#main input:focus,
#main select:focus,
#main textarea:focus {
  outline: none;
  border-color: #146B9E !important;
  box-shadow:
    0 0 0 3px rgba(25, 133, 200, 0.18),
    0 0 20px -4px rgba(2, 187, 255, 0.35);
}

/* ── Deep blue band ambient shimmer ── */
section.bg-apex-blue-deep,
section.relative.overflow-hidden.bg-apex-blue-deep {
  position: relative;
}
section.bg-apex-blue-deep::after,
section.relative.overflow-hidden.bg-apex-blue-deep::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(
    105deg,
    transparent 0%,
    transparent 40%,
    rgba(2, 187, 255, 0.08) 50%,
    transparent 60%,
    transparent 100%
  );
  background-size: 200% 100%;
  animation: apex-band-shimmer 10s ease-in-out infinite;
  z-index: 0;
}
section.bg-apex-blue-deep > *,
section.relative.overflow-hidden.bg-apex-blue-deep > * {
  position: relative;
  z-index: 1;
}
@keyframes apex-band-shimmer {
  0%, 100% { background-position: 100% 0; }
  50% { background-position: 0% 0; }
}

/* ── Footer link hover glow ── */
footer a {
  transition: color 180ms ease, opacity 180ms ease;
}
footer a:hover {
  color: #7da7fa;
}

/* ── Soft selection color brand ── */
::selection {
  background: rgba(25, 133, 200, 0.28);
  color: #1a1a2e;
}

/* ── Reduced motion: kill everything shiny ── */
@media (prefers-reduced-motion: reduce) {
  a.bg-apex-blue::before,
  button.bg-apex-blue::before,
  a.bg-apex-cta::before,
  button.bg-apex-cta::before,
  .apex-cta-btn::before,
  header a.bg-apex-blue::before,
  footer a.bg-apex-cta::before,
  button[type="submit"].bg-apex-blue::before {
    display: none !important;
  }
  a.bg-apex-blue:hover,
  button.bg-apex-blue:hover,
  a.bg-apex-cta:hover,
  .apex-card:hover,
  a.border-white\/40:hover {
    transform: none !important;
  }
  .apex-reveal {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  section.bg-apex-blue-deep::after,
  section.relative.overflow-hidden.bg-apex-blue-deep::after {
    animation: none !important;
    display: none !important;
  }
  .glass-nav nav a[href]::after {
    transition: none !important;
  }
}
