/* Shared styles for PaginatedList-backed admin tables */

/* Skeleton */
.pl-skeleton-row td { padding: 0.75rem 1rem; }
.pl-skel-bar {
    height: 14px;
    border-radius: 7px;
    background: linear-gradient(90deg,
        rgba(0, 0, 0, 0.06) 0%,
        rgba(0, 0, 0, 0.12) 50%,
        rgba(0, 0, 0, 0.06) 100%);
    background-size: 200% 100%;
    animation: pl-skel-shimmer 1.25s ease-in-out infinite;
    max-width: 420px;
}
@keyframes pl-skel-shimmer {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

/* Sentinel (loading-more) row */
.pl-sentinel-row td { padding: 0.5rem; border: 0 !important; background: transparent !important; }
.pl-sentinel {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 0.75rem 0;
    color: var(--bs-secondary, #6c757d);
    font-size: 0.875rem;
}
.pl-spinner {
    width: 16px; height: 16px;
    border: 2px solid currentColor;
    border-right-color: transparent;
    border-radius: 50%;
    animation: pl-spin 0.75s linear infinite;
    opacity: 0.7;
}
@keyframes pl-spin { to { transform: rotate(360deg); } }

/* End-of-list */
.pl-end-row td { padding: 0.25rem; border: 0 !important; background: transparent !important; }
.pl-end-state {
    display: flex; align-items: center; justify-content: center; gap: 0.35rem;
    padding: 0.75rem 0;
    color: var(--bs-secondary, #6c757d);
    font-size: 0.8125rem;
    opacity: 0.75;
}
.pl-end-state i { color: var(--bs-success, #198754); }

/* Empty + error states */
.pl-state-row td { padding: 0; border: 0 !important; }
.pl-empty-state, .pl-error-state {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 2.5rem 1rem;
    text-align: center;
}
.pl-empty-state i, .pl-error-state i {
    font-size: 2rem;
    opacity: 0.45;
}
.pl-error-state i { color: var(--bs-danger, #dc3545); opacity: 0.8; }
.pl-empty-title {
    font-weight: 600;
    color: var(--bs-body-color, #111);
    opacity: 0.85;
}
.pl-error-msg {
    color: var(--bs-danger, #dc3545);
    max-width: 480px;
    word-break: break-word;
}

/* Tables behave better when rows are appended incrementally */
.pl-smooth-table tbody tr {
    animation: pl-row-in 0.18s ease-out both;
}
@keyframes pl-row-in {
    from { opacity: 0; transform: translateY(4px); }
    to   { opacity: 1; transform: translateY(0); }
}
