/* The seven-knob bar lives INLINE in the mix-detail controls area and animates open/closed in place (lava reframe §7b) — NOT a popover or drawer. Collapsed, it has zero size and is fully transparent; the @Expanded flag (mirrored to the .is-expanded class) transitions it open. We animate max-width + max-height + opacity + transform together so the bar reads as the controls growing in place rather than a panel popping in. Closed state is pointer-events:none + visibility:hidden so collapsed knobs are not focusable or hit-testable. */ .mix-visualizer-controls-bar { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: flex-end; gap: 0.85rem 1rem; /* Collapsed: zero footprint, slid up toward the toggle, transparent. */ max-width: 0; max-height: 0; opacity: 0; transform: translateY(-8px); overflow: hidden; visibility: hidden; pointer-events: none; /* NowPlaying glass surface (§7e): translucent dark shim, soft blur, rounded, secondary-tinted hairline — matches the session-hero overlay family. Padding animates in with the size. */ padding: 0; border-radius: 10px; background: rgba(13, 27, 42, 0.55); border: 1px solid color-mix(in srgb, var(--mud-palette-secondary) 22%, transparent); backdrop-filter: blur(10px); box-shadow: 0 10px 30px rgba(0, 0, 0, 0.35); transition: max-width 0.32s cubic-bezier(0.22, 0.61, 0.36, 1), max-height 0.32s cubic-bezier(0.22, 0.61, 0.36, 1), opacity 0.24s ease, padding 0.32s cubic-bezier(0.22, 0.61, 0.36, 1), transform 0.32s cubic-bezier(0.22, 0.61, 0.36, 1); } .mix-visualizer-controls-bar.is-expanded { max-width: 640px; max-height: 420px; opacity: 1; transform: translateY(0); visibility: visible; pointer-events: auto; padding: 0.85rem 1rem; } /* One control: a RadialKnob with its Material icon caption underneath. RadialKnob has no icon slot, so the icon rides adjacent (§7d). Center the pair so the seven read as a tidy bar. */ .mix-visualizer-control { display: flex; flex-direction: column; align-items: center; gap: 0.3rem; } /* The caption icon is a MudIcon (a Razor component), so Blazor CSS isolation does not stamp the scope attribute onto its element — reach it with ::deep. Tinted to the secondary accent and the overlay-label opacity so it matches the session-hero NowPlaying captions (§7e). */ .mix-visualizer-control ::deep .mix-visualizer-control-icon { color: var(--mud-palette-secondary); opacity: 0.78; }