/* Halloween presentation: loaded after the standard stylesheets. */
body.theme-halloween {
  --bg: #fffaf2;
  --fg: #211629;
  --muted: #635769;
  --accent: #733998;
  background: radial-gradient(ellipse at 85% 22%, #ffe8bd66, transparent 45%), var(--bg);
}
.theme-halloween header.wrap {
  max-width: none;
  padding: 105px 1rem 22px;
  background-color: #321443;
  background-image: url('img/halloween-header-1200x250.png');
  background-image: -webkit-image-set(url('img/halloween-header-1200x250.webp') 1x);
  background-image: image-set(url('img/halloween-header-1200x250.webp') 1x);
  background-position: center bottom;
  background-size: cover;
  border-bottom: 3px solid #ee8b21;
}
.theme-halloween header .brand {
  max-width: calc(var(--maxw) - 2rem);
  margin: 0 auto;
  padding: 15px 20px;
  border: 1px solid #f5d4ab;
  border-radius: 12px;
  background: rgba(255, 253, 246, .96);
  box-shadow: 0 5px 22px #160b2633;
  gap: .75rem;
}
.theme-halloween header img { max-width: 265px; width: 100%; }
.theme-halloween header .call { font-size: 2rem; }
.theme-halloween nav.wrap {
  background: #fffdf8;
  border: 1px solid #ecdcca;
  border-radius: 0 0 12px 12px;
  box-shadow: 0 4px 12px #4a244009;
}
.theme-halloween nav a:hover { color: #9b3e10; }
.theme-halloween .seasonal-campaign {
  width: calc(54% - 1rem);
  max-width: 420px;
  margin: 0 0 1.5rem;
}
.theme-halloween .seasonal-campaign picture,
.theme-halloween .seasonal-campaign img {
  display: block;
}
.theme-halloween .seasonal-campaign img {
  width: 100%;
  height: auto;
}
.theme-halloween #about { font-size: 1.1rem; }
.theme-halloween .mascot-hero.mascot-float { width: 46%; max-width: 390px; margin-top: .6rem; }
.theme-halloween .callout { background: #fffdf9; border-color: #e8d7c6; box-shadow: 0 4px 15px #52224008; }
.theme-halloween h2 { color: #351c48; }
.theme-halloween .hours { background: #fffdf9; border-color: #e8d7c6; }
.theme-halloween .hours th, .theme-halloween .hours td { border-color: #f0e5da; }
.theme-halloween footer { border-top-color: #dec5ae; }
.theme-halloween a:focus-visible { outline: 3px solid #984bba; outline-offset: 4px; }
@media (max-width: 640px) {
  .theme-halloween header.wrap { padding: 75px 1rem 90px; background-position: left bottom; background-size: auto 250px; background-repeat: no-repeat; }
  .theme-halloween header .brand { padding: 12px; }
  .theme-halloween header .call { font-size: 2rem; }
  .theme-halloween #about { display: flex; flex-direction: column; }
  .theme-halloween #about > .seasonal-campaign { order: 0; width: 100%; margin: .25rem 0 1.5rem; }
  .theme-halloween #about > picture { order: 1; }
  .theme-halloween #about > h1 { order: 2; }
  .theme-halloween #about > p { order: 3; }
  .theme-halloween .mascot-hero.mascot-float {
    float: none;
    width: 90%;
    max-width: 360px;
    margin: 1rem auto;
  }
}
@media print {
  body.theme-halloween { background: #fff; color: #111; }
  .theme-halloween header.wrap { background: none; padding-top: 0; }
  .theme-halloween header .brand { box-shadow: none; }
}
/* Case #26096, iteration 3: decorative scenery stays outside live content. */
body.theme-halloween { position: relative; isolation: isolate; }
.theme-halloween > header,
.theme-halloween > nav,
.theme-halloween > main,
.theme-halloween > .fine-print,
.theme-halloween > footer { position: relative; z-index: 1; }
.theme-halloween::before,
.theme-halloween::after {
  content: '';
  position: absolute;
  z-index: 0;
  pointer-events: none;
  background-repeat: no-repeat;
  background-size: 100% 100%;
}
.theme-halloween::before {
  left: 0;
  bottom: 580px;
  width: clamp(0px, calc((100vw - 860px) / 2 - 10px), 133px);
  aspect-ratio: 133 / 489;
  background-image: url('img/halloween-left-tree-pumpkin.png');
  background-image: -webkit-image-set(url('img/halloween-left-tree-pumpkin.webp') 1x);
  background-image: image-set(url('img/halloween-left-tree-pumpkin.webp') 1x);
}
.theme-halloween::after {
  right: 0;
  bottom: 80px;
  width: clamp(0px, calc((100vw - 860px) / 2 - 10px), 180px);
  aspect-ratio: 289 / 1511;
  background-image: url('img/halloween-right-tree-trimmed.png');
  background-image: -webkit-image-set(url('img/halloween-right-tree-trimmed.webp') 1x);
  background-image: image-set(url('img/halloween-right-tree-trimmed.webp') 1x);
}
.theme-halloween main::before,
.theme-halloween main::after,
.theme-halloween #how::before,
.theme-halloween #rates .callout::after {
  content: '';
  position: absolute;
  pointer-events: none;
  background-repeat: no-repeat;
  background-size: contain;
  aspect-ratio: 1176 / 545;
}
.theme-halloween main::before {
  top: 40px;
  left: -95px;
  width: 90px;
  background-image: url('img/bat-angled-left-trimmed.png');
  background-image: -webkit-image-set(url('img/bat-angled-left-trimmed.webp') 1x);
  background-image: image-set(url('img/bat-angled-left-trimmed.webp') 1x);
}
.theme-halloween main::after {
  top: 460px;
  right: -85px;
  width: 75px;
  background-image: url('img/bat-angled-right-trimmed.png');
  background-image: -webkit-image-set(url('img/bat-angled-right-trimmed.webp') 1x);
  background-image: image-set(url('img/bat-angled-right-trimmed.webp') 1x);
}
.theme-halloween #how,
.theme-halloween #rates .callout { position: relative; }
.theme-halloween #how::before {
  top: 35px;
  left: -90px;
  width: 70px;
  background-image: url('img/bat-angled-left-trimmed.png');
  background-image: -webkit-image-set(url('img/bat-angled-left-trimmed.webp') 1x);
  background-image: image-set(url('img/bat-angled-left-trimmed.webp') 1x);
}
.theme-halloween #rates .callout::after {
  top: -22px;
  right: 18px;
  width: 65px;
  background-image: url('img/bat-angled-right-trimmed.png');
  background-image: -webkit-image-set(url('img/bat-angled-right-trimmed.webp') 1x);
  background-image: image-set(url('img/bat-angled-right-trimmed.webp') 1x);
}
/* Art is behind the existing footer paragraphs; the dark ground continues below. */
.theme-halloween footer.wrap {
  max-width: none;
  min-height: 30.75vw;
  margin: 1rem 0 0;
  padding: 22vw max(1rem, calc((100% - var(--maxw)) / 2 + 1rem)) 2rem;
  border: 0;
  color: #f5eaf9;
  background-image: url('img/halloween-footer-trimmed.png'), linear-gradient(to bottom, transparent 70%, #050409 70%);
  background-image: -webkit-image-set(url('img/halloween-footer-trimmed.webp') 1x), linear-gradient(to bottom, transparent 70%, #050409 70%);
  background-image: image-set(url('img/halloween-footer-trimmed.webp') 1x), linear-gradient(to bottom, transparent 70%, #050409 70%);
  background-repeat: no-repeat;
  background-position: center top, center;
  background-size: 100% auto, 100% 100%;
}
.theme-halloween footer a { color: #e2bcff; text-decoration: underline; }
.theme-halloween footer p { position: relative; }
@media (max-width: 1050px) {
  .theme-halloween main::before,
  .theme-halloween main::after,
  .theme-halloween #how::before { display: none; }
}
@media (max-width: 900px) {
  .theme-halloween::before,
  .theme-halloween::after { display: none; }
  .theme-halloween footer.wrap {
    min-height: 300px;
    padding-top: 215px;
    background-size: max(100%, 850px) auto, 100% 100%;
    background-position: right top, center;
  }
}
@media (max-width: 640px) {
  .theme-halloween #rates .callout::after { width: 50px; top: -16px; }
  .theme-halloween footer { font-size: .9rem; }
}
@media print {
  .theme-halloween::before,
  .theme-halloween::after,
  .theme-halloween main::before,
  .theme-halloween main::after,
  .theme-halloween #how::before,
  .theme-halloween #rates .callout::after { display: none; }
  .theme-halloween footer.wrap { background: none; color: #111; min-height: 0; padding: 1rem; }
  .theme-halloween footer a { color: #111; }
}

/* Upper body corners share one vignette, rotated for the left side. */
.theme-halloween header.wrap::before,
.theme-halloween header.wrap::after {
  content: '';
  position: absolute;
  top: 100%;
  z-index: -1;
  width: clamp(100px, 18vw, 240px);
  aspect-ratio: 1;
  opacity: .75;
  pointer-events: none;
  background-image: url('img/halloween-corner-vignette.png');
  background-image: -webkit-image-set(url('img/halloween-corner-vignette.webp') 1x);
  background-image: image-set(url('img/halloween-corner-vignette.webp') 1x);
  /* Overscan the artwork to hide its transparent rim without widening the page. */
  background-size: calc(100% + 16px) calc(100% + 16px);
  background-position: right -8px top -8px;
  background-repeat: no-repeat;
}
.theme-halloween header.wrap::before { left: 0; transform: rotate(-90deg); background-position: right -8px top -9px; }
.theme-halloween header.wrap::after { right: 0; }
@media print {
  .theme-halloween header.wrap::before,
  .theme-halloween header.wrap::after { display: none; }
}

/* Case #26096, iteration 4: blend the brand into the illustrated sky. */
.theme-halloween header .brand {
  position: relative;
  isolation: auto;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: center;
  gap: 1.1rem;
  padding: 15px 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
.theme-halloween header .brand::before {
  content: '';
  position: absolute;
  inset: -18px -28px;
  z-index: -1;
  border-radius: 50%;
  background: radial-gradient(ellipse, #fffbeeeF 25%, #fff1cfcc 48%, #ffe5ad66 65%, transparent 78%);
  filter: blur(13px);
  pointer-events: none;
}
.theme-halloween header .brand::after {
  content: '';
  position: absolute;
  left: -30px;
  top: 50%;
  transform: translateY(-50%);
  width: 325px;
  height: 120px;
  z-index: -1;
  pointer-events: none;
  border-radius: 50%;
  background: radial-gradient(ellipse, #fff5e2fa 65%, transparent 100%);
  filter: blur(10px);
}
.theme-halloween header .brand > img {
  mix-blend-mode: multiply;
  filter: none;
}
.theme-halloween header .brand .call {
  margin-left: 0;
  color: #1b1123;
  line-height: 1.2;
  white-space: nowrap;
  text-shadow: 0 0 3px #fffdf4, 0 0 10px #fff4d8, 0 2px 12px #ffe0a5;
}
.theme-halloween header .status-badge {
  border: 1px solid #fff4d8b3;
  box-shadow: 0 0 16px #fff2c4bb, 0 3px 8px #24123240;
  text-shadow: 0 1px 2px #0003;
}
.theme-halloween header .status-badge.open { background: linear-gradient(#128d48, #087239); }
.theme-halloween header .status-badge.closed { background: linear-gradient(#a54d0b, #803605); }
.theme-halloween header .status-icon svg { fill: currentColor; }
@media (min-width: 641px) and (max-width: 900px) {
  .theme-halloween header .brand { grid-template-columns: minmax(0, 1fr) auto; gap: .6rem 1rem; }
  .theme-halloween header .brand::before { inset: -18px -12px; }

  .theme-halloween header .brand > img { grid-row: 1 / 3; max-width: 250px; }
  .theme-halloween header .brand .call { font-size: clamp(1.5rem, 3.5vw, 2rem); }
  .theme-halloween header .status-badge { grid-column: 2; justify-self: end; }
}
@media (max-width: 640px) {
  .theme-halloween header .brand { grid-template-columns: minmax(0, 1fr); justify-items: center; gap: .8rem; padding: 12px 0; }
  .theme-halloween header .brand::before { inset: -20px -8px; filter: blur(14px); }
  .theme-halloween header .brand::after { left: 0; top: 0; transform: none; width: 100%; height: 100px; }
  .theme-halloween header .brand .call { font-size: clamp(1.5rem, 8vw, 2rem); }
}
@media print {
  .theme-halloween header .brand::before,
  .theme-halloween header .brand::after { display: none; }

  .theme-halloween header .brand > img { mix-blend-mode: normal; filter: none; }
  .theme-halloween header .brand .call { text-shadow: none; }
  .theme-halloween header .status-badge { box-shadow: none; text-shadow: none; }
}

/* Halloween weekend emphasis; displayed times remain the live INI values. */
.theme-halloween .hours .halloween-special-hours { background: #fff0d9; }
.theme-halloween .hours .halloween-special-hours th,
.theme-halloween .hours .halloween-special-hours td { border-color: #f2d4ad; font-weight: 700; }
.theme-halloween .hours .halloween-special-hours th { color: #9d390c; }
.theme-halloween .hours .halloween-special-hours td { color: #211629; }
.theme-halloween .halloween-day-label { display: inline-block; }
.theme-halloween .halloween-hours-value { display: flex; align-items: center; gap: .75rem; }
.theme-halloween .halloween-hours-value picture { flex: 0 0 32px; }
.theme-halloween .halloween-hours-value img { display: block; width: 32px; height: 32px; }
.theme-halloween .halloween-hours-time { min-width: 0; }
@media (max-width: 640px) {
  .theme-halloween .hours .halloween-special-hours th,
  .theme-halloween .hours .halloween-special-hours td { font-size: .9rem; }
  .theme-halloween .halloween-hours-value { gap: .4rem; }
  .theme-halloween .halloween-hours-value picture { flex-basis: 28px; }
  .theme-halloween .halloween-hours-value img { width: 28px; height: 28px; }
}

/* Keep the annotated hours unbroken; tuck mobile pumpkins into the column gap. */
.theme-halloween .halloween-hours-time { white-space: nowrap; }
@media (max-width: 640px) {
  .theme-halloween .hours .halloween-special-hours th { padding-right: 2rem; }
  .theme-halloween .hours .halloween-special-hours td { padding-left: .35rem; padding-right: .6rem; }
  .theme-halloween .halloween-hours-value { position: relative; gap: 0; }
  .theme-halloween .halloween-hours-value picture {
    position: absolute;
    right: calc(100% + .35rem);
    top: 50%;
    transform: translateY(-50%);
    width: 24px;
  }
  .theme-halloween .halloween-hours-value img { width: 24px; height: 24px; }
}
