.adventskalender-body {
  overflow: hidden;
  height: 100vh;
  background: linear-gradient(
    to bottom,
    #4e75b8 0%,   /* new base sky color */
    #bfd8ef 40%,
    #f2f6fc 70%,
    #ffffff 100%
  );
  color: #3b3b3b;
  overscroll-behavior-x: contain;
  font-family: 'Segoe UI', 'Helvetica Neue', sans-serif;
}

.adventskalender-body::after {
  content: '';
  position: fixed;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 18vh;
  pointer-events: none;
  z-index: 1;
  background:
    radial-gradient(
      ellipse at 50% 100%,
      rgba(255, 255, 255, 0.55) 0%,
      rgba(255, 255, 255, 0.35) 20%,
      rgba(255, 255, 255, 0.12) 55%,
      rgba(255, 255, 255, 0) 100%
    ),
    radial-gradient(
      ellipse at 30% 105%,
      rgba(255, 245, 240, 0.55) 0%,
      rgba(255, 245, 240, 0) 65%
    ),
    radial-gradient(
      ellipse at 70% 105%,
      rgba(250, 250, 255, 0.45) 0%,
      rgba(250, 250, 255, 0) 65%
    );
  filter: blur(8px);
  transform: translateZ(0); /* avoids banding */
}

.horizontal-scroll-wrapper {
  display: flex;
  overflow-x: auto;
  overflow-y: hidden;
  scroll-behavior: auto;
  -webkit-overflow-scrolling: touch;
  height: 100vh;
  scrollbar-width: none;
  scroll-snap-type: none; /* Ensure no snapping interferes */
}

.horizontal-scroll-wrapper::-webkit-scrollbar {
  display: none;
}

.adventskalender-body .horizontal-scroll-wrapper &gt; * {
  flex: 0 0 100%;
  max-width: 100vw;
  height: 100%;
  box-sizing: border-box;
}

.adventskalender-nav {
  position: fixed;
  top: 50%;
  left: 0;
  right: 0;
  z-index: 500;
  display: flex;
  justify-content: space-between;
  transform: translateY(-50%);
  pointer-events: none;
  padding: 0 1rem;
}

.scroll-button {
  background: rgba(255, 255, 255, 0.6);
  border: none;
  color: #6b1b33;
  font-size: 2rem;
  padding: 0.6rem 1.2rem;
  border-radius: 50%;
  cursor: pointer;
  pointer-events: auto;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
  transition: background 0.3s ease, transform 0.2s ease;
}

.scroll-button:hover {
  background: rgba(255, 255, 255, 0.8);
  transform: scale(1.1);
}

.scroll-button.hidden {
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s ease;
}

#button-highlight-canvas {
  position: fixed;
  inset: 0;
  width: 100vw;
  height: 100vh;
  pointer-events: none;
  z-index: 6; /* above background glow, below snow and popups */
}

#parallax-canvas {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 2;
}

#snow-canvas {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 5;
  display: block;
}

#stars-canvas {
  position: fixed;
  inset: 0;
  width: 100vw;
  height: 100vh;
  pointer-events: none;
  z-index: 2; /* über Hintergrund &amp; Parallax, unter Snow (5) */
}

#logo-canvas {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  pointer-events: none;
  z-index: -1; /* it must be behind the surprise content */
  display: block;
}

@media (max-width: 600px) {
  #logo-canvas {
    top: 20px; /* pushes canvas down */
    height: calc(100vh - 20px); /* keeps proportions correct */
  }
}

#tree-canvas {
  position: fixed;
  inset: 0;              /* Vollbild wie Snow-Canvas */
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: -100;            /* über Parallax (2), unter Ornaments (4) &amp; Snow (5) */
}

#scroll-hint-canvas {
  position: fixed;
  inset: 0;
  width: 100vw;
  height: 100vh;
  pointer-events: none;
  z-index: 8; /* higher to avoid snow glare */
}

#village-canvas {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: -1;
}

.background-ornaments {
  z-index: 4;
}

.background-bokeh {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 1;
  overflow: hidden;
}

.bokeh-dot {
  position: absolute;
  border-radius: 50%;
  filter: blur(10px);
  opacity: 0.18;
  background: radial-gradient(circle at 30% 30%, rgba(255,255,255,0.9), rgba(255,214,160,0));
}

