/* Lyrics FX — gaya untuk engine lirik per kata (warna putih di atas latar pemutar yang selalu gelap;
   aksen mengikuti warna sampul/tema lewat --fp-accent) */
.fx-host { position: relative; overflow: hidden; height: 100%; min-height: 160px; }
.fx-stage { position: absolute; inset: 0; overflow: hidden; -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 14%, #000 86%, transparent 100%); mask-image: linear-gradient(to bottom, transparent 0, #000 14%, #000 86%, transparent 100%); touch-action: pan-y; }
.fx-track { position: absolute; left: 0; right: 0; top: 0; padding: 0 4px; will-change: transform; }
.fx-line { padding: 7px 0; cursor: pointer; transform-origin: left center; opacity: .5; transition: opacity .45s ease, filter .45s ease, transform .55s var(--spring); }
.fx-line.near { opacity: calc(.9 - var(--ad, 3) * .22); }
.fx-line.is-active { opacity: 1; filter: none !important; }
.fx-blur .fx-line { filter: blur(min(calc(var(--ad, 0) * 1.1px), 4px)); }
.fx-inner { font-size: 1.45rem; font-weight: 800; line-height: 1.28; letter-spacing: -.01em; text-align: left; word-break: break-word; }
.fx-small .fx-inner { font-size: 1.1rem; }
.fx-word {
    --p: 0; display: inline-block; transition: transform .35s var(--spring-pop);
    color: transparent; -webkit-background-clip: text; background-clip: text;
    background-image: linear-gradient(90deg, #fff calc(var(--p) * 100%), rgba(255,255,255,.36) calc(var(--p) * 100% + 10%));
}
.fx-word.is-current { transform: translateY(-3px); }
.fx-pop .fx-line.is-active .fx-inner { animation: fxPop .5s var(--spring-pop); }
@keyframes fxPop { 0% { transform: scale(.96); } 55% { transform: scale(1.03); } 100% { transform: scale(1); } }
.fx-track.entering .fx-line { animation: fxEnter .6s var(--spring) both; animation-delay: calc(min(var(--i, 0), 8) * 45ms); }
@keyframes fxEnter { from { opacity: 0; transform: translateY(18px); } }
.fx-locked .fx-track { transition: none; }
@media (prefers-reduced-motion: reduce) { .fx-line, .fx-word { transition: none; } .fx-track.entering .fx-line, .fx-pop .fx-line.is-active .fx-inner { animation: none; } }
