/* Animations - subtle and purposeful */
@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(16px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@keyframes fadeInUpStrong {
  from {
    opacity: 0;
    transform: translateY(24px) scale(0.99);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}
@keyframes floatSlow {
  0% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-4px);
  }
  100% {
    transform: translateY(0);
  }
}
@keyframes glowPulse {
  0% {
    box-shadow: 0 8px 18px rgba(47, 132, 214, 0.2);
  }
  50% {
    box-shadow: 0 0 0 2px rgba(47, 132, 214, 0.16), 0 8px 18px rgba(47, 132, 214, 0.24);
  }
  100% {
    box-shadow: 0 8px 18px rgba(47, 132, 214, 0.2);
  }
}
@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@keyframes pageEnter {
  from {
    opacity: 0;
    transform: translateY(6px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@keyframes pageExit {
  from {
    opacity: 1;
    transform: translateY(0);
  }
  to {
    opacity: 0;
    transform: translateY(6px);
  }
}
body.page-entering .main-content {
  animation: pageEnter 0.24s var(--ease-out, ease-out) both;
}
body.page-leaving .main-content {
  animation: pageExit 0.24s var(--ease-out, ease-out) both;
}
body.page-leaving {
  pointer-events: none;
}
.animate-fade-in-up {
  animation: fadeInUp var(--duration, 0.55s) var(--ease-out, ease-out) both;
}
.animate-fade-in-up-strong {
  animation: fadeInUpStrong calc(var(--duration, 0.55s) + 0.12s) var(--ease-out, ease-out) both;
}
.animate-fade-in-up--delay {
  animation-delay: 0.15s;
}
.animate-fade-in-up--delay-2 {
  animation-delay: 0.28s;
}
.animate-fade-in {
  animation: fadeIn var(--duration, 0.55s) var(--ease-out, ease-out) both;
}
.float-slow {
  animation: floatSlow 6s ease-in-out infinite;
}
.float-medium {
  animation: floatSlow 4.5s ease-in-out infinite;
}
.glow-pulse {
  animation: glowPulse 3.5s ease-in-out infinite;
}
.animate-on-scroll {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity var(--duration, 0.55s) var(--ease-out, ease-out),
    transform var(--duration, 0.55s) var(--ease-out, ease-out);
}
.animate-on-scroll.in-view {
  opacity: 1;
  transform: translateY(0);
}
.section-layer {
  opacity: 0;
  transform: translateY(14px);
  transition: opacity 0.4s var(--ease-out), transform 0.4s var(--ease-out);
}
.section-layer--delay-1 {
  transition-delay: 0.08s;
}
.section-layer--delay-2 {
  transition-delay: 0.16s;
}
.section-layer.in-view,
.section.is-active-section .section-layer {
  opacity: 1;
  transform: translateY(0);
}
.animate-on-scroll.animate-fade-in-only {
  transform: none;
}
.animate-on-scroll.animate-fade-in-only.in-view {
  opacity: 1;
}
.product-card {
  transition: box-shadow 0.22s var(--ease-out, ease-out),
    border-color 0.2s var(--ease-out, ease-out),
    transform 0.24s var(--ease-out, ease-out);
}
.tilt-hover:hover {
  transform: translateY(-2px) rotateX(0.5deg) rotateY(-0.5deg);
}
@media (prefers-reduced-motion: reduce) {
  .animate-fade-in-up,
  .animate-fade-in-up-strong,
  .animate-fade-in-up--delay,
  .animate-fade-in-up--delay-2,
  .animate-fade-in {
    animation: fadeIn 0.22s ease-out both;
  }
  .animate-on-scroll {
    opacity: 1;
    transform: none;
    transition: none;
  }
  .section-layer,
  .section-layer--delay-1,
  .section-layer--delay-2 {
    opacity: 1;
    transform: none;
    transition: none;
  }
  .float-slow,
  .float-medium,
  .glow-pulse {
    animation: none;
  }
  .animate-on-scroll.in-view {
    opacity: 1;
    transform: none;
  }
  .product-card:hover,
  .tilt-hover:hover {
    transform: none;
  }
  body.page-entering .main-content,
  body.page-leaving .main-content {
    animation: none;
  }
}


