.feedback-dot-loader, .feedback-empty, .feedback-error {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}
.feedback-dot-loader { gap: var(--spacing-md); color: var(--color-card); }
.feedback-dots { display: flex; align-items: center; gap: var(--spacing-dotGap); animation: feedback-pulse var(--motion-skeletonPulse) ease-in-out infinite alternate; }
.feedback-dots i { display: block; width: 9px; height: 9px; border-radius: 50%; background: currentColor; }
.feedback-dots i:nth-child(3) { width: 11px; height: 11px; }
.feedback-dots i:first-child, .feedback-dots i:last-child { opacity: .35; }
.feedback-dots i:nth-child(2), .feedback-dots i:nth-child(4) { opacity: .6; }
.feedback-skeleton { display: flex; flex-direction: column; gap: var(--spacing-md); width: 100%; min-height: 100dvh; background: var(--color-screenBackground); animation: feedback-pulse var(--motion-skeletonPulse) ease-in-out infinite alternate; }
.feedback-skeleton-hero { height: 220px; background: var(--color-border); }
.feedback-skeleton-rows { display: flex; flex-direction: column; gap: var(--spacing-skeletonRowGap); padding-inline: var(--spacing-screen); }
.feedback-skeleton-row { display: flex; align-items: center; gap: var(--spacing-skeletonContentGap); }
.feedback-skeleton-avatar { flex: none; width: 34px; height: 34px; border-radius: 50%; background: var(--color-border); }
.feedback-skeleton-bars { display: flex; flex-direction: column; gap: var(--spacing-skeletonBarsGap); }
.feedback-skeleton-bar-long, .feedback-skeleton-bar-short { border-radius: var(--radii-skeletonBar); background: var(--color-border); }
.feedback-skeleton-bar-long { width: 160px; height: 12px; }
.feedback-skeleton-bar-short { width: 96px; height: 10px; }
.feedback-skeleton-pill { width: 44px; height: 22px; margin-inline-start: auto; border-radius: var(--radii-chip); background: var(--color-border); }
@keyframes feedback-pulse { to { opacity: .55; } }
@keyframes feedback-settle { from { opacity: 0; } to { opacity: 1; } }
.feedback-empty { gap: var(--spacing-sm); }
.feedback-empty-art { width: 120px; height: auto; }
.feedback-empty-art-large { width: 180px; }
.feedback-empty h3, .feedback-error h3, .feedback-empty p, .feedback-error p { margin: 0; }
.feedback-empty h3, .feedback-error h3 { color: var(--color-ink); }
.feedback-empty p, .feedback-error p { color: var(--color-inkSecondary); }
.feedback-empty p { padding-inline: var(--spacing-md); }
.feedback-error { gap: var(--spacing-errorGap); background: var(--color-screenBackground); }
.feedback-error h3 { font-size: var(--font-size-errorHeadline); }
.feedback-error h3, .feedback-error p { padding-inline: var(--spacing-errorTextInset); }
.feedback-retry { border: 0; border-radius: var(--radii-sheet); padding: var(--spacing-sm) var(--spacing-md); margin-top: var(--spacing-errorRetryTop); min-height: 44px; background: var(--color-ink); color: var(--color-white); cursor: pointer; }
.feedback-inline-error { display: flex; align-items: center; gap: var(--spacing-xxs); margin: 0; color: var(--color-brick); }
.feedback-inline-error svg { width: var(--spacing-sm); height: var(--spacing-sm); fill: currentColor; }
.feedback-inline-mark { stroke: var(--color-white); stroke-linecap: round; stroke-width: var(--stroke-selection); }
.feedback-inline-dot { fill: var(--color-white); }
.feedback-undo { box-sizing: border-box; display: flex; align-items: center; gap: var(--spacing-xxs); width: 100%; border: 0; border-radius: var(--radii-card); padding: var(--spacing-dockPillVertical) var(--spacing-sm); background: var(--color-ink); color: var(--color-white); text-align: left; cursor: pointer; }
.feedback-undo strong { margin-inline-start: auto; font-weight: inherit; }
.media-file-tile { display: flex; flex-direction: column; align-items: flex-start; gap: var(--spacing-xxs); min-width: 88px; max-width: 100%; }
.media-file-preview { display: grid; place-items: center; width: 72px; height: 72px; overflow: hidden; border: var(--stroke-hairline) solid var(--color-border); border-radius: var(--radii-chip); background: var(--color-surfaceSunken); }
.media-file-preview img { display: block; width: 100%; height: 100%; object-fit: cover; }
.media-file-preview .media-file-glyph { width: var(--spacing-lg); height: var(--spacing-lg); object-fit: contain; }
.media-file-uploading .media-file-glyph { animation: feedback-pulse var(--motion-skeletonPulse) ease-in-out infinite alternate; }
.media-file-name, .media-file-size { display: block; max-width: 100%; overflow-wrap: anywhere; }
.media-file-name { color: var(--color-ink); }
.media-file-size { color: var(--color-inkMuted); }
.media-row-open { display: inline-block; color: var(--color-ink); text-decoration: none; }
.media-preview { box-sizing: border-box; width: 100vw; max-width: none; height: 100dvh; max-height: none; margin: 0; padding: 0; border: 0; overflow: hidden; background: var(--color-ink); }
.media-preview img { display: block; width: 100%; height: 100%; object-fit: contain; touch-action: none; user-select: none; }
.media-preview-close { position: absolute; z-index: 1; top: var(--spacing-sm); right: var(--spacing-sm); min-width: 44px; min-height: 44px; border: 0; border-radius: 50%; background: var(--color-card); color: var(--color-ink); }
.media-row[data-media-kind="audio"] { display: flex; align-items: center; gap: var(--spacing-xs); }
.media-voice-play, .media-voice-retry { flex: none; min-width: 44px; min-height: 44px; border: 0; border-radius: 50%; background: var(--color-ink); color: var(--color-white); }
.media-voice-play svg, .media-voice-retry svg { width: var(--spacing-sm); height: var(--spacing-sm); fill: currentColor; }
.media-voice-play[aria-pressed="true"] .media-voice-glyph-play, .media-voice-play[aria-pressed="false"] .media-voice-glyph-pause { display: none; }
.media-row[aria-busy="true"] .media-voice-play { opacity: .55; }
.media-waveform { position: relative; flex: 1; min-width: 0; height: 44px; }
.media-waveform svg { width: 100%; height: 100%; fill: var(--color-inkMuted); }
.media-waveform:focus-within { outline: var(--stroke-selection) solid var(--color-ink); }
.media-voice-position { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
.media-voice-duration { flex: none; color: var(--color-inkMuted); }
@media (prefers-reduced-motion: reduce) {
  .feedback-dots, .feedback-skeleton, .media-file-uploading .media-file-glyph { animation: feedback-settle var(--motion-reducedDuration) ease-out 1; }
}

.native-update { margin: 0 auto; max-width: 40rem; padding: var(--spacing-sm); background: var(--color-blueWash); }

/* Recovery stays visible in the sheet even with a native menu. Move keeps its picker. */
[data-controller~="bridge--menu"][data-menu-shown] [data-menu-id]:not([data-menu-focus]):not([data-run]) { display: none; }
