.map-header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}.map-breadcrumb{display:flex;flex-wrap:wrap;align-items:center;gap:10px;font-size:12px;color:#92969d}.map-breadcrumb a{color:#617993}.map-breadcrumb b{font-weight:500;color:#424b55}.map-back{font-size:12px;color:#617993}.map-toolbar{display:flex;align-items:end;flex-wrap:wrap;gap:12px;padding:20px 0 24px}.map-toolbar label{display:flex;flex-direction:column;gap:7px;color:#8b929a;font-size:10px}.map-toolbar input,.map-toolbar select{border:1px solid #e1e5e9;border-radius:10px;background:white;color:#56616c;padding:10px 12px;min-height:42px;font-size:12px}.map-search{flex:1;min-width:180px}.map-toolbar .map-free{flex-direction:row;align-items:center;gap:7px;min-height:42px;font-size:12px;color:#66717b}.map-free input{min-height:0;accent-color:var(--accent)}.map-workspace{display:grid;grid-template-columns:minmax(250px,.8fr) minmax(0,1.7fr);gap:24px;align-items:start}.map-sidebar{min-width:0}.map-sidebar h2{font-size:23px;letter-spacing:-.6px;margin:0 0 9px;font-weight:600}.map-sidebar>p{font-size:12px;color:#8a9199;line-height:1.9;margin:0 0 20px}.map-list-heading{display:block;font-size:10px;color:#929aa3;margin-bottom:12px}.map-panels{display:flex;flex-direction:column;gap:10px;max-height:620px;overflow:auto;padding:2px 3px 8px}.area-card{display:flex;flex-direction:column;text-align:left;border:1px solid #e3e7eb;border-radius:17px;background:white;padding:19px;transition:border-color .15s,box-shadow .15s}.area-card:hover{border-color:var(--area-accent);box-shadow:0 4px 20px #27384c08}.area-city{display:flex;align-items:center;justify-content:space-between;color:var(--area-accent);font-size:11px}.area-city b{font-size:18px;font-weight:400}.area-card strong{font-size:20px;font-weight:550;margin:8px 0;letter-spacing:-.5px}.area-subtitle{color:#828b95;font-size:11px;margin-bottom:16px}.area-count{color:#777f89;font-size:10px}.area-match{color:#9ba2ab;font-size:10px;margin-top:6px}.map-canvas-wrap{position:sticky;top:18px;border:1px solid #e3e7eb;border-radius:22px;overflow:hidden;background:#edf1ee}.gallery-map{width:100%;height:620px;z-index:0;background:#edf1ee}.gallery-map .leaflet-tile-pane{filter:none}.gallery-map .leaflet-control-attribution{font-size:9px;background:#fffffff0}.gallery-map .leaflet-control-attribution a{color:#607b94}.gallery-map .leaflet-control-zoom{border:1px solid #d9dfe5;border-radius:10px;overflow:hidden;box-shadow:0 3px 10px #1524320d}.gallery-map .leaflet-control-zoom a{font-weight:400;color:#687785}.map-reset-control button{border:1px solid #dce2e7;border-radius:10px;padding:9px 12px;background:white;color:#64717c;font-size:11px;box-shadow:0 3px 10px #1524320d}.map-canvas-caption{margin:0;padding:12px 16px;background:#fff;color:#939aa2;font-size:10px;line-height:1.7}.map-tile-note{position:absolute;top:60px;left:20px;right:20px;z-index:1000;background:#fffdf4;border:1px solid #ede6d2;padding:12px;border-radius:10px;font-size:11px;color:#8f8056}.city-marker,.area-marker{display:flex;flex-direction:column;gap:9px;min-height:68px;border:1px solid #d4dee7;background:#ffffffed;border-radius:14px;padding:14px 16px;box-shadow:0 5px 20px #31445c20;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif}.city-marker strong,.area-marker strong{display:flex;justify-content:space-between;align-items:center;color:#38526b;font-size:17px;line-height:1.1;font-weight:600}.city-marker small,.area-marker small{color:#89949e;font-size:10px;white-space:nowrap}.area-marker{border-top:3px solid var(--area-accent)}.area-marker strong{font-size:15px;color:var(--area-accent)}.venue-marker{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:3px solid white;border-radius:50%;background:var(--area-accent);color:white;font:600 11px -apple-system,BlinkMacSystemFont,sans-serif;box-shadow:0 2px 9px #24364c35}.area-marker-shell:focus-visible,.venue-marker-shell:focus-visible{outline:3px solid #83b4e8;outline-offset:5px;border-radius:15px}.venue-card{display:flex;gap:12px;border:1px solid #e3e7eb;background:white;border-radius:16px;padding:17px;text-align:left;transition:border-color .15s}.venue-card:hover{border-color:#aac4dd}.venue-number{display:flex;align-items:center;justify-content:center;flex:0 0 25px;width:25px;height:25px;border-radius:50%;background:#eef3f8;color:#6e88a0;font-size:10px}.venue-card-body{display:flex;flex-direction:column;min-width:0}.venue-kind{font-size:9px;color:#9aa2aa;line-height:1.7}.venue-card strong{font-size:14px;font-weight:550;line-height:1.5;margin:5px 0 11px;color:#3e4a56}.venue-show-title{font-size:11px;line-height:1.7;color:#808b96;overflow-wrap:anywhere}.venue-show-date{font-size:9px;color:#a0a7af;line-height:1.8;margin-top:7px}.map-status{display:inline-block;padding:3px 7px;border-radius:6px;color:#708672;background:#eef4ee;font-size:9px;margin-right:6px}.map-status.future{color:#9c885f;background:#f7f3e9}.venue-card-more{font-size:10px;color:#6386a9;margin-top:12px}.map-note{font-size:11px;line-height:1.9;color:#969da5;margin:24px 0 0}.map-empty{padding:25px 18px;border:1px dashed #dce2e8;border-radius:16px;font-size:13px;color:#687681}.map-empty p{font-size:11px;line-height:1.8;color:#929ba5}.map-empty button{border:0;background:#eaf1f8;border-radius:8px;color:#6987a4;padding:9px 12px;font-size:11px}.map-venue-address{font-size:12px!important}.map-detail-actions{display:flex;gap:18px;align-items:center;font-size:12px;color:#6686a5;margin:20px 0}.map-primary-link{background:#edf4fb;border-radius:10px;padding:11px 15px}.map-callout{border-left:2px solid #d3dfec;padding:7px 15px;font-size:12px!important}.map-exhibition{border:1px solid #e6eaf0;border-radius:14px;padding:18px;margin:12px 0}.map-exhibition h4{font-size:15px;line-height:1.6;font-weight:550;margin:12px 0 6px}.map-exhibition p{font-size:11px;margin:0 0 10px}.map-exhibition>a{font-size:11px;color:#698bad}.map-fee{font-size:10px;color:#949ca5}.map-page .intro{padding-bottom:38px}main>[data-view="map"]{padding-bottom:70px}.map-toolbar :focus-visible{outline:2px solid #9dbde0;outline-offset:3px}[hidden]{display:none!important}
@media(max-width:900px){.map-workspace{grid-template-columns:minmax(230px,.85fr) minmax(0,1.4fr);gap:18px}.map-toolbar{gap:9px}.map-toolbar .map-search{flex-basis:100%}.gallery-map{height:560px}.map-panels{max-height:560px}}
@media(max-width:700px){.map-workspace{display:flex;flex-direction:column}.map-canvas-wrap{position:relative;top:auto;order:-1;width:100%;border-radius:17px}.gallery-map{height:400px}.map-sidebar{width:100%}.map-panels{max-height:none;overflow:visible;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.area-card{padding:15px}.area-card strong{font-size:17px}.area-count{line-height:1.8}.area-subtitle{line-height:1.7}.map-toolbar label:not(.map-free){flex:1;min-width:100px}.map-toolbar .map-search{flex-basis:100%}.map-toolbar select,.map-toolbar input{max-width:100%;width:100%}.map-toolbar .map-free input{width:auto}.map-sidebar h2{margin-top:10px}.venue-card{grid-column:1/-1}.map-note{font-size:10px}.map-header{align-items:flex-start}.map-back{white-space:nowrap}.map-breadcrumb{font-size:10px}.map-canvas-caption{font-size:9px}.city-marker{padding:12px 14px}.map-page .intro{padding-bottom:27px}}

/* V1.1: quiet street map and compact places, with no region outlines. */
.map-canvas-wrap{border-radius:16px;background:#f6f7f9;border-color:#e4e7eb}
.gallery-map{background:#f6f7f9}
.area-card{padding:15px 17px;border-radius:12px;gap:3px}
.area-city{font-size:11px}.area-city b{font-size:15px}
.area-card strong{font-size:18px;margin:3px 0 4px;line-height:1.4}
.area-subtitle{font-size:11px;line-height:1.5;margin-bottom:5px}
.area-count,.area-match{font-size:10px;line-height:1.6}.area-match{margin-top:0}
.city-marker,.area-marker{padding:11px 14px;min-height:54px;gap:6px;border-radius:10px;background:#fff;border:1px solid #e2e6eb;box-shadow:0 2px 8px #25364c1a}
.city-marker strong{font-size:16px;color:#273544}.city-marker small,.area-marker small{font-size:10px;color:#707985}
.area-marker strong{color:#344657;font-size:14px}.area-marker{border-top:1px solid #e2e6eb}
.venue-marker{border-width:2px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);box-shadow:0 2px 5px #20324830}
.venue-marker>span{transform:rotate(45deg)}
.venue-card{border-radius:12px;padding:16px}.venue-kind{font-size:10px}.venue-card strong{font-size:15px}.venue-show-title{font-size:12px}.venue-show-date{font-size:10px}
.map-toolbar label{font-size:11px}.map-toolbar input,.map-toolbar select{color:#3f4b58}
@media(max-width:700px){.area-card{padding:14px}.area-card strong{font-size:16px}.map-canvas-wrap{border-radius:14px}}

.map-place-marker{border:0;background:none;padding:0;text-align:left;cursor:pointer;overflow:visible}
.map-place-marker:focus-visible{outline:3px solid #8bb8ef;outline-offset:4px;border-radius:10px}
.map-place-marker .venue-marker{margin:0 0 4px}
.gallery-map .maplibregl-ctrl-attrib{font-size:9px;background:#ffffffed;color:#707985}.gallery-map .maplibregl-ctrl-attrib a{color:#65788c}
.gallery-map .maplibregl-ctrl-group{border:1px solid #dce2e7;border-radius:9px;box-shadow:0 2px 8px #20324814}
.gallery-map .maplibregl-ctrl-attrib-button{display:none}.gallery-map .maplibregl-canvas{outline:none}

.venue-cluster{display:flex;width:38px;height:38px;align-items:center;justify-content:center;border:3px solid #fff;border-radius:50%;background:#e3efff;box-shadow:0 2px 8px #254a7c33;color:#1a65ca;font-size:11px;font-weight:600}

/* V1.1.1: a modest but visible way back to the previous map level. */
.map-back{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:38px;padding:9px 14px;border:1px solid #cfdae6;border-radius:10px;background:#edf3fa;color:#385f86;font-size:13px;font-weight:500;line-height:1.4;white-space:nowrap;transition:background .15s,border-color .15s}
.map-back:hover{background:#e1ecf8;border-color:#b3c8df}.map-back:focus-visible{outline:2px solid #83ade0;outline-offset:3px}

/* Activity colour is based on verified exhibition dates, not live opening hours. */
.venue-marker.is-active{--area-accent:#1a73e8}.venue-marker.is-inactive{--area-accent:#929ba6}
.venue-number.is-active{background:#1a73e8;color:#fff}.venue-number.is-inactive{background:#929ba6;color:#fff}
.venue-cluster.is-inactive{background:#edf0f3;color:#76818d}
.map-legend{display:flex;flex-wrap:wrap;gap:8px 16px;color:#677380;font-size:10px;line-height:1.7;margin-bottom:5px}
.map-legend>span{display:inline-flex;align-items:center;gap:6px}.map-dot{display:inline-block;width:9px;height:9px;border-radius:50%;flex-shrink:0}.map-dot.active{background:#1a73e8}.map-dot.inactive{background:#929ba6}.map-canvas-caption>p{margin:0}

/* 2026-11 visual system: paper / ink / single accent (shared tokens in style.css). */
.map-page .intro{padding-bottom:clamp(20px,3vw,30px)}
.map-header{margin-bottom:16px}
.map-breadcrumb{font-size:10.5px;color:var(--muted-2)}
.map-breadcrumb a{color:var(--accent-ink)}
.map-breadcrumb b{font-weight:600;color:var(--ink-2)}
.map-back{min-height:36px;padding:8px 14px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--ink-2);font-size:11.5px;font-weight:500}
.map-back:hover{border-color:var(--accent);background:var(--paper-2)}
.map-back:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.map-toolbar{padding:16px 0 22px;gap:10px}
.map-toolbar label{font-size:9.5px;letter-spacing:.06em;color:var(--muted-2)}
.map-toolbar input,.map-toolbar select{min-height:40px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink-2);font-size:12px;padding:9px 11px}
.map-toolbar input:focus,.map-toolbar select:focus{outline:2px solid var(--accent);outline-offset:2px;border-color:var(--accent)}
.map-toolbar .map-free{color:var(--muted);font-size:11px}
.map-free input{accent-color:var(--accent)}
.map-workspace{gap:22px}
.map-sidebar h2{font-size:22px;letter-spacing:-.02em;color:var(--ink)}
.map-sidebar>p{font-size:11.5px;color:var(--muted)}
.map-list-heading{font-size:9px;letter-spacing:.12em;color:var(--muted-2)}
.map-panels{gap:8px}
.area-card{padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:#fff;transition:border-color .15s,box-shadow .15s}
.area-card:hover{border-color:var(--accent);box-shadow:0 14px 30px -26px rgba(20,17,14,.5)}
.area-city{color:var(--accent-ink);font-size:10px;letter-spacing:.06em}
.area-city b{font-family:var(--serif);font-size:15px}
.area-card strong{color:var(--ink);font-size:17px;font-weight:600}
.area-subtitle{color:var(--muted-2);font-size:10.5px}
.area-count,.area-match{color:var(--muted-2);font-size:9.5px}
.map-canvas-wrap{border:1px solid var(--line);border-radius:14px;background:#F1EDE5;overflow:hidden}
.gallery-map{background:#F1EDE5}
.map-canvas-caption{color:var(--muted-2);font-size:9.5px;line-height:1.7}
.map-legend{color:var(--muted);font-size:9.5px}
.map-dot{width:8px;height:8px}
.map-dot.active{background:var(--accent)}
.map-dot.inactive{background:#A9A196}
.map-note{font-size:9.5px;line-height:1.9;color:var(--muted-2)}
.venue-marker.is-active{--area-accent:var(--accent)}
.venue-marker.is-inactive{--area-accent:#A9A196}
.venue-number.is-active{background:var(--accent);color:var(--on-accent)}
.venue-number.is-inactive{background:#A9A196;color:#fff}
.venue-cluster{border-color:#fff;background:var(--accent-soft);color:var(--accent-ink);box-shadow:0 2px 8px rgba(20,17,14,.18)}
.venue-cluster.is-inactive{background:#EDEAE2;color:var(--muted)}
.city-marker,.area-marker{background:#fff;border:1px solid var(--line);box-shadow:0 2px 10px rgba(20,17,14,.08);border-radius:10px}
.city-marker strong{color:var(--ink)}
.city-marker small,.area-marker small{color:var(--muted-2)}
.area-marker strong{color:var(--ink-2)}
.map-place-marker:focus-visible{outline:2px solid var(--accent);outline-offset:4px}
.venue-card{background:#fff;border-radius:12px}
.venue-card strong{color:var(--ink)}
.venue-kind,.venue-show-date{color:var(--muted-2)}
.map-primary-link,.map-detail-actions a{color:var(--accent-ink)}

/* Mobile: keep the map search on its own row instead of squeezing the date/type fields. */
@media(max-width:700px){
  .map-toolbar label:not(.map-free){flex:1 1 calc(50% - 6px);min-width:0}
  .map-toolbar label:not(.map-free) input,.map-toolbar label:not(.map-free) select{width:100%}
  .map-toolbar label.map-search{flex:1 0 100%;max-width:100%}
}
