/* Paper cartography. Each map retains its own projection, controls and pin layout. */
.minot-map { border:1px solid var(--border-strong); background:var(--bone); isolation:isolate; }
.mm-top { padding:24px; display:flex; align-items:center; justify-content:space-between; gap:24px; border-bottom:1px solid var(--border); background:var(--warm-surface); }
.mm-title { display:flex; flex-direction:column; gap:8px; }
.mm-title .mono { font-size:10px; color:var(--ink-3); letter-spacing:.14em; }
.mm-filters { display:flex; border:1px solid var(--border-strong); }
.mm-filters button { border:0; background:transparent; font-family:var(--mono); font-size:10px; font-weight:400; letter-spacing:.1em; text-transform:uppercase; cursor:pointer; padding:12px 16px; min-height:44px; transition:background .25s var(--ease),color .25s var(--ease); }
.mm-filters button+button { border-left:1px solid var(--border-strong); }
.mm-filters button:hover { background:var(--warm-2); }
.mm-filters button[aria-pressed=true] { background:var(--ink); color:var(--bone); }
.mm-stage { height:var(--map-height,520px); position:relative; overflow:hidden; touch-action:pan-y; background:var(--bone); cursor:grab; }
.mm-stage.is-dragging { cursor:grabbing; touch-action:none; }
.mm-world { position:absolute; width:100%; aspect-ratio:1600/1220.9; top:50%; transform:translateY(-50%); transform-origin:0 0; pointer-events:none; }
.mm-image { width:100%; height:100%; max-width:none; user-select:none; }
.mm-leaders,.mm-pins { position:absolute; inset:0; width:100%; height:100%; pointer-events:none; }
.mm-leaders { overflow:visible; }
.mm-leaders line { stroke:var(--deep-sand); stroke-width:.8; opacity:.7; }
.mm-leaders circle { fill:var(--deep-sand); }
.mm-pin { width:40px; height:40px; position:absolute; transform:translate(-50%,-50%); display:flex; align-items:center; justify-content:center; pointer-events:auto; text-decoration:none; z-index:2; cursor:pointer; }
/* Circular geometry is reserved for the points and rings that encode pin status. */
.mm-dot,.mm-key { display:block; width:14px; height:14px; flex:none; border-radius:50%; background:var(--bone); border:1.5px solid var(--ink); }
.mm-franchise .mm-dot,.mm-key.mm-franchise,.mm-live .mm-dot,.mm-key.mm-live { background:var(--ink); }
.mm-unverified .mm-dot,.mm-key.mm-unverified { border-style:dashed; }
.mm-live .mm-dot { width:16px; height:16px; animation:mm-pulse 2.8s infinite; }
@keyframes mm-pulse { 0%,100% { box-shadow:0 0 0 4px rgba(19,19,18,.12); } 50% { box-shadow:0 0 0 10px rgba(19,19,18,.03); } }
.mm-pin.is-highlight { z-index:4; }
.mm-pin.is-highlight .mm-dot { outline:1px solid var(--ink); outline-offset:5px; }
.mm-pin:hover,.mm-pin:focus-visible,.mm-pin[aria-expanded=true] { z-index:5; }
.mm-pin:hover .mm-dot,.mm-pin[aria-expanded=true] .mm-dot { outline:1px solid var(--ink); outline-offset:5px; }
.mm-pin-label { position:absolute; left:37px; top:4px; font-size:10px; font-family:var(--mono); font-weight:400; letter-spacing:.08em; text-transform:uppercase; white-space:nowrap; background:var(--warm-surface); padding:6px 8px; border:1px solid var(--border-strong); pointer-events:none; line-height:1.5; max-width:200px; overflow:hidden; text-overflow:ellipsis; }
.mm-pin-label small { display:block; font-size:9px; color:var(--ink-2); font-weight:400; }
.mm-pin.label-left .mm-pin-label { left:auto; right:37px; }
.mm-pin[hidden] { display:none; }
.minot-map:not(.is-ready) .mm-pins,.minot-map:not(.is-ready) .mm-controls { visibility:hidden; }
.mm-north { position:absolute; left:24px; top:24px; font-family:var(--mono); font-size:10px; text-align:center; pointer-events:none; }
.mm-north span { display:block; font-size:28px; line-height:1.2; }
.mm-controls { position:absolute; right:20px; top:20px; z-index:8; display:flex; flex-direction:column; background:var(--warm-surface); border:1px solid var(--border-strong); }
.mm-controls button { background:none; border:0; width:44px; height:44px; cursor:pointer; font-size:22px; font-family:var(--mono); font-weight:400; }
.mm-controls button+button { border-top:1px solid var(--border); }
.mm-controls button:hover { background:var(--warm-2); }
.mm-controls button:disabled { color:var(--weathered-metal); cursor:default; }
.mm-scale { position:absolute; bottom:20px; left:24px; font-family:var(--mono); font-size:10px; pointer-events:none; }
.mm-scale span { display:block; width:90px; height:6px; border:1px solid var(--ink-3); border-top:0; margin-bottom:6px; max-width:180px; }
.mm-area { position:absolute; right:24px; bottom:20px; font-size:10px; line-height:1.7; letter-spacing:.08em; color:var(--ink-3); text-align:right; pointer-events:none; }
.mm-card { position:absolute; width:300px; max-width:calc(100% - 24px); max-height:calc(100% - 24px); overflow:auto; overscroll-behavior:contain; background:var(--warm-surface); border:1px solid var(--ink); padding:24px; z-index:12; cursor:auto; }
.mm-card[hidden] { display:none; }
.mm-card-type { font-size:10px; padding-right:24px; }
.mm-card-name { font-size:28px; font-weight:300; line-height:1.08; margin:16px 0 12px; padding-right:14px; }
.mm-card-brands { font-size:13px; color:var(--ink-2); margin-bottom:16px; }
.mm-card-address { font-size:14px; margin:16px 0 8px; }
.mm-card-verification { font-size:12px; }
.mm-card-link { display:flex; align-items:center; justify-content:space-between; font-family:var(--mono); font-weight:400; font-size:10px; letter-spacing:.12em; text-transform:uppercase; border-top:1px solid var(--border); padding-top:16px; margin-top:20px; text-decoration:none; min-height:44px; }
.mm-card-link:hover { text-decoration:underline; text-underline-offset:4px; }
.mm-close { position:absolute; top:4px; right:4px; width:40px; height:40px; border:0; background:transparent; font-size:24px; cursor:pointer; }
.mm-close:hover { background:var(--warm-2); }
.mm-bottom { display:flex; justify-content:space-between; gap:24px; padding:24px; border-top:1px solid var(--border); align-items:center; background:var(--warm-surface); }
.mm-legend { display:flex; gap:24px; flex-wrap:wrap; }
.mm-legend>span { display:flex; align-items:center; gap:8px; font-family:var(--mono); font-size:9px; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-2); }
.mm-key { width:11px; height:11px; }
.mm-help { font-size:12px; color:var(--ink-3); }
.mm-credit { padding:0 24px 20px; display:flex; gap:24px; justify-content:space-between; font-family:var(--mono); font-size:9px; line-height:1.8; color:var(--ink-3); background:var(--warm-surface); }
.mm-credit>span { max-width:620px; }
.mm-credit>a { flex:none; }
.mm-credit a { text-underline-offset:4px; }
.mm-fallback { padding:12px 24px; font-size:13px; }
.mm-fallback ul { padding:12px 20px; }
.is-ready .mm-fallback { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
.is-ready .mm-fallback:focus-within { position:relative; width:auto; height:auto; clip-path:none; }
.mm-compact .mm-top,.mm-compact .mm-bottom { padding:20px 24px; }
.mm-compact .mm-help,.mm-compact .mm-area { display:none; }
.mm-compact .mm-legend { gap:16px; }
.mm-compact .mm-credit { flex-direction:column; gap:8px; }
@media(max-width:640px) {
  .mm-top { padding:20px 16px; align-items:flex-start; gap:20px; flex-direction:column; }
  .mm-title { gap:8px; }
  .mm-title .mono { font-size:9px; }
  .mm-filters { width:100%; }
  .mm-filters button { flex:1; padding:10px 6px; font-size:9px; letter-spacing:.03em; }
  .mm-stage { height:min(var(--map-height,520px),480px); }
  .mm-bottom { padding:20px 16px; display:block; }
  .mm-legend { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
  .mm-help { margin-top:16px; }
  .mm-credit { padding:0 16px 20px; flex-direction:column; gap:12px; }
  .mm-north { left:16px; top:16px; }
  .mm-controls { right:12px; top:12px; }
  .mm-pin-label { max-width:145px; font-size:9px; letter-spacing:.03em; }
  .mm-scale { left:16px; bottom:16px; }
  .mm-area { right:16px; bottom:16px; }
  .mm-compact .mm-stage { height:min(var(--map-height,360px),360px); }
  .mm-compact .mm-top,.mm-compact .mm-bottom { padding:20px 16px; }
}
@media(prefers-reduced-motion:reduce) { .mm-live .mm-dot { animation:none; } }
