/* music-player.css - 精简版（移除 !important 滥用） */

/* ===== 主容器 ===== */
.music-player {
    position: fixed;
    bottom: 20px;
    right: 20px;
    background: var(--bg-card, #ffffff);
    border-radius: 8px;
    box-shadow: 0 8px 24px rgba(0,0,0,.15);
    width: 420px;
    overflow: hidden;
    transition: opacity .3s ease, visibility .3s ease, transform .3s ease;
    z-index: 10000;
    max-height: 700px;
    border: 1px solid var(--border-color, #e0e0e0);
    display: none;
    transform: scale(.95);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}
.music-player.show {
    transform: scale(1);
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
}
.music-player:hover {
    transform: scale(1) translateY(-2px);
    box-shadow: 0 12px 32px rgba(0,0,0,.2);
}
.music-player.collapsed { max-height: 200px; }
.music-player.hiding {
    transform: scale(.95);
    opacity: 0;
    visibility: hidden;
    transition: opacity .3s ease, visibility .3s ease, transform .3s ease;
}

/* ===== 音乐按钮 ===== */
#musicBtn {
    position: relative;
    transition: all .3s ease;
}
#musicBtn.active {
    background: var(--primary-color, #4361ee);
    color: #fff;
    transform: scale(1.1);
}
#musicBtn.active::after {
    content: '';
    position: absolute;
    inset: -2px;
    border: 2px solid var(--primary-color, #4361ee);
    border-radius: 8px;
    animation: pulse 2s infinite;
}
#musicBtn.loading {
    position: relative;
    overflow: hidden;
}
#musicBtn.loading::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,.4), transparent);
    animation: loading 1.5s infinite;
}
@keyframes pulse {
    0%,100% { transform:scale(1); opacity:1; }
    50% { transform:scale(1.05); opacity:.8; }
}
@keyframes loading {
    0% { left:-100%; }
    100% { left:100%; }
}

/* ===== 入场动画 ===== */
.music-player .player-top,
.music-player .progress-section,
.music-player .lyrics-section,
.music-player .bottom-section {
    opacity: 0;
    transform: translateY(10px);
    transition: all .3s ease;
}
.music-player.show .player-top { opacity:1; transform:translateY(0); transition-delay:.1s; }
.music-player.show .progress-section { opacity:1; transform:translateY(0); transition-delay:.15s; }
.music-player.show .lyrics-section { opacity:1; transform:translateY(0); transition-delay:.2s; }
.music-player.show .bottom-section { opacity:1; transform:translateY(0); transition-delay:.25s; }

