/* ══════════════════════════════════════════════════════════════════════════
   BSECURE — Cinematic Effects v6
   ══════════════════════════════════════════════════════════════════════════ */

@import url('https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,300;14..32,400;14..32,500;14..32,600;14..32,700;14..32,800&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Caveat:wght@400;500;600;700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@400;500;600;700;800;900&display=swap');
/* ══════════════════════════════════════════════════════════════════════════
   BSECURE — Cinematic Effects v5 (Faster + Stylish Card Entries)
   ══════════════════════════════════════════════════════════════════════════ */

body, p, h1, h2, h3, h4, h5, h6, a, li, span, input, textarea, button {
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* ── Even Faster Base (0.4s default) ── */
.invisible { opacity: 0; }
.animated { animation-duration: 0.4s; animation-fill-mode: both; visibility: visible !important; opacity: 1; }
.animated.animated-slow { animation-duration: 0.7s; }
.animated.animated-fast { animation-duration: 0.25s; }

/* ═══════════ CINEMATIC KEYFRAMES (fast + dramatic) ═══════════ */
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }

/* Fast rise — 100px pop, snappier */
@keyframes riseUp {
  from { opacity: 0; transform: translate3d(0, 100px, -60px) scale(0.88); }
  to { opacity: 1; transform: translate3d(0, 0, 0) scale(1); }
}
@keyframes riseLeft {
  from { opacity: 0; transform: translate3d(-80px, 30px, -50px) scale(0.88); }
  to { opacity: 1; transform: translate3d(0, 0, 0) scale(1); }
}
@keyframes riseRight {
  from { opacity: 0; transform: translate3d(80px, 30px, -50px) scale(0.88); }
  to { opacity: 1; transform: translate3d(0, 0, 0) scale(1); }
}

/* Cards pop forward — dramatic depth */
@keyframes popForward {
  0% { opacity: 0; transform: translate3d(0, 80px, -120px) scale(0.7); }
  50% { opacity: 1; transform: translate3d(0, -8px, 30px) scale(1.04); }
  100% { opacity: 1; transform: translate3d(0, 0, 0) scale(1); }
}

/* Card spins in from 90deg */
@keyframes spinIn {
  0% { opacity: 0; transform: rotateY(90deg) translateZ(-60px) scale(0.8); }
  100% { opacity: 1; transform: rotateY(0deg) translateZ(0) scale(1); }
}

/* Card flips up from the table */
@keyframes flipUp {
  0% { opacity: 0; transform: rotateX(-60deg) translateY(60px) scale(0.85); }
  100% { opacity: 1; transform: rotateX(0deg) translateY(0) scale(1); }
}

/* Card swoops in from corner */
@keyframes swoopIn {
  0% { opacity: 0; transform: translate3d(-120px, 80px, -80px) rotateZ(-10deg) scale(0.7); }
  100% { opacity: 1; transform: translate3d(0, 0, 0) rotateZ(0deg) scale(1); }
}

/* Bold zoom with aggressive overshoot */
@keyframes zoomPop {
  0% { opacity: 0; transform: scale3d(0.2, 0.2, 0.2); }
  60% { opacity: 1; transform: scale3d(1.08, 1.08, 1.08); }
  100% { opacity: 1; transform: scale3d(1, 1, 1); }
}

/* Bounce in — heavy impact */
@keyframes bouncePop {
  0% { opacity: 0; transform: scale3d(0.2, 0.2, 0.2) translateY(80px); }
  40% { opacity: 1; transform: scale3d(1.1, 1.1, 1.1) translateY(-12px); }
  60% { transform: scale3d(0.92, 0.92, 0.92) translateY(6px); }
  80% { transform: scale3d(1.02, 1.02, 1.02) translateY(-3px); }
  100% { opacity: 1; transform: scale3d(1, 1, 1) translateY(0); }
}

/* Scale in from side — like a card being dealt */
@keyframes dealIn {
  0% { opacity: 0; transform: translateX(-60px) rotateY(30deg) scale(0.8); }
  100% { opacity: 1; transform: translateX(0) rotateY(0deg) scale(1); }
}

/* Hero heading: dramatic blur dissolve */
@keyframes heroRise {
  from { opacity: 0; transform: translate3d(0, 80px, 0) scale(0.95); filter: blur(6px); }
  to { opacity: 1; transform: translate3d(0, 0, 0) scale(1); filter: blur(0); }
}

/* ── Animation Class Map ── */
.animated.fadeIn { animation-name: fadeIn; }
.animated.riseUp, .animated.fadeInUp { animation-name: riseUp; }
.animated.fadeInLeft, .animated.riseLeft { animation-name: riseLeft; }
.animated.fadeInRight, .animated.riseRight { animation-name: riseRight; }
.animated.popForward { animation-name: popForward; }
.animated.spinIn { animation-name: spinIn; }
.animated.flipUp { animation-name: flipUp; }
.animated.swoopIn { animation-name: swoopIn; }
.animated.zoomPop, .animated.zoomIn { animation-name: zoomPop; }
.animated.bouncePop, .animated.bounceIn { animation-name: bouncePop; }
.animated.dealIn { animation-name: dealIn; }
.animated.heroRise { animation-name: heroRise; animation-duration: 0.6s; }

