.world-map-window{background:#dce6e9;border:4px solid #687d8d;border-radius:12px;overflow:hidden;box-shadow:inset 0 0 0 2px #fff;color:#23323a;margin-bottom:64px}
.world-window-title{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:12px 20px;background:linear-gradient(#fcfdfd,#d1e0e7);border-bottom:3px solid #899fac;font-size:17px;color:#172831}
.world-window-title strong{letter-spacing:1px}.world-window-title span{font-size:14px}
.world-map-toolbar{display:flex;flex-wrap:wrap;gap:12px;align-items:center;padding:14px 20px;background:#eff3f4;border-bottom:1px solid #9bafb7}
.world-map-toolbar label{display:flex;gap:10px;align-items:center;font-size:14px}.world-map-toolbar select{font:inherit;background:#fff;color:#23323a;border:1px solid #8a9da6;border-radius:6px;padding:8px}
.world-map-toolbar .quiet-button{background:#d3dfe5;color:#23323a;padding:8px 12px;border-radius:6px}
.world-map-body{padding:20px;background:#c0d3dc}.world-map-canvas{display:block;width:100%;height:auto;max-width:960px;margin:0 auto;image-rendering:pixelated;background:#c0d3dc}
.world-region-link{cursor:pointer;opacity:.01;transition:opacity .15s}.world-region-link:hover,.world-region-link:focus{opacity:.8;outline:none}
.world-spot-touch{fill:transparent}.world-spot-dot{fill:#f8e868;stroke:#643e27;stroke-width:1.2}.world-spot-town .world-spot-dot{fill:#e88044;stroke:#fff4b8;stroke-width:1.5}
.world-spot:hover .world-spot-dot,.world-spot:focus .world-spot-dot{fill:#fff;stroke:#ad411e;stroke-width:2;filter:drop-shadow(0 0 3px #fff)}
.world-map-caption{padding:10px 20px;background:#eff3f4;color:#51646f;font-size:12px;line-height:1.5}
.world-town-heading{display:flex;align-items:center;gap:20px;flex-wrap:wrap;margin-bottom:20px}.world-town-heading h2{margin:0;font-size:24px}.world-detail-link{margin-left:auto;text-decoration:underline}
.world-town-scene{height:720px;display:flex;align-items:center;justify-content:center;background:#afc5cf;border-radius:8px;overflow:hidden}.world-town-scene img{width:100%;height:100%;max-width:none;max-height:none;object-fit:contain;image-rendering:pixelated}
.world-connected-places{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px;padding:0;overflow:visible}.world-connected-places a{padding:8px 12px;background:#eff3f4;border-radius:6px;font-size:14px}.world-connected-places a[aria-current]{background:#f5dd84}
.world-route-section>h2{font-size:22px;margin:0 0 24px}.world-route-form{display:flex;gap:20px;flex-wrap:wrap;align-items:end}.world-route-form label{display:grid;gap:10px;flex:1;min-width:200px;color:var(--muted)}.world-route-form input{font:inherit;width:100%;padding:14px 16px;background:var(--elevation-1);color:var(--ink);border:0;border-radius:12px}.world-route-form button{min-height:48px}
.world-route-steps{display:flex;gap:12px;flex-wrap:wrap;list-style:none;padding:0;margin:20px 0}.world-route-steps li{display:flex;align-items:center;gap:12px}.world-route-steps li+li:before{content:'→';color:var(--muted)}.world-route-steps a{display:block;background:var(--elevation-1);padding:12px 16px;border-radius:10px}.world-route-summary,#world-route-result>p:first-child{margin-top:24px}
.world-map-window:fullscreen{overflow:auto;width:100vw;height:100vh}.world-map-window:fullscreen .world-map-canvas{max-width:none;height:calc(100vh - 180px)}
@media(max-width:640px){.world-map-body{padding:8px}.world-map-toolbar{padding:12px;gap:8px}.world-window-title{padding:12px}.world-town-scene{height:360px}.world-map-window{margin-bottom:40px}.world-route-form{gap:16px}.world-town-heading{gap:12px}.world-town-heading h2{font-size:20px}.world-detail-link{margin-left:0}}

.world-korean-label{pointer-events:none}.world-korean-label rect{fill:#f5e1ac;stroke:#b78142;stroke-width:.5}.world-korean-label text{fill:#3f2919;font-family:system-ui,sans-serif;font-weight:750;font-size:12px}.world-korean-label--sea rect{fill:#86bed6;stroke:none}.world-korean-label--sea text{fill:white;font-style:italic;font-size:13px;paint-order:stroke;stroke:#456b7b;stroke-width:.5px}.world-korean-label--island rect{fill:#a9ce55;stroke:none}.world-korean-label--island text{font-size:11px;fill:#fff;paint-order:stroke;stroke:#466b2e;stroke-width:.8px}.world-korean-label--title rect{fill:#e9c46c;stroke:none}.world-korean-label--title text{font-size:23px;fill:#58350f}

.world-map-body{position:relative}.world-map-hover{position:absolute;z-index:20;width:280px;max-width:calc(100% - 16px);max-height:360px;overflow:hidden;background:#202020;color:#fff;border:1px solid #666;border-radius:12px;box-shadow:0 8px 24px #0008;padding:16px;pointer-events:none}.world-map-hover[hidden]{display:none}.world-map-hover-entry+ .world-map-hover-entry{margin-top:16px}.world-map-hover-entry strong{display:block;font-size:16px;margin-bottom:12px}.world-map-hover-entry img{display:block;max-width:100%;max-height:180px;object-fit:contain;width:auto;height:auto;margin:auto;image-rendering:pixelated}.world-map-hover-entry>span{font-size:12px;color:#aaa}

.world-map-layout{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:32px;align-items:start}.world-map-layout .world-map-window{border:0;box-shadow:none;background:none;color:var(--ink);overflow:visible;margin:0;border-radius:0;min-width:0}.world-map-layout .world-map-body{padding:0;background:none}.world-map-layout .world-map-canvas{max-width:none;background:none}.world-map-back{display:inline-block;margin-bottom:16px;color:var(--muted);font-size:14px}.world-map-layout .world-route-section{padding:24px;border-radius:20px;background:var(--elevation-1);position:sticky;top:24px;min-width:0}.world-map-layout .world-route-form{display:grid;grid-template-columns:1fr;gap:20px}.world-map-layout .world-route-form label{min-width:0}.world-map-layout .world-route-form input:not([type=checkbox]){background:var(--elevation-2)}.world-map-layout .world-route-form .world-route-option{display:flex;align-items:center;gap:10px;font-size:14px}.world-route-option input{width:16px;height:16px}.world-map-layout .world-route-form button{width:100%}.world-route-summary{font-size:22px;color:var(--accent-yellow);font-weight:bold}.world-route-summary>span{display:block;font-size:12px;color:var(--muted);font-weight:normal;margin-top:8px}.world-fast-steps{list-style:none;padding:0;margin:24px 0;display:grid;gap:16px}.world-fast-steps li{padding:16px;background:var(--elevation-2);border-radius:12px;display:grid;gap:8px}.world-route-mode{color:var(--accent-yellow);font-size:13px}.world-fast-steps strong{font-size:15px}.world-fast-steps li>span:not(.world-route-mode),.world-fast-steps small,.world-fast-steps details{font-size:12px;color:var(--muted);line-height:1.6}.world-fast-steps details a{color:var(--ink)}.world-map-layout .world-town-scene{height:560px;background:var(--elevation-1)}
@media(max-width:1000px){.world-map-layout{grid-template-columns:minmax(0,1fr) 300px;gap:20px}.world-map-layout .world-route-section{padding:20px}}@media(max-width:760px){.world-map-layout{grid-template-columns:1fr;gap:32px}.world-map-layout .world-route-section{position:static}.world-map-layout .world-town-scene{height:360px}}

.world-map-native-labels .world-region-link{opacity:0;filter:brightness(0) invert(1) drop-shadow(0 0 4px #fff59a)}
.world-map-native-labels .world-region-link:hover,.world-map-native-labels .world-region-link:focus-visible{opacity:.38}
.world-spot:hover .world-spot-touch,.world-spot:focus-visible .world-spot-touch{fill:#fff6a8;fill-opacity:.35;stroke:#fff8b5;stroke-width:1.5}

.world-spot .world-spot-touch{transition:fill-opacity .15s,stroke-opacity .15s;stroke-opacity:0}
.world-spot:hover .world-spot-touch,.world-spot:focus-visible .world-spot-touch{fill:#fffbb2;fill-opacity:.65;stroke:#fffbd1;stroke-opacity:1;stroke-width:1.5;filter:drop-shadow(0 0 3px #fff36b) drop-shadow(0 0 6px #ffe647)}
.world-spot{cursor:pointer}


/* The larger circle is only an invisible pointer target; highlight the game sprite. */
.world-spot .world-spot-touch,.world-spot:hover .world-spot-touch,.world-spot:focus-visible .world-spot-touch{fill:transparent;fill-opacity:0;stroke:none;filter:none}
.world-spot-asset{pointer-events:none;transition:filter .12s,opacity .12s}
.world-spot-asset--hover{opacity:0}
.world-spot:hover .world-spot-asset,.world-spot:focus-visible .world-spot-asset{opacity:1;filter:brightness(1.5) drop-shadow(0 0 1px #fff7a0)}

.world-map-hover-extra{margin-top:14px;padding-top:12px;border-top:1px solid #444}.world-map-hover-extra h4{margin:0 0 8px;font-size:13px;color:#bbb}.world-map-hover-extra ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}.world-map-hover-extra li{display:flex;justify-content:space-between;gap:10px;font-size:14px}.world-map-hover-extra small{color:#9a9a9a;font-size:12px;white-space:nowrap}

.world-map-hover{max-height:min(560px,80vh)}
.world-map-hover-mobs{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px 12px}
.world-map-hover-mobs li{display:flex;align-items:center;gap:6px;font-size:13px;color:#ddd}
.world-map-hover-mobs .world-hover-mob{width:28px;height:28px;object-fit:contain;image-rendering:pixelated;max-width:28px;max-height:28px}
.world-hover-more{color:#9a9a9a}

.world-fast-steps--compact{list-style:none;margin:12px 0;padding:0;display:grid;gap:6px}
.world-fast-steps--compact li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:4px 10px;padding:10px 12px;border-radius:12px;background:var(--elevation-2)}
.world-fast-steps--compact .world-route-mode{font-size:12px;color:var(--accent-yellow);white-space:nowrap}
.world-fast-steps--compact strong{font-size:14px;line-height:1.35;min-width:0;overflow-wrap:anywhere}
.world-fast-steps--compact .world-step-time{font-size:12px;color:var(--gray-400);white-space:nowrap}
.world-fast-steps--compact .world-step-more{grid-column:1/-1;font-size:12px;color:var(--gray-400)}
.world-fast-steps--compact .world-step-more summary{cursor:pointer;width:fit-content}
.world-fast-steps--compact .world-step-more p{margin:6px 0 0}

.world-map-hover-entry>strong{display:block;margin-bottom:14px}
.world-map-hover-entry>img,.world-map-hover-entry>span{display:block;margin:0 auto}
.world-map-hover-entry+.world-map-hover-entry{margin-top:20px}
.world-map-hover-mobs{margin:18px 0 0;padding-top:16px;border-top:1px solid #3a3a3a;gap:10px 16px}

.world-fast-steps--stepper{list-style:none;margin:18px 0;padding:0}
.world-fast-steps--stepper li{position:relative;display:flex;gap:14px;align-items:flex-start;padding:0 0 22px;margin:0;background:none;border-radius:0}
.world-fast-steps--stepper li:last-child{padding-bottom:0}
.world-fast-steps--stepper li:not(:last-child)::before{content:"";position:absolute;left:14px;top:30px;bottom:0;width:2px;background:var(--elevation-7)}
.world-fast-steps--stepper .world-step-dot{flex:none;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--accent-yellow);color:#111;font-size:14px;font-weight:700;position:relative;z-index:1}
.world-fast-steps--stepper .world-step-body{display:grid;gap:4px;min-width:0;padding-top:3px}
.world-fast-steps--stepper strong{font-size:15px;line-height:1.35;overflow-wrap:anywhere}
.world-fast-steps--stepper .world-step-meta{font-size:13px;color:var(--gray-400)}

.world-fast-steps--stepper strong{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px}
.world-step-place{display:inline-flex;align-items:center;gap:6px}
.world-step-place img{width:18px;height:18px;flex:none;object-fit:contain;image-rendering:pixelated}
.world-step-arrow{color:var(--gray-500)}

.world-map-hover{max-height:none;overflow:visible}
.world-map-hover-entry>img{max-width:100%;height:auto;max-height:260px;object-fit:contain}
.world-map-hover--multi{width:min(600px,calc(100% - 16px));display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 22px}
.world-map-hover--multi .world-map-hover-entry+.world-map-hover-entry{margin-top:0}
.world-map-hover--multi .world-map-hover-entry>img{max-height:150px}
.world-map-hover--multi .world-map-hover-extra{grid-column:1/-1}
.world-map-hover--tight .world-map-hover-entry>img{max-height:90px}
.world-map-hover--tight .world-map-hover-mobs{margin-top:10px;padding-top:10px}
.world-fast-steps--stepper li{gap:12px;padding-bottom:18px}
.world-fast-steps--stepper .world-step-dot{width:12px;height:12px;margin-top:5px;font-size:0;color:transparent;border:0}
.world-fast-steps--stepper li:not(:last-child)::before{left:5px;top:19px;width:2px}
.world-fast-steps--stepper .world-step-body{padding-top:0}

.world-timeline{list-style:none;margin:20px 0;padding:0}
.world-timeline li{position:relative;display:flex;align-items:center;gap:14px;padding:0 0 0 0;min-height:30px}
.world-timeline li::before{content:"";position:absolute;left:8px;top:0;bottom:0;width:2px;background:var(--accent-yellow);opacity:.55}
.world-timeline li:first-child::before{top:50%}
.world-timeline li:last-child::before{bottom:50%}
.world-timeline-mark{position:relative;z-index:1;flex:none;display:block;border-radius:50%}
.world-timeline-node .world-timeline-mark{width:18px;height:18px;background:var(--accent-yellow);box-shadow:0 0 0 3px var(--elevation-1)}
.world-timeline-node.is-start .world-timeline-mark,.world-timeline-node.is-end .world-timeline-mark{width:18px;height:18px}
.world-timeline-node:not(.is-start):not(.is-end) .world-timeline-mark{background:var(--elevation-1);border:3px solid var(--accent-yellow);box-sizing:border-box}
.world-timeline-leg{min-height:38px}
.world-timeline-leg .world-timeline-mark{width:8px;height:8px;margin-left:5px;background:var(--accent-yellow);box-shadow:0 0 0 3px var(--elevation-1)}
.world-timeline-node strong{font-size:15px;line-height:1.35}
.world-timeline-meta{font-size:13px;color:var(--gray-400)}
/* calmer timeline: small markers, thin neutral line, yellow only on the ends */
.world-timeline li{gap:12px;min-height:26px}
.world-timeline li::before{left:5px;width:1px;background:var(--elevation-7);opacity:1}
.world-timeline-node .world-timeline-mark{width:11px;height:11px;box-shadow:none;background:var(--elevation-1);border:2px solid var(--gray-500);box-sizing:border-box}
.world-timeline-node.is-start .world-timeline-mark,.world-timeline-node.is-end .world-timeline-mark{width:11px;height:11px;background:var(--accent-yellow);border:2px solid var(--accent-yellow)}
.world-timeline-node:not(.is-start):not(.is-end) .world-timeline-mark{border:2px solid var(--gray-500);background:var(--elevation-1)}
.world-timeline-leg{min-height:32px}
.world-timeline-leg .world-timeline-mark{width:5px;height:5px;margin-left:3px;background:var(--gray-500);box-shadow:none}
.world-timeline-node strong{font-size:14px}
.world-timeline-meta{font-size:12px;color:var(--gray-400)}

.world-seed{position:relative;display:inline-flex;align-items:center;gap:6px;cursor:help}
.world-seed img{width:20px;height:20px;object-fit:contain;image-rendering:pixelated}
.world-seed-name{text-decoration:underline dotted;text-underline-offset:4px;text-decoration-color:var(--gray-500)}
.world-seed-pop{position:absolute;left:0;top:calc(100% + 8px);z-index:30;width:260px;padding:12px 14px;border-radius:12px;background:#202020;color:#ddd;font-size:13px;line-height:1.5;box-shadow:0 8px 24px #0008;display:none}
.world-seed-pop strong{display:block;margin-bottom:6px;color:#fff;font-size:14px}
.world-seed:hover .world-seed-pop,.world-seed:focus .world-seed-pop{display:block}

/* one dot per stop: place name with the next leg (transport, time, fare) beneath it */
.world-timeline{margin:22px 0}
.world-timeline li{display:flex;align-items:flex-start;gap:14px;padding:0 0 30px;min-height:0}
.world-timeline li:last-child{padding-bottom:0}
.world-timeline li::before{left:4px;top:11px;bottom:-4px;width:1px;background:var(--elevation-7);opacity:1}
.world-timeline li:first-child::before{top:11px}
.world-timeline li:last-child::before{display:none}
.world-timeline .world-timeline-mark{width:9px;height:9px;margin-top:6px;border:0;border-radius:50%;background:var(--gray-500);box-shadow:0 0 0 4px var(--elevation-1)}
.world-timeline-body{display:grid;gap:8px;min-width:0}
.world-timeline-body strong{font-size:15px;line-height:1.4}
.world-timeline-meta{font-size:13px;color:var(--gray-400);line-height:1.5}

.world-timeline-body{gap:3px}
.world-timeline-meta{display:flex;flex-wrap:wrap;align-items:center;gap:0 4px}
.world-seed{vertical-align:middle;line-height:1.5}
.world-seed img{width:18px;height:18px;flex:none}

.world-route-intermediate{margin-top:10px;min-width:0}
.world-route-intermediate summary{cursor:pointer;font-size:13px;color:var(--gray-400);padding:4px 0}
.world-route-map-list{display:grid;gap:10px;margin-top:12px}
.world-route-map-list [role="listitem"]{display:flex;align-items:baseline;gap:10px;font-size:13px;line-height:1.5;overflow-wrap:anywhere}
.world-route-map-number{flex:none;min-width:18px;color:var(--gray-500);font-size:11px;font-variant-numeric:tabular-nums}

/* Route fields use the shared select; only page spacing belongs here. */
.world-route-picker{display:grid;gap:8px;width:100%;min-width:0}
.world-route-picker>span{display:block;font-size:14px;line-height:1.5;color:var(--muted)}
