
:root{
  --navy-deep:#0A1428; --navy-panel:#13233F; --navy-line:#2E4A7D; --navy-line-soft:#1D3357;
  --ink:#EAF0FA; --ink-muted:#8FA3C8; --signal:#E8734A; --signal-deep:#B84E2C; --warn:#E8B54A;
}
*{margin:0;padding:0;box-sizing:border-box}
body{background:var(--navy-deep);color:var(--ink);font-family:'Archivo',sans-serif;min-height:100vh;overflow-x:hidden}
body::before{content:'';position:fixed;inset:0;pointer-events:none;background-image:radial-gradient(1px 1px at 12% 22%,rgba(234,240,250,0.5) 50%,transparent 51%),radial-gradient(1px 1px at 78% 12%,rgba(234,240,250,0.35) 50%,transparent 51%),radial-gradient(1.5px 1.5px at 55% 45%,rgba(234,240,250,0.3) 50%,transparent 51%),radial-gradient(1px 1px at 32% 72%,rgba(234,240,250,0.4) 50%,transparent 51%),radial-gradient(1px 1px at 88% 62%,rgba(234,240,250,0.3) 50%,transparent 51%),radial-gradient(1.5px 1.5px at 68% 85%,rgba(234,240,250,0.25) 50%,transparent 51%),radial-gradient(1px 1px at 8% 88%,rgba(234,240,250,0.35) 50%,transparent 51%),radial-gradient(1px 1px at 42% 8%,rgba(234,240,250,0.3) 50%,transparent 51%);z-index:0}
.frame{position:relative;z-index:1}
.hero-pitch{text-align:center;color:var(--ink-muted);font-size:0.95rem;line-height:1.6;max-width:42ch;margin:0 auto 1.25rem}
.hero-pitch strong{color:var(--ink);font-weight:500}
.hint{font-family:'IBM Plex Mono',monospace;font-size:0.66rem;letter-spacing:0.12em;color:var(--navy-line);text-align:center;margin-top:0.4rem}
.index-section{width:100%;margin-top:2.5rem}
.index-section summary{font-family:'IBM Plex Mono',monospace;font-size:0.7rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--ink-muted);text-align:center;cursor:pointer;list-style:none;padding:0.6rem}
.index-section summary::after{content:' +'}
.index-section[open] summary::after{content:' −'}
.index-region{font-family:'IBM Plex Mono',monospace;font-size:0.66rem;letter-spacing:0.2em;text-transform:uppercase;color:var(--signal);margin:1rem 0 0.4rem}
.index-links{display:flex;flex-wrap:wrap;gap:0.4rem 1rem}
.index-links a{color:var(--ink-muted);font-size:0.85rem;text-decoration:none;border-bottom:1px dotted var(--navy-line)}
.index-links a:hover{color:var(--ink);border-bottom-color:var(--signal)}
.frame{max-width:720px;margin:0 auto;padding:2rem 1.25rem 4rem;display:flex;flex-direction:column;align-items:center;min-height:100vh}
.masthead{width:100%;display:flex;justify-content:space-between;align-items:baseline;margin-bottom:1rem;gap:1rem}
.wordmark{font-family:'Fraunces',serif;font-weight:600;font-size:1.1rem;color:var(--ink);white-space:nowrap}
.wordmark span{color:var(--signal)}
.coords{font-family:'IBM Plex Mono',monospace;font-size:0.7rem;color:var(--ink-muted);letter-spacing:0.05em;text-align:right}
.filters{display:flex;gap:0.5rem;flex-wrap:wrap;justify-content:center;margin-bottom:0.75rem}
select{background:var(--navy-panel);color:var(--ink-muted);border:1px solid var(--navy-line-soft);border-radius:999px;padding:0.45rem 0.9rem;font-family:'Archivo',sans-serif;font-size:0.82rem;cursor:pointer;appearance:none}
select:focus-visible{outline:2px solid var(--signal);outline-offset:2px}
#globeViz{width:min(92vw,460px);height:min(92vw,460px);cursor:grab;position:relative}
#globeViz:active{cursor:grabbing}
.globe-fallback{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--ink-muted);font-size:0.9rem;border:1px dashed var(--navy-line);border-radius:50%}
.dest-eyebrow{font-family:'IBM Plex Mono',monospace;font-size:0.68rem;letter-spacing:0.28em;color:var(--ink-muted);text-transform:uppercase;margin:0.5rem 0;text-align:center}
.dest-name{font-family:'Fraunces',serif;font-weight:500;font-size:clamp(1.9rem,7vw,3rem);line-height:1.08;text-align:center;color:var(--ink);transition:opacity 0.35s}
.dest-country{font-size:0.95rem;color:var(--ink-muted);text-align:center;margin-top:0.3rem;transition:opacity 0.35s}
.tags{display:flex;gap:0.5rem;justify-content:center;margin-top:0.75rem;flex-wrap:wrap}
.tag{font-family:'IBM Plex Mono',monospace;font-size:0.68rem;letter-spacing:0.08em;color:var(--ink-muted);border:1px solid var(--navy-line-soft);border-radius:999px;padding:0.3rem 0.8rem}
.actions{display:flex;gap:0.6rem;margin:1.5rem 0 2rem;flex-wrap:wrap;justify-content:center}
button{font-family:'Archivo',sans-serif;font-size:0.92rem;font-weight:500;cursor:pointer;border-radius:999px;padding:0.75rem 1.5rem;transition:transform 0.12s,background 0.2s,border-color 0.2s}
button:active{transform:scale(0.97)}
button:focus-visible{outline:2px solid var(--signal);outline-offset:3px}
.btn-spin{background:var(--signal);color:#FFF6F1;border:1px solid var(--signal)}
.btn-spin:hover{background:var(--signal-deep);border-color:var(--signal-deep)}
.btn-ghost{background:transparent;color:var(--ink-muted);border:1px solid var(--navy-line)}
.btn-ghost:hover{border-color:var(--ink-muted);color:var(--ink)}
.briefing{width:100%;display:grid;grid-template-columns:1fr;gap:0.75rem;opacity:0;transform:translateY(12px);transition:opacity 0.5s,transform 0.5s}
.briefing.show{opacity:1;transform:translateY(0)}
@media(min-width:640px){.briefing{grid-template-columns:1fr 1fr}}
.card{background:var(--navy-panel);border:1px solid var(--navy-line-soft);border-radius:14px;padding:1.1rem 1.25rem}
.card-label{font-family:'IBM Plex Mono',monospace;font-size:0.66rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--signal);margin-bottom:0.45rem}
.card p{font-size:0.93rem;line-height:1.65;color:var(--ink)}
.card.warn-card{grid-column:1/-1;border-color:rgba(232,181,74,0.35)}
.card.warn-card .card-label{color:var(--warn)}
.commit{grid-column:1/-1;display:none;grid-template-columns:1fr;gap:0.75rem}
@media(min-width:640px){.commit{grid-template-columns:1fr 1fr}}
.commit.open{display:grid}
.commit-btn{grid-column:1/-1;justify-self:center}
.toast{position:sticky;bottom:1rem;background:var(--navy-panel);border:1px solid var(--navy-line);border-radius:999px;padding:0.6rem 1.2rem;font-size:0.85rem;color:var(--ink);opacity:0;transition:opacity 0.3s;pointer-events:none;margin-top:1rem}
.toast.show{opacity:1}
.footer{margin-top:auto;padding-top:3rem;font-size:0.78rem;color:var(--ink-muted);text-align:center;line-height:1.7;max-width:52ch}
.passport{width:100%;margin-top:2rem;display:none}
.passport.has{display:block}
.passport h2{font-family:'IBM Plex Mono',monospace;font-size:0.68rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--ink-muted);text-align:center;margin-bottom:0.75rem;font-weight:400}
.stamps{display:flex;flex-wrap:wrap;gap:0.5rem;justify-content:center}
.stamp{font-family:'IBM Plex Mono',monospace;font-size:0.72rem;color:var(--signal);border:1px dashed var(--signal-deep);border-radius:6px;padding:0.35rem 0.7rem;transform:rotate(-2deg);cursor:pointer;background:transparent}
.stamp:nth-child(even){transform:rotate(1.5deg)}
.stamp:hover{border-style:solid}
.passport-meta{text-align:center;font-size:0.75rem;color:var(--ink-muted);margin-top:0.6rem}
.passport-meta button{font-size:0.72rem;padding:0.2rem 0.7rem;background:none;border:none;color:var(--ink-muted);text-decoration:underline;cursor:pointer}

