/* Hājīn v4: region -> named place -> detail, with semantic zoom.
   Only sourced reference positions produce map pins. */
body.dmz-v2 #dmzViewport .dmz-semantic-cluster-layer{
  position:absolute;inset:0;z-index:8;pointer-events:none;
}
body.dmz-v2 #dmzViewport[data-semantic-level="overview"] .dmz-semantic-cluster-layer,
body.dmz-v2 #dmzViewport[data-semantic-level="overview"] .dmz-extra-layer{display:none!important}
body.dmz-v2 #dmzViewport[data-semantic-level="detail"] .dmz-marker .dmz-marker-dot{
  display:none!important;
}
body.dmz-v2 #dmzViewport[data-semantic-level="detail"] .dmz-marker{
  opacity:.8!important;z-index:2!important;
  pointer-events:none!important;
}
body.dmz-v2 #dmzViewport[data-semantic-level="detail"] .dmz-marker .dmz-marker-label{
  display:block!important;
  position:absolute!important;top:0!important;left:50%!important;
  transform:translate(-50%,-50%)!important;
  padding:3px 5px!important;
  max-width:145px!important;width:max-content!important;
  border:0!important;border-radius:3px!important;
  background:rgba(10,24,26,.56)!important;
  color:#c4d8d2!important;
  font-size:11px!important;font-weight:750!important;
  line-height:1.2!important;
  text-shadow:0 2px 5px #061114!important;
  box-shadow:none!important;
}
body.dmz-v2 #dmzViewport[data-semantic-level="detail"] .dmz-marker.is-selected .dmz-marker-label{
  color:#ffdfab!important;background:rgba(12,25,25,.8)!important;
}
/* Meaningful leaf icons remain ~24px on the screen while the terrain zooms. */
body.dmz-v2 #dmzViewport[data-semantic-level="detail"] .dmz-extra-point[data-kind]{
  width:25px!important;height:25px!important;
  max-width:25px!important;max-height:25px!important;
  min-height:0!important;min-width:0!important;
  padding:0!important;box-sizing:border-box!important;
  border:2px solid #b5d0cd!important;
  border-radius:7px!important;
  background:#15323a url('/icons/map/map-pin.svg') center/16px no-repeat!important;
  scale:var(--dmz-inverse,1)!important;
  opacity:1!important;
  filter:drop-shadow(0 2px 3px #000a);
}
body.dmz-v2 #dmzViewport[data-semantic-level="detail"] .dmz-extra-point[data-kind="fortress"]{
  background:#4a3427 url('/icons/map/shield.svg') center/16px no-repeat!important;
  border-color:#ebca93!important;
}
body.dmz-v2 #dmzViewport[data-semantic-level="detail"] .dmz-extra-point[data-clarity-hidden="true"]:not([hidden]){
  visibility:visible!important;opacity:1!important;pointer-events:auto!important;
}
body.dmz-v2 #dmzViewport[data-semantic-level="detail"] .dmz-extra-point[data-semantic-covered="true"]{
  visibility:hidden!important;pointer-events:none!important;opacity:0!important;
}
body.dmz-v2 #dmzViewport[data-semantic-level="detail"] .dmz-extra-point.is-selected{
  z-index:15!important;visibility:visible!important;opacity:1!important;
  outline:3px solid #e4bf87!important;outline-offset:2px!important;
}
body.dmz-v2 #dmzViewport .dmz-semantic-cluster{
  position:absolute;z-index:10;display:grid;place-items:center;
  pointer-events:auto;cursor:pointer;
  width:31px;height:31px;min-width:31px;min-height:31px;
  padding:0;box-sizing:border-box;
  border:2px solid #d3dbce;border-radius:10px;
  background:#263d38;color:#fff;
  font:bold 13px/1 system-ui,sans-serif;
  box-shadow:0 0 0 3px #0b1d1cb3,0 2px 6px #0008;
  transform:translate(-50%,-50%);
  scale:var(--dmz-inverse,1);
  transform-origin:center center;
}
body.dmz-v2 #dmzViewport .dmz-semantic-cluster:is(:hover,:focus-visible){
  outline:3px solid #efc785;outline-offset:2px;background:#416153;
}
body.dmz-v2 .dmz-region-directory{
  border:1px solid #49645e;border-radius:8px;background:#142425;
}
body.dmz-v2 .dmz-region-directory summary{
  cursor:pointer;padding:12px 14px;
  color:#e8efeb;font-weight:750;font-size:.86rem;
}
body.dmz-v2 .dmz-region-directory[open] summary{border-bottom:1px solid #49645e}
body.dmz-v2 .dmz-region-directory .dmz-location-list{max-height:285px!important;overflow:auto}
body.dmz-v2 .dmz-district{
  border:1px solid #567069;border-radius:10px;
  padding:12px 12px 14px;background:#102426;color:#d9e8e2;
}
body.dmz-v2 .dmz-district[hidden]{display:none!important}
body.dmz-v2 .dmz-district-eyebrow{
  display:block;color:#a6c6ba;font-size:.67rem;
  font-weight:800;letter-spacing:.09em;text-transform:uppercase;margin-bottom:5px;
}
body.dmz-v2 .dmz-district h3{font-size:clamp(1rem,1.4vw,1.25rem);line-height:1.3;margin:0 0 5px;color:#fff}
body.dmz-v2 .dmz-district p{font-size:.79rem;line-height:1.5;margin:5px 0 9px}
body.dmz-v2 .dmz-district-count{font-weight:700;color:#e6cca1}
body.dmz-v2 .dmz-district-areas{list-style:none;padding:0;margin:9px 0;display:grid;gap:5px}
body.dmz-v2 .dmz-district-areas li{
  display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;
  padding:9px;border-radius:7px;background:#1b3232;border:1px solid #395952;
  align-items:center;
}
body.dmz-v2 .dmz-district-areas .zone-name{font-size:.84rem;font-weight:720;line-height:1.3;color:#f2f2eb}
body.dmz-v2 .dmz-district-areas .zone-threat{
  display:block;font-size:.7rem;font-weight:700;color:#c1cbc6;margin-top:4px
}
body.dmz-v2 .dmz-district-areas button{
  background:#29493f;color:#f5f1e5;min-width:64px;min-height:33px;
  padding:5px 9px;border:1px solid #a0bba8;border-radius:6px;
  font-size:.77rem;cursor:pointer;
}
body.dmz-v2 .dmz-district-areas button:focus-visible{outline:3px solid #e4bd84}
body.dmz-v2 .dmz-district-areas .no-pin{font-size:.68rem;color:#a2b4ac;max-width:100px;text-align:right}
body.dmz-v2 .dmz-district .dmz-cluster-summary{
  background:#1e3732;border-left:3px solid #e0bf87;
  padding:8px 10px;margin:9px 0;font-size:.79rem;
}
body.dmz-v2 .dmz-semantic-summary{
  font-size:.77rem;line-height:1.45;
  padding:8px 10px;border-radius:7px;
  color:#e9eee8;background:#17312b;border:1px solid #547d70
}
body.dmz-v2 .dmz-semantic-summary strong{color:#f1d4a5}
body.dmz-v2 .dmz-map-stage .dmz-side{display:flex;flex-direction:column;gap:10px}
body.dmz-v2 .dmz-map-stage .dmz-side .dmz-legend{order:5}
body.dmz-v2 .dmz-map-stage .dmz-side .dmz-region-directory{order:1}
body.dmz-v2 .dmz-map-stage .dmz-side .dmz-district{order:2}
body.dmz-v2 .dmz-map-stage .dmz-side #dmzDetail{order:3}
body.dmz-v2 #dmzViewport .dmz-semantic-cluster .sr-only{position:absolute;clip:rect(0,0,0,0)}
@media(max-width:860px){
  body.dmz-v2 .dmz-map-stage .dmz-side{max-height:none!important}
  body.dmz-v2 .dmz-region-directory .dmz-location-list{max-height:260px!important}
}
@media(prefers-reduced-motion:reduce){
 body.dmz-v2 #dmzViewport .dmz-semantic-cluster{transition:none!important}
}

/* Region badges: big enough to identify at 100%, then replaced by local pins. */
body.dmz-v2 #dmzViewport[data-semantic-level="overview"] .dmz-marker-dot{
 width:37px!important;height:37px!important;
 padding:7px!important;border-radius:11px!important;
}
body.dmz-v2 #dmzViewport[data-semantic-level="overview"] .dmz-marker .dmz-poi-icon{
 width:21px!important;height:21px!important;
}
body.dmz-v2 #dmzViewport[data-semantic-level="overview"] .dmz-marker-number{
 width:17px!important;height:17px!important;font-size:10px!important;
}

/* At district zoom region labels are clickable, not inert annotations.
   At close zoom show local pins without permanent region-name overlays. */
body.dmz-v2 #dmzViewport[data-semantic-level="detail"] .dmz-marker{
 /* The central dot disappears at district zoom. Keep a usable click target for its text. */
 min-width:72px!important;min-height:30px!important;
 pointer-events:auto!important;cursor:pointer!important;
}
body.dmz-v2 #dmzViewport.dmz-zoom-labels[data-semantic-level="detail"] .dmz-marker:not(.is-selected):not(:focus-visible){
 /* Invisible region text must not block panning or nearby building pins. */
 pointer-events:none!important;
}
body.dmz-v2 #dmzViewport[data-semantic-level="detail"] .dmz-marker:is(:hover,:focus-visible) .dmz-marker-label{
 color:#fff0c4!important;background:#142926!important;
 outline:2px solid #f0ce90!important;outline-offset:2px!important;
}
body.dmz-v2 #dmzViewport.dmz-zoom-labels[data-semantic-level="detail"] .dmz-marker:not(.is-selected):not(:hover):not(:focus-visible) .dmz-marker-label{
 display:none!important;
}