.calendar-panel::before {
  top: calc(var(--random-top, 20%) - 15%);
  left: calc(var(--random-left, 20%) - 10%);
}

.calendar-panel::after {
  top: calc(var(--random-top, 20%) + 10%);
  right: 8%;
  opacity: 0.25;
}

.calendar-panel::before {
  top: calc(var(--random-top, 20%) - 15%);
  left: calc(var(--random-left, 20%) - 10%);
}

.calendar-panel::after {
  top: calc(var(--random-top, 20%) + 10%);
  right: 8%;
  opacity: 0.25;
}

.background-ornaments {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 4;
}

.background-ornament {
  position: absolute;
  width: 60px;
  height: 80px;
  border-radius: 50% 50% 48% 48%;
  border: 1px solid rgba(255, 190, 210, 0.5);
  background: radial-gradient(circle at 30% 20%, rgba(255,255,255,0.8), rgba(255,167,188,0.1));
  opacity: 0.18;
}

.background-ornament .orn-string {
  display: block;
  position: absolute;
  top: calc(-1 * var(--string-length, 40px));
  left: 50%;
  width: 2px;
  height: var(--string-length, 40px);
  background: rgba(255, 190, 210, 0.4);
  transform: translateX(-50%);
}

.surprise-hidden {
  display: none;
  opacity: 0;
  transition: opacity 0.5s ease;
}

.surprise-hidden.revealed {
  display: block;
  opacity: 1;
  transition: opacity 0.5s ease-in-out;
}

.surprise-content-wrapper {
  display: none;
  opacity: 0;
  transition: opacity 0.4s ease;
  max-width: 600px;
  width: 100%;
  max-height: 92vh;
  min-height: 60vh;
  overflow-y: auto;
  padding: 1.5rem;
  background: #fff9fb; /* soft blush-white */
  border-radius: 12px;
  box-shadow: 0 0 40px rgba(0, 0, 0, 0.1);
  border: 3px solid #ffd6e0;
  position: relative;
  z-index: 10000;
}

.surprise-content-wrapper.revealed {
  display: block;
  opacity: 1;
  animation: reveal-pop 0.5s ease-out;
}

/* GENERAL PANEL STYLES */
.calendar-panel {
  flex: 0 0 100%;
  max-width: 100vw;
  min-height: 100vh;
  box-sizing: border-box;
  padding: 2rem;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  color: #333;
  text-align: center;
  overflow-y: auto;
  position: relative;
  z-index: 4;
}

.calendar-inner-wrapper {
  max-width: 680px;
  width: 100%;
  padding: 1.5rem;
  box-sizing: border-box;
  background: #ffffff;
  border-radius: 16px;
  border: 4px solid #f8e1e7;
  box-shadow: 0 0 30px rgba(0, 0, 0, 0.1);

  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;

  /* Always center and fixed — even before reveal */
  position: fixed;                     /* ← FIX 1 */
  top: 50%;                            /* ← FIX 2 */
  left: 50%;                           /* ← FIX 3 */
  transform: translate(-50%, -50%);    /* ← FIX 4 */

  z-index: 9999;

  /* Hidden state */
  opacity: 0;
  pointer-events: none;                /* prevent click-through */
  transition: opacity 0.35s ease;
}

.calendar-inner-wrapper.revealed {
  opacity: 1;
  pointer-events: auto;
}

.calendar-panel img {
  max-width: 80%;
  max-height: 80%;
  object-fit: contain;
  border-radius: 10px;
  box-shadow: 0 0 20px rgba(255, 255, 255, 0.2);
}

/* ===========================================
   GLASS-ORNAMENT REVEAL BUTTON
   =========================================== */
