:root{
  --orange:#E8701A; --teal:#17A2B8; --vert:#0E9F58;
  --encre:#1B2733; --gris:#5B6B7A; --trait:#DDE4EA;
  --fond:#F6F8FA; --carte:#FFFFFF; --rouge:#C0392B;
  --r:12px; --ombre:0 1px 3px rgba(27,39,51,.08), 0 6px 20px rgba(27,39,51,.05);
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:"Segoe UI",Roboto,Helvetica,Arial,sans-serif;background:var(--fond);color:var(--encre);line-height:1.55;-webkit-font-smoothing:antialiased}
a{color:var(--teal);text-decoration:none}
.wrap{max-width:1080px;margin:0 auto;padding:0 32px}

/* ---- en-tete ---- */
header{background:var(--carte);border-bottom:1px solid var(--trait);position:sticky;top:0;z-index:50}
header .wrap{display:flex;align-items:center;justify-content:space-between;height:68px}
.logo{display:flex;align-items:center;gap:12px;font-weight:700;font-size:1.05rem;letter-spacing:.02em}
.logo .mark{display:flex;flex-direction:column;gap:3px;width:26px}
.logo .mark i{height:4px;border-radius:2px;display:block}
.logo .mark i:nth-child(1){width:60%;background:var(--orange)}
.logo .mark i:nth-child(2){width:82%;background:var(--teal)}
.logo .mark i:nth-child(3){width:100%;background:var(--vert)}
.logo .nom{display:flex;flex-direction:column;line-height:1.15}
.logo .produit{font-size:1.02rem;letter-spacing:.06em}
.logo .produit b{color:var(--teal);font-weight:800}
.logo .produit span{color:var(--orange);font-weight:800}
.logo .ombrelle{font-size:.7rem;font-weight:600;color:var(--gris);letter-spacing:.04em;text-transform:none}
nav{display:flex;gap:6px;align-items:center}
nav a{padding:8px 14px;border-radius:8px;color:var(--gris);font-size:.92rem;font-weight:600}
nav a:hover{background:var(--fond);color:var(--encre)}
nav a.on{background:rgba(23,162,184,.1);color:var(--teal)}
.qui{font-size:.85rem;color:var(--gris);padding-left:14px;border-left:1px solid var(--trait);margin-left:8px}

/* ---- blocs ---- */
main{padding:40px 0 80px}
h1{font-size:1.9rem;letter-spacing:-.02em;margin-bottom:8px}
h2{font-size:1.25rem;margin-bottom:14px;letter-spacing:-.01em}
.sub{color:var(--gris);margin-bottom:32px;max-width:62ch}
.carte{background:var(--carte);border:1px solid var(--trait);border-radius:var(--r);padding:24px;box-shadow:var(--ombre)}
.grille{display:grid;gap:18px}
.g3{grid-template-columns:repeat(3,1fr)}
.g2{grid-template-columns:repeat(2,1fr)}
.g4{grid-template-columns:repeat(4,1fr)}

