/* Holiday themes (year-round, Pacific dates from config/themes.json) — decorative only.
   site.js adds body.theme-<id> and a banner under the header. No fixed/floating decorations (nothing covers buttons).
   Brand gold buttons stay as-is except Halloween's orange tint. prefers-reduced-motion respected. */
.season-banner{display:none;align-items:center;justify-content:center;gap:14px;padding:6px 16px;font-size:1.05rem;font-weight:700;letter-spacing:.01em;text-align:center;line-height:1.25;position:relative;z-index:40;border-bottom:1px solid transparent;background:linear-gradient(90deg,#0d1a2e,#1a2f52 50%,#0d1a2e);color:#fff4d6}
.season-banner[data-on="1"]{display:flex}
.season-banner .sb-text{min-width:0}
.season-banner .sb-cluster{display:inline-flex;align-items:flex-end;gap:4px;flex:none}
.season-banner .sb-cluster.r{flex-direction:row-reverse}
.season-banner .sb-ico{width:2.5em;height:2.5em;flex:none;transform-origin:50% 90%;animation:sb-bob 3.2s ease-in-out infinite}
.season-banner .sb-x{width:1.9em;height:1.9em}
.season-banner .sb-cluster .sb-ico:nth-child(2){animation-delay:.5s}
.season-banner .sb-cluster .sb-ico:nth-child(3){animation-delay:1s;width:1.45em;height:1.45em}
@keyframes sb-bob{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(4deg) translateY(-1px)}}
@media (max-width:520px){
  .season-banner{gap:8px;padding:6px 10px;font-size:.95rem}
  .season-banner .sb-ico{width:2em;height:2em}
  .season-banner .sb-x{width:1.6em;height:1.6em}
  .season-banner .sb-cluster .sb-ico:nth-child(3){display:none}
}
@media (max-width:380px){
  .season-banner{font-size:.88rem}
  .season-banner .sb-cluster .sb-x{display:none}
}
body.booking .season-banner{padding:4px 12px;font-size:.85rem}
body.booking .season-banner .sb-ico{width:1.4em;height:1.4em}
body.booking .season-banner .sb-x{display:none}
body[class*="theme-"] .hero,body[class*="theme-"] .page-hero{box-shadow:inset 0 -3px 0 var(--season-line,rgba(255,200,90,.4))}
body[class*="theme-"] footer.site{box-shadow:inset 0 3px 0 var(--season-line,rgba(255,200,90,.3))}

/* ---- Halloween ---- */
body.theme-halloween{--gold:#ff9f2e;--gold-2:#f07812;--gold-soft:#fff1dc;--season-line:rgba(255,150,40,.45)}
body.theme-halloween .season-banner{background:linear-gradient(90deg,#3a1f0a,#6b3a12 40%,#3a1f0a);color:#ffe7c2;border-bottom-color:rgba(255,180,80,.35)}
/* ---- Thanksgiving ---- */
body.theme-thanksgiving{--season-line:rgba(217,130,43,.45)}
body.theme-thanksgiving .season-banner{background:linear-gradient(90deg,#3a2410,#7a4a1c 45%,#3a2410);color:#ffe8c8;border-bottom-color:rgba(232,155,45,.4)}
/* ---- Christmas / winter holidays ---- */
body.theme-christmas{--season-line:rgba(214,69,69,.5)}
body.theme-christmas .season-banner{background:linear-gradient(90deg,#0f3a24,#1d5a38 35%,#7a1f24 65%,#0f3a24);color:#fff4e0;border-bottom-color:rgba(255,200,90,.35)}
/* ---- New Year ---- */
body.theme-new_year{--season-line:rgba(255,213,74,.5)}
body.theme-new_year .season-banner{background:linear-gradient(90deg,#1a1030,#3a2060 50%,#1a1030);color:#ffe9a8;border-bottom-color:rgba(255,200,90,.4)}
/* ---- Valentine's ---- */
body.theme-valentine{--season-line:rgba(240,98,146,.5)}
body.theme-valentine .season-banner{background:linear-gradient(90deg,#3a1020,#6a2040 50%,#3a1020);color:#ffe4ec;border-bottom-color:rgba(255,143,171,.4)}
/* ---- St. Patrick's ---- */
body.theme-st_patricks{--season-line:rgba(63,174,90,.5)}
body.theme-st_patricks .season-banner{background:linear-gradient(90deg,#0f2e1a,#1f5a32 50%,#0f2e1a);color:#e8ffe8;border-bottom-color:rgba(63,174,90,.45)}
/* ---- Easter ---- */
body.theme-easter{--season-line:rgba(159,216,255,.5)}
body.theme-easter .season-banner{background:linear-gradient(90deg,#26204a,#3d3a72 50%,#26204a);color:#fdf4ff;border-bottom-color:rgba(201,162,255,.4)}
/* ---- Memorial Day (respectful, no fireworks) ---- */
body.theme-memorial_day{--season-line:rgba(255,255,255,.3)}
body.theme-memorial_day .season-banner{background:linear-gradient(90deg,#0d1b3a,#1a2f6a 55%,#4a1424);color:#f5f8ff;border-bottom-color:rgba(255,255,255,.25)}
/* ---- Fourth of July ---- */
body.theme-july4{--season-line:rgba(232,90,90,.5)}
body.theme-july4 .season-banner{background:linear-gradient(90deg,#0d1b3a,#1a2f6a 40%,#5a1428 100%);color:#f5f8ff;border-bottom-color:rgba(255,255,255,.25)}
/* ---- Labor Day ---- */
body.theme-labor_day{--season-line:rgba(106,168,240,.5)}
body.theme-labor_day .season-banner{background:linear-gradient(90deg,#0d1b3a,#1a3358 50%,#0d1b3a);color:#f5f8ff;border-bottom-color:rgba(255,255,255,.25)}

@media (prefers-reduced-motion:reduce){
  .season-banner .sb-ico{animation:none!important}
}

/* ---- Top-of-page holiday backdrop (behind the hero content) + hero moon variants ---- */
.season-sky{position:absolute;left:0;right:0;top:0;height:min(100%,640px);z-index:0;pointer-events:none;overflow:hidden;
  -webkit-mask-image:linear-gradient(#000 0,#000 50%,transparent 100%);mask-image:linear-gradient(#000 0,#000 50%,transparent 100%)}
.season-sky svg{display:block;width:100%;height:100%}
.page-hero .season-sky{height:100%}
body[data-theme] .hero>.wrap,body[data-theme] .page-hero>.wrap{position:relative;z-index:1}
body[data-theme] .page-hero .ring{z-index:0}
.eclipse .season-moon{position:absolute;inset:14%;pointer-events:none}
.eclipse .season-moon svg{display:block;width:100%;height:100%;overflow:visible}
body.theme-halloween .eclipse .disc{box-shadow:0 0 0 2px rgba(255,190,100,.95),0 0 34px 8px rgba(255,140,30,.6),inset -10px -14px 30px rgba(0,0,0,.6)}
body.theme-halloween .eclipse .halo{background:radial-gradient(circle,rgba(255,140,30,.24) 30%,rgba(255,140,30,0) 70%)}
body.theme-christmas .eclipse .season-moon{inset:12%}
@media (prefers-reduced-motion:no-preference){
  .season-sky .tw{animation:ss-tw 4s ease-in-out infinite}.season-sky .tw1{animation-delay:1.3s}.season-sky .tw2{animation-delay:2.6s}
  .season-sky .bats{animation:ss-bats 14s ease-in-out infinite alternate}
  .season-sky .drift{animation:ss-drift 18s ease-in-out infinite alternate}
  .season-sky .pop use{animation:ss-pop 5s ease-in-out infinite}.season-sky .pop use:nth-child(2n){animation-delay:1.7s}.season-sky .pop use:nth-child(3n){animation-delay:3.1s}
  .eclipse .pk-face{animation:pk-flicker 3.4s ease-in-out infinite}
}
@keyframes ss-tw{0%,100%{opacity:.35}50%{opacity:1}}
@keyframes ss-bats{from{transform:translate(0,0)}to{transform:translate(-18px,8px)}}
@keyframes ss-drift{from{transform:translate(0,0)}to{transform:translate(10px,14px)}}
@keyframes ss-pop{0%,100%{opacity:.15}50%{opacity:.55}}
@keyframes pk-flicker{0%,100%{opacity:1}45%{opacity:.86}55%{opacity:.97}70%{opacity:.9}}
/* Long banners (e.g. Memorial Day) stay on one line on small phones */
@media (max-width:420px){
  .season-banner.sb-long .sb-cluster{display:none}
  .season-banner.sb-long{font-size:.86rem;padding:8px 10px}
}