.reveal-button {
  width: 92px;
  height: 92px;
  border-radius: 50%;
  position: absolute;
  top: var(--random-top);
  left: var(--random-left);
  cursor: pointer;

  display: flex;
  align-items: center;
  justify-content: center;

  font-family: "Cormorant Garamond", serif;
  font-weight: 700;
  font-size: 2.4rem;
  color: #5a1d34;

  z-index: 4;
  transform: translateZ(0);

  /* STRONG rose-gold metal rim */
  background:
    radial-gradient(circle at 30% 30%,
      rgba(255, 255, 255, 0.95) 0%,
      rgba(255, 230, 240, 0.5) 35%,
      rgba(255, 175, 195, 0.35) 75%,
      rgba(235, 150, 175, 0.65) 100%
    );

  border: 4px solid rgba(255, 185, 205, 0.9);
  box-shadow:
    0 0 0 4px rgba(255, 230, 240, 0.8) inset,
    0 6px 18px rgba(0, 0, 0, 0.25),
    0 0 22px rgba(255, 190, 210, 0.65);

  /* Crisp and noticeable animation */
  animation: medallionBreath 4.5s ease-in-out infinite;
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}

/* Inner engraved snowflake texture */
.reveal-button::before {
  content: "";
  position: absolute;
  inset: 0;
  background: url('https://upload.wikimedia.org/wikipedia/commons/5/57/Snowflake_icon.svg')
      center/38% no-repeat;
  opacity: 0.12;
  filter: brightness(0.8);
  pointer-events: none;
}

/* Strong highlight arc */
.reveal-button::after {
  content: "";
  position: absolute;
  width: 140%;
  height: 140%;
  top: -40%;
  left: -20%;
  background: radial-gradient(circle,
    rgba(255, 255, 255, 0.9) 0%,
    rgba(255, 255, 255, 0.0) 55%
  );
  transform: rotate(-25deg);
  opacity: 0.55;
  pointer-events: none;
}

/* Breathing + slight shimmer */
@keyframes medallionBreath {
  0% {
    transform: scale(1);
    box-shadow:
      0 0 0 4px rgba(255, 230, 240, 0.8) inset,
      0 6px 18px rgba(0, 0, 0, 0.25),
      0 0 22px rgba(255, 190, 210, 0.65);
  }
  50% {
    transform: scale(1.05);
    box-shadow:
      0 0 0 4px rgba(255, 245, 250, 1) inset,
      0 8px 26px rgba(0, 0, 0, 0.28),
      0 0 30px rgba(255, 210, 225, 0.85);
  }
  100% {
    transform: scale(1);
    box-shadow:
      0 0 0 4px rgba(255, 230, 240, 0.8) inset,
      0 6px 18px rgba(0, 0, 0, 0.25),
      0 0 22px rgba(255, 190, 210, 0.65);
  }
}

/* Strong hover */
.reveal-button:hover {
  transform: scale(1.08);
  box-shadow:
    0 0 0 4px rgba(255, 255, 255, 1) inset,
    0 10px 28px rgba(0, 0, 0, 0.3),
    0 0 34px rgba(255, 210, 225, 0.95);
}

/* ============================
   SNOWGLOBE BUTTON (PAST DAYS)
   ============================ */

.snowglobe-cover {
  width: 110px;
  height: 110px;
  position: absolute;
  top: var(--random-top);
  left: var(--random-left);
  cursor: pointer;

  border-radius: 50%;
  background: radial-gradient(circle at 30% 30%,
      rgba(255,255,255,0.95),
      rgba(230,240,255,0.35)
  );

  border: 4px solid rgba(210,225,255,0.9);
  box-shadow:
    0 0 0 4px rgba(255,255,255,0.6) inset,
    0 6px 16px rgba(0,0,0,0.25),
    0 0 22px rgba(200,215,255,0.65);

  display: flex;
  align-items: center;
  justify-content: center;
  padding: 10px;
  z-index: 4;
  transition: transform 0.25s ease, box-shadow 0.25s ease;
  transform-origin: center center;
}

.snowglobe-cover:hover {
  transform: scale(1.5); /* magnification */
  box-shadow: 0 8px 20px rgba(0,0,0,0.25); /* optional lift effect */
}

.snowglobe-cover img {
  width: 65%;
  height: auto;
  object-fit: contain;
  filter: drop-shadow(0 2px 4px rgba(0,0,0,0.25));
  border-radius: 4px;
}

.surprise-content-wrapper.revealed,
.placeholder-content-wrapper.revealed {
  animation: reveal-pop 0.5s ease-out;
}

