:root{
  --night:#120F1F; --night2:#1C1830; --night3:#272140;
  --ink:#F3E9DA; --muted:#B9AFC4; --rule:rgba(243,233,218,.14);
  --lantern:#FF8A2A; --ember:#FFC170; --leaf:#7E9A5A; --stem:#6B5A2E; --pk:#E8741E; --pk2:#C85A12;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--night);color:var(--ink);font:400 16px/1.5 Figtree,system-ui,sans-serif}
a{color:var(--ember)}
button{font:inherit;color:inherit}
.shell{display:grid;grid-template-columns:minmax(440px,46%) 1fr;min-height:100vh;min-height:100dvh}
.left{padding:28px clamp(16px,3.4vw,48px) 48px;min-width:0}
.right{position:sticky;top:0;height:100vh;border-left:1px solid var(--rule)}
#map{position:absolute;inset:0}
.kicker{font-size:.86rem;color:var(--muted);display:flex;gap:.5rem;align-items:center}
.kicker b{color:var(--ink);font-weight:600}
h1{font:400 clamp(2.2rem,4.6vw,3.7rem)/1.02 Gloock,Georgia,serif;margin:.5rem 0 .7rem;letter-spacing:-.01em;max-width:13ch}
h1 em{font-style:normal;color:var(--lantern)}
.lede{color:var(--muted);max-width:44ch;margin:0 0 1.4rem}
/* the dusk slab: today's light, lumpy facts */
.dusk{display:grid;grid-template-columns:auto 1fr;gap:.2rem 1rem;align-items:baseline;padding:14px 0 16px;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.dusk .now{font:400 1.9rem/1 Gloock,serif;color:var(--ember);font-variant-numeric:tabular-nums}
.dusk .line{font-weight:600}
.dusk .note{grid-column:1/-1;color:var(--muted);font-size:.92rem}
.light{grid-column:1/-1;height:6px;border-radius:3px;background:linear-gradient(90deg,#F7C66B 0%,#FF8A2A var(--ss),#7A4A86 var(--dk),#2a2244 100%);position:relative;margin-top:.5rem}
.light i{position:absolute;top:-5px;width:2px;height:16px;background:var(--ink);left:var(--nw)}
.scale{grid-column:1/-1;display:flex;justify-content:space-between;font-size:.75rem;color:var(--muted)}
/* signature: lantern day strip */
.days{display:flex;gap:4px;overflow-x:auto;padding:18px 0 10px;margin:0 -4px;scrollbar-width:none}.days::-webkit-scrollbar{display:none}
.day{flex:1 0 64px;background:none;border:0;border-radius:10px;padding:6px 4px 8px;cursor:pointer;display:grid;justify-items:center;gap:2px;min-width:64px}
.day:hover{background:var(--night2)}
.day[aria-pressed=true]{background:var(--night3)}
.day svg{width:40px;height:46px;overflow:visible}
.day .carve{fill:#3A1E0C;transition:fill .2s}
.day[data-n="1"] .carve,.day[data-n="2"] .carve{fill:#FFB347}
.day[data-n="3"] .carve,.day[data-n="4"] .carve,.day[data-n="5"] .carve{fill:#FFE08A;filter:drop-shadow(0 0 3px #FFD25A)}
.day[aria-pressed=true] .carve{fill:#FFF3C4;filter:drop-shadow(0 0 6px #FFD25A)}
.day .d{font-weight:700;font-size:.86rem}
.day .c{font-size:.74rem;color:var(--muted)}
.day .t{font-size:.66rem;font-weight:700;color:#1a0f05;background:var(--ember);border-radius:4px;padding:0 4px;line-height:1.4}
.filters{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 18px}
.filters button{border:1px solid var(--rule);background:none;border-radius:999px;padding:.42rem .9rem;cursor:pointer;min-height:2.5rem}
.filters button[aria-pressed=true]{background:var(--ink);color:var(--night);border-color:var(--ink);font-weight:600}
.dayhead{display:flex;justify-content:space-between;align-items:baseline;margin:0 0 4px}
.dayhead h2{font:400 1.5rem/1.1 Gloock,serif;margin:0}
.dayhead span{color:var(--muted);font-size:.9rem}
.list{list-style:none;margin:0;padding:0}
.ev{display:grid;grid-template-columns:4.6rem 1fr;gap:0 1rem;padding:16px 0;border-bottom:1px solid var(--rule)}
.ev.sel{background:linear-gradient(90deg,rgba(255,138,42,.10),transparent 70%)}
.ev .tm{font:400 1.25rem/1.2 Gloock,serif;color:var(--ember);font-variant-numeric:tabular-nums}
.ev .tm small{display:block;font:500 .72rem/1.3 Figtree,sans-serif;color:var(--muted)}
.ev h3{margin:0;font-size:1.08rem;line-height:1.25;font-weight:700}
.ev .where{color:var(--muted);font-size:.92rem;margin:.1rem 0 .35rem}
.ev p{margin:0 0 .5rem;font-size:.94rem;max-width:52ch}
.meta{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;font-size:.84rem}
.st{font-weight:700;border-radius:4px;padding:.1rem .45rem}
.st.on{background:var(--lantern);color:#1a0f05}
.st.soon{background:var(--ember);color:#1a0f05}
.st.later,.st.vary{border:1px solid var(--rule)}
.st.done{color:var(--muted);text-decoration:line-through}
.ev.done h3,.ev.done .tm{opacity:.55}
.tag{color:var(--muted)}
.tag.dark{color:#D6B6F0}
.mapbtn{background:none;border:0;text-decoration:underline;cursor:pointer;padding:.6rem .3rem;color:var(--ember);min-height:2.5rem}
.tbc{margin-top:26px;padding:16px;border:1px dashed var(--rule);border-radius:10px}
.tbc h2{font:400 1.1rem Gloock,serif;margin:0 0 .3rem}
.empty{color:var(--muted);padding:20px 0}
footer{margin-top:34px;color:var(--muted);font-size:.84rem;max-width:56ch}
/* pins */
.pin{width:30px;height:30px;border-radius:50%;background:#2B2340;border:2px solid var(--ember);color:var(--ink);font:700 .8rem/26px Figtree,sans-serif;text-align:center;cursor:pointer}
.pin.on{background:var(--lantern);color:#1a0f05;box-shadow:0 0 0 6px rgba(255,138,42,.25),0 0 22px 6px rgba(255,138,42,.55)}
.pin.soon{box-shadow:0 0 16px 3px rgba(255,193,112,.5)}
.pin.done{opacity:.45}
.pin.sel{transform:scale(1.25);z-index:3}
@media (prefers-reduced-motion:no-preference){.pin.on{animation:flick 2.4s infinite}@keyframes flick{50%{box-shadow:0 0 0 8px rgba(255,138,42,.18),0 0 28px 8px rgba(255,138,42,.45)}}}
.maplibregl-ctrl-group{background:var(--night2)!important}.maplibregl-ctrl-group button span{filter:invert(1)}
@media (max-width:999px){
  .shell{grid-template-columns:minmax(0,1fr)}
  .right{position:relative;height:300px;order:0;border:0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);margin:0}
  .left{display:contents}
  .top{padding:22px 16px 0;order:0}.right{order:1}.bottom{padding:18px 16px 40px;order:2}
}
/* ---- halloweenmap additions ---- */
@font-face{font-family:Gloock;src:url(/fonts/gloock-latin-400-normal.woff2) format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Figtree;src:url(/fonts/figtree-latin-400-normal.woff2) format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Figtree;src:url(/fonts/figtree-latin-600-normal.woff2) format('woff2');font-weight:600;font-display:swap}
@font-face{font-family:Figtree;src:url(/fonts/figtree-latin-700-normal.woff2) format('woff2');font-weight:700;font-display:swap}
.skip{position:absolute;left:-999px;top:0;background:var(--lantern);color:var(--night);padding:.5rem 1rem;z-index:30}
.skip:focus{left:1rem}
:focus-visible{outline:2px solid var(--ember);outline-offset:2px}
.areas,.tags{display:flex;flex-wrap:wrap;gap:.4rem;margin:.7rem 0}
.chip,.suggest{font:600 .85rem/1 Figtree,sans-serif;color:var(--ink);background:var(--night2);border:1px solid var(--rule);border-radius:999px;padding:.55rem .85rem;min-height:2.5rem;cursor:pointer}
.chip[aria-pressed=true]{background:var(--lantern);color:var(--night);border-color:var(--lantern)}
.chip.near{border-color:var(--ember);color:var(--ember)}
.suggest{border-style:dashed;border-color:var(--ember);color:var(--ember)}
.tale{border-left:3px solid var(--lantern);background:var(--night2);padding:.9rem 1rem;margin:1rem 0}
.tale .kicker{margin:0}
.tale h2{font:400 1.5rem/1.15 Gloock,serif;margin:.25rem 0 .5rem}
.tale p{margin:.3rem 0;line-height:1.55}
.tale .src{color:var(--muted);font-size:.85rem}
.tale .src a{color:var(--ember)}
.tale details{margin-top:.6rem;color:var(--muted)}
.tale .past h3{font-size:1rem;color:var(--ink);margin:.7rem 0 .2rem}
.plan{border:1px solid var(--lantern);border-radius:4px;padding:1rem;margin:0 0 1.2rem}
.plan h2{font:400 1.35rem Gloock,serif;margin:0 0 .3rem}
.badges{display:flex;flex-wrap:wrap;gap:.4rem;list-style:none;padding:0;margin:.5rem 0}
.badges li{font-size:.8rem;border:1px solid var(--ember);color:var(--ember);border-radius:999px;padding:.25rem .6rem}
.plan-acts,.acts{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-top:.6rem}
.plan-acts button,.lantern,.linkbtn{font:600 .85rem Figtree,sans-serif;min-height:2.5rem;padding:.45rem .85rem;border-radius:4px;border:1px solid var(--rule);background:var(--night3);color:var(--ink);cursor:pointer}
.lantern[aria-pressed=true]{background:var(--lantern);border-color:var(--lantern);color:var(--night)}
.acts a{color:var(--ember);font-weight:600}
.ev.mine{box-shadow:inset 3px 0 0 var(--lantern)}
.tag.sold{text-decoration:line-through;color:var(--muted)}
.warn{display:block;font-size:.8rem;color:var(--muted);margin:.5rem 0 0}
.scope{font-size:.86rem;font-weight:600;color:var(--lantern);margin:0 0 .8rem}
.inapp{font-size:.85rem;border:1px dashed var(--ember);border-radius:4px;padding:.5rem .7rem;margin:.6rem 0 0}
#clear{color:var(--muted)}
.day.early{flex:0 0 auto;align-content:center;max-width:6.5rem;border:1px dashed var(--rule)}
.day.early .d{text-align:center;line-height:1.2}
.day.early[aria-pressed=true]{border-color:var(--lantern)}
.thin{display:block;background:var(--night3);color:var(--ember);font-weight:600;text-decoration:none;border-radius:4px;padding:.8rem 1rem;margin:.4rem 0 1rem}
.over{background:var(--lantern);color:var(--night);font-weight:600;padding:.7rem 16px}
.over a{color:inherit}
.toast{position:fixed;left:16px;bottom:16px;max-width:calc(100% - 32px);background:var(--ink);color:var(--night);font-weight:600;padding:.7rem 1rem;border-radius:4px;opacity:0;transform:translateY(8px);transition:opacity .2s,transform .2s;pointer-events:none;z-index:40}
.toast.on{opacity:1;transform:none}
footer a{color:var(--ember)}
.maplibregl-ctrl-attrib{background:rgba(18,15,31,.85)!important;color:var(--muted)}
.maplibregl-ctrl-attrib a{color:var(--muted)}
@media (prefers-reduced-motion:reduce){.toast{transition:none}}
.prose{max-width:42rem;padding:2rem 16px 4rem;margin:0;line-height:1.6;color:var(--ink);background:var(--night)}
.prose h1,.prose h2{font-family:Gloock,serif;font-weight:400}
.prose a{color:var(--ember)}
.evpage .when{color:var(--muted);font-weight:600}
.evfacts{display:flex;flex-wrap:wrap;gap:.4rem;list-style:none;padding:0;margin:.6rem 0}
.evpage .thin{font-size:1.1rem;margin:1.2rem 0 .6rem}
.evpage .acts a{text-decoration:none}
.evfoot{padding-top:0;color:var(--muted)}
