/* Map page. Colours come from the theme tokens (themes.css) so pins and chrome follow the selected theme and light/dark mode. */
.map-filters{align-items:center}
.map-layers{border:0;padding:0;margin:0;display:flex;gap:6px 14px;flex-wrap:wrap}
.map-check{display:inline-flex;gap:6px;align-items:center;font-weight:600;color:var(--heading);cursor:pointer}
.map-check input{width:18px;height:18px;accent-color:var(--accent)}
.map-wrap{display:grid;grid-template-columns:minmax(0,1fr) 360px;grid-template-rows:min(72vh,720px);gap:16px;margin:12px 0}
.map-tools{display:flex;justify-content:flex-end;margin-top:12px}
#map{width:100%;height:100%;min-height:360px;border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--hl);z-index:0}
.map-side{display:flex;flex-direction:column;min-height:0;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:12px 14px}
.map-side-head{flex:0 0 auto}
.map-side-head p{margin:0 0 8px}
.map-side-actions{display:flex;gap:10px 14px;align-items:center;flex-wrap:wrap;margin-bottom:8px}
.map-list{list-style:none;margin:0;padding:0;overflow:auto;flex:1 1 auto;min-height:0}
.map-row{display:flex;gap:10px;justify-content:space-between;align-items:center;padding:9px 0;border-top:1px solid var(--line)}
.map-row-main{min-width:0}
.map-row-title{display:block;font-weight:700;color:var(--heading);text-decoration:none;overflow:hidden;text-overflow:ellipsis}
.map-row-title:hover{text-decoration:underline}
.map-row-main .muted{font-size:.85rem}
.map-row-btn{flex:0 0 auto;border:1px solid var(--line-2);background:var(--surface);color:var(--heading);border-radius:999px;padding:5px 12px;font:inherit;font-size:.85rem;font-weight:600;cursor:pointer}
.map-row-btn:hover{background:var(--hl);border-color:var(--hl-edge)}
.map-more{padding:10px 0}
/* Pins: teardrops in theme colours (accent = event, primary = place) */
.pawpin-wrap{background:none;border:0}
.pawpin{display:block;width:22px;height:22px;margin:3px 2px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:var(--primary);border:2px solid #fff;box-shadow:0 2px 6px rgba(0,0,0,.4)}
.pawpin-e{background:var(--accent)}
.pawpin-z{outline:2px dashed #ffd24a;outline-offset:1px}
.pawpin-me{stroke:#fff;stroke-width:3;fill:#2a7de1;fill-opacity:1}
/* Clusters follow the theme */
.marker-cluster-small,.marker-cluster-medium,.marker-cluster-large{background:color-mix(in srgb,var(--primary) 35%,transparent)}
.marker-cluster-small div,.marker-cluster-medium div,.marker-cluster-large div{background:var(--primary);color:#fff;font-weight:700}
/* Popups */
.leaflet-popup-content-wrapper{border-radius:12px;background:var(--surface);color:var(--ink)}
.leaflet-popup-tip{background:var(--surface)}
.leaflet-popup-content{margin:12px 14px}
.pawpop-title{display:block;color:var(--heading);font-size:1rem;margin-bottom:2px}
.pawpop-meta{color:var(--muted);font-size:.88rem;margin:2px 0}
.pawpop-flag{display:inline-block;margin:2px 0;padding:0 7px;border:1px dashed #b88a00;border-radius:5px;font-size:.7rem;font-weight:800;text-transform:uppercase;color:#7a5a00}
.pawpop-hero{margin:-12px -14px 8px;position:relative;line-height:0;border-radius:12px 12px 0 0;overflow:hidden;background:var(--hl)}
.pawpop-img{display:block;width:100%;height:130px;object-fit:cover}
.pawpop-credit{position:absolute;left:0;right:0;bottom:0;padding:2px 8px;line-height:1.3;font-size:.68rem;color:#fff;background:rgba(0,0,0,.55)}
.pawpop-links{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:6px}
.pawpop-link{display:inline-block;margin-top:0;font-weight:700;color:var(--accent-text)}
.map-intro{margin:0 0 10px}
.leaflet-container a.pawpop-link{color:var(--accent-text)}
/* Dark mode: the same free tiles, darkened in the browser (a hosted dark basemap can start needing a key) */
html[data-mode="dark"] .leaflet-tile-pane{filter:invert(1) hue-rotate(180deg) brightness(.92) contrast(.9) saturate(.8)}
html[data-mode="dark"] .leaflet-control-attribution,html[data-mode="dark"] .leaflet-bar a{background:var(--surface);color:var(--ink)}
.leaflet-control-attribution a{color:inherit}
/* Phones: the map gets an explicit row height (a flex-basis on the map once squashed the map to a strip) */
@media (max-width:860px){
  .map-wrap{grid-template-columns:1fr;grid-template-rows:min(55vh,420px) auto}
  .map-side{max-height:none}
  .map-list{max-height:none;overflow:visible}
}
@media (prefers-reduced-motion:reduce){.leaflet-fade-anim .leaflet-popup,.leaflet-zoom-anim .leaflet-zoom-animated{transition:none}}
.map-switch{display:flex;gap:6px;margin:6px 0 10px}.map-switch a{display:inline-flex;align-items:center;min-height:44px;padding:0 18px;border:1px solid var(--line-2);border-radius:999px;background:var(--surface);color:var(--heading);font-weight:600;text-decoration:none}.map-switch a[aria-current]{background:var(--primary);border-color:var(--primary);color:#fff}
