.container { position: relative; width: 100%; height: 100%; } .placeholder { display: flex; align-items: center; justify-content: center; width: 100%; } .row { display: grid; grid-template-columns: 240px 1fr; gap: var(--theme-spacing-md); padding: 0 var(--theme-spacing-md) var(--theme-spacing-xl) var(--theme-spacing-md); } .image-wrapper { position: relative; display: block; width: 100%; aspect-ratio: 1; overflow: hidden; color: inherit; text-decoration: none; border-radius: var(--theme-radius-md); &::before { position: absolute; top: 0; left: 0; z-index: 5; width: 100%; height: 100%; pointer-events: none; content: ''; background-color: rgb(0 0 0); opacity: 0; transition: opacity 0.2s ease-in-out; } &:hover { @mixin dark { &::before { opacity: 0.7; } } @mixin light { &::before { opacity: 0.5; } } } } .row .image { object-fit: var(--theme-image-fit); border-radius: var(--theme-radius-md); } .row .metadata { display: flex; flex-direction: column; gap: var(--theme-spacing-xs); align-items: center; padding: var(--theme-spacing-sm); overflow: hidden; text-overflow: ellipsis; font-size: var(--theme-font-size-md); text-align: center; } .row .title { font-weight: 500; } .row .artist { font-size: var(--theme-font-size-sm); color: var(--theme-colors-foreground-muted); } .row .right { min-width: 0; overflow: hidden; } .row .tracks-table { display: flex; flex-direction: column; width: 100%; font-size: var(--theme-font-size-sm); } .row .track-row { display: flex; flex-wrap: nowrap; align-items: center; min-width: 0; overflow: hidden; } .row .track-header-cell { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .row .track-cell { min-width: 0; padding-right: var(--theme-spacing-sm); padding-left: var(--theme-spacing-sm); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .row .track-row-size-compact { height: 32px; min-height: 32px; max-height: 32px; } .row .track-row-size-default { height: 40px; min-height: 40px; max-height: 40px; } .row .track-row-size-large { height: 48px; min-height: 48px; max-height: 48px; } .row .track-cell-muted { color: var(--theme-colors-foreground-muted); } .row .track-cell-with-vertical-border { border-right: 1px solid transparent; } .row .track-cell-vertical-border-visible { border-right-color: var(--theme-colors-border); } .row .track-cell-image { display: flex; align-self: stretch; min-height: 0; max-height: 100%; padding-right: var(--theme-spacing-sm); padding-left: var(--theme-spacing-sm); overflow: hidden; } .track-row-selected { @mixin dark { background-color: lighten(var(--theme-colors-surface), 5%); } @mixin light { background-color: darken(var(--theme-colors-surface), 5%); } } .track-row-dragging { opacity: 0.5; } .track-row.track-row-alternate-even { background-color: var(--theme-colors-background); } .track-row.track-row-alternate-odd { @mixin dark { background-color: darken(var(--theme-colors-background), 30%); } @mixin light { background-color: darken(var(--theme-colors-background), 2%); } } .track-row.track-row-with-horizontal-border { border-top: 1px solid transparent; } .track-row.track-row-horizontal-border-visible { border-top-color: var(--theme-colors-border); } .track-row.track-row-hover-highlight-enabled { position: relative; } .track-row.track-row-hover-highlight-enabled .track-cell { position: relative; z-index: 2; } .track-row.track-row-hover-highlight-enabled:hover::before { position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 1; pointer-events: none; content: ''; background-color: var(--theme-colors-surface); opacity: 0.7; } .skeleton-image { width: 100%; aspect-ratio: 1; border-radius: var(--theme-radius-md); } .skeleton-title { width: 75%; height: 1.25rem; } .skeleton-artist { width: 50%; height: 1rem; } .skeleton-tracks { display: flex; flex-direction: column; gap: 0; } .skeleton-track-row { display: grid; grid-template-columns: 40px 1fr 8rem; gap: var(--theme-spacing-sm); align-items: center; padding-right: var(--theme-spacing-sm); padding-left: var(--theme-spacing-sm); } .skeleton-tracks-size-compact .skeleton-track-row { height: 32px; padding-top: 0; padding-bottom: 0; } .skeleton-tracks-size-default .skeleton-track-row { height: 40px; padding-top: 0; padding-bottom: 0; } .skeleton-tracks-size-large .skeleton-track-row { height: 48px; padding-top: 0; padding-bottom: 0; } .skeleton-track-cell { width: 100%; height: 1rem; } .skeleton-track-cell-title { width: 100%; min-width: 0; height: 1rem; }