diff --git a/web/src/components/Queue.vue b/web/src/components/Queue.vue index f0ed3a0..9d5a4b2 100644 --- a/web/src/components/Queue.vue +++ b/web/src/components/Queue.vue @@ -33,12 +33,13 @@ @@ -103,7 +170,7 @@ onMounted(() => { .lyrics-overlay { position: absolute; inset: 0; - background: rgba(0, 0, 0, 0.7); + background: rgba(0, 0, 0, 0.75); backdrop-filter: blur(60px); -webkit-backdrop-filter: blur(60px); } @@ -116,6 +183,7 @@ onMounted(() => { max-width: 1000px; width: 100%; padding: 40px; + height: 80vh; } .lyrics-left { @@ -123,6 +191,7 @@ onMounted(() => { flex-direction: column; align-items: center; gap: 24px; + flex-shrink: 0; } .song-meta { @@ -143,31 +212,68 @@ onMounted(() => { .lyrics-right { flex: 1; - max-height: 400px; - overflow-y: auto; + overflow: hidden; + position: relative; + mask-image: linear-gradient( + transparent 0%, + black 15%, + black 85%, + transparent 100% + ); + -webkit-mask-image: linear-gradient( + transparent 0%, + black 15%, + black 85%, + transparent 100% + ); } .lyrics-scroll { - display: flex; - flex-direction: column; - gap: 16px; - padding: 40px 0; + height: 100%; + overflow-y: auto; + scrollbar-width: none; + &::-webkit-scrollbar { display: none; } +} + +.lyrics-spacer { + height: 40%; } .lyrics-line { - font-size: 18px; - color: rgba(255, 255, 255, 0.35); - transition: all 0.3s ease; + padding: 8px 0; cursor: pointer; + transition: all 0.4s cubic-bezier(0.25, 0.1, 0.25, 1); - &.active { - font-size: 22px; - font-weight: 600; - color: white; + .lyrics-text { + font-size: 18px; + line-height: 1.5; + color: rgba(255, 255, 255, 0.3); + transition: all 0.4s cubic-bezier(0.25, 0.1, 0.25, 1); } - &:hover { - color: rgba(255, 255, 255, 0.6); + .lyrics-translation { + font-size: 14px; + line-height: 1.4; + color: rgba(255, 255, 255, 0.15); + margin-top: 2px; + transition: all 0.4s cubic-bezier(0.25, 0.1, 0.25, 1); + } + + &.active { + .lyrics-text { + font-size: 22px; + font-weight: 600; + color: white; + } + .lyrics-translation { + color: rgba(255, 255, 255, 0.5); + } + } + + &:hover:not(.active) { + .lyrics-text { + color: rgba(255, 255, 255, 0.5); + } } }