        /* --- Radio Visual Overlay --- */
        #radio-visual-root.radio-visual-root {
            position: absolute;
            inset: 0;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            padding: clamp(10px, 2.5vw, 28px);
            box-sizing: border-box;
            max-width: 100%;
            overflow-x: hidden;
            overflow-y: auto;
            background:
                radial-gradient(ellipse 120% 80% at 50% 0%, rgba(255, 180, 90, 0.12), transparent 55%),
                radial-gradient(ellipse 90% 70% at 50% 100%, rgba(20, 40, 80, 0.35), transparent 60%),
                linear-gradient(165deg, #0c0a08 0%, #1a1410 38%, #0a0e14 100%);
            color: #f5e6d0;
            font-family: system-ui, -apple-system, Segoe UI, sans-serif;
            z-index: 2;
            user-select: none;
            -webkit-tap-highlight-color: transparent;
        }
        #radio-visual-root.radio-visual-root * { box-sizing: border-box; }
        #radio-visual-root .radio-visual-skin-toggle {
            position: absolute;
            top: clamp(8px, 2vw, 16px);
            right: clamp(8px, 2vw, 16px);
            display: flex;
            gap: 6px;
            z-index: 20;
        }
        #radio-visual-root .radio-visual-skin-btn {
            border: 1px solid rgba(255, 200, 120, 0.35);
            background: rgba(0, 0, 0, 0.45);
            color: #e8c89a;
            font-size: 11px;
            font-weight: 700;
            letter-spacing: 0.12em;
            text-transform: uppercase;
            padding: 6px 10px;
            border-radius: 4px;
            cursor: pointer;
        }
        #radio-visual-root .radio-visual-skin-btn.is-active {
            color: #1a1208;
            background: linear-gradient(180deg, #f0c878, #c8863a);
            border-color: #ffe4a8;
            box-shadow: 0 0 14px rgba(255, 190, 80, 0.45);
        }
        #radio-visual-root .radio-visual-stage {
            width: min(960px, 100%);
            display: none;
            flex-direction: column;
            align-items: stretch;
            gap: clamp(12px, 2vh, 20px);
        }
        #radio-visual-root .radio-visual-stage.is-active { display: flex; }
        /* Digital stage: scale interior from a fixed 960px-wide design (keeps layout ratio on narrow viewports). */
        #radio-visual-root .radio-visual-stage.radio-visual-skin--digital {
            container-type: inline-size;
            container-name: rv-digital;
            width: min(960px, 100%);
            margin-left: auto;
            margin-right: auto;
            --rv-digital-bg-a: var(--global-rv-digital-bg-a, #0a1628);
            --rv-digital-bg-b: var(--global-rv-digital-bg-b, #061018);
            --rv-digital-bg-c: var(--global-rv-digital-bg-c, #0c1020);
            --rv-digital-bg-outer-a: var(--global-rv-digital-bg-outer-a, #0a1628);
            --rv-digital-bg-outer-b: var(--global-rv-digital-bg-outer-b, #061018);
            --rv-digital-bg-outer-c: var(--global-rv-digital-bg-outer-c, #0c1020);
            --rv-digital-bg-gradient-angle: var(--global-rv-digital-bg-gradient-angle, 165);
            --rv-digital-bg-outer-gradient-angle: var(--global-rv-digital-bg-outer-gradient-angle, 165);
            --rv-digital-bg-outer-image-opacity: var(--global-rv-digital-bg-outer-image-opacity, 1);
            --rv-digital-bg-panel-image-opacity: var(--global-rv-digital-bg-panel-image-opacity, 1);
            --rv-digital-panel-opacity: var(--global-rv-digital-panel-opacity, 1);
            --rv-digital-bg-gif-opacity: var(--global-rv-digital-bg-gif-opacity, 1);
            --rv-digital-accent-color: var(--global-rv-digital-accent-color, #ffd246);
            --rv-digital-ui-font: var(--global-rv-digital-ui-font, 'Orbitron', 'Share Tech Mono', ui-monospace, monospace);
            --rv-digital-btn-blue-font: var(--global-rv-digital-btn-blue-font, var(--rv-digital-ui-font));
            --rv-digital-btn-purple-font: var(--global-rv-digital-btn-purple-font, var(--rv-digital-ui-font));
            --rv-digital-btn-orange-font: var(--global-rv-digital-btn-orange-font, var(--rv-digital-ui-font));
            --rv-digital-btn-blue-top: var(--global-rv-digital-btn-blue-top, #123048);
            --rv-digital-btn-blue-base: var(--global-rv-digital-btn-blue-base, #081820);
            --rv-digital-btn-blue-accent: var(--global-rv-digital-btn-blue-accent, #00dcff);
            --rv-digital-btn-blue-label: var(--global-rv-digital-btn-blue-label, #9eeeff);
            --rv-digital-btn-blue-active: var(--global-rv-digital-btn-blue-active, #ffe566);
            --rv-digital-btn-blue-accent-opacity: var(--global-rv-digital-btn-blue-accent-opacity, 1);
            --rv-digital-btn-blue-opacity: var(--global-rv-digital-btn-blue-opacity, 1);
            --rv-digital-btn-blue-text-opacity: var(--global-rv-digital-btn-blue-text-opacity, 1);
            --rv-digital-btn-blue-border-opacity: var(--global-rv-digital-btn-blue-border-opacity, 1);
            --rv-digital-btn-purple-top: var(--global-rv-digital-btn-purple-top, #5a3488);
            --rv-digital-btn-purple-base: var(--global-rv-digital-btn-purple-base, #1a0c30);
            --rv-digital-btn-purple-label: var(--global-rv-digital-btn-purple-label, #5cff9e);
            --rv-digital-btn-purple-active: var(--global-rv-digital-btn-purple-active, #ff5ce8);
            --rv-digital-btn-purple-accent-opacity: var(--global-rv-digital-btn-purple-accent-opacity, 1);
            --rv-digital-btn-purple-opacity: var(--global-rv-digital-btn-purple-opacity, 1);
            --rv-digital-btn-purple-text-opacity: var(--global-rv-digital-btn-purple-text-opacity, 1);
            --rv-digital-btn-purple-border-opacity: var(--global-rv-digital-btn-purple-border-opacity, 1);
            --rv-digital-btn-orange-top: var(--global-rv-digital-btn-orange-top, #e87820);
            --rv-digital-btn-orange-base: var(--global-rv-digital-btn-orange-base, #8a4010);
            --rv-digital-btn-orange-label: var(--global-rv-digital-btn-orange-label, #ffe8cc);
            --rv-digital-btn-orange-active: var(--global-rv-digital-btn-orange-active, #ffcc00);
            --rv-digital-btn-orange-accent-opacity: var(--global-rv-digital-btn-orange-accent-opacity, 1);
            --rv-digital-btn-orange-opacity: var(--global-rv-digital-btn-orange-opacity, 1);
            --rv-digital-btn-orange-text-opacity: var(--global-rv-digital-btn-orange-text-opacity, 1);
            --rv-digital-btn-orange-border-opacity: var(--global-rv-digital-btn-orange-border-opacity, 1);
            --rv-digital-btn-blue-font-scale: var(--global-rv-digital-btn-blue-font-scale, 1);
            --rv-digital-btn-purple-font-scale: var(--global-rv-digital-btn-purple-font-scale, 1);
            --rv-digital-btn-orange-font-scale: var(--global-rv-digital-btn-orange-font-scale, 1);
            --rv-digital-clock-font: var(--global-rv-digital-clock-font, var(--rv-digital-ui-font));
            --rv-digital-clock-color: var(--global-rv-digital-clock-color, #fff566);
            --rv-digital-clock-font-scale: var(--global-rv-digital-clock-font-scale, 1);
            --rv-digital-clock-opacity: var(--global-rv-digital-clock-opacity, 1);
            --rv-digital-toolbar-divider-height: var(--global-rv-digital-toolbar-divider-height, 2px);
            --rv-digital-toolbar-divider-color: var(--global-rv-digital-toolbar-divider-color, #00dcff);
            --rv-digital-toolbar-divider-glow: var(--global-rv-digital-toolbar-divider-glow, 0);
            --rv-digital-toolbar-divider-spacing: var(--global-rv-digital-toolbar-divider-spacing, 3px);
            --rv-digital-feature-divider-height: var(--global-rv-digital-feature-divider-height, 2px);
            --rv-digital-feature-divider-color: var(--global-rv-digital-feature-divider-color, #c86bff);
            --rv-digital-feature-divider-glow: var(--global-rv-digital-feature-divider-glow, 0);
            --rv-digital-feature-divider-spacing: var(--global-rv-digital-feature-divider-spacing, 3px);
            --rv-digital-crossfade-trackpad-responsiveness: var(--global-rv-digital-crossfade-trackpad-responsiveness, 1);
        }
        #radio-visual-root .radio-visual-stations-line {
            display: flex;
            align-items: center;
            justify-content: center;
            flex-wrap: wrap;
            gap: 0.35em 0.75em;
            width: 100%;
            padding: 0 8px 4px;
            text-align: center;
            font-size: clamp(0.95rem, 3.8vw, 1.35rem);
            font-weight: 800;
            letter-spacing: 0.04em;
            line-height: 1.2;
            text-shadow: 0 2px 12px rgba(0, 0, 0, 0.65);
        }
        #radio-visual-root .radio-visual-station-part {
            display: inline-flex;
            align-items: baseline;
            gap: 0.3em;
            max-width: min(46%, 420px);
            min-width: 0;
        }
        #radio-visual-root .radio-visual-station-tag {
            flex-shrink: 0;
            font-size: 0.72em;
            letter-spacing: 0.14em;
            opacity: 0.75;
        }
        #radio-visual-root .radio-visual-station-part--a .radio-visual-station-tag {
            color: rgba(255, 160, 120, 0.9);
        }
        #radio-visual-root .radio-visual-station-part--b .radio-visual-station-tag {
            color: rgba(120, 190, 255, 0.95);
        }
        #radio-visual-root .radio-visual-station-name {
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
            min-width: 0;
        }
        #radio-visual-root .radio-visual-station-part--b .radio-visual-station-name {
            color: rgba(170, 215, 255, 0.96);
            text-shadow: 0 0 10px rgba(60, 140, 255, 0.35);
        }
        #radio-visual-root .radio-visual-station-sep {
            opacity: 0.45;
            font-weight: 600;
            user-select: none;
        }
        #radio-visual-root .radio-visual-tuner-shell {
            position: relative;
            border-radius: 12px;
            padding: clamp(14px, 3vw, 22px);
            background: linear-gradient(180deg, #2a2218 0%, #14100c 100%);
            border: 3px solid #4a3c2a;
            box-shadow:
                inset 0 2px 0 rgba(255, 220, 160, 0.12),
                inset 0 -8px 24px rgba(0, 0, 0, 0.55),
                0 12px 40px rgba(0, 0, 0, 0.45);
            overflow: hidden;
        }
        #radio-visual-root .radio-visual-tuner-shell::after {
            content: '';
            position: absolute;
            inset: 0;
            background: repeating-linear-gradient(
                0deg,
                transparent,
                transparent 2px,
                rgba(255, 255, 255, 0.03) 2px,
                rgba(255, 255, 255, 0.03) 4px
            );
            pointer-events: none;
            animation: radio-visual-scan 6s linear infinite;
        }
        @keyframes radio-visual-scan {
            0% { transform: translateY(-100%); }
            100% { transform: translateY(100%); }
        }
        #radio-visual-root .radio-visual-tuner-rail {
            position: relative;
            height: clamp(52px, 10vw, 72px);
            margin: 8px 0 16px;
            border-radius: 6px;
            background: linear-gradient(180deg, #0a0908, #1e1812);
            border: 1px solid #5a4a36;
            overflow: hidden;
        }
        #radio-visual-root .radio-visual-tuner-ticks {
            position: absolute;
            inset: 8px 12px auto;
            height: 14px;
            display: flex;
            justify-content: space-between;
            align-items: flex-end;
            font-size: 9px;
            color: rgba(230, 200, 150, 0.55);
            letter-spacing: 0.02em;
        }
        #radio-visual-root .radio-visual-tuner-needle {
            position: absolute;
            bottom: 4px;
            left: 0;
            width: 3px;
            height: 72%;
            margin-left: -1px;
            background: linear-gradient(180deg, #ff4540, #8b1010);
            border-radius: 2px;
            box-shadow: 0 0 10px rgba(255, 60, 40, 0.75);
            transform: translateX(0);
            transition: left 0.55s cubic-bezier(0.34, 1.2, 0.64, 1);
            pointer-events: none;
            z-index: 2;
        }
        #radio-visual-root .radio-visual-tuner-needle--deck-b {
            width: 2px;
            height: 64%;
            background: linear-gradient(180deg, #6ec8ff, #1a5a9e);
            box-shadow: 0 0 12px rgba(80, 170, 255, 0.85);
            z-index: 3;
            opacity: 0.45;
            transition: left 0.55s cubic-bezier(0.34, 1.2, 0.64, 1), opacity 0.35s;
        }
        #radio-visual-root .radio-visual-tuner-needle--deck-b.is-active {
            opacity: 1;
        }
        #radio-visual-root .radio-visual-tuner-needle--deck-b.is-idle {
            opacity: 0.35;
        }
        #radio-visual-root .radio-visual-tuner-glow {
            position: absolute;
            bottom: 0;
            height: 40%;
            width: 18%;
            transform: translateX(-50%);
            background: radial-gradient(ellipse at center bottom, rgba(255, 120, 60, 0.35), transparent 70%);
            pointer-events: none;
            transition: left 0.55s cubic-bezier(0.34, 1.2, 0.64, 1);
        }
        #radio-visual-root .radio-visual-tuner-glow--deck-b {
            background: radial-gradient(ellipse at center bottom, rgba(80, 170, 255, 0.4), transparent 70%);
            opacity: 0;
            transition: left 0.55s cubic-bezier(0.34, 1.2, 0.64, 1), opacity 0.35s;
        }
        #radio-visual-root .radio-visual-tuner-glow--deck-b.is-active {
            opacity: 1;
        }
        #radio-visual-root .radio-visual-vu-wrap {
            height: clamp(48px, 8vh, 64px);
            margin-top: 4px;
        }
        #radio-visual-root .radio-visual-analog-actions {
            display: flex;
            flex-wrap: nowrap;
            align-items: stretch;
            justify-content: stretch;
            margin-top: clamp(8px, 1.5vh, 12px);
            padding-top: 0;
            border-top: none;
            gap: clamp(4px, 0.6vw, 8px);
            width: 100%;
            max-width: none;
            margin-left: 0;
            margin-right: 0;
            box-sizing: border-box;
        }
        #radio-visual-root .radio-visual-analog-actions .radio-visual-btn {
            flex: 1 1 0;
            min-width: 0;
            width: auto;
            max-width: none;
            padding: clamp(8px, 1.2vw, 10px) clamp(3px, 0.5vw, 6px);
            font-size: clamp(6px, 1vw, 10px);
            letter-spacing: 0.03em;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
        #radio-visual-root .radio-visual-vu-canvas {
            width: 100%;
            height: 100%;
            display: block;
            border-radius: 4px;
            background: rgba(0, 0, 0, 0.35);
        }
        #radio-visual-root .radio-visual-knobs-row {
            display: flex;
            justify-content: center;
            gap: clamp(16px, 5vw, 36px);
            flex-wrap: wrap;
            margin-top: 8px;
        }
        #radio-visual-root .radio-visual-knobs-row--all {
            flex-wrap: nowrap;
            justify-content: stretch;
            align-items: flex-start;
            gap: clamp(4px, 1.2vw, 12px);
            margin: 6px 0 10px;
            padding: 0 2px 2px;
            width: 100%;
            box-sizing: border-box;
        }
        #radio-visual-root .radio-visual-knobs-row--all .radio-visual-knob-block {
            flex: 1 1 0;
            min-width: 0;
            max-width: none;
        }
        #radio-visual-root .radio-visual-knobs-row--all .radio-visual-knob-label,
        #radio-visual-root .radio-visual-knobs-row--all .radio-visual-knob-readout {
            font-size: clamp(7px, 1.5vw, 10px);
            letter-spacing: 0.1em;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            max-width: 100%;
        }
        #radio-visual-root .radio-visual-knobs-row--all .radio-visual-knob {
            width: 100%;
            max-width: min(86px, 16.8vw);
            aspect-ratio: 1;
            height: auto;
            margin: 0 auto;
        }
        #radio-visual-root .radio-visual-knob-block {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 6px;
        }
        #radio-visual-root .radio-visual-knob-label {
            font-size: 10px;
            font-weight: 700;
            letter-spacing: 0.2em;
            text-transform: uppercase;
            color: rgba(230, 200, 150, 0.75);
        }
        #radio-visual-root .radio-visual-knob-readout {
            font-size: 9px;
            font-weight: 700;
            letter-spacing: 0.08em;
            color: rgba(230, 200, 150, 0.55);
            min-height: 12px;
        }
        #radio-visual-root .radio-visual-knob-readout--on-knob {
            position: absolute;
            left: 50%;
            top: 50%;
            z-index: 4;
            min-height: 0;
            margin: 0;
            padding: 0 2px;
            max-width: 88%;
            font-size: clamp(7px, 1.4vw, 9px);
            line-height: 1.1;
            text-align: center;
            color: #f0dcc0;
            text-shadow: 0 1px 2px rgba(0, 0, 0, 0.85);
            pointer-events: none;
            transform: translate(-50%, -50%);
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
        #radio-visual-root .radio-visual-knob {
            width: clamp(67px, 16.8vw, 86px);
            height: clamp(67px, 16.8vw, 86px);
            border-radius: 50%;
            border: 3px solid #6a5844;
            background: radial-gradient(circle at 35% 30%, #5a5048, #1a1612 65%);
            box-shadow: inset 0 4px 8px rgba(0, 0, 0, 0.6), 0 4px 12px rgba(0, 0, 0, 0.4);
            position: relative;
            touch-action: none;
            cursor: grab;
        }
        #radio-visual-root .radio-visual-knob--switch {
            cursor: pointer;
        }
        #radio-visual-root .radio-visual-knob--switch::after {
            z-index: 2;
        }
        #radio-visual-root .radio-visual-knob--deck-a.radio-visual-knob--switch::before,
        #radio-visual-root .radio-visual-knob--deck-b.radio-visual-knob--switch::before,
        #radio-visual-root .radio-visual-knob--fade-btn.radio-visual-knob--switch::before,
        #radio-visual-root .radio-visual-knob--vol-mute.radio-visual-knob--switch::before {
            content: '';
            position: absolute;
            left: 50%;
            top: auto;
            bottom: 12%;
            width: 8px;
            height: 8px;
            margin: 0 0 0 -4px;
            border-radius: 50%;
            background: #3a2218;
            border: 1px solid rgba(0, 0, 0, 0.5);
            box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.55);
            pointer-events: none;
            transition: background 0.2s, box-shadow 0.2s;
        }
        #radio-visual-root .radio-visual-knob--deck-a.is-on::before,
        #radio-visual-root .radio-visual-knob--deck-b.is-on::before,
        #radio-visual-root .radio-visual-knob--fade-btn.is-on:not(.radio-visual-knob--autofade-change)::before,
        #radio-visual-root .radio-visual-knob--vol-mute.is-on::before {
            background: radial-gradient(circle at 45% 40%, #ff6a58, #c01810);
            box-shadow: 0 0 10px rgba(255, 45, 35, 0.85), 0 0 4px rgba(255, 100, 80, 0.5);
        }
        #radio-visual-root .radio-visual-knob--autofade-change.radio-visual-knob--switch::before {
            width: 10px;
            height: 10px;
            margin-left: -5px;
            border-radius: 50%;
            background: #2a2218;
            border: 1px solid rgba(0, 0, 0, 0.55);
            box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.55);
        }
        #radio-visual-root .radio-visual-knob--autofade-change.is-on::before {
            content: '';
            display: block;
            background: radial-gradient(circle at 42% 38%, #8fff70, #28a818 55%, #145008);
            border-color: rgba(120, 255, 100, 0.55);
            box-shadow:
                0 0 10px rgba(60, 255, 80, 0.9),
                0 0 4px rgba(120, 255, 100, 0.55),
                inset 0 0 2px rgba(255, 255, 255, 0.35);
        }
        #radio-visual-root .radio-visual-knob--switch:active {
            filter: brightness(1.08);
        }
        #radio-visual-root .radio-visual-knob::after {
            content: '';
            position: absolute;
            left: 50%;
            top: 10%;
            width: 4px;
            height: 32%;
            margin-left: -2px;
            background: #f0d8a8;
            border-radius: 2px;
            transform-origin: 50% 100%;
            transform: rotate(var(--radio-knob-deg, -45deg));
            box-shadow: 0 0 6px rgba(255, 220, 150, 0.4);
        }
        #radio-visual-root .radio-visual-btn-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(min(100%, 88px), 1fr));
            gap: clamp(8px, 1.5vw, 12px);
            width: 100%;
            max-width: 720px;
            margin: 0 auto;
        }
        #radio-visual-root .radio-visual-btn {
            border: 2px solid rgba(200, 160, 90, 0.45);
            background: linear-gradient(180deg, #3a3028, #1e1814);
            color: #f0dcc0;
            font-size: clamp(10px, 2.2vw, 12px);
            font-weight: 800;
            letter-spacing: 0.08em;
            text-transform: uppercase;
            padding: 12px 8px;
            border-radius: 6px;
            cursor: pointer;
            box-shadow: 0 3px 0 #0a0806, 0 6px 16px rgba(0, 0, 0, 0.35);
            transition: transform 0.08s, filter 0.15s;
        }
        #radio-visual-root .radio-visual-btn:active {
            transform: translateY(2px);
            box-shadow: 0 1px 0 #0a0806;
        }
        #radio-visual-root .radio-visual-btn:hover { filter: brightness(1.12); }
        #radio-visual-root .radio-visual-digital-panel {
            position: relative;
            display: flex;
            flex-direction: column;
            width: 100%;
            overflow: visible;
            border-radius: clamp(8px, 1.46cqw, 14px);
            padding: clamp(6px, 0.73cqw, 10px) clamp(12px, 1.67cqw, 24px);
            background: transparent;
            border: none;
            box-shadow: none;
        }
        #radio-visual-root .radio-visual-digital-display {
            font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
            background: rgba(0, 20, 30, 0.85);
            border: 2px solid rgba(0, 255, 220, 0.25);
            border-radius: 8px;
            padding: clamp(12px, 2.5vw, 18px);
            margin-bottom: 12px;
            box-shadow: inset 0 0 24px rgba(0, 255, 200, 0.08);
        }
        #radio-visual-root .radio-visual-digital-line {
            font-size: clamp(11px, 2.5vw, 13px);
            color: #4de8d4;
            letter-spacing: 0.06em;
            margin: 4px 0;
            text-shadow: 0 0 8px rgba(0, 255, 200, 0.35);
        }
        #radio-visual-root .radio-visual-digital-line--title {
            font-size: clamp(1rem, 4vw, 1.45rem);
            font-weight: 700;
            color: #9ff;
            margin-bottom: 8px;
        }
        #radio-visual-root .radio-visual-digital-vol-row {
            display: flex;
            align-items: center;
            gap: 12px;
            margin: 12px 0 16px;
        }
        #radio-visual-root .radio-visual-digital-vol-row label {
            font-size: 11px;
            font-weight: 700;
            letter-spacing: 0.2em;
            color: #5ec;
            flex-shrink: 0;
        }
        #radio-visual-root .radio-visual-digital-vol {
            flex: 1;
            min-width: 0;
            accent-color: #0fc;
        }
        #radio-visual-root .radio-visual-digital-station-row {
            display: flex;
            flex-wrap: wrap;
            gap: 8px;
            justify-content: center;
            margin-bottom: 12px;
        }
        #radio-visual-root .radio-visual-digital-station-row .radio-visual-btn {
            border-color: color-mix(
                in srgb,
                var(--rv-digital-btn-blue-accent) calc(var(--rv-digital-btn-blue-border-opacity, 1) * var(--rv-digital-btn-blue-accent-opacity, 1) * 40%),
                transparent
            );
            background: linear-gradient(
                180deg,
                color-mix(in srgb, var(--rv-digital-btn-blue-top) calc(var(--rv-digital-btn-blue-opacity, 1) * 100%), transparent),
                color-mix(in srgb, var(--rv-digital-btn-blue-base) calc(var(--rv-digital-btn-blue-opacity, 1) * 100%), transparent)
            );
            color: var(--rv-digital-btn-blue-label);
            min-width: 72px;
        }
        #radio-visual-root .radio-visual-digital-station-row .radio-visual-btn .radio-visual-btn-label {
            font-family: var(--rv-digital-btn-blue-font, var(--rv-digital-ui-font)) !important;
            opacity: var(--rv-digital-btn-blue-text-opacity, 1);
            color: var(--rv-digital-btn-blue-label);
            text-shadow:
                0 0 6px color-mix(in srgb, var(--rv-digital-btn-blue-label) 95%, transparent),
                0 0 14px color-mix(in srgb, var(--rv-digital-btn-blue-label) 55%, transparent);
        }
        #radio-visual-root .radio-visual-digital-eq {
            height: clamp(56px, 10vh, 80px);
            margin-bottom: 12px;
        }
        #radio-visual-root .radio-visual-digital-center {
            position: relative;
            width: calc(100% * var(--rv-digital-staging-scale, 1));
            margin-left: auto;
            margin-right: auto;
            aspect-ratio: 960 / 320;
            min-height: 0;
            height: auto;
            margin-top: clamp(2px, 0.31cqw, 4px);
            margin-bottom: clamp(4px, 0.52cqw, 6px);
            border-radius: clamp(8px, 1.25cqw, 12px);
            overflow: hidden;
            border: clamp(1px, 0.21cqw, 2px) solid color-mix(
                in srgb,
                var(--rv-digital-staging-border-color, #00dcff) calc(var(--rv-digital-staging-border-opacity, 0.35) * 100%),
                transparent
            );
            background: transparent;
            box-shadow:
                0 0 clamp(20px, 4.17cqw, 40px) color-mix(
                    in srgb,
                    var(--rv-digital-staging-glow-color, #00b4ff) calc(var(--rv-digital-staging-glow-opacity, 0.12) * 100%),
                    transparent
                ),
                inset 0 0 clamp(30px, 6.25cqw, 60px) color-mix(
                    in srgb,
                    var(--rv-digital-staging-glow-color, #00b4ff) calc(var(--rv-digital-staging-glow-inset-opacity, 0.06) * 100%),
                    transparent
                );
            cursor: pointer;
        }
        #radio-visual-root[data-rv-show-staging="0"] .radio-visual-digital-center {
            display: none !important;
        }
        #radio-visual-root[data-rv-show-blue-toolbar="0"] .radio-visual-digital-toolbar {
            display: none !important;
        }
        #radio-visual-root[data-rv-show-purple-buttons="0"] .radio-visual-btn-grid.radio-visual-digital-feature-btns {
            display: none !important;
        }
        #radio-visual-root[data-rv-show-blue-toolbar="0"] .radio-visual-btn-grid.radio-visual-digital-feature-btns {
            margin-top: clamp(2px, 0.31cqw, 4px);
        }
        #radio-visual-root[data-rv-show-orange-buttons="0"] .radio-visual-btn-grid.radio-visual-digital-orange-btns {
            display: none !important;
        }
        #radio-visual-root .radio-visual-digital-center::before {
            content: '';
            position: absolute;
            inset: 0;
            z-index: 0;
            border-radius: inherit;
            pointer-events: none;
            opacity: var(--rv-digital-panel-opacity, 1);
            background:
                linear-gradient(180deg, color-mix(in srgb, var(--rv-digital-accent-color) 14%, transparent) 0%, transparent 28%),
                linear-gradient(calc(var(--rv-digital-bg-gradient-angle, 165) * 1deg), var(--rv-digital-bg-a) 0%, var(--rv-digital-bg-b) 50%, var(--rv-digital-bg-c) 100%);
        }
        #radio-visual-root .radio-visual-digital-center.has-panel-bg-image::before {
            background:
                linear-gradient(180deg, color-mix(in srgb, var(--rv-digital-accent-color) 14%, transparent) 0%, transparent 28%);
        }
        #radio-visual-root .radio-visual-digital-panel-image {
            position: absolute;
            inset: 0;
            z-index: 0;
            display: block;
            width: 100%;
            height: 100%;
            object-fit: cover;
            object-position: center;
            pointer-events: none;
            border-radius: inherit;
            opacity: var(--rv-digital-bg-panel-image-opacity, 1);
        }
        #radio-visual-root .radio-visual-digital-center > .radio-visual-digital-center-pane {
            z-index: 1;
        }
        #radio-visual-root .radio-visual-digital-center-pane {
            position: absolute;
            inset: 0;
            display: none;
            align-items: stretch;
            justify-content: stretch;
            overflow: hidden;
            z-index: 1;
        }
        #radio-visual-root .radio-visual-digital-theme-outer-image {
            position: absolute;
            inset: 0;
            z-index: 0;
            display: block;
            width: 100%;
            height: 100%;
            object-fit: cover;
            object-position: center;
            pointer-events: none;
            opacity: var(--rv-digital-bg-outer-image-opacity, 1);
        }
        #radio-visual-root:has(.radio-visual-skin--digital.is-active),
        #radio-visual-root.radio-visual-root--digital-only,
        #radio-visual-root.radio-visual-root--digital-active {
            --rv-digital-bg-a: var(--global-rv-digital-bg-a, #0a1628);
            --rv-digital-bg-b: var(--global-rv-digital-bg-b, #061018);
            --rv-digital-bg-c: var(--global-rv-digital-bg-c, #0c1020);
            --rv-digital-bg-outer-a: var(--global-rv-digital-bg-outer-a, #0a1628);
            --rv-digital-bg-outer-b: var(--global-rv-digital-bg-outer-b, #061018);
            --rv-digital-bg-outer-c: var(--global-rv-digital-bg-outer-c, #0c1020);
            --rv-digital-bg-gradient-angle: var(--global-rv-digital-bg-gradient-angle, 165);
            --rv-digital-bg-outer-gradient-angle: var(--global-rv-digital-bg-outer-gradient-angle, 165);
            --rv-digital-bg-outer-image-opacity: var(--global-rv-digital-bg-outer-image-opacity, 1);
            --rv-digital-bg-panel-image-opacity: var(--global-rv-digital-bg-panel-image-opacity, 1);
            --rv-digital-panel-opacity: var(--global-rv-digital-panel-opacity, 1);
            --rv-digital-bg-gif-opacity: var(--global-rv-digital-bg-gif-opacity, 1);
            --rv-digital-accent-color: var(--global-rv-digital-accent-color, #ffd246);
            --rv-digital-ui-font: var(--global-rv-digital-ui-font, 'Orbitron', 'Share Tech Mono', ui-monospace, monospace);
            --rv-digital-btn-blue-font: var(--global-rv-digital-btn-blue-font, var(--rv-digital-ui-font));
            --rv-digital-btn-purple-font: var(--global-rv-digital-btn-purple-font, var(--rv-digital-ui-font));
            --rv-digital-btn-orange-font: var(--global-rv-digital-btn-orange-font, var(--rv-digital-ui-font));
            --rv-digital-btn-blue-top: var(--global-rv-digital-btn-blue-top, #123048);
            --rv-digital-btn-blue-base: var(--global-rv-digital-btn-blue-base, #081820);
            --rv-digital-btn-blue-accent: var(--global-rv-digital-btn-blue-accent, #00dcff);
            --rv-digital-btn-blue-label: var(--global-rv-digital-btn-blue-label, #9eeeff);
            --rv-digital-btn-blue-active: var(--global-rv-digital-btn-blue-active, #ffe566);
            --rv-digital-btn-blue-accent-opacity: var(--global-rv-digital-btn-blue-accent-opacity, 1);
            --rv-digital-btn-blue-opacity: var(--global-rv-digital-btn-blue-opacity, 1);
            --rv-digital-btn-blue-text-opacity: var(--global-rv-digital-btn-blue-text-opacity, 1);
            --rv-digital-btn-blue-border-opacity: var(--global-rv-digital-btn-blue-border-opacity, 1);
            --rv-digital-btn-purple-top: var(--global-rv-digital-btn-purple-top, #5a3488);
            --rv-digital-btn-purple-base: var(--global-rv-digital-btn-purple-base, #1a0c30);
            --rv-digital-btn-purple-label: var(--global-rv-digital-btn-purple-label, #5cff9e);
            --rv-digital-btn-purple-active: var(--global-rv-digital-btn-purple-active, #ff5ce8);
            --rv-digital-btn-purple-accent-opacity: var(--global-rv-digital-btn-purple-accent-opacity, 1);
            --rv-digital-btn-purple-opacity: var(--global-rv-digital-btn-purple-opacity, 1);
            --rv-digital-btn-purple-text-opacity: var(--global-rv-digital-btn-purple-text-opacity, 1);
            --rv-digital-btn-purple-border-opacity: var(--global-rv-digital-btn-purple-border-opacity, 1);
            --rv-digital-btn-orange-top: var(--global-rv-digital-btn-orange-top, #e87820);
            --rv-digital-btn-orange-base: var(--global-rv-digital-btn-orange-base, #8a4010);
            --rv-digital-btn-orange-label: var(--global-rv-digital-btn-orange-label, #ffe8cc);
            --rv-digital-btn-orange-active: var(--global-rv-digital-btn-orange-active, #ffcc00);
            --rv-digital-btn-orange-accent-opacity: var(--global-rv-digital-btn-orange-accent-opacity, 1);
            --rv-digital-btn-orange-opacity: var(--global-rv-digital-btn-orange-opacity, 1);
            --rv-digital-btn-orange-text-opacity: var(--global-rv-digital-btn-orange-text-opacity, 1);
            --rv-digital-btn-orange-border-opacity: var(--global-rv-digital-btn-orange-border-opacity, 1);
            --rv-digital-btn-blue-font-scale: var(--global-rv-digital-btn-blue-font-scale, 1);
            --rv-digital-btn-purple-font-scale: var(--global-rv-digital-btn-purple-font-scale, 1);
            --rv-digital-btn-orange-font-scale: var(--global-rv-digital-btn-orange-font-scale, 1);
            --rv-digital-clock-font: var(--global-rv-digital-clock-font, var(--rv-digital-ui-font));
            --rv-digital-clock-color: var(--global-rv-digital-clock-color, #fff566);
            --rv-digital-clock-font-scale: var(--global-rv-digital-clock-font-scale, 1);
            --rv-digital-clock-opacity: var(--global-rv-digital-clock-opacity, 1);
            --rv-digital-toolbar-divider-height: var(--global-rv-digital-toolbar-divider-height, 2px);
            --rv-digital-toolbar-divider-color: var(--global-rv-digital-toolbar-divider-color, #00dcff);
            --rv-digital-toolbar-divider-glow: var(--global-rv-digital-toolbar-divider-glow, 0);
            --rv-digital-toolbar-divider-spacing: var(--global-rv-digital-toolbar-divider-spacing, 3px);
            --rv-digital-feature-divider-height: var(--global-rv-digital-feature-divider-height, 2px);
            --rv-digital-feature-divider-color: var(--global-rv-digital-feature-divider-color, #c86bff);
            --rv-digital-feature-divider-glow: var(--global-rv-digital-feature-divider-glow, 0);
            --rv-digital-feature-divider-spacing: var(--global-rv-digital-feature-divider-spacing, 3px);
            --rv-digital-crossfade-trackpad-responsiveness: var(--global-rv-digital-crossfade-trackpad-responsiveness, 1);
            background:
                radial-gradient(ellipse 120% 80% at 50% 0%, color-mix(in srgb, var(--rv-digital-accent-color) 22%, transparent), transparent 55%),
                radial-gradient(ellipse 90% 70% at 50% 100%, color-mix(in srgb, var(--rv-digital-bg-outer-b) 45%, transparent), transparent 60%),
                linear-gradient(calc(var(--rv-digital-bg-outer-gradient-angle, 165) * 1deg), var(--rv-digital-bg-outer-a) 0%, var(--rv-digital-bg-outer-b) 38%, var(--rv-digital-bg-outer-c) 100%);
            color: #e8f4ff;
        }
        #radio-visual-root:has(.radio-visual-skin--digital.is-active) > *:not(.radio-visual-digital-theme-outer-image),
        #radio-visual-root.radio-visual-root--digital-only > *:not(.radio-visual-digital-theme-outer-image),
        #radio-visual-root.radio-visual-root--digital-active > *:not(.radio-visual-digital-theme-outer-image) {
            position: relative;
            z-index: 1;
        }
        #radio-visual-root.radio-visual-root--analogue-only .radio-visual-stage,
        #radio-visual-root.radio-visual-root--digital-only .radio-visual-stage {
            display: flex;
        }
        #radio-visual-root .radio-visual-digital-spectrum-bg {
            position: absolute;
            inset: 0;
            z-index: 0;
            pointer-events: none;
            opacity: 0;
            overflow: hidden;
            transition: opacity 0.35s ease-in-out;
        }
        #radio-visual-root .radio-visual-digital-spectrum-bg.is-visible {
            opacity: var(--rv-digital-bg-gif-opacity, 1);
        }
        #radio-visual-root .radio-visual-digital-spectrum-bg.is-staging-suppressed {
            opacity: 0 !important;
            pointer-events: none;
            transition: opacity 0.35s ease-in-out;
        }
        #radio-visual-root .radio-visual-digital-spectrum-bg-img {
            position: absolute;
            inset: 0;
            display: block;
            width: 100%;
            height: 100%;
            object-fit: fill;
            object-position: center center;
            opacity: 1;
            transition: opacity 0.45s ease-in-out;
        }
        #radio-visual-root .radio-visual-digital-spectrum-bg-img.is-bg-loading {
            opacity: 0;
        }
        #radio-visual-root .radio-visual-digital-spectrum-bg-img.is-bg-fade-out {
            opacity: 0;
            pointer-events: none;
        }
        #radio-visual-root .radio-visual-digital-center:has(.radio-visual-digital-spectrum-bg.is-visible)::before {
            background: rgba(0, 12, 20, 0.35);
        }
        #radio-visual-root .radio-visual-digital-center:has(
            .radio-visual-digital-spectrum-bg.is-visible
        ):has(.radio-visual-digital-staging-mount[data-rv-staging="bars"].is-active)::before {
            background: transparent;
        }
        #radio-visual-root .radio-visual-digital-center:has(.radio-visual-digital-spectrum-bg.is-visible) .radio-visual-digital-spectrum-side {
            background: transparent;
        }
        #radio-visual-root .radio-visual-digital-staging-mount {
            position: absolute;
            inset: 0;
            z-index: 3;
            display: none;
            align-items: stretch;
            justify-content: stretch;
            overflow: hidden;
            border-radius: inherit;
            pointer-events: auto;
        }
        #radio-visual-root .radio-visual-digital-staging-mount.is-active {
            display: flex;
        }
        #radio-visual-root .radio-visual-digital-local-queue-panel {
            position: absolute;
            inset: 0;
            z-index: 25;
            display: flex;
            flex-direction: column;
            overflow: hidden;
            pointer-events: auto;
            border-radius: inherit;
            background: rgba(0, 10, 18, 0.94);
        }
        #radio-visual-root .radio-visual-digital-local-queue-panel.display-none {
            display: none !important;
        }
        #radio-visual-root .radio-visual-digital-local-queue-panel.dj-deck-b-queue-panel {
            overflow: hidden;
            padding-bottom: 8px;
            height: 100%;
        }
        #radio-visual-root .radio-visual-digital-local-queue-panel .dj-queue-columns {
            flex: 1 1 0;
            min-height: 0;
            height: 100%;
        }
        #radio-visual-root .radio-visual-digital-local-queue-panel .dj-queue-col {
            min-height: 0;
            height: 100%;
        }
        #radio-visual-root .radio-visual-digital-local-queue-panel ul.dj-queue-list {
            flex: 1 1 0;
            min-height: 0;
            height: 100%;
        }
        #radio-visual-root .radio-visual-digital-center-pane.is-local-queue-open .radio-visual-digital-spectrum-row,
        #radio-visual-root .radio-visual-digital-center-pane.is-local-queue-open .radio-visual-digital-staging-mount.is-active {
            visibility: hidden;
            pointer-events: none;
        }
        #radio-visual-root .radio-visual-digital-stations-panel {
            position: absolute;
            inset: 0;
            z-index: 25;
            display: flex;
            flex-direction: column;
            overflow: hidden;
            pointer-events: auto;
            border-radius: inherit;
            background: rgba(0, 10, 18, 0.94);
        }
        #radio-visual-root .radio-visual-digital-stations-panel.display-none {
            display: none !important;
        }
        #radio-visual-root .radio-visual-digital-stations-header {
            flex: 0 0 auto;
            padding: 10px 14px 8px;
            font-size: 11px;
            letter-spacing: 0.08em;
            text-transform: uppercase;
            color: rgba(255, 255, 255, 0.72);
            border-bottom: 1px solid rgba(255, 255, 255, 0.1);
        }
        #radio-visual-root .radio-visual-digital-stations-columns {
            flex: 1 1 0;
            min-height: 0;
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 8px;
            padding: 8px 10px 10px;
        }
        #radio-visual-root .radio-visual-digital-stations-col {
            min-height: 0;
            display: flex;
            flex-direction: column;
            border: 1px solid rgba(255, 255, 255, 0.12);
            border-radius: 8px;
            background: rgba(255, 255, 255, 0.03);
            overflow: hidden;
        }
        #radio-visual-root .radio-visual-digital-stations-col-head {
            flex: 0 0 auto;
            display: flex;
            align-items: center;
            gap: 8px;
            padding: 8px 10px;
            border-bottom: 1px solid rgba(255, 255, 255, 0.1);
        }
        #radio-visual-root .radio-visual-digital-stations-deck {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 22px;
            height: 22px;
            border-radius: 4px;
            font-size: 12px;
            font-weight: 700;
        }
        #radio-visual-root .radio-visual-digital-stations-deck--a {
            color: #ff0b55;
            border: 1px solid rgba(255, 11, 85, 0.35);
            background: rgba(255, 11, 85, 0.14);
        }
        #radio-visual-root .radio-visual-digital-stations-deck--b {
            color: #5800ff;
            border: 1px solid rgba(88, 0, 255, 0.35);
            background: rgba(88, 0, 255, 0.14);
        }
        #radio-visual-root .radio-visual-digital-stations-title {
            flex: 1 1 auto;
            font-size: 12px;
            font-weight: 600;
            letter-spacing: 0.04em;
            text-transform: uppercase;
            color: rgba(255, 255, 255, 0.88);
        }
        #radio-visual-root .radio-visual-digital-stations-nav {
            display: flex;
            gap: 4px;
        }
        #radio-visual-root .radio-visual-digital-stations-nav-btn {
            min-width: 28px;
            height: 24px;
            padding: 0 6px;
            border-radius: 4px;
            border: 1px solid rgba(255, 255, 255, 0.18);
            background: rgba(255, 255, 255, 0.06);
            color: rgba(255, 255, 255, 0.85);
            cursor: pointer;
            font-size: 11px;
        }
        #radio-visual-root .radio-visual-digital-stations-nav-btn:hover {
            background: rgba(255, 255, 255, 0.14);
            border-color: rgba(255, 255, 255, 0.35);
        }
        #radio-visual-root .radio-visual-digital-stations-scroll {
            flex: 1 1 0;
            min-height: 0;
            overflow: auto;
            padding: 8px;
        }
        #radio-visual-root .radio-visual-digital-stations-scroll::-webkit-scrollbar { width: 8px; }
        #radio-visual-root .radio-visual-digital-stations-scroll::-webkit-scrollbar-track { background: rgba(255,255,255,0.06); border-radius: 8px; }
        #radio-visual-root .radio-visual-digital-stations-scroll::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.28); border-radius: 8px; }
        #radio-visual-root .radio-visual-digital-stations-list .radio-item {
            margin: 4px 0;
            font-size: 12px;
        }
        #radio-visual-root .radio-visual-digital-center-pane.is-stations-open .radio-visual-digital-spectrum-row,
        #radio-visual-root .radio-visual-digital-center-pane.is-stations-open .radio-visual-digital-staging-mount.is-active {
            visibility: hidden;
            pointer-events: none;
        }
        #radio-visual-root .radio-visual-digital-staging-mount:fullscreen,
        #radio-visual-root .radio-visual-digital-staging-mount:-webkit-full-screen {
            display: flex;
            align-items: stretch;
            justify-content: stretch;
            width: 100%;
            height: 100%;
            background: #000;
            cursor: pointer;
        }
        #radio-visual-root .radio-visual-digital-staging-mount:fullscreen .radio-visual-digital-deck-b-canvas,
        #radio-visual-root .radio-visual-digital-staging-mount:-webkit-full-screen .radio-visual-digital-deck-b-canvas {
            width: 100%;
            height: 100%;
            flex: 1 1 auto;
        }
        #radio-visual-root .radio-visual-digital-staging-mount:fullscreen .radio-visual-digital-embed-shell,
        #radio-visual-root .radio-visual-digital-staging-mount:-webkit-full-screen .radio-visual-digital-embed-shell,
        #radio-visual-root .radio-visual-digital-staging-mount:fullscreen .radio-visual-digital-embed-frame,
        #radio-visual-root .radio-visual-digital-staging-mount:-webkit-full-screen .radio-visual-digital-embed-frame {
            width: 100%;
            height: 100%;
            flex: 1 1 auto;
            border-radius: 0;
        }
        #radio-visual-root .radio-visual-digital-center-pane:has(
            .radio-visual-digital-staging-mount.is-active .radio-visual-digital-deck-b-canvas
        ) .radio-visual-digital-spectrum-row,
        #radio-visual-root .radio-visual-digital-center-pane:has(
            .radio-visual-digital-staging-mount.is-active .radio-visual-digital-staging-video
        ) .radio-visual-digital-spectrum-row,
        #radio-visual-root .radio-visual-digital-center-pane:has(
            .radio-visual-digital-staging-mount.is-active .radio-visual-digital-deck-b-queue
        ) .radio-visual-digital-spectrum-row,
        #radio-visual-root .radio-visual-digital-center-pane:has(
            .radio-visual-digital-staging-mount.is-active .radio-visual-digital-embed-shell
        ) .radio-visual-digital-spectrum-row {
            visibility: hidden;
            pointer-events: none;
        }
        #radio-visual-root .radio-visual-digital-embed-shell {
            position: absolute;
            inset: 0;
            width: 100%;
            height: 100%;
            pointer-events: auto;
            background: #0a0a10;
            border-radius: inherit;
            overflow: hidden;
            display: flex;
            flex-direction: column;
        }
        #radio-visual-root .radio-visual-digital-embed-frame {
            flex: 1;
            width: 100%;
            min-height: 0;
            border: 0;
            display: block;
            background: #000;
        }
        #radio-visual-root .radio-visual-digital-embed-shell.is-view-only .radio-visual-digital-embed-frame {
            pointer-events: none;
        }
        #radio-visual-root .radio-visual-digital-embed-shield {
            position: absolute;
            inset: 0;
            z-index: 2;
            cursor: default;
            background: transparent;
        }
        #radio-visual-root .radio-visual-digital-staging-video-stack {
            position: absolute;
            inset: 0;
            width: 100%;
            height: 100%;
        }
        #radio-visual-root .radio-visual-digital-staging-video-stack .radio-visual-digital-staging-video {
            position: absolute;
            inset: 0;
            width: 100%;
            height: 100%;
            object-fit: contain;
            background: rgba(0, 8, 16, 0.55);
            opacity: 0;
            pointer-events: none;
        }
        #radio-visual-root .radio-visual-digital-staging-video,
        #radio-visual-root .radio-visual-digital-staging-mount .radio-visual-digital-deck-b-canvas {
            width: 100%;
            height: 100%;
            object-fit: contain;
            background: rgba(0, 8, 16, 0.55);
        }
        #radio-visual-root .radio-visual-digital-staging-mount[data-rv-staging="bars"].is-active {
            background: transparent;
        }
        #radio-visual-root .radio-visual-digital-staging-mount[data-rv-staging="bars"].is-active
            .radio-visual-digital-deck-b-canvas--bars {
            background: transparent;
        }
        #radio-visual-root .radio-visual-digital-staging-mount .radio-visual-digital-deck-b-queue {
            width: 100%;
            height: 100%;
            overflow: auto;
        }
        #radio-visual-root .radio-visual-digital-feature-btns .radio-visual-btn.is-active {
            color: color-mix(
                in srgb,
                var(--rv-digital-btn-purple-active) calc(var(--rv-digital-btn-purple-accent-opacity, 1) * 100%),
                var(--rv-digital-btn-purple-label)
            );
            background: linear-gradient(
                180deg,
                color-mix(in srgb, var(--rv-digital-btn-purple-top) 88%, white 12%) 0%,
                color-mix(in srgb, var(--rv-digital-btn-purple-top) 62%, var(--rv-digital-btn-purple-base)) 55%,
                var(--rv-digital-btn-purple-base) 100%
            );
            border-color: color-mix(
                in srgb,
                color-mix(in srgb, var(--rv-digital-btn-purple-active) 55%, white 25%)
                    calc(var(--rv-digital-btn-purple-border-opacity, 1) * var(--rv-digital-btn-purple-accent-opacity, 1) * 100%),
                transparent
            );
            box-shadow: 0 0 14px color-mix(
                in srgb,
                var(--rv-digital-btn-purple-active) calc(45% * var(--rv-digital-btn-purple-accent-opacity, 1)),
                transparent
            );
        }
        #radio-visual-root .radio-visual-digital-automix-panel,
        #radio-visual-root .radio-visual-digital-autofade-panel {
            position: absolute;
            z-index: 30;
            min-width: 200px;
            padding: 8px 10px;
            border-radius: 8px;
            border: 1px solid rgba(0, 220, 255, 0.4);
            background: rgba(8, 18, 32, 0.96);
            box-shadow: 0 12px 24px rgba(0, 0, 0, 0.5);
            display: none;
        }
        #radio-visual-root .radio-visual-digital-automix-panel.is-open,
        #radio-visual-root .radio-visual-digital-autofade-panel.is-open {
            display: block;
        }
        #radio-visual-root .radio-visual-digital-automix-panel.is-fixed-popup,
        #radio-visual-root .radio-visual-digital-autofade-panel.is-fixed-popup {
            position: fixed;
        }
        #radio-visual-root .radio-visual-digital-automix-title,
        #radio-visual-root .radio-visual-digital-autofade-title {
            font-size: 10px;
            color: rgba(140, 220, 255, 0.85);
            letter-spacing: 0.06em;
            text-transform: uppercase;
            margin-bottom: 6px;
        }
        #radio-visual-root .radio-visual-digital-automix-row,
        #radio-visual-root .radio-visual-digital-autofade-row {
            display: flex;
            align-items: center;
            gap: 8px;
        }
        #radio-visual-root .radio-visual-digital-automix-range,
        #radio-visual-root .radio-visual-digital-autofade-range {
            flex: 1;
            min-width: 0;
        }
        #radio-visual-root .radio-visual-digital-automix-readout,
        #radio-visual-root .radio-visual-digital-autofade-readout {
            font-size: 11px;
            color: #8ef;
            min-width: 2.5em;
            text-align: right;
        }
        #radio-visual-root .radio-visual-digital-spectrum-row {
            position: absolute;
            inset: 0;
            z-index: 1;
            display: flex;
            flex-direction: row;
            align-items: stretch;
            gap: clamp(6px, 1.25cqw, 12px);
            padding: clamp(8px, 1.46cqw, 14px);
            box-sizing: border-box;
            overflow: hidden;
            pointer-events: none;
        }
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="spectrum"]
            .radio-visual-digital-spectrum-side--left {
            transform: scale(var(--rv-spectrum-side-scale, 1))
                translateX(calc(-1 * var(--rv-spectrum-staging-spread, 0px)));
            transition: transform 0.15s ease-out;
            z-index: 5;
        }
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="spectrum"]
            .radio-visual-digital-spectrum-side--right {
            transform: scale(var(--rv-spectrum-side-scale, 1))
                translateX(var(--rv-spectrum-staging-spread, 0px));
            transition: transform 0.15s ease-out;
            z-index: 5;
        }
        #radio-visual-root .radio-visual-digital-center-pane:not([data-hub-mode="spectrum"])
            .radio-visual-digital-spectrum-side {
            transform: scale(var(--rv-spectrum-side-scale, 1));
            transform-origin: center center;
            transition: transform 0.15s ease-out;
        }
        #radio-visual-root .radio-visual-digital-spectrum-side {
            flex: 1 1 0;
            min-width: 0;
            position: relative;
            border-radius: 10px;
            overflow: hidden;
            background: transparent;
            transform-origin: center center;
            pointer-events: auto;
        }
        #radio-visual-root .radio-visual-digital-spectrum-side.is-local-drop-target {
            box-shadow:
                inset 0 0 0 2px rgba(0, 220, 255, 0.85),
                0 0 18px rgba(0, 180, 255, 0.35);
            background: rgba(0, 60, 90, 0.18);
        }
        #radio-visual-root .radio-visual-digital-spectrum-side .radio-visual-digital-spectrum-canvas {
            pointer-events: none;
        }
        #radio-visual-root .radio-visual-digital-dash-stack {
            flex: 0 0 clamp(130px, 29.17cqw, 280px);
            min-width: clamp(110px, 15.63cqw, 150px);
            max-width: clamp(150px, 31.25cqw, 300px);
            display: flex;
            flex-direction: column;
            align-items: stretch;
            justify-content: center;
            gap: clamp(6px, 1.04cqw, 10px);
            position: relative;
            z-index: 6;
            pointer-events: auto;
        }
        #radio-visual-root .radio-visual-digital-center-info {
            display: none !important;
            flex-direction: column;
            align-items: stretch;
            justify-content: center;
            text-align: center;
            gap: 2px;
            width: 100%;
            padding: 2px 6px 0;
            pointer-events: none;
            flex-shrink: 0;
            opacity: 0.5;
        }
        #radio-visual-root .radio-visual-digital-center-info .radio-visual-digital-line {
            margin: 0;
            width: 100%;
            max-width: 100%;
            text-shadow:
                0 0 12px rgba(0, 0, 0, 0.9),
                0 1px 3px rgba(0, 0, 0, 0.85);
        }
        #radio-visual-root .radio-visual-digital-center-info .radio-visual-digital-line--station-a,
        #radio-visual-root .radio-visual-digital-center-info .radio-visual-digital-line--station-b {
            text-align: center;
            font-size: clamp(0.68rem, 2.5cqw, 0.98rem);
            font-weight: 700;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
            min-width: 0;
        }
        #radio-visual-root .radio-visual-digital-center-info .radio-visual-digital-line--station-a {
            color: rgba(170, 230, 255, 0.95);
        }
        #radio-visual-root .radio-visual-digital-center-info .radio-visual-digital-line--station-b {
            color: rgba(150, 210, 255, 0.92);
        }
        #radio-visual-root .radio-visual-digital-clock-row {
            container-type: inline-size;
            container-name: rv-clock;
            display: flex;
            align-items: center;
            justify-content: center;
            flex-wrap: nowrap;
            gap: 0.35em;
            width: 100%;
            max-width: 100%;
            min-width: 0;
            margin: 0;
            padding: clamp(2px, 1.5cqi, 6px) clamp(4px, 2.5cqi, 8px) 0;
        }
        #radio-visual-root .radio-visual-digital-clock-row .radio-visual-digital-line {
            width: 100%;
            max-width: 100%;
        }
        #radio-visual-root .radio-visual-digital-center-info .radio-visual-digital-line--clock {
            flex: 1 1 auto;
            width: 100%;
            max-width: 100%;
            font-family: var(--rv-digital-clock-font) !important;
            /* rv-clock: scale with dash column width without affecting crossfader A/B (rv-digital cqw) */
            font-size: calc(clamp(7px, 6.2cqi, 16px) * var(--rv-digital-clock-font-scale, 1));
            font-weight: 700;
            font-variant-numeric: tabular-nums;
            letter-spacing: clamp(0.03em, 0.4cqi, 0.09em);
            color: var(--rv-digital-clock-color);
            text-align: center;
            white-space: nowrap;
            min-width: 0;
            overflow: hidden;
            text-overflow: ellipsis;
            opacity: var(--rv-digital-clock-opacity, 1);
            text-shadow:
                0 0 12px rgba(0, 0, 0, 0.9),
                0 1px 3px rgba(0, 0, 0, 0.85),
                0 0 10px color-mix(in srgb, var(--rv-digital-clock-color) 35%, transparent);
        }
        #radio-visual-root .radio-visual-digital-automix-timer {
            flex: 0 0 auto;
            font-family: 'Orbitron', 'Share Tech Mono', ui-monospace, monospace;
            font-size: clamp(7px, 6.2cqi, 16px);
            font-weight: 700;
            font-variant-numeric: tabular-nums;
            letter-spacing: clamp(0.03em, 0.4cqi, 0.09em);
            white-space: nowrap;
            color: #39ff14;
            text-shadow:
                0 0 8px rgba(57, 255, 20, 0.95),
                0 0 18px rgba(57, 255, 20, 0.55),
                0 0 32px rgba(57, 255, 20, 0.28);
        }
        #radio-visual-root .radio-visual-digital-car-display {
            flex: 1 1 auto;
            min-height: clamp(72px, 13.54cqw, 130px);
            border-radius: 12px;
            position: relative;
            overflow: hidden;
            display: flex;
            flex-direction: column;
            background:
                linear-gradient(180deg, rgba(255, 255, 255, 0.04) 0%, transparent 40%),
                linear-gradient(165deg, rgba(42, 40, 53, 0.5) 0%, rgba(12, 10, 16, 0.5) 45%, rgba(26, 24, 36, 0.5) 100%);
            border: 1px solid rgba(120, 120, 140, 0.18);
            box-shadow:
                0 4px 14px rgba(0, 0, 0, 0.22),
                inset 0 1px 0 rgba(255, 255, 255, 0.06),
                inset 0 -2px 8px rgba(0, 0, 0, 0.25);
        }
        #radio-visual-root .radio-visual-digital-car-main {
            flex: 1 1 auto;
            min-height: clamp(48px, 10.5cqw, 100px);
            width: 100%;
            position: relative;
            display: flex;
            flex-direction: column;
            overflow: hidden;
        }
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="equaliser"] .radio-visual-digital-car-main,
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="equaliser"] .radio-visual-digital-car-dash-canvas {
            cursor: pointer;
            pointer-events: auto;
        }
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="live"] .radio-visual-digital-hub-ai-video,
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="ai"] .radio-visual-digital-hub-ai-video,
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="video"] .radio-visual-digital-hub-deck-video-el {
            cursor: pointer;
            pointer-events: auto;
        }
        #radio-visual-root .radio-visual-digital-car-dash-canvas {
            flex: 1 1 auto;
            width: 100%;
            min-height: 56px;
            display: block;
        }
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="volume"] .radio-visual-digital-car-dash-canvas,
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="effects"] .radio-visual-digital-car-dash-canvas,
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="ai"] .radio-visual-digital-car-dash-canvas,
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="live"] .radio-visual-digital-car-dash-canvas,
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="video"] .radio-visual-digital-car-dash-canvas,
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="ai-off"] .radio-visual-digital-car-dash-canvas {
            visibility: hidden;
            pointer-events: none;
        }
        #radio-visual-root .radio-visual-digital-hub-panel {
            position: absolute;
            inset: 0;
            z-index: 3;
            display: none !important;
            align-items: center;
            justify-content: center;
            padding: clamp(4px, 1.04cqw, 10px);
            box-sizing: border-box;
            pointer-events: none;
            overflow: hidden;
            min-height: 0;
        }
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="volume"] .radio-visual-digital-hub-panel,
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="effects"] .radio-visual-digital-hub-panel,
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="bpm"] .radio-visual-digital-hub-panel,
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="ai"] .radio-visual-digital-hub-panel,
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="live"] .radio-visual-digital-hub-panel,
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="video"] .radio-visual-digital-hub-panel,
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="ai-off"] .radio-visual-digital-hub-panel {
            display: flex !important;
            pointer-events: auto;
        }
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="ai"] .radio-visual-digital-hub-panel,
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="live"] .radio-visual-digital-hub-panel {
            pointer-events: none;
        }
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="video"] .radio-visual-digital-hub-panel {
            pointer-events: none;
        }
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="ai"] .radio-visual-digital-hub-ai,
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="live"] .radio-visual-digital-hub-ai {
            pointer-events: auto;
            position: relative;
            z-index: 6;
            touch-action: manipulation;
        }
        #radio-visual-root .radio-visual-digital-hub-volume,
        #radio-visual-root .radio-visual-digital-hub-effects,
        #radio-visual-root .radio-visual-digital-hub-bpm,
        #radio-visual-root .radio-visual-digital-hub-ai,
        #radio-visual-root .radio-visual-digital-hub-deck-video,
        #radio-visual-root .radio-visual-digital-hub-off {
            display: none !important;
            width: 100%;
            height: 100%;
            min-height: 0;
        }
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="volume"] .radio-visual-digital-hub-volume {
            display: flex !important;
            flex-direction: row;
            align-items: stretch;
            justify-content: center;
            gap: clamp(2px, 0.6cqw, 8px);
            width: 100%;
            max-width: 100%;
            height: 100%;
            max-height: 100%;
            min-height: 0;
            min-width: 0;
            overflow: hidden;
            padding: clamp(2px, 0.42cqw, 4px);
            box-sizing: border-box;
        }
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="volume"] .radio-visual-digital-hub-deck,
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="effects"] .radio-visual-digital-hub-fx-deck {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: space-evenly;
            gap: 0;
            flex: 1 1 0;
            align-self: stretch;
            min-width: 0;
            min-height: 0;
            height: 100%;
            max-height: 100%;
            overflow: visible;
        }
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="volume"] .radio-visual-digital-hub-deck {
            flex: 1 1 0;
            min-width: 0;
        }
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="volume"] .radio-visual-digital-hub-gain-col {
            flex: 0 0 auto;
            gap: clamp(8px, 1.8cqw, 18px);
            min-width: clamp(72px, 14cqw, 120px);
            padding: 0 clamp(2px, 0.5cqw, 8px);
            overflow: visible;
        }
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="volume"] .radio-visual-digital-hub-gain-wrap {
            flex: 0 0 auto;
            width: clamp(36px, 7cqw, 60px);
            min-width: clamp(32px, 6cqw, 52px);
        }
        #radio-visual-root .radio-visual-digital-hub-deck {
            display: flex;
            flex-direction: row;
            align-items: center;
            justify-content: center;
            gap: clamp(4px, 0.83cqw, 8px);
            flex: 1 1 0;
            min-width: 0;
            min-height: 0;
        }
        #radio-visual-root .radio-visual-digital-hub-knob-wrap,
        #radio-visual-root .radio-visual-digital-hub-beatfx-wrap {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            gap: 1px;
            flex: 1 1 0;
            min-height: 0;
            width: 100%;
            min-width: 0;
            overflow: visible;
            container-type: size;
            container-name: rv-hub-knob-slot;
        }
        #radio-visual-root .radio-visual-digital-hub-knob.knob-wrap,
        #radio-visual-root .radio-visual-digital-hub-beatfx-knob.knob-wrap {
            --rv-hub-knob-size: clamp(26px, min(78cqh, 78cqw), 54px);
            flex: 0 0 auto;
            width: var(--rv-hub-knob-size);
            height: var(--rv-hub-knob-size);
            min-width: var(--rv-hub-knob-size);
            min-height: var(--rv-hub-knob-size);
            max-width: var(--rv-hub-knob-size);
            max-height: var(--rv-hub-knob-size);
            aspect-ratio: 1 / 1;
            border-radius: 50%;
            box-sizing: border-box;
            cursor: ns-resize;
        }
        #radio-visual-root .radio-visual-digital-hub-knob-label {
            font-size: clamp(6px, 2.5cqi, 9px);
            font-weight: 700;
            letter-spacing: 0.06em;
            color: rgba(200, 210, 230, 0.75);
            text-transform: uppercase;
            line-height: 1;
            flex-shrink: 0;
        }
        #radio-visual-root .radio-visual-digital-hub-gain-col {
            display: flex;
            flex-direction: row;
            align-items: stretch;
            justify-content: center;
            gap: clamp(14px, 2.8cqw, 28px);
            flex: 0 0 auto;
            align-self: center;
            padding: 0 clamp(6px, 1.25cqw, 12px);
            height: 100%;
            max-height: 100%;
            min-height: 0;
            min-width: clamp(72px, 14cqw, 120px);
            overflow: visible;
        }
        #radio-visual-root .radio-visual-digital-hub-gain-wrap {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: flex-end;
            gap: clamp(4px, 0.6cqw, 6px);
            flex: 0 0 auto;
            width: clamp(36px, 7cqw, 60px);
            min-width: clamp(32px, 6cqw, 52px);
            max-width: 100%;
            min-height: 0;
            max-height: 100%;
            height: 100%;
            overflow: visible;
            position: relative;
            container-type: size;
            container-name: rv-hub-gain;
            --rv-range-thumb: clamp(28px, 5.5cqw, 42px);
            --rv-range-rail: clamp(6px, 1.25cqw, 10px);
            --hub-gain-thumb-half: calc(var(--rv-range-thumb) / 2);
        }
        #radio-visual-root .radio-visual-digital-hub-gain-wrap::before {
            content: '';
            position: absolute;
            left: 50%;
            top: var(--hub-gain-thumb-half);
            bottom: calc(1.05em + var(--hub-gain-thumb-half));
            width: var(--rv-range-rail);
            min-height: 24px;
            transform: translateX(-50%);
            border-radius: 6px;
            border: 1px solid rgba(212, 175, 55, 0.35);
            background: linear-gradient(to top, rgba(0, 0, 0, 0.55), rgba(255, 255, 255, 0.08));
            box-shadow: inset 0 0 4px rgba(0, 0, 0, 0.35);
            pointer-events: none;
            z-index: 0;
        }
        #radio-visual-root .radio-visual-digital-hub-gain-label {
            flex: 0 0 auto;
            position: relative;
            z-index: 2;
            font-size: clamp(10px, 1.55cqw, 14px);
            font-weight: 800;
            letter-spacing: 0.12em;
            color: var(--gain-color, #fff);
            text-shadow: 0 0 8px color-mix(in srgb, var(--gain-color, #fff) 45%, transparent);
            line-height: 1;
        }
        #radio-visual-root .radio-visual-digital-hub-gain-wrap--a .radio-visual-digital-hub-gain-label {
            color: #ff0b55;
            text-shadow: 0 0 10px rgba(255, 11, 85, 0.55);
        }
        #radio-visual-root .radio-visual-digital-hub-gain-wrap--b .radio-visual-digital-hub-gain-label {
            color: #5800ff;
            text-shadow: 0 0 10px rgba(88, 0, 255, 0.45);
        }
        /* Hub gain + spectrum staging sliders: same vol.png thumb as crossfader / DJ vol */
        #radio-visual-root .radio-visual-digital-range {
            -webkit-appearance: none;
            appearance: none;
            margin: 0;
            padding: 0;
            background: transparent !important;
            border: none;
            box-shadow: none;
            accent-color: transparent;
            --rv-range-thumb: clamp(28px, 5.5cqw, 42px);
            --rv-range-rail: clamp(6px, 1.25cqw, 10px);
            cursor: pointer;
        }
        #radio-visual-root .radio-visual-digital-hub-gain-slider.radio-visual-digital-range {
            position: absolute;
            left: 50%;
            top: calc((100% - 1.05em) / 2);
            transform: translate(-50%, -50%) rotate(-90deg);
            transform-origin: center center;
            writing-mode: horizontal-tb;
            direction: ltr;
            /* Pre-rotate width = vertical thumb travel (match ::before rail inset by thumb + label). */
            width: calc(100cqh - 1.05em - var(--rv-range-thumb));
            min-width: 48px;
            max-width: none;
            height: var(--rv-range-rail) !important;
            min-height: var(--rv-range-rail);
            flex: none;
            flex-shrink: 0;
            align-self: center;
            z-index: 1;
            cursor: ns-resize;
        }
        #radio-visual-root .radio-visual-digital-hub-gain-slider.radio-visual-digital-range::-webkit-slider-runnable-track {
            width: 100%;
            height: var(--rv-range-rail);
            background: transparent !important;
            border: none !important;
            box-shadow: none;
        }
        #radio-visual-root .radio-visual-digital-hub-gain-slider.radio-visual-digital-range::-moz-range-track {
            width: 100%;
            height: var(--rv-range-rail);
            background: transparent !important;
            border: none !important;
            box-shadow: none;
        }
        #radio-visual-root .radio-visual-digital-range::-webkit-slider-runnable-track {
            background: linear-gradient(to top, rgba(0,0,0,0.55), rgba(255,255,255,0.08));
            border-radius: 6px;
            border: 1px solid rgba(212, 175, 55, 0.35);
        }
        #radio-visual-root .radio-visual-digital-range::-moz-range-track {
            background: linear-gradient(to top, rgba(0,0,0,0.55), rgba(255,255,255,0.08));
            border-radius: 6px;
            border: 1px solid rgba(212, 175, 55, 0.35);
        }
        #radio-visual-root .radio-visual-digital-range::-moz-range-progress {
            background: transparent !important;
        }
        #radio-visual-root .radio-visual-digital-range::-webkit-slider-thumb {
            -webkit-appearance: none !important;
            appearance: none !important;
            width: var(--rv-range-thumb) !important;
            height: var(--rv-range-thumb) !important;
            background: transparent url('../assets/images/vol.png') center center / 100% 100% no-repeat !important;
            border: none !important;
            border-radius: 50%;
            box-shadow: none !important;
            cursor: pointer;
        }
        #radio-visual-root .radio-visual-digital-range::-moz-range-thumb {
            width: var(--rv-range-thumb) !important;
            height: var(--rv-range-thumb) !important;
            background: transparent url('../assets/images/vol.png') center center / 100% 100% no-repeat !important;
            border: none !important;
            border-radius: 50%;
            box-shadow: none !important;
            cursor: pointer;
        }
        #radio-visual-root .radio-visual-digital-hub-gain-slider.radio-visual-digital-range::-webkit-slider-thumb {
            margin-top: calc((var(--rv-range-rail) - var(--rv-range-thumb)) / 2) !important;
            margin-left: 0 !important;
        }
        #radio-visual-root .radio-visual-digital-hub-gain-slider.radio-visual-digital-range::-moz-range-thumb {
            transform: translateY(calc((var(--rv-range-rail) - var(--rv-range-thumb)) / 2));
        }
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="effects"] .radio-visual-digital-hub-effects {
            display: flex !important;
            flex-direction: row;
            align-items: stretch;
            justify-content: center;
            gap: clamp(4px, 1.04cqw, 10px);
            height: 100%;
            max-height: 100%;
            min-height: 0;
            overflow: hidden;
            padding: clamp(2px, 0.42cqw, 4px);
            box-sizing: border-box;
        }
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="bpm"] .radio-visual-digital-hub-bpm {
            display: flex !important;
            flex-direction: column;
            align-items: stretch;
            justify-content: center;
            width: 100%;
            height: 100%;
            min-height: 0;
            min-width: 0;
            padding: clamp(4px, 1.04cqw, 10px);
            box-sizing: border-box;
            overflow: hidden;
        }
        #radio-visual-root .radio-visual-digital-hub-bpm #mix-bpm-row.is-digital-hub-mounted {
            display: grid;
            grid-template-rows: minmax(0, 1fr) auto auto;
            grid-template-columns: minmax(0, 1fr);
            align-items: stretch;
            justify-items: stretch;
            gap: clamp(5px, 1cqw, 10px);
            width: 100%;
            height: 100%;
            min-height: 0;
            min-width: 0;
            margin: 0;
            box-sizing: border-box;
        }
        #radio-visual-root .radio-visual-digital-hub-bpm #mix-bpm-row.is-digital-hub-mounted #mix-scope-stack {
            grid-column: 1;
            grid-row: 1;
            display: flex;
            flex-direction: column;
            width: 100%;
            max-width: 100%;
            height: 100%;
            min-height: 0;
            min-width: 0;
            gap: clamp(4px, 0.7cqw, 8px);
            box-sizing: border-box;
        }
        #radio-visual-root .radio-visual-digital-hub-bpm #mix-bpm-row.is-digital-hub-mounted .mix-scope-wrap {
            flex: 1 1 50%;
            min-height: 0;
            width: 100%;
            max-width: 100%;
            min-width: 0;
            border-radius: 8px;
            box-sizing: border-box;
        }
        #radio-visual-root .radio-visual-digital-hub-bpm #mix-bpm-row.is-digital-hub-mounted .mix-scope-wrap canvas {
            width: 100% !important;
            height: 100% !important;
            display: block;
        }
        #radio-visual-root .radio-visual-digital-hub-bpm #mix-bpm-row.is-digital-hub-mounted #mix-bpm-legend {
            grid-column: 1;
            grid-row: 2;
            display: grid;
            grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
            gap: clamp(6px, 1.2cqw, 12px);
            width: 100%;
            max-width: 100%;
            min-width: 0;
            font-size: clamp(10px, 1.25cqw, 13px);
            color: rgba(220, 235, 255, 0.92);
            box-sizing: border-box;
        }
        #radio-visual-root .radio-visual-digital-hub-bpm #mix-bpm-row.is-digital-hub-mounted #mix-bpm-legend .row {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: clamp(4px, 0.7cqw, 8px);
            min-width: 0;
            width: 100%;
            white-space: nowrap;
        }
        #radio-visual-root .radio-visual-digital-hub-bpm #mix-bpm-row.is-digital-hub-mounted #mix-bpm-legend .legend-label {
            min-width: 0;
            overflow: hidden;
            text-overflow: ellipsis;
        }
        #radio-visual-root .radio-visual-digital-hub-bpm #mix-bpm-row.is-digital-hub-mounted .mix-bpm-controls {
            grid-column: 1;
            grid-row: 3;
            display: grid !important;
            grid-template-columns: repeat(4, minmax(0, 1fr));
            grid-template-rows: repeat(2, minmax(clamp(22px, 4.5cqh, 30px), auto));
            gap: clamp(4px, 0.75cqw, 8px);
            width: 100%;
            max-width: 100%;
            min-width: 0;
            box-sizing: border-box;
        }
        #radio-visual-root .radio-visual-digital-hub-bpm #mix-bpm-row.is-digital-hub-mounted .mix-bpm-controls .btn {
            order: initial;
            width: 100%;
            min-width: 0;
            max-width: 100%;
            padding: clamp(4px, 0.75cqw, 8px) clamp(4px, 0.6cqw, 8px);
            border: 1px solid rgba(255, 255, 255, 0.25);
            background: rgba(255, 255, 255, 0.08);
            color: #fff;
            border-radius: 6px;
            cursor: pointer;
            font-size: clamp(7px, 0.9cqw, 10px);
            line-height: 1.1;
            text-transform: uppercase;
            letter-spacing: 0.03em;
            font-family: var(--rv-digital-btn-blue-font, var(--rv-digital-ui-font, inherit));
            background-image: url('../assets/images/btn.png');
            background-position: center;
            background-repeat: no-repeat;
            background-size: 100% 100%;
            box-sizing: border-box;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }
        #radio-visual-root .radio-visual-digital-hub-bpm #mix-bpm-row.is-digital-hub-mounted .mix-bpm-controls .btn.on {
            color: var(--rv-digital-btn-blue-label, #fff824);
            border-color: color-mix(in srgb, var(--rv-digital-btn-blue-active, #cddb00) 55%, transparent);
            box-shadow: 0 0 10px color-mix(in srgb, var(--rv-digital-btn-blue-accent, #19c844) 35%, transparent);
        }
        #radio-visual-root .radio-visual-digital-hub-fx-deck {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: space-evenly;
            gap: 0;
            flex: 1 1 0;
            align-self: stretch;
            min-width: 0;
            min-height: 0;
            height: 100%;
            max-height: 100%;
            overflow: visible;
        }
        #radio-visual-root .radio-visual-digital-hub-fx-center {
            display: flex;
            flex-direction: row;
            align-items: stretch;
            justify-content: center;
            gap: clamp(2px, 0.42cqw, 4px);
            flex: 0 0 auto;
            min-width: clamp(44px, 8.5cqw, 72px);
            max-width: min(22%, 84px);
            width: min(22%, 84px);
            height: 100%;
            min-height: 0;
            max-height: 100%;
            overflow: hidden;
            padding: clamp(1px, 0.25cqw, 3px);
            box-sizing: border-box;
        }
        #radio-visual-root .radio-visual-digital-hub-fx-col {
            display: flex;
            flex-direction: column;
            align-items: stretch;
            justify-content: space-evenly;
            gap: clamp(1px, 0.25cqw, 3px);
            flex: 1 1 0;
            min-width: 0;
            min-height: 0;
            max-width: 50%;
        }
        #radio-visual-root .radio-visual-digital-hub-fx-btn {
            flex: 1 1 0;
            min-height: 0;
            width: 100%;
            max-width: 100%;
            display: flex;
            align-items: center;
            justify-content: center;
            padding: clamp(1px, 0.2cqw, 2px) clamp(1px, 0.25cqw, 3px);
            border: 1px solid rgba(255, 0, 0, 0.25);
            border-radius: 4px;
            background-color: rgba(0, 0, 0, 0.35);
            background-image: url('../assets/images/btn.png'), url('../assets/gifs/xim.gif');
            background-position: center, center;
            background-repeat: no-repeat, no-repeat;
            background-size: 100% 100%, 100% 100%;
            color: #fff;
            font-size: clamp(5px, 0.85cqw, 8px);
            font-weight: 700;
            line-height: 1.05;
            text-align: center;
            text-shadow: 0 0 4px rgba(0, 0, 0, 0.8);
            cursor: pointer;
            overflow: hidden;
        }
        #radio-visual-root .radio-visual-digital-hub-fx-btn.on {
            border-color: rgba(255, 55, 72, 0.65);
            box-shadow: 0 0 10px rgba(255, 45, 60, 0.22) inset;
            color: #ff2a3d;
        }
        #radio-visual-root .radio-visual-digital-hub-fx-btn:hover {
            border-color: rgba(245, 210, 15, 0.3);
            color: #f5d20f;
        }
        #radio-visual-root .radio-visual-digital-hub-beatfx-knob.dj-beatfx-on {
            box-shadow:
                0 0 0 2px rgba(255, 220, 80, 0.55),
                0 0 14px rgba(255, 200, 60, 0.35);
        }
        #radio-visual-root .radio-visual-digital-spectrum-staging-slider {
            position: absolute;
            left: 50%;
            top: 50%;
            z-index: 8;
            display: flex;
            flex-direction: column;
            align-items: stretch;
            justify-content: center;
            gap: clamp(10px, 1.67cqw, 14px);
            width: clamp(56px, 10cqw, 76px);
            height: clamp(128px, 50cqh, 250px);
            max-height: min(78%, 250px);
            padding: 0;
            transform: translate(-50%, -50%);
            border: none;
            border-radius: 0;
            background: transparent;
            box-shadow: none;
            opacity: 0;
            pointer-events: none;
            transition: opacity 0.4s ease;
            box-sizing: border-box;
            overflow: visible;
            --rv-spectrum-scale-thumb: clamp(24px, 5.5cqw, 34px);
        }
        #radio-visual-root .radio-visual-digital-spectrum-staging-scale-wrap {
            flex: 1 1 0;
            min-height: 0;
            max-height: 100%;
            width: 100%;
            display: flex;
            align-items: center;
            justify-content: center;
            overflow: hidden;
            touch-action: none;
            position: relative;
            box-sizing: border-box;
            padding-bottom: calc(var(--rv-spectrum-scale-thumb, 32px) * 0.45);
        }
        #radio-visual-root .radio-visual-digital-spectrum-staging-pan-wrap {
            flex: 0 0 auto;
            width: 100%;
            height: clamp(28px, 6cqh, 36px);
            display: flex;
            align-items: center;
            justify-content: center;
            overflow: hidden;
            touch-action: none;
            position: relative;
        }
        #radio-visual-root .radio-visual-digital-spectrum-staging-slider.is-visible
            .radio-visual-digital-spectrum-staging-scale-wrap,
        #radio-visual-root .radio-visual-digital-spectrum-staging-slider.is-visible
            .radio-visual-digital-spectrum-staging-pan-wrap {
            pointer-events: auto;
        }
        #radio-visual-root .radio-visual-digital-spectrum-staging-scale-wrap,
        #radio-visual-root .radio-visual-digital-spectrum-staging-pan-wrap {
            pointer-events: none;
        }
        #radio-visual-root .radio-visual-digital-spectrum-staging-slider.is-dragging-scale
            .radio-visual-digital-spectrum-staging-pan-wrap {
            pointer-events: none !important;
        }
        #radio-visual-root .radio-visual-digital-spectrum-staging-slider.is-dragging-pan
            .radio-visual-digital-spectrum-staging-scale-wrap {
            pointer-events: none !important;
        }
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="spectrum"] .radio-visual-digital-spectrum-staging-slider.is-visible {
            opacity: 1;
            pointer-events: auto;
        }
        #radio-visual-root .radio-visual-digital-spectrum-scale-range.radio-visual-digital-range {
            writing-mode: vertical-lr;
            direction: rtl;
            width: var(--rv-spectrum-scale-thumb, 32px);
            height: 100%;
            min-height: 0;
            max-height: 100%;
            flex: 0 0 auto;
            --rv-range-thumb: var(--rv-spectrum-scale-thumb, 32px);
            cursor: ns-resize;
            touch-action: none;
        }
        #radio-visual-root .radio-visual-digital-spectrum-scale-range.radio-visual-digital-range::-webkit-slider-runnable-track,
        #radio-visual-root .radio-visual-digital-spectrum-pan-range.radio-visual-digital-range::-webkit-slider-runnable-track {
            border: none;
        }
        #radio-visual-root .radio-visual-digital-spectrum-scale-range.radio-visual-digital-range::-moz-range-track,
        #radio-visual-root .radio-visual-digital-spectrum-pan-range.radio-visual-digital-range::-moz-range-track {
            border: none;
        }
        #radio-visual-root .radio-visual-digital-spectrum-scale-range.radio-visual-digital-range::-webkit-slider-runnable-track {
            width: var(--rv-range-rail);
        }
        #radio-visual-root .radio-visual-digital-spectrum-scale-range.radio-visual-digital-range::-webkit-slider-thumb {
            margin-left: calc((var(--rv-range-thumb) - var(--rv-range-rail)) / -2);
            transform: rotate(-90deg);
        }
        #radio-visual-root .radio-visual-digital-spectrum-scale-range.radio-visual-digital-range::-moz-range-thumb {
            transform: rotate(-90deg);
        }
        #radio-visual-root .radio-visual-digital-spectrum-pan-range.radio-visual-digital-range {
            writing-mode: horizontal-tb;
            direction: ltr;
            width: 100%;
            height: 100%;
            min-height: 0;
            max-height: 100%;
            flex: 0 0 auto;
            --rv-range-thumb: clamp(20px, 4cqw, 28px);
            --rv-range-rail: clamp(5px, 1cqw, 8px);
            cursor: ew-resize;
            touch-action: none;
        }
        #radio-visual-root .radio-visual-digital-spectrum-pan-range.radio-visual-digital-range::-webkit-slider-thumb {
            margin-left: 0;
            margin-top: calc((var(--rv-range-thumb) - var(--rv-range-rail)) / -2);
        }
        #radio-visual-root .radio-visual-digital-hub-video-column {
            display: none !important;
            width: 100%;
            height: 100%;
            min-height: 0;
            min-width: 0;
            flex-direction: column;
            align-items: stretch;
            justify-content: stretch;
            gap: clamp(4px, 0.8cqw, 8px);
            box-sizing: border-box;
        }
        #radio-visual-root .radio-visual-digital-hub-video-primary {
            flex: 1 1 0;
            min-height: 0;
            min-width: 0;
            width: 100%;
            display: flex;
            align-items: center;
            justify-content: center;
        }
        #radio-visual-root .radio-visual-digital-hub-fs-viz-dock {
            display: none;
            flex: 1 1 0;
            width: 100%;
            min-height: 0;
            flex-direction: column;
            align-items: stretch;
            gap: 0;
            pointer-events: auto;
            touch-action: manipulation;
            position: relative;
            z-index: 7;
        }
        #radio-visual-root .radio-visual-digital-hub-fs-viz-mount {
            flex: 1 1 0;
            min-height: 0;
            width: 100%;
            height: 100%;
            border-radius: 8px;
            overflow: hidden;
            background: #000;
            border: 1px solid rgba(0, 0, 0, 0.45);
            cursor: pointer;
            position: relative;
            display: flex;
            align-items: stretch;
            justify-content: stretch;
        }
        #radio-visual-root .radio-visual-digital-hub-fs-viz-canvas {
            display: block;
            position: absolute;
            inset: 0;
            width: 100% !important;
            height: 100% !important;
        }
        #radio-visual-root .radio-visual-digital-hub-fs-viz-cycle {
            display: none !important;
        }
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="ai"] .radio-visual-digital-hub-video-column[data-hub-video-column="ai"],
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="live"] .radio-visual-digital-hub-video-column[data-hub-video-column="ai"],
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="video"] .radio-visual-digital-hub-video-column[data-hub-video-column="video"] {
            display: flex !important;
            flex-direction: column;
            pointer-events: none;
            position: relative;
            z-index: 6;
            height: 100%;
            min-height: 0;
        }
        #radio-visual-root.radio-visual-root--digital-fs .radio-visual-digital-hub-video-column.is-fs-viz-dock-active .radio-visual-digital-hub-fs-viz-dock,
        html:fullscreen #radio-visual-root .radio-visual-digital-hub-video-column.is-fs-viz-dock-active .radio-visual-digital-hub-fs-viz-dock,
        html:-webkit-full-screen #radio-visual-root .radio-visual-digital-hub-video-column.is-fs-viz-dock-active .radio-visual-digital-hub-fs-viz-dock {
            display: flex;
            flex: 1 1 0;
            min-height: 0;
        }
        #radio-visual-root.radio-visual-root--digital-fs .radio-visual-digital-hub-video-column.is-fs-viz-dock-active,
        html:fullscreen #radio-visual-root .radio-visual-digital-hub-video-column.is-fs-viz-dock-active,
        html:-webkit-full-screen #radio-visual-root .radio-visual-digital-hub-video-column.is-fs-viz-dock-active {
            justify-content: stretch;
        }
        #radio-visual-root.radio-visual-root--digital-fs .radio-visual-digital-hub-video-column.is-fs-viz-dock-active .radio-visual-digital-hub-video-primary,
        html:fullscreen #radio-visual-root .radio-visual-digital-hub-video-column.is-fs-viz-dock-active .radio-visual-digital-hub-video-primary,
        html:-webkit-full-screen #radio-visual-root .radio-visual-digital-hub-video-column.is-fs-viz-dock-active .radio-visual-digital-hub-video-primary {
            flex: 1 1 0;
            min-height: 0;
        }
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="ai"] .radio-visual-digital-hub-ai,
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="live"] .radio-visual-digital-hub-ai {
            display: flex !important;
            align-items: center;
            justify-content: center;
            background: #000;
            border-radius: 8px;
            overflow: hidden;
            width: 100%;
            height: 100%;
            min-height: 0;
        }
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="video"] .radio-visual-digital-hub-deck-video {
            display: flex !important;
            align-items: center;
            justify-content: center;
            background: #000;
            border-radius: 8px;
            overflow: hidden;
            pointer-events: auto;
            position: relative;
            z-index: 6;
            touch-action: manipulation;
            width: 100%;
            height: 100%;
            min-height: 0;
        }
        #radio-visual-root .radio-visual-digital-hub-deck-video-stack {
            position: relative;
            width: 100%;
            height: 100%;
            min-height: 0;
        }
        #radio-visual-root .radio-visual-digital-hub-deck-video-el {
            width: 100%;
            height: 100%;
            object-fit: contain;
            display: block;
            background: #000;
        }
        #radio-visual-root .radio-visual-digital-hub-deck-video-stack .radio-visual-digital-hub-deck-video-el {
            position: absolute;
            inset: 0;
            opacity: 0;
            pointer-events: none;
        }
        #radio-visual-root .radio-visual-digital-hub-ai-stack {
            position: relative;
            width: 100%;
            height: 100%;
            min-height: 0;
        }
        #radio-visual-root .radio-visual-digital-hub-ai-video {
            width: 100%;
            height: 100%;
            object-fit: contain;
            display: block;
            background: #000;
            position: absolute;
            inset: 0;
            z-index: 1;
        }
        #radio-visual-root .radio-visual-digital-hub-ai-video.is-hidden {
            opacity: 0;
            pointer-events: none;
            z-index: 0;
        }
        #radio-visual-root .radio-visual-digital-hub-ai-video:not(.is-hidden) {
            z-index: 1;
        }
        #radio-visual-root .radio-visual-digital-hub-ai-loader {
            position: absolute;
            inset: 0;
            z-index: 2;
            display: none;
            align-items: center;
            justify-content: center;
            pointer-events: none;
            background: rgba(0, 10, 22, 0.55);
        }
        #radio-visual-root .radio-visual-digital-hub-ai-loader.is-visible {
            display: flex;
        }
        #radio-visual-root .radio-visual-digital-hub-ai-loader-ring {
            width: clamp(28px, 7.5cqw, 42px);
            height: clamp(28px, 7.5cqw, 42px);
            border-radius: 50%;
            border: 3px solid rgba(0, 200, 255, 0.18);
            border-top-color: #8ef;
            border-right-color: #b060ff;
            box-shadow:
                0 0 12px rgba(0, 220, 255, 0.45),
                0 0 22px rgba(176, 96, 255, 0.25);
            animation: radio-visual-hub-ai-spin 0.9s linear infinite;
        }
        @keyframes radio-visual-hub-ai-spin {
            to { transform: rotate(360deg); }
        }
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="ai-off"] .radio-visual-digital-hub-off {
            display: flex !important;
            align-items: center;
            justify-content: center;
            font-size: clamp(18px, 4.17cqw, 32px);
            font-weight: 800;
            letter-spacing: 0.35em;
            color: rgba(160, 170, 190, 0.45);
            text-shadow: 0 0 20px rgba(0, 0, 0, 0.8);
        }
        #radio-visual-root .radio-visual-digital-center-pane[data-hub-mode="ai-off"] .radio-visual-digital-dash-stack {
            display: flex !important;
        }
        #radio-visual-root .radio-visual-digital-dash-xfade {
            display: flex;
            flex-direction: row;
            align-items: center;
            justify-content: stretch;
            gap: clamp(4px, 1.04cqw, 10px);
            padding: clamp(4px, 0.83cqw, 6px) clamp(4px, 1.04cqw, 10px) clamp(5px, 0.83cqw, 8px);
            flex-shrink: 0;
            border-top: 1px solid rgba(0, 200, 255, 0.28);
            background: linear-gradient(180deg, rgba(0, 0, 0, 0.55) 0%, rgba(12, 14, 22, 0.72) 100%);
            opacity: 1;
            position: relative;
            z-index: 2;
            pointer-events: auto;
        }
        #radio-visual-root .radio-visual-digital-dash-xfade-end {
            flex: 0 0 2em;
            width: 2em;
            min-width: 2em;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            text-align: center;
            font-size: clamp(10px, 1.46cqw, 14px);
            font-weight: 800;
            letter-spacing: 0.06em;
            line-height: 1;
            text-shadow: 0 0 8px rgba(0, 0, 0, 0.75);
            transform-origin: center center;
            transition: transform 0.12s ease-out;
        }
        #radio-visual-root .radio-visual-digital-dash-xfade-end--a {
            color: #ff0b55;
            text-shadow: 0 0 10px rgba(255, 11, 85, 0.55);
            transform: scale(var(--xf-label-scale-a, 1));
        }
        #radio-visual-root .radio-visual-digital-dash-xfade-end--b {
            color: #5800ff;
            text-shadow: 0 0 10px rgba(88, 0, 255, 0.45);
            transform: scale(var(--xf-label-scale-b, 1));
        }
        #radio-visual-root .radio-visual-digital-dash-xfade-wrap {
            container-type: inline-size;
            container-name: rv-xfade;
            position: relative;
            flex: 1 1 auto;
            min-width: 0;
            display: flex;
            align-items: center;
            --cross-x: 0;
            --cross-deck-a: rgba(208, 18, 18, 0.6);
            --cross-deck-b: rgba(30, 26, 77, 0.6);
            --xfade-thumb: clamp(22px, 28cqw, 48px);
            --cross-thumb-half: calc(var(--xfade-thumb) / 2);
            --xfade-rail-h: clamp(6px, 4cqw, 12px);
            min-height: var(--xfade-thumb);
        }
        #radio-visual-root .radio-visual-digital-dash-xfade-wrap::before {
            content: '';
            position: absolute;
            left: var(--cross-thumb-half);
            right: var(--cross-thumb-half);
            top: 50%;
            height: var(--xfade-rail-h);
            transform: translateY(-50%);
            border-radius: calc(var(--xfade-rail-h) / 2);
            border: 1px solid rgba(212, 175, 55, 0.9);
            box-sizing: border-box;
            background: linear-gradient(
                to right,
                var(--cross-deck-b) 0%,
                var(--cross-deck-b) calc(var(--cross-x) * 100%),
                var(--cross-deck-a) calc(var(--cross-x) * 100%),
                var(--cross-deck-a) 100%
            );
            box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.45), 0 0 10px rgba(212, 175, 55, 0.28);
            pointer-events: none;
        }
        #radio-visual-root .radio-visual-digital-dash-xfade-range {
            position: relative;
            z-index: 1;
            pointer-events: auto;
            -webkit-appearance: none;
            appearance: none;
            width: 100%;
            min-width: 0;
            height: var(--xfade-rail-h) !important;
            position: relative;
            z-index: 1;
            margin: 0;
            background: transparent !important;
            box-shadow: none;
            border: none;
            accent-color: transparent;
        }
        #radio-visual-root .radio-visual-digital-dash-xfade-range::-webkit-slider-thumb {
            -webkit-appearance: none !important;
            appearance: none !important;
            width: var(--xfade-thumb) !important;
            height: var(--xfade-thumb) !important;
            background: transparent url('../assets/images/vol.png') center center / 100% 100% no-repeat !important;
            border: none !important;
            border-radius: 50%;
            margin-top: calc((var(--xfade-rail-h) - var(--xfade-thumb)) / 2) !important;
            box-shadow: none !important;
            cursor: pointer;
        }
        #radio-visual-root .radio-visual-digital-dash-xfade-range::-moz-range-thumb {
            width: var(--xfade-thumb) !important;
            height: var(--xfade-thumb) !important;
            background: transparent url('../assets/images/vol.png') center center / 100% 100% no-repeat !important;
            border: none !important;
            border-radius: 50%;
            box-shadow: none !important;
            cursor: pointer;
        }
        #radio-visual-root .radio-visual-digital-dash-xfade-range::-moz-range-progress {
            background: transparent !important;
        }
        #radio-visual-root .radio-visual-digital-dash-xfade-range::-webkit-slider-runnable-track {
            height: var(--xfade-rail-h);
            background: transparent;
        }
        #radio-visual-root .radio-visual-digital-deck-b-mount {
            position: relative;
            width: 100%;
            height: 100%;
        }
        #radio-visual-root .radio-visual-digital-deck-b-content {
            display: none;
            position: absolute;
            inset: 0;
            z-index: 2;
            overflow: hidden;
            background: #000;
        }
        #radio-visual-root .radio-visual-digital-deck-b-content.is-active {
            display: block;
        }
        #radio-visual-root .radio-visual-digital-deck-b-canvas {
            width: 100%;
            height: 100%;
            display: block;
        }
        #radio-visual-root .radio-visual-digital-deck-b-video-stack {
            position: absolute;
            inset: 0;
            z-index: 1;
            width: 100%;
            height: 100%;
            max-height: 100%;
        }
        #radio-visual-root .radio-visual-digital-deck-b-video-stack .radio-visual-digital-deck-b-video {
            position: absolute;
            inset: 0;
            width: 100%;
            height: 100%;
            max-height: 100%;
            object-fit: contain;
            background: #000;
            opacity: 0;
            pointer-events: none;
        }
        #radio-visual-root .radio-visual-digital-deck-b-video-stack.is-hidden {
            display: none;
        }
        #radio-visual-root .radio-visual-digital-deck-b-video {
            position: absolute;
            inset: 0;
            z-index: 1;
            width: 100%;
            height: 100%;
            max-height: 100%;
            object-fit: contain;
            background: #000;
        }
        #radio-visual-root .radio-visual-digital-deck-b-video.is-hidden {
            display: none;
        }
        #radio-visual-root .radio-visual-digital-deck-b-queue {
            display: flex;
            flex-direction: column;
            height: 100%;
            padding: 10px 12px;
            box-sizing: border-box;
            color: #8ef;
            font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
        }
        #radio-visual-root .radio-visual-digital-deck-b-queue-title {
            font-size: 11px;
            font-weight: 700;
            letter-spacing: 0.14em;
            text-transform: uppercase;
            margin-bottom: 8px;
            color: #5ec;
        }
        #radio-visual-root .radio-visual-digital-deck-b-queue-list {
            list-style: none;
            margin: 0;
            padding: 0;
            overflow: auto;
            flex: 1;
            font-size: clamp(10px, 2vw, 12px);
        }
        #radio-visual-root .radio-visual-digital-deck-b-queue-list li {
            padding: 4px 0;
            border-bottom: 1px solid rgba(0, 220, 255, 0.12);
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }
        /* Nine equal slots — same overall track width as blue toolbar row (no horizontal bleed). */
        #radio-visual-root .radio-visual-btn-grid.radio-visual-digital-feature-btns {
            display: grid;
            grid-template-columns: repeat(9, minmax(0, 1fr));
            gap: clamp(1px, 0.31cqw, 3px);
            max-width: none;
            width: 100%;
            margin: 0;
            padding: 0;
            padding-bottom: calc(
                var(--rv-row-divider-spacing, 3px) + var(--rv-row-divider-height, 2px) + var(--rv-row-divider-spacing, 3px)
            );
            align-self: stretch;
            position: relative;
            z-index: 12;
            flex-shrink: 0;
            box-sizing: border-box;
            overflow: visible;
            --rv-row-divider-height: var(--rv-digital-feature-divider-height, 2px);
            --rv-row-divider-spacing: var(--rv-digital-feature-divider-spacing, 3px);
            --rv-row-divider-color: var(--rv-digital-feature-divider-color, #c86bff);
            --rv-row-divider-glow: var(--rv-digital-feature-divider-glow, 0);
        }
        #radio-visual-root .radio-visual-btn-grid.radio-visual-digital-feature-btns .radio-visual-btn {
            container-type: size;
            container-name: rv-feature-btn;
            display: flex;
            align-items: center;
            justify-content: center;
            box-sizing: border-box;
            width: 100%;
            height: clamp(20px, 4.8cqw, 30px);
            max-height: clamp(20px, 4.8cqw, 30px);
            min-width: 0;
            min-height: 0;
            aspect-ratio: auto;
            border-color: color-mix(
                in srgb,
                color-mix(in srgb, var(--rv-digital-btn-purple-top) 55%, white 20%)
                    calc(var(--rv-digital-btn-purple-border-opacity, 1) * 100%),
                transparent
            );
            background: linear-gradient(
                180deg,
                color-mix(in srgb, var(--rv-digital-btn-purple-top) calc(var(--rv-digital-btn-purple-opacity, 1) * 100%), transparent) 0%,
                color-mix(
                    in srgb,
                    color-mix(in srgb, var(--rv-digital-btn-purple-top) 55%, var(--rv-digital-btn-purple-base))
                        calc(var(--rv-digital-btn-purple-opacity, 1) * 100%),
                    transparent
                ) 55%,
                color-mix(in srgb, var(--rv-digital-btn-purple-base) calc(var(--rv-digital-btn-purple-opacity, 1) * 100%), transparent) 100%
            );
            color: var(--rv-digital-btn-purple-label);
            box-shadow:
                0 2px 0 color-mix(in srgb, var(--rv-digital-btn-purple-base) 85%, black),
                inset 0 1px 0 color-mix(in srgb, var(--rv-digital-btn-purple-top) 35%, white 15%);
            padding: clamp(1px, 0.35cqw, 4px) clamp(2px, 0.5cqw, 5px);
            overflow: hidden;
        }
        #radio-visual-root .radio-visual-btn-grid.radio-visual-digital-feature-btns .radio-visual-btn .radio-visual-btn-label {
            display: block;
            width: 100%;
            max-height: 100%;
            font-family: var(--rv-digital-btn-purple-font, var(--rv-digital-ui-font)) !important;
            opacity: var(--rv-digital-btn-purple-text-opacity, 1);
            color: var(--rv-digital-btn-purple-label);
            font-weight: 800;
            letter-spacing: 0.02em;
            line-height: 1;
            text-align: center;
            text-transform: uppercase;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: clip;
            text-shadow:
                0 0 6px color-mix(in srgb, var(--rv-digital-btn-purple-label) 95%, transparent),
                0 0 14px color-mix(in srgb, var(--rv-digital-btn-purple-label) 55%, transparent);
        }
        #radio-visual-root .radio-visual-btn-grid.radio-visual-digital-feature-btns .radio-visual-btn.is-active .radio-visual-btn-label {
            color: color-mix(
                in srgb,
                var(--rv-digital-btn-purple-active) calc(var(--rv-digital-btn-purple-accent-opacity, 1) * 100%),
                var(--rv-digital-btn-purple-label)
            );
            text-shadow:
                0 0 6px color-mix(
                    in srgb,
                    var(--rv-digital-btn-purple-active) calc(95% * var(--rv-digital-btn-purple-accent-opacity, 1)),
                    transparent
                ),
                0 0 14px color-mix(
                    in srgb,
                    var(--rv-digital-btn-purple-active) calc(60% * var(--rv-digital-btn-purple-accent-opacity, 1)),
                    transparent
                );
        }
        #radio-visual-root .radio-visual-btn-grid.radio-visual-digital-feature-btns .radio-visual-btn:hover {
            filter: brightness(1.15);
            border-color: color-mix(
                in srgb,
                color-mix(in srgb, var(--rv-digital-btn-purple-top) 65%, white 25%)
                    calc(var(--rv-digital-btn-purple-border-opacity, 1) * 100%),
                transparent
            );
        }
        /* Orange link buttons — column count follows manifest (--rv-orange-btn-count). */
        #radio-visual-root .radio-visual-btn-grid.radio-visual-digital-orange-btns {
            display: grid;
            grid-template-columns: repeat(var(--rv-orange-btn-count, 7), minmax(0, 1fr));
            gap: clamp(1px, 0.31cqw, 3px);
            max-width: none;
            width: 100%;
            margin: 0;
            padding: 0;
            align-self: stretch;
            position: relative;
            z-index: 12;
            flex-shrink: 0;
            box-sizing: border-box;
        }
        #radio-visual-root .radio-visual-btn-grid.radio-visual-digital-orange-btns .radio-visual-btn {
            container-type: size;
            container-name: rv-orange-btn;
            display: flex;
            align-items: center;
            justify-content: center;
            box-sizing: border-box;
            width: 100%;
            height: clamp(20px, 4.8cqw, 30px);
            max-height: clamp(20px, 4.8cqw, 30px);
            min-width: 0;
            min-height: 0;
            aspect-ratio: auto;
            border-color: color-mix(
                in srgb,
                color-mix(in srgb, var(--rv-digital-btn-orange-top) 55%, white 20%)
                    calc(var(--rv-digital-btn-orange-border-opacity, 1) * 100%),
                transparent
            );
            background: linear-gradient(
                180deg,
                color-mix(in srgb, var(--rv-digital-btn-orange-top) calc(var(--rv-digital-btn-orange-opacity, 1) * 100%), transparent) 0%,
                color-mix(
                    in srgb,
                    color-mix(in srgb, var(--rv-digital-btn-orange-top) 55%, var(--rv-digital-btn-orange-base))
                        calc(var(--rv-digital-btn-orange-opacity, 1) * 100%),
                    transparent
                ) 55%,
                color-mix(in srgb, var(--rv-digital-btn-orange-base) calc(var(--rv-digital-btn-orange-opacity, 1) * 100%), transparent) 100%
            );
            color: var(--rv-digital-btn-orange-label);
            box-shadow:
                0 2px 0 color-mix(in srgb, var(--rv-digital-btn-orange-base) 85%, black),
                inset 0 1px 0 color-mix(in srgb, var(--rv-digital-btn-orange-top) 35%, white 15%);
            padding: clamp(1px, 0.35cqw, 4px) clamp(2px, 0.5cqw, 5px);
            overflow: hidden;
        }
        #radio-visual-root .radio-visual-btn-grid.radio-visual-digital-orange-btns .radio-visual-btn .radio-visual-btn-label {
            display: block;
            width: 100%;
            max-height: 100%;
            font-family: var(--rv-digital-btn-orange-font, var(--rv-digital-ui-font)) !important;
            opacity: var(--rv-digital-btn-orange-text-opacity, 1);
            color: var(--rv-digital-btn-orange-label);
            font-weight: 800;
            letter-spacing: 0.02em;
            line-height: 1;
            text-align: center;
            text-transform: uppercase;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: clip;
            text-shadow:
                0 0 6px color-mix(in srgb, var(--rv-digital-btn-orange-label) 95%, transparent),
                0 0 14px color-mix(in srgb, var(--rv-digital-btn-orange-label) 55%, transparent);
        }
        #radio-visual-root .radio-visual-btn-grid.radio-visual-digital-orange-btns .radio-visual-btn[data-rv-orange-embed="logofx"] .radio-visual-btn-label {
            text-transform: none;
        }
        #radio-visual-root .radio-visual-btn-grid.radio-visual-digital-orange-btns .radio-visual-btn.is-active .radio-visual-btn-label {
            color: color-mix(
                in srgb,
                var(--rv-digital-btn-orange-active) calc(var(--rv-digital-btn-orange-accent-opacity, 1) * 100%),
                var(--rv-digital-btn-orange-label)
            );
            text-shadow:
                0 0 6px color-mix(
                    in srgb,
                    var(--rv-digital-btn-orange-active) calc(95% * var(--rv-digital-btn-orange-accent-opacity, 1)),
                    transparent
                ),
                0 0 14px color-mix(
                    in srgb,
                    var(--rv-digital-btn-orange-active) calc(60% * var(--rv-digital-btn-orange-accent-opacity, 1)),
                    transparent
                );
        }
        #radio-visual-root .radio-visual-btn-grid.radio-visual-digital-orange-btns .radio-visual-btn.is-active {
            border-color: color-mix(
                in srgb,
                color-mix(in srgb, var(--rv-digital-btn-orange-active) 65%, white 20%)
                    calc(var(--rv-digital-btn-orange-accent-opacity, 1) * 100%),
                color-mix(in srgb, var(--rv-digital-btn-orange-top) 55%, white 20%)
            );
            box-shadow: 0 0 14px color-mix(
                in srgb,
                var(--rv-digital-btn-orange-active) calc(45% * var(--rv-digital-btn-orange-accent-opacity, 1)),
                transparent
            );
        }
        #radio-visual-root .radio-visual-btn-grid.radio-visual-digital-orange-btns .radio-visual-btn:hover {
            filter: brightness(1.15);
            border-color: color-mix(
                in srgb,
                color-mix(in srgb, var(--rv-digital-btn-orange-top) 65%, white 25%)
                    calc(var(--rv-digital-btn-orange-border-opacity, 1) * 100%),
                transparent
            );
        }
        #radio-visual-root .radio-visual-digital-center-pane.is-active {
            display: flex;
        }
        /* Spectrum HUD toggle: hide central dash only; side spectrum flowers stay visible */
        #radio-visual-root .radio-visual-digital-center-pane.is-spectrum-hud-hidden .radio-visual-digital-dash-stack,
        #radio-visual-root .radio-visual-digital-dash-stack.is-spectrum-hud-hidden {
            display: none !important;
        }
        #radio-visual-root .radio-visual-digital-center-pane.is-spectrum-hud-hidden .radio-visual-digital-spectrum-row {
            justify-content: center;
            align-items: center;
            gap: clamp(12px, 3vw, 40px);
        }
        #radio-visual-root .radio-visual-digital-center-pane.is-spectrum-hud-hidden .radio-visual-digital-spectrum-side {
            flex: 0 0 auto;
            height: 100%;
            width: auto;
            max-width: calc(50% - 20px);
            aspect-ratio: 1;
            align-self: center;
        }
        /* Third Spectrum tap: hide side flowers (centre dash already hidden in focus/blank). */
        #radio-visual-root .radio-visual-digital-center-pane.is-spectrum-sides-hidden .radio-visual-digital-spectrum-side {
            display: none !important;
        }
        #radio-visual-root .radio-visual-digital-center-pane.is-spectrum-sides-hidden .radio-visual-digital-spectrum-row {
            visibility: hidden;
            pointer-events: none;
        }
        #radio-visual-root .radio-visual-digital-spectrum-side .radio-visual-digital-spectrum-canvas {
            position: absolute;
            inset: 0;
            width: 100%;
            height: 100%;
        }
        #radio-visual-root .radio-visual-digital-spectrum-canvas {
            width: 100%;
            height: 100%;
            display: block;
            background: transparent;
        }
        #radio-visual-root .radio-visual-digital-vol-step {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 12px;
            margin: 8px 0 12px;
        }
        #radio-visual-root .radio-visual-digital-vol-step-label {
            font-size: 11px;
            font-weight: 700;
            letter-spacing: 0.2em;
            color: #5ec;
            min-width: 2.5em;
        }
        #radio-visual-root .radio-visual-digital-vol-readout {
            font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
            font-size: clamp(1rem, 3vw, 1.25rem);
            font-weight: 700;
            color: #9ff;
            min-width: 3.5em;
            text-align: center;
            text-shadow: 0 0 10px rgba(0, 255, 200, 0.35);
        }
        #radio-visual-root .radio-visual-digital-step-btn {
            min-width: 44px;
            padding: 10px 14px;
            font-size: 1.25rem;
            line-height: 1;
        }
        /* Digital toolbar blue theme (overrides default brown .radio-visual-btn). */
        #radio-visual-root .radio-visual-digital-toolbar .radio-visual-btn {
            border-color: color-mix(
                in srgb,
                var(--rv-digital-btn-blue-accent) calc(var(--rv-digital-btn-blue-border-opacity, 1) * var(--rv-digital-btn-blue-accent-opacity, 1) * 40%),
                transparent
            );
            background: linear-gradient(
                180deg,
                color-mix(in srgb, var(--rv-digital-btn-blue-top) calc(var(--rv-digital-btn-blue-opacity, 1) * 100%), transparent),
                color-mix(in srgb, var(--rv-digital-btn-blue-base) calc(var(--rv-digital-btn-blue-opacity, 1) * 100%), transparent)
            );
            color: var(--rv-digital-btn-blue-label);
            box-shadow:
                0 2px 0 color-mix(in srgb, var(--rv-digital-btn-blue-base) 90%, black),
                0 4px 12px color-mix(in srgb, var(--rv-digital-btn-blue-base) 40%, transparent);
        }
        #radio-visual-root .radio-visual-digital-toolbar-text-btn.is-active,
        #radio-visual-root .radio-visual-digital-toolbar > .radio-visual-btn.is-active,
        #radio-visual-root .radio-visual-digital-station-row .radio-visual-btn.is-active {
            color: color-mix(
                in srgb,
                var(--rv-digital-btn-blue-accent) calc(25% * var(--rv-digital-btn-blue-accent-opacity, 1)),
                white 75%
            );
            background: color-mix(
                in srgb,
                var(--rv-digital-btn-blue-accent) calc(42% * var(--rv-digital-btn-blue-accent-opacity, 1)),
                transparent
            );
            border-color: color-mix(
                in srgb,
                color-mix(in srgb, var(--rv-digital-btn-blue-accent) 95%, white 5%)
                    calc(var(--rv-digital-btn-blue-border-opacity, 1) * var(--rv-digital-btn-blue-accent-opacity, 1) * 100%),
                transparent
            );
            box-shadow:
                0 0 16px color-mix(
                    in srgb,
                    var(--rv-digital-btn-blue-accent) calc(65% * var(--rv-digital-btn-blue-accent-opacity, 1)),
                    transparent
                ),
                inset 0 0 20px color-mix(
                    in srgb,
                    var(--rv-digital-btn-blue-accent) calc(28% * var(--rv-digital-btn-blue-accent-opacity, 1)),
                    transparent
                );
            text-shadow: 0 0 12px color-mix(
                in srgb,
                var(--rv-digital-btn-blue-accent) calc(70% * var(--rv-digital-btn-blue-accent-opacity, 1)),
                transparent
            );
        }
        #radio-visual-root .radio-visual-digital-toolbar-text-btn.is-active .radio-visual-btn-label,
        #radio-visual-root .radio-visual-digital-toolbar > .radio-visual-btn.is-active .radio-visual-btn-label {
            color: var(--rv-digital-btn-blue-active);
            text-shadow:
                0 0 6px color-mix(in srgb, var(--rv-digital-btn-blue-active) 95%, transparent),
                0 0 14px color-mix(in srgb, var(--rv-digital-btn-blue-active) 55%, transparent);
        }
        #radio-visual-root .radio-visual-digital-toolbar {
            display: flex;
            flex-wrap: nowrap;
            align-items: center;
            gap: clamp(1px, 0.31cqw, 3px);
            width: 100%;
            min-width: 0;
            margin: clamp(4px, 0.52cqw, 6px) 0 0;
            padding-bottom: calc(
                var(--rv-row-divider-spacing, 3px) + var(--rv-row-divider-height, 2px) + var(--rv-row-divider-spacing, 3px)
            );
            border-bottom: none;
            position: relative;
            overflow: visible;
            box-sizing: border-box;
            --rv-row-divider-height: var(--rv-digital-toolbar-divider-height, 2px);
            --rv-row-divider-spacing: var(--rv-digital-toolbar-divider-spacing, 3px);
            --rv-row-divider-color: var(--rv-digital-toolbar-divider-color, #00dcff);
            --rv-row-divider-glow: var(--rv-digital-toolbar-divider-glow, 0);
        }
        /* Dividers between button rows (blue→purple on toolbar, purple→orange on feature row). */
        @keyframes rv-toolbar-divider-pulse {
            0%, 100% { opacity: 0.45; }
            50% { opacity: 1; }
        }
        @keyframes rv-toolbar-divider-shimmer {
            0% { background-position: 200% 50%; }
            100% { background-position: -200% 50%; }
        }
        @keyframes rv-toolbar-divider-scan {
            0% { background-position: -120% 50%; }
            100% { background-position: 220% 50%; }
        }
        @keyframes rv-toolbar-divider-wave {
            0%, 100% { opacity: 0.55; }
            25% { opacity: 0.95; }
            50% { opacity: 0.65; }
            75% { opacity: 1; }
        }
        #radio-visual-root .radio-visual-digital-toolbar::after,
        #radio-visual-root .radio-visual-btn-grid.radio-visual-digital-feature-btns::after {
            content: '';
            position: absolute;
            left: 0;
            right: 0;
            bottom: var(--rv-row-divider-spacing, 3px);
            height: var(--rv-row-divider-height, 2px);
            pointer-events: none;
            box-sizing: border-box;
            --rv-row-divider-glow-a: calc(var(--rv-row-divider-glow, 0) * 0.85);
            --rv-row-divider-glow-b: calc(var(--rv-row-divider-glow, 0) * 0.45);
            filter:
                drop-shadow(0 0 calc(6px * var(--rv-row-divider-glow-a)) color-mix(in srgb, var(--rv-row-divider-color) 80%, transparent))
                drop-shadow(0 0 calc(14px * var(--rv-row-divider-glow-b)) color-mix(in srgb, var(--rv-row-divider-color) 55%, transparent));
        }
        #radio-visual-root:not([data-rv-toolbar-divider-style]) .radio-visual-digital-toolbar::after,
        #radio-visual-root[data-rv-toolbar-divider-style="groove"] .radio-visual-digital-toolbar::after,
        #radio-visual-root:not([data-rv-feature-divider-style]) .radio-visual-btn-grid.radio-visual-digital-feature-btns::after,
        #radio-visual-root[data-rv-feature-divider-style="groove"] .radio-visual-btn-grid.radio-visual-digital-feature-btns::after {
            background: linear-gradient(
                180deg,
                rgba(0, 0, 0, 0.72) 0%,
                color-mix(in srgb, var(--rv-row-divider-color) 55%, transparent) 42%,
                color-mix(in srgb, var(--rv-row-divider-color) 38%, transparent) 58%,
                color-mix(in srgb, var(--rv-row-divider-color) 22%, transparent) 100%
            );
            box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.45);
        }
        #radio-visual-root[data-rv-toolbar-divider-style="solid"] .radio-visual-digital-toolbar::after,
        #radio-visual-root[data-rv-feature-divider-style="solid"] .radio-visual-btn-grid.radio-visual-digital-feature-btns::after {
            background: var(--rv-row-divider-color);
            box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.35);
        }
        #radio-visual-root[data-rv-toolbar-divider-style="pulse"] .radio-visual-digital-toolbar::after,
        #radio-visual-root[data-rv-feature-divider-style="pulse"] .radio-visual-btn-grid.radio-visual-digital-feature-btns::after {
            background: var(--rv-row-divider-color);
            animation: rv-toolbar-divider-pulse 2.4s ease-in-out infinite;
        }
        #radio-visual-root[data-rv-toolbar-divider-style="shimmer"] .radio-visual-digital-toolbar::after,
        #radio-visual-root[data-rv-feature-divider-style="shimmer"] .radio-visual-btn-grid.radio-visual-digital-feature-btns::after {
            background: linear-gradient(
                90deg,
                color-mix(in srgb, var(--rv-row-divider-color) 18%, transparent) 0%,
                color-mix(in srgb, var(--rv-row-divider-color) 95%, white 8%) 45%,
                color-mix(in srgb, var(--rv-row-divider-color) 18%, transparent) 90%
            );
            background-size: 220% 100%;
            animation: rv-toolbar-divider-shimmer 2.8s linear infinite;
        }
        #radio-visual-root[data-rv-toolbar-divider-style="scan"] .radio-visual-digital-toolbar::after,
        #radio-visual-root[data-rv-feature-divider-style="scan"] .radio-visual-btn-grid.radio-visual-digital-feature-btns::after {
            background: linear-gradient(
                90deg,
                transparent 0%,
                transparent 42%,
                color-mix(in srgb, var(--rv-row-divider-color) 35%, transparent) 46%,
                color-mix(in srgb, var(--rv-row-divider-color) 100%, white 12%) 50%,
                color-mix(in srgb, var(--rv-row-divider-color) 35%, transparent) 54%,
                transparent 58%,
                transparent 100%
            );
            background-size: 240% 100%;
            animation: rv-toolbar-divider-scan 2.2s linear infinite;
        }
        #radio-visual-root[data-rv-toolbar-divider-style="rainbow"] .radio-visual-digital-toolbar::after,
        #radio-visual-root[data-rv-feature-divider-style="rainbow"] .radio-visual-btn-grid.radio-visual-digital-feature-btns::after {
            background: linear-gradient(
                90deg,
                #ff4d4d,
                #ffb347,
                #ffe747,
                #5cff9e,
                #00dcff,
                #c86bff,
                #ff5ce8,
                #ff4d4d
            );
            background-size: 300% 100%;
            animation: rv-toolbar-divider-shimmer 3.5s linear infinite;
        }
        #radio-visual-root[data-rv-toolbar-divider-style="wave"] .radio-visual-digital-toolbar::after,
        #radio-visual-root[data-rv-feature-divider-style="wave"] .radio-visual-btn-grid.radio-visual-digital-feature-btns::after {
            background: linear-gradient(
                90deg,
                color-mix(in srgb, var(--rv-row-divider-color) 35%, transparent) 0%,
                color-mix(in srgb, var(--rv-row-divider-color) 100%, white 10%) 25%,
                color-mix(in srgb, var(--rv-row-divider-color) 40%, transparent) 50%,
                color-mix(in srgb, var(--rv-row-divider-color) 100%, white 10%) 75%,
                color-mix(in srgb, var(--rv-row-divider-color) 35%, transparent) 100%
            );
            background-size: 200% 100%;
            animation: rv-toolbar-divider-shimmer 3.6s ease-in-out infinite, rv-toolbar-divider-wave 3.6s ease-in-out infinite;
        }
        /* Centre strip: Spectrum · A> · Fade · vol · Mix · B> · VIDEO (original order). */
        #radio-visual-root .radio-visual-digital-toolbar-main {
            display: grid;
            grid-template-columns:
                minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.15fr)
                minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr);
            gap: clamp(1px, 0.31cqw, 3px);
            flex: 1 1 0;
            min-width: 0;
            align-self: center;
            align-items: center;
        }
        #radio-visual-root .radio-visual-digital-toolbar-text-btn {
            container-type: size;
            container-name: rv-toolbar-btn;
            display: flex;
            align-items: center;
            justify-content: center;
            align-self: center;
            justify-self: stretch;
            box-sizing: border-box;
            width: 100%;
            height: clamp(20px, 4.8cqw, 30px);
            max-height: clamp(20px, 4.8cqw, 30px);
            min-width: 0;
            min-height: 0;
            aspect-ratio: auto;
            padding: clamp(1px, 0.35cqw, 4px) clamp(2px, 0.5cqw, 5px);
            letter-spacing: 0.02em;
            line-height: 1;
            overflow: hidden;
        }
        #radio-visual-root .radio-visual-digital-toolbar-main > .radio-visual-digital-toolbar-vol {
            width: 100%;
            min-width: 0;
        }
        #radio-visual-root .radio-visual-digital-toolbar-text-btn .radio-visual-btn-label,
        #radio-visual-root .radio-visual-digital-toolbar-vol .radio-visual-digital-step-btn .radio-visual-btn-label {
            font-family: var(--rv-digital-btn-blue-font, var(--rv-digital-ui-font)) !important;
            display: block;
            width: 100%;
            opacity: var(--rv-digital-btn-blue-text-opacity, 1);
            color: var(--rv-digital-btn-blue-label);
            font-weight: 800;
            letter-spacing: 0.02em;
            line-height: 1;
            text-align: center;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: clip;
            text-shadow:
                0 0 6px color-mix(in srgb, var(--rv-digital-btn-blue-label) 95%, transparent),
                0 0 14px color-mix(in srgb, var(--rv-digital-btn-blue-label) 55%, transparent);
        }
        #radio-visual-root .radio-visual-digital-toolbar-text-btn .radio-visual-btn-label {
            text-transform: uppercase;
        }
        #radio-visual-root .radio-visual-digital-toolbar-text-btn[data-rv-digital="ai"] .radio-visual-btn-label {
            text-transform: none;
        }
        #radio-visual-root .radio-visual-digital-toolbar-vol .radio-visual-btn {
            display: flex;
            align-items: center;
            justify-content: center;
        }
        #radio-visual-root .radio-visual-digital-toolbar-vol {
            display: flex;
            flex: none;
            flex-flow: row nowrap;
            flex-direction: row;
            min-width: 0;
            align-items: center;
            justify-content: center;
            gap: clamp(1px, 0.21cqw, 2px);
            overflow: hidden;
            box-sizing: border-box;
            height: clamp(20px, 4.8cqw, 30px);
            max-height: clamp(20px, 4.8cqw, 30px);
            align-self: center;
        }
        #radio-visual-root .radio-visual-digital-toolbar > .radio-visual-digital-toolbar-icon-btn {
            flex: 0 0 auto;
            align-self: center;
            box-sizing: border-box;
            min-width: 0;
            width: clamp(20px, 4.8cqw, 30px);
            height: clamp(20px, 4.8cqw, 30px);
            max-width: clamp(20px, 4.8cqw, 30px);
            max-height: clamp(20px, 4.8cqw, 30px);
            aspect-ratio: 1;
            padding: clamp(1px, 0.3cqw, 3px);
            font-size: clamp(8px, 1.45cqw, 12px);
            line-height: 1;
        }
        #radio-visual-root .radio-visual-digital-toolbar-vol .radio-visual-digital-center-slot {
            flex: 1 1 0;
            order: 1;
            min-width: 0;
            height: 100%;
            max-height: clamp(20px, 4.8cqw, 30px);
            display: flex;
            align-items: center;
            justify-content: center;
            position: relative;
            overflow: hidden;
            container-type: inline-size;
            container-name: rv-toolbar-center;
        }
        #radio-visual-root .radio-visual-digital-toolbar-center[data-center-mode="crossfade"] .radio-visual-digital-center-slot {
            cursor: pointer;
        }
        #radio-visual-root .radio-visual-digital-toolbar-vol .radio-visual-digital-vol-readout,
        #radio-visual-root .radio-visual-digital-toolbar-vol .radio-visual-digital-center-readout {
            flex: 1 1 auto;
            width: 100%;
            min-width: 0;
            height: 100%;
            max-height: 100%;
            display: flex;
            align-items: center;
            justify-content: center;
            font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
            font-size: clamp(7px, 1.35cqw, 13px);
            font-weight: 700;
            line-height: 1;
            padding: 0 clamp(1px, 0.2cqw, 2px);
            text-align: center;
            color: #9ff;
            text-shadow: 0 0 10px rgba(0, 255, 200, 0.45);
            overflow: hidden;
            text-overflow: clip;
            white-space: nowrap;
        }
        #radio-visual-root .radio-visual-digital-center-readout {
            border: none;
            background: transparent;
            cursor: pointer;
            box-shadow: none;
            appearance: none;
            -webkit-appearance: none;
        }
        #radio-visual-root .radio-visual-digital-center-readout:hover {
            color: #c5ffff;
            text-shadow: 0 0 12px rgba(0, 255, 220, 0.65);
        }
        #radio-visual-root .radio-visual-digital-center-readout .radio-visual-center-readout-text {
            display: block;
            width: 100%;
            max-width: 100%;
            overflow: hidden;
            text-overflow: clip;
            white-space: nowrap;
            line-height: 1;
            transition: color 0.55s ease, text-shadow 0.55s ease, opacity 0.45s ease;
        }
        #radio-visual-root .radio-visual-digital-toolbar-center[data-center-mode="clock"] .radio-visual-center-readout-text {
            font-family: var(--rv-digital-clock-font) !important;
            font-variant-numeric: tabular-nums;
            letter-spacing: clamp(0.01em, 0.18cqw, 0.05em);
            color: var(--rv-digital-clock-color);
            opacity: var(--rv-digital-clock-opacity, 1);
            text-shadow:
                0 0 12px rgba(0, 0, 0, 0.9),
                0 0 10px color-mix(in srgb, var(--rv-digital-clock-color) 35%, transparent);
        }
        @container rv-toolbar-center (max-width: 72px) {
            #radio-visual-root .radio-visual-digital-toolbar-center[data-center-mode="clock"] .radio-visual-center-readout-text,
            #radio-visual-root .radio-visual-digital-toolbar-center[data-center-mode="volume"] .radio-visual-digital-center-readout[data-volume-peek="0"] .radio-visual-center-readout-text {
                letter-spacing: 0.01em;
            }
        }
        #radio-visual-root .radio-visual-digital-toolbar-center[data-center-mode="volume"] .radio-visual-digital-center-readout[data-volume-peek="0"] .radio-visual-center-readout-text {
            font-family: var(--rv-digital-clock-font) !important;
            font-variant-numeric: tabular-nums;
            letter-spacing: clamp(0.02em, 0.25cqw, 0.06em);
            color: var(--rv-digital-clock-color);
            opacity: var(--rv-digital-clock-opacity, 1);
            text-shadow:
                0 0 12px rgba(0, 0, 0, 0.9),
                0 0 10px color-mix(in srgb, var(--rv-digital-clock-color) 35%, transparent);
        }
        #radio-visual-root .radio-visual-digital-toolbar-center[data-center-mode="crossfade"] .radio-visual-digital-center-readout {
            display: none;
        }
        #radio-visual-root .radio-visual-digital-toolbar-xfade-wrap {
            container-type: size;
            container-name: rv-toolbar-xfade;
            display: none;
            position: relative;
            flex: 1 1 auto;
            width: 100%;
            min-width: 0;
            height: 100%;
            max-height: 100%;
            align-items: center;
            justify-content: center;
            --cross-x: 0;
            --cross-deck-a: rgba(208, 18, 18, 0.65);
            --cross-deck-b: rgba(30, 26, 77, 0.65);
            --xfade-thumb: clamp(10px, min(34cqw, 78cqh), 18px);
            --cross-thumb-half: calc(var(--xfade-thumb) / 2);
            --xfade-rail-h: clamp(3px, min(22cqw, 34cqh), 5px);
            min-height: var(--xfade-thumb);
        }
        #radio-visual-root .radio-visual-digital-toolbar-center[data-center-mode="crossfade"] .radio-visual-digital-toolbar-xfade-wrap {
            display: flex;
        }
        #radio-visual-root .radio-visual-digital-toolbar-xfade-cycle-hit {
            position: absolute;
            inset: 0;
            z-index: 0;
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;
            border: none;
            background: transparent;
            cursor: pointer;
            appearance: none;
            -webkit-appearance: none;
            box-shadow: none;
        }
        #radio-visual-root .radio-visual-digital-toolbar-xfade-wrap::before {
            content: '';
            position: absolute;
            left: var(--cross-thumb-half);
            right: var(--cross-thumb-half);
            top: 50%;
            transform: translateY(-50%);
            height: var(--xfade-rail-h);
            border-radius: calc(var(--xfade-rail-h) / 2);
            border: 1px solid rgba(212, 175, 55, 0.85);
            box-sizing: border-box;
            background: linear-gradient(
                to right,
                var(--cross-deck-b) 0%,
                var(--cross-deck-b) calc(var(--cross-x) * 100%),
                var(--cross-deck-a) calc(var(--cross-x) * 100%),
                var(--cross-deck-a) 100%
            );
            box-shadow: inset 0 0 4px rgba(0, 0, 0, 0.45), 0 0 8px rgba(212, 175, 55, 0.22);
            pointer-events: none;
            z-index: 1;
        }
        #radio-visual-root .radio-visual-digital-toolbar-xfade-range {
            -webkit-appearance: none;
            appearance: none;
            width: 100%;
            min-width: 0;
            height: var(--xfade-rail-h) !important;
            position: relative;
            z-index: 2;
            margin: 0;
            padding: 0;
            background: transparent !important;
            box-shadow: none;
            border: none;
            accent-color: transparent;
            cursor: ew-resize;
            flex: 0 0 auto;
            align-self: center;
        }
        #radio-visual-root .radio-visual-digital-toolbar-xfade-range::-webkit-slider-thumb {
            -webkit-appearance: none !important;
            appearance: none !important;
            width: var(--xfade-thumb) !important;
            height: var(--xfade-thumb) !important;
            background: transparent url('../assets/images/vol.png') center center / 100% 100% no-repeat !important;
            border: none !important;
            border-radius: 50%;
            margin-top: calc((var(--xfade-rail-h) - var(--xfade-thumb)) / 2) !important;
            box-shadow: none !important;
            cursor: ew-resize;
        }
        #radio-visual-root .radio-visual-digital-toolbar-xfade-range::-moz-range-thumb {
            width: var(--xfade-thumb) !important;
            height: var(--xfade-thumb) !important;
            background: transparent url('../assets/images/vol.png') center center / 100% 100% no-repeat !important;
            border: none !important;
            border-radius: 50%;
            box-shadow: none !important;
            cursor: ew-resize;
        }
        #radio-visual-root .radio-visual-digital-toolbar-xfade-range::-moz-range-progress {
            background: transparent !important;
        }
        #radio-visual-root .radio-visual-digital-toolbar-xfade-range::-webkit-slider-runnable-track {
            height: var(--xfade-rail-h);
            background: transparent !important;
            border: none !important;
            border-radius: 0;
            box-shadow: none;
        }
        #radio-visual-root .radio-visual-digital-toolbar-xfade-range::-moz-range-track {
            height: var(--xfade-rail-h);
            background: transparent !important;
            border: none !important;
            border-radius: 0;
            box-shadow: none;
        }
        #radio-visual-root .radio-visual-digital-toolbar-center[data-center-mode="crossfade"] .radio-visual-center-readout-text {
            display: none;
        }
        #radio-visual-root .radio-visual-digital-toolbar-center[data-center-mode="automix"] .radio-visual-center-readout-text {
            font-family: 'Orbitron', 'Share Tech Mono', ui-monospace, monospace;
            font-variant-numeric: tabular-nums;
            letter-spacing: clamp(0.03em, 0.3cqw, 0.08em);
            color: #39ff14;
            text-shadow:
                0 0 8px rgba(57, 255, 20, 0.95),
                0 0 18px rgba(57, 255, 20, 0.55);
        }
        #radio-visual-root .radio-visual-digital-toolbar-center[data-center-mode="automix"] .radio-visual-digital-center-readout[data-volume-peek="1"] .radio-visual-center-readout-text {
            font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
            letter-spacing: 0.02em;
            color: #9ff;
            text-shadow: 0 0 10px rgba(0, 255, 200, 0.45);
        }
        #radio-visual-root .radio-visual-digital-toolbar-center[data-center-mode="remaining"] .radio-visual-center-readout-text {
            font-family: 'Orbitron', 'Share Tech Mono', ui-monospace, monospace;
            font-variant-numeric: tabular-nums;
            letter-spacing: clamp(0.03em, 0.3cqw, 0.08em);
            color: #8ef;
            text-shadow:
                0 0 10px rgba(0, 220, 255, 0.55),
                0 0 18px rgba(120, 210, 255, 0.35);
        }
        #radio-visual-root .radio-visual-digital-toolbar-center[data-center-mode="clock"] .radio-visual-digital-step-btn:first-of-type .radio-visual-btn-label {
            letter-spacing: -0.06em;
        }
        #radio-visual-root .radio-visual-digital-toolbar-center[data-center-mode="clock"] .radio-visual-digital-step-btn:last-of-type .radio-visual-btn-label {
            letter-spacing: -0.06em;
        }
        #radio-visual-root .radio-visual-digital-toolbar-center[data-center-mode="crossfade"] .radio-visual-digital-step-btn:first-of-type .radio-visual-btn-label {
            color: #FF0B55;
            text-shadow:
                0 0 6px color-mix(in srgb, #FF0B55 95%, transparent),
                0 0 14px color-mix(in srgb, #FF0B55 55%, transparent);
        }
        #radio-visual-root .radio-visual-digital-toolbar-center[data-center-mode="crossfade"] .radio-visual-digital-step-btn:last-of-type .radio-visual-btn-label {
            color: #5800FF;
            text-shadow:
                0 0 6px color-mix(in srgb, #5800FF 95%, transparent),
                0 0 14px color-mix(in srgb, #5800FF 55%, transparent);
        }
        #radio-visual-root .radio-visual-digital-toolbar-vol .radio-visual-digital-step-btn {
            container-type: size;
            container-name: rv-toolbar-vol-btn;
            flex: 0 0 auto;
            order: 0;
            box-sizing: border-box;
            min-width: 0;
            width: clamp(20px, 4.8cqw, 30px);
            height: clamp(20px, 4.8cqw, 30px);
            max-width: clamp(20px, 4.8cqw, 30px);
            max-height: clamp(20px, 4.8cqw, 30px);
            aspect-ratio: 1;
            padding: clamp(1px, 0.3cqw, 3px);
            font-size: clamp(9px, 1.55cqw, 13px);
            line-height: 1;
            overflow: hidden;
        }
        #radio-visual-root .radio-visual-digital-toolbar-vol .radio-visual-digital-step-btn:last-of-type {
            order: 2;
        }
        #radio-visual-root .radio-visual-digital-toolbar-vol .radio-visual-digital-step-btn .radio-visual-btn-label {
            text-transform: none;
            letter-spacing: 0;
        }
        @media (max-width: 520px) {
            #radio-visual-root .radio-visual-btn-grid:not(.radio-visual-analog-actions):not(.radio-visual-digital-feature-btns):not(.radio-visual-digital-orange-btns) {
                grid-template-columns: repeat(2, 1fr);
            }
        }

        /* Page fullscreen (class toggled from JS + html:fullscreen for fixed positioning). */
        #radio-visual-root.radio-visual-root--digital-fs,
        html:fullscreen #radio-visual-root.radio-visual-root--digital-active,
        html:fullscreen #radio-visual-root.radio-visual-root--digital-only,
        html:fullscreen #radio-visual-root:has(.radio-visual-skin--digital.is-active),
        html:-webkit-full-screen #radio-visual-root.radio-visual-root--digital-active,
        html:-webkit-full-screen #radio-visual-root.radio-visual-root--digital-only,
        html:-webkit-full-screen #radio-visual-root:has(.radio-visual-skin--digital.is-active) {
            --rv-digital-fs-gutter: clamp(8px, 1.8vmin, 24px);
            position: fixed;
            inset: 0;
            width: 100%;
            height: 100%;
            max-width: 100%;
            max-height: 100%;
            padding: var(--rv-digital-fs-gutter);
            overflow: hidden;
            overflow-y: hidden;
            justify-content: center;
            align-items: center;
        }
        #radio-visual-root.radio-visual-root--digital-fs .radio-visual-stage.radio-visual-skin--digital,
        html:fullscreen #radio-visual-root.radio-visual-root--digital-active .radio-visual-stage.radio-visual-skin--digital,
        html:fullscreen #radio-visual-root.radio-visual-root--digital-only .radio-visual-stage.radio-visual-skin--digital,
        html:fullscreen #radio-visual-root:has(.radio-visual-skin--digital.is-active) .radio-visual-stage.radio-visual-skin--digital,
        html:-webkit-full-screen #radio-visual-root.radio-visual-root--digital-active .radio-visual-stage.radio-visual-skin--digital,
        html:-webkit-full-screen #radio-visual-root.radio-visual-root--digital-only .radio-visual-stage.radio-visual-skin--digital,
        html:-webkit-full-screen #radio-visual-root:has(.radio-visual-skin--digital.is-active) .radio-visual-stage.radio-visual-skin--digital {
            flex: 0 0 auto;
            align-self: center;
            width: auto;
            max-width: 100%;
            margin-left: auto;
            margin-right: auto;
            overflow-x: clip;
        }
        #radio-visual-root.radio-visual-root--digital-fs .radio-visual-digital-panel,
        html:fullscreen #radio-visual-root.radio-visual-root--digital-active .radio-visual-digital-panel,
        html:fullscreen #radio-visual-root.radio-visual-root--digital-only .radio-visual-digital-panel,
        html:fullscreen #radio-visual-root:has(.radio-visual-skin--digital.is-active) .radio-visual-digital-panel,
        html:-webkit-full-screen #radio-visual-root.radio-visual-root--digital-active .radio-visual-digital-panel,
        html:-webkit-full-screen #radio-visual-root.radio-visual-root--digital-only .radio-visual-digital-panel,
        html:-webkit-full-screen #radio-visual-root:has(.radio-visual-skin--digital.is-active) .radio-visual-digital-panel {
            width: 100%;
            max-width: 100%;
            min-width: 0;
            overflow-x: clip;
        }
        #radio-visual-root .radio-visual-digital-staging-mount:fullscreen,
        #radio-visual-root .radio-visual-digital-staging-mount:-webkit-full-screen,
        #radio-visual-root .radio-visual-digital-deck-b-mount:fullscreen,
        #radio-visual-root .radio-visual-digital-deck-b-mount:-webkit-full-screen {
            width: 100vw;
            height: 100vh;
            max-width: none;
            max-height: none;
            border-radius: 0;
        }
