:root{--ink:#0b0b0b;--ink2:#151515;--paper:#151515;--line:#2b2b2b;--lime:#d4d4d4;--mute:#9b9b9b;--txt:#ededed;--glass:rgba(11,11,11,.78);--map-bg:#000;--disp:"Fraunces",Georgia,serif;--mono:"IBM Plex Mono",ui-monospace,monospace;--body:"Inter Tight",ui-sans-serif,system-ui,sans-serif;--r:14px}
@media (prefers-color-scheme:light){:root{--ink:#ffffff;--ink2:#f4f4f4;--paper:#f4f4f4;--line:#dcdcdc;--lime:#2b2b2b;--mute:#666;--txt:#111;--glass:rgba(255,255,255,.82);--map-bg:#fff}}
*{box-sizing:border-box}html{color-scheme:light dark}body{margin:0;background:var(--ink);color:var(--txt);font:16px/1.55 var(--body);-webkit-font-smoothing:antialiased}
body:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.5;background:repeating-radial-gradient(circle at 20% 30%,transparent 0 22px,var(--line) 22px 23px),repeating-radial-gradient(circle at 85% 70%,transparent 0 30px,var(--line) 30px 31px)}
a{color:var(--lime)}:focus-visible{outline:3px solid var(--lime);outline-offset:3px;border-radius:6px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:-999px;top:8px;z-index:50;background:var(--lime);color:var(--ink);padding:8px 12px}.skip:focus{left:8px}
.bar{display:flex;justify-content:space-between;align-items:center;padding:14px clamp(16px,4vw,40px);border-bottom:1px solid var(--line);position:relative;z-index:5}
.logo{display:flex;gap:10px;align-items:center;color:var(--txt);text-decoration:none;font:700 1.2rem var(--disp)}.logo svg{width:28px;color:var(--lime)}
.bar nav a{color:var(--txt);margin-left:20px;font:600 .85rem var(--mono);text-transform:uppercase;letter-spacing:.08em;text-decoration:none}.bar nav a:hover{color:var(--lime)}
main{max-width:1240px;margin:0 auto;padding:0 clamp(16px,4vw,40px)}
h1,h2{font-family:var(--disp);letter-spacing:-.02em;line-height:1}
/* home */
[data-kind=home] .bar{position:absolute;inset:0 0 auto;z-index:8;border:0;background:linear-gradient(180deg,var(--glass),transparent);pointer-events:none}[data-kind=home] .bar a{pointer-events:auto}
[data-kind=home] main{max-width:none;padding:0}
.maphero{position:relative}
.stage{position:relative;height:100vh;height:100dvh;min-height:480px;overflow:hidden;background:var(--map-bg)}
.stage:before{content:"";position:absolute;inset:0;opacity:.9;background:repeating-radial-gradient(ellipse at 35% 45%,transparent 0 18px,var(--line) 18px 19px),repeating-radial-gradient(ellipse at 75% 60%,transparent 0 26px,var(--line) 26px 27px);pointer-events:none;transition:opacity .6s}
.is3d .stage:before,.stage.is3d:before{opacity:0}
.stage canvas{position:absolute;inset:0;width:100%;height:100%;display:block;cursor:grab;outline-offset:-4px}.stage canvas:active{cursor:grabbing}
.flat{position:absolute;inset:0;width:100%;height:100%;padding:150px 4vw 70px}.flat .us{fill:var(--ink2);stroke:var(--lime);stroke-width:1.5;stroke-opacity:.6}.flat .pin circle{stroke:var(--ink);stroke-width:3;transition:r .2s}.flat .pin:hover circle,.flat .pin.hl circle{r:14}
.is3d .flat{display:none}
.ov{position:absolute;z-index:6;pointer-events:none}.ov>*{pointer-events:auto}
.ov-top{left:clamp(16px,4vw,40px);top:72px;width:min(440px,calc(100% - 32px))}
.ov-top h1{font-size:clamp(2rem,4.4vw,3.4rem);margin:0 0 14px;text-shadow:0 1px 14px var(--ink)}.ov-top h1 em{color:var(--lime)}
.search{position:relative;margin:0 0 12px}.search input{width:100%;min-height:54px;padding:0 48px 0 18px;border-radius:99px;border:2px solid var(--lime);background:var(--glass);backdrop-filter:blur(8px);color:var(--txt);font:500 1rem var(--body);box-shadow:0 10px 30px rgba(0,0,0,.18)}.search input::placeholder{color:var(--mute)}
.search kbd{position:absolute;right:16px;top:50%;transform:translateY(-50%);font:600 .75rem var(--mono);color:var(--mute);border:1px solid var(--line);border-radius:6px;padding:2px 7px}
.legend{list-style:none;padding:8px 12px;margin:0;display:inline-flex;flex-wrap:wrap;gap:6px 14px;font:500 .72rem var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--txt);background:var(--glass);border-radius:12px;backdrop-filter:blur(6px)}
.legend i,.spot-list i,.chip i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:7px;vertical-align:middle}
.preview{position:absolute;z-index:7;right:clamp(16px,4vw,40px);bottom:84px;width:min(320px,calc(100% - 32px));padding:16px 18px;border-radius:var(--r);background:var(--paper);color:var(--txt);border:1px solid var(--line);box-shadow:0 20px 40px rgba(0,0,0,.2)}
.preview h3{font:700 1.3rem/1.1 var(--disp);margin:4px 0 6px}.preview p{margin:0 0 10px;font-size:.88rem;color:var(--mute)}.preview a{display:inline-flex;min-height:44px;align-items:center;padding:0 14px;border-radius:99px;background:var(--txt);color:var(--ink);font-weight:600;text-decoration:none}
.preview .x{position:absolute;right:4px;top:4px;width:44px;height:44px;border:0;background:none;font-size:1.4rem;cursor:pointer;color:var(--txt)}
.cue{position:absolute;z-index:6;left:50%;bottom:18px;transform:translateX(-50%);padding:10px 18px;min-height:44px;border-radius:99px;background:var(--glass);border:1px solid var(--line);color:var(--txt);font:600 .8rem var(--mono);text-transform:uppercase;letter-spacing:.08em;text-decoration:none;backdrop-filter:blur(6px)}.cue span{display:inline-block;animation:bob 1.8s ease-in-out infinite}@keyframes bob{50%{transform:translateY(4px)}}
.touchhint{position:absolute;z-index:6;left:50%;top:50%;transform:translate(-50%,-50%);margin:0;padding:10px 16px;border-radius:99px;background:var(--glass);font:600 .8rem var(--mono);color:var(--lime);pointer-events:none;transition:opacity .4s}
.below{max-width:1240px;margin:0 auto;padding:36px clamp(16px,4vw,40px) 0}.intro{color:var(--mute);font-size:1.1rem;max-width:60ch}
.spots{padding:10px 0}.spots h2{font-size:1.8rem}.spots h2 span{font:500 1rem var(--mono);color:var(--mute)}
.spot-list{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr));gap:10px}
.spot-list a{display:block;padding:14px 16px;border:1px solid var(--line);border-radius:var(--r);text-decoration:none;color:var(--txt);background:var(--ink2);transition:border-color .2s,transform .2s}.spot-list a:hover,.spot-list .hl a{border-color:var(--lime);transform:translateY(-2px)}
.spot-list strong{font:700 1.1rem var(--disp)}.spot-list span{display:block;margin-top:2px;font:400 .78rem var(--mono);color:var(--mute)}
.sp[hidden]{display:none}
@media(max-width:640px){.ov-top{top:62px}.ov-top h1{font-size:1.7rem;margin-bottom:10px}.legend{font-size:.64rem;padding:6px 10px}.flat{padding:200px 2vw 80px}.preview{bottom:76px;right:16px}}
/* spot */
.spot{padding:26px 0}.crumbs{font:500 .78rem var(--mono);color:var(--mute);text-transform:uppercase;letter-spacing:.06em}.crumbs a{color:var(--mute)}
.chip{display:inline-flex;align-items:center;font:600 .78rem var(--mono);text-transform:uppercase;letter-spacing:.08em;border:1px solid var(--act);color:var(--act);padding:4px 12px;border-radius:99px;margin:0}
.spot h1{font-size:clamp(2.2rem,6vw,4.4rem);margin:.18em 0 .2em;max-width:16ch}.lede{color:var(--mute);font-size:1.12rem;max-width:58ch}
.facts{display:grid;gap:18px;margin:22px 0 34px;padding:20px;border:1px solid var(--line);border-radius:22px;background:var(--ink2)}@media(min-width:860px){.facts{grid-template-columns:1.2fr 1fr}}
.facts dl{margin:0;display:grid;grid-template-columns:1fr 1fr;gap:14px}.facts dt{font:600 .7rem var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--act)}.facts dd{margin:3px 0 0;font:600 1.02rem var(--body)}
.topo{width:100%;max-height:210px}.topo path{fill:none;stroke:var(--lime);stroke-opacity:.35;stroke-width:1}.topo .cm{stroke-opacity:.8;stroke-width:1.6}.topo .pk{fill:var(--act)}.topo path{stroke:var(--mute)}.topo text{fill:var(--txt);font:600 11px var(--mono)}
.js .topo path{stroke-dasharray:900;stroke-dashoffset:900;animation:draw 2.2s ease forwards}.topo path:nth-child(2n){animation-delay:.15s}.topo path:nth-child(3n){animation-delay:.3s}@keyframes draw{to{stroke-dashoffset:0}}
.src{grid-column:1/-1;margin:0;font-size:.8rem;color:var(--mute)}
.check-head{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap;position:sticky;top:0;z-index:4;background:color-mix(in srgb,var(--ink) 90%,transparent);backdrop-filter:blur(8px);padding:10px 0;border-bottom:1px solid var(--line)}
.check-head h2{font-size:2rem;margin:0}.prog{margin:0;font:600 1rem var(--mono);color:var(--lime)}.ghost{margin-left:auto;min-height:40px;padding:0 14px;background:none;border:1px solid var(--line);border-radius:99px;color:var(--mute);font:600 .8rem var(--mono);cursor:pointer}
.hint{color:var(--mute);font-size:.92rem}
.items{list-style:none;padding:0;margin:0;counter-reset:n}
.item{display:grid;gap:12px;padding:16px 0;border-bottom:1px solid var(--line)}@media(min-width:860px){.item{grid-template-columns:1fr 1.1fr;align-items:start}}
.have{display:grid;grid-template-columns:32px 1fr auto;gap:12px;cursor:pointer;position:relative;align-items:start;min-height:44px}
.have input{position:absolute;opacity:0;width:32px;height:32px;margin:0;cursor:pointer}
.box{width:30px;height:30px;border:2px solid var(--txt);border-radius:8px;display:grid;place-items:center;transition:.2s}
.box:after{content:"";width:12px;height:7px;border:solid var(--ink);border-width:0 0 3px 3px;transform:rotate(-45deg);opacity:0}
.have input:checked+.box{background:var(--lime);border-color:var(--lime)}.have input:checked+.box:after{opacity:1}.have input:focus-visible+.box{outline:3px solid var(--lime);outline-offset:3px}
.lbl strong{display:block;font:700 1.12rem/1.25 var(--disp)}.lbl span{color:var(--mute);font-size:.92rem}
.gotit{font:600 .72rem var(--mono);text-transform:uppercase;color:var(--ink);background:var(--lime);padding:3px 8px;border-radius:6px;opacity:0;transition:.2s}
.item:has(input:checked) .gotit{opacity:1}.item:has(input:checked) .lbl strong{text-decoration:line-through;text-decoration-color:var(--lime);opacity:.65}
.item:has(input:checked) .pick{display:none}
.gear{display:grid;grid-template-columns:88px 1fr;gap:14px;padding:14px;background:var(--paper);color:var(--txt);border:1px solid var(--line);border-radius:var(--r)}
.gear img{width:88px;height:88px;object-fit:contain;background:#fff;border-radius:10px}
.gname{margin:0;font:700 1rem/1.2 var(--disp)}.gprice{margin:2px 0;font:600 .95rem var(--mono)}.gprice span{font-weight:400;color:var(--mute);font-size:.78rem}.gwhy{margin:0 0 8px;font-size:.88rem;color:var(--mute)}
.buy{display:inline-flex;min-height:40px;align-items:center;padding:0 14px;border-radius:99px;background:var(--txt);color:var(--ink);font-weight:600;font-size:.88rem;text-decoration:none}.buy:hover{opacity:.85}
.nopick{margin:0;padding:14px;border:1px dashed var(--line);border-radius:var(--r);color:var(--mute);font-size:.88rem}
.note{color:var(--mute);font-size:.8rem;margin-top:16px}
.prose{max-width:66ch;padding:30px 0}.prose h1{font-size:3rem}
.foot{max-width:1240px;margin:40px auto 0;padding:24px clamp(16px,4vw,40px) 40px;border-top:1px solid var(--line);color:var(--mute);font-size:.85rem}
@media(max-width:600px){.facts dl{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.js .topo path{stroke-dashoffset:0}}

.searchrow{display:flex;gap:8px;margin:0 0 12px}.searchrow .search{flex:1;margin:0}
.nearme{flex:none;min-height:54px;padding:0 18px;border-radius:99px;border:0;background:var(--txt);color:var(--ink);font:700 .85rem var(--mono);text-transform:uppercase;letter-spacing:.06em;cursor:pointer;display:inline-flex;align-items:center;gap:8px;box-shadow:0 10px 30px rgba(0,0,0,.18)}.nearme svg{width:18px;height:18px}
.nearme[aria-busy=true]{opacity:.6}
.nearpanel{position:absolute;z-index:7;left:clamp(16px,4vw,40px);bottom:84px;width:min(360px,calc(100% - 32px));max-height:45vh;overflow:auto;padding:14px 16px;border-radius:var(--r);background:var(--glass);backdrop-filter:blur(10px);border:1px solid var(--line)}
.nearpanel h2{font-size:1.1rem;margin:0 0 8px;font-family:var(--disp)}.nearpanel ol{list-style:none;margin:0;padding:0}.nearpanel li a{display:flex;gap:10px;align-items:center;padding:8px 4px;border-top:1px solid var(--line);color:var(--txt);text-decoration:none;min-height:44px}.nearpanel li a:hover{background:var(--ink2)}
.nearpanel b{font:600 .8rem var(--mono);margin-left:auto;color:var(--mute);white-space:nowrap}.nearpanel i{width:10px;height:10px;border-radius:50%;flex:none}.nearpanel .msg{margin:0;color:var(--mute);font-size:.9rem}
.nearpanel .x{position:absolute;right:4px;top:4px;width:44px;height:44px;border:0;background:none;color:var(--txt);font-size:1.3rem;cursor:pointer}
.flat .me circle{fill:var(--txt);stroke:var(--ink);stroke-width:3}
@media(max-width:640px){.nearme{padding:0 14px}.nearme span:not(.sr){display:none}.nearpanel{bottom:76px;max-height:38vh}}

.pinlabels{position:absolute;inset:0;pointer-events:none;z-index:3;overflow:hidden}.plab{position:absolute;left:0;top:0;white-space:nowrap;font:600 11px/1 var(--mono,ui-monospace,monospace);letter-spacing:.02em;padding:4px 7px 4px 16px;border-radius:99px;background:var(--glass,var(--paper));color:var(--txt);border:1px solid var(--line);will-change:transform}.plab::before{content:'';position:absolute;left:6px;top:50%;width:6px;height:6px;margin-top:-3px;border-radius:50%;background:var(--c)}.plab.me{background:var(--txt);color:var(--ink);border-color:transparent}.plab.me::before{background:var(--ink)}.plab.on{border-color:var(--c);font-size:12px}
/* <topo-map> inline instances */
.topomap{position:relative;overflow:hidden;background:var(--map-bg)}
.topomap--inline{height:var(--topo-h,340px);min-height:240px;border-radius:16px;border:1px solid var(--line);isolation:isolate}
.topomap canvas{position:absolute;inset:0;width:100%;height:100%;display:block;cursor:grab;outline-offset:-4px}
.topomap canvas:active{cursor:grabbing}
.topomap--inline .flat{padding:0}
.topomap--inline .flat .pin circle{r:var(--pr,9px);stroke-width:calc(var(--pr,9px)/3)}
.topomap--inline .flat .pin.hl circle,.topomap--inline .flat .pin:hover circle{r:calc(var(--pr,9px)*1.6)}
.topomap--inline .flat .us{stroke-width:.3}
.topomap--inline .plab{font-size:10px}
.facts .topomap{grid-column:1/-1}
@media(min-width:860px){.facts .topomap{grid-column:auto;grid-row:span 2}}
/* spot page: full-screen map + floating panel / bottom sheet (JS only; without JS the panel is a normal page) */
.grab-wrap{display:none}
.spotmap .flat .pin circle{r:var(--pr,9px);stroke-width:calc(var(--pr,9px)/3)}
.spotmap .flat .pin.hl circle{r:calc(var(--pr,9px)*1.6)}
html:not(.js) .spotmap{height:60vh;min-height:320px;margin:0 0 30px;border-radius:16px}
.js[data-kind=spot] .bar{position:absolute;inset:0 0 auto;z-index:8;border:0;background:linear-gradient(180deg,var(--glass),transparent);pointer-events:none}
.js[data-kind=spot] .bar a{pointer-events:auto}
.js[data-kind=spot] main{max-width:none;padding:0}
.js .spotview{position:relative;height:100vh;height:100dvh;min-height:520px;overflow:hidden}
.js .spotview .spotmap{position:absolute;inset:0;height:auto;min-height:0}
.js .spotview .spotmap .flat{padding:0}
.js .spot-panel{position:absolute;z-index:6;top:68px;left:16px;bottom:16px;width:min(420px,calc(100% - 32px));overflow-y:auto;overscroll-behavior:contain;padding:20px 22px 24px;border-radius:20px;background:var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(16px) saturate(1.2);backdrop-filter:blur(16px) saturate(1.2);box-shadow:0 24px 60px rgba(0,0,0,.18);scrollbar-width:thin}
.js .spot-panel h1{font-size:clamp(1.8rem,3vw,2.4rem);max-width:none}
.js .spot-panel .facts{grid-template-columns:1fr;margin:16px 0 22px;padding:14px;background:transparent}
.js .spot-panel .item{grid-template-columns:1fr}
.js .spot-panel .disc{font-size:.78rem;color:var(--mute);margin:18px 0 0}
.disc{font-size:.85rem;color:var(--mute)}
@media(max-width:760px){
 .js .spot-panel{top:auto;left:0;right:0;bottom:0;width:auto;height:170px;border-radius:20px 20px 0 0;border-bottom:0;padding-top:0;transition:height .28s cubic-bezier(.2,.8,.2,1);overflow-y:hidden}
 .js .spot-panel[data-sheet=half]{height:50%;overflow-y:auto}
 .js .spot-panel[data-sheet=full]{height:calc(100% - 56px);overflow-y:auto}
 .js .spot-panel.dragging{transition:none}
 .js .grab-wrap{display:block;position:sticky;top:0;z-index:2;margin:0 -22px 4px;padding:8px 0 6px;background:inherit;touch-action:none;cursor:grab}
 .js .grab{display:block;margin:0 auto;width:64px;height:28px;border:0;background:none;cursor:grab;position:relative}
 .js .grab:before{content:"";position:absolute;left:14px;right:14px;top:11px;height:5px;border-radius:9px;background:var(--mute);opacity:.6}
 .js .grab:focus-visible{outline:2px solid var(--txt);border-radius:8px}
 .js .spot-panel .crumbs{margin-top:0}
}
@media(prefers-reduced-motion:reduce){.js .spot-panel{transition:none}}
/* ===== Mission-briefing HUD (spot pages) ===== */
:root{--alert:#ff5a5f;--cond:"IBM Plex Sans Condensed","Arial Narrow",sans-serif;--hair:rgba(255,255,255,.16);--brk:rgba(255,255,255,.7)}
@media (prefers-color-scheme:light){:root{--alert:#c4262e;--hair:rgba(0,0,0,.14);--brk:rgba(0,0,0,.6)}}
.hud{--disp:var(--cond)}
.hud .spot-panel{font-family:var(--mono);font-size:.86rem}
.hud .frame{position:relative;padding:14px 14px 16px;margin:0 0 14px;border:1px solid var(--hair);border-radius:2px;
 background:linear-gradient(var(--brk),var(--brk)) top left/12px 1px,linear-gradient(var(--brk),var(--brk)) top left/1px 12px,linear-gradient(var(--brk),var(--brk)) top right/12px 1px,linear-gradient(var(--brk),var(--brk)) top right/1px 12px,linear-gradient(var(--brk),var(--brk)) bottom left/12px 1px,linear-gradient(var(--brk),var(--brk)) bottom left/1px 12px,linear-gradient(var(--brk),var(--brk)) bottom right/12px 1px,linear-gradient(var(--brk),var(--brk)) bottom right/1px 12px;background-repeat:no-repeat}
.js .hud .spot-panel{border-radius:4px;border-color:var(--hair);padding:16px}
.hud .crumbs{font:500 .72rem var(--mono);letter-spacing:.08em;margin:0 0 10px}
.hud .kicker{font:600 .74rem/1.3 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--mute);margin:0 0 6px;min-height:1.3em}
.hud h1,.js .hud .spot-panel h1{font:700 clamp(1.7rem,3vw,2.3rem)/1.02 var(--cond);text-transform:uppercase;letter-spacing:.01em;margin:0 0 12px;max-width:none}
.hud h2{font:700 1.05rem var(--cond);text-transform:uppercase;letter-spacing:.12em;margin:0 0 10px}
.hud .hk{font:600 .68rem var(--mono);text-transform:uppercase;letter-spacing:.16em;color:var(--mute);margin:0 0 8px}
.hud .meta{list-style:none;margin:0 0 12px;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:8px 12px}
.hud .meta li{display:flex;flex-direction:column;border-left:1px solid var(--hair);padding-left:8px}
.hud .meta span{font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;color:var(--mute)}
.hud .meta b{font-weight:600;font-size:.8rem;font-variant-numeric:tabular-nums}
.hud .meta i{display:inline-block;width:8px;height:8px;margin-right:6px;background:var(--act)}
.hud .lede{font:400 .9rem/1.5 var(--body);color:var(--txt);margin:0}
.hud .facts{display:block;background:none}
.hud .facts dl{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:0 0 12px}
.hud .tm dt{font:600 .62rem var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--mute)}
.hud .tm dd{margin:2px 0 4px;font:600 .9rem/1.3 var(--cond);letter-spacing:.02em}
.hud .gauge{display:block;height:3px;background:var(--hair)}
.hud .gauge i{display:block;height:100%;background:var(--act)}
.hud .src ul{list-style:none;margin:0 0 6px;padding:0}
.hud .src li a{font:500 .76rem var(--mono);color:var(--txt)}
.hud .src li a:before{content:"↗ ";color:var(--act)}
.hud .src p{font-size:.7rem;color:var(--mute);margin:0}
.hud .check-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.hud .ready{margin:4px 0 10px}
.hud .prog{font:500 .76rem var(--mono);margin:0 0 6px;letter-spacing:.06em;text-transform:uppercase}
.hud .prog b{font:700 1.4rem var(--cond);color:var(--txt);margin-right:2px}
.hud .rbar{height:6px;background:repeating-linear-gradient(90deg,var(--hair) 0 8px,transparent 8px 10px)}
.hud .rbar i{display:block;height:100%;width:var(--p,0%);background:repeating-linear-gradient(90deg,var(--alert) 0 8px,transparent 8px 10px);transition:width .4s}
.hud .rbar.full i{background:repeating-linear-gradient(90deg,var(--act) 0 8px,transparent 8px 10px)}
.hud .hint{font-size:.74rem;color:var(--mute)}
.hud .item{padding:12px 0;border-bottom:1px dashed var(--hair)}
.hud .lbl strong{font:600 .98rem var(--cond);letter-spacing:.02em}
.hud .lbl span{font-size:.74rem;color:var(--mute)}
.hud .st{font:700 .62rem var(--mono);letter-spacing:.14em;text-transform:uppercase;padding:2px 6px;border:1px solid currentColor;align-self:start;white-space:nowrap}
.hud .st-acq{display:none}
.hud .st{color:var(--alert)}
.hud .item:has(input:checked) .st{color:var(--act)}
.hud .item:has(input:checked) .st-miss{display:none}
.hud .item:has(input:checked) .st-acq{display:inline}
.hud .gotit{display:none}
.hud .gear{border-radius:2px;border-color:var(--hair);background:transparent;position:relative;padding-top:24px}
.hud .greq{position:absolute;top:6px;left:14px;margin:0;font:600 .6rem var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--mute)}
.hud .gname{font:600 .95rem/1.2 var(--cond)}
.hud .gprice{font:600 .85rem var(--mono)}
.hud .buy{border-radius:2px;text-transform:uppercase;letter-spacing:.08em;font:600 .72rem var(--mono)}
.hud .nopick{font-size:.74rem;color:var(--mute);border:1px dashed var(--hair);padding:8px 10px}
.hud .objlist{list-style:none;margin:0;padding:0}
.hud .objlist a{display:grid;grid-template-columns:10px 1fr auto auto;gap:10px;align-items:center;padding:8px 0;border-bottom:1px dashed var(--hair);color:var(--txt);text-decoration:none;font:500 .78rem var(--mono)}
.hud .objlist a:hover .on,.hud .objlist a:focus-visible .on{text-decoration:underline}
.hud .objlist i{width:8px;height:8px}
.hud .objlist .on{font:600 .9rem var(--cond)}
.hud .objlist .ob,.hud .objlist .od{color:var(--mute);font-variant-numeric:tabular-nums}
/* grid + scanlines over the map */
.js .hud:after{content:"";position:absolute;inset:0;z-index:4;pointer-events:none;background:repeating-linear-gradient(0deg,transparent 0 3px,rgba(128,128,128,.05) 3px 4px),linear-gradient(var(--hair) 1px,transparent 1px) 0 0/80px 80px,linear-gradient(90deg,var(--hair) 1px,transparent 1px) 0 0/80px 80px;opacity:.55;mix-blend-mode:normal}
/* reticle on the highlighted spot */
.reticle{position:absolute;left:0;top:0;width:0;height:0;pointer-events:none;z-index:1}
.reticle .rr{position:absolute;border-radius:50%;border:1px solid var(--brk);transform:translate(-50%,-50%)}
.reticle .r1{width:46px;height:46px;border-style:dashed;animation:spin 9s linear infinite}
.reticle .r2{width:110px;height:110px;opacity:.5}
.reticle .r3{width:190px;height:190px;opacity:.28;animation:ping 3.2s ease-out infinite}
.reticle .rs,.reticle .rx{position:absolute;background:var(--brk)}
.reticle .rs{left:-34px;top:0;width:68px;height:1px;background:linear-gradient(90deg,var(--brk) 0 14px,transparent 14px 54px,var(--brk) 54px)}
.reticle .rx{top:-34px;left:0;width:1px;height:68px;background:linear-gradient(180deg,var(--brk) 0 14px,transparent 14px 54px,var(--brk) 54px)}
@keyframes spin{to{transform:translate(-50%,-50%) rotate(360deg)}}
@keyframes ping{0%{transform:translate(-50%,-50%) scale(.7);opacity:.4}100%{transform:translate(-50%,-50%) scale(1.15);opacity:0}}
/* boot sequence (once per session) */
.boot .hud .frame{animation:frameIn .7s cubic-bezier(.2,.8,.2,1) both}
.boot .hud .facts{animation-delay:.15s}.boot .hud .check{animation-delay:.3s}.boot .hud .objs{animation-delay:.45s}
.boot .hud .spot-panel{animation:panelIn .5s ease-out both}
@keyframes frameIn{0%{clip-path:inset(0 100% 100% 0);opacity:.2}60%{clip-path:inset(0 0 60% 0);opacity:1}100%{clip-path:inset(0 0 0 0)}}
@keyframes panelIn{from{opacity:0;transform:translateX(-12px)}to{opacity:1;transform:none}}
@media (max-width:760px){.boot .hud .spot-panel{animation:none}.hud .meta{grid-template-columns:1fr 1fr}}
@media (prefers-reduced-motion:reduce){.reticle .rr{animation:none!important}.boot .hud *{animation:none!important}}

/* plain-language pass: normal case for headings, caps only on small labels */
.hud h1,.js .hud .spot-panel h1{text-transform:none;letter-spacing:0;font-size:clamp(1.8rem,3vw,2.4rem)}
.hud h2{text-transform:none;letter-spacing:.01em;font-size:1.2rem}
.hud .kicker{text-transform:none;letter-spacing:.04em;font-size:.8rem}
.hud .crumbs{text-transform:none;letter-spacing:.02em;font-size:.78rem}
.hud .prog{text-transform:none;letter-spacing:.02em;font-size:.82rem}
.hud .st{text-transform:none;letter-spacing:.04em;font-size:.68rem}
.hud .buy{text-transform:none;letter-spacing:.02em;font-size:.8rem}
.hud .gear{padding-top:14px}
.reticle .rr{border-color:var(--brk);border-width:1.5px}.reticle .r2{opacity:.7}.reticle .r3{opacity:.45}
/* ===== Desktop: HUD modules spread around the map ===== */
.hud .hudbar{display:flex;flex-wrap:wrap;gap:6px 22px;font:500 .78rem var(--mono)}
.hud .hudbar p{margin:0}.hud .hudbar span{font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;color:var(--mute);margin-right:4px}
.hud .hudbar b{font-weight:600;font-variant-numeric:tabular-nums}
.hud .check{container-type:inline-size}
@container (min-width:560px){.hud .item{grid-template-columns:1fr 1.05fr;gap:16px;align-items:start}}
@media (min-width:761px){
 .js .hud .spot-panel{--g:clamp(14px,1.2vw,28px);position:absolute;inset:calc(56px + var(--g)) var(--g) var(--g);width:auto;height:auto;top:calc(56px + var(--g));padding:0;margin:0;overflow:visible;background:none;border:0;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;pointer-events:none;
  display:grid;grid-template-columns:clamp(320px,24vw,520px) 1fr clamp(420px,33vw,760px);grid-template-rows:auto auto 1fr auto;gap:var(--g);font-size:clamp(.82rem,.5rem + .38vw,1.08rem)}
 .js .hud .spot-panel>*{pointer-events:auto;margin:0;background-color:var(--glass);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);min-height:0}
 .js .hud .grab-wrap{display:none}
 .js .hud .spot-head{grid-column:1;grid-row:1}
 .js .hud .facts{grid-column:1;grid-row:2}
 .js .hud .objs{grid-column:1;grid-row:3;align-self:end;overflow:auto;max-height:100%}
 .js .hud .check{grid-column:3;grid-row:1/4;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
 .js .hud .hudbar{grid-column:1/4;grid-row:4;justify-content:center}
 .js .hud .disc{position:absolute;right:0;bottom:calc(-1 * var(--g) + 2px);background:none;-webkit-backdrop-filter:none;backdrop-filter:none;font-size:.66rem;max-width:60ch;text-align:right}
 .js .hud .spot-head .lede{display:none}
 .js .hud h1,.js .hud .spot-panel h1{font-size:clamp(1.7rem,1rem + 1.3vw,3rem)}
 .js .hud .meta b{font-size:.92em}
 .js .hud .tm dd{font-size:1.05em}
 .js .hud .lbl strong{font-size:1.1em}
}
@media (min-width:761px) and (max-height:820px){.js .hud .facts .src p{display:none}.js .hud .objlist li:nth-child(n+4){display:none}}
@media (min-width:761px){.js .hud .hudbar{justify-content:flex-start;padding-right:min(48ch,42%)}.js .hud .disc{bottom:10px;right:16px;max-width:min(46ch,40%);z-index:2;line-height:1.35}}
/* ===== Locked 100dvh view (JS only; without JS pages scroll normally) ===== */
html.lock,html.lock body{height:100%;overflow:hidden;overscroll-behavior:none}
.lock .maphero,.lock .stage{height:100vh;height:100dvh}
.lock .touchhint{display:none!important}
/* info button + popover footer */
.infobtn{width:30px;height:30px;margin-left:14px;border-radius:50%;border:1px solid var(--line);background:var(--glass);color:var(--txt);font:600 .85rem/1 var(--mono);cursor:pointer;display:inline-grid;place-items:center;vertical-align:middle;pointer-events:auto}
.infobtn:hover,.infobtn:focus-visible{border-color:var(--txt)}
.lock .foot[popover]{position:fixed;inset:auto 16px auto auto;top:58px;margin:0;max-width:min(420px,calc(100vw - 32px));max-height:calc(100dvh - 80px);overflow:auto;padding:16px 18px;border:1px solid var(--line);border-radius:12px;background:var(--paper);color:var(--txt);font-size:.82rem;box-shadow:0 20px 50px rgba(0,0,0,.25)}
.lock .foot[popover] p{margin:0 0 10px}
.lock .foot[popover]::backdrop{background:transparent}
/* spot: short disclosure inside the packing list */
.hud .disc,.js .hud .disc{position:static;margin:0 0 8px;font:500 .74rem/1.4 var(--mono);color:var(--mute);max-width:none;text-align:left;background:none;-webkit-backdrop-filter:none;backdrop-filter:none}
.hud .disc a{color:var(--txt)}
@media (min-width:761px){.js .hud .hudbar{padding-right:22px}}
@media (max-width:760px){.lock .spot-panel[data-sheet=full]{height:calc(100% - 52px)}}
/* home drawer */
.lock .below{position:fixed;z-index:30;top:0;right:0;bottom:0;width:min(560px,100%);margin:0;padding:22px 24px 30px;overflow-y:auto;overscroll-behavior:contain;background:var(--paper);border-left:1px solid var(--line);box-shadow:-20px 0 60px rgba(0,0,0,.25);transform:translateX(102%);visibility:hidden;transition:transform .32s cubic-bezier(.2,.8,.2,1),visibility 0s linear .32s}
.lock .below.open{transform:none;visibility:visible;transition:transform .32s cubic-bezier(.2,.8,.2,1)}
.lock .below .spot-list{grid-template-columns:1fr}
.lock .below h2{margin-top:6px}
.drclose{position:sticky;top:0;float:right;width:44px;height:44px;border:1px solid var(--line);border-radius:50%;background:var(--paper);color:var(--txt);font-size:1.4rem;cursor:pointer;z-index:2}
@media (prefers-reduced-motion:reduce){.lock .below{transition:none}}
/* sticky "Packing list" header: flush with the scroll container, opaque, no see-through gap */
.hud .check-head{position:sticky;top:0;z-index:5;margin:0 -14px 10px;padding:12px 14px;background:var(--paper);-webkit-backdrop-filter:none;backdrop-filter:none;border-bottom:1px solid var(--hair)}
@media (min-width:761px){.js .hud .check{padding-top:0}}
@media (max-width:760px){.js .hud .check-head{top:42px;margin:0 -14px 10px}.js .hud .grab-wrap{background:var(--paper);z-index:6}}
/* v21 photos */
.hud .photos .strip{display:flex;gap:8px;overflow-x:auto;scroll-snap-type:x mandatory;overscroll-behavior:contain}
.hud .photos figure{flex:0 0 100%;margin:0;scroll-snap-align:start}
.hud .photos img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;border:1px solid var(--hair)}
.hud .photos figcaption{font-size:11px;line-height:1.35;opacity:.75;margin-top:4px}
.hud .photos figcaption a{color:inherit}
@media (min-width:761px){.hud .photos img{max-height:170px}}
@media (prefers-reduced-motion:reduce){.hud .photos .strip{scroll-behavior:auto}}
/* v22: photos take the bottom-left slot; nearby list removed (pins stay on map) */
@media (min-width:761px){
 .js .hud .photos{grid-column:1;grid-row:3;align-self:stretch;display:flex;flex-direction:column;padding:12px 14px;overflow:hidden}
 .js .hud .photos .strip{flex:1;min-height:0}
 .js .hud .photos figure{display:flex;flex-direction:column;min-height:0}
 .js .hud .photos img{flex:1;min-height:0;max-height:none;height:100%;aspect-ratio:auto}
 .js .hud .facts{align-self:start}
}
@media (max-width:760px){.lock .spot-panel[data-sheet=full]{top:0;height:100%;max-height:none;border-radius:0;z-index:40}}
/* v22: pin labels act like their markers (hit-tested on the canvas so drags still pan) */
.plab{transition:background-color .12s,border-color .12s,box-shadow .12s}
.plab.hov{border-color:var(--c);box-shadow:0 0 0 2px color-mix(in srgb,var(--c) 35%,transparent);background:var(--paper)}
@media (prefers-reduced-motion:reduce){.plab{transition:none}}

/* ===== v23: home page HUD (same look as spot pages; activity colors are the only accents) ===== */
.homeview{position:relative}
.homeview .frame{background:linear-gradient(var(--brk),var(--brk)) top left/12px 1px,linear-gradient(var(--brk),var(--brk)) top left/1px 12px,linear-gradient(var(--brk),var(--brk)) top right/12px 1px,linear-gradient(var(--brk),var(--brk)) top right/1px 12px,linear-gradient(var(--brk),var(--brk)) bottom left/12px 1px,linear-gradient(var(--brk),var(--brk)) bottom left/1px 12px,linear-gradient(var(--brk),var(--brk)) bottom right/12px 1px,linear-gradient(var(--brk),var(--brk)) bottom right/1px 12px;background-repeat:no-repeat;background-color:var(--glass);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-color:var(--hair);border-radius:2px;margin:0}
.homeview .ov-top{display:flex;flex-direction:column;gap:10px}
.homeview .findbox{pointer-events:auto;padding:14px 16px 16px}
.homeview .ov-top h1{font:700 clamp(1.7rem,1rem + 2vw,2.9rem)/1.02 var(--cond);text-transform:uppercase;letter-spacing:.01em;margin:0 0 12px;text-shadow:none}
.homeview .ov-top h1 em{color:inherit;font-style:normal;box-shadow:inset 0 -.14em 0 #ff6b3d}
.homeview .searchrow{margin:0}
.homeview .search input{min-height:46px;border-radius:2px;border:1px solid var(--hair);background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;font:500 .9rem var(--mono);letter-spacing:.02em;padding-left:14px}
.homeview .search input:focus{outline:none;border-color:var(--brk)}
.homeview .search input:focus-visible{outline:2px solid var(--brk);outline-offset:1px}
.homeview .search kbd{border-radius:2px;border-color:var(--hair)}
.homeview .nearme{min-height:46px;border-radius:2px;border:1px solid var(--brk);background:transparent;color:var(--txt);font:600 .72rem var(--mono);letter-spacing:.12em}
.homeview .nearme:hover,.homeview .nearme:focus-visible{background:var(--txt);color:var(--ink)}
.homeview .legend{pointer-events:auto;align-self:flex-start;display:inline-flex;padding:8px 12px;font:600 .62rem var(--mono);letter-spacing:.14em;color:var(--mute)}
.homeview .legend li{color:var(--txt)}
.homeview .legend i{width:8px;height:8px;border-radius:0}
.homeview .preview,.homeview .nearpanel{border-radius:2px;font-family:var(--mono);font-size:.82rem}
.homeview .preview h3,.homeview .nearpanel h2{font:700 1.15rem/1.1 var(--cond);text-transform:uppercase;letter-spacing:.04em}
.homeview .preview p{font-size:.76rem;letter-spacing:.02em}
.homeview .preview a{border-radius:2px;min-height:40px;font:600 .72rem var(--mono);text-transform:uppercase;letter-spacing:.1em}
.homeview .nearpanel li a{border-top:1px dashed var(--hair);font:500 .78rem var(--mono)}
.homeview .nearpanel li a:hover{background:transparent;text-decoration:underline}
.homeview .nearpanel i{border-radius:0;width:8px;height:8px}
.hud.homeview .below.frame{background:linear-gradient(var(--brk),var(--brk)) top left/12px 1px,linear-gradient(var(--brk),var(--brk)) top left/1px 12px,linear-gradient(var(--brk),var(--brk)) top right/12px 1px,linear-gradient(var(--brk),var(--brk)) top right/1px 12px,linear-gradient(var(--brk),var(--brk)) bottom left/12px 1px,linear-gradient(var(--brk),var(--brk)) bottom left/1px 12px,linear-gradient(var(--brk),var(--brk)) bottom right/12px 1px,linear-gradient(var(--brk),var(--brk)) bottom right/1px 12px;background-repeat:no-repeat;background-color:var(--paper);border:1px solid var(--hair);border-radius:2px}
.homeview .below .intro{font:400 .88rem/1.5 var(--body);color:var(--mute)}
.homeview .spot-list a{border-radius:2px;border-color:var(--hair);background:transparent;font:500 .74rem var(--mono)}
.homeview .spot-list a:hover,.homeview .spot-list .hl a{border-color:var(--brk);transform:none}
.homeview .spot-list strong{font:600 1rem var(--cond);letter-spacing:.02em}
.homeview .spot-list span{text-transform:uppercase;letter-spacing:.08em;font-size:.62rem;color:var(--mute)}
.homeview .spot-list i{border-radius:0;width:8px;height:8px}
.homeview .hudbar{margin:16px}
.js .lock .homeview .homebar{position:fixed;z-index:6;left:clamp(16px,4vw,40px);right:clamp(16px,4vw,40px);bottom:14px;margin:0;padding:8px 14px;pointer-events:none}
.js .lock .homeview:after{position:fixed}
.boot .homeview .legend{animation-delay:.2s}.boot .homeview .homebar{animation-delay:.35s}
@media (max-width:760px){.js .lock .homeview .homebar p:nth-child(n+2):not(:last-child){display:none}.homeview .ov-top h1{font-size:1.6rem}}
@media (prefers-reduced-motion:reduce){.homeview .spot-list a{transition:none}}
/* v25 fixes: bottom strip (html carries both .js and .lock), browse button as HUD control */
html.lock .homeview .homebar{position:fixed;z-index:6;left:clamp(16px,4vw,40px);right:clamp(16px,4vw,40px);bottom:14px;margin:0;padding:10px 210px 10px 14px;pointer-events:none;display:flex;flex-wrap:wrap;gap:4px 22px}
html.lock .homeview:after{position:fixed}
.homeview .cue{z-index:7;border-radius:2px;border:1px solid var(--brk);background:var(--glass);font:600 .7rem var(--mono);letter-spacing:.12em;text-transform:uppercase}
html.lock .homeview .cue{left:auto;right:calc(clamp(16px,4vw,40px) + 8px);bottom:20px;transform:none}
.homeview .cue:hover,.homeview .cue:focus-visible{background:var(--txt);color:var(--ink)}
@media (max-width:760px){html.lock .homeview .homebar{padding:8px 12px}html.lock .homeview .homebar p:nth-child(2),html.lock .homeview .homebar p:nth-child(3){display:none}html.lock .homeview .cue{right:auto;left:50%;transform:translateX(-50%);bottom:70px}}
/* mobile full sheet: nothing peeks above the sticky grab bar */
@media (max-width:760px){.lock .spot-panel[data-sheet=full] .grab-wrap{box-shadow:0 -40px 0 var(--paper)}}
