/* ── Dashboard & Profile Premium Animations ────────────────────────── */

/* ========================= Page Load ========================= */
@keyframes pageLoadFadeIn {
    0% {
        opacity: 0;
        transform: translateY(16px);
        filter: blur(6px);
    }
    100% {
        opacity: 1;
        transform: translateY(0);
        filter: blur(0);
    }
}

.main-content,
.profile-main,
.pv-main,
.admin-content,
.admin-main,
.dashboard-layout > main,
.ov-wrap {
    animation: pageLoadFadeIn 0.65s cubic-bezier(0.16, 1, 0.3, 1) both;
}

/* ========================= Reveal Variants ========================= */

/* Slide Up (default) */
.dash-reveal,
.reveal {
    opacity: 0;
    transform: translateY(22px);
    filter: blur(5px);
    transition: opacity 0.55s cubic-bezier(0.16, 1, 0.3, 1),
                transform 0.55s cubic-bezier(0.16, 1, 0.3, 1),
                filter 0.55s cubic-bezier(0.16, 1, 0.3, 1);
    will-change: opacity, transform, filter;
}

.dash-reveal.revealed,
.reveal.revealed,
.dash-reveal.active,
.reveal.active {
    opacity: 1 !important;
    transform: translateY(0) !important;
    filter: blur(0) !important;
}

/* Slide from Left */
.dash-reveal-left,
.reveal-left {
    opacity: 0;
    transform: translateX(-24px);
    filter: blur(5px);
    transition: opacity 0.55s cubic-bezier(0.16, 1, 0.3, 1),
                transform 0.55s cubic-bezier(0.16, 1, 0.3, 1),
                filter 0.55s cubic-bezier(0.16, 1, 0.3, 1);
    will-change: opacity, transform, filter;
}

.dash-reveal-left.revealed,
.reveal-left.revealed,
.dash-reveal-left.active,
.reveal-left.active {
    opacity: 1 !important;
    transform: translateX(0) !important;
    filter: blur(0) !important;
}

/* Slide from Right */
.dash-reveal-right,
.reveal-right {
    opacity: 0;
    transform: translateX(24px);
    filter: blur(5px);
    transition: opacity 0.55s cubic-bezier(0.16, 1, 0.3, 1),
                transform 0.55s cubic-bezier(0.16, 1, 0.3, 1),
                filter 0.55s cubic-bezier(0.16, 1, 0.3, 1);
    will-change: opacity, transform, filter;
}

.dash-reveal-right.revealed,
.reveal-right.revealed,
.dash-reveal-right.active,
.reveal-right.active {
    opacity: 1 !important;
    transform: translateX(0) !important;
    filter: blur(0) !important;
}

/* Scale Up */
.dash-reveal-scale,
.reveal-scale {
    opacity: 0;
    transform: scale(0.94);
    filter: blur(5px);
    transition: opacity 0.5s cubic-bezier(0.16, 1, 0.3, 1),
                transform 0.5s cubic-bezier(0.16, 1, 0.3, 1),
                filter 0.5s cubic-bezier(0.16, 1, 0.3, 1);
    will-change: opacity, transform, filter;
}

.dash-reveal-scale.revealed,
.reveal-scale.revealed,
.dash-reveal-scale.active,
.reveal-scale.active {
    opacity: 1 !important;
    transform: scale(1) !important;
    filter: blur(0) !important;
}

/* Blur + Fade */
.reveal-blur {
    opacity: 0;
    filter: blur(8px);
    transform: translateY(10px);
    transition: opacity 0.5s cubic-bezier(0.16, 1, 0.3, 1),
                filter 0.5s cubic-bezier(0.16, 1, 0.3, 1),
                transform 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}

.reveal-blur.revealed {
    opacity: 1 !important;
    filter: blur(0) !important;
    transform: translateY(0) !important;
}

/* ========================= Delay Classes ========================= */
.reveal-delay-1 { transition-delay: 60ms !important; }
.reveal-delay-2 { transition-delay: 120ms !important; }
.reveal-delay-3 { transition-delay: 180ms !important; }
.reveal-delay-4 { transition-delay: 240ms !important; }
.reveal-delay-5 { transition-delay: 300ms !important; }
.reveal-delay-6 { transition-delay: 360ms !important; }

