/* --- Music-gen loaders: 80 creative variants ---
 *
 * Each variant is a different musical metaphor — instruments, rhythm, waves,
 * DJ gear, notation, production — so users see a rich, unpredictable mix
 * every time a track generates. Grouped by theme but each tuned individually.
 *
 * Structure per variant:
 *   .musicgen-loader.vN { ...composition/base... }
 *   .musicgen-loader.vN::before, ::after, i { ...animated parts... }
 *
 * Shared keyframes at bottom. Accent palette (--accent pink / --accent-2 indigo)
 * stays consistent so the whole family feels like one design language.
 */

.musicgen-loader {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 72px;
    height: 72px;
    pointer-events: none;
    --accent: #ec4899;
    --accent-2: #818cf8;
    --accent-3: #c084fc;
    --accent-4: #22d3ee;
    display: flex;
    align-items: center;
    justify-content: center;
}
@media (min-width: 768px) {
    .musicgen-loader {
        width: 92px;
        height: 92px;
    }
}

/* ====================================================================== */
/* FAMILY 1: Vinyl & tape — spinning physical media (v0-v9 original + v10-v15) */
/* ====================================================================== */

/* v0 — Vinyl record with pink core label */
.musicgen-loader.v0 {
    background: radial-gradient(circle at center,
        #0f172a 0%, #0f172a 30%,
        rgba(129,140,248,0.4) 32%, rgba(236,72,153,0.3) 34%,
        #1e1b4b 36%, #0f172a 100%);
    border-radius: 50%;
    box-shadow: inset 0 0 12px rgba(0,0,0,0.8), 0 0 24px rgba(236,72,153,0.25);
    animation: musicgen-spin 2.5s linear infinite;
}
.musicgen-loader.v0::before {
    content: '';
    position: absolute;
    inset: 42%;
    background: var(--accent);
    border-radius: 50%;
    box-shadow: 0 0 8px rgba(236,72,153,0.6);
}

/* v1 — Equalizer, 5 bars, staggered bounce */
.musicgen-loader.v1 {
    width: 72px; height: 56px;
    background: none; box-shadow: none;
    display: flex; align-items: flex-end; justify-content: space-between; gap: 4px;
}
.musicgen-loader.v1 i {
    display: block; width: 10px;
    background: linear-gradient(to top, var(--accent), var(--accent-2));
    border-radius: 3px;
    animation: musicgen-eq 1s ease-in-out infinite;
}
.musicgen-loader.v1 i:nth-child(1) { animation-delay: 0s; }
.musicgen-loader.v1 i:nth-child(2) { animation-delay: -0.15s; }
.musicgen-loader.v1 i:nth-child(3) { animation-delay: -0.3s; }
.musicgen-loader.v1 i:nth-child(4) { animation-delay: -0.45s; }
.musicgen-loader.v1 i:nth-child(5) { animation-delay: -0.6s; }

/* v2 — Concentric ripples (3 rings) */
.musicgen-loader.v2 { background: none; box-shadow: none; }
.musicgen-loader.v2 i {
    position: absolute; inset: 0;
    border-radius: 50%;
    border: 2px solid var(--accent);
    opacity: 0;
    animation: musicgen-ripple 1.8s ease-out infinite;
}
.musicgen-loader.v2 i:nth-child(2) { animation-delay: 0.6s; border-color: var(--accent-2); }
.musicgen-loader.v2 i:nth-child(3) { animation-delay: 1.2s; border-color: var(--accent-3); }

/* v3 — Waveform pulse (4 stacked bars breathing) */
.musicgen-loader.v3 {
    width: 80px; height: 60px;
    background: none; box-shadow: none;
    display: flex; align-items: center; justify-content: space-between; gap: 6px;
}
.musicgen-loader.v3 i {
    width: 14px; height: 50%;
    background: linear-gradient(180deg, var(--accent-2), var(--accent));
    border-radius: 7px;
    animation: musicgen-pulse 1.2s ease-in-out infinite;
}
.musicgen-loader.v3 i:nth-child(2) { animation-delay: -0.3s; }
.musicgen-loader.v3 i:nth-child(3) { animation-delay: -0.6s; }
.musicgen-loader.v3 i:nth-child(4) { animation-delay: -0.9s; }

/* v4 — Metronome swing */
.musicgen-loader.v4 { background: none; box-shadow: none; }
.musicgen-loader.v4::before {
    content: ''; position: absolute; bottom: 12%; left: 50%;
    width: 4px; height: 70%;
    background: linear-gradient(to top, var(--accent), var(--accent-2));
    border-radius: 2px; transform-origin: bottom center;
    animation: musicgen-swing 1.2s ease-in-out infinite alternate;
    box-shadow: 0 0 8px rgba(236,72,153,0.4);
}
.musicgen-loader.v4::after {
    content: ''; position: absolute; bottom: 5%; left: 50%;
    transform: translateX(-50%);
    width: 40%; height: 6px;
    background: rgba(255,255,255,0.4); border-radius: 3px;
}

/* v5 — Microphone ping */
.musicgen-loader.v5 {
    background: radial-gradient(circle at center, var(--accent) 0%, var(--accent) 30%, transparent 32%);
    box-shadow: none;
    border-radius: 50%;
}
.musicgen-loader.v5::before {
    content: ''; position: absolute; inset: 20%;
    border-radius: 50% 50% 40% 40%;
    background: rgba(255,255,255,0.95);
    clip-path: polygon(30% 10%, 70% 10%, 70% 65%, 50% 80%, 30% 65%);
}
.musicgen-loader.v5 i {
    position: absolute; inset: 0;
    border-radius: 50%;
    border: 2px solid var(--accent);
    animation: musicgen-ripple 1.6s ease-out infinite;
}

/* v6 — Clef rotate (3 concentric rotating arcs) */
.musicgen-loader.v6 {
    background: none; box-shadow: none;
    animation: musicgen-spin 3s linear infinite;
}
.musicgen-loader.v6 i {
    position: absolute; inset: 0;
    border-radius: 50%;
    border: 3px solid transparent;
    border-top-color: var(--accent);
}
.musicgen-loader.v6 i:nth-child(2) { inset: 15%; border-top-color: var(--accent-2); animation: musicgen-spin 2s linear infinite reverse; }
.musicgen-loader.v6 i:nth-child(3) { inset: 30%; border-top-color: var(--accent-3); }

/* v7 — Stave scroll (5 lines sliding) */
.musicgen-loader.v7 {
    width: 80px; height: 60px;
    background: none; box-shadow: none;
    overflow: hidden;
    border-radius: 6px;
}
.musicgen-loader.v7 i {
    position: absolute; left: -100%;
    width: 200%; height: 2px;
    background: linear-gradient(90deg, transparent, var(--accent), var(--accent-2), transparent);
    animation: musicgen-stave 2.5s linear infinite;
}
.musicgen-loader.v7 i:nth-child(1) { top: 14%; animation-delay: 0s; }
.musicgen-loader.v7 i:nth-child(2) { top: 30%; animation-delay: -0.5s; }
.musicgen-loader.v7 i:nth-child(3) { top: 46%; animation-delay: -1s; }
.musicgen-loader.v7 i:nth-child(4) { top: 62%; animation-delay: -1.5s; }
.musicgen-loader.v7 i:nth-child(5) { top: 78%; animation-delay: -2s; }

/* v8 — Tuning fork vibrating */
.musicgen-loader.v8 { background: none; box-shadow: none; }
.musicgen-loader.v8::before, .musicgen-loader.v8::after {
    content: ''; position: absolute; top: 20%;
    width: 6px; height: 60%;
    background: linear-gradient(to bottom, var(--accent), var(--accent-2));
    border-radius: 3px;
    animation: musicgen-vibrate 0.15s linear infinite;
}
.musicgen-loader.v8::before { left: 32%; }
.musicgen-loader.v8::after  { right: 32%; animation-delay: -0.075s; }

/* v9 — Cassette reel (two circles rotating) */
.musicgen-loader.v9 {
    background: linear-gradient(135deg, rgba(15,23,42,0.7), rgba(30,27,75,0.7));
    border-radius: 12px;
    box-shadow: inset 0 0 8px rgba(0,0,0,0.5);
}
.musicgen-loader.v9 i {
    position: absolute; top: 50%;
    width: 30%; height: 30%;
    border-radius: 50%;
    background: radial-gradient(circle, var(--accent) 0%, var(--accent) 25%, rgba(236,72,153,0.25) 30%, transparent 50%);
    animation: musicgen-reel-spin 1.5s linear infinite;
}
.musicgen-loader.v9 i:nth-child(1) { left: 15%; }
.musicgen-loader.v9 i:nth-child(2) { right: 15%; animation-duration: 1.2s; }

/* v10 — Reel-to-reel tape (two larger rings + tape path) */
.musicgen-loader.v10 {
    background: linear-gradient(135deg, rgba(15,23,42,0.5), rgba(88,28,135,0.35));
    border-radius: 10px;
}
.musicgen-loader.v10::before, .musicgen-loader.v10::after {
    content: ''; position: absolute; top: 20%;
    width: 30%; height: 60%;
    border-radius: 50%;
    border: 3px solid var(--accent);
    animation: musicgen-spin 2s linear infinite;
}
.musicgen-loader.v10::before { left: 10%; }
.musicgen-loader.v10::after  { right: 10%; animation-duration: 1.8s; }

/* v11 — 45rpm single with spindle hole */
.musicgen-loader.v11 {
    background: radial-gradient(circle at center,
        #0f172a 0%, #0f172a 20%,
        var(--accent-3) 22%, var(--accent-3) 28%,
        #1e1b4b 30%, #0f172a 70%, #1e1b4b 100%);
    border-radius: 50%;
    animation: musicgen-spin 0.85s linear infinite;
    box-shadow: 0 0 20px rgba(192,132,252,0.3);
}
.musicgen-loader.v11::before {
    content: ''; position: absolute; inset: 46%;
    background: #0f172a;
    border-radius: 50%;
    border: 1px solid rgba(255,255,255,0.3);
}

/* v12 — Double turntable (DJ setup side-by-side) */
.musicgen-loader.v12 {
    background: none;
    width: 96px; height: 56px;
    display: flex; justify-content: space-between; align-items: center;
}
.musicgen-loader.v12::before, .musicgen-loader.v12::after {
    content: ''; position: relative;
    width: 46%; height: 100%;
    border-radius: 50%;
    background: radial-gradient(circle, #0f172a 0%, #0f172a 50%, var(--accent) 52%, var(--accent) 58%, #1e1b4b 60%);
    animation: musicgen-spin 1.5s linear infinite;
}
.musicgen-loader.v12::after {
    animation-duration: 2s;
    animation-direction: reverse;
    background: radial-gradient(circle, #0f172a 0%, #0f172a 50%, var(--accent-2) 52%, var(--accent-2) 58%, #1e1b4b 60%);
}

/* v13 — Vinyl with pickup arm (rotating record + diagonal arm) */
.musicgen-loader.v13 {
    background: radial-gradient(circle at center, #0f172a 0%, #0f172a 30%, rgba(236,72,153,0.35) 32%, #1e1b4b 35%, #0f172a 100%);
    border-radius: 50%;
    animation: musicgen-spin 2s linear infinite;
}
.musicgen-loader.v13::before {
    content: ''; position: absolute;
    top: 10%; right: 10%;
    width: 80%; height: 4px;
    background: linear-gradient(90deg, transparent, var(--accent-2));
    transform: rotate(-35deg);
    transform-origin: right center;
    border-radius: 2px;
    animation: musicgen-arm-sweep 3s ease-in-out infinite alternate;
}

/* v14 — CD with rainbow refraction */
.musicgen-loader.v14 {
    background: conic-gradient(from 0deg, #ec4899, #c084fc, #818cf8, #22d3ee, #a7f3d0, #fef08a, #fb7185, #ec4899);
    border-radius: 50%;
    animation: musicgen-spin 2.5s linear infinite;
    box-shadow: inset 0 0 12px rgba(0,0,0,0.8);
}
.musicgen-loader.v14::before {
    content: ''; position: absolute; inset: 40%;
    background: #0f172a;
    border-radius: 50%;
    border: 2px solid rgba(255,255,255,0.2);
}

/* v15 — 3-bar signal tower (ascending strength) */
.musicgen-loader.v15 {
    width: 60px; height: 72px;
    background: none; box-shadow: none;
    display: flex; align-items: flex-end; justify-content: center; gap: 6px;
}
.musicgen-loader.v15 i {
    display: block; width: 14px;
    border-radius: 3px 3px 0 0;
    background: linear-gradient(to top, var(--accent), var(--accent-2));
    animation: musicgen-signal 1.4s ease-in-out infinite;
}
.musicgen-loader.v15 i:nth-child(1) { height: 30%; animation-delay: 0s; }
.musicgen-loader.v15 i:nth-child(2) { height: 60%; animation-delay: -0.3s; }
.musicgen-loader.v15 i:nth-child(3) { height: 90%; animation-delay: -0.6s; }

/* ====================================================================== */
/* FAMILY 2: Equalizer & Bars (v16-v23) */
/* ====================================================================== */

/* v16 — 7-bar equalizer, steep gradient */
.musicgen-loader.v16 {
    width: 84px; height: 56px; background: none; box-shadow: none;
    display: flex; align-items: flex-end; justify-content: space-between; gap: 2px;
}
.musicgen-loader.v16 i {
    width: 9px; background: linear-gradient(to top, var(--accent), var(--accent-3), var(--accent-2));
    border-radius: 2px;
    animation: musicgen-eq 0.9s ease-in-out infinite;
}
.musicgen-loader.v16 i:nth-child(1) { animation-delay: -0.1s; }
.musicgen-loader.v16 i:nth-child(2) { animation-delay: -0.25s; }
.musicgen-loader.v16 i:nth-child(3) { animation-delay: -0.4s; }
.musicgen-loader.v16 i:nth-child(4) { animation-delay: -0.55s; }
.musicgen-loader.v16 i:nth-child(5) { animation-delay: -0.7s; }
.musicgen-loader.v16 i:nth-child(6) { animation-delay: -0.85s; }
.musicgen-loader.v16 i:nth-child(7) { animation-delay: -1s; }

/* v17 — Horizontal EQ (bars grow from center outward) */
.musicgen-loader.v17 {
    width: 80px; height: 72px; background: none; box-shadow: none;
    display: flex; flex-direction: column; justify-content: space-between; gap: 3px;
}
.musicgen-loader.v17 i {
    height: 8px; background: linear-gradient(90deg, transparent, var(--accent-2), var(--accent), var(--accent-2), transparent);
    border-radius: 4px;
    transform-origin: center;
    animation: musicgen-eq-horiz 1.2s ease-in-out infinite;
}
.musicgen-loader.v17 i:nth-child(1) { animation-delay: 0s; }
.musicgen-loader.v17 i:nth-child(2) { animation-delay: -0.2s; }
.musicgen-loader.v17 i:nth-child(3) { animation-delay: -0.4s; }
.musicgen-loader.v17 i:nth-child(4) { animation-delay: -0.6s; }
.musicgen-loader.v17 i:nth-child(5) { animation-delay: -0.8s; }
.musicgen-loader.v17 i:nth-child(6) { animation-delay: -1s; }
.musicgen-loader.v17 i:nth-child(7) { animation-delay: -1.2s; }

/* v18 — 2D matrix dots (9-dot grid with wave) */
.musicgen-loader.v18 {
    width: 72px; height: 72px; background: none;
    display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px;
}
.musicgen-loader.v18 i {
    background: var(--accent);
    border-radius: 50%;
    animation: musicgen-dot-wave 1.4s ease-in-out infinite;
}
.musicgen-loader.v18 i:nth-child(1) { animation-delay: 0s; }
.musicgen-loader.v18 i:nth-child(2) { animation-delay: 0.1s; background: var(--accent-3); }
.musicgen-loader.v18 i:nth-child(3) { animation-delay: 0.2s; }
.musicgen-loader.v18 i:nth-child(4) { animation-delay: 0.1s; background: var(--accent-3); }
.musicgen-loader.v18 i:nth-child(5) { animation-delay: 0.2s; background: var(--accent-2); }
.musicgen-loader.v18 i:nth-child(6) { animation-delay: 0.3s; background: var(--accent-3); }
.musicgen-loader.v18 i:nth-child(7) { animation-delay: 0.2s; }
.musicgen-loader.v18 i:nth-child(8) { animation-delay: 0.3s; background: var(--accent-3); }
.musicgen-loader.v18 i:nth-child(9) { animation-delay: 0.4s; }

/* v19 — Frequency spectrum (gradient-filled bars, tall) */
.musicgen-loader.v19 {
    width: 88px; height: 64px; background: rgba(15,23,42,0.35);
    border-radius: 8px;
    display: flex; align-items: flex-end; justify-content: space-around; padding: 4px;
}
.musicgen-loader.v19 i {
    width: 8%; min-width: 4px;
    background: linear-gradient(to top, rgba(236,72,153,0.9), rgba(192,132,252,0.9), rgba(129,140,248,0.9));
    border-radius: 2px 2px 0 0;
    animation: musicgen-spectrum 1.1s ease-in-out infinite;
}
.musicgen-loader.v19 i:nth-child(1)  { animation-delay: -0.02s; }
.musicgen-loader.v19 i:nth-child(2)  { animation-delay: -0.1s; }
.musicgen-loader.v19 i:nth-child(3)  { animation-delay: -0.2s; }
.musicgen-loader.v19 i:nth-child(4)  { animation-delay: -0.3s; }
.musicgen-loader.v19 i:nth-child(5)  { animation-delay: -0.4s; }
.musicgen-loader.v19 i:nth-child(6)  { animation-delay: -0.55s; }
.musicgen-loader.v19 i:nth-child(7)  { animation-delay: -0.7s; }
.musicgen-loader.v19 i:nth-child(8)  { animation-delay: -0.85s; }
.musicgen-loader.v19 i:nth-child(9)  { animation-delay: -1s; }

/* v20 — Mirror EQ (bars both up and down from mid-line) */
.musicgen-loader.v20 {
    width: 80px; height: 72px; background: none;
    display: flex; align-items: center; justify-content: space-between; gap: 4px;
}
.musicgen-loader.v20 i {
    width: 10px; height: 30%;
    background: linear-gradient(180deg, var(--accent-2), var(--accent));
    border-radius: 5px;
    animation: musicgen-mirror 1.3s ease-in-out infinite;
}
.musicgen-loader.v20 i:nth-child(1) { animation-delay: 0s; }
.musicgen-loader.v20 i:nth-child(2) { animation-delay: -0.2s; }
.musicgen-loader.v20 i:nth-child(3) { animation-delay: -0.4s; }
.musicgen-loader.v20 i:nth-child(4) { animation-delay: -0.6s; }
.musicgen-loader.v20 i:nth-child(5) { animation-delay: -0.8s; }
.musicgen-loader.v20 i:nth-child(6) { animation-delay: -1s; }

/* v21 — Circular EQ (bars radiating outward from center) */
.musicgen-loader.v21 {
    background: none;
    width: 80px; height: 80px;
}
.musicgen-loader.v21 i {
    position: absolute; top: 50%; left: 50%;
    width: 4px; height: 30%;
    background: linear-gradient(to top, var(--accent), transparent);
    transform-origin: 50% 100%;
    animation: musicgen-radial-bar 1.4s ease-in-out infinite;
}
.musicgen-loader.v21 i:nth-child(1) { transform: translate(-50%, -100%) rotate(0deg); animation-delay: 0s; }
.musicgen-loader.v21 i:nth-child(2) { transform: translate(-50%, -100%) rotate(45deg); animation-delay: -0.175s; }
.musicgen-loader.v21 i:nth-child(3) { transform: translate(-50%, -100%) rotate(90deg); animation-delay: -0.35s; }
.musicgen-loader.v21 i:nth-child(4) { transform: translate(-50%, -100%) rotate(135deg); animation-delay: -0.525s; }
.musicgen-loader.v21 i:nth-child(5) { transform: translate(-50%, -100%) rotate(180deg); animation-delay: -0.7s; }
.musicgen-loader.v21 i:nth-child(6) { transform: translate(-50%, -100%) rotate(225deg); animation-delay: -0.875s; }
.musicgen-loader.v21 i:nth-child(7) { transform: translate(-50%, -100%) rotate(270deg); animation-delay: -1.05s; }
.musicgen-loader.v21 i:nth-child(8) { transform: translate(-50%, -100%) rotate(315deg); animation-delay: -1.225s; }

/* v22 — Stacked waveform (layered sinusoids) */
.musicgen-loader.v22 {
    width: 80px; height: 60px; background: none; overflow: visible;
}
.musicgen-loader.v22 i {
    position: absolute;
    left: 0; width: 100%; height: 3px;
    background: var(--accent);
    border-radius: 2px;
    filter: blur(0.3px);
    animation: musicgen-sine-wave 2s linear infinite;
}
.musicgen-loader.v22 i:nth-child(1) { top: 30%; animation-delay: 0s; }
.musicgen-loader.v22 i:nth-child(2) { top: 50%; animation-delay: -0.7s; background: var(--accent-2); }
.musicgen-loader.v22 i:nth-child(3) { top: 70%; animation-delay: -1.3s; background: var(--accent-3); }

/* v23 — Fade-bar progress (5 bars that light up then reset) */
.musicgen-loader.v23 {
    width: 84px; height: 12px; background: rgba(255,255,255,0.08);
    border-radius: 6px; overflow: hidden;
    display: flex; gap: 2px; padding: 2px;
}
.musicgen-loader.v23 i {
    flex: 1;
    background: linear-gradient(90deg, var(--accent), var(--accent-2));
    border-radius: 3px;
    opacity: 0.2;
    animation: musicgen-fade-bar 1.6s ease-in-out infinite;
}
.musicgen-loader.v23 i:nth-child(1) { animation-delay: 0s; }
.musicgen-loader.v23 i:nth-child(2) { animation-delay: 0.2s; }
.musicgen-loader.v23 i:nth-child(3) { animation-delay: 0.4s; }
.musicgen-loader.v23 i:nth-child(4) { animation-delay: 0.6s; }
.musicgen-loader.v23 i:nth-child(5) { animation-delay: 0.8s; }

/* ====================================================================== */
/* FAMILY 3: Waves & Oscilloscope (v24-v31) */
/* ====================================================================== */

/* v24 — Sine wave trace drawing across */
.musicgen-loader.v24 {
    width: 88px; height: 40px; background: rgba(15,23,42,0.4);
    border-radius: 6px;
    box-shadow: inset 0 0 8px rgba(0,0,0,0.4);
    overflow: hidden;
}
.musicgen-loader.v24::before {
    content: ''; position: absolute; top: 50%; left: -100%;
    width: 300%; height: 3px;
    background: repeating-linear-gradient(90deg,
        transparent 0%, transparent 10%,
        var(--accent) 10%, var(--accent) 13%,
        transparent 13%, transparent 20%
    );
    transform: translateY(-50%);
    animation: musicgen-trace 2s linear infinite;
}

/* v25 — Pulse wave (square wave, rising/falling) */
.musicgen-loader.v25 {
    width: 84px; height: 48px; background: rgba(15,23,42,0.4);
    border-radius: 6px; overflow: hidden;
}
.musicgen-loader.v25::before {
    content: ''; position: absolute;
    left: 0; top: 0; width: 50%; height: 100%;
    background: linear-gradient(to right, transparent 0%, transparent 15%, var(--accent) 15%, var(--accent) 18%, transparent 18%, transparent 35%, var(--accent) 35%, var(--accent) 38%, transparent 38%, transparent 55%, var(--accent) 55%, var(--accent) 58%, transparent 58%);
    animation: musicgen-slide-right 1.5s linear infinite;
}

/* v26 — Triangle wave (3 points moving) */
.musicgen-loader.v26 {
    width: 80px; height: 56px; background: none;
}
.musicgen-loader.v26 i {
    position: absolute;
    width: 8px; height: 8px;
    background: var(--accent);
    border-radius: 50%;
    top: 50%;
    animation: musicgen-triangle 1.6s ease-in-out infinite;
}
.musicgen-loader.v26 i:nth-child(1) { left: 20%; animation-delay: 0s; }
.musicgen-loader.v26 i:nth-child(2) { left: 50%; animation-delay: -0.4s; background: var(--accent-2); }
.musicgen-loader.v26 i:nth-child(3) { left: 80%; animation-delay: -0.8s; background: var(--accent-3); }

/* v27 — Sawtooth wave */
.musicgen-loader.v27 {
    width: 80px; height: 48px;
    background: linear-gradient(135deg, transparent 25%, var(--accent) 25%, var(--accent) 26%, transparent 26%, transparent 50%, var(--accent-2) 50%, var(--accent-2) 51%, transparent 51%, transparent 75%, var(--accent-3) 75%, var(--accent-3) 76%, transparent 76%);
    background-size: 200% 100%;
    animation: musicgen-saw 2s linear infinite;
    border-radius: 4px;
    box-shadow: inset 0 0 10px rgba(0,0,0,0.3);
}

/* v28 — Oscilloscope dot tracing */
.musicgen-loader.v28 {
    width: 80px; height: 56px; background: rgba(15,23,42,0.5);
    border: 1px solid rgba(34,211,238,0.25);
    border-radius: 4px;
}
.musicgen-loader.v28::before {
    content: ''; position: absolute;
    width: 8px; height: 8px;
    background: var(--accent-4);
    border-radius: 50%;
    box-shadow: 0 0 12px var(--accent-4);
    animation: musicgen-osc-trace 2s ease-in-out infinite;
}

/* v29 — Radar ping (expanding circles from center, radar grid in background) */
.musicgen-loader.v29 {
    background: radial-gradient(circle, transparent 0%, transparent 40%, rgba(34,211,238,0.15) 41%, rgba(34,211,238,0.15) 42%, transparent 43%, transparent 60%, rgba(34,211,238,0.1) 61%, rgba(34,211,238,0.1) 62%, transparent 63%);
    border-radius: 50%;
}
.musicgen-loader.v29 i {
    position: absolute; inset: 0;
    border-radius: 50%;
    border: 2px solid var(--accent-4);
    opacity: 0;
    animation: musicgen-ripple 2s ease-out infinite;
}
.musicgen-loader.v29 i:nth-child(2) { animation-delay: 1s; }
.musicgen-loader.v29 i:nth-child(3) { animation-delay: 1.5s; }

/* v30 — Ocean wave (side-scrolling crests) */
.musicgen-loader.v30 {
    width: 80px; height: 48px; background: none;
    overflow: hidden; border-radius: 6px;
}
.musicgen-loader.v30::before {
    content: ''; position: absolute; inset: 0;
    background-image:
        radial-gradient(ellipse 60% 80% at 20% 50%, var(--accent) 0%, transparent 30%),
        radial-gradient(ellipse 60% 80% at 60% 50%, var(--accent-2) 0%, transparent 30%),
        radial-gradient(ellipse 60% 80% at 100% 50%, var(--accent-3) 0%, transparent 30%);
    background-size: 150% 100%;
    animation: musicgen-slide-right 3s linear infinite;
    opacity: 0.6;
}

/* v31 — Rubber band pluck (horizontal line bending) */
.musicgen-loader.v31 {
    width: 80px; height: 40px; background: none;
}
.musicgen-loader.v31::before {
    content: ''; position: absolute; top: 50%; left: 0;
    width: 100%; height: 2px;
    background: linear-gradient(90deg, transparent, var(--accent), transparent);
    transform-origin: center;
    animation: musicgen-pluck 0.6s ease-out infinite;
}

/* ====================================================================== */
/* FAMILY 4: Instruments (v32-v47) */
/* ====================================================================== */

/* v32 — Piano keys (3 keys depressing) */
.musicgen-loader.v32 {
    width: 80px; height: 56px; background: none;
    display: flex; justify-content: center; gap: 2px;
}
.musicgen-loader.v32 i {
    width: 18px; height: 100%;
    background: linear-gradient(180deg, #f1f5f9, #cbd5e1);
    border: 1px solid #475569;
    border-radius: 0 0 3px 3px;
    animation: musicgen-key-press 1.2s ease-in-out infinite;
    transform-origin: top;
}
.musicgen-loader.v32 i:nth-child(2) { animation-delay: -0.4s; }
.musicgen-loader.v32 i:nth-child(3) { animation-delay: -0.8s; }

/* v33 — Guitar pick strumming */
.musicgen-loader.v33 {
    width: 48px; height: 72px; background: none;
}
.musicgen-loader.v33::before, .musicgen-loader.v33::after {
    content: ''; position: absolute; left: 50%; top: 20%;
    width: 20px; height: 40%;
    transform: translateX(-50%);
    background: var(--accent);
    clip-path: polygon(0% 0%, 100% 0%, 50% 100%);
    animation: musicgen-strum 0.8s ease-in-out infinite;
}
.musicgen-loader.v33::after {
    top: 50%;
    background: var(--accent-2);
    animation-delay: -0.4s;
}

/* v34 — Drum hit (expanding rings on beat) */
.musicgen-loader.v34 {
    background: radial-gradient(circle at center, rgba(15,23,42,0.6) 30%, transparent 30%);
    border-radius: 50%;
}
.musicgen-loader.v34::before {
    content: ''; position: absolute; inset: 25%;
    background: var(--accent);
    border-radius: 50%;
    animation: musicgen-drum-hit 0.7s ease-out infinite;
}

/* v35 — Cymbal crash */
.musicgen-loader.v35 {
    background: radial-gradient(circle, #fbbf24 0%, #f59e0b 40%, transparent 50%);
    border-radius: 50%;
}
.musicgen-loader.v35::before, .musicgen-loader.v35::after {
    content: ''; position: absolute;
    inset: 0;
    border-radius: 50%;
    border: 2px solid #fbbf24;
    animation: musicgen-ripple 1.5s ease-out infinite;
}
.musicgen-loader.v35::after { animation-delay: 0.75s; }

/* v36 — Kick drum pulse (single big circle pulsing) */
.musicgen-loader.v36 {
    background: radial-gradient(circle, var(--accent) 0%, var(--accent) 20%, transparent 24%, transparent 100%);
    border-radius: 50%;
    animation: musicgen-kick-pulse 0.6s ease-in-out infinite;
}
.musicgen-loader.v36::before {
    content: ''; position: absolute; inset: 15%;
    border-radius: 50%;
    border: 2px solid var(--accent);
    animation: musicgen-kick-ring 0.6s ease-out infinite;
}

/* v37 — Snare roll (cascading dots) */
.musicgen-loader.v37 {
    width: 80px; height: 40px; background: none;
    display: flex; align-items: center; justify-content: space-between;
}
.musicgen-loader.v37 i {
    width: 8px; height: 8px;
    background: var(--accent);
    border-radius: 50%;
    animation: musicgen-snare-roll 0.9s ease-in-out infinite;
}
.musicgen-loader.v37 i:nth-child(1) { animation-delay: 0s; }
.musicgen-loader.v37 i:nth-child(2) { animation-delay: 0.1s; }
.musicgen-loader.v37 i:nth-child(3) { animation-delay: 0.2s; }
.musicgen-loader.v37 i:nth-child(4) { animation-delay: 0.3s; }
.musicgen-loader.v37 i:nth-child(5) { animation-delay: 0.4s; }

/* v38 — Hi-hat open/close (two discs moving apart) */
.musicgen-loader.v38 { background: none; }
.musicgen-loader.v38::before, .musicgen-loader.v38::after {
    content: ''; position: absolute; left: 50%;
    width: 70%; height: 10%;
    background: linear-gradient(90deg, transparent, #fbbf24, transparent);
    border-radius: 50%;
    transform: translateX(-50%);
    animation: musicgen-hihat 1s ease-in-out infinite;
}
.musicgen-loader.v38::before { top: 35%; }
.musicgen-loader.v38::after  { top: 55%; animation-delay: -0.5s; animation-direction: reverse; }

/* v39 — Headphones (two circles with band) */
.musicgen-loader.v39 {
    background: none;
    width: 80px; height: 60px;
}
.musicgen-loader.v39::before {
    content: ''; position: absolute; top: 10%; left: 50%;
    width: 70%; height: 50%;
    border: 4px solid var(--accent-2);
    border-radius: 50% 50% 0 0;
    border-bottom: none;
    transform: translateX(-50%);
}
.musicgen-loader.v39::after {
    content: ''; position: absolute; bottom: 10%; left: 10%;
    width: 20px; height: 20px;
    background: var(--accent);
    border-radius: 50%;
    box-shadow: 50px 0 var(--accent);
    animation: musicgen-breathe 1.4s ease-in-out infinite;
}

/* v40 — Speaker woofer (concentric circles pulsing) */
.musicgen-loader.v40 {
    background: radial-gradient(circle, #0f172a 0%, #0f172a 30%, var(--accent) 32%, var(--accent) 36%, #1e1b4b 38%, #0f172a 60%, rgba(236,72,153,0.2) 62%, rgba(236,72,153,0.15) 70%, transparent 72%);
    border-radius: 50%;
    animation: musicgen-breathe 0.8s ease-in-out infinite;
}

/* v41 — Synth knob rotating */
.musicgen-loader.v41 {
    background: radial-gradient(circle at 50% 40%, #1e293b 0%, #0f172a 70%);
    border-radius: 50%;
    border: 2px solid var(--accent-2);
    animation: musicgen-knob-rotate 2s ease-in-out infinite alternate;
}
.musicgen-loader.v41::before {
    content: ''; position: absolute;
    top: 15%; left: 50%;
    width: 3px; height: 40%;
    background: var(--accent);
    transform-origin: bottom center;
    transform: translateX(-50%);
    border-radius: 2px;
    box-shadow: 0 0 8px var(--accent);
}

/* v42 — Xylophone bars (5 colored bars tilting) */
.musicgen-loader.v42 {
    width: 80px; height: 56px; background: none;
    display: flex; align-items: center; justify-content: space-between; gap: 3px;
}
.musicgen-loader.v42 i {
    width: 12px; height: 80%;
    border-radius: 3px;
    transform-origin: bottom center;
    animation: musicgen-xylo 1.5s ease-in-out infinite;
}
.musicgen-loader.v42 i:nth-child(1) { background: #ec4899; animation-delay: 0s; }
.musicgen-loader.v42 i:nth-child(2) { background: #c084fc; animation-delay: -0.3s; }
.musicgen-loader.v42 i:nth-child(3) { background: #818cf8; animation-delay: -0.6s; }
.musicgen-loader.v42 i:nth-child(4) { background: #22d3ee; animation-delay: -0.9s; }
.musicgen-loader.v42 i:nth-child(5) { background: #a7f3d0; animation-delay: -1.2s; }

/* v43 — Violin string vibrating (single line, tight vibration) */
.musicgen-loader.v43 {
    width: 80px; height: 40px; background: none;
}
.musicgen-loader.v43::before {
    content: ''; position: absolute; top: 50%; left: 0;
    width: 100%; height: 1px;
    background: var(--accent);
    box-shadow: 0 0 6px var(--accent);
    animation: musicgen-violin-vibrate 0.1s linear infinite;
}
.musicgen-loader.v43::after {
    content: ''; position: absolute; top: 50%; left: -4px;
    width: 8px; height: 8px;
    background: var(--accent-2);
    border-radius: 50%;
    transform: translateY(-50%);
    animation: musicgen-violin-bow 2s ease-in-out infinite;
}

/* v44 — Trumpet bell (cone with sound ring) */
.musicgen-loader.v44 {
    background: none;
    width: 80px; height: 72px;
}
.musicgen-loader.v44::before {
    content: ''; position: absolute; left: 10%; top: 30%;
    width: 50%; height: 40%;
    background: linear-gradient(90deg, var(--accent-3), #fbbf24);
    clip-path: polygon(0% 30%, 70% 0%, 100% 50%, 70% 100%, 0% 70%);
}
.musicgen-loader.v44 i {
    position: absolute; top: 30%; right: 5%;
    width: 30%; height: 40%;
    border-radius: 50%;
    border: 2px solid #fbbf24;
    opacity: 0;
    animation: musicgen-trumpet-ring 1.5s ease-out infinite;
}
.musicgen-loader.v44 i:nth-child(2) { animation-delay: 0.5s; }
.musicgen-loader.v44 i:nth-child(3) { animation-delay: 1s; }

/* v45 — Amp speaker (mesh grille + glow) */
.musicgen-loader.v45 {
    background: radial-gradient(circle, var(--accent) 0%, transparent 30%);
    border-radius: 8px;
    border: 2px solid rgba(255,255,255,0.2);
    box-shadow: inset 0 0 12px rgba(0,0,0,0.5);
}
.musicgen-loader.v45::before {
    content: ''; position: absolute; inset: 15%;
    background-image: radial-gradient(circle 1px, rgba(255,255,255,0.4) 0, transparent 2px);
    background-size: 6px 6px;
    border-radius: 50%;
    animation: musicgen-breathe 1.2s ease-in-out infinite;
}

/* v46 — Microphone silhouette with pulse */
.musicgen-loader.v46 {
    background: none;
}
.musicgen-loader.v46::before {
    content: ''; position: absolute; top: 20%; left: 50%;
    width: 30%; height: 45%;
    background: linear-gradient(180deg, var(--accent), var(--accent-2));
    border-radius: 50% 50% 40% 40%;
    transform: translateX(-50%);
    animation: musicgen-mic-glow 1.5s ease-in-out infinite;
}
.musicgen-loader.v46::after {
    content: ''; position: absolute; bottom: 15%; left: 50%;
    width: 2px; height: 20%;
    background: var(--accent-2);
    transform: translateX(-50%);
}

/* v47 — Flute/pipe (vertical line with hole dots moving) */
.musicgen-loader.v47 {
    width: 20px; height: 72px; background: linear-gradient(90deg, #475569, #1e293b, #475569);
    border-radius: 4px;
}
.musicgen-loader.v47 i {
    position: absolute; left: 50%;
    width: 6px; height: 6px;
    background: var(--accent);
    border-radius: 50%;
    transform: translateX(-50%);
    animation: musicgen-flute-hole 1.2s ease-in-out infinite;
}
.musicgen-loader.v47 i:nth-child(1) { top: 20%; animation-delay: 0s; }
.musicgen-loader.v47 i:nth-child(2) { top: 40%; animation-delay: -0.3s; }
.musicgen-loader.v47 i:nth-child(3) { top: 60%; animation-delay: -0.6s; }
.musicgen-loader.v47 i:nth-child(4) { top: 80%; animation-delay: -0.9s; }

/* ====================================================================== */
/* FAMILY 5: Notation (v48-v55) */
/* ====================================================================== */

/* v48 — Quarter note floating (note head + stem) */
.musicgen-loader.v48 { background: none; }
.musicgen-loader.v48::before {
    content: ''; position: absolute; bottom: 20%; left: 35%;
    width: 22px; height: 18px;
    background: var(--accent);
    border-radius: 60% 60% 40% 40%;
    transform: rotate(-20deg);
    animation: musicgen-note-float 2s ease-in-out infinite;
}
.musicgen-loader.v48::after {
    content: ''; position: absolute; bottom: 30%; right: 30%;
    width: 3px; height: 55%;
    background: var(--accent);
    animation: musicgen-note-float 2s ease-in-out infinite;
}

/* v49 — Eighth note pair (2 notes beamed together) */
.musicgen-loader.v49 {
    width: 80px; height: 60px; background: none;
}
.musicgen-loader.v49::before {
    content: ''; position: absolute; top: 20%; left: 15%;
    width: 50px; height: 5px;
    background: var(--accent);
    border-radius: 2px;
    transform: rotate(-5deg);
}
.musicgen-loader.v49 i {
    position: absolute; width: 16px; height: 14px;
    background: var(--accent);
    border-radius: 60% 60% 40% 40%;
    animation: musicgen-bounce 0.8s ease-in-out infinite;
}
.musicgen-loader.v49 i:nth-child(1) { bottom: 10%; left: 10%; }
.musicgen-loader.v49 i:nth-child(2) { bottom: 15%; right: 10%; animation-delay: -0.4s; }
.musicgen-loader.v49 i:nth-child(3) { position: absolute; top: 20%; left: 20%; width: 3px; height: 40%; border-radius: 1px; animation: none; }

/* v50 — Staff (5 lines) with notes sliding across */
.musicgen-loader.v50 {
    width: 88px; height: 56px; background: none;
}
.musicgen-loader.v50 i {
    position: absolute; left: 0; width: 100%; height: 1px;
    background: rgba(255,255,255,0.3);
}
.musicgen-loader.v50 i:nth-child(1) { top: 20%; }
.musicgen-loader.v50 i:nth-child(2) { top: 35%; }
.musicgen-loader.v50 i:nth-child(3) { top: 50%; }
.musicgen-loader.v50 i:nth-child(4) { top: 65%; }
.musicgen-loader.v50 i:nth-child(5) { top: 80%; }
.musicgen-loader.v50::before {
    content: ''; position: absolute; left: -15%;
    width: 12px; height: 8px;
    background: var(--accent);
    border-radius: 60% 60% 40% 40%;
    top: 40%;
    animation: musicgen-slide-right 2.5s linear infinite;
}
.musicgen-loader.v50::after {
    content: ''; position: absolute; left: -15%;
    width: 12px; height: 8px;
    background: var(--accent-2);
    border-radius: 60% 60% 40% 40%;
    top: 65%;
    animation: musicgen-slide-right 2.5s linear infinite -1s;
}

/* v51 — Sharp sign (#) rotating */
.musicgen-loader.v51 {
    background: none;
    animation: musicgen-spin 3s linear infinite;
}
.musicgen-loader.v51::before {
    content: '♯';
    position: absolute; top: 50%; left: 50%;
    font-size: 48px; line-height: 1;
    color: var(--accent);
    text-shadow: 0 0 12px rgba(236,72,153,0.5);
    transform: translate(-50%, -50%);
}
@media (min-width: 768px) {
    .musicgen-loader.v51::before { font-size: 64px; }
}

/* v52 — Flat sign (♭) bobbing */
.musicgen-loader.v52 {
    background: none;
    animation: musicgen-bounce 1.2s ease-in-out infinite;
}
.musicgen-loader.v52::before {
    content: '♭';
    position: absolute; top: 50%; left: 50%;
    font-size: 54px; line-height: 1;
    color: var(--accent-2);
    text-shadow: 0 0 12px rgba(129,140,248,0.6);
    transform: translate(-50%, -50%);
}
@media (min-width: 768px) {
    .musicgen-loader.v52::before { font-size: 72px; }
}

/* v53 — Treble clef (𝄞) slowly pulsing */
.musicgen-loader.v53 {
    background: none;
    animation: musicgen-breathe 2s ease-in-out infinite;
}
.musicgen-loader.v53::before {
    content: '𝄞';
    position: absolute; top: 50%; left: 50%;
    font-size: 56px; line-height: 1;
    color: var(--accent);
    text-shadow: 0 0 14px rgba(236,72,153,0.6);
    transform: translate(-50%, -50%);
}
@media (min-width: 768px) {
    .musicgen-loader.v53::before { font-size: 76px; }
}

/* v54 — Bass clef (𝄢) rotating gently */
.musicgen-loader.v54 {
    background: none;
    animation: musicgen-nod 2s ease-in-out infinite;
}
.musicgen-loader.v54::before {
    content: '𝄢';
    position: absolute; top: 50%; left: 50%;
    font-size: 54px; line-height: 1;
    color: var(--accent-3);
    text-shadow: 0 0 12px rgba(192,132,252,0.6);
    transform: translate(-50%, -50%);
}
@media (min-width: 768px) {
    .musicgen-loader.v54::before { font-size: 72px; }
}

/* v55 — Double notes ♫ falling */
.musicgen-loader.v55 {
    background: none;
    animation: musicgen-float 1.8s ease-in-out infinite;
}
.musicgen-loader.v55::before {
    content: '♫';
    position: absolute; top: 50%; left: 50%;
    font-size: 40px; line-height: 1;
    color: var(--accent);
    text-shadow: 0 0 12px rgba(236,72,153,0.5);
    transform: translate(-50%, -50%);
}
@media (min-width: 768px) {
    .musicgen-loader.v55::before { font-size: 56px; }
}

/* ====================================================================== */
/* FAMILY 6: Rhythm (v56-v63) */
/* ====================================================================== */

/* v56 — Pulse (heartbeat) single circle */
.musicgen-loader.v56 {
    background: radial-gradient(circle, var(--accent) 0%, var(--accent) 40%, transparent 42%);
    border-radius: 50%;
    animation: musicgen-heartbeat 0.8s ease-in-out infinite;
}
.musicgen-loader.v56::before {
    content: ''; position: absolute; inset: 0;
    border-radius: 50%;
    border: 2px solid var(--accent);
    animation: musicgen-heartbeat-ring 0.8s ease-out infinite;
}

/* v57 — Clap pattern (2 palms meeting) */
.musicgen-loader.v57 {
    background: none;
    width: 80px; height: 48px;
}
.musicgen-loader.v57::before, .musicgen-loader.v57::after {
    content: ''; position: absolute; top: 30%;
    width: 35%; height: 40%;
    background: var(--accent);
    border-radius: 30% 70% 70% 30%;
    animation: musicgen-clap 0.6s ease-in-out infinite;
}
.musicgen-loader.v57::before { left: 5%; }
.musicgen-loader.v57::after  { right: 5%; transform: scaleX(-1); animation-delay: 0s; }

/* v58 — Four-on-the-floor (4 kick-dots lighting) */
.musicgen-loader.v58 {
    width: 84px; height: 18px; background: none;
    display: flex; justify-content: space-between; align-items: center;
}
.musicgen-loader.v58 i {
    width: 14px; height: 14px;
    background: rgba(255,255,255,0.1);
    border: 1px solid var(--accent);
    border-radius: 50%;
    animation: musicgen-four-floor 1.6s steps(4, end) infinite;
}
.musicgen-loader.v58 i:nth-child(1) { animation-delay: 0s; }
.musicgen-loader.v58 i:nth-child(2) { animation-delay: 0.4s; }
.musicgen-loader.v58 i:nth-child(3) { animation-delay: 0.8s; }
.musicgen-loader.v58 i:nth-child(4) { animation-delay: 1.2s; }

/* v59 — Polyrhythm (2 circles at different speeds) */
.musicgen-loader.v59 {
    background: none;
}
.musicgen-loader.v59::before {
    content: ''; position: absolute; inset: 10%;
    border: 2px solid var(--accent);
    border-radius: 50%;
    animation: musicgen-spin 1.5s linear infinite;
    border-left-color: transparent;
    border-right-color: transparent;
}
.musicgen-loader.v59::after {
    content: ''; position: absolute; inset: 30%;
    border: 2px solid var(--accent-2);
    border-radius: 50%;
    animation: musicgen-spin 2.4s linear infinite reverse;
    border-top-color: transparent;
    border-bottom-color: transparent;
}

/* v60 — Beat grid (8x1 LED strip, scanning) */
.musicgen-loader.v60 {
    width: 88px; height: 14px; background: rgba(15,23,42,0.5);
    border-radius: 4px;
    display: flex; justify-content: space-between; padding: 2px; gap: 2px;
}
.musicgen-loader.v60 i {
    flex: 1;
    background: rgba(255,255,255,0.08);
    border-radius: 2px;
    animation: musicgen-beat-grid 1.6s steps(8) infinite;
}
.musicgen-loader.v60 i:nth-child(1) { animation-delay: 0s; }
.musicgen-loader.v60 i:nth-child(2) { animation-delay: 0.2s; }
.musicgen-loader.v60 i:nth-child(3) { animation-delay: 0.4s; }
.musicgen-loader.v60 i:nth-child(4) { animation-delay: 0.6s; }
.musicgen-loader.v60 i:nth-child(5) { animation-delay: 0.8s; }
.musicgen-loader.v60 i:nth-child(6) { animation-delay: 1s; }
.musicgen-loader.v60 i:nth-child(7) { animation-delay: 1.2s; }
.musicgen-loader.v60 i:nth-child(8) { animation-delay: 1.4s; }

/* v61 — 4x4 drum pad grid (16 cells, wave-ordered lighting) */
.musicgen-loader.v61 {
    width: 72px; height: 72px;
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 3px;
}
.musicgen-loader.v61 i {
    background: rgba(255,255,255,0.08);
    border-radius: 3px;
    animation: musicgen-pad-flash 2.4s steps(16) infinite;
}
.musicgen-loader.v61 i:nth-child(1)  { animation-delay: 0s; }
.musicgen-loader.v61 i:nth-child(2)  { animation-delay: 0.15s; }
.musicgen-loader.v61 i:nth-child(3)  { animation-delay: 0.3s; }
.musicgen-loader.v61 i:nth-child(4)  { animation-delay: 0.45s; }
.musicgen-loader.v61 i:nth-child(5)  { animation-delay: 0.45s; }
.musicgen-loader.v61 i:nth-child(6)  { animation-delay: 0.3s; }
.musicgen-loader.v61 i:nth-child(7)  { animation-delay: 0.15s; }
.musicgen-loader.v61 i:nth-child(8)  { animation-delay: 0s; }
.musicgen-loader.v61 i:nth-child(9)  { animation-delay: 0.75s; }
.musicgen-loader.v61 i:nth-child(10) { animation-delay: 0.9s; }
.musicgen-loader.v61 i:nth-child(11) { animation-delay: 1.05s; }
.musicgen-loader.v61 i:nth-child(12) { animation-delay: 1.2s; }
.musicgen-loader.v61 i:nth-child(13) { animation-delay: 1.2s; }
.musicgen-loader.v61 i:nth-child(14) { animation-delay: 1.05s; }
.musicgen-loader.v61 i:nth-child(15) { animation-delay: 0.9s; }
.musicgen-loader.v61 i:nth-child(16) { animation-delay: 0.75s; }

/* v62 — Click track (dots tick-tock) */
.musicgen-loader.v62 {
    width: 60px; height: 20px; background: none;
    display: flex; justify-content: space-between; align-items: center;
}
.musicgen-loader.v62 i {
    width: 10px; height: 10px;
    border-radius: 50%;
    background: var(--accent);
    animation: musicgen-click-tock 0.6s ease-in-out infinite alternate;
}
.musicgen-loader.v62 i:nth-child(1) { animation-delay: 0s; }
.musicgen-loader.v62 i:nth-child(2) { animation-delay: -0.3s; background: var(--accent-2); }

/* v63 — Finger snap (sparkle burst) */
.musicgen-loader.v63 {
    background: none;
}
.musicgen-loader.v63::before {
    content: ''; position: absolute; inset: 35%;
    background: #fbbf24;
    border-radius: 50%;
    box-shadow: 0 0 20px #fbbf24;
    animation: musicgen-snap 0.5s ease-in-out infinite;
}
.musicgen-loader.v63 i {
    position: absolute;
    width: 3px; height: 12px;
    background: #fbbf24;
    border-radius: 2px;
    top: 50%; left: 50%;
    opacity: 0;
    animation: musicgen-snap-spark 0.5s ease-out infinite;
}
.musicgen-loader.v63 i:nth-child(1) { transform: translate(-50%, -50%) rotate(0deg) translateY(-20px); }
.musicgen-loader.v63 i:nth-child(2) { transform: translate(-50%, -50%) rotate(90deg) translateY(-20px); }
.musicgen-loader.v63 i:nth-child(3) { transform: translate(-50%, -50%) rotate(180deg) translateY(-20px); }
.musicgen-loader.v63 i:nth-child(4) { transform: translate(-50%, -50%) rotate(270deg) translateY(-20px); }

/* ====================================================================== */
/* FAMILY 7: Production / Digital (v64-v71) */
/* ====================================================================== */

/* v64 — Mixer faders (3 vertical faders sliding) */
.musicgen-loader.v64 {
    width: 72px; height: 72px;
    background: rgba(15,23,42,0.4);
    border-radius: 6px;
    display: flex; justify-content: space-around; align-items: stretch;
    padding: 6px 8px;
}
.musicgen-loader.v64 i {
    position: relative; width: 4px;
    background: rgba(255,255,255,0.15);
    border-radius: 2px;
}
.musicgen-loader.v64 i::before {
    content: ''; position: absolute; left: -6px;
    width: 16px; height: 8px;
    background: var(--accent);
    border-radius: 2px;
    animation: musicgen-fader 1.6s ease-in-out infinite alternate;
}
.musicgen-loader.v64 i:nth-child(2)::before { background: var(--accent-2); animation-delay: -0.4s; }
.musicgen-loader.v64 i:nth-child(3)::before { background: var(--accent-3); animation-delay: -0.8s; }

/* v65 — VU meter (analog needle sweeping) */
.musicgen-loader.v65 {
    width: 80px; height: 48px;
    background: linear-gradient(180deg, #f1f5f9 0%, #e2e8f0 100%);
    border-radius: 8px 8px 4px 4px;
    overflow: hidden;
    border: 2px solid #334155;
}
.musicgen-loader.v65::before {
    content: ''; position: absolute;
    bottom: 0; left: 50%;
    width: 3px; height: 80%;
    background: #991b1b;
    transform-origin: bottom center;
    animation: musicgen-vu-needle 2s ease-in-out infinite alternate;
    box-shadow: 0 0 4px rgba(153,27,27,0.5);
}
.musicgen-loader.v65::after {
    content: ''; position: absolute; bottom: 0; left: 0;
    width: 100%; height: 15%;
    background: linear-gradient(90deg, transparent 0%, #fbbf24 70%, var(--accent) 100%);
}

/* v66 — Peak meter (vertical LEDs lighting up) */
.musicgen-loader.v66 {
    width: 24px; height: 72px;
    background: rgba(15,23,42,0.5);
    border-radius: 3px;
    display: flex; flex-direction: column-reverse; justify-content: flex-start;
    padding: 3px; gap: 2px;
}
.musicgen-loader.v66 i {
    flex: 1;
    background: #22c55e;
    border-radius: 1px;
    animation: musicgen-peak-meter 1.5s ease-in-out infinite;
}
.musicgen-loader.v66 i:nth-child(1) { animation-delay: 0s; }
.musicgen-loader.v66 i:nth-child(2) { animation-delay: 0.08s; background: #22c55e; }
.musicgen-loader.v66 i:nth-child(3) { animation-delay: 0.16s; background: #84cc16; }
.musicgen-loader.v66 i:nth-child(4) { animation-delay: 0.24s; background: #eab308; }
.musicgen-loader.v66 i:nth-child(5) { animation-delay: 0.32s; background: #f97316; }
.musicgen-loader.v66 i:nth-child(6) { animation-delay: 0.4s; background: #ef4444; }

/* v67 — Loop recorder cycle (circular arrows) */
.musicgen-loader.v67 {
    background: none;
    border: 3px solid transparent;
    border-top-color: var(--accent);
    border-right-color: var(--accent-2);
    border-radius: 50%;
    animation: musicgen-spin 1.2s linear infinite;
}
.musicgen-loader.v67::before {
    content: ''; position: absolute;
    top: -4px; right: 10%;
    width: 0; height: 0;
    border: 8px solid transparent;
    border-left-color: var(--accent);
    animation: musicgen-spin 1.2s linear infinite reverse;
}

/* v68 — MIDI step sequencer (grid cells lighting in sequence) */
.musicgen-loader.v68 {
    width: 88px; height: 56px; background: rgba(15,23,42,0.4);
    border-radius: 4px; padding: 4px;
    display: grid; grid-template-columns: repeat(8, 1fr); grid-template-rows: repeat(2, 1fr); gap: 2px;
}
.musicgen-loader.v68 i {
    background: rgba(255,255,255,0.1);
    border-radius: 1px;
    animation: musicgen-step-seq 1.6s steps(8) infinite;
}
.musicgen-loader.v68 i:nth-child(odd) { background: var(--accent); opacity: 0.3; }
.musicgen-loader.v68 i:nth-child(4n+1) { opacity: 0.8; }
.musicgen-loader.v68 i:nth-child(1)  { animation-delay: 0s; }
.musicgen-loader.v68 i:nth-child(2)  { animation-delay: 0s; }
.musicgen-loader.v68 i:nth-child(3)  { animation-delay: 0.2s; }
.musicgen-loader.v68 i:nth-child(4)  { animation-delay: 0.2s; }
.musicgen-loader.v68 i:nth-child(5)  { animation-delay: 0.4s; }
.musicgen-loader.v68 i:nth-child(6)  { animation-delay: 0.4s; }
.musicgen-loader.v68 i:nth-child(7)  { animation-delay: 0.6s; }
.musicgen-loader.v68 i:nth-child(8)  { animation-delay: 0.6s; }
.musicgen-loader.v68 i:nth-child(9)  { animation-delay: 0.8s; }
.musicgen-loader.v68 i:nth-child(10) { animation-delay: 0.8s; }
.musicgen-loader.v68 i:nth-child(11) { animation-delay: 1s; }
.musicgen-loader.v68 i:nth-child(12) { animation-delay: 1s; }
.musicgen-loader.v68 i:nth-child(13) { animation-delay: 1.2s; }
.musicgen-loader.v68 i:nth-child(14) { animation-delay: 1.2s; }
.musicgen-loader.v68 i:nth-child(15) { animation-delay: 1.4s; }
.musicgen-loader.v68 i:nth-child(16) { animation-delay: 1.4s; }

/* v69 — DAW timeline (scrolling waveform preview) */
.musicgen-loader.v69 {
    width: 88px; height: 32px;
    background: rgba(15,23,42,0.5);
    border-radius: 4px;
    overflow: hidden;
}
.musicgen-loader.v69::before {
    content: ''; position: absolute; inset: 0;
    background: linear-gradient(90deg,
        var(--accent) 0%, var(--accent-2) 15%, var(--accent) 20%,
        var(--accent-2) 25%, var(--accent-3) 30%, var(--accent) 35%,
        var(--accent-2) 40%, var(--accent-3) 50%, var(--accent) 60%,
        var(--accent-2) 65%, var(--accent-3) 75%, var(--accent) 85%);
    clip-path: polygon(0% 40%, 5% 20%, 10% 60%, 15% 25%, 20% 70%, 25% 30%, 30% 75%, 35% 35%, 40% 65%, 45% 20%, 50% 80%, 55% 30%, 60% 60%, 65% 25%, 70% 70%, 75% 35%, 80% 65%, 85% 25%, 90% 75%, 95% 40%, 100% 50%, 100% 50%, 95% 60%, 90% 25%, 85% 75%, 80% 35%, 75% 65%, 70% 30%, 65% 75%, 60% 40%, 55% 70%, 50% 20%, 45% 80%, 40% 35%, 35% 65%, 30% 25%, 25% 70%, 20% 30%, 15% 75%, 10% 40%, 5% 80%, 0% 60%);
    animation: musicgen-daw-scroll 3s linear infinite;
}
.musicgen-loader.v69::after {
    content: ''; position: absolute; top: 0; bottom: 0; left: 40%;
    width: 1px;
    background: #fbbf24;
    box-shadow: 0 0 4px #fbbf24;
}

/* v70 — Pan knob rotating (L <-> R indicator) */
.musicgen-loader.v70 {
    background: radial-gradient(circle at 50% 50%, #1e293b 0%, #0f172a 70%);
    border-radius: 50%;
    border: 2px solid var(--accent);
}
.musicgen-loader.v70::before {
    content: 'L'; position: absolute; left: 8%;
    top: 50%; transform: translateY(-50%);
    color: rgba(255,255,255,0.4); font-size: 10px; font-weight: bold;
}
.musicgen-loader.v70::after {
    content: 'R'; position: absolute; right: 8%;
    top: 50%; transform: translateY(-50%);
    color: rgba(255,255,255,0.4); font-size: 10px; font-weight: bold;
}
.musicgen-loader.v70 i {
    position: absolute;
    top: 50%; left: 50%;
    width: 3px; height: 40%;
    background: var(--accent);
    transform-origin: bottom center;
    transform: translate(-50%, -100%);
    border-radius: 2px;
    box-shadow: 0 0 6px var(--accent);
    animation: musicgen-pan-knob 2.5s ease-in-out infinite alternate;
}

/* v71 — Compressor gain reduction meter */
.musicgen-loader.v71 {
    width: 80px; height: 24px;
    background: rgba(15,23,42,0.5);
    border-radius: 3px; overflow: hidden;
}
.musicgen-loader.v71::before {
    content: ''; position: absolute;
    right: 0; top: 0; bottom: 0;
    width: 60%;
    background: linear-gradient(90deg, transparent, #fbbf24 40%, #ef4444 100%);
    animation: musicgen-gain-reduce 1.2s ease-in-out infinite;
    transform-origin: right center;
}

/* ====================================================================== */
/* FAMILY 8: Live & Concert (v72-v79) */
/* ====================================================================== */

/* v72 — Stage spotlight sweep */
.musicgen-loader.v72 {
    background: radial-gradient(ellipse at 50% 100%, var(--accent) 0%, transparent 60%);
    border-radius: 0 0 50% 50% / 0 0 100% 100%;
}
.musicgen-loader.v72::before {
    content: ''; position: absolute;
    bottom: 0; left: 50%;
    width: 80%; height: 100%;
    background: linear-gradient(to top, rgba(236,72,153,0.3), transparent);
    clip-path: polygon(40% 100%, 60% 100%, 80% 0%, 20% 0%);
    transform-origin: bottom center;
    transform: translateX(-50%);
    animation: musicgen-spotlight 2.5s ease-in-out infinite alternate;
}

/* v73 — Crowd bouncing (many small dots rising/falling) */
.musicgen-loader.v73 {
    width: 88px; height: 56px; background: none;
    display: grid; grid-template-columns: repeat(7, 1fr); grid-template-rows: 1fr; gap: 3px; align-items: end;
}
.musicgen-loader.v73 i {
    width: 100%; height: 50%;
    background: var(--accent);
    border-radius: 50% 50% 20% 20% / 70% 70% 30% 30%;
    animation: musicgen-crowd-bounce 0.9s ease-in-out infinite;
}
.musicgen-loader.v73 i:nth-child(1) { animation-delay: 0s; background: var(--accent); }
.musicgen-loader.v73 i:nth-child(2) { animation-delay: -0.1s; background: var(--accent-3); }
.musicgen-loader.v73 i:nth-child(3) { animation-delay: -0.2s; background: var(--accent-2); }
.musicgen-loader.v73 i:nth-child(4) { animation-delay: -0.3s; background: var(--accent-4); }
.musicgen-loader.v73 i:nth-child(5) { animation-delay: -0.4s; background: var(--accent-2); }
.musicgen-loader.v73 i:nth-child(6) { animation-delay: -0.5s; background: var(--accent-3); }
.musicgen-loader.v73 i:nth-child(7) { animation-delay: -0.6s; background: var(--accent); }

/* v74 — Conductor baton swing */
.musicgen-loader.v74 {
    background: none;
}
.musicgen-loader.v74::before {
    content: ''; position: absolute;
    bottom: 20%; left: 50%;
    width: 3px; height: 65%;
    background: linear-gradient(to top, #64748b, #f1f5f9);
    border-radius: 2px;
    transform-origin: bottom center;
    animation: musicgen-conductor 1.5s ease-in-out infinite;
}
.musicgen-loader.v74::after {
    content: ''; position: absolute;
    bottom: 78%; left: 50%;
    width: 10px; height: 10px;
    background: var(--accent);
    border-radius: 50%;
    transform: translateX(-50%);
    animation: musicgen-conductor-tip 1.5s ease-in-out infinite;
}

/* v75 — Orchestra bows (vertical strokes moving up/down in sync) */
.musicgen-loader.v75 {
    width: 80px; height: 72px; background: none;
    display: flex; justify-content: space-between;
}
.musicgen-loader.v75 i {
    width: 6px; height: 100%;
    background: linear-gradient(to bottom, var(--accent), var(--accent-2));
    border-radius: 3px;
    animation: musicgen-bow 1.4s ease-in-out infinite;
    transform-origin: center;
}
.musicgen-loader.v75 i:nth-child(2) { animation-direction: reverse; }
.musicgen-loader.v75 i:nth-child(3) { animation-delay: -0.3s; }
.musicgen-loader.v75 i:nth-child(4) { animation-delay: -0.3s; animation-direction: reverse; }

/* v76 — "ON AIR" sign blinking */
.musicgen-loader.v76 {
    width: 86px; height: 36px;
    background: linear-gradient(180deg, #450a0a, #7f1d1d);
    border-radius: 6px;
    border: 2px solid #dc2626;
    display: flex; align-items: center; justify-content: center;
    animation: musicgen-on-air 1.4s ease-in-out infinite;
    box-shadow: 0 0 16px rgba(220,38,38,0.4);
}
.musicgen-loader.v76::before {
    content: 'ON AIR';
    color: #fef2f2;
    font-weight: 700;
    letter-spacing: 0.15em;
    font-size: 12px;
    text-shadow: 0 0 8px rgba(239,68,68,0.8);
}

/* v77 — Studio monitor wave (ping from one side) */
.musicgen-loader.v77 {
    width: 80px; height: 48px; background: none;
    overflow: hidden;
}
.musicgen-loader.v77::before {
    content: ''; position: absolute;
    top: 50%; left: 10%;
    width: 16px; height: 16px;
    background: var(--accent);
    border-radius: 50%;
    transform: translateY(-50%);
    box-shadow: 0 0 12px var(--accent);
}
.musicgen-loader.v77 i {
    position: absolute; top: 50%;
    width: 12px; height: 12px;
    border: 2px solid var(--accent);
    border-radius: 50%;
    transform: translateY(-50%);
    animation: musicgen-wave-left-to-right 1.5s ease-out infinite;
    opacity: 0;
}
.musicgen-loader.v77 i:nth-child(1) { animation-delay: 0s; }
.musicgen-loader.v77 i:nth-child(2) { animation-delay: 0.5s; }
.musicgen-loader.v77 i:nth-child(3) { animation-delay: 1s; }

/* v78 — Light bulb on a rhythm (warm glow pulsing) */
.musicgen-loader.v78 {
    background: radial-gradient(circle, #fbbf24 0%, #f59e0b 40%, transparent 60%);
    border-radius: 50%;
    animation: musicgen-bulb-rhythm 1s ease-in-out infinite;
}
.musicgen-loader.v78::before {
    content: ''; position: absolute; inset: 28%;
    background: radial-gradient(circle, #fef3c7 0%, #fbbf24 50%, transparent 70%);
    border-radius: 50%;
    filter: blur(1px);
    animation: musicgen-bulb-inner 1s ease-in-out infinite;
}

/* v79 — Final: Synth starfield (dots in a cosmic field, twinkling) */
.musicgen-loader.v79 {
    background: radial-gradient(ellipse at center, rgba(236,72,153,0.08) 0%, transparent 70%);
    border-radius: 50%;
}
.musicgen-loader.v79 i {
    position: absolute;
    width: 3px; height: 3px;
    background: white;
    border-radius: 50%;
    box-shadow: 0 0 4px white;
    animation: musicgen-twinkle 2s ease-in-out infinite;
}
.musicgen-loader.v79 i:nth-child(1) { top: 15%; left: 20%; animation-delay: 0s; }
.musicgen-loader.v79 i:nth-child(2) { top: 30%; left: 60%; animation-delay: 0.3s; background: var(--accent); box-shadow: 0 0 6px var(--accent); }
.musicgen-loader.v79 i:nth-child(3) { top: 45%; left: 35%; animation-delay: 0.6s; background: var(--accent-2); box-shadow: 0 0 6px var(--accent-2); }
.musicgen-loader.v79 i:nth-child(4) { top: 60%; left: 75%; animation-delay: 0.9s; background: var(--accent-3); box-shadow: 0 0 6px var(--accent-3); }
.musicgen-loader.v79 i:nth-child(5) { top: 75%; left: 25%; animation-delay: 1.2s; background: var(--accent-4); box-shadow: 0 0 6px var(--accent-4); }
.musicgen-loader.v79 i:nth-child(6) { top: 85%; left: 55%; animation-delay: 1.5s; }
.musicgen-loader.v79 i:nth-child(7) { top: 20%; left: 80%; animation-delay: 1.8s; background: var(--accent-3); box-shadow: 0 0 6px var(--accent-3); }

/* ====================================================================== */
/* Shared keyframes                                                       */
/* ====================================================================== */

@keyframes musicgen-spin {
    from { transform: translate(-50%, -50%) rotate(0deg); }
    to   { transform: translate(-50%, -50%) rotate(360deg); }
}
@keyframes musicgen-reel-spin {
    from { transform: translateY(-50%) rotate(0deg); }
    to   { transform: translateY(-50%) rotate(360deg); }
}
@keyframes musicgen-eq {
    0%, 100% { height: 20%; }
    50%      { height: 100%; }
}
@keyframes musicgen-eq-horiz {
    0%, 100% { transform: scaleX(0.3); opacity: 0.5; }
    50%      { transform: scaleX(1); opacity: 1; }
}
@keyframes musicgen-ripple {
    0%   { transform: scale(0.3); opacity: 1; }
    100% { transform: scale(1.6); opacity: 0; }
}
@keyframes musicgen-pulse {
    0%, 100% { transform: scaleY(0.3); }
    50%      { transform: scaleY(1); }
}
@keyframes musicgen-swing {
    0%   { transform: translateX(-50%) rotate(-35deg); }
    100% { transform: translateX(-50%) rotate(35deg); }
}
@keyframes musicgen-stave {
    0%   { transform: translateX(0); opacity: 0; }
    20%  { opacity: 1; }
    80%  { opacity: 1; }
    100% { transform: translateX(50%); opacity: 0; }
}
@keyframes musicgen-vibrate {
    0%, 100% { transform: translateX(0); }
    50%      { transform: translateX(2px); }
}
@keyframes musicgen-signal {
    0%, 100% { opacity: 0.3; transform: scaleY(0.7); }
    50%      { opacity: 1; transform: scaleY(1); }
}
@keyframes musicgen-dot-wave {
    0%, 80%, 100% { transform: scale(0.5); opacity: 0.3; }
    40%          { transform: scale(1.3); opacity: 1; }
}
@keyframes musicgen-spectrum {
    0%, 100% { height: 15%; }
    30%      { height: 80%; }
    60%      { height: 40%; }
    90%      { height: 60%; }
}
@keyframes musicgen-mirror {
    0%, 100% { transform: scaleY(0.3); }
    50%      { transform: scaleY(1.1); }
}
@keyframes musicgen-radial-bar {
    0%, 100% { opacity: 0.3; }
    50%      { opacity: 1; }
}
@keyframes musicgen-sine-wave {
    0%   { transform: translateX(0) scaleY(1); }
    25%  { transform: translateX(-10%) scaleY(0.3); }
    50%  { transform: translateX(0) scaleY(1); }
    75%  { transform: translateX(10%) scaleY(0.3); }
    100% { transform: translateX(0) scaleY(1); }
}
@keyframes musicgen-fade-bar {
    0%, 100% { opacity: 0.2; }
    50%      { opacity: 1; }
}
@keyframes musicgen-trace {
    from { transform: translate(0, -50%); }
    to   { transform: translate(50%, -50%); }
}
@keyframes musicgen-slide-right {
    from { transform: translateX(0); }
    to   { transform: translateX(50%); }
}
@keyframes musicgen-triangle {
    0%, 100% { transform: translateY(-10px) scale(1); }
    50%      { transform: translateY(10px) scale(1.2); }
}
@keyframes musicgen-saw {
    from { background-position: 0% 0%; }
    to   { background-position: 100% 0%; }
}
@keyframes musicgen-osc-trace {
    0%   { left: 5%; top: 50%; }
    25%  { left: 25%; top: 20%; }
    50%  { left: 50%; top: 80%; }
    75%  { left: 75%; top: 30%; }
    100% { left: 95%; top: 50%; }
}
@keyframes musicgen-pluck {
    0%   { transform: translateY(-50%) scaleY(1); }
    20%  { transform: translateY(-50%) scaleY(8); }
    40%  { transform: translateY(-50%) scaleY(1); }
    60%  { transform: translateY(-50%) scaleY(4); }
    80%  { transform: translateY(-50%) scaleY(1); }
    100% { transform: translateY(-50%) scaleY(2); }
}
@keyframes musicgen-key-press {
    0%, 100% { transform: scaleY(1) translateY(0); }
    30%      { transform: scaleY(0.92) translateY(4px); }
}
@keyframes musicgen-strum {
    0%, 100% { transform: translateX(-50%) rotate(-10deg); opacity: 0.6; }
    50%      { transform: translateX(-50%) rotate(10deg); opacity: 1; }
}
@keyframes musicgen-drum-hit {
    0%   { transform: scale(1); opacity: 1; }
    60%  { transform: scale(1.5); opacity: 0.5; }
    100% { transform: scale(0.9); opacity: 1; }
}
@keyframes musicgen-kick-pulse {
    0%, 100% { transform: translate(-50%, -50%) scale(1); }
    50%      { transform: translate(-50%, -50%) scale(1.15); }
}
@keyframes musicgen-kick-ring {
    0%   { transform: scale(1); opacity: 1; }
    100% { transform: scale(1.6); opacity: 0; }
}
@keyframes musicgen-snare-roll {
    0%, 100% { transform: scale(0.6); opacity: 0.5; }
    50%      { transform: scale(1.3); opacity: 1; }
}
@keyframes musicgen-hihat {
    0%, 100% { opacity: 0.4; }
    50%      { opacity: 1; transform: translateX(-50%) scaleY(1.3); }
}
@keyframes musicgen-breathe {
    0%, 100% { opacity: 0.6; transform: scale(1); }
    50%      { opacity: 1; transform: scale(1.08); }
}
@keyframes musicgen-knob-rotate {
    from { transform: translate(-50%, -50%) rotate(-40deg); }
    to   { transform: translate(-50%, -50%) rotate(40deg); }
}
@keyframes musicgen-xylo {
    0%, 100% { transform: scaleY(1); }
    50%      { transform: scaleY(0.7); }
}
@keyframes musicgen-violin-vibrate {
    0%, 100% { transform: translateY(-50%) translateX(0); }
    50%      { transform: translateY(-50%) translateX(1px); }
}
@keyframes musicgen-violin-bow {
    0%   { left: -4px; }
    50%  { left: calc(100% - 4px); }
    100% { left: -4px; }
}
@keyframes musicgen-trumpet-ring {
    0%   { transform: scale(0.4); opacity: 1; }
    100% { transform: scale(1.8); opacity: 0; }
}
@keyframes musicgen-mic-glow {
    0%, 100% { box-shadow: 0 0 8px rgba(236,72,153,0.4); }
    50%      { box-shadow: 0 0 18px rgba(236,72,153,0.8); }
}
@keyframes musicgen-flute-hole {
    0%, 100% { opacity: 0.4; transform: translateX(-50%) scale(1); }
    50%      { opacity: 1; transform: translateX(-50%) scale(1.5); }
}
@keyframes musicgen-note-float {
    0%, 100% { transform: translateY(0) rotate(-20deg); opacity: 1; }
    50%      { transform: translateY(-6px) rotate(-15deg); opacity: 0.7; }
}
@keyframes musicgen-bounce {
    0%, 100% { transform: translateY(0); }
    50%      { transform: translateY(-8px); }
}
@keyframes musicgen-nod {
    0%, 100% { transform: translate(-50%, -50%) rotate(-8deg); }
    50%      { transform: translate(-50%, -50%) rotate(8deg); }
}
@keyframes musicgen-float {
    0%, 100% { transform: translate(-50%, -50%) translateY(0); opacity: 1; }
    50%      { transform: translate(-50%, -50%) translateY(-8px); opacity: 0.8; }
}
@keyframes musicgen-heartbeat {
    0%, 100% { transform: scale(1); }
    20%      { transform: scale(1.15); }
    40%      { transform: scale(1); }
    60%      { transform: scale(1.1); }
    80%      { transform: scale(1); }
}
@keyframes musicgen-heartbeat-ring {
    0%   { transform: scale(1); opacity: 0.6; }
    100% { transform: scale(1.7); opacity: 0; }
}
@keyframes musicgen-clap {
    0%, 100% { transform: translateX(0); }
    50%      { transform: translateX(22%); }
}
@keyframes musicgen-four-floor {
    0%, 100% { background: rgba(255,255,255,0.1); box-shadow: 0 0 0 rgba(236,72,153,0); }
    10%      { background: var(--accent); box-shadow: 0 0 12px var(--accent); }
}
@keyframes musicgen-beat-grid {
    0%, 100% { background: rgba(255,255,255,0.08); }
    10%      { background: var(--accent); box-shadow: 0 0 6px var(--accent); }
}
@keyframes musicgen-pad-flash {
    0%, 100% { background: rgba(255,255,255,0.08); }
    5%       { background: var(--accent); box-shadow: 0 0 6px var(--accent); }
}
@keyframes musicgen-click-tock {
    from { transform: translateX(-12px) scale(1); opacity: 1; }
    to   { transform: translateX(12px) scale(1.2); opacity: 0.6; }
}
@keyframes musicgen-snap {
    0%, 100% { transform: scale(1); opacity: 0.8; }
    50%      { transform: scale(1.4); opacity: 1; }
}
@keyframes musicgen-snap-spark {
    0%   { opacity: 0; }
    20%  { opacity: 1; }
    100% { opacity: 0; }
}
@keyframes musicgen-fader {
    from { bottom: 10%; }
    to   { bottom: 80%; }
}
@keyframes musicgen-vu-needle {
    from { transform: translateX(-50%) rotate(-35deg); }
    to   { transform: translateX(-50%) rotate(35deg); }
}
@keyframes musicgen-peak-meter {
    0%, 100% { opacity: 0.15; }
    50%      { opacity: 1; }
}
@keyframes musicgen-step-seq {
    0%, 100% { filter: brightness(0.4); box-shadow: none; }
    10%      { filter: brightness(1.8); box-shadow: 0 0 4px var(--accent); }
}
@keyframes musicgen-daw-scroll {
    from { transform: translateX(0); }
    to   { transform: translateX(-50%); }
}
@keyframes musicgen-pan-knob {
    from { transform: translate(-50%, -100%) rotate(-70deg); }
    to   { transform: translate(-50%, -100%) rotate(70deg); }
}
@keyframes musicgen-gain-reduce {
    0%, 100% { transform: scaleX(1); }
    50%      { transform: scaleX(0.3); }
}
@keyframes musicgen-spotlight {
    from { transform: translateX(-50%) rotate(-15deg); }
    to   { transform: translateX(-50%) rotate(15deg); }
}
@keyframes musicgen-crowd-bounce {
    0%, 100% { transform: translateY(0) scaleY(1); }
    50%      { transform: translateY(-30%) scaleY(1.3); }
}
@keyframes musicgen-conductor {
    0%, 100% { transform: translateX(-50%) rotate(-20deg); }
    50%      { transform: translateX(-50%) rotate(20deg); }
}
@keyframes musicgen-conductor-tip {
    0%, 100% { transform: translate(-50%, 0) rotate(-20deg) translateY(-50px); }
    50%      { transform: translate(-50%, 0) rotate(20deg) translateY(-50px); }
}
@keyframes musicgen-bow {
    0%, 100% { transform: translateY(-20%); }
    50%      { transform: translateY(20%); }
}
@keyframes musicgen-on-air {
    0%, 100% { opacity: 1; box-shadow: 0 0 16px rgba(220,38,38,0.4); }
    50%      { opacity: 0.7; box-shadow: 0 0 8px rgba(220,38,38,0.2); }
}
@keyframes musicgen-wave-left-to-right {
    0%   { left: 20%; transform: translateY(-50%) scale(0.5); opacity: 1; }
    100% { left: 90%; transform: translateY(-50%) scale(1.5); opacity: 0; }
}
@keyframes musicgen-bulb-rhythm {
    0%, 100% { filter: brightness(0.7); }
    50%      { filter: brightness(1.4); }
}
@keyframes musicgen-bulb-inner {
    0%, 100% { opacity: 0.6; }
    50%      { opacity: 1; }
}
@keyframes musicgen-twinkle {
    0%, 100% { opacity: 0.3; transform: scale(0.8); }
    50%      { opacity: 1; transform: scale(1.3); }
}
@keyframes musicgen-arm-sweep {
    0%   { transform: rotate(-45deg); }
    100% { transform: rotate(-20deg); }
}

/* Breathing glass surface — same effect as imggen-glass-breathe so the two
   gen types feel related. Applied on the placeholder surface itself. */
.gen-music-placeholder, .gen-music-placeholder-single {
    animation: musicgen-glass-breathe 8s ease-in-out infinite;
}
@keyframes musicgen-glass-breathe {
    0%, 100% { background-position: 0% 0%; }
    50%      { background-position: 100% 100%; }
}

/* Loading-dots suffix in label */
.musicgen-label .loading-dots::after {
    content: '';
    animation: loading-dots 1.4s steps(4, end) infinite;
}
@keyframes loading-dots {
    0%, 20%   { content: ''; }
    40%       { content: '.'; }
    60%       { content: '..'; }
    80%, 100% { content: '...'; }
}