/* ---- destination pages ---- */
.page-frame{max-width:720px;margin:0 auto;padding:2rem 1.25rem 4rem;position:relative;z-index:1}
.back-link{font-family:'IBM Plex Mono',monospace;font-size:0.72rem;letter-spacing:0.15em;color:var(--ink-muted);text-decoration:none}
.back-link:hover{color:var(--signal)}
.dest-header{text-align:center;margin:2rem 0}
.dest-header h1{font-family:'Fraunces',serif;font-weight:500;font-size:clamp(2.2rem,8vw,3.4rem);line-height:1.05;color:var(--ink)}
.dest-header .country{color:var(--ink-muted);margin-top:0.4rem}
.dest-header .coords-line{font-family:'IBM Plex Mono',monospace;font-size:0.72rem;color:var(--navy-line);letter-spacing:0.1em;margin-top:0.6rem}
.section-title{font-family:'IBM Plex Mono',monospace;font-size:0.7rem;letter-spacing:0.26em;text-transform:uppercase;color:var(--ink-muted);margin:2.5rem 0 0.9rem;text-align:center}
.dispatch-body{background:var(--navy-panel);border:1px solid var(--navy-line-soft);border-radius:14px;padding:1.5rem 1.5rem}
.dispatch-body p{font-size:0.98rem;line-height:1.8;color:var(--ink);margin-bottom:1rem}
.dispatch-body p:last-child{margin-bottom:0}
.dispatch-body em{color:var(--ink-muted)}
.empty-state{text-align:center;color:var(--ink-muted);font-size:0.9rem;border:1px dashed var(--navy-line-soft);border-radius:14px;padding:1.5rem;line-height:1.7}
.risk-body{background:var(--navy-panel);border:1px solid rgba(232,181,74,0.35);border-radius:14px;padding:1.5rem}
.risk-body p{font-size:0.95rem;line-height:1.75;color:var(--ink);margin-bottom:0.9rem}
.risk-body p:last-child{margin-bottom:0}
.risk-body strong{color:var(--warn);font-weight:500}
.dispatch-list{list-style:none;display:grid;gap:0.75rem}
.dispatch-list a{display:block;background:var(--navy-panel);border:1px solid var(--navy-line-soft);border-radius:14px;padding:1.1rem 1.25rem;text-decoration:none;color:var(--ink)}
.dispatch-list a:hover{border-color:var(--navy-line)}
.dispatch-list .d-title{font-family:'Fraunces',serif;font-size:1.15rem}
.dispatch-list .d-meta{font-family:'IBM Plex Mono',monospace;font-size:0.68rem;color:var(--ink-muted);letter-spacing:0.1em;margin-top:0.3rem}
.page-actions{display:flex;gap:0.6rem;justify-content:center;margin:2rem 0;flex-wrap:wrap}
.byline{font-family:'IBM Plex Mono',monospace;font-size:0.66rem;letter-spacing:0.15em;color:var(--ink-muted);text-align:center;margin-top:0.75rem}
