/* MUSIC FOLDER — mini-player | исходник: 4075..4137 */

/* ═══ мини-плеер: кнопка Play/Pause при прокрутке ═══ */
.mini-play{position:fixed;left:18px;bottom:calc(24px + env(safe-area-inset-bottom));z-index:96;
display:flex;align-items:center;gap:10px;padding:10px;border-radius:999px;border:1px solid var(--line);
background:linear-gradient(180deg,rgba(21,23,40,.95),rgba(12,13,24,.97));
backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
box-shadow:0 12px 34px -10px rgba(0,0,0,.8),0 0 22px -8px color-mix(in srgb,var(--c1) 45%,transparent);
color:var(--text);cursor:pointer;opacity:0;visibility:hidden;transform:translateY(16px) scale(.9);
transition:opacity .3s,transform .35s cubic-bezier(.34,1.4,.64,1),visibility .35s}
.mini-play.show{opacity:1;visibility:visible;transform:none}
.mini-play:active{transform:scale(.93)}
.mini-disc{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;flex:none;
background:linear-gradient(135deg,var(--c1),var(--c2));color:#0b0c14}
body.playing .mini-disc,body.od-playing .mini-disc{animation:spin 6s linear infinite}
.mini-meta{max-width:150px;display:flex;flex-direction:column;text-align:left;padding-right:6px}
.mini-meta b{font-size:12px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mini-meta span{font-size:10.5px;color:var(--muted);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:640px){
.mini-play{left:12px;bottom:calc(16px + env(safe-area-inset-bottom));max-width:calc(100vw - 80px)}
.mini-meta{max-width:110px}
.toasts{bottom:calc(120px + env(safe-area-inset-bottom));z-index:10001}
.svc-fab{bottom:calc(70px + env(safe-area-inset-bottom));right:12px;z-index:318}
}
.toast{background:#15172a;border:1px solid color-mix(in srgb,var(--c1) 45%,transparent);padding:12px 22px;border-radius:14px;font-weight:700;font-size:13.5px;
display:flex;align-items:center;gap:12px;
box-shadow:0 14px 44px rgba(0,0,0,.65);animation:tIn .3s ease}
@keyframes tIn{from{opacity:0;transform:translateY(14px)}}
.toast.out{opacity:0;transform:translateY(10px);transition:.35s}
.toast-act{border:none;background:linear-gradient(135deg,var(--c1),var(--c2));color:#0b0c14;font-weight:800;font-size:12px;
padding:7px 13px;border-radius:9px;cursor:pointer;white-space:nowrap;flex:none;transition:transform .2s}
.toast-act:hover{transform:scale(1.06)}
/* ═══ всплывающие подсказки (десктоп) ═══
 CSS-тултипы — только fallback без JS: ::after живёт внутри кнопки и запирается
 в stacking-контексте (.player-card/.od-panel/сердечко). Живой слой — единый
 #mfTip в <body> (07-tips.js + 07-tooltip.css), он всегда поверх всего.
 Двойной подсказки нет: content объявлен только под html:not(.js-tips). */
[data-tip]{position:relative}
html:not(.js-tips) [data-tip]:hover::after{content:attr(data-tip);position:absolute;bottom:calc(100% + 11px);left:50%;transform:translateX(-50%);
padding:9px 14px;border-radius:11px;background:#2a2d4a;border:1px solid rgba(124,92,255,.55);
font-size:11.5px;font-weight:700;color:#fff;white-space:normal;text-align:center;line-height:1.45;
width:max-content;max-width:min(78vw,260px);z-index:10000;pointer-events:none;
box-shadow:0 4px 6px rgba(0,0,0,.4),0 12px 34px rgba(0,0,0,.75),0 0 18px -6px rgba(124,92,255,.6);
animation:tipIn .18s cubic-bezier(.2,.9,.3,1.2)}
html:not(.js-tips) [data-tip]:hover::before{content:"";position:absolute;bottom:calc(100% + 2px);left:50%;transform:translateX(-50%);
border:6px solid transparent;border-top-color:#2a2d4a;z-index:10000;pointer-events:none;animation:tipIn .18s ease}
@keyframes tipIn{from{opacity:0}to{opacity:1}}
/* на тач-экранах и узких окнах подсказки полностью отключены:
по тапу :hover «залипает», тултип вылезал за край экрана и обрезался */
@media (hover:none),(max-width:640px){
html:not(.js-tips) [data-tip]::after,html:not(.js-tips) [data-tip]::before{display:none!important}
/* бейдж обратного отсчёта таймера сна — НЕ тултип: раньше гасился этим же правилом */
#btnSleep[data-left]::after,#odSleep[data-left]::after{display:grid!important}
}
/* ═══ кнопка Bass Boost ═══ */
.bass-btn{position:relative;flex:none;width:34px;height:34px;border-radius:11px;border:1px solid var(--line);
background:var(--glass);color:var(--muted);cursor:pointer;display:grid;place-items:center;
transition:color .25s,border-color .25s,background .25s,box-shadow .35s,transform .15s}
.bass-btn:hover{color:var(--text);transform:translateY(-1px)}
.bass-btn:active{transform:scale(.9)}
.bass-btn.on{color:#0b0c14;border-color:transparent;
background:linear-gradient(135deg,var(--c2),var(--c1));
box-shadow:0 0 20px -2px color-mix(in srgb,var(--c2) 75%,transparent),0 4px 16px -4px color-mix(in srgb,var(--c1) 60%,transparent)}
.bass-btn.on svg{transform-origin:50% 100%;animation:bassPulse 1.1s ease-in-out infinite}
@keyframes bassPulse{0%,100%{transform:scaleY(.8)}50%{transform:scaleY(1.15)}}
/* ═══ бэдж отсчёта на кнопке сна (основной плеер + on-demand) ═══ */
#btnSleep,#odSleep{position:relative}
#btnSleep[data-left]::after,#odSleep[data-left]::after{content:attr(data-left);position:absolute;top:-6px;right:-6px;min-width:19px;height:19px;padding:0 4px;
border-radius:10px;background:linear-gradient(135deg,var(--c2),var(--c1));color:#0b0c14;
font-size:9.5px;font-weight:900;display:grid;place-items:center;
box-shadow:0 3px 10px rgba(0,0,0,.55),0 0 12px -2px color-mix(in srgb,var(--c2) 70%,transparent)}
