.ratlab-metal-loading {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  width: 100%;
  min-width: 0;
  min-height: 180px;
  padding: 18px 0;
  pointer-events: none;
}
.ratlab-metal-loading i {
  display: block;
  width: 45%;
  height: 12px;
  margin-bottom: 14px;
  border-radius: 4px;
  background: var(--surface);
}
.ratlab-metal-loading i:nth-child(2) { width: 100%; height: 100px; }
.ratlab-metal-loading i:last-child { width: 65%; margin-bottom: 0; }
.ratlab-metal-loading.is-compact { min-height: 48px; padding: 8px 0; }
.ratlab-metal-loading.is-compact i { height: 8px; margin-bottom: 8px; }
.ratlab-metal-loading.is-compact i:nth-child(2) { width: 85%; height: 8px; }
.ratlab-metal-loading::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(110deg, transparent 20%, var(--surface) 45%, var(--surface) 50%, transparent 75%);
  transform: translateX(-100%);
  animation: ratlab-metal-sweep 1.6s ease-in-out infinite;
}
@keyframes ratlab-metal-sweep { to { transform: translateX(100%); } }
.app-loading-screen .ratlab-metal-loading {
  width: 36px;
  height: 36px;
  min-height: 36px;
  padding: 0;
  margin-inline: auto;
  box-sizing: border-box;
  border: 3px solid var(--border, rgba(128, 128, 128, .25));
  border-top-color: var(--primary);
  border-radius: 50%;
  animation: ratlab-boot-spin .8s linear infinite;
}
.app-loading-screen .ratlab-metal-loading i,
.app-loading-screen .ratlab-metal-loading::after { display: none; }
@keyframes ratlab-boot-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
  .app-loading-screen .ratlab-metal-loading { animation: none; }
  .ratlab-metal-loading::after { animation: none; transform: none; opacity: .4; }
}

.exercise-preview-media { position: relative; }
.exercise-preview-media > .ratlab-metal-loading { position: absolute; inset: 0; height: 100%; min-height: 0; padding: 0; background: var(--surface); }
.exercise-preview-media > .ratlab-metal-loading i { display: none; }
.exercise-preview-media:has(> .ratlab-metal-loading) > img { opacity: 0; }
