/**
 * Salon CRM — premium animasyonlar
 * prefers-reduced-motion: reduce ile devre disi
 */

@media (prefers-reduced-motion: reduce) {
    .anim-reveal,
    .anim-reveal--fade {
        opacity: 1 !important;
        transform: none !important;
        transition: none !important;
    }

    .admin-empty-state .admin-empty-icon,
    .public-book-success-icon,
    .admin-mobile-tabbar {
        animation: none !important;
    }
}

@media (prefers-reduced-motion: no-preference) {
    :root {
        --anim-ease-out: cubic-bezier(0.22, 1, 0.36, 1);
        --anim-ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
        --anim-duration: 0.36s;
    }

    /* ---- Scroll / load reveal ---- */
    .anim-reveal {
        opacity: 0;
        transform: translateY(20px);
        transition:
            opacity var(--anim-duration) var(--anim-ease-out),
            transform var(--anim-duration) var(--anim-ease-out);
        transition-delay: var(--anim-delay, 0ms);
        will-change: opacity, transform;
    }

    .anim-reveal--fade {
        transform: none;
    }

    .anim-reveal--scale {
        transform: translateY(16px) scale(0.975);
    }

    .anim-reveal.is-visible {
        opacity: 1;
        transform: none;
    }

    /* ---- Kartlar ---- */
    .card-glass {
        transition:
            transform 0.28s var(--anim-ease-out),
            box-shadow 0.28s var(--anim-ease-out),
            border-color 0.18s ease;
    }

    .anim-reveal.is-visible.card-glass:hover,
    .card-glass:hover {
        transform: translateY(-4px);
        box-shadow: 0 18px 44px rgba(15, 18, 24, 0.11);
    }

    .stat-card {
        transition:
            transform 0.38s var(--anim-ease-out),
            box-shadow 0.38s var(--anim-ease-out);
    }

    .anim-reveal.is-visible.stat-card:hover,
    .stat-card:hover {
        transform: translateY(-4px) scale(1.01);
        box-shadow: 0 14px 36px rgba(15, 18, 24, 0.12);
    }

    .stat-card span i {
        display: inline-block;
        transition: transform 0.3s var(--anim-ease-spring);
    }

    .stat-card:hover span i {
        transform: scale(1.15) rotate(-4deg);
    }

    .stat-card h3.is-counting {
        transition: opacity 0.15s ease;
    }

    /* ---- Sidebar & nav ---- */
    .sidebar-nav .nav-link {
        transition:
            background 0.22s ease,
            border-color 0.22s ease,
            color 0.22s ease,
            transform 0.22s var(--anim-ease-out),
            box-shadow 0.22s ease;
    }

    .sidebar-nav .nav-link i {
        display: inline-block;
        transition: transform 0.28s var(--anim-ease-spring);
    }

    .sidebar-nav .nav-link:hover {
        transform: translateX(3px);
    }

    .sidebar-nav .nav-link:hover i {
        transform: scale(1.14);
    }

    .sidebar-nav .nav-link.active {
        animation: animNavActive 0.45s var(--anim-ease-out) both;
    }

    @keyframes animNavActive {
        from {
            transform: translateX(-6px);
            opacity: 0.82;
        }
        to {
            transform: none;
            opacity: 1;
        }
    }

    /* ---- Butonlar ---- */
    .admin-body .btn:not(.admin-mobile-tab):not(.admin-mobile-menu-btn):not(.admin-mobile-logout-btn) {
        transition:
            transform 0.22s var(--anim-ease-out),
            box-shadow 0.28s ease,
            background 0.2s ease,
            border-color 0.2s ease,
            filter 0.2s ease;
    }

    .admin-body .btn:not(.admin-mobile-tab):not(.admin-mobile-menu-btn):not(.admin-mobile-logout-btn):hover:not(:disabled) {
        transform: translateY(-1px);
    }

    .admin-body .btn:not(.admin-mobile-tab):not(.admin-mobile-menu-btn):not(.admin-mobile-logout-btn):active:not(:disabled) {
        transform: scale(0.97);
    }

    .btn-admin-create:hover {
        transform: translateY(-2px);
        box-shadow: 0 12px 28px rgba(13, 148, 136, 0.4);
    }

    .btn-glow {
        position: relative;
        overflow: hidden;
    }

    .btn-glow::after {
        content: "";
        position: absolute;
        inset: 0;
        background: linear-gradient(
            105deg,
            transparent 38%,
            rgba(255, 255, 255, 0.22) 50%,
            transparent 62%
        );
        transform: translateX(-120%);
        transition: transform 0.55s ease;
        pointer-events: none;
    }

    .btn-glow:hover::after {
        transform: translateX(120%);
    }

    /* ---- Uyarilar ---- */
    .admin-body .alert {
        animation: animAlertIn 0.5s var(--anim-ease-out) both;
    }

    @keyframes animAlertIn {
        from {
            opacity: 0;
            transform: translateY(-12px) scale(0.98);
        }
        to {
            opacity: 1;
            transform: none;
        }
    }

    /* ---- Mobil alt cubuk ---- */
    .admin-mobile-tabbar {
        animation: animTabbarUp 0.65s var(--anim-ease-out) both;
        animation-delay: 0.12s;
    }

    @keyframes animTabbarUp {
        from {
            transform: translateY(110%);
            opacity: 0.6;
        }
        to {
            transform: none;
            opacity: 1;
        }
    }

    .admin-mobile-tab .admin-mobile-tab-icon {
        transition: transform 0.28s var(--anim-ease-spring);
    }

    .admin-mobile-tab:active .admin-mobile-tab-icon {
        transform: scale(0.88);
    }

    /* ---- Randevu kartlari ---- */
    .admin-appt-card {
        transition:
            transform 0.28s var(--anim-ease-out),
            box-shadow 0.28s ease,
            background 0.2s ease,
            border-color 0.2s ease;
    }

    .anim-reveal.is-visible.admin-appt-card:hover,
    .admin-appt-card:hover {
        transform: translateX(5px);
        box-shadow: 0 6px 20px rgba(15, 18, 24, 0.08);
    }

    /* ---- Grid kartlar ---- */
    .admin-grid-card {
        transition:
            transform 0.28s var(--anim-ease-out),
            box-shadow 0.28s ease,
            border-color 0.22s ease;
    }

    .anim-reveal.is-visible.admin-grid-card:hover,
    .admin-grid-card:hover {
        transform: translateY(-4px);
    }

    /* ---- Tablo ---- */
    .admin-body .table tbody tr {
        transition: background-color 0.18s ease;
    }

    /* ---- Bos durum ---- */
    .admin-empty-state .admin-empty-icon {
        display: inline-block;
        animation: animEmptyPulse 3s ease-in-out infinite;
    }

    @keyframes animEmptyPulse {
        0%,
        100% {
            transform: scale(1);
            opacity: 0.72;
        }
        50% {
            transform: scale(1.06);
            opacity: 1;
        }
    }

    /* ---- Sayfa basligi ---- */
    .page-top h1 {
        letter-spacing: -0.02em;
    }

    .anim-reveal.is-visible.page-top h1 {
        animation: animTitleIn 0.7s var(--anim-ease-out) both;
    }

    @keyframes animTitleIn {
        from {
            letter-spacing: 0.02em;
            opacity: 0.7;
        }
        to {
            letter-spacing: -0.02em;
            opacity: 1;
        }
    }

    /* ---- Offcanvas ---- */
    .admin-offcanvas.offcanvas {
        transition: transform 0.38s var(--anim-ease-out) !important;
    }

    .admin-offcanvas .nav-link {
        opacity: 0;
        transform: translateX(-8px);
        animation: animDrawerLink 0.4s var(--anim-ease-out) forwards;
        animation-delay: calc(var(--drawer-i, 0) * 28ms + 80ms);
    }

    .admin-offcanvas.show .nav-link,
    .admin-offcanvas.showing .nav-link {
        /* delay set via JS */
    }

    @keyframes animDrawerLink {
        to {
            opacity: 1;
            transform: none;
        }
    }

    /* ---- Yukleniyor shimmer (opsiyonel) ---- */
    .admin-anim-ready .admin-sidebar {
        animation: animSidebarIn 0.55s var(--anim-ease-out) both;
    }

    @keyframes animSidebarIn {
        from {
            opacity: 0.92;
            transform: translateX(-8px);
        }
        to {
            opacity: 1;
            transform: none;
        }
    }
}

/* Mobil / PWA: hafif mod — scroll reveal ve agir hover yok */
html.ui-mobile-lite .anim-reveal,
html.ui-pwa-standalone .anim-reveal,
body.admin-mobile-lite .anim-reveal {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
    will-change: auto !important;
}

html.ui-mobile-lite .admin-mobile-tabbar,
html.ui-pwa-standalone .admin-mobile-tabbar,
body.admin-mobile-lite .admin-mobile-tabbar {
    animation: none !important;
}

html.ui-mobile-lite .admin-body .alert,
html.ui-pwa-standalone .admin-body .alert,
body.admin-mobile-lite .admin-body .alert {
    animation: none !important;
}

html.ui-mobile-lite .admin-offcanvas .nav-link,
html.ui-pwa-standalone .admin-offcanvas .nav-link,
body.admin-mobile-lite .admin-offcanvas .nav-link {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
}

html.ui-mobile-lite .admin-empty-state .admin-empty-icon,
body.admin-mobile-lite .admin-empty-state .admin-empty-icon {
    animation: none !important;
}
