/* SphereNexus v2.1 — viewport-safe mobile drawer, tighter navigation and two-column category archives. */

:root {
    --sn-drawer-top: 0px;
    --sn-drawer-height: 100dvh;
}

@media (max-width: 1080px) {
    /* Remove properties on sticky ancestors that can trap fixed descendants. */
    body.menu-open .site-header--cut .main-header.is-sticky,
    body.menu-open .site-header--ultra .main-header.is-sticky,
    body.menu-open .main-header.is-sticky {
        transform: none !important;
        filter: none !important;
        -webkit-filter: none !important;
        backdrop-filter: none !important;
        -webkit-backdrop-filter: none !important;
    }

    /* The drawer is portalled to body by JS so it can never be clipped by the header. */
    body > .primary-navigation.is-mobile-portal {
        position: fixed !important;
        top: var(--sn-drawer-top) !important;
        right: -100% !important;
        bottom: auto !important;
        left: auto !important;
        z-index: 100001 !important;
        display: block !important;
        width: min(370px, 92vw) !important;
        height: var(--sn-drawer-height) !important;
        max-height: var(--sn-drawer-height) !important;
        padding: 0 18px 22px !important;
        overflow-x: hidden !important;
        overflow-y: auto !important;
        overscroll-behavior: contain;
        background: #fff !important;
        border: 0 !important;
        border-radius: 0 !important;
        box-shadow: -22px 0 54px rgba(8, 29, 50, .2) !important;
        transform: none !important;
        transition: right .26s cubic-bezier(.22,.7,.3,1) !important;
        -webkit-overflow-scrolling: touch;
        isolation: isolate;
    }

    body > .primary-navigation.is-mobile-portal.is-open {
        right: 0 !important;
    }

    body > .nav-drawer-overlay {
        position: fixed !important;
        top: var(--sn-drawer-top) !important;
        right: 0 !important;
        bottom: auto !important;
        left: 0 !important;
        z-index: 100000 !important;
        height: var(--sn-drawer-height) !important;
        background: rgba(7, 24, 42, .56) !important;
        backdrop-filter: none !important;
        -webkit-backdrop-filter: none !important;
    }

    body > .primary-navigation.is-mobile-portal .nav-drawer__header {
        position: sticky !important;
        top: 0 !important;
        z-index: 5 !important;
        min-height: 62px !important;
        margin: 0 -18px !important;
        padding: 7px 18px !important;
        background: #fff !important;
        border-bottom: 1px solid #e5ecef !important;
        box-shadow: 0 5px 16px rgba(8, 29, 50, .035) !important;
    }

    body > .primary-navigation.is-mobile-portal .nav-drawer__brand,
    body > .primary-navigation.is-mobile-portal .nav-drawer__brand .custom-logo-link,
    body > .primary-navigation.is-mobile-portal .nav-drawer__brand .custom-logo {
        display: flex !important;
        align-items: center !important;
        width: auto !important;
        max-width: min(var(--sn-logo-mobile-width), 150px) !important;
        max-height: 42px !important;
    }

    body > .primary-navigation.is-mobile-portal .nav-drawer__close {
        display: grid !important;
        place-items: center !important;
        width: 36px !important;
        height: 36px !important;
        flex: 0 0 36px !important;
        padding: 0 !important;
        border: 1px solid #dce6eb !important;
        border-radius: 8px 12px 8px 12px !important;
        background: #f8fbfc !important;
        color: #102942 !important;
    }

    body > .primary-navigation.is-mobile-portal .nav-drawer__search {
        display: block !important;
        margin: 13px 0 8px !important;
    }

    body > .primary-navigation.is-mobile-portal .sn-live-search__input {
        height: 43px !important;
        padding-left: 42px !important;
        font-size: 11px !important;
    }

    body > .primary-navigation.is-mobile-portal .sn-live-search__submit {
        height: 34px !important;
        padding-inline: 11px !important;
        font-size: 9px !important;
    }

    /* Compact vertical navigation: less empty space between names. */
    body > .primary-navigation.is-mobile-portal .primary-menu {
        display: flex !important;
        flex-direction: column !important;
        align-items: stretch !important;
        gap: 0 !important;
        width: 100% !important;
        margin: 0 !important;
        padding: 0 !important;
    }

    body > .primary-navigation.is-mobile-portal .primary-menu > li {
        margin: 0 !important;
        padding: 0 !important;
        border-bottom: 1px solid #edf2f4 !important;
    }

    body > .primary-navigation.is-mobile-portal .primary-menu > li > a {
        position: relative !important;
        display: flex !important;
        align-items: center !important;
        justify-content: flex-start !important;
        min-height: 45px !important;
        gap: 9px !important;
        margin: 0 !important;
        padding: 5px 1px !important;
        color: #132a43 !important;
        font-size: 12px !important;
        font-weight: 500 !important;
        line-height: 1.25 !important;
        letter-spacing: 0 !important;
        text-transform: none !important;
    }

    body > .primary-navigation.is-mobile-portal .primary-menu > li > a::after {
        display: none !important;
    }

    body > .primary-navigation.is-mobile-portal .primary-menu > li > a .sn-menu-link-icon {
        display: inline-grid !important;
        place-items: center !important;
        width: 30px !important;
        height: 30px !important;
        flex: 0 0 30px !important;
        border: 1px solid #dbe8eb !important;
        border-radius: 8px 11px 8px 11px !important;
        background: #f4faf9 !important;
        color: var(--sn-teal-dark) !important;
    }

    body > .primary-navigation.is-mobile-portal .primary-menu > li > a .sn-menu-link-icon .sn-icon {
        width: 16px !important;
        height: 16px !important;
    }

    body > .primary-navigation.is-mobile-portal .primary-menu > li.menu-item-has-children > a {
        padding-right: 30px !important;
    }

    body > .primary-navigation.is-mobile-portal .primary-menu > li.menu-item-has-children > a::before {
        right: 3px !important;
        font-size: 16px !important;
        font-weight: 400 !important;
    }

    body > .primary-navigation.is-mobile-portal .primary-menu .sub-menu {
        position: static !important;
        display: none !important;
        min-width: 0 !important;
        margin: 0 !important;
        padding: 1px 0 7px 36px !important;
        border: 0 !important;
        background: transparent !important;
        box-shadow: none !important;
        opacity: 1 !important;
        visibility: visible !important;
        transform: none !important;
    }

    body > .primary-navigation.is-mobile-portal .primary-menu .submenu-open > .sub-menu {
        display: block !important;
    }

    body > .primary-navigation.is-mobile-portal .primary-menu .sub-menu a {
        display: flex !important;
        align-items: center !important;
        min-height: 35px !important;
        gap: 7px !important;
        padding: 4px 0 !important;
        color: #536579 !important;
        font-size: 10.5px !important;
        font-weight: 500 !important;
    }

    body > .primary-navigation.is-mobile-portal .primary-menu .sub-menu .sn-menu-link-icon {
        width: 24px !important;
        height: 24px !important;
        flex: 0 0 24px !important;
    }

    body > .primary-navigation.is-mobile-portal .nav-drawer__footer {
        display: flex !important;
        flex-wrap: wrap !important;
        gap: 7px 13px !important;
        margin-top: 14px !important;
        padding-top: 13px !important;
        border-top: 1px solid #e6edf0 !important;
    }

    body > .primary-navigation.is-mobile-portal .nav-drawer__footer a {
        color: #64768a !important;
        font-size: 10px !important;
        font-weight: 500 !important;
    }
}

