182 lines
5.2 KiB
CSS
182 lines
5.2 KiB
CSS
/* Container — transparent so the absolute-positioned fallback panel or album art
|
|
controls the card's background. Glass edge matches NowPlayingCard vocabulary. */
|
|
.deepdrft-track-card-container {
|
|
width: 250px;
|
|
height: 250px;
|
|
min-width: 250px;
|
|
position: relative;
|
|
overflow: hidden;
|
|
background: transparent;
|
|
border: 1px solid rgba(250, 250, 248, 0.12);
|
|
}
|
|
|
|
.deepdrft-track-card-bg {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
background-size: cover;
|
|
background-position: center;
|
|
filter: brightness(0.7);
|
|
}
|
|
|
|
.deepdrft-track-card-content {
|
|
position: relative;
|
|
z-index: 1;
|
|
height: 100%;
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: space-between;
|
|
padding: 16px;
|
|
background: linear-gradient(to top,
|
|
rgba(13, 27, 42, 0.75) 0%,
|
|
rgba(13, 27, 42, 0.35) 45%,
|
|
rgba(13, 27, 42, 0.00) 100%);
|
|
}
|
|
|
|
/* Fallback panel — solid navy, opaque so the card reads correctly on both
|
|
light and dark page backgrounds. Semi-transparent + blur washes out on white. */
|
|
.deepdrft-track-card-fallback {
|
|
position: absolute;
|
|
top: 0; left: 0; width: 100%; height: 100%;
|
|
background: var(--deepdrft-navy-mid, #162437);
|
|
border: 1px solid rgba(250, 250, 248, 0.12);
|
|
}
|
|
|
|
/* Title: off-white — matches .np-title.
|
|
::deep required: MudText renders its own element, so Blazor isolation
|
|
won't stamp b-{hash} on it; ::deep pierces into child component output. */
|
|
::deep .deepdrft-track-title { color: var(--deepdrft-white, #FAFAF8); }
|
|
|
|
/* Artist: muted off-white — green reserved for interactive elements (FAB, chip). ::deep for same reason. */
|
|
::deep .deepdrft-track-artist { color: rgba(250, 250, 248, 0.55); }
|
|
|
|
/* Meta: muted off-white — matches .np-sub. ::deep for same reason. */
|
|
::deep .deepdrft-track-meta { color: rgba(250, 250, 248, 0.45); }
|
|
|
|
/* FAB always green-interactive — card is always dark glass regardless of page theme.
|
|
.mud-button-filled-tertiary specificity (0,1,0) in MudBlazor; our (0,1,1) wins. */
|
|
::deep .mud-button-filled-tertiary {
|
|
background-color: var(--deepdrft-green-interactive, #3aa163);
|
|
color: var(--deepdrft-white, #FAFAF8);
|
|
}
|
|
|
|
/* Genre chip always green-accent outline/text on the dark glass card. */
|
|
::deep .deepdrft-genre-chip.mud-chip-outlined {
|
|
border-color: var(--deepdrft-green-accent, #3D7A68);
|
|
color: var(--deepdrft-green-accent, #3D7A68);
|
|
}
|
|
::deep .deepdrft-genre-chip.mud-chip-color-tertiary {
|
|
color: var(--deepdrft-green-accent, #3D7A68);
|
|
}
|
|
|
|
.deepdrft-track-info-middle { margin: 8px 0; }
|
|
|
|
.deepdrft-track-info-bottom {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
}
|
|
|
|
@media (max-width: 480px) {
|
|
.deepdrft-track-card-container {
|
|
min-width: 200px;
|
|
width: 200px;
|
|
height: 200px;
|
|
}
|
|
}
|
|
|
|
/* ── Mode A: hover-reveal overlay (art cards only) ──────────────────────── */
|
|
|
|
/* Gate the hidden-at-rest rule on (a) art present and (b) a hover-capable pointer.
|
|
Fallback cards (no --art modifier) and touch devices always show the overlay. */
|
|
@media (hover: hover) and (pointer: fine) {
|
|
.deepdrft-track-card-container--art .deepdrft-track-card-content {
|
|
opacity: 0;
|
|
background: transparent;
|
|
transition: opacity 180ms ease, background-color 180ms ease;
|
|
}
|
|
.deepdrft-track-card-container--art:hover .deepdrft-track-card-content {
|
|
opacity: 1;
|
|
background: var(--deepdrft-navy-mid, #162437);
|
|
transition: opacity 180ms ease, background-color 180ms ease;
|
|
}
|
|
}
|
|
|
|
/* ── Mode B: list row ───────────────────────────────────────────────────── */
|
|
|
|
.deepdrft-track-row {
|
|
display: flex;
|
|
flex-direction: row;
|
|
align-items: center;
|
|
gap: 16px;
|
|
height: 80px;
|
|
padding: 8px 16px;
|
|
background: var(--deepdrft-navy-mid, #162437);
|
|
border: 1px solid rgba(250, 250, 248, 0.12);
|
|
border-radius: 4px;
|
|
box-sizing: border-box;
|
|
width: 100%;
|
|
}
|
|
|
|
.deepdrft-track-row-link {
|
|
display: flex;
|
|
flex-direction: row;
|
|
align-items: center;
|
|
gap: 16px;
|
|
flex: 1 1 auto;
|
|
min-width: 0;
|
|
text-decoration: none;
|
|
color: inherit;
|
|
}
|
|
|
|
.deepdrft-track-row-fab {
|
|
flex: 0 0 auto;
|
|
}
|
|
|
|
.deepdrft-track-row-thumb {
|
|
flex: 0 0 64px;
|
|
width: 64px;
|
|
height: 64px;
|
|
background-size: cover;
|
|
background-position: center;
|
|
border-radius: 2px;
|
|
}
|
|
|
|
.deepdrft-track-row-thumb--fallback {
|
|
background: color-mix(in srgb, var(--deepdrft-navy-mid, #162437) 60%, rgba(250,250,248,0.1));
|
|
border: 1px solid rgba(250, 250, 248, 0.12);
|
|
}
|
|
|
|
.deepdrft-track-row-text {
|
|
flex: 1 1 auto;
|
|
min-width: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
}
|
|
|
|
.deepdrft-track-row-meta {
|
|
flex: 0 0 auto;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: flex-end;
|
|
justify-content: center;
|
|
gap: 4px;
|
|
}
|
|
|
|
@media (max-width: 480px) {
|
|
.deepdrft-track-row {
|
|
height: auto;
|
|
min-height: 72px;
|
|
padding: 8px 12px;
|
|
gap: 10px;
|
|
}
|
|
.deepdrft-track-row-thumb {
|
|
flex: 0 0 48px;
|
|
width: 48px;
|
|
height: 48px;
|
|
}
|
|
}
|