[data-location-map] { margin: 2rem 0; padding: 1.25rem; border: 1px solid #cfc5b4; background: #f4f0e8; color: #25221d; border-radius: .3rem; }
[data-location-map] header { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
[data-location-map] h2 { margin: 0; }
[data-location-map] header span { font-size: .8rem; color: #565247; }
[data-location-map] button[data-map-load] { background: #344e42; color: #fffdf8; padding: .6rem 1rem; border: 0; border-radius: .25rem; cursor: pointer; font: inherit; }
[data-location-map] button:focus-visible, [data-location-map] a:focus-visible, [data-location-map] summary:focus-visible { outline: 3px solid #7a302c; outline-offset: 3px; }
[data-map-canvas] { height: 480px; width: 100%; border-radius: .25rem; background: #e8e2d6; }
[data-map-layout] { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); gap: 1.25rem; position: relative; }
[data-map-detail] { min-width: 0; padding: .5rem 0 .5rem 1rem; border-left: 1px solid #cfc5b4; }
.ev-map-photo { color: #25221d; line-height: 1.4; }
.ev-map-photo h3 { font: inherit; font-size: 1.15rem; font-weight: 700; margin: .75rem 0 .5rem; overflow-wrap: anywhere; white-space: normal; }
.ev-map-photo img { display: block; width: 100%; height: 300px; object-fit: contain; background: #e8e2d6; }
.ev-map-photo p { margin: .5rem 0; }
.ev-map-photo a { color: #7a302c; }
.ev-map-photo .ev-map-date { font-weight: 600; color: #565247; }
.ev-map-photo nav { display: flex; gap: .75rem; margin-top: .75rem; }
.ev-map-photo nav button { min-height: 44px; flex: 1; padding: .5rem .75rem; border: 1px solid #7a302c; border-radius: .25rem; color: #7a302c; background: #fffdf8; font: inherit; cursor: pointer; }
.ev-map-photo nav button:disabled { opacity: .45; cursor: default; }
[data-map-connector] { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; overflow: hidden; }
[data-map-connector][data-visible="false"] { display: none; }
[data-map-connector] line { stroke: #7a302c; stroke-width: 1.5; stroke-dasharray: 4 4; opacity: .6; vector-effect: non-scaling-stroke; }
.ev-map-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
#archive-map, #photo-gallery { scroll-margin-top: 2rem; }
@media (max-width: 899px) {
  [data-map-layout] { grid-template-columns: minmax(0, 1fr); }
  [data-map-detail] { padding: .75rem 0 0; border-left: 0; border-top: 1px solid #cfc5b4; }
  [data-map-connector] { display: none; }
  .ev-map-photo img { height: auto; max-height: 360px; }
}
@media (max-width: 600px) { [data-location-map] { padding: .75rem; } [data-map-canvas] { height: 360px; } }
.ev-map-primary { font-weight: 700; }
.ev-map-secondary { font-size: .85em; }
.ev-map-primary:focus-visible, .ev-map-secondary:focus-visible, .ev-map-photo a:focus-visible, .ev-map-photo button:focus-visible { outline: 3px solid #7a302c; outline-offset: 3px; }
[data-map-time] { margin: 1rem 0; }
[data-map-filters] { display: flex; gap: .5rem; flex-wrap: wrap; }
[data-map-filters] button { min-height: 44px; padding: .5rem .75rem; border: 1px solid #344e42; border-radius: .25rem; background: #fffdf8; color: #344e42; font: inherit; cursor: pointer; }
[data-map-filters] button[aria-pressed="true"] { background: #344e42; color: #fffdf8; font-weight: 700; }
[data-map-time] .ev-map-time-help { font-size: .85rem; margin: .5rem 0; color: #565247; }
