/**
 * Seven Menu — Mobile Navigation
 *
 * Slide-in drill-down panel with stacked levels.
 * Visibility controlled by JS via data-breakpoint on .sevn-mobile-wrap.
 */

/* ── Body Scroll Lock ──────────────────────────────────────────────────── */

.sevn-body-locked {
    overflow: hidden;
}

/* ── Container ─────────────────────────────────────────────────────────── */

.sevn-mobile-wrap {
    display: none;
}

.sevn-mobile {
    position: fixed;
    inset: 0;
    z-index: 99999;
    visibility: hidden;
    pointer-events: none;
}

.sevn-mobile.is-open {
    visibility: visible;
    pointer-events: auto;
}

/* ── Backdrop ──────────────────────────────────────────────────────────── */

.sevn-mobile__backdrop {
    position: absolute;
    inset: 0;
    background: rgba( 0, 0, 0, 0.5 );
    opacity: 0;
    transition: opacity 0.3s ease;
}

.sevn-mobile.is-open .sevn-mobile__backdrop {
    opacity: 1;
}

/* ── Panel ─────────────────────────────────────────────────────────────── */

.sevn-mobile__panel {
    position: absolute;
    top: 0;
    right: 0;
    width: var( --sevn-mobile-panel-width, 320px );
    max-width: 85vw;
    height: 100%;
    background: var( --sevn-mobile-bg, #fff );
    color: var( --sevn-mobile-color, inherit );
    display: flex;
    flex-direction: column;
    transform: translateX( 100% );
    transition: transform 0.3s ease;
    box-shadow: -2px 0 12px rgba( 0, 0, 0, 0.15 );
}

.sevn-mobile.is-open .sevn-mobile__panel {
    transform: translateX( 0 );
}

/* ── Panel Modes ──────────────────────────────────────────────────────── */

/* Slide Left */
.sevn-mobile[data-panel-mode="slide"][data-slide-direction="left"] .sevn-mobile__panel {
    right: auto;
    left: 0;
    transform: translateX( -100% );
    box-shadow: 2px 0 12px rgba( 0, 0, 0, 0.15 );
}

.sevn-mobile[data-panel-mode="slide"][data-slide-direction="left"].is-open .sevn-mobile__panel {
    transform: translateX( 0 );
}

/* Fullscreen */
.sevn-mobile[data-panel-mode="fullscreen"] .sevn-mobile__panel {
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    width: 100%;
    max-width: 100%;
    transform: translateY( 100% );
    box-shadow: none;
}

.sevn-mobile[data-panel-mode="fullscreen"].is-open .sevn-mobile__panel {
    transform: translateY( 0 );
}

.sevn-mobile[data-panel-mode="fullscreen"] .sevn-mobile__backdrop {
    display: none;
}

.sevn-mobile[data-panel-mode="fullscreen"] .sevn-mobile__link span,
.sevn-mobile[data-panel-mode="fullscreen_offset"] .sevn-mobile__link span {
    flex: 0 1 auto;
}

/* Fullscreen with Top Offset */
.sevn-mobile[data-panel-mode="fullscreen_offset"] .sevn-mobile__panel {
    top: var( --sevn-mobile-top-offset, 10% );
    left: 0;
    right: 0;
    bottom: 0;
    width: 100%;
    max-width: 100%;
    transform: translateY( 100% );
    box-shadow: 0 -4px 20px rgba( 0, 0, 0, 0.1 );
    border-radius: 16px 16px 0 0;
}

.sevn-mobile[data-panel-mode="fullscreen_offset"].is-open .sevn-mobile__panel {
    transform: translateY( 0 );
}

/* Drag handle indicator for fullscreen_offset */
.sevn-mobile[data-panel-mode="fullscreen_offset"] .sevn-mobile__panel::before {
    content: '';
    display: block;
    width: 36px;
    height: 4px;
    background: rgba( 0, 0, 0, 0.2 );
    border-radius: 2px;
    margin: 8px auto 0;
    flex-shrink: 0;
}

/* Modal (centered with gap + overlay) */
.sevn-mobile[data-panel-mode="modal"] .sevn-mobile__panel {
    top: var( --sevn-mobile-modal-gap, 5% );
    left: var( --sevn-mobile-modal-gap, 5% );
    right: var( --sevn-mobile-modal-gap, 5% );
    bottom: var( --sevn-mobile-modal-gap, 5% );
    width: auto;
    max-width: none;
    height: auto;
    border-radius: 12px;
    transform: scale( 0.95 );
    opacity: 0;
    transition: transform 0.3s ease, opacity 0.3s ease;
    box-shadow: 0 8px 32px rgba( 0, 0, 0, 0.2 );
}

.sevn-mobile[data-panel-mode="modal"].is-open .sevn-mobile__panel {
    transform: scale( 1 );
    opacity: 1;
}

/* ── Header ────────────────────────────────────────────────────────────── */

.sevn-mobile__header {
    display: flex;
    align-items: center;
    padding: 0.625rem 0.75rem;
    border-bottom: 1px solid rgba( 0, 0, 0, 0.08 );
    flex-shrink: 0;
    gap: 0.5rem;
}

.sevn-mobile__back,
.sevn-mobile__close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    background: transparent;
    border: none;
    font-size: 1.25rem;
    line-height: 1;
    cursor: pointer;
    color: inherit;
    border-radius: 4px;
    flex-shrink: 0;
    transition: background-color 0.15s ease;
    padding: 0;
    -webkit-appearance: none;
    appearance: none;
}

.sevn-mobile__back:hover,
.sevn-mobile__close:hover {
    background-color: rgba( 0, 0, 0, 0.06 );
}

.sevn-mobile__back:focus-visible,
.sevn-mobile__close:focus-visible {
    outline: 2px solid currentColor;
    outline-offset: 2px;
}

/* Hide back button on root level (JS manages aria-hidden). */
.sevn-mobile__back[aria-hidden="true"] {
    visibility: hidden;
}

.sevn-mobile__title {
    flex: 1 1 auto;
    text-align: center;
    font-size: 0.9375rem;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.sevn-mobile__close {
    margin-left: auto;
}

/* ── Content (scrollable) ──────────────────────────────────────────────── */

.sevn-mobile__content {
    flex: 1 1 auto;
    overflow-y: auto;
    overflow-x: hidden;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
    position: relative;
}

/* ── Levels (stacked, slide via transform) ─────────────────────────────── */

.sevn-mobile__level {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    min-height: 100%;
    padding: 0.5rem 0;
    transform: translateX( 100% );
    transition: transform 0.3s cubic-bezier( 0.4, 0, 0.2, 1 );
    visibility: hidden;
}

/* Level 0 is visible by default when panel is open. */
.sevn-mobile__level[data-level="0"] {
    position: relative;
    transform: translateX( 0 );
    visibility: visible;
}

/* Active level slides into view. */
.sevn-mobile__level.is-active {
    transform: translateX( 0 );
    visibility: visible;
}

/* Push parent level to the left when a child is active. */
.sevn-mobile__level.is-pushed {
    transform: translateX( -30% );
    visibility: hidden;
}

/* ── Links / Buttons ───────────────────────────────────────────────────── */

.sevn-mobile__link {
    display: flex;
    align-items: center;
    width: 100%;
    padding: 0.75rem 1rem;
    background: transparent;
    border: none;
    border-bottom: 1px solid rgba( 0, 0, 0, 0.04 );
    color: inherit;
    font-family: inherit;
    font-size: 0.9375rem;
    line-height: 1.4;
    text-decoration: none;
    text-align: left;
    cursor: pointer;
    transition: background-color 0.15s ease;
    -webkit-appearance: none;
    appearance: none;
}

.sevn-mobile__link:hover {
    background-color: rgba( 0, 0, 0, 0.03 );
}

.sevn-mobile__link:focus-visible {
    outline: 2px solid currentColor;
    outline-offset: -2px;
}

/* ── Item Image ────────────────────────────────────────────────────────── */

.sevn-mobile__image {
    width: 35px;
    height: 35px;
    object-fit: contain;
    border-radius: 4px;
    flex-shrink: 0;
}

/* ── Chevron (items with children) ────────────────────────────────────── */

.sevn-mobile__chevron {
    flex-shrink: 0;
    margin-left: auto;
    padding-left: 0.5rem;
    color: #999;
    display: flex;
    align-items: center;
}

/* ── Links ─────────────────────────────────────────────────────────────── */

.sevn-mobile__link span {
    flex: 1;
    min-width: 0;
    overflow-wrap: break-word;
    word-break: break-word;
    line-height: 1.3;
}

.sevn-mobile__link--has-children {
    gap: 12px;
}

/* ── Highlight Link ───────────────────────────────────────────────────── */

.sevn-mobile__link--highlight {
    font-weight: 600;
    color: var( --sevn-accent-color, #2271b1 );
}

.sevn-mobile__link--highlight:hover {
    opacity: 0.8;
}

/* ── Screen Reader Text ────────────────────────────────────────────────── */

.sevn-mobile .screen-reader-text {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect( 0, 0, 0, 0 );
    white-space: nowrap;
    border: 0;
}

/* ── Reduced Motion ────────────────────────────────────────────────────── */

@media ( prefers-reduced-motion: reduce ) {
    .sevn-mobile__backdrop,
    .sevn-mobile__panel,
    .sevn-mobile__level,
    .sevn-mobile__link,
    .sevn-mobile__back,
    .sevn-mobile__close {
        transition: none;
    }
}
