Files
web-page/src/components/Loading.css

68 lines
1.7 KiB
CSS

.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;
}
}