.world-map{--map-ground:#dddcca;--map-ink:#475a49;--map-roof:#6d8979;--map-wall:#e0d0ad;--map-water:#719bab;--map-tree:#607e62;--map-window:#ecd699;--map-road:#c6c1ac;--map-grid:#a7b199;--map-bg-roof:#939e83;--map-bg-wall:#c2c9b5;border:1px solid #ccd5c8;border-radius:16px;overflow:hidden;background:#f5f4ee;color:#25372f;margin-top:18px;min-width:0}
.world-map[data-map-theme="fantasy"]{--map-ground:#d7d5b2;--map-roof:#8d6752;--map-wall:#e1ca9b;--map-tree:#5c7950;--map-bg-roof:#9f8869;--map-bg-wall:#c9ba95}
.world-map[data-map-theme="wasteland"]{--map-ground:#bbbfa8;--map-roof:#65796c;--map-wall:#a4a58e;--map-tree:#68785b;--map-road:#a2a38e;--map-bg-roof:#808f79;--map-bg-wall:#a4ad98}
.world-map[data-map-theme="scifi"]{--map-ground:#c4d4d6;--map-roof:#67939b;--map-wall:#d1e1df;--map-window:#8bc8c5;--map-tree:#6e9890;--map-road:#a9bfc2;--map-bg-roof:#789fa5;--map-bg-wall:#b0c5c8}
.map-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 22px;border-bottom:1px solid #ccd5c8}.map-toolbar p{font-size:13px;margin:5px 0 0;color:#66766a}.map-toolbar .eyebrow{font-size:10px}.map-tools{display:flex;align-items:center;gap:5px}.map-tools button{font-size:20px;min-width:36px;width:36px;height:36px;padding:0}.map-tools select{width:auto;max-width:200px;margin:0;padding:8px;font-size:12px}
.map-viewport{height:430px;overflow:auto;overscroll-behavior:contain;background:var(--map-ground);scrollbar-width:thin;touch-action:pan-x pan-y;position:relative}.map-scale{position:relative;margin:auto;min-height:100%}.map-canvas{position:relative;transform-origin:0 0;background:radial-gradient(ellipse at 20% 30%,#ffffff16,transparent 55%),repeating-linear-gradient(0deg,transparent 0 35px,#00000005 36px 37px),var(--map-ground)}.map-history-route{fill:none;stroke:var(--map-window);stroke-width:2;stroke-dasharray:3 9;opacity:.45;stroke-linecap:round}.map-connections{position:absolute;inset:0;z-index:2;pointer-events:none;overflow:visible}.map-route{fill:none;stroke:var(--map-ink);stroke-width:4;opacity:.65;stroke-linecap:round}.map-route-path{stroke-dasharray:7 7;stroke-width:3}.map-route-passage{stroke-dasharray:2 5;stroke-width:3}.map-route-water{stroke:var(--map-water);stroke-width:7}.map-route-rail{stroke-dasharray:3 3}
.world-map .map-marker{appearance:none;-webkit-appearance:none;position:absolute;width:210px;height:200px;padding:0;border:0;border-radius:18px;background:radial-gradient(ellipse,var(--map-ground) 48%,transparent 73%);box-shadow:none;color:var(--map-ink);isolation:isolate;overflow:hidden}.world-map .map-marker:hover{transform:none;background:radial-gradient(ellipse,#ffffff26 10%,var(--map-ground) 50%,transparent 73%)}.map-marker:focus-visible{outline:3px solid #478267;outline-offset:-4px}.map-scenery{position:absolute;inset:0;width:100%;height:100%;opacity:.65;z-index:-1}.map-object-wrap{position:absolute;top:51px;left:73px;display:block;width:64px;height:64px;z-index:3;filter:drop-shadow(0 5px 3px #00000025)}.map-object{width:64px;height:64px;fill:none;stroke:var(--map-ink);stroke-width:1.5;stroke-linejoin:round;stroke-linecap:round}.map-marker-name{position:absolute;top:119px;left:18px;right:18px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;max-height:40px;font-size:13px;font-weight:650;line-height:1.45;background:var(--map-ground);border:1px solid #00000013;border-radius:6px;padding:3px 5px;z-index:3}.map-selected .map-marker-name{box-shadow:0 0 0 2px #4c866a}.map-visited .map-marker-name:before{content:"✓ ";color:var(--map-ink)}.map-current .map-marker-name:before{content:'● ';color:#467b5d}.map-base-badge{position:absolute;right:-9px;top:0;border-radius:50%;background:#d6bf86;color:#3c4431;font-size:17px;line-height:22px;width:22px;text-shadow:none}.map-tokens{position:absolute;top:166px;left:0;right:0;display:flex;justify-content:center;gap:4px;z-index:3}.map-token{display:inline-flex;justify-content:center;align-items:center;width:25px;height:25px;border-radius:50%;background:#426d58;color:#f1f2e5;border:2px solid #e4dfbe;font-size:11px;box-shadow:0 2px 3px #0003}.map-token:nth-child(2n){background:#8a6b47}.map-token-stale{opacity:.5}
.map-roof,.map-background-roof{fill:var(--map-roof)}.map-wall,.map-tent{fill:var(--map-wall)}.map-window,.map-sign,.map-flame{fill:var(--map-window)}.map-door{fill:var(--map-ink)}.map-tree{fill:var(--map-tree);stroke:var(--map-tree)}.map-water{stroke:var(--map-water);stroke-width:3}.map-rock{fill:var(--map-roof)}.map-snow{fill:#dfdfcc}.map-awning{fill:var(--map-roof)}.map-highlight{stroke:var(--map-window);stroke-width:3}.map-flame{stroke:#ad7e4b}.map-log{stroke-width:4}.map-danger{stroke:#e7c69c;stroke-width:3}.map-crack{stroke-width:1.5;opacity:.7}.map-smoke{opacity:.5;stroke-width:3}.map-background-building{fill:var(--map-bg-wall);stroke:var(--map-bg-roof);stroke-width:.5}.map-background-roof{fill:var(--map-bg-roof);stroke:none}.map-street-edge{stroke:var(--map-bg-roof);stroke-width:16;opacity:.45}.map-street{stroke:var(--map-road);stroke-width:12}.map-car{fill:var(--map-bg-roof);stroke-width:0}.map-floor{fill:var(--map-road);stroke-width:3}.map-interior-wall{stroke-width:4}
.map-caption{display:flex;align-items:center;gap:16px;flex-wrap:wrap;font-size:11px;padding:12px 22px;border-top:1px solid #ccd5c8;color:#66766a}.map-caption details{margin-left:auto}.map-caption summary{cursor:pointer}.map-caption details[open]{width:100%;margin-left:0}.map-caption p{line-height:1.6;font-size:12px;margin:9px 0 2px;max-width:650px}.map-detail{border-top:1px solid #ccd5c8;padding:22px}.map-place-top{display:flex;justify-content:space-between;align-items:center;gap:18px}.map-place-top h3{font-family:SerifLocal,Georgia,serif;font-size:26px;margin:5px 0 8px;overflow-wrap:anywhere;line-height:1.2}.map-place-top .map-object{flex:0 0 52px;width:52px;height:52px}.map-description{white-space:pre-wrap;font-size:14px;line-height:1.7;margin:10px 0 16px;overflow-wrap:anywhere}.map-tags{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}.map-tags span{background:#e2e9dc;padding:4px 8px;border-radius:20px;font-size:11px}.map-actor-list{font-size:12px;color:#49785c}.map-journey{border-top:1px solid #ccd5c8;padding:14px 22px}.map-journey summary{font-size:13px;cursor:pointer}.map-journey ol{display:flex;gap:22px;overflow-x:auto;margin:10px 0 0;padding:8px 0 8px 22px;scrollbar-width:thin}.map-journey li{flex:0 0 170px;padding-left:2px;font-size:11px;color:var(--map-ink)}.map-journey button{text-align:left;width:100%;white-space:normal}.map-journey b,.map-journey small{display:block;font-size:12px;line-height:1.4}.map-journey small{font-size:11px;font-weight:400;opacity:.7;margin-top:4px}.map-directory{border-top:1px solid #ccd5c8;padding:16px 22px}.map-directory>summary{font-size:13px;cursor:pointer}.map-directory>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:14px}.world-map .map-directory-place{display:flex;gap:12px;align-items:center;text-align:left;min-width:0;padding:10px;border:1px solid #ccd5c8;border-radius:8px;box-shadow:none;background:transparent}.map-directory-place svg{width:32px;height:32px;flex:0 0 32px}.map-directory-place span{min-width:0}.map-directory-place b{display:block;font-size:12px;overflow-wrap:anywhere}.map-directory-place small{font-size:11px;color:#778174;display:block;margin-top:4px}.map-empty{text-align:center;padding:45px 20px;color:#74836e}.map-empty>span{font-size:36px}.map-empty h3{font-family:Georgia,serif;font-size:24px;margin:12px}.map-empty p{font-size:13px}
html[data-theme="dark"] .world-map{--map-ground:#25352c;--map-ink:#a2b59a;--map-roof:#658a76;--map-wall:#8f9374;--map-water:#597c84;--map-tree:#3f6150;--map-window:#ceb47c;--map-road:#35493b;--map-bg-roof:#526755;--map-bg-wall:#394d3e;background:#17261f;color:#e2e8df;border-color:#354b3e}
html[data-theme="dark"] .world-map[data-map-theme="fantasy"]{--map-ground:#303925;--map-roof:#957c58;--map-wall:#aaa079;--map-tree:#4c6842;--map-bg-roof:#656e4a;--map-bg-wall:#454e32}
html[data-theme="dark"] .world-map[data-map-theme="wasteland"]{--map-ground:#283327;--map-roof:#63785c;--map-wall:#7c8166;--map-tree:#40533a;--map-road:#394333;--map-bg-roof:#536147;--map-bg-wall:#394633;--map-window:#bca77d}
html[data-theme="dark"] .world-map[data-map-theme="scifi"]{--map-ground:#23353a;--map-ink:#9dbebc;--map-roof:#638d96;--map-wall:#8ba3a8;--map-window:#93d0cb;--map-tree:#3f6969;--map-road:#354c50;--map-bg-roof:#4e6d73;--map-bg-wall:#344c51}
html[data-theme="dark"] .world-map :is(.map-toolbar,.map-caption,.map-detail,.map-directory,.map-directory-place,.map-journey){border-color:#354b3e}html[data-theme="dark"] .map-toolbar p,html[data-theme="dark"] .map-caption,html[data-theme="dark"] .map-directory-place small{color:#9bad9b}html[data-theme="dark"] .map-tags span{background:#2c4435}html[data-theme="dark"] .map-actor-list{color:#93baa0}html[data-theme="dark"] .map-selected .map-marker-name{box-shadow:0 0 0 2px #92bb9b}
@media(max-width:750px){.map-toolbar{padding:14px;align-items:flex-start;flex-wrap:wrap}.map-tools{margin-left:auto}.map-tools select{max-width:135px}.map-viewport{height:330px}.map-detail,.map-directory,.map-journey{padding:16px}.map-caption{padding:10px 14px;gap:12px}.map-place-top h3{font-size:23px}.map-directory>div{grid-template-columns:1fr}.map-description{font-size:14px}.world-map{margin-top:12px;border-radius:12px}}
@media(prefers-reduced-motion:reduce){.world-map *{scroll-behavior:auto!important}}
