/**
 * NexDirectory discovery: archive (search-first header, quick-filter rail,
 * filter sheet, grid/list/map views) + listing card templates + map kit
 * (pins, clusters, controls, popups). Tokens only — brand colour via --nd-accent.
 *
 * Card templates (.nd-results--{style} wrapper + .nd-ecard--{style}):
 * classic · poster · horizontal · compact · minimal · spotlight · glass
 */

/* ---------------------------------------------------------------------------
 * Page frame
 * ------------------------------------------------------------------------- */
.nd-discover {
    position: relative;
    background: var(--nd-canvas);
    color: var(--nd-ink-2);
    font-family: var(--nd-font);
    /* One 64px gap above the footer, painted on the page canvas (the footer's own margin is dropped
       after discovery pages in nav.css; 96px + 96px left a ~250px dead band). */
    padding-bottom: 64px;
}
/* Container: the design-system contract sets --nd-gutter / --nd-max for .nd-discover. */

/* Hero: text-first, image only when the owner provided one. */
.nd-discover__hero { position: relative; isolation: isolate; overflow: hidden; }
.nd-discover__hero-inner {
    max-width: var(--nd-max);
    margin: 0 auto;
    padding: 40px var(--nd-gutter) 32px;
}
.nd-discover__hero .nexdirectory-breadcrumbs,
.nd-discover__hero nav[aria-label*="readcrumb"],
.nd-discover__hero .nexdirectory-breadcrumb-shell { margin: 0 0 20px !important; padding: 0 !important; max-width: none !important; }
.nd-discover .nd-discover__title {
    margin: 0;
    color: var(--nd-ink);
    font: 700 clamp(30px, 4.6vw, 48px)/1.05 var(--nd-font-display);
    letter-spacing: -0.035em;
    text-wrap: balance;
}
.nd-discover .nd-discover__lede {
    margin: 12px 0 0;
    max-width: 56ch;
    color: var(--nd-muted);
    font-size: 17px;
    line-height: 1.55;
}
.nd-discover__hero.has-image { color: #fff; }
.nd-discover__hero-media { position: absolute; inset: 0; z-index: -1; overflow: hidden; background: #0f172a; }
.nd-discover__hero-media img { width: 100%; height: 100%; object-fit: cover; opacity: 0.9; }
.nd-discover__hero-media::after {
    content: ""; position: absolute; inset: 0;
    background: linear-gradient(180deg, rgba(15, 23, 42, 0.25) 0%, rgba(15, 23, 42, 0.55) 55%, rgba(15, 23, 42, 0.78) 100%);
}
.nd-discover__hero.has-image .nd-discover__hero-inner { padding-top: 56px; padding-bottom: 48px; }
.nd-discover__hero.has-image .nd-discover__title { color: #fff; }
.nd-discover__hero.has-image .nd-discover__lede { color: rgba(255, 255, 255, 0.82); }
.nd-discover__hero.has-image :is(.nexdirectory-breadcrumbs, nav[aria-label*="readcrumb"]) a,
.nd-discover__hero.has-image :is(.nexdirectory-breadcrumbs, nav[aria-label*="readcrumb"]) { color: rgba(255, 255, 255, 0.78) !important; }

/* Search bar: one smart field (what + where), Airbnb-style pill. */
.nd-searchbar {
    display: flex;
    align-items: center;
    gap: 4px;
    margin-top: 28px;
    max-width: 760px;
    padding: 6px;
    border: 1px solid var(--nd-line);
    border-radius: 999px;
    background: var(--nd-surface);
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04), 0 12px 32px -16px rgba(15, 23, 42, 0.22);
    transition: box-shadow var(--nd-dur-2) var(--nd-ease), border-color var(--nd-dur-2) var(--nd-ease);
}
.nd-searchbar:focus-within { border-color: var(--nd-accent-line); box-shadow: var(--nd-ring), 0 12px 32px -16px rgba(15, 23, 42, 0.22); }
.nd-searchbar__field {
    flex: 1 1 0;
    min-width: 0;
    display: flex;
    align-items: center;
    gap: 10px;
    height: 48px;
    padding: 0 14px 0 16px;
    border-radius: 999px;
    color: var(--nd-muted);
    cursor: text;
}
.nd-searchbar__field--what { flex-grow: 1.6; }
.nd-searchbar__field:hover { background: var(--nd-surface-2); }
.nd-searchbar__field svg { flex: none; }
.nd-searchbar input {
    flex: 1;
    min-width: 0;
    height: 100%;
    margin: 0;
    padding: 0;
    border: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    outline: none !important;
    color: var(--nd-ink);
    font: 500 15px/1.2 var(--nd-font) !important;
    letter-spacing: 0 !important;
}
.nd-searchbar input::placeholder { color: var(--nd-subtle); }
.nd-searchbar input::-webkit-search-cancel-button { -webkit-appearance: none; }
.nd-searchbar__divider { width: 1px; height: 28px; background: var(--nd-line); flex: none; }
.nd-searchbar__locate {
    flex: none; display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 0; border-radius: 999px;
    background: transparent; color: var(--nd-muted); cursor: pointer;
}
.nd-searchbar__locate:hover { background: var(--nd-accent-soft); color: var(--nd-accent-ink); }
.nd-searchbar__go {
    flex: none; display: inline-flex; align-items: center; gap: 8px; height: 48px; padding: 0 22px; border: 0; border-radius: 999px;
    background: var(--nd-accent); color: var(--nd-on-accent); font: 600 15px/1 var(--nd-font); cursor: pointer;
    box-shadow: 0 8px 20px -10px rgba(var(--nd-accent-rgb), 0.8);
    transition: background-color var(--nd-dur-2) var(--nd-ease), transform var(--nd-dur-1) var(--nd-ease);
}
.nd-searchbar__go:hover { background: var(--nd-accent-hover); }
@media (max-width: 767.98px) {
    .nd-discover__hero-inner { padding: 20px var(--nd-gutter) 16px; }
    .nd-discover__hero .nexdirectory-breadcrumb-shell { display: none !important; }
    .nd-discover .nd-discover__title { font-size: 30px; }
    .nd-discover .nd-discover__lede { font-size: 15px; margin-top: 6px; }
    .nd-searchbar {
        flex-wrap: wrap; gap: 0; margin-top: 18px; padding: 0; border-radius: var(--nd-radius-lg); overflow: hidden;
    }
    .nd-searchbar__field { flex: 1 1 100%; height: 52px; border-radius: 0; padding: 0 16px; }
    /* One full-width hairline between the rows (on the "what" field); a second, shorter line on
       "where" stopped short of the buttons and read like a progress bar. */
    .nd-searchbar__field--where { flex: 1 1 0; border-top: 0; }
    .nd-searchbar__divider { display: none; }
    .nd-searchbar__locate { margin: 4px 0; border-top: 0; }
    .nd-searchbar__go { width: 44px; height: 44px; margin: 4px 6px 4px 0; padding: 0; justify-content: center; border-radius: 999px; box-shadow: none; }
    .nd-searchbar__go span { display: none; }
    .nd-searchbar input { font-size: 16px !important; }
    .nd-searchbar__field--what { border-bottom: 1px solid var(--nd-line); }
    .nd-searchbar__locate { margin: 0; width: 48px; height: 52px; border-radius: 0; }
}

/* ---------------------------------------------------------------------------
 * Quick-filter rail (sticky under the nav)
 * ------------------------------------------------------------------------- */
.nd-discover__rail {
    position: sticky;
    top: var(--nd-sticky-top);
    z-index: 40;
    background: rgba(247, 248, 251, 0.86);
    -webkit-backdrop-filter: saturate(1.6) blur(14px);
    backdrop-filter: saturate(1.6) blur(14px);
    border-bottom: 1px solid transparent;
    transition: border-color var(--nd-dur-2) var(--nd-ease), box-shadow var(--nd-dur-2) var(--nd-ease);
}
.nd-discover__rail.is-stuck { border-bottom-color: var(--nd-line); box-shadow: 0 8px 24px -20px rgba(15, 23, 42, 0.4); }
.nd-discover__rail-inner { max-width: var(--nd-max); margin: 0 auto; padding: 0 var(--nd-gutter); }
.nd-discover__rail .nd-rail { padding: 12px 0; }
.nd-discover__rail .nd-rail__track {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 2px 0;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
}
.nd-discover__rail .nd-rail__track::-webkit-scrollbar { display: none; }
.nd-rail__sep { flex: none; width: 1px; height: 24px; margin: 0 4px; background: var(--nd-line-strong); }
.nd-qchip {
    flex: none;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 38px;
    padding: 0 14px;
    border: 1px solid var(--nd-line-strong);
    border-radius: 999px;
    background: var(--nd-surface);
    color: var(--nd-ink-2);
    font: 500 14px/1 var(--nd-font);
    white-space: nowrap;
    cursor: pointer;
    scroll-snap-align: start;
    transition: background-color var(--nd-dur-2) var(--nd-ease), border-color var(--nd-dur-2) var(--nd-ease), color var(--nd-dur-2) var(--nd-ease), transform var(--nd-dur-1) var(--nd-ease);
}
.nd-qchip[hidden] { display: none; }
.nd-qchip svg { color: var(--nd-muted); }
.nd-qchip:hover { border-color: var(--nd-ink-2); color: var(--nd-ink); }
.nd-qchip[aria-pressed="true"] { background: var(--nd-ink); border-color: var(--nd-ink); color: #fff; }
.nd-qchip[aria-pressed="true"] svg { color: currentColor; }
.nd-qchip__count { color: var(--nd-muted); font-variant-numeric: tabular-nums; font-size: 13px; }
.nd-qchip[aria-pressed="true"] .nd-qchip__count { color: rgba(255, 255, 255, 0.7); }
.nd-qchip--filters { font-weight: 600; }
.nd-qchip--filters .nd-count { min-width: 20px; height: 20px; font-size: 12px; }
.nd-qchip--filters .nd-count[hidden] { display: none; }
@media (pointer: coarse) { .nd-qchip { height: 44px; padding: 0 16px; } }

/* ---------------------------------------------------------------------------
 * Toolbar + body
 * ------------------------------------------------------------------------- */
.nd-discover .nd-discover__main { max-width: var(--nd-max); margin: 0 auto; padding: 0 var(--nd-gutter) !important; }
.nd-discover__toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px 16px;
    padding: 20px 0 16px;
}
.nd-discover .nd-discover__count { margin: 0; color: var(--nd-muted); font-size: 15px; font-weight: 400; line-height: 1.5; letter-spacing: normal; }
.nd-discover__count strong { color: var(--nd-ink); font-weight: 650; font-variant-numeric: tabular-nums; }
.nd-discover__active { margin: 0 !important; flex: 1 1 auto; }
.nd-discover__tools { margin-left: auto; display: flex; align-items: center; gap: 8px; }
.nd-sortpill select {
    height: 38px; padding: 0 34px 0 14px; border: 1px solid var(--nd-line-strong); border-radius: 999px;
    background: var(--nd-surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.5' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 12px center;
    -webkit-appearance: none; appearance: none;
    color: var(--nd-ink); font: 500 14px/1 var(--nd-font) !important; cursor: pointer;
}
.nd-viewtoggle { display: inline-flex; padding: 3px; border: 1px solid var(--nd-line-strong); border-radius: 999px; background: var(--nd-surface); }
.nd-viewtoggle button {
    display: grid; place-items: center; width: 34px; height: 30px; padding: 0; border: 0; border-radius: 999px;
    background: transparent; color: var(--nd-muted); cursor: pointer; transition: background-color var(--nd-dur-2) var(--nd-ease), color var(--nd-dur-2) var(--nd-ease);
}
.nd-viewtoggle button:hover { color: var(--nd-ink); }
.nd-viewtoggle button[aria-pressed="true"] { background: var(--nd-ink) !important; color: #fff !important; }

.nd-discover__body { display: block; }
.nd-discover__map { display: none; }
.nd-discover[data-view="map"] .nd-discover__body {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
    gap: 24px;
    align-items: start;
}
.nd-discover[data-view="map"] .nd-discover__map {
    display: block;
    position: sticky;
    top: calc(var(--nd-sticky-top) + 72px);
    height: calc(100vh - var(--nd-sticky-top) - 96px);
    height: calc(100dvh - var(--nd-sticky-top) - 96px);
    border-radius: 20px;
    overflow: hidden;
    background: #e9eef3;
    box-shadow: inset 0 0 0 1px var(--nd-line);
}
.nd-discover__map-canvas { width: 100%; height: 100%; }

/* Floating map/list pill — phones and tablets. Glass, on the bottom stack, shown after 120px
   of scroll, tucked away while scrolling down, hidden on empty results and while a toast shows. */
.nd-floatpill { display: none; }
@media (max-width: 899.98px) {
    .nd-floatpill {
        position: fixed; z-index: 60; left: 50%; bottom: calc(16px + var(--nd-bottom-stack, env(safe-area-inset-bottom, 0px)));
        display: inline-flex; align-items: center; height: 48px; padding: 0 20px;
        border: 1px solid rgba(255, 255, 255, 0.14); border-radius: 999px;
        background: rgba(15, 23, 42, 0.78); color: var(--nd-on-dark, #fff); font: 600 15px/1 var(--nd-font);
        -webkit-backdrop-filter: saturate(1.6) blur(14px);
        backdrop-filter: saturate(1.6) blur(14px);
        box-shadow: 0 16px 32px -12px rgba(15, 23, 42, 0.55); cursor: pointer;
        opacity: 0; visibility: hidden; pointer-events: none;
        transform: translate(-50%, 16px);
        transition: opacity var(--nd-dur-2) var(--nd-ease), transform var(--nd-dur-3) var(--nd-ease), visibility 0s linear var(--nd-dur-3);
    }
    .nd-floatpill.is-visible { opacity: 1; visibility: visible; pointer-events: auto; transform: translate(-50%, 0); transition-delay: 0s; }
    .nd-discover.is-empty:not([data-view="map"]) .nd-floatpill,
    html.nd-toast-open .nd-floatpill { opacity: 0; visibility: hidden; pointer-events: none; }
    .nd-floatpill > span { display: inline-flex; align-items: center; gap: 8px; }
    /* Let the last card scroll clear of the floating pill. */
    .nd-discover__results { padding-bottom: calc(88px + var(--nd-bottom-stack, env(safe-area-inset-bottom, 0px))); }
    .nd-floatpill > span[hidden] { display: none; }
    .nd-floatpill.is-visible:active { transform: translate(-50%, 0) scale(0.97); }
    .nd-discover[data-view="map"] .nd-discover__body { display: block; }
    .nd-discover[data-view="map"] .nd-discover__results { display: none; }
    .nd-discover[data-view="map"] .nd-discover__map {
        position: fixed; top: var(--nd-sticky-top); left: 0; right: 0; bottom: 0; z-index: 45; height: auto; border-radius: 0;
    }
    .nd-discover__toolbar { padding: 12px 0 12px; }
}

/* ---------------------------------------------------------------------------
 * Filter sheet: right drawer on desktop, full-screen sheet on phones
 * ------------------------------------------------------------------------- */
.nd-filtersheet-backdrop { position: fixed; inset: 0; z-index: 100040; background: rgba(15, 23, 42, 0.42); }
.nd-filtersheet {
    position: fixed;
    z-index: 100050;
    top: 0;
    right: 0;
    bottom: 0;
    width: min(440px, 100vw);
    display: flex;
    flex-direction: column;
    background: var(--nd-surface);
    box-shadow: var(--nd-shadow-4);
    transform: translateX(104%);
    visibility: hidden;
    transition: transform 360ms var(--nd-ease), visibility 0s linear 360ms;
}
.nd-filtersheet.is-open { transform: none; visibility: visible; transition: transform 360ms var(--nd-ease), visibility 0s; }
.nd-filtersheet .nd-sheet-handle { display: none; }
.nd-filtersheet__head {
    display: grid; grid-template-columns: 44px 1fr auto; align-items: center; gap: 8px;
    padding: 12px 16px; border-bottom: 1px solid var(--nd-line);
}
.nd-filtersheet .nd-filtersheet__title { margin: 0; text-align: center; color: var(--nd-ink); font: 650 16px/1.2 var(--nd-font); letter-spacing: -0.01em; }
.nd-filtersheet__clear { color: var(--nd-ink); font: 600 14px/1 var(--nd-font); text-decoration: underline; text-underline-offset: 3px; padding: 8px; }
.nd-filtersheet__form { display: flex; flex-direction: column; flex: 1; min-height: 0; margin: 0; }
.nd-filtersheet__body { flex: 1; overflow-y: auto; overscroll-behavior: contain; padding: 8px 24px 24px; -webkit-overflow-scrolling: touch; }
.nd-fgroup { margin: 0; padding: 20px 0; border: 0; border-bottom: 1px solid var(--nd-line); min-width: 0; }
.nd-fgroup:last-child { border-bottom: 0; }
.nd-fgroup__title { float: left; width: 100%; margin: 0 0 12px; padding: 0; color: var(--nd-ink); font: 650 16px/1.3 var(--nd-font); letter-spacing: -0.01em; }
.nd-fgroup__title label { font: inherit; color: inherit; }
.nd-fgroup > *:not(legend) { clear: both; }
.nd-fgroup__chips { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px; }
.nd-fgroup__range { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.nd-fgroup .nd-select, .nd-fgroup .nd-input { width: 100%; min-height: 48px; }
.nd-filtersheet__foot {
    display: flex; gap: 12px; padding: 16px 24px calc(16px + env(safe-area-inset-bottom, 0px));
    border-top: 1px solid var(--nd-line); background: var(--nd-surface);
}
.nd-filtersheet__submit { flex: 1; min-height: 52px; font-size: 16px; }
@media (max-width: 767.98px) {
    .nd-filtersheet {
        top: auto; left: 0; width: 100%; height: calc(100dvh - 12px); max-height: none;
        border-radius: 20px 20px 0 0; transform: translateY(102%);
    }
    .nd-filtersheet .nd-sheet-handle { display: block; }
    .nd-filtersheet__body { padding: 0 16px 24px; }
    .nd-filtersheet__foot { padding: 12px 16px calc(12px + env(safe-area-inset-bottom, 0px)); }
}
body.nexdirectory-filter-dialog-open { overflow: hidden; }

/* ---------------------------------------------------------------------------
 * Results grid + card templates
 * ------------------------------------------------------------------------- */
#nexdirectory-archive-results { position: relative; container-type: inline-size; container-name: nexdirectory-archive-results; }
#nexdirectory-archive-results .nd-results.nexdirectory-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 32px 24px;
    align-items: start;
}
/* Grid: 1 column on phones, 2 from 600px, 3 from 1024px (half that beside the map). */
@media (min-width: 600px) {
    #nexdirectory-archive-results .nd-results.nexdirectory-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1024px) {
    #nexdirectory-archive-results .nd-results.nexdirectory-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .nd-discover[data-view="map"] #nexdirectory-archive-results .nd-results.nexdirectory-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
#nexdirectory-archive-results .nd-results--compact { grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr)) !important; gap: 24px 16px !important; }
#nexdirectory-archive-results .nd-results--poster,
#nexdirectory-archive-results .nd-results--glass { grid-template-columns: repeat(auto-fill, minmax(min(100%, 270px), 1fr)) !important; gap: 24px !important; }
#nexdirectory-archive-results .nd-results--horizontal,
#nexdirectory-archive-results .nd-results--minimal { grid-template-columns: 1fr !important; gap: 12px !important; }
@container nexdirectory-archive-results (min-width: 980px) {
    #nexdirectory-archive-results .nd-results--minimal { grid-template-columns: 1fr 1fr !important; gap: 12px 24px !important; }
}
#nexdirectory-archive-results .nd-results > .nexdirectory-empty-state { grid-column: 1 / -1; }

/* Base card anatomy */
.nd-ecard {
    position: relative;
    display: flex;
    flex-direction: column;
    min-width: 0;
    color: var(--nd-ink-2);
    font-family: var(--nd-font);
    -webkit-tap-highlight-color: transparent;
}
.nd-ecard__media {
    position: relative;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    border-radius: 16px;
    background: linear-gradient(135deg, var(--nd-accent-soft-2), var(--nd-surface-2));
    isolation: isolate;
}
.nd-ecard__img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform var(--nd-dur-3) var(--nd-ease);
}
.nd-ecard__img--empty {
    /* Media fallback (design-system .nd-media-fallback look): calm surface, hairline, initial. */
    display: grid; place-items: center;
    background: var(--nd-surface-2); box-shadow: inset 0 0 0 1px var(--nd-line);
    color: var(--nd-subtle); font: 600 32px/1 var(--nd-font-display); letter-spacing: -0.02em;
}
.nd-ecard__media:has(.nd-ecard__img--empty) .nd-ecard__shade { display: none; }
.nd-ecard__shade { position: absolute; inset: 0; pointer-events: none; background: linear-gradient(180deg, rgba(0, 0, 0, 0.18) 0%, transparent 32%); }
.nd-ecard__datebadge {
    position: absolute; top: 12px; left: 12px; z-index: 2;
    display: grid; justify-items: center; min-width: 46px; padding: 6px 8px 7px;
    border-radius: 12px; background: rgba(255, 255, 255, 0.94); color: var(--nd-ink);
    box-shadow: 0 4px 12px -4px rgba(15, 23, 42, 0.3);
    -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
}
.nd-ecard__datebadge-m { color: var(--nd-accent-ink, var(--nd-accent)); font: 600 12px/1.1 var(--nd-font); letter-spacing: 0; }
.nd-ecard__datebadge-d { font: 700 19px/1.05 var(--nd-font-display); letter-spacing: -0.02em; font-variant-numeric: tabular-nums; }
.nd-ecard__pills { position: absolute; left: 12px; bottom: 12px; z-index: 2; display: flex; flex-wrap: wrap; gap: 6px; }
.nd-ecard__pill {
    display: inline-flex; align-items: center; height: 24px; padding: 0 10px; border-radius: 999px;
    background: rgba(255, 255, 255, 0.94); color: var(--nd-ink); font: 600 12px/1 var(--nd-font);
    box-shadow: 0 2px 8px -2px rgba(15, 23, 42, 0.25);
}
.nd-ecard__pill--hot { background: #fff4ed; color: #c2410c; }
.nd-ecard__pill--hot::before { content: ""; width: 6px; height: 6px; margin-right: 6px; border-radius: 50%; background: #f97316; box-shadow: 0 0 0 3px rgba(249, 115, 22, 0.18); }
.nd-ecard__pill--featured { background: var(--nd-accent); color: var(--nd-on-accent); }
.nd-ecard__save {
    position: absolute; top: 12px; right: 12px; z-index: 3;
    display: grid; place-items: center; width: 40px; height: 40px; padding: 0; border: 0; border-radius: 999px;
    background: rgba(255, 255, 255, 0.92); color: var(--nd-ink); cursor: pointer;
    box-shadow: 0 4px 12px -4px rgba(15, 23, 42, 0.3);
    -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
    transition: transform var(--nd-dur-2) var(--nd-ease-spring), color var(--nd-dur-2) var(--nd-ease), background-color var(--nd-dur-2) var(--nd-ease);
}
.nd-ecard__save:hover { transform: scale(1.08); }
.nd-ecard__save:active { transform: scale(0.92); }
.nd-ecard__save[aria-pressed="true"] { color: #e11d48; }
.nd-ecard__save[aria-pressed="true"] svg { fill: currentColor; }
.nd-ecard__save.is-bump svg { animation: nd-heart-bump var(--nd-dur-3) var(--nd-ease-spring); }
@keyframes nd-heart-bump { 0% { transform: scale(1); } 40% { transform: scale(1.35); } 100% { transform: scale(1); } }

.nd-ecard__body { display: flex; gap: 14px; padding: 14px 2px 0; min-width: 0; }
.nd-ecard__main { flex: 1; min-width: 0; display: grid; gap: 4px; align-content: start; }
.nd-discover .nd-ecard__eyebrow, .nd-ecard .nd-ecard__eyebrow { margin: 0; color: var(--nd-accent-ink); font: 600 13px/1.4 var(--nd-font); }
.nd-ecard .nd-ecard__title {
    margin: 0;
    color: var(--nd-ink);
    font: 650 17px/1.3 var(--nd-font-display);
    letter-spacing: -0.015em;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
    text-wrap: pretty;
}
.nd-ecard__link { color: inherit !important; text-decoration: none !important; }
.nd-ecard__link::after { content: ""; position: absolute; inset: 0; z-index: 1; border-radius: 16px; }
.nd-ecard__link:focus-visible { outline: none !important; box-shadow: none !important; }
.nd-ecard__link:focus-visible::after { box-shadow: var(--nd-ring); }
.nd-ecard__meta { display: grid; gap: 2px; margin: 2px 0 0; padding: 0; list-style: none; }
.nd-ecard__meta li { display: flex; align-items: center; gap: 6px; min-width: 0; margin: 0; color: var(--nd-muted); font-size: 14px; line-height: 1.45; }
.nd-ecard__meta li span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nd-ecard__meta svg { flex: none; color: var(--nd-subtle); }
.nd-ecard__foot { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; margin-top: 8px; }
.nd-ecard__price { color: var(--nd-ink); font: 600 14px/1.2 var(--nd-font); }
.nd-ecard__price.is-free { display: inline-flex; align-items: center; height: 24px; padding: 0 10px; border-radius: 999px; background: var(--nd-success-soft); color: var(--nd-success-ink); font-size: 13px; }
.nd-ecard__going { display: inline-flex; align-items: center; gap: 6px; color: var(--nd-muted); font-size: 13px; }
.nd-ecard__avatars { display: inline-flex; }
.nd-ecard__avatars img { width: 22px; height: 22px; border-radius: 50%; border: 2px solid var(--nd-surface); object-fit: cover; }
.nd-ecard__avatars img + img { margin-left: -8px; }
.nd-ecard__verified { display: inline-flex; align-items: center; gap: 4px; color: var(--nd-info-ink, var(--nd-info)); font: 600 12px/1 var(--nd-font); }

/* Interaction: hover lift + image zoom */
@media (hover: hover) {
    .nd-ecard:hover .nd-ecard__img { transform: scale(1.05); }
    .nd-ecard:hover .nd-ecard__title { color: var(--nd-ink); }
}
.nd-ecard:active { transform: scale(0.985); transition: transform 120ms var(--nd-ease); }
.nd-ecard.is-map-hover .nd-ecard__media { box-shadow: 0 0 0 2px var(--nd-accent); }

/* Loading: cards dim into skeletons */
.nd-discover.is-loading #nexdirectory-archive-results .nd-ecard { pointer-events: none; }
.nd-discover.is-loading #nexdirectory-archive-results :is(.nd-ecard__media, .nd-ecard__title, .nd-ecard__eyebrow, .nd-ecard__meta li, .nd-ecard__foot > *) {
    position: relative; overflow: hidden; color: transparent !important; border-radius: 10px;
}
.nd-discover.is-loading #nexdirectory-archive-results :is(.nd-ecard__media, .nd-ecard__title, .nd-ecard__eyebrow, .nd-ecard__meta li, .nd-ecard__foot > *)::before {
    content: ""; position: absolute; inset: 0; z-index: 5; background: #eceff4;
}
.nd-discover.is-loading #nexdirectory-archive-results :is(.nd-ecard__media, .nd-ecard__title)::after {
    content: ""; position: absolute; inset: 0; z-index: 6; transform: translateX(-100%);
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.75), transparent);
    animation: nd-shimmer 1.2s infinite;
}
.nd-discover.is-loading #nexdirectory-archive-results .nd-ecard__save,
.nd-discover.is-loading #nexdirectory-archive-results .nd-ecard__datebadge { opacity: 0; }
#nexdirectory-archive-results.nexdirectory-loading { opacity: 1 !important; }
#nexdirectory-archive-results.nexdirectory-loading::before { display: none !important; }

/* --- Poster: tall image, title over photo --- */
.nd-ecard--poster .nd-ecard__media { aspect-ratio: 3 / 4; border-radius: 20px; }
.nd-ecard--poster .nd-ecard__shade { background: linear-gradient(180deg, rgba(0, 0, 0, 0.2) 0%, transparent 28%, transparent 40%, rgba(0, 0, 0, 0.82) 100%); }
.nd-ecard--poster .nd-ecard__body { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: 20px; pointer-events: none; }
.nd-ecard--poster .nd-ecard__link { pointer-events: auto; }
.nd-ecard--poster .nd-ecard__eyebrow { color: rgba(255, 255, 255, 0.85); }
.nd-ecard--poster .nd-ecard__title { color: #fff; font-size: 21px; line-height: 1.2; letter-spacing: -0.02em; }
.nd-ecard--poster .nd-ecard__meta li, .nd-ecard--poster .nd-ecard__meta svg, .nd-ecard--poster .nd-ecard__going { color: rgba(255, 255, 255, 0.8); }
.nd-ecard--poster .nd-ecard__price { color: #fff; }
.nd-ecard--poster .nd-ecard__price.is-free { background: rgba(255, 255, 255, 0.18); color: #fff; }
.nd-ecard--poster .nd-ecard__pills { top: 70px; bottom: auto; }
.nd-ecard--poster .nd-ecard__link::after { border-radius: 20px; }
.nd-ecard--poster .nd-ecard__avatars img { border-color: rgba(0, 0, 0, 0.4); }

/* --- Glass: full-bleed image with frosted panel --- */
.nd-ecard--glass .nd-ecard__media { aspect-ratio: 4 / 5; border-radius: 24px; }
.nd-ecard--glass .nd-ecard__body {
    position: absolute; left: 10px; right: 10px; bottom: 10px; z-index: 2;
    padding: 14px 16px; border-radius: 16px;
    background: rgba(255, 255, 255, 0.72);
    border: 1px solid rgba(255, 255, 255, 0.55);
    -webkit-backdrop-filter: saturate(1.8) blur(18px); backdrop-filter: saturate(1.8) blur(18px);
    box-shadow: 0 10px 30px -14px rgba(15, 23, 42, 0.5);
    transition: transform 320ms var(--nd-ease);
}
.nd-ecard--glass .nd-ecard__title { font-size: 16px; }
.nd-ecard--glass .nd-ecard__pills { top: 70px; bottom: auto; }
.nd-ecard--glass .nd-ecard__link::after { border-radius: 24px; }
@media (hover: hover) { .nd-ecard--glass:hover .nd-ecard__body { transform: translateY(-4px); } }

/* --- Horizontal: list row --- */
.nd-ecard--horizontal {
    flex-direction: row;
    gap: 16px;
    padding: 12px;
    border: 1px solid var(--nd-line);
    border-radius: 20px;
    background: var(--nd-surface);
    box-shadow: var(--nd-shadow-1);
    transition: transform var(--nd-dur-3) var(--nd-ease), box-shadow var(--nd-dur-3) var(--nd-ease), border-color var(--nd-dur-2) var(--nd-ease);
}
.nd-ecard--horizontal .nd-ecard__media { flex: none; width: clamp(112px, 28%, 220px); aspect-ratio: 4 / 3; border-radius: 12px; }
.nd-ecard--horizontal .nd-ecard__body { flex: 1; padding: 4px 48px 4px 0; align-self: center; }
.nd-ecard--horizontal .nd-ecard__save { top: 12px; right: 12px; background: var(--nd-surface-2); box-shadow: none; }
.nd-ecard--horizontal .nd-ecard__datebadge { display: none; }
.nd-ecard--horizontal .nd-ecard__pills { left: 8px; bottom: 8px; }
.nd-ecard--horizontal .nd-ecard__link::after { border-radius: 20px; }
@media (hover: hover) {
    .nd-ecard--horizontal:hover { transform: translateY(-2px); box-shadow: var(--nd-shadow-3); border-color: var(--nd-line-strong); }
}
.nd-ecard--horizontal.is-map-hover { border-color: var(--nd-accent-line); box-shadow: 0 0 0 1px var(--nd-accent-line), var(--nd-shadow-2); }
.nd-ecard--horizontal.is-map-hover .nd-ecard__media { box-shadow: none; }
@media (max-width: 559.98px) {
    .nd-ecard--horizontal { gap: 12px; padding: 10px; border-radius: 16px; }
    .nd-ecard--horizontal .nd-ecard__media { width: 104px; aspect-ratio: 1; }
    .nd-ecard--horizontal .nd-ecard__title { font-size: 15px; }
    .nd-ecard--horizontal .nd-ecard__body { padding-right: 36px; }
    .nd-ecard--horizontal .nd-ecard__save { width: 34px; height: 34px; top: 8px; right: 8px; }
    .nd-ecard--horizontal .nd-ecard__pills { display: none; }
    .nd-ecard--horizontal .nd-ecard__foot { margin-top: 4px; }
}

/* --- Compact: dense grid --- */
.nd-ecard--compact .nd-ecard__media { aspect-ratio: 16 / 10; border-radius: 12px; }
.nd-ecard--compact .nd-ecard__body { padding-top: 10px; }
.nd-ecard--compact .nd-ecard__title { font-size: 15px; }
.nd-ecard--compact .nd-ecard__eyebrow { font-size: 12px; }
.nd-ecard--compact .nd-ecard__meta li { font-size: 13px; }
.nd-ecard--compact .nd-ecard__datebadge { display: none; }
.nd-ecard--compact .nd-ecard__save { width: 34px; height: 34px; top: 8px; right: 8px; }
.nd-ecard--compact .nd-ecard__going { display: none; }
.nd-ecard--compact .nd-ecard__link::after { border-radius: 12px; }

/* --- Minimal: text-forward with date block --- */
.nd-ecard--minimal {
    padding: 20px;
    border: 1px solid var(--nd-line);
    border-radius: var(--nd-radius-lg);
    background: var(--nd-surface);
    transition: border-color var(--nd-dur-2) var(--nd-ease), box-shadow var(--nd-dur-3) var(--nd-ease), transform var(--nd-dur-3) var(--nd-ease);
}
.nd-ecard--minimal .nd-ecard__body { padding: 0 44px 0 0; gap: 18px; }
.nd-ecard__dateblock {
    flex: none; display: grid; justify-items: center; align-content: center; width: 60px; height: 68px;
    border-radius: 14px; background: var(--nd-accent-soft); color: var(--nd-accent-ink);
}
.nd-ecard__dateblock span { font: 600 12px/1.2 var(--nd-font); letter-spacing: 0; }
.nd-ecard__dateblock strong { font: 700 24px/1.05 var(--nd-font-display); letter-spacing: -0.03em; color: var(--nd-ink); }
.nd-ecard--minimal .nd-ecard__save { top: 16px; right: 16px; width: 36px; height: 36px; background: transparent; box-shadow: none; color: var(--nd-subtle); }
.nd-ecard--minimal .nd-ecard__save:hover { color: var(--nd-ink); background: var(--nd-surface-2); }
.nd-ecard--minimal .nd-ecard__type span { display: inline-flex; height: 22px; align-items: center; padding: 0 8px; border-radius: 999px; background: var(--nd-surface-2); color: var(--nd-ink-2); font-size: 12px; font-weight: 550; }
.nd-ecard--minimal .nd-ecard__link::after { border-radius: var(--nd-radius-lg); }
@media (hover: hover) {
    .nd-ecard--minimal:hover { border-color: var(--nd-accent-line); box-shadow: var(--nd-shadow-3); transform: translateY(-2px); }
}

/* --- Spotlight: first result featured large --- */
#nexdirectory-archive-results .nd-results--spotlight { grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr)) !important; }
@container nexdirectory-archive-results (min-width: 760px) {
    .nd-results--spotlight .nd-ecard--feature { grid-column: span 2; grid-row: span 2; }
    .nd-ecard--feature .nd-ecard__media { aspect-ratio: auto; flex: 1; min-height: 420px; border-radius: 24px; }
    .nd-ecard--feature .nd-ecard__shade { background: linear-gradient(180deg, transparent 35%, rgba(0, 0, 0, 0.8) 100%); }
    .nd-ecard--feature .nd-ecard__body { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: 28px; pointer-events: none; }
    .nd-ecard--feature .nd-ecard__link { pointer-events: auto; }
    .nd-ecard--feature .nd-ecard__eyebrow { color: rgba(255, 255, 255, 0.85); font-size: 14px; }
    .nd-ecard--feature .nd-ecard__title { color: #fff; font-size: clamp(24px, 2.6vw, 32px); line-height: 1.12; letter-spacing: -0.025em; }
    .nd-ecard--feature .nd-ecard__meta li, .nd-ecard--feature .nd-ecard__meta svg, .nd-ecard--feature .nd-ecard__going { color: rgba(255, 255, 255, 0.82); }
    .nd-ecard--feature .nd-ecard__price { color: #fff; }
    .nd-ecard--feature .nd-ecard__price.is-free { background: rgba(255, 255, 255, 0.18); color: #fff; }
    .nd-ecard--feature .nd-ecard__link::after { border-radius: 24px; }
    .nd-ecard--feature { height: 100%; }
}

/* Empty state */
#nexdirectory-archive-results .nexdirectory-empty-state {
    padding: 56px 24px; border: 1px dashed var(--nd-line-strong); border-radius: 24px; background: var(--nd-surface); text-align: center;
}

/* Pagination */
.nd-discover .nexdirectory-pagination { margin: 48px 0 0; display: flex; justify-content: center; }
.nd-discover .nexdirectory-pagination ul { display: flex; flex-wrap: wrap; gap: 6px; margin: 0; padding: 0; list-style: none; }
.nd-discover .nexdirectory-pagination :is(a, span) {
    display: inline-grid; place-items: center; min-width: 44px; height: 44px; padding: 0 14px; border-radius: 999px;
    border: 1px solid var(--nd-line-strong); background: var(--nd-surface); color: var(--nd-ink); font: 550 14px/1 var(--nd-font); text-decoration: none;
}
.nd-discover .nexdirectory-pagination .current { background: var(--nd-ink); border-color: var(--nd-ink); color: #fff; }
.nd-discover .nexdirectory-pagination a:hover { border-color: var(--nd-ink); }

/* Phones: one-handed feed — full-width image cards */
@media (max-width: 559.98px) {
    #nexdirectory-archive-results .nd-results:not(.nd-results--horizontal):not(.nd-results--minimal):not(.nd-results--compact) { grid-template-columns: 1fr !important; gap: 28px !important; }
    #nexdirectory-archive-results .nd-results--compact { grid-template-columns: 1fr 1fr !important; gap: 20px 12px !important; }
    .nd-ecard--classic .nd-ecard__media, .nd-ecard--spotlight .nd-ecard__media { aspect-ratio: 16 / 11; border-radius: var(--nd-radius-lg); }
    .nd-ecard--poster .nd-ecard__media, .nd-ecard--glass .nd-ecard__media { aspect-ratio: 4 / 5; }
    .nd-ecard--minimal { padding: 16px; }
}

/* ---------------------------------------------------------------------------
 * Map kit: pins, clusters, controls, popups (shared by archive + map page)
 * ------------------------------------------------------------------------- */
.leaflet-container { font-family: var(--nd-font); background: #e9eef3; }
.nd-pin { background: none !important; border: 0 !important; }
.nd-pin--label { width: auto !important; height: auto !important; }
.nd-pin__pill {
    position: absolute; left: 0; top: 0; transform: translate(-50%, -100%);
    display: inline-flex; align-items: center; height: 30px; padding: 0 12px; white-space: nowrap;
    border-radius: 999px; background: var(--nd-surface); color: var(--nd-ink);
    font: 650 13px/1 var(--nd-font); font-variant-numeric: tabular-nums;
    box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.08), 0 6px 16px -6px rgba(15, 23, 42, 0.45);
    transition: transform 200ms var(--nd-ease-spring), background-color 160ms var(--nd-ease), color 160ms var(--nd-ease);
}
.nd-pin__pill::after {
    content: ""; position: absolute; left: 50%; bottom: -5px; width: 10px; height: 10px; margin-left: -5px;
    background: inherit; transform: rotate(45deg); border-radius: 0 0 3px 0; box-shadow: 2px 2px 3px -1px rgba(15, 23, 42, 0.18);
}
.nd-pin__dot {
    display: block; width: 18px; height: 18px; border-radius: 50%; background: var(--nd-accent);
    border: 3px solid #fff; box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.12), 0 4px 10px -2px rgba(var(--nd-accent-rgb), 0.7);
    transition: transform 200ms var(--nd-ease-spring);
}
.nd-pin:hover .nd-pin__pill, .nd-pin.is-active .nd-pin__pill { background: var(--nd-ink); color: #fff; transform: translate(-50%, -100%) scale(1.08); z-index: 1000; }
.nd-pin:hover .nd-pin__dot, .nd-pin.is-active .nd-pin__dot { transform: scale(1.35); }
.nd-pin.is-active { z-index: 1000 !important; }
.nd-pin__img {
    display: block; width: 40px; height: 40px; border-radius: 50%; border: 3px solid #fff; object-fit: cover;
    box-shadow: 0 6px 16px -6px rgba(15, 23, 42, 0.6);
}
.nd-cluster {
    display: grid !important; place-items: center; border-radius: 50%;
    background: rgba(var(--nd-accent-rgb), 0.18);
    transition: transform 200ms var(--nd-ease-spring);
}
.nd-cluster span {
    display: grid; place-items: center; width: calc(100% - 10px); height: calc(100% - 10px); border-radius: 50%;
    background: var(--nd-accent); color: var(--nd-on-accent); font: 700 14px/1 var(--nd-font); font-variant-numeric: tabular-nums;
    box-shadow: 0 6px 14px -6px rgba(var(--nd-accent-rgb), 0.9), inset 0 0 0 2px rgba(255, 255, 255, 0.85);
}
.nd-cluster:hover { transform: scale(1.08); }
/* The cluster that holds the list card under the pointer. */
.nd-cluster.is-active { transform: scale(1.12); z-index: 1000 !important; background: rgba(var(--nd-accent-rgb), 0.3); }
.nd-cluster.is-active span { background: var(--nd-ink); color: #fff; box-shadow: 0 8px 18px -6px rgba(15, 23, 42, 0.7), inset 0 0 0 2px rgba(255, 255, 255, 0.9); }
@media (prefers-reduced-motion: reduce) { .nd-cluster, .nd-cluster.is-active { transition: none; transform: none; } }
.marker-cluster-small, .marker-cluster-medium, .marker-cluster-large { background: none; }

.nd-mapctl { display: grid; gap: 8px; margin: 16px !important; transition: opacity 160ms var(--nd-ease); }
/* A preview that opens under the control stack: the stack steps aside until it closes. */
.nd-map--preview-over-ctl .nd-mapctl { opacity: 0; pointer-events: none; }
.nd-mapctl__group { display: grid; border-radius: 14px; overflow: hidden; background: var(--nd-surface); box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.06), 0 8px 20px -10px rgba(15, 23, 42, 0.45); }
.nd-mapctl__btn {
    display: grid; place-items: center; width: 42px; height: 42px; padding: 0; border: 0; background: var(--nd-surface); color: var(--nd-ink); cursor: pointer;
    border-radius: 14px; box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.06), 0 8px 20px -10px rgba(15, 23, 42, 0.45);
    transition: background-color 160ms var(--nd-ease), color 160ms var(--nd-ease);
}
.nd-mapctl__group .nd-mapctl__btn { border-radius: 0; box-shadow: none; }
.nd-mapctl__group .nd-mapctl__btn + .nd-mapctl__btn { border-top: 1px solid var(--nd-line); }
.nd-mapctl__btn:hover { background: var(--nd-surface-2); }
.nd-mapctl__btn.is-busy svg { animation: nd-spin 1s linear infinite; color: var(--nd-accent); }
.nd-mapctl__btn[aria-pressed="true"] { color: var(--nd-accent); }
.leaflet-control-attribution { padding: 2px 8px !important; border-radius: 8px 0 0 0; background: rgba(255, 255, 255, 0.72) !important; font: 400 12px/1.5 var(--nd-font) !important; color: var(--nd-muted) !important; }
.leaflet-control-attribution a { color: var(--nd-muted) !important; }

.nd-mpop-frame .leaflet-popup-content-wrapper { padding: 0; border-radius: 16px; overflow: hidden; box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.06), 0 24px 48px -16px rgba(15, 23, 42, 0.45); }
.nd-mpop-frame .leaflet-popup-content { margin: 0 !important; width: auto !important; }
.nd-mpop-frame .leaflet-popup-tip { box-shadow: none; }
.nd-mpop-frame .leaflet-popup-content-wrapper { animation: nd-mpop-in 220ms var(--nd-ease) both; transform-origin: 50% 100%; }
@keyframes nd-mpop-in { from { opacity: 0; transform: translateY(6px) scale(0.96); } }
.nd-mpop-frame a.leaflet-popup-close-button {
    top: 8px !important; right: 8px !important; width: 28px !important; height: 28px !important; display: grid !important; place-items: center;
    border-radius: 999px; background: rgba(255, 255, 255, 0.92) !important; color: var(--nd-ink) !important; font: 400 18px/1 var(--nd-font) !important;
    box-shadow: 0 2px 8px -2px rgba(15, 23, 42, 0.35); z-index: 2;
}
.nd-mpop { display: block; width: 264px; color: var(--nd-ink) !important; text-decoration: none !important; }
.nd-mpop__media { display: block; aspect-ratio: 16 / 9; overflow: hidden; background: var(--nd-surface-2); }
.nd-mpop__media img { width: 100%; height: 100%; object-fit: cover; transition: transform var(--nd-dur-3) var(--nd-ease); }
.nd-mpop:hover .nd-mpop__media img { transform: scale(1.04); }
.nd-mpop__body { display: grid; gap: 3px; padding: 12px 14px 14px; }
.nd-mpop__when { color: var(--nd-accent); font: 600 12px/1.3 var(--nd-font); }
.nd-mpop__title { font: 650 15px/1.3 var(--nd-font-display); letter-spacing: -0.01em; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.nd-mpop__meta { color: var(--nd-muted); font: 400 13px/1.4 var(--nd-font); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.leaflet-fade-anim .leaflet-popup { transition: opacity 180ms var(--nd-ease); }

/* ---------------------------------------------------------------------------
 * Map page: the map is the page. Floating list panel (desktop) / draggable
 * bottom sheet with peek · half · full snap points (phones).
 * ------------------------------------------------------------------------- */
.nd-mapx {
    --nd-mapx-h: calc(100vh - var(--nd-sticky-top));
    position: relative;
    height: var(--nd-mapx-h);
    height: calc(100dvh - var(--nd-sticky-top));
    overflow: hidden;
    background: #e9eef3;
    font-family: var(--nd-font);
    color: var(--nd-ink-2);
}
.nd-mapx { width: 100vw !important; max-width: none !important; margin-left: calc(50% - 50vw) !important; margin-right: calc(50% - 50vw) !important; }
body:has(.nd-mapx) { overflow-x: clip; }
.nd-mapx.is-fullscreen { position: fixed; inset: 0; z-index: 100030; height: 100dvh; }
.nd-mapx__main { position: absolute; inset: 0; }
.nd-mapx__map { position: absolute; inset: 0; z-index: 1; }
#nexdirectory-events-map { width: 100%; height: 100%; }
.nd-mapx__panel {
    position: absolute;
    z-index: 20;
    top: 16px;
    left: 16px;
    bottom: 16px;
    width: clamp(360px, 31vw, 440px);
    display: flex;
    flex-direction: column;
    background: var(--nd-surface);
    border-radius: 24px;
    box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.05), 0 24px 60px -24px rgba(15, 23, 42, 0.45);
    overflow: hidden;
}
.nd-mapx__grab { display: none; }
.nd-mapx__head { flex: none; padding: 20px 20px 4px; }
.nd-mapx__titlerow { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.nd-mapx .nd-mapx__title { margin: 0; color: var(--nd-ink); font: 700 22px/1.2 var(--nd-font-display); letter-spacing: -0.025em; }
.nd-mapx__count { color: var(--nd-muted); font: 500 14px/1.2 var(--nd-font); font-variant-numeric: tabular-nums; white-space: nowrap; }
.nd-mapx__search {
    display: flex; align-items: center; gap: 10px; height: 48px; margin-top: 14px; padding: 0 16px;
    border: 1px solid var(--nd-line-strong); border-radius: 14px; background: var(--nd-surface-2); color: var(--nd-muted);
    transition: border-color var(--nd-dur-2) var(--nd-ease), box-shadow var(--nd-dur-2) var(--nd-ease), background-color var(--nd-dur-2) var(--nd-ease);
}
.nd-mapx__search:focus-within { background: var(--nd-surface); border-color: var(--nd-accent-line); box-shadow: var(--nd-ring); }
.nd-mapx__search input {
    flex: 1; min-width: 0; height: 100%; margin: 0; padding: 0; border: 0 !important; background: transparent !important; box-shadow: none !important; outline: none !important;
    color: var(--nd-ink); font: 500 15px/1.2 var(--nd-font) !important;
}
.nd-mapx__rail { padding: 12px 0 10px; margin: 0 -20px; padding-left: 20px; padding-right: 20px; }
.nd-mapx__rail .nd-qchip { height: 36px; font-size: 13.5px; padding: 0 12px; }
.nd-mapx__listwrap { flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: 0 12px 16px; -webkit-overflow-scrolling: touch; border-top: 1px solid var(--nd-line); }
.nd-mapx__sortrow { display: flex; justify-content: flex-end; padding: 10px 8px 6px; }
.nd-mapx__sortrow .nd-sortpill select { height: 32px; font-size: 13px !important; border-color: transparent; background-color: transparent; color: var(--nd-muted); }
.nd-mapx__sortrow .nd-sortpill select:hover { color: var(--nd-ink); }
.nd-mapx__list { display: grid; gap: 4px; }
@media (max-width: 899.98px) { .nd-mapx__list { padding-bottom: calc(88px + env(safe-area-inset-bottom, 0px)); } }
.nd-mapx__slider { display: none !important; }

/* Compact map result card */
.nd-mcard {
    position: relative; display: flex; gap: 14px; padding: 10px; border-radius: 16px;
    transition: background-color var(--nd-dur-2) var(--nd-ease);
}
.nd-mcard:hover, .nd-mcard.is-map-hover { background: var(--nd-surface-2); }
.nd-mcard.is-map-hover { box-shadow: inset 0 0 0 1.5px var(--nd-accent-line); }
.nd-mcard__media { position: relative; flex: none; width: 104px; height: 104px; border-radius: 12px; overflow: hidden; background: var(--nd-accent-soft); }
.nd-mcard__media img { width: 100%; height: 100%; object-fit: cover; transition: transform var(--nd-dur-3) var(--nd-ease); }
.nd-mcard:hover .nd-mcard__media img { transform: scale(1.06); }
.nd-mcard__initial { display: grid; place-items: center; height: 100%; color: var(--nd-accent); font: 700 28px/1 var(--nd-font-display); }
.nd-mcard__badge { position: absolute; left: 6px; top: 6px; padding: 3px 7px; border-radius: 999px; background: var(--nd-accent); color: var(--nd-on-accent); font: 600 12px/1.2 var(--nd-font); }
.nd-mcard__body { flex: 1; min-width: 0; display: grid; align-content: center; gap: 3px; padding-right: 36px; }
.nd-mcard .nd-mcard__when { margin: 0; color: var(--nd-accent); font: 600 12.5px/1.3 var(--nd-font); }
.nd-mcard .nd-mcard__title { margin: 0; color: var(--nd-ink); font: 650 15.5px/1.3 var(--nd-font-display); letter-spacing: -0.012em; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.nd-mcard__link { color: inherit !important; text-decoration: none !important; }
.nd-mcard__link::after { content: ""; position: absolute; inset: 0; z-index: 1; border-radius: 16px; }
.nd-mcard .nd-mcard__meta { margin: 0; color: var(--nd-muted); font-size: 13.5px; line-height: 1.4; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.nd-mcard__price { color: var(--nd-ink); font: 600 13.5px/1.3 var(--nd-font); }
.nd-mcard__price.is-free { color: var(--nd-success-ink); }
.nd-mcard__save { top: 10px !important; right: 10px !important; width: 34px !important; height: 34px !important; background: transparent !important; box-shadow: none !important; color: var(--nd-subtle) !important; }
.nd-mcard__save:hover { background: var(--nd-surface) !important; color: var(--nd-ink) !important; }
.nd-mcard__save[aria-pressed="true"] { color: #e11d48 !important; }
.nd-mcard--skeleton .nd-mcard__media { background: #eceff4; }
.nd-mcard--skeleton .nd-mcard__body { gap: 8px; }
.nd-mcard--skeleton .nd-skeleton { display: block; border-radius: 6px; }
.nd-mapx .nexdirectory-loading .nd-mcard { opacity: 0.5; }
.nd-mapx #map-load-more-wrap { display: flex; justify-content: center; padding: 12px 0 4px; }
.nd-mapx #map-load-more-wrap[hidden] { display: none; }
.nd-mapx #map-load-more { min-height: 44px; border-radius: 999px !important; font-family: var(--nd-font); }
.nd-mapx .nexdirectory-search-recovery { margin: 8px; padding: 24px 16px; border-radius: var(--nd-radius-lg); background: var(--nd-surface-2); }

/* "Search this area" pill */
.nd-mapx__area {
    position: absolute; z-index: 15; top: 20px; left: 50%;
    display: inline-flex; align-items: center; gap: 8px; height: 42px; padding: 0 18px;
    border: 0; border-radius: 999px; background: var(--nd-surface); color: var(--nd-ink);
    font: 600 14px/1 var(--nd-font); cursor: pointer;
    box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.06), 0 10px 24px -10px rgba(15, 23, 42, 0.5);
    opacity: 0; pointer-events: none; transform: translate(-50%, -12px);
    transition: opacity 220ms var(--nd-ease), transform 320ms var(--nd-ease-spring);
}
.nd-mapx__area.is-visible { opacity: 1; pointer-events: auto; transform: translate(-50%, 0); }
@media (min-width: 900px) { .nd-mapx__area { left: calc(50% + clamp(180px, 15.5vw, 220px)); } }

.nd-mapx--listonly .nd-mapx__panel { position: relative; inset: auto; width: auto; max-width: 860px; height: 100%; margin: 0 auto; border-radius: 0; box-shadow: none; }
.nd-mapx--listonly { background: var(--nd-surface); }
.nd-mapx--maponly .nd-mapx__area { left: 50%; }

/* Phones: full-screen map + draggable bottom sheet */
@media (max-width: 899.98px) {
    .nd-mapx__panel {
        top: auto; left: 0; right: 0; bottom: 0; width: auto;
        height: calc(100% - 8px);
        border-radius: 22px 22px 0 0;
        box-shadow: 0 -10px 40px -16px rgba(15, 23, 42, 0.45);
        transform: translate3d(0, var(--nd-sheet-y, 50%), 0);
        transition: transform 380ms var(--nd-ease);
        touch-action: none;
        will-change: transform;
    }
    .nd-mapx__panel.is-dragging { transition: none; }
    .nd-mapx__grab { display: grid; place-items: center; height: 22px; flex: none; cursor: grab; }
    .nd-mapx__grab span { width: 40px; height: 5px; border-radius: 999px; background: var(--nd-line-strong); }
    .nd-mapx__head { padding: 0 16px 0; }
    .nd-mapx .nd-mapx__title { font-size: 18px; }
    .nd-mapx__search { margin-top: 10px; height: 46px; }
    .nd-mapx__search input { font-size: 16px !important; }
    .nd-mapx__rail { margin: 0 -16px; padding: 10px 16px; }
    .nd-mapx__rail .nd-qchip { height: 40px; }
    .nd-mapx__listwrap { padding: 0 8px calc(96px + env(safe-area-inset-bottom, 0px)); touch-action: pan-y; }
    .nd-mapx__panel[data-snap="full"] .nd-mapx__listwrap { touch-action: pan-y; }
    .nd-mapx__toggle { bottom: calc(24px + env(safe-area-inset-bottom, 0px) + var(--nd-bottom-bar-h, 0px)); }
    .nd-mapx__toggle [hidden] { display: none !important; }
    .nd-mapx .leaflet-top.leaflet-right { top: 0; }
    .nd-mapx__area { top: 16px; }
    .nd-mapx--listonly .nd-mapx__panel { transform: none; height: 100%; border-radius: 0; }
}
@media (min-width: 900px) { .nd-mapx__toggle { display: none !important; } }
html.nd-map-fullscreen body { overflow: hidden; }
/* Modern light skin: cool, airy tint over Esri's light canvas. */
.leaflet-container:has(.nd-tiles-modern)::after {
    content: ""; position: absolute; inset: 0; z-index: 250; pointer-events: none;
    background: linear-gradient(180deg, #eef4fb, #f2f6fb); mix-blend-mode: multiply; opacity: 0.85;
}
/* Past the poles (zoomed far out) show the canvas's own water tone, not a pale band. */
.leaflet-container:has(.nd-tiles-modern), html body #nexdirectory-events-map:has(.nd-tiles-modern) { background: #dbd6d7; }
.leaflet-container .nexdirectory-map-labels { opacity: 0.9; }

/* ---------------------------------------------------------------------------
 * Calendar v2: text-first header, sticky toolbar, month/week/agenda views
 * ------------------------------------------------------------------------- */
.nd-cal2 { margin: 0 auto; padding: 0 var(--nd-gutter) 96px; background: transparent; font-family: var(--nd-font); color: var(--nd-ink-2); }
.nd-cal2__head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 16px 24px; padding: 40px 0 28px; }
.nd-cal2__head .nexdirectory-breadcrumb-shell { margin: 0 0 16px !important; padding: 0 !important; max-width: none !important; }
.nd-cal2 .nd-cal2__title { margin: 0; color: var(--nd-ink); font: 700 clamp(30px, 4.4vw, 44px)/1.05 var(--nd-font-display); letter-spacing: -0.035em; }
.nd-cal2 .nd-cal2__lede { margin: 10px 0 0; color: var(--nd-muted); font-size: 16px; line-height: 1.55; max-width: 56ch; }
.nd-cal2__headactions { display: flex; gap: 8px; align-items: center; }
.nd-cal-subscribe__panel { right: 0; left: auto; width: min(360px, calc(100vw - 32px)); padding: 12px; display: grid; gap: 8px; }
.nd-cal-subscribe__intro { margin: 0 4px 4px; }
.nd-cal-subscribe__option { padding: 12px; border: 1px solid var(--nd-line); border-radius: 12px; background: var(--nd-surface-2); }
.nd-cal-subscribe__option--accent { background: var(--nd-accent-soft); border-color: var(--nd-accent-line); }
.nd-cal-subscribe__option-title { margin: 0 0 4px; color: var(--nd-ink); font: 650 14px/1.3 var(--nd-font); }
.nd-cal-subscribe__actions { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }

.nd-cal2__shell { border: 1px solid var(--nd-line); border-radius: 24px; background: var(--nd-surface); box-shadow: var(--nd-shadow-1); }
.nd-cal2__toolbar {
    position: sticky; top: var(--nd-sticky-top); z-index: 30;
    display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px;
    padding: 14px 16px; border-bottom: 1px solid var(--nd-line);
    border-radius: 24px 24px 0 0;
    background: rgba(255, 255, 255, 0.9); -webkit-backdrop-filter: saturate(1.6) blur(14px); backdrop-filter: saturate(1.6) blur(14px);
}
.nd-cal2__monthnav { display: flex; align-items: center; gap: 6px; }
.nd-cal2 .nd-cal2__month { margin: 0 6px; min-width: 9ch; color: var(--nd-ink); font: 700 22px/1.2 var(--nd-font-display); letter-spacing: -0.02em; text-align: center; }
.nd-cal2__iconbtn {
    display: grid; place-items: center; width: 40px; height: 40px; padding: 0; border: 1px solid var(--nd-line-strong); border-radius: 999px;
    background: var(--nd-surface); color: var(--nd-ink); cursor: pointer; text-decoration: none;
    transition: background-color var(--nd-dur-2) var(--nd-ease), border-color var(--nd-dur-2) var(--nd-ease);
}
.nd-cal2__iconbtn:hover { background: var(--nd-surface-2); border-color: var(--nd-ink-2); }
.nd-cal2__today { display: inline-flex; align-items: center; height: 40px; padding: 0 16px; margin-left: 6px; border: 1px solid var(--nd-line-strong); border-radius: 999px; color: var(--nd-ink) !important; font: 600 14px/1 var(--nd-font); text-decoration: none !important; }
.nd-cal2__today:hover { border-color: var(--nd-ink-2); }
.nd-cal2__count { margin-left: 10px; color: var(--nd-muted); font-size: 14px; font-variant-numeric: tabular-nums; }
.nd-viewtoggle--text button { width: auto; height: 34px; padding: 0 14px; font: 600 13.5px/1 var(--nd-font) !important; letter-spacing: 0 !important; }

/* Month grid */
.nd-cal2 .nd-cal__weekdays > div { padding: 12px 8px; text-align: left; letter-spacing: 0; text-transform: none; font: 600 13px/1 var(--nd-font); color: var(--nd-muted); border-bottom: 1px solid var(--nd-line); }
.nd-cal2 .nd-cal__grid { gap: 0; background: none; border-radius: 0 0 24px 24px; overflow: hidden; }
.nd-cal2 .nd-cal__cell { border-right: 1px solid var(--nd-line); border-bottom: 1px solid var(--nd-line); }
.nd-cal2 .nd-cal__cell:nth-child(7n) { border-right: 0; }
.nd-cal2 .nd-cal__cell--empty { background: repeating-linear-gradient(-45deg, var(--nd-surface-2) 0 6px, var(--nd-surface) 6px 12px); }
.nd-cal2 .nd-cal__cell.is-past .nd-cal__day { color: var(--nd-subtle); }
.nd-cal2 .nd-cal__cell.is-past .nd-cal__pill { opacity: 0.7; }
@media (min-width: 768px) {
    .nd-cal2 .nd-cal__cell { min-height: 132px; padding: 8px; }
    .nd-cal2 .nd-cal__day { width: 30px; height: 30px; font-size: 14px; }
    .nd-cal2 .nd-cal__cell.is-today { box-shadow: none; background: rgba(var(--nd-accent-rgb), 0.035); }
}
.nd-cal2 .nd-cal__pill { padding: 4px 8px; border-left-width: 0; border-radius: var(--nd-radius-xs); font-size: 12px; }
/* Tone is the design-system accent-tint with an inset edge; no extra dot. */
.nd-cal2 .nd-cal__pill-time { color: var(--nd-muted); font-weight: 600; font-variant-numeric: tabular-nums; }
.nd-cal2 .nd-cal__pill[data-popover]::after { border-radius: 10px; padding: 10px 12px; font-size: 13px; max-width: 260px; }

/* Week strip */
.nd-cal2__weekstrip { display: flex; align-items: center; gap: 8px; padding: 12px 12px; border-bottom: 1px solid var(--nd-line); }
.nd-cal2__weekdays { flex: 1; display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.nd-cal2__wday {
    position: relative; display: grid; justify-items: center; gap: 4px; padding: 8px 0 12px; border: 0; border-radius: 14px;
    background: transparent; color: var(--nd-ink-2); cursor: pointer; font-family: var(--nd-font);
    transition: background-color var(--nd-dur-2) var(--nd-ease), color var(--nd-dur-2) var(--nd-ease);
}
.nd-cal2__wday:hover { background: var(--nd-surface-2); }
.nd-cal2__wday-name { color: var(--nd-muted); font: 600 13px/1 var(--nd-font); letter-spacing: 0; }
.nd-cal2__wday-num { font: 650 18px/1 var(--nd-font-display); font-variant-numeric: tabular-nums; }
.nd-cal2__wday-dot { position: absolute; bottom: 5px; width: 5px; height: 5px; border-radius: 50%; background: transparent; }
.nd-cal2__wday.has-events .nd-cal2__wday-dot { background: var(--nd-accent); }
.nd-cal2__wday.is-out { opacity: 0.4; }
.nd-cal2__wday.is-today .nd-cal2__wday-num { color: var(--nd-accent); }
.nd-cal2__wday[aria-selected="true"] { background: var(--nd-ink); color: #fff; }
.nd-cal2__wday[aria-selected="true"] .nd-cal2__wday-name { color: rgba(255, 255, 255, 0.7); }
.nd-cal2__wday[aria-selected="true"] .nd-cal2__wday-num { color: #fff; }
.nd-cal2__wday[aria-selected="true"].has-events .nd-cal2__wday-dot { background: #fff; }

/* Week columns */
.nd-cal2__week { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); min-height: 360px; }
.nd-cal2__wcol { display: grid; align-content: start; gap: 6px; padding: 12px 8px; border-right: 1px solid var(--nd-line); }
.nd-cal2__wcol:last-child { border-right: 0; }
.nd-cal2__wcol.is-selected { background: rgba(var(--nd-accent-rgb), 0.03); }
.nd-cal2__wcol-head { margin: 0 0 6px; color: var(--nd-muted); font: 600 13px/1 var(--nd-font); }
.nd-cal2__wcol-head strong { color: var(--nd-ink); font-size: 15px; }
.nd-cal2__wcol.is-today .nd-cal2__wcol-head strong { color: var(--nd-accent); }
.nd-cal2__wevent { display: grid; gap: 2px; padding: 8px 10px; border-radius: 10px; background: var(--_tone-soft, var(--nd-accent-soft)); border: 0 !important; text-decoration: none !important; transition: transform var(--nd-dur-1) var(--nd-ease), box-shadow var(--nd-dur-2) var(--nd-ease); }
.nd-cal2__wevent:hover { transform: translateY(-1px); box-shadow: var(--nd-shadow-2); }
.nd-cal2__wevent-time { color: var(--_tone, var(--nd-accent)); font: 650 12px/1.2 var(--nd-font); }
.nd-cal2__wevent-title { color: var(--nd-ink); font: 600 13px/1.3 var(--nd-font); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.nd-cal2__wevent-city { color: var(--nd-muted); font: 400 12px/1.3 var(--nd-font); }
.nd-cal2__wempty { margin: 0; color: var(--nd-subtle); font-size: 12.5px; }

/* Agenda */
.nd-cal2__agenda { padding: 4px 0 8px; }
.nd-cal2__aday { scroll-margin-top: 160px; }
.nd-cal2__aday-head {
    position: sticky; top: calc(var(--nd-sticky-top) + 69px); z-index: 5;
    display: flex; align-items: center; gap: 12px; margin: 0; padding: 12px 20px;
    background: rgba(255, 255, 255, 0.94); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
    border-bottom: 1px solid var(--nd-line);
}
.nd-cal2__aday-num { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 12px; background: var(--nd-surface-2); color: var(--nd-ink); font: 700 17px/1 var(--nd-font-display); font-variant-numeric: tabular-nums; }
.nd-cal2__aday.is-selected .nd-cal2__aday-num { background: var(--nd-ink); color: #fff; }
.nd-cal2__aday-label { display: grid; gap: 2px; }
.nd-cal2__aday-label strong { color: var(--nd-ink); font: 650 15px/1.2 var(--nd-font); }
.nd-cal2__aday-label span { color: var(--nd-muted); font: 400 13px/1.2 var(--nd-font); }
.nd-cal2__aday-today { margin-left: auto; padding: 4px 10px; border-radius: 999px; background: var(--nd-accent-soft); color: var(--nd-accent-ink); font: 600 12px/1 var(--nd-font); }
.nd-cal2__alist { margin: 0; padding: 6px 8px; list-style: none; }
.nd-cal2__alist li { margin: 0; list-style: none; }
.nd-cal2__aitem { display: flex; align-items: center; gap: 14px; min-height: 60px; padding: 10px 12px; border-radius: 14px; color: inherit !important; text-decoration: none !important; transition: background-color var(--nd-dur-1) var(--nd-ease); }
.nd-cal2__aitem:hover { background: var(--nd-surface-2); }
.nd-cal2__atime { flex: none; width: 64px; color: var(--nd-ink); font: 600 14px/1.2 var(--nd-font); font-variant-numeric: tabular-nums; }
.nd-cal2__abar { flex: none; align-self: stretch; width: 4px; border-radius: 4px; background: var(--_tone, var(--nd-accent)) !important; border: 0 !important; }
.nd-cal2__abody { flex: 1; min-width: 0; display: grid; gap: 3px; }
.nd-cal2__atitle { color: var(--nd-ink); font: 600 15px/1.3 var(--nd-font); }
.nd-cal2__ameta { color: var(--nd-muted); font-size: 13.5px; }
.nd-cal2__achev { flex: none; color: var(--nd-subtle); }
.nd-cal2__empty { margin: 32px auto; }
.nd-cal2__emptyactions { display: flex; gap: 8px; justify-content: center; }

/* Day modal */
.nd-cal2__modal { position: fixed; inset: 0; z-index: 100050; display: flex; align-items: center; justify-content: center; padding: 16px; }
.nd-cal2__modal-scrim { position: absolute; inset: 0; background: rgba(15, 23, 42, 0.45); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }
.nd-cal2__modal-card { position: relative; width: min(460px, 100%); max-height: 80vh; display: flex; flex-direction: column; border-radius: 20px; background: var(--nd-surface); box-shadow: var(--nd-shadow-4); overflow: hidden; }
.nd-cal2__modal-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 20px 20px 12px; }
.nd-cal2 .nd-cal2__modal-title { margin: 0; color: var(--nd-ink); font: 650 18px/1.3 var(--nd-font-display); letter-spacing: -0.015em; }
.nd-cal2 .nd-cal2__modal-sub { margin: 4px 0 0; color: var(--nd-muted); font-size: 14px; }
.nd-cal2__modal-list { overflow-y: auto; padding: 0 8px 12px; }
.nd-pop-enter, .nd-pop-leave { transition: opacity 200ms var(--nd-ease), transform 220ms var(--nd-ease); }
.nd-pop-from { opacity: 0; transform: scale(0.96) translateY(8px); }
.nd-pop-to { opacity: 1; transform: none; }

/* Phones: agenda-first app screen */
@media (max-width: 767.98px) {
    .nd-cal2 { padding-left: 0; padding-right: 0; }
    .nd-cal2__head { padding: 20px 16px 16px; flex-wrap: nowrap; align-items: center; }
    .nd-cal2__headactions summary.nd-btn { width: 44px; padding: 0; justify-content: center; font-size: 0 !important; }
    .nd-cal2__headactions summary.nd-btn svg { width: 18px !important; height: 18px !important; flex: none; }
    .nd-cal2__headactions .nd-btn--primary { width: 44px; padding: 0; justify-content: center; }
    .nd-cal2__head .nexdirectory-breadcrumb-shell { display: none !important; }
    .nd-cal2 .nd-cal2__title { font-size: 30px; }
    .nd-cal2 .nd-cal2__lede { display: none; }
    .nd-cal2__headactions .nd-btn--primary span { display: none; }
    .nd-cal2__shell { border-radius: 0; border-left: 0; border-right: 0; box-shadow: none; }
    .nd-cal2__toolbar { border-radius: 0; padding: 10px 16px; }
    .nd-cal2 .nd-cal2__month { font-size: 18px; min-width: 0; }
    .nd-cal2__count { display: none; }
    .nd-cal2__iconbtn { width: 36px; height: 36px; }
    .nd-viewtoggle--text { width: 100%; }
    .nd-viewtoggle--text button { flex: 1; height: 36px; }
    .nd-cal2__weekstrip { position: sticky; top: calc(var(--nd-sticky-top) + 112px); z-index: 20; background: var(--nd-surface); padding: 8px; gap: 4px; }
    .nd-cal2__weekstrip .nd-cal2__iconbtn { width: 32px; height: 32px; border: 0; }
    .nd-cal2__aday-head { top: calc(var(--nd-sticky-top) + 112px + 77px); padding: 10px 16px; }
    .nd-cal2__week { grid-template-columns: 1fr; min-height: 0; }
    .nd-cal2__wcol { display: none; border-right: 0; }
    .nd-cal2__wcol.is-selected { display: grid; background: none; }
    .nd-cal2__aitem { min-height: 64px; }
    .nd-cal2__aitem:active { background: var(--nd-surface-2); }
}
@container nexdirectory-archive-results (min-width: 1000px) {
    .nd-discover[data-view="grid"] #nexdirectory-archive-results .nd-results--horizontal { grid-template-columns: 1fr 1fr !important; gap: 16px !important; }
}
.nd-discover[data-view="list"] #nexdirectory-archive-results { max-width: 920px; }
.nd-mapx .nd-mapctl__btn[data-ctl="fullscreen"] { display: none; }
@media (min-width: 900px) { .nd-mapx .nd-mapctl__btn[data-ctl="fullscreen"] { display: grid; } }
.nd-mpop__cta { display: inline-flex; align-items: center; gap: 4px; margin-top: 6px; color: var(--nd-accent); font: 600 13px/1 var(--nd-font); }
.nd-mpop:hover .nd-mpop__cta svg { transform: translateX(2px); }
.nd-mpop__cta svg { transition: transform var(--nd-dur-2) var(--nd-ease); }

/* ------------------------------------------------------------------ */
/* Pass 3: shared labels, Near me, past toggle, map card footer        */
/* ------------------------------------------------------------------ */
.nd-ecard__pill--when { background: rgba(255, 255, 255, 0.94); color: var(--nd-ink); }
.nd-ecard__pill--when.is-ended { background: rgba(15, 23, 42, 0.72); color: #fff; }
.nd-mcard .nd-mcard__foot { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; margin: 4px 0 0; }
.nd-mcard__going { color: var(--nd-muted); font: 500 13px/1.3 var(--nd-font); }
.nd-mcard__going.is-hot { color: #c2410c; font-weight: 600; }
.nd-mcard__save { top: 4px !important; right: 4px !important; width: 44px !important; height: 44px !important; }
.nd-results__past { grid-column: 1 / -1; display: flex; justify-content: center; margin: 32px 0 0; }
.nd-linkbtn {
    display: inline-flex; align-items: center; min-height: 44px; padding: 0 16px; border: 0; border-radius: 999px;
    background: transparent; color: var(--nd-ink-2); font: 600 14px/1 var(--nd-font); cursor: pointer;
    text-decoration: underline; text-decoration-color: var(--nd-line-strong); text-underline-offset: 4px;
    transition: background-color var(--nd-dur-2) var(--nd-ease), color var(--nd-dur-2) var(--nd-ease);
}
.nd-linkbtn:hover { background: var(--nd-surface-2); color: var(--nd-ink); }
.nd-linkbtn:focus-visible { outline: none; box-shadow: var(--nd-ring); }
.nd-discover [data-nd-near-chip][aria-pressed="false"] { display: none; }
/* Never show two dividers in a row when the chips between them are hidden or absent. */
.nd-discover .nd-rail__sep:is(:has(+ .nd-rail__sep), :has(+ [data-nd-near-chip]:not([aria-pressed="true"]) + [data-nd-saved-chip][hidden] + .nd-rail__sep)) { display: none; }
.nd-searchbar__locate[aria-pressed="true"] { background: var(--nd-accent-soft); color: var(--nd-accent-ink); }
:is(.nd-searchbar__locate, [data-nd-near-chip]).is-busy svg { animation: nd-locate-pulse 1s var(--nd-ease) infinite; }
@keyframes nd-locate-pulse { 50% { opacity: 0.35; transform: scale(0.88); } }
@media (prefers-reduced-motion: reduce) { :is(.nd-searchbar__locate, [data-nd-near-chip]).is-busy svg { animation: none; opacity: 0.5; } }
.nexdirectory-empty-state__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin-top: 16px; }

/* ------------------------------------------------------------------ */
/* Widgets + Elementor blocks: same card component as the archive.     */
/* Owner widget settings map onto tokens (accent, gap, columns).       */
/* ------------------------------------------------------------------ */
.nexdirectory-widget-block {
    --nd-accent: var(--nexdirectory-widget-accent, var(--nexdirectory-primary, #ff5e14));
    container-type: inline-size;
    margin: 0 0 48px;
    color: var(--nd-ink-2);
    font-family: var(--nd-font);
}
.nexdirectory-widget-block .nexdirectory-widget-header { display: grid; gap: 4px; margin: 0 0 16px; }
.nexdirectory-widget-block .nexdirectory-widget-title { margin: 0; color: var(--nd-ink); font: 700 clamp(22px, 2.6vw, 30px)/1.15 var(--nd-font-display); letter-spacing: -0.025em; text-wrap: balance; }
.nexdirectory-widget-block .nexdirectory-widget-subtitle { margin: 0; color: var(--nd-muted); font-size: 16px; line-height: 1.55; max-width: 680px; }
.nexdirectory-widget-block .nexdirectory-widget-meta { margin: 0 0 16px; }
.nexdirectory-widget-block .nexdirectory-widget-count { color: var(--nd-muted); font-size: 14px; font-variant-numeric: tabular-nums; }
.nexdirectory-widget-block .nd-results {
    display: grid;
    gap: var(--nexdirectory-widget-gap, 24px);
    grid-template-columns: repeat(var(--nexdirectory-widget-cols-desktop, 3), minmax(0, 1fr));
    align-items: start;
}
.nexdirectory-widget-block .nd-results--horizontal,
.nexdirectory-widget-block .nd-results--minimal { grid-template-columns: 1fr; gap: 12px; }
.nexdirectory-widget-block .nd-ecard__media { border-radius: var(--nexdirectory-widget-card-radius, 16px); }
.nexdirectory-widget-block .nd-results > .nd-empty { grid-column: 1 / -1; }
@container (max-width: 900px) {
    .nexdirectory-widget-block .nd-results:not(.nd-results--horizontal):not(.nd-results--minimal) { grid-template-columns: repeat(var(--nexdirectory-widget-cols-tablet, 2), minmax(0, 1fr)); }
}
@container (max-width: 560px) {
    .nexdirectory-widget-block .nd-results:not(.nd-results--horizontal):not(.nd-results--minimal) { grid-template-columns: repeat(var(--nexdirectory-widget-cols-mobile, 1), minmax(0, 1fr)); gap: 24px; }
}
/* Bento: poster tiles on a 4-col rhythm; size classes come from the widget template. */
.nexdirectory-widget-block .nexdirectory-widget-bento-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-flow: dense; }
.nexdirectory-widget-block .nd-bento__cell { min-width: 0; display: grid; }
.nexdirectory-widget-block .nd-bento__cell .nd-ecard { height: 100%; }
.nexdirectory-widget-block .nd-bento__cell .nd-ecard__media { aspect-ratio: auto; min-height: 260px; height: 100%; }
.nexdirectory-widget-block .nd-bento__cell:is(.is-wide, .nexdirectory-bento-wide, [class*="wide"]) { grid-column: span 2; }
.nexdirectory-widget-block .nd-bento__cell:is(.is-tall, .nexdirectory-bento-tall, [class*="tall"]) { grid-row: span 2; }
.nexdirectory-widget-block .nd-bento__cell:is(.is-large, .nexdirectory-bento-large, [class*="large"], [class*="feature"]) { grid-column: span 2; grid-row: span 2; }
@container (max-width: 900px) { .nexdirectory-widget-block .nexdirectory-widget-bento-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@container (max-width: 560px) {
    .nexdirectory-widget-block .nexdirectory-widget-bento-grid { grid-template-columns: 1fr; }
    .nexdirectory-widget-block .nd-bento__cell { grid-column: auto !important; grid-row: auto !important; }
}
/* AJAX search widget: one search field + selects in a calm card. */
.nexdirectory-widget-search-block .nexdirectory-widget-search-form {
    display: grid; gap: 12px; margin: 0 0 16px; padding: 16px; border: 1px solid var(--nd-line); border-radius: 16px;
    background: var(--nd-surface); box-shadow: var(--nd-shadow-1);
}
.nexdirectory-widget-search-block .nexdirectory-widget-search-fields { display: grid; gap: 8px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 160px), 1fr)); }
.nexdirectory-widget-search-block .nexdirectory-widget-search-fields > input[type="text"]:first-of-type,
.nexdirectory-widget-search-block .nexdirectory-widget-search-fields > input[type="search"] { grid-column: 1 / -1; }
.nexdirectory-widget-search-block :is(input, select) {
    width: 100%; min-height: 44px; padding: 0 12px; border: 1px solid var(--nd-line-strong); border-radius: 12px;
    background: var(--nd-surface); color: var(--nd-ink); font: 400 15px/1.3 var(--nd-font);
}
.nexdirectory-widget-search-block :is(input, select):focus-visible { outline: none; border-color: var(--nd-accent); box-shadow: var(--nd-ring); }
.nexdirectory-widget-search-block .nexdirectory-widget-search-actions { display: flex; gap: 8px; justify-content: flex-end; }
.nexdirectory-widget-search-block .nexdirectory-widget-search-actions .nexdirectory-btn {
    min-height: 44px; padding: 0 18px; border-radius: 999px; border: 1px solid transparent;
    background: var(--nd-accent); color: var(--nd-on-accent); font: 600 15px/1 var(--nd-font); cursor: pointer;
}
.nexdirectory-widget-search-block .nexdirectory-widget-search-actions .nexdirectory-btn-secondary { background: transparent; color: var(--nd-ink-2); border-color: var(--nd-line-strong); }
.nexdirectory-widget-search-block.is-loading [data-nexdirectory-widget-search-results] { opacity: 0.55; transition: opacity var(--nd-dur-2) var(--nd-ease); }

/* ------------------------------------------------------------------ */
/* Listing types on the shared card (jobs · marketplace · directory)   */
/* ------------------------------------------------------------------ */
.nd-ecard .nd-ecard__company { display: flex; align-items: center; gap: 8px; color: var(--nd-ink-2); font-weight: 600; }
.nd-ecard__logo {
    display: grid; place-items: center; flex: none; width: 24px; height: 24px; border-radius: var(--nd-radius-xs);
    background: var(--nd-accent-soft); color: var(--nd-accent-ink); font: 700 12px/1 var(--nd-font-display);
}
.nd-ecard__facts span { color: var(--nd-ink-2); }
.nd-ecard__status { display: inline-flex; align-items: center; gap: 6px; color: var(--nd-muted); font: 600 13px/1.3 var(--nd-font); }
.nd-ecard__status::before { content: ""; flex: none; width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.nd-ecard__status--success { color: var(--nd-success-ink); }
.nd-ecard__status--warning { color: #b45309; }
.nd-ecard__status--muted { color: var(--nd-muted); }
.nd-ecard__status-detail { color: var(--nd-muted); font-weight: 500; }
.nd-ecard__status-detail { margin-left: -2px; }
.nd-ecard__pill--dark { background: rgba(15, 23, 42, 0.86); color: #fff; }
.nd-ecard__pill--warning { background: #fffbeb; color: #92400e; }
.nd-ecard.is-sold .nd-ecard__img { filter: grayscale(0.85); opacity: 0.75; }
/* Marketplace: price is the headline fact. */
.nd-ecard--kind-marketplace .nd-ecard__price { font-size: 17px; font-weight: 700; letter-spacing: -0.01em; }
.nd-ecard--kind-marketplace .nd-ecard__price.is-free { font-size: 13px; }
.nd-ecard--kind-marketplace .nd-ecard__foot { order: -1; margin: 0 0 2px; }
.nd-ecard--kind-marketplace .nd-ecard__main { display: flex; flex-direction: column; gap: 4px; }
.nd-ecard--kind-marketplace .nd-ecard__eyebrow { order: 3; color: var(--nd-muted); font-weight: 500; }
/* Jobs: pay reads as a fact, not a ticket price. */
.nd-ecard--kind-job_board .nd-ecard__price { color: var(--nd-ink); }
/* Directory + jobs eyebrow is a category/company, not a date. */
.nd-ecard--kind-directory .nd-ecard__eyebrow { color: var(--nd-muted); font-weight: 600; }
.nd-ecard--poster :is(.nd-ecard__status, .nd-ecard__status-detail, .nd-ecard__facts span),
.nd-ecard--feature :is(.nd-ecard__status, .nd-ecard__status-detail, .nd-ecard__facts span) { color: rgba(255, 255, 255, 0.86); }
.nd-ecard__logoblock {
    flex: none; display: grid; place-items: center; width: 56px; height: 56px; border-radius: 14px;
    background: var(--nd-accent-soft); color: var(--nd-accent-ink); font: 700 22px/1 var(--nd-font-display); letter-spacing: -0.02em;
}
.nd-ecard--minimal .nd-ecard__save { width: 44px; height: 44px; top: 12px; right: 12px; }
/* Job grids read best as 2-up text cards on desktop. */
#nexdirectory-archive-results .nd-results:has(> .nd-ecard--kind-job_board) { grid-template-columns: repeat(auto-fill, minmax(min(100%, 420px), 1fr)) !important; gap: 16px !important; }
/* Round pins: directory category glyph, job company initial. */
.nd-pin--round { width: auto !important; height: auto !important; }
.nd-pin__round {
    position: absolute; left: 0; top: 0; transform: translate(-50%, -100%);
    display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50% 50% 50% 6px; rotate: -45deg;
    background: var(--nd-surface); color: var(--nd-accent); box-shadow: 0 6px 16px -6px rgba(15, 23, 42, 0.45), 0 0 0 2px var(--nd-accent);
    font: 700 14px/1 var(--nd-font-display);
    transition: transform var(--nd-dur-2) var(--nd-ease-spring), background-color var(--nd-dur-2) var(--nd-ease);
}
.nd-pin__round > * { rotate: 45deg; }
.nd-pin--initial .nd-pin__round { border-radius: 10px; rotate: 0deg; }
.nd-pin--initial .nd-pin__round > * { rotate: 0deg; }
.nd-pin--round:hover .nd-pin__round, .nd-pin--round.is-active .nd-pin__round { background: var(--nd-accent); color: var(--nd-on-accent); transform: translate(-50%, -100%) scale(1.1); }
.nd-mpop__facts { display: block; margin-top: 2px; color: var(--nd-ink-2); font-size: 13px; font-weight: 600; }
/* Theme button styles must not leak into card hearts on non-plugin pages. */
.nexdirectory-widget-block .nd-ecard__save { min-height: 0; padding: 0; border: 0; background: rgba(255, 255, 255, 0.92); color: var(--nd-ink); font-size: 0; line-height: 0; }
.nexdirectory-widget-block .nd-ecard__save[aria-pressed="true"] { color: #e11d48; }
.nexdirectory-widget-block .nd-ecard--minimal .nd-ecard__save { background: transparent; color: var(--nd-subtle); }
/* Breadcrumbs over hero imagery stay legible. */
.nd-discover__hero.has-image :is(.nexdirectory-breadcrumbs, .nexdirectory-breadcrumb-shell, nav[aria-label*="readcrumb"]) :is(a, span, li, [aria-current]) { color: rgba(255, 255, 255, 0.92) !important; }
@media (max-width: 599.98px) { .nd-ecard__logoblock { width: 44px; height: 44px; border-radius: 12px; font-size: 18px; } .nd-ecard--minimal .nd-ecard__body { gap: 14px; } }

/* Elementor sets .elementor img{height:auto}; keep card photos filling their frame inside Elementor layouts. */
.elementor .nd-ecard__img { height: 100%; }

/* ------------------------------------------------------------------ */
/* Plugin 404 (templates/frontend/404.php)                              */
/* ------------------------------------------------------------------ */
.nd-404 { background: var(--nd-canvas); }
.nd-404__inner {
    max-width: var(--nd-max);
    margin-inline: auto;
    padding-block: clamp(48px, 10vh, 96px) clamp(64px, 12vh, 128px);
}
.nd-404__code { margin: 0 0 12px; }
.nd-404__title {
    max-width: 20ch;
    margin: 0;
    color: var(--nd-ink);
    font: 700 var(--nd-fs-36, 36px)/1.1 var(--nd-font-display, var(--nd-font));
    letter-spacing: -0.03em;
    text-wrap: balance;
}
.nd-404__lede {
    max-width: 52ch;
    margin: 16px 0 0;
    color: var(--nd-muted);
    font: 400 var(--nd-fs-18, 18px)/1.55 var(--nd-font);
}
.nd-404 .nd-404__search { max-width: 640px; margin-top: 32px; }
.nd-404__cats { margin-top: 40px; }
.nd-404__cats-title {
    margin: 0 0 12px;
    color: var(--nd-ink-2);
    font: 600 var(--nd-fs-14, 14px)/1.4 var(--nd-font);
    letter-spacing: 0;
}
.nd-404__chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; list-style: none; }
.nd-404__chips a { text-decoration: none; }
.nd-404__actions { display: flex; flex-wrap: wrap; gap: 12px; margin: 48px 0 0; }
@media (max-width: 767.98px) {
    .nd-404__title { font-size: var(--nd-fs-30, 30px); }
    .nd-404__lede { font-size: var(--nd-fs-16, 16px); }
    .nd-404__actions .nd-btn { flex: 1 1 100%; justify-content: center; }
}
@media (max-width: 767.98px) {
    /* One field only: keep the round submit inside the bar. */
    .nd-404 .nd-searchbar { flex-wrap: nowrap; padding: 6px; border-radius: 999px; overflow: visible; }
    .nd-404 .nd-searchbar__field--what { flex: 1 1 auto; height: 44px; border: 0; border-radius: 999px; padding: 0 8px 0 12px; }
    .nd-404 .nd-searchbar__go { width: 44px; height: 44px; border-radius: 999px; }
}

/* ------------------------------------------------------------------ */
/* Filter sheet controls: chip radios, segmented, switch, input group  */
/* ------------------------------------------------------------------ */
.nd-choice { position: relative; display: inline-flex; cursor: pointer; }
.nd-choice input { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
.nd-choice span {
    display: inline-flex; align-items: center; height: 40px; padding: 0 16px;
    border: 1px solid var(--nd-line-strong); border-radius: 999px; background: var(--nd-surface);
    color: var(--nd-ink-2); font: 500 14px/1 var(--nd-font); white-space: nowrap;
    transition: background-color var(--nd-dur-2) var(--nd-ease), border-color var(--nd-dur-2) var(--nd-ease), color var(--nd-dur-2) var(--nd-ease);
}
.nd-choice:hover span { border-color: var(--nd-ink-2); color: var(--nd-ink); }
.nd-choice input:checked + span { background: var(--nd-ink); border-color: var(--nd-ink); color: var(--nd-on-dark, #fff); }
.nd-choice input:focus-visible + span { box-shadow: var(--nd-ring); }
.nd-fgroup .nd-fgroup__segmented { display: flex; width: 100%; }
.nd-choice--seg { flex: 1 1 0; }
.nd-choice--seg span {
    justify-content: center; width: 100%; height: 40px; padding: 0 12px; border: 0; border-radius: var(--nd-radius-sm);
    background: transparent; color: var(--nd-muted); font-weight: 600;
}
.nd-choice--seg:hover span { color: var(--nd-ink); }
.nd-choice--seg input:checked + span { background: var(--nd-surface); color: var(--nd-ink); box-shadow: var(--nd-shadow-1), 0 0 0 1px rgba(15, 23, 42, 0.04); }
.nd-fgroup--switch { padding: 16px 0; }
.nd-fgroup .nd-fswitch { display: flex; justify-content: space-between; width: 100%; min-height: 44px; color: var(--nd-ink); font: 650 16px/1.3 var(--nd-font); letter-spacing: -0.01em; }
.nd-fgroup .nd-input-group { max-width: 240px; }
.nd-fgroup .nd-input-group__field { min-height: 44px; }
.nd-qchip--more { font-weight: 600; }
/* Sort lives on the count row; the sheet repeats it first on phones only. */
.nd-fgroup--sort { display: none; }
@media (max-width: 767.98px) { .nd-fgroup--sort { display: block; } }
/* "Nearest" waits in the markup until a location is set. */
.nd-sort .nd-menu__item[hidden], .nd-fgroup--sort .nd-choice[hidden] { display: none; }

/* An empty pagination nav (one page of results) kept a 48px band under the grid. */
.nd-discover .nexdirectory-pagination:not(:has(li)) { display: none; }
/* Feed end (home): one quiet way on instead of an empty band above the footer. */
.nd-feed-end { display: flex; justify-content: center; margin-top: 40px; }
.nd-feed-end__btn { gap: 8px; }
.nd-feed-end__btn svg { transition: transform var(--nd-dur-2) var(--nd-ease); }
@media (hover: hover) and (prefers-reduced-motion: no-preference) { .nd-feed-end__btn:hover svg { transform: translateX(3px); } }
@media (max-width: 599.98px) { .nd-feed-end { margin-top: 32px; } .nd-feed-end__btn { width: 100%; justify-content: center; } }
@media (max-width: 767.98px) { .nd-discover { padding-bottom: 48px; } }

/* ---------------------------------------------------------------------------
 * Map preview card (round 2, owner request): the photo fills the card edge to edge,
 * top corners follow the card radius; the type's primary fact leads (price on
 * marketplace/jobs/places, the date on events) in ink, never a muted date in accent.
 * ------------------------------------------------------------------------- */
/* The map template's generic popup rule forced the content to 340px inside a narrower card: that
   was the white strip beside the photo. The preview card owns its width. */
.leaflet-popup.nd-mpop-frame .leaflet-popup-content-wrapper { width: 272px; max-width: calc(100vw - 32px); border: 0; }
.leaflet-popup.nd-mpop-frame .leaflet-popup-content { width: 100% !important; min-width: 0 !important; margin: 0 !important; }
.nd-mpop { width: 100%; max-width: none; border-radius: 16px; }
.nd-mpop__media { width: 100%; aspect-ratio: 16 / 10; border-radius: 16px 16px 0 0; }
.nd-mpop__media img { display: block; max-width: none; }
.nd-mpop__body { gap: 4px; padding: 12px 16px 16px; }
.nd-mpop__lead { color: var(--nd-ink); font: 700 17px/1.25 var(--nd-font-display); letter-spacing: -0.01em; font-variant-numeric: tabular-nums; }
.nd-mpop__lead--date { color: var(--nd-ink-2); font: 600 13px/1.3 var(--nd-font); letter-spacing: 0; }
.nd-mpop__meta { white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.nd-mpop__cta { margin-top: 8px; }
.nd-mpop:focus-visible { outline: none; box-shadow: var(--nd-ring); }
/* Hovered or list-highlighted pins sit above their neighbours, so overlapping pins never flicker. */
.leaflet-marker-icon.nd-pin:hover, .leaflet-marker-icon.nd-pin:focus-visible { z-index: 1000 !important; }
.leaflet-marker-icon.nd-pin:focus-visible { outline: none; }
.leaflet-marker-icon.nd-pin:focus-visible .nd-pin__pill,
.leaflet-marker-icon.nd-pin:focus-visible .nd-pin__round,
.leaflet-marker-icon.nd-pin:focus-visible .nd-pin__dot { box-shadow: var(--nd-ring); }
@media (prefers-reduced-motion: reduce) { .nd-mpop-frame .leaflet-popup-content-wrapper { animation: none; } }
/* Map list cards: a listing date is meta, not an accent eyebrow (accent discipline §3.3); on
   marketplace, jobs and places it moves below the price, where the cards in the grid keep it too. */
.nd-mcard .nd-mcard__when { color: var(--nd-muted); font: 500 13px/1.3 var(--nd-font); }
.nd-mapx:not([data-nd-site-type="events"]) .nd-mcard__when { order: 9; }
