/* ========== REVEAL SYSTEM ========== */
[data-reveal] {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.75s var(--ease-out), transform 0.75s var(--ease-out);
  transition-delay: var(--delay, 0ms);
  will-change: opacity, transform;
}
[data-reveal="fade"]  { transform: none; }
[data-reveal="left"]  { transform: translateX(-32px); }
[data-reveal="right"] { transform: translateX(32px); }
[data-reveal="scale"] { transform: scale(0.92); }
[data-reveal].is-visible { opacity: 1; transform: none; }

/* ========== KEYFRAMES ========== */
@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes loaderFloat {
  0%   { transform: translateY(0) scale(1); }
  100% { transform: translateY(-10px) scale(1.02); }
}

@keyframes loaderBar {
  0%   { transform: translateX(-100%); }
  100% { transform: translateX(220%); }
}

@keyframes loaderGridPulse {
  0%, 100% { opacity: 0.04; }
  50%      { opacity: 0.10; }
}

@keyframes heroZoom {
  0%   { transform: scale(1.04) translateY(0); }
  100% { transform: scale(1.10) translateY(-2%); }
}

@keyframes meshShift1 {
  0%, 100% { transform: translate(0,0) scale(1); }
  50%      { transform: translate(-6%, 4%) scale(1.08); }
}
@keyframes meshShift2 {
  0%, 100% { transform: translate(0,0) scale(1); }
  50%      { transform: translate(8%, -5%) scale(1.05); }
}
@keyframes meshShift3 {
  0%, 100% { transform: translate(0,0) scale(1.05); }
  50%      { transform: translate(-4%, -6%) scale(1.12); }
}

@keyframes scrollBounce {
  0%, 100% { transform: translateY(0); opacity: 0.85; }
  50%      { transform: translateY(8px); opacity: 0.35; }
}

@keyframes borderDraw {
  from { height: 0; }
  to   { height: 100%; }
}

@keyframes floatingPulse {
  0%   { box-shadow: 0 0 0 0 rgba(25,124,135,0.28), 0 12px 30px rgba(25,124,135,0.20); }
  70%  { box-shadow: 0 0 0 18px rgba(25,124,135,0), 0 12px 30px rgba(25,124,135,0.20); }
  100% { box-shadow: 0 0 0 0 rgba(25,124,135,0), 0 12px 30px rgba(25,124,135,0.20); }
}

@keyframes availPulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(115,197,138,0.42); }
  50%       { box-shadow: 0 0 0 5px rgba(115,197,138,0); }
}

@keyframes shimmer {
  0%   { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}
