/* Scroll-reveal and hover animations. Classes are added by animate.js, so with
   JavaScript off (or reduced motion on) nothing is ever hidden. */
html { scroll-behavior: smooth; }

.rv { opacity: 0; transform: translateY(28px); }
.rv.from-left { transform: translateX(-36px); }
.rv.from-right { transform: translateX(36px); }
.rv.zoom { transform: scale(.94); }
.rv { transition: opacity .7s cubic-bezier(.2,.7,.2,1), transform .7s cubic-bezier(.2,.7,.2,1); transition-delay: var(--d, 0ms); }
.rv.in { opacity: 1; transform: none; }

/* After the reveal finishes: no delay, so hover effects respond instantly */
.rv.done { transition: opacity .3s, transform .3s cubic-bezier(.2,.7,.2,1), box-shadow .3s, border-color .3s; transition-delay: 0ms; }
.rv.card.done:hover { transform: translateY(-6px); box-shadow: 0 18px 40px rgba(6,27,55,.22); }

/* Gentle float on the hero artwork */
@keyframes mr-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }
.rv.float.done { animation: mr-float 6s ease-in-out infinite; }

/* Buttons */
.btn-gold, .btn-navy, .btn-ghost, .chan, .nav-link {
  transition: transform .2s ease, box-shadow .2s ease, background-color .2s ease, border-color .2s ease, color .2s ease;
}
.btn-gold:hover, .btn-navy:hover, .btn-ghost:hover { transform: translateY(-2px); }
.btn-gold:hover { box-shadow: 0 8px 22px rgba(255,203,65,.35); }
.btn-navy:hover { box-shadow: 0 8px 22px rgba(6,27,55,.35); }
.btn-gold:active, .btn-navy:active, .btn-ghost:active { transform: translateY(0); }
.chan:hover { transform: translateX(4px); }

/* Soft pulse on the main call-to-action */
@keyframes mr-pulse { 0% { box-shadow: 0 0 0 0 rgba(255,203,65,.55); } 70%, 100% { box-shadow: 0 0 0 14px rgba(255,203,65,0); } }
.pulse { animation: mr-pulse 2.4s ease-out infinite; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .rv, .rv.in { opacity: 1; transform: none; transition: none; animation: none; }
  .pulse, .rv.float.done { animation: none; }
}
