Compare commits

...

4 Commits

Author SHA1 Message Date
f611bdcd7e Recentre les encadres TP1/TP2/TP3 de la slide finale
Passe la marge de .final-grid de 1.5rem 0 a 1.5rem auto pour centrer la
grille des trois travaux pratiques.
2026-07-21 08:22:29 +02:00
f7c846c85c Simplifie les boutons d'action du TP Nuisibles
Slide 1 : retire le bouton "Corriger un rendu", l'ecran de contexte ne
garde que l'identification. Slide 13 : ne conserve que Telecharger le PDF,
Corriger un rendu et Recommencer, aligne sur le style BioCID (PDF plein
ambre, deux boutons contour) et retire le lien biocid-anses.fr.
2026-07-21 08:20:13 +02:00
a74df51201 Migre la navigation du TP Nuisibles dans la bottom bar
Reprend le modele de footer d'Exo_BioCID : tous les boutons d'avancement
et d'aide passent dans la barre du bas, pilotes par un slideConfig
(bouton suivant, libelle, indice par slide). Supprime les boutons
in-slide correspondants, gere la validation du nom de groupe et le
deverrouillage du bouton apres choix du cas, et applique le style
footer-btn (compteur a gauche, actions centrees).
2026-07-21 08:16:05 +02:00
42650ca351 Aligne le TP Nuisibles sur le style des autres exercices
Inverse l'accueil et l'identification (héro en slide 0, contexte et
identification du groupe en slide 1), applique le style BioCID aux deux
premieres slides et supprime le badge d'avancement en haut a droite,
redondant avec la barre de progression.
2026-07-21 08:10:09 +02:00

View File

@@ -17,7 +17,7 @@
justify-content: center; justify-content: center;
padding: 2rem; padding: 2rem;
padding-top: calc(70px + 2rem); padding-top: calc(70px + 2rem);
padding-bottom: calc(52px + 2rem); padding-bottom: calc(84px + 2rem);
opacity: 0; opacity: 0;
transition: opacity 0.4s ease; transition: opacity 0.4s ease;
overflow-y: auto; overflow-y: auto;
@@ -38,56 +38,58 @@
transition: width 0.4s ease; transition: width 0.4s ease;
} }
/* PHASE INDICATOR */
.phase-badge {
position: fixed;
top: 80px; right: 16px;
font-family: 'Syne', sans-serif;
font-size: 11px;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
padding: 4px 12px;
border-radius: 20px;
z-index: 100;
}
/* BOTTOM BAR */ /* BOTTOM BAR */
.bottom-bar { .bottom-bar {
position: fixed; position: fixed;
bottom: 0; left: 0; right: 0; bottom: 0; left: 0; right: 0;
height: 52px; height: 84px;
background: rgba(250, 238, 218, 0.98); background: rgba(250, 238, 218, 0.98);
border-top: 2px solid var(--amber); border-top: 2px solid var(--amber);
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: center;
padding: 0 20px; padding: 0 20px;
z-index: 100; z-index: 100;
backdrop-filter: blur(10px); backdrop-filter: blur(10px);
} }
.bottom-actions {
/* SLIDE NAV */ display: flex;
align-items: center;
gap: 12px;
flex-wrap: wrap;
justify-content: center;
}
.footer-btn {
font-family: 'Syne', sans-serif;
font-size: 13px;
font-weight: 600;
padding: 11px 24px;
border-radius: 40px;
border: 1.5px solid var(--amber);
cursor: pointer;
display: inline-flex;
align-items: center;
gap: 6px;
line-height: 1;
transition: all 0.2s;
}
.footer-btn:hover { transform: translateY(-1px); }
.footer-btn:active { transform: scale(0.98); }
.footer-btn.is-primary { background: var(--amber); color: #fff; }
.footer-btn.is-primary:hover { background: var(--amber-dark); }
.footer-btn.is-secondary { background: transparent; color: var(--amber-dark); }
.footer-btn.is-secondary:hover { background: rgba(186,117,23,0.08); }
.slide-counter { .slide-counter {
position: absolute;
left: 20px;
font-size: 12px; font-size: 12px;
font-family: 'Syne', sans-serif; font-family: 'Syne', sans-serif;
font-weight: 600; font-weight: 600;
color: var(--amber-dark); color: var(--amber-dark);
} }
@media (max-width: 560px) {
/* BACK BUTTON */ .slide-counter { display: none; }
.back-btn {
background: none;
border: 0.5px solid var(--amber);
border-radius: 20px;
padding: 6px 16px;
font-size: 12px;
color: var(--amber-dark);
cursor: pointer;
transition: all 0.2s;
font-family: 'DM Sans', sans-serif;
} }
.back-btn:hover { background: rgba(186,117,23,0.08); }
/* FORMATEUR SELECTOR */ /* FORMATEUR SELECTOR */
.formateur-btn { .formateur-btn {
@@ -581,7 +583,7 @@
gap: 12px; gap: 12px;
max-width: 640px; max-width: 640px;
width: 100%; width: 100%;
margin: 1.5rem 0; margin: 1.5rem auto;
} }
.final-card { .final-card {
background: white; background: white;
@@ -613,7 +615,7 @@
/* SCROLLABLE AREA */ /* SCROLLABLE AREA */
.scroll-area { .scroll-area {
overflow-y: auto; overflow-y: auto;
max-height: calc(100vh - 232px); max-height: calc(100vh - 200px);
width: 100%; width: 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@@ -654,13 +656,14 @@
<!-- Progress bar --> <!-- Progress bar -->
<div class="progress-bar"><div class="progress-fill" id="progressFill"></div></div> <div class="progress-bar"><div class="progress-fill" id="progressFill"></div></div>
<!-- Phase badge -->
<div class="phase-badge" id="phaseBadge" style="display:none"></div>
<!-- Bottom bar --> <!-- Bottom bar -->
<div class="bottom-bar" id="bottomBar" style="display:none;"> <div class="bottom-bar" id="bottomBar" style="display:none;">
<button class="back-btn" id="backBtn" onclick="goBack()" style="display:none;">← Retour</button>
<div class="slide-counter" id="slideCounter"></div> <div class="slide-counter" id="slideCounter"></div>
<div class="bottom-actions">
<button class="footer-btn is-secondary" id="backBtn" onclick="goBack()" style="display:none;">← Retour</button>
<button class="footer-btn is-secondary" id="footerHintBtn" onclick="showHintCurrent()" style="display:none;">💡 Besoin d'aide ?</button>
<button class="footer-btn is-primary" id="footerNextBtn" onclick="goNext()" style="display:none;">Étape suivante →</button>
</div>
</div> </div>
<!-- Modal overlay --> <!-- Modal overlay -->
@@ -673,45 +676,41 @@
</div> </div>
</div> </div>
<!-- ======================== SLIDE 0 — IDENTIFICATION ======================== --> <!-- ======================== SLIDE 0 — ACCUEIL ======================== -->
<div class="slide active fade-in" id="slide-0"> <div class="slide active fade-in" id="slide-0">
<div class="deco-circle" style="width:320px;height:320px;background:var(--amber-light);top:-80px;left:-80px;opacity:0.5;"></div> <div class="deco-circle" style="width:400px;height:400px;background:var(--amber-light);top:-100px;right:-80px;opacity:0.6;"></div>
<div style="text-align:center; z-index:1; width:100%;"> <div class="deco-circle" style="width:200px;height:200px;background:var(--amber-light);bottom:60px;left:-60px;opacity:0.5;"></div>
<div class="section-tag" style="background:var(--amber-light);color:var(--amber-dark);">Avant de commencer</div> <div style="text-align:center;">
<div class="slide-title">Identification du groupe</div> <div class="hero-label">Certibiocide — Travaux pratiques</div>
<p class="slide-intro" style="margin:0.5rem auto 0;max-width:420px;">Ces informations permettront au formateur de retrouver vos réponses.</p> <div class="hero-title">Étude de cas<br>Nuisibles</div>
<div class="identity-card"> <p class="hero-sub">Votre mission, si vous l'acceptez : maîtriser l'identification, le traitement et la sécurité face aux nuisibles.</p>
<div class="identity-title">👥 Identification du groupe</div> <button class="btn btn-amber" onclick="goTo(1)">Démarrer la mission →</button>
<div class="identity-fields">
<input type="text" id="inputNom" placeholder="Nom du groupe / stagiaires (ex : Groupe 3 — Dupont / Martin)" autocomplete="off">
<input type="date" id="inputDate">
<div class="formateur-label">Formateur de la session</div>
<div class="formateur-row">
<button type="button" class="formateur-btn" id="btnNathan" onclick="selectFormateur('Nathan')">Nathan</button>
<button type="button" class="formateur-btn" id="btnGauthier" onclick="selectFormateur('Gauthier')">Gauthier</button>
</div>
</div>
</div>
<div id="idError" style="color:var(--coral);font-size:13px;margin-bottom:0.5rem;display:none;">Merci de renseigner au moins le nom du groupe.</div>
<div style="display:flex;gap:12px;justify-content:center;flex-wrap:wrap;">
<button class="btn btn-teal" onclick="confirmIdentite()">Continuer →</button>
<a href="corriger-exercice.html?exo=tp" class="btn btn-outline btn-teal">Corriger</a>
</div>
</div> </div>
</div> </div>
<!-- ======================== SLIDE 1 — ACCUEIL ======================== --> <!-- ======================== SLIDE 1 — CONTEXTE & IDENTIFICATION ======================== -->
<div class="slide" id="slide-1"> <div class="slide" id="slide-1">
<div class="deco-circle" style="width:400px;height:400px;background:var(--amber-light);top:-100px;right:-80px;opacity:0.6;"></div> <div class="deco-circle" style="width:300px;height:300px;background:var(--amber-light);top:-60px;left:-60px;opacity:0.4;"></div>
<div class="deco-circle" style="width:200px;height:200px;background:var(--amber-light);bottom:60px;left:-60px;opacity:0.5;"></div>
<div class="section-tag" style="background:var(--amber-light);color:var(--amber-dark);">Avant de commencer</div> <div class="section-tag" style="background:var(--amber-light);color:var(--amber-dark);">Avant de commencer</div>
<div class="slide-title">Certibiocide — Travaux pratiques</div> <div class="slide-title">Contexte & accès</div>
<p class="slide-intro">Votre mission, si vous l'acceptez : maîtriser l'identification, le traitement et la sécurité face aux nuisibles.</p> <p class="slide-intro">3 travaux pratiques vous attendent : protocole d'intervention, recherche produit sur BioCID, puis analyse de risques. Ces informations permettront au formateur de retrouver vos réponses.</p>
<div class="info-card"> <div class="info-card" style="max-width:620px;">
<span>🎯</span> <span>🎯</span>
<div>3 travaux pratiques vous attendent : définir un <strong>protocole d'intervention</strong>, trouver votre <strong>produit sur BioCID</strong>, puis réaliser l'<strong>analyse de risques</strong>.</div> <div>Vous allez définir un <strong>protocole d'intervention</strong>, trouver votre <strong>produit sur BioCID</strong>, puis réaliser l'<strong>analyse de risques</strong>.</div>
</div>
<div class="identity-card" style="max-width:620px;margin-top:0.5rem;">
<div class="identity-title">👥 Identification du groupe</div>
<div class="identity-fields">
<input type="text" id="inputNom" placeholder="Nom du groupe / stagiaires (ex : Groupe 3 — Dupont / Martin)" autocomplete="off">
<input type="date" id="inputDate">
<div class="formateur-label">Formateur de la session</div>
<div class="formateur-row">
<button type="button" class="formateur-btn" id="btnNathan" onclick="selectFormateur('Nathan')">Nathan</button>
<button type="button" class="formateur-btn" id="btnGauthier" onclick="selectFormateur('Gauthier')">Gauthier</button>
</div>
</div>
<div id="idError" style="color:var(--coral);font-size:13px;margin-top:8px;display:none;">Merci de renseigner au moins le nom du groupe.</div>
</div> </div>
<button class="btn btn-teal" style="margin-top:1.5rem;" onclick="goTo(2)">Démarrer la mission →</button>
</div> </div>
<!-- ======================== SLIDE 2 — CHOIX DU CAS ======================== --> <!-- ======================== SLIDE 2 — CHOIX DU CAS ======================== -->
@@ -751,9 +750,6 @@
<div class="case-sub">Camping</div> <div class="case-sub">Camping</div>
</div> </div>
</div> </div>
<div class="actions-row">
<button class="btn btn-teal" id="btnConfirmCase" onclick="goTo(3)" style="display:none">Confirmer le choix →</button>
</div>
</div> </div>
<!-- ======================== SLIDE 3 — CONSIGNES ======================== --> <!-- ======================== SLIDE 3 — CONSIGNES ======================== -->
@@ -781,7 +777,6 @@
<span>💡</span> <span>💡</span>
<div>À tout moment, cliquez sur <strong>« Besoin d'aide ? »</strong> pour accéder à un indice. Le formateur corrigera à l'oral en fin de séance.</div> <div>À tout moment, cliquez sur <strong>« Besoin d'aide ? »</strong> pour accéder à un indice. Le formateur corrigera à l'oral en fin de séance.</div>
</div> </div>
<button class="btn btn-teal" onclick="goTo(4)">Commencer le TP 1 →</button>
</div> </div>
<!-- ======================== SLIDE 4 — TP1 INTRO ======================== --> <!-- ======================== SLIDE 4 — TP1 INTRO ======================== -->
@@ -799,7 +794,6 @@
<div class="step-pill">2. Intervention</div> <div class="step-pill">2. Intervention</div>
<div class="step-pill">3. Évaluation</div> <div class="step-pill">3. Évaluation</div>
</div> </div>
<button class="btn btn-amber" onclick="goTo(5)">Commencer →</button>
</div> </div>
<!-- ======================== SLIDE 5 — TP1 PREVENTION ======================== --> <!-- ======================== SLIDE 5 — TP1 PREVENTION ======================== -->
@@ -840,10 +834,6 @@
<textarea class="answer-field" id="ans_prevention_4" placeholder="Votre réponse…" data-question="Éléments observés / preuve de présence du nuisible"></textarea> <textarea class="answer-field" id="ans_prevention_4" placeholder="Votre réponse…" data-question="Éléments observés / preuve de présence du nuisible"></textarea>
</li> </li>
</ul> </ul>
<div class="actions-row">
<button class="hint-btn" onclick="showHint('prevention')">💡 Besoin d'aide ?</button>
<button class="btn btn-amber" onclick="goTo(6)">Étape suivante →</button>
</div>
</div> </div>
</div> </div>
@@ -878,10 +868,6 @@
<textarea class="answer-field" id="ans_intervention_3" placeholder="Votre réponse…" data-question="Type de produit (TP) et mode de traitement"></textarea> <textarea class="answer-field" id="ans_intervention_3" placeholder="Votre réponse…" data-question="Type de produit (TP) et mode de traitement"></textarea>
</li> </li>
</ul> </ul>
<div class="actions-row">
<button class="hint-btn" onclick="showHint('intervention')">💡 Besoin d'aide ?</button>
<button class="btn btn-amber" onclick="goTo(7)">Étape suivante →</button>
</div>
</div> </div>
</div> </div>
@@ -912,10 +898,6 @@
<div style="background:var(--amber-light);border-radius:12px;padding:14px 18px;max-width:680px;width:100%;font-size:13px;color:var(--amber-dark);margin:0.75rem 0;"> <div style="background:var(--amber-light);border-radius:12px;padding:14px 18px;max-width:680px;width:100%;font-size:13px;color:var(--amber-dark);margin:0.75rem 0;">
<strong>TP 1 terminé !</strong> Préparez-vous à identifier le produit adapté à votre cas sur biocid-anses.fr. <strong>TP 1 terminé !</strong> Préparez-vous à identifier le produit adapté à votre cas sur biocid-anses.fr.
</div> </div>
<div class="actions-row">
<button class="hint-btn" onclick="showHint('evaluation')">💡 Besoin d'aide ?</button>
<button class="btn btn-coral" onclick="goTo(8)">Passer au TP 2 →</button>
</div>
</div> </div>
</div> </div>
@@ -937,7 +919,6 @@
</div> </div>
<a href="https://biocid-anses.fr" target="_blank" class="resource-link">Ouvrir le site ↗</a> <a href="https://biocid-anses.fr" target="_blank" class="resource-link">Ouvrir le site ↗</a>
</div> </div>
<button class="btn btn-coral" onclick="goTo(9)">Commencer →</button>
</div> </div>
<!-- ======================== SLIDE 9 — TP2 FDS & AMM ======================== --> <!-- ======================== SLIDE 9 — TP2 FDS & AMM ======================== -->
@@ -978,10 +959,6 @@
<textarea class="answer-field" id="ans_fds_4" placeholder="Votre réponse…" data-question="Risques pour la santé"></textarea> <textarea class="answer-field" id="ans_fds_4" placeholder="Votre réponse…" data-question="Risques pour la santé"></textarea>
</li> </li>
</ul> </ul>
<div class="actions-row">
<button class="hint-btn" onclick="showHint('fds')">💡 Besoin d'aide ?</button>
<button class="btn btn-coral" onclick="goTo(10)">Partie suivante →</button>
</div>
</div> </div>
</div> </div>
@@ -1026,10 +1003,6 @@
<div style="background:var(--amber-light);border-radius:12px;padding:14px 18px;max-width:680px;width:100%;font-size:13px;color:var(--amber-dark);margin:0.75rem 0;"> <div style="background:var(--amber-light);border-radius:12px;padding:14px 18px;max-width:680px;width:100%;font-size:13px;color:var(--amber-dark);margin:0.75rem 0;">
<strong>TP 2 terminé !</strong> Passez maintenant à l'analyse de risques complète. <strong>TP 2 terminé !</strong> Passez maintenant à l'analyse de risques complète.
</div> </div>
<div class="actions-row">
<button class="hint-btn" onclick="showHint('epi')">💡 Besoin d'aide ?</button>
<button class="btn btn-purple" onclick="goTo(11)">Passer au TP 3 →</button>
</div>
</div> </div>
</div> </div>
@@ -1046,9 +1019,6 @@
<div class="pyr-level" style="width:320px;background:#D85A30;">Communication</div> <div class="pyr-level" style="width:320px;background:#D85A30;">Communication</div>
<div class="pyr-level" style="width:360px;background:#BA7517;">EPI (dernier recours)</div> <div class="pyr-level" style="width:360px;background:#BA7517;">EPI (dernier recours)</div>
</div> </div>
<div class="actions-row" style="margin-top:1rem;">
<button class="btn btn-purple" onclick="goTo(12)">Remplir le tableau →</button>
</div>
</div> </div>
<!-- ======================== SLIDE 12 — TP3 TABLEAU ======================== --> <!-- ======================== SLIDE 12 — TP3 TABLEAU ======================== -->
@@ -1117,10 +1087,6 @@
<div style="background:var(--amber-light);border-radius:12px;padding:14px 18px;max-width:780px;width:100%;font-size:13px;color:var(--amber-dark);margin:0.25rem 0;"> <div style="background:var(--amber-light);border-radius:12px;padding:14px 18px;max-width:780px;width:100%;font-size:13px;color:var(--amber-dark);margin:0.25rem 0;">
<strong>TP 3 terminé !</strong> Présentez vos réponses au formateur pour la correction. <strong>TP 3 terminé !</strong> Présentez vos réponses au formateur pour la correction.
</div> </div>
<div class="actions-row">
<button class="hint-btn" onclick="showHint('analyse')">💡 Aide générale</button>
<button class="btn btn-blue" onclick="goTo(13)">Terminer la mission →</button>
</div>
</div> </div>
</div> </div>
@@ -1150,15 +1116,10 @@
<div class="final-card-sub">Analyse de risques</div> <div class="final-card-sub">Analyse de risques</div>
</div> </div>
</div> </div>
<div class="submit-zone"> <div class="actions-row">
<div style="display:flex;gap:10px;justify-content:center;flex-wrap:wrap;"> <button class="btn btn-amber" onclick="exporterPDF()">⬇ Télécharger mes réponses (PDF)</button>
<button class="btn btn-teal" onclick="exporterPDF()">⬇ Télécharger en PDF</button> <a href="corriger-exercice.html?exo=tp" class="btn btn-outline btn-teal">✔ Corriger un rendu</a>
<a href="corriger-exercice.html?exo=tp" class="btn btn-outline btn-teal">Corriger</a> <button class="btn btn-outline btn-teal" onclick="restartAll()">↺ Recommencer</button>
</div>
</div>
<div style="display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:0.75rem;">
<a href="https://biocid-anses.fr" target="_blank" class="btn btn-outline btn-teal" style="font-size:13px;padding:10px 20px;">biocid-anses.fr ↗</a>
<button class="btn btn-teal" onclick="restartAll()">↺ Recommencer depuis le début</button>
</div> </div>
</div> </div>
</div> </div>
@@ -1171,6 +1132,22 @@ const totalSlides = 13;
const selectedCase = { key: '', icon: '', title: '', desc: '' }; const selectedCase = { key: '', icon: '', title: '', desc: '' };
const stagiaire = { nom: '', date: '', formateur: '' }; const stagiaire = { nom: '', date: '', formateur: '' };
// Configuration des boutons du footer par slide (modèle BioCID)
const slideConfig = {
1: { next: 2, nextLabel: 'Continuer →' },
2: { next: 3, nextLabel: 'Confirmer le choix →' },
3: { next: 4, nextLabel: 'Commencer le TP 1 →' },
4: { next: 5, nextLabel: 'Commencer →' },
5: { next: 6, nextLabel: 'Étape suivante →', hint: 'prevention' },
6: { next: 7, nextLabel: 'Étape suivante →', hint: 'intervention' },
7: { next: 8, nextLabel: 'Passer au TP 2 →', hint: 'evaluation' },
8: { next: 9, nextLabel: 'Commencer →' },
9: { next: 10, nextLabel: 'Partie suivante →', hint: 'fds' },
10: { next: 11, nextLabel: 'Passer au TP 3 →', hint: 'epi' },
11: { next: 12, nextLabel: 'Remplir le tableau →' },
12: { next: 13, nextLabel: 'Terminer la mission →', hint: 'analyse' }
};
const hints = { const hints = {
prevention: { prevention: {
icon: '💡', icon: '💡',
@@ -1257,11 +1234,28 @@ function goTo(n) {
currentSlide = n; currentSlide = n;
next.style.display = 'flex'; next.style.display = 'flex';
setTimeout(() => { next.classList.add('active', 'fade-in'); }, 10); setTimeout(() => { next.classList.add('active', 'fade-in'); }, 10);
const sa = next.querySelector('.scroll-area');
if (sa) sa.scrollTop = 0;
if (n === 13) setTimeout(launchConfetti, 200); if (n === 13) setTimeout(launchConfetti, 200);
updateUI(); updateUI();
updateCaseBanners(); updateCaseBanners();
} }
function goNext() {
const cfg = slideConfig[currentSlide];
if (!cfg || cfg.next == null) return;
// Slide 1 : validation du nom du groupe avant de continuer
if (currentSlide === 1) { confirmIdentite(); return; }
// Slide 2 : un cas doit être sélectionné
if (currentSlide === 2 && !selectedCase.key) return;
goTo(cfg.next);
}
function showHintCurrent() {
const cfg = slideConfig[currentSlide];
if (cfg && cfg.hint) showHint(cfg.hint);
}
function goBack() { function goBack() {
if (history.length === 0) return; if (history.length === 0) return;
const prev = history.pop(); const prev = history.pop();
@@ -1286,26 +1280,19 @@ function updateUI() {
if (bottomBar) bottomBar.style.display = currentSlide === 0 ? 'none' : 'flex'; if (bottomBar) bottomBar.style.display = currentSlide === 0 ? 'none' : 'flex';
const backBtn = document.getElementById('backBtn'); const backBtn = document.getElementById('backBtn');
backBtn.style.display = history.length > 0 ? 'block' : 'none'; backBtn.style.display = history.length > 0 ? 'inline-flex' : 'none';
const badge = document.getElementById('phaseBadge'); const cfg = slideConfig[currentSlide] || {};
if (currentSlide === 0 || currentSlide === 1 || currentSlide === 2 || currentSlide === 3 || currentSlide === 13) { const hintBtn = document.getElementById('footerHintBtn');
badge.style.display = 'none'; const nextBtn = document.getElementById('footerNextBtn');
} else if (currentSlide >= 4 && currentSlide <= 7) { hintBtn.style.display = cfg.hint ? 'inline-flex' : 'none';
badge.style.display = 'block'; if (cfg.next != null) {
badge.style.background = 'var(--amber-light)'; // Slide 2 : le bouton n'apparaît qu'une fois le cas choisi
badge.style.color = 'var(--amber-dark)'; const gated = currentSlide === 2 && !selectedCase.key;
badge.textContent = 'TP 1 — Protocole'; nextBtn.style.display = gated ? 'none' : 'inline-flex';
} else if (currentSlide >= 8 && currentSlide <= 10) { nextBtn.textContent = cfg.nextLabel;
badge.style.display = 'block'; } else {
badge.style.background = 'var(--coral-light)'; nextBtn.style.display = 'none';
badge.style.color = 'var(--coral)';
badge.textContent = 'TP 2 — Produit';
} else if (currentSlide >= 11 && currentSlide <= 12) {
badge.style.display = 'block';
badge.style.background = 'var(--amber-light)';
badge.style.color = 'var(--amber-dark)';
badge.textContent = 'TP 3 — Risques';
} }
} }
@@ -1317,7 +1304,7 @@ function selectCase(key, icon, title, desc) {
selectedCase.desc = desc; selectedCase.desc = desc;
document.querySelectorAll('.case-card').forEach(c => c.classList.remove('selected')); document.querySelectorAll('.case-card').forEach(c => c.classList.remove('selected'));
event.currentTarget.classList.add('selected'); event.currentTarget.classList.add('selected');
document.getElementById('btnConfirmCase').style.display = 'inline-flex'; updateUI();
} }
function updateCaseBanners() { function updateCaseBanners() {
@@ -1387,7 +1374,7 @@ function confirmIdentite() {
document.getElementById('idError').style.display = 'none'; document.getElementById('idError').style.display = 'none';
stagiaire.nom = nom; stagiaire.nom = nom;
stagiaire.date = date || new Date().toISOString().slice(0, 10); stagiaire.date = date || new Date().toISOString().slice(0, 10);
goTo(1); goTo(2);
} }
/* ======================== TABLEAU TP3 — LIGNES DYNAMIQUES ======================== */ /* ======================== TABLEAU TP3 — LIGNES DYNAMIQUES ======================== */