@keyframes breathing {
  0%, 100% { transform: scale(1.04); }
  50%      { transform: scale(1.08); }
}

@keyframes gear-rotate {
  from { transform: scale(1.2) rotate(0deg); }
  to   { transform: scale(1.2) rotate(360deg); }
}

/* Silver layer fades in over gold, holds, fades back out */
@keyframes gold-to-silver {
  0%, 8%    { opacity: 0; }
  28%, 68%  { opacity: 1; }
  88%, 100% { opacity: 0; }
}

@keyframes bg-crossfade {
  0%, 40%   { opacity: 1; }
  50%, 90%  { opacity: 0; }
  100%      { opacity: 1; }
}

@keyframes glint-sweep {
  0% { transform: rotate(0deg) translateX(-100%); opacity: 0; }
  20% { opacity: 1; }
  80% { opacity: 1; }
  100% { transform: rotate(0deg) translateX(100%); opacity: 0; }
}

@keyframes monogram-shimmer {
  0% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}

@keyframes door-swing-left {
  0% { transform: translateY(-0.2em) rotateY(0deg); opacity: 1; }
  60% { opacity: 1; }
  100% { transform: translateY(-0.2em) rotateY(-90deg) translateX(-60px); opacity: 0; }
}

@keyframes door-swing-right {
  0% { transform: rotateY(0deg); opacity: 1; }
  60% { opacity: 1; }
  100% { transform: rotateY(90deg) translateX(60px); opacity: 0; }
}

@keyframes fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes fade-out {
  from { opacity: 1; }
  to { opacity: 0; }
}

@keyframes reveal-up {
  from {
    opacity: 0;
    transform: translateY(40px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes line-extend {
  from { width: 0; }
  to { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}
