let ddd;
document.querySelectorAll( '.quest__gaps_gap' ).forEach( d => {
d.draggable = true;
d.ondragstart = e => ddd = e.target;
} );
document.querySelectorAll( '.quest__gaps_target' ).forEach( s => {
s.ondragover = e => {
e.preventDefault();
}
s.ondrop = e => {
const s = e.target;
if( s.tagName !== 'SPAN' ) return;
e.preventDefault();
s.appendChild( ddd );
}
} );
В кнопке listen на answer не надо переделывать, ибо offer-ы перестаёт принимать.
Для ошибки с кандидатом без "далёкого" описания нужно сделать накопитель, чтобы откладывать попытки приёма кандидатов позже, когда описание будет.