179 lines
4.8 KiB
CSS
179 lines
4.8 KiB
CSS
/* Background-image hero with the release detail overlaid directly on top, themed to match the
|
|
NowPlaying glassmorphic family. The overlay shell (.release-hero, shim, top/bottom rows) is
|
|
plain <div>s; per-page aspect/sizing variance rides an extra class (e.g. .mix-hero) layered on
|
|
.release-hero. The default aspect here is Sessions' wide hero. */
|
|
|
|
/* Positioning context for every overlay. A tall, dominant frame rather than the 16:9 strip. */
|
|
.release-hero {
|
|
position: relative;
|
|
width: 100%;
|
|
aspect-ratio: 16 / 10;
|
|
max-height: 70vh;
|
|
min-height: 420px;
|
|
margin-top: 1rem;
|
|
overflow: hidden;
|
|
border-radius: 8px;
|
|
box-shadow: 0 12px 40px color-mix(in srgb, var(--mud-palette-text-secondary) 22%, transparent);
|
|
}
|
|
|
|
/* The background-image surface and placeholder are plain <div>s, so no ::deep is needed here. */
|
|
.release-hero-img {
|
|
position: absolute;
|
|
inset: 0;
|
|
background-size: cover;
|
|
background-position: center;
|
|
background-repeat: no-repeat;
|
|
}
|
|
|
|
.release-hero-placeholder {
|
|
position: absolute;
|
|
inset: 0;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
background-color: var(--mud-palette-surface);
|
|
}
|
|
|
|
::deep .release-hero-placeholder .mud-icon-root {
|
|
font-size: 120px;
|
|
}
|
|
|
|
/* Darkening gradient shim: stronger at the bottom (under the title/play row) and lighter toward
|
|
the middle, with a top darken so the genre/share overlay stays legible too. */
|
|
.release-hero-shim {
|
|
position: absolute;
|
|
inset: 0;
|
|
pointer-events: none;
|
|
background:
|
|
linear-gradient(to bottom,
|
|
rgba(0, 0, 0, 0.55) 0%,
|
|
rgba(0, 0, 0, 0.15) 28%,
|
|
rgba(0, 0, 0, 0.15) 55%,
|
|
rgba(0, 0, 0, 0.75) 100%);
|
|
}
|
|
|
|
/* --- Top overlay: genre / date / share --- */
|
|
.release-hero-top {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
z-index: 2;
|
|
display: flex;
|
|
align-items: flex-start;
|
|
justify-content: space-between;
|
|
gap: 1rem;
|
|
padding: 1.25rem 1.5rem;
|
|
}
|
|
|
|
.release-overlay-date {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.1rem;
|
|
}
|
|
|
|
.release-overlay-label {
|
|
font-family: var(--deepdrft-font-mono);
|
|
font-size: 0.6rem;
|
|
letter-spacing: 0.25em;
|
|
text-transform: uppercase;
|
|
color: var(--deepdrft-green-accent);
|
|
}
|
|
|
|
.release-overlay-value {
|
|
font-family: var(--deepdrft-font-body);
|
|
font-size: 0.8rem;
|
|
color: var(--deepdrft-white);
|
|
}
|
|
|
|
/* Genre chip themed to the glassmorphic NowPlaying surface. The class lands on MudChip's native
|
|
.mud-chip output, so ::deep is required to reach it. */
|
|
::deep .release-overlay-chip.mud-chip {
|
|
background: rgba(250, 250, 248, 0.06);
|
|
border: 1px solid rgba(250, 250, 248, 0.12);
|
|
backdrop-filter: blur(8px);
|
|
color: var(--deepdrft-white);
|
|
font-family: var(--deepdrft-font-mono);
|
|
letter-spacing: 0.12em;
|
|
}
|
|
|
|
/* --- Bottom overlay: cover thumb / title / play --- */
|
|
.release-hero-bottom {
|
|
position: absolute;
|
|
bottom: 0;
|
|
left: 0;
|
|
right: 0;
|
|
z-index: 2;
|
|
padding: 1.5rem;
|
|
}
|
|
|
|
.release-cover-thumb {
|
|
flex: 0 0 auto;
|
|
width: 96px;
|
|
height: 96px;
|
|
overflow: hidden;
|
|
border: 1px solid rgba(250, 250, 248, 0.12);
|
|
box-shadow: 0 8px 28px rgba(0, 0, 0, 0.45);
|
|
}
|
|
|
|
/* The cover-thumb art surface is a plain <div>, so no ::deep is needed. */
|
|
.release-cover-thumb .deepdrft-track-detail-cover-art {
|
|
width: 100%;
|
|
height: 100%;
|
|
background-size: cover;
|
|
background-position: center;
|
|
background-repeat: no-repeat;
|
|
}
|
|
|
|
.release-hero-titles {
|
|
flex: 1 1 auto;
|
|
min-width: 0;
|
|
}
|
|
|
|
.release-overlay-title {
|
|
font-family: var(--deepdrft-font-display);
|
|
font-size: clamp(1.75rem, 4vw, 2.75rem);
|
|
font-weight: 400;
|
|
line-height: 1.1;
|
|
color: var(--deepdrft-white);
|
|
text-shadow: 0 2px 12px rgba(0, 0, 0, 0.6);
|
|
}
|
|
|
|
.release-overlay-artist {
|
|
font-family: var(--deepdrft-font-body);
|
|
font-size: 0.85rem;
|
|
letter-spacing: 0.08em;
|
|
color: rgba(250, 250, 248, 0.7);
|
|
margin-top: 0.35rem;
|
|
}
|
|
|
|
.release-hero-play {
|
|
flex: 0 0 auto;
|
|
}
|
|
|
|
/* The play affordance and share button sit over a dark image — force their icon glyphs to the
|
|
light theme color regardless of MudBlazor's Secondary palette. Both PlayStateIcon and
|
|
SharePopover render MudIconButton / MudProgressCircular internals, so ::deep is required. */
|
|
::deep .release-hero-play .mud-icon-button,
|
|
::deep .release-hero-play .mud-progress-circular,
|
|
::deep .release-hero-share .mud-icon-button {
|
|
color: var(--deepdrft-white);
|
|
}
|
|
|
|
@media (max-width: 599.98px) {
|
|
.release-hero {
|
|
aspect-ratio: 3 / 4;
|
|
min-height: 380px;
|
|
}
|
|
|
|
/* release-hero-bottom-row rides on MudStack's native output div, so ::deep is required. */
|
|
::deep .release-hero-bottom-row {
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.release-cover-thumb {
|
|
width: 72px;
|
|
height: 72px;
|
|
}
|
|
}
|