/* ==========================================================================
   Animations (légères, GPU : transform / opacity uniquement)
   ========================================================================== */
@keyframes spin { to { transform: rotate(360deg); } }

@keyframes door-shake {
  0%, 100% { transform: translateX(0); }
  20% { transform: translateX(-5%) rotate(-2deg); }
  40% { transform: translateX(4%) rotate(1.5deg); }
  60% { transform: translateX(-3%); }
  80% { transform: translateX(2%); }
}

/* Halo pulsé de la porte du jour */
@keyframes today-glow {
  0%, 100% { opacity: .55; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.06); }
}
.door--today .door__glow {
  position: absolute; inset: -6%; border-radius: 30%;
  background: radial-gradient(closest-side, rgba(255,208,80,.3), rgba(255,160,30,0));
  animation: today-glow 2.4s ease-in-out infinite;
  pointer-events: none;
}

@keyframes drawer-in { from { transform: translateX(-100%); } to { transform: none; } }
@keyframes modal-in { from { opacity: 0; transform: translateY(14px) scale(.97); } to { opacity: 1; transform: none; } }
.modal:not([hidden]) .modal__box { animation: modal-in .28s var(--ease-out); }

@keyframes pop { 0% { transform: scale(.6); opacity: 0; } 70% { transform: scale(1.15); } 100% { transform: scale(1); opacity: 1; } }
.is-popping { animation: pop .45s var(--ease-spring); }

/* Apparition de la page */
body.is-ready .calendar, body.is-ready .panel, body.is-ready .cta-wrap, body.is-ready .mascot { animation: rise .6s var(--ease-out) both; }
body.is-ready .panel { animation-delay: .08s; }
body.is-ready .cta-wrap { animation-delay: .14s; }
@keyframes rise { from { opacity: 0; translate: 0 12px; } to { opacity: 1; translate: 0 0; } }

/* ---- Mouvement réduit ----------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
  .door--today .door__glow { animation: none; opacity: .8; }
  .snow { display: none; }
}
