// ===================================================== // Eksamenstrener — practice questions with guided answers // ===================================================== let examData = null; let examFilter = 'all'; async function examLoad() { if (examData) return examData; try { const res = await fetch('data/exam.json'); if (!res.ok) throw new Error('Not ready'); examData = await res.json(); } catch (e) { console.warn('Eksamen-data ikke klar ennå:', e.message); examData = []; } return examData; } // Normalize category names — agents sometimes used "samfunnsansvar" function normalizeCat(cat) { if (cat === 'samfunnsansvar') return 'samfunn'; return cat; } function examFilteredQuestions() { if (examFilter === 'all') return examData; return examData.filter(q => normalizeCat(q.category) === examFilter); } function examCategoryLabel(cat) { return { etikk: 'Oppgave I · Etikk', baerekraft: 'Oppgave II · Bærekraft', samfunn: 'Oppgave III · Samfunnsansvar', case: 'Oppgave IV · Case-drøfting' }[normalizeCat(cat)] || cat; } function examCategoryColor(cat) { return { etikk: 'var(--theme-etikk)', baerekraft: 'var(--theme-baerekraft)', samfunn: 'var(--theme-samfunn)', case: 'var(--theme-verktoy)' }[normalizeCat(cat)] || 'var(--accent)'; } function examRender() { const container = document.getElementById('examQuestions'); if (!container) return; // Filter chips at top container.innerHTML = `
${q.question}
${q.checklist ? `