/* =========================================================================
   Lankan Travel — Interactive Map (Step 3)
   Uses the same brand tokens defined in app.css.
   ========================================================================= */

.explore-hero { padding: var(--space-8) var(--space-4) var(--space-4); text-align: center; }
.explore-hero .lead { max-width: 640px; margin: 0 auto; color: var(--color-gray-700); }

.explore-controls {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
    padding-bottom: var(--space-4);
}

.explore-search-bar input {
    width: 100%;
    padding: var(--space-3);
    border: 1px solid var(--color-gray-300);
    border-radius: var(--radius);
    font-size: 1rem;
    min-height: 44px;
}

.explore-category-filters {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
}

.category-chip {
    padding: var(--space-2) var(--space-4);
    border-radius: 999px;
    border: 1px solid var(--color-gray-300);
    background: var(--color-white);
    cursor: pointer;
    font: inherit;
    min-height: 40px;
}
.category-chip.is-active {
    background: var(--color-royal-blue);
    color: var(--color-white);
    border-color: var(--color-royal-blue);
}

.explore-layout {
    display: grid;
    grid-template-columns: 2fr 1fr;
    gap: var(--space-4);
    align-items: start;
}

.explore-map-wrap {
    position: relative;
    height: 520px;
    border-radius: var(--radius-lg);
    overflow: hidden;
    border: 1px solid var(--color-gray-300);
    background: var(--color-gray-100);
}

#map-canvas { width: 100%; height: 100%; }

.map-state-overlay {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(255, 255, 255, 0.9);
    font-weight: 600;
    color: var(--color-gray-700);
    z-index: 500;
}
.map-state-overlay[hidden] { display: none; }

.explore-panel {
    background: var(--color-white);
    border: 1px solid var(--color-gray-300);
    border-radius: var(--radius-lg);
    padding: var(--space-4);
    min-height: 200px;
}
.explore-panel__empty { color: var(--color-gray-700); text-align: center; padding: var(--space-6) 0; }

.explore-panel__cover { width: 100%; border-radius: var(--radius); margin-bottom: var(--space-3); }
.explore-panel__title { font-family: var(--font-heading); margin: 0 0 var(--space-2); }
.explore-panel__meta { color: var(--color-gray-700); font-size: 0.9rem; margin-bottom: var(--space-3); }

.attraction-pick-list { list-style: none; padding: 0; margin: var(--space-3) 0; }
.attraction-pick-list li { padding: var(--space-2) 0; border-bottom: 1px solid var(--color-gray-200); }
.attraction-pick-list label { display: flex; align-items: center; gap: var(--space-2); font-weight: normal; margin: 0; }

.days-choice { display: flex; flex-wrap: wrap; gap: var(--space-2); margin: var(--space-3) 0; }
.days-choice button {
    padding: var(--space-2) var(--space-3);
    border: 1px solid var(--color-gray-300);
    border-radius: var(--radius);
    background: var(--color-white);
    cursor: pointer;
    min-height: 40px;
}
.days-choice button.is-selected { background: var(--color-royal-blue); color: var(--color-white); border-color: var(--color-royal-blue); }

.explore-route {
    padding: var(--space-6) var(--space-4);
}
.route-header-actions { display: flex; flex-wrap: wrap; gap: .65rem; align-items: center; }
.route-summary { display: flex; gap: var(--space-4); font-weight: 600; margin: var(--space-3) 0; flex-wrap: wrap; }
.route-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: var(--space-2); }
.route-list li {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    padding: var(--space-3);
    background: var(--color-white);
    border: 1px solid var(--color-gray-300);
    border-radius: var(--radius);
}
.route-list .route-number {
    width: 28px; height: 28px; border-radius: 50%;
    background: var(--color-royal-blue); color: var(--color-white);
    display: flex; align-items: center; justify-content: center;
    font-weight: 700; flex-shrink: 0;
}
.route-list .route-item-name { flex: 1; }
.route-list button { background: none; border: none; cursor: pointer; color: var(--color-error); min-height: 44px; min-width: 44px; }

