/* Calendario de Halloween (/halloween): cementerio nocturno con lápidas como puertas. */
.hw-page { overflow-x: hidden; background: radial-gradient(ellipse at 50% -10%, #3b1d5e 0%, #12081f 55%, #05030a 100%); min-height: 100dvh; }
.hw-scene { position: relative; max-width: 720px; margin: 0 auto; padding: 16px 16px 120px; color: #f5e6d3; }
.hw-sky { position: absolute; inset: 0 0 auto 0; height: 260px; pointer-events: none; }
.hw-moon { position: absolute; top: 4px; right: 10px; width: 58px; height: 58px; border-radius: 50%;
  background: radial-gradient(circle at 35% 35%, #fff8d6, #f5d77a 60%, #d9a441); box-shadow: 0 0 46px 14px rgba(245, 215, 122, .3); }
.hw-fog { position: absolute; left: -20%; right: -20%; bottom: 10px; height: 120px;
  background: radial-gradient(ellipse at 50% 60%, rgba(190, 180, 220, .16), transparent 70%); filter: blur(10px);
  animation: hw-fog 18s ease-in-out infinite alternate; }
@keyframes hw-fog { from { transform: translateX(-4%); } to { transform: translateX(4%); } }
.hw-hero { position: relative; z-index: 1; text-align: center; padding: 60px 0 18px; }
.hw-title { font-size: clamp(1.7rem, 6vw, 2.4rem); margin: 0; color: #ffb347; text-shadow: 0 0 18px rgba(255, 140, 0, .55); }
.hw-sub { margin: 8px auto 0; max-width: 34ch; opacity: .85; }
.hw-stats { display: flex; gap: 8px; justify-content: center; flex-wrap: wrap; margin-top: 14px; }
.hw-pill { padding: 6px 12px; border-radius: 999px; background: rgba(255, 140, 0, .14); border: 1px solid rgba(255, 140, 0, .35); font-weight: 700; font-size: .85rem; }
.hw-doors { position: relative; display: grid; grid-template-columns: repeat(auto-fill, minmax(84px, 1fr)); gap: 14px; margin-top: 18px; }
.hw-door { position: relative; aspect-ratio: 3 / 4; border-radius: 42px 42px 8px 8px; display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 4px; text-decoration: none; color: #e9e3f5;
  background: linear-gradient(180deg, #6b6880, #3e3b4f); border: 2px solid #8a86a3; box-shadow: inset 0 -10px 0 rgba(0, 0, 0, .25); }
.hw-door-num { font-size: 1.5rem; font-weight: 800; }
.hw-door-tag { font-size: .72rem; font-weight: 700; opacity: .9; text-align: center; padding: 0 4px; }
.hw-door.is-locked, .hw-door.is-missed { filter: grayscale(.6) brightness(.6); }
.hw-door.is-open { border-color: #c084fc; }
.hw-door.is-completed { background: linear-gradient(180deg, #4a7a4a, #284d2c); border-color: #86efac; }
.hw-door.is-completed .hw-door-tag { color: #fde68a; font-size: .95rem; letter-spacing: 2px; }
.hw-door.is-today { background: linear-gradient(180deg, #ff9a3c, #c2410c); border-color: #ffd28a; color: #1a0b00;
  animation: hw-glow 1.6s ease-in-out infinite; }
@keyframes hw-glow { 0%, 100% { box-shadow: 0 0 10px 2px rgba(255, 140, 0, .55); } 50% { box-shadow: 0 0 26px 8px rgba(255, 140, 0, .85); } }
@media (prefers-reduced-motion: reduce) { .hw-fog, .hw-door.is-today { animation: none; } }
