/* Le jeu libre occupe la largeur ; gamme, accord et attaque restent distincts. */
[data-module="improvise"] .stage {
    align-items: stretch;
    text-align: left;
    gap: var(--gl-space-xs);
}

.improvise-instruction {
    order: 1;
    width: 100%;
    font-size: var(--gl-text-body);
    line-height: 1.5;
}

.improvise-harmony {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: var(--gl-space-m);
    padding: var(--gl-space-m);
    background: var(--gl-surface-2);
    border-radius: var(--gl-radius-l);
}

.improvise-chord {
    display: block;
    color: var(--gl-ink);
    font-size: clamp(3rem, 8vw, 6rem);
    line-height: 1.1;
}

.improvise-degree, .improvise-next, .improvise-beat {
    font-size: var(--gl-text-title3);
}

.improvise-legend {
    color: var(--gl-text-2);
    line-height: 1.5;
}

.improvise-keyboard { width: 100%; min-width: 0; }
.improvise-harmony { width: 100%; }
.improvise-kb { min-width: 0; }

.improvise-kb .kb-key.is-scale {
    box-shadow: inset 0 -9px 0 var(--hand-left);
}

.improvise-kb .kb-key.is-chord {
    box-shadow: inset 0 -22px 0 var(--hand-right);
}

.improvise-kb .kb-key .kb-label {
    padding: 2px;
    background: var(--key-white);
    color: var(--key-ink);
    border-radius: var(--gl-radius-xs);
}

.improvise-kb .kb-key.is-down.is-neutral {
    background: var(--gl-ink);
    color: var(--gl-surface);
    box-shadow: inset 0 0 0 3px var(--gl-text);
}

.improvise-kb .kb-key.is-down .kb-label {
    background: var(--gl-surface);
    color: var(--gl-text);
    font-weight: var(--gl-weight-bold);
}
