/* Generated by scripts/dmz_map.py. Edit the generator, not this file. */
.dmz-marker[data-id="political-prison"]{left:30.47%;top:39.6%}
.dmz-marker[data-id="chang-san"]{left:25%;top:56.54%}
.dmz-marker[data-id="deadtown"]{left:30.27%;top:66.58%}
.dmz-marker[data-id="imjin"]{left:38.94%;top:68.33%}
.dmz-marker[data-id="cheongun"]{left:51.42%;top:49.19%}
.dmz-marker[data-id="mirae-hospital"]{left:55.66%;top:53.32%}
.dmz-marker[data-id="cheonwang"]{left:49.78%;top:62.35%}
.dmz-marker[data-id="haneul-reactor"]{left:70.26%;top:46.9%}
.dmz-marker[data-id="nurigo"]{left:64.36%;top:58.11%}
.dmz-marker[data-id="the-grid"]{left:60.38%;top:62.38%}
.dmz-marker[data-id="songdo-wharf"]{left:70.02%;top:65.7%}
.dmz-marker[data-id="wolves-stadium"]{left:57.42%;top:67.85%}
.dmz-marker[data-id="river-heights"]{left:61.99%;top:71.58%}

/* Current gameplay changes; map positions remain reference-only. */
.dmz-patch-briefing{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:22px;margin:20px 0 23px;padding:clamp(18px,2.2vw,28px);background:linear-gradient(110deg,#192b34,#0d1a26 77%);border:1px solid #a68b65;border-left:4px solid #f2cb87;box-shadow:0 12px 25px #0002}
.dmz-patch-date{color:#f4cc89;font-size:.73rem;font-weight:800;letter-spacing:.12em}
.dmz-patch-briefing h2{font-size:clamp(1.25rem,2.2vw,1.72rem);margin:7px 0 10px;color:#fff}
.dmz-patch-briefing p{font-size:.9rem;line-height:1.6;margin:0;color:#e1edf2;max-width:85ch}
.dmz-patch-briefing p.dmz-patch-fine{margin-top:10px;font-size:.83rem;color:#bbd1de}
.dmz-patch-open{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:13px 18px;text-align:center;white-space:normal;background:#efd19a!important;color:#10202b!important;border:2px solid #ffe4b5!important;font-weight:850;text-decoration:none!important;transition:background .2s,transform .2s}
.dmz-patch-open:hover{background:#fff0c6!important;transform:translateY(-2px)}
.dmz-patch-open:focus-visible{outline:3px solid #fff!important;outline-offset:3px}
@media(max-width:840px){.dmz-patch-briefing{grid-template-columns:1fr}.dmz-patch-open{width:100%}}
@media(prefers-reduced-motion:reduce){.dmz-patch-open{transition:none}}


.dmz-map-page.shell{max-width:1600px;width:min(96%,1600px);padding:30px clamp(20px,3vw,48px);border-radius:14px;background:linear-gradient(90deg,#0d1119 0%,rgba(13,17,25,.95) 44%,rgba(13,17,25,.74) 100%),url('/media/mw4-1600.webp') right 35% / cover no-repeat;border:1px solid rgba(173,187,212,.1)}
.dmz-map-page h1{font-size:clamp(2rem,4.2vw,4rem);letter-spacing:-.055em;margin:.28em 0}
.dmz-map-page .intro{max-width:740px;margin:.7em 0;color:#d4dceb;line-height:1.6}
.dmz-map-page .small{max-width:740px;font-size:.76rem}
.dmz-map-controls.shell,.dmz-map-stage.shell{max-width:1600px;width:min(96%,1600px)}
.dmz-map-controls{padding-block:14px 8px;gap:10px}
.dmz-search-row{display:flex;gap:12px}
.dmz-search-row input{min-height:46px;font-size:1rem;flex:1 1 240px}
.dmz-search-row #dmzCount{white-space:nowrap}
.dmz-filter-drawer{border-bottom:1px solid rgba(195,209,227,.16);padding-bottom:7px}
.dmz-filter-drawer summary{cursor:pointer;display:flex;align-items:center;gap:12px;padding:9px 2px;font-weight:700;min-height:44px;color:#e5e9f3;list-style:none}
.dmz-filter-drawer summary::-webkit-details-marker{display:none}
.dmz-filter-drawer summary:before{content:'☷';color:#94a9d0;font-size:1.3rem}
.dmz-filter-drawer summary:after{content:'▾';margin-left:auto;color:#b8c3da;transition:transform .2s}
.dmz-filter-drawer[open] summary:after{transform:rotate(180deg)}
.dmz-filter-body{display:grid;grid-template-columns:minmax(0,2fr) minmax(190px,1fr) auto;gap:10px;align-items:stretch;padding:5px 0 10px}
.dmz-filter-body fieldset{margin:0;border:0;border-radius:8px;background:rgba(255,255,255,.035);padding:12px}
.dmz-filter-body label{min-height:30px;padding:4px 7px;border-radius:4px}
.dmz-filter-body label:has(input:checked){background:rgba(113,154,212,.11)}
.dmz-filter-body input{accent-color:#a98bff;min-width:16px;min-height:16px}
.dmz-filter-actions{align-items:center}
.dmz-jump-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.dmz-jump-label{font-weight:700;font-size:.87rem;color:#dbe4f5}
#dmzJump{min-height:44px;min-width:220px;max-width:100%;border:1px solid rgba(197,211,230,.22);border-radius:7px;padding:8px 34px 8px 12px;background:#151d2b;color:#fff;font:inherit}
.dmz-map-stage.shell{grid-template-columns:minmax(0,1fr) minmax(280px,350px);gap:14px;align-items:start;padding-top:8px}
.dmz-map-stage>.dmz-zoom-row{grid-column:1/-1;min-height:44px;gap:8px;position:relative;z-index:20;isolation:isolate;background:#0d1625;border:1px solid rgba(166,188,216,.2);border-radius:7px;padding:5px 8px}
.dmz-map-stage>.dmz-zoom-row .dmz-zoom-btn{border-radius:7px;min-height:42px;min-width:44px}
.dmz-map-stage>.dmz-zoom-row .dmz-zoom-hint{margin-left:auto}
.dmz-map-viewport{height:min(69vh,790px);min-height:490px;aspect-ratio:auto;border-radius:9px;border:1px solid rgba(171,197,220,.25);box-shadow:0 14px 38px #0004;background:#152331}
.dmz-map-canvas{transition:transform .13s ease-out}
.dmz-map-viewport.is-dragging .dmz-map-canvas{transition:none}
.dmz-schematic{filter:contrast(1.13) saturate(.9)}
.dmz-map-viewport:after{content:'';inset:0;position:absolute;pointer-events:none;box-shadow:inset 0 0 0 1px #ffffff09,inset 0 0 55px #070d1a3b}
.dmz-marker{z-index:1}
.dmz-marker-dot{width:29px;height:29px;font-size:.85rem;border:2px solid #070c14;box-shadow:0 0 0 2px rgba(255,255,255,.37),0 2px 10px #0009}
.dmz-marker-label{color:#fff;font-weight:750;max-width:130px;text-align:center;font-size:.77rem;line-height:1.25;white-space:normal;text-shadow:0 1px 5px #000,0 2px 2px #000,0 -1px 2px #000}
.dmz-marker:hover,.dmz-marker:focus-visible,.dmz-marker.is-selected{z-index:6}
.dmz-marker:is(:hover,:focus-visible,.is-selected) .dmz-marker-dot{outline:2px solid #fff;outline-offset:2px}
.dmz-marker.is-selected .dmz-marker-label{background:rgba(8,13,23,.91);padding:4px 7px;border-radius:4px}
.dmz-side{position:sticky;top:94px;max-height:calc(100vh - 110px);overflow:auto;gap:12px;scrollbar-width:thin}
.dmz-legend{background:transparent;border:0;border-bottom:1px solid rgba(255,255,255,.16);border-radius:0;padding:8px 1px 12px}
.dmz-location-list{max-height:30vh;border:0;border-radius:4px;background:rgba(255,255,255,.025)}
.dmz-list-item{min-height:43px;padding:9px 10px;border-left:3px solid transparent}
.dmz-list-item:hover,.dmz-list-item:focus-visible{background:rgba(124,166,231,.13)}
.dmz-list-item.is-selected{border-left-color:#bd9bff}
.dmz-detail{border:0;border-top:2px solid #957ee4;background:rgba(12,18,32,.84);border-radius:3px;min-height:150px;padding:17px 16px}
.dmz-detail h2{font-size:1.4rem}
.dmz-map-stage:fullscreen{width:100%;max-width:none!important;background:#0b101a;padding:22px;overflow:auto}
.dmz-map-stage:fullscreen .dmz-map-viewport{height:calc(100vh - 115px);min-height:400px}
.dmz-map-stage.dmz-expanded-fallback{position:fixed!important;inset:0;z-index:99999;width:100vw!important;max-width:none!important;max-height:100vh;height:100vh;padding:18px;background:#090e18;overflow:auto;grid-template-columns:minmax(0,1fr) minmax(250px,340px)}
.dmz-map-stage.dmz-expanded-fallback .dmz-map-viewport{height:calc(100vh - 130px)}
@media(max-width:860px){.dmz-map-stage.dmz-expanded-fallback{grid-template-columns:1fr}.dmz-map-stage.dmz-expanded-fallback .dmz-map-viewport{height:60vh}}
.dmz-filters-applied{font-size:.78rem;color:#98b3df;margin-left:8px}
.dmz-access-table[open] summary{color:#c3d1e8}
.dmz-access-table summary{cursor:pointer;min-height:44px;padding:9px 0;font-weight:700}
.dmz-enhanced .dmz-map-page+.dmz-map-controls{margin-top:12px}
@media(max-width:1000px){.dmz-filter-body{grid-template-columns:1fr 1fr}.dmz-filter-actions{grid-column:1/-1}.dmz-map-stage.shell{grid-template-columns:minmax(0,1fr) 280px}.dmz-side{position:static}}
@media(max-width:860px){.dmz-map-stage.shell{grid-template-columns:1fr}.dmz-map-viewport{height:min(68vh,620px);min-height:390px}.dmz-side{max-height:none;overflow:visible}.dmz-location-list{max-height:240px}.dmz-filter-body{grid-template-columns:1fr}.dmz-filter-body fieldset{padding:9px}.dmz-map-stage>.dmz-zoom-row .dmz-zoom-hint{display:none}}
@media(max-width:560px){.dmz-map-page.shell{padding:23px 18px;background-position:70% center}.dmz-map-page h1{font-size:2.3rem}.dmz-search-row #dmzCount{width:100%;font-size:.79rem}.dmz-map-viewport{min-height:365px;height:53vh}.dmz-marker-dot{width:25px;height:25px}.dmz-marker-label{font-size:.65rem;max-width:70px}.dmz-jump-row{align-items:stretch;flex-direction:column;gap:5px}#dmzJump{width:100%}.dmz-zoom-btn{min-height:44px}.dmz-side{gap:8px}}
@media(prefers-reduced-motion:reduce){.dmz-map-canvas,.dmz-filter-drawer summary:after{transition:none}}


.dmz-map-confidence{display:inline-flex;align-items:center;gap:7px;color:#ccd7e8;font-size:.74rem;border:1px solid #ffffff35;border-radius:6px;padding:7px 10px;margin-left:auto;background:#172335}
.dmz-map-confidence strong{color:#e6c77b}
.dmz-marker .dmz-marker-dot{position:relative}
.dmz-marker.is-favourite .dmz-marker-dot:after{content:'★';position:absolute;top:-12px;right:-13px;font-size:14px;color:#f7d77b;text-shadow:0 1px 4px #000,0 0 7px #000}
.dmz-personal-actions{display:flex;gap:8px;flex-wrap:wrap;border-top:1px solid #ffffff22;padding-top:13px;margin-top:14px}
.dmz-personal-actions button{font:inherit;cursor:pointer;min-height:42px;padding:9px 12px;border-radius:6px;color:#eaf0ff;background:rgba(128,152,203,.13);border:1px solid #ffffff38}
.dmz-personal-actions button:hover,.dmz-personal-actions button:focus-visible{background:rgba(128,152,203,.28)}
.dmz-personal-actions button[aria-pressed="true"]{color:#ffe5a7;border-color:#dba955}
.dmz-personal-note{font-size:.76rem;color:#a8bbd7;margin:6px 0 0}
.dmz-share-status{font-size:.79rem;color:#bde8d2}
@media(max-width:660px){.dmz-map-confidence{order:5;width:100%;margin-left:0;justify-content:center}}


.dmz-map-viewport{aspect-ratio:1/1!important;height:auto!important;min-height:0!important;width:100%;max-height:none!important;background:#1d2528}
.dmz-map-canvas{position:absolute;inset:0;width:100%;height:100%}
.dmz-real-map{position:absolute;inset:0;width:100%;height:100%;display:block;object-fit:fill;pointer-events:none;opacity:0;transition:opacity .25s ease-out}
.dmz-map-canvas.dmz-base-loaded .dmz-real-map{opacity:1}
.dmz-map-canvas.dmz-base-loaded .dmz-schematic{display:none}
.dmz-map-canvas.dmz-base-loaded .dmz-marker{filter:drop-shadow(0 2px 3px #000a)}
.dmz-map-canvas.dmz-base-loaded .dmz-marker-label{background:rgba(8,14,22,.89);padding:3px 6px;border:1px solid #ffffff1d;border-radius:4px;box-shadow:0 2px 8px #000a}
.dmz-map-canvas .dmz-marker-dot{transition:transform .16s,box-shadow .16s}
.dmz-map-canvas .dmz-marker:hover .dmz-marker-dot{transform:scale(1.2)}
.dmz-map-canvas.dmz-base-loaded .dmz-marker.is-selected .dmz-marker-dot{box-shadow:0 0 0 3px #fff,0 0 0 7px #795fff,0 0 20px #ad85ff}
.dmz-map-viewport.dmz-pinning{cursor:crosshair}
.dmz-map-viewport .dmz-ref-grid{position:absolute;inset:0;pointer-events:none;z-index:1;display:none;background-image:linear-gradient(to right,#ffffff40 1px,transparent 1px),linear-gradient(to bottom,#ffffff40 1px,transparent 1px);background-size:10% 10%;box-shadow:inset 0 0 0 1px #ffffff50}
.dmz-map-viewport.dmz-show-grid .dmz-ref-grid{display:block}
.dmz-map-viewport.dmz-hide-labels .dmz-marker-label{display:none}
.dmz-map-viewport .dmz-markers{z-index:3}
.dmz-my-pins{position:absolute;inset:0;z-index:4;pointer-events:none}
.dmz-my-pin{position:absolute;transform:translate(-50%,-100%);pointer-events:auto;border:1px solid #d1bbff;border-radius:50% 50% 50% 3px;background:#9b67ee;color:#fff;box-shadow:0 2px 8px #000b;padding:0;width:27px;height:27px;rotate:-45deg;cursor:pointer}
.dmz-my-pin::after{content:'+';display:inline-block;rotate:45deg;font-size:16px;font-weight:900}
.dmz-my-pin:hover,.dmz-my-pin:focus-visible{background:#cb98ff}
.dmz-map-info{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between;border-block:1px solid #ffffff22;padding:10px 0;margin:5px 0 12px;color:#c4cedf;font-size:.83rem}
.dmz-map-info a{color:#bda8fd;text-underline-offset:3px}
.dmz-tool-toggle[aria-pressed=true]{border-color:#bf9fff!important;background:#443965!important;color:#fff}
.dmz-map-sourced{color:#d5d6d6;font-size:.83rem;line-height:1.6}
.dmz-map-sourced strong{color:#efe8ff}
.dmz-map-error{background:#40221f;color:#ffe6da;border-left:3px solid #ffad80;padding:12px;margin-bottom:8px;display:none}
.dmz-map-stage.dmz-expanded-fallback .dmz-map-viewport{width:min(calc(100vh - 115px),calc(100vw - 360px));height:auto!important;aspect-ratio:1/1!important}
.dmz-map-stage:fullscreen .dmz-map-viewport{width:min(calc(100vh - 115px),calc(100vw - 360px));height:auto!important;aspect-ratio:1/1!important}
.dmz-map-stage>.dmz-zoom-row{position:relative;z-index:30}
.dmz-map-viewport:focus-visible{outline:3px solid #aa8cfa;outline-offset:3px}
@media(min-width:920px){.dmz-map-stage.shell{grid-template-columns:minmax(0,1fr) minmax(280px,335px)}.dmz-map-viewport{max-width:960px;margin-inline:auto}.dmz-side{max-height:85vh}}
@media(max-width:860px){.dmz-map-viewport{min-height:0!important}.dmz-map-stage.dmz-expanded-fallback .dmz-map-viewport,.dmz-map-stage:fullscreen .dmz-map-viewport{width:100%}.dmz-map-viewport .dmz-marker-label{max-width:72px}}
@media(max-width:550px){.dmz-map-viewport .dmz-marker-label{font-size:.54rem;max-width:56px}.dmz-map-viewport .dmz-marker-dot{width:22px;height:22px;font-size:.7rem}.dmz-map-info{gap:6px}.dmz-map-sourced{font-size:.78rem}}
/* Final responsive map layout: prioritize the real artwork, never an undersized 960px box. */
.dmz-map-controls.shell,.dmz-map-stage.shell{max-width:1800px;width:min(97%,1800px)}
.dmz-map-stage.shell{grid-template-columns:minmax(0,1fr) minmax(330px,400px);gap:20px;align-items:start}
.dmz-map-viewport{width:100%;max-width:none!important;margin:0!important;aspect-ratio:1/1!important;height:auto!important;min-height:0!important}
/* Explicit placement prevents the map and detail sidebar from swapping grid columns. */
.dmz-map-stage>.dmz-zoom-row{grid-column:1/-1;grid-row:1}
.dmz-map-stage>#dmzViewport{grid-column:1;grid-row:2}
.dmz-map-stage>.dmz-side{grid-column:2;grid-row:2}
@media(max-width:860px){.dmz-map-stage>.dmz-side{grid-column:1;grid-row:3}}
.dmz-side{min-width:0;max-height:calc(100dvh - 116px);overflow:auto;overscroll-behavior:contain;padding:14px 16px;border:1px solid #ffffff29;border-radius:12px;background:#101724}
.dmz-detail{padding:19px;border-radius:10px;line-height:1.6}
.dmz-location-list{max-height:33vh}
.dmz-list-name{white-space:normal;overflow-wrap:anywhere;line-height:1.35}
.dmz-map-stage:fullscreen,.dmz-map-stage.dmz-expanded-fallback{grid-template-columns:minmax(0,1fr) minmax(330px,400px);gap:16px;align-items:start;padding:14px 18px}
.dmz-map-stage:fullscreen .dmz-map-viewport,.dmz-map-stage.dmz-expanded-fallback .dmz-map-viewport{width:min(100%,calc(100dvh - 112px));height:auto!important;max-width:none!important;aspect-ratio:1/1!important;justify-self:center}
.dmz-map-stage:fullscreen .dmz-side,.dmz-map-stage.dmz-expanded-fallback .dmz-side{position:sticky;top:0;max-height:calc(100dvh - 88px);overflow:auto}
.dmz-map-stage:fullscreen>.dmz-zoom-row,.dmz-map-stage.dmz-expanded-fallback>.dmz-zoom-row{grid-column:1/-1;position:sticky;top:0;z-index:45}
.dmz-patch-desk{margin-top:24px}
.dmz-patch-header{max-width:880px}
.dmz-patch-header h2{font-size:clamp(1.8rem,2.5vw,2.8rem);line-height:1.15;margin:12px 0}
.dmz-patch-header p{line-height:1.7;color:#c9d2e2}
.dmz-patch-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:22px}
.dmz-patch-grid article{display:flex;flex-direction:column;min-width:0;gap:10px;padding:23px;border:1px solid #52607970;border-radius:14px;background:linear-gradient(135deg,#20273a,#111927)}
.dmz-patch-date{font-size:.79rem;color:#c8b1ff;text-transform:uppercase;font-weight:800;letter-spacing:.08em}
.dmz-patch-grid h3{font-size:clamp(1.17rem,1.5vw,1.5rem);line-height:1.22;margin:0}
.dmz-patch-grid p{font-size:.96rem;color:#d1daeb;line-height:1.62;margin:0;flex:1}
.dmz-patch-grid a{font-size:.9rem;color:#cfb9ff;font-weight:700;text-underline-offset:4px}
.dmz-patch-caveat{color:#aebdd6;font-size:.85rem;line-height:1.6}
@media(min-width:920px){.dmz-map-stage.shell{grid-template-columns:minmax(0,1fr) minmax(330px,400px)}.dmz-map-viewport{max-width:none!important;margin-inline:0!important}}
@media(max-width:920px){.dmz-patch-grid{grid-template-columns:1fr}.dmz-map-stage.shell{grid-template-columns:minmax(0,1fr) minmax(260px,310px)}}
@media(max-width:860px){.dmz-map-stage.shell,.dmz-map-stage:fullscreen,.dmz-map-stage.dmz-expanded-fallback{grid-template-columns:minmax(0,1fr)}.dmz-side{position:static;max-height:none;overflow:visible}.dmz-map-stage:fullscreen .dmz-side,.dmz-map-stage.dmz-expanded-fallback .dmz-side{position:static;max-height:none}.dmz-map-stage:fullscreen .dmz-map-viewport,.dmz-map-stage.dmz-expanded-fallback .dmz-map-viewport{width:min(100%,calc(100dvh - 110px))}}
@media(max-width:580px){.dmz-map-controls.shell,.dmz-map-stage.shell{width:calc(100% - 24px)}.dmz-map-stage.shell{gap:12px}.dmz-side{padding:12px}.dmz-patch-grid article{padding:17px}}
@media(prefers-reduced-motion:reduce){.dmz-real-map,.dmz-map-canvas .dmz-marker-dot{transition:none}}


.dmz-extra-layer{position:absolute;inset:0;pointer-events:none;z-index:3}
.dmz-extra-point{position:absolute;transform:translate(-50%,-50%);width:17px;height:17px;border:1px solid #9ce4f7;border-radius:50%;background:#14374a;color:#fff;box-shadow:0 1px 9px #000c;cursor:pointer;pointer-events:auto;display:grid;place-items:center;transition:transform .15s ease}
.dmz-extra-point:hover,.dmz-extra-point:focus-visible{transform:translate(-50%,-50%) scale(1.3);z-index:10;outline:2px solid #fff;outline-offset:3px}
.dmz-extra-point[data-kind=fortress]{border-color:#edb0ff;background:#713ba2;border-radius:4px;rotate:45deg}
.dmz-extra-point[data-kind=fortress]:hover,.dmz-extra-point[data-kind=fortress]:focus-visible{transform:translate(-50%,-50%) scale(1.2)}
.dmz-extra-point:after{content:attr(data-label);position:absolute;top:17px;left:50%;translate:-50% 0;rotate:0deg;white-space:nowrap;max-width:130px;overflow:hidden;text-overflow:ellipsis;background:#101923e8;border-radius:4px;color:#ebf3ff;font-size:10px;padding:3px 5px;display:none;pointer-events:none;text-shadow:0 1px #000}
.dmz-extra-point:is(:hover,:focus-visible).dmz-extra-point:after{display:block}
/* Zoom-aware labels appear only for user-enabled minor/fortress layers. */
.dmz-map-viewport.dmz-zoom-detail .dmz-extra-point:not([hidden]):after{display:block}
@media(max-width:550px){.dmz-map-viewport.dmz-zoom-detail .dmz-extra-point:not([hidden]):after{max-width:84px;font-size:9px}}
.dmz-extra-point[data-kind=fortress]:after{top:17px;rotate:-45deg}
.dmz-extra-point[hidden]{display:none!important}
.dmz-extra-count{font-size:.77rem;color:#bdcde5;margin-left:3px}
.dmz-map-stage>.dmz-zoom-row{flex-wrap:wrap}
@media(max-width:550px){.dmz-extra-point{width:15px;height:15px}.dmz-extra-point:after{font-size:9px}}
@media(prefers-reduced-motion:reduce){.dmz-extra-point{transition:none}}

