/* Pulsr — оформление DLE Listen PRO: плеер в карточке поста (templates/Pulsr/listen_pro/player.tpl), кнопка «Слушать»
   в панели поста и в «⋯» карточки, мини-плеер внизу при прокрутке. Подключается только при включённом модуле.
   Цвета — токены base.css (обе темы) поверх CSS модуля, классы модуля не переименовываются. Владелец — агент X3. */
.ps .pp-listen{margin:0 0 22px}
.ps .pp-listen.is-flash .lsn{box-shadow:0 0 0 3px color-mix(in srgb,var(--ac) 40%,transparent)}
.ps .lsn{--lsn-btn:var(--ac);--lsn-on-btn:#fff;--lsn-act:var(--ac);--lsn-on-act:#fff;--lsn-prog:var(--ac);--lsn-bg:var(--sf);--lsn-ink:var(--tx);--lsn-muted:var(--mu);--lsn-line:var(--ln);--lsn-line2:var(--ln2);--lsn-chip:var(--sf);--lsn-mono:var(--f-mono);--lsn-radius:22px;position:relative;display:flex;align-items:center;gap:16px;margin:0;padding:12px 14px 12px 12px;border-radius:22px;background:var(--sf2);border:1px solid var(--ln);color:var(--tx);font-family:var(--f-sans);transition:box-shadow .3s}
.ps .lsn.lsn--dark{--lsn-btn:var(--ac);--lsn-on-btn:#fff;--lsn-prog:var(--ac);--lsn-bg:var(--sf);--lsn-ink:var(--tx);--lsn-muted:var(--mu);--lsn-line:var(--ln);--lsn-line2:var(--ln2);--lsn-chip:var(--sf)}
.ps .lsn .lsn__play{width:48px;height:48px;background:var(--grad);color:#fff;box-shadow:0 10px 26px -10px color-mix(in srgb,var(--ac) 75%,transparent)}
.ps .lsn.is-playing .lsn__play{background:var(--tx);color:var(--bg);box-shadow:none}
.ps .lsn .lsn__play svg{width:18px;height:18px}
.ps .lsn .lsn__meta{max-width:34%}
.ps .lsn .lsn__label{font-weight:700;font-size:14.5px;color:var(--tx)}
.ps .lsn .lsn__time{display:inline-flex;align-items:center;gap:0;font:500 11.5px/1.2 var(--f-mono);color:var(--mu)}
.ps .lsn .lsn__time i{margin-right:6px;color:var(--ac);font-size:11px}
.ps .lsn .lsn__bar{height:34px;border-radius:8px}
.ps .lsn .lsn__wave{gap:2px}
.ps .lsn .lsn__wave i{max-width:3px;border-radius:3px;background:color-mix(in srgb,var(--tx) 18%,transparent);transition:background .15s}
.ps .lsn .lsn__wave i.on{background:var(--ac)}
.ps .lsn.is-playing .lsn__wave i.on:last-of-type{animation:ps-lsn-beat .8s ease-in-out infinite}
@keyframes ps-lsn-beat{50%{transform:scaleY(.6)}}
.ps .lsn .lsn__btn{height:34px;min-width:34px;padding:0 8px;border:1px solid var(--ln2);border-radius:var(--r-pill);background:var(--sf);color:var(--tx2);font:600 12px/1 var(--f-mono)}
.ps .lsn .lsn__btn:hover{border-color:var(--tx2);color:var(--tx)}
.ps .lsn .lsn__btn svg{width:15px;height:15px}
.ps .lsn .lsn__rate{min-width:44px}
.ps .lsn .lsn__note{left:76px;bottom:-22px;color:var(--mu)}
.ps .lsn .lsn__menu{border-radius:18px;background:var(--sf);color:var(--tx);box-shadow:var(--sh-sm),0 0 0 1px var(--ln2)}
.ps .lsn .lsn__menu button:hover{background:var(--sf2)}
.ps .lsn .lsn__menu button.on{background:var(--tx);color:var(--bg)}
.ps .lsn button:focus-visible,.ps .lsn a:focus-visible,.ps .lsn .lsn__bar:focus-visible{outline:2px solid var(--ac);outline-offset:2px}
.ps .lsn--pending .lsn__play{opacity:.6}
.ps .lsn--locked{color:var(--mu)}
.ps .lsn .lsn__lock{background:var(--sf);color:var(--mu)}
.ps .lsn-hl{background:color-mix(in srgb,var(--ac) 12%,transparent)!important;box-shadow:0 0 0 6px color-mix(in srgb,var(--ac) 12%,transparent)}
@media (max-width:600px){
	.ps .lsn{flex-wrap:wrap;gap:10px 12px;padding:12px;border-radius:20px}
	.ps .lsn .lsn__meta{max-width:none;flex:1}
	.ps .lsn .lsn__bar{order:5;flex-basis:100%;height:30px}
	.ps .lsn .lsn__tools{order:4;flex:0 0 auto;flex-basis:auto;gap:4px}
	.ps .lsn .lsn__note{position:static;flex-basis:100%;order:7}
}
@media (max-width:480px){
	.ps .lsn .lsn__tools{order:6;flex:1 1 100%;justify-content:flex-start;gap:6px}
}

/* Кнопка «Слушать» в панели поста */
.ps .pp-ib--listen.is-on{background:color-mix(in srgb,var(--ac) 16%,transparent);color:var(--ac)}
.ps .pp-ib--listen.is-on i{animation:ps-lsn-beat .9s ease-in-out infinite}

/* Мини-плеер */
.ps .lsn-mini{--lsn-btn:var(--sf)!important;--lsn-ink:var(--tx)!important;--lsn-act:var(--ac)!important;--lsn-on-act:#fff!important;--lsn-prog:var(--ac)!important;--lsn-line:var(--ln2);bottom:18px;z-index:9300;gap:10px;width:min(560px,calc(100vw - 24px));padding:8px 8px 8px 10px;border-radius:22px;background:var(--glass);-webkit-backdrop-filter:blur(24px) saturate(1.5);backdrop-filter:blur(24px) saturate(1.5);border:1px solid var(--ln2);color:var(--tx);box-shadow:var(--sh-sm);font-family:var(--f-sans)}
.ps .lsn-mini .lsn__play{width:42px;height:42px;background:var(--grad)!important;color:#fff!important}
.ps .lsn-mini.is-playing .lsn__play{background:var(--tx)!important;color:var(--bg)!important}
.ps .lsn-mini__title{font-weight:700;font-size:13.5px;color:var(--tx)}
.ps .lsn-mini__bar{height:4px;background:color-mix(in srgb,var(--tx) 14%,transparent)}
.ps .lsn-mini__bar i{background:var(--grad)}
.ps .lsn-mini .lsn__btn{width:38px;height:38px;min-width:38px;border:0;border-radius:50%;background:transparent;color:var(--tx2)}
.ps .lsn-mini .lsn__btn:hover{background:var(--sf2);color:var(--tx)}
.ps .lsn-mini.is-dark{--lsn-btn:var(--sf)!important;--lsn-ink:var(--tx)!important}
@media (max-width:819px){.ps .lsn-mini{bottom:calc(84px + env(safe-area-inset-bottom));width:calc(100vw - 20px)}.ps .lsn-mini [data-b],.ps .lsn-mini [data-f]{display:none}}
/* 19.10.2026 (отзыв): спрятанный мини-плеер модуль уводит вниз на 160% своей высоты — с подъёмом над нижним меню (84px)
   этого мало, и он выглядывал поверх «Лента/Поиск/+». Спрятанный — за край экрана и невидим; показанный — как раньше. */
.ps .lsn-mini:not(.is-on){transform:translate(-50%,calc(100% + 140px));visibility:hidden;pointer-events:none;transition:transform .4s cubic-bezier(.6,0,.2,1),visibility 0s .4s}
.ps .lsn-mini.is-top:not(.is-on){transform:translate(-50%,-180%)}
.ps .lsn-mini.is-on{visibility:visible;transition:transform .4s cubic-bezier(.6,0,.2,1),visibility 0s}

/* Пункт «Слушать» в «⋯» карточки и кнопки DLE Listen PRO в списках */
.ps [data-ps-listen-item].is-on{color:var(--ac)}
.ps [data-ps-listen-item].is-on i{animation:ps-lsn-beat .9s ease-in-out infinite}
.ps .lsn-item{--lsn-btn:var(--ac);--lsn-on-btn:#fff;--lsn-act:var(--tx);--lsn-on-act:var(--bg);border-color:var(--ln2);color:var(--tx2);font-family:var(--f-mono)}
.ps .lsn-list{border-color:var(--ln);border-radius:var(--r-lg);background:var(--sf)}
.ps .lsn-list__row{border-top-color:var(--ln)}
.ps .lsn-list__all{background:var(--ac);color:#fff}
@media (prefers-reduced-motion:reduce){.ps .lsn *,.ps .pp-ib--listen i,.ps [data-ps-listen-item] i{animation:none!important}}
.ps .pp-listen[hidden],.ps .pp-ib--listen[hidden]{display:none!important}
/* Демо DLEMod: плашка «Демо · Купить» (платформенная, #dlemod-demo-bar) стоит над нижним меню — мини-плеер поднимаем над ней */
body:has(>#dlemod-demo-bar) .lsn-mini{bottom:76px}
@media (max-width:819px){body:has(>#dlemod-demo-bar) .lsn-mini{bottom:calc(140px + env(safe-area-inset-bottom))}}
