/* Halloween seasonal theme — loaded only when switched on (assets/seasonal.js). Remove = switch off. */
.hw-layer{position:fixed;inset:0;pointer-events:none;z-index:15;overflow:hidden;}
.hw-glow{position:absolute;inset:0;background:radial-gradient(120% 80% at 50% 110%,rgba(255,138,30,.16),transparent 60%),radial-gradient(60% 50% at 0 0,rgba(255,150,40,.08),transparent 70%),radial-gradient(60% 50% at 100% 0,rgba(255,150,40,.08),transparent 70%);}
.hw-leaf{position:absolute;top:-60px;width:26px;height:26px;opacity:.85;animation:hw-fall linear infinite;will-change:transform;}
.hw-leaf svg{width:100%;height:100%;animation:hw-sway ease-in-out infinite alternate;animation-duration:inherit;}
@keyframes hw-fall{0%{transform:translate3d(0,-60px,0) rotate(0)}100%{transform:translate3d(-60px,110vh,0) rotate(540deg)}}
@keyframes hw-sway{0%{transform:translateX(-14px)}100%{transform:translateX(14px)}}
.hw-bat{position:absolute;left:-80px;width:62px;animation:hw-fly linear infinite;will-change:transform;}
.hw-bat svg{width:100%;display:block;animation:hw-flap .22s ease-in-out infinite alternate;transform-origin:50% 40%;}
@keyframes hw-fly{0%{transform:translate3d(0,0,0)}25%{transform:translate3d(28vw,-30px,0)}50%{transform:translate3d(55vw,20px,0)}75%{transform:translate3d(80vw,-24px,0)}100%{transform:translate3d(115vw,0,0)}}
@keyframes hw-flap{0%{transform:scaleY(1)}100%{transform:scaleY(.6)}}
.hw-web{position:absolute;top:0;width:150px;opacity:.55;}
.hw-web.l{left:0}.hw-web.r{right:0;transform:scaleX(-1)}
.hw-ghost{position:absolute;left:18px;bottom:22px;width:62px;animation:hw-bob 3.2s ease-in-out infinite;filter:drop-shadow(0 6px 10px rgba(80,40,120,.25));}
@keyframes hw-bob{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-14px) rotate(3deg)}}
.hw-pump{position:absolute;right:16px;bottom:16px;width:64px;}
.hw-pump .face{animation:hw-flicker 2.4s ease-in-out infinite;}
@keyframes hw-flicker{0%,100%{opacity:1}45%{opacity:.75}50%{opacity:.95}70%{opacity:.8}}
.hw-pump svg{filter:drop-shadow(0 0 14px rgba(255,150,30,.75));}
@media(max-width:767px){.hw-web{width:90px;opacity:.45}.hw-ghost,.hw-pump{display:none}.hw-leaf.x{display:none}.hw-bat{width:44px}}
@media (prefers-reduced-motion:reduce){.hw-leaf,.hw-bat{display:none}.hw-ghost,.hw-pump .face{animation:none}}

