/* Extra animations: scroll reveal, card lift, image zoom, hero entrance */
.fx-reveal{ opacity:0; transform:translateY(28px); transition:opacity .7s ease, transform .7s cubic-bezier(.2,.7,.2,1); transition-delay:var(--fx-delay,0s); }
.fx-reveal.fx-in{ opacity:1; transform:none; }
[class*="-card"]{ transition:transform .3s ease, box-shadow .3s ease; }
[class*="-card"]:hover{ transform:translateY(-6px); box-shadow:0 18px 40px rgba(13,27,62,.18); }
[class*="-card"] img{ transition:transform .6s ease; }
[class*="-card"]:hover img{ transform:scale(1.06); }
.btn:hover{ transform:translateY(-2px); }
.btn:active{ transform:scale(.97); }
@keyframes fxHero{ from{ opacity:0; transform:translateY(24px); } to{ opacity:1; transform:none; } }
.hero h1, .hero p, .hero .btn{ animation:fxHero .9s ease both; }
.hero p{ animation-delay:.15s; } .hero .btn{ animation-delay:.3s; }
@keyframes fxFloat{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(-6px); } }
.atol-badge, .hero-badge{ animation:fxFloat 4s ease-in-out infinite; }
@media (prefers-reduced-motion:reduce){
  .fx-reveal{ opacity:1; transform:none; transition:none; }
  *{ animation:none !important; }
}
