.fm-player{position:fixed;bottom:28px;right:28px;z-index:9999;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;cursor:grab;touch-action:none}
.fm-player:active{cursor:grabbing}
.fm-player *{box-sizing:border-box;margin:0;padding:0}

.fm-disc{width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,#1a1a2e 0%,#16213e 50%,#0f3460 100%);box-shadow:0 2px 16px rgba(0,0,0,.35),inset 0 0 0 3px rgba(255,255,255,.08);cursor:pointer;display:flex;align-items:center;justify-content:center;position:relative;transition:box-shadow .3s}
.fm-disc:hover{box-shadow:0 4px 24px rgba(233,69,96,.35),inset 0 0 0 3px rgba(255,255,255,.12)}
.fm-disc::before{content:'';position:absolute;width:12px;height:12px;border-radius:50%;background:radial-gradient(circle,#e94560 0%,#c73652 100%);z-index:2}
.fm-disc::after{content:'';position:absolute;width:40px;height:40px;border-radius:50%;border:1.5px solid rgba(255,255,255,.06);background:repeating-conic-gradient(rgba(255,255,255,.03) 0deg,transparent 3deg,transparent 12deg);animation:none}
.fm-disc.playing::after{animation:fm-spin 4s linear infinite}
.fm-disc.playing{box-shadow:0 4px 20px rgba(233,69,96,.3),inset 0 0 0 3px rgba(233,69,96,.15)}

.fm-note{position:absolute;font-size:18px;color:rgba(233,69,96,.9);pointer-events:none;z-index:3;text-shadow:0 1px 4px rgba(0,0,0,.3)}

@keyframes fm-spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
@keyframes fm-float{0%{opacity:0;transform:translate(0,0) scale(.6)}30%{opacity:1}100%{opacity:0;transform:translate(-20px,-36px) scale(1.1)}}

.fm-panel{position:absolute;bottom:56px;right:0;width:280px;background:rgba(19,26,46,.96);border:1px solid rgba(233,69,96,.15);border-radius:12px;box-shadow:0 8px 32px rgba(0,0,0,.45);backdrop-filter:blur(12px);opacity:0;visibility:hidden;transform:translateY(8px) scale(.95);transition:all .25s cubic-bezier(.4,0,.2,1);overflow:hidden}
.fm-panel.open{opacity:1;visibility:visible;transform:translateY(0) scale(1)}

.fm-header{padding:10px 14px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(255,255,255,.06)}
.fm-header span{font-size:11px;color:#8896a8;font-weight:600;letter-spacing:.5px;text-transform:uppercase}
.fm-close{background:none;border:none;color:#8896a8;font-size:14px;cursor:pointer;padding:2px 4px;border-radius:4px;transition:color .15s}
.fm-close:hover{color:#e2e8f0}

.fm-now{padding:10px 14px;display:flex;align-items:center;gap:10px}
.fm-now-icon{width:36px;height:36px;border-radius:8px;background:linear-gradient(135deg,#e94560,#c73652);display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0}
.fm-now-info{overflow:hidden;flex:1;min-width:0}
.fm-now-title{font-size:13px;color:#e2e8f0;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fm-now-artist{font-size:10px;color:#8896a8;margin-top:1px}

.fm-controls{display:flex;align-items:center;justify-content:center;gap:16px;padding:4px 14px 8px}
.fm-btn{background:none;border:none;color:#8896a8;font-size:16px;cursor:pointer;padding:4px;border-radius:6px;transition:all .15s;width:32px;height:32px;display:flex;align-items:center;justify-content:center}
.fm-btn:hover{color:#e2e8f0;background:rgba(255,255,255,.06)}
.fm-btn-play{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,#e94560,#c73652);color:#fff;font-size:18px;box-shadow:0 2px 12px rgba(233,69,96,.3)}
.fm-btn-play:hover{color:#fff;background:linear-gradient(135deg,#f05a73,#d94a62);transform:scale(1.05)}
.fm-btn-on{color:#e94560!important;background:rgba(233,69,96,.12)!important}

.fm-progress{padding:0 14px 6px;display:flex;align-items:center;gap:6px}
.fm-progress-bar{flex:1;height:18px;cursor:pointer;position:relative}
.fm-progress-bar::before{content:'';position:absolute;left:0;right:0;top:50%;height:4px;transform:translateY(-50%);background:rgba(255,255,255,.08);border-radius:2px}
.fm-progress-fill{position:absolute;left:0;top:50%;height:4px;transform:translateY(-50%);background:linear-gradient(90deg,#e94560,#f09);border-radius:2px;width:0;pointer-events:none}
.fm-progress-fill::after{content:'';position:absolute;right:-5px;top:50%;transform:translateY(-50%);width:10px;height:10px;border-radius:50%;background:#e94560;box-shadow:0 0 4px rgba(233,69,96,.5);opacity:0;transition:opacity .15s}
.fm-progress-bar:hover .fm-progress-fill::after,.fm-progress-bar:active .fm-progress-fill::after{opacity:1}
.fm-time{font-size:9px;color:#4a5568;flex-shrink:0;min-width:28px}

.fm-list{max-height:180px;overflow-y:auto;border-top:1px solid rgba(255,255,255,.06)}
.fm-list::-webkit-scrollbar{width:3px}
.fm-list::-webkit-scrollbar-thumb{background:rgba(233,69,96,.2);border-radius:2px}
.fm-track{display:flex;align-items:center;gap:8px;padding:7px 14px;cursor:pointer;transition:background .12s;font-size:12px;color:#8896a8}
.fm-track:hover{background:rgba(255,255,255,.04)}
.fm-track.active{color:#e94560;background:rgba(233,69,96,.06)}
.fm-track-idx{width:16px;text-align:center;font-size:10px;flex-shrink:0}
.fm-track-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fm-vol{padding:4px 14px 10px;display:flex;align-items:center;gap:6px;border-top:1px solid rgba(255,255,255,.06)}
.fm-vol-icon{font-size:13px;color:#8896a8;cursor:pointer}
.fm-vol-bar{flex:1;height:18px;cursor:pointer;position:relative}
.fm-vol-bar::before{content:'';position:absolute;left:0;right:0;top:50%;height:4px;transform:translateY(-50%);background:rgba(255,255,255,.08);border-radius:2px}
.fm-vol-fill{position:absolute;left:0;top:50%;height:4px;transform:translateY(-50%);background:#e94560;border-radius:2px;width:80%;pointer-events:none}
.fm-vol-fill::after{content:'';position:absolute;right:-5px;top:50%;transform:translateY(-50%);width:10px;height:10px;border-radius:50%;background:#e94560;box-shadow:0 0 4px rgba(233,69,96,.5);opacity:0;transition:opacity .15s}
.fm-vol-bar:hover .fm-vol-fill::after,.fm-vol-bar:active .fm-vol-fill::after{opacity:1}

@media(max-width:768px){
  .fm-player{bottom:16px;right:16px}
  .fm-disc{width:42px;height:42px}
  .fm-panel{width:260px;bottom:50px}
}