/* ===== 顶部 ===== */
.player-top { display:flex; padding:12px 15px 8px; border-bottom:1px solid rgba(0,0,0,.08); }
.cover-section { display:flex; align-items:center; flex:1; }
.album-cover {
    position:relative; width:50px; height:50px; border-radius:50%;
    overflow:hidden; margin-right:12px; box-shadow:0 4px 10px rgba(0,0,0,.1);
}
.album-cover img { width:100%; height:100%; object-fit:cover; display:none; }
.cover-placeholder {
    width:100%; height:100%; display:flex; align-items:center; justify-content:center;
    background:var(--bg-secondary,#f8f9fa); border-radius:50%;
}
.cover-placeholder svg { width:60%; height:60%; }
.album-cover.playing img { animation: rotate 20s linear infinite; }
@keyframes rotate { from{transform:rotate(0)} to{transform:rotate(360deg)} }

.song-basic-info { flex:1; min-width:0; }
.song-title-container { position:relative; overflow:hidden; height:20px; margin-bottom:2px; }
.song-title {
    font-size:14px; font-weight:600; color:var(--text-primary,#2b2d42);
    white-space:nowrap; position:absolute; left:0; top:0;
}
.song-title.scrolling { animation: scrollText 10s linear infinite; }
.song-artist-container { position:relative; overflow:hidden; height:16px; }
.song-artist {
    font-size:12px; color:var(--text-secondary,#6c757d);
    white-space:nowrap; position:absolute; left:0; top:0;
}
.song-artist.scrolling { animation: scrollText 12s linear infinite; }
@keyframes scrollText {
    0% { transform:translateX(100%); }
    100% { transform:translateX(-100%); }
}

/* ===== 控制面板 ===== */
.control-panel { display:flex; flex-direction:column; gap:8px; }
.playback-controls { display:flex; align-items:center; justify-content:center; gap:8px; }
.play-mode-controls { display:flex; align-items:center; justify-content:center; gap:8px; }
.control-btn {
    background:none; border:none; padding:8px; border-radius:50%; cursor:pointer;
    transition:all .3s ease; color:var(--text-secondary,#6c757d);
    display:flex; align-items:center; justify-content:center;
    position:relative; width:36px; height:36px; box-sizing:border-box;
}
.control-btn:hover { background:rgba(67,97,238,.1); color:var(--primary-color,#4361ee); transform:scale(1.05); }
.control-btn svg { width:18px; height:18px; fill:currentColor; }
.play-btn { background:var(--primary-color,#4361ee); color:#fff; padding:10px; width:40px; height:40px; }
.play-btn:hover { background:var(--secondary-color,#3a0ca3); color:#fff; }
.play-btn svg { width:20px; height:20px; }

#search-toggle-btn { position:relative; display:flex; align-items:center; justify-content:center; }
#search-toggle-btn .search-icon,
#search-toggle-btn .back-icon {
    position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
    transition:opacity .3s ease; width:18px; height:18px;
}

.volume-control { display:flex; align-items:center; gap:8px; position:relative; }
.volume-slider {
    position:absolute; bottom:100%; left:50%; transform:translateX(-50%);
    background:var(--bg-card,#fff); padding:0 6px; border-radius:20px;
    box-shadow:var(--shadow,0 2px 4px rgba(0,0,0,.05)); z-index:10;
}
.volume-slider input[type="range"] {
    width:80px; height:4px; background:var(--border-color,#e9ecef);
    border-radius:2px; outline:none; margin-bottom:12px; -webkit-appearance:none;
}
.volume-slider input[type="range"]::-webkit-slider-thumb {
    -webkit-appearance:none; width:12px; height:12px;
    background:var(--primary-color,#4361ee); border-radius:50%;
    cursor:pointer; transition:all .2s ease;
}
.volume-slider input[type="range"]::-webkit-slider-thumb:hover {
    background:var(--secondary-color,#3a0ca3); transform:scale(1.2);
}

/* ===== 进度条 ===== */
.progress-section {
    padding:8px 15px 10px; border-bottom:1px solid rgba(0,0,0,.08);
    display:flex; align-items:center; gap:10px; min-height:35px;
}
.progress-container { display:flex; flex-direction:column; gap:6px; flex:1; min-width:0; }
.time-display {
    display:flex; justify-content:space-between; font-size:11px;
    color:var(--text-secondary,#6c757d); font-weight:500;
}
.time-text {
    background:rgba(67,97,238,.1); padding:2px 6px; border-radius:4px; font-family:monospace;
}
.progress-bar {
    position:relative; height:6px; background:var(--border-color,#e9ecef);
    border-radius:3px; cursor:pointer; width:100%; overflow:hidden; touch-action:none;
}
.progress {
    position:absolute; height:100%; background:var(--primary-color,#4361ee);
    border-radius:3px; width:0%; transition:width .1s ease;
    will-change:width; z-index:2; box-shadow:0 0 4px rgba(67,97,238,.5);
}
.progress.no-transition { transition:none; }
.progress-handle {
    position:absolute; top:50%; transform:translate(-50%,-50%);
    width:12px; height:12px; background:var(--bg-card,#fff);
    border:2px solid var(--primary-color,#4361ee); border-radius:50%;
    opacity:0; transition:opacity .2s ease; z-index:3;
    box-shadow:0 2px 4px rgba(0,0,0,.2);
}
.progress-bar:hover .progress-handle { opacity:1; }
.progress-actions { display:flex; align-items:center; gap:8px; }
.speed-control { display:flex; align-items:center; position:relative; }
.speed-selector { width:65px; }
.music-player select { display:none; }

/* ===== 自定义下拉 ===== */
.custom-select {
    position:relative; width:100%; user-select:none;
}
.custom-select-trigger {
    display:flex; align-items:center; justify-content:space-between; padding:6px 10px;
    background:rgba(255,255,255,.8); border:1px solid var(--border-color,#e9ecef);
    border-radius:8px; font-size:12px; color:var(--text-primary,#2b2d42);
    cursor:pointer; transition:all .2s ease; min-height:32px;
}
.custom-select-trigger:hover { border-color:var(--primary-color,#4361ee); background:rgba(67,97,238,.05); }
.custom-select-trigger.open { border-color:var(--primary-color,#4361ee); box-shadow:0 0 0 2px rgba(67,97,238,.1); }
.custom-select-trigger .arrow {
    transition:transform .2s ease; width:16px; height:16px;
    background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='%237f8c8d' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M7 10l5 5 5-5z'/%3E%3C/svg%3E");
    background-size:contain; background-repeat:no-repeat;
}
.custom-select-trigger.open .arrow { transform:rotate(180deg); }
.custom-select-value { flex:1; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.custom-select-dropdown {
    position:absolute; top:100%; left:0; right:0;
    background:var(--bg-card,#fff); border:1px solid var(--border-color,#e9ecef);
    border-radius:8px; box-shadow:var(--shadow-xl,0 8px 16px rgba(0,0,0,.1));
    z-index:100000; max-height:240px; overflow-y:auto;
    opacity:0; visibility:hidden; transform:scaleY(.95);
    transform-origin:top center; transition:opacity .2s ease,visibility .2s ease,transform .2s ease;
    scrollbar-width:none;
}
.custom-select-dropdown::-webkit-scrollbar { display:none; }
.custom-select-dropdown.open {
    opacity:1; visibility:visible; transform:scaleY(1);
}
.custom-select-option {
    padding:10px 12px; font-size:12px; color:var(--text-primary,#2b2d42);
    cursor:pointer; transition:all .15s ease;
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.custom-select-option:hover { background:rgba(67,97,238,.08); color:var(--primary-color,#4361ee); }
.custom-select-option.selected {
    background:rgba(67,97,238,.12); color:var(--primary-color,#4361ee); font-weight:500; position:relative;
}
.custom-select-option.selected::before { content:'✓'; position:absolute; right:12px; font-size:12px; }
.speed-control .custom-select-dropdown {
    z-index:100002; width:auto; min-width:65px;
}

/* ===== 歌词 ===== */
.lyrics-section {
    padding:0 15px; border-bottom:1px solid rgba(0,0,0,.08);
    height:56px; display:flex; align-items:center; overflow:hidden;
}
.lyrics-container {
    width:100%; height:auto; max-height:100%;
    overflow-x:auto; overflow-y:hidden; scrollbar-width:none;
    white-space:nowrap; cursor:grab; display:flex; align-items:center;
}
.lyrics-container::-webkit-scrollbar { display:none; }
.lyrics-single-line {
    display:inline-block; white-space:nowrap; font-size:16px; line-height:1.4;
    color:var(--text-primary,#2b2d42); font-weight:500;
    transition:opacity .35s ease,transform .35s ease;
}

/* ===== 底部 ===== */
.bottom-section { max-height:500px; overflow:hidden; transition:max-height .3s ease; background:inherit; }
.music-player.collapsed .bottom-section { max-height:0; }
.bottom-tabs {
    display:flex; border-bottom:1px solid rgba(0,0,0,.08);
    overflow-x:auto; position:sticky; top:0; background:inherit; z-index:5; scrollbar-width:none;
}
.bottom-tabs::-webkit-scrollbar { display:none; }
.tab-btn {
    flex:1; background:none; border:none; padding:10px 5px; font-size:12px;
    color:var(--text-secondary,#6c757d); cursor:pointer; transition:all .3s ease;
    border-bottom:2px solid transparent; min-width:80px; white-space:nowrap;
}
.tab-btn:hover { color:var(--primary-color,#4361ee); background:rgba(67,97,238,.05); }
.tab-btn.active { color:var(--primary-color,#4361ee); border-bottom-color:var(--primary-color,#4361ee); }

.tab-content { display:none; padding:0; max-height:450px; overflow-y:auto; }
.tab-content.active { display:block; }
.playlist-header {
    display:flex; justify-content:space-between; align-items:center;
    padding:12px 15px 8px; border-bottom:1px solid rgba(0,0,0,.08);
    min-height:36px; position:sticky; top:0; background:inherit; z-index:10; margin-bottom:0;
}
.playlist-selector { flex:1; }
.content-container { max-height:380px; overflow-y:auto; padding:0 15px 15px; scrollbar-width:none; }
.content-container::-webkit-scrollbar { display:none; }
.playlist-container { max-height:380px; overflow-y:auto; }
.loading { text-align:center; color:var(--text-secondary,#6c757d); padding:20px; font-size:12px; }

/* ===== 歌单项 ===== */
.song-item {
    display:flex; align-items:center; justify-content:space-between;
    padding:8px 12px; border-radius:6px; cursor:pointer;
    transition:all .3s ease; margin-bottom:2px; font-size:12px; min-height:36px;
}
.song-item:hover { background:rgba(67,97,238,.1); }
.song-item.active { background:rgba(67,97,238,.15); color:var(--primary-color,#4361ee); position:relative; }
.song-item.active::before { content:'▶'; position:absolute; left:5px; color:var(--primary-color,#4361ee); font-size:10px; }
.song-item-info { flex:1; min-width:0; margin-left:15px; }
.song-item-title { font-weight:500; margin-bottom:1px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; font-size:12px; }
.song-item-artist { color:var(--text-secondary,#6c757d); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; font-size:11px; }

/* ===== 搜索 ===== */
.music-player .search-container { display:flex; flex-direction:column; gap:6px; }
.music-player .search-header { padding:0; margin-bottom:6px; position:sticky; top:0; background:inherit; z-index:5; margin-top:8px; }
.music-player .search-input-group {
    display:flex; gap:0; position:relative; background:rgba(255,255,255,.6);
    border-radius:8px; padding:0; box-shadow:var(--shadow,0 2px 4px rgba(0,0,0,.05));
    transition:all .3s ease; border:1px solid transparent; height:24px; width:100%;
}
.music-player .search-input-group:focus-within {
    background:var(--bg-card,#fff); box-shadow:var(--shadow-lg,0 4px 6px rgba(0,0,0,.07));
    border-color:var(--primary-color,#4361ee); transform:translateY(-1px);
}
.music-player .search-input-group input {
    flex:1; padding:4px 12px; border:none; border-radius:8px; font-size:12px;
    outline:none; background:transparent; color:var(--text-primary,#2b2d42); height:100%; width:100%;
}
.music-player .search-input-group input::placeholder { color:#9ca3af; }
.music-player .search-icon {
    position:absolute; right:16px; top:50%; transform:translateY(-50%);
    color:var(--text-secondary,#6c757d); transition:all .3s ease;
    pointer-events:none; width:14px; height:14px;
}
.music-player .search-input-group:focus-within .search-icon { color:var(--primary-color,#4361ee); }
.music-player .search-results { max-height:340px; overflow-y:auto; width:100%; scrollbar-width:none; }
.music-player .search-results::-webkit-scrollbar { display:none; }
.music-player .search-download-btn {
    background:none; border:none; padding:8px; border-radius:50%; cursor:pointer;
    transition:all .3s ease; color:var(--text-secondary,#6c757d);
    display:flex; align-items:center; justify-content:center;
    opacity:0; margin-left:8px; width:36px; height:36px;
}
.music-player .song-item:hover .search-download-btn { opacity:1; }
.music-player .search-download-btn:hover { background:rgba(67,97,238,.1); color:var(--primary-color,#4361ee); transform:scale(1.05); }
.music-player .search-download-btn svg { width:18px; height:18px; fill:currentColor; }

.error-message {
    text-align:center; color:var(--error-color,#ef4444); padding:15px;
    background:rgba(231,76,60,.1); border-radius:8px; margin:10px 0;
}
.retry-btn {
    background:var(--primary-color,#4361ee); color:#fff; border:none;
    padding:8px 16px; border-radius:4px; cursor:pointer; font-size:12px; margin-top:10px;
    transition:background .3s ease;
}
.retry-btn:hover { background:var(--secondary-color,#3a0ca3); }
.loading-spinner {
    display:inline-block; width:20px; height:20px;
    border:2px solid #f3f3f3; border-top:2px solid var(--primary-color,#4361ee);
    border-radius:50%; animation:spin 1s linear infinite; margin-right:8px;
}
.download-btn {
    background:none; border:none; padding:8px; border-radius:50%; cursor:pointer;
    transition:all .3s ease; color:var(--text-secondary,#6c757d);
    display:flex; align-items:center; justify-content:center; width:36px; height:36px;
}
.download-btn:hover { background:rgba(67,97,238,.1); color:var(--primary-color,#4361ee); transform:scale(1.05); }
.download-btn svg { width:18px; height:18px; fill:currentColor; }

.download-progress {
    position:fixed; bottom:80px; right:20px;
    background:var(--bg-card,#fff); padding:10px 15px; border-radius:8px;
    box-shadow:var(--shadow-lg,0 4px 6px rgba(0,0,0,.07)); z-index:10002;
    min-width:200px; font-size:12px; font-family:inherit;
}
.download-progress-bar {
    height:4px; background:var(--border-color,#e9ecef); border-radius:2px;
    overflow:hidden; margin-top:5px;
}
.download-progress-fill {
    height:100%; background:var(--primary-color,#4361ee);
    transition:width .3s ease; border-radius:2px;
}

/* ===== 响应式 ===== */
@media (max-width:480px) {
    .music-player { width:auto; left:var(--container-padding-xs,16px); right:var(--container-padding-xs,16px); bottom:20px; max-height:80vh; }
    .playlist-header { flex-direction:row; gap:10px; padding:10px 12px 8px; }
    .tab-btn { min-width:70px; font-size:11px; padding:8px 4px; }
    .play-mode-controls .control-btn,
    .playback-controls .control-btn { padding:8px; transform:scale(.9); margin:0 2px; width:32px; height:32px; }
    .play-btn { padding:10px; transform:scale(1.1); margin:0 2px; width:36px; height:36px; }
    .volume-control .control-btn { padding:8px; transform:scale(.9); width:32px; height:32px; }
    .music-player .search-download-btn { padding:8px; transform:scale(.9); opacity:1; width:32px; height:32px; }
    .content-container { max-height:280px; padding:0 12px 12px; }
    .playlist-container,.music-player .search-results { max-height:280px; }
    .progress-section { padding:6px 12px 8px; }
    .time-text { font-size:10px; padding:1px 4px; }
    .progress-actions { gap:6px; }
    .song-title-container { height:22px; width:80px; max-width:80px; }
    .song-artist-container { height:18px; width:70px; max-width:70px; }
    .lyrics-section { height:48px; }
    .lyrics-single-line { font-size:14px; line-height:1.4; }
    .music-player .search-input-group { height:28px; border-radius:8px; }
    .music-player .search-input-group input { padding:6px 12px; font-size:12px; }
    .music-player .search-header { margin-top:6px; }
    #search-toggle-btn .search-icon,
    #search-toggle-btn .back-icon { width:16px; height:16px; }
}

/* ===== 深色模式 ===== */
.dark-mode .music-player {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    box-shadow: 0 8px 24px rgba(0,0,0,.4);
}
.dark-mode .music-player:hover { box-shadow: 0 12px 32px rgba(0,0,0,.5); }
.dark-mode .player-top { border-bottom-color: rgba(255,255,255,.08); }
.dark-mode .song-title { color: var(--text-primary); }
.dark-mode .song-artist { color: var(--text-secondary); }
.dark-mode .cover-placeholder { background: var(--bg-secondary); }
.dark-mode .control-btn { color: var(--text-secondary); }
.dark-mode .control-btn:hover { background: rgba(67,97,238,.2); color: var(--primary-color); }
.dark-mode .play-btn { background: var(--primary-color); color: #fff; }
.dark-mode .play-btn:hover { background: var(--secondary-color); }
.dark-mode .progress-section { border-bottom-color: rgba(255,255,255,.08); }
.dark-mode .progress-bar { background: var(--border-color); }
.dark-mode .progress { background: var(--primary-color); box-shadow: 0 0 4px rgba(123,156,255,.5); }
.dark-mode .progress-handle { background: var(--bg-card); border-color: var(--primary-color); }
.dark-mode .time-text { background: rgba(123,156,255,.15); }
.dark-mode .time-display { color: var(--text-secondary); }
.dark-mode .custom-select-trigger {
    background: var(--bg-secondary);
    border-color: var(--border-color);
    color: var(--text-primary);
}
.dark-mode .custom-select-trigger:hover {
    border-color: var(--primary-color);
    background: rgba(123,156,255,.1);
}
.dark-mode .custom-select-dropdown {
    background: var(--bg-card);
    border-color: var(--border-color);
    box-shadow: 0 8px 16px rgba(0,0,0,.3);
}
.dark-mode .custom-select-option { color: var(--text-primary); }
.dark-mode .custom-select-option:hover { background: rgba(123,156,255,.15); color: var(--primary-color); }
.dark-mode .custom-select-option.selected { background: rgba(123,156,255,.2); color: var(--primary-color); }
.dark-mode .lyrics-section { border-bottom-color: rgba(255,255,255,.08); }
.dark-mode .lyrics-single-line { color: var(--text-primary); }
.dark-mode .bottom-tabs { border-bottom-color: rgba(255,255,255,.08); }
.dark-mode .tab-btn { color: var(--text-secondary); }
.dark-mode .tab-btn:hover { color: var(--primary-color); background: rgba(123,156,255,.1); }
.dark-mode .tab-btn.active { color: var(--primary-color); border-bottom-color: var(--primary-color); }
.dark-mode .playlist-header { border-bottom-color: rgba(255,255,255,.08); }
.dark-mode .loading { color: var(--text-secondary); }
.dark-mode .song-item { color: var(--text-primary); }
.dark-mode .song-item:hover { background: rgba(123,156,255,.1); }
.dark-mode .song-item.active { background: rgba(123,156,255,.2); color: var(--primary-color); }
.dark-mode .song-item.active::before { color: var(--primary-color); }
.dark-mode .song-item-artist { color: var(--text-secondary); }
.dark-mode .music-player .search-input-group {
    background: var(--bg-secondary);
    box-shadow: 0 2px 4px rgba(0,0,0,.2);
}
.dark-mode .music-player .search-input-group:focus-within {
    background: var(--bg-card);
    border-color: var(--primary-color);
}
.dark-mode .music-player .search-input-group input { color: var(--text-primary); }
.dark-mode .music-player .search-input-group input::placeholder { color: #8f9bb3; }
.dark-mode .music-player .search-icon { color: var(--text-secondary); }
.dark-mode .music-player .search-input-group:focus-within .search-icon { color: var(--primary-color); }
.dark-mode .music-player .search-download-btn { color: var(--text-secondary); }
.dark-mode .music-player .search-download-btn:hover { background: rgba(123,156,255,.2); color: var(--primary-color); }
.dark-mode .error-message { background: rgba(239,68,68,.15); }
.dark-mode .download-progress {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    color: var(--text-primary);
}
.dark-mode .download-progress-bar { background: var(--border-color); }
.dark-mode .download-progress-fill { background: var(--primary-color); }
.dark-mode .volume-slider {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
}
.dark-mode .volume-slider input[type="range"] { background: var(--border-color); }
.dark-mode .volume-slider input[type="range"]::-webkit-slider-thumb { background: var(--primary-color); }
.dark-mode .volume-slider input[type="range"]::-webkit-slider-thumb:hover { background: #5a7aff; }