.location-directory { color: #183c4a; }
.location-directory strong { display: inline; margin-right: 0; }
.location-directory-layout { display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(0, .92fr); gap: 1.5rem; align-items: start; }
.location-directory-list { display: grid; gap: 1rem; min-width: 0; margin: 0; padding: 0; list-style: none; }
.location-directory-card { min-width: 0; padding: 1.25rem; border: 1px solid #dce3e3; border-radius: .75rem; background: #fff; box-shadow: 0 3px 12px rgba(24,60,74,.05); scroll-margin-top: 1.5rem; }
.location-directory-card.is-selected { border-color: #657c7e; box-shadow: 0 0 0 2px #657c7e; }
.location-directory-featured { border: 2px solid #e26d3d; background: linear-gradient(135deg, #fff8f2, #fff); }
.location-directory-featured.is-selected { border-color: #e26d3d; box-shadow: 0 0 0 2px #e26d3d; }
.location-directory-labels { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: .75rem; }
.location-directory-kind, .location-directory-featured-label { display: inline-flex; padding: .3rem .6rem; border-radius: 99px; background: #eef2f1; color: #183c4a; font-size: .72rem; font-weight: 600; }
.location-directory-featured-label { background: #e26d3d; color: #fff; }
.location-directory-place { margin: 0 0 .4rem; color: #526b6d; font-size: .8rem; font-weight: 600; }
.location-directory-card h3 { margin: 0 0 .5rem; font-size: 1.15rem; line-height: 1.4; font-weight: 700; overflow-wrap: anywhere; }
.location-directory-address { margin: 0 0 .75rem; color: #526b6d; font-size: .85rem; line-height: 1.6; }
.location-directory-description { margin: 0 0 .75rem; color: #4d5d60; font-size: .9rem; line-height: 1.7; }
.location-directory-tip { margin: 0 0 1rem; color: #607174; font-size: .8rem; line-height: 1.65; }
.location-directory-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem 1rem; }
.location-directory-actions a, .location-directory-actions button { color: #526b6d; font-family: inherit; font-size: .8rem; font-weight: 600; text-decoration: underline; text-underline-offset: .2rem; }
.location-directory-actions button { padding: .45rem .65rem; border: 1px solid #b9c8ca; border-radius: .35rem; background: #eef2f1; text-decoration: none; cursor: pointer; }
.location-directory [hidden] { display: none !important; }
.location-directory a:focus-visible, .location-directory button:focus-visible, .location-directory-card:focus-visible { outline: 3px solid #183c4a; outline-offset: 4px; }
.location-directory-map-column { position: sticky; top: 1.5rem; min-width: 0; }
.location-directory-map-panel { min-width: 0; }
.location-directory-map { position: relative; height: 560px; max-height: 70vh; min-height: 300px; width: 100%; border: 1px solid #b9c8ca; border-radius: .75rem; overflow: hidden; background: #eef2f1; isolation: isolate; }
.location-directory-map-fallback { padding: 1.5rem; color: #526b6d; font-size: .9rem; line-height: 1.7; }
.location-directory-legend { display: flex; flex-wrap: wrap; gap: .5rem 1rem; margin-top: .8rem; font-size: .75rem; line-height: 1.5; color: #526b6d; }
.location-directory-legend span { display: inline-flex; align-items: center; gap: .45rem; }
.location-directory-legend i { width: .65rem; height: .65rem; border-radius: 50%; background: #657c7e; flex: 0 0 auto; }
.location-directory-legend i.is-featured { background: #e26d3d; }
.location-directory-map-hint { margin: .7rem 0 0; color: #607174; font-size: .75rem; line-height: 1.65; }
.location-directory-overview { margin-top: .8rem; padding: .5rem .7rem; border: 1px solid #b9c8ca; border-radius: .35rem; background: #fff; color: #526b6d; font-family: inherit; font-size: .8rem; font-weight: 600; cursor: pointer; }
.location-directory-marker { background: none; border: 0; }
.location-directory-marker span { display: flex; align-items: center; justify-content: center; width: 30px; height: 30px; border: 2px solid #fff; border-radius: 50%; background: #657c7e; color: #fff; box-shadow: 0 2px 7px rgba(24,60,74,.4); font-family: Montserrat, sans-serif; font-size: .75rem; font-weight: 700; }
.location-directory-marker.is-featured span { background: #e26d3d; }
.location-directory .leaflet-popup-content { margin: 1rem; font-family: Montserrat, sans-serif; font-size: .8rem; line-height: 1.6; }
.location-directory .location-directory-popup-title { display: block; margin-bottom: .35rem; color: #183c4a; }
.location-directory-popup-kind { display: block; margin-bottom: .35rem; color: #526b6d; }
.location-directory .leaflet-popup-content p { margin: .5rem 0; }
.location-directory-popup-actions { display: flex; flex-wrap: wrap; gap: .6rem; margin-top: .75rem; }
.location-directory .leaflet-popup-content a { color: #526b6d; text-decoration: underline; }
.location-directory-dialog { width: min(42rem, calc(100% - 2rem)); max-width: none; max-height: calc(100vh - 2rem); max-height: calc(100dvh - 2rem); margin: auto; padding: 1rem; border: 0; border-radius: 1rem; background: #fff; color: #183c4a; overflow-y: auto; }
.location-directory-dialog::backdrop { background: rgba(24,60,74,.55); }
.location-directory-map-close { align-items: center; justify-content: space-between; gap: 1rem; width: 100%; margin-bottom: .75rem; padding: .6rem .8rem; border: 1px solid #b9c8ca; border-radius: .35rem; background: #fff; color: #183c4a; font-family: inherit; font-size: .85rem; font-weight: 600; cursor: pointer; }
.location-directory-map-close span { font-size: 1.4rem; line-height: 1; }
.location-directory-dialog .location-directory-map { height: 55vh; height: 55dvh; max-height: none; min-height: 250px; }
@media (max-width: 900px) {
    .location-directory-layout { grid-template-columns: minmax(0, 1fr); }
    .location-directory-map-column { position: static; order: -1; }
    .location-directory-map { height: 380px; min-height: 250px; }
}
@media (max-width: 480px) {
    .location-directory-card { padding: 1rem; }
    .location-directory-dialog { width: calc(100% - 1rem); padding: .75rem; }
    .location-directory-map { height: 320px; }
}
