/* Notification bell shake animation */
@keyframes notification-shake {
    0%, 10% {
        transform: rotate(0deg);
    }
    1%, 3%, 5%, 7%, 9% {
        transform: rotate(-10deg);
    }
    2%, 4%, 6%, 8% {
        transform: rotate(10deg);
    }
    10%, 100% {
        transform: rotate(0deg);
    }
}

.notification-bell-shake {
    animation: notification-shake 6s ease-in-out infinite;
    transform-origin: center top;
}

/* Alpine.js transition classes */
.transition {
    transition-property: all;
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

.duration-150 {
    transition-duration: 150ms;
}

.duration-200 {
    transition-duration: 200ms;
}

.duration-300 {
    transition-duration: 300ms;
}

.ease-in {
    transition-timing-function: cubic-bezier(0.4, 0, 1, 1);
}

.ease-out {
    transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
}

.opacity-0 {
    opacity: 0;
}

.opacity-100 {
    opacity: 1;
}

.translate-x-0 {
    transform: translateX(0);
}

.translate-x-full {
    transform: translateX(100%);
}

/* Card shadow */
.card-shadow {
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.1);
}

/* overflow-x also clips vertically, so the padding keeps the unread dots (half above each tab) visible */
.notification-tabs {
    flex-wrap: nowrap;
    min-width: 0;
    margin-top: -0.5rem;
    margin-right: 0.75rem;
    padding-top: 0.5rem;
    padding-right: 0.5rem;
    overflow-x: auto;
    scrollbar-width: none;
}

.notification-tabs::-webkit-scrollbar {
    display: none;
}

.notification-tabs .nav-item {
    flex-shrink: 0;
}

.notification-tabs .nav-item:last-child .nav-link {
    margin-right: 0 !important;
}

.notification-item:hover {
    background-color: #f8f9fa !important;
}

/* Loading Skeleton */
.skeleton {
    background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
    background-size: 200% 100%;
    animation: loading 1.5s ease-in-out infinite;
    border-radius: 4px;
}

.skeleton-circle {
    border-radius: 50%;
}

.skeleton-text {
    height: 16px;
    margin-bottom: 8px;
}

@keyframes loading {
    0% {
        background-position: 200% 0;
    }
    100% {
        background-position: -200% 0;
    }
}

/* Custom scrollbar */
.notification-list::-webkit-scrollbar {
    width: 4px;
}

.notification-list::-webkit-scrollbar-track {
    background: transparent;
}

.notification-list::-webkit-scrollbar-thumb {
    background: #e4e6ef;
    border-radius: 2px;
}

.notification-list::-webkit-scrollbar-thumb:hover {
    background: #d1d3e0;
}

/* Line Tabs styles */
.nav-line-tabs .nav-link {
    color: #a1a5b7;
    border: 0;
    border-bottom: 2px solid transparent;
    transition: all 0.2s ease;
    font-weight: 500;
    padding: 0.75rem 0;
    cursor: pointer;
}

.nav-line-tabs .nav-link:hover {
    color: #5e6278;
    border-bottom-color: #e4e6ef;
}

.nav-line-tabs .nav-link.active {
    color: #181c32;
    border-bottom-color: #009ef7;
}

.nav-line-tabs-2x .nav-link {
    border-bottom-width: 3px;
}

/* Make sure the notification list fills available space */
.notification-list {
    flex: 1;
    overflow-y: auto;
    min-height: 0;
    /* 允许flex子项收缩 */
}
