/* =========================================================
   Animation keyframes — 300–600ms micro-interactions plus
   longer orchestrated reveals. Respects reduced-motion.
   ========================================================= */

@keyframes fadeUp{ from{ opacity:0; transform:translateY(24px);} to{ opacity:1; transform:translateY(0);} }
@keyframes fadeLeft{ from{ opacity:0; transform:translateX(-24px);} to{ opacity:1; transform:translateX(0);} }
@keyframes fadeRight{ from{ opacity:0; transform:translateX(24px);} to{ opacity:1; transform:translateX(0);} }
@keyframes zoomIn{ from{ opacity:0; transform:scale(.9);} to{ opacity:1; transform:scale(1);} }
@keyframes pulseGlow{ 0%,100%{ box-shadow:0 0 0 0 rgba(212,175,55,.25);} 50%{ box-shadow:0 0 0 10px rgba(212,175,55,0);} }

.fade-up{ animation:fadeUp .5s var(--ease) forwards; }
.fade-left{ animation:fadeLeft .5s var(--ease) forwards; }
.fade-right{ animation:fadeRight .5s var(--ease) forwards; }
.zoom-in{ animation:zoomIn .5s var(--ease) forwards; }

.loader-screen{
  position:fixed; inset:0; background:var(--bg); z-index:5000;
  display:flex; align-items:center; justify-content:center;
  transition:opacity .6s var(--ease), visibility .6s;
}
.loader-screen.hidden{ opacity:0; visibility:hidden; }
.loader-iris{
  width:64px; height:64px; border-radius:50%;
  border:1px solid var(--border); border-top-color:var(--accent);
  animation:spin .9s linear infinite;
}
@keyframes spin{ to{ transform:rotate(360deg); } }

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
    scroll-behavior:auto !important;
  }
}
