.game-map[hidden]{display:none!important}.game-map{min-width:0;padding:24px;background:#091d17ee;border:1px solid #59734b;border-radius:15px;box-shadow:0 15px 45px #0003}
.map-heading{display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap;margin-bottom:18px}.map-heading .eyebrow{margin:0 0 6px}.map-heading h2{font:600 clamp(1.7rem,3vw,2.4rem)/1.2 Georgia,serif;color:#f4e6ba;margin:0}.map-heading p:not(.eyebrow){margin:9px 0 0;color:#bdd0c0;line-height:1.5}.map-heading>button{flex:none;background:#183226;border:1px solid #7c9c63;color:#f1e8c8}
.map-edition-note{padding:12px 15px;border:1px solid #b89955;background:#372e1b;color:#f7e7b5;border-radius:8px;font-size:.9375rem;line-height:1.6}
.map-guide-strip{display:flex;align-items:center;gap:12px;background:#153528;border:1px solid #81ac714a;border-radius:9px;padding:13px 15px;margin-bottom:18px;min-height:65px;font-size:.9375rem}.map-guide-strip>div{flex:1;min-width:0}.map-guide-strip strong{display:block;color:#e7efd9;line-height:1.45}.map-guide-strip>div>span{display:block;font-size:.875rem;color:#b6ccb5;margin-top:5px}.map-guide-strip>button{flex:none;min-height:44px;white-space:nowrap}.map-guide-dot,.map-dot-guide{background:#c5ed83;box-shadow:0 0 0 4px #c5ed8320;display:block;width:11px;height:11px;border-radius:50%;flex:none}
.map-layout{display:grid;grid-template-columns:minmax(0,1fr) 250px;align-items:start;gap:18px}.map-main{min-width:0}.map-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}.map-toolbar>label{font-size:.875rem;color:#b4c8b5}.map-toolbar>select{flex:1;min-width:145px;width:auto;margin:0;padding:10px 12px;background:#142b23;border:1px solid #526949;border-radius:7px;color:var(--text);font-size:.875rem;min-height:44px}
.map-zoom{display:flex;align-items:center;gap:5px;margin-left:auto}.map-zoom button{min-width:40px;min-height:44px;border:1px solid #536b48;background:#142b23;color:#efdfac;border-radius:7px;padding:7px 10px;font-size:1rem}.map-zoom button:disabled{opacity:.4;cursor:default}.map-zoom #mapReset{font-size:.875rem}.map-zoom>span{font-size:.875rem;min-width:53px;text-align:center;color:#b9ccb9}
.map-viewport{position:relative;overflow:auto;max-height:560px;min-height:280px;background:#0e201d;border:1px solid #63764b;border-radius:12px;overscroll-behavior:contain;cursor:grab;scrollbar-color:#66794d #10231b;touch-action:pan-x pan-y}.map-viewport.is-dragging{cursor:grabbing;user-select:none}.map-stage{position:relative;width:100%;aspect-ratio:1200/850;isolation:isolate}.map-geography{display:block;width:100%;height:100%;position:absolute;inset:0}
.map-terrain{stroke:#e9d39155;stroke-width:2;stroke-linejoin:round}.terrain-field{fill:#475d2a}.terrain-desert{fill:#897047}.terrain-mountain{fill:#6c5144}.terrain-water{fill:#2d676b}.terrain-forest{fill:#28553b}.terrain-lake{fill:#205f70}.terrain-town{fill:#5b6651}.terrain-village{fill:#68704d}.terrain-ranch{fill:#88784c}.map-river{fill:none;stroke:#77a8b6;stroke-width:9;stroke-linecap:round}.map-roads path{fill:none;stroke:#ebddb998;stroke-width:5;stroke-linecap:round;stroke-linejoin:round}.map-shortcuts path{fill:none;stroke:#a2d8cb70;stroke-width:2;stroke-dasharray:9 8}.map-region-labels text{font:700 20px system-ui,sans-serif;letter-spacing:2px;fill:#f2e4b58c;paint-order:stroke;stroke:#10231b99;stroke-width:3}.map-compass text{font:700 23px Georgia,serif;fill:#efd5a1;text-anchor:middle}.map-compass path{stroke:#efd5a1;stroke-width:2;fill:none}
.map-pin{position:absolute;z-index:2;transform:translate(-50%,-50%);width:40px;height:40px;padding:0;border:0;background:none;display:grid;place-items:center;color:#f0d58d;cursor:pointer}.map-pin-symbol{display:grid;place-items:center;width:24px;height:24px;border:1px solid currentColor;border-radius:50%;background:#0a1b16ed;box-shadow:0 3px 8px #0008;font-size:17px;line-height:1}.map-dungeon{color:#ffbd89}.map-person{color:#90d4f1}.map-fairy{color:#d5b4fc}.map-item{color:#b5dc86}.map-place{color:#edce88}.map-pin:hover,.map-pin:focus-visible,.map-pin-selected{z-index:6}.map-pin:hover .map-pin-symbol,.map-pin:focus-visible .map-pin-symbol,.map-pin-selected .map-pin-symbol{background:#284838;box-shadow:0 0 0 3px #f1df8a55,0 3px 8px #0008}
.map-pin-guide .map-pin-symbol{outline:3px solid #c5ed83;outline-offset:4px}.map-pin-guide{z-index:4}.map-pin-label{position:absolute;bottom:38px;left:50%;transform:translateX(-50%);display:none;background:#0a1b16f5;color:#f4e8bd;padding:5px 8px;border:1px solid #948657;border-radius:5px;font-size:.875rem;line-height:1.35;white-space:nowrap;pointer-events:none;box-shadow:0 4px 14px #0007}.map-pin:hover .map-pin-label,.map-pin:focus-visible .map-pin-label,.map-pin-selected .map-pin-label{display:block}.map-manual-badge{position:absolute;right:0;top:0;width:15px;height:15px;border:2px solid #0e201d;color:#80cff3;background:#80cff3;border-radius:50%;font-size:0}
.map-pan-help{font-size:.875rem;line-height:1.5;color:#abbfaa;margin:9px 0 16px}.map-point-detail{padding:19px;background:#102a20;border:1px solid #476548;border-radius:10px;line-height:1.65}.map-detail-heading{display:flex;align-items:center;gap:12px}.map-detail-heading .eyebrow{font-size:.75rem;letter-spacing:.12em;margin:0 0 4px}.map-detail-heading h3{font:600 1.55rem/1.3 Georgia,serif;margin:0;color:#f4e5bd;overflow-wrap:anywhere}.map-detail-sigil{display:grid;place-items:center;flex:none;width:42px;height:42px;border:1px solid currentColor;border-radius:10px;background:#071b13;font-size:1.7rem}.map-point-detail>p{margin:13px 0}.map-point-detail .map-age-note{color:#c9d8c0;font-size:.875rem}.map-detail-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:12px}.map-detail-actions .secondary{border:1px solid #718464;background:#132b20;color:#e9d38e;text-align:left;line-height:1.45}.map-detail-actions .textbtn{padding:7px 10px;min-height:44px;border:1px dashed #779567;border-radius:7px;color:#d3e2c3;font-size:.875rem}.map-point-detail .map-reference-note{font-size:.875rem;color:#b5c6ac;margin-bottom:0}
.map-legend{padding:17px;background:#10251c;border:1px solid #405940;border-radius:10px;min-width:0}.map-legend h3{margin:0 0 14px;color:#f0deb0;font-size:1rem}.map-legend fieldset{border:0;padding:0;margin:0;display:grid;grid-template-columns:1fr;gap:1px}.map-category{display:flex;align-items:center;gap:9px;min-height:37px;font-size:.9375rem;cursor:pointer}.map-category input{width:18px;height:18px;accent-color:#bdcf87;margin:0;flex:none}.map-key{width:22px;height:22px;display:inline-grid;place-items:center;flex:none;font-size:19px;line-height:1}.map-location-legend{display:grid;gap:10px;border-top:1px solid #5a71404d;border-bottom:1px solid #5a71404d;padding:15px 0;margin:13px 0 18px;font-size:.875rem;color:#c6d7bc}.map-location-legend>span{display:flex;align-items:center;gap:10px}.map-location-legend small{font-size:.8125rem;line-height:1.5;color:#a8bca2}.map-dot-manual{display:block;width:11px;height:11px;border-radius:50%;background:#80cff3;flex:none}.map-search-label{display:block;font-size:.875rem;color:#cad8bf;margin:0 0 7px}.map-legend input[type=search]{width:100%;padding:11px 10px;border:1px solid #4e6949;border-radius:7px;background:#081c13;color:var(--text);font-size:.875rem;min-height:44px}.map-list-count{font-size:.8125rem;color:#adc1a7;margin:11px 0 7px}
.map-place-list{max-height:350px;overflow-y:auto;overscroll-behavior:contain;scrollbar-color:#526b3a #10251c}.map-place-row{display:flex;align-items:center;gap:8px;width:100%;text-align:left;min-height:52px;padding:10px 7px;border:0;border-bottom:1px solid #ffffff10;background:none;color:#e1e9d7;border-radius:5px;font-size:.875rem;line-height:1.4}.map-place-row>span:last-child{flex:1;min-width:0}.map-place-row small{display:block;font-size:.75rem;color:#a9bea3;margin-top:3px}.map-place-row:hover,.map-place-row.active{background:#2b4430;color:#f2e3a9}.map-empty{font-size:.875rem;line-height:1.6;color:#c8d2bc}.map-manual-controls{border-top:1px solid #5a71404d;margin-top:14px;padding-top:13px}.map-manual-controls p{font-size:.8125rem;line-height:1.5;color:#b8d2c9;margin:0}.map-manual-controls button{min-height:44px;font-size:.875rem;margin-top:4px}.map-manual-controls button[hidden]{display:none}.map-sources{font-size:.8125rem;line-height:1.8;color:#a6b8a0;margin:20px 0 0}.map-sources a{color:#c3cf9d}
.map-guide-link{display:flex;align-items:center;gap:8px;min-height:44px;padding:10px 12px;margin:16px 0;border:1px solid #779565;border-radius:8px;background:#1b3624;color:#e0e6bf;text-align:left;font-size:.9375rem;line-height:1.5}.map-guide-link:before{content:'○';color:#c5ed83;font-size:1.2rem}.map-guide-link:hover{background:#2c4931}
@media(max-width:1100px){.map-layout{grid-template-columns:minmax(0,1fr)}.map-legend fieldset{grid-template-columns:repeat(3,minmax(0,1fr));gap:4px 15px}.map-location-legend{grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.map-location-legend small{grid-column:1/-1}.map-place-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));max-height:245px;gap:0 10px}.map-viewport{max-height:500px}}
@media(max-width:600px){.game-map{padding:16px 12px}.map-heading{gap:14px}.map-heading h2{font-size:1.7rem}.map-heading p:not(.eyebrow){font-size:1rem}.map-heading>button{width:100%}.map-guide-strip{padding:11px 12px;flex-wrap:wrap}.map-guide-strip>div{flex:1 1 80%}.map-guide-strip>button{margin-left:22px}.map-toolbar>label{width:100%}.map-toolbar>select{min-width:130px;font-size:.875rem}.map-zoom{width:100%;justify-content:flex-end;margin-top:2px}.map-viewport{min-height:240px;max-height:380px}.map-stage{min-width:0}.map-pin{width:36px;height:36px}.map-pin-symbol{width:21px;height:21px;font-size:15px}.map-pin-label{bottom:34px;max-width:190px;white-space:normal;text-align:center;min-width:105px}.map-point-detail{padding:16px 13px}.map-detail-heading h3{font-size:1.4rem}.map-detail-actions>button{flex:1 1 100%}.map-legend{padding:16px 12px}.map-legend fieldset{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 10px}.map-category{font-size:.875rem}.map-location-legend{grid-template-columns:1fr}.map-place-list{grid-template-columns:1fr;max-height:260px}.map-region-labels text{font-size:24px}}
@media(prefers-reduced-motion:reduce){.map-viewport{scroll-behavior:auto}}
