/* ========================================================================== Skeleton Loaders ========================================================================== */ @keyframes ap-skeleton-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } .ap-skeleton { background: linear-gradient(90deg, var(--color-offset) 25%, var(--color-background) 50%, var(--color-offset) 75%); background-size: 200% 100%; animation: ap-skeleton-shimmer 1.5s ease-in-out infinite; border-radius: var(--border-radius-small); } .ap-card--skeleton { pointer-events: none; } .ap-card--skeleton .ap-card__author { display: flex; align-items: center; gap: var(--space-s); } .ap-skeleton--avatar { width: 2.5rem; height: 2.5rem; border-radius: 50%; flex-shrink: 0; } .ap-skeleton-lines { flex: 1; display: flex; flex-direction: column; gap: 0.4rem; } .ap-skeleton--name { height: 0.85rem; width: 40%; } .ap-skeleton--handle { height: 0.7rem; width: 25%; } .ap-skeleton-body { display: flex; flex-direction: column; gap: 0.5rem; margin-top: var(--space-s); } .ap-skeleton--line { height: 0.75rem; width: 100%; } .ap-skeleton--short { width: 60%; } .ap-skeleton-group { display: flex; flex-direction: column; gap: var(--space-m); }