// auto-split module


function updateStatusClass(selectEl) {
    if (!selectEl) return;
    const tr = selectEl.closest('tr');
    ['st-pass', 'st-fail', 'st-skip', 'st-blocked'].forEach(c => selectEl.classList.remove(c));
    ['row-pass', 'row-fail', 'row-skip', 'row-blocked'].forEach(c => tr.classList.remove(c));
    const v = selectEl.value || '';
    if (!v) return;
    selectEl.classList.add('st-' + v);
    tr.classList.add('row-' + v);
}


    function bind() {
        const b = document.getElementById('btnPushDocBee');
        if (b) {
            b.removeAttribute('disabled');
            b.classList.remove('is-busy');
            b.style.pointerEvents = 'auto';
            b.addEventListener('click', postToDocBee, {
                once: false
            });
        }
        const p = document.getElementById('btnPrintPDF');
        const btn = document.getElementById('btnExportAll');
        if (btn) {
            btn.addEventListener('click', e => {
                e.preventDefault();
                exportAll().catch(err => alert('Export error: ' + err.message));
            });
            console.log('Export-Button gebunden');
        } else {
            alert('Export-Button nicht gefunden (id=btnExportAll).');
        }
    }


function updateTokenBadge(state) {
    const el = els.docbeeTokenStatus;
    if (!el) return;
    const has = !!(typeof DOCBEE_TOKEN !== 'undefined' && String(DOCBEE_TOKEN || '').trim().length > 10);
    el.classList.remove('ok', 'bad', 'warn');
    if (state === 'bad') {
        el.textContent = 'DocBee: ungültig/401';
        el.classList.add('bad');
        return;
    }
    if (state === 'ok' || (state === undefined && has)) {
        el.textContent = 'DocBee: Token gesetzt';
        el.classList.add('ok');
        return;
    }
    el.textContent = 'DocBee: fehlt';
    el.classList.add('warn');
}


function checkRequired(run) {
    const missing = run.steps.filter(s => (s.kind || 'step') === 'step' && s.required && !s.status);
    if (missing.length > 0) {
        alert("Folgende Pflichtschritte haben keinen Status:\n" +
            missing.map(s => `${s.id} – ${s.title}`).join("\n"));
        return false;
    }
    return true;
}


    const badge = (status) => {
        const map = {
            pass: {
                txt: '✅ PASS',
                bg: '#DCFCE7',
                bd: '#22c55e'
            },
            fail: {
                txt: '❌ FAIL',
                bg: '#FEE2E2',
                bd: '#ef4444'
            },
            skip: {
                txt: '⏭️ SKIP',
                bg: '#E5E7EB',
                bd: '#6b7280'
            },
            blocked: {
                txt: '⛔ BLOCK',
                bg: '#FEF3C7',
                bd: '#f59e0b'
            },
            '': {
                txt: '—',
                bg: '#F3F4F6',
                bd: '#9ca3af'
            }
        };
        const m = map[status || ''] || map[''];
        return `<span style="display:inline-block;padding:2px 8px;border:1px solid ${m.bd};border-radius:999px;background:${m.bg};font-weight:600;font-size:12px">${m.txt}</span>`;
    }