/* ========================= Stagger (Parent → Child) ========================= */
.dash-stagger > *:nth-child(1)  { transition-delay: 0ms; }
.dash-stagger > *:nth-child(2)  { transition-delay: 45ms; }
.dash-stagger > *:nth-child(3)  { transition-delay: 90ms; }
.dash-stagger > *:nth-child(4)  { transition-delay: 135ms; }
.dash-stagger > *:nth-child(5)  { transition-delay: 180ms; }
.dash-stagger > *:nth-child(6)  { transition-delay: 225ms; }
.dash-stagger > *:nth-child(7)  { transition-delay: 270ms; }
.dash-stagger > *:nth-child(8)  { transition-delay: 315ms; }
.dash-stagger > *:nth-child(9)  { transition-delay: 360ms; }
.dash-stagger > *:nth-child(10) { transition-delay: 405ms; }
.dash-stagger > *:nth-child(11) { transition-delay: 450ms; }
.dash-stagger > *:nth-child(12) { transition-delay: 495ms; }
.dash-stagger > *:nth-child(13) { transition-delay: 540ms; }
.dash-stagger > *:nth-child(14) { transition-delay: 585ms; }
.dash-stagger > *:nth-child(15) { transition-delay: 630ms; }
.dash-stagger > *:nth-child(16) { transition-delay: 675ms; }

/* ========================= Header Slide In ========================= */
.header-animate {
    opacity: 0;
    transform: translateY(-12px);
    filter: blur(4px);
    animation: headerSlideIn 0.55s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

@keyframes headerSlideIn {
    to {
        opacity: 1;
        transform: translateY(0);
        filter: blur(0);
    }
}

/* ========================= Card Interactions ========================= */

/* Universal card hover lift */
.dash-card,
.card,
.fri-card,
.settings-card,
.module-card,
.prof-stat-card,
.prof-chart-card,
.ov-stat-card,
.ov-chart-card,
.act-card,
.pv-card,
.pv-stat,
.daily-card,
.tx-card,
.store-item,
.option-card,
.premium-glass-card {
    transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1),
                box-shadow 0.35s cubic-bezier(0.16, 1, 0.3, 1),
                border-color 0.3s ease;
}

.dash-card:hover,
.card:hover,
.fri-card:hover,
.settings-card:hover,
.module-card:hover,
.prof-stat-card:hover,
.prof-chart-card:hover,
.ov-stat-card:hover,
.ov-chart-card:hover,
.act-card:hover,
.pv-card:hover,
.pv-stat:hover,
.daily-card:hover,
.tx-card:hover,
.store-item:hover,
.option-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 14px 36px rgba(0, 0, 0, 0.08), 0 0 16px rgba(212, 175, 55, 0.12);
    border-color: rgba(212, 175, 55, 0.38) !important;
}

/* Gold shimmer for profile stat cards on hover */
.prof-stat-card:hover .prof-stat-icon,
.ov-stat-card:hover .ov-stat-icon,
.pv-stat:hover .pv-stat-icon {
    transform: scale(1.12) rotate(-5deg);
    color: var(--brand-primary, #d4af37);
    filter: drop-shadow(0 0 8px rgba(212, 175, 55, 0.4));
    transition: all 0.35s cubic-bezier(0.16, 1, 0.3, 1);
}

[dir="rtl"] .prof-stat-card:hover .prof-stat-icon {
    transform: scale(1.12) rotate(5deg);
}

/* ========================= Button Micro-interactions ========================= */
button,
.btn,
.prof-btn-outline,
.btn-buy,
.btn-equip,
.claim-btn,
.pv-btn,
.mobile-btn {
    transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1),
                box-shadow 0.2s cubic-bezier(0.16, 1, 0.3, 1),
                background 0.2s ease,
                color 0.2s ease,
                border-color 0.2s ease;
}

button:active,
.btn:active,
.prof-btn-outline:active,
.pv-btn:active {
    transform: scale(0.96) !important;
}

.btn-primary:hover,
.btn-save:hover,
.mobile-btn-filled:hover {
    box-shadow: 0 8px 24px rgba(212, 175, 55, 0.38);
    transform: translateY(-2px);
}

/* Form Inputs Focus Aura */
input:not([type="checkbox"]):not([type="radio"]),
select,
textarea {
    transition: border-color 0.25s ease, box-shadow 0.25s ease, transform 0.25s cubic-bezier(0.16, 1, 0.3, 1);
}

input:not([type="checkbox"]):not([type="radio"]):focus,
select:focus,
textarea:focus {
    border-color: rgba(212, 175, 55, 0.6) !important;
    box-shadow: 0 0 0 3px rgba(212, 175, 55, 0.18) !important;
    outline: none;
}

/* ========================= Sidebar Nav Items ========================= */
.fri-item,
.nav-link {
    transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1);
    position: relative;
    overflow: hidden;
}

