/* ── Keyframes ────────────────────────────────────── */

@keyframes float-gentle {
  0%, 100% { transform: translateY(0px) rotate(0deg); }
  50%       { transform: translateY(-12px) rotate(2deg); }
}

@keyframes float-slow {
  0%, 100% { transform: translateY(0px) rotate(0deg); }
  50%       { transform: translateY(-8px) rotate(-2deg); }
}

@keyframes float-wide {
  0%, 100% { transform: translateY(0px) translateX(0px); }
  33%       { transform: translateY(-10px) translateX(5px); }
  66%       { transform: translateY(-4px) translateX(-4px); }
}

@keyframes spin-slow {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

@keyframes pulse-dot {
  0%, 100% { transform: scale(1);   opacity: 1; }
  50%       { transform: scale(1.4); opacity: 0.7; }
}

@keyframes fade-up {
  from { opacity: 0; transform: translateY(32px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes fade-left {
  from { opacity: 0; transform: translateX(-40px); }
  to   { opacity: 1; transform: translateX(0); }
}

@keyframes fade-right {
  from { opacity: 0; transform: translateX(40px); }
  to   { opacity: 1; transform: translateX(0); }
}

@keyframes scale-in {
  from { opacity: 0; transform: scale(0.92); }
  to   { opacity: 1; transform: scale(1); }
}

@keyframes slide-in-right {
  from { transform: translateX(100%); }
  to   { transform: translateX(0); }
}

@keyframes bounce-in {
  0%   { opacity: 0; transform: scale(0.5); }
  70%  { transform: scale(1.08); }
  100% { opacity: 1; transform: scale(1); }
}

/* ── Hero floating SVGs ───────────────────────────── */
.float-1 { animation: float-gentle 3.8s ease-in-out infinite; animation-delay: 0s; }
.float-2 { animation: float-wide   4.5s ease-in-out infinite; animation-delay: 0.7s; }
.float-3 { animation: float-slow   3.2s ease-in-out infinite; animation-delay: 1.3s; }
.float-4 { animation: float-gentle 5.0s ease-in-out infinite; animation-delay: 2.0s; }
.float-5 { animation: float-wide   3.6s ease-in-out infinite; animation-delay: 2.5s; }
.spin-deco { animation: spin-slow 18s linear infinite; }

/* ── Scroll Reveal ────────────────────────────────── */
.reveal,
.reveal-left,
.reveal-right,
.reveal-scale {
  opacity: 0;
  transition-property: opacity, transform;
  transition-duration: 560ms;
  transition-timing-function: cubic-bezier(0.34, 1.10, 0.64, 1);
  transition-delay: var(--stagger-delay, 0ms);
}

.reveal       { transform: translateY(32px); }
.reveal-left  { transform: translateX(-40px); }
.reveal-right { transform: translateX(40px); }
.reveal-scale { transform: scale(0.93); }

.revealed {
  opacity: 1;
  transform: none;
}

/* ── Reduced Motion ───────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
  .reveal,
  .reveal-left,
  .reveal-right,
  .reveal-scale {
    opacity: 1;
    transform: none;
  }
}

/* ── Scroll-to-Top Button ─────────────────────── */
.scroll-top {
  position: fixed;
  bottom: 2rem;
  right: 2rem;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: linear-gradient(135deg, #1A3282, #2B5BA8);
  color: #fff;
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 4px 16px rgba(26,50,130,0.35), 0 2px 0 2px rgba(26,50,130,0.18);
  z-index: 800;
  opacity: 0;
  transform: translateY(16px) scale(0.85);
  pointer-events: none;
  transition: opacity 0.25s ease, transform 0.25s ease, background 0.2s, box-shadow 0.2s;
}
.scroll-top.visible {
  opacity: 1;
  transform: translateY(0) scale(1);
  pointer-events: auto;
}
.scroll-top:hover {
  background: linear-gradient(135deg, #D12830, #E05060);
  box-shadow: 0 6px 22px rgba(209,40,48,0.4), 0 2px 0 2px rgba(168,30,38,0.2);
  transform: translateY(-3px) scale(1.05);
}
.scroll-top:active { transform: translateY(0) scale(0.97); }

@media (max-width: 640px) {
  .scroll-top { bottom: 1.25rem; right: 1.25rem; width: 42px; height: 42px; }
}
@media (prefers-reduced-motion: reduce) {
  .scroll-top { transition: opacity 0.15s; }
}