.close-button {
  position: absolute;
  top: 10px;
  right: 10px;
  background: #ffcad4;
  border: none;
  border-radius: 50%;
  color: #6b1b33;
  font-size: 1.5rem;
  width: 32px;
  height: 32px;
  cursor: pointer;
  box-shadow: 0 0 6px rgba(0,0,0,0.1);
  z-index: 2100;
  transition: background 0.3s ease;
}

.close-button:hover {
  background: #ffb5c1;
}

.surprise-flex {
  display: flex;
  min-height: 120px;
  width: 100%;
  flex-direction: column;
  align-items: center;
  gap: 1.5rem;
}

/* ACTIVE SURPRISE STYLING */

.surprise-label {
  font-size: 1rem;
  color: #d6336c;
  margin-bottom: 1rem;
  text-transform: uppercase;
  letter-spacing: 1px;
}

.surprise-image {
  position: relative;
  overflow: visible;
}

.surprise-image img {
  width: 80%;
  max-width: 300px;
  height: auto;
  border-radius: 10px;
  border: 1px solid rgba(220, 220, 220, 0.9);
  margin: 0 auto 1rem auto;
  display: block;
  box-shadow: 0 0 20px rgba(255, 255, 255, 0.15);
  transition: transform 0.35s ease, filter 0.35s ease;
  transform-origin: center center;
}

.surprise-image:hover img {
  transform: scale(1.12);
  filter: drop-shadow(0 8px 16px rgba(0,0,0,0.25));
}

/* Remove border + shadow for PNGs */
.surprise-image.png-cover img {
  border: none;
  box-shadow: none;
}

/* Slight glow to blend edges better */
.surprise-image.png-cover img {
  filter: drop-shadow(0 0 6px rgba(255,255,255,0.4))
          drop-shadow(0 4px 12px rgba(0,0,0,0.2));
}

/* Optional: rounded mask for more premium look */
.surprise-image.png-cover img {
  border-radius: 8px;
}

/* Base fan stack for ALL viewports */
.surprise-multi-images {
  display: flex;
  justify-content: center;
  align-items: flex-end;
  position: relative;
  padding: 0.5rem 0 1.25rem;
}

/* Each cover in the stack */
.surprise-multi-images .surprise-image {
  position: relative;
  z-index: 1;
  margin-left: -32px; /* overlap on all devices */
  transition: transform 0.25s ease, box-shadow 0.25s ease, z-index 0s;
}

.surprise-multi-images .surprise-image:first-child {
  margin-left: 0;
}

/* Fan angles: apply EVERYWHERE (mobile + desktop) */
.surprise-multi-images:not(.single) .surprise-image:nth-child(1) {
  transform: rotate(-7deg) translateY(10px);
  z-index: 1;
}
.surprise-multi-images:not(.single) .surprise-image:nth-child(2) {
  transform: rotate(-2deg);
  z-index: 2;
}
.surprise-multi-images:not(.single) .surprise-image:nth-child(3) {
  transform: rotate(3deg) translateY(8px);
  z-index: 1;
}
.surprise-multi-images:not(.single) .surprise-image:nth-child(4) {
  transform: rotate(7deg) translateY(14px);
  z-index: 0;
}

/* Default cover size in stack (mobile-friendly) */
.surprise-multi-images .surprise-image img {
  width: 100px;
  max-width: 30vw;
  border-radius: 10px;
  border: 1px solid rgba(220, 220, 220, 0.9);
  box-shadow: 0 0 18px rgba(0, 0, 0, 0.25);
}

/* Single-book case: no fan, big centered cover */
.surprise-multi-images.single .surprise-image {
  margin-left: 0;
  transform: none;
}

.surprise-multi-images.single .surprise-image img {
  width: 70%;
  max-width: 260px;
}

/* Desktop: slightly bigger covers and stronger overlap */
@media (min-width: 768px) {
  .surprise-multi-images .surprise-image img {
    width: 140px;
    max-width: 155px;
  }

  .surprise-multi-images .surprise-image {
    margin-left: -40px;
  }
}

.surprise-title {
  font-size: clamp(1.2rem, 2.5vh, 1.6rem);
  margin: 1rem 0 0.5rem;
  color: #6b1b33;
}

.surprise-excerpt {
  font-size: clamp(0.95rem, 2vh, 1.2rem);
  color: #333;
  margin-bottom: 1.2rem;
  line-height: 1.4;
}

