*{box-sizing:border-box}
body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:#1d2433;background:#f4f6fa}
a{color:#2457d6}
.demo-banner{background:#ffcc00;color:#3a2c00;text-align:center;font-weight:700;padding:6px 10px;font-size:14px}
.site-header{padding:14px 18px 6px}.site-header h1{margin:0;font-size:24px}.site-header p{margin:4px 0 0;color:#5b6475}
.ad-top img{max-height:110px;width:auto}
.ad-tag{position:absolute;top:4px;right:6px;background:rgba(0,0,0,.55);color:#fff;font-size:11px;padding:1px 6px;border-radius:4px}
.layout{display:grid;grid-template-columns:1fr 340px;gap:16px;padding:8px 18px 18px}
.map-wrap{position:relative}
#map{height:calc(100vh - 230px);min-height:420px;border-radius:12px;box-shadow:0 2px 10px rgba(0,0,0,.08)}
.count{position:absolute;bottom:10px;left:10px;z-index:500;background:#fff;padding:4px 10px;border-radius:20px;font-size:13px;box-shadow:0 1px 4px rgba(0,0,0,.2)}
.card{background:#fff;border-radius:12px;padding:16px;box-shadow:0 2px 10px rgba(0,0,0,.06);margin-bottom:12px}
.card h2{margin:0 0 10px;font-size:18px}
label{display:block;font-size:14px;font-weight:600;margin-bottom:10px}
input,textarea{display:block;width:100%;margin-top:4px;padding:9px 10px;border:1px solid #cdd4e0;border-radius:8px;font:inherit;font-weight:400}
.btn{display:inline-block;border:1px solid #cdd4e0;background:#fff;padding:9px 14px;border-radius:8px;font:inherit;font-weight:600;cursor:pointer;text-decoration:none;color:#1d2433}
.btn.primary{background:#2457d6;border-color:#2457d6;color:#fff}.btn:disabled{opacity:.6}
.muted{color:#6b7488;font-weight:400}
.msg{font-size:14px;min-height:1em}.msg.ok{color:#1a7f37}.msg.err{color:#c62828}
.popup strong{display:block;font-size:15px}.popup .addr{color:#5b6475;font-size:12px;margin:2px 0 6px}
.popup img{width:100%;max-height:180px;object-fit:cover;border-radius:6px;margin:4px 0}.popup p{margin:4px 0;white-space:pre-wrap}
.pin-gold{background:#f5b400;color:#fff;border:2px solid #fff;border-radius:50%;text-align:center;line-height:24px;font-size:15px;box-shadow:0 1px 5px rgba(0,0,0,.4)}
.site-footer{text-align:center;color:#6b7488;font-size:13px;padding:10px 0 20px}
.checkout{display:flex;flex-direction:column;align-items:center;min-height:100vh}
.checkout .card{max-width:420px;width:92%;margin-top:60px;text-align:center}.price{font-size:30px;font-weight:800}
table{width:100%;border-collapse:collapse;font-size:13px}td,th{border-bottom:1px solid #e3e7ef;padding:6px;text-align:left;vertical-align:top}
.thumb{max-width:70px;max-height:50px;border-radius:4px}
.admin{max-width:1100px;margin:0 auto;padding:16px}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}
select{display:block;width:100%;margin-top:4px;padding:9px;border:1px solid #cdd4e0;border-radius:8px;font:inherit}
@media (max-width:820px){.layout{grid-template-columns:1fr}#map{height:55vh;min-height:320px}}
.pin-label{font-size:12px;font-weight:700;padding:2px 6px}.popup .by{font-size:12px;color:#2457d6}
.rating{margin:6px 0 2px;font-size:13px}.rating .avg{color:#b07d00;font-weight:700}
.stars{display:flex;gap:2px;margin:2px 0 4px}.stars button{background:none;border:0;padding:0 1px;font-size:22px;line-height:1;cursor:pointer;color:#cfd5df}
.stars button.on{color:#f5b400}.stars:hover button{color:#f5b400}.stars button:hover~button{color:#cfd5df}.rate-msg{font-size:11px;color:#1a7f37;min-height:1em}
/* ---- KamloopsHalloweenMap theme ---- */
body.spooky{background:radial-gradient(circle at top,#2a1240 0,#0d0814 60%) fixed;color:#f1e7ff}
.spooky a{color:#ff9a3c}
.spooky .site-header{text-align:center;padding:18px 18px 8px}
.spooky .site-header h1{font-size:32px;color:#ff7a00;text-shadow:0 0 14px rgba(255,122,0,.6);font-family:"Creepster",Impact,system-ui,sans-serif;letter-spacing:.5px}
.spooky .site-header h1 span{color:#c38bff;text-shadow:0 0 14px rgba(160,90,255,.7)}.spooky .site-header h1 small{font-size:18px;color:#bba9d6}
.spooky .site-header p{color:#cdbfe6}
.hero-actions{margin:12px 0 4px;display:flex;gap:10px;justify-content:center;align-items:center;flex-wrap:wrap}
.free-badge{background:#3ddc84;color:#06210f;font-weight:900;padding:8px 14px;border-radius:999px;letter-spacing:.5px;box-shadow:0 0 12px rgba(61,220,132,.5)}
.free-badge.sm{font-size:12px;padding:3px 9px;vertical-align:middle}
.spooky .btn{background:#241536;color:#f1e7ff;border-color:#4b2f6d}
.spooky .btn.primary{background:linear-gradient(#ff8a1f,#e25d00);border-color:#ff7a00;color:#1a0b00}
.btn.big{font-size:18px;padding:12px 20px;box-shadow:0 0 16px rgba(255,122,0,.5)}
.spooky .card{background:#1a1027;border:1px solid #3b2457;box-shadow:0 0 20px rgba(120,60,200,.15)}
.spooky .card h2{color:#ff9a3c}
.spooky input,.spooky textarea{background:#0f0919;color:#f1e7ff;border-color:#4b2f6d}
.spooky .muted{color:#a796c4}
fieldset.types{border:1px solid #4b2f6d;border-radius:8px;margin:0 0 10px;padding:6px 10px}fieldset.types legend{font-size:14px;font-weight:600}
label.radio{font-weight:400;display:flex;gap:8px;align-items:center;margin:4px 0}label.radio input{width:auto;margin:0}
.filters{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.chip{border:1px solid #4b2f6d;background:#120b1d;color:#8f7fab;border-radius:999px;padding:6px 12px;cursor:pointer;font:inherit;font-size:14px;opacity:.6}
.chip.on{background:#2d1a45;color:#fff;border-color:#ff7a00;opacity:1}
.spooky #map{height:calc(100vh - 290px);border:1px solid #3b2457}
.legend{position:absolute;right:10px;bottom:24px;z-index:500;background:rgba(15,9,25,.88);border:1px solid #4b2f6d;color:#f1e7ff;padding:8px 10px;border-radius:8px;font-size:13px;line-height:1.6}
.spooky .count{background:#1a1027;color:#ff9a3c;border:1px solid #4b2f6d}
.pin-emoji span{display:flex;align-items:center;justify-content:center;width:36px;height:36px;font-size:22px;background:#140b20;border:2px solid;border-radius:50%;box-shadow:0 0 10px rgba(255,122,0,.6)}
.spooky .pin-label{background:#140b20;color:#ffb066;border:1px solid #ff7a00;box-shadow:none}
.spooky .pin-label:before{border-top-color:#ff7a00}
.spooky .leaflet-popup-content-wrapper,.spooky .leaflet-popup-tip{background:#1a1027;color:#f1e7ff}
.popup .type{font-size:12px;color:#c38bff;margin:2px 0}.popup .hours{font-size:13px;margin:2px 0}.popup .link{font-size:13px}
.popup .src{font-size:10px;color:#8f7fab;margin-top:6px}.spooky .popup .addr{color:#a796c4}
.spooky .site-footer{color:#8f7fab}
@media (max-width:820px){.spooky #map{height:60vh}.spooky .site-header h1{font-size:24px}.btn.big{font-size:16px}}
.dark-tiles{filter:invert(1) hue-rotate(200deg) brightness(.85) contrast(.9) saturate(.6)}
.near-list{list-style:none;padding:0;margin:10px 0 0;max-height:320px;overflow:auto}
.near-item{display:grid;grid-template-columns:30px 1fr auto;grid-template-areas:"i n d" "i r d";width:100%;text-align:left;background:#120b1d;border:1px solid #3b2457;color:#f1e7ff;border-radius:8px;padding:6px 8px;margin-bottom:6px;cursor:pointer;font:inherit}
.near-item:hover{border-color:#ff7a00}.ni-icon{grid-area:i;font-size:22px;align-self:center}.ni-name{grid-area:n;font-weight:700}
.ni-rate{grid-area:r;font-size:12px;color:#f5b400}.ni-dist{grid-area:d;align-self:center;color:#ff9a3c;font-weight:700;padding-left:8px}
#topCard summary{cursor:pointer;list-style:none}#topCard summary::-webkit-details-marker{display:none}#topCard summary h2{display:inline}#topCard summary:after{content:' ▾';color:#a796c4}#topCard:not([open]) summary:after{content:' ▸'}
.spooky .map-wrap{align-self:start;position:sticky;top:8px}
.comment-box{font-size:13px;margin:4px 0 2px}.btn.small{padding:5px 10px;font-size:13px}.muted.small{font-size:12px}
.comments{margin-top:8px;border-top:1px solid #3b2457;padding-top:6px}.ctitle{font-size:12px;font-weight:700;color:#c38bff}
.cmt{margin:4px 0;font-size:12px}.cstars{color:#f5b400}.cdate{color:#8f7fab}.ctext{color:#f1e7ff}
.leaflet-popup-content{max-height:60vh;overflow:auto}
.tabs{display:flex;gap:6px;margin-bottom:10px}.tab{flex:1;background:#120b1d;border:1px solid #4b2f6d;color:#a796c4;border-radius:8px;padding:7px;cursor:pointer;font:inherit}
.tab.on{border-color:#ff7a00;color:#fff;background:#2d1a45}.acct-line{font-size:13px}.pinrow{margin:-4px 0 10px}
.my-l{border:1px solid #3b2457;border-radius:8px;padding:8px;margin-bottom:8px;font-size:13px}.my-l b{color:#ff9a3c}
.st{font-size:11px;font-weight:800;padding:2px 7px;border-radius:999px;margin-left:4px}.st.pending{background:#f5b400;color:#2a1c00}.st.approved{background:#3ddc84;color:#06210f}.st.rejected{background:#c62828;color:#fff}
.pending-box{background:#2a1c00;border:1px solid #f5b400;color:#ffe08a;border-radius:8px;padding:10px;font-weight:600;margin:8px 0}
.dropping #map{cursor:crosshair;outline:3px dashed #ff7a00}
.sponsor-card{text-align:center}.sponsor-tag{font-size:12px;font-weight:800;color:#f5b400;letter-spacing:.5px;margin-bottom:6px}
.sponsor-slide{min-height:90px}.sponsor-slide.fade{animation:fade .6s}@keyframes fade{from{opacity:0}to{opacity:1}}
.sponsor-item{background:none;border:0;color:inherit;cursor:pointer;width:100%;font:inherit}.sponsor-item img{width:100%;max-height:140px;object-fit:cover;border-radius:8px}
.sname{font-weight:800;color:#ff9a3c;margin-top:4px}
.leader{list-style:none;padding:0;margin:8px 0}.leader-item{position:relative;display:flex;justify-content:space-between;width:100%;background:#120b1d;border:1px solid #3b2457;color:#f1e7ff;border-radius:8px;padding:7px 9px;margin-bottom:5px;cursor:pointer;font:inherit;overflow:hidden;text-align:left}
.leader-item.mine{border-color:#3ddc84}.leader-item .ln,.leader-item .lv{position:relative;z-index:1}.lv{color:#ff9a3c;font-weight:700;white-space:nowrap;padding-left:8px}
.lbar{position:absolute;left:0;top:0;bottom:0;background:rgba(255,122,0,.18)}.vote-btn{margin-top:6px;width:100%}
.qitem{border:1px solid #e3b341;background:#fffbea;border-radius:8px;padding:10px;margin-bottom:8px;font-size:14px}
.survey{max-width:720px;margin:0 auto;padding:0 12px 30px}.sv-row{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;border-bottom:1px solid #3b2457;padding:6px 0}
.sv-row .stars button{font-size:26px}.spooky select{background:#0f0919;color:#f1e7ff;border-color:#4b2f6d}
.topnav{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin:8px 0 2px;font-weight:700}.topnav a{text-decoration:none}
.modal{position:fixed;inset:0;z-index:2000;display:flex;align-items:flex-start;justify-content:center;padding:4vh 10px}.modal[hidden]{display:none}
.modal-back{position:absolute;inset:0;background:rgba(5,2,10,.75);backdrop-filter:blur(2px)}
.modal-panel{position:relative;width:min(560px,100%);max-height:92vh;overflow:auto;border-radius:14px;animation:slide .25s ease-out}
.modal-panel>.card{margin:0}.modal-x{position:absolute;top:10px;right:10px;z-index:2;background:#2d1a45;color:#fff;border:1px solid #4b2f6d;border-radius:50%;width:34px;height:34px;cursor:pointer;font-size:16px}
@keyframes slide{from{transform:translateY(30px);opacity:0}to{transform:none;opacity:1}}body.modal-open{overflow:hidden}.hero-actions.left{justify-content:flex-start}
@media (max-width:600px){.modal{padding:0}.modal-panel{max-height:100vh;height:100vh;border-radius:0}}
.pin-emoji.next span{box-shadow:0 0 0 4px #3ddc84,0 0 18px #3ddc84;animation:pulse 1.4s infinite}@keyframes pulse{50%{box-shadow:0 0 0 8px rgba(61,220,132,.35),0 0 24px #3ddc84}}
.near-list li{display:flex;gap:4px;align-items:stretch}.near-list li .near-item{flex:1}
.tour-mini{width:34px;margin-bottom:6px;background:#2d1a45;border:1px solid #4b2f6d;color:#3ddc84;border-radius:8px;font-size:18px;font-weight:800;cursor:pointer}
.tour-list{list-style:none;padding:0;margin:6px 0}.tour-list li{display:flex;align-items:center;gap:6px;background:#120b1d;border:1px solid #3b2457;border-radius:8px;padding:6px;margin-bottom:5px;font-size:13px}
.tour-list li.next{border-color:#3ddc84;box-shadow:0 0 8px rgba(61,220,132,.4)}.tour-list li.visited{opacity:.55}.tour-list li.visited .tname{text-decoration:line-through}
.tour-list li.dragging{opacity:.4}.tnum{background:#ff7a00;color:#1a0b00;font-weight:900;border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;flex:none}
.tname{flex:1;cursor:pointer}.tbtn{background:#2d1a45;border:1px solid #4b2f6d;color:#fff;border-radius:6px;padding:2px 6px;cursor:pointer;font-size:12px}
.tour-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.tour-progress{background:#0f2a1a;border:1px solid #3ddc84;border-radius:8px;padding:8px;font-size:13px;margin-bottom:6px}
.tour-stop span{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:#ff7a00;color:#1a0b00;font-weight:900;border:2px solid #fff;box-shadow:0 0 8px #ff7a00;font-size:13px}
.tour-stop.visited span{background:#555;box-shadow:none}.tour-stop.next span{background:#3ddc84}
.req{color:#ff7a00}
.hood-filter{width:auto;display:inline-block;margin:0;padding:6px 10px;border-radius:999px;background:#120b1d;color:#fff;border:1px solid #ff7a00;font-size:14px}
.modal-panel{background:#1a1027;border:1px solid #3b2457}.modal-bar{position:sticky;top:0;z-index:3;display:flex;justify-content:flex-end;padding:8px 8px 0;background:linear-gradient(#1a1027 70%,rgba(26,16,39,0))}
.modal-x{position:static;width:auto;height:auto;min-height:44px;min-width:44px;padding:8px 14px;border-radius:999px;font-weight:700;font-size:15px}
.modal-body>.card{margin:0;border:0;box-shadow:none}
@media (max-width:600px){.modal{padding:0;align-items:stretch}.modal-panel{width:100%;height:100%;max-height:none;border-radius:0;border:0}
 .modal-bar{padding:calc(8px + env(safe-area-inset-top)) 10px 4px}.modal-x{font-size:16px}}
/* ---- map sizes ---- */
.spooky #map{height:calc(100vh - 230px);min-height:520px}
.size-ctl{display:flex;background:#140b20}.size-ctl button{width:34px;height:34px;border:0;border-right:1px solid #4b2f6d;background:#140b20;color:#f1e7ff;font-size:17px;cursor:pointer;padding:0}
.size-ctl button:last-child{border-right:0}.size-ctl button.on{background:#ff7a00;color:#1a0b00}
body.map-three .layout{grid-template-columns:3fr 1fr}body.map-three.spooky #map{height:75vh;min-height:420px}
.exit-full{display:none}
body.map-full .map-wrap{position:fixed!important;inset:0;z-index:1500;margin:0;padding:8px;background:#0d0814;display:flex;flex-direction:column}
body.map-full.spooky #map{flex:1;height:auto;min-height:0;border-radius:8px}
.map-wrap:fullscreen{padding:8px;background:#0d0814;display:flex;flex-direction:column}.map-wrap:fullscreen #map{flex:1;height:auto}
body.map-full .exit-full{display:block;position:absolute;left:50%;transform:translateX(-50%);bottom:max(16px,env(safe-area-inset-bottom));z-index:1600;background:#ff7a00;color:#1a0b00;border:2px solid #fff;border-radius:999px;font-weight:800;font-size:16px;padding:10px 18px;min-height:44px;cursor:pointer;box-shadow:0 2px 14px rgba(0,0,0,.6)}
body.map-full{overflow:hidden}
@media (max-width:820px){.spooky #map{height:65vh;min-height:360px}body.map-three .layout{grid-template-columns:1fr}body.map-three.spooky #map{height:75vh}}
body.map-full.spooky #map{height:calc(100vh - 70px)!important;flex:none}
.show-route{width:100%;margin:6px 0;font-size:16px;padding:11px}.tour-stop.start span{width:34px;border-radius:13px;background:#3ddc84;font-size:11px}
.rate-prompt .rp-title{font-size:16px;color:#ff9a3c}.rate-prompt .rp-name{font-weight:700;margin:2px 0 6px}.rp-actions{margin-top:6px}
.spooky #map{height:calc(100vh - 250px)}body.map-three.spooky #map{height:85vh}
@media (max-width:820px){.spooky #map{height:65vh}body.map-three.spooky #map{height:78vh}}
.stars button,.spooky .stars button{color:inherit;filter:grayscale(1);opacity:.3;transition:opacity .1s}.stars button.on{filter:none;opacity:1}
.stars:hover button{filter:none;opacity:1}.stars button:hover~button{filter:grayscale(1);opacity:.3}.cstars{letter-spacing:-2px}.rating .avg{color:#ff9a3c}
.ti{height:1.05em;width:auto;vertical-align:-.15em;display:inline-block}.pin-emoji .ti{height:20px;vertical-align:middle}.ni-icon .ti{height:20px}
.me-hearse img{width:46px;height:26px;display:block;filter:drop-shadow(0 0 4px #3ddc84) drop-shadow(0 0 2px #000);transition:transform .4s}

.feature-opt{border:1px dashed #ff8a1f;border-radius:10px;padding:10px 12px;margin:12px 0;background:rgba(255,138,31,.07)}
.feature-check{display:flex;gap:8px;align-items:flex-start;cursor:pointer}.feature-check input{width:auto;margin-top:3px}
.paid-feat{margin:6px 0;padding:6px 8px;border-radius:8px;background:rgba(255,200,60,.12);border:1px solid #e6b422}
.feat-st{margin-left:6px}

/* pin pop-up layout */
.popup .ptitle{font-size:16px;display:block;margin-bottom:2px}
.popup .by,.popup .addr,.popup .hours{margin:2px 0}
.pop-actions{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.pop-actions .btn{margin:0;text-decoration:none}
.popup .pop-photo{cursor:zoom-in;width:100%;border-radius:8px;margin:4px 0}
.popup .desc{margin:6px 0}
.rate-toggle.on{background:#3b2457}
.rate-box{margin:6px 0;padding:8px;border:1px solid #3b2457;border-radius:8px}
.lightbox{position:fixed;inset:0;z-index:3000;background:rgba(5,2,10,.92);display:flex;align-items:center;justify-content:center;cursor:zoom-out}
.lightbox img{max-width:96vw;max-height:92vh;object-fit:contain;border-radius:6px}
.lightbox .modal-x{position:absolute;top:12px;right:12px}
.pin-sheet .popup{font-size:15px}.pin-sheet .card{padding:14px 16px 24px}
@media (max-width:640px){.pin-sheet{padding:0;align-items:stretch}.pin-sheet .modal-panel{width:100%;height:100%;max-height:none;border-radius:0;border:0}}

.live-row{display:flex;gap:40px;align-items:flex-end;margin:6px 0 10px}.live-num{font-size:48px;font-weight:800;color:#ff8a1f;line-height:1}.live-peak{font-size:28px;font-weight:700;color:#b48cff}
#liveChart{width:100%;height:160px;background:#140b1f;border-radius:8px}
/* slimmer main call-to-action */
.hero-actions .btn.big{padding:8px 18px;line-height:1.25;min-height:42px;display:inline-flex;align-items:center;justify-content:center}
@media (max-width:820px){.hero-actions .btn.big{padding:7px 14px;font-size:15px;min-height:42px}}
/* touch: double-tap on the page never zooms the whole page (pinch-zoom of the page still allowed); the map keeps Leaflet's touch-action:none so double-tap zooms the map */
html,body{touch-action:manipulation}
.leaflet-container{touch-action:none}

/* size buttons with text labels */
.size-ctl button{width:auto;min-width:34px;padding:0 9px;font-size:13px;font-weight:700;white-space:nowrap}
/* full screen: big always-visible exit button, top-right, safe-area aware; Leaflet controls move below it */
body.map-full .exit-full{position:absolute;left:auto;right:max(10px,env(safe-area-inset-right));top:10px;bottom:auto;transform:none;z-index:3000;font-size:17px;padding:12px 18px;min-height:48px}
body.map-full .leaflet-top{top:62px}
body.map-full .map-wrap{height:100vh;height:100dvh}
body.map-full.spooky #map{flex:1 1 auto!important;height:auto!important;min-height:0!important}
/* poster in pin card: whole image, scaled down proportionally, never cropped */
.popup img.pop-photo{display:block;width:100%;height:auto;max-height:230px;object-fit:contain;object-position:center;background:#0d0814}
.pin-sheet .popup img.pop-photo{max-height:60vh}
.sponsor-item img{width:100%;height:auto;max-height:260px;object-fit:contain!important;background:#0d0814}
/* hard override: no crop anywhere for the card poster */
.leaflet-popup-content .popup img.pop-photo,.pin-sheet .popup img.pop-photo{max-width:100%!important;width:100%!important;height:auto!important;max-height:230px!important;object-fit:contain!important;aspect-ratio:auto!important;background-image:none!important}
.pin-sheet .popup img.pop-photo{max-height:60vh!important}
.leaflet-popup-content{overflow:auto}
body.map-half.spooky #map{height:50vh;min-height:300px}
/* CTA slightly thinner */
.hero-actions .btn.big{padding:6px 18px;min-height:40px}
@media (max-width:820px){.hero-actions .btn.big{padding:5px 12px;min-height:40px;font-size:15px;max-width:calc(100vw - 32px)}}
@media (max-width:370px){.hero-actions .btn.big{font-size:14px;padding:5px 10px}}
@media (max-width:820px){.hero-actions .btn.big{white-space:nowrap;font-size:clamp(12px,3.5vw,15px);padding:5px 10px}}
/* type filter chips: keep Yard decorations + Interactive haunted houses on one line */
.filters .chip{white-space:nowrap}
@media (max-width:640px){.filters{gap:5px}.filters .chip{font-size:13px;padding:5px 9px}}
@media (max-width:370px){.filters .chip{font-size:12px;padding:4px 7px}}
@media (max-width:640px){.filters .hood-filter{flex:0 0 100%;max-width:100%}}
/* map flows with the page (no sticky); full view stays fixed */
.spooky .map-wrap{position:relative;top:auto}
body.map-full .map-wrap{position:fixed!important}
/* phones: one finger scrolls the page, two fingers move/zoom the map (full view: normal map gestures) */
body.coarse:not(.map-full) .leaflet-container{touch-action:pan-x pan-y}
.map-hint{position:absolute;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:rgba(13,8,20,.55);color:#fff;font-weight:700;pointer-events:none;opacity:0;transition:opacity .25s;border-radius:12px;text-align:center;padding:12px}
.map-hint.show{opacity:1}
/* Featured carousel */
.sponsor-slide .sponsor-item{display:flex;flex-direction:column;gap:6px;width:100%}
.sponsor-open{background:none;border:0;padding:0;color:inherit;cursor:pointer;text-align:left;font:inherit}
.sponsor-open img{display:block;width:100%;height:auto;max-height:340px;object-fit:contain}
.link-btns{display:flex;flex-wrap:wrap;gap:6px}
.car-nav{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:8px}
.car-arrow{background:#1d1030;border:1px solid #4b2f6d;color:#f1e7ff;border-radius:50%;width:34px;height:34px;font-size:20px;line-height:1;cursor:pointer}
.car-dots{display:flex;gap:6px}.car-dot{width:10px;height:10px;border-radius:50%;border:0;padding:0;background:#4b2f6d;cursor:pointer}.car-dot.on{background:#ff7a00}
@media (prefers-reduced-motion: reduce){.sponsor-slide.fade{animation:none!important}}
.halloween-notice{background:#2a1406;border:2px solid #ff7a00;color:#ffd9b0;border-radius:10px;padding:10px 12px;font-weight:700;margin:8px 0 12px}
.remove-opt{border:1px solid #4b2f6d;border-radius:10px;padding:8px 12px;margin:10px 0}.remove-opt legend{font-weight:700;padding:0 4px}.remove-opt label{display:block;margin:4px 0}
/* events: purple ghost pins */
.ev-pin{background:none;border:0}
.ev-pin-in{width:34px;height:34px;border-radius:50%;background:#7b2cbf;border:2px solid #fff;box-shadow:0 0 0 2px #3c096c,0 2px 8px rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center}
.ev-pin-in .ghost-glyph{font-size:20px;line-height:1;filter:drop-shadow(0 0 1px #000) drop-shadow(0 0 1px #000)}
.ev-pin-in.mini{display:inline-flex;width:22px;height:22px;vertical-align:middle;border-width:1.5px}.ev-pin-in.mini .ghost-glyph{font-size:13px}
.ev-chip .ghost-glyph,.ev-dot .ghost-glyph{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:#7b2cbf;border:1.5px solid #fff;font-size:13px;vertical-align:middle;margin-right:3px}
.ev-chip.on{border-color:#b388ff;color:#f1e7ff}
.ev-popup .ev-kind{color:#c9a7ff;font-weight:700;font-size:13px}.ev-popup h3{margin:4px 0}
.ev-popup .ghost-glyph,.my-l .ghost-glyph{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:#7b2cbf;border:1.5px solid #fff;font-size:12px}
.ev-item{display:flex;gap:8px;align-items:center;width:100%;text-align:left;background:none;border:0;color:inherit;font:inherit;cursor:pointer;padding:6px 2px}
.ev-map{height:240px;border-radius:10px;margin:8px 0;border:1px solid #3b2457}
.ev-row{display:flex;gap:8px;flex-wrap:wrap}.ev-row label{flex:1 1 120px}
.hero-actions .btn.ev-cta{background:#7b2cbf;color:#fff;border-color:#b388ff}
.site-header h1 a.brand{color:inherit;text-decoration:none}
.site-header h1 a.brand{white-space:nowrap}@media (max-width:600px){.spooky .site-header h1{font-size:clamp(15px,5.3vw,26px)}.spooky .site-header h1 small{font-size:.62em}}
