/* ============================================================
   Animations — Crimson Academy
   ============================================================ */

@keyframes fadeUp {
  from { opacity: 0; transform: translateY(40px); }
  to { opacity: 1; transform: none; }
}
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes shimmer {
  0% { background-position: -1000px 0; }
  100% { background-position: 1000px 0; }
}
@keyframes float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}
@keyframes drawLine {
  from { stroke-dashoffset: 1000; }
  to { stroke-dashoffset: 0; }
}
@keyframes pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: .6; }
}
@keyframes ornamentFloat {
  0%, 100% { transform: translateY(0) rotate(0); }
  50% { transform: translateY(-6px) rotate(-3deg); }
}

.float { animation: float 3s ease-in-out infinite; }
.pulse { animation: pulse 2.4s ease-in-out infinite; }

/* Image blur-up */
.blur-up { filter: blur(20px); transition: filter 1s var(--ease-luxe); }
.blur-up.is-loaded { filter: blur(0); }

/* Marquee */
.marquee {
  display: flex;
  overflow: hidden;
  gap: 3rem;
}
.marquee-inner {
  display: flex;
  gap: 3rem;
  animation: marquee 35s linear infinite;
  white-space: nowrap;
}
@keyframes marquee {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}

/* Underline draw */
@keyframes underline {
  from { transform: scaleX(0); transform-origin: left; }
  to { transform: scaleX(1); transform-origin: left; }
}

/* Ornament wreath */
.ornament-wreath {
  display: inline-flex; align-items: center; gap: .75rem;
  color: var(--accent-2);
}
.ornament-wreath svg { width: 22px; height: 22px; }
.ornament-wreath .center-dot { width: 4px; height: 4px; background: var(--accent-2); border-radius: 50%; }
