.cover { position: relative; display: inline-grid; place-items: center; flex: none; overflow: hidden; border-radius: 8px; color: rgba(255, 255, 255, 0.85); } .coverImg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity 0.35s ease; } .coverImgOn { opacity: 1; } .round { border-radius: 50%; } .link { color: inherit; text-decoration: none; } .link:hover { text-decoration: underline; } .grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(168px, 1fr)); gap: 20px; } .card, .artistChip { display: flex; flex-direction: column; gap: 6px; min-width: 0; padding: 10px; margin: -10px; border-radius: var(--radius-lg); color: inherit; text-decoration: none; } .card:hover, .artistChip:hover { background: var(--hover); } .artistChip { align-items: center; text-align: center; width: 128px; } .cardCoverWrap { position: relative; margin-bottom: 4px; overflow: hidden; border-radius: 12px; } .cardCover { aspect-ratio: 1; border-radius: 12px; transition: transform 0.28s cubic-bezier(0.2, 0.8, 0.2, 1); } .card:hover .cardCover, .card:focus-within .cardCover { transform: scale(1.04); } .cardPlay { position: absolute; right: 10px; bottom: 10px; z-index: 1; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; background: #fff; color: #05070d; opacity: 0; transform: translateY(6px); transition: opacity 0.18s, transform 0.18s; } .card:hover .cardPlay, .card:focus-within .cardPlay, .cardPlay:focus-visible { opacity: 1; transform: none; } .cardPlay:active { transform: scale(0.94); } .cardTitle { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%; } .cardMeta { font-size: 13px; color: var(--text3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%; } .tracks { display: flex; flex-direction: column; } .disc { margin: 14px 12px 6px; font-size: 12px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--text3); } .track { display: grid; grid-template-columns: 40px minmax(0, 1fr) auto; align-items: center; gap: 14px; min-height: 56px; padding: 6px 12px; border-radius: 10px; animation: pipuIn 0.2s ease-out both; animation-delay: var(--stagger, 0ms); } .trackStatic { animation: none; } .track:has(.trackAlbum) { grid-template-columns: 40px minmax(0, 2fr) minmax(0, 1fr) auto; } .track:has(.lead) { grid-template-columns: 44px 44px minmax(0, 1fr) auto; } .track:has(.lead):has(.trackAlbum) { grid-template-columns: 44px 44px minmax(0, 1.4fr) minmax(0, 1fr) auto; } .lead { display: flex; justify-content: center; font-size: 13px; color: var(--text3); font-variant-numeric: tabular-nums; } .dimmed { opacity: 0.6; } .eq { display: flex; gap: 2px; align-items: flex-end; height: 14px; } .eq span { width: 3px; height: 14px; border-radius: 2px; background: var(--accent2); transform-origin: bottom; animation: pipuEq 0.55s ease-in-out infinite alternate; } .eq span:nth-child(2) { animation-duration: 0.72s; animation-delay: 0.1s; } .eq span:nth-child(3) { animation-duration: 0.89s; animation-delay: 0.2s; } .eqPaused span { animation-play-state: paused; } .track:hover { background: var(--hover); } .unavailable { opacity: 0.45; } .num { position: relative; display: grid; place-items: center; color: var(--text3); font-variant-numeric: tabular-nums; } .playHint { position: absolute; inset: 0; display: none; place-items: center; border-radius: 8px; background: rgba(5, 7, 13, 0.55); color: #fff; } .track:not(.unavailable) { cursor: pointer; } .track:hover .playHint, .track:focus-visible .playHint { display: grid; } .current { background: var(--accent-soft); } .current .trackTitle { color: var(--accent2); } .end { display: flex; align-items: center; gap: 10px; } .like { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; color: var(--text3); opacity: 0; } .track:hover .like, .track:focus-within .like, .liked { opacity: 1; } .liked { color: var(--accent2); } .rowMeta { color: var(--text3); } .trackMain { display: flex; flex-direction: column; min-width: 0; } .trackTitle { font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .trackArtists, .trackAlbum { font-size: 13px; color: var(--text2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .duration { font-size: 13px; color: var(--text3); font-variant-numeric: tabular-nums; } @media (max-width: 767px) { .track:has(.trackAlbum) { grid-template-columns: 40px minmax(0, 1fr) auto; } .trackAlbum { display: none; } } @media (max-width: 767px) { .cardPlay { opacity: 1; transform: none; } .grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; } .track, .track:has(.trackAlbum) { gap: 8px; padding: 6px 4px; } .track:has(.lead), .track:has(.lead):has(.trackAlbum) { grid-template-columns: 24px 40px minmax(0, 1fr) auto; } .end { gap: 4px; } .like { opacity: 1; width: 44px; height: 44px; } .track:has([data-playlist-actions]) .end { grid-column: 3 / -1; justify-content: flex-end; } }