@media (max-width: 782px) {
    body.admin-bar > .primary-navigation.is-mobile-portal,
    body.admin-bar > .nav-drawer-overlay {
        /* JS sets the exact visible admin-bar bottom; this is a safe fallback. */
        --sn-drawer-top: 46px;
        --sn-drawer-height: calc(100dvh - 46px);
    }
}

@media (min-width: 783px) and (max-width: 1080px) {
    body.admin-bar > .primary-navigation.is-mobile-portal,
    body.admin-bar > .nav-drawer-overlay {
        --sn-drawer-top: 32px;
        --sn-drawer-height: calc(100dvh - 32px);
    }
}

@media (max-width: 760px) {
    /* Mobile category pages: exactly two post cards per row. */
    .category-main .category-layout,
    .category-main .content-with-sidebar {
        display: block !important;
        width: 100% !important;
        min-width: 0 !important;
    }

    .category-main .content-column {
        width: 100% !important;
        min-width: 0 !important;
    }

    .category-main .archive-grid.archive-grid--premium {
        display: grid !important;
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
        gap: 18px 10px !important;
        width: 100% !important;
        min-width: 0 !important;
    }

    .category-main .archive-grid--premium .story-card {
        min-width: 0 !important;
        margin: 0 !important;
        padding: 0 0 3px !important;
    }

    .category-main .archive-grid--premium .story-card__media {
        width: 100% !important;
        aspect-ratio: 1.25 / 1 !important;
        border-radius: 6px 13px 6px 13px !important;
    }

    .category-main .archive-grid--premium .story-card__content {
        min-width: 0 !important;
        padding-top: 8px !important;
    }

    .category-main .archive-grid--premium .story-card__category {
        display: -webkit-box !important;
        margin-bottom: 4px !important;
        overflow: hidden !important;
        color: var(--category-page-accent, var(--sn-teal-dark)) !important;
        font-size: 7.5px !important;
        font-weight: 600 !important;
        line-height: 1.3 !important;
        letter-spacing: .035em !important;
        -webkit-box-orient: vertical;
        -webkit-line-clamp: 2;
    }

    .category-main .archive-grid--premium .story-card__title {
        display: -webkit-box !important;
        margin: 0 0 6px !important;
        overflow: hidden !important;
        font-size: 12.5px !important;
        font-weight: 600 !important;
        line-height: 1.38 !important;
        letter-spacing: 0 !important;
        -webkit-box-orient: vertical;
        -webkit-line-clamp: 3;
    }

    .category-main .archive-grid--premium .story-card__content > p {
        display: none !important;
    }

    .category-main .archive-grid--premium .post-meta {
        margin-bottom: 5px !important;
        font-size: 8px !important;
        line-height: 1.3 !important;
    }

    .category-main .archive-grid--premium .post-meta > span:nth-child(n+2) {
        display: none !important;
    }

    .category-main .archive-grid--premium .sn-read-more-link {
        gap: 4px !important;
        margin-top: 4px !important;
        font-size: 9px !important;
        font-weight: 500 !important;
    }

    .category-main .archive-grid--premium .sn-read-more-link .sn-icon {
        width: 12px !important;
        height: 12px !important;
    }

    .category-main .site-sidebar--professional {
        width: 100% !important;
        margin-top: 28px !important;
    }

    /* General mobile resilience. */
    .site-main,
    .sn-container,
    .content-column,
    .category-feature,
    .story-card,
    .story-card__content {
        min-width: 0 !important;
        max-width: 100% !important;
    }

    .category-intro {
        padding: 20px 17px !important;
    }

    .category-intro h1 {
        font-size: 22px !important;
        line-height: 1.25 !important;
    }

    .category-feature__media {
        min-height: 205px !important;
    }

    .category-feature__content {
        padding: 20px 18px !important;
    }

    .category-feature h2 {
        font-size: 20px !important;
        line-height: 1.35 !important;
    }
}

@media (max-width: 400px) {
    body > .primary-navigation.is-mobile-portal {
        width: min(354px, 94vw) !important;
        padding-inline: 15px !important;
    }

    body > .primary-navigation.is-mobile-portal .nav-drawer__header {
        margin-inline: -15px !important;
        padding-inline: 15px !important;
    }

    body > .primary-navigation.is-mobile-portal .primary-menu > li > a {
        min-height: 43px !important;
        font-size: 11.5px !important;
    }

    .category-main .archive-grid.archive-grid--premium {
        gap: 16px 8px !important;
    }

    .category-main .archive-grid--premium .story-card__title {
        font-size: 11.5px !important;
    }
}
