/* Event-theme base: the fixed effect layer, the notice banner and the santa
 * slot. The per-theme file (theme-<key>.css) adds that theme's own decoration.
 * All self-hosted — the strict CSP (no inline CSS/JS) is untouched. */

.theme-fx { position: fixed; inset: 0; pointer-events: none; z-index: 1000; overflow: hidden; }
.theme-canvas { position: absolute; inset: 0; width: 100%; height: 100%; }

/* ---- Memorial block (Remembrance): a quiet block at the foot of the page ---- */
.theme-memorial {
  display: flex; flex-direction: column; align-items: center; gap: .6rem;
  text-align: center; padding: 2.2rem 1rem 2.6rem; margin: 0;
  background: #f4f1ec; color: #1b1b1b; border-top: 3px solid #c8102e;
}
.theme-memorial__img { width: 164px; height: auto; display: block; }
.theme-memorial__text {
  margin: 0; font-family: "Karla", sans-serif; display: flex; flex-direction: column; gap: .35rem; align-items: center;
}
.theme-memorial__text strong { font-size: 1.1rem; letter-spacing: .07em; text-transform: uppercase; }
.theme-memorial__link { color: #b3202b; font-weight: 800; text-decoration: none; }
.theme-memorial__link:hover { text-decoration: underline; }

/* ---- Santa (Christmas): hidden below the fold, slides up on .is-up ---- */
.theme-santa {
  position: fixed; right: 20px; bottom: 0; width: 96px; height: auto; z-index: 1001;
  transform: translateY(112%); transition: transform .8s cubic-bezier(.22, 1, .36, 1);
  filter: drop-shadow(0 6px 10px rgba(0, 0, 0, .25));
}
.theme-santa.is-up { transform: translateY(6%); }

/* ---- Bats (Halloween): spans animated by the theme file ---- */
.theme-bat { position: absolute; top: -40px; left: -60px; width: 34px; height: 20px; }

@media (max-width: 640px) {
  .theme-santa { width: 66px; right: 10px; }
  .theme-notice { font-size: .85rem; padding: .45rem .8rem; }
}
@media (prefers-reduced-motion: reduce) {
  .theme-santa { display: none; }
}
