/* Shared preview feedback; motion belongs to components/loading_indicator.css. */
.file-preview:has(> img[data-file-preview-trigger].is-loading)::before {
  content: "";
  position: absolute;
  inset: 0;
  margin: auto;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--file-preview-bg);
  pointer-events: none;
  /* Privacy blur creates a stacking context on the image. Keep status above it. */
  z-index: 1;
}
.file-preview:has(> img[data-file-preview-trigger].is-loading)::after {
  position: absolute;
  inset: 0;
  margin: auto;
  width: 24px;
  height: 24px;
  color: var(--color-text);
  pointer-events: none;
  z-index: 2;
}
.media-viewer-feedback {
  position: absolute;
  inset: 70px 24px 24px;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
  z-index: 1;
}
.media-viewer-feedback[hidden],
.media-viewer-feedback [hidden] { display: none; }
/* Crop editors reserve their own media area instead of overlaying a viewer. */
.media-viewer-feedback--inline {
  position: static;
  min-height: 220px;
}
/* Existing aspect-ratio frames can host feedback without another wrapper. */
[data-media-feedback-host] { position: relative; }
[data-media-feedback-host] > img[hidden] { display: none; }
.media-viewer-feedback--contained { inset: 0; }
.media-viewer-feedback__panel {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  max-width: 100%;
  padding: 16px;
  border-radius: 12px;
  color: var(--color-text);
  background: var(--file-preview-bg);
  pointer-events: auto;
  text-align: center;
}
.media-viewer-feedback__loading { display: inline-flex; align-items: center; gap: 8px; }
.media-viewer-feedback__panel p { margin: 0; }
