/* GKPV Thánh Ca 1.2.38 – now-playing equalizer + singer hover card (eq.js). Thánh Ca pages only. */

/* ---------- equalizer bars ---------- */
.gk-eq{display:inline-flex;align-items:flex-end;justify-content:center;gap:2px;width:18px;height:16px;flex:none;pointer-events:none}
.gk-eq > span{display:block;width:3px;height:100%;background:#fff;border-radius:1px;transform-origin:50% 100%;transform:scaleY(.4);animation:gk-eq-a .82s ease-in-out infinite}
.gk-eq > span:nth-child(2){animation-name:gk-eq-b;animation-duration:.64s;animation-delay:-.2s}
.gk-eq > span:nth-child(3){animation-name:gk-eq-c;animation-duration:1.02s;animation-delay:-.45s}
.gk-eq > span:nth-child(4){animation-name:gk-eq-b;animation-duration:.74s;animation-delay:-.6s}
@keyframes gk-eq-a{0%,100%{transform:scaleY(.3)}35%{transform:scaleY(1)}70%{transform:scaleY(.55)}}
@keyframes gk-eq-b{0%,100%{transform:scaleY(.85)}40%{transform:scaleY(.25)}75%{transform:scaleY(.65)}}
@keyframes gk-eq-c{0%,100%{transform:scaleY(.5)}30%{transform:scaleY(.2)}60%{transform:scaleY(.95)}}
.is-pause .gk-eq > span{animation-play-state:paused}
@media (prefers-reduced-motion:reduce){
  .gk-eq > span{animation:none!important;transform:scaleY(.55)}
  .gk-eq > span:nth-child(2){transform:scaleY(.9)}
  .gk-eq > span:nth-child(3){transform:scaleY(.35)}
  .gk-eq > span:nth-child(4){transform:scaleY(.7)}
}

/* ---------- overlay on a track thumbnail ---------- */
.gk-nowpos{position:relative!important}
.gk-nowov{position:absolute;inset:0;z-index:3;display:none;align-items:center;justify-content:center;background:rgba(0,0,0,.52);border-radius:inherit;color:#fff;pointer-events:none}
.gk-nowov--line{inset:auto;border-radius:4px}
.gk-now .gk-nowov,#gkm .gk-now .gk-nowov{display:flex}
.gk-now .gk-nowov--btn{pointer-events:auto;cursor:pointer}
.gk-nowov .gk-nowic,#gkm .gk-nowov .gk-nowic{display:none}
/* hover the playing item: pause glyph; hover a paused one: play glyph; otherwise the bars */
@media (hover:hover){
  .gk-now.is-play:hover .gk-nowov--btn .gk-eq,.gk-now.is-pause:hover .gk-nowov--btn .gk-eq{display:none}
  .gk-now.is-play:hover .gk-nowov--btn .gk-nowic--pause,.gk-now.is-pause:hover .gk-nowov--btn .gk-nowic--play,
  #gkm .gk-now.is-play:hover .gk-nowov--btn .gk-nowic--pause,#gkm .gk-now.is-pause:hover .gk-nowov--btn .gk-nowic--play{display:block}
}
/* covers that keep their own hover tools (shell cards) – our overlay sits under the round play icon area only while playing */
#gkm .gks-song.gk-now .gks-th > i{display:none!important}
#gkm .gks-th .gk-nowov{border-radius:4px}
#gkm .gks-cw .gk-nowov{border-radius:inherit}
#gkm .gks-card.gk-now .gks-co{opacity:0!important}
#gkm .gks-cw .gk-nowov .gk-eq{width:26px;height:24px}
#gkm .gks-cw .gk-nowov .gk-eq > span{width:4px}
.gk-card__cover .gk-nowov .gk-eq{width:26px;height:24px}
.gk-card__cover .gk-nowov .gk-eq > span{width:4px}
.gk-card.gk-now .gk-play{opacity:0}

/* Sonaar album tracklist: bars on the thumbnail; the row keeps Sonaar's own playing look (1.2.40: pause glyph back, always visible) */
.gk-tl-thumb .gk-nowov{border-radius:4px}
.gk-tl-thumb .gk-nowov .gk-eq{width:16px;height:14px}

/* bottom (Sonaar sticky) player artwork */
#sonaar-player .album-art .gk-nowov{border-radius:inherit}
#sonaar-player .album-art .gk-nowov .gk-eq{width:22px;height:20px}
#sonaar-player .album-art .gk-nowov .gk-eq > span{width:4px}

/* ---------- round button on the big album cover (Zing) ---------- */
.gk-cvhost{overflow:hidden}
.gk-cvhost::after{content:"";position:absolute;inset:0;background:rgba(0,0,0,.35);opacity:0;transition:opacity .2s;pointer-events:none;border-radius:inherit;z-index:2}
.gk-cvbtn{position:absolute;left:50%;top:50%;z-index:4;width:52px;height:52px;margin:-26px 0 0 -26px;padding:0!important;border-radius:50%!important;border:1px solid #fff!important;background:rgba(0,0,0,.22)!important;color:#fff!important;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s,transform .2s;cursor:pointer;box-shadow:none!important;min-height:0!important;line-height:1}
.gk-cvbtn:hover{transform:scale(1.06)}
.gk-cvbtn:focus-visible{opacity:1;outline:2px solid #c273ed;outline-offset:2px}
.gk-cvbtn .gk-eq{display:none;width:24px;height:22px}
.gk-cvbtn .gk-eq > span{width:4px}
.gk-cvbtn .gk-nowic--play{display:block;width:26px;height:26px;margin-left:2px}
@media (hover:hover){.gk-cvhost:hover::after,.gk-cvhost:hover .gk-cvbtn{opacity:1}}
.gk-cvhost.gk-now::after,.gk-cvhost.gk-now .gk-cvbtn{opacity:1}
.gk-cvhost.gk-now.is-play .gk-cvbtn .gk-eq{display:inline-flex}
.gk-cvhost.gk-now.is-play .gk-cvbtn .gk-nowic--play{display:none}

/* ---------- singer links + hover card ---------- */
.gk-sg{color:inherit;text-decoration:none}
#gkm .gks-sga{color:inherit;position:relative;z-index:2}
.gk-tl-artist .gk-sg{color:inherit}
/* 1.2.41: singer name hover (and while its card is open) = bright purple + underline, everywhere (album tracklist,
   song lists, search results, portal rows/cards). Selector carries an id (#gkm) or body.gk-page + 3 classes so
   theme / Sonaar link rules don't win; no !important needed (checked on live). */
:is(#gkm, body.gk-page) a.gk-sg{text-decoration-line:none;text-decoration-thickness:1px;text-underline-offset:3px;text-decoration-color:currentColor;transition:color .18s ease,text-decoration-color .18s ease}
:is(#gkm, body.gk-page) a.gk-sg:is(:hover, :focus-visible, .gk-sg--open){color:#c273ed;text-decoration-line:underline}
/* Sonaar's own stylesheet forces text-decoration:none!important on links inside its player: only here !important is needed */
:is(#gkm, body.gk-page) .iron-audioplayer a.gk-sg:is(:hover, :focus-visible, .gk-sg--open){text-decoration-line:underline!important}
/* on the purple playing row the title already uses #c273ed: the lighter tone keeps the name readable there */
:is(#gkm, body.gk-page) .sr-playlist-item.current a.gk-sg:is(:hover, :focus-visible, .gk-sg--open){color:#d9a6ff}
.gk-spop{position:fixed;z-index:100050;width:384px;max-width:calc(100vw - 16px);box-sizing:border-box;padding:16px;background:#34224f;color:#fff;border-radius:8px;box-shadow:0 10px 30px rgba(0,0,0,.45);border:1px solid rgba(255,255,255,.06);font:400 13px/1.4 Inter,"Be Vietnam Pro",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;opacity:0;transform:translateY(4px);transition:opacity .15s,transform .15s;text-align:left}
.gk-spop.is-up{transform:translateY(-4px)}
.gk-spop.is-on{opacity:1;transform:none}
.gk-spop[hidden]{display:none}
.gk-spop a{color:#fff;text-decoration:none}
.gk-spop__hd{display:flex;align-items:center;gap:12px}
.gk-spop__av{width:52px;height:52px;border-radius:50%;flex:none;overflow:hidden;display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:700;color:#fff;background:#6a2fb0}
.gk-spop__av img{width:100%;height:100%;object-fit:cover;display:block}
.gk-spop__who{min-width:0}
.gk-spop__nm{display:block;font-size:15px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gk-spop__nm:hover{color:#c273ed!important;text-decoration:underline}
.gk-spop__who small{display:block;color:rgba(255,255,255,.6);font-size:12px;margin-top:2px}
.gk-spop__h{margin:16px 0 10px;font-size:14px;font-weight:700}
.gk-spop__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.gk-spop__it{display:block;min-width:0}
.gk-spop__cv{display:block;aspect-ratio:1/1;border-radius:4px;background:#2a1f3a center/cover no-repeat;transition:opacity .15s}
.gk-spop__it:hover .gk-spop__cv{opacity:.8}
.gk-spop__it b{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-top:6px;font-size:12px;font-weight:500;line-height:1.35;color:#fff}
.gk-spop__it:hover b{color:#c273ed}
.gk-spop__it small{display:block;color:rgba(255,255,255,.5);font-size:11px;margin-top:2px}
.gk-spop__all{display:inline-block;margin-top:12px;font-size:12px;font-weight:600;color:#c273ed!important}
.gk-spop__all:hover{text-decoration:underline}
#sonaar-player .album-art.gk-now.is-play .loading-icon{display:none!important}
.gk-play .gk-nowic--pause{display:none}
.gk-line.gk-now.is-play .gk-play[data-post] > :not(.gk-nowic--pause){display:none}
.gk-line.gk-now.is-play .gk-play[data-post] > .gk-nowic--pause{display:block;width:20px;height:20px;margin:auto}

/* ===== 1.2.39: one icon at a time. Every icon inside the cover button / thumbnail overlay is stacked dead centre
   (absolute + translate) and hidden by default; data-st (set by eq.js) shows exactly one:
   idle/pause -> play triangle, play -> bars (hover: pause). Any theme/Sonaar pseudo-element on the button is removed. */
.gk-cvbtn{display:block!important;overflow:hidden;font-size:0!important;text-indent:0!important}
.gk-cvbtn::before,.gk-cvbtn::after,.gk-nowov::before,.gk-nowov::after{content:none!important;display:none!important}
.gk-cvbtn > *,.gk-nowov > *{position:absolute!important;left:50%!important;top:50%!important;margin:0!important;transform:translate(-50%,-50%)!important;display:none!important;float:none!important}
.gk-cvbtn > .gk-nowic{width:26px!important;height:26px!important}
.gk-cvbtn > .gk-nowic--play,.gk-nowov > .gk-nowic--play{transform:translate(-44%,-50%)!important} /* optical centre of the triangle */
.gk-cvbtn > .gk-eq{width:24px!important;height:22px!important;align-items:flex-end;justify-content:space-between;gap:0!important}
.gk-cvbtn[data-st="idle"] > .gk-nowic--play,.gk-cvbtn[data-st="pause"] > .gk-nowic--play{display:block!important}
.gk-cvbtn[data-st="play"] > .gk-eq{display:flex!important}
.gk-nowov[data-st="play"] > .gk-eq,.gk-nowov[data-st="pause"] > .gk-eq{display:flex!important}
@media (hover:hover){
  .gk-cvhost:hover .gk-cvbtn[data-st="play"] > .gk-eq{display:none!important}
  .gk-cvhost:hover .gk-cvbtn[data-st="play"] > .gk-nowic--pause{display:block!important}
  .gk-now:hover .gk-nowov--btn[data-st="play"] > .gk-eq,.gk-now:hover .gk-nowov--btn[data-st="pause"] > .gk-eq{display:none!important}
  .gk-now:hover .gk-nowov--btn[data-st="play"] > .gk-nowic--pause,.gk-now:hover .gk-nowov--btn[data-st="pause"] > .gk-nowic--play{display:block!important}
}
#sonaar-player .album-art.gk-now .loading-icon{display:none!important}

/* ===== 1.2.40: circle position = centre of the cover image (left/top set by eq.js), centred by translate, never by
   margins; size and box fixed so no theme/UA rule can move or stretch it. Icons centred inside by flex as well. */
.gk-cvbtn{position:absolute!important;left:50%;top:50%;width:52px!important;height:52px!important;min-width:0!important;max-width:none!important;margin:0!important;padding:0!important;box-sizing:border-box!important;transform:translate(-50%,-50%)!important;line-height:0!important;-webkit-appearance:none;appearance:none;vertical-align:top}
@media (hover:hover){.gk-cvbtn:hover{transform:translate(-50%,-50%) scale(1.06)!important}}
.gk-cvbtn > .gk-eq{height:20px!important;width:22px!important}
.gk-cvbtn > .gk-eq > span{width:4px!important}
/* triangle path sits 1.1/24 right of its viewBox centre: compensate so the glyph's own box is dead centre */
.gk-cvbtn > .gk-nowic--play{transform:translate(calc(-50% - 1.45px),-50%)!important}
