/* Map explorer page */
.map-page main.map-shell{max-width:1100px;padding-bottom:56px}
.map-hero{margin:12px 0 4px}
.map-hero h1{font-size:clamp(26px,4vw,34px);margin:6px 0}
.map-sub{color:var(--ink2);max-width:36em;margin:0 0 8px;line-height:1.65}
.map-controls{display:grid;grid-template-columns:1fr 1fr;gap:12px;background:#fff;border:2px solid var(--ink);border-radius:22px;padding:14px;margin:12px 0;box-shadow:4px 4px 0 var(--lav);animation:rise .5s var(--spring) both}
.map-controls label{font-size:12px;font-weight:700;color:var(--ink2);display:grid;gap:4px}
.map-controls select{font:700 14px "Noto Sans TC";padding:10px 32px 10px 12px;border:2px solid var(--ink);border-radius:14px;background:#fffafd;width:100%}
.map-layers{grid-column:1/-1;border:0;margin:0;padding:4px 0 0;display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center}
.map-layers legend{font:700 12px "Noto Sans TC";padding:0;color:var(--mute);width:100%;margin-bottom:2px}
.top nav a.on{background:var(--cyan);box-shadow:2px 2px 0 var(--ink)}

.map-legend{display:flex;flex-wrap:wrap;gap:10px 14px;margin:4px 0 10px;font:700 12px "Noto Sans TC"}
.map-legend .ml{display:inline-flex;align-items:center;gap:6px}
.map-legend i{width:12px;height:12px;border-radius:50%;border:2px solid var(--ink);display:inline-block}
.map-legend .low i{background:#5ce1b5}.map-legend .mid i{background:#53d8fb}
.map-legend .high i{background:#ff4fa3}.map-legend .unk i{background:#9aa3b5}

.map-layout{display:grid;gap:14px}
.map-stage{position:relative}
.map-canvas{height:min(58vh,520px);min-height:280px;border:2px solid var(--ink);border-radius:24px;overflow:hidden;background:linear-gradient(145deg,#e8f7ff 0%,#ffe6f2 55%,#ece3ff 100%);box-shadow:5px 5px 0 var(--ink);animation:rise .55s var(--spring) both}
.map-status{margin:8px 0 0;font-size:13px}
.map-fallback-box{padding:28px 20px;height:100%;display:grid;place-content:center;text-align:center;gap:8px}

.map-panel{background:#fff;border:2px solid var(--ink);border-radius:22px;padding:16px;box-shadow:4px 4px 0 var(--pink2)}
.map-panel h2{margin:0 0 8px;font-size:18px}
.map-panel h2:before{background:var(--cyan)}
#district-list{display:grid;gap:10px;margin-top:12px;max-height:min(62vh,560px);overflow:auto;-webkit-overflow-scrolling:touch}
#panel-hint .linkish{background:none;border:0;color:var(--ink2);text-decoration:underline;cursor:pointer;font:600 12px "Noto Sans TC";padding:0}
.dist-block{display:grid;gap:0}
.dist-card{display:grid;grid-template-columns:28px 1fr;gap:4px 8px;align-items:start;padding:12px 12px 12px 8px;border:2px solid var(--ink);border-radius:16px;background:linear-gradient(120deg,#fff,#fff8fc);transition:transform .2s var(--spring),background .15s ease,box-shadow .15s ease;width:100%;text-align:left;font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;box-shadow:2px 2px 0 var(--lav)}
.dist-card:hover{transform:translateY(-1px)}
.dist-card:active,.dist-card.pressed{transform:translateY(1px);box-shadow:0 0 0 var(--lav);background:#e8fbff}
.dist-card.on{outline:3px solid var(--cyan);outline-offset:1px;background:#e8fbff}
.dist-chevron{width:22px;height:22px;margin-top:2px;border-radius:8px;border:1.5px solid var(--ink);background:#fff;display:grid;place-items:center;transition:transform .2s var(--spring);flex-shrink:0}
.dist-chevron:before{content:"";width:7px;height:7px;border-right:2.5px solid var(--ink);border-bottom:2.5px solid var(--ink);transform:rotate(-45deg);margin-left:-2px}
.dist-card.on .dist-chevron,.dist-block.open .dist-chevron{transform:rotate(90deg);background:var(--cyan)}
.dist-body{display:grid;grid-template-columns:1fr auto;gap:2px 10px;min-width:0}
.dist-name{font-weight:900;grid-column:1/-1}
.dist-meta{font-size:12px;color:var(--mute)}.dist-meta .num{color:var(--ink);font-weight:700}
.dist-price{text-align:right;font-weight:700;font-size:14px}
.dist-price small{display:block;font:600 11px "Noto Sans TC";color:var(--mute)}
.dist-clinics{display:grid;gap:6px;padding:8px 2px 2px 30px}
.dist-clinics[hidden]{display:none !important}
.clinic-card{display:grid;gap:6px;padding:10px 12px;border:1.5px solid var(--ink);border-radius:14px;background:#fff;cursor:pointer;text-align:left;font:inherit;color:inherit;width:100%;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.clinic-card:hover,.clinic-card.on{background:#e8fbff;border-color:#0a1120}
.clinic-card:active{background:#d5f4ff}
.cc-top{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.cc-name{font-weight:800;font-size:13px;min-width:0}
.cc-price{font-weight:700;font-size:13px;text-align:right;flex-shrink:0}
.cc-price small{font:600 10px "Noto Sans TC";color:var(--mute)}
.inc-summary{display:flex;flex-wrap:wrap;gap:4px}
.inc-chip{font:600 10px "Noto Sans TC";padding:2px 6px;border-radius:99px;border:1px solid var(--ink);background:#f6f0f8;color:var(--ink2)}
.inc-chip.yes{background:var(--mint2)}.inc-chip.no{background:#ffd6cc}.inc-chip.unk{opacity:.85}
.cc-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.cc-popup-btn,.cc-page-link{font:700 11px "Noto Sans TC";padding:4px 10px;border-radius:99px;border:1.5px solid var(--ink);text-decoration:none;color:var(--ink);background:var(--cyan);cursor:pointer}
.cc-page-link{background:var(--lemon)}
.map-popup-inline{margin:4px 0 8px;padding:10px;border:2px dashed var(--ink);border-radius:14px;background:#fffafd}

/* InfoWindow content */
.map-popup{font:14px/1.45 "Noto Sans TC",sans-serif;max-width:260px;color:#1d1430}
.mp-name{font-size:15px;display:block;margin-bottom:2px}
.mp-meta{font-size:12px;margin-bottom:4px}
.mp-addr,.mp-phone{font-size:12px;color:#5d5470;margin-bottom:2px}
.mp-phone a{color:#0a1120;font-weight:700}
.mp-price{font:700 18px Fredoka,"Noto Sans TC";margin:6px 0 4px}
.mp-price small{font:600 11px "Noto Sans TC";color:#958ca6;margin-left:4px}
.mp-src{font-size:12px;color:#5d5470;margin-top:8px}
.mp-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;align-items:center}
.mp-link,.mp-maps{display:inline-block;font-weight:700;color:#0a1120;background:#53d8fb;padding:4px 10px;border-radius:99px;border:1.5px solid #1d1430;text-decoration:none;font-size:12px}
.mp-maps{background:#ffe066}

@media(min-width:900px){
  .map-layout{grid-template-columns:1fr 280px;align-items:start}
  .map-canvas{height:min(70vh,640px)}
  .map-controls{grid-template-columns:1.4fr 1fr auto;align-items:end}
  .map-layers{grid-column:auto;flex-direction:column;align-items:flex-start;padding-top:0}
  .map-layers legend{margin-bottom:4px}
  #district-list{max-height:min(62vh,560px)}
}
@media(max-width:520px){
  .map-controls{grid-template-columns:1fr}
  .map-hero h1{font-size:24px}
}
