.partner-map { --map-ocean:#e8eef0; --map-land:#fcfcf8; --map-border:#b3c2c5; --map-grid:#d5e0e2; --map-label:#596d74; border:1px solid var(--line); border-radius:4px; overflow:hidden; background:var(--surface); }
[data-theme="dark"] .partner-map { --map-ocean:#1e2a2e; --map-land:#344449; --map-border:#5c7076; --map-grid:#29393d; --map-label:#bdced1; }
.pm-head { display:flex; justify-content:space-between; align-items:center; gap:16px; padding:20px 24px; border-bottom:1px solid var(--line); }
.pm-head strong { font-size:16px; font-weight:650; }
.pm-head span { color:var(--muted); font-size:12px; }
.pm-layout { display:grid; grid-template-columns:minmax(0,1fr) 304px; }
.pm-stage { height:520px; position:relative; overflow:hidden; background:var(--map-ocean); isolation:isolate; }
.pm-canvas { width:100%; height:100%; display:block; touch-action:none; cursor:grab; outline-offset:-4px; }
.pm-canvas:active { cursor:grabbing; }
.pm-markers { position:absolute; inset:0; pointer-events:none; overflow:hidden; }
.pm-marker { position:absolute; left:0; top:0; width:44px; height:44px; margin:-22px 0 0 -22px; padding:0; border:0; background:transparent; pointer-events:auto; display:flex; align-items:center; justify-content:center; }
.pm-marker svg { width:var(--marker-size,16px); height:var(--marker-size,16px); overflow:visible; filter:drop-shadow(0 1px 2px #0003); }
.pm-brand-icon { display:block; width:var(--marker-size,32px); height:var(--marker-size,32px); object-fit:contain; background:#fff; padding:2px; border-radius:8px; box-shadow:0 1px 4px #0004; pointer-events:none; }
.pm-marker:hover .pm-brand-icon,.pm-marker:focus-visible .pm-brand-icon { box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--ink); }
.pm-brand-cluster .pm-brand-count { position:absolute; right:-3px; bottom:-3px; min-width:19px; width:auto; height:19px; padding:0 4px; font-size:11px; line-height:1; border-radius:10px; background:var(--ink); color:var(--paper); border:1px solid var(--surface); }
.pm-marker svg * { stroke:#fff; stroke-width:1.5; stroke-linejoin:round; }
.pm-marker:hover svg,.pm-marker:focus-visible svg { filter:drop-shadow(0 0 4px #0006); }
.pm-cluster span { display:grid; place-items:center; width:32px; height:32px; border-radius:50%; background:var(--ink); color:var(--paper); border:2px solid var(--surface); box-shadow:0 2px 5px #0002; font-size:12px; font-weight:750; }
.pm-city { position:absolute; white-space:nowrap; left:28px; top:14px; font-size:12px; line-height:16px; padding:2px 5px; background:var(--surface); color:var(--ink); border-radius:2px; box-shadow:0 1px 3px #0001; pointer-events:none; }
.pm-controls { position:absolute; top:16px; left:16px; display:flex; gap:8px; z-index:3; }
.pm-controls button { height:44px; min-width:44px; padding:0 12px; background:var(--surface); color:var(--ink); border:1px solid var(--line); border-radius:3px; font-size:13px; box-shadow:0 1px 5px #0001; }
.pm-controls .pm-zoom { font-size:24px; padding:0; }
.pm-controls button:hover { background:var(--soft); }
.pm-controls button:disabled { opacity:.45; cursor:default; }
.pm-scale { position:absolute; bottom:12px; left:16px; color:var(--map-label); font-size:12px; pointer-events:none; }
.pm-credit { position:absolute; bottom:12px; right:16px; font-size:12px; color:var(--map-label); background:var(--map-ocean); padding:0 4px; text-decoration:none; }
.pm-sidebar { min-width:0; height:520px; border-left:1px solid var(--line); display:flex; flex-direction:column; background:var(--surface); }
.pm-search { padding:20px 20px 12px; }
.pm-search label { display:block; font-size:12px; font-weight:650; margin-bottom:8px; }
.pm-search input { width:100%; font:inherit; font-size:14px; height:44px; background:var(--paper); color:var(--ink); border:1px solid var(--line); border-radius:3px; padding:0 12px; }
.pm-count { padding:0 20px 12px; color:var(--muted); font-size:12px; }
.pm-list { overflow-y:auto; overscroll-behavior:contain; flex:1; min-height:0; padding:0 8px 8px; }
.pm-row { display:block; width:100%; text-align:left; border:0; border-top:1px solid var(--line); background:transparent; padding:14px 12px; }
.pm-row strong { display:block; font-size:14px; line-height:1.5; font-weight:650; overflow-wrap:anywhere; }
.pm-row span { color:var(--muted); display:block; font-size:12px; margin-top:3px; }
.pm-row:hover,.pm-row[aria-pressed="true"] { background:var(--soft); }
.pm-detail { flex:1; min-height:0; overflow-y:auto; padding:20px; overflow-wrap:anywhere; }
.pm-detail h3 { font-size:22px; margin:20px 0 8px; line-height:1.3; }
.pm-detail p { font-size:14px; margin:12px 0; white-space:pre-line; }
.pm-detail .pm-location { color:var(--muted); font-size:13px; margin:0 0 20px; }
.pm-detail a { display:block; padding:8px 0; font-size:14px; }
.pm-detail small { display:block; font-size:12px; color:var(--muted); margin-top:24px; }
.pm-back { border:0; padding:8px 0; min-height:44px; background:none; font-size:13px; }
.pm-foot { display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px; padding:14px 24px; font-size:12px; color:var(--muted); border-top:1px solid var(--line); }
.pm-legend { display:flex; gap:16px; align-items:center; flex-wrap:wrap; }
.pm-legend span { display:inline-flex; align-items:center; gap:6px; }
.pm-empty { padding:20px; font-size:14px; color:var(--muted); }
@media(max-width:900px) { .pm-layout { grid-template-columns:minmax(0,1fr) 260px; } .pm-controls { gap:4px; left:8px; top:8px; } .pm-controls button { padding:0 8px; } }
@media(max-width:680px) {
  .pm-head { padding:16px; align-items:flex-start; flex-direction:column; gap:4px; }
  .pm-layout { grid-template-columns:1fr; }
  .pm-stage { height:360px; }
  .pm-sidebar { height:330px; border-left:0; border-top:1px solid var(--line); }
  .pm-search { padding:16px 16px 10px; }
  .pm-foot { padding:16px; }
  .pm-credit { bottom:10px; right:8px; font-size:12px; }
  .pm-scale { left:8px; bottom:10px; }
  .pm-city { display:none; }
}
