.music-library { padding-bottom: 3rem; }
.music-library a, .music-link { color: var(--text-primary); }
.music-subtitle { color: var(--text-secondary); margin-bottom: .5rem; }
.music-client-help { color: var(--text-secondary); font-size: .85rem; margin-bottom: 1rem; max-width: 50rem; }
.music-client-help summary { cursor: pointer; }
.music-client-help p { margin: .5rem 0; }
.music-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; margin: .7rem 0; }
.music-filters { display: flex; flex-wrap: wrap; gap: .9rem; align-items: end; margin: 1rem 0; }
.music-library label { display: flex; flex-direction: column; gap: .3rem; font-size: .9rem; }
.music-library input, .music-library select { color: var(--text-primary); background: var(--bg-primary); border: 1px solid var(--border-color); border-radius: 6px; padding: .5rem; max-width: 100%; }
.music-library input[type=number] { width: 6.5rem; }
.music-library .music-check { flex-direction: row; align-items: center; padding-bottom: .5rem; }
.music-layout { display: grid; grid-template-columns: minmax(0,1fr); gap: 1.5rem; align-items: start; }
.music-layout.has-detail { gap: 0; grid-template-columns: minmax(0,1fr) 14px var(--music-detail-width,480px); }
.music-catalog { min-width: 0; }
.music-grid { display: grid; grid-template-columns: repeat(auto-fill,minmax(min(100%,var(--music-cover-size,180px)),1fr)); gap: 1.25rem; }
.music-album { display: flex; flex-direction: column; min-width: 0; background: var(--bg-card); border: 1px solid var(--border-color); border-radius: 8px; overflow: hidden; transition: box-shadow .15s,border-color .15s; }
.music-album:hover { border-color: var(--accent); box-shadow: 0 8px 24px rgba(0,0,0,.2); }
.music-album.active { border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent); }
.music-cover { position: relative; width: 100%; aspect-ratio: 1; background: #111827; }
.music-cover-open { position: absolute; inset: 0; width: 100%; height: 100%; padding: 0; border: 0; background: transparent; color: var(--text-secondary); cursor: pointer; }
.music-cover img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 1; }
.music-cover-open > span { font-size: 4rem; }
.music-favorite { position: absolute; top: 6px; right: 6px; z-index: 2; width: 28px; height: 28px; display: flex; align-items: center; justify-content: center; border: 0; border-radius: 50%; color: white; background: rgba(0,0,0,.65); backdrop-filter: blur(4px); font-size: 1.1rem; cursor: pointer; }
.music-favorite.is-favorite { color: #f472b6; }
.music-favorite:hover { transform: scale(1.1); }
.music-duration { position: absolute; bottom: 6px; right: 6px; z-index: 2; border-radius: 3px; background: rgba(0,0,0,.8); color: white; padding: 1px 4px; font-size: .7rem; pointer-events: none; }
.music-album-info { padding: .65rem; display: flex; flex-direction: column; gap: .2rem; flex: 1; }
.music-link { border: 0; background: transparent; padding: .2rem 0; text-align: left; cursor: pointer; text-decoration: underline; text-underline-offset: .2em; }
.music-title { font-weight: 700; max-width: 100%; }
.music-album .music-title { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; text-decoration: none; line-height: 1.4; }
.music-album .music-album-artist { color: var(--text-secondary); font-size: .8rem; text-decoration: none; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.music-album-info small { font-size: .7rem; padding-top: .35rem; }
.music-library small { color: var(--text-secondary); }
.music-library .btn[aria-pressed=true] { color: #f472b6; }
.music-library :focus-visible { outline: 3px solid var(--accent-hover); outline-offset: 3px; }
.music-detail { margin: 1rem 0; }
.music-album-panel { position: sticky; top: 1rem; max-height: calc(100dvh - 2rem); overflow-y: auto; scrollbar-gutter: stable; padding: 1.25rem; min-width: 0; }
.music-panel-header { position: sticky; top: 0; z-index: 3; background: var(--bg-card); box-shadow: 0 -1.25rem 0 var(--bg-card); display: flex; align-items: center; justify-content: space-between; gap: .75rem; border-bottom: 1px solid var(--border-color); padding-bottom: .75rem; margin-bottom: 1rem; }
.music-panel-header > strong { color: var(--accent); font-size: .85rem; }
.music-album-summary { display: grid; grid-template-columns: 112px minmax(0,1fr); gap: 1rem; align-items: start; margin-bottom: 1rem; }
.music-album-summary h2 { font-size: 1.1rem; margin: 0 0 .3rem; overflow-wrap: anywhere; }
.music-detail-cover { position: relative; width: 112px; aspect-ratio: 1; background: #111827; border-radius: 8px; overflow: hidden; display: grid; place-items: center; }
.music-detail-cover img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.music-detail-cover > span { font-size: 3rem; color: var(--text-secondary); }
.music-album-meta, .music-track-subtitle { color: var(--text-secondary); font-size: .8rem; }
.music-play-album { width: 100%; text-align: left; }
.music-library .music-inline-label, .music-library .music-page-size { flex-direction: row; align-items: center; gap: .6rem; white-space: nowrap; margin: 0; }
.music-pages { padding: 1rem 0; align-items: center; }
.music-pages select { min-height: 2.5rem; }
.music-album-tracklist { background: var(--bg-secondary); border: 1px solid var(--border-color); border-radius: 8px; padding: .85rem; margin-top: 1rem; }
.music-album-tracklist h3 { font-size: .95rem; margin-bottom: .5rem; }
.music-detail-track { padding: .8rem 0; border-top: 1px solid var(--border-color); }
.music-detail-track.playing .music-track-heading strong { color: var(--accent-hover); }
.music-track-heading { display: grid; grid-template-columns: auto minmax(0,1fr) auto; gap: .6rem; align-items: baseline; }
.music-track-heading strong { font-size: .85rem; overflow-wrap: anywhere; }
.music-track-number { color: var(--text-secondary); font-size: .75rem; }
.music-detail-track .music-actions { gap: .4rem; margin-bottom: 0; }
.music-detail-track .btn { font-size: .75rem; }
.music-detail-track select { font-size: .75rem; padding: .35rem; }
.music-message { padding: 1rem; border: 1px solid var(--danger); border-radius: 8px; }
.music-lyrics { white-space: pre-wrap; max-height: 24rem; overflow-y: auto; }
.music-lyric-line { padding: .3rem .5rem; border-left: 3px solid transparent; }
.music-lyric-line.active { color: var(--accent-hover); background: var(--bg-secondary); border-left-color: var(--accent); font-weight: 700; }
.music-library td.music-actions { display: table-cell; min-width: 9rem; margin: 0; }
.music-library td.music-actions .btn { margin: .2rem .2rem .2rem 0; }
.music-detail h2 { margin: .8rem 0 .3rem; }
.music-detail > .btn { margin: .3rem .3rem .3rem 0; }
@media(max-width:1050px) { .music-layout.has-detail { display: flex; flex-direction: column; } .music-catalog { width: 100%; } .music-album-panel { position: static; max-height: 75dvh; width: 100%; box-sizing: border-box; order: -1; } }
@media(max-width:600px) { .music-filters label { flex: 1 1 40%; } .music-library .btn { padding: .5rem; } .music-album-panel { padding: .8rem; } .music-album-summary { grid-template-columns: 88px minmax(0,1fr); } .music-detail-cover { width: 88px; } }
@media(prefers-reduced-motion:reduce) { .music-album { transition: none; } }

.music-playlist-form { align-items: flex-end; gap: .85rem; padding: 1.1rem; background: var(--bg-secondary); border: 1px solid var(--border-color); border-radius: 8px; }
.music-playlist-form > label:first-child { flex: 1 1 230px; max-width: 380px; }
.music-playlist-form input:not([type=checkbox]), .music-playlist-form > .btn { min-height: 42px; }
.music-library .music-playlist-form .music-check { align-self: flex-end; padding: 0; min-height: 42px; gap: .5rem; margin: 0; }
.music-playlist-grid { margin: 1.25rem 0; }
.music-playlist-card { display: flex; flex-direction: column; text-align: left; align-items: start; gap: .4rem; border: 1px solid var(--border-color); border-radius: 10px; background: var(--bg-card); padding: 1rem; color: var(--text-primary); cursor: pointer; min-width: 0; }
.music-playlist-card:hover { border-color: var(--accent); }
.music-playlist-art { display: grid; place-items: center; width: 100%; aspect-ratio: 1.7; font-size: 3rem; border-radius: 6px; margin-bottom: .5rem; background: linear-gradient(135deg,var(--accent),var(--accent-light)); }
.music-playlist-card > strong { overflow-wrap: anywhere; }
.music-playlist-card > span:not(.music-playlist-art), .music-playlist-card small { color: var(--text-secondary); font-size: .8rem; }
.music-splitter { display: flex; justify-content: center; align-items: center; position: sticky; top: 1rem; height: calc(100dvh - 2rem); touch-action: none; cursor: col-resize; }
.music-splitter span { width: 3px; align-self: stretch; margin: 1.5rem 0; background: var(--border-color); border-radius: 3px; }
.music-splitter:hover span, .music-splitter:focus-visible span { background: var(--accent); width: 4px; }
.music-cover-open:focus-visible { outline-offset: -3px; }
@media(max-width:1050px) { .music-splitter { display: none; } }

.music-layout.has-detail .music-catalog { padding-right: .75rem; }
body.resizing-splitter .music-layout, body.resizing-splitter .music-album { transition: none; user-select: none; }
@media(max-width:1050px) { .music-layout.has-detail .music-catalog { padding-right: 0; } }

.music-ai-playlists { margin: 1.25rem 0; }
.music-ai-playlists h2 { font-size: 1.2rem; margin-bottom: .5rem; }
.music-ai-form { align-items: flex-end; margin: 1rem 0; }
.music-ai-form > .btn { min-height: 38px; }
.music-ai-recipe { display: flex; align-items: center; flex-wrap: wrap; gap: .8rem; border-top: 1px solid var(--border-color); padding-top: .8rem; margin-top: .8rem; }
.music-ai-recipe > div { flex: 1 1 240px; min-width: 0; }
.music-ai-recipe strong, .music-ai-recipe small { display: block; overflow-wrap: anywhere; }
.music-ai-error { color: var(--warning); font-size: .8rem; margin-top: .3rem; }

.virtual-catalog { min-width:0; overflow-anchor:none; }
.virtual-catalog-row { align-items:stretch; }
.virtual-catalog-row .music-album-info { min-height:108px; max-height:108px; box-sizing:border-box; }
.virtual-catalog-placeholder { height:300px; border-radius:8px; background:var(--bg-secondary); padding:1rem; box-sizing:border-box; }
.virtual-catalog-status { display:block; padding:.5rem 0; color:var(--text-secondary); }
.music-recommendations { display:grid; gap:1rem; margin:1rem 0; }
.music-recommendation-track { display:flex; gap:.75rem; align-items:center; padding:.75rem; border-bottom:1px solid var(--border-color); }
.music-recommendation-track img { width:48px; height:48px; object-fit:cover; border-radius:6px; }
.music-recommendation-track > div { flex:1; min-width:0; }
.music-recommendation-track small { display:block; }
.music-resume-note { color:var(--accent-hover); font-size:.75rem; }

.music-artist-card { height:156px; box-sizing:border-box; padding:1rem; overflow:hidden; display:flex; flex-direction:column; gap:.4rem; align-items:flex-start; }
.music-artist-card .music-title { max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.music-artist-card p { margin:0; font-size:.8rem; color:var(--text-secondary); }
.music-artist-card > .btn { margin-top:auto; }
.music-ai-form > .genre-picker { flex:0 1 260px; width:260px; max-width:100%; }

.music-metadata-editor { padding:1rem; margin:1rem 0; border:1px solid var(--accent); border-radius:10px; background:var(--bg-primary); }
.music-metadata-editor form, .music-artwork-editor { display:grid; gap:.7rem; }
.music-metadata-editor label { display:grid; gap:.3rem; min-width:0; }
.music-metadata-editor input { width:100%; min-width:0; box-sizing:border-box; }
.music-metadata-editor small, .music-metadata-editor p { color:var(--text-secondary); font-size:.8rem; }
.music-artwork-editor { margin-top:1rem; padding-top:1rem; border-top:1px solid var(--border-color); }

.music-online-metadata { border-top: 1px solid var(--border-color); padding-top: 1rem; margin-top: 1rem; }
.music-release-results { display: grid; gap: .5rem; margin-top: .8rem; }
.music-release-choice { text-align: left; padding: .7rem; color: var(--text-primary); background: var(--bg-secondary); border: 1px solid var(--border-color); border-radius: 8px; cursor: pointer; }
.music-release-choice.selected { border-color: var(--accent); }
.music-release-choice span, .music-release-choice small { display: block; }
.music-release-preview { margin-top: 1rem; padding: .8rem; border: 1px solid var(--accent); border-radius: 10px; }
.music-release-preview img { width: 130px; height: 130px; object-fit: contain; border-radius: 8px; margin-bottom: .6rem; }
.music-release-preview p { margin: .35rem 0; overflow-wrap: anywhere; }
.playlist-picker-backdrop { position: fixed; inset: 0; z-index: 180; background: rgb(0 0 0 / 55%); display: grid; place-items: center; padding: 1rem; }
.playlist-picker { width: min(480px,100%); max-height: 80dvh; overflow: auto; }
.playlist-picker select { width: 100%; }
