/* ═══════════════════════════════════════════════════════════════════
   CloudVox v242 — PlayerX CSS
   Фирменная палитра: индиго #7c6cff · фиолет #a78bfa · циан #22d3ee
   (оранжевые акценты убраны полностью).
   Разделы: полный плеер fpx-*, окно баса bbp-*, чипы БАСС, пульсация
   страницы от баса, вкладка «Релизы Kontrolar» ktr-*, оверлей
   визуализации kvfs-* (v242: название в canvas сверху, 11 эффектов).
   ═══════════════════════════════════════════════════════════════════ */

:root { --cvx-bass: 0; }

/* ── 1. Полный плеер ─────────────────────────────────────────── */
#cvxPlayerX{position:fixed;inset:0;z-index:99990;display:none;align-items:center;justify-content:center;padding:18px}
#cvxPlayerX.open{display:flex}
.fpx-backdrop{position:absolute;inset:0;background:rgba(6,5,16,.66);animation:fpxIn .25s ease}
.fpx-shell{position:relative;width:min(560px,100%);max-height:calc(100vh - 36px);overflow:auto;border-radius:26px;border:1px solid rgba(148,130,255,.22);background:linear-gradient(165deg,rgba(28,24,56,.92),rgba(14,12,30,.94) 55%,rgba(20,14,42,.94));box-shadow:0 30px 90px rgba(4,2,18,.7),0 0 0 1px rgba(124,108,255,.08) inset,0 0 60px rgba(124,108,255,.12);padding:18px 20px 16px;color:#eceafd;animation:fpxUp .32s cubic-bezier(.22,1.2,.36,1)}
.fpx-aurora{position:absolute;top:-140px;left:50%;width:460px;height:300px;transform:translateX(-50%);background:radial-gradient(ellipse at 50% 55%,rgba(124,108,255,.16),rgba(124,108,255,.07) 38%,rgba(34,211,238,.04) 62%,transparent 78%);pointer-events:none}
.fpx-top{position:relative;display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.fpx-live{display:flex;align-items:center;gap:7px;font-size:10.5px;font-weight:800;letter-spacing:.14em;color:#a5f3fc;opacity:0;transition:opacity .3s}
#cvxPlayerX.playing .fpx-live{opacity:1}
.fpx-live i{width:7px;height:7px;border-radius:50%;background:#22d3ee;box-shadow:0 0 10px #22d3ee;animation:fpxBlink 1.15s ease-in-out infinite}
@keyframes fpxBlink{0%,100%{opacity:1}50%{opacity:.25}}
.fpx-top-btns{display:flex;gap:6px}
.fpx-tbtn{width:32px;height:32px;border-radius:10px;border:1px solid rgba(148,130,255,.2);background:rgba(124,108,255,.1);color:#c7c2f4;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.16s}
.fpx-tbtn:hover{background:rgba(124,108,255,.24);color:#fff;transform:translateY(-1px)}
.fpx-cover-zone{position:relative;display:flex;flex-direction:column;align-items:center;margin:10px 0 4px}
.fpx-cover{--cvx-bass:0;position:relative;width:190px;height:190px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 32% 28%,#8f7dff,#5b4bd4 45%,#241a54 78%,#151033);box-shadow:0 18px 50px rgba(50,30,140,.5),0 0 0 1px rgba(148,130,255,.25) inset;transform:scale(calc(1 + var(--cvx-bass) * .05));transition:transform .07s linear;overflow:hidden}
.fpx-cover::before{content:"";position:absolute;inset:0;border-radius:50%;background:repeating-radial-gradient(circle at 50% 50%,rgba(255,255,255,.05) 0 1.6px,transparent 1.6px 5px);opacity:.5}
#cvxPlayerX.no-cover .fpx-cover::after{content:"♪";position:absolute;font-size:64px;color:rgba(255,255,255,.85);text-shadow:0 4px 26px rgba(0,0,0,.5)}
.fpx-cover img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:50%}
.fpx-disc{position:absolute;inset:0;border-radius:50%;animation:fpxSpin 9s linear infinite;animation-play-state:paused;pointer-events:none}
#cvxPlayerX.playing .fpx-disc{animation-play-state:running}
.fpx-disc span{position:absolute;top:50%;left:50%;width:44px;height:44px;margin:-22px 0 0 -22px;border-radius:50%;background:radial-gradient(circle,#22d3ee 0 26%,#0e7490 60%,#083344);box-shadow:0 0 0 3px rgba(6,10,26,.9),0 0 18px rgba(34,211,238,.55)}
@keyframes fpxSpin{to{transform:rotate(360deg)}}
.fpx-cover-note{position:absolute;bottom:10px;right:12px;font-size:20px;filter:drop-shadow(0 2px 8px rgba(0,0,0,.6))}
.fpx-viz{display:flex;align-items:flex-end;gap:3px;height:34px;margin-top:14px;opacity:.9}
.fpx-viz i{width:4px;border-radius:3px;height:calc(6px + var(--i,0) * 0px);background:linear-gradient(to top,#7c6cff,#22d3ee);animation:fpxEq 1.05s ease-in-out infinite alternate;animation-delay:calc(var(--i) * -.09s);transform-origin:bottom;height:20%}
.fpx-viz i:nth-child(2n){animation-duration:.78s}
.fpx-viz i:nth-child(3n){animation-duration:1.32s}
@keyframes fpxEq{from{height:12%}to{height:100%}}
#cvxPlayerX:not(.playing) .fpx-viz i{animation-play-state:paused;height:12%}
.fpx-titles{margin-top:8px;text-align:center}
.fpx-name{font-size:17.5px;font-weight:800;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:0 2px 18px rgba(124,108,255,.35)}
.fpx-sub{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:5px;font-size:12px;color:#9d97c9}
.fpx-badge{padding:3px 9px;border-radius:99px;font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#c4bbff;background:rgba(124,108,255,.16);border:1px solid rgba(124,108,255,.3)}
.fpx-progress{margin:12px 2px 2px}
.fpx-bar{position:relative;height:7px;border-radius:99px;background:rgba(148,130,255,.14);cursor:pointer;touch-action:none}
.fpx-fill{position:absolute;inset:0 auto 0 0;width:0;border-radius:99px;background:linear-gradient(90deg,#6d5df0,#8b7cff 55%,#22d3ee);box-shadow:0 0 14px rgba(124,108,255,.55)}
.fpx-dot{position:absolute;right:-6px;top:50%;width:13px;height:13px;margin-top:-6.5px;border-radius:50%;background:#fff;box-shadow:0 0 12px rgba(139,124,255,.9)}
.fpx-times{display:flex;justify-content:space-between;margin-top:6px;font-size:11px;color:#8f89bd;font-variant-numeric:tabular-nums}
.fpx-controls{display:flex;align-items:center;justify-content:center;gap:16px;margin:10px 0 4px}
.fpx-cbtn{width:46px;height:46px;border-radius:16px;border:1px solid rgba(148,130,255,.18);background:rgba(124,108,255,.08);color:#dcd8ff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.16s}
.fpx-cbtn:hover{background:rgba(124,108,255,.22);transform:translateY(-1px)}
.fpx-cbtn.dim{opacity:.32;pointer-events:none}
.fpx-play{width:66px;height:66px;border-radius:50%;border:0;cursor:pointer;color:#fff;display:flex;align-items:center;justify-content:center;background:linear-gradient(140deg,#7c6cff,#5b4bd4 60%,#4338ca);box-shadow:0 12px 34px rgba(96,78,235,.55),0 0 0 6px rgba(124,108,255,.12);transition:.18s}
.fpx-play:hover{transform:scale(1.05);box-shadow:0 16px 40px rgba(96,78,235,.7),0 0 0 8px rgba(124,108,255,.16)}
.fpx-play:active{transform:scale(.97)}
.fpx-extras{display:flex;align-items:center;justify-content:center;gap:9px;margin-top:10px;flex-wrap:wrap}
.fpx-ebtn{width:36px;height:36px;border-radius:12px;border:1px solid rgba(148,130,255,.16);background:rgba(124,108,255,.07);color:#b9b2ea;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.16s}
.fpx-ebtn:hover{background:rgba(124,108,255,.2);color:#fff}
.fpx-ebtn.dim{opacity:.3;pointer-events:none}
.fpx-ebtn.on{color:#fff;background:rgba(124,108,255,.3);border-color:rgba(139,124,255,.55);box-shadow:0 0 14px rgba(124,108,255,.4)}
.fpx-ebtn.fpx-bass.on{background:linear-gradient(140deg,rgba(124,108,255,.4),rgba(34,211,238,.3));border-color:rgba(139,124,255,.6)}
.fpx-vol{display:flex;align-items:center;gap:7px;color:#b9b2ea;background:rgba(124,108,255,.07);border:1px solid rgba(148,130,255,.16);border-radius:12px;height:36px;padding:0 11px}
.fpx-vol input{width:92px;accent-color:#7c6cff;height:4px;cursor:pointer}
.fpx-autoopen{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:12px;font-size:11.5px;color:#8f89bd;cursor:pointer}
.fpx-autoopen input{accent-color:#7c6cff}
@keyframes fpxIn{from{opacity:0}to{opacity:1}}
@keyframes fpxUp{from{opacity:0;transform:translateY(26px) scale(.96)}to{opacity:1;transform:none}}

/* ── 2. Окно бас-буста ───────────────────────────────────────── */
#cvxBassPop{position:fixed;inset:0;z-index:300060;display:none;align-items:center;justify-content:center;padding:18px}
#cvxBassPop.open{display:flex}
.bbp-backdrop{position:absolute;inset:0;background:rgba(6,5,16,.64);animation:fpxIn .2s ease}
.bbp-shell{position:relative;width:min(430px,100%);border-radius:22px;border:1px solid rgba(148,130,255,.24);background:linear-gradient(160deg,rgba(30,26,60,.95),rgba(15,12,32,.96));box-shadow:0 26px 80px rgba(4,2,18,.7),0 0 50px rgba(124,108,255,.14);padding:16px 18px;color:#eceafd;animation:fpxUp .28s cubic-bezier(.22,1.2,.36,1)}
.bbp-head{display:flex;align-items:center;gap:11px}
.bbp-ico{width:38px;height:38px;border-radius:13px;display:flex;align-items:center;justify-content:center;color:#fff;background:linear-gradient(140deg,#7c6cff,#22d3ee);box-shadow:0 8px 22px rgba(96,78,235,.45)}
.bbp-title{font-size:15px;font-weight:800;display:flex;flex-direction:column;gap:2px}
.bbp-title i{font-style:normal;font-size:11px;font-weight:500;color:#9d97c9}
.bbp-x{margin-left:auto;width:30px;height:30px;border-radius:10px;border:1px solid rgba(148,130,255,.18);background:rgba(124,108,255,.08);color:#c7c2f4;cursor:pointer;display:flex;align-items:center;justify-content:center}
.bbp-x:hover{background:rgba(124,108,255,.22);color:#fff}
.bbp-val{text-align:center;font-size:34px;font-weight:900;letter-spacing:-.02em;margin:12px 0 10px;background:linear-gradient(90deg,#a78bfa,#22d3ee);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 30px rgba(124,108,255,.25)}
.bbp-presets{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.bbp-preset{border:1px solid rgba(148,130,255,.16);background:rgba(124,108,255,.06);border-radius:12px;padding:7px 2px 6px;cursor:pointer;color:#b9b2ea;display:flex;flex-direction:column;align-items:center;gap:2px;transition:.15s}
.bbp-preset b{font-size:13.5px;font-weight:800;color:#dcd8ff}
.bbp-preset span{font-size:8.6px;letter-spacing:.02em;opacity:.8}
.bbp-preset:hover{background:rgba(124,108,255,.16);transform:translateY(-1px)}
.bbp-preset.on{background:linear-gradient(150deg,rgba(124,108,255,.4),rgba(34,211,238,.22));border-color:rgba(139,124,255,.6);color:#fff;box-shadow:0 6px 18px rgba(96,78,235,.35)}
.bbp-preset.on b{color:#fff}
.bbp-slider-row{display:flex;align-items:center;gap:10px;margin-top:13px;color:#8f89bd;font-size:11px;font-weight:700}
.bbp-slider-row input{flex:1;accent-color:#7c6cff;height:5px;cursor:pointer}
.bbp-auto{display:flex;align-items:center;gap:8px;margin-top:12px;font-size:12px;color:#b9b2ea;cursor:pointer}
.bbp-auto input{accent-color:#7c6cff}
.bbp-note{margin-top:10px;font-size:11px;line-height:1.5;color:#8f89bd;background:rgba(124,108,255,.07);border:1px solid rgba(148,130,255,.14);border-radius:12px;padding:8px 11px}
.bbp-actions{display:flex;justify-content:center;margin-top:12px}
.bbp-apply{border:0;border-radius:13px;padding:10px 34px;font-size:13.5px;font-weight:800;color:#fff;cursor:pointer;background:linear-gradient(140deg,#7c6cff,#5b4bd4);box-shadow:0 10px 26px rgba(96,78,235,.5);transition:.16s}
.bbp-apply:hover{transform:translateY(-1px);box-shadow:0 14px 32px rgba(96,78,235,.65)}

/* ── 3. Пульсация страницы от баса ───────────────────────────── */
html.cvx-bass-live body::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:3;opacity:calc(var(--cvx-bass,0) * .55);background:radial-gradient(ellipse at 50% 115%,rgba(124,108,255,.30),transparent 55%),radial-gradient(ellipse at 50% -15%,rgba(34,211,238,.16),transparent 50%);transition:opacity .09s linear}
html.cvx-bass-live .cvx-header-glow,html.cvx-bass-live #cvHeader{box-shadow:0 6px 40px rgba(124,108,255,calc(.14 + var(--cvx-bass,0) * .3))}

/* ── 4. Чипы БАСС в чатах ────────────────────────────────────── */
.px-bass-chip{display:inline-flex;align-items:center;gap:3px;padding:3px 8px;border-radius:99px;border:1px solid rgba(148,130,255,.3);background:rgba(124,108,255,.1);color:#b9b2ea;font-size:9.5px;font-weight:800;letter-spacing:.06em;cursor:pointer;transition:.15s;line-height:1.4}
.px-bass-chip:hover{background:rgba(124,108,255,.26);color:#fff}
.px-bass-chip.on{background:linear-gradient(140deg,rgba(124,108,255,.45),rgba(34,211,238,.3));border-color:rgba(139,124,255,.6);color:#fff;box-shadow:0 0 12px rgba(124,108,255,.4)}
.px-bass-chip-voice{padding:4px 6px;position:absolute;top:6px;right:6px;z-index:4;opacity:0;transition:opacity .15s}
.vmsg-wrap:hover .px-bass-chip-voice{opacity:1}
audio.px-bass{filter:saturate(1.05)}
/* ── 5. Вкладка «Релизы Kontrolar» ───────────────────────────── */
.ktr-wrap{display:flex;flex-direction:column;gap:14px;padding:4px 2px 30px}
.ktr-loading{display:flex;align-items:center;justify-content:center;gap:12px;padding:60px 20px;color:#9d97c9;font-size:14px;text-align:center;line-height:1.6}
.ktr-loading b{color:#c7c2f4}
.ktr-spin{width:26px;height:26px;border-radius:50%;border:3px solid rgba(124,108,255,.2);border-top-color:#7c6cff;animation:fpxSpin .8s linear infinite}
.ktr-hero{display:flex;align-items:center;gap:14px;padding:16px 18px;border-radius:20px;border:1px solid rgba(148,130,255,.2);background:linear-gradient(140deg,rgba(124,108,255,.16),rgba(34,211,238,.07) 60%,rgba(15,12,32,.4));position:relative;overflow:hidden}
.ktr-hero::after{content:"";position:absolute;top:-60%;left:-30%;width:40%;height:220%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.09),transparent);transform:skewX(-16deg);animation:ktrShine 5.5s ease-in-out infinite}
@keyframes ktrShine{0%,55%,100%{transform:skewX(-16deg) translateX(0)}25%{transform:skewX(-16deg) translateX(430%)}}
.ktr-hero-logo{width:52px;height:52px;border-radius:16px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:linear-gradient(140deg,#7c6cff,#22d3ee);box-shadow:0 10px 26px rgba(96,78,235,.45)}
.ktr-hero-info{min-width:0}
.ktr-hero-name{font-size:17px;font-weight:900;letter-spacing:-.01em}
.ktr-hero-name span{color:#8f89bd;font-weight:600;font-size:13px}
.ktr-hero-sub{font-size:12px;color:#9d97c9;margin-top:3px}
.ktr-hero-site{margin-left:auto;flex-shrink:0;padding:8px 13px;border-radius:11px;font-size:12px;font-weight:700;color:#a5f3fc;text-decoration:none;border:1px solid rgba(34,211,238,.3);background:rgba(34,211,238,.08);transition:.15s}
.ktr-hero-site:hover{background:rgba(34,211,238,.2);color:#fff}
.ktr-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}
.ktr-stat{padding:11px 8px;border-radius:15px;text-align:center;border:1px solid rgba(148,130,255,.14);background:rgba(124,108,255,.06)}
.ktr-stat b{display:block;font-size:19px;font-weight:900;color:#c7c2f4;font-variant-numeric:tabular-nums}
.ktr-stat span{font-size:10.5px;color:#8f89bd}
.ktr-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ktr-btn{padding:9px 15px;border-radius:12px;border:1px solid rgba(148,130,255,.2);background:rgba(124,108,255,.08);color:#dcd8ff;font-size:12.5px;font-weight:700;cursor:pointer;transition:.15s}
.ktr-btn:hover{background:rgba(124,108,255,.2);transform:translateY(-1px)}
.ktr-btn-play{background:linear-gradient(140deg,#7c6cff,#5b4bd4);border-color:transparent;box-shadow:0 8px 22px rgba(96,78,235,.4)}
.ktr-btn-play:hover{box-shadow:0 10px 28px rgba(96,78,235,.6)}
.ktr-btn-add{border-color:rgba(34,211,238,.35);color:#a5f3fc;background:rgba(34,211,238,.08)}
.ktr-btn-add:hover{background:rgba(34,211,238,.18)}
.ktr-search{display:flex;align-items:center;gap:8px;flex:1;min-width:170px;padding:0 12px;height:37px;border-radius:12px;border:1px solid rgba(148,130,255,.18);background:rgba(15,12,32,.5);color:#8f89bd}
.ktr-search input{flex:1;background:none;border:0;outline:0;color:#eceafd;font-size:12.5px}
.ktr-info{margin-top:2px}
.ktr-info-card{padding:14px 16px;border-radius:15px;border:1px solid rgba(34,211,238,.22);background:rgba(34,211,238,.05);font-size:12.5px;line-height:1.65;color:#b9b2ea}
.ktr-info-card b{color:#a5f3fc}
.ktr-info-card ol{margin:8px 0 0;padding-left:20px;display:flex;flex-direction:column;gap:7px}
.ktr-info-card code{padding:1px 6px;border-radius:6px;background:rgba(124,108,255,.14);font-size:11px;color:#c4bbff;word-break:break-all}
.ktr-info-note{margin-top:10px;padding-top:9px;border-top:1px dashed rgba(148,130,255,.2);color:#8f89bd;font-size:11.5px}
.ktr-addform{display:flex;flex-direction:column;gap:8px;padding:13px;border-radius:15px;border:1px dashed rgba(148,130,255,.3);background:rgba(124,108,255,.05)}
.ktr-add-row input{width:100%;box-sizing:border-box;height:38px;border-radius:11px;border:1px solid rgba(148,130,255,.2);background:rgba(15,12,32,.55);color:#eceafd;padding:0 12px;font-size:12.5px;outline:0}
.ktr-add-row input:focus{border-color:rgba(139,124,255,.55)}
.ktr-add-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.ktr-add-grid button{height:38px}
.ktr-add-hint{font-size:11px;color:#8f89bd}
.ktr-albums{display:flex;gap:7px;flex-wrap:wrap}
.ktr-album-chip{padding:7px 13px;border-radius:99px;border:1px solid rgba(148,130,255,.18);background:rgba(124,108,255,.06);color:#b9b2ea;font-size:12px;font-weight:600;cursor:pointer;transition:.15s}
.ktr-album-chip i{font-style:normal;font-size:10.5px;opacity:.7;margin-left:3px}
.ktr-album-chip:hover{background:rgba(124,108,255,.16)}
.ktr-album-chip.on{background:linear-gradient(140deg,rgba(124,108,255,.4),rgba(34,211,238,.18));border-color:rgba(139,124,255,.55);color:#fff}
.ktr-tracks{display:flex;flex-direction:column;gap:8px}
.ktr-track{display:flex;align-items:center;gap:12px;padding:9px 12px 9px 9px;border-radius:16px;border:1px solid rgba(148,130,255,.12);background:rgba(20,16,42,.5);transition:border-color .16s,transform .16s}
.ktr-track:hover{border-color:rgba(139,124,255,.35);background:rgba(124,108,255,.09);transform:translateX(2px)}
.ktr-track.playing{border-color:rgba(139,124,255,.5);background:rgba(124,108,255,.13);box-shadow:0 0 24px rgba(124,108,255,.14)}
.ktr-cover{position:relative;width:52px;height:52px;border-radius:13px;overflow:hidden;flex-shrink:0;background:linear-gradient(140deg,#2a2352,#171232)}
.ktr-cover img{width:100%;height:100%;object-fit:cover;display:block}
.ktr-play{position:absolute;inset:0;border:0;cursor:pointer;background:rgba(10,8,24,.45);color:#fff;display:flex;align-items:center;justify-content:center;opacity:0;transition:.16s}
.ktr-track:hover .ktr-play,.ktr-play.on{opacity:1}
.ktr-play:hover{background:rgba(124,108,255,.5)}
.ktr-eq{position:absolute;inset:0;display:none;align-items:flex-end;justify-content:center;gap:2.5px;padding-bottom:11px}
.ktr-track.playing .ktr-eq{display:flex}
.ktr-track.playing .ktr-pl-ic{display:none}
.ktr-eq i{width:3.5px;border-radius:2px;background:linear-gradient(to top,#22d3ee,#a78bfa);animation:fpxEq .55s ease-in-out infinite alternate}
.ktr-eq i:nth-child(2){animation-delay:.14s}
.ktr-eq i:nth-child(3){animation-delay:.28s}
.ktr-eq i:nth-child(4){animation-delay:.42s}
.ktr-meta{min-width:0;flex:1}
.ktr-title{font-size:13.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ktr-sub{display:flex;align-items:center;gap:9px;margin-top:3px;font-size:11px;color:#8f89bd}
.ktr-album-badge{padding:2px 8px;border-radius:99px;background:rgba(124,108,255,.12);border:1px solid rgba(148,130,255,.18);color:#b9b2ea;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px}
.ktr-dl{display:inline-flex;align-items:center;gap:3px;font-variant-numeric:tabular-nums}
.ktr-actions{display:flex;gap:5px;flex-shrink:0}
.ktr-act{width:32px;height:32px;border-radius:10px;border:1px solid rgba(148,130,255,.14);background:rgba(124,108,255,.06);color:#b9b2ea;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.15s}
.ktr-act:hover{background:rgba(124,108,255,.2);color:#fff;transform:translateY(-1px)}
.ktr-act.on{color:#ffd166;background:rgba(255,209,102,.12);border-color:rgba(255,209,102,.4)}
.ktr-act.ktr-bass.on{color:#fff;background:linear-gradient(140deg,rgba(124,108,255,.45),rgba(34,211,238,.3));border-color:rgba(139,124,255,.6);box-shadow:0 0 12px rgba(124,108,255,.4)}
.ktr-empty{padding:40px 20px;text-align:center;color:#8f89bd;font-size:13px}

/* ── 6. Адаптив и доступность ────────────────────────────────── */
@media (max-width:760px){
  .fpx-shell{padding:14px 14px 12px;border-radius:20px}
  .fpx-cover{width:150px;height:150px}
  .fpx-vol input{width:64px}
  .bbp-presets{grid-template-columns:repeat(4,1fr)}
  .bbp-preset:nth-child(7){grid-column:span 1}
  .ktr-stats{grid-template-columns:repeat(2,1fr)}
  .ktr-add-grid{grid-template-columns:1fr}
  .ktr-hero-site{display:none}
  .ktr-act{width:29px;height:29px}
}
@media (prefers-reduced-motion:reduce){
  .fpx-viz i,.fpx-disc,.fpx-live i,.ktr-spin,.ktr-hero::after,.ktr-eq i{animation:none!important}
  .fpx-cover{transform:none!important}
  html.cvx-bass-live body::after{display:none}
}


/* ═══════════════ v231 ═════════════════════════════════════════ */

/* ── 7. Старый мини-плеер УДАЛЁН ─────────────────────────────── */
#avMiniPlayer{display:none!important;visibility:hidden!important;opacity:0!important;pointer-events:none!important;transform:translateY(200%)!important}

/* ── 8. Mini — мини-плеер PlayerX (анимированный) ────────────── */
#cvxMiniX{position:fixed;left:14px;bottom:14px;z-index:299996;display:flex;align-items:center;gap:8px;width:334px;padding:7px 8px;border-radius:18px;
  background:linear-gradient(150deg,rgba(30,26,58,.96),rgba(20,17,42,.97));
  border:1px solid rgba(148,130,255,.28);box-shadow:0 10px 34px rgba(10,8,30,.55),0 0 0 1px rgba(124,108,255,.06) inset,0 0 22px rgba(124,108,255,.12);
  color:#efeaff;
  transform:translateY(140%) scale(.9);opacity:0;pointer-events:none;
  transition:transform .5s cubic-bezier(.19,1.15,.28,1.05),opacity .34s ease;cursor:default;touch-action:none}
#cvxMiniX.show{transform:translateY(0) scale(1);opacity:1;pointer-events:auto}
#cvxMiniX.dragging{transition:none;cursor:grabbing}
#cvxMiniX.dragging .mnx-disc{cursor:grabbing}
/* большой плеер открыт — мини спрятан вниз */
html.cvx-fpx-open #cvxMiniX{transform:translateY(150%) scale(.9)!important;opacity:0!important;pointer-events:none!important}
/* бас включён — планка пульсирует */
#cvxMiniX.px-bass-on{border-color:rgba(139,124,255,.55);box-shadow:0 10px 34px rgba(10,8,30,.55),0 0 26px rgba(124,108,255,.35)}
/* диск-обложка */
.mnx-disc{position:relative;width:42px;height:42px;flex-shrink:0;border-radius:50%;cursor:grab;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(circle at 50% 50%,#3d3568 0%,#241f47 55%,#171331 100%);
  border:2px solid rgba(148,130,255,.35);box-shadow:0 0 14px rgba(124,108,255,.35);transition:box-shadow .25s,border-color .25s}
.mnx-disc-hold{position:absolute;inset:3px;border-radius:50%;background-size:cover;background-position:center;opacity:.9;
  animation:mnxSpin 4.2s linear infinite;animation-play-state:paused}
#cvxMiniX.has-cover .mnx-note{display:none}
#cvxMiniX .mnx-note{position:absolute;color:#b9b2ea;z-index:2;filter:drop-shadow(0 0 4px rgba(124,108,255,.8))}
#cvxMiniX.playing .mnx-disc-hold{animation-play-state:running}
#cvxMiniX.playing .mnx-disc{border-color:rgba(139,124,255,.65);box-shadow:0 0 20px rgba(124,108,255,.55)}
@keyframes mnxSpin{to{transform:rotate(360deg)}}
/* эквалайзер на диске */
.mnx-eq{position:absolute;right:-2px;bottom:-2px;display:flex;align-items:flex-end;gap:1.5px;height:10px;padding:2px 3px;border-radius:6px;background:rgba(18,14,38,.9);border:1px solid rgba(148,130,255,.35);opacity:0;transition:opacity .2s;z-index:3}
#cvxMiniX.playing .mnx-eq{opacity:1}
.mnx-eq i{width:2px;border-radius:1px;background:linear-gradient(180deg,#22d3ee,#7c6cff);animation:mnxEq 1s ease-in-out infinite;animation-play-state:paused;height:3px}
#cvxMiniX.playing .mnx-eq i{animation-play-state:running}
.mnx-eq i:nth-child(1){animation-delay:0s}
.mnx-eq i:nth-child(2){animation-delay:.25s}
.mnx-eq i:nth-child(3){animation-delay:.5s}
@keyframes mnxEq{0%,100%{height:3px}50%{height:9px}}
/* середина: имя + подпись */
.mnx-mid{min-width:0;flex:1;display:flex;flex-direction:column;gap:1px}
.mnx-name{font-size:12px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff}
.mnx-sub{font-size:10px;color:#8f89bd;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#cvxMiniX.playing .mnx-name{animation:mnxGlow 2.6s ease-in-out infinite}
@keyframes mnxGlow{0%,100%{text-shadow:0 0 6px rgba(124,108,255,0)}50%{text-shadow:0 0 10px rgba(124,108,255,.75)}}
/* кнопки */
.mnx-btn{width:30px;height:30px;flex-shrink:0;border-radius:11px;border:1px solid rgba(148,130,255,.16);background:rgba(124,108,255,.07);color:#b9b2ea;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.16s;padding:0}
.mnx-btn:hover{background:rgba(124,108,255,.22);color:#fff;transform:translateY(-1px)}
.mnx-btn:active{transform:scale(.92)}
.mnx-play{width:36px;height:36px;border-radius:50%;background:linear-gradient(140deg,#7c6cff,#5b4bd4);border-color:rgba(139,124,255,.6);color:#fff;box-shadow:0 4px 14px rgba(124,108,255,.45)}
.mnx-play:hover{background:linear-gradient(140deg,#8d7dff,#6a59e6);box-shadow:0 6px 18px rgba(124,108,255,.6)}
.mnx-fav.on{color:#ffd166;background:rgba(255,209,102,.14);border-color:rgba(255,209,102,.45);box-shadow:0 0 10px rgba(255,209,102,.25)}
.mnx-fav.on svg{animation:mnxPop .35s cubic-bezier(.2,1.6,.4,1)}
@keyframes mnxPop{0%{transform:scale(.4)}70%{transform:scale(1.25)}100%{transform:scale(1)}}
.mnx-bass.on{color:#fff;background:linear-gradient(140deg,rgba(124,108,255,.45),rgba(34,211,238,.3));border-color:rgba(139,124,255,.6)}
.mnx-x:hover{color:#ff6b81;border-color:rgba(255,107,129,.4);background:rgba(255,107,129,.12)}
/* прогресс-волоска */
.mnx-progress{position:absolute;left:16px;right:16px;bottom:2px;height:2.5px;border-radius:2px;background:rgba(148,130,255,.14);overflow:hidden}
.mnx-fill{height:100%;width:0%;border-radius:2px;background:linear-gradient(90deg,#7c6cff,#22d3ee);box-shadow:0 0 8px rgba(124,108,255,.7);transition:width .25s linear}
#cvxMiniX.playing .mnx-fill{background-size:200% 100%;animation:mnxFlow 3s linear infinite}
@keyframes mnxFlow{to{background-position:-200% 0}}
/* появление с лёгким подпрыгом */
#cvxMiniX.show{animation:mnxBounce .55s cubic-bezier(.19,1.15,.28,1.05)}
@keyframes mnxBounce{0%{transform:translateY(140%) scale(.9)}60%{transform:translateY(-6px) scale(1.02)}100%{transform:translateY(0) scale(1)}}

/* ── 9. Сердечки и скачивание на карточках чата/голосовых ────── */
.px-fav-chip{display:inline-flex;align-items:center;justify-content:center;gap:3px;padding:3px 7px;border-radius:99px;border:1px solid rgba(148,130,255,.3);background:rgba(124,108,255,.08);color:#b9b2ea;cursor:pointer;transition:.15s;line-height:1.4}
.px-fav-chip:hover{background:rgba(124,108,255,.24);color:#fff;transform:translateY(-1px)}
.px-fav-chip.on{color:#ffd166;background:rgba(255,209,102,.14);border-color:rgba(255,209,102,.5);box-shadow:0 0 10px rgba(255,209,102,.3)}
.px-fav-chip.on svg{animation:mnxPop .35s cubic-bezier(.2,1.6,.4,1)}
.px-dl-chip{display:inline-flex;align-items:center;justify-content:center;gap:3px;padding:3px 7px;border-radius:99px;border:1px solid rgba(34,211,238,.3);background:rgba(34,211,238,.07);color:#67e8f9;cursor:pointer;transition:.15s;line-height:1.4}
.px-dl-chip:hover{background:rgba(34,211,238,.22);color:#fff;transform:translateY(-1px)}
.px-fav-chip-voice{position:absolute;top:6px;right:34px;z-index:4;padding:4px 6px;opacity:0;transition:opacity .15s,transform .15s}
.vmsg-wrap:hover .px-fav-chip-voice,.px-fav-chip-voice.on{opacity:1}

/* ── 10. Вкладка Kontrolar: доп. примечание и избранные из чата ── */
.ktr-src-note{margin:-6px 0 12px;padding:9px 12px;border-radius:12px;border:1px dashed rgba(148,130,255,.35);background:rgba(124,108,255,.06);color:#b9b2ea;font-size:11.5px;line-height:1.55}
.ktr-cover-extra{display:flex;align-items:center;justify-content:center;font-size:17px;background:linear-gradient(140deg,rgba(124,108,255,.18),rgba(34,211,238,.12))}
.ktr-act.ktr-fav-x{color:#ffd166;background:rgba(255,209,102,.12);border-color:rgba(255,209,102,.4)}
.ktr-act.ktr-dl-x:hover{color:#67e8f9;border-color:rgba(34,211,238,.45);background:rgba(34,211,238,.1)}
.ktr-track.ktr-extra{cursor:pointer}

/* ── 11. Адаптив мини-плеера ─────────────────────────────────── */
@media (max-width:760px){
  #cvxMiniX{width:min(92vw,340px)}
  .mnx-sub{display:none}
  .mnx-btn{width:28px;height:28px}
  .mnx-play{width:34px;height:34px}
  .mnx-fav{display:none}
}
@media (prefers-reduced-motion:reduce){
  #cvxMiniX,.mnx-disc-hold,.mnx-eq i,.mnx-fill,#cvxMiniX.playing .mnx-name{animation:none!important;transition:none!important}
  #cvxMiniX{transform:none;opacity:1}
  #cvxMiniX:not(.show){display:none}
}

/* ═══════════════════════════════════════════════════════════════════
   CloudVox v232 — PlayerX CSS (добавления)
   1) Пустое состояние большого плеера (кнопка «Музыкальный плеер»)
   2) Панели мини-плеера: 📻 Радио и ★ Избранное (анимированные)
   3) Вкладка Kontrolar: чарты, альбомы карточками, новые карточки
      треков со счётчиком прослушиваний и ссылкой на kontrolar.ru
   ═══════════════════════════════════════════════════════════════════ */

/* ── 1. Пустое состояние большого плеера ─────────────────────────── */
.fpx-empty{display:none;flex-direction:column;align-items:center;gap:9px;padding:20px 12px 14px;margin:2px 0 10px;border-radius:20px;border:1px dashed rgba(148,130,255,.3);background:rgba(124,108,255,.05);text-align:center}
#cvxPlayerX.is-empty .fpx-empty{display:flex;animation:fpxIn .3s ease}
.fpx-empty-ic{width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#8f89bd;background:linear-gradient(140deg,rgba(124,108,255,.16),rgba(34,211,238,.1));box-shadow:0 10px 26px rgba(96,78,235,.25)}
#cvxPlayerX.is-empty .fpx-empty-ic svg{animation:fpxEmptyFloat 2.6s ease-in-out infinite}
@keyframes fpxEmptyFloat{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-5px) rotate(4deg)}}
.fpx-empty-t1{font-size:15px;font-weight:800;color:#eceafd}
.fpx-empty-t2{font-size:11.5px;color:#8f89bd;margin-top:-4px}
.fpx-empty-btn{margin-top:6px;padding:10px 18px;border-radius:13px;border:1px solid rgba(139,124,255,.45);background:linear-gradient(140deg,rgba(124,108,255,.3),rgba(91,75,212,.25));color:#fff;font-size:12.5px;font-weight:800;cursor:pointer;transition:.18s}
.fpx-empty-btn:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(96,78,235,.45);background:linear-gradient(140deg,rgba(124,108,255,.5),rgba(91,75,212,.4))}
.fpx-empty-btn2{border-color:rgba(34,211,238,.4);background:rgba(34,211,238,.1);color:#a5f3fc;margin-top:0}
.fpx-empty-btn2:hover{box-shadow:0 10px 26px rgba(34,211,238,.25);background:rgba(34,211,238,.2)}
#cvxPlayerX.is-empty .fpx-viz{opacity:.25}

/* ── 2. Мини-плеер: панели радио и избранного ────────────────────── */
.mnx-panel{position:absolute;right:0;bottom:calc(100% + 12px);width:min(330px,calc(100vw - 30px));max-height:min(58vh,430px);display:flex;flex-direction:column;border-radius:18px;border:1px solid rgba(148,130,255,.28);background:linear-gradient(165deg,rgba(26,22,52,.98),rgba(14,12,30,.98));box-shadow:0 24px 60px rgba(4,2,18,.65),0 0 0 1px rgba(124,108,255,.08) inset;opacity:0;transform:translateY(14px) scale(.96);pointer-events:none;transition:opacity .22s ease,transform .26s cubic-bezier(.19,1.15,.28,1.05);z-index:5;overflow:hidden}
.mnx-panel.open{opacity:1;transform:translateY(0) scale(1);pointer-events:auto}
.mnx-panel-h{display:flex;align-items:center;gap:8px;padding:11px 13px;border-bottom:1px solid rgba(148,130,255,.16);font-size:12.5px;font-weight:800;color:#eceafd;flex-shrink:0}
.mnx-panel-t{flex:1}
.mnx-panel-cnt{font-size:10.5px;font-weight:800;color:#c7c2f4;padding:2px 8px;border-radius:99px;background:rgba(124,108,255,.18)}
.mnx-panel-x{width:22px;height:22px;border-radius:8px;border:1px solid rgba(148,130,255,.25);background:rgba(124,108,255,.08);color:#b9b2ea;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.15s}
.mnx-panel-x:hover{color:#fff;background:rgba(124,108,255,.25)}
.mnx-panel-b{overflow-y:auto;overscroll-behavior:contain;padding:8px;scrollbar-width:thin;scrollbar-color:rgba(124,108,255,.4) transparent}
.mnx-panel-b::-webkit-scrollbar{width:5px}
.mnx-panel-b::-webkit-scrollbar-thumb{background:rgba(124,108,255,.4);border-radius:3px}
.mnx-pills{display:flex;gap:5px;flex-wrap:wrap;padding:2px 2px 9px}
.mnx-pill{padding:5px 10px;border-radius:99px;border:1px solid rgba(148,130,255,.22);background:rgba(124,108,255,.07);color:#b9b2ea;font-size:10.5px;font-weight:700;cursor:pointer;transition:.15s}
.mnx-pill:hover{background:rgba(124,108,255,.18);color:#fff}
.mnx-pill.on{background:linear-gradient(140deg,#7c6cff,#5b4bd4);border-color:transparent;color:#fff;box-shadow:0 4px 14px rgba(96,78,235,.4)}
.mnx-row{display:flex;align-items:center;gap:9px;padding:7px 8px;border-radius:12px;cursor:pointer;transition:.15s;animation:mnxRowIn .3s ease both}
.mnx-row:hover{background:rgba(124,108,255,.12)}
.mnx-row.on{background:rgba(124,108,255,.16);box-shadow:inset 2px 0 0 #7c6cff}
@keyframes mnxRowIn{from{opacity:0;transform:translateX(10px)}to{opacity:1;transform:none}}
.mnx-row-ic{width:30px;height:30px;flex-shrink:0;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:13px;background:rgba(124,108,255,.12);color:#c7c2f4}
.mnx-row-body{min-width:0;flex:1;display:flex;flex-direction:column;gap:1px}
.mnx-row-name{font-size:11.5px;font-weight:700;color:#eceafd;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mnx-row-sub{font-size:9.5px;color:#8f89bd;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mnx-row-play{width:24px;height:24px;flex-shrink:0;border-radius:8px;border:1px solid rgba(139,124,255,.4);background:rgba(124,108,255,.14);color:#dcd8ff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.15s}
.mnx-row-play:hover{background:#7c6cff;color:#fff;transform:scale(1.08)}
.mnx-row-del{width:24px;height:24px;flex-shrink:0;border-radius:8px;border:0;background:none;color:#8f89bd;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.15s}
.mnx-row-del:hover{color:#f23f43;background:rgba(242,63,67,.12)}
.mnx-live{flex-shrink:0;font-size:8.5px;font-weight:900;letter-spacing:.1em;color:#f23f43;padding:2px 6px;border-radius:6px;border:1px solid rgba(242,63,67,.4);background:rgba(242,63,67,.1);animation:mnxLive 1.6s ease-in-out infinite}
@keyframes mnxLive{0%,100%{opacity:1}50%{opacity:.45}}
.mnx-empty{padding:18px 12px;text-align:center;font-size:11px;color:#8f89bd;line-height:1.6}
#cvxMiniX .mnx-btn.mnx-radio{color:#22d3ee}
#cvxMiniX .mnx-btn.mnx-radio.act{background:rgba(34,211,238,.22);border-color:rgba(34,211,238,.55);color:#a5f3fc}
#cvxMiniX .mnx-btn.mnx-fav.act{background:rgba(255,209,102,.2);border-color:rgba(255,209,102,.55);color:#ffd166}
#cvxMiniX .mnx-btn.mnx-fav.on svg path{fill:#ffd166;stroke:#ffd166}
.mnx-btn{animation:mnxPop .35s cubic-bezier(.19,1.15,.28,1.05) both}
.mnx-btn:nth-of-type(1){animation-delay:.02s}.mnx-btn:nth-of-type(2){animation-delay:.05s}.mnx-btn:nth-of-type(3){animation-delay:.08s}.mnx-btn:nth-of-type(4){animation-delay:.11s}
@keyframes mnxPop{from{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}

/* ── 3. Вкладка Kontrolar: секции ────────────────────────────────── */
.ktr-sec{margin-bottom:18px}
.ktr-sec-h{display:flex;align-items:center;gap:8px;margin-bottom:10px;font-size:13.5px;font-weight:900;color:#eceafd}
.ktr-sec-ic{font-size:14px}
.ktr-sec-n{font-size:10.5px;font-weight:700;color:#8f89bd;padding:2px 9px;border-radius:99px;background:rgba(124,108,255,.1)}

/* чарты */
.ktr-chart-tabs{display:flex;gap:5px;margin-left:auto}
.ktr-chart-tab{padding:5px 11px;border-radius:99px;border:1px solid rgba(148,130,255,.2);background:rgba(124,108,255,.06);color:#b9b2ea;font-size:10.5px;font-weight:700;cursor:pointer;transition:.15s}
.ktr-chart-tab:hover{background:rgba(124,108,255,.16);color:#fff}
.ktr-chart-tab.on{background:linear-gradient(140deg,rgba(124,108,255,.45),rgba(34,211,238,.22));border-color:rgba(139,124,255,.55);color:#fff}
.ktr-charts{display:flex;gap:10px;overflow-x:auto;padding:2px 2px 10px;scrollbar-width:thin;scrollbar-color:rgba(124,108,255,.4) transparent;scroll-snap-type:x proximity}
.ktr-charts::-webkit-scrollbar{height:5px}
.ktr-charts::-webkit-scrollbar-thumb{background:rgba(124,108,255,.4);border-radius:3px}
.ktr-chart-card{position:relative;flex:0 0 148px;scroll-snap-align:start;padding:10px 10px 11px;border-radius:16px;border:1px solid rgba(148,130,255,.16);background:linear-gradient(165deg,rgba(30,25,60,.6),rgba(16,13,34,.6));cursor:pointer;transition:border-color .18s,transform .18s;animation:ktrChartIn .35s ease both;content-visibility:auto;contain-intrinsic-size:auto 200px}
.ktr-chart-card:nth-child(2){animation-delay:.04s}.ktr-chart-card:nth-child(3){animation-delay:.08s}.ktr-chart-card:nth-child(4){animation-delay:.12s}.ktr-chart-card:nth-child(5){animation-delay:.16s}
@keyframes ktrChartIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.ktr-chart-card:hover{transform:translateY(-3px);border-color:rgba(139,124,255,.45);box-shadow:0 12px 30px rgba(96,78,235,.25)}
.ktr-chart-pos{position:absolute;top:8px;left:8px;z-index:2;min-width:20px;height:20px;padding:0 5px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:10.5px;font-weight:900;color:#fff;background:linear-gradient(140deg,#7c6cff,#22d3ee);box-shadow:0 4px 12px rgba(96,78,235,.5)}
.ktr-chart-card:nth-child(1) .ktr-chart-pos{background:linear-gradient(140deg,#ffd166,#ff9f43);color:#2b1c04;box-shadow:0 4px 12px rgba(255,159,67,.5)}
.ktr-chart-cov{width:100%;aspect-ratio:1;border-radius:11px;overflow:hidden;background:linear-gradient(140deg,#2a2352,#171232);margin-bottom:8px}
.ktr-chart-cov img{width:100%;height:100%;object-fit:cover;display:block}
.ktr-chart-name{font-size:11.5px;font-weight:700;color:#eceafd;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ktr-chart-plays{margin-top:3px;font-size:10px;font-weight:700;color:#8f89bd;font-variant-numeric:tabular-nums}

/* альбомы карточками */
.ktr-alb-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:10px}
.ktr-alb{padding:0;border:1px solid rgba(148,130,255,.16);border-radius:16px;background:linear-gradient(165deg,rgba(30,25,60,.55),rgba(16,13,34,.55));cursor:pointer;text-align:left;overflow:hidden;transition:border-color .18s,transform .18s;animation:ktrChartIn .35s ease both}
.ktr-alb:hover{transform:translateY(-3px);border-color:rgba(139,124,255,.45);box-shadow:0 14px 32px rgba(96,78,235,.28)}
.ktr-alb-cov{display:block;width:100%;aspect-ratio:1;background:linear-gradient(140deg,#2a2352,#171232);position:relative;overflow:hidden}
/* v239: обложка альбома видна ЦЕЛИКОМ — contain вместо обрезки */
.ktr-alb-cov img{width:100%;height:100%;object-fit:contain;padding:7px;display:block;transition:transform .3s}
.ktr-alb:hover .ktr-alb-cov img{transform:scale(1.06)}
.ktr-alb-cov::after{content:"▶";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:22px;color:#fff;background:rgba(10,6,24,.4);opacity:0;transition:.2s}
.ktr-alb:hover .ktr-alb-cov::after{opacity:1}
.ktr-alb-name{display:block;padding:8px 10px 2px;font-size:11.5px;font-weight:800;color:#eceafd;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ktr-alb-cnt{display:block;padding:0 10px 9px;font-size:9.5px;color:#8f89bd}

/* альбомный вид / избранное: шапка */
.ktr-alb-head{display:flex;align-items:center;gap:16px;padding:14px;border-radius:20px;border:1px solid rgba(148,130,255,.2);background:linear-gradient(140deg,rgba(124,108,255,.14),rgba(34,211,238,.06) 60%,rgba(15,12,32,.4));margin-bottom:14px;animation:ktrChartIn .3s ease both}
.ktr-alb-head-cov{width:104px;height:104px;border-radius:16px;object-fit:contain;padding:6px;flex-shrink:0;background:linear-gradient(140deg,#2a2352,#171232);box-shadow:0 14px 34px rgba(4,2,18,.5)}
.ktr-alb-head-i{min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:7px}
.ktr-back{padding:5px 11px;border-radius:99px;border:1px solid rgba(148,130,255,.3);background:rgba(124,108,255,.08);color:#b9b2ea;font-size:11px;font-weight:700;cursor:pointer;transition:.15s}
.ktr-back:hover{color:#fff;background:rgba(124,108,255,.22)}
.ktr-alb-head-name{font-size:19px;font-weight:900;letter-spacing:-.01em;color:#fff;line-height:1.2;word-break:break-word}
.ktr-alb-head-sub{font-size:11px;color:#8f89bd}

/* новые карточки треков */
.ktr-track{display:flex;align-items:center;gap:12px;padding:8px 12px 8px 8px;border-radius:16px;border:1px solid rgba(148,130,255,.12);background:rgba(20,16,42,.5);transition:border-color .16s,transform .16s}
.ktr-track:hover{border-color:rgba(139,124,255,.35);background:rgba(124,108,255,.09);transform:translateX(2px)}
.ktr-track.playing{border-color:rgba(139,124,255,.5);background:rgba(124,108,255,.13);box-shadow:0 0 24px rgba(124,108,255,.14)}
.ktr-album-link{color:#a5f3fc;font-weight:700;text-decoration:none;border-bottom:1px dashed rgba(34,211,238,.35);cursor:pointer;transition:.15s}
.ktr-album-link:hover{color:#fff;border-bottom-color:#22d3ee}
.ktr-artist{color:#8f89bd}
.ktr-dot{color:#5a5486}
.ktr-kind{color:#c7c2f4;font-weight:700}
.ktr-dl-inline{display:inline-flex;align-items:center;gap:3px;margin-left:8px;color:#67e8f9;font-weight:700;font-variant-numeric:tabular-nums}
.ktr-plays{display:flex;align-items:center;gap:4px;flex-shrink:0;padding:5px 10px;border-radius:10px;border:1px solid rgba(148,130,255,.18);background:rgba(124,108,255,.08);color:#c7c2f4;font-size:11px;font-weight:800;font-variant-numeric:tabular-nums;transition:.15s}
.ktr-plays svg{color:#7c6cff}
.ktr-act.ktr-link{color:#67e8f9}
.ktr-act.ktr-link:hover{color:#fff;border-color:rgba(34,211,238,.5);background:rgba(34,211,238,.14)}
.ktr-btn.ktr-favview{color:#ffd166;border-color:rgba(255,209,102,.3);background:rgba(255,209,102,.07)}
.ktr-btn.ktr-favview i{font-style:normal;opacity:.85}
.ktr-btn.ktr-favview.on{background:linear-gradient(140deg,rgba(255,209,102,.3),rgba(255,159,67,.18));border-color:rgba(255,209,102,.55);color:#ffe9b3}

/* ── 4. Адаптив v232 ─────────────────────────────────────────────── */
@media (max-width:760px){
  .ktr-alb-head-cov{width:76px;height:76px}
  .ktr-alb-head-name{font-size:16px}
  .ktr-chart-tabs{margin-left:0;width:100%}
  .ktr-sec-h{flex-wrap:wrap}
  .ktr-plays{padding:4px 7px;font-size:10px}
  .ktr-track{gap:9px}
  /* в v232 кнопки «Радио» и «Избранное» в мини-плеере обязательны */
  #cvxMiniX .mnx-fav{display:flex}
  .mnx-panel{right:auto;left:50%;transform:translateX(-50%) translateY(14px) scale(.96)}
  .mnx-panel.open{transform:translateX(-50%) translateY(0) scale(1)}
  .mnx-row{animation:none}
}
@media (prefers-reduced-motion:reduce){
  .mnx-panel,.mnx-row,.ktr-chart-card,.ktr-alb,.mnx-btn,.fpx-empty-ic svg{animation:none!important;transition:none!important}
}

/* ═══════════════════════════════════════════════════════════════════
   CloudVox v233 — PlayerX CSS (добавления)
   1) Панели мини-плеера открываются ВНИЗ (+автопереворот вверх)
   2) Кнопка разворота в большой плеер
   3) Пульсация от бас-буста: большой плеер, мини-плеер, карточка трека
   4) Плеер подстраивается под обложку (--cpx-accent), 2026 — золото
   5) Карточки треков v3 (дизайн редизайна + перемотка в карточке)
   6) Подписка/подписчики, реакции, комментарии, шеринг в чат
   ═══════════════════════════════════════════════════════════════════ */

/* ── 1. Панели мини-плеера: ВНИЗ (по умолчанию) ──────────────────── */
.mnx-panel{bottom:auto;top:calc(100% + 12px);transform-origin:top center;transform:translateY(-14px) scale(.96)}
.mnx-panel.open{transform:translateY(0) scale(1)}
.mnx-panel.mnx-panel-up{top:auto;bottom:calc(100% + 12px);transform-origin:bottom center;transform:translateY(14px) scale(.96)}
.mnx-panel.mnx-panel-up.open{transform:translateY(0) scale(1)}

/* ── 2. Кнопка разворота в мини-плеере ───────────────────────────── */
.mnx-expand{color:#c7c2f4}
.mnx-expand:hover{color:#fff;border-color:rgba(139,124,255,.5);background:rgba(124,108,255,.24)}

/* ── 3. Пульсация от бас-буста ───────────────────────────────────── */
/* большой плеер: свечение оболочки и авроры от --cvx-bass */
html.cvx-bass-live .fpx-shell{box-shadow:0 30px 90px rgba(4,2,18,.7),0 0 0 1px rgba(var(--cpx-accent,124,108,255),.1) inset,0 0 calc(18px + var(--cvx-bass,0) * 55px) rgba(var(--cpx-accent,124,108,255),.22)}
html.cvx-bass-live .fpx-aurora{opacity:calc(.75 + var(--cvx-bass,0) * .8)}
html.cvx-bass-live .fpx-shell{animation:fpxBassBreath 1.1s ease-in-out infinite}
@keyframes fpxBassBreath{0%,100%{border-color:rgba(var(--cpx-accent,124,108,255),.22)}50%{border-color:rgba(var(--cpx-accent,124,108,255),calc(.22 + var(--cvx-bass,0) * .55))}}
/* мини-плеер: диск и свечение пульсируют */
html.cvx-bass-live #cvxMiniX.playing{box-shadow:0 10px 34px rgba(10,8,30,.55),0 0 calc(8px + var(--cvx-bass,0) * 34px) rgba(var(--cpx-accent,124,108,255),.5);transform:scale(calc(1 + var(--cvx-bass,0) * .025))}
html.cvx-bass-live #cvxMiniX.playing .mnx-disc{border-color:rgba(var(--cpx-accent,124,108,255),calc(.55 + var(--cvx-bass,0) * .45))}
html.cvx-bass-live #cvxMiniX.playing .mnx-name{text-shadow:0 0 calc(6px + var(--cvx-bass,0) * 12px) rgba(var(--cpx-accent,124,108,255),.9)}
/* карточка играющего трека (релизы) пульсирует от баса */
html.cvx-bass-live .ktr-track.playing{box-shadow:0 0 calc(10px + var(--cvx-bass,0) * 38px) rgba(var(--cpx-accent,124,108,255),.32);border-color:rgba(var(--cpx-accent,124,108,255),calc(.5 + var(--cvx-bass,0) * .5))}
html.cvx-bass-live .ktr-track.ktr-2026.playing{box-shadow:0 0 calc(10px + var(--cvx-bass,0) * 38px) rgba(255,190,80,.35);border-color:rgba(255,209,102,calc(.5 + var(--cvx-bass,0) * .5))}
/* карточки чата/голосовых с басом тоже пульсируют */
html.cvx-bass-live .av-audio-card[data-px-playing]{box-shadow:0 0 calc(8px + var(--cvx-bass,0) * 30px) rgba(124,108,255,.3);border-color:rgba(139,124,255,.55)}
html.cvx-bass-live .vmsg-wrap[data-px-playing]{box-shadow:0 0 calc(8px + var(--cvx-bass,0) * 26px) rgba(124,108,255,.3);border-color:rgba(139,124,255,.55)}

/* ── 4. Плеер под обложку: акцентный цвет --cpx-accent ───────────── */
.fpx-shell{--cpx-accent:124,108,255;border-color:rgba(var(--cpx-accent),.28)}
.fpx-shell .fpx-aurora{background:radial-gradient(ellipse at 50% 60%,rgba(var(--cpx-accent),.4),rgba(34,211,238,.12) 55%,transparent 75%)}
.fpx-shell .fpx-cover{background:radial-gradient(circle at 32% 28%,rgb(var(--cpx-accent)),rgba(var(--cpx-accent),.55) 45%,#241a54 78%,#151033)}
.fpx-shell .fpx-badge{border-color:rgba(var(--cpx-accent),.4);background:rgba(var(--cpx-accent),.12)}
.fpx-shell .fpx-cbtn:hover,.fpx-shell .fpx-ebtn:hover{border-color:rgba(var(--cpx-accent),.5)}
#cvxMiniX{--cpx-accent:124,108,255}
#cvxMiniX .mnx-disc{border-color:rgba(var(--cpx-accent),.5);box-shadow:0 0 16px rgba(var(--cpx-accent),.35)}
#cvxMiniX.playing .mnx-name{color:#fff}
#cvxMiniX.playing .mnx-fill{background:linear-gradient(90deg,rgb(var(--cpx-accent)),#22d3ee);box-shadow:0 0 8px rgba(var(--cpx-accent),.7)}
#cvxMiniX.playing .mnx-disc{border-color:rgba(var(--cpx-accent),.75);box-shadow:0 0 20px rgba(var(--cpx-accent),.55)}

/* 2026 — золотой акцент в плеере */
.fpx-shell.fpx-2026{--cpx-accent:255,193,94}
.fpx-shell.fpx-2026 .fpx-badge{color:#ffe9b3}
.fpx-shell.fpx-2026 .fpx-name::after{content:"★ 2026";display:inline-block;margin-left:9px;padding:2px 8px;border-radius:7px;font-size:9.5px;font-weight:900;letter-spacing:.08em;color:#2b1c04;background:linear-gradient(140deg,#ffd166,#ff9f43);vertical-align:middle;transform:translateY(-2px)}
#cvxMiniX.ktr-2026{--cpx-accent:255,193,94}

/* ── 5. Карточки треков v3 (дизайн редизайна) ────────────────────── */
.ktr-track.ktr-v3{position:relative;gap:12px;padding:10px 12px 13px 10px;border-radius:18px;border:1px solid rgba(148,130,255,.14);background:linear-gradient(165deg,rgba(30,25,60,.62),rgba(16,13,34,.62));overflow:hidden;transition:transform .16s,border-color .16s}
/* v239: тень ховера без transition — появляется мгновенно, без покадровой перерисовки при скролле */
.ktr-track.ktr-v3:hover{border-color:rgba(139,124,255,.4);background:linear-gradient(165deg,rgba(124,108,255,.12),rgba(16,13,34,.62));transform:translateY(-1px);box-shadow:0 10px 26px rgba(60,40,160,.22)}
.ktr-vinyl{position:absolute;top:-26px;right:-26px;width:86px;height:86px;border-radius:50%;border:10px solid rgba(148,130,255,.08);opacity:0;transition:.2s;pointer-events:none}
.ktr-track.playing .ktr-vinyl{opacity:1;animation:fpxSpin 6s linear infinite}
.ktr-cover{width:56px;height:56px;border-radius:14px}
.ktr-v3 .ktr-play{border-radius:14px;background:rgba(10,8,24,.5)}
.ktr-v3 .ktr-play:hover{background:rgba(var(--cpx-accent,124,108,255),.55);box-shadow:0 0 18px rgba(var(--cpx-accent,124,108,255),.55)}
.ktr-track.playing .ktr-play{opacity:1;background:rgba(var(--cpx-accent,124,108,255),.4);box-shadow:0 0 16px rgba(var(--cpx-accent,124,108,255),.5);animation:pxPulse 1.6s ease-in-out infinite}
@keyframes pxPulse{0%,100%{box-shadow:0 0 10px rgba(var(--cpx-accent,124,108,255),.35)}50%{box-shadow:0 0 22px rgba(var(--cpx-accent,124,108,255),.75)}}
.ktr-track.ktr-2026.playing .ktr-play{background:rgba(255,193,94,.4);box-shadow:0 0 16px rgba(255,193,94,.55);animation:pxPulse2026 1.6s ease-in-out infinite}
@keyframes pxPulse2026{0%,100%{box-shadow:0 0 10px rgba(255,193,94,.4)}50%{box-shadow:0 0 24px rgba(255,193,94,.8)}}
.ktr-v3 .ktr-title{font-size:14px;font-weight:800}
.ktr-v3 .ktr-sub{margin-top:2px;gap:7px}
.ktr-plays-inline{display:inline-flex;align-items:center;gap:3px;margin-left:auto;color:#8f89bd;font-size:10px;font-weight:800;font-variant-numeric:tabular-nums}
.ktr-plays-inline svg{color:#7c6cff}
.ktr-track.ktr-2026 .ktr-plays-inline svg{color:#ffbe5e}
/* реакции + комментарии */
.ktr-react-line{display:flex;align-items:center;gap:5px;margin-top:6px;flex-wrap:wrap}
.ktr-react-chip{display:inline-flex;align-items:center;gap:3px;padding:2.5px 8px;border-radius:99px;border:1px solid rgba(148,130,255,.2);background:rgba(124,108,255,.07);color:#b9b2ea;font-size:10px;font-weight:800;cursor:pointer;transition:.15s;line-height:1.5}
.ktr-react-chip:hover{background:rgba(124,108,255,.2);color:#fff;transform:translateY(-1px)}
.ktr-react-chip i{font-style:normal;font-size:9px;opacity:.75}
.ktr-react-chip.ktr-react-open{border-style:dashed}
.ktr-track.ktr-2026 .ktr-react-chip{border-color:rgba(255,193,94,.28);background:rgba(255,193,94,.07);color:#e8cf9b}
.ktr-track.ktr-2026 .ktr-react-chip:hover{background:rgba(255,193,94,.2);color:#fff}
/* перемотка в карточке */
.ktr-seek{position:absolute;left:12px;right:12px;bottom:5px;height:3px;border-radius:2px;background:rgba(148,130,255,.16);cursor:pointer;transition:height .12s;touch-action:none}
.ktr-seek:hover{height:6px}
.ktr-seek i{display:block;height:100%;width:0%;border-radius:2px;background:linear-gradient(90deg,#7c6cff,#22d3ee);box-shadow:0 0 8px rgba(124,108,255,.7);position:relative}
.ktr-track.ktr-2026 .ktr-seek i{background:linear-gradient(90deg,#ffd166,#ff9f43);box-shadow:0 0 8px rgba(255,193,94,.7)}
.ktr-seek.on i::after{content:"";position:absolute;right:-4px;top:50%;width:9px;height:9px;border-radius:50%;background:#fff;transform:translateY(-50%);box-shadow:0 0 8px rgba(124,108,255,.9)}
.ktr-track.ktr-2026 .ktr-seek.on i::after{box-shadow:0 0 8px rgba(255,193,94,.9)}
/* тег 2026 */
.ktr-tag-2026{display:inline-flex;align-items:center;padding:2px 7px;border-radius:7px;font-size:9px;font-weight:900;letter-spacing:.1em;color:#2b1c04;background:linear-gradient(140deg,#ffd166,#ff9f43);box-shadow:0 3px 10px rgba(255,159,67,.35);vertical-align:middle}
.ktr-tag-2026-cov{position:absolute;top:5px;left:5px;z-index:3;padding:2px 6px;font-size:8.5px}
.ktr-tag-2026-alb{position:absolute;top:7px;right:7px;z-index:3}
/* золотая карточка 2026 */
.ktr-track.ktr-2026{border-color:rgba(255,193,94,.3);background:linear-gradient(165deg,rgba(80,58,18,.4),rgba(30,22,12,.55))}
.ktr-track.ktr-2026:hover{border-color:rgba(255,193,94,.55);background:linear-gradient(165deg,rgba(255,193,94,.13),rgba(30,22,12,.55))}
.ktr-track.ktr-2026 .ktr-title{color:#ffe9b3}
.ktr-track.ktr-2026.playing{border-color:rgba(255,193,94,.6);background:linear-gradient(165deg,rgba(255,193,94,.13),rgba(30,22,12,.6));box-shadow:0 0 24px rgba(255,159,67,.16)}
/* подсказка секции «Все треки» */
.ktr-2026-hint{margin-left:auto;font-size:10px;color:#e8cf9b;font-weight:700;display:inline-flex;align-items:center;gap:5px}
.ktr-2026-hint i{font-style:normal;color:#ffbe5e;font-size:8px;animation:mnxLive 1.6s ease-in-out infinite}
/* динамическая подгрузка */
.ktr-more{display:flex;justify-content:center;padding:14px 0 4px}
/* без плашек: тонкая серая строка */
.ktr-foot{margin:-4px 0 2px;font-size:10.5px;color:#6f6a99;line-height:1.5}
.ktr-foot b{color:#8f89bd;font-weight:700}

/* альбомы: улучшенный вид */
.ktr-alb-grid{grid-template-columns:repeat(auto-fill,minmax(136px,1fr));gap:12px}
.ktr-alb{border-radius:18px}
.ktr-alb-cov::after{border-radius:0}
.ktr-alb-glyph{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:24px;color:#fff;background:rgba(10,6,24,.42);opacity:0;transition:.2s;z-index:2}
.ktr-alb:hover .ktr-alb-glyph{opacity:1}
.ktr-alb-2026 .ktr-alb-cov::before{content:"";position:absolute;inset:0;border-radius:0;box-shadow:inset 0 0 0 2px rgba(255,193,94,.55);z-index:2;pointer-events:none}
.ktr-alb-2026:hover{border-color:rgba(255,193,94,.55);box-shadow:0 14px 32px rgba(255,159,67,.22)}
.ktr-alb-meta{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:0 10px 10px}
.ktr-alb-cnt{display:block;padding:0;font-size:9.5px;color:#8f89bd}
.ktr-alb-artist{font-size:9px;color:#6f6a99;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ktr-alb-head-2026{border-color:rgba(255,193,94,.35);background:linear-gradient(140deg,rgba(255,193,94,.13),rgba(34,211,238,.05) 60%,rgba(15,12,32,.4))}
.ktr-alb-head-btns{display:flex;gap:8px;flex-wrap:wrap}

/* ── 6. Подписка/подписчики ──────────────────────────────────────── */
.ktr-hero-subrow{display:flex;align-items:center;gap:8px;margin-top:9px;flex-wrap:wrap}
.ktr-sub-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:11px;border:1px solid rgba(139,124,255,.45);background:linear-gradient(140deg,rgba(124,108,255,.28),rgba(91,75,212,.2));color:#fff;font-size:11.5px;font-weight:800;cursor:pointer;transition:.16s}
.ktr-sub-btn:hover{transform:translateY(-1px);box-shadow:0 8px 22px rgba(96,78,235,.4)}
.ktr-sub-btn.on{border-color:rgba(255,209,102,.5);background:linear-gradient(140deg,rgba(255,209,102,.22),rgba(255,159,67,.14));color:#ffe9b3}
.ktr-sub-btn.on svg{transform:rotate(180deg)}
.ktr-subs-cnt{display:inline-flex;align-items:center;gap:5px;padding:7px 12px;border-radius:11px;border:1px solid rgba(148,130,255,.22);background:rgba(124,108,255,.07);color:#b9b2ea;font-size:11px;font-weight:700;cursor:pointer;transition:.15s}
.ktr-subs-cnt:hover{background:rgba(124,108,255,.18);color:#fff}
.ktr-subs-cnt b{color:#c7c2f4;font-variant-numeric:tabular-nums}

/* ── 7. Модалки: подписчики / комментарии / шаринг ───────────────── */
#cvxSubsPop,#cvxSharePop,#cvxCommPop{position:fixed;inset:0;z-index:99995;display:none;align-items:center;justify-content:center;padding:18px}
#cvxSubsPop.open,#cvxSharePop.open,#cvxCommPop.open{display:flex}
.ksh-shell{position:relative;width:min(360px,100%);max-height:calc(100vh - 40px);display:flex;flex-direction:column;border-radius:22px;border:1px solid rgba(148,130,255,.25);background:linear-gradient(165deg,rgba(28,24,56,.98),rgba(14,12,30,.98));box-shadow:0 30px 90px rgba(4,2,18,.7);animation:fpxUp .3s cubic-bezier(.22,1.2,.36,1);overflow:hidden}
.ksh-head{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid rgba(148,130,255,.14);flex-shrink:0}
.ksh-title{flex:1;font-size:13.5px;font-weight:900;color:#eceafd;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ksh-title b{color:#c7c2f4;font-weight:800}
.ksh-cnt{padding:10px 16px 2px;font-size:11px;color:#8f89bd;font-weight:700}
.ksh-list{overflow-y:auto;padding:10px 12px 14px;display:flex;flex-direction:column;gap:4px;scrollbar-width:thin;scrollbar-color:rgba(124,108,255,.4) transparent}
.ksh-list::-webkit-scrollbar{width:5px}
.ksh-list::-webkit-scrollbar-thumb{background:rgba(124,108,255,.4);border-radius:3px}
.ksh-item{display:flex;align-items:center;gap:10px;padding:8px 9px;border-radius:12px;border:1px solid transparent;background:none;color:#eceafd;font-size:12px;font-weight:700;cursor:pointer;text-align:left;transition:.15s;animation:mnxRowIn .3s ease both}
.ksh-item:hover{background:rgba(124,108,255,.12);border-color:rgba(148,130,255,.2)}
.ksh-ava{width:30px;height:30px;flex-shrink:0;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:900;background:linear-gradient(140deg,rgba(124,108,255,.3),rgba(34,211,238,.18));color:#fff}
.ksh-nm{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ksh-arrow{color:#8f89bd;font-size:15px}
.ksh-g{padding:9px 9px 4px;font-size:9.5px;font-weight:900;letter-spacing:.12em;text-transform:uppercase;color:#6f6a99}
.ksh-empty{padding:26px 14px;text-align:center;color:#8f89bd;font-size:12px;line-height:1.6}
.ksh-note{padding:0 16px 13px;font-size:10.5px;color:#f59e0b;flex-shrink:0}
.ksh-sub2{padding:10px 16px 4px;font-size:11px;color:#9d97c9;word-break:break-all;max-height:54px;overflow:hidden}
.ksh-shell-share .ksh-list{min-height:180px}

/* комментарии */
.kcm-shell{position:relative;width:min(430px,100%);max-height:calc(100vh - 40px);display:flex;flex-direction:column;border-radius:22px;border:1px solid rgba(148,130,255,.25);background:linear-gradient(165deg,rgba(28,24,56,.98),rgba(14,12,30,.98));box-shadow:0 30px 90px rgba(4,2,18,.7);animation:fpxUp .3s cubic-bezier(.22,1.2,.36,1);overflow:hidden}
.kcm-head{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid rgba(148,130,255,.14);flex-shrink:0}
.kcm-title{flex:1;font-size:13px;font-weight:900;color:#eceafd;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kcm-list{flex:1;overflow-y:auto;padding:12px 14px;display:flex;flex-direction:column;gap:10px;min-height:150px;max-height:46vh;scrollbar-width:thin;scrollbar-color:rgba(124,108,255,.4) transparent}
.kcm-list::-webkit-scrollbar{width:5px}
.kcm-list::-webkit-scrollbar-thumb{background:rgba(124,108,255,.4);border-radius:3px}
.kcm-item{display:flex;gap:9px;animation:mnxRowIn .28s ease both}
.kcm-ava{width:30px;height:30px;flex-shrink:0;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:900;background:linear-gradient(140deg,rgba(124,108,255,.3),rgba(34,211,238,.18));color:#fff}
.kcm-b{min-width:0;flex:1;background:rgba(124,108,255,.07);border:1px solid rgba(148,130,255,.13);border-radius:4px 14px 14px 14px;padding:8px 11px}
.kcm-nm{font-size:11px;font-weight:800;color:#c7c2f4}
.kcm-nm i{font-style:normal;font-weight:600;font-size:9.5px;color:#6f6a99;margin-left:5px}
.kcm-tx{margin-top:2px;font-size:12px;line-height:1.5;color:#eceafd;word-break:break-word}
.kcm-empty{padding:30px 12px;text-align:center;color:#8f89bd;font-size:12px}
.kcm-note{padding:0 16px;font-size:10.5px;color:#f59e0b}
.kcm-inputrow{display:flex;gap:8px;padding:11px 14px 14px;border-top:1px solid rgba(148,130,255,.12);flex-shrink:0}
.kcm-inputrow input{flex:1;min-width:0;height:38px;border-radius:11px;border:1px solid rgba(148,130,255,.22);background:rgba(15,12,32,.55);color:#eceafd;padding:0 12px;font-size:12.5px;outline:0}
.kcm-inputrow input:focus{border-color:rgba(139,124,255,.55)}
.kcm-send{height:38px;padding:0 15px;border-radius:11px;border:0;background:linear-gradient(140deg,#7c6cff,#5b4bd4);color:#fff;font-size:12px;font-weight:800;cursor:pointer;transition:.15s}
.kcm-send:hover{box-shadow:0 8px 20px rgba(96,78,235,.45)}

/* реакции: поповер */
#cvxReactPop{position:fixed;inset:0;z-index:99996;pointer-events:none;display:none}
#cvxReactPop.open{display:block}
#cvxReactPop .krp-shell{position:fixed;width:262px;border-radius:16px;border:1px solid rgba(148,130,255,.3);background:linear-gradient(165deg,rgba(28,24,56,.99),rgba(14,12,30,.99));box-shadow:0 20px 50px rgba(4,2,18,.65);padding:11px;pointer-events:auto;animation:fpxIn .16s ease}
.krp-h{font-size:10.5px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:#8f89bd;margin-bottom:8px}
.krp-row{display:grid;grid-template-columns:repeat(6,1fr);gap:4px}
.krp-ri{display:flex;flex-direction:column;align-items:center;gap:2px;padding:7px 2px 5px;border-radius:11px;border:1px solid rgba(148,130,255,.14);background:rgba(124,108,255,.06);cursor:pointer;transition:.14s}
.krp-ri:hover{background:rgba(124,108,255,.2);transform:translateY(-2px)}
.krp-ri.on{border-color:rgba(139,124,255,.65);background:rgba(124,108,255,.24);box-shadow:0 0 10px rgba(124,108,255,.3)}
.krp-e{font-size:16px;line-height:1}
.krp-ri b{font-size:9px;color:#b9b2ea;font-variant-numeric:tabular-nums}
.krp-note{margin-top:8px;font-size:10px;color:#f59e0b;min-height:12px;text-align:center}

/* ── 8. Адаптив v233 ─────────────────────────────────────────────── */
@media (max-width:760px){
  .mnx-panel{right:auto;left:50%;width:min(330px,calc(100vw - 24px));transform:translateX(-50%) translateY(-14px) scale(.96)}
  .mnx-panel.open{transform:translateX(-50%) translateY(0) scale(1)}
  .mnx-panel.mnx-panel-up{transform:translateX(-50%) translateY(14px) scale(.96)}
  .mnx-panel.mnx-panel-up.open{transform:translateX(-50%) translateY(0) scale(1)}
  .ktr-2026-hint{display:none}
  .ktr-v3 .ktr-actions{gap:4px}
  .ktr-act{width:28px;height:28px}
  .ktr-cover{width:50px;height:50px}
  .ktr-album-link{max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .ksh-shell,.kcm-shell{width:min(96vw,430px)}
  .krp-row{grid-template-columns:repeat(6,1fr)}
}
@media (prefers-reduced-motion:reduce){
  .ktr-track.playing .ktr-play,.ktr-track.playing .ktr-vinyl,.ktr-2026-hint i,html.cvx-bass-live .fpx-shell{animation:none!important}
  .ktr-seek,.ktr-seek i{transition:none!important}
}
/* ═══════════════════ v234 ═══════════════════
   1) ПУЛЬСАЦИЯ БАСА — ярче и красивее
   2) ЧАРТ — карусель со стрелками и медалями
   3) КАРТОЧКА ТРЕКА v4 — одна кнопка «Оригинал»
   4) ТРЕК В ЧАТЕ — карточка с плеером (.cvx-tc)
   ════════════════════════════════════════════ */

/* ── 1. Пульсация баса ─────────────────────────────────────────── */
html.cvx-bass-live body::after{opacity:calc(var(--cvx-bass,0) * .9);background:radial-gradient(ellipse at 50% 118%,rgba(var(--cpx-accent,124,108,255),.42),transparent 58%),radial-gradient(ellipse at 6% -18%,rgba(34,211,238,.22),transparent 52%),radial-gradient(ellipse at 94% -14%,rgba(236,72,153,.16),transparent 52%)}
.fpx-cover{transform:scale(calc(1 + var(--cvx-bass,0) * .085));box-shadow:0 18px 50px rgba(50,30,140,.5),0 0 calc(12px + var(--cvx-bass,0) * 85px) rgba(var(--cpx-accent,124,108,255),calc(.16 + var(--cvx-bass,0) * .6)),0 0 0 1px rgba(148,130,255,.25) inset}
html.cvx-bass-live .fpx-cover{animation:fpxCovPulse 1.05s ease-in-out infinite}
@keyframes fpxCovPulse{0%,100%{filter:brightness(1) saturate(1)}50%{filter:brightness(calc(1 + var(--cvx-bass,0) * .24)) saturate(calc(1 + var(--cvx-bass,0) * .35))}}
html.cvx-bass-live .fpx-shell{box-shadow:0 30px 90px rgba(4,2,18,.7),0 0 0 1px rgba(var(--cpx-accent,124,108,255),.12) inset,0 0 calc(24px + var(--cvx-bass,0) * 70px) rgba(var(--cpx-accent,124,108,255),calc(.2 + var(--cvx-bass,0) * .35))}
html.cvx-bass-live #cvxMiniX.playing{transform:scale(calc(1 + var(--cvx-bass,0) * .05));box-shadow:0 10px 34px rgba(10,8,30,.55),0 0 calc(12px + var(--cvx-bass,0) * 55px) rgba(var(--cpx-accent,124,108,255),calc(.4 + var(--cvx-bass,0) * .55))}
html.cvx-bass-live #cvxMiniX.playing .mnx-disc{border-color:rgba(var(--cpx-accent,124,108,255),calc(.6 + var(--cvx-bass,0) * .4));box-shadow:0 0 calc(8px + var(--cvx-bass,0) * 30px) rgba(var(--cpx-accent,124,108,255),calc(.45 + var(--cvx-bass,0) * .5))}
html.cvx-bass-live .ktr-track.playing{box-shadow:0 0 calc(14px + var(--cvx-bass,0) * 48px) rgba(var(--cpx-accent,124,108,255),calc(.32 + var(--cvx-bass,0) * .42)),0 0 0 1px rgba(var(--cpx-accent,124,108,255),calc(.35 + var(--cvx-bass,0) * .4)) inset;border-color:rgba(var(--cpx-accent,124,108,255),calc(.55 + var(--cvx-bass,0) * .45))}
html.cvx-bass-live .ktr-track.playing .ktr-cover{box-shadow:0 0 calc(6px + var(--cvx-bass,0) * 38px) rgba(var(--cpx-accent,124,108,255),calc(.4 + var(--cvx-bass,0) * .5))}
html.cvx-bass-live .ktr-track.ktr-2026.playing{box-shadow:0 0 calc(14px + var(--cvx-bass,0) * 48px) rgba(255,190,80,calc(.4 + var(--cvx-bass,0) * .38)),0 0 0 1px rgba(255,209,102,calc(.35 + var(--cvx-bass,0) * .4)) inset;border-color:rgba(255,209,102,calc(.6 + var(--cvx-bass,0) * .4))}
html.cvx-bass-live .ktr-track.ktr-2026.playing .ktr-cover{box-shadow:0 0 calc(6px + var(--cvx-bass,0) * 38px) rgba(255,200,90,calc(.5 + var(--cvx-bass,0) * .45))}
.ktr-track.playing .ktr-cover::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:2;background:radial-gradient(circle at 50% 55%,rgba(var(--cpx-accent,124,108,255),calc(var(--cvx-bass,0) * .5)),transparent 74%)}
.ktr-track.ktr-2026.playing .ktr-cover::after{background:radial-gradient(circle at 50% 55%,rgba(255,200,90,calc(var(--cvx-bass,0) * .55)),transparent 74%)}
html.cvx-bass-live .av-audio-card[data-px-playing]{box-shadow:0 0 calc(10px + var(--cvx-bass,0) * 40px) rgba(124,108,255,calc(.35 + var(--cvx-bass,0) * .4));border-color:rgba(139,124,255,.6)}
html.cvx-bass-live .vmsg-wrap[data-px-playing]{box-shadow:0 0 calc(10px + var(--cvx-bass,0) * 36px) rgba(124,108,255,calc(.35 + var(--cvx-bass,0) * .4));border-color:rgba(139,124,255,.6)}

/* ── 2. Чарт: карусель + стрелки + медали ──────────────────────── */
.ktr-chart-wrap{position:relative;display:flex;align-items:stretch;gap:6px}
.ktr-chart-wrap .ktr-charts{flex:1;min-width:0;scroll-snap-type:x mandatory;scrollbar-width:none;padding:2px 2px 12px}
.ktr-chart-wrap .ktr-charts::-webkit-scrollbar{display:none}
.ktr-chart-nav{flex:0 0 30px;align-self:center;width:30px;height:56px;border-radius:12px;border:1px solid rgba(148,130,255,.28);background:rgba(28,22,58,.9);color:#cfc9f5;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.15s;z-index:3}
.ktr-chart-nav:hover{background:rgba(124,108,255,.32);color:#fff;border-color:rgba(139,124,255,.65);box-shadow:0 6px 18px rgba(96,78,235,.35)}
.ktr-chart-nav:active{transform:scale(.93)}
.ktr-chart-card{flex:0 0 158px;overflow:hidden}
.ktr-chart-card .ktr-chart-cov{position:relative}
.ktr-chart-card .ktr-chart-cov::after{content:"▶";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:22px;color:#fff;text-shadow:0 4px 16px rgba(0,0,0,.6);background:rgba(10,6,30,.38);opacity:0;transition:.18s}
.ktr-chart-card:hover .ktr-chart-cov::after{opacity:1}
.ktr-chart-card .ktr-chart-sub{margin-top:2px;font-size:9.5px;font-weight:600;color:#8f89bd;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ktr-chart-card.m1{border-color:rgba(255,200,90,.55);background:linear-gradient(165deg,rgba(84,60,16,.55),rgba(30,22,44,.68));box-shadow:0 8px 26px rgba(255,159,67,.14)}
.ktr-chart-card.m2{border-color:rgba(203,213,225,.45);background:linear-gradient(165deg,rgba(60,66,84,.5),rgba(24,22,44,.68))}
.ktr-chart-card.m3{border-color:rgba(205,127,50,.48);background:linear-gradient(165deg,rgba(84,44,20,.5),rgba(28,20,42,.68))}
.ktr-chart-card.m1 .ktr-chart-pos,.ktr-chart-card.m2 .ktr-chart-pos,.ktr-chart-card.m3 .ktr-chart-pos{font-size:12.5px;min-width:25px;height:25px;padding:0 6px}
.ktr-chart-card.m1 .ktr-chart-pos{background:linear-gradient(140deg,#ffd166,#ff9f43);color:#2b1c04;box-shadow:0 4px 14px rgba(255,159,67,.55)}
.ktr-chart-card.m2 .ktr-chart-pos{background:linear-gradient(140deg,#e2e8f0,#94a3b8);color:#1e2430;box-shadow:0 4px 14px rgba(148,163,184,.45)}
.ktr-chart-card.m3 .ktr-chart-pos{background:linear-gradient(140deg,#e6a26a,#b4612d);color:#2b1403;box-shadow:0 4px 14px rgba(180,97,45,.45)}
.ktr-chart-2026tag{position:absolute;top:8px;right:8px;z-index:2}
.ktr-chart-card.playing{border-color:rgba(var(--cpx-accent,124,108,255),.7);box-shadow:0 0 22px rgba(var(--cpx-accent,124,108,255),.35)}

/* ── 3. Карточка трека v4 ──────────────────────────────────────── */
.ktr-track.ktr-v3{position:relative;padding:10px 12px 12px 12px;border-radius:18px;gap:13px;background:linear-gradient(150deg,rgba(32,26,66,.55),rgba(15,12,32,.55))}
.ktr-track.ktr-v3::before{content:"";position:absolute;left:0;top:16%;bottom:16%;width:3px;border-radius:0 3px 3px 0;background:transparent;transition:.2s}
.ktr-track.ktr-v3.playing::before{background:linear-gradient(180deg,#7c6cff,#22d3ee)}
.ktr-track.ktr-2026.playing::before{background:linear-gradient(180deg,#ffd166,#ff9f43)}
.ktr-track.ktr-v3:hover{border-color:rgba(139,124,255,.42);background:linear-gradient(150deg,rgba(40,32,80,.62),rgba(18,14,40,.62));transform:translateY(-1px);box-shadow:0 10px 26px rgba(60,40,160,.22)}
.ktr-v3 .ktr-cover{width:60px;height:60px;border-radius:14px}
.ktr-v3 .ktr-title{font-size:13.5px}
.ktr-react-chip b{font-weight:800;font-variant-numeric:tabular-nums}
.ktr-react-chip.cnt-zero{opacity:.55}
.ktr-dl-orig{display:inline-flex;align-items:center;gap:5px;padding:6px 11px;border-radius:99px;border:1px solid rgba(148,130,255,.32);background:rgba(124,108,255,.14);color:#d9d4ff;font-size:10.5px;font-weight:800;cursor:pointer;transition:.15s;white-space:nowrap}
.ktr-dl-orig:hover{background:rgba(124,108,255,.34);color:#fff;border-color:rgba(139,124,255,.68);box-shadow:0 6px 16px rgba(96,78,235,.3)}
.ktr-dl-orig svg{flex-shrink:0}
.ktr-dl-orig:active{transform:scale(.95)}
.ktr-alb-comm{display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:700;color:#9b94cf;font-variant-numeric:tabular-nums}
.ktr-flash{animation:ktrFlash 1.2s ease 2}
@keyframes ktrFlash{0%,100%{box-shadow:0 0 0 0 rgba(124,108,255,0)}40%{box-shadow:0 0 0 3px rgba(124,108,255,.65),0 0 34px rgba(124,108,255,.5)}}

/* ── 4. Трек в чате: карточка с плеером ────────────────────────── */
.cvx-tc{display:flex;gap:10px;padding:9px;border-radius:16px;border:1px solid rgba(148,130,255,.3);background:linear-gradient(150deg,rgba(38,30,80,.5),rgba(16,12,36,.58));max-width:330px;margin:2px 0}
.cvx-tc-2026{border-color:rgba(255,209,102,.5);background:linear-gradient(150deg,rgba(74,56,18,.45),rgba(24,18,40,.58))}
.cvx-tc-cov{position:relative;width:58px;height:58px;border-radius:12px;overflow:hidden;flex-shrink:0;background:linear-gradient(140deg,#2a2352,#171232)}
.cvx-tc-cov img{width:100%;height:100%;object-fit:cover;display:block}
.cvx-tc-play{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;border:0;background:rgba(8,5,24,.38);color:#fff;cursor:pointer;transition:.15s;padding:0}
.cvx-tc-play:hover{background:rgba(8,5,24,.18)}
.cvx-tc-play .ic-pause{display:none}
.cvx-tc.playing .cvx-tc-play .ic-play{display:none}
.cvx-tc.playing .cvx-tc-play .ic-pause{display:block}
.cvx-tc-eq{position:absolute;bottom:5px;left:0;right:0;display:none;justify-content:center;gap:2.5px;height:11px;align-items:flex-end}
.cvx-tc-eq i{width:3px;height:4px;border-radius:2px;background:#22d3ee;animation:cvxTcEq .9s ease-in-out infinite}
.cvx-tc-eq i:nth-child(2){animation-delay:.15s;background:#7c6cff}
.cvx-tc-eq i:nth-child(3){animation-delay:.3s;background:#ff5ca8}
.cvx-tc-eq i:nth-child(4){animation-delay:.45s;background:#a78bfa}
.cvx-tc.playing .cvx-tc-eq{display:flex}
@keyframes cvxTcEq{0%,100%{height:3px}50%{height:11px}}
.cvx-tc.playing .cvx-tc-cov{box-shadow:0 0 18px rgba(124,108,255,.55)}
.cvx-tc.playing .cvx-tc-cov::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 55%,rgba(124,108,255,.35),transparent 75%)}
.cvx-tc-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.cvx-tc-t{font-size:12px;font-weight:800;color:#eceafd;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cvx-tc-s{font-size:10px;color:#9b94cf;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cvx-tc-bar{position:relative;height:5px;border-radius:3px;background:rgba(148,130,255,.18);cursor:pointer;flex-shrink:0;touch-action:none}
.cvx-tc-bar i{position:absolute;left:0;top:0;bottom:0;width:0;border-radius:3px;background:linear-gradient(90deg,#7c6cff,#22d3ee)}
.cvx-tc-row{display:flex;align-items:center;justify-content:space-between;gap:8px}
.cvx-tc-time{font-size:9.5px;color:#8f89bd;font-variant-numeric:tabular-nums;min-width:26px}
.cvx-tc-open{border:0;background:rgba(124,108,255,.16);color:#cfc9f5;font-size:9.5px;font-weight:700;padding:3px 8px;border-radius:99px;cursor:pointer;transition:.15s;white-space:nowrap}
.cvx-tc-open:hover{background:rgba(124,108,255,.36);color:#fff}

/* ── мобильный вид ─────────────────────────────────────────────── */
@media (max-width:760px){
  .ktr-chart-nav{width:26px;flex-basis:26px;height:46px}
  .ktr-chart-card{flex-basis:142px}
  .cvx-tc{max-width:100%}
  .ktr-dl-orig span{display:none}
  .ktr-dl-orig{padding:6px 8px}
}
@media (prefers-reduced-motion:reduce){
  html.cvx-bass-live .fpx-cover,.ktr-flash{animation:none!important}
}

/* ═══════════════ v235 ═══════════════════════════════════════════ */

/* ── секция «Треки 2026» — золотой акцент, в начале ─────────────── */
.ktr-sec-2026{position:relative;border-radius:20px;padding:12px 12px 13px;border:1px solid rgba(255,193,94,.22);background:linear-gradient(160deg,rgba(64,48,16,.34),rgba(28,20,42,.42) 55%,rgba(16,13,34,.46));overflow:hidden}
.ktr-sec-2026::before{content:"";position:absolute;inset:-1px;border-radius:20px;padding:1px;background:linear-gradient(120deg,rgba(255,209,102,.55),rgba(255,159,67,.08) 30%,rgba(255,209,102,.28) 70%,rgba(255,159,67,.5));-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
.ktr-sec-2026::after{content:"";position:absolute;left:-40px;top:-70px;width:220px;height:170px;background:radial-gradient(closest-side,rgba(255,193,94,.16),transparent);pointer-events:none}
.ktr-sec-ic-2026{color:#ffd166;text-shadow:0 0 14px rgba(255,193,94,.8)}
.ktr-sec-2026-t{background:linear-gradient(92deg,#ffe9b3,#ffd166 45%,#ff9f43);-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:900;letter-spacing:.02em}
.ktr-sec-n-2026{color:#ffce7a;border-color:rgba(255,193,94,.35);background:rgba(255,193,94,.1)}

/* ── карточка трека v5: крупнее, стекляннее, светятся грани ─────── */
.ktr-track.ktr-v3{padding:11px 13px 17px 11px;border-radius:20px;border-color:rgba(148,130,255,.17);background:linear-gradient(155deg,rgba(34,28,68,.66),rgba(15,12,34,.68));box-shadow:0 2px 14px rgba(5,2,18,.35),inset 0 1px 0 rgba(255,255,255,.05)}
.ktr-track.ktr-v3:hover{transform:translateY(-2px);border-color:rgba(139,124,255,.5);box-shadow:0 14px 34px rgba(70,45,180,.3),inset 0 1px 0 rgba(255,255,255,.07)}
.ktr-track.ktr-v3.ktr-2026{border-color:rgba(255,193,94,.3);background:linear-gradient(155deg,rgba(66,50,20,.5),rgba(22,16,36,.66))}
.ktr-track.ktr-v3.ktr-2026:hover{border-color:rgba(255,209,102,.62);box-shadow:0 14px 34px rgba(180,120,20,.26),inset 0 1px 0 rgba(255,230,170,.08)}
.ktr-track.ktr-v3.playing{border-color:rgba(139,124,255,.62);box-shadow:0 0 0 1px rgba(124,108,255,.25),0 12px 36px rgba(96,78,235,.3)}
.ktr-track.ktr-v3.ktr-2026.playing{border-color:rgba(255,209,102,.68);box-shadow:0 0 0 1px rgba(255,193,94,.3),0 12px 36px rgba(200,140,30,.3)}
.ktr-v3 .ktr-cover{width:64px;height:64px;border-radius:15px;box-shadow:0 4px 16px rgba(0,0,0,.4)}
.ktr-v3 .ktr-cover::after{content:"";position:absolute;inset:0;border-radius:15px;background:linear-gradient(160deg,rgba(255,255,255,.14),transparent 42%);pointer-events:none}
.ktr-v3 .ktr-cover img{transition:transform .35s ease}
.ktr-v3:hover .ktr-cover img{transform:scale(1.06)}
.ktr-v3 .ktr-title{font-size:14.5px;font-weight:800;letter-spacing:.01em}
.ktr-v3 .ktr-sub{margin-top:4px;font-size:11.5px}
.ktr-album-link{color:#c9c3f7!important}
.ktr-2026 .ktr-album-link{color:#ffd98f!important}
.ktr-v3 .ktr-actions{gap:6px}
.ktr-act{width:30px;height:30px;border-radius:11px;display:inline-flex;align-items:center;justify-content:center;border:1px solid rgba(148,130,255,.22);background:rgba(124,108,255,.1);color:#c9c3f7;cursor:pointer;transition:.15s}
.ktr-act:hover{background:rgba(124,108,255,.3);color:#fff;border-color:rgba(139,124,255,.55);transform:translateY(-1px)}
.ktr-act.ktr-fav.on{color:#ffd166;border-color:rgba(255,193,94,.5);background:rgba(255,193,94,.13)}
.ktr-dl-orig{padding:7px 14px;border:0;background:linear-gradient(94deg,#6d5cff,#8f7bff);color:#fff;font-size:11px;box-shadow:0 4px 14px rgba(96,78,235,.36)}
.ktr-dl-orig:hover{background:linear-gradient(94deg,#7d6bff,#a08fff);box-shadow:0 8px 22px rgba(96,78,235,.5);transform:translateY(-1px)}
.ktr-2026 .ktr-dl-orig{background:linear-gradient(94deg,#e0a63f,#ffcf70);color:#241a05;box-shadow:0 4px 14px rgba(220,160,50,.4)}
.ktr-2026 .ktr-dl-orig:hover{background:linear-gradient(94deg,#f0b44c,#ffd984);box-shadow:0 8px 22px rgba(230,170,60,.5)}

/* ── перемотка: заметная полоса, большая зона касания ────────────── */
.ktr-seek{left:0;right:0;bottom:0;height:16px;display:flex;align-items:flex-end;padding:0 13px 7px;border-radius:0 0 20px 20px;background:linear-gradient(180deg,transparent,rgba(124,108,255,.05));transition:background .15s}
.ktr-seek:hover{background:linear-gradient(180deg,transparent,rgba(124,108,255,.11))}
.ktr-seek .ktr-seek-t{position:relative;display:block;width:100%;height:4px;border-radius:3px;background:rgba(148,130,255,.2);transition:height .12s;overflow:visible}
.ktr-seek:hover .ktr-seek-t{height:7px}
.ktr-seek .ktr-seek-t i{display:block;height:100%;width:0%;border-radius:3px;background:linear-gradient(90deg,#7c6cff,#22d3ee);box-shadow:0 0 10px rgba(124,108,255,.75);position:relative}
.ktr-track.ktr-2026 .ktr-seek .ktr-seek-t i{background:linear-gradient(90deg,#ffd166,#ff9f43);box-shadow:0 0 10px rgba(255,193,94,.8)}
.ktr-seek.on .ktr-seek-t i::after{content:"";position:absolute;right:-4px;top:50%;width:10px;height:10px;border-radius:50%;background:#fff;transform:translateY(-50%);box-shadow:0 0 10px rgba(124,108,255,.95)}
.ktr-track.ktr-2026 .ktr-seek.on .ktr-seek-t i::after{box-shadow:0 0 10px rgba(255,193,94,.95)}

/* ── чарт: стеклянные карточки со свечением ─────────────────────── */
.ktr-chart-card{border-radius:18px;border-color:rgba(148,130,255,.2);background:linear-gradient(160deg,rgba(34,28,68,.66),rgba(15,12,34,.66));box-shadow:0 3px 14px rgba(5,2,18,.3),inset 0 1px 0 rgba(255,255,255,.05)}
.ktr-chart-card:hover{transform:translateY(-3px);border-color:rgba(139,124,255,.55);box-shadow:0 14px 30px rgba(70,45,180,.32)}
.ktr-chart-card.m1{border-color:rgba(255,209,102,.55);background:linear-gradient(160deg,rgba(84,62,18,.55),rgba(24,17,34,.66))}
.ktr-chart-card.m2{border-color:rgba(214,214,224,.4)}
.ktr-chart-card.m3{border-color:rgba(205,127,50,.42)}
.ktr-chart-card:hover .ktr-chart-cov img{transform:scale(1.07)}
.ktr-chart-cov img{transition:transform .35s ease}
.ktr-chart-plays{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:99px;background:rgba(124,108,255,.14);border:1px solid rgba(148,130,255,.24);color:#cfc9f5;font-weight:800}
.ktr-chart-card.m1 .ktr-chart-plays{background:rgba(255,193,94,.13);border-color:rgba(255,193,94,.32);color:#ffd98f}

/* ── чат-карточка трека: зона перемотки больше ───────────────────── */
.cvx-tc{position:relative;overflow:hidden}
/* v238: мёртвый CSS первой карточки v236 (.cvx-tc-bar/.cvx-tc-play) удалён —
   JS больше не строит эти узлы (карточка — .cvx-tc2) */

/* ── большое: подложка плеера не блокирует страницу ────────────────
   При открытом большом плеере можно перематывать карточку, ставить
   реакции и пользоваться сайтом — оверлей пропускает клики. */
#cvxPlayerX{pointer-events:none}
#cvxPlayerX .fpx-backdrop{pointer-events:none!important;background:rgba(6,5,16,.42);backdrop-filter:none;-webkit-backdrop-filter:none}
#cvxPlayerX .fpx-shell{pointer-events:auto}

/* ── мобильный вид v235 ─────────────────────────────────────────── */
@media (max-width:760px){
  /* карточка: обложка+описание в первой строке, кнопки — во второй */
  .ktr-track.ktr-v3{flex-wrap:wrap;row-gap:9px;padding:10px 12px 20px 10px}
  .ktr-v3 .ktr-cover{width:54px;height:54px}
  .ktr-v3 .ktr-meta{flex:1 1 calc(100% - 70px);min-width:0}
  .ktr-v3 .ktr-title{font-size:13.5px}
  .ktr-v3 .ktr-sub{gap:6px;flex-wrap:nowrap;overflow:hidden;white-space:nowrap}
  .ktr-v3 .ktr-sub > *{flex-shrink:0}
  .ktr-v3 .ktr-sub .ktr-album-link,.ktr-v3 .ktr-sub .ktr-artist{overflow:hidden;text-overflow:ellipsis;min-width:0;flex-shrink:1 1 auto}
  .ktr-v3 .ktr-react-line{flex-wrap:wrap;gap:4px}
  .ktr-v3 .ktr-actions{flex:1 1 100%;justify-content:flex-end;gap:6px}
  .ktr-act{width:28px;height:28px}
  .ktr-dl-orig{margin-left:auto;padding:6px 12px}
  .ktr-seek{height:18px;padding:0 12px 8px}
  .ktr-sec-2026{padding:10px 9px 12px}
  .ktr-chart-plays{padding:2px 6px;font-size:9.5px}
}
@media (prefers-reduced-motion:reduce){
  .ktr-seek .ktr-seek-t i::after{transition:none!important}
}

/* ════════════════════════════════════════════════════════════════
   v236: 1) редизайн карточки трека в чате (.cvx-tc2)
          2) ЦВЕТНЫЕ пульсации баса — кольца разных цветов (.cvx-ring)
          3) число комментариев на кнопке — заметный бейдж
   ════════════════════════════════════════════════════════════════ */

/* хосты колец должны быть позиционированы */
.ktr-track{position:relative}

/* ── карточка трека в чате: редизайн ─────────────────────────── */
.cvx-tc.cvx-tc2{position:relative;display:flex;flex-direction:column;gap:10px;padding:12px;border-radius:18px;max-width:360px;overflow:visible;border:1px solid rgba(148,130,255,.32);background:linear-gradient(155deg,rgba(44,34,94,.9),rgba(16,12,36,.94));box-shadow:0 10px 34px rgba(6,3,22,.45),0 0 0 1px rgba(255,255,255,.03) inset}
.cvx-tc.cvx-tc2::before{content:"";position:absolute;inset:0;border-radius:18px;background:linear-gradient(120deg,rgba(124,108,255,.16),transparent 38%,transparent 62%,rgba(34,211,238,.1));pointer-events:none}
.cvx-tc2.cvx-tc-2026{border-color:rgba(255,209,102,.52);background:linear-gradient(155deg,rgba(86,62,20,.6),rgba(26,18,40,.74));box-shadow:0 10px 34px rgba(6,3,22,.5),0 0 26px rgba(255,190,80,.13)}
.cvx-tc2.cvx-tc-2026::before{background:linear-gradient(120deg,rgba(255,193,94,.18),transparent 40%,transparent 62%,rgba(255,120,80,.1))}
.cvxt-top{display:flex;gap:12px;align-items:center;position:relative}
.cvxt-covwrap{position:relative;flex-shrink:0}
.cvxt-cov{width:68px;height:68px;border-radius:16px;overflow:hidden;background:linear-gradient(140deg,#2a2352,#171232);box-shadow:0 6px 18px rgba(0,0,0,.45),0 0 0 1px rgba(255,255,255,.06) inset;transition:box-shadow .25s}
.cvxt-cov img{width:100%;height:100%;object-fit:cover;display:block}
.cvxt-noart{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:26px;color:rgba(255,255,255,.72)}
.cvxt-covwrap .cvxt-play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:35px;height:35px;border-radius:50%;border:0;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;color:#fff;background:rgba(10,6,30,.62);transition:.16s;z-index:3}
.cvxt-covwrap .cvxt-play:hover{transform:translate(-50%,-50%) scale(1.12);background:rgba(10,6,30,.34)}
.cvxt-covwrap .cvxt-play .ic-pause{display:none}
.cvx-tc2.playing .cvxt-covwrap .cvxt-play .ic-play{display:none}
.cvx-tc2.playing .cvxt-covwrap .cvxt-play .ic-pause{display:block}
.cvx-tc2.playing .cvxt-cov{box-shadow:0 6px 18px rgba(0,0,0,.45),0 0 22px rgba(124,108,255,.55)}
.cvx-tc2.cvx-tc-2026.playing .cvxt-cov{box-shadow:0 6px 18px rgba(0,0,0,.45),0 0 24px rgba(255,190,80,.6)}
.cvxt-eq{position:absolute;bottom:4px;left:0;right:0;display:none;justify-content:center;gap:2.5px;height:12px;align-items:flex-end;z-index:4;pointer-events:none}
.cvxt-eq i{width:3px;border-radius:2px;background:#22d3ee;box-shadow:0 0 6px rgba(34,211,238,.8);animation:cvxTcEq .9s ease-in-out infinite}
.cvxt-eq i:nth-child(2){animation-delay:.15s;background:#7c6cff;box-shadow:0 0 6px rgba(124,108,255,.8)}
.cvxt-eq i:nth-child(3){animation-delay:.3s;background:#ff5ca8;box-shadow:0 0 6px rgba(255,92,168,.8)}
.cvxt-eq i:nth-child(4){animation-delay:.45s;background:#a3e635;box-shadow:0 0 6px rgba(163,230,53,.8)}
.cvx-tc2.playing .cvxt-eq{display:flex}
.cvxt-ringhost{position:absolute;inset:-7px;pointer-events:none;z-index:5}
.cvxt-mid{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}
.cvxt-t{font-size:13.5px;font-weight:800;color:#f1eefe;letter-spacing:.1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 8px rgba(0,0,0,.35)}
.cvx-tc2.cvx-tc-2026 .cvxt-t{color:#ffe3a6}
.cvxt-s{font-size:10.5px;color:#9b94cf;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cvx-tc2.cvx-tc-2026 .cvxt-s{color:#cfa96a}
.cvxt-art{color:#b9b2ea;font-weight:700}
.cvx-tc2.cvx-tc-2026 .cvxt-art{color:#ffd166}
.cvxt-bar{display:block;padding:5px 0 3px;cursor:pointer;touch-action:none}
.cvxt-track{display:block;height:5px;border-radius:3px;background:rgba(148,130,255,.2);position:relative}
.cvxt-fill{position:absolute;left:0;top:0;bottom:0;width:0;border-radius:3px;background:linear-gradient(90deg,#7c6cff,#22d3ee);box-shadow:0 0 10px rgba(124,108,255,.5)}
.cvx-tc2.cvx-tc-2026 .cvxt-fill{background:linear-gradient(90deg,#ffb84d,#ff8a5c);box-shadow:0 0 10px rgba(255,184,77,.5)}
.cvxt-thumb{position:absolute;right:-5px;top:50%;width:10px;height:10px;border-radius:50%;background:#fff;box-shadow:0 1px 6px rgba(0,0,0,.5);transform:translateY(-50%) scale(0);transition:transform .15s}
.cvxt-bar:hover .cvxt-thumb,.cvxt-bar:active .cvxt-thumb{transform:translateY(-50%) scale(1)}
.cvxt-times{display:flex;justify-content:space-between;font-size:9.5px;color:#8f89bd;font-variant-numeric:tabular-nums}
.cvxt-actions{display:flex;gap:8px;align-items:center;position:relative;z-index:2}
.cvxt-dl{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:12px;padding:8px 12px;font-size:11.5px;font-weight:800;color:#fff;cursor:pointer;background:linear-gradient(135deg,#7c6cff,#5a8dff);box-shadow:0 6px 16px rgba(124,108,255,.35);transition:.16s;font-family:inherit}
.cvxt-dl:hover{filter:brightness(1.12);transform:translateY(-1px)}
.cvxt-dl:active{transform:translateY(0) scale(.98)}
.cvx-tc2.cvx-tc-2026 .cvxt-dl{background:linear-gradient(135deg,#ffb84d,#ff7849);box-shadow:0 6px 16px rgba(255,150,60,.35)}
.cvxt-open{display:inline-flex;align-items:center;justify-content:center;gap:5px;border:1px solid rgba(148,130,255,.35);border-radius:12px;padding:8px 11px;font-size:11px;font-weight:700;color:#cfc9f5;background:rgba(124,108,255,.1);cursor:pointer;transition:.16s;white-space:nowrap;font-family:inherit}
.cvxt-open:hover{background:rgba(124,108,255,.28);color:#fff}
.cvx-tc2.cvx-tc-2026 .cvxt-open{border-color:rgba(255,209,102,.4);color:#ffd9a0;background:rgba(255,193,94,.08)}
.cvx-tc2.cvx-tc-2026 .cvxt-open:hover{background:rgba(255,193,94,.22);color:#fff}
html.cvx-bass-live .cvx-tc2.playing{border-color:rgba(var(--cpx-accent,124,108,255),.6)}
html.cvx-bass-live .cvx-tc2.cvx-tc-2026.playing{border-color:rgba(255,209,102,.65)}

/* ── цветные кольца-пульсации баса ───────────────────────────── */
.cvx-ring{position:absolute;margin:0;padding:0;pointer-events:none;border:3px solid currentColor;opacity:0;transform:scale(.82);box-shadow:0 0 24px currentColor,inset 0 0 14px currentColor;animation:cvxRingOut 1s cubic-bezier(.22,.68,.36,1) forwards;will-change:transform,opacity}
@keyframes cvxRingOut{0%{opacity:.95;transform:scale(.85)}65%{opacity:.4}100%{opacity:0;transform:scale(1.75)}}
@keyframes cvxHueSpin{to{filter:hue-rotate(360deg)}}
/* многоцветная аура у большого плеера и мини-плеера при басе */
html.cvx-bass-live #cvxPlayerX.playing .fpx-cover-zone::before{content:"";position:absolute;width:190px;height:190px;left:50%;top:0;transform:translateX(-50%);border-radius:50%;background:conic-gradient(from 0deg,#ffd166,#ff4fd8,#22d3ee,#a3e635,#8b5cf6,#ffd166);-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 4px),#000 calc(100% - 3px));mask:radial-gradient(farthest-side,transparent calc(100% - 4px),#000 calc(100% - 3px));opacity:calc(.28 + var(--cvx-bass,0)*.72);animation:cvxHueSpin 2.8s linear infinite;pointer-events:none;z-index:4}
html.cvx-bass-live #cvxMiniX.playing .mnx-disc::after{content:"";position:absolute;inset:-5px;border-radius:50%;background:conic-gradient(from 0deg,#ffd166,#ff4fd8,#22d3ee,#a3e635,#8b5cf6,#ffd166);-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 2px));mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 2px));opacity:calc(.32 + var(--cvx-bass,0)*.6);animation:cvxHueSpin 2.8s linear infinite;pointer-events:none}

/* ── число комментариев на кнопке — заметный бейдж ───────────── */
.ktr-react-chip.ktr-comm-open{gap:5px;padding:3px 9px;font-size:10.5px}
.ktr-react-chip.ktr-comm-open b{min-width:15px;padding:1.5px 6px;border-radius:99px;background:rgba(124,108,255,.22);color:#ded9ff;font-size:10px;font-weight:800;text-align:center;line-height:1.3}
.ktr-react-chip.ktr-comm-open:hover b{background:rgba(124,108,255,.45);color:#fff}
.ktr-track.ktr-2026 .ktr-react-chip.ktr-comm-open b{background:rgba(255,193,94,.2);color:#ffe3a6}
.ktr-track.ktr-2026 .ktr-react-chip.ktr-comm-open:hover b{background:rgba(255,193,94,.4);color:#fff}

/* ── мобильная версия ────────────────────────────────────────── */
@media (max-width:760px){
  .cvx-tc.cvx-tc2{max-width:100%;padding:10px;border-radius:16px}
  .cvxt-cov{width:58px;height:58px;border-radius:14px}
  .cvxt-covwrap .cvxt-play{width:32px;height:32px}
  .cvxt-t{font-size:12.5px}
  .cvxt-dl{padding:7px 10px;font-size:11px}
  .cvxt-open{padding:7px 9px;font-size:10.5px}
}
@media (prefers-reduced-motion:reduce){
  .cvx-ring,html.cvx-bass-live #cvxPlayerX.playing .fpx-cover-zone::before,html.cvx-bass-live #cvxMiniX.playing .mnx-disc::after{animation:none!important;opacity:0!important}
}
/* ══════════════════════════════════════════════════════════════════════
   CloudVox playerx — блок v237
   1) карточка трека в чате ПУЛЬСИРУЕТ сама (в такт, всегда при игре),
      с басом — реагирует на уровень баса (--cvx-bass) + кольца
   2) кнопка «Бас» на карточке трека в чате
   3) производительность «Музыки и игр»: content-visibility
   ══════════════════════════════════════════════════════════════════════ */

/* ── пульсация карточки в чате ─────────────────────────────────────── */
@keyframes cvxtBeat{0%,100%{transform:scale(1)}50%{transform:scale(1.014)}}
.cvx-tc.cvx-tc2.playing{animation:cvxtBeat 1.12s ease-in-out infinite;box-shadow:0 10px 34px rgba(6,3,22,.45),0 0 0 1px rgba(255,255,255,.03) inset,0 0 30px rgba(124,108,255,.22)}
.cvx-tc.cvx-tc2.cvx-tc-2026.playing{box-shadow:0 10px 34px rgba(6,3,22,.5),0 0 34px rgba(255,190,80,.26)}
/* с басом: живая реакция на уровень баса вместо статичной анимации */
html.cvx-bass-live .cvx-tc.cvx-tc2.playing{animation:none;transform:scale(calc(1 + var(--cvx-bass,0) * .05));transition:transform .09s linear;box-shadow:0 10px 34px rgba(6,3,22,.45),0 0 0 1px rgba(255,255,255,.03) inset,0 0 calc(18px + var(--cvx-bass,0) * 48px) rgba(var(--cpx-accent,124,108,255),calc(.22 + var(--cvx-bass,0) * .55))}
html.cvx-bass-live .cvx-tc.cvx-tc2.cvx-tc-2026.playing{box-shadow:0 10px 34px rgba(6,3,22,.5),0 0 calc(20px + var(--cvx-bass,0) * 54px) rgba(255,190,80,calc(.24 + var(--cvx-bass,0) * .6))}
html.cvx-bass-live .cvx-tc2.playing .cvxt-cov{transform:scale(calc(1 + var(--cvx-bass,0) * .1));transition:transform .09s linear}
html.cvx-bass-live .ktr-track.playing .ktr-cover{transform:scale(calc(1 + var(--cvx-bass,0) * .075));transition:transform .09s linear}

/* ── кнопка «Бас» на карточке трека в чате ─────────────────────────── */
.cvxt-bass{display:inline-flex;align-items:center;justify-content:center;gap:5px;border:1px solid rgba(148,130,255,.35);border-radius:12px;padding:8px 11px;font-size:11px;font-weight:700;color:#cfc9f5;background:rgba(124,108,255,.1);cursor:pointer;transition:.16s;white-space:nowrap;font-family:inherit}
.cvxt-bass:hover{background:rgba(124,108,255,.28);color:#fff}
.cvxt-bass.on{border-color:transparent;background:linear-gradient(135deg,#7c6cff,#22d3ee);color:#fff;box-shadow:0 4px 14px rgba(124,108,255,.45)}
.cvx-tc2.cvx-tc-2026 .cvxt-bass{border-color:rgba(255,209,102,.4);color:#ffd9a0;background:rgba(255,193,94,.08)}
.cvx-tc2.cvx-tc-2026 .cvxt-bass:hover{background:rgba(255,193,94,.22);color:#fff}
.cvx-tc2.cvx-tc-2026 .cvxt-bass.on{border-color:transparent;background:linear-gradient(135deg,#ffb84d,#ff7849);color:#fff;box-shadow:0 4px 14px rgba(255,150,60,.45)}

/* ── производительность раздела «Музыка и игры» ────────────────────── */
/* карточки вне вьюпорта не рендерятся браузером — раздел перестаёт тормозить */
/* v248: intrinsic 96→125px — реальная высота ktr-v3; старые 96px давали
   релайаут при каждом появлении карточки (96→125) — дёрганье скролла */
.ktr-track{content-visibility:auto;contain-intrinsic-size:auto 125px}
.ktr-alb{content-visibility:auto;contain-intrinsic-size:auto 132px}
.ktr-track .ktr-cover img,.ktr-chart-card img{decoding:async}

@media (max-width:760px){
  .cvxt-bass{padding:7px 9px;font-size:10.5px}
}
@media (prefers-reduced-motion:reduce){
  .cvx-tc.cvx-tc2.playing{animation:none!important}
  html.cvx-bass-live .cvx-tc.cvx-tc2.playing,html.cvx-bass-live .cvx-tc2.playing .cvxt-cov,html.cvx-bass-live .ktr-track.playing .ktr-cover{transform:none!important}
}

/* ═══════════════════════════════════════════════════════════════════════
   CloudVox v238 — редизайн карточек в чате + бас-эффекты
   1) .av-audio-card.avx2 — новая карточка загруженного аудио (винил-диск)
   2) бас-пульсация (--cvx-bass) на карточках: .cvx-tc2 и .av-audio-card
   ═══════════════════════════════════════════════════════════════════════ */

/* ── 1. Карточка загруженного аудио (avx2) ───────────────────────────── */
.av-audio-card.avx2{position:relative;display:flex;flex-direction:column;gap:10px;padding:12px;border-radius:18px;max-width:360px;margin-top:4px;overflow:visible;border:1px solid rgba(148,130,255,.32);background:linear-gradient(155deg,rgba(44,34,94,.88),rgba(16,12,36,.94));box-shadow:0 10px 32px rgba(6,3,22,.42),0 0 0 1px rgba(255,255,255,.03) inset;transition:border-color .2s,box-shadow .2s}
.av-audio-card.avx2::before{content:"";position:absolute;inset:0;border-radius:18px;background:linear-gradient(120deg,rgba(124,108,255,.15),transparent 40%,transparent 62%,rgba(34,211,238,.09));pointer-events:none}
.av-audio-card.avx2:hover{border-color:rgba(148,130,255,.5);box-shadow:0 12px 36px rgba(6,3,22,.5),0 0 24px rgba(124,108,255,.14)}
.avx2-top{display:flex;gap:12px;align-items:center;position:relative;z-index:1}
.avx2-discwrap{position:relative;flex-shrink:0;width:64px;height:64px}
.avx2-disc{position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle at 32% 28%,#8f7dff,#5b4bd4 45%,#241a54 78%,#151033);box-shadow:0 6px 18px rgba(0,0,0,.45),0 0 0 1px rgba(255,255,255,.07) inset;display:flex;align-items:center;justify-content:center;overflow:hidden;transition:box-shadow .25s}
.avx2-disc::after{content:"";position:absolute;inset:24%;border-radius:50%;background:radial-gradient(circle at 40% 35%,rgba(255,255,255,.32),rgba(255,255,255,.06) 60%,transparent);box-shadow:0 0 0 1px rgba(255,255,255,.14) inset}
.avx2-disc-core{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.92);filter:drop-shadow(0 2px 6px rgba(0,0,0,.5))}
.av-audio-card[data-px-playing] .avx2-disc{animation:avx2Spin 3.4s linear infinite;box-shadow:0 6px 18px rgba(0,0,0,.45),0 0 26px rgba(124,108,255,.6)}
.av-audio-card[data-px-playing] .avx2-disc::after{animation:avx2Spin 3.4s linear infinite}
@keyframes avx2Spin{to{transform:rotate(360deg)}}
.avx2-discwrap .avx2-play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:30px;height:30px;border-radius:50%;border:0;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;color:#fff;background:rgba(10,6,30,.65);transition:.16s;z-index:3}
.avx2-discwrap .avx2-play:hover{transform:translate(-50%,-50%) scale(1.14);background:rgba(10,6,30,.35)}
.avx2-discwrap .avx2-play .ic-pause{display:none}
.av-audio-card[data-px-playing] .avx2-play .ic-play{display:none}
.av-audio-card[data-px-playing] .avx2-play .ic-pause{display:block}
.avx2-eq{position:absolute;bottom:2px;left:0;right:0;display:none;justify-content:center;gap:2.5px;height:11px;align-items:flex-end;z-index:4;pointer-events:none}
.avx2-eq i{width:3px;border-radius:2px;background:#22d3ee;box-shadow:0 0 6px rgba(34,211,238,.8);animation:cvxTcEq .9s ease-in-out infinite}
.avx2-eq i:nth-child(2){animation-delay:.15s;background:#7c6cff;box-shadow:0 0 6px rgba(124,108,255,.8)}
.avx2-eq i:nth-child(3){animation-delay:.3s;background:#ff5ca8;box-shadow:0 0 6px rgba(255,92,168,.8)}
.av-audio-card[data-px-playing] .avx2-eq{display:flex}
.avx2-ringhost{position:absolute;inset:-7px;pointer-events:none;z-index:5}
.avx2-mid{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.avx2-name{font-size:13px;font-weight:800;color:#f1eefe;letter-spacing:.1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 8px rgba(0,0,0,.35)}
.avx2-meta{font-size:10px;color:#9b94cf;display:flex;align-items:center;gap:6px;font-variant-numeric:tabular-nums}
.avx2-meta .avx2-dot{width:3px;height:3px;border-radius:50%;background:rgba(155,148,207,.55);flex-shrink:0}
.avx2-fmt{padding:1px 6px;border-radius:7px;background:rgba(124,108,255,.16);color:#c9c2f7;font-weight:800;font-size:9px;letter-spacing:.4px;text-transform:uppercase}
.avx2-bar{display:block;padding:5px 0 3px;cursor:pointer;touch-action:none}
.avx2-track{display:block;height:5px;border-radius:3px;background:rgba(148,130,255,.2);position:relative}
.avx2-fill{position:absolute;left:0;top:0;bottom:0;width:0;border-radius:3px;background:linear-gradient(90deg,#7c6cff,#22d3ee);box-shadow:0 0 10px rgba(124,108,255,.5);transition:width .12s linear}
.avx2-thumb{position:absolute;right:-5px;top:50%;width:10px;height:10px;border-radius:50%;background:#fff;box-shadow:0 1px 6px rgba(0,0,0,.5);transform:translateY(-50%) scale(0);transition:transform .15s}
.avx2-bar:hover .avx2-thumb,.avx2-bar:active .avx2-thumb{transform:translateY(-50%) scale(1)}
.avx2-actions{display:flex;gap:8px;align-items:center;position:relative;z-index:2}
.avx2-dl{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:12px;padding:8px 12px;font-size:11.5px;font-weight:800;color:#fff;cursor:pointer;background:linear-gradient(135deg,#7c6cff,#5a8dff);box-shadow:0 6px 16px rgba(124,108,255,.35);transition:.16s;text-decoration:none;font-family:inherit}
.avx2-dl:hover{filter:brightness(1.12);transform:translateY(-1px);color:#fff}
.avx2-dl:active{transform:translateY(0) scale(.98)}
.avx2-bass{display:inline-flex;align-items:center;justify-content:center;gap:5px;border:1px solid rgba(148,130,255,.35);border-radius:12px;padding:8px 11px;font-size:11px;font-weight:700;color:#cfc9f5;background:rgba(124,108,255,.1);cursor:pointer;transition:.16s;white-space:nowrap;font-family:inherit}
.avx2-bass:hover{background:rgba(124,108,255,.28);color:#fff}
.avx2-bass.on{border-color:rgba(255,209,102,.65);color:#ffd166;background:rgba(255,190,80,.14);box-shadow:0 0 14px rgba(255,190,80,.25)}
/* состояние загрузки (upload) не меняем — старые классы работают */
.av-audio-card.avx2 .av-upload-progress{border-radius:10px;overflow:hidden}

/* ── голосовые: иконка паузы вместо текстовой подмены ─────────────────── */
.vmsg-wrap .vmsg-play .ic-pause{display:none}
.vmsg-wrap[data-px-playing] .vmsg-play .vmsg-play-icon{display:none}
.vmsg-wrap[data-px-playing] .vmsg-play .ic-pause{display:block}

/* ── 2. БАС-ЭФФЕКТ на карточках в чате (как в большом плеере) ────────── */
/* карточка kontrolar-трека: JS кладёт --cvx-bass 0..1 на .cvx-tc2.playing */
.cvx-tc2.playing .cvxt-cov{transform:scale(calc(1 + var(--cvx-bass,0) * .07));transition:transform .07s linear}
html.cvx-bass-live .cvx-tc2.playing{border-color:rgba(var(--cpx-accent,124,108,255),calc(.4 + var(--cvx-bass,0) * .6));box-shadow:0 10px 34px rgba(6,3,22,.45),0 0 calc(10px + var(--cvx-bass,0) * 48px) rgba(var(--cpx-accent,124,108,255),calc(.26 + var(--cvx-bass,0) * .5))}
html.cvx-bass-live .cvx-tc2.playing .cvxt-cov{box-shadow:0 6px 18px rgba(0,0,0,.45),0 0 calc(8px + var(--cvx-bass,0) * 42px) rgba(var(--cpx-accent,124,108,255),calc(.45 + var(--cvx-bass,0) * .55))}
html.cvx-bass-live .cvx-tc2.playing .cvxt-t{text-shadow:0 0 calc(4px + var(--cvx-bass,0) * 14px) rgba(var(--cpx-accent,124,108,255),.9)}
html.cvx-bass-live .cvx-tc2.cvx-tc-2026.playing{border-color:rgba(255,209,102,calc(.5 + var(--cvx-bass,0) * .5));box-shadow:0 10px 34px rgba(6,3,22,.5),0 0 calc(10px + var(--cvx-bass,0) * 48px) rgba(255,190,80,calc(.3 + var(--cvx-bass,0) * .5))}
html.cvx-bass-live .cvx-tc2.cvx-tc-2026.playing .cvxt-cov{box-shadow:0 6px 18px rgba(0,0,0,.45),0 0 calc(8px + var(--cvx-bass,0) * 42px) rgba(255,200,90,calc(.5 + var(--cvx-bass,0) * .45))}
/* карточка загруженного аудио: --cvx-bass кладётся на .av-audio-card */
.av-audio-card[data-px-playing] .avx2-discwrap{transform:scale(calc(1 + var(--cvx-bass,0) * .06));transition:transform .07s linear}
html.cvx-bass-live .av-audio-card[data-px-playing]{border-color:rgba(var(--cpx-accent,124,108,255),calc(.4 + var(--cvx-bass,0) * .6));box-shadow:0 10px 32px rgba(6,3,22,.42),0 0 calc(10px + var(--cvx-bass,0) * 44px) rgba(var(--cpx-accent,124,108,255),calc(.26 + var(--cvx-bass,0) * .5))}
html.cvx-bass-live .av-audio-card[data-px-playing] .avx2-disc{box-shadow:0 6px 18px rgba(0,0,0,.45),0 0 calc(8px + var(--cvx-bass,0) * 40px) rgba(var(--cpx-accent,124,108,255),calc(.5 + var(--cvx-bass,0) * .5))}
html.cvx-bass-live .av-audio-card[data-px-playing] .avx2-name{text-shadow:0 0 calc(4px + var(--cvx-bass,0) * 14px) rgba(var(--cpx-accent,124,108,255),.9)}
/* акцент карточки = цвет обложки играющего трека (JS копирует --cpx-accent) */
.cvx-tc2{--cpx-accent:124,108,255}

@media (max-width:760px){
  .av-audio-card.avx2{max-width:100%}
  .avx2-discwrap{width:56px;height:56px}
  .avx2-name{font-size:12.5px}
}
@media (prefers-reduced-motion:reduce){
  .av-audio-card[data-px-playing] .avx2-disc,.av-audio-card[data-px-playing] .avx2-disc::after{animation:none!important}
  html.cvx-bass-live .av-audio-card[data-px-playing],html.cvx-bass-live .cvx-tc2.playing{animation:none!important}
}

/* ═══════════════════════════════════════════════════════════════════════
   CloudVox v241 — виртуализация и «топ» у названия:
   1) «топ» — рядом с названием трека на карточке
   2) виртуализация: детектор ударных (кик/снейр/хэт), исполнитель+
      название на экране, кнопка «Эффекты» (закрепление панели),
      «на весь экран» (⛶), новые эффекты «3D Эмодзи» (колонки/машины/
      барабан под бас и ударные) и «Дискотека», режим «Случайно»
   v240: «топ» на карточках; пауза по клику; оверлей #cvxVizFS
   v239: время в карточках; «Загрузить ещё»; «Показать все альбомы»;
      авто-открытие плеера; скролл-оптимизация без blur, каскад ktrIn
   ═══════════════════════════════════════════════════════════════════════ */

/* ── плавное появление (каскад новых партий треков / альбомов) ─── */
@keyframes ktrIn{from{opacity:0;transform:translateY(12px) scale(.985)}to{opacity:1;transform:none}}

/* ── кнопка авто-открытия вверху полного плеера ────────────────── */
.fpx-auto-tgl{display:inline-flex;align-items:center;gap:7px;padding:6px 12px;border-radius:999px;border:1px solid rgba(148,130,255,.32);background:rgba(18,14,42,.55);color:#cfc9f5;font-size:10.5px;font-weight:800;cursor:pointer;transition:border-color .16s,background .16s;white-space:nowrap;font-family:inherit}
.fpx-auto-tgl:hover{border-color:rgba(139,124,255,.6);background:rgba(124,108,255,.16);color:#fff}
.fat-dot{width:7px;height:7px;border-radius:50%;background:#10b981;box-shadow:0 0 8px rgba(16,185,129,.75);flex-shrink:0;transition:.16s}
.fpx-auto-tgl.off{border-color:rgba(255,184,77,.45);color:#ffd9a0}
.fpx-auto-tgl.off .fat-dot{background:#f59e0b;box-shadow:0 0 8px rgba(245,158,11,.75)}

/* ── время трека в карточке ────────────────────────────────────── */
.ktr-time{display:inline-flex;align-items:center;margin-left:auto;color:#8f89bd;font-size:10px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:.02em}
.ktr-time.live{color:rgba(var(--cpx-accent,124,108,255),1)}
.ktr-track.ktr-2026 .ktr-time.live{color:#ffbe5e}
.ktr-time:empty{display:none}

/* ── кнопка «Виртуализация» ────────────────────────────────────── */
.ktr-vizbtn{position:relative}
.ktr-vizbtn.on{color:#fff;border-color:transparent;background:linear-gradient(135deg,#7c6cff,#22d3ee)!important;box-shadow:0 0 14px rgba(124,108,255,.55)}
.ktr-vizbtn.on svg{stroke:#fff}
.ktr-track.ktr-2026 .ktr-vizbtn.on{background:linear-gradient(135deg,#ffb84d,#ff7849)!important;box-shadow:0 0 14px rgba(255,150,60,.55)}


/* ── «Загрузить ещё» ───────────────────────────────────────────── */
.ktr-more-btn{display:inline-flex;align-items:center;gap:7px;padding:10px 22px;border-radius:13px}
.ktr-more-btn i{font-style:normal;color:#c7c2f4;background:rgba(124,108,255,.2);border-radius:99px;padding:1px 8px;font-size:10px;font-weight:800}
.ktr-more-btn:hover{border-color:rgba(139,124,255,.55);background:rgba(124,108,255,.16)}

/* ── v241: «топ» — рядом с названием трека + цветовой акцент ───── */
.ktr-top-tag{flex-shrink:0;display:inline-flex;align-items:center;padding:2px 7px;border-radius:7px;font-size:8.5px;font-weight:900;letter-spacing:.12em;text-transform:uppercase;color:#fff;background:linear-gradient(140deg,rgba(var(--tc,124,108,255),1),rgba(var(--tc,124,108,255),.62));box-shadow:0 2px 9px rgba(var(--tc,124,108,255),.45);text-shadow:0 1px 2px rgba(0,0,0,.3)}
.ktr-title.ktr-has-top{display:flex;align-items:center;gap:6px}
.ktr-title .ktr-title-t{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ktr-track.ktr-top{border-color:rgba(var(--tc,124,108,255),.42)}
.ktr-track.ktr-top:hover{border-color:rgba(var(--tc,124,108,255),.78)}
.ktr-track.ktr-top.playing{border-color:rgba(var(--tc,124,108,255),.85);box-shadow:0 0 24px rgba(var(--tc,124,108,255),.3)}
html.cvx-bass-live .ktr-track.ktr-top.playing{box-shadow:0 0 calc(12px + var(--cvx-bass,0) * 40px) rgba(var(--tc,124,108,255),.35);border-color:rgba(var(--tc,124,108,255),calc(.6 + var(--cvx-bass,0) * .4))}

/* ── v240: виртуализация на весь экран (#cvxVizFS) ─────────────── */
#cvxVizFS{position:fixed;inset:0;z-index:99999;display:none;background:#05030d;opacity:0;transition:opacity .3s ease}
#cvxVizFS.open{display:block;opacity:1}
#cvxVizFS canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.kvfs-top{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;gap:12px;padding:14px 16px;transition:opacity .4s ease,transform .4s ease}
.kvfs-name{flex:1;min-width:0;font-size:13.5px;font-weight:800;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:0 2px 14px rgba(0,0,0,.85)}
.kvfs-close{flex-shrink:0;width:36px;height:36px;border-radius:12px;border:1px solid rgba(148,130,255,.3);background:rgba(16,12,38,.72);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.16s}
.kvfs-close:hover{background:rgba(124,108,255,.4);border-color:rgba(148,130,255,.6)}
.kvfs-dock{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);display:flex;gap:6px;padding:7px;border-radius:16px;border:1px solid rgba(148,130,255,.26);background:rgba(13,10,32,.8);max-width:calc(100vw - 24px);overflow-x:auto;transition:opacity .4s ease,transform .4s ease;scrollbar-width:none}
.kvfs-dock::-webkit-scrollbar{display:none}
.kvfs-chip{flex-shrink:0;padding:8px 15px;border-radius:11px;border:1px solid transparent;background:transparent;color:#b9b2ea;font-size:11.5px;font-weight:800;cursor:pointer;transition:.15s;white-space:nowrap;font-family:inherit}
.kvfs-chip:hover{color:#fff;background:rgba(124,108,255,.22)}
.kvfs-chip.on{color:#fff;background:linear-gradient(135deg,#7c6cff,#22d3ee);box-shadow:0 4px 16px rgba(124,108,255,.45)}
.kvfs-hint{position:absolute;left:50%;bottom:66px;transform:translateX(-50%);color:#7f79ad;font-size:10.5px;font-weight:700;letter-spacing:.03em;white-space:nowrap;pointer-events:none;transition:opacity .4s ease;text-shadow:0 1px 8px rgba(0,0,0,.8)}
/* ── v241: кнопки «Эффекты»/«На весь экран», исполнитель+название ── */
.kvfs-fxbtn{flex-shrink:0;display:flex;align-items:center;gap:6px;height:36px;padding:0 13px;border-radius:12px;border:1px solid rgba(148,130,255,.3);background:rgba(16,12,38,.72);color:#dcd6ff;font-size:12px;font-weight:800;cursor:pointer;transition:.16s;font-family:inherit}
.kvfs-fxbtn:hover{background:rgba(124,108,255,.4);border-color:rgba(148,130,255,.6)}
.kvfs-fxbtn.on{background:linear-gradient(135deg,#7c6cff,#22d3ee);border-color:transparent;color:#fff}
.kvfs-fsbtn{flex-shrink:0;width:36px;height:36px;border-radius:12px;border:1px solid rgba(148,130,255,.3);background:rgba(16,12,38,.72);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.16s;font-family:inherit}
.kvfs-fsbtn:hover{background:rgba(124,108,255,.4);border-color:rgba(148,130,255,.6)}
/* v242: кнопка чувствительности — компактный чип */
.kvfs-senbtn{flex-shrink:0;height:36px;padding:0 10px;font-size:12px}
/* панель, закреплённая кнопкой «Эффекты», не прячется в простое */
#cvxVizFS.kvfs-idle.kvfs-pin .kvfs-dock{opacity:1;transform:translateX(-50%);pointer-events:auto}
/* v242: исполнитель/название рисуются в canvas СВЕРХУ (paintTitle) — DOM-блок .kvfs-track убран */
/* панель управления прячется в простое — фон остаётся чистым (F11) */
#cvxVizFS.kvfs-idle .kvfs-top{opacity:0;transform:translateY(-8px);pointer-events:none}
#cvxVizFS.kvfs-idle .kvfs-dock{opacity:0;transform:translateX(-50%) translateY(10px);pointer-events:none}
#cvxVizFS.kvfs-idle .kvfs-hint{opacity:0}
#cvxVizFS.kvfs-idle{cursor:none}
@media (max-width:560px){
  .kvfs-chip{padding:7px 11px;font-size:10.5px}
  .kvfs-hint{display:none}
  .kvfs-fxbtn span{display:none}
  .kvfs-fxbtn{width:36px;padding:0;justify-content:center}
  .kvfs-senbtn{width:auto;padding:0 8px;font-size:10.5px}
}

/* ── альбомы: скрытые карточки + кнопка «Показать все альбомы» ─── */
.ktr-alb-hide{display:none!important}
.ktr-alb-more-row{display:flex;justify-content:center;padding:13px 0 3px}
.ktr-alb-more{padding:9px 20px;border-radius:12px;font-size:11.5px}

/* ── адаптив ───────────────────────────────────────────────────── */
@media (max-width:560px){
  .fpx-auto-tgl .fat-t{max-width:110px;overflow:hidden;text-overflow:ellipsis}
}
@media (max-width:420px){
  .fpx-auto-tgl .fat-t{display:none}
  .fpx-auto-tgl{padding:7px 9px}
}
@media (prefers-reduced-motion:reduce){
  .ktr-track.ktr-v3,.ktr-alb{animation:none!important}
}

/* ═══════════════════════════════════════════════════════════════════
   CloudVox v242 — БАС-БУСТ: КРУЧЕ
   1) Окно бас-буста теперь ПОВЕРХ мини-чата (z-index 300060 против
      299995 у #cvxFloatWin; раньше открывалось за окном чата).
   2) УДАР баса: --cvx-hit (1→0, ~130 мс) — вспышка на обложке,
      кик свечения карточки, всплеск эквалайзера.
   3) ЭКВАЛАЙЗЕР на карточке реагирует на РЕАЛЬНЫЙ уровень баса
      (--cvx-bass), а не только на статичную анимацию.
   4) ДВОЙНАЯ волна на сильных ударах: .cvx-ring + быстрая
      .cvx-ring-fast.
   5) Трек-карточки в МИНИ-ЧАТЕ: компактная версия .cvx-tc2.
   ═══════════════════════════════════════════════════════════════════ */

/* ── вспышка удара на карточке трека в чате ─────────────────────── */
.cvx-tc2.playing .cvxt-cov{filter:saturate(calc(1 + var(--cvx-hit,0) * .35)) brightness(calc(1 + var(--cvx-hit,0) * .3))}
.cvx-tc2.playing .cvxt-cov::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:radial-gradient(circle at 50% 42%,rgba(255,255,255,calc(var(--cvx-hit,0) * .3)),transparent 64%);opacity:1;transition:opacity .05s linear}
.cvx-tc2.playing{box-shadow:0 10px 34px rgba(6,3,22,.45),0 0 0 1px rgba(255,255,255,.03) inset,0 0 calc(10px + (var(--cvx-bass,0) + var(--cvx-hit,0) * 1.4) * 50px) rgba(var(--cpx-accent,124,108,255),calc(.26 + (var(--cvx-bass,0) + var(--cvx-hit,0) * .8) * .5))}
.cvx-tc2.playing .cvxt-t{text-shadow:0 0 calc(4px + (var(--cvx-bass,0) + var(--cvx-hit,0) * 1.6) * 14px) rgba(var(--cpx-accent,124,108,255),.9)}

/* ── эквалайзер карточки живёт от баса ──────────────────────────── */
.cvx-tc2.playing .cvxt-eq{bottom:5px;height:calc(9px + var(--cvx-bass,0) * 9px)}
.cvx-tc2.playing .cvxt-eq i{height:calc(30% + var(--cvx-hit,0) * 62%);box-shadow:0 0 calc(5px + var(--cvx-hit,0) * 9px) currentColor}

/* ── быстрая вторая волна ───────────────────────────────────────── */
.cvx-ring-fast{border-width:2px;animation-duration:.62s;box-shadow:0 0 18px currentColor,inset 0 0 10px currentColor}

/* ── большой плеер: вспышка и спин-блик обложки ─────────────────── */
html.cvx-bass-live #cvxPlayerX.playing .fpx-cover{box-shadow:0 18px 50px rgba(50,30,140,.5),0 0 calc(12px + (var(--cvx-bass,0) + var(--cvx-hit,0) * 1.6) * 85px) rgba(var(--cpx-accent,124,108,255),calc(.16 + (var(--cvx-bass,0) + var(--cvx-hit,0) * .9) * .6)),0 0 0 1px rgba(148,130,255,.28)}
html.cvx-bass-live #cvxPlayerX.playing .fpx-cover::before{content:"";position:absolute;inset:-14%;border-radius:50%;pointer-events:none;background:conic-gradient(from calc(var(--cvx-bass,0) * 140deg),transparent 0 68%,rgba(var(--cpx-accent,124,108,255),calc(.10 + var(--cvx-hit,0) * .22)) 84%,transparent 100%);animation:cvxSpinSheen 3.6s linear infinite;mix-blend-mode:screen}
@keyframes cvxSpinSheen{to{transform:rotate(360deg)}}
html.cvx-bass-live #cvxMiniX.playing .mnx-disc{box-shadow:0 0 calc(8px + (var(--cvx-bass,0) + var(--cvx-hit,0) * 1.6) * 30px) rgba(var(--cpx-accent,124,108,255),calc(.45 + (var(--cvx-bass,0) + var(--cvx-hit,0) * .8) * .5))}

/* ── окно бас-буста: пульс иконки, живой предпросмотр силы ──────── */
#cvxBassPop.open .bbp-ico{animation:bbpIcoPulse 1.05s ease-in-out infinite}
@keyframes bbpIcoPulse{0%,100%{box-shadow:0 8px 22px rgba(96,78,235,.45),0 0 0 0 rgba(124,108,255,.5)}50%{box-shadow:0 8px 26px rgba(96,78,235,.6),0 0 0 calc(3px + var(--cvx-bass,0) * 7px) rgba(124,108,255,0)}}
#cvxBassPop.open .bbp-shell{border-color:rgba(148,130,255,calc(.24 + var(--cvx-bass,0) * .5));box-shadow:0 26px 80px rgba(4,2,18,.7),0 0 calc(30px + var(--cvx-bass,0) * 60px) rgba(124,108,255,calc(.14 + var(--cvx-bass,0) * .3))}

/* ── трек-карточки в МИНИ-ЧАТЕ: компактно и аккуратно ───────────── */
.cvx-rm__bub .cvx-tc2{--cpx-accent:124,108,255;max-width:min(262px,calc(100vw - 130px));padding:9px 10px;gap:7px;border-radius:14px;overflow:visible}
.cvx-rm__bub .cvxt-cov{width:46px;height:46px;border-radius:12px}
.cvx-rm__bub .cvxt-covwrap .cvxt-play svg{width:15px;height:15px}
.cvx-rm__bub .cvxt-eq{height:9px;bottom:3px}
.cvx-rm__bub .cvxt-eq i{width:2.5px}
.cvx-rm__bub .cvxt-t{font-size:12px;line-height:1.3}
.cvx-rm__bub .cvxt-s{font-size:10px}
.cvx-rm__bub .cvxt-times{font-size:9.5px}
.cvx-rm__bub .cvxt-actions{gap:5px;flex-wrap:wrap}
.cvx-rm__bub .cvxt-actions button span{display:none}
.cvx-rm__bub .cvx-rm__t{display:block}

@media (prefers-reduced-motion:reduce){
  #cvxBassPop.open .bbp-ico{animation:none}
  html.cvx-bass-live #cvxPlayerX.playing .fpx-cover::before{animation:none}
}

/* ════════════════════════════════════════════════════════════════
   v243: ЦВЕТНЫЕ ИМПУЛЬСЫ при любом воспроизведении (без бас-буста)
   — круг мини-плеера, обложка большого плеера, карточка трека в чате.
   Бас-бусту не мешаем: правила действуют, пока НЕТ html.cvx-bass-live.
   ════════════════════════════════════════════════════════════════ */

/* волна-импульс: мягче и чуть дольше бас-колец */
.cvx-ring-pulse{border-width:3px;animation-name:cvxPulseOut;animation-duration:2.2s;animation-timing-function:cubic-bezier(.16,.6,.35,1);box-shadow:0 0 24px currentColor,inset 0 0 12px currentColor;opacity:.92}

/* v244: импульсы идут только при бас-бусте — радужные кольца мини-плеера
   и большого плеера дают правила html.cvx-bass-live (см. выше), дубликат
   блока v243 «пульс без баса» удалён. Цветное дыхание карточки трека
   осталось: cvx-pulse-live теперь включается только вместе с басом. */
/* КАРТОЧКА ТРЕКА В ЧАТЕ: цветное дыхание свечения обложки */
html.cvx-pulse-live .cvx-tc2.playing .cvxt-cov{animation:cvxCardPulse 4.2s ease-in-out infinite}
@keyframes cvxCardPulse{
  0%,100%{box-shadow:0 0 12px rgba(255,209,102,.38),0 0 26px rgba(255,209,102,.14)}
  20%{box-shadow:0 0 14px rgba(255,79,216,.42),0 0 28px rgba(255,79,216,.16)}
  40%{box-shadow:0 0 14px rgba(34,211,238,.42),0 0 28px rgba(34,211,238,.16)}
  60%{box-shadow:0 0 14px rgba(163,230,53,.4),0 0 28px rgba(163,230,53,.15)}
  80%{box-shadow:0 0 14px rgba(139,92,246,.44),0 0 28px rgba(139,92,246,.17)}
}
/* ряд списка «Релизов Kontrolar»: лёгкое цветное дыхание обложки */
html.cvx-pulse-live:not(.cvx-bass-live) .ktr-track.playing .ktr-cover{animation:cvxCardPulse 4.6s ease-in-out infinite}

/* карточка загруженного аудио в чате (avx2-диск) — тоже дышит цветом */
html.cvx-pulse-live:not(.cvx-bass-live) .av-audio-card[data-px-playing] .avx2-disc{animation:cvxCardPulse 4.6s ease-in-out infinite}

@media (prefers-reduced-motion:reduce){
  .cvx-ring-pulse{animation:none!important;opacity:0!important}
  html.cvx-pulse-live #cvxMiniX.playing .mnx-disc::after,
  html.cvx-pulse-live #cvxPlayerX.playing .fpx-cover-zone::before{animation:none!important;opacity:0!important}
  html.cvx-pulse-live .cvx-tc2.playing .cvxt-cov,
  html.cvx-pulse-live .ktr-track.playing .ktr-cover,
  html.cvx-pulse-live .av-audio-card[data-px-playing] .avx2-disc{animation:none!important}
}


/* ═══════════════════════════════════════════════════════════════════
   v246: правка — ЕЩЁ МЕДЛЕННЕЕ И ТОНЬШЕ (значения обновлены прямо в
   правилах v245 ниже: пульс 3px/2.2s, dash 2.5px/2.4s, halo 6px/2.5s,
   echo 2px/3s, искры 4px/1.6s, ободок 5s, ободки на 1px тоньше).
   ═══════════════════════════════════════════════════════════════════
   v245: ИМПУЛЬСЫ МЕДЛЕННЕЕ И РАЗНООБРАЗНЕЕ (только при бас-бусте)
   — главное кольцо растёт медленнее (1.65s, было 1.15s);
   — виды эффектов: пунктир (dash), аура (halo), эхо (echo), искры;
   — радужный ободок и цветное дыхание замедлены.
   ═══════════════════════════════════════════════════════════════════ */
/* главный импульс: медленное расширение, мягкое затухание */
@keyframes cvxPulseOut{0%{opacity:.95;transform:scale(.86)}55%{opacity:.48}100%{opacity:0;transform:scale(1.95)}}
/* пунктирное кольцо: легко крутится пока растёт */
.cvx-ring-dash{border-style:dashed;border-width:2.5px;animation-name:cvxDashOut;animation-duration:2.4s;animation-timing-function:cubic-bezier(.16,.6,.35,1);box-shadow:0 0 14px currentColor}
@keyframes cvxDashOut{0%{opacity:.9;transform:scale(.88) rotate(0deg)}100%{opacity:0;transform:scale(1.9) rotate(24deg)}}
/* мягкая аура: толстое размытое кольцо-дыхание */
.cvx-ring-halo{border-width:6px;filter:blur(8px);animation-name:cvxHaloOut;animation-duration:2.5s;animation-timing-function:cubic-bezier(.16,.6,.35,1);box-shadow:0 0 34px currentColor}
@keyframes cvxHaloOut{0%{opacity:.5;transform:scale(.84)}100%{opacity:0;transform:scale(1.8)}}
/* дальнее эхо: самое медленное, улетает дальше всех */
.cvx-ring-echo{border-width:2px;animation-name:cvxEchoOut;animation-duration:3s;animation-timing-function:cubic-bezier(.16,.6,.35,1);box-shadow:0 0 16px currentColor,inset 0 0 8px currentColor}
@keyframes cvxEchoOut{0%{opacity:.55;transform:scale(.9)}45%{opacity:.26}100%{opacity:0;transform:scale(2.3)}}
/* искры: частицы разлетаются от центра обложки (--tx/--ty задаёт JS) */
.cvx-spark{position:absolute;left:50%;top:50%;width:4px;height:4px;margin:-2px 0 0 -2px;border-radius:50%;background:currentColor;box-shadow:0 0 9px currentColor,0 0 2px #fff;pointer-events:none;opacity:0;animation:cvxSparkFly 1.6s cubic-bezier(.15,.6,.4,1) forwards;will-change:transform,opacity}
@keyframes cvxSparkFly{0%{opacity:0;transform:translate(0,0) scale(.4)}14%{opacity:.95}100%{opacity:0;transform:translate(var(--tx,0),var(--ty,0)) scale(.15)}}
/* радужный ободок мини и полного плеера: вращение медленнее */
html.cvx-bass-live #cvxPlayerX.playing .fpx-cover-zone::before,
html.cvx-bass-live #cvxMiniX.playing .mnx-disc::after{animation-duration:5s}
/* дышащие свечения полного плеера тоже спокойнее */
html.cvx-bass-live .fpx-shell{animation-duration:1.9s}
html.cvx-bass-live .fpx-cover{animation-duration:1.8s}
@media (prefers-reduced-motion:reduce){
  .cvx-spark{animation:none!important;opacity:0!important}
}

/* ═══════════════════════════════════════════════════════════════════════
   CloudVox v247 — ПАУЗА ВЕЗДЕ + ОБЛОЖКА В ТАКТ БАСУ
   1) Мини-плеер поднят над мини-чатом (z 299996 > 299995): кнопка паузы,
      разворот и панели работают даже когда окно чата наезжает на плеер
      (перетаскивание, узкие окна, мобильная версия).
   2) Обложка ЖИВЁТ в такт басу (только при бас-бусте и воспроизведении):
      • мини-плеер — диск «пружинит» от ударов (scale + наклон), виджет
        чуть встряхивается, эквалайзер подпрыгивает, под плеером светится
        «саб-волна»;
      • большой плеер — винил бампает от ударов, арт внутри масштабируется
        сильнее корпуса (эффект глубины);
      • карточки треков (чат + «Релизы Kontrolar») — арт пульсирует.
      Всё на compositor-friendly transform/opacity; уровни дают переменные
      --cvx-bass / --cvx-hit из аудиоанализатора.
   ═══════════════════════════════════════════════════════════════════════ */
html.cvx-bass-live #cvxMiniX.playing{transform:scale(calc(1 + var(--cvx-bass,0)*.03)) translate3d(calc(var(--cvx-hit,0)*1.3px),calc(var(--cvx-hit,0)*-.9px),0)}
html.cvx-bass-live #cvxMiniX.playing .mnx-disc{transform:scale(calc(1 + var(--cvx-hit,0)*.075 + var(--cvx-bass,0)*.028)) rotate(calc(var(--cvx-hit,0)*1.5deg))}
html.cvx-bass-live #cvxMiniX.playing .mnx-eq{transform:scaleY(calc(1 + var(--cvx-bass,0)*.85 + var(--cvx-hit,0)*.5));transform-origin:50% 100%}
html.cvx-bass-live #cvxMiniX.playing::after{content:"";position:absolute;left:12%;right:12%;bottom:-9px;height:7px;border-radius:8px;background:linear-gradient(90deg,transparent,rgba(var(--cpx-accent,124,108,255),.85),transparent);filter:blur(5px);opacity:calc(var(--cvx-bass,0)*.7 + var(--cvx-hit,0)*.3);transform:scaleX(calc(.55 + var(--cvx-bass,0)*.45));pointer-events:none}
html.cvx-bass-live #cvxPlayerX.playing .fpx-cover{transform:scale(calc(1 + var(--cvx-hit,0)*.05 + var(--cvx-bass,0)*.02)) rotate(calc(var(--cvx-hit,0)*1.2deg))}
html.cvx-bass-live #cvxPlayerX.playing #fpxCoverImg{transform:scale(calc(1 + var(--cvx-bass,0)*.045));will-change:transform}
html.cvx-bass-live .cvx-tc2.playing .cvxt-cov img{transform:scale(calc(1 + var(--cvx-hit,0)*.09 + var(--cvx-bass,0)*.035))}
html.cvx-bass-live .ktr-track.playing .ktr-cover img{transform:scale(calc(1 + var(--cvx-hit,0)*.09 + var(--cvx-bass,0)*.035))}
@media (prefers-reduced-motion: reduce){
  html.cvx-bass-live #cvxMiniX.playing,
  html.cvx-bass-live #cvxMiniX.playing .mnx-disc,
  html.cvx-bass-live #cvxMiniX.playing .mnx-eq,
  html.cvx-bass-live #cvxPlayerX.playing .fpx-cover,
  html.cvx-bass-live #cvxPlayerX.playing #fpxCoverImg,
  html.cvx-bass-live .cvx-tc2.playing .cvxt-cov img,
  html.cvx-bass-live .ktr-track.playing .ktr-cover img{transform:none!important}
  html.cvx-bass-live #cvxMiniX.playing::after{display:none!important}
}

/* ══════════════════════════════════════════════════════════════════
   v248 — СКРОЛЛ «РЕЛИЗОВ KONTROLAR» БЕЗ ЛАГОВ
   1) intrinsic-size карточек 96→125px (см. блок выше) — устранены
      релайауты при появлении карточек.
   2) contain:layout style — ховер/тень карточки не переустанавливает
      раскладку соседей.
   3) Скролл-контейнер страницы развлечений больше не размывает всё
      под собой на каждый кадр (фон rgba .98 и так почти непрозрачен,
      блюр давал только стоимость; фон темы не тронут).
   Плюс в main.tpl: шим MutationObserver (мутации ~50/с × 10+ модулей
   пересканирования — теперь колбэки не чаще ~7/с, записи объединяются).
   ══════════════════════════════════════════════════════════════════ */
.ktr-track{contain:layout style}
/* страница развлечений: без backdrop-блюра на скролл-контейнере
   (фон — прежний var(--premium-page-bg), тему не ломаем) */
#page-entertain .page-body{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}

/* ════════════════════════════════════════════════════════════════════
   CloudVox v249 — РЕАКЦИИ: редизайн кнопки + панели выбора
   — кнопка реакций на карточке: стеклянная градиентная пилюля с блеском,
     эмодзи «оживает», «+» — акцентный кружок, своя реакция — свой цвет;
   — панель выбора: пружинное появление, каскадный поп-ин, свой цвет у
     каждой реакции (--rc), выбранная — цветное кольцо + галочка;
   — счётчики реакций на карточках подсвечены в цвет реакции.
   Всё на transform/opacity (compositor-friendly), reduced-motion гасит.
   ════════════════════════════════════════════════════════════════════ */

/* ── пер-реакционные цвета (формат R,G,B) ── */
.ktr-react-chip[data-r="like"]{--rc:96,165,250}
.ktr-react-chip[data-r="dislike"]{--rc:148,163,184}
.ktr-react-chip[data-r="fire"]{--rc:251,146,60}
.ktr-react-chip[data-r="love"]{--rc:244,114,182}
.ktr-react-chip[data-r="laugh"]{--rc:250,204,21}
.ktr-react-chip[data-r="wow"]{--rc:167,139,250}
.ktr-react-chip.ktr-react-open[data-mine="like"]{--rc:96,165,250}
.ktr-react-chip.ktr-react-open[data-mine="dislike"]{--rc:148,163,184}
.ktr-react-chip.ktr-react-open[data-mine="fire"]{--rc:251,146,60}
.ktr-react-chip.ktr-react-open[data-mine="love"]{--rc:244,114,182}
.ktr-react-chip.ktr-react-open[data-mine="laugh"]{--rc:250,204,21}
.ktr-react-chip.ktr-react-open[data-mine="wow"]{--rc:167,139,250}
/* у 2026-треков без своей реакции кнопка остаётся золотой */
.ktr-track.ktr-2026 .ktr-react-chip.ktr-react-open:not([data-mine]){--rc:255,193,94}

/* ── счётчики реакций (чипы вида 🔥 12) — цвет реакции ── */
.ktr-react-chip[data-r]{border-color:rgba(var(--rc,148,130,255),.4);background:rgba(var(--rc,148,130,255),.1);color:rgb(var(--rc,185,178,234))}
.ktr-react-chip[data-r]:hover{background:rgba(var(--rc,148,130,255),.24);border-color:rgba(var(--rc,148,130,255),.65);color:#fff;box-shadow:0 3px 12px rgba(var(--rc,148,130,255),.3)}

/* ── кнопка реакций (👍 +) — стеклянная пилюля с блеском ── */
.ktr-react-chip.ktr-react-open{
  --rc:124,108,255;
  position:relative;overflow:hidden;
  border:1px solid rgba(var(--rc),.42);
  background:linear-gradient(135deg,rgba(var(--rc),.2),rgba(var(--rc),.06));
  color:rgb(var(--rc));
  box-shadow:0 2px 10px rgba(var(--rc),.16),inset 0 1px 0 rgba(255,255,255,.08);
  padding:3px 9px 3px 10px;gap:4px;
  transition:transform .18s cubic-bezier(.34,1.56,.64,1),box-shadow .18s ease,background .18s ease,border-color .18s ease}
.ktr-react-chip.ktr-react-open::before{
  content:"";position:absolute;top:0;left:-70%;width:46%;height:100%;
  background:linear-gradient(105deg,transparent,rgba(255,255,255,.3),transparent);
  transform:skewX(-18deg);transition:left .5s ease;pointer-events:none}
.ktr-react-chip.ktr-react-open:hover::before{left:130%}
.ktr-react-chip.ktr-react-open:hover{
  border-color:rgba(var(--rc),.75);
  background:linear-gradient(135deg,rgba(var(--rc),.32),rgba(var(--rc),.12));
  box-shadow:0 4px 16px rgba(var(--rc),.38),inset 0 1px 0 rgba(255,255,255,.12);
  transform:translateY(-1px)}
.ktr-react-chip.ktr-react-open:active{transform:translateY(0) scale(.94)}
/* своя реакция — заполненная кнопка */
.ktr-react-chip.ktr-react-open.ktr-react-mine{
  border-color:rgba(var(--rc),.8);
  background:linear-gradient(135deg,rgba(var(--rc),.4),rgba(var(--rc),.16));
  color:#fff;
  box-shadow:0 0 12px rgba(var(--rc),.4),inset 0 1px 0 rgba(255,255,255,.14)}
/* эмодзи «оживает» при наведении */
.ktr-react-chip .krc-emoji{display:inline-block;font-size:12px;line-height:1;transition:transform .28s cubic-bezier(.34,1.56,.64,1);transform-origin:50% 60%}
.ktr-react-chip.ktr-react-open:hover .krc-emoji{transform:scale(1.3) rotate(-9deg)}
/* «+» — акцентный кружок, при наведении крутится */
.ktr-react-chip.ktr-react-open i{
  display:inline-flex;align-items:center;justify-content:center;
  width:12px;height:12px;border-radius:50%;
  background:linear-gradient(135deg,rgba(var(--rc),.95),rgba(var(--rc),.5));
  color:#fff;font-size:9px;font-weight:900;font-style:normal;line-height:1;
  box-shadow:0 1px 4px rgba(var(--rc),.45);
  transition:transform .25s cubic-bezier(.34,1.56,.64,1)}
.ktr-react-chip.ktr-react-open:hover i{transform:rotate(90deg) scale(1.1)}

/* ── панель выбора реакций — стекло, пружина, свой цвет пунктов ── */
#cvxReactPop .krp-shell{
  width:288px;border-radius:20px;padding:14px;
  border:1px solid rgba(148,130,255,.34);
  background:linear-gradient(168deg,rgba(30,26,60,.98),rgba(15,13,32,.99));
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  box-shadow:0 24px 64px rgba(4,2,18,.72),0 0 0 1px rgba(255,255,255,.04) inset,0 0 44px rgba(124,108,255,.14);
  animation:krpIn .24s cubic-bezier(.34,1.56,.64,1)}
@keyframes krpIn{from{opacity:0;transform:translateY(8px) scale(.9)}to{opacity:1;transform:none}}
.krp-h{display:flex;align-items:center;gap:6px;font-size:10.5px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:#a9a2d8;margin-bottom:10px}
.krp-h .krp-hi{font-size:12px;filter:drop-shadow(0 0 6px rgba(124,108,255,.6));animation:krpHFloat 2.6s ease-in-out infinite}
@keyframes krpHFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}
.krp-row{display:grid;grid-template-columns:repeat(6,1fr);gap:5px}
.krp-ri{
  position:relative;display:flex;flex-direction:column;align-items:center;gap:3px;
  padding:10px 2px 7px;border-radius:14px;
  border:1px solid rgba(148,130,255,.14);background:rgba(124,108,255,.06);
  cursor:pointer;
  transition:transform .2s cubic-bezier(.34,1.56,.64,1),background .16s ease,border-color .16s ease,box-shadow .16s ease;
  animation:krpPop .34s cubic-bezier(.34,1.56,.64,1) both;animation-delay:var(--d,0ms)}
@keyframes krpPop{from{opacity:0;transform:scale(.4) translateY(10px)}to{opacity:1;transform:none}}
.krp-ri:hover{
  transform:translateY(-3px) scale(1.06);
  border-color:rgba(var(--rc,148,130,255),.55);
  background:rgba(var(--rc,148,130,255),.14);
  box-shadow:0 6px 18px rgba(var(--rc,148,130,255),.28)}
.krp-ri:hover .krp-e{transform:scale(1.32) rotate(-8deg)}
.krp-e{font-size:19px;line-height:1;transition:transform .26s cubic-bezier(.34,1.56,.64,1)}
.krp-ri b{font-size:9.5px;color:#b9b2ea;font-variant-numeric:tabular-nums;font-weight:800}
/* выбранная реакция — цветное кольцо + галочка */
.krp-ri.on{
  border-color:rgba(var(--rc,124,108,255),.78);
  background:rgba(var(--rc,124,108,255),.2);
  box-shadow:0 0 14px rgba(var(--rc,124,108,255),.36),inset 0 0 10px rgba(var(--rc,124,108,255),.14)}
.krp-ri.on::after{
  content:"✓";position:absolute;top:-6px;right:-6px;width:15px;height:15px;border-radius:50%;
  background:rgb(var(--rc,124,108,255));color:#fff;
  font-size:9px;font-weight:900;line-height:15px;text-align:center;
  box-shadow:0 2px 7px rgba(var(--rc,124,108,255),.55);
  animation:krpCheck .26s cubic-bezier(.34,1.56,.64,1)}
@keyframes krpCheck{from{transform:scale(0)}to{transform:scale(1)}}
.krp-note{margin-top:9px;font-size:10px;color:#f59e0b;min-height:12px;text-align:center}

/* тач-экраны: без hover-подъёмов, но состояния on остаются */
@media (hover:none){
  .ktr-react-chip.ktr-react-open::before{display:none}
  .krp-ri:hover{transform:none;box-shadow:none}
}
@media (prefers-reduced-motion:reduce){
  #cvxReactPop .krp-shell,.krp-ri,.krp-ri.on::after,.krp-h .krp-hi{animation:none}
  .ktr-react-chip .krc-emoji,.krp-e,.ktr-react-chip.ktr-react-open i{transition:none}
}


/* ═══════════════════════════════════════════════════════════════════════
   v250 — МИНИ-ПРОФИЛЬ из подписчиков/комментариев + настоящие АВАТАРЫ
   ─────────────────────────────────────────────────────────────────────
   1) .kcm-ava / .ksh-ava: внутри может лежать <img> с аватаркой
      (кастомная аватарка CloudVox или фото профиля DLE). Картинка
      закрывает инициал целиком; если файл битый — onerror снимает
      has-img и остаётся привычная буква.
   2) Кликабельные имена (комментарии) и строки (подписчики) открывают
      мини-профиль: аккуратный hover, у подписчика — хинт «Профиль →».
   3) #miniProfilePopover поднят над окнами комментариев/подписчиков
      (99995): раньше у поповера был z-index 10000 — профиль открылся
      бы ПОД окном и его не было видно. ══════════════════════════════ */

/* аватарки вместо буквы-инициала */
.kcm-ava,.ksh-ava{position:relative;overflow:hidden}
.kcm-ava-img,.ksh-ava-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:inherit;display:block}
.kcm-ava.has-img,.ksh-ava.has-img{color:transparent;font-size:0}

/* комментарий: имя комментатора кликабельно → мини-профиль */
.kcm-nm-link .kcm-nm-in{cursor:pointer;border-bottom:1px dashed rgba(199,194,244,.35);transition:color .15s,border-color .15s}
.kcm-nm-link .kcm-nm-in:hover{color:#fff;border-bottom-color:#22d3ee}

/* подписчики: вся строка кликабельна → мини-профиль */
.ksh-item-link{cursor:pointer}
.ksh-item-link:hover{background:rgba(124,108,255,.17);border-color:rgba(148,130,255,.32)}
.ksh-go{font-style:normal;font-size:9.5px;font-weight:800;color:#22d3ee;opacity:0;margin-left:8px;white-space:nowrap;transition:opacity .15s,transform .15s;display:inline-block;transform:translateX(-3px)}
.ksh-item-link:hover .ksh-go{opacity:1;transform:translateX(0)}
.ksh-go b{font-weight:900}

/* мини-профиль поверх окон комментариев/подписчиков/шаринга (99995) и
   поповера реакций (99996); ниже бас-попа (300060) — он главный.
   #cv180Mpp — поповер из patches.js (z был 20040), #miniProfilePopover —
   реализация из 2-account.js (z был 10000): оба оказались ПОД окнами. */
#cv180Mpp,#miniProfilePopover{z-index:99997!important}

/* тач: хинт «Профиль →» показываем сразу — hover там нет */
@media (hover:none){
  .ksh-go{opacity:1;transform:none}
}

/* ═══════════════════════════════════════════════════════════════════════
   v251 — КОММЕНТАРИИ К ТРЕКУ: аватар и профиль у ВСЕХ комментаторов
   ─────────────────────────────────────────────────────────────────────
   1) Сервер резолвит старые комментарии по имени → uid + аватарка, поэтому
      «оживают» и комментарии, оставленные до v250.
   2) Кликабельна теперь и АВАТАРКА комментатора (.kcm-ava-link): курсор
      pointer, на hover — цветное кольцо, как у имени. ═════════════════ */

.kcm-ava-link{cursor:pointer;transition:box-shadow .16s,transform .16s}
.kcm-ava-link:hover{box-shadow:0 0 0 2px rgba(34,211,238,.65),0 0 12px rgba(34,211,238,.28);transform:scale(1.05)}
.kcm-ava-link:active{transform:scale(.96)}
@media (prefers-reduced-motion:reduce){
  .kcm-ava-link{transition:none}
  .kcm-ava-link:hover{transform:none}
}

/* ═══════════════════════════════════════════════════════════════════════
   v252 — ЧАТ «★ ИЗБРАННОЕ» С САМИМ СОБОЙ (сохранённые сообщения)
   ─────────────────────────────────────────────────────────────────────
   Один особый диалог с собой: закреплённая строка сверху списка
   диалогов (оба UI), кнопка в тулбаре ЛС, декор открытого чата.
   Хранит сообщения, фото, файлы, аудио, голосовые — всё только своё. ═══ */

/* закреплённая строка «★ Избранное» в списках диалогов */
.cvx-saved-item{cursor:pointer;transition:background .16s,box-shadow .16s}
.cvx-saved-item .cvx-sv-ava{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:800;background:linear-gradient(135deg,rgba(251,191,36,.24),rgba(245,158,11,.12));box-shadow:inset 0 0 0 1px rgba(251,191,36,.28),0 2px 8px rgba(0,0,0,.2);flex-shrink:0;border:none}
.dm-item .cvx-sv-ava{width:34px;height:34px;border-radius:50%;font-size:15px}
.cvx-saved-item .cvx-sv-nm{color:#fbbf24!important;font-weight:700}
.cvx-saved-item .cvx-sv-prev{color:rgba(251,191,36,.6)}
.cvx-saved-item:hover{background:rgba(251,191,36,.07)}
.cvx-saved-item.active{background:rgba(251,191,36,.12);box-shadow:inset 0 0 0 1px rgba(251,191,36,.2)}
.cvx-saved-item:hover .cvx-sv-ava{transform:scale(1.06)}
.cvx-sv-ava{transition:transform .25s cubic-bezier(.2,.85,.3,1.08)}

/* кнопка «Избранное» в тулбаре ЛС (#page-messages .dm-toolbar-btn — ID-специфичность) */
#page-messages .dm-toolbar-actions .cvx-saved-btn{color:#fbbf24}
#page-messages .dm-toolbar-actions .cvx-saved-btn svg{width:18px;height:18px}
#page-messages .dm-toolbar-actions .cvx-saved-btn:hover{color:#fcd34d;border-color:rgba(251,191,36,.35)}

/* приветственный блок открытого «Избранного» (вместо «Начало переписки») */
.cvx-sv-hello{text-align:left;max-width:360px;margin:8px auto 0;line-height:1.55;color:rgba(226,232,240,.82);font-size:12.5px}
.cvx-sv-hello b{color:#fbbf24}

@media (prefers-reduced-motion:reduce){
  .cvx-saved-item,.cvx-sv-ava{transition:none}
  .cvx-saved-item:hover .cvx-sv-ava{transform:none}
}

/* ═══════════ v253: правки «Избранного» и окна «Переслать» ═══════════ */
/* 1) строка «★ Избранное» скрыта вне таба «Избранное» и вне поиска —
      в «Недавних диалогах» её быть не должно (!important перебивает
      inline display из _cvDmApplyFilter) */
.cvx-saved-item.cvx-saved-hidden{display:none!important}

/* 2) страховка от вылезающего текста кнопки «Избранное» (иконка-only 38px) */
#page-messages .dm-toolbar-actions .cvx-saved-btn{overflow:hidden}
#page-messages .dm-toolbar-actions .cvx-saved-btn .cvx-float-toolbar-label{display:none!important}

/* 3) окно «Переслать»: затемнение строго на весь экран (без 94vw/88vh-
      ограничений от групповых правил модалок), панель — аккуратный центр */
#cvForwardModal.cv-forward-modal{position:fixed!important;inset:0!important;width:100vw!important;height:100vh!important;max-width:none!important;max-height:none!important;display:flex!important;background:rgba(0,0,0,.7)!important;backdrop-filter:blur(8px)!important}
@media (min-width:641px){
  #cvForwardModal.cv-forward-modal{align-items:center!important;justify-content:center!important;padding:20px!important}
  #cvForwardModal .cv-forward-modal-inner{width:min(520px,94vw)!important;max-width:min(520px,94vw)!important;max-height:min(680px,88vh)!important;display:flex!important;flex-direction:column!important;overflow:hidden!important;padding:0!important;border-radius:18px!important}
  #cvForwardModal .cv-forward-header{flex:0 0 auto!important}
  #cvForwardModal .cv-forward-search-wrap{flex:0 0 auto!important}
  #cvForwardModal .cv-forward-body{flex:1 1 auto!important;min-height:0!important;overflow-y:auto!important}
  #cvForwardModal .cv-forward-item-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
}
@media (prefers-reduced-motion:reduce){
  #cvForwardModal .cv-forward-item{transition:none}
}
