.loading-placeholder{display:inline-block;max-width:100%;border-radius:6px;background:linear-gradient(100deg,color-mix(in srgb, var(--color-muted) 8.2%, transparent) 25%,color-mix(in srgb, var(--color-muted) 16.5%, transparent) 45%,color-mix(in srgb, var(--color-muted) 8.2%, transparent) 65%);background-size:260% 100%;animation:loading-shimmer 2.2s ease-in-out infinite;vertical-align:middle}
.loading-number{width:130px;height:36px;margin:var(--space-8) 0}.record-breakdown .loading-number{width:116px;height:28px;margin:var(--space-12) 0}
.loading-caption{width:100px;height:14px}.loading-status{display:flex;align-items:center;gap:var(--space-12);min-height:22px;margin-top:var(--space-12);color:var(--muted,var(--color-muted));font-size:13px}
/* Retry uses the shared button recipe; preserve the hydration visibility hook. */
.preparing-retry[hidden]{display:none}
.loading-row{height:80px}.catalog-table .loading-row .entity-cell{display:table-cell;white-space:nowrap}.loading-avatar{width:38px;height:38px;border-radius:50%;margin-right:var(--space-16)}.loading-name{width:160px;max-width:calc(100% - 62px);height:16px}.loading-cell{width:48px;height:15px}
.loading-row:nth-child(2n) .loading-name{width:130px}.loading-row:nth-child(3n) .loading-name{width:180px}
.loading-plot-grid{width:100%;height:220px;border-bottom:1px solid color-mix(in srgb, var(--color-accent) 13.3%, transparent);background:repeating-linear-gradient(to bottom,transparent 0,transparent calc(25% - 1px),color-mix(in srgb, var(--color-accent) 7.8%, transparent) calc(25% - 1px),color-mix(in srgb, var(--color-accent) 7.8%, transparent) 25%)}
.loading-ring{width:156px;max-width:100%;aspect-ratio:1;border:22px solid color-mix(in srgb, var(--color-muted) 10.2%, transparent);border-radius:50%;margin:auto;box-sizing:border-box}.loading-legend{display:grid;gap:var(--space-16);min-width:0;align-content:center}.loading-legend .loading-placeholder{height:14px;width:85%}.loading-legend .loading-placeholder:nth-child(2n){width:65%}
.is-paused .loading-placeholder{animation-play-state:paused}
@keyframes loading-shimmer{0%{background-position:100% 0}100%{background-position:-100% 0}}
@media(prefers-reduced-motion:reduce){.loading-placeholder{animation:none}}
@media(max-width:600px){.loading-number{width:110px;height:30px}.record-breakdown .loading-number{width:90px;height:26px}.loading-plot-grid{height:180px}.loading-ring{width:140px;border-width:20px}.loading-row{height:72px}.loading-status{flex-wrap:wrap}}
