/* Локальный музыкальный плеер «Ласточки» */
.music-overlay{position:fixed;inset:0;z-index:46;background:rgba(4,10,17,.72);display:flex;align-items:center;justify-content:center;padding:24px;color:#eef5ff}
.music-overlay[hidden],.music-mini[hidden]{display:none!important}
.music-shell{position:relative;width:min(1320px,100%);height:min(850px,100%);min-height:0;display:flex;flex-direction:column;overflow:hidden;border:1px solid #293b50;border-radius:20px;background:#101b29;box-shadow:0 28px 90px #0009;font-family:var(--font)}
.music-head{height:68px;flex:none;display:flex;align-items:center;gap:14px;padding:0 23px;border-bottom:1px solid #253547;background:#152334}
.music-brand{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:linear-gradient(140deg,#4c9bf2,#3573cf);color:#fff}
.music-brand svg{width:20px;height:20px}
.music-head-title{font-size:19px;font-weight:700;letter-spacing:.01em}
.music-head-caption{color:#8fa5bc;font-size:13px;margin-left:2px}
.music-spacer{flex:1}
.music-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:10px;background:#348cea;color:#fff;padding:10px 15px;font-weight:600;white-space:nowrap;transition:background .15s,transform .15s}
.music-button:hover{background:#52a1f4}.music-button:active{transform:scale(.97)}
.music-button svg{width:18px;height:18px}
.music-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:10px;color:#9db3c9;transition:background .15s,color .15s}
.music-icon:hover,.music-icon.active{background:#263a52;color:#69b3ff}
.music-icon svg{width:20px;height:20px}
.music-body{display:grid;grid-template-columns:195px minmax(0,1fr) 270px;flex:1;min-height:0}
.music-nav{padding:25px 12px;border-right:1px solid #253547;background:#132031}
.music-nav-label{font-size:12px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:#728da8;padding:0 12px;margin-bottom:16px}
.music-nav-item{display:flex;align-items:center;gap:12px;width:100%;padding:12px;border-radius:10px;background:#244360;color:#e9f4ff;text-align:left;font-weight:600}
.music-nav-item svg{width:19px;height:19px;color:#69b4ff}
.music-nav-count{font-size:13px;color:#8aa7c3;padding:13px 12px;line-height:1.45}
.music-library{padding:30px clamp(18px,3vw,42px) 16px;min-width:0;overflow-y:auto;overscroll-behavior:contain;background:linear-gradient(180deg,#1a3047 0,#101b29 205px)}
.music-intro{display:flex;align-items:end;justify-content:space-between;gap:18px;padding:5px 0 26px}
.music-eyebrow{font-size:12px;letter-spacing:.15em;text-transform:uppercase;color:#71b9ff;font-weight:700;margin-bottom:8px}
.music-intro h1{font-size:clamp(27px,3vw,38px);line-height:1.12;font-weight:700;margin:0}
.music-intro p{color:#a3b7ca;margin:9px 0 0;font-size:14px;line-height:1.5}
.music-search-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:4px 0 12px}
.music-search{display:flex;align-items:center;gap:9px;flex:1;max-width:420px;background:#233549;border:1px solid #30475e;color:#9db3c9;border-radius:10px;padding:0 12px;height:42px}
.music-search svg{width:18px;height:18px;flex:none}
.music-search input{background:none;border:0;outline:0;color:#f2f7ff;font:inherit;min-width:0;width:100%;font-size:14px}
.music-search input::placeholder{color:#8ea5ba}
.music-count{color:#8fa6bc;font-size:13px;white-space:nowrap}
.music-list-head{display:grid;grid-template-columns:34px minmax(0,1fr) 90px 40px;gap:12px;align-items:center}
.music-list-head{padding:9px 9px 11px;color:#819bb4;border-bottom:1px solid #304257;font-size:12px;text-transform:uppercase;letter-spacing:.1em}
.music-list{padding-top:7px}
.music-track{display:grid;grid-template-columns:minmax(0,1fr) 40px;align-items:center;width:100%;min-height:67px;padding:8px 9px;border-radius:10px;color:#e6f0fb;transition:background .15s}
.music-track-select{display:grid;grid-template-columns:34px minmax(0,1fr) 90px;gap:12px;align-items:center;min-width:0;text-align:left}
.music-track:hover,.music-track:focus-within{background:#253b53}
.music-track.is-active{background:#24415e}
.music-track-number{color:#9cb3c8;text-align:center}
.music-track.is-active .music-track-number,.music-track.is-active .music-track-title{color:#70b9ff}
.music-track-main{display:flex;align-items:center;gap:12px;min-width:0}
.music-track-cover,.music-cover{background:linear-gradient(140deg,#3d88cf,#1c456c);display:grid;place-items:center;color:#e0f1ff;flex:none}
.music-track-cover{width:45px;height:45px;border-radius:8px}.music-track-cover svg{width:22px;height:22px}
.music-track-text{min-width:0}
.music-track-title{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.music-track-artist{color:#91a7bd;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:3px}
.music-track-type{font-size:12px;color:#91a7bd;text-transform:uppercase;white-space:nowrap}
.music-track-remove{width:34px;height:34px;display:grid;place-items:center;border-radius:8px;color:#91a7bd}
.music-track-remove:hover{background:#40516a;color:#fff}.music-track-remove svg{width:18px;height:18px}
.music-empty{margin:36px auto;padding:20px 10px;text-align:center;color:#9eb3c7;max-width:340px}
.music-empty svg{width:38px;height:38px;margin:0 auto 15px;color:#6db7ff}
.music-empty strong{display:block;color:#eef5ff;font-size:17px;margin-bottom:6px}
.music-empty p{font-size:14px;line-height:1.55;margin:0}
.music-now{border-left:1px solid #253547;background:#142233;padding:27px 22px;display:flex;flex-direction:column;gap:16px;min-width:0}
.music-now-label{font-size:12px;font-weight:700;letter-spacing:.13em;color:#8ba4be;text-transform:uppercase}
.music-cover{width:100%;aspect-ratio:1;border-radius:14px;background:radial-gradient(circle at 72% 18%,#4c8ac6 0,transparent 47%),linear-gradient(145deg,#284f78,#112338 75%)}
.music-cover svg{width:72px;height:72px;opacity:.9}
.music-now-title{font-size:19px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.music-now-artist{color:#9bb2c8;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.music-now-hint{font-size:13px;color:#8ba4be;line-height:1.5;margin-top:auto}
.music-player{height:110px;flex:none;border-top:1px solid #304154;background:#182739;display:grid;grid-template-columns:minmax(130px,1fr) minmax(270px,1.6fr) minmax(130px,1fr);gap:18px;align-items:center;padding:14px 22px}
.music-current{display:flex;align-items:center;gap:11px;min-width:0}
.music-current .music-track-cover{width:48px;height:48px}
.music-current-name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.music-current-artist{font-size:13px;color:#94aac0;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.music-center{display:flex;flex-direction:column;align-items:center;gap:5px;min-width:0}
.music-control-row{display:flex;align-items:center;gap:10px}
.music-play{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:#e7f2ff;color:#17283d;transition:transform .15s}
.music-play:hover{transform:scale(1.08)}.music-play svg{width:20px;height:20px}
.music-play:disabled,.music-icon:disabled{opacity:.35;cursor:default}
.music-progress{display:flex;align-items:center;gap:10px;width:100%;max-width:500px;color:#91a8bf;font-size:12px}
.music-progress input,.music-volume input{width:100%;accent-color:#69b7ff;cursor:pointer}
.music-progress input:disabled{cursor:default;opacity:.5}
.music-volume{display:flex;align-items:center;gap:5px;justify-self:end;width:min(180px,100%)}
.music-volume .music-icon{flex:none}
.music-status{position:absolute;bottom:123px;left:50%;transform:translateX(-50%);padding:10px 16px;background:#315170;border:1px solid #5a8fbd;color:#fff;border-radius:10px;box-shadow:0 8px 26px #0007;font-size:13px;z-index:2;max-width:min(440px,90%);text-align:center}
.music-status[hidden]{display:none}
.music-mini{position:fixed;left:20px;bottom:20px;z-index:40;display:flex;align-items:center;gap:9px;width:min(360px,calc(100% - 24px));padding:8px 10px;border:1px solid #35536e;border-radius:14px;background:#1b3045;color:#fff;box-shadow:0 10px 35px #0008}
.music-mini-info{flex:1;min-width:0;text-align:left}
.music-mini-name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}
.music-mini-artist{color:#9bb3c8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}
.music-mini:not(.is-pinned) .music-mini-info{cursor:grab;touch-action:none}.music-mini.is-dragging .music-mini-info{cursor:grabbing;user-select:none}
.music-mini .music-icon{flex:none}.music-mini .music-icon:hover{background:#36536f}.music-mini .music-mini-pin{color:#b7c7d7}.music-mini.is-pinned .music-mini-pin{color:#fff;background:#356e9f}.music-mini .music-mini-close{color:#b7c7d7}.music-mini .music-mini-close:hover{color:#fff;background:#75434b}
.music-mini[hidden]{display:none}
#musicOpenBtn.active{color:var(--blue);background:var(--bg-hover)}
@media(max-width:1100px){.music-body{grid-template-columns:165px minmax(0,1fr)}.music-now{display:none}.music-nav{padding:25px 9px}}
@media(max-width:760px){.music-overlay{padding:0}.music-shell{width:100%;height:100%;border:0;border-radius:0}.music-body{display:block}.music-nav{display:none}.music-library{height:100%;padding:24px 18px 12px}.music-head{height:58px;padding:0 14px;gap:9px}.music-head-title{font-size:17px}.music-head-caption{display:none}.music-intro{padding-bottom:20px}.music-player{height:132px;grid-template-columns:1fr;gap:6px;padding:10px 16px calc(12px + env(safe-area-inset-bottom))}.music-current,.music-volume{display:none}.music-center{width:100%}.music-progress{max-width:none}.music-status{bottom:146px}.music-mini{left:8px;right:auto;bottom:84px}.music-overlay:not([hidden])~.music-mini{display:none!important}}
@media(max-width:440px){.music-head .music-button{padding:9px}.music-head .music-button span{display:none}.music-list-head{grid-template-columns:22px minmax(0,1fr) 33px;gap:7px}.music-track{grid-template-columns:minmax(0,1fr) 33px;gap:7px}.music-track-select{grid-template-columns:22px minmax(0,1fr);gap:7px}.music-track-type,.music-list-head .music-type-head{display:none}.music-track-cover{width:38px;height:38px}.music-track{min-height:58px}.music-intro p{font-size:13px}}

/* Разделы библиотеки и отправка музыки */
.music-nav{grid-column:1;grid-row:1}
.music-library,.music-equalizer{grid-column:2;grid-row:1}
.music-now{grid-column:3;grid-row:1}
.music-nav-item{background:transparent;color:#a9bfd3;margin-bottom:4px;cursor:pointer}
.music-nav-item{transition:background .18s ease,color .18s ease,transform .18s ease}
.music-nav-item:hover{background:#1f344a;color:#fff;transform:translateX(3px)}
.music-nav-item.active{background:#244360;color:#e9f4ff}
.music-nav-badge{margin-left:auto;border-radius:12px;padding:2px 7px;font-size:12px;background:#34516e;color:#d5eaff}
.music-mobile-tabs{display:none}
.music-list-head{grid-template-columns:34px minmax(0,1fr) 90px 38px 38px}
.music-track{grid-template-columns:minmax(0,1fr) 38px 38px}
.music-track-share{width:34px;height:34px;display:grid;place-items:center;border-radius:8px;color:#96aec4}
.music-track-share:hover{background:#355576;color:#76baff}
.music-track-share svg{width:18px;height:18px}
.music-track-source{display:block;font-size:12px;color:#70b6f4;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.music-equalizer{min-width:0;overflow-y:auto;padding:34px clamp(18px,3vw,42px);background:linear-gradient(180deg,#1a3047 0,#101b29 230px)}
.music-equalizer[hidden],.music-library[hidden],.music-share-dialog[hidden],.music-button[hidden]{display:none!important}
.music-equalizer h1{font-size:clamp(27px,3vw,38px);line-height:1.1}
.music-eq-description{margin-top:12px;color:#a4b9cd;font-size:14px;line-height:1.5}
.music-eq-top{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:28px 0 20px;flex-wrap:wrap}
.music-eq-modes{display:inline-flex;padding:4px;border-radius:12px;background:#24384d;gap:3px}
.music-eq-modes button{color:#a5bbcf;padding:9px 15px;border-radius:9px;font-weight:600;font-size:14px}
.music-eq-modes button[aria-pressed="true"]{background:#398ee4;color:#fff}
.music-eq-switch{display:inline-flex;align-items:center;gap:10px;cursor:pointer;color:#d9e9f8;font-size:14px}
.music-eq-switch input{width:18px;height:18px;accent-color:#4aa5f4}
.music-eq-card{display:flex;gap:10px;padding:30px 18px 22px;border:1px solid #314c67;border-radius:16px;background:#182b3e;overflow-x:auto;overscroll-behavior-x:contain}
.music-eq-scale{display:flex;flex-direction:column;justify-content:space-between;color:#8da9c0;white-space:nowrap;font-size:12px;height:172px;padding:2px 0 20px}
.music-eq-bands{display:grid;grid-template-columns:repeat(5,minmax(56px,1fr));gap:8px;flex:1;min-width:0}
.music-eq-bands.ten{grid-template-columns:repeat(10,minmax(46px,1fr));min-width:530px}
.music-eq-band{display:flex;flex-direction:column;align-items:center;gap:8px;color:#bed3e5;font-size:12px;min-width:0}
.music-eq-value{min-height:18px;color:#73bcff;font-variant-numeric:tabular-nums}
.music-eq-band input[type="range"]{appearance:auto;writing-mode:vertical-lr;direction:rtl;width:24px;height:142px;accent-color:#65b4f8;cursor:pointer}
.music-eq-band span:last-child{white-space:nowrap;color:#a7bfd3}
.music-equalizer.is-disabled .music-eq-band{opacity:.45}
.music-eq-footer{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:16px;color:#89a5be;font-size:13px;line-height:1.4}
.music-eq-reset{border:1px solid #52769a;padding:9px 13px;border-radius:9px;color:#d8ebff;white-space:nowrap}
.music-eq-reset:hover{background:#2d4b68}
.music-share-dialog{position:absolute;inset:0;z-index:4;display:flex;align-items:center;justify-content:center;background:rgba(5,12,20,.75);padding:16px}
.music-share-card{width:min(430px,100%);max-height:min(570px,100%);overflow-y:auto;border:1px solid #3d5b77;border-radius:17px;background:#1b2e43;padding:23px;box-shadow:0 20px 70px #0009}
.music-share-head{display:flex;align-items:center;justify-content:space-between;gap:15px}
.music-share-head h2{font-size:21px;line-height:1.2}
.music-share-track{font-weight:600;color:#71b9ff;margin:17px 0 8px;overflow-wrap:anywhere}
.music-share-note{color:#a4bbd0;font-size:13px;line-height:1.5;margin-bottom:16px}
.music-share-contacts{display:flex;flex-direction:column;gap:6px}
.music-share-contact{display:flex;align-items:center;gap:11px;width:100%;padding:11px;border-radius:10px;color:#e7f3ff;text-align:left;background:#243c55}
.music-share-contact:hover:not(:disabled){background:#305475}
.music-share-contact:disabled{opacity:.55;cursor:not-allowed}
.music-share-avatar{display:grid;place-items:center;border-radius:50%;width:34px;height:34px;background:#408ee0;color:#fff;flex:none}
.music-share-person{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.music-share-person small{display:block;color:#99b5d0;margin-top:2px}
.music-share-empty{color:#9eb5c9;font-size:14px;line-height:1.5;padding:10px 3px}
@media(max-width:1100px){.music-now{display:none}}
@media(max-width:760px){
  .music-mobile-tabs{display:flex;flex:none;gap:2px;padding:7px 10px;background:#142436;border-bottom:1px solid #2e4257}
  .music-mobile-tabs button{flex:1;padding:9px 3px;border-radius:8px;font-weight:600;color:#9cb3c8;font-size:13px}
  .music-mobile-tabs button{transition:background .18s ease,color .18s ease,transform .18s ease}
  .music-mobile-tabs button[aria-current="page"]{background:#2d587e;color:#fff}
  .music-mobile-tabs button:active{transform:scale(.97)}
  .music-equalizer{height:100%;padding:24px 18px 14px}
  .music-eq-card{padding:20px 10px 16px}
  .music-eq-footer{align-items:flex-start;flex-direction:column}
}
@media(max-width:440px){
  .music-list-head{grid-template-columns:22px minmax(0,1fr) 32px 32px}
  .music-track{grid-template-columns:minmax(0,1fr) 32px 32px}
  .music-track-share{width:31px}
}

/* Эквалайзер открывается из нижней панели рядом с громкостью. */
.music-player-right{display:flex;align-items:center;justify-self:end;gap:8px;width:min(230px,100%);min-width:0}
.music-player-right .music-volume{flex:1;min-width:0;width:auto}
.music-eq-open{flex:none}
.music-eq-open.active{background:#2e5477;color:#82c6ff}
.music-eq-visual{height:92px;display:flex;align-items:flex-end;gap:4px;padding:12px 14px 10px;margin-top:22px;border:1px solid #365372;border-radius:14px;background:linear-gradient(180deg,#1e3954,#172a3e);overflow:hidden}
.music-eq-visual-bar{flex:1;min-width:2px;height:100%;border-radius:5px 5px 2px 2px;background:linear-gradient(0deg,#3388df,#84ceff);transform:scaleY(var(--level,.1));transform-origin:bottom;opacity:.85;transition:transform .1s linear,opacity .1s linear;box-shadow:0 0 9px rgba(91,181,255,.2)}
.music-eq-visual.is-idle .music-eq-visual-bar{transition-duration:.4s}
.music-eq-band{animation:musicBandIn .32s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--band-index,0) * 25ms)}
.music-eq-value{transition:transform .18s,color .18s,text-shadow .18s}
.music-eq-band.adjusting .music-eq-value{transform:translateY(-4px);color:#fff;text-shadow:0 0 9px #69b9ff}
.music-equalizer.is-disabled .music-eq-visual-bar{opacity:.28}
@keyframes musicBandIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}

/* Переходы окна и разделов плеера. */
.music-overlay.is-opening{animation:musicBackdropIn .25s ease-out both}
.music-overlay.is-opening .music-shell{animation:musicShellIn .25s cubic-bezier(.2,.8,.2,1) both}
.music-overlay.is-closing{animation:musicBackdropOut .2s ease-in both;pointer-events:none}
.music-overlay.is-closing .music-shell{animation:musicShellOut .2s ease-in both}
.music-library.tab-enter,.music-equalizer.tab-enter{animation:musicSectionIn .25s cubic-bezier(.2,.8,.2,1) both}
.music-share-dialog:not([hidden]){animation:musicBackdropIn .2s ease-out both}
.music-share-dialog:not([hidden]) .music-share-card{animation:musicShellIn .22s cubic-bezier(.2,.8,.2,1) both}
@keyframes musicBackdropIn{from{opacity:0}to{opacity:1}}
@keyframes musicBackdropOut{from{opacity:1}to{opacity:0}}
@keyframes musicShellIn{from{opacity:0;transform:translateY(15px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes musicShellOut{from{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(10px) scale(.99)}}
@keyframes musicSectionIn{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:760px){
  .music-player{grid-template-columns:minmax(0,1fr) 42px;gap:8px}
  .music-center{grid-column:1;grid-row:1;min-width:0}
  .music-player-right{grid-column:2;grid-row:1;width:42px;justify-self:end}
  .music-eq-visual{height:74px;gap:2px;padding:10px}
}
@media(max-width:440px){
  .music-control-row{gap:4px}
  .music-control-row .music-icon{width:34px;height:34px}
  .music-control-row .music-play{width:36px;height:36px}
}
