diff --git a/plugin/contents/ui/dancer.html b/plugin/contents/ui/dancer.html
index 9f66db5..7345ffb 100644
--- a/plugin/contents/ui/dancer.html
+++ b/plugin/contents/ui/dancer.html
@@ -243,7 +243,7 @@ html, body {
position: absolute;
left: 2%;
top: 4%;
- max-width: 38%;
+ width: 38%; /* explicit width needed for abs-pos children */
height: 150px; /* 5 slots × 30px */
overflow: hidden;
pointer-events: none;
@@ -252,6 +252,7 @@ html, body {
}
.lyric-ctx {
position: absolute;
+ left: 0;
width: 100%;
height: 30px;
line-height: 30px;
@@ -261,10 +262,10 @@ html, body {
overflow: hidden;
text-overflow: ellipsis;
transition:
- top 0.5s cubic-bezier(0.4, 0, 0.2, 1),
- opacity 0.45s ease,
- font-size 0.35s ease,
- color 0.35s ease,
+ top 0.5s cubic-bezier(0.4, 0, 0.2, 1),
+ opacity 0.45s ease,
+ font-size 0.35s ease,
+ color 0.35s ease,
text-shadow 0.35s ease;
}
@@ -1256,19 +1257,14 @@ function updateLyricContext(context) {
lyricDisplay.style.opacity = '1';
return;
}
- const wasNextLine = ring[3]?.textContent === active.text;
currentActive = active.text;
if (lyricDisplay.style.opacity !== '1') {
initSlots(context);
- lyricDisplay.style.opacity = '1';
- } else if (wasNextLine) {
- scrollUp(context);
} else {
- // jumped position: crossfade to new context
- lyricDisplay.style.opacity = '0';
- setTimeout(() => { initSlots(context); lyricDisplay.style.opacity = '1'; }, 400);
+ scrollUp(context);
}
+ lyricDisplay.style.opacity = '1';
}
function fetchCurrent() {