summaryrefslogtreecommitdiff
path: root/web/css
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-05-02 22:08:46 +0300
committerPaul Buetow <paul@buetow.org>2026-05-02 22:10:28 +0300
commite391bea837f9740aa8b303dedb6f87c09abd4201 (patch)
tree737ddbf8c58cd2b7acd0fb160494d9184e2c1983 /web/css
parente898357da954acb561a0a88b4443da52f774ce36 (diff)
fix detached playback and scan progress
Diffstat (limited to 'web/css')
-rw-r--r--web/css/layout.css34
-rw-r--r--web/css/player.css87
2 files changed, 109 insertions, 12 deletions
diff --git a/web/css/layout.css b/web/css/layout.css
index e52a083..73fd9f5 100644
--- a/web/css/layout.css
+++ b/web/css/layout.css
@@ -32,6 +32,40 @@ body {
}
.site-header .spacer { flex: 1 1 auto; }
+.scan-indicator {
+ display: inline-flex;
+ align-items: center;
+ gap: 0.4rem;
+ max-width: min(22rem, 45vw);
+ padding: 0.25rem 0.55rem;
+ border: 1px solid var(--border);
+ border-radius: var(--radius-sm);
+ background: var(--bg-elevated);
+ color: var(--text-secondary);
+ font-size: 0.78rem;
+ white-space: nowrap;
+}
+.scan-indicator.hidden {
+ display: none;
+}
+.scan-indicator span:last-child {
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+.scan-dot {
+ width: 0.5rem;
+ height: 0.5rem;
+ flex: 0 0 auto;
+ border-radius: 50%;
+ background: var(--accent);
+ box-shadow: 0 0 0 0 var(--accent-soft);
+ animation: scanPulse 1.4s ease-out infinite;
+}
+@keyframes scanPulse {
+ 0% { box-shadow: 0 0 0 0 var(--accent-soft); }
+ 100% { box-shadow: 0 0 0 0.45rem transparent; }
+}
+
/* Sidebar */
.sidebar {
position: fixed;
diff --git a/web/css/player.css b/web/css/player.css
index 5628dfd..f3d93ef 100644
--- a/web/css/player.css
+++ b/web/css/player.css
@@ -7,7 +7,7 @@
border-top: 1px solid var(--border);
z-index: 60;
display: none; /* hidden by default until something plays */
- transition: inset var(--transition-base);
+ transition: inset var(--transition-base), width var(--transition-base), height var(--transition-base), box-shadow var(--transition-base);
}
.player.open {
display: block;
@@ -15,8 +15,36 @@
.page.has-sidebar .player {
inset: auto 0 0 var(--sidebar-width);
}
-.page.has-sidebar .player.collapsed {
- inset: auto auto 0 0;
+
+/* Collapsed: floating bottom-left card sized to video aspect ratio */
+.player.collapsed {
+ inset: auto auto 1rem 1rem;
+ width: var(--collapsed-w, 320px);
+ height: var(--collapsed-h, 240px);
+ border-radius: 0.5rem;
+ box-shadow: 0 8px 32px rgba(0,0,0,0.4);
+ border: 1px solid var(--border);
+ overflow: hidden;
+}
+.player.open.collapsed {
+ display: flex;
+ flex-direction: column;
+}
+.player.collapsed .stage {
+ flex: 1 1 auto;
+ height: auto !important;
+ overflow: hidden;
+}
+.player.collapsed .controls {
+ flex: 0 0 auto;
+ padding: 0.35rem 0.5rem;
+ gap: 0.35rem;
+ border-top: 1px solid var(--border);
+}
+.player.collapsed .big-play .play-icon {
+ width: 2rem;
+ height: 2rem;
+ font-size: 0.8rem;
}
.player.is-fullscreen {
inset: 0;
@@ -26,6 +54,35 @@
justify-content: center;
}
+.detach-page {
+ margin: 0;
+ width: 100vw;
+ height: 100vh;
+ overflow: hidden;
+ background: var(--bg-body);
+}
+
+/* Detached popup: fill the whole popup window */
+.player.detached {
+ position: relative;
+ inset: 0;
+ width: 100%;
+ height: 100%;
+ border-radius: 0;
+ border: none;
+ box-shadow: none;
+ display: flex;
+ flex-direction: column;
+}
+.player.detached .stage {
+ flex: 1 1 auto;
+ height: auto !important;
+ overflow: hidden;
+}
+.player.detached .controls {
+ flex: 0 0 auto;
+}
+
.player .stage {
position: relative;
background: var(--player-stage-bg);
@@ -65,15 +122,6 @@
background: var(--player-stage-bg);
}
-/* Collapsed stage (controls still visible) */
-.player.collapsed .stage {
- height: 0 !important;
- overflow: hidden;
-}
-.player.collapsed .big-play {
- display: none;
-}
-
/* Overlay controls */
.player .controls {
display: flex;
@@ -156,6 +204,21 @@
accent-color: var(--accent);
}
+.detached-bar {
+ position: fixed;
+ inset: auto 0 0 0;
+ background: var(--player-bg);
+ color: var(--text-primary);
+ border-top: 1px solid var(--border);
+ z-index: 59;
+ padding: 0.5rem 0.75rem;
+ text-align: center;
+ font-size: 0.85rem;
+}
+.detached-bar.hidden {
+ display: none;
+}
+
/* Big play button */
.big-play {
position: absolute;