/* Subtle sweep effect on sidebar items */
.fri-item::after,
.nav-link::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, transparent, rgba(212, 175, 55, 0.08), transparent);
    transform: translateX(-100%);
    transition: transform 0.45s cubic-bezier(0.16, 1, 0.3, 1);
    pointer-events: none;
}

.fri-item:hover::after,
.nav-link:hover::after {
    transform: translateX(100%);
}

/* ── Sidebar Specialized Animations ── */

/* Icon Hover Effects (Global Sidebar) */
.fri-item:hover .fri-icon,
.server-item:hover .server-icon-wrapper {
    transform: scale(1.15) !important;
    transition: transform 0.25s cubic-bezier(0.175, 0.885, 0.32, 1.275) !important;
}

/* Spinning Gear (Bot Personalizer) */
.fri-item:hover .fa-robot,
.fri-item:hover .fa-cog,
.fri-item:hover .fa-sliders-h,
.fri-item:hover .sidebar-ani-gear {
    animation: gearSpin 2s linear infinite;
}

@keyframes gearSpin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

/* Trophy Shine (Levels) */
.fri-item:hover .sidebar-ani-trophy,
.fri-item:hover .fa-trophy {
    animation: trophyShine 0.8s ease-in-out infinite alternate;
}

@keyframes trophyShine {
    from { filter: brightness(1) drop-shadow(0 0 0 transparent); transform: scale(1); }
    to { filter: brightness(1.4) drop-shadow(0 0 8px rgba(212, 175, 55, 0.5)); transform: scale(1.1); }
}

/* Gavel Hammer (Moderation) */
.fri-item:hover .sidebar-ani-gavel,
.fri-item:hover .fa-gavel {
    animation: gavelHammer 0.5s ease-in-out infinite;
    transform-origin: bottom right;
}

@keyframes gavelHammer {
    0%, 100% { transform: rotate(0deg); }
    50% { transform: rotate(-30deg); }
}

/* Hand Sparkle (Welcome) */
.fri-item:hover .sidebar-ani-sparkle,
.fri-item:hover .fa-hand-sparkles {
    animation: handSparkle 1.2s ease-in-out infinite;
}

