/* Shared loading placeholders. Only the decorative shapes animate. */
.vis-skeleton-loader {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 18px;
  width: 100%;
  min-width: 0;
  min-height: 200px;
  padding: 24px 18px;
  color: var(--vis-muted, #53627d);
  font: 500 13px/1.6 var(--vis-font, system-ui);
}
.vis-skeleton-loader__content { display: grid; gap: 14px; width: 100%; max-width: 720px; }
.vis-skeleton-loader__line,
.vis-skeleton-loader__card {
  display: block;
  background: linear-gradient(90deg, var(--vis-surface-soft, #edf2fa) 20%, var(--vis-border, #dfe7f3) 50%, var(--vis-surface-soft, #edf2fa) 80%);
  background-size: 240% 100%;
  border-radius: 8px;
  animation: vis-skeleton-shimmer 1.8s ease-in-out infinite;
}
.vis-skeleton-loader__line { height: 12px; width: 100%; }
.vis-skeleton-loader__title { width: 44%; height: 22px; }
.vis-skeleton-loader__short { width: 72%; }
.vis-skeleton-loader__cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.vis-skeleton-loader__card { height: 76px; border-radius: 14px; }
.vis-skeleton-loader__label { display: block; }
.vis-skeleton-loader--compact { max-width: 340px; min-height: 0; gap: 10px; padding: 8px 0; font-size: 12px; }
.vis-skeleton-loader--compact .vis-skeleton-loader__content { gap: 8px; }
.vis-skeleton-loader--compact .vis-skeleton-loader__title { width: 56%; height: 12px; }
.vis-skeleton-loader--compact .vis-skeleton-loader__line { height: 10px; }
.boot-screen > .vis-skeleton-loader { width: min(82vw, 540px); min-height: 0; padding: 12px 0; }
@keyframes vis-skeleton-shimmer { from { background-position: 140% 0; } to { background-position: -100% 0; } }
@media (max-width: 540px) {
  .vis-skeleton-loader { padding-inline: 8px; }
  .vis-skeleton-loader__cards { gap: 8px; }
  .vis-skeleton-loader__card { height: 64px; }
}
@media (prefers-reduced-motion: reduce) {
  .vis-skeleton-loader__line, .vis-skeleton-loader__card { animation: none; }
}
