.loading-spinner { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 20px; gap: 12px; } .loading-spinner__circle { width: 28px; height: 28px; border: 2px solid rgba(255, 255, 255, 0.08); border-radius: 50%; border-top-color: var(--accent, #f7a8a5); animation: loading-spin 0.75s linear infinite; } .loading-spinner__text { font-size: 12px; color: var(--muted, #9b9490); margin: 0; letter-spacing: 0.04em; } @keyframes loading-spin { to { transform: rotate(360deg); } } /* ── Skeleton ─────────────────────────────────────────────────────── */ .loading-skeleton { display: grid; gap: 14px; padding: 4px 0; width: 100%; } .loading-skeleton__line { height: 14px; border-radius: 7px; background: linear-gradient( 90deg, rgba(255, 255, 255, 0.04) 0%, rgba(255, 255, 255, 0.09) 40%, rgba(255, 255, 255, 0.04) 80% ); background-size: 300% 100%; animation: loading-shimmer 1.8s ease-in-out infinite; } .loading-skeleton__line:nth-child(1) { width: 65%; } .loading-skeleton__line:nth-child(2) { width: 85%; animation-delay: 0.1s; } .loading-skeleton__line:nth-child(3) { width: 50%; animation-delay: 0.2s; } .loading-skeleton__line:nth-child(4) { width: 75%; animation-delay: 0.15s; } .loading-skeleton__line:nth-child(5) { width: 60%; animation-delay: 0.25s; } @keyframes loading-shimmer { 0% { background-position: 100% 0; } 100% { background-position: -200% 0; } }