.surprise-cta {
  display: inline-block;
  background: #d6336c;
  color: white;
  font-size: clamp(0.9rem, 2vh, 1rem);
  padding: clamp(0.5rem, 1.5vh, 0.75rem) clamp(1rem, 3vw, 1.5rem);
  border-radius: 6px;
  font-weight: bold;
  text-decoration: none;
  transition: background 0.3s;
  position: relative;
  z-index: 10001;
}

.surprise-cta:hover {
  background: #b02557;
}

.placeholder-wrapper {
  max-width: 500px;
  width: 100%;
  margin: 0 auto;
  text-align: center;
}

.placeholder-content-wrapper {
  display: none;
  opacity: 0;
  transition: opacity 0.4s ease;
  padding: 2rem;
  background: #fff0f5;
  border: 2px dashed #ffabc0;
  border-radius: 12px;
  color: #6b1b33;
  font-size: 1.1rem;
  line-height: 1.5;
  position: relative;
  z-index: 1001;
}

.placeholder-content-wrapper.revealed {
  display: block;
  opacity: 1;
}

.placeholder-message .highlight-link {
  color: #c0395e; /* Deep rose / burgundy */
  text-decoration: underline;
  font-weight: bold;
  transition: color 0.3s ease;
}

.placeholder-message .highlight-link:hover {
  color: #a32649; /* Darker hover */
}

.countdown {
  margin: 1rem auto;
  font-size: 1.2rem;
  display: flex;
  justify-content: center;
  gap: 1rem;
  font-weight: bold;
  color: #ffda79;
}

.countdown span {
  background: #ffabc0;
  color: #fff;
  padding: 0.4rem 0.8rem;
  border-radius: 8px;
  min-width: 3rem;
  text-align: center;
}

.newsletter-note {
  margin-top: 1rem;
  font-size: 1rem;
}

.newsletter-note .highlight-link {
  color: #7c1430;
  text-decoration: underline;
  font-weight: bold;
  transition: color 0.3s ease;
}

.newsletter-note .highlight-link:hover {
  text-decoration: none;
  color: #550f22;
}

/* --- MUSIC WIDGET CONTAINER --- */
.bk-music-widget {
  position: fixed;
  top: 16px;
  right: 16px;
  z-index: 3000;
  font-family: 'Segoe UI', sans-serif;
}

/* --- TOGGLE BUTTON (MUSIC ICON) --- */
.bk-music-toggle {
  background: rgba(255, 255, 255, 0.55);
  border: 2px solid rgba(255,255,255,0.8);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  border-radius: 50%;
  padding: 10px 12px;
  font-size: 1.3rem;
  cursor: pointer;
  box-shadow: 0 4px 12px rgba(0,0,0,0.15);
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.bk-music-toggle:hover {
  transform: scale(1.08);
  box-shadow: 0 6px 16px rgba(255,255,255,0.35);
}

/* --- PANEL --- */
.bk-music-panel {
  margin-top: 10px;
  background: rgba(255, 255, 255, 0.8);
  border: 2px solid rgba(255,255,255,0.7);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);

  padding: 10px 14px;

  /* Fixed width → NO  
     Auto width + safe minimum → YES */
  width: auto;
  min-width: 160px;        /* ← key change */

  border-radius: 12px;
  box-shadow: 0 4px 12px rgba(0,0,0,0.15);
  display: none;
  animation: fadeInMusic 0.25s ease-out;
}

@keyframes fadeInMusic {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* --- CONTROLS --- */
.bk-music-controls {
  display: flex;
  align-items: center;
  gap: 10px;
}

.bk-btn {
  cursor: pointer;
  font-size: 1.1rem;
  border: none;
  background: #fff0f5;
  border-radius: 6px;
  padding: 4px 8px;
  box-shadow: 0 2px 6px rgba(0,0,0,0.1);
  transition: background 0.25s ease;
}

.bk-btn:hover {
  background: #ffe1eb;
}

/* ============================
   CUSTOM RANGE (VOLUME SLIDER)
   ============================ */

#bk-volume {
  -webkit-appearance: none;
  appearance: none;
  width: 80px;
  height: 6px;
  border-radius: 4px;

  /* Background of the *track* */
  background: #f3c6d5; /* soft rose */
  border: 1px solid rgba(0,0,0,0.15);

  cursor: pointer;
}

/* Chrome / Edge / Safari — TRACK */
#bk-volume::-webkit-slider-runnable-track {
  height: 6px;
  background: linear-gradient(
    90deg,
    #d6336c 0%,           /* active part */
    #f6dbe5 60%,          /* mid tint */
    #f7eaf0 100%          /* end tint */
  );
  border-radius: 4px;
  border: 1px solid rgba(0,0,0,0.12);
}

/* Chrome / Edge / Safari — THUMB */
#bk-volume::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: #d6336c; /* deep berry */
  border: 2px solid #fff;
  box-shadow: 0 1px 4px rgba(0,0,0,0.25);
  margin-top: -4px; /* centers thumb on track */
  cursor: pointer;
}

/* Firefox — TRACK */
#bk-volume::-moz-range-track {
  height: 6px;
  background: linear-gradient(
    90deg,
    #d6336c 0%,
    #f6dbe5 60%,
    #f7eaf0 100%
  );
  border-radius: 4px;
  border: 1px solid rgba(0,0,0,0.12);
}

/* Firefox — THUMB */
#bk-volume::-moz-range-thumb {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: #d6336c;
  border: 2px solid #fff;
  box-shadow: 0 1px 4px rgba(0,0,0,0.25);
  cursor: pointer;
}

/* IE / Legacy Edge fallback (optional) */
#bk-volume::-ms-track {
  height: 6px;
  border-radius: 4px;
  background: transparent;
  border-color: transparent;
  color: transparent;
}

#bk-volume::-ms-fill-lower {
  background: #d6336c;
}
#bk-volume::-ms-fill-upper {
  background: #f7eaf0;
}

#bk-volume::-ms-thumb {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: #d6336c;
  border: 2px solid #fff;
}

/* Moon + Santa cluster in top-right sky */
.sky-hero {
  position: fixed;
  top: 40px;
  right: 40px;
  width: 720px;      /* was 520 */
  height: 600px;     /* was 440 */
  pointer-events: none;
  z-index: 3;
}

.sky-hero img {
  display: block;
  max-width: 100%;
}

/* moon behind */
.sky-hero-moon {
  position: absolute;
  top: 0;
  right: 0;
  width: 600px;
  animation: moonShift 40s ease-in-out infinite;
  transform-origin: center;
}

@keyframes moonShift {
  0%   { transform: translateX(0); }
  50%  { transform: translateX(-12px); }  /* VERY subtle backward drift */
  100% { transform: translateX(0); }
}

/* Santa sleigh in front of moon */
.sky-hero-santa {
  position: absolute;
  bottom: 180px;
  right: 150px;
  width: 550px;
  animation: santaOrbit 26s linear infinite;
  transform-origin: center;
}

@keyframes santaOrbit {
  0%   { transform: translate(0, 0) rotate(0deg); }
  25%  { transform: translate(18px, -10px) rotate(1deg); }
  50%  { transform: translate(32px, 0px) rotate(2deg); }
  75%  { transform: translate(18px, 10px) rotate(1deg); }
  100% { transform: translate(0, 0) rotate(0deg); }
}

/* Hide the whole thing on mobile */
@media (max-width: 768px) {
  .sky-hero {
    display: none;
  }
}

.floating-fairy {
  position: fixed;
  bottom: 22%;
  left: 4%;
  z-index: -1;
  pointer-events: none;
  animation: fairyIdle 10s ease-in-out infinite;
  opacity: 0.9;
}

@keyframes fairyIdle {
  0% {
    transform: translate3d(-35px, 25px, 0) rotate(-4deg) scale(0.98);
  }
  50% {
    transform: translate3d(35px, -75px, 0) rotate(4deg) scale(1.08);
  }
  100% {
    transform: translate3d(-35px, 25px, 0) rotate(-4deg) scale(0.98);
  }
}

#fairy-trails {
  position: fixed;
  width: 260px;     /* &lt;&lt;&lt; much wider */
  height: 160px;    /* &lt;&lt;&lt; taller for ribbon curling */
  top: 0;
  left: 0;
  pointer-events: none;
  z-index: -2;
  background: transparent !important;
}