/* ── Text slide-in: card text enters from left ── */
@keyframes textSlideIn {
  from {
    opacity: 0;
    transform: translateX(-24px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

/* When any card animates, its text children slide in from left */
.approach-card.animated h3,
.product-card.animated h3,
.bs-movement-card.animated h3 {
  animation: textSlideIn 0.45s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
}
.approach-card.animated p,
.product-card.animated p,
.bs-movement-card.animated p {
  animation: textSlideIn 0.45s cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.08s both;
}
/* Product card extra elements: stagger further */
.product-card.animated .product-features {
  animation: textSlideIn 0.45s cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.16s both;
}
.product-card.animated .product-link {
  animation: textSlideIn 0.45s cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.24s both;
}
.product-card.animated .product-icon {
  animation: textSlideIn 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
}

/* ── Product card images ── */
.product-image {
  width: 100%;
  height: 200px;
  object-fit: contain;
  display: block;
  margin: 0 auto 12px;
  border-radius: 8px;
  background: transparent;
  transition: transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.product-card:hover .product-image {
  transform: scale(1.05);
}

/* When product card is front/active in carousel, image animates in */
.product-card.card-front .product-image {
  animation: imageSlideIn 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
}

@keyframes imageSlideIn {
  from { opacity: 0; transform: translateX(80px) scale(0.85); }
  to   { opacity: 1; transform: translateX(0) scale(1); }
}



/* Override for stats cards — numbers stay put */
.stats-grid .approach-card.animated h3,
.stats-grid .approach-card.animated p {
  animation: none;
  opacity: 1;
  transform: none;
}


/* ── Perspective for 3D card effects ── */
.reveal-grid {
  perspective: 1200px;
  perspective-origin: center center;
}

/* ── Hero: dramatic entrance ── */
.hero {
  position: relative;
  background: linear-gradient(180deg, #f0f4f8 0%, #e2e8f0 100%);
  overflow: hidden;
}
/* Hero canvas: absolutely positioned so it doesn't blow out the layout */
.hero-particles {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  pointer-events: none;
  z-index: 0;
}
.hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse at 30% 20%, rgba(41,171,226,0.10) 0%, transparent 60%),
              radial-gradient(ellipse at 70% 80%, rgba(30,115,190,0.06) 0%, transparent 60%);
  pointer-events: none;
}
.hero h1 {
  font-weight: 800;
  letter-spacing: -0.5px;
  text-shadow: 0 2px 4px rgba(0,0,0,0.04);
  animation: heroRise 0.6s ease-out both;
}
.hero .hero-subtitle {
  animation: riseUp 0.5s ease-out 0.1s both;
}
.hero .hero-actions {
  animation: riseUp 0.5s ease-out 0.2s both;
}
.hero .button, .hero .btn {
  box-shadow: 0 6px 24px rgba(41,171,226,0.30);
  transition: all 0.2s ease;
}
.hero .button:hover, .hero .btn:hover {
  box-shadow: 0 12px 36px rgba(41,171,226,0.45);
  transform: translateY(-3px);
}

/* ── Cards: big pop on hover ── */
.approach-card, .product-card, .service-card, .catalog-card {
  box-shadow: 0 2px 16px rgba(0,0,0,0.07);
  transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
  transform-origin: center center;
  will-change: transform, box-shadow;
}
.approach-card:hover, .product-card:hover, .service-card:hover, .catalog-card:hover {
  box-shadow: 0 16px 48px rgba(0,0,0,0.18);
  transform: translateY(-8px) scale(1.03);
}

/* ── Buttons: snappy ── */
.button, .btn, .cta-button, a[class*=button] {
  box-shadow: 0 4px 14px rgba(0,0,0,0.12);
  transition: all 0.15s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.button:hover, .btn:hover, .cta-button:hover, a[class*=button]:hover {
  box-shadow: 0 10px 28px rgba(0,0,0,0.22);
  transform: translateY(-3px);
}
.button:active, .btn:active {
  transform: translateY(0) scale(0.96);
  box-shadow: 0 2px 6px rgba(0,0,0,0.06);
  transition: all 0.04s ease;
}

/* ── Gradient text ── */
.gradient-text {
  background: linear-gradient(135deg, #29ABE2 0%, #1E73BE 50%, #29ABE2 100%);
  background-size: 200% auto;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: shimmer 2.5s linear infinite;
}
@keyframes shimmer { to { background-position: 200% center; } }

/* ── Section backgrounds ── */
.section-light { background: #ffffff; }
.section-gray { background: #f3f4f6; }
.section-primary { background: linear-gradient(135deg, #29ABE2, #1E73BE); color: #fff; }
.section-dark { background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%); color: #f1f5f9; }

/* ── Image hover ── */
.img-hover-zoom { overflow: hidden; border-radius: 8px; }
.img-hover-zoom img { transition: transform 0.4s ease; }
.img-hover-zoom:hover img { transform: scale(1.08); }

/* ── CTA glow ── */
.cta-section {
  background: linear-gradient(135deg, #29ABE2 0%, #1E73BE 100%);
  position: relative;
  overflow: hidden;
}
.cta-section::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 50% 50%, rgba(255,255,255,0.10) 0%, transparent 70%);
  pointer-events: none;
}

/* ── Nav underline ── */
.nav-links a {
  position: relative;
  transition: color 0.15s ease;
}
.nav-links a::after {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 0;
  height: 2px;
  background: #29ABE2;
  transition: width 0.2s ease;
}
.nav-links a:hover::after, .nav-links a.active::after { width: 100%; }

/* ── Accessibility ── */
@media (prefers-reduced-motion: reduce) {
  .animated { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
  .invisible { visibility: visible; }
  .hero h1, .hero .hero-subtitle, .hero .hero-actions { animation: none !important; }
}

/* ── Dark mode ── */
[data-theme=light] .hero {
  background: linear-gradient(180deg, #f0f4f8 0%, #e2e8f0 100%);
}
[data-theme=light] .hero::before {
  background: radial-gradient(ellipse at 30% 20%, rgba(41,171,226,0.10) 0%, transparent 60%),
              radial-gradient(ellipse at 70% 80%, rgba(30,115,190,0.06) 0%, transparent 60%);
}
[data-theme=light] .section-light { background: #ffffff; }
[data-theme=light] .section-gray { background: #f3f4f6; }
[data-theme=light] .button, [data-theme=light] .btn { box-shadow: 0 4px 20px rgba(41,171,226,0.20); }

/* Hero heading text color for light theme */
[data-theme=light] .hero h1 {
  color: #1e293b !important;
}
[data-theme=light] .hero .hero-subtitle {
  color: #475569 !important;
}
[data-theme=light] .section-label {
  color: #64748b !important;
}
[data-theme=light] .hero .button.outline {
  border-color: #29ABE2 !important;
  color: #29ABE2 !important;
}
[data-theme=light] .product-card,
[data-theme=light] .approach-card {
  background: #ffffff !important;
  border: 1px solid #e2e8f0 !important;
}
[data-theme=light] .product-card h3,
[data-theme=light] .approach-card h3 {
  color: #1e293b !important;
}
[data-theme=light] .product-card p,
[data-theme=light] .approach-card p {
  color: #475569 !important;
}
[data-theme=light] .product-features li {
  color: #475569 !important;
}
[data-theme=light] .product-link {
  color: #29ABE2 !important;
}

/* ═══════════ 3D CARD STACK / CAROUSEL ═══════════ */
/* Cards layered at different z-depths, pop forward on reveal */

.card-carousel {
  display: block;
  position: relative;
  perspective: 1200px;
  perspective-origin: center center;
  min-height: 520px;
  padding: 20px 0;
}

.card-carousel .card {
  position: absolute;
  width: 100%;
  left: 0;
  top: 0;
  transform-style: preserve-3d;
  transition: all 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94);
  will-change: transform, opacity;
  box-sizing: border-box;
}

/* Stack depths — front/middle/back via CSS custom property */
.card-carousel .card-front {
  --card-z: 0px;
  --card-scale: 1;
  z-index: 3;
  opacity: 1;
  transform: translate3d(0, 0, 40px) scale(1);
  pointer-events: auto;
}
.card-carousel .card-middle {
  --card-z: 0px;
  --card-scale: 0.92;
  z-index: 2;
  opacity: 0.6;
  transform: translate3d(0, 8px, -20px) scale(0.92);
  pointer-events: none;
}
.card-carousel .card-back {
  --card-z: 0px;
  --card-scale: 0.84;
  z-index: 1;
  opacity: 0.3;
  transform: translate3d(0, 16px, -60px) scale(0.84);
  pointer-events: none;
}

/* Reveal animation: cards rise from further back */
@keyframes cardStackReveal {
  0% {
    opacity: 0;
    transform: translate3d(0, 100px, -120px) scale(0.7);
    filter: blur(2px);
  }
  60% {
    opacity: 1;
    transform: translate3d(0, -6px, 10px) scale(1.02);
    filter: blur(0);
  }
  100% {
    opacity: 1;
    transform: translate3d(0, 0, var(--card-z, 0)) scale(var(--card-scale, 1));
    filter: blur(0);
  }
}

.animated.cardStackReveal {
  animation-name: cardStackReveal;
}

/* Hover: card lifts forward dramatically */
.card-carousel .card:hover {
  transform: translate3d(0, -12px, 60px) scale(1.08) !important;
  box-shadow: 0 24px 60px rgba(0,0,0,0.22);
  z-index: 10;
}

.card-carousel .card:not(:hover) {
  transition: all 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

/* Mobile: stack vertically, single depth */



/* ═══════════ 3D CARD CAROUSEL ═══════════ */
.carousel-container { position: relative; width: 380px; height: 480px; perspective: 1000px; margin: 0 auto; }
.security-card { position: absolute; width: 100%; height: 320px; background: #1e293b; border-radius: 20px; padding: 30px; box-sizing: border-box; transform-origin: bottom center; transition: transform 0.8s cubic-bezier(0.25, 1, 0.5, 1), z-index 0.8s, opacity 0.8s; color: #f1f5f9; }
.state-front { z-index: 3; transform: translate3d(0, 0, 0) scale(1); opacity: 1; box-shadow: 0 8px 40px rgba(41,171,226,0.25); }
.state-middle { z-index: 2; transform: translate3d(0, -30px, -60px) scale(0.92); opacity: 0.8; box-shadow: 0 4px 20px rgba(0,0,0,0.12); }
.state-back { z-index: 1; transform: translate3d(0, -60px, -120px) scale(0.84); opacity: 0.4; box-shadow: 0 2px 8px rgba(0,0,0,0.06); }
.security-card h3 { font-size: 18px; margin: 0 0 8px; font-weight: 700; color: #f1f5f9; }
.security-card p { font-size: 13px; margin: 0; color: #94a3b8; line-height: 1.5; }

@media (max-width: 480px) {
  .carousel-container { width: 100%; height: auto; }
}

/* ── Product Card Headers: Cinzel display font ── */

.security-card h3 {
  font-family: 'Cinzel', 'Georgia', serif !important;
  font-size: 19px !important;
  font-weight: 700 !important;
  letter-spacing: 0.5px;
  margin: 0 0 10px !important;
  color: #f1f5f9 !important;
  text-shadow: 0 0 20px rgba(41,171,226,0.15);
  text-transform: uppercase;
}

/* Lighter variant for middle cards */
.state-middle .security-card h3,
.state-middle h3 {
  font-size: 17px !important;
}
.state-back .security-card h3,
.state-back h3 {
  font-size: 15px !important;
  opacity: 0.6;
}

/* Mobile: smaller card headers */
@media (max-width: 480px) {
  .security-card h3 {
    font-size: 15px !important;
    letter-spacing: 0.3px;
  }
  .security-card p {
    font-size: 12px !important;
  }
}

/* ── Animated Underline on Product Names ── */
.security-card h3 {
  position: relative;
  display: inline-block;
  padding-bottom: 6px;
}

/* The sliding underline/arrow bar */
.security-card h3::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  width: 0;
  height: 2px;
  background: linear-gradient(90deg, #29ABE2, #4BC5F0);
  border-radius: 1px;
  transition: width 0.6s cubic-bezier(0.25, 0.8, 0.25, 1);
}

/* When card is front, draw the underline */
.state-front .security-card h3::after,
.state-front h3::after {
  width: 100%;
  transition-delay: 0.5s;
}

/* Arrow tip at end of the line */
.security-card h3::before {
  content: '→';
  position: absolute;
  bottom: -4px;
  right: -20px;
  font-size: 10px;
  color: #29ABE2;
  opacity: 0;
  transform: translateX(-10px);
  transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);
}

.state-front .security-card h3::before,
.state-front h3::before {
  opacity: 1;
  transform: translateX(0);
  transition-delay: 0.9s;
}

/* Mobile: simpler */
@media (max-width: 480px) {
  .security-card h3::after {
    height: 1.5px;
  }
  .security-card h3::before {
    font-size: 8px;
    bottom: -3px;
    right: -16px;
  }
}

/* ═══════════ WILD 3D CARD SPIN — full 360° rotation ═══════════ */
.carousel-container {
  perspective: 1200px;
  perspective-origin: center center;
}

.security-card {
  backface-visibility: visible !important;
  transform-style: preserve-3d !important;
}

/* Full 360° Y-axis spin — like a revolving door */
@keyframes cardSpinIn {
  0%   { transform: rotateY(0deg) translateZ(0); opacity: 0; }
  10%  { opacity: 0; }
  25%  { opacity: 0.6; }
  40%  { opacity: 1; }
  100% { transform: rotateY(360deg) translateZ(0); opacity: 1; }
}

@keyframes cardSpinOut {
  0%   { transform: rotateY(0deg) translateZ(0); opacity: 1; }
  100% { transform: rotateY(360deg) translateZ(-200px) scale(0.7); opacity: 0; }
}

/* X-axis tumble flip */
@keyframes cardTumbleIn {
  0%   { transform: rotateX(0deg) rotateY(0deg); opacity: 0; filter: blur(4px); }
  50%  { opacity: 0.8; filter: blur(0); }
  100% { transform: rotateX(360deg) rotateY(15deg); opacity: 1; filter: blur(0); }
}

/* Diagonal wild spin */
@keyframes cardWildSpin {
  0%   { transform: rotateY(0deg) rotateX(0deg) scale(0.3); opacity: 0; }
  30%  { opacity: 0.5; }
  60%  { transform: rotateY(200deg) rotateX(40deg) scale(1.1); opacity: 1; }
  100% { transform: rotateY(360deg) rotateX(0deg) scale(1); opacity: 1; }
}

/* State transitions now spin */
.state-front {
  z-index: 3;
  transform: translate3d(0, 0, 0) scale(1) !important;
  opacity: 1;
  box-shadow: 0 8px 40px rgba(41,171,226,0.25);
  animation: cardWildSpin 1s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
}

.state-middle {
  z-index: 2;
  transform: translate3d(0, -20px, -40px) scale(0.94) !important;
  opacity: 0.75;
  box-shadow: 0 4px 20px rgba(0,0,0,0.12);
}

.state-back {
  z-index: 1;
  transform: translate3d(0, -40px, -80px) scale(0.86) !important;
  opacity: 0.35;
  box-shadow: 0 2px 8px rgba(0,0,0,0.06);
}

/* Front card gets the spin animation when it becomes front */
.security-card.animated-spin {
  animation: cardWildSpin 1s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
}

/* Mobile: no wild spins */
@media (max-width: 480px) {
  .carousel-container {
    perspective: 1200px;
  }
  .security-card {
    animation: none !important;
    transform: none !important;
    opacity: 1 !important;
  }
}

/* Card inner glow pulse on front card */
.state-front::before {
  content: '';
  position: absolute;
  inset: -2px;
  border-radius: 22px;
  background: linear-gradient(135deg, #29ABE2, #4BC5F0, #29ABE2);
  opacity: 0;
  z-index: -1;
  animation: glowPulse 2s ease-in-out infinite;
}

@keyframes glowPulse {
  0%, 100% { opacity: 0; }
  50% { opacity: 0.3; filter: blur(8px); }
}

/* ═══════════ PRODUCT CARD WILD 3D SPIN ═══════════ */
.card-carousel {
  perspective: 1400px;
  perspective-origin: center center;
}

.card-carousel .product-card {
  backface-visibility: visible !important;
  transform-style: preserve-3d !important;
  transition: all 0.7s cubic-bezier(0.25, 0.46, 0.45, 0.94) !important;
}

/* Full 360° Y-axis spin when card becomes front */
@keyframes productWildSpin {
  0%   { transform: rotateY(0deg) rotateX(0deg) scale(0.3); opacity: 0; filter: blur(5px); }
  25%  { transform: rotateY(120deg) rotateX(25deg) scale(0.7); opacity: 0.4; filter: blur(2px); }
  50%  { transform: rotateY(240deg) rotateX(15deg) scale(1.05); opacity: 0.8; filter: blur(0); }
  70%  { transform: rotateY(320deg) rotateX(5deg) scale(1.08); opacity: 1; filter: blur(0); }
  85%  { transform: rotateY(350deg) rotateX(0deg) scale(1.03); opacity: 1; filter: blur(0); }
  100% { transform: rotateY(360deg) rotateX(0deg) scale(1); opacity: 1; filter: blur(0); }
}

.product-card.spinning-in {
  animation: productWildSpin 1.2s cubic-bezier(0.25, 0.46, 0.45, 0.94) both !important;
  z-index: 10;
  box-shadow: 0 16px 60px rgba(41,171,226,0.35) !important;
}

/* Glow ring on the spinning front card */
.product-card.spinning-in::after {
  content: '';
  position: absolute;
  inset: -3px;
  border-radius: inherit;
  background: linear-gradient(135deg, #29ABE2, #4BC5F0, #29ABE2, #1E73BE);
  background-size: 300% 300%;
  opacity: 0.4;
  z-index: -1;
  filter: blur(6px);
  animation: glowShift 2s linear infinite;
}

@keyframes glowShift {
  0% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}

/* Mobile: disable spinning */

/* ═══════════ MOBILE FIXES ═══════════ */
/* Stats grid: 2x2 on mobile */
.stats-grid {
  grid-template-columns: repeat(4, 1fr);
}

@media (max-width: 600px) {
  .stats-grid {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 12px;
  }
  .stats-grid .approach-card {
    min-width: 0;
    padding: 16px 12px;
  }
  .stats-grid h3 {
    font-size: 24px !important;
    margin: 4px 0 !important;
  }
  .stats-grid p {
    font-size: 12px !important;
  }
}

/* Fix card double-stacking on mobile */


/* ═══════════ MOBILE ═══════════ */
@media (max-width: 768px) {
  /* Product cards: single-column carousel with crossfade */
  .card-carousel {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    gap: 0 !important;
    perspective: none !important;
    padding: 0 !important;
    min-height: 380px;
    position: relative !important;
  }
  .card-carousel .card,
  .card-carousel .product-card {
    position: absolute !important;
    width: 100% !important;
    max-width: 360px !important;
    min-width: 0 !important;
    left: 50% !important;
    transform: translateX(-50%) !important;
    transform-style: flat !important;
    z-index: 1 !important;
    animation: none !important;
    filter: none !important;
    box-shadow: 0 2px 12px rgba(0,0,0,0.08) !important;
    transition: opacity 0.5s ease, visibility 0.5s ease !important;
  }
  /* Only the front card is visible */
  .card-carousel .card-front {
    position: relative !important;
    left: auto !important;
    transform: none !important;
    opacity: 1 !important;
    visibility: visible !important;
    z-index: 3 !important;
  }
  /* Fade-in animation for new front card */
  @keyframes cardFadeIn {
    from { opacity: 0; transform: translateY(20px); }
    to { opacity: 1; transform: translateY(0); }
  }
  .product-card.fading-in {
    animation: cardFadeIn 0.5s ease-out both !important;
    opacity: 1 !important;
    visibility: visible !important;
  }
  .card-carousel .card-front,
  .card-carousel .card-middle,
  .card-carousel .card-back {
    --card-z: 0px !important;
    --card-scale: 1 !important;
  }
  .product-card.spinning-in {
    animation: none !important;
  }
  .product-card.spinning-in::after {
    display: none !important;
  }
  
  /* Stats grid: 2x2 */
  .stats-grid {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 10px !important;
  }
  .stats-grid .approach-card {
    padding: 14px 10px !important;
    min-width: 0 !important;
    text-align: center !important;
  }
  .stats-grid h3 {
    font-size: 22px !important;
    margin: 2px 0 !important;
  }
  .stats-grid p {
    font-size: 11px !important;
  }
  
  /* Security card carousel: flat on mobile */
  .carousel-container {
    width: 100% !important;
    height: auto !important;
    perspective: none !important;
  }
  .security-card {
    position: relative !important;
    width: 100% !important;
    max-width: 380px !important;
    height: auto !important;
    margin: 0 auto 12px !important;
    transform: none !important;
    opacity: 1 !important;
    animation: none !important;
  }
}
/* ═══════════ PRODUCT CARD MOVEMENT + HIGHLIGHTS ═══════════ */

/* All product cards: subtle float */
.card-carousel .product-card {
  animation: cardFloat 4s ease-in-out infinite !important;
  transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94) !important;
}

@keyframes cardFloat {
  0%, 100% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-8px) scale(1.02); }
}

/* Stagger floats per position */
.card-carousel .card-front { animation-delay: 0s !important; }
.card-carousel .card-middle { animation-delay: 1.3s !important; }
.card-carousel .card-back { animation-delay: 2.6s !important; }

/* Hover: pause float, lift higher */
.card-carousel .product-card:hover {
  animation-play-state: paused !important;
  transform: translateY(-12px) scale(1.04) !important;
  box-shadow: 0 20px 56px rgba(41,171,226,0.3) !important;
  z-index: 20 !important;
}

/* Featured card: glowing border pulse */
.product-card.featured {
  position: relative;
  border: 2px solid transparent !important;
}

.product-card.featured::before {
  content: '';
  position: absolute;
  inset: -3px;
  border-radius: inherit;
  background: linear-gradient(135deg, #29ABE2, #4BC5F0, #29ABE2, #1E73BE);
  background-size: 300% 300%;
  z-index: -1;
  opacity: 0;
  animation: glowBorder 2.5s ease-in-out infinite;
}

@keyframes glowBorder {
  0%, 100% { opacity: 0; background-position: 0% 50%; }
  50% { opacity: 0.6; background-position: 100% 50%; }
}

.product-card.featured:hover::before {
  opacity: 0.8;
}

/* Mobile: lighter float, still cycles */
@media (max-width: 768px) {
  .card-carousel .product-card {
    animation: cardFloatMobile 3s ease-in-out infinite !important;
  }
  
  @keyframes cardFloatMobile {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-4px); }
  }
  
  .card-carousel .product-card:hover {
    transform: translateY(-6px) scale(1.02) !important;
  }

  /* Mobile featured card glow */
  .product-card.featured::before {
    opacity: 0;
    animation: glowBorder 2s ease-in-out infinite;
  }
  
  .product-card.featured {
    box-shadow: 0 2px 16px rgba(41,171,226,0.3) !important;
  }
}

/* Accessibility */
@media (prefers-reduced-motion: reduce) {
  .card-carousel .product-card {
    animation: none !important;
    transform: none !important;
  }
}

/* ═══════════ LOGO: drop-in → underline → gyro spin ═══════════ */
.nav-logo {
  position: relative;
  padding-bottom: 4px;
  animation: logoDropIn 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
}

.nav-logo img {
  animation: none;
  perspective: 600px;
}

/* Step 1: Drop in from top */
@keyframes logoDropIn {
  from {
    opacity: 0;
    transform: translateY(-80px);
    filter: blur(4px);
  }
  60% {
    opacity: 1;
    filter: blur(0);
  }
  80% {
    transform: translateY(6px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
    filter: blur(0);
  }
}

/* Step 2: Moving gradient underline (starts at 0.8s) */
.nav-logo::after {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 100%;
  height: 2.5px;
  background: linear-gradient(90deg, #29ABE2, #4BC5F0, #1E73BE, #29ABE2);
  background-size: 300% 100%;
  border-radius: 2px;
  animation: logoUnderlineShift 1.5s linear 0.8s forwards;
  opacity: 0;
}

@keyframes logoUnderlineShift {
  0% {
    background-position: 0% 50%;
    opacity: 0.9;
  }
  50% {
    background-position: 100% 50%;
    opacity: 1;
  }
  100% {
    background-position: 0% 50%;
    opacity: 0.9;
  }
}

/* Step 3: Logo gyro-flips on X-axis after underline (2.3s delay) */
@keyframes logoGyro {
  0%   { transform: rotateX(0deg); }
  25%  { transform: rotateX(90deg); }
  50%  { transform: rotateX(180deg); }
  75%  { transform: rotateX(270deg); }
  100% { transform: rotateX(360deg); }
}

.nav-logo img {
  animation: logoGyro 3s ease-in-out infinite;
  animation-delay: 2.3s;
  transform-style: preserve-3d;
  backface-visibility: visible;
  perspective: 600px;
}

/* Fade the underline out as spin begins */
@keyframes logoUnderlineFadeout {
  0% { opacity: 0.9; }
  20% { opacity: 0.5; }
  100% { opacity: 0; }
}

.nav-logo::before {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 100%;
  height: 2.5px;
  background: linear-gradient(90deg, #29ABE2, #4BC5F0, #1E73BE, #29ABE2);
  background-size: 300% 100%;
  border-radius: 2px;
  opacity: 0;
  animation: logoUnderlineFadeout 0.8s ease-in 2.3s forwards;
}

/* Pause gyro on hover */
.nav-logo:hover img {
  animation-play-state: paused;
}

/* Mobile: lighter logo animations */
@media (max-width: 768px) {
  @keyframes logoDropInMobile {
    from { opacity: 0; transform: translateY(-50px); }
    70% { opacity: 1; transform: translateY(3px); }
    to { opacity: 1; transform: translateY(0); }
  }
  
  .nav-logo {
    animation-name: logoDropInMobile;
    animation-duration: 0.45s;
  }
  
  .nav-logo img {
    animation-duration: 4.5s;
    animation-delay: 2.3s;
  }
}

/* Accessibility */
@media (prefers-reduced-motion: reduce) {
  .nav-logo {
    animation: none !important;
  }
  .nav-logo img {
    animation: none !important;
  }
  .nav-logo::after {
    animation: none !important;
    opacity: 0.6;
  }
}

/* ═══════════ HERO HEADING: cursive eye-catching font ═══════════ */
.hero h1 {
  font-family: 'Caveat', 'Brush Script MT', cursive !important;
  font-weight: 600 !important;
  font-size: clamp(22px, 4vw, 36px) !important;
  line-height: 1.25;
  letter-spacing: 0.01em;
  text-shadow: 0 2px 8px rgba(0,0,0,0.06);
}

/* Keep gradient text styling but adapt for cursive */
.hero h1 .gradient-text {
  font-weight: 700 !important;
}

/* Mobile: tighter sizing */
@media (max-width: 768px) {
  .hero h1 {
    font-size: clamp(24px, 8vw, 36px) !important;
    line-height: 1.3;
  }
}

/* ═══════════ CURVED SVG UNDERLINE for "AI-Powered Security" ═══════════ */
.headline-dynamic-wrapper {
  position: relative;
  display: inline-block;
  overflow: visible;
}

.headline-dynamic-wrapper .gradient-text {
  position: relative;
  z-index: 2;
}

.hero-underline-svg {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: calc(100% + 30px);
  height: calc(100% + 24px);
  overflow: visible;
  z-index: 1;
  pointer-events: none;
}

/* The curved path: draws in from left to right, then loops */
.hero-underline-path {
  stroke-dasharray: 0 800;
  animation: drawUnderline 2s ease-in-out infinite;
}

@keyframes drawUnderline {
  0% {
    stroke-dasharray: 0 800;
    opacity: 0;
  }
  15% {
    opacity: 1;
  }
  40% {
    stroke-dasharray: 800 800;
    opacity: 1;
  }
  75% {
    stroke-dasharray: 800 800;
    opacity: 1;
  }
  85% {
    stroke-dasharray: 800 800;
    opacity: 0.3;
  }
  100% {
    stroke-dasharray: 0 800;
    opacity: 0;
  }
}

/* Glimmer dot at the end of the underline */
.hero-underline-glimmer {
  opacity: 0;
  animation: glimmerPulse 2s ease-in-out infinite;
}

@keyframes glimmerPulse {
  0%, 20% { opacity: 0; }
  25% { opacity: 1; filter: drop-shadow(0 0 6px #4BC5F0); }
  50% { opacity: 1; filter: drop-shadow(0 0 12px #4BC5F0); }
  65% { opacity: 1; filter: drop-shadow(0 0 6px #4BC5F0); }
  70%, 100% { opacity: 0; }
}

/* Expanding ring around the glimmer */
.hero-underline-glimmer-ring {
  opacity: 0;
  animation: ringExpand 2s ease-in-out infinite;
}

@keyframes ringExpand {
  0%, 24% { opacity: 0; r: 4; }
  28% { opacity: 0.8; }
  50% { opacity: 0; r: 16; }
  100% { opacity: 0; r: 4; }
}

/* Mobile */
@media (max-width: 768px) {
  .hero-underline-svg {
    height: calc(100% + 18px);
    width: calc(100% + 24px);
  }
  .hero-underline-path {
    stroke-width: 5;
  }
}

/* ═══════════ MOBILE FONT SIZE + CROSS-BROWSER FIXES ═══════════ */
@media (max-width: 768px) {
  /* Hero subtitle: smaller so it fits all devices */
  .hero .hero-subtitle {
    font-size: 13px !important;
    line-height: 1.5 !important;
    max-width: 340px !important;
    margin: 0 auto 20px !important;
  }
}



/* ═══════════════════════════════════════════════════════════════════
   DESKTOP OPTIMIZATIONS (≥769px) — hero sizing, centering, card grid
   ═══════════════════════════════════════════════════════════════════ */
@media (min-width: 769px) {

  /* Hero section: compact, light background, no full-viewport takeover */
  .hero {
    min-height: 0 !important;
    padding: 80px 24px 60px !important;
  }

  /* Section headings: centered on desktop */
  .section-head {
    text-align: center !important;
  }
  .section-head h2 {
    text-align: center !important;
  }

  /* Card grid: 4 columns on desktop (stats excluded) */
  .card-grid:not(.stats-grid) {
    grid-template-columns: repeat(auto-fill, minmax(min(250px, 100%), 1fr)) !important;
  }

  /* Stats grid: 4 even columns (comes AFTER card-grid to win specifity) */
  .card-grid.stats-grid,
  .stats-grid {
    grid-template-columns: repeat(4, 1fr) !important;
  }

}

/* Safari iOS: fix preserve-3d flicker */
@supports (-webkit-touch-callout: none) {
  .card-carousel .product-card,
  .nav-logo img,
  .carousel-container .security-card {
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
  }
  
  /* Safari flex + absolute child fix */
  .card-carousel {
    display: block !important;
    width: 100%;
    max-width: 380px;
    margin: 0 auto;
  }
  
  .card-carousel .product-card {
    -webkit-transform: translateZ(0);
    transform: translateZ(0);
  }
}

/* Firefox: ensure smooth animations */
@-moz-document url-prefix() {
  .card-carousel .product-card,
  .hero h1,
  .nav-logo img {
    will-change: transform;
  }
}

/* Edge/Chromium: no specific issues, but ensure GPU layer */
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
  .card-carousel .product-card {
    transform: none !important;
    animation: none !important;
  }
}

/* ── Gallery flip animation ── */
.product-card.card-front.image-flip-in .product-image {
  animation: imageFlipIn 0.7s cubic-bezier(0.22, 1, 0.36, 1) both;
}

@keyframes imageFlipIn {
  0%   { opacity: 0; transform: translateX(120px) scale(0.85); }
  60%  { opacity: 1; transform: translateX(-8px) scale(1.02); }
  100% { opacity: 1; transform: translateX(0) scale(1); }
}

/* ── Carousel navigation dots ── */
.carousel-dots {
  display: flex;
  justify-content: center;
  gap: 8px;
  margin-top: 24px;
}

.carousel-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: #ccc;
  cursor: pointer;
  transition: background 0.3s, transform 0.3s;
}

.carousel-dot:hover {
  transform: scale(1.3);
}

.carousel-dot.active {
  background: #29ABE2;
  transform: scale(1.3);
}

/* ═══════════ ANIMATED UNDERLINE for "bsecure" + "security" text ═══════════ */
/* Wraps every occurrence with a looping sweep underline */

.uw-word {
  position: relative;
  display: inline-block;
  white-space: nowrap;
}

/* Sweeping underline: moves left→right→left in a loop */
.uw-word::after {
  content: "";
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 100%;
  height: 2.5px;
  background: linear-gradient(90deg, 
    transparent 0%, 
    #29ABE2 10%, 
    #4BC5F0 40%, 
    #29ABE2 70%, 
    transparent 90%);
  background-size: 200% 100%;
  background-position: 0% 0%;
  border-radius: 2px;
  animation: uwSweep 1.8s ease-in-out infinite;
}

/* Dark mode variant */
[data-theme="dark"] .uw-word::after {
  background: linear-gradient(90deg, 
    transparent 0%, 
    #4BC5F0 10%, 
    #7DD3FC 40%, 
    #4BC5F0 70%, 
    transparent 90%);
  background-size: 200% 100%;
}

/* Light mode override */
[data-theme="light"] .uw-word::after {
  background: linear-gradient(90deg, 
    transparent 0%, 
    #1E73BE 10%, 
    #29ABE2 40%, 
    #1E73BE 70%, 
    transparent 90%);
  background-size: 200% 100%;
}

@keyframes uwSweep {
  0% {
    background-position: 200% 0%;
  }
  50% {
    background-position: 0% 0%;
  }
  100% {
    background-position: 200% 0%;
  }
}

/* Reduce motion */
@media (prefers-reduced-motion: reduce) {
  .uw-word::after {
    animation: none;
    background-position: 0% 0%;
    opacity: 0.5;
  }
}

