136 lines
3.9 KiB
CSS
136 lines
3.9 KiB
CSS
/* Geometry, positioning, and animation only.
|
||
Colour, surface, and elevation come from MudBlazor theme props. */
|
||
|
||
/* Fixed dock to the viewport bottom */
|
||
.player-dock {
|
||
position: fixed;
|
||
bottom: 0;
|
||
left: 0;
|
||
right: 0;
|
||
z-index: 1200;
|
||
padding: 0;
|
||
margin: 0;
|
||
}
|
||
|
||
.player-fixed {
|
||
position: relative;
|
||
top: 0;
|
||
left: 0;
|
||
right: 0;
|
||
z-index: 1200;
|
||
padding: 0;
|
||
margin: 0;
|
||
}
|
||
|
||
::deep .player-inner-container {
|
||
padding: 1rem;
|
||
padding-bottom: 1.5rem;
|
||
}
|
||
|
||
/* The visible surface is a MudPaper; scoped CSS only sets geometry + a hairline accent */
|
||
::deep .player-surface {
|
||
position: relative;
|
||
border-radius: 16px;
|
||
border: 1px solid var(--mud-palette-primary);
|
||
overflow: hidden;
|
||
margin-bottom: 1rem;
|
||
}
|
||
|
||
/* Minimize / close cluster, pinned top-right of the surface */
|
||
::deep .player-surface .player-window-controls {
|
||
position: absolute;
|
||
top: 0.5rem;
|
||
right: 0.5rem;
|
||
}
|
||
|
||
/* Minimized floating dock — positioning + hover only; colour from MudFab */
|
||
.minimized-dock {
|
||
position: fixed;
|
||
bottom: 60px;
|
||
right: 60px;
|
||
z-index: 1300;
|
||
}
|
||
|
||
.minimized-dock:hover {
|
||
transform: scale(1.1);
|
||
}
|
||
|
||
@media (max-width: 768px) {
|
||
::deep .minimized-dock {
|
||
bottom: 15px;
|
||
right: 15px;
|
||
}
|
||
|
||
::deep .player-inner-container {
|
||
padding: 0.75rem;
|
||
padding-bottom: 1.25rem;
|
||
}
|
||
|
||
::deep .player-surface {
|
||
margin-bottom: 1.25rem;
|
||
}
|
||
}
|
||
|
||
/* Unified responsive player layout — CSS Grid with named areas redefined per breakpoint.
|
||
The metadata (meta-zone) detaches from the waveform (seek-zone) in the mid band, which a
|
||
flex order-swap can't express, so each of the four zones is placed by grid-area and the three
|
||
shapes are pure template-area swaps — no runtime breakpoint subscription. min-width:0 on the
|
||
shrinkable centre zones lets the title truncate and the waveform shrink instead of overflowing. */
|
||
.player-layout {
|
||
display: grid;
|
||
align-items: center;
|
||
gap: 8px;
|
||
/*padding-right: 2.5rem; !* clear the abs-positioned PlayerWindowControls *!*/
|
||
}
|
||
|
||
::deep .transport-zone { grid-area: transport; }
|
||
::deep .meta-zone { grid-area: meta; min-width: 0; }
|
||
::deep .seek-zone { grid-area: waveform; min-width: 0; }
|
||
::deep .volume-zone { grid-area: volume; }
|
||
|
||
/* Wide (>= 900px): single row — transport and volume flank the centre column; the metadata
|
||
sits directly under the waveform (transport/volume span both rows, centred). */
|
||
@media (min-width: 900px) {
|
||
.player-layout {
|
||
grid-template-columns: auto minmax(360px, 1fr) auto;
|
||
grid-template-areas:
|
||
"transport waveform volume"
|
||
"transport meta volume";
|
||
}
|
||
}
|
||
|
||
/* Mid (600–900px): metadata rides the top row between transport and volume; the waveform gets
|
||
the whole bottom row to itself rather than being squeezed beside the metadata. */
|
||
@media (min-width: 600px) and (max-width: 899.98px) {
|
||
.player-layout {
|
||
grid-template-columns: auto minmax(0, 1fr) auto;
|
||
grid-template-areas:
|
||
"transport meta volume"
|
||
"waveform waveform waveform";
|
||
}
|
||
}
|
||
|
||
/* Narrow (< 600px): transport + volume share the top row; waveform then metadata stack full-width
|
||
below — the most compressed shape. */
|
||
@media (min-width: 420px) and (max-width: 599.98px) {
|
||
.player-layout {
|
||
grid-template-columns: auto 1fr auto;
|
||
grid-template-areas:
|
||
"transport . volume"
|
||
"waveform waveform waveform"
|
||
"meta meta meta";
|
||
}
|
||
}
|
||
|
||
/* Very Narrow (< 400px): transport + volume share the top row; waveform then metadata stack full-width
|
||
below — the most compressed shape. */
|
||
@media (max-width: 419.98px) {
|
||
.player-layout {
|
||
grid-template-columns: auto 1fr auto;
|
||
grid-template-areas:
|
||
"transport . volume"
|
||
"waveform waveform waveform"
|
||
"meta meta meta";
|
||
}
|
||
}
|