Files
2CInfo/1re-numerique/pilotage.html
T
2026-09-23 08:48:37 +02:00

322 lines
21 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Formation numérique 1TC – les 35 blocs de l'année</title>
<style>:root{--ink:#172033;--muted:#667085;--blue:#2563eb;--navy:#172554;--green:#16a34a;--red:#dc2626;--card:#fff;--line:#e5e7eb;--shadow:0 18px 45px #0f172a18}
*{box-sizing:border-box}html{scroll-behavior:smooth}
body{margin:0;font-family:Inter,system-ui,-apple-system,"Segoe UI",Arial,sans-serif;background:linear-gradient(180deg,#edf4ff,#f8fafc 34%,#fff);color:var(--ink)}
button,input,select{font:inherit}
main{max-width:1180px;margin:auto;padding:34px 20px 70px}
:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
svg.i{width:1em;height:1em;vertical-align:-.14em;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.hero{display:grid;grid-template-columns:1.2fr .8fr;gap:24px;align-items:center;background:linear-gradient(135deg,#172554,#2563eb);color:#fff;border-radius:28px;padding:30px;box-shadow:var(--shadow);margin-bottom:24px}
.eyebrow{text-transform:uppercase;letter-spacing:.14em;font-size:11px;font-weight:900;opacity:.82}
.hero h1{font-size:clamp(30px,4.6vw,52px);line-height:1;letter-spacing:-1.6px;margin:7px 0 12px}
.hero p{margin:0;color:#dbeafe;line-height:1.6;font-size:17px}
.hero a.up{display:inline-flex;align-items:center;gap:7px;color:#bfdbfe;font-weight:800;font-size:13px;text-decoration:none;margin-bottom:10px}
.hero a.up:hover{color:#fff}
.hero-visual{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.hero-chip{background:#ffffff14;border:1px solid #ffffff28;border-radius:18px;padding:16px;text-align:center}
.hero-chip .ico{display:block;margin:0 auto 7px;width:30px;height:30px;stroke:#fff;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.hero-chip b{font-size:14px}
.badges{display:flex;flex-wrap:wrap;gap:7px;margin-top:14px}
.badge{background:#ffffff1f;border:1px solid #ffffff2e;border-radius:999px;padding:5px 11px;font-size:12px;font-weight:800;color:#e0ecff}
.badge.warn{background:#dc262633;border-color:#fca5a5;color:#fee2e2}
.dashboard{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:22px}
.stat{background:#fff;border:1px solid var(--line);border-radius:17px;padding:14px;box-shadow:0 8px 24px #0f172a0b}
.stat strong{display:block;font-size:22px;margin-top:3px}
.stat small{color:#64748b;font-weight:800}
.stat.ok strong{color:var(--green)}
.chrono{background:#172554;color:#fff;border-radius:20px;padding:16px 18px;box-shadow:var(--shadow);margin-bottom:20px;display:grid;gap:12px}
.chrono-haut{display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:space-between}
.pendule{font-size:32px;font-weight:950;font-variant-numeric:tabular-nums;line-height:1}
.pendule small{display:block;font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#93b4d8;margin-top:5px}
.ecart{font-size:14px;font-weight:850;padding:9px 14px;border-radius:999px;background:#ffffff1a;border:1px solid #ffffff2e;min-width:250px;text-align:center}
.ecart.avance{background:#16a34a2e;border-color:#4ade80;color:#dcfce7}
.ecart.retard{background:#dc26262e;border-color:#fca5a5;color:#fee2e2}
.chrono .row button{background:#ffffff1a;border:1px solid #ffffff30;color:#fff}
.chrono .row button.go{background:#fff;border-color:#fff;color:#172554}
.navtabs{display:grid;gap:10px;background:#fff;border:1px solid var(--line);border-radius:20px;padding:12px;box-shadow:0 8px 24px #0f172a0b;margin-bottom:20px}
.navtabs.n6{grid-template-columns:repeat(6,1fr)}
.tab{border:2px solid #e2e8f0;background:#fff;border-radius:14px;padding:12px 10px;font-weight:900;cursor:pointer;color:#334155;text-align:left;position:relative}
.tab span{display:block;font-size:11px;font-weight:800;color:#94a3b8;margin-top:3px;font-variant-numeric:tabular-nums}
.tab:hover{border-color:#93c5fd}
.tab.active{background:#2563eb;color:#fff;border-color:#2563eb;box-shadow:0 8px 18px #2563eb28}
.tab.active span{color:#c7dcff}
.tab.prevue::after{content:"";position:absolute;left:12px;right:12px;bottom:-2px;height:4px;border-radius:99px;background:#f59e0b}
.panel{display:none}.panel.active{display:block}
.card{background:#fff;border:1px solid var(--line);border-radius:22px;padding:22px;box-shadow:0 10px 28px #0f172a0d;margin-bottom:16px}
.card h2,.card h3{margin-top:0}
.card h2{font-size:26px;letter-spacing:-.5px}
.muted{color:var(--muted);line-height:1.6}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.btn{border:0;border-radius:11px;padding:10px 15px;font-weight:850;cursor:pointer;background:#eaf1ff;color:#1d4ed8}
.btn:hover{filter:brightness(.97)}
.btn.primary{background:#2563eb;color:#fff}
.btn.soft{background:#f1f5f9;color:#334155}
.score{display:inline-block;background:#eff6ff;color:#1d4ed8;border-radius:999px;padding:7px 12px;font-weight:900;font-size:14px}
.feedback{min-height:31px;margin-top:12px;font-weight:850}
.entete{display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;align-items:flex-start;margin-bottom:14px}
.consigne{background:linear-gradient(145deg,#f8fafc,#eef6ff);border:2px solid #dbeafe;border-radius:18px;padding:20px 24px;font-size:20px;font-weight:800;line-height:1.45;margin:16px 0}
.consigne small{display:block;text-transform:uppercase;letter-spacing:.12em;font-size:11px;font-weight:900;color:var(--blue);margin-bottom:8px}
.info{border-left:4px solid #cbd5e1;background:#f8fafc;border-radius:0 12px 12px 0;padding:13px 17px;color:#475569;font-size:15px;line-height:1.6;margin-top:16px}
.info b{color:var(--ink)}
.info.alerte{border-color:#fca5a5;background:#fef4f4;color:#7f2b2b}
.info.alerte b{color:#991b1b}
.saisie{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:18px}
.saisie input{flex:1;min-width:210px;padding:12px 14px;border:2px solid #cbd5e1;border-radius:12px;outline:none}
.saisie input:focus{border-color:var(--blue);box-shadow:0 0 0 4px #2563eb18}
.saisie select{padding:12px 14px;border:2px solid #cbd5e1;border-radius:12px;font-weight:800}
.colonnes{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:11px}
.colonne{border:1px solid var(--line);border-radius:17px;background:#f8fbff;min-height:145px;padding:13px}
.colonne h3{font-size:14px;display:flex;justify-content:space-between;align-items:center;margin:0 0 9px;padding-bottom:8px;border-bottom:1px solid var(--line)}
.colonne h3 em{font-style:normal;color:#94a3b8;font-size:12px}
.colonne ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.colonne li{background:#fff;border:1px solid var(--line);border-radius:10px;padding:7px 10px;font-size:14px;font-weight:700;display:flex;justify-content:space-between;gap:6px}
.colonne li button{background:none;border:0;color:#cbd5e1;cursor:pointer;padding:0 3px;font-weight:900}
.colonne li button:hover{color:var(--red)}
.accordeon{display:grid;gap:10px}
.item{border:1px solid var(--line);border-radius:17px;background:#fff;overflow:hidden}
.item>button{width:100%;display:flex;gap:14px;align-items:flex-start;text-align:left;background:none;border:0;padding:15px 18px;cursor:pointer}
.item>button:hover{background:#f8fbff}
.item .n{width:30px;height:30px;flex:none;border-radius:10px;background:#eaf1ff;color:#1d4ed8;font-weight:950;display:grid;place-items:center;font-size:14px}
.item .t{font-weight:850;font-size:17px;flex:1}
.item .plus{color:#94a3b8;font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.08em;padding-top:6px}
.item .corps{display:none;padding:0 18px 17px 62px;color:#475569;line-height:1.6}
.item.ouvert .corps{display:block}
.item.ouvert{border-color:#93c5fd;box-shadow:0 8px 20px #2563eb14}
.item.ouvert .n{background:#2563eb;color:#fff}
.qcard{border:2px solid #dbeafe;border-radius:20px;background:linear-gradient(145deg,#fbfdff,#f4f9ff);padding:24px 26px}
.qtag{display:inline-block;background:#eff6ff;color:#1d4ed8;border-radius:999px;padding:5px 11px;font-size:12px;font-weight:900;margin-bottom:10px}
.qtag.cle{background:#fef3c7;color:#92400e}
.qtxt{font-size:22px;font-weight:900;line-height:1.3;letter-spacing:-.3px;margin-bottom:16px}
.answer-grid{display:grid;gap:8px}
.answer{border:2px solid #dbe3ef;background:#fff;border-radius:12px;padding:11px 14px;text-align:left;font-weight:800}
.answer.ok{border-color:#22c55e;background:#f0fdf4}
.reveal{display:none;margin-top:16px;border-top:2px dashed #dbeafe;padding-top:15px}
.reveal.on{display:block}
.verdict{font-weight:950;color:var(--green);margin-bottom:8px}
.steps{display:grid;gap:11px}
.step{border:1px solid var(--line);border-radius:17px;background:#fff;padding:16px 20px;display:flex;gap:15px;align-items:flex-start;opacity:.4}
.step.on{opacity:1;border-color:#93c5fd;box-shadow:0 8px 20px #2563eb14}
.step.fait{opacity:1}
.step .n{width:34px;height:34px;flex:none;border-radius:12px;background:#f1f5f9;color:#94a3b8;font-weight:950;display:grid;place-items:center}
.step.on .n{background:#2563eb;color:#fff}
.step.fait .n{background:#dcfce7;color:#15803d}
.step h3{margin:0 0 4px;font-size:17px}
.step p{margin:0;color:#475569;font-size:15px;line-height:1.55}
figure{margin:0 0 18px}
figure svg{width:100%;height:auto;display:block;background:#fff;border:1px solid var(--line);border-radius:18px}
figcaption{font-size:14px;color:var(--muted);margin-top:10px;line-height:1.55}
.trace{border:2px solid #dbeafe;background:linear-gradient(145deg,#fbfdff,#eef6ff);border-radius:20px;padding:26px 30px;font-size:19px;line-height:1.85}
.trace h3{margin:0 0 14px;font-size:22px}
.trace p{margin:0 0 .5em}
.trace code{background:#fff;border:1px solid #dbeafe;border-radius:6px;padding:1px 7px;font-size:.92em}
.check{display:grid;gap:9px}
.check label{display:flex;gap:13px;align-items:flex-start;border:1px solid var(--line);border-radius:15px;background:#fff;padding:14px 18px;cursor:pointer;font-weight:750}
.check label:hover{border-color:#93c5fd}
.check input{width:20px;height:20px;margin-top:2px;accent-color:var(--green);flex:none}
.check input:checked+span{color:var(--green);font-weight:900}
table.grille{width:100%;border-collapse:collapse;font-size:15px}
table.grille th,table.grille td{border:1px solid var(--line);padding:10px 13px;text-align:left}
table.grille th{background:#f8fafc;font-weight:900;font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:#475569}
table.grille td.masque{color:transparent;background:#f8fafc}
table.grille tr.on td{background:#f0fdf4}
table.grille td b{color:#15803d}
.filtres{display:flex;gap:9px;flex-wrap:wrap;align-items:center;background:#fff;border:1px solid var(--line);border-radius:20px;padding:12px;box-shadow:0 8px 24px #0f172a0b;margin-bottom:20px}
.filtres .compte{margin-left:auto;font-weight:850;color:var(--muted);font-size:14px}
.module{margin-bottom:30px}
.module-tete{display:flex;gap:14px;align-items:baseline;flex-wrap:wrap;margin-bottom:6px}
.module-tete h2{margin:0;font-size:25px;letter-spacing:-.6px}
.module-tete .p{background:#172554;color:#fff;border-radius:999px;padding:5px 12px;font-size:12px;font-weight:900}
.module-tete .champ{color:var(--muted);font-size:14px;margin-left:auto}
.module-note{color:var(--muted);line-height:1.6;margin:0 0 16px;max-width:76ch}
.blocs{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}
.bloc{border:1px solid var(--line);border-radius:20px;background:#fff;padding:17px 19px;display:flex;gap:15px;align-items:flex-start;text-decoration:none;color:inherit;box-shadow:0 8px 24px #0f172a08}
.bloc .n{width:40px;height:40px;flex:none;border-radius:14px;background:#f1f5f9;color:#94a3b8;font-weight:950;display:grid;place-items:center;font-size:17px}
.bloc h3{margin:0 0 5px;font-size:17px;line-height:1.3}
.bloc .att{font-size:13px;color:var(--muted);font-weight:600}
.ets{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
.et{font-size:11px;font-weight:900;border-radius:999px;padding:4px 9px;background:#f1f5f9;color:#475569}
.et.eval{background:#fee2e2;color:#991b1b}
.et.fac{background:#f3e8ff;color:#6b21a8}
.et.pret{background:#dcfce7;color:#15803d}
a.bloc:hover{border-color:#93c5fd;box-shadow:0 12px 28px #2563eb1f}
a.bloc .n{background:#2563eb;color:#fff}
.bloc.vide{border-style:dashed;opacity:.68;box-shadow:none}
.bloc.vide h3{font-weight:800}
.masque{display:none!important}
footer{margin:42px auto 18px;max-width:1180px;padding:16px 20px;text-align:center;color:#64748b;font-size:12px;border-top:1px solid var(--line)}
@media(max-width:980px){.hero{grid-template-columns:1fr}.dashboard{grid-template-columns:repeat(2,1fr)}.navtabs.n6{grid-template-columns:repeat(3,1fr)}}
@media(max-width:620px){main{padding:20px 12px 60px}.hero{padding:22px 18px}.dashboard{grid-template-columns:1fr}.navtabs.n6{grid-template-columns:repeat(2,1fr)}.blocs{grid-template-columns:1fr}.ecart{min-width:0;flex:1}.filtres .compte{margin-left:0;width:100%}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
@media print{.chrono,.navtabs,.filtres,.saisie{display:none}.panel{display:block!important}}
</style>
</head>
<body>
<main>
<section class="hero">
<div>
<div class="eyebrow">Document enseignant · 1TC-NUM · 2026-2027</div>
<h1>Formation numérique<br>Pilotage des 35 blocs</h1>
<p>Version enseignant, avec les attendus, les moments d'évaluation et les notes de conduite. Ne pas projeter. La version destinée aux élèves est <a href="index.html" style="color:#fff;text-decoration:underline">ici</a>.</p>
</div>
<div class="hero-visual">
<div class="hero-chip"><svg class="ico" viewBox="0 0 24 24"><rect x="3" y="4" width="18" height="13" rx="2"/><path d="M8 21h8M12 17v4"/></svg><b>La machine</b></div>
<div class="hero-chip"><svg class="ico" viewBox="0 0 24 24"><path d="M12 3l8 4v5c0 5-3.4 8.2-8 9-4.6-.8-8-4-8-9V7z"/></svg><b>Sécurité</b></div>
<div class="hero-chip"><svg class="ico" viewBox="0 0 24 24"><path d="M21 12a8 8 0 1 1-3.2-6.4"/><path d="M3 20l1.6-4.2"/><path d="M21 4v5h-5"/></svg><b>Communiquer</b></div>
<div class="hero-chip"><svg class="ico" viewBox="0 0 24 24"><path d="M4 4h16v16H4z"/><path d="M8 9h8M8 13h8M8 17h5"/></svg><b>Produire</b></div>
</div>
</section>
<section class="dashboard">
<div class="stat"><small>Blocs de 2 périodes</small><strong>35</strong></div>
<div class="stat ok"><small>Pages disponibles</small><strong id="cPret">0</strong></div>
<div class="stat"><small>Moments d'évaluation</small><strong>5</strong></div>
<div class="stat"><small>Blocs facultatifs</small><strong>3</strong></div>
</section>
<div class="filtres">
<button class="btn primary" data-f="tout">Tous les blocs</button>
<button class="btn soft" data-f="pret">Pages disponibles</button>
<button class="btn soft" data-f="eval">Évaluations</button>
<button class="btn soft" data-f="comp">Compressibles</button>
<button class="btn soft" data-f="fac">Facultatifs</button>
<span class="compte" id="compte"></span>
</div>
<div id="corps"></div>
</main>
<footer>Séquence annuelle, volet numérique FMTTN · Référentiel et programme SeGEC D/2025/7362/3/13 · M. Courcelle</footer>
<script>
"use strict";
var MODULES=[
{n:1,titre:"La machine et mes données",periode:"Période 1",champ:"Informations et données · rentrée au congé d'automne",
note:"Installe le vocabulaire et les gestes de base sans lesquels rien d'autre n'est possible. Se termine par la première tâche intégratrice de l'année.",
blocs:[
{n:1,t:"Ouvrir le cours et savoir où l'on met les pieds",a:"Aucun attendu formel, diagnostic",href:"1TC-NUM_bloc-01_pilotage.html"},
{n:2,t:"Ce qu'il y a dans la boite",a:"S21",href:"1TC-NUM_bloc-02_pilotage.html"},
{n:3,t:"Où va ce que j'enregistre",a:"S21, plus Ko à To en facultatif",href:"1TC-NUM_bloc-03_pilotage.html"},
{n:4,t:"Comment ça circule",a:"S17, plus serveur et web en facultatif",href:"1TC-NUM_bloc-04_pilotage.html"},
{n:5,t:"Extensions et logiciels",a:"S16, S36",comp:true},
{n:6,t:"Exporter vers la bonne destination",a:"SF16"},
{n:7,t:"Organiser son espace",a:"C11, SF16, S16, S36",eval:"Formative certifiante"}]},
{n:2,titre:"Moi en ligne",periode:"Période 2",champ:"Sécurité · congé d'automne à Noël",
note:"Le champ Sécurité se termine formellement en S1, d'où son traitement complet et précoce. C'est aussi l'âge où les élèves ouvrent leurs premiers comptes.",
blocs:[
{n:8,t:"Ce que les autres voient de moi",a:"S34, C22"},
{n:9,t:"Les traces que je laisse sans le savoir",a:"S39, SF58"},
{n:10,t:"Reprendre la main sur ses réglages",a:"SF59, SF53"},
{n:11,t:"Lire les signaux, PEGI et cyberdépendance",a:"S34, C19"},
{n:12,t:"Quand ça dérape, réagir",a:"SF54"},
{n:13,t:"Évaluation et campagne de prévention",a:"C22, C19, S34, S39, SF53, SF58, SF59, SF54",eval:"Sommative 1"}]},
{n:3,titre:"Communiquer et interagir",periode:"Période 3",champ:"Communication et collaboration · janvier au congé de détente",
note:"Champ non travaillé depuis la P5 du fondamental, une réactivation est nécessaire avant tout apport nouveau. Suppose une adresse email par élève, à arbitrer avec la direction.",
blocs:[
{n:14,t:"Le paysage des outils",a:"S37, S18"},
{n:15,t:"Une adresse email qui tient la route",a:"SF35, S38"},
{n:16,t:"Cc, Cci et les autres",a:"SF35"},
{n:17,t:"La nétiquette",a:"SF39",comp:true},
{n:18,t:"Choisir l'outil selon l'interlocuteur",a:"SF56, SF57"},
{n:19,t:"Droits et responsabilités",a:"S28, SF19"},
{n:20,t:"Communiquer pour de vrai",a:"C13, SF35, SF39, SF56, SF57, SF19",eval:"Formative certifiante"}]},
{n:4,titre:"Produire un document",periode:"Périodes 4 et 5",champ:"Création de contenus, traitement de texte · détente au printemps",
note:"Le module le plus long de l'année, sur la période la plus propice à un travail suivi. Tout texte à produire est fourni en brut, jamais à taper.",
blocs:[
{n:21,t:"Choisir son outil et prendre ses repères",a:"SF40, SF17"},
{n:22,t:"Structurer le texte",a:"S22, S23, SF32"},
{n:23,t:"Maitriser la page",a:"SF32, S23",comp:true},
{n:24,t:"Habiller le document",a:"SF33"},
{n:25,t:"Enrichir le document",a:"SF33, S22"},
{n:26,t:"Tableaux et formes",a:"SF33",comp:true},
{n:27,t:"Le dossier",a:"C12, S22, S23, SF17, SF32, SF33, SF40",eval:"Sommative 2"}]},
{n:5,titre:"Penser comme une machine",periode:"Période 5",champ:"Pensée algorithmique · printemps à juin",
note:"La variable et le passage du débogage à l'optimisation sont les deux nouveautés conceptuelles réelles de l'année. La programmation par blocs relance l'engagement au printemps.",
blocs:[
{n:28,t:"Réactiver, ce que la machine sait faire",a:"Acquis de la P6, diagnostic"},
{n:29,t:"La variable",a:"S29, SF43"},
{n:30,t:"Écrire son logigramme",a:"SF44, C16"},
{n:31,t:"Du logigramme au programme",a:"SF45, SF46"},
{n:32,t:"Tester, déboguer, optimiser",a:"C16, C17, S29, SF43 à SF46",eval:"Sommative 3"}]},
{n:6,titre:"L'intelligence artificielle en question",periode:"Période 5",champ:"Complément facultatif de la brochure · fin juin",
note:"Intégralement facultatif et non cotable, puisque aucun attendu ne figure au référentiel. Construit pour n'exiger aucune manipulation d'outil génératif par les élèves.",
blocs:[
{n:33,t:"Ce que fait une IA",a:"Hors référentiel",fac:true},
{n:34,t:"Ce qu'une IA se trompe à faire",a:"Hors référentiel",fac:true},
{n:35,t:"Choisir, formuler, décider",a:"Hors référentiel",fac:true}]}
];
var corps=document.getElementById("corps"),pret=0;
MODULES.forEach(function(m){
var cartes=m.blocs.map(function(b){
if(b.href) pret++;
var d=[];
if(b.href) d.push("pret");
if(b.eval) d.push("eval");
if(b.comp) d.push("comp");
if(b.fac) d.push("fac");
var et="";
if(b.eval) et+='<span class="et eval">'+b.eval+'</span>';
if(b.comp) et+='<span class="et">Compressible</span>';
if(b.fac) et+='<span class="et fac">Facultatif</span>';
et+=b.href?'<span class="et pret">Page prête</span>':'<span class="et">Page à produire</span>';
var in_='<span class="n">'+b.n+'</span><div><h3>'+b.t+'</h3><div class="att">'+b.a+'</div><div class="ets">'+et+'</div></div>';
return b.href
? '<a class="bloc" data-t="'+d.join(" ")+'" href="'+b.href+'">'+in_+'</a>'
: '<div class="bloc vide" data-t="'+d.join(" ")+'">'+in_+'</div>';
}).join("");
var s=document.createElement("section");
s.className="module";
s.innerHTML='<div class="module-tete"><span class="p">Module '+m.n+' · '+m.periode+'</span><h2>'+m.titre+'</h2>'
+'<span class="champ">'+m.champ+'</span></div><p class="module-note">'+m.note+'</p>'
+'<div class="blocs">'+cartes+'</div>';
corps.appendChild(s);
});
document.getElementById("cPret").textContent=pret;
var compte=document.getElementById("compte");
function filtre(f){
var n=0;
document.querySelectorAll(".bloc").forEach(function(el){
var ok=(f==="tout")||(el.dataset.t||"").split(" ").indexOf(f)>-1;
el.classList.toggle("masque",!ok);
if(ok) n++;
});
document.querySelectorAll(".module").forEach(function(s){
s.classList.toggle("masque",s.querySelectorAll(".bloc:not(.masque)").length===0);
});
compte.textContent=n+" bloc"+(n>1?"s":"")+" affiché"+(n>1?"s":"");
}
document.querySelectorAll(".filtres button").forEach(function(b){
b.onclick=function(){
document.querySelectorAll(".filtres button").forEach(function(x){x.className="btn soft";});
b.className="btn primary";
filtre(b.dataset.f);
};
});
filtre("tout");
</script>
</body>
</html>