/* 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; } ::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 */ ::deep .minimized-dock { position: fixed; bottom: 60px; right: 60px; z-index: 1300; } ::deep .minimized-dock:hover { transform: scale(1.1); } /* Spacer to prevent content overlap */ ::deep .player-spacer { height: 140px; width: 100%; flex-shrink: 0; } @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; } ::deep .player-spacer { height: 160px; } } /* Unified responsive player layout. Wide and narrow shapes are pure CSS — no runtime breakpoint subscription. Children are targeted by their stable classes (transport-zone, volume-controls, seek-zone) rather than positional nth-child, since all three render a .mud-stack root and positional selectors would be fragile. */ .player-layout { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding-right: 2.5rem; /* clear the abs-positioned PlayerWindowControls */ } /* Wide (>= 600px): single row, seek zone grows and sits between transport and volume */ @media (min-width: 600px) { ::deep .transport-zone { order: 1; } ::deep .seek-zone { order: 2; flex-grow: 1; flex-basis: 0; } ::deep .volume-controls { order: 3; align-self: flex-start; } } /* Narrow (< 600px): transport + volume on top row, seek full-width below */ @media (max-width: 599.98px) { ::deep .transport-zone { order: 1; } ::deep .volume-controls { order: 2; } ::deep .seek-zone { flex-basis: 100%; order: 3; } }