diff --git a/apps/web/src/widgets/PlayerBar.module.css b/apps/web/src/widgets/PlayerBar.module.css
index 62a15bb..15d183a 100644
--- a/apps/web/src/widgets/PlayerBar.module.css
+++ b/apps/web/src/widgets/PlayerBar.module.css
@@ -259,7 +259,28 @@ a.source:hover {
}
.play[aria-busy='true'] {
- opacity: 0.7;
+ opacity: 0.85;
+}
+
+.playSpinner {
+ width: 22px;
+ height: 22px;
+ border: 3px solid currentColor;
+ border-right-color: transparent;
+ border-radius: 50%;
+ animation: playSpin 0.7s linear infinite;
+}
+
+@keyframes playSpin {
+ to {
+ transform: rotate(360deg);
+ }
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .playSpinner {
+ animation-duration: 2s;
+ }
}
.progress {
diff --git a/apps/web/src/widgets/PlayerBar.tsx b/apps/web/src/widgets/PlayerBar.tsx
index 35f31ae..595e83f 100644
--- a/apps/web/src/widgets/PlayerBar.tsx
+++ b/apps/web/src/widgets/PlayerBar.tsx
@@ -143,7 +143,7 @@ export function PlayerBar({ variant = 'bar' }: { variant?: 'bar' | 'island' }) {
aria-busy={st.loading || undefined}
disabled={locked} onClick={() => player.toggle()}
>
-
+ {st.loading ? : }