body{overflow:hidden}.viewport{position:fixed;inset:0;overflow:hidden;cursor:grab;background:var(--bg-deep)}.viewport:active{cursor:grabbing}.map{position:absolute;left:50%;top:50%;width:1600px;height:1000px;transform:translate(-50%,-50%) scale(1);transition:transform .6s cubic-bezier(.3,.7,.2,1)}.map svg{width:1600px;height:1000px;display:block}.sea{fill:var(--bg-deep)}.grat line{stroke:#7896be0f;stroke-width:1}.rhumb line{stroke:#e8b84b0e;stroke-width:1}.sound text{font-family:var(--mono);font-size:11px;fill:#7896be38}.coasthalo{fill:none;stroke:#e8b84b2e;stroke-width:7;filter:url(#coastglow)}.bands path{stroke:none}.iso{fill:none;stroke:#e8b84b21;stroke-width:.8}.iso.idx{stroke:#e8b84b42;stroke-width:1}.coast{fill:none;stroke:var(--gold);stroke-width:1.5;stroke-linejoin:round}.rivers path{fill:none;stroke:#639ce88c;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}.feat{font-family:var(--serif);font-style:italic;font-size:15px;fill:var(--gold);opacity:.62;text-anchor:middle;letter-spacing:.04em}.rsub{font-family:var(--mono);font-size:10px;letter-spacing:.3em;fill:var(--gold);opacity:.7;text-anchor:middle}.rlabel{font-family:var(--serif);font-size:27px;fill:var(--ink);opacity:.42;text-anchor:middle;letter-spacing:.03em}.road{fill:none;stroke:#e7e8ec1a;stroke-width:1;stroke-dasharray:1 5}.place{cursor:pointer}.leader{stroke:#e8b84b80;stroke-width:.8;stroke-dasharray:1.5 2.5}.city .ring{fill:var(--land);stroke:var(--gold);stroke-width:1.6}.city .core{fill:var(--gold)}.city .nm{font-family:var(--serif);font-size:19px;fill:var(--ink)}.city .dm{font-family:var(--mono);font-size:8px;letter-spacing:.14em;text-transform:uppercase;fill:var(--gold);opacity:.9}.city:hover .ring{stroke-width:2.6}.city:hover .core{r:7}.town .ring{fill:none;stroke:var(--muted);stroke-width:1.2}.town .core{fill:var(--ink-soft)}.town .tnm{font-family:var(--sans);font-weight:300;font-size:12.5px;fill:var(--ink-soft)}.town:hover .tnm{fill:var(--ink)}.town:hover .ring{stroke:var(--gold)}.place.dim{opacity:.22;transition:opacity .5s}.place.lit .ring{stroke:var(--gold-light);stroke-width:2.6;filter:drop-shadow(0 0 9px rgba(232,184,75,.6))}.place.lit .tnm,.place.lit .nm{fill:var(--ink)}.route{fill:none;stroke:url(#rg);stroke-width:3;stroke-linecap:round;pathLength:1;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 1.1s ease}.route.draw{stroke-dashoffset:0}.stop{fill:var(--gold);stroke:#081424;stroke-width:1}.stopn{font-family:var(--mono);font-size:12px;fill:#081424;font-weight:600}.rose .rring{fill:none;stroke:#e8b84b66;stroke-width:1}.rose .rstar{fill:#e8b84b24;stroke:var(--gold);stroke-width:1;stroke-linejoin:round}.rose .rn{font-family:var(--mono);font-size:12px;fill:var(--gold);letter-spacing:.1em}.neat rect{fill:none;stroke:#e8b84b80;stroke-width:1}.neat line{stroke:#e8b84b73;stroke-width:1}.cartouche{position:fixed;top:34px;left:42px;z-index:20;max-width:366px;background:linear-gradient(160deg,#002766d1,#060f1dc7);border:1px solid rgba(232,184,75,.4);border-radius:4px;padding:22px 26px;backdrop-filter:blur(7px);box-shadow:0 0 0 1px #060f1d99,0 18px 50px #00000080}.cartouche:before{content:"";position:absolute;inset:5px;border:1px solid rgba(232,184,75,.18);border-radius:2px;pointer-events:none}.brand{font-family:var(--serif);font-size:24px;margin-bottom:7px}.d{color:var(--gold)}.eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:none;color:var(--gold);margin-bottom:12px}.cartouche h1{font-family:var(--serif);font-weight:400;font-size:32px;line-height:1.06}.cartouche h1 em{font-style:italic;color:var(--gold)}.sub{margin-top:11px;color:var(--ink-soft);font-size:13.5px;line-height:1.55}.rule{height:1px;background:linear-gradient(90deg,rgba(232,184,75,.5),transparent);margin:18px 0 14px}.cart-rule{height:1px;background:linear-gradient(90deg,rgba(232,184,75,.4),transparent);margin:16px 0 12px}.way-h{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:10px}.lenses{display:flex;flex-wrap:wrap;gap:7px}.lens{font-family:var(--mono);font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft);background:#060f1d80;padding:9px 12px;border-radius:24px;cursor:pointer;transition:.2s;box-shadow:inset 0 0 0 1px var(--rule)}.lens:hover{color:var(--ink);box-shadow:inset 0 0 0 1px #e8b84b80}.lens.on{color:#081424;background:linear-gradient(90deg,var(--play-a),var(--play-b));box-shadow:none;font-weight:500}.framing{margin-top:14px;font-family:var(--serif);font-style:italic;font-size:15.5px;color:var(--gold-light);line-height:1.45;min-height:1.45em}.signin{position:fixed;top:34px;right:42px;z-index:20;font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);text-decoration:none;border:1px solid var(--rule);padding:9px 15px;border-radius:2px;background:#060f1d99}.signin:hover{border-color:#e8b84b80;color:var(--ink)}.legend{position:fixed;bottom:26px;left:42px;z-index:20;width:256px;background:linear-gradient(160deg,#002766bd,#060f1dc7);border:1px solid rgba(232,184,75,.28);border-radius:4px;padding:15px 17px;backdrop-filter:blur(7px)}.leg-h{font-family:var(--mono);font-size:9.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--gold);margin-bottom:11px}.leg-row{display:flex;align-items:center;gap:9px;margin-bottom:8px}.swatch{width:18px;height:18px;flex:none}.leg-row span{font-family:var(--sans);font-weight:300;font-size:11.5px;color:var(--ink-soft)}.scale{margin-top:12px;padding-top:11px;border-top:1px solid var(--rule)}.scalebar{display:flex;height:6px}.scalebar span{flex:1;border:1px solid rgba(232,184,75,.55)}.scalebar span:nth-child(odd){background:#e8b84b8c}.scale-l{display:flex;justify-content:space-between;margin-top:4px;font-family:var(--mono);font-size:8.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.plate{margin-top:11px;font-family:var(--mono);font-size:8.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.hint{position:fixed;bottom:28px;left:50%;transform:translate(-50%);z-index:20;font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
