/**
 * NexDirectory platform navigation + footer.
 *
 * The single source of truth for the sticky platform bar, its dropdowns, the
 * notification bell, the mobile menu dialog and the platform footer. Consumes
 * design-system tokens (--nd-*) only, so Settings › Design keeps control of
 * brand colours. Behaviour lives in assets/js/nexdirectory-nav.js.
 *
 * Prefix: .ndn-* (NexDirectory Nav). Legacy hooks (.nexdirectory-platform-nav,
 * .nexdirectory-platform-footer) stay on the root elements for compatibility.
 *
 * --nd-nav-height is published on :root by an inline style printed with this
 * stylesheet (64px < 1024px, 72px+ ≥ 1024px, 0px for the "static" behaviour)
 * and kept exact at runtime by the script (it measures the rendered bar).
 */

/* ---------------------------------------------------------------------------
 * Bar
 * ------------------------------------------------------------------------- */
.ndn {
    --ndn-h: 64px;
    --ndn-top: var(--wp-admin--admin-bar--height, 0px);
    /* One container (design-system --nd-page-x): the brand lines up with every page H1. */
    --ndn-pad: var(--nd-page-x, max(16px, 4%));
    --ndn-hover: rgba(15, 23, 42, 0.05);
    position: sticky;
    top: var(--ndn-top);
    z-index: 1100;
    display: block;
    box-sizing: border-box;
    width: auto;
    max-width: none;
    /* Full-bleed even inside a constrained theme column (no 100vw overflow). */
    margin: 0 calc(50% - (50vw - var(--ndn-sbw, 0px) / 2));
    padding: 0;
    border: 0;
    color: var(--nd-ink);
    font-family: var(--nd-font);
    isolation: isolate;
}

/* Frosted glass lives on a pseudo-element so the bar itself never becomes a
   containing block for fixed-position children (notification panel on mobile). */
.ndn::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    background: rgba(255, 255, 255, 0.72);
    background: color-mix(in srgb, var(--nd-surface) 74%, transparent);
    -webkit-backdrop-filter: saturate(180%) blur(18px);
    backdrop-filter: saturate(180%) blur(18px);
    transition: background-color var(--nd-dur-3) var(--nd-ease);
}

/* Hairline drawn as an overlay so it never changes the bar's height. */
.ndn::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 1px;
    background: var(--nd-line);
    opacity: 0;
    pointer-events: none;
    transition: opacity var(--nd-dur-3) var(--nd-ease);
}

.ndn.is-scrolled::after { opacity: 1; }

@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
    .ndn::before { background: var(--nd-surface); }
}

body .ndn.nexdirectory-platform-nav {
    transition: top var(--nd-dur-3) var(--nd-ease),
        box-shadow var(--nd-dur-3) var(--nd-ease), opacity var(--nd-dur-2) var(--nd-ease);
}

.ndn.is-scrolled {
    box-shadow: 0 1px 0 rgba(15, 23, 42, 0.02), 0 12px 32px -20px rgba(15, 23, 42, 0.28);
}

.ndn.is-scrolled::before {
    background: rgba(255, 255, 255, 0.86);
    background: color-mix(in srgb, var(--nd-surface) 86%, transparent);
}

.ndn--static {
    position: relative;
    top: auto;
}

.ndn--smart.is-hidden {
    top: calc(var(--ndn-top) - var(--ndn-h) - 2px);
    box-shadow: none;
}

/* Hide the bar while the media lightbox is open. */
body.nexdirectory-media-lightbox-open .ndn {
    transform: translate3d(0, calc(-100% - 14px), 0);
    opacity: 0;
    pointer-events: none;
}

/* WordPress' admin bar stops being fixed on small screens. */
@media (max-width: 600px) {
    .ndn { --ndn-top: 0px; }
}

.ndn *,
.ndn *::before,
.ndn *::after,
.ndn-sheet *,
.ndn-footer * {
    box-sizing: border-box;
}

.ndn a,
.ndn-sheet a,
.ndn-footer a {
    text-decoration: none !important;
}

.ndn-inner {
    display: flex;
    align-items: center;
    gap: 12px;
    height: var(--ndn-h);
    padding-inline: var(--ndn-pad);
}

@media (min-width: 1024px) {
    .ndn {
        --ndn-h: var(--ndn-h-d, 72px);
        /* --ndn-gutter-extra is the owner's optional extra nav inset (Settings › Navigation bar). */
        --ndn-pad: calc(var(--nd-page-x, max(24px, 10%)) + var(--ndn-gutter-extra, 0%));
    }
    .ndn-inner { gap: 20px; }
}

.ndn-icon {
    display: block;
    flex: none;
    width: 20px;
    height: 20px;
    pointer-events: none;
}

/* Keyboard focus (also covers the sheet once it is portalled out of .nxd-ui). */
.ndn :focus-visible,
.ndn-sheet :focus-visible,
.ndn-footer :focus-visible {
    outline: 2px solid var(--nd-accent);
    outline-offset: 2px;
    box-shadow: var(--nd-ring);
}

/* ---------------------------------------------------------------------------
 * Brand
 * ------------------------------------------------------------------------- */
.ndn .ndn-brand {
    display: inline-flex;
    align-items: center;
    flex: 0 1 auto;
    min-width: 0;
    max-width: min(52vw, 320px);
    height: 44px;
    border-radius: var(--nd-radius-sm);
    color: var(--nd-ink);
    transition: opacity var(--nd-dur-2) var(--nd-ease);
}

.ndn .ndn-brand:hover { opacity: 0.82; }

.ndn .ndn-brand__img {
    display: block;
    width: auto;
    max-height: calc(var(--ndn-h) - 20px);
    object-fit: contain;
    object-position: left center;
}

.ndn .ndn-brand__text {
    display: block;
    overflow: hidden;
    color: var(--nd-ink);
    font: 750 1.125rem/1.1 var(--nd-font-display);
    letter-spacing: -0.02em;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ---------------------------------------------------------------------------
 * Primary (desktop) menu
 * ------------------------------------------------------------------------- */
.ndn .ndn-primary {
    display: none;
    flex: 1 1 auto;
    min-width: 0;
}

@media (min-width: 1024px) {
    .ndn .ndn-primary { display: flex; }
}

.ndn .ndn-menu {
    display: flex;
    align-items: center;
    gap: 2px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.ndn .ndn-menu__item {
    position: relative;
    margin: 0;
    padding: 0;
    list-style: none;
}

.ndn .ndn-top-link,
.ndn .ndn-trigger {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    height: 40px;
    margin: 0;
    padding: 0 12px;
    border: 0;
    border-radius: var(--nd-radius-sm);
    background: transparent;
    color: var(--nd-ink-2);
    font: 550 0.9375rem/1 var(--nd-font);
    letter-spacing: -0.005em;
    white-space: nowrap;
    cursor: pointer;
    box-shadow: none;
    transition: color var(--nd-dur-2) var(--nd-ease), background-color var(--nd-dur-2) var(--nd-ease);
}

.ndn .ndn-top-link:hover,
.ndn .ndn-trigger:hover,
.ndn .ndn-trigger[aria-expanded="true"] {
    background: var(--ndn-hover);
    color: var(--nd-ink);
}

.ndn .ndn-top-link[aria-current="page"],
.ndn .ndn-trigger.is-current {
    color: var(--nd-ink);
}

/* Active page indicator: a short accent bar under the item. */
.ndn .ndn-top-link::after,
.ndn .ndn-trigger::after {
    content: "";
    position: absolute;
    left: 12px;
    right: 12px;
    bottom: 3px;
    height: 2px;
    border-radius: 2px;
    background: var(--nd-accent);
    transform: scaleX(0);
    transition: transform var(--nd-dur-3) var(--nd-ease);
}

.ndn .ndn-top-link[aria-current="page"]::after,
.ndn .ndn-trigger.is-current::after {
    transform: scaleX(1);
}

.ndn-chevron {
    display: inline-grid;
    place-items: center;
    color: var(--nd-subtle);
    transition: transform var(--nd-dur-3) var(--nd-ease), color var(--nd-dur-2) var(--nd-ease);
}

.ndn-chevron .ndn-icon { width: 16px; height: 16px; }

[aria-expanded="true"] > .ndn-chevron {
    transform: rotate(180deg);
    color: var(--nd-accent);
}

/* ---------------------------------------------------------------------------
 * Dropdown panels (disclosure pattern)
 * ------------------------------------------------------------------------- */
.ndn .ndn-dd { position: relative; }

.ndn .ndn-panel {
    position: absolute;
    z-index: 20;
    top: calc(100% + 10px);
    left: -8px;
    min-width: 290px;
    max-width: min(360px, calc(100vw - 32px));
    padding: 6px;
    border: 1px solid var(--nd-line);
    border-radius: var(--nd-radius-lg);
    background: var(--nd-surface);
    box-shadow: var(--nd-shadow-4), 0 0 0 1px rgba(15, 23, 42, 0.02);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-6px) scale(0.98);
    transform-origin: top left;
    transition: opacity var(--nd-dur-2) var(--nd-ease), transform var(--nd-dur-2) var(--nd-ease),
        visibility 0s linear var(--nd-dur-2);
}

/* Invisible bridge so the pointer can travel from trigger to panel. */
.ndn .ndn-panel::before {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    top: -12px;
    height: 12px;
}

.ndn .ndn-panel--end,
.ndn .ndn-panel.is-flipped {
    left: auto;
    right: 0;
    transform-origin: top right;
}

.ndn .ndn-dd.is-open > .ndn-panel,
.ndn:not(.is-ready) .ndn-dd:is(:hover, :focus-within) > .ndn-panel {
    opacity: 1;
    visibility: visible;
    transform: none;
    transition-delay: 0s;
}

.ndn .ndn-panel__list {
    display: grid;
    gap: 2px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.ndn .ndn-panel__list > li {
    margin: 0;
    padding: 0;
    list-style: none;
}

.ndn .ndn-panel__sep {
    height: 1px;
    margin: 4px 6px;
    background: var(--nd-line);
}

.ndn .ndn-panel-link {
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 44px;
    padding: 8px 10px;
    border-radius: var(--nd-radius-sm);
    color: var(--nd-ink-2);
    transition: background-color var(--nd-dur-1) var(--nd-ease), color var(--nd-dur-1) var(--nd-ease);
}

.ndn .ndn-link-icon {
    display: grid;
    flex: none;
    place-items: center;
    width: 36px;
    height: 36px;
    border: 1px solid var(--nd-line);
    border-radius: var(--nd-radius-sm);
    background: var(--nd-surface-2);
    color: var(--nd-muted);
    transition: background-color var(--nd-dur-2) var(--nd-ease), color var(--nd-dur-2) var(--nd-ease),
        border-color var(--nd-dur-2) var(--nd-ease), transform var(--nd-dur-2) var(--nd-ease-spring);
}

.ndn .ndn-link-icon .ndn-icon { width: 18px; height: 18px; }

.ndn .ndn-link-text {
    display: grid;
    gap: 2px;
    min-width: 0;
}

.ndn .ndn-link-label {
    color: var(--nd-ink);
    font: 600 0.875rem/1.3 var(--nd-font);
}

.ndn .ndn-link-desc {
    color: var(--nd-muted);
    font: 400 0.8125rem/1.35 var(--nd-font);
}

.ndn .ndn-panel-link:hover,
.ndn .ndn-panel-link:focus-visible {
    background: var(--nd-surface-2);
}

.ndn .ndn-panel-link:hover .ndn-link-icon {
    border-color: var(--nd-accent-line);
    background: var(--nd-accent-soft);
    color: var(--nd-accent-ink);
    transform: scale(1.04);
}

.ndn .ndn-panel-link[aria-current="page"] { background: var(--nd-accent-soft); }
.ndn .ndn-panel-link[aria-current="page"] .ndn-link-label { color: var(--nd-accent); }
.ndn .ndn-panel-link[aria-current="page"] .ndn-link-icon {
    border-color: transparent;
    background: var(--nd-accent);
    color: var(--nd-on-accent);
}

.ndn .ndn-panel-link.ndn-depth-1 { padding-left: 22px; }
.ndn .ndn-panel-link.ndn-depth-2 { padding-left: 34px; }

/* Account menu */
.ndn .ndn-panel--account { min-width: 268px; }
.ndn .ndn-panel--account .ndn-panel-link { min-height: 40px; padding: 6px 10px; }
.ndn .ndn-panel--account .ndn-link-icon { width: 28px; height: 28px; border: 0; background: transparent; }
.ndn .ndn-panel--account .ndn-panel-link:hover .ndn-link-icon { background: transparent; transform: none; }
.ndn .ndn-panel--account .ndn-link-label { font-weight: 550; }

.ndn .ndn-panel-link.is-danger .ndn-link-label,
.ndn .ndn-panel-link.is-danger .ndn-link-icon { color: var(--nd-danger); }
.ndn .ndn-panel-link.is-danger:hover { background: var(--nd-danger-soft); }
.ndn .ndn-panel--account .ndn-panel-link.is-danger:hover .ndn-link-icon { color: var(--nd-danger); }

.ndn .ndn-account__head {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 0 0 6px;
    padding: 10px 10px 12px;
    border-bottom: 1px solid var(--nd-line);
}

.ndn-account__who,
.ndn-usercard__who {
    display: grid;
    gap: 2px;
    min-width: 0;
}

.ndn-account__who strong,
.ndn-usercard__who strong {
    overflow: hidden;
    color: var(--nd-ink);
    font: 650 0.875rem/1.3 var(--nd-font);
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ndn-account__who span,
.ndn-usercard__who span {
    overflow: hidden;
    color: var(--nd-muted);
    font: 400 0.75rem/1.3 var(--nd-font);
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ---------------------------------------------------------------------------
 * Right-hand actions
 * ------------------------------------------------------------------------- */
.ndn .ndn-actions {
    display: flex;
    flex: none;
    align-items: center;
    gap: 6px;
    margin-left: auto;
}

.ndn .ndn-desktop-only { display: none; }

@media (min-width: 1024px) {
    .ndn .ndn-actions { gap: 8px; }
    .ndn a.ndn-desktop-only { display: inline-flex; }
    .ndn div.ndn-desktop-only { display: flex; }
    .ndn .ndn-icon-btn.ndn-burger { display: none; }
}

.ndn .ndn-auth { align-items: center; gap: 4px; }

.ndn .ndn-icon-btn,
.ndn-sheet .ndn-icon-btn {
    position: relative;
    display: inline-grid;
    flex: none;
    place-items: center;
    width: 44px;
    height: 44px;
    margin: 0;
    padding: 0;
    border: 1px solid transparent;
    border-radius: var(--nd-radius);
    background: transparent;
    color: var(--nd-ink-2);
    box-shadow: none;
    cursor: pointer;
    transition: background-color var(--nd-dur-2) var(--nd-ease), color var(--nd-dur-2) var(--nd-ease),
        border-color var(--nd-dur-2) var(--nd-ease);
}

.ndn .ndn-icon-btn:hover,
.ndn .ndn-icon-btn[aria-expanded="true"],
.ndn-sheet .ndn-icon-btn:hover {
    border-color: transparent;
    background: var(--ndn-hover);
    color: var(--nd-ink);
    box-shadow: none;
    transform: none;
}

.ndn .ndn-icon-btn[aria-expanded="true"] { color: var(--nd-accent); }
.ndn .ndn-icon-btn .ndn-icon { width: 22px; height: 22px; }

/* Avatar + account trigger */
.ndn-avatar {
    position: relative;
    display: inline-grid;
    flex: none;
    place-items: center;
    width: 32px;
    height: 32px;
    overflow: hidden;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--nd-accent-soft-2), var(--nd-accent-soft));
    color: var(--nd-accent);
    font: 700 0.75rem/1 var(--nd-font);
    letter-spacing: 0.02em;
    box-shadow: inset 0 0 0 1px rgba(15, 23, 42, 0.06);
}

.ndn-avatar--lg { width: 40px; height: 40px; font-size: 0.875rem; }

.ndn-avatar__img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.ndn .ndn-account__trigger {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    height: 44px;
    margin: 0;
    padding: 0 8px 0 5px;
    border: 1px solid var(--nd-line);
    border-radius: var(--nd-radius-pill);
    background: var(--nd-surface);
    color: var(--nd-ink-2);
    cursor: pointer;
    box-shadow: var(--nd-shadow-1);
    transition: border-color var(--nd-dur-2) var(--nd-ease), box-shadow var(--nd-dur-2) var(--nd-ease);
}

.ndn .ndn-account__trigger:hover { border-color: var(--nd-line-strong); box-shadow: var(--nd-shadow-2); }
.ndn .ndn-account__trigger[aria-expanded="true"] { border-color: var(--nd-accent-line); box-shadow: 0 0 0 3px var(--nd-accent-soft); }

.ndn .ndn-cta .ndn-icon { width: 16px; height: 16px; }

/* Tight desktop widths: compact items, icon-only "Add" button. */
@media (min-width: 1024px) and (max-width: 1279px) {
    .ndn .ndn-top-link,
    .ndn .ndn-trigger { padding: 0 9px; font-size: 0.875rem; }
    .ndn .ndn-top-link::after,
    .ndn .ndn-trigger::after { left: 9px; right: 9px; }
    .ndn .ndn-cta--add { width: 40px; padding: 0; }
    .ndn .ndn-cta--add span {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0, 0, 0, 0);
        white-space: nowrap;
    }
}

/* ---------------------------------------------------------------------------
 * Notification bell (behaviour from nexdirectory-frontend.js)
 * ------------------------------------------------------------------------- */
.ndn .ndn-bell.nexdirectory-notification-center--dropdown {
    position: relative;
    flex: none;
    margin: 0;
}

.ndn .ndn-bell__count.nexdirectory-notification-center__badge {
    position: absolute;
    top: 5px;
    right: 3px;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border: 2px solid var(--nd-surface);
    background: var(--nd-accent);
    color: var(--nd-on-accent);
    font-size: var(--nd-fs-12, 12px);
    line-height: 14px;
    font-variant-numeric: tabular-nums;
    box-shadow: none;
    animation: nd-pop var(--nd-dur-3) var(--nd-ease-spring);
}

.ndn .ndn-bell__count[hidden] { display: none; }

.ndn .ndn-bell__panel.nexdirectory-notification-center__panel {
    top: calc(100% + 10px);
    right: -8px;
    width: min(384px, calc(100vw - 24px));
    border: 1px solid var(--nd-line);
    border-radius: var(--nd-radius-lg);
    background: var(--nd-surface);
    box-shadow: var(--nd-shadow-4);
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
    animation: nd-pop var(--nd-dur-2) var(--nd-ease);
}

.ndn .ndn-bell__head.nexdirectory-notification-center__header {
    align-items: center;
    padding: 14px 12px 12px 16px;
    border-bottom: 1px solid var(--nd-line);
}

.ndn .ndn-bell__eyebrow {
    margin: 0 0 2px;
    color: var(--nd-muted);
    font: 600 var(--nd-fs-13, 13px)/1.3 var(--nd-font);
    letter-spacing: 0;
}

.ndn .ndn-bell__title {
    margin: 0;
    color: var(--nd-ink);
    font: 700 1rem/1.2 var(--nd-font-display);
    letter-spacing: -0.01em;
}

.ndn .nexdirectory-notification-center__mark-all { --_fg: var(--nd-accent); }

.ndn .ndn-bell__empty-icon.nexdirectory-notification-center__empty-icon {
    width: 44px;
    height: 44px;
    background: var(--nd-success-soft);
    color: var(--nd-success);
}

.ndn .ndn-bell__empty-icon .ndn-icon { width: 22px; height: 22px; }

.ndn .ndn-bell__footer.nexdirectory-notification-center__footer {
    gap: 6px;
    min-height: 44px;
    border-top: 1px solid var(--nd-line);
    background: var(--nd-surface-2);
    color: var(--nd-accent) !important;
    font: 600 0.8125rem/1 var(--nd-font);
    transition: background-color var(--nd-dur-2) var(--nd-ease);
}

.ndn .ndn-bell__footer .ndn-icon { width: 16px; height: 16px; transition: transform var(--nd-dur-2) var(--nd-ease); }
.ndn .ndn-bell__footer:hover { background: var(--nd-accent-soft); }
.ndn .ndn-bell__footer:hover .ndn-icon { transform: translateX(3px); }

@media (max-width: 640px) {
    .ndn .ndn-bell__panel.nexdirectory-notification-center__panel {
        position: fixed;
        top: calc(var(--ndn-top) + var(--ndn-h) + 8px);
        right: 12px;
        left: 12px;
        width: auto;
        max-height: calc(100dvh - var(--ndn-top) - var(--ndn-h) - 20px);
    }
}

/* ---------------------------------------------------------------------------
 * Mobile menu dialog (portalled to <body> by the script)
 * ------------------------------------------------------------------------- */
.ndn-sheet {
    position: fixed;
    inset: 0;
    z-index: 100000;
    color: var(--nd-ink);
    font-family: var(--nd-font);
}

.ndn-sheet[hidden] { display: none; }

.ndn-sheet__scrim {
    position: absolute;
    inset: 0;
    background: var(--nd-overlay);
    -webkit-backdrop-filter: blur(4px);
    backdrop-filter: blur(4px);
    opacity: 0;
    transition: opacity var(--nd-dur-3) var(--nd-ease);
}

.ndn-sheet__panel {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    display: flex;
    flex-direction: column;
    width: min(100%, 420px);
    height: 100vh;
    height: 100dvh;
    padding-top: env(safe-area-inset-top, 0px);
    background: var(--nd-surface);
    box-shadow: var(--nd-shadow-4);
    outline: none;
    transform: translateX(100%);
    transition: transform var(--nd-dur-3) var(--nd-ease);
}

@media (min-width: 481px) {
    .ndn-sheet__panel { border-radius: var(--nd-radius-xl) 0 0 var(--nd-radius-xl); }
}

.ndn-sheet.is-open .ndn-sheet__scrim { opacity: 1; }
.ndn-sheet.is-open .ndn-sheet__panel { transform: none; }

.ndn-sheet__head {
    display: flex;
    flex: none;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    min-height: 64px;
    padding: 8px 10px 8px 20px;
    border-bottom: 1px solid var(--nd-line);
}

.ndn-sheet .ndn-sheet__title {
    margin: 0;
    overflow: hidden;
    color: var(--nd-ink);
    font: 750 1.0625rem/1.2 var(--nd-font-display);
    letter-spacing: -0.015em;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ndn-sheet__body {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: 10px 12px 24px;
    -webkit-overflow-scrolling: touch;
}

.ndn-sheet .ndn-sheet__list {
    display: grid;
    gap: 2px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.ndn-sheet .ndn-sheet__list > li { margin: 0; padding: 0; list-style: none; }

.ndn-sheet .ndn-sheet__list--flat {
    margin-bottom: 6px;
    padding-bottom: 8px;
    border-bottom: 1px solid var(--nd-line);
}

.ndn-sheet .ndn-mobile-link {
    display: flex;
    align-items: center;
    gap: 14px;
    min-height: 52px;
    padding: 6px 10px;
    border-radius: var(--nd-radius);
    color: var(--nd-ink);
    font: 550 1rem/1.25 var(--nd-font);
    transition: background-color var(--nd-dur-1) var(--nd-ease);
}

.ndn-sheet .ndn-mobile-link .ndn-link-icon {
    display: grid;
    flex: none;
    place-items: center;
    width: 36px;
    height: 36px;
    border-radius: var(--nd-radius-sm);
    background: var(--nd-surface-2);
    color: var(--nd-muted);
}

.ndn-sheet .ndn-mobile-link .ndn-link-icon .ndn-icon { width: 18px; height: 18px; }
.ndn-sheet .ndn-link-text { min-width: 0; }
.ndn-sheet .ndn-mobile-link:hover,
.ndn-sheet .ndn-mobile-link:active { background: var(--nd-surface-2); }
.ndn-sheet .ndn-mobile-link[aria-current="page"] { background: var(--nd-accent-soft); color: var(--nd-accent-ink); font-weight: 650; }
.ndn-sheet .ndn-mobile-link[aria-current="page"] .ndn-link-icon { background: var(--nd-accent); color: var(--nd-on-accent); }
.ndn-sheet .ndn-mobile-link.ndn-depth-1 { padding-left: 24px; }
.ndn-sheet .ndn-mobile-link.ndn-depth-2 { padding-left: 38px; }

/* Accordion groups (animated height via grid rows, no JS measuring). */
.ndn-sheet .ndn-acc { border-bottom: 1px solid var(--nd-line); }
.ndn-sheet .ndn-acc:last-child { border-bottom: 0; }
.ndn-sheet .ndn-acc__heading { margin: 0; padding: 0; font: inherit; }

.ndn-sheet .ndn-acc__trigger {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    min-height: 52px;
    margin: 0;
    padding: 0 10px;
    border: 0;
    border-radius: var(--nd-radius);
    background: transparent;
    color: var(--nd-muted);
    font: 600 var(--nd-fs-13, 13px)/1.2 var(--nd-font);
    letter-spacing: 0;
    text-align: left;
    cursor: pointer;
    box-shadow: none;
}

.ndn-sheet .ndn-acc__trigger:hover { color: var(--nd-ink); }
.ndn-sheet .ndn-acc__trigger[aria-expanded="true"] { color: var(--nd-ink); }

.ndn-sheet .ndn-acc__region {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows var(--nd-dur-3) var(--nd-ease);
}

.ndn-sheet .ndn-acc.is-open .ndn-acc__region { grid-template-rows: 1fr; }

.ndn-sheet .ndn-acc__inner {
    min-height: 0;
    overflow: hidden;
    visibility: hidden;
    transition: visibility 0s linear var(--nd-dur-3);
}

.ndn-sheet .ndn-acc.is-open .ndn-acc__inner {
    padding-bottom: 8px;
    visibility: visible;
    transition-delay: 0s;
}

.ndn-sheet__foot {
    display: grid;
    flex: none;
    gap: 10px;
    padding: 14px 16px max(16px, env(safe-area-inset-bottom, 0px));
    border-top: 1px solid var(--nd-line);
    background: var(--nd-surface-2);
}

.ndn-sheet .ndn-usercard {
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
}

.ndn-sheet .ndn-usercard__who { flex: 1 1 auto; }
.ndn-sheet .ndn-usercard__logout { flex: none; min-height: 40px; }
.ndn-sheet .nd-btn .ndn-icon { width: 18px; height: 18px; }

/* Gentle staggered entrance for the sheet contents. */
.ndn-sheet.is-open .ndn-sheet__body > *,
.ndn-sheet.is-open .ndn-sheet__foot {
    animation: nd-fade-up var(--nd-dur-3) var(--nd-ease) both;
}
.ndn-sheet.is-open .ndn-sheet__body > :nth-child(2) { animation-delay: 40ms; }
.ndn-sheet.is-open .ndn-sheet__body > :nth-child(3) { animation-delay: 80ms; }
.ndn-sheet.is-open .ndn-sheet__body > :nth-child(n + 4) { animation-delay: 120ms; }
.ndn-sheet.is-open .ndn-sheet__foot { animation-delay: 140ms; }

/* Scroll lock while the dialog is open. */
html.ndn-locked,
html.ndn-locked body {
    overflow: hidden !important;
}

/* ---------------------------------------------------------------------------
 * Footer
 * ------------------------------------------------------------------------- */
.ndn-footer {
    --ndn-fpad: var(--nd-page-x, max(16px, 4%));
    display: block;
    width: auto;
    max-width: none;
    /* One 64px gap above the footer on plugin pages (48px on phones). */
    margin: 64px calc(50% - (50vw - var(--ndn-sbw, 0px) / 2)) 0;
    border-top: 1px solid var(--nd-line);
    background: var(--nd-surface);
    color: var(--nd-ink-2);
    font-family: var(--nd-font);
}


.ndn-footer__inner { padding: clamp(40px, 6vw, 72px) var(--ndn-fpad) 0; }

.ndn-footer__top {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 40px;
}

@media (min-width: 900px) {
    .ndn-footer__top {
        grid-template-columns: minmax(220px, 1fr) minmax(0, 2fr);
        gap: clamp(48px, 6vw, 96px);
    }
    .ndn-footer__top--no-brand { grid-template-columns: minmax(0, 1fr); }
}

.ndn-footer .ndn-footer__brand {
    display: grid;
    align-content: start;
    gap: 14px;
    max-width: 360px;
}

.ndn-footer .ndn-footer__logo {
    display: inline-flex;
    justify-self: start;
    align-items: center;
    border-radius: var(--nd-radius-xs);
    color: var(--nd-ink);
}

.ndn-footer .ndn-footer__logo img {
    display: block;
    width: auto;
    max-width: 220px;
    height: 40px;
    object-fit: contain;
}

.ndn-footer .ndn-footer__wordmark {
    color: var(--nd-ink);
    font: 750 1.375rem/1.1 var(--nd-font-display);
    letter-spacing: -0.025em;
}

.ndn-footer .ndn-footer__tagline {
    margin: 0;
    color: var(--nd-muted);
    font: 400 0.9375rem/1.6 var(--nd-font);
}

.ndn-footer .ndn-footer__explore { display: inline-flex; align-items: center; gap: 6px; justify-self: start; margin-top: 2px; }
.ndn-footer .ndn-footer__explore .ndn-icon { width: 14px; height: 14px; transition: transform var(--nd-dur-2) var(--nd-ease); }
.ndn-footer .ndn-footer__explore:hover .ndn-icon { transform: translateX(3px); }

.ndn-footer .ndn-footer__cols {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 32px 24px;
}

@media (min-width: 1024px) {
    .ndn-footer .ndn-footer__cols {
        grid-template-columns: repeat(var(--nexdirectory-footer-menu-count, 3), minmax(0, 1fr));
        gap: 32px;
    }
}

.ndn-footer .ndn-footer__title {
    margin: 0 0 12px;
    color: var(--nd-ink);
    font: 600 var(--nd-fs-14, 14px)/1.3 var(--nd-font);
    letter-spacing: 0;
}

.ndn-footer .ndn-footer__list {
    display: grid;
    gap: 2px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.ndn-footer .ndn-footer__list > li { margin: 0; padding: 0; list-style: none; }

.ndn-footer .ndn-footer__link {
    display: inline-flex;
    align-items: center;
    min-height: 34px;
    padding: 2px 0;
    color: var(--nd-muted);
    font: 450 0.9375rem/1.4 var(--nd-font);
    background: linear-gradient(currentColor, currentColor) no-repeat 0 calc(100% - 6px) / 0 1px;
    transition: color var(--nd-dur-2) var(--nd-ease), background-size var(--nd-dur-3) var(--nd-ease);
}

.ndn-footer .ndn-footer__link:hover {
    color: var(--nd-ink);
    background-size: 100% 1px;
}

.ndn-footer .ndn-footer__link[aria-current="page"] { color: var(--nd-accent); font-weight: 600; }

.ndn-footer .ndn-footer__bottom {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin-top: clamp(40px, 5vw, 56px);
    padding: 20px 0 max(24px, env(safe-area-inset-bottom, 0px));
    border-top: 1px solid var(--nd-line);
}

@media (min-width: 640px) {
    .ndn-footer .ndn-footer__bottom {
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
    }
}

.ndn-footer .ndn-footer__copy {
    margin: 0;
    color: var(--nd-muted);
    font: 400 0.8125rem/1.5 var(--nd-font);
}

.ndn-footer .ndn-footer__legal {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px 20px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.ndn-footer .ndn-footer__legal > li { margin: 0; padding: 0; list-style: none; }

.ndn-footer .ndn-footer__legal-link,
.ndn-footer .ndn-footer__top-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-height: 32px;
    margin: 0;
    padding: 0;
    border: 0;
    background: none;
    color: var(--nd-muted);
    font: 500 0.8125rem/1 var(--nd-font);
    cursor: pointer;
    box-shadow: none;
    transition: color var(--nd-dur-2) var(--nd-ease);
}

.ndn-footer .ndn-footer__legal-link:hover,
.ndn-footer .ndn-footer__top-btn:hover { color: var(--nd-ink); background: none; }
.ndn-footer .ndn-footer__top-btn .ndn-icon { width: 14px; height: 14px; transition: transform var(--nd-dur-2) var(--nd-ease); }
.ndn-footer .ndn-footer__top-btn:hover .ndn-icon { transform: translateY(-2px); }

@media (pointer: coarse) {
    .ndn-footer .ndn-footer__link,
    .ndn-footer .ndn-footer__legal-link,
    .ndn-footer .ndn-footer__top-btn { min-height: 44px; }
}

/* The platform footer replaces the theme footer when it renders. */
body.nexdirectory-has-platform-footer :is(
    #colophon,
    .site-footer,
    footer.site-footer,
    #footer,
    .footer-widgets,
    .site-info,
    .elementor-location-footer,
    .ast-footer-overlay,
    .ast-footer-wrap
) {
    display: none !important;
}

/* ---------------------------------------------------------------------------
 * Reduced motion
 * ------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
    .ndn,
    .ndn *,
    .ndn::before,
    .ndn *::before,
    .ndn *::after,
    .ndn-sheet,
    .ndn-sheet *,
    .ndn-footer * {
        animation-duration: 0.01ms !important;
        animation-delay: 0s !important;
        transition-duration: 0.01ms !important;
        transition-delay: 0s !important;
    }
}

/* ===========================================================================
 * v2: nav typography, mega menu, mobile drill-down layers, bottom tab bar
 * ========================================================================= */
.ndn .ndn-top-link,
.ndn .ndn-trigger { font: 500 15px/1 var(--nd-font) !important; letter-spacing: -0.006em; }

/* Mega panel: multi-column groups with icons + descriptions, featured slot. */
.ndn .ndn-panel--mega {
    left: 50%;
    min-width: 0;
    max-width: none;
    width: max-content;
    padding: 12px;
    border-radius: 20px;
    transform: translate(-50%, -6px) scale(0.98);
    transform-origin: top center;
}
.ndn .ndn-dd.is-open > .ndn-panel--mega,
.ndn:not(.is-ready) .ndn-dd:is(:hover, :focus-within) > .ndn-panel--mega { transform: translate(-50%, 0); }
.ndn-mega { display: flex; gap: 12px; align-items: stretch; }
.ndn-mega__cols {
    display: grid;
    grid-template-columns: repeat(var(--ndn-cols, 2), minmax(220px, 260px));
    gap: 4px 8px;
    align-content: start;
}
.ndn-mega__group { display: grid; align-content: start; gap: 2px; min-width: 0; }
.ndn .ndn-mega__sub { display: grid; gap: 0; margin: 0 0 6px; padding: 0 0 0 58px; list-style: none; }
.ndn .ndn-mega__sub li { margin: 0; padding: 0; list-style: none; }
.ndn .ndn-sub-link {
    display: block; padding: 6px 8px; border-radius: 8px; color: var(--nd-muted);
    font: 500 14px/1.35 var(--nd-font); text-decoration: none;
    transition: color var(--nd-dur-1) var(--nd-ease), background-color var(--nd-dur-1) var(--nd-ease);
}
.ndn .ndn-sub-link:hover { color: var(--nd-ink); background: var(--nd-surface-2); }
.ndn .ndn-sub-link[aria-current="page"] { color: var(--nd-accent); }
.ndn .ndn-sub-link.ndn-depth-2 { padding-left: 20px; }
.ndn-mega__feature {
    display: flex; flex-direction: column; gap: 6px; width: 240px; padding: 20px; border-radius: 14px;
    background: linear-gradient(160deg, var(--nd-accent-soft-2), var(--nd-accent-soft) 60%, var(--nd-surface-2));
    color: var(--nd-ink) !important; text-decoration: none !important;
    transition: transform var(--nd-dur-3) var(--nd-ease);
}
.ndn-mega__feature:hover { transform: translateY(-2px); }
.ndn-mega__feature-icon { display: grid; place-items: center; width: 40px; height: 40px; margin-bottom: 8px; border-radius: 12px; background: var(--nd-accent); color: var(--nd-on-accent); }
.ndn-mega__feature strong { font: 650 16px/1.3 var(--nd-font-display); letter-spacing: -0.015em; }
.ndn-mega__feature > span:not([class]) { color: var(--nd-muted); font: 400 14px/1.45 var(--nd-font); }
.ndn-mega__feature-cta { display: inline-flex; align-items: center; gap: 6px; margin-top: auto; padding-top: 12px; color: var(--nd-accent); font: 600 14px/1 var(--nd-font); }
.ndn-mega__feature-cta .ndn-icon { width: 16px; height: 16px; transition: transform var(--nd-dur-2) var(--nd-ease); }
.ndn-mega__feature:hover .ndn-mega__feature-cta .ndn-icon { transform: translateX(3px); }

/* Mobile: layered drill-down */
.ndn-sheet__panel { overflow: hidden; }
.ndn-sheet .ndn-sheet__body { transition: transform 320ms var(--nd-ease), opacity 240ms var(--nd-ease); }
.ndn-sheet__panel.is-drilled .ndn-sheet__body { transform: translateX(-28%); opacity: 0; pointer-events: none; }
.ndn-sheet .ndn-sheet__list--groups { margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--nd-line); }
.ndn-sheet .ndn-drill {
    display: flex; align-items: center; gap: 10px; width: 100%; min-height: 52px; padding: 10px 12px;
    border: 0; border-radius: 12px; background: transparent; color: var(--nd-ink);
    font: 600 16px/1.2 var(--nd-font); text-align: left; cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    transition: background-color var(--nd-dur-1) var(--nd-ease), transform var(--nd-dur-1) var(--nd-ease);
}
.ndn-sheet .ndn-drill:hover { background: var(--nd-surface-2); }
.ndn-sheet .ndn-drill:active { transform: scale(0.98); }
.ndn-sheet .ndn-drill__label { flex: 1; }
.ndn-sheet .ndn-drill__count { min-width: 24px; height: 22px; padding: 0 7px; display: grid; place-items: center; border-radius: 999px; background: var(--nd-surface-2); color: var(--nd-muted); font: 600 12px/1 var(--nd-font); }
.ndn-sheet .ndn-drill .ndn-icon { width: 18px; height: 18px; color: var(--nd-subtle); }
.ndn-sheet .ndn-layer {
    position: absolute; left: 0; right: 0; bottom: 0;
    top: calc(64px + env(safe-area-inset-top, 0px));
    display: flex; flex-direction: column; background: var(--nd-surface);
    transform: translateX(100%); transition: transform 320ms var(--nd-ease);
}
.ndn-sheet .ndn-layer.is-active { transform: none; }
.ndn-sheet .ndn-layer[hidden] { display: none; }
.ndn-sheet .ndn-layer__head { display: flex; align-items: center; gap: 4px; padding: 8px 12px; border-bottom: 1px solid var(--nd-line); }
.ndn-sheet .ndn-layer__back {
    display: inline-flex; align-items: center; gap: 4px; min-height: 44px; padding: 0 12px 0 6px; border: 0; border-radius: 10px;
    background: transparent; color: var(--nd-accent); font: 600 15px/1 var(--nd-font); cursor: pointer;
}
.ndn-sheet .ndn-layer__back:hover { background: var(--nd-accent-soft); }
.ndn-sheet .ndn-layer__title { margin: 0 0 0 4px; color: var(--nd-ink); font: 650 16px/1.2 var(--nd-font); letter-spacing: -0.01em; }
.ndn-sheet .ndn-layer__body { flex: 1; overflow-y: auto; overscroll-behavior: contain; padding: 10px 12px calc(24px + env(safe-area-inset-bottom, 0px)); -webkit-overflow-scrolling: touch; }
.ndn-sheet .ndn-layer__sub { margin: 0 0 6px; padding: 0 0 0 52px; list-style: none; }
.ndn-sheet .ndn-layer__sub .ndn-mobile-link { min-height: 44px; padding-left: 8px; font-weight: 500; }
.ndn-sheet .ndn-layer__sub .ndn-mobile-link .ndn-link-icon { display: none; }
.ndn-sheet__panel { height: 100vh; height: 100dvh; }
@media (max-width: 480px) { .ndn-sheet__panel { width: 100%; } }

/* Bottom tab bar (phones and tablets, up to 1023px). Items share the width equally whatever
   their count (3–5), so the bar never leaves a gap on the right. Height: --nd-tabbar-h. */
.ndn-tabbar { display: none; }
@media (max-width: 1023.98px) {
    html.ndn-has-tabbar { --nd-bottom-bar-h: var(--nd-tabbar-h, 64px); }
    html.ndn-has-tabbar body { padding-bottom: calc(var(--nd-tabbar-h, 64px) + var(--nd-safe-bottom, env(safe-area-inset-bottom, 0px))); }
    .ndn-tabbar {
        position: fixed; z-index: var(--nd-z-tabbar, 99990); left: 0; right: 0; bottom: 0;
        display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr);
        height: calc(var(--nd-tabbar-h, 64px) + var(--nd-safe-bottom, env(safe-area-inset-bottom, 0px)));
        padding: 0 max(4px, env(safe-area-inset-right, 0px)) var(--nd-safe-bottom, env(safe-area-inset-bottom, 0px)) max(4px, env(safe-area-inset-left, 0px));
        background: rgba(255, 255, 255, 0.86);
        background: color-mix(in srgb, var(--nd-surface) 86%, transparent);
        -webkit-backdrop-filter: saturate(1.8) blur(18px); backdrop-filter: saturate(1.8) blur(18px);
        border-top: 1px solid var(--nd-line);
        font-family: var(--nd-font);
        transition: transform var(--nd-dur-3) var(--nd-ease);
    }
    .ndn-tabbar.is-tucked { transform: translateY(100%); }
    html.ndn-has-tabbar.ndn-tabbar-tucked { --nd-bottom-stack: var(--nd-safe-bottom, 0px); }
    html.ndn-locked .ndn-tabbar, html.nexdirectory-filter-dialog-open .ndn-tabbar, body.nexdirectory-filter-dialog-open .ndn-tabbar, html.nd-sheet-open .ndn-tabbar { transform: translateY(110%); }
    .ndn-tabbar__item {
        position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px;
        min-width: 0; min-height: 48px; padding: 0 2px; color: var(--nd-muted) !important; text-decoration: none !important;
        font: 600 var(--nd-fs-12, 12px)/1.1 var(--nd-font); letter-spacing: 0;
        -webkit-tap-highlight-color: transparent;
        transition: color var(--nd-dur-2) var(--nd-ease), transform var(--nd-dur-1) var(--nd-ease);
    }
    .ndn-tabbar__item > span:not(.ndn-tabbar__dot) { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .ndn-tabbar__item .ndn-icon { width: 24px; height: 24px; }
    .ndn-tabbar__item:active { transform: scale(0.94); }
    .ndn-tabbar__item[aria-current="page"] { color: var(--nd-accent-ink) !important; }
    .ndn-tabbar__item[aria-current="page"] .ndn-icon { stroke-width: 2.1; }
    .ndn-tabbar__dot { position: absolute; top: 9px; left: calc(50% + 8px); width: 8px; height: 8px; border-radius: 50%; background: var(--nd-danger); box-shadow: 0 0 0 2px var(--nd-surface); }
    .ndn-tabbar__dot[hidden] { display: none; }
    /* The map page owns the whole screen: keep its own toggle above the bar. */
    html.ndn-has-tabbar .nd-mapx { height: calc(100dvh - var(--nd-sticky-top) - var(--nd-bottom-stack, 64px)); }
    html.ndn-has-tabbar body:has(.nd-mapx) { padding-bottom: var(--nd-bottom-stack, 64px); }
}
@media (prefers-reduced-motion: reduce) {
    .ndn-sheet .ndn-layer, .ndn-sheet .ndn-sheet__body, .ndn-tabbar { transition: none; }
}

/* Footer v2: calm, premium, sentence-case headings; mobile accordion-free list. */
.ndn-footer { border-top: 1px solid var(--nd-line) !important; background: var(--nd-surface) !important; }
.ndn-footer .ndn-footer__inner { padding-top: 64px; padding-bottom: 32px; }
.ndn-footer .ndn-footer__wordmark { font: 700 20px/1.1 var(--nd-font-display); letter-spacing: -0.025em; }
.ndn-footer .ndn-footer__tagline { max-width: 34ch; color: var(--nd-muted); font: 400 15px/1.55 var(--nd-font); }
.ndn-footer .ndn-footer__title {
    margin: 0 0 14px; color: var(--nd-ink) !important; font: 600 14px/1.3 var(--nd-font) !important;
    letter-spacing: 0 !important; text-transform: none !important;
}
.ndn-footer .ndn-footer__list { display: grid; gap: 2px; }
.ndn-footer .ndn-footer__link { display: inline-flex; padding: 6px 0; color: var(--nd-muted) !important; font: 400 15px/1.4 var(--nd-font) !important; text-decoration: none; transition: color var(--nd-dur-2) var(--nd-ease); }
.ndn-footer .ndn-footer__link:hover, .ndn-footer .ndn-footer__link[aria-current="page"] { color: var(--nd-ink) !important; }
.ndn-footer .ndn-footer__bottom { margin-top: 48px; padding-top: 24px; border-top: 1px solid var(--nd-line); }
.ndn-footer .ndn-footer__copy, .ndn-footer .ndn-footer__legal-link { color: var(--nd-muted) !important; font: 400 14px/1.4 var(--nd-font) !important; }
.ndn-footer .ndn-footer__top-btn {
    display: inline-flex; align-items: center; gap: 6px; min-height: 36px; padding: 0 14px; border: 1px solid var(--nd-line-strong); border-radius: 999px;
    background: var(--nd-surface); color: var(--nd-ink) !important; font: 500 14px/1 var(--nd-font) !important; letter-spacing: 0 !important; cursor: pointer;
}
.ndn-footer .ndn-footer__top-btn:hover { border-color: var(--nd-ink-2); }
.ndn-footer .ndn-footer__top-btn .ndn-icon { width: 16px; height: 16px; }
@media (max-width: 767.98px) {
    .ndn-footer .ndn-footer__inner { padding-top: 40px; padding-bottom: 24px; }
    .ndn-footer .ndn-footer__cols { grid-template-columns: 1fr 1fr !important; gap: 24px 16px; }
    .ndn-footer .ndn-footer__link { padding: 8px 0; min-height: 40px; align-items: center; }
    .ndn-footer .ndn-footer__bottom { margin-top: 32px; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; }
}

/* Listing pages end on a white surface; a top margin there showed a grey strip of page background above the footer. */
.nexdirectory-uniform-page-gutter:has(> .nexdirectory-single-app-root) + .ndn-footer { margin-top: 0; }

/* Visually hidden text (duplicated from the design system so the nav works standalone). */
.ndn .nd-sr-only, .nd-sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

/* ---------------------------------------------------------------------------
 * 1.6 round 2: drawer and footer rules moved out of inline styles (wp4-to-wp0 §2)
 * ------------------------------------------------------------------------- */
.ndn-sheet .ndn-sheet__label { margin: 24px 0 8px; padding: 0 4px; }
.ndn-sheet .ndn-sheet__chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0 4px; list-style: none; }
.ndn-sheet .ndn-sheet__chips > li { margin: 0; padding: 0; list-style: none; }
.ndn-sheet .ndn-sheet__legal { margin: 24px 0 0; padding: 0 4px; }
.ndn-sheet .ndn-sheet__legal a { color: var(--nd-muted); text-decoration: none; }
.ndn-sheet .ndn-sheet__legal a:hover { color: var(--nd-ink); }

/* Discovery pages paint their own 64px on the page canvas, so the footer adds none. */
.nexdirectory-uniform-page-gutter:has(> .nd-discover) + .ndn-footer { margin-top: 0; }
@media (max-width: 767.98px) {
    .ndn-footer { margin-top: 48px; }
}

/* Phones and tablets: the page ended with a grey band the height of the tab bar under the white
   footer (body padding showing the canvas). The footer itself now reserves that space. */
@media (max-width: 1023.98px) {
    html.ndn-has-tabbar body:has(.ndn-footer) { padding-bottom: 0; }
    html.ndn-has-tabbar body:has(.ndn-footer) .ndn-footer .ndn-footer__inner {
        padding-bottom: calc(24px + var(--nd-tabbar-h, 64px) + var(--nd-safe-bottom, env(safe-area-inset-bottom, 0px)));
    }
}

/* 1.6 round 3: nothing grey under the footer on phones. When the page ends (or the phone
   rubber-bands past the end), the canvas shows; on plugin pages it matches the footer surface
   instead of the grey page background (archive, sign-in and place pages showed an 18–36px band). */
@media (max-width: 767.98px) {
    html:has(body .ndn-footer) { background-color: var(--nd-surface, #ffffff); }
}
