/* ─── Song Card ───────────────────────────────────────────────── */ .song-card { position: relative; flex: 0 0 140px; width: 140px; cursor: pointer; background: var(--bg-card); border-radius: var(--radius-lg); overflow: hidden; box-shadow: inset 0 0 0 1px var(--border-subtle); } .song-card:hover { box-shadow: inset 0 0 0 1px var(--border), var(--shadow-md); } .song-card-cover { /* Round/clip/aspect/paint-stability come from .cover-circle (layout/cover-art.css). Inset margin floats the disc inside the card so corners read as a tile, not an album. */ margin: var(--space-3) var(--space-3) 0; } /* Vinyl-disc rim — reads as a record edge, sets single tracks apart from album tiles. */ .song-card-cover::after { content: ''; position: absolute; inset: 0; border-radius: var(--radius-full); box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.28), inset 0 0 0 3px rgba(255, 255, 255, 0.05); pointer-events: none; } .song-card-cover-placeholder { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; color: var(--text-muted); } .song-card-play-overlay { position: absolute; inset: 0; background: rgba(0, 0, 0, 0.4); display: flex; align-items: center; justify-content: center; gap: 6px; opacity: 0; pointer-events: none; transition: opacity var(--transition-base); } .song-card:hover .song-card-play-overlay, .song-card:focus-within .song-card-play-overlay { opacity: 1; } .song-card-action-btn { background: var(--accent); color: var(--ctp-crust); border: none; width: 32px; height: 32px; border-radius: var(--radius-full, 999px); display: flex; align-items: center; justify-content: center; cursor: pointer; pointer-events: none; transition: filter var(--transition-fast); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5); } .song-card:hover .song-card-action-btn, .song-card:focus-within .song-card-action-btn { pointer-events: auto; } .song-card-action-btn:hover { filter: brightness(1.08); } .song-card-info { padding: var(--space-2) var(--space-3) var(--space-3); text-align: center; } .song-card-title { font-weight: 600; font-size: 12px; color: var(--text-primary); margin: 0 0 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .song-card-artist { margin: 0; font-size: 11px; color: var(--text-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .song-card-album-badge { display: inline-flex; align-items: center; gap: 4px; margin-top: 6px; padding: 2px 8px; font-size: 10px; font-weight: 600; color: var(--text-secondary); background: var(--bg-hover); border: 1px solid var(--border-subtle); border-radius: var(--radius-full); cursor: pointer; transition: color var(--transition-fast), background var(--transition-fast), border-color var(--transition-fast); } .song-card-album-badge:hover { color: var(--accent); background: var(--bg-card); border-color: var(--accent); } .song-card-rating { display: flex; gap: 2px; color: var(--accent); margin-top: 4px; line-height: 1; justify-content: center; }