.map-viewer-backdrop{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;padding:clamp(10px,2vw,24px);background:rgba(3,18,28,.88);opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .2s ease;overscroll-behavior:contain}
.map-viewer-backdrop.is-open{opacity:1;visibility:visible}
.map-viewer-dialog{position:relative;width:min(1400px,96vw);height:min(92dvh,1100px);min-height:260px;display:flex;flex-direction:column;overflow:hidden;border:1px solid rgba(255,255,255,.18);border-radius:16px;background:#061923;box-shadow:0 22px 80px rgba(0,0,0,.45);transform:translateY(12px) scale(.985);transition:transform .2s ease}
.map-viewer-backdrop.is-open .map-viewer-dialog{transform:none}
.map-viewer-head{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:54px;padding:10px 14px 10px 18px;background:#0c4a6e;color:#fff;flex:0 0 auto}
.map-viewer-title{min-width:0;font-family:'Fraunces',Georgia,serif;font-size:clamp(16px,2vw,22px);line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.map-viewer-actions{display:flex;align-items:center;gap:6px;flex:0 0 auto}
.map-viewer-btn{width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.28);border-radius:9px;background:rgba(255,255,255,.1);color:#fff;font:600 18px/1 'Outfit',sans-serif;cursor:pointer;transition:background .18s ease,transform .18s ease}
.map-viewer-btn:hover,.map-viewer-btn:focus-visible{background:#e0b34d;color:#0d3b54;outline:none;transform:translateY(-1px)}
.map-viewer-close{width:auto;padding:0 13px;font-size:13px;gap:7px}
.map-viewer-canvas{position:relative;display:flex;align-items:center;justify-content:center;min-height:0;flex:1;overflow:auto;padding:18px;background:#061923;overscroll-behavior:contain;touch-action:pan-x pan-y}
.map-viewer-image{display:block;width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;transform:scale(1);transform-origin:center center;transition:transform .16s ease;user-select:none;-webkit-user-drag:none;pointer-events:auto}
.map-viewer-hint{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);max-width:calc(100% - 32px);padding:6px 10px;border-radius:999px;background:rgba(3,18,28,.72);color:rgba(255,255,255,.82);font:500 11px/1.2 'Outfit',sans-serif;text-align:center;pointer-events:none}
.map-viewer-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;font:500 13px/1 'Outfit',sans-serif;background:#061923}
.map-viewer-backdrop.is-loaded .map-viewer-loading{display:none}
html.map-viewer-lock,html.map-viewer-lock body{overflow:hidden!important}
@media(max-width:600px){
  .map-viewer-backdrop{padding:0}
  .map-viewer-dialog{width:100vw;height:100dvh;min-height:100dvh;border:0;border-radius:0}
  .map-viewer-head{min-height:58px;padding:10px 12px 10px 16px;padding-top:max(10px,env(safe-area-inset-top))}
  .map-viewer-canvas{padding:10px 8px max(16px,env(safe-area-inset-bottom))}
  .map-viewer-title{font-size:16px}
  .map-viewer-btn{width:36px;height:36px}
  .map-viewer-close{padding:0 10px;font-size:12px}
  .map-viewer-hint{bottom:max(14px,env(safe-area-inset-bottom));font-size:10px}
}
@media(prefers-reduced-motion:reduce){.map-viewer-backdrop,.map-viewer-dialog,.map-viewer-image{transition:none}}