@keyframes handSparkle {
    0%, 100% { transform: scale(1) rotate(0deg); filter: brightness(1); }
    50% { transform: scale(1.2) rotate(15deg); filter: brightness(1.3) drop-shadow(0 0 5px #D4AF37); }
}

/* Palette Spin (Colors) */
.fri-item:hover .sidebar-ani-palette,
.fri-item:hover .fa-palette {
    animation: paletteSpin 2s ease-in-out infinite;
}

@keyframes paletteSpin {
    0% { transform: rotate(0deg); }
    25% { transform: rotate(10deg); }
    75% { transform: rotate(-10deg); }
    100% { transform: rotate(0deg); }
}

/* Microphone Pulse (Temp Voice) */
.fri-item:hover .sidebar-ani-mic,
.fri-item:hover .fa-microphone-alt {
    animation: micPulse 1s ease-in-out infinite;
}

@keyframes micPulse {
    0%, 100% { transform: scale(1); opacity: 1; }
    50% { transform: scale(1.15); opacity: 0.8; color: #D4AF37; }
}

/* Cube Rotate (Minecraft) */
.fri-item:hover .sidebar-ani-cube,
.fri-item:hover .fa-cube {
    animation: cubeRotate 2s linear infinite;
}

@keyframes cubeRotate {
    0% { transform: rotateY(0deg); }
    100% { transform: rotateY(360deg); }
}

/* Ticket Wiggle (Tickets) */
.fri-item:hover .sidebar-ani-ticket,
.fri-item:hover .fa-ticket-alt {
    animation: ticketWiggle 0.6s ease-in-out infinite;
}

@keyframes ticketWiggle {
    0%, 100% { transform: rotate(-10deg); }
    50% { transform: rotate(10deg); }
}

/* List Slide (Logs) */
.fri-item:hover .sidebar-ani-logs {
    animation: logsSlide 0.8s ease-in-out infinite alternate;
}

@keyframes logsSlide {
    from { transform: translateY(0); }
    to { transform: translateY(3px); filter: brightness(1.2); }
}

/* Terminal Cursor Blink (Custom Commands) */
.fri-item:hover .fa-terminal {
    animation: cursorBlink 1s infinite step-end;
}

@keyframes cursorBlink {
    0%, 100% { opacity: 1; transform: scale(1.1); }
    50% { opacity: 0.5; transform: scale(1); }
}

/* Sliders Wiggle (Command Management) */
.fri-item:hover .fa-sliders-h {
    animation: sliderWiggle 0.5s ease-in-out infinite alternate;
}

@keyframes sliderWiggle {
    from { transform: translateX(-2px); }
    to { transform: translateX(2px); }
}

/* Social Icon Effects (Notifications) */

/* Twitch Bounce */
.fri-item:hover .sidebar-ani-bounce {
    animation: sidebarBounce 0.6s ease-in-out infinite;
}

@keyframes sidebarBounce {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-5px); }
}

/* YouTube Pulse */
.fri-item:hover .sidebar-ani-pulse {
    animation: sidebarPulse 0.8s ease-in-out infinite;
}

@keyframes sidebarPulse {
    0%, 100% { transform: scale(1); filter: brightness(1); }
    50% { transform: scale(1.2); filter: brightness(1.2); }
}

/* Kick Flash */
.fri-item:hover .sidebar-ani-flash {
    animation: sidebarFlash 0.5s step-end infinite;
}

@keyframes sidebarFlash {
    0%, 100% { opacity: 1; filter: drop-shadow(0 0 8px #53FC18); }
    50% { opacity: 0.7; filter: none; }
}

/* TikTok Shake */
.fri-item:hover .sidebar-ani-shake {
    animation: sidebarShake 0.4s cubic-bezier(.36,.07,.19,.97) infinite;
}

@keyframes sidebarShake {
    10%, 90% { transform: translate3d(-1px, 0, 0) rotate(-2deg); }
    20%, 80% { transform: translate3d(2px, 0, 0) rotate(2deg); }
    30%, 50%, 70% { transform: translate3d(-2px, 0, 0) rotate(-1deg); }
    40%, 60% { transform: translate3d(2px, 0, 0) rotate(1deg); }
}

/* Staggered Sidebar Reveal */
.sidebar-stagger > *,
.server-list-sidebar > * {
    opacity: 1;
    transform: translateX(0);
}

@keyframes sidebarItemReveal {
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

.sidebar-stagger > *:nth-child(1) { animation-delay: 0.1s; }
.sidebar-stagger > *:nth-child(2) { animation-delay: 0.14s; }
.sidebar-stagger > *:nth-child(3) { animation-delay: 0.18s; }
.sidebar-stagger > *:nth-child(4) { animation-delay: 0.22s; }
.sidebar-stagger > *:nth-child(5) { animation-delay: 0.26s; }
.sidebar-stagger > *:nth-child(6) { animation-delay: 0.3s; }
.sidebar-stagger > *:nth-child(7) { animation-delay: 0.34s; }
.sidebar-stagger > *:nth-child(8) { animation-delay: 0.38s; }
.sidebar-stagger > *:nth-child(9) { animation-delay: 0.42s; }
.sidebar-stagger > *:nth-child(10) { animation-delay: 0.46s; }
.sidebar-stagger > *:nth-child(11) { animation-delay: 0.5s; }
.sidebar-stagger > *:nth-child(12) { animation-delay: 0.54s; }
.sidebar-stagger > *:nth-child(13) { animation-delay: 0.58s; }
.sidebar-stagger > *:nth-child(14) { animation-delay: 0.62s; }
.sidebar-stagger > *:nth-child(15) { animation-delay: 0.66s; }
.sidebar-stagger > *:nth-child(16) { animation-delay: 0.7s; }
.sidebar-stagger > *:nth-child(17) { animation-delay: 0.74s; }
.sidebar-stagger > *:nth-child(18) { animation-delay: 0.78s; }
.sidebar-stagger > *:nth-child(19) { animation-delay: 0.82s; }
.sidebar-stagger > *:nth-child(20) { animation-delay: 0.86s; }
.sidebar-stagger > *:nth-child(21) { animation-delay: 0.9s; }
.sidebar-stagger > *:nth-child(22) { animation-delay: 0.94s; }
.sidebar-stagger > *:nth-child(23) { animation-delay: 0.98s; }
.sidebar-stagger > *:nth-child(24) { animation-delay: 1.02s; }
.sidebar-stagger > *:nth-child(25) { animation-delay: 1.06s; }
.sidebar-stagger > *:nth-child(26) { animation-delay: 1.1s; }
.sidebar-stagger > *:nth-child(27) { animation-delay: 1.14s; }
.sidebar-stagger > *:nth-child(28) { animation-delay: 1.18s; }
.sidebar-stagger > *:nth-child(29) { animation-delay: 1.22s; }
.sidebar-stagger > *:nth-child(30) { animation-delay: 1.26s; }

/* ── Animation Played Override (Session-Based) ── */
.sidebar-ani-played .sidebar-stagger > *,
.sidebar-ani-played .server-list-sidebar > *,
.sidebar-ani-played .fri-divider,
.sidebar-ani-played .fri-section {
    animation: none !important;
    opacity: 1 !important;
    transform: translateX(0) !important;
}

/* ========================= Table Row Animations ========================= */
.prof-table tbody tr,
.tx-table tbody tr,
.dash-table tbody tr,
.ov-table tbody tr {
    transition: background 0.22s ease, transform 0.22s cubic-bezier(0.16, 1, 0.3, 1);
}

.prof-table tbody tr:hover,
.tx-table tbody tr:hover,
.dash-table tbody tr:hover,
.ov-table tbody tr:hover {
    background: rgba(212, 175, 55, 0.06) !important;
    transform: translateX(4px);
}

[dir="rtl"] .prof-table tbody tr:hover,
[dir="rtl"] .tx-table tbody tr:hover,
[dir="rtl"] .dash-table tbody tr:hover,
[dir="rtl"] .ov-table tbody tr:hover {
    transform: translateX(-4px);
}

/* ========================= Stat Counter Pulse ========================= */
@keyframes countPulse {
    0% { transform: scale(1); }
    50% { transform: scale(1.06); color: var(--brand-primary, #d4af37); }
    100% { transform: scale(1); }
}

.stat-value.pulse,
.prof-stat-value.pulse,
.ov-stat-value.pulse {
    animation: countPulse 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}

/* ========================= Section Dividers ========================= */
.fri-divider,
.fri-section,
.fri-section-label {
    opacity: 1 !important;
}

/* ========================= Toast / Notification ========================= */
@keyframes toastSlideIn {
    from {
        opacity: 0;
        transform: translateY(-16px) scale(0.95);
        filter: blur(4px);
    }
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
        filter: blur(0);
    }
}

.toast-notification {
    animation: toastSlideIn 0.35s cubic-bezier(0.16, 1, 0.3, 1);
}

/* ========================= Modal Animations ========================= */
@keyframes modalSpringIn {
    0% {
        opacity: 0;
        transform: scale(0.92) translateY(20px);
        filter: blur(5px);
    }
    100% {
        opacity: 1;
        transform: scale(1) translateY(0);
        filter: blur(0);
    }
}

.custom-confirm-overlay.show .custom-confirm-modal,
.modal.show .modal-dialog,
.pv-status-pop.open {
    animation: modalSpringIn 0.35s cubic-bezier(0.16, 1, 0.3, 1) both;
}

/* ========================= Gold Shimmer Effect ========================= */
@keyframes goldShimmer {
    0% { background-position: -200% 0; }
    100% { background-position: 200% 0; }
}

.shimmer-gold {
    background: linear-gradient(90deg,
        transparent 0%,
        rgba(212, 175, 55, 0.08) 40%,
        rgba(212, 175, 55, 0.18) 50%,
        rgba(212, 175, 55, 0.08) 60%,
        transparent 100%);
    background-size: 200% 100%;
    animation: goldShimmer 3s ease-in-out infinite;
}

/* ========================= Floating Daily Gift Icon ========================= */
@keyframes floatGift {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-8px); }
}

.daily-icon {
    animation: floatGift 2.8s ease-in-out infinite;
}

/* ========================= Store Item Hover Glow ========================= */
.store-item:hover .store-preview {
    filter: brightness(1.1);
    transform: scale(1.03);
    transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

.store-item .store-preview {
    transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

/* ========================= Streak Progress Bar Fill ========================= */
@keyframes streakFill {
    from { width: 0; }
}

.streak-progress-fill,
.progress-bar-fill {
    animation: streakFill 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

/* ========================= Chart Card Fade ========================= */
canvas {
    animation: chartReveal 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
    animation-delay: 0.2s;
    opacity: 0;
}

@keyframes chartReveal {
    to { opacity: 1; }
}

/* ========================= Reduced Motion ========================= */
@media (prefers-reduced-motion: reduce) {
    .dash-reveal,
    .dash-reveal-left,
    .dash-reveal-right,
    .dash-reveal-scale,
    .reveal,
    .reveal-left,
    .reveal-right,
    .reveal-scale,
    .reveal-blur,
    .header-animate,
    .main-content,
    .profile-main,
    .pv-main {
        opacity: 1 !important;
        transform: none !important;
        filter: none !important;
        animation: none !important;
        transition: none !important;
    }

    .dash-card:hover,
    .card:hover,
    .prof-stat-card:hover,
    .store-item:hover {
        transform: none !important;
    }

    .daily-icon,
    canvas {
        animation: none !important;
        opacity: 1 !important;
    }
}