/* Premium admin page transitions — in-page reveal only.
   Cross-document navigation: auto causes InvalidStateError when View Transitions
   opt-in is disabled in Chrome (breaks sidebar nav / catalog clicks). */

@view-transition {
    navigation: none;
}

::view-transition-old(admin-main),
::view-transition-new(admin-main) {
    animation-duration: 0.38s;
    animation-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
}

::view-transition-old(admin-main) {
    animation-name: admin-vt-fade-out;
}

::view-transition-new(admin-main) {
    animation-name: admin-vt-fade-in-up;
}

::view-transition-old(admin-sidebar),
::view-transition-new(admin-sidebar) {
    animation: none;
}

@keyframes admin-vt-fade-out {
    from { opacity: 1; transform: translateY(0); }
    to { opacity: 0; transform: translateY(-8px); }
}

@keyframes admin-vt-fade-in-up {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

@media (min-width: 992px) {
    .sidebar-container {
        view-transition-name: admin-sidebar;
    }

    .admin-page-shell,
    .analytics-container.admin-page-shell {
        view-transition-name: admin-main;
    }
}

.admin-page-content {
    opacity: 1;
    /* No transform in resting state — any transform on an ancestor breaks position: sticky. */
    transition:
        opacity 0.42s cubic-bezier(0.22, 1, 0.36, 1),
        transform 0.42s cubic-bezier(0.22, 1, 0.36, 1);
    will-change: opacity;
}

body.admin-page-loading .admin-page-content {
    opacity: 0;
    transform: translateY(12px);
    /* Do NOT set pointer-events:none here — on slow/partial deploys the loading
       class can linger and make Edit/Preview look dead. Reveal CSS restores opacity. */
    pointer-events: auto;
}

/* Once revealed, keep catalog actions clickable even if loading class lingers. */
.admin-page-content.is-revealed {
    opacity: 1 !important;
    transform: none !important;
    pointer-events: auto !important;
}

/* Catalog/pricing: never trap clicks under skeleton/loading chrome. */
body.admin-plans-page .admin-page-content,
body.admin-plans-page .mp-plan-row-actions,
body.admin-plans-page .mp-plan-icon-btn {
    pointer-events: auto !important;
}

/* Coin page: payout alerts + reward bar stay visible while table skeleton loads */
body.admin-page-loading .admin-coins-top-panel {
    opacity: 1;
    transform: none;
    pointer-events: auto;
}

body.admin-page-leaving .admin-page-shell,
body.admin-page-leaving .admin-page-content,
body.admin-page-leaving .analytics-container {
    opacity: 0;
    transform: translateY(-8px);
    transition:
        opacity 0.2s cubic-bezier(0.4, 0, 1, 1),
        transform 0.2s cubic-bezier(0.4, 0, 1, 1);
    pointer-events: none;
}

/* Subscription catalog: never leave Edit/Preview dead after sidebar nav */
body.admin-plans-page:not(.admin-page-leaving) .mp-plan-icon-btn,
body.admin-plans-page:not(.admin-page-leaving) .mp-plan-row-actions,
body.admin-plans-page:not(.admin-page-leaving) .admin-page-content.is-revealed {
    pointer-events: auto !important;
}

body.admin-nav-pending .admin-page-skeleton {
    display: block;
    opacity: 1;
}

/* Sidebar link press feedback */
.sidebar-link,
.sidebar-sublink,
.sidebar-dropdown-main {
    transition:
        background-color var(--motion-fast, 0.22s) ease,
        color var(--motion-fast, 0.22s) ease,
        transform 0.18s cubic-bezier(0.22, 1, 0.36, 1);
}

.sidebar-link.is-nav-pressing,
.sidebar-sublink.is-nav-pressing,
.sidebar-dropdown-main.is-nav-pressing {
    transform: scale(0.97);
}

@media (prefers-reduced-motion: reduce) {
    @view-transition {
        navigation: none;
    }

    .admin-page-content,
    body.admin-page-leaving .admin-page-shell,
    body.admin-page-leaving .admin-page-content {
        transition: none !important;
        transform: none !important;
    }

    ::view-transition-old(admin-main),
    ::view-transition-new(admin-main) {
        animation: none !important;
    }
}