/* ---- boutons ---- */
.btn{display:inline-block;border:0;border-radius:9px;padding:12px 22px;font-size:.95rem;font-weight:700;cursor:pointer;font-family:inherit;transition:.15s}
.btn-p{background:var(--teal);color:#fff}
.btn-p:hover{background:#138b9e}
.btn-o{background:var(--orange);color:#fff}
.btn-o:hover{background:#cf6115}
.btn-v{background:var(--vert);color:#fff}
.btn-v:hover{background:#0b8a4c}
.btn-l{background:transparent;color:var(--gris);border:1px solid var(--trait)}
.btn-l:hover{background:var(--fond);color:var(--encre)}
.btn:disabled{opacity:.4;cursor:not-allowed}

input,select{font-family:inherit;font-size:1rem;padding:12px 14px;border:1px solid var(--trait);border-radius:9px;background:#fff;color:var(--encre);width:100%}
input:focus,select:focus{outline:2px solid rgba(23,162,184,.35);border-color:var(--teal)}
label{display:block;font-size:.85rem;font-weight:700;color:var(--gris);margin-bottom:6px}

/* ---- matieres ---- */
.mat{background:var(--carte);border:1px solid var(--trait);border-radius:var(--r);padding:20px;box-shadow:var(--ombre);display:flex;flex-direction:column;gap:10px}
.mat h3{font-size:1.05rem}
.mat .meta{font-size:.82rem;color:var(--gris)}
.mat .bar{height:6px;background:var(--fond);border-radius:3px;overflow:hidden}
.mat .bar i{display:block;height:100%;background:var(--teal)}
.pastille{display:inline-block;font-size:.72rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;padding:3px 9px;border-radius:20px}
.p-ok{background:rgba(14,159,88,.12);color:var(--vert)}
.p-att{background:rgba(232,112,26,.12);color:var(--orange)}
.p-vide{background:var(--fond);color:var(--gris)}

/* ---- test ---- */
.bandeau{background:var(--carte);border:1px solid var(--trait);border-radius:var(--r);padding:16px 24px;display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;box-shadow:var(--ombre)}
.chrono{font-size:1.6rem;font-weight:800;font-variant-numeric:tabular-nums;color:var(--teal)}
.chrono.urgent{color:var(--rouge)}
.progres{height:5px;background:var(--trait);border-radius:3px;overflow:hidden;margin-top:14px}
.progres i{display:block;height:100%;background:var(--orange);transition:width .3s}
.enonce{font-size:1.3rem;font-weight:600;margin:8px 0 26px;line-height:1.5}
.choix{display:grid;gap:12px;margin-bottom:28px}
.choix button{text-align:left;padding:16px 20px;border:1.5px solid var(--trait);background:#fff;border-radius:10px;font-size:1.02rem;font-family:inherit;cursor:pointer;color:var(--encre);transition:.12s}
.choix button:hover{border-color:var(--teal);background:rgba(23,162,184,.04)}
.choix button.sel{border-color:var(--teal);background:rgba(23,162,184,.1);font-weight:600}
.etiq{font-size:.78rem;font-weight:800;color:var(--gris);text-transform:uppercase;letter-spacing:.06em}

/* ---- resultat ---- */
.note{font-size:3.4rem;font-weight:800;letter-spacing:-.03em;line-height:1}
.note small{font-size:1.2rem;color:var(--gris);font-weight:600}
.lignech{display:flex;align-items:center;gap:14px;padding:10px 0;border-bottom:1px solid var(--trait)}
.lignech:last-child{border:0}
.lignech .nom{flex:1;font-size:.94rem}
.lignech .bar{width:160px;height:8px;background:var(--fond);border-radius:4px;overflow:hidden}
.lignech .bar i{display:block;height:100%}
.lignech .val{width:56px;text-align:right;font-size:.88rem;font-weight:700;font-variant-numeric:tabular-nums}

table{width:100%;border-collapse:collapse;font-size:.92rem}
th{text-align:left;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--gris);padding:10px 12px;border-bottom:1px solid var(--trait)}
td{padding:11px 12px;border-bottom:1px solid var(--trait)}
tr:last-child td{border-bottom:0}
.mini{height:6px;width:120px;background:var(--fond);border-radius:3px;overflow:hidden;display:inline-block;vertical-align:middle}
.mini i{display:block;height:100%;background:var(--vert)}

.vide{text-align:center;padding:56px 20px;color:var(--gris)}
.avert{background:rgba(232,112,26,.08);border:1px solid rgba(232,112,26,.25);border-radius:10px;padding:14px 18px;font-size:.9rem;color:#8a4410;margin-bottom:22px}

/* ---- ecran trop petit ---- */
#tropetit{display:none;position:fixed;inset:0;background:var(--fond);z-index:999;align-items:center;justify-content:center;padding:32px;text-align:center}
@media(max-width:820px){
  #tropetit{display:flex}
  .g3,.g2,.g4{grid-template-columns:1fr}
}

/* ============ CAP Avenir : ajouts ============ */
header .wrap{height:84px}
.logo img{height:62px;width:auto;display:block}
.qui{display:flex;align-items:center;gap:12px;position:relative;padding-left:16px;border-left:1px solid var(--trait);margin-left:6px}
.qui .classe{font-size:.78rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;
  color:var(--teal);background:rgba(23,162,184,.1);padding:5px 11px;border-radius:20px;white-space:nowrap}
.nomeleve{background:none;border:0;font-family:inherit;font-size:.95rem;font-weight:700;color:var(--encre);
  cursor:pointer;padding:6px 8px;border-radius:8px;display:flex;align-items:center;gap:6px}
.nomeleve:hover{background:var(--fond)}
.nomeleve .fleche{color:var(--gris);font-size:.75rem}
.menuProfil{position:absolute;top:100%;right:0;background:var(--carte);border:1px solid var(--trait);
  border-radius:10px;box-shadow:0 8px 28px rgba(27,39,51,.14);min-width:230px;padding:6px;display:none;z-index:80}
.menuProfil.ouvert{display:block}
.menuProfil a{display:block;padding:10px 14px;border-radius:7px;color:var(--encre);font-size:.92rem;font-weight:600}
.menuProfil a:hover{background:var(--fond)}
.nonselectionnable, .nonselectionnable *{user-select:none;-webkit-user-select:none}
.nonselectionnable input,.nonselectionnable textarea{user-select:text;-webkit-user-select:text}

/* --- accueil public --- */
.hero{text-align:center;padding:56px 0 40px}
.hero img{max-width:420px;width:70%;margin-bottom:26px}
.hero h1{font-size:2.1rem;margin-bottom:12px}
.hero .sub{margin:0 auto 34px}
.deuxportes{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;max-width:820px;margin:0 auto}
.porte{background:var(--carte);border:1px solid var(--trait);border-radius:var(--r);padding:32px;box-shadow:var(--ombre);text-align:left}
.porte h2{margin-bottom:8px}
.porte p{color:var(--gris);font-size:.93rem;margin-bottom:20px;min-height:66px}

/* --- formulaires --- */
.champ{margin-bottom:18px}
.champ .aide{font-size:.8rem;color:var(--gris);margin-top:5px}
.oblig{color:var(--orange)}
fieldset{border:1px solid var(--trait);border-radius:10px;padding:20px;margin-bottom:22px}
legend{font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--teal);padding:0 8px}
.radios{display:flex;gap:12px;flex-wrap:wrap}
.radios label{display:flex;align-items:center;gap:9px;border:1.5px solid var(--trait);border-radius:9px;
  padding:12px 18px;cursor:pointer;font-weight:600;color:var(--encre);font-size:.95rem;margin:0}
.radios label:hover{border-color:var(--teal)}
.radios input{width:auto;margin:0}
.radios label.coche{border-color:var(--teal);background:rgba(23,162,184,.08)}
.erreur{color:var(--rouge);font-size:.87rem;margin-top:8px}

/* --- etapes --- */
.etapes{display:flex;gap:8px;align-items:center;margin-bottom:28px;font-size:.85rem;color:var(--gris)}
.etapes b{display:flex;align-items:center;gap:8px;font-weight:700;color:var(--gris)}
.etapes .num{width:26px;height:26px;border-radius:50%;background:var(--trait);color:var(--gris);
  display:flex;align-items:center;justify-content:center;font-size:.82rem}
.etapes .actif .num{background:var(--teal);color:#fff}
.etapes .actif{color:var(--encre)}
.etapes .sep{flex:1;height:1px;background:var(--trait)}

/* --- contrat --- */
.contrat{max-height:460px;overflow-y:auto;border:1px solid var(--trait);border-radius:10px;
  padding:26px;background:#fff;font-size:.93rem;line-height:1.7}
.contrat h3{font-size:1rem;margin:22px 0 8px;color:var(--teal)}
.contrat h3:first-child{margin-top:0}
.contrat ul{margin:8px 0 8px 20px}
.contrat li{margin-bottom:6px}
.signature{border:2px dashed var(--trait);border-radius:10px;background:#fff;cursor:crosshair;display:block;width:100%;touch-action:none}
.montant{font-size:2rem;font-weight:800;color:var(--orange)}

/* --- test avec brouillon --- */
.zonetest{display:grid;grid-template-columns:2fr 1fr;gap:18px;align-items:start}
.brouillon{position:sticky;top:96px}
.brouillon .carte{padding:14px}
.outilsbrouillon{display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap}
.outilsbrouillon button{font-size:.78rem;padding:7px 11px;border-radius:7px;border:1px solid var(--trait);
  background:#fff;cursor:pointer;font-family:inherit;font-weight:600;color:var(--gris)}
.outilsbrouillon button.on{background:var(--teal);color:#fff;border-color:var(--teal)}
#toile{border:1px solid var(--trait);border-radius:8px;background:#fff;cursor:crosshair;display:block;width:100%;touch-action:none}
#texteBrouillon{width:100%;min-height:150px;border:1px solid var(--trait);border-radius:8px;padding:12px;
  font-family:ui-monospace,Menlo,monospace;font-size:.9rem;resize:vertical}
.reponseOuverte{display:flex;gap:10px;align-items:center;margin-bottom:26px}
.reponseOuverte input{font-size:1.15rem;font-weight:600;padding:14px 16px}
.reponseOuverte .unite{color:var(--gris);font-weight:700;white-space:nowrap}
.typeq{font-size:.7rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;padding:3px 9px;
  border-radius:20px;background:rgba(232,112,26,.12);color:var(--orange);margin-left:8px}

/* --- profil --- */
.fiche dl{display:grid;grid-template-columns:230px 1fr;gap:0}
.fiche dt{font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--gris);
  padding:12px 0;border-bottom:1px solid var(--trait)}
.fiche dd{padding:12px 0;border-bottom:1px solid var(--trait);font-size:.95rem}
.fiche dd:last-of-type,.fiche dt:last-of-type{border-bottom:0}

@media(max-width:1080px){ .zonetest{grid-template-columns:1fr} .brouillon{position:static} }
@media(max-width:820px){ .deuxportes{grid-template-columns:1fr} .fiche dl{grid-template-columns:1fr} }
