/* VeSkeleton — shimmer-style placeholder used while data is loading.
   Consumed by Shared/VeSkeleton.razor.

   Theme uses neutral greys that work over the existing light cards/tables. */

.ve-skeleton {
    display: block;
    position: relative;
    overflow: hidden;
    background-color: #e9ecef;
    border-radius: 4px;
    width: 100%;
    height: 14px;
}

.ve-skeleton::after {
    content: "";
    position: absolute;
    inset: 0;
    transform: translateX(-100%);
    background-image: linear-gradient(
        90deg,
        rgba(255, 255, 255, 0) 0%,
        rgba(255, 255, 255, 0.6) 50%,
        rgba(255, 255, 255, 0) 100%
    );
    animation: ve-skeleton-shimmer 1.4s linear infinite;
}

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

.ve-skeleton-title {
    height: 20px;
    width: 40%;
    margin-bottom: 12px;
}

.ve-skeleton-card {
    padding: 12px;
}

.ve-skeleton-row > td {
    padding: 6px 8px;
}

.ve-skeleton-row > td > .ve-skeleton {
    margin: 0;
}

@keyframes ve-skeleton-shimmer {
    100% {
        transform: translateX(100%);
    }
}

@media (prefers-reduced-motion: reduce) {
    .ve-skeleton::after {
        animation: none;
    }
}