.floating-fairy img {
  width: 100%;
  height: auto;
  will-change: transform;
  transform: translateZ(0);
}

/* RESPONSIVE STYLING */

@media (min-width: 1024px) {
  .reveal-button,
  .snowglobe-cover {
    width: 120px;   /* increase size */
    height: 120px;
  }

  /* Adjust font size inside the reveal button */
  .reveal-button {
    font-size: 3rem;
  }

  /* Make book cover inside snowglobe scale nicely */
  .snowglobe-cover img {
    width: 70%;   /* previously ~62% */
  }
}

@media (max-width: 768px) {
  .calendar-panel {
    padding: 1rem;
  }
	
  .surprise-content {
    width: 100%;
  }

  .calendar-inner-wrapper {
    padding: 1rem;
    margin: 0 auto;
  }

  .surprise-content-wrapper {
  max-height: 85vh;
  padding: 1rem;
}

.surprise-hidden {
  display: none;
  opacity: 0;
  transition: opacity 0.5s ease;
}
	
  .surprise-hidden.revealed {
  display: block;
  opacity: 1;
}

  .surprise-title {
    font-size: 1.2rem;
  }

  .surprise-excerpt {
    font-size: 0.95rem;
  }

  .surprise-cta {
    padding: 0.6rem 1.2rem;
  }
	
  .surprise-image img {
  width: 60%;
  max-width: 200px;
}
}

@media (min-width: 600px) and (max-height: 700px) {
  .surprise-flex {
    flex-direction: row;
    align-items: center;
    justify-content: center;
  }

  .surprise-image {
    flex: 0 0 auto;
    margin: 0;
  }

  .surprise-image img {
    width: 160px;
    max-width: 160px;
    height: auto;
  }

  .surprise-content {
    text-align: left;
    padding-left: 2rem;
    max-width: 300px;
  }

  .surprise-title {
    font-size: 1.2rem;
  }

  .surprise-excerpt {
    font-size: 1rem;
  }

  .surprise-cta {
    padding: 0.5rem 1.2rem;
    font-size: 0.95rem;
  }
}

@media (max-width: 480px) {	
  .surprise-image img {
    width: 70%;
    max-width:240px;
  }

  .surprise-title {
    font-size: 1.1rem;
  }

  .surprise-excerpt {
    font-size: 0.9rem;
  }
	
  .surprise-cta {
   font-size: 0.9rem;
   padding: 0.5rem 1rem;
  }
}

@media (max-width: 350px) {	
  .surprise-title {
    font-size: 1rem;
  }

  .surprise-excerpt {
    font-size: 0.85rem;
  }

  .surprise-cta {
    font-size: 0.85rem;
    padding: 0.4rem 0.8rem;
  }
}

@media (max-width: 480px) {

  /* Tighten the vertical spacing of the reveal content */
  .surprise-flex {
    gap: 0.75rem !important;   /* was 1.5rem */
  }

  /* Remove excess bottom margin under the book stack */
  .surprise-multi-images {
    padding-bottom: 0.25rem !important; /* was ~1.25rem */
    margin-bottom: 0 !important;
  }

  /* Reduce image bottom margin */
  .surprise-image img {
    margin-bottom: 0.4rem !important; /* was 1rem */
  }

  /* Pull title closer to the cover */
  .surprise-title {
    margin-top: 0.2rem !important; /* was ~1rem */
  }

  /* Compress excerpt spacing */
  .surprise-excerpt {
    margin-bottom: 0.8rem !important; /* was 1.2rem */
  }
}

/* FINAL OVERRIDE — Single-book reveal size */
.surprise-multi-images.single .surprise-image img {
  width: 70% !important;
  max-width: 260px !important;
  height: auto;
}

/* REMOVE ALL HOVER EFFECTS FROM BOOK COVERS INSIDE REVEAL */
.surprise-image:hover img,
.surprise-multi-images .surprise-image:hover,
.surprise-multi-images:not(.single) .surprise-image:hover {
  transform: none !important;
  box-shadow: none !important;
}

.freeze-background {
  overflow: hidden; /* freezes page scroll */
}

.calendar-inner-wrapper.revealed {
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}