/* Route request: connects the interactive selection directly to the
   existing secure Plan My Tour CRM and an optional WhatsApp hand-off. */
.explore-request-section { padding: 0 var(--space-4) var(--space-8); }
.explore-request-card {
    overflow: hidden;
    padding: clamp(1.25rem, 3vw, 2.25rem);
    border: 1px solid #dce3f1;
    border-top: 5px solid var(--color-royal-blue);
    border-radius: 18px;
    background: linear-gradient(145deg, #ffffff 0%, #f4f7ff 100%);
    box-shadow: 0 14px 38px rgba(16, 38, 82, 0.09);
}
.explore-request-heading { max-width: 850px; margin-bottom: 1.4rem; }
.explore-request-heading h2 { margin: .25rem 0 .55rem; color: var(--color-navy-text); }
.explore-request-heading p { margin: 0; color: var(--color-gray-700); }
.explore-request-eyebrow {
    color: var(--color-royal-blue); font-size: .76rem; font-weight: 800;
    letter-spacing: .11em; text-transform: uppercase;
}
.explore-request-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0 1rem;
}
.explore-request-selection {
    margin: 1rem 0;
    padding: 1rem 1.1rem;
    border: 1px solid #e4cc93;
    border-left: 5px solid #d69b32;
    border-radius: 12px;
    background: #fff9eb;
    color: var(--color-navy-text);
}
.explore-request-selection.is-ready { border-color: #b9caef; border-left-color: var(--color-royal-blue); background: #f1f5ff; }
.explore-request-selection span { display: inline-block; margin-top: .3rem; color: var(--color-gray-700); }
.explore-request-actions { display: flex; flex-wrap: wrap; gap: .75rem; align-items: center; margin-top: 1.1rem; }
#explore-submit-result { margin-top: 1rem; }
#explore-submit-result .alert h3 { margin: 0 0 .5rem; }
#explore-submit-result .alert ul { margin: 0; }

/* Reset Map control — positioned top-right, clear of Leaflet's own
   zoom control (which Leaflet places top-left by default) so neither
   overlaps on any screen size. */
.map-reset-control {
    position: absolute;
    top: var(--space-3);
    right: var(--space-3);
    z-index: 550;
}

/* Accessible "Browse by District" list — a genuine alternative to the
   map, not just a decorative list. */
.district-list {
    list-style: none;
    padding: 0;
    margin: var(--space-4) 0 0;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: var(--space-2);
}
.district-list__item {
    width: 100%;
    text-align: left;
    padding: var(--space-3);
    border: 1px solid var(--color-gray-300);
    border-radius: var(--radius);
    background: var(--color-white);
    cursor: pointer;
    font: inherit;
    min-height: 44px;
}
.district-list__item:hover,
.district-list__item:focus-visible {
    border-color: var(--color-royal-blue);
    background: var(--color-ivory);
}

.explore-district-list-section { padding: var(--space-6) var(--space-4); }

.map-attribution {
    padding: var(--space-2) var(--space-4) var(--space-6);
    color: var(--color-gray-500);
}
.map-attribution a { color: var(--color-gray-700); }

/* Leaflet popup content reuses standard readable typography */
.leaflet-popup-content { font-family: var(--font-body); }

.sr-only {
    position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}

/* -------------------------------------------------------------------------
   Mobile: stacked layout + bottom sheet instead of side panel
   ------------------------------------------------------------------------- */
@media (max-width: 900px) {
    .explore-layout { grid-template-columns: 1fr; }
    .explore-map-wrap { height: 380px; }

    .explore-panel {
        position: fixed;
        left: 0; right: 0; bottom: 0;
        max-height: 60vh;
        overflow-y: auto;
        border-radius: var(--radius-lg) var(--radius-lg) 0 0;
        box-shadow: 0 -8px 24px rgba(0,0,0,0.15);
        transform: translateY(100%);
        transition: transform 0.25s ease;
        z-index: 600;
        margin: 0;
    }
    .explore-panel.is-open { transform: translateY(0); }
    .explore-panel__close {
        display: block;
        width: 100%;
        text-align: center;
        padding: var(--space-2);
        font-size: 1.2rem;
        background: none;
        border: none;
        border-bottom: 1px solid var(--color-gray-200);
        min-height: 44px;
    }
    /* Keep Leaflet's own zoom control clear of the bottom sheet */
    .leaflet-bottom.leaflet-right { margin-bottom: 1rem; }
}

@media (max-width: 640px) {
    .explore-request-grid { grid-template-columns: 1fr; }
    .explore-request-actions .btn { width: 100%; text-align: center; }
    .explore-request-card { border-radius: 14px; }
}
.page-explore-map{background:#f5f9ff}.page-explore-map .explore-hero{position:relative;max-width:none;padding:72px max(24px,calc((100% - 1176px)/2));background:linear-gradient(118deg,#071f49,#1264bd);color:#fff}.page-explore-map .explore-hero:after{content:"";position:absolute;right:6%;bottom:8%;width:210px;height:210px;border:2px solid rgba(212,171,67,.16);border-radius:50%;pointer-events:none}.page-explore-map .explore-hero h1{margin:0;color:#fff!important;font-size:clamp(3.4rem,6vw,6.2rem)}.page-explore-map .explore-hero .lead{max-width:760px;color:#dcecff;font-size:1.08rem}.page-explore-map .explore-controls{margin-top:32px;padding:22px;border:1px solid #d5e1ef;border-radius:12px;background:#fff;box-shadow:0 12px 35px rgba(8,36,76,.09)}.page-explore-map .explore-layout{margin-top:28px}.page-explore-map .explore-map-wrap,.page-explore-map .explore-panel,.page-explore-map .explore-route,.page-explore-map .explore-request-card{border-color:#d4e0ee;box-shadow:0 14px 38px rgba(8,36,76,.1)}

/* =========================================================================
   V15 — Luxury photographic map hero + map-side journey studio
   ========================================================================= */
.page-explore-map .explore-hero {
    min-height: clamp(430px, 58vw, 620px);
    display: flex;
    align-items: flex-end;
    padding: clamp(3.5rem, 8vw, 7rem) max(1.25rem, calc((100% - 1176px) / 2));
    overflow: hidden;
    text-align: left;
    isolation: isolate;
    background: #071f49;
}
.page-explore-map .explore-hero::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    background:
        linear-gradient(90deg, rgba(3, 19, 49, .90) 0%, rgba(4, 27, 64, .68) 44%, rgba(4, 27, 64, .14) 78%),
        linear-gradient(0deg, rgba(3, 18, 43, .58), transparent 55%);
    pointer-events: none;
}
.explore-hero__image {
    position: absolute;
    inset: 0;
    z-index: -2;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center 54%;
}
.page-explore-map .explore-hero::after {
    width: min(42vw, 520px);
    height: min(42vw, 520px);
    right: -8%;
    bottom: -34%;
    border-color: rgba(229, 187, 91, .36);
}
.explore-hero__content { position: relative; z-index: 1; max-width: 790px; }
.explore-hero__eyebrow,
.explore-route__eyebrow {
    display: block;
    margin-bottom: .65rem;
    color: #efc767;
    font-size: .76rem;
    font-weight: 800;
    letter-spacing: .18em;
}
.page-explore-map .explore-hero h1 {
    max-width: 780px;
    margin: 0 0 .65rem;
    font-size: clamp(3.4rem, 7vw, 7rem);
    line-height: .92;
    text-shadow: 0 4px 24px rgba(0, 0, 0, .38);
}
.page-explore-map .explore-hero .lead {
    max-width: 660px;
    margin: 0 0 1.45rem;
    color: #fff;
    font-size: clamp(1rem, 1.45vw, 1.22rem);
    line-height: 1.7;
    text-shadow: 0 2px 12px rgba(0, 0, 0, .7);
}
.explore-hero__action {
    display: inline-flex;
    align-items: center;
    gap: .7rem;
    min-height: 48px;
    padding: .78rem 1.25rem;
    border: 1px solid rgba(255,255,255,.55);
    border-radius: 999px;
    background: rgba(5, 31, 70, .42);
    color: #fff;
    font-weight: 800;
    text-decoration: none;
    backdrop-filter: blur(8px);
}
.explore-hero__action:hover,
.explore-hero__action:focus-visible { background: #d6a53b; color: #061b3d; border-color: #d6a53b; }

.page-explore-map .explore-controls { margin-top: 0; border-radius: 0 0 18px 18px; }
.page-explore-map .explore-layout {
    grid-template-columns: minmax(0, 1.58fr) minmax(360px, .92fr);
    gap: 1.25rem;
    align-items: stretch;
    margin-top: 1.35rem;
}
.page-explore-map .explore-map-wrap { height: 680px; border-radius: 22px; }
.page-explore-map .explore-panel {
    height: 680px;
    min-height: 0;
    overflow-y: auto;
    padding: 0;
    border: 1px solid #cad8e8;
    border-radius: 22px;
    background: #fff;
    scrollbar-width: thin;
    scrollbar-color: #9fb5d0 transparent;
}
.explore-panel__content { padding: 1.3rem 1.35rem 0; }
.explore-panel__content:empty { display: none; }
.explore-panel__content:not(:empty) {
    padding-bottom: 1.25rem;
    border-bottom: 1px solid #dbe5ef;
    background: linear-gradient(160deg, #f6f9ff 0%, #fff 72%);
}
.explore-panel__title { color: #082c61; font-size: clamp(1.65rem, 2.5vw, 2.2rem); line-height: 1.04; }
.explore-panel__meta { color: #536b87; font-weight: 700; }
.explore-panel__content h4 { margin: 1.15rem 0 .45rem; color: #0b356f; }
.attraction-pick-list li { border-color: #dde6f0; }
.attraction-pick-list input { width: 18px; height: 18px; accent-color: #0b66d9; }
.days-choice input {
    min-height: 42px;
    border: 1px solid #b8c8da;
    border-radius: 9px;
    padding: .45rem;
}
.explore-panel__close { display: none; }

.page-explore-map .explore-route {
    padding: 1.35rem;
    border: 0;
    box-shadow: none;
    background: linear-gradient(160deg, #082b5e 0%, #0a438c 100%);
    color: #fff;
}
.explore-route__heading { display: flex; justify-content: space-between; gap: 1rem; align-items: flex-start; }
.explore-route__heading h2 { margin: 0; color: #fff; font-size: 2rem; }
.route-clear-button {
    min-height: 38px;
    padding: .4rem .75rem;
    border: 1px solid rgba(255,255,255,.45);
    border-radius: 999px;
    background: transparent;
    color: #fff;
    font-weight: 700;
    cursor: pointer;
}
.route-date-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .7rem; margin: 1rem 0; }
.route-date-grid label { color: #dceaff; font-size: .75rem; font-weight: 800; letter-spacing: .03em; }
.route-date-grid input {
    width: 100%;
    min-height: 44px;
    margin-top: .35rem;
    padding: .55rem .6rem;
    border: 1px solid rgba(255,255,255,.34);
    border-radius: 10px;
    background: rgba(255,255,255,.97);
    color: #092a59;
    font: inherit;
}
.route-summary { gap: .45rem; margin: .8rem 0; }
.route-summary span {
    padding: .35rem .58rem;
    border: 1px solid rgba(255,255,255,.22);
    border-radius: 999px;
    background: rgba(255,255,255,.10);
    color: #f3f7ff;
    font-size: .72rem;
}
.route-list { gap: .65rem; }
.route-list li {
    display: grid;
    grid-template-columns: 30px minmax(0, 1fr) repeat(3, 34px);
    gap: .35rem;
    padding: .75rem;
    border-color: rgba(255,255,255,.2);
    border-radius: 13px;
    background: rgba(255,255,255,.96);
    color: #082b5e;
}
.route-list .route-number { align-self: start; }
.route-item-name { display: flex; flex-direction: column; gap: .18rem; font-weight: 800; }
.route-item-details { color: #5b6f87; font-size: .76rem; font-weight: 500; line-height: 1.4; }
.route-list button { min-width: 34px; min-height: 34px; color: #2f5e96; border-radius: 8px; }
.route-list button:hover { background: #e7eff9; }
.route-empty-state {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .42rem;
    padding: 1.25rem .8rem;
    border: 1px dashed rgba(255,255,255,.38);
    border-radius: 14px;
    color: #dceaff;
    text-align: center;
}
.route-empty-state__icon { color: #efc767; font-size: 1.55rem; }
.route-empty-state span:last-child { max-width: 300px; font-size: .82rem; line-height: 1.5; }
.route-send-button { display: none; width: 100%; margin-top: .85rem; text-align: center; background: #d8a940 !important; color: #071e45 !important; }
.explore-route.has-route .route-send-button { display: block; }
.explore-route.has-route .route-empty-state { display: none; }

@media (max-width: 900px) {
    .page-explore-map .explore-layout { grid-template-columns: 1fr; }
    .page-explore-map .explore-map-wrap { height: 460px; border-radius: 18px; }
    .page-explore-map .explore-panel {
        position: static;
        height: auto;
        max-height: none;
        overflow: visible;
        transform: none;
        margin: 0;
        border-radius: 18px;
        box-shadow: 0 14px 38px rgba(8,36,76,.1);
    }
    .page-explore-map .explore-panel.is-open { transform: none; }
    .explore-panel__close { display: none !important; }
}

@media (max-width: 640px) {
    .page-explore-map .explore-hero {
        min-height: 470px;
        align-items: flex-end;
        padding: 4rem 1.15rem 2.4rem;
    }
    .explore-hero__image { object-position: 62% center; }
    .page-explore-map .explore-hero h1 { font-size: clamp(3rem, 15vw, 4.6rem); }
    .page-explore-map .explore-hero .lead { font-size: 1rem; line-height: 1.55; }
    .page-explore-map .explore-controls { padding: 1rem; }
    .explore-category-filters { flex-wrap: nowrap; overflow-x: auto; padding-bottom: .35rem; }
    .category-chip { flex: 0 0 auto; }
    .page-explore-map .explore-map-wrap { height: 390px; }
    .route-date-grid { grid-template-columns: 1fr; }
    .route-list li { grid-template-columns: 28px minmax(0, 1fr) repeat(3, 32px); padding: .65rem .5rem; }
    .route-list button { min-width: 32px; padding: 0; }
}

/* =========================================================================
   V17 — compact phone composition and clean photographic hero
   ========================================================================= */
.page-explore-map .explore-hero::after { display: none !important; content: none !important; }

@media (max-width: 760px) {
    body.page-explore-map .explore-hero {
        min-height: 355px;
        padding: 3.25rem 1rem 1.55rem;
    }
    body.page-explore-map .explore-hero__content { max-width: 92%; }
    body.page-explore-map .explore-hero__eyebrow {
        margin-bottom: .42rem;
        font-size: .6rem;
        line-height: 1.35;
        letter-spacing: .13em;
    }
    body.page-explore-map .explore-hero h1 {
        max-width: 8ch;
        margin-bottom: .5rem;
        font-size: clamp(2.55rem, 12vw, 3.35rem);
        line-height: .92;
    }
    body.page-explore-map .explore-hero .lead {
        max-width: 35rem;
        margin-bottom: .85rem;
        font-size: .82rem;
        line-height: 1.48;
    }
    body.page-explore-map .explore-hero__action {
        min-height: 40px;
        padding: .58rem .9rem;
        font-size: .75rem;
    }

    body.page-explore-map .explore-controls {
        gap: .65rem;
        padding: .8rem 1rem .7rem;
        border-radius: 0 0 13px 13px;
    }
    body.page-explore-map .explore-search-bar input {
        min-height: 42px;
        padding: .58rem .75rem;
        font-size: 14px;
    }
    body.page-explore-map .explore-category-filters { gap: .42rem; }
    body.page-explore-map .category-chip {
        min-height: 35px;
        padding: .42rem .7rem;
        font-size: .7rem;
        line-height: 1;
    }

    body.page-explore-map .explore-layout {
        gap: .7rem;
        margin-top: .8rem;
        padding-right: 12px;
        padding-left: 12px;
    }
    body.page-explore-map .explore-map-wrap { height: 330px; border-radius: 13px; }
    body.page-explore-map .map-reset-control {
        top: .65rem;
        right: .65rem;
        min-height: 38px;
        padding: .5rem .7rem;
        font-size: .7rem;
    }
    body.page-explore-map .explore-panel {
        padding: 0;
        border-radius: 13px;
    }
    body.page-explore-map .explore-panel__content {
        padding: .9rem .9rem 0;
    }
    body.page-explore-map .explore-panel__content:not(:empty) { padding-bottom: .9rem; }
    body.page-explore-map .explore-panel__title {
        margin-bottom: .35rem;
        font-size: 1.42rem;
        line-height: 1.06;
    }
    body.page-explore-map .explore-panel__meta {
        margin-bottom: .6rem;
        font-size: .74rem;
        line-height: 1.42;
    }
    body.page-explore-map .explore-panel__content > p {
        margin: 0 0 .7rem;
        font-size: .79rem;
        line-height: 1.5;
    }
    body.page-explore-map .explore-panel__content h4 {
        margin: .8rem 0 .42rem;
        font-size: .92rem;
    }
    body.page-explore-map .attraction-pick-list {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: .4rem;
        margin: .55rem 0 .7rem;
    }
    body.page-explore-map .attraction-pick-list li {
        min-width: 0;
        padding: .5rem;
        border: 1px solid #dce6f1;
        border-radius: 9px;
        background: #fff;
    }
    body.page-explore-map .attraction-pick-list label {
        display: flex;
        align-items: flex-start;
        gap: .42rem;
        margin: 0;
        color: #18385f;
        font-size: .72rem;
        line-height: 1.35;
    }
    body.page-explore-map .attraction-pick-list input[type="checkbox"] {
        flex: 0 0 18px !important;
        width: 18px !important;
        height: 18px !important;
        min-height: 18px !important;
        margin: 0 !important;
        padding: 0 !important;
        border-radius: 4px !important;
    }
    body.page-explore-map .explore-panel__content > .btn {
        width: auto;
        min-height: 38px;
        margin: 0 .25rem .25rem 0;
        padding: .5rem .65rem;
        font-size: .68rem;
        border-radius: 8px;
    }
    body.page-explore-map .days-choice {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: .42rem;
        margin: .55rem 0 .75rem;
    }
    body.page-explore-map .days-choice button {
        min-height: 40px;
        padding: .48rem;
        font-size: .72rem;
    }
    body.page-explore-map .days-choice input[type="number"] {
        width: 100% !important;
        min-height: 40px;
        padding: .48rem .6rem;
        font-size: 14px;
    }
    body.page-explore-map #add-to-route {
        width: 100%;
        min-height: 43px;
        margin: 0;
        font-size: .78rem;
    }

    body.page-explore-map .explore-route { padding: 1rem; }
    body.page-explore-map .explore-route__heading { align-items: center; }
    body.page-explore-map .explore-route__eyebrow { font-size: .58rem; letter-spacing: .13em; }
    body.page-explore-map .explore-route__heading h2 { font-size: 1.45rem; }
    body.page-explore-map .route-clear-button { min-height: 34px; padding: .35rem .65rem; font-size: .68rem; }
    body.page-explore-map .route-date-grid { gap: .5rem; margin: .7rem 0; }
    body.page-explore-map .route-date-grid label { font-size: .68rem; }
    body.page-explore-map .route-date-grid input {
        min-height: 40px;
        padding: .48rem .55rem;
        font-size: 14px;
    }
    body.page-explore-map .route-summary { gap: .32rem; margin: .6rem 0; }
    body.page-explore-map .route-summary span { padding: .28rem .45rem; font-size: .64rem; }
    body.page-explore-map .route-empty-state { padding: .85rem .65rem; }
    body.page-explore-map .route-empty-state span:last-child { font-size: .72rem; }
    body.page-explore-map .route-list li {
        grid-template-columns: 26px minmax(0, 1fr) repeat(3, 28px);
        padding: .55rem .42rem;
    }
    body.page-explore-map .route-list .route-number { width: 26px; height: 26px; font-size: .7rem; }
    body.page-explore-map .route-item-name { font-size: .74rem; }
    body.page-explore-map .route-item-details { font-size: .64rem; }
    body.page-explore-map .route-list button { min-width: 28px; min-height: 30px; font-size: .75rem; }
}

@media (max-width: 380px) {
    body.page-explore-map .explore-hero { min-height: 330px; }
    body.page-explore-map .explore-hero h1 { font-size: 2.45rem; }
    body.page-explore-map .attraction-pick-list { grid-template-columns: 1fr; }
}

/* =========================================================================
   V18 — luxury district navigator
   ========================================================================= */
.page-explore-map .explore-district-list-section {
    padding-top: clamp(3rem, 6vw, 5.5rem);
    padding-bottom: clamp(3rem, 6vw, 5.5rem);
}
.district-section-heading {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1.5rem;
    margin-bottom: 1.25rem;
}
.district-section-eyebrow {
    display: block;
    margin-bottom: .45rem;
    color: #b37e18;
    font-size: .72rem;
    font-weight: 900;
    letter-spacing: .17em;
}
.district-section-heading h2 {
    margin: 0 0 .35rem;
    color: #071f47;
    font-size: clamp(2.2rem, 4vw, 3.5rem);
    line-height: 1;
}
.district-section-heading p {
    max-width: 680px;
    margin: 0;
    color: #60718a;
    font-size: .95rem;
}
.district-count {
    flex: 0 0 auto;
    padding: .55rem .85rem;
    border: 1px solid #d2a23d;
    border-radius: 999px;
    background: #fffaf0;
    color: #7b5510;
    font-size: .76rem;
    font-weight: 850;
}
.page-explore-map .district-list {
    grid-template-columns: repeat(auto-fit, minmax(185px, 1fr));
    gap: .7rem;
    margin: 0;
    padding: 1rem;
    border: 1px solid rgba(255,255,255,.12);
    border-radius: 22px;
    background:
        radial-gradient(circle at 96% 6%, rgba(26, 110, 210, .45), transparent 28%),
        linear-gradient(145deg, #061b3d 0%, #0a3c7c 100%);
    box-shadow: 0 20px 48px rgba(4, 27, 61, .17);
}
.page-explore-map .district-list li { min-width: 0; }
.page-explore-map .district-list__item {
    display: grid;
    grid-template-columns: 34px minmax(0, 1fr) 22px;
    align-items: center;
    gap: .65rem;
    min-height: 78px;
    padding: .75rem;
    border: 1px solid rgba(255,255,255,.18);
    border-radius: 13px;
    background: rgba(255,255,255,.08);
    color: #fff;
    text-align: left;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.07);
    transition: transform .18s ease, border-color .18s ease, background .18s ease, box-shadow .18s ease;
}
.district-list__number {
    display: grid;
    width: 34px;
    height: 34px;
    place-items: center;
    border: 1px solid rgba(239,199,103,.55);
    border-radius: 50%;
    background: rgba(216,169,64,.12);
    color: #f2ca6c;
    font-size: .68rem;
    font-weight: 900;
}
.district-list__copy { display: flex; min-width: 0; flex-direction: column; gap: .18rem; }
.district-list__copy strong {
    overflow: hidden;
    color: #fff;
    font-family: var(--font-heading);
    font-size: 1rem;
    line-height: 1.05;
    text-overflow: ellipsis;
}
.district-list__copy small {
    color: #bed2eb;
    font-size: .65rem;
    font-weight: 650;
    line-height: 1.25;
}
.district-list__arrow {
    color: #e9bc56;
    font-size: 1rem;
    transition: transform .18s ease;
}
.page-explore-map .district-list__item:hover,
.page-explore-map .district-list__item:focus-visible {
    transform: translateY(-2px);
    border-color: rgba(239,199,103,.8);
    background: rgba(255,255,255,.15);
    box-shadow: 0 10px 22px rgba(0,0,0,.16);
}
.page-explore-map .district-list__item:hover .district-list__arrow,
.page-explore-map .district-list__item:focus-visible .district-list__arrow { transform: translateX(3px); }
.page-explore-map .district-list__item.is-active {
    border-color: #efc767;
    background: linear-gradient(135deg, #e4b64d, #c98c1d);
    color: #061b3d;
    box-shadow: 0 12px 28px rgba(190,128,16,.3);
}
.page-explore-map .district-list__item.is-active .district-list__number {
    border-color: rgba(6,27,61,.35);
    background: rgba(255,255,255,.4);
    color: #061b3d;
}
.page-explore-map .district-list__item.is-active .district-list__copy strong,
.page-explore-map .district-list__item.is-active .district-list__copy small,
.page-explore-map .district-list__item.is-active .district-list__arrow { color: #061b3d; }

@media (max-width: 760px) {
    body.page-explore-map .explore-district-list-section {
        padding-top: 2.25rem;
        padding-bottom: 2.5rem;
    }
    body.page-explore-map .district-section-heading {
        align-items: flex-start;
        gap: .75rem;
        margin-bottom: .9rem;
    }
    body.page-explore-map .district-section-eyebrow { font-size: .56rem; letter-spacing: .13em; }
    body.page-explore-map .district-section-heading h2 { font-size: 1.85rem; }
    body.page-explore-map .district-section-heading p { max-width: 31rem; font-size: .74rem; line-height: 1.45; }
    body.page-explore-map .district-count { padding: .4rem .55rem; font-size: .6rem; }
    body.page-explore-map .district-list {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: .5rem;
        padding: .55rem;
        border-radius: 15px;
    }
    body.page-explore-map .district-list__item {
        grid-template-columns: 27px minmax(0, 1fr) 14px;
        gap: .42rem;
        min-height: 68px;
        padding: .55rem .48rem;
        border-radius: 10px;
    }
    body.page-explore-map .district-list__number { width: 27px; height: 27px; font-size: .56rem; }
    body.page-explore-map .district-list__copy strong { font-size: .8rem; }
    body.page-explore-map .district-list__copy small { font-size: .55rem; line-height: 1.2; }
    body.page-explore-map .district-list__arrow { font-size: .72rem; }
}

@media (max-width: 360px) {
    body.page-explore-map .district-section-heading { display: block; }
    body.page-explore-map .district-count { display: inline-flex; margin-top: .55rem; }
    body.page-explore-map .district-list__item { grid-template-columns: 24px minmax(0, 1fr); }
    body.page-explore-map .district-list__number { width: 24px; height: 24px; }
    body.page-explore-map .district-list__arrow { display: none; }
}