/* friendly spider dangling from the right cobweb */
.hw-spider{position:absolute;top:0;right:58px;width:42px;filter:drop-shadow(0 0 6px rgba(255,255,255,.7));animation:hw-dangle 5s ease-in-out infinite;transform-origin:50% 0;}
.hw-spider i{display:block;width:2px;height:90px;margin:0 auto -6px;background:rgba(255,255,255,.75);box-shadow:0 0 0 .5px rgba(43,29,69,.4);}
@keyframes hw-dangle{0%,100%{transform:translateY(-30px) rotate(-4deg)}50%{transform:translateY(14px) rotate(4deg)}}
/* smiling witch on a broom: crosses the sky now and then */
.hw-witch{position:absolute;top:16%;left:-280px;width:210px;filter:drop-shadow(0 0 8px rgba(255,236,190,.5));animation:hw-witchfly 34s linear infinite;animation-delay:-6s;}
.hw-witch img{position:relative;width:100%;height:auto;display:block;animation:hw-swoop 3s ease-in-out infinite;transform-origin:40% 70%;}
.hw-flag{position:absolute;left:-104%;top:58%;width:112%;height:auto;overflow:visible;filter:drop-shadow(0 4px 6px rgba(0,0,0,.25));animation:hw-flagbob 3s ease-in-out infinite;transform-origin:100% 50%;}
@keyframes hw-flagbob{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-10px) rotate(4deg)}}
.hw-trail{display:none;position:absolute;left:-40%;top:62%;width:70%;height:14px;border-radius:9999px;background:radial-gradient(circle,#ffe27a 0 2px,transparent 3px) 0 0/16px 14px,linear-gradient(90deg,transparent,rgba(255,226,122,.55));animation:hw-sparkle .5s linear infinite;filter:blur(.3px);opacity:.85;}
@keyframes hw-swoop{0%,100%{transform:translateY(0) rotate(-4deg)}50%{transform:translateY(-12px) rotate(3deg)}}
@keyframes hw-sparkle{to{background-position:-16px 0,0 0}}
@keyframes hw-witchfly{0%{transform:translate3d(0,40px,0)}20%{transform:translate3d(calc(50vw + 120px),-30px,0)}40%{transform:translate3d(calc(100vw + 360px),10px,0)}100%{transform:translate3d(calc(100vw + 360px),10px,0)}}
/* black cat sitting on the banner picture */
.hw-artbox{position:relative;}
.hw-cat{position:absolute;z-index:3;left:-22px;bottom:-30px;width:112px;filter:drop-shadow(0 0 10px rgba(255,170,80,.55));pointer-events:none;}
.hw-cat .tail{transform-origin:58px 78px;animation:hw-tail 2.8s ease-in-out infinite;}
@keyframes hw-tail{0%,100%{transform:rotate(0)}50%{transform:rotate(-14deg)}}
@media(max-width:767px){.hw-spider{right:30px;width:28px}.hw-spider i{height:60px}.hw-witch{width:110px;top:9%}.hw-flag{width:135%;left:-127%}.hw-cat{width:64px;left:-6px;bottom:-18px}}
@media (prefers-reduced-motion:reduce){.hw-spider,.hw-witch img,.hw-trail,.hw-flag,.hw-cat .tail{animation:none}.hw-witch{display:none}}

/* Promo banner */
.hw-promo{position:relative;overflow:hidden;background:#1b1233;color:#fff7e8;padding:3.5rem 1.25rem;font-family:'Nunito',system-ui,sans-serif;}
.hw-promo::before{content:"";position:absolute;inset:0;background:radial-gradient(50% 70% at 20% 60%,rgba(255,140,30,.28),transparent 70%),radial-gradient(40% 50% at 90% 10%,rgba(255,236,170,.14),transparent 70%);pointer-events:none;}
.hw-promo .moon{position:absolute;top:-40px;right:8%;width:150px;height:150px;border-radius:50%;background:#fff1c4;box-shadow:0 0 80px 20px rgba(255,230,150,.35);opacity:.9;}
.hw-wrap{position:relative;max-width:1140px;margin:0 auto;display:grid;grid-template-columns:1.1fr 1fr;gap:3rem;align-items:center;}
.hw-art{position:relative;border-radius:1.6rem;overflow:hidden;border:5px solid #ff9a2e;box-shadow:0 0 0 6px rgba(255,154,46,.18),0 30px 60px -20px rgba(0,0,0,.6);transform:rotate(-1.5deg);transition:transform .35s ease;cursor:pointer;background:#2a1c4a;}
.hw-art:hover{transform:rotate(0) scale(1.015);}
.hw-art img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;}
.hw-play{position:absolute;inset:0;margin:auto;width:84px;height:84px;border-radius:50%;background:rgba(255,138,30,.92);display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 10px rgba(255,138,30,.3);animation:hw-pulse 2s ease-in-out infinite;border:0;cursor:pointer;}
.hw-play svg{width:34px;height:34px;margin-left:5px;fill:#fff;}
@keyframes hw-pulse{0%,100%{box-shadow:0 0 0 8px rgba(255,138,30,.3)}50%{box-shadow:0 0 0 18px rgba(255,138,30,.08)}}
.hw-kicker{display:inline-flex;align-items:center;gap:.45rem;background:#ff8a1e;color:#1b1233;font-weight:900;font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;padding:.4rem .85rem;border-radius:9999px;}
.hw-promo h2{font-family:'Baloo 2','Nunito',sans-serif !important;letter-spacing:0 !important;font-weight:800;font-size:clamp(1.9rem,4.4vw,3.1rem);line-height:1.05;margin:.9rem 0 .4rem;color:#ffb347;text-shadow:0 0 24px rgba(255,140,30,.35);}
.hw-promo .ep{font-family:'Baloo 2','Nunito',sans-serif;font-size:1.15rem;color:#d9c8ff;margin:0 0 1rem;font-weight:700;}
.hw-promo p.txt{font-size:1.02rem;line-height:1.65;margin:0 0 .8rem;color:#f3e9da;max-width:52ch;}
.hw-cta{display:inline-flex;align-items:center;gap:.6rem;margin-top:.8rem;background:#ff8a1e;color:#1b1233;font-weight:900;font-size:1.05rem;padding:.95rem 1.6rem;border-radius:9999px;border:0;cursor:pointer;box-shadow:0 10px 30px -8px rgba(255,138,30,.7);transition:transform .2s ease,box-shadow .2s ease,background-color .2s ease;}
.hw-cta:hover{transform:translateY(-3px) rotate(-1deg);background:#ffa040;box-shadow:0 16px 36px -8px rgba(255,138,30,.85);}
.hw-note{font-size:.8rem;color:#b8a9d9;margin-top:.8rem;}
.hw-promo .mini-bat{position:absolute;width:40px;opacity:.7;}
@media(max-width:860px){.hw-wrap{grid-template-columns:1fr;gap:2rem;text-align:center}.hw-promo p.txt{margin-inline:auto}.hw-promo{padding:2.5rem 1rem}.hw-promo .moon{width:100px;height:100px}}

/* Video pop-up */
.hw-modal{position:fixed;inset:0;z-index:10000;display:none;align-items:center;justify-content:center;background:rgba(14,8,28,.92);padding:1rem;}
.hw-modal.open{display:flex;}
.hw-modal video{width:100%;max-width:60rem;max-height:85vh;border-radius:.9rem;background:#000;box-shadow:0 0 60px rgba(255,138,30,.35);}
.hw-close{position:absolute;top:14px;right:16px;width:46px;height:46px;border-radius:50%;border:0;background:#ff8a1e;color:#1b1233;font-size:1.6rem;font-weight:900;cursor:pointer;}

/* Pumpkin Hunt */
.hw-hunt{position:absolute;z-index:20;width:46px;height:46px;padding:0;border:0;background:none;cursor:pointer;animation:hw-wob 2.6s ease-in-out infinite;filter:drop-shadow(0 0 10px rgba(255,150,30,.7));transition:transform .25s ease;}
.hw-hunt:hover{transform:scale(1.15);}
.hw-hunt svg{width:100%;height:100%;}
.hw-hunt.pop{animation:hw-pop .6s ease forwards;}
@keyframes hw-wob{0%,100%{transform:rotate(-8deg)}50%{transform:rotate(8deg) translateY(-3px)}}
@keyframes hw-pop{0%{transform:scale(1)}40%{transform:scale(1.6) rotate(20deg)}100%{transform:scale(0) rotate(200deg);opacity:0}}
.hw-hunt-pill{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);z-index:60;background:#1b1233;color:#ffd08a;border:2px solid #ff8a1e;border-radius:9999px;padding:.55rem 1.1rem;font:800 .9rem 'Nunito',system-ui,sans-serif;cursor:pointer;box-shadow:0 10px 24px -8px rgba(0,0,0,.5);white-space:nowrap;transition:transform .2s ease;}
.hw-hunt-pill:hover{transform:translateX(-50%) translateY(-2px);}
.hw-hunt-pill b{color:#fff;}
.hw-hunt-tip{position:fixed;left:50%;bottom:66px;transform:translateX(-50%) translateY(10px);z-index:60;background:#fff7e8;color:#1b1233;border-radius:1rem;padding:.6rem 1rem;font:700 .88rem 'Nunito',system-ui,sans-serif;max-width:min(92vw,360px);text-align:center;box-shadow:0 10px 24px -8px rgba(0,0,0,.45);opacity:0;pointer-events:none;transition:opacity .25s ease,transform .25s ease;}
.hw-hunt-tip.on{opacity:1;transform:translateX(-50%) translateY(0);}
@media(max-width:767px){.hw-hunt{width:40px;height:40px}.hw-hunt-pill{font-size:.8rem;bottom:12px}}
.hw-hunt-pill.gone{opacity:0;pointer-events:none;transition:opacity .6s ease;}

/* smaller banner on the café pages */
.hw-promo.compact{padding:2.5rem 1.25rem;}
.hw-promo.compact .hw-wrap{max-width:1000px;grid-template-columns:.9fr 1fr;gap:2.2rem;}
.hw-promo.compact h2{font-size:clamp(1.6rem,3.4vw,2.4rem);}
.hw-promo.compact p.txt{font-size:.95rem;margin-bottom:.5rem;}
@media(max-width:860px){.hw-promo.compact .hw-wrap{grid-template-columns:1fr}}
