/* =============================================================================
 * Skeleton Screens — Shimmer Loading States
 * 
 * Usage: Add class="skeleton" to any element, or use the predefined
 * skeleton components (.skeleton-card, .skeleton-text, .skeleton-avatar)
 * 
 * Auto-removed when content loads via JS: el.classList.remove('skeleton')
 * ============================================================================= */

/* Base shimmer animation */
@keyframes skeleton-shimmer {
    0% { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

/* Core skeleton class */
.skeleton {
    position: relative;
    overflow: hidden;
    background: linear-gradient(
        90deg,
        var(--skeleton-base, rgba(255,255,255,0.05)) 25%,
        var(--skeleton-shine, rgba(255,255,255,0.12)) 50%,
        var(--skeleton-base, rgba(255,255,255,0.05)) 75%
    );
    background-size: 200% 100%;
    animation: skeleton-shimmer 1.5s ease-in-out infinite;
    border-radius: 8px;
    color: transparent !important;
    pointer-events: none;
    user-select: none;
}

.skeleton * {
    visibility: hidden;
}

/* Light theme override */
[data-theme="light"] .skeleton,
.light .skeleton {
    --skeleton-base: rgba(0,0,0,0.06);
    --skeleton-shine: rgba(0,0,0,0.12);
}

/* ─── Skeleton Components ─────────────────────────────────────────────── */

/* Text line placeholder */
.skeleton-text {
    height: 1em;
    margin-bottom: 0.75rem;
    border-radius: 4px;
}

.skeleton-text.short { width: 40%; }
.skeleton-text.medium { width: 65%; }
.skeleton-text.long { width: 90%; }
.skeleton-text.full { width: 100%; }

/* Title placeholder */
.skeleton-title {
    height: 1.5em;
    width: 60%;
    margin-bottom: 1rem;
    border-radius: 6px;
}

/* Image/avatar placeholder */
.skeleton-avatar {
    width: 48px;
    height: 48px;
    border-radius: 50%;
}

.skeleton-image {
    width: 100%;
    aspect-ratio: 1;
    border-radius: 12px;
}

/* Button placeholder */
.skeleton-button {
    height: 2.5rem;
    width: 120px;
    border-radius: 8px;
}

/* ─── Product Card Skeleton ──────────────────────────────────────────── */

.skeleton-product-card {
    background: var(--card-bg, rgba(255,255,255,0.03));
    border: 1px solid var(--border, rgba(255,255,255,0.08));
    border-radius: 16px;
    padding: 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.skeleton-product-card .skeleton-image {
    height: 180px;
    aspect-ratio: auto;
}

.skeleton-product-card .skeleton-badge {
    height: 1.5rem;
    width: 60px;
    border-radius: 999px;
}

.skeleton-product-card .skeleton-price {
    height: 1.75rem;
    width: 80px;
    border-radius: 6px;
}

.skeleton-product-card .skeleton-actions {
    display: flex;
    gap: 0.5rem;
    margin-top: 0.25rem;
}

.skeleton-product-card .skeleton-actions .skeleton-button {
    flex: 1;
    height: 2.25rem;
}

/* ─── Status Card Skeleton ───────────────────────────────────────────── */

.skeleton-status-card {
    background: var(--card-bg, rgba(255,255,255,0.03));
    border: 1px solid var(--border, rgba(255,255,255,0.08));
    border-radius: 16px;
    padding: 1.5rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.skeleton-status-card .skeleton-header {
    display: flex;
    align-items: center;
    gap: 1rem;
}

.skeleton-status-card .skeleton-icon {
    width: 40px;
    height: 40px;
    border-radius: 12px;
    flex-shrink: 0;
}

.skeleton-status-card .skeleton-header-text {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

/* ─── Review Skeleton ────────────────────────────────────────────────── */

.skeleton-review {
    background: var(--card-bg, rgba(255,255,255,0.03));
    border: 1px solid var(--border, rgba(255,255,255,0.08));
    border-radius: 16px;
    padding: 1.5rem;
    display: flex;
    gap: 1rem;
}

.skeleton-review .skeleton-review-content {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.skeleton-review .skeleton-stars {
    height: 1rem;
    width: 100px;
    border-radius: 4px;
}

/* ─── Category Sidebar Skeleton ──────────────────────────────────────── */

.skeleton-category {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 0.5rem 0;
}

.skeleton-category-item {
    height: 2.25rem;
    border-radius: 8px;
}

/* ─── Skeleton Grid (for product catalog) ────────────────────────────── */

.skeleton-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 1.5rem;
    padding: 1rem 0;
}

@media (max-width: 768px) {
    .skeleton-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 1rem;
    }
}

@media (max-width: 480px) {
    .skeleton-grid {
        grid-template-columns: 1fr;
    }
}

/* ─── Fade out when content loads ────────────────────────────────────── */

.skeleton-container {
    transition: opacity 0.3s ease-out;
}

.skeleton-container.loaded {
    opacity: 0;
    pointer-events: none;
    position: absolute;
}
