/* Feuille de style du moteur d'hébreu (moteur.js génère ce balisage).
   Direction artistique : ludique, colorée, ronde, pensée pour des enfants de 12 ans.
   Le code couleur des binyanim (inline dans moteur.js) reste intact. */

:root {
  --papier: #f3f7ff;
  --papier2: #e6eeff;
  --carte: #ffffff;
  --encre: #17203a;
  --encre2: #5c6788;
  --trait: #d9e3fb;
  --violet: #942192;
  --or: #e8890c;
  --bleu: #3d7dff;
  --menthe: #22b573;
  --fraise: #ff5d73;
  --soleil: #ffc542;
  /* pile hébraïque : Noto (nikud complet et positionné) puis polices système
     iOS (Arial Hebrew / Times New Roman) et Android (Noto Serif/Sans Hebrew) */
  --he-serif: "Noto Serif Hebrew", "Times New Roman", "Taamey Frank CLM", "David Libre", "Arial Hebrew", serif;
  --he-sans: "Noto Sans Hebrew", "Arial Hebrew", "Noto Sans Hebrew UI", system-ui, sans-serif;
  --ombre: 0 4px 0 #cddcff;
  --ombre-carte: 0 10px 26px rgba(43, 74, 150, 0.12);
}

.kit {
  background:
    radial-gradient(900px 420px at 12% -8%, #ffe9b8 0%, transparent 60%),
    radial-gradient(760px 420px at 105% 4%, #d9f4e6 0%, transparent 58%),
    var(--papier);
  color: var(--encre);
  min-height: 100vh;
  font-family: "Nunito", "Trebuchet MS", system-ui, sans-serif;
  font-size: 17px;
  line-height: 1.6;
  -webkit-text-size-adjust: 100%;
  /* direction calculée ligne par ligne : chaque paragraphe suit sa première lettre forte */
  unicode-bidi: plaintext;
}
/* seuls les conteneurs de ligne calculent leur direction ; les fragments colorés
   (span.mot) restent dans le flux de leur ligne pour ne pas casser l'ordre des mots */
.kit p, .kit div, .kit td, .kit th, .kit li, .kit h2, .kit h3 { unicode-bidi: plaintext; }
.kit .enveloppe { max-width: 760px; margin: 0 auto;
  padding: 8px 12px calc(96px + env(safe-area-inset-bottom));
  padding-left: max(12px, env(safe-area-inset-left));
  padding-right: max(12px, env(safe-area-inset-right)); }

.kit button { font-family: inherit; touch-action: manipulation; }
.kit button:focus-visible,
.kit input:focus-visible { outline: 3px solid var(--bleu); outline-offset: 2px; }
@media (prefers-reduced-motion: no-preference) {
  .kit button { transition: transform .12s ease, background .15s ease, color .15s ease, box-shadow .15s ease; }
  .kit button:active { transform: translateY(2px) scale(.98); }
}

/* ---------------------------------------------------------- en-tête */
.kit .chapeau {
  position: sticky; top: 0; z-index: 20;
  padding-top: 4px;
  background: color-mix(in srgb, var(--papier) 88%, #fff);
  backdrop-filter: blur(10px);
  border-bottom: 2px dashed var(--trait);
  padding: 8px 0 6px;
  direction: ltr;
}
.kit .marque {
  font-family: "Fredoka", "Nunito", sans-serif;
  font-size: 15px; font-weight: 600; letter-spacing: 0; text-transform: none;
  color: var(--encre); padding: 2px 2px 6px;
  display: grid; gap: 2px;
}
.kit .pastilles {
  display: flex; gap: 8px; overflow-x: auto; padding: 4px 2px 10px;
  scrollbar-width: thin; direction: ltr; scroll-snap-type: x proximity;
}
.kit .pastille {
  flex: none; min-width: 44px; height: 44px; border-radius: 16px;
  border: 2px solid var(--trait); background: var(--carte); color: var(--encre2);
  font-size: 16px; font-weight: 800; cursor: pointer; box-shadow: var(--ombre);
  scroll-snap-align: center;
}
.kit .pastille:hover { border-color: var(--bleu); color: var(--bleu); }
.kit .pastille[aria-current="true"] {
  background: linear-gradient(180deg, #5b93ff, var(--bleu));
  color: #fff; border-color: #2a63d8; box-shadow: 0 4px 0 #2a63d8;
}
.kit .onglets { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 6px; padding-bottom: 8px; direction: ltr; }
.kit .onglet {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px;
  min-height: 54px; padding: 7px 2px; border-radius: 16px; border: 2px solid var(--trait);
  background: var(--carte); color: var(--encre2); font-size: 12px; font-weight: 700; cursor: pointer;
  box-shadow: var(--ombre);
}
.kit .onglet span { font-size: 11px; }
.kit .onglet { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kit .onglet b { font-size: 22px; line-height: 1; }
.kit .onglet[aria-current="true"] {
  background: linear-gradient(180deg, #ffd66b, var(--soleil));
  color: #6a3d00; border-color: #e6a91f; box-shadow: 0 4px 0 #e6a91f;
}

/* ------------------------------------------------------------ titres */
.kit .titre {
  margin: 18px 0 16px; background: var(--carte); border: 2px solid var(--trait);
  border-radius: 22px; padding: 16px 18px; box-shadow: var(--ombre-carte);
}
.kit .titre .he { font-size: 32px; direction: rtl; unicode-bidi: plaintext; text-align: start; font-family: var(--he-serif); }
.kit .titre .fr { font-size: 15px; color: var(--encre2); font-weight: 700; }
.kit h2 {
  display: flex; align-items: baseline; justify-content: space-between; gap: 12px;
  margin: 26px 0 10px; padding: 0 4px 6px; border-bottom: 3px dotted var(--trait);
  font-family: "Fredoka", sans-serif; font-size: 16px; font-weight: 600;
  text-transform: none; letter-spacing: 0; color: var(--bleu);
}
.kit h2 .he { font-size: 22px; color: var(--encre); direction: rtl; font-family: var(--he-serif); }
.kit h3 { margin: 16px 0 6px; font-size: 15px; font-weight: 800; color: var(--or); }

/* ------------------------------------------------------------- blocs */
.kit .bloc {
  background: var(--carte); border: 2px solid var(--trait); border-radius: 20px;
  padding: 16px 16px; margin-bottom: 14px; box-shadow: var(--ombre-carte);
}
.kit .intro, .kit .note { font-size: 15px; color: var(--encre2); }
.kit .note {
  background: #fff6df; border: 2px solid #ffd88a; border-radius: 16px;
  padding: 12px 14px; margin: 12px 0; color: #7a4f00;
}
.kit .vide { padding: 48px 0; text-align: center; color: var(--encre2); font-weight: 700; }

/* ------------------------------------------------- lignes hébraïques */
.kit .l-he {
  direction: rtl; unicode-bidi: plaintext; text-align: start; font-size: 26px; line-height: 2;
  margin: 0 0 4px; cursor: pointer; font-family: var(--he-serif);
  border-radius: 12px; padding: 2px 6px;
}
.kit .l-he:hover { background: #f0f5ff; }
.kit .l-he .mot { white-space: pre-wrap; }
.kit .l-he.dial b { direction: rtl; font-size: 15px; color: var(--bleu); }
.kit .tr { direction: ltr; unicode-bidi: plaintext; text-align: start; font-size: 15px; color: var(--encre2); margin: 0 0 14px; }
.kit .tr.cache { display: none; }
.kit .hp {
  display: inline-block; font-size: 12px; color: var(--encre2); cursor: pointer;
  background: var(--papier2); border-radius: 999px; padding: 2px 10px; font-weight: 700;
}

/* ----------------------------------------------------------- lexique */
.kit .lex { display: grid; gap: 8px; }
.kit .lex > div {
  display: flex; align-items: baseline; justify-content: space-between; gap: 14px;
  background: var(--papier); border-radius: 14px; padding: 9px 12px;
}
.kit .h, .kit .d-he, .kit .he { direction: rtl; unicode-bidi: plaintext; text-align: start; }
.kit .lex .h { font-size: 23px; cursor: pointer; font-family: var(--he-serif); }
.kit .f { font-size: 15px; color: var(--encre2); direction: ltr; unicode-bidi: plaintext; text-align: start; }
.kit .pill { display: inline-block; color: #fff; border-radius: 999px; padding: 2px 10px; font-size: 11px; font-weight: 800; }

/* ----------------------------------------------- nuances, grammaire */
.kit .nu, .kit .point, .kit .racine, .kit .prep, .kit .ex-g {
  border-top: 2px dotted var(--trait); padding-top: 12px; margin-top: 12px;
}
.kit .nu:first-child, .kit .point:first-child, .kit .racine:first-child,
.kit .prep:first-child, .kit .ex-g:first-child { border-top: 0; padding-top: 0; margin-top: 0; }
.kit .nu .h, .kit .ex-g .h, .kit .prep .v, .kit .prep .ex { font-size: 21px; cursor: pointer; font-family: var(--he-serif); }
.kit .prep .att, .kit .nu .pq { font-size: 13px; color: var(--violet); font-weight: 700; }
.kit .point b, .kit .point .t { font-weight: 800; }
.kit .racine .r { display: flex; align-items: baseline; gap: 10px; }
.kit .racine .r b { font-size: 24px; color: var(--violet); direction: rtl; font-family: var(--he-serif); }
.kit .racine .r span { font-size: 13px; color: var(--encre2); }
.kit .racine .m { display: grid; gap: 4px; margin-top: 6px; }
.kit .racine .m > div { display: flex; justify-content: space-between; gap: 12px; font-size: 19px; }
.kit .decl { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
.kit .decl > div {
  display: flex; align-items: baseline; justify-content: space-between; gap: 8px;
  border: 2px solid var(--trait); border-radius: 14px; padding: 9px 12px; cursor: pointer;
  background: var(--papier);
}
.kit .decl > div:hover { border-color: var(--bleu); }
.kit .d-he { font-size: 20px; font-family: var(--he-serif); }
.kit .d-p { font-size: 12px; color: var(--encre2); font-weight: 700; }

/* ---------------------------------------------------------- tableaux */
.kit .tab-wrap { overflow-x: auto; border-radius: 16px; }
.kit table { border-collapse: separate; border-spacing: 0; width: 100%; font-size: 15px; }
.kit th, .kit td { border-bottom: 2px solid var(--trait); padding: 9px 10px; text-align: center; vertical-align: middle; }
.kit th { font-size: 13px; font-weight: 800; background: var(--papier2); color: var(--encre); }
.kit tr:nth-child(even) td { background: #fbfdff; }
.kit .th-f { font-size: 11px; color: var(--encre2); font-weight: 600; }
.kit td.he { direction: rtl; font-size: 20px; cursor: pointer; font-family: var(--he-serif); }
.kit td.fr { direction: ltr; unicode-bidi: plaintext; text-align: start; font-size: 13px; color: var(--encre2); }

/* ------------------------------------------------------------- audio */
.kit .barre-audio { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; }
.kit .barre-audio button {
  border: 2px solid var(--trait); background: var(--carte); color: var(--encre);
  border-radius: 999px; padding: 9px 16px; font-size: 14px; font-weight: 700; cursor: pointer;
  min-height: 44px; box-shadow: var(--ombre);
}
.kit .barre-audio button.on {
  background: linear-gradient(180deg, #4ecb8e, var(--menthe)); color: #fff;
  border-color: #189a5f; box-shadow: 0 4px 0 #189a5f;
}
.kit .etat-son { display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--encre2); }
.kit .etat-son button {
  border: 2px solid var(--trait); background: var(--carte); border-radius: 999px;
  padding: 6px 12px; font-size: 12px; color: var(--encre2); cursor: pointer; font-weight: 700;
}
.kit .avert { font-size: 12px; color: var(--encre2); margin: 6px 0 14px; }

/* ------------------------------------------------------------ cartes */
.kit .paquets { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px; }
.kit .paquet {
  border: 2px solid var(--trait); background: var(--carte); border-radius: 999px;
  padding: 9px 16px; font-size: 13px; font-weight: 700; color: var(--encre2); cursor: pointer;
  min-height: 42px; box-shadow: var(--ombre);
}
.kit .paquet[aria-current="true"] {
  background: linear-gradient(180deg, #5b93ff, var(--bleu)); color: #fff;
  border-color: #2a63d8; box-shadow: 0 4px 0 #2a63d8;
}
.kit .paquet i { font-style: normal; opacity: .7; margin-inline-start: 5px; }
.kit .compte { display: flex; justify-content: space-between; font-size: 12px; color: var(--encre2); margin-bottom: 8px; font-weight: 700; }
.kit .carte {
  background: linear-gradient(180deg, #ffffff, #f7faff);
  border: 3px solid var(--trait); border-radius: 26px;
  padding: 28px 18px; text-align: center; box-shadow: var(--ombre-carte);
}
@media (prefers-reduced-motion: no-preference) {
  .kit .carte { animation: pop .22s ease; }
  @keyframes pop { from { transform: scale(.97); opacity: 0 } to { transform: none; opacity: 1 } }
}
.kit .carte .q { font-size: 32px; direction: rtl; font-family: var(--he-serif); }
.kit .carte .q.fr { font-size: 21px; direction: ltr; font-family: inherit; font-weight: 800; }
.kit .carte .r { margin-top: 18px; font-size: 20px; color: var(--encre2); font-weight: 700; }
.kit .carte .r.he { font-size: 28px; color: var(--encre); direction: rtl; font-family: var(--he-serif); }
.kit .saisie {
  width: 100%; margin-top: 16px; padding: 13px 14px; font-size: 23px;
  direction: rtl; unicode-bidi: plaintext; text-align: start; border: 2px solid var(--trait);
  border-radius: 16px; background: #fff; color: var(--encre); font-family: var(--he-serif);
}
.kit .verdict { margin-top: 14px; font-size: 15px; font-weight: 800; }
.kit .verdict.bon { color: var(--menthe); }
.kit .verdict.faux { color: var(--fraise); }
.kit .verdict b { display: block; font-size: 24px; direction: rtl; color: var(--encre); font-family: var(--he-serif); }
.kit .actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 18px; }
.kit .btn {
  flex: 1 1 0; border: 2px solid var(--trait); background: var(--carte); color: var(--encre);
  border-radius: 16px; padding: 13px 12px; font-size: 15px; font-weight: 800; cursor: pointer;
  min-height: 48px; box-shadow: var(--ombre);
}
.kit .btn.plein {
  background: linear-gradient(180deg, #5b93ff, var(--bleu)); color: #fff;
  border-color: #2a63d8; box-shadow: 0 4px 0 #2a63d8;
}
.kit .btn.mini { flex: none; padding: 10px 14px; font-size: 13px; margin-top: 10px; min-height: 44px; }
.kit .btn.encore { border-color: #ffbec6; color: #d0344a; background: #fff2f4; box-shadow: 0 4px 0 #ffd4da; }
.kit .btn.bien { border-color: #bcd6ff; color: #2a63d8; background: #f1f6ff; box-shadow: 0 4px 0 #d5e5ff; }
.kit .btn.facile { border-color: #a9e7c6; color: #14855a; background: #effaf4; box-shadow: 0 4px 0 #c8f0dc; }

/* --------------------------------------------------------- exercices */
.kit .exo .en { font-size: 21px; direction: rtl; unicode-bidi: plaintext; text-align: start; font-family: var(--he-serif); }
.kit .exo .inf { font-size: 13px; color: var(--encre2); font-weight: 700; }
.kit .exo .trou { border-bottom: 3px dashed var(--bleu); padding: 0 20px; }
.kit .exo .trou.vu { border-bottom-color: var(--menthe); }
.kit .rep { display: none; margin-top: 10px; font-size: 21px; direction: rtl; unicode-bidi: plaintext; text-align: start; font-family: var(--he-serif); }
.kit .rep.on { display: block; }
.kit .rep .pq { display: block; font-size: 13px; color: var(--encre2); direction: ltr; unicode-bidi: plaintext; text-align: start; font-family: inherit; }

/* -------------------------------------------------------------- quiz */
.kit .score { font-size: 13px; color: var(--encre2); margin-top: 12px; font-weight: 800; }
.kit .choix { display: grid; gap: 10px; margin-top: 18px; }
.kit .choix button {
  border: 2px solid var(--trait); background: #fff; color: var(--encre);
  border-radius: 18px; padding: 14px; font-size: 19px; cursor: pointer;
  min-height: 52px; font-weight: 700; box-shadow: var(--ombre);
}
.kit .choix button:hover { border-color: var(--bleu); }
.kit .choix button.bon { border-color: var(--menthe); background: #e8faf1; box-shadow: 0 4px 0 #bdeed5; }
.kit .choix button.mauvais { border-color: var(--fraise); background: #fff0f2; box-shadow: 0 4px 0 #ffd0d7; }
.kit .lecon {
  text-align: left; background: var(--carte); border: 2px solid var(--trait);
  border-radius: 20px; padding: 16px; margin-top: 16px; font-size: 15px;
}
.kit .lecon-t { font-size: 13px; letter-spacing: 0; text-transform: none; color: var(--or); margin-bottom: 8px; font-weight: 800; }
.kit .lecon .pt { color: var(--encre2); }
.kit .regle { display: grid; gap: 6px; margin: 12px 0; }
.kit .regle > div { display: flex; align-items: center; gap: 8px; opacity: .4; }
.kit .regle > div.vis { opacity: 1; }
.kit .regle .b { color: #fff; border-radius: 999px; padding: 3px 12px; font-size: 14px; direction: rtl; font-weight: 700; }
.kit .regle .i { font-size: 13px; }
.kit .ex-l { display: grid; gap: 6px; margin: 12px 0; }
.kit .ex-l > div { display: flex; justify-content: space-between; gap: 10px; font-size: 18px; }
.kit .ex-l .f { font-size: 13px; }
.kit .ctx { font-size: 15px; color: var(--encre2); }

/* -------------------------------------------------------------- plan */
.kit .plan { display: grid; gap: 8px; }
.kit .plan > div {
  display: flex; justify-content: space-between; gap: 12px;
  border: 2px solid var(--trait); border-radius: 14px; padding: 10px 13px;
  background: var(--papier); font-size: 14px; font-weight: 600;
}
.kit .plan b { color: var(--or); }

@media print { .kit .noprint { display: none !important; } }

/* --- barre de compte --- */
.compte{ display:flex; align-items:center; justify-content:flex-end; flex-wrap:wrap; gap:.5rem;
  font-weight:700; font-size:.78rem; margin-top:4px; }
.compte-mail{ max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.compte-mail{ color:var(--encre2,#5c6788); }
.compte-lien{ background:#fff; border:2px solid var(--trait,#d9e3fb); padding:8px 14px; border-radius:999px;
  min-height:40px; display:inline-flex; align-items:center;
  color:var(--bleu,#3d7dff); cursor:pointer; text-decoration:none; font:inherit; font-weight:800; }

/* ---------------------------------------- révision espacée (statistiques) */
.stats-srs{border:2px solid var(--trait,#d9e3fb);background:var(--carte,#fff);border-radius:20px;
  padding:14px 16px;margin:0 0 14px;box-shadow:var(--ombre-carte)}
.stats-chiffres{display:flex;flex-wrap:wrap;gap:14px;font-size:13px;font-weight:700;color:var(--encre2,#5c6788)}
.stats-chiffres b{font-size:20px;color:var(--encre,#17203a);display:inline-block}
.stats-paliers{display:flex;align-items:flex-end;gap:10px;margin-top:14px}
.stats-paliers .palier{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px}
.stats-paliers .palier i{display:block;width:100%;max-width:38px;border-radius:8px 8px 4px 4px;
  background:linear-gradient(180deg,#5b93ff,#22b573)}
.stats-paliers .palier span{font-size:12px;font-weight:800}
.stats-paliers .palier em{font-size:10px;font-style:normal;opacity:.65}
.source-carte{font-size:12px;font-weight:700;color:var(--encre2,#5c6788);text-align:center;margin-bottom:10px}
.source-carte .compte-lien{font-size:12px}

/* --- réglages de la révision espacée --- */
.carte.reglages{ text-align:left }
.grille-reglages{ display:grid; grid-template-columns:repeat(auto-fit,minmax(110px,1fr));
  gap:10px; margin:12px 0 }
.grille-reglages label{ display:flex; flex-direction:column; gap:5px; font-weight:700 }
.grille-reglages em{ font-style:normal; font-size:12px; color:var(--encre2,#5c6788) }
.grille-reglages input{ width:100%; padding:10px; border-radius:14px;
  border:2px solid var(--trait,#d9e3fb); background:#fff; color:inherit;
  font:inherit; font-size:16px; font-weight:800; text-align:center }

.bandeau-pause{border:2px solid #ffc542;background:#fff6df;color:#7a4f00;border-radius:18px;
  padding:12px 14px;margin:0 0 12px;font-size:14px;font-weight:700;text-align:center}
.jours-repos{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 4px}
.jours-repos label{display:flex;align-items:center;gap:6px;border:2px solid var(--trait,#d9e3fb);
  background:#fff;border-radius:999px;padding:8px 14px;font-size:13px;font-weight:700;cursor:pointer;min-height:40px}

/* ------------------------------------------- calendrier des révisions */
.cal{border:2px solid var(--trait,#d9e3fb);background:var(--carte,#fff);border-radius:20px;
  padding:12px 14px;margin:0 0 12px;direction:ltr;box-shadow:var(--ombre-carte)}
.cal-tete{display:flex;align-items:center;gap:10px;font-size:15px;font-weight:800;margin-bottom:10px}
.cal-tete b{flex:1;text-align:center;text-transform:capitalize}
.cal-grille{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.cal-ent{font-size:10px;text-align:center;font-weight:800;color:var(--encre2,#5c6788)}
.cal-vide{height:44px}
.cal-jour{position:relative;height:44px;border:2px solid var(--trait,#d9e3fb);border-radius:12px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;background:#fff}
.cal-jour.passe{opacity:.4}
.cal-jour.repos{background:#fff6df;border-color:#ffc542}
.cal-jour.auj{outline:3px solid var(--bleu,#3d7dff)}
.cal-n{font-size:11px;font-weight:700;color:var(--encre2,#5c6788);line-height:1}
.cal-c{font-size:14px;font-weight:800;line-height:1;color:var(--bleu,#3d7dff)}
.cal-jour.a-cartes .cal-n{opacity:.55}
.cal-r{position:absolute;top:2px;right:5px;font-size:10px;font-weight:800;font-style:normal;color:#e8890c}
.cal-legende{display:flex;flex-wrap:wrap;gap:12px;margin-top:12px;font-size:11px;font-weight:700;color:var(--encre2,#5c6788)}
.cal-legende span{display:flex;align-items:center;gap:5px}
.cal-legende i{width:12px;height:12px;border-radius:4px;display:inline-block;font-style:normal;
  font-size:10px;text-align:center;line-height:12px}
.cal-legende .p-cartes{background:#3d7dff}
.cal-legende .p-repos{background:#fff6df;border:2px solid #ffc542}
.cal-legende .p-report{color:#e8890c;width:auto}

/* ------------------------------------------------ onboarding ludique */
body.obd-ouvert{ overflow:hidden; }
.obd-fond{ position:fixed; inset:0; z-index:60; display:grid; place-items:center;
  padding:16px; background:color-mix(in oklab, #2b2352 72%, transparent); backdrop-filter:blur(3px); }
.obd-carte{ position:relative; width:min(520px,100%); max-height:92vh; overflow:auto;
  background:var(--carte,#fff); border-radius:26px; padding:26px 22px 18px;
  box-shadow:0 20px 50px rgba(20,10,50,.35); text-align:center;
  animation:obdPop .28s cubic-bezier(.2,1.3,.5,1); }
@keyframes obdPop{ from{ transform:scale(.9) translateY(12px); opacity:0 } to{ transform:none; opacity:1 } }
.obd-carte h2{ font-size:1.35rem; margin:6px 0 10px; border:0; padding:0; }
.obd-hero{ font-size:3.2rem; line-height:1; }
.obd-p{ margin:0 0 8px; }
.obd-x{ position:absolute; top:10px; inset-inline-end:12px; border:0; background:transparent;
  font-size:1.1rem; cursor:pointer; padding:6px; border-radius:50%; }
.obd-avatars{ display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin:12px 0; }
.obd-av{ font-size:1.9rem; padding:8px 0; border-radius:18px; border:3px solid transparent;
  background:color-mix(in oklab, currentColor 6%, transparent); cursor:pointer; min-height:56px; }
.obd-av.on{ border-color:var(--accent,#6c5ce7); background:color-mix(in oklab, var(--accent,#6c5ce7) 16%, transparent); }
.obd-label{ display:block; text-align:start; font-weight:700; margin:8px 2px 4px; }
.obd-input{ width:100%; min-height:48px; border-radius:16px; padding:10px 14px; font:inherit;
  border:2px solid color-mix(in oklab, currentColor 18%, transparent); }
.obd-niveaux{ display:grid; gap:10px; margin:12px 0; }
.obd-niv{ display:grid; grid-template-columns:auto 1fr; gap:4px 12px; align-items:center;
  text-align:start; padding:12px 14px; border-radius:20px; cursor:pointer;
  border:3px solid transparent; background:color-mix(in oklab, currentColor 6%, transparent); font:inherit; }
.obd-niv.on{ border-color:var(--accent,#6c5ce7); background:color-mix(in oklab, var(--accent,#6c5ce7) 14%, transparent); }
.obd-niv-e{ font-size:1.7rem; grid-row:span 2; }
.obd-niv-d{ font-size:.9rem; opacity:.75; }
.obd-etapes{ text-align:start; margin:10px 0 4px; padding:0; list-style:none; display:grid; gap:10px; }
.obd-etapes li{ display:grid; grid-template-columns:auto 1fr; gap:10px; align-items:start; line-height:1.4; }
.obd-etapes li .obd-n{ display:grid; place-items:center; width:28px; height:28px; border-radius:50%;
  background:var(--accent,#6c5ce7); color:#fff; font-weight:800; }
.obd-nav{ display:flex; gap:10px; justify-content:center; flex-wrap:wrap; margin-top:16px; }
.obd-points{ display:flex; gap:6px; justify-content:center; margin-top:14px; }
.obd-points span{ width:8px; height:8px; border-radius:50%; background:color-mix(in oklab, currentColor 22%, transparent); }
.obd-points span.on{ background:var(--accent,#6c5ce7); width:20px; border-radius:5px; }
.profil-barre{ display:flex; align-items:center; gap:10px; margin:0 0 14px;
  padding:8px 12px; border-radius:20px; background:color-mix(in oklab, var(--accent,#6c5ce7) 10%, transparent); }
.profil-av{ font-size:1.6rem; }
.profil-txt{ display:grid; line-height:1.15; }
.profil-txt span{ font-size:.85rem; opacity:.75; }
.profil-barre .btn.mini{ margin-inline-start:auto; min-height:38px; padding:6px 12px; font-size:.85rem; }

/* ----------------------------------- étoiles, séries et badges (jeu) */
.jeu{ margin:0 0 14px; padding:14px; border-radius:24px;
  background:color-mix(in oklab, var(--accent,#6c5ce7) 8%, transparent); }
.jeu-chiffres{ display:grid; grid-template-columns:repeat(auto-fit,minmax(110px,1fr)); gap:10px; }
.jeu-case{ display:grid; justify-items:center; gap:2px; padding:10px 6px; border-radius:20px;
  background:var(--carte,#fff); box-shadow:0 4px 12px rgba(30,15,70,.07); }
.jeu-e{ font-size:1.5rem; line-height:1; }
.jeu-case b{ font-size:1.35rem; }
.jeu-case span:last-child{ font-size:.8rem; opacity:.7; text-align:center; }
.jeu-mot{ margin:12px 2px 4px; font-weight:700; text-align:center; }
.badges{ display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:10px; margin-top:12px; }
.badge{ display:grid; justify-items:center; gap:2px; padding:12px 8px; border-radius:20px;
  background:var(--carte,#fff); opacity:.45; filter:grayscale(1); text-align:center; }
.badge.eu{ opacity:1; filter:none; box-shadow:0 6px 16px rgba(30,15,70,.10);
  animation:badgePop .35s cubic-bezier(.2,1.4,.5,1); }
@keyframes badgePop{ from{ transform:scale(.85) } to{ transform:none } }
.badge-e{ font-size:1.7rem; line-height:1; }
.badge b{ font-size:.95rem; }
.badge-d{ font-size:.78rem; opacity:.7; }
.jeu-mini{ display:flex; gap:8px; flex-wrap:wrap; font-weight:800; font-size:.9rem; }
.jeu-mini span{ background:var(--carte,#fff); border-radius:999px; padding:3px 10px;
  box-shadow:0 2px 8px rgba(30,15,70,.08); }
#toastJeu{ position:fixed; left:50%; bottom:18px; transform:translate(-50%,140%); z-index:70;
  transition:transform .3s cubic-bezier(.2,1.3,.5,1); pointer-events:none; width:min(420px,92vw); }
#toastJeu.visible{ transform:translate(-50%,0); }
#toastJeu .toast{ display:flex; gap:10px; flex-wrap:wrap; justify-content:center; align-items:center;
  background:#2b2352; color:#fff; border-radius:22px; padding:12px 16px; font-weight:800;
  box-shadow:0 12px 30px rgba(20,10,50,.35); }
.toast-et{ font-size:1.1rem; }
.toast-badge{ width:100%; text-align:center; font-size:.92rem;
  background:rgba(255,255,255,.16); border-radius:14px; padding:6px 10px; }

/* --- retour immédiat --- */
@keyframes popbon{0%{transform:scale(1)}35%{transform:scale(1.04)}100%{transform:scale(1)}}
@keyframes shake{0%,100%{transform:translateX(0)}20%{transform:translateX(-8px)}40%{transform:translateX(8px)}60%{transform:translateX(-5px)}80%{transform:translateX(5px)}}
.flash-bon{animation:popbon .55s ease-out;box-shadow:0 0 0 4px #79d17a55,0 10px 24px #0001!important}
.flash-faux{animation:shake .5s ease-out;box-shadow:0 0 0 4px #ff8a8a55,0 10px 24px #0001!important}
.indices{margin:12px 0 4px;display:flex;flex-direction:column;gap:8px}
.indice-l{display:flex;gap:9px;align-items:flex-start;background:#fff8e3;border:2px solid #ffe08a;
  border-radius:16px;padding:10px 13px;font-size:15px;line-height:1.45;text-align:start;
  unicode-bidi:plaintext;animation:popbon .35s ease-out}
.pastille-i{flex:none;width:24px;height:24px;border-radius:50%;background:#ffc93c;color:#5a4300;
  font-weight:700;display:grid;place-items:center;font-size:13px}
.verdict .pourquoi{margin-top:7px;font-size:15px;font-weight:600;line-height:1.45;
  direction:ltr;unicode-bidi:isolate;text-align:start;opacity:.92}
.verdict .pourquoi b{unicode-bidi:isolate}
.indice-l>span:last-child{direction:ltr;unicode-bidi:isolate;text-align:start}
.indice-l>span:last-child b{unicode-bidi:isolate}

/* ============================ mobile first ============================
   Base ci-dessus = téléphone. On agrandit ensuite sur écran large.      */
.kit .titre .he { font-size: 27px; }
.kit .carte { padding: 22px 14px; }
.kit .carte .q { font-size: 27px; }
.kit .carte .q.fr { font-size: 19px; }
.kit .carte .r.he { font-size: 24px; }
.kit .l-he { font-size: 23px; line-height: 1.95; }
.kit .exo .en, .kit .rep { font-size: 19px; }
.kit .actions { flex-wrap: wrap; }
.kit .actions .btn { min-width: 44%; }
.kit .saisie { font-size: 20px; }          /* ≥16px : pas de zoom auto iOS */
.kit input, .kit select { font-size: 16px; }
.kit .decl { grid-template-columns: repeat(auto-fill, minmax(132px, 1fr)); }
.badges { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.jeu-chiffres { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grille-reglages { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.profil-barre { flex-wrap: wrap; }
.stats-paliers { gap: 6px; }
.kit .tab-wrap { -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain; }
.kit table { min-width: 320px; }
.kit .lex > div, .kit .ex-l > div, .kit .racine .m > div { flex-wrap: wrap; }

@media (min-width: 560px) {
  .kit .enveloppe { padding-top: 10px; }
  .kit .marque { font-size: 17px; }
  .kit .onglet { min-height: 58px; border-radius: 18px; }
  .kit .titre .he { font-size: 32px; }
  .kit .carte { padding: 28px 18px; }
  .kit .carte .q { font-size: 32px; }
  .kit .carte .q.fr { font-size: 21px; }
  .kit .carte .r.he { font-size: 28px; }
  .kit .l-he { font-size: 26px; line-height: 2; }
  .kit .exo .en, .kit .rep { font-size: 21px; }
  .kit .actions .btn { min-width: 0; }
  .badges { grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); }
  .jeu-chiffres { grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); }
  .grille-reglages { grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); }
}
@media (max-width: 359px) {
  .kit .onglet b { font-size: 19px; }
  .kit .onglet span { font-size: 10px; }
  .kit .pastille { min-width: 40px; height: 40px; font-size: 15px; }
}

/* en-tête : le titre défile, seuls les leçons et onglets restent collés */
.kit .marque { padding: 6px 2px 4px; }
.kit .marque .compte { justify-content: flex-start; }
@media (min-width: 560px) {
  .kit .marque { grid-template-columns: minmax(0,1fr) auto; align-items: center; }
  .kit .marque .compte { justify-content: flex-end; margin-top: 0; }
}

/* --- onboarding : hors de .kit, il lui faut ses propres boutons (mobile first) --- */
.obd-fond .btn{ flex:1 1 140px; min-height:48px; border:2px solid var(--trait,#d9e3fb);
  background:#fff; color:var(--encre,#17203a); border-radius:16px; padding:12px 16px;
  font:inherit; font-weight:800; font-size:15px; cursor:pointer; }
.obd-fond .btn.plein{ background:linear-gradient(180deg,#5b93ff,#3d7dff); color:#fff;
  border-color:#2a63d8; box-shadow:0 4px 0 #2a63d8; }
.obd-fond .btn:active{ transform:translateY(2px) scale(.99); }
.obd-carte{ padding-bottom:calc(18px + env(safe-area-inset-bottom)); }
@media (max-width:400px){
  .obd-avatars{ grid-template-columns:repeat(4,1fr); gap:8px; }
  .obd-carte h2{ font-size:1.2rem; }
  .obd-hero{ font-size:2.6rem; }
}

/* ======================================================================
   CHARTE « PAYS DES MERVEILLES » — arc-en-ciel, ultra simple et ludique
   (surcharge finale : les couleurs des binyanim, inline, restent intactes)
   ====================================================================== */
:root{
  --papier:#fffaf2; --papier2:#fff2e2; --carte:#ffffff;
  --encre:#3a2456; --encre2:#7b62a3; --trait:#f0dcff;
  --bleu:#7b3fe4;            /* accent principal : violet féerique */
  --accent:#7b3fe4;
  --menthe:#12b886; --or:#ff8a1f; --fraise:#ff4d8d; --soleil:#ffd227;
  --ombre:0 4px 0 #ecd9ff;
  --ombre-carte:0 12px 28px rgba(123,63,228,.14);
  --a1:#ff4d6d; --a2:#ff8a1f; --a3:#ffd227; --a4:#3ec46d;
  --a5:#3ab7ff; --a6:#7b3fe4; --a7:#ff5fd2;
  --arc:linear-gradient(90deg,var(--a1),var(--a2),var(--a3),var(--a4),var(--a5),var(--a6),var(--a7));
}
.kit{
  background:
    radial-gradient(760px 380px at 8% -6%, #ffe0f2 0%, transparent 62%),
    radial-gradient(680px 360px at 100% 2%, #dff1ff 0%, transparent 60%),
    radial-gradient(620px 340px at 50% 100%, #fff3c9 0%, transparent 60%),
    var(--papier);
}
.kit .chapeau{ border-bottom:0; background:color-mix(in srgb, var(--papier) 90%, #fff); }
.kit .chapeau::after{ content:""; display:block; height:6px; border-radius:999px;
  background:var(--arc); margin-top:2px; }
.kit .marque{ font-weight:700; color:var(--encre); }

/* pastilles de leçons : la ronde des couleurs */
.kit .pastille{ border-radius:50%; border-width:3px; }
.kit .pastille:nth-child(7n+1){ border-color:var(--a1); color:var(--a1); box-shadow:0 4px 0 color-mix(in srgb,var(--a1) 28%,#fff); }
.kit .pastille:nth-child(7n+2){ border-color:var(--a2); color:var(--a2); box-shadow:0 4px 0 color-mix(in srgb,var(--a2) 28%,#fff); }
.kit .pastille:nth-child(7n+3){ border-color:#e8b400; color:#b98700; box-shadow:0 4px 0 color-mix(in srgb,var(--a3) 40%,#fff); }
.kit .pastille:nth-child(7n+4){ border-color:var(--a4); color:#1d8f4c; box-shadow:0 4px 0 color-mix(in srgb,var(--a4) 28%,#fff); }
.kit .pastille:nth-child(7n+5){ border-color:var(--a5); color:#1288d0; box-shadow:0 4px 0 color-mix(in srgb,var(--a5) 28%,#fff); }
.kit .pastille:nth-child(7n+6){ border-color:var(--a6); color:var(--a6); box-shadow:0 4px 0 color-mix(in srgb,var(--a6) 28%,#fff); }
.kit .pastille:nth-child(7n+7){ border-color:var(--a7); color:#d92fae; box-shadow:0 4px 0 color-mix(in srgb,var(--a7) 28%,#fff); }
.kit .pastille[aria-current="true"]{
  background:var(--arc); background-size:340% 100%; color:#fff;
  border-color:#fff; box-shadow:0 0 0 3px #ffd227, 0 6px 16px rgba(123,63,228,.35);
  transform:scale(1.04);
}

/* onglets : une couleur par monde */
.kit .onglet{ border-radius:20px; border-width:3px; }
.kit .onglet:nth-child(1){ border-color:var(--a1); color:#c9264a; }
.kit .onglet:nth-child(2){ border-color:var(--a2); color:#c4620a; }
.kit .onglet:nth-child(3){ border-color:var(--a4); color:#1d8f4c; }
.kit .onglet:nth-child(4){ border-color:var(--a5); color:#1288d0; }
.kit .onglet:nth-child(5){ border-color:var(--a6); color:var(--a6); }
.kit .onglet[aria-current="true"]{ color:#fff; border-color:#fff;
  box-shadow:0 0 0 3px currentColor, 0 6px 14px rgba(58,36,86,.18); }
.kit .onglet:nth-child(1)[aria-current="true"]{ background:linear-gradient(180deg,#ff7f97,var(--a1)); box-shadow:0 5px 0 #d62a51; }
.kit .onglet:nth-child(2)[aria-current="true"]{ background:linear-gradient(180deg,#ffb765,var(--a2)); box-shadow:0 5px 0 #d96e08; }
.kit .onglet:nth-child(3)[aria-current="true"]{ background:linear-gradient(180deg,#77dd9b,var(--a4)); box-shadow:0 5px 0 #249c58; }
.kit .onglet:nth-child(4)[aria-current="true"]{ background:linear-gradient(180deg,#84d4ff,var(--a5)); box-shadow:0 5px 0 #1a92dd; }
.kit .onglet:nth-child(5)[aria-current="true"]{ background:linear-gradient(180deg,#a97cf5,var(--a6)); box-shadow:0 5px 0 #5a25b8; }

/* cartes et blocs : rondeur de parc d'attractions */
.kit .titre, .kit .bloc, .kit .carte{ border-radius:26px; border-width:3px; }
.kit .titre{ position:relative; overflow:hidden; background:
    linear-gradient(180deg,#fff, #fff8ff); }
.kit .titre::before{ content:""; position:absolute; inset:0 0 auto 0; height:7px; background:var(--arc); }
.kit h2{ color:var(--a6); border-bottom:3px dotted var(--trait); }
.kit h3{ color:var(--a2); }
.kit .note{ background:#fff6df; border-color:#ffdf9a; color:#8a5200; border-radius:20px; }

/* boutons bonbon */
.kit .btn{ border-radius:999px; border-width:3px; font-weight:800; }
.kit .btn.plein{ background:linear-gradient(180deg,#a97cf5,var(--a6)); border-color:#fff;
  color:#fff; box-shadow:0 5px 0 #5a25b8; }
.kit .btn.encore{ background:#fff0f4; border-color:var(--a1); color:#c9264a; box-shadow:0 5px 0 #ffc2d0; }
.kit .btn.bien{ background:#eef8ff; border-color:var(--a5); color:#1288d0; box-shadow:0 5px 0 #c4e7ff; }
.kit .btn.facile{ background:#eefaf1; border-color:var(--a4); color:#1d8f4c; box-shadow:0 5px 0 #c6f0d5; }

/* barre profil, badges, onboarding : même féerie */
.profil-barre{ border-radius:22px; }
.badge.ok, .badges .ok{ box-shadow:0 0 0 3px #ffd22755; }
.obd-carte{ border-radius:30px; border:4px solid #fff; overflow:hidden; }
.obd-carte::before{ content:""; position:absolute; inset:0 0 auto 0; height:8px; background:var(--arc); }
.obd-fond .btn.plein{ background:linear-gradient(180deg,#a97cf5,var(--a6)); border-color:#fff; box-shadow:0 5px 0 #5a25b8; }
.compte-lien{ border-color:var(--a6); color:var(--a6); border-radius:999px; }

/* ------------------- fête : confettis, halo arc-en-ciel, bandeau ------------- */
#confettis{ position:fixed; inset:0; pointer-events:none; z-index:90; }
@keyframes halo-arc{
  0%{ box-shadow:0 0 0 0 #ff4d6d88, 0 0 0 0 #3ab7ff00; }
  40%{ box-shadow:0 0 0 6px #ffd22766, 0 0 26px 10px #7b3fe433; }
  100%{ box-shadow:0 0 0 0 #7b3fe400, 0 0 0 0 #3ab7ff00; }
}
.eclat-arc{ animation:halo-arc 1.1s ease-out; border-color:#ffd227 !important; }
#feteBandeau{ position:fixed; inset-inline:0; top:calc(10px + env(safe-area-inset-top));
  z-index:95; display:grid; place-items:center; pointer-events:none;
  opacity:0; transform:translateY(-16px) scale(.96); transition:opacity .25s ease, transform .25s ease; }
#feteBandeau.visible{ opacity:1; transform:none; }
.fete-carte{ position:relative; overflow:hidden; width:min(92vw,420px); text-align:center;
  background:#fff; border:3px solid #fff; border-radius:26px; padding:14px 18px 16px;
  box-shadow:0 14px 34px rgba(123,63,228,.28); display:grid; gap:2px; }
.fete-arc{ position:absolute; inset:0 0 auto 0; height:8px;
  background:linear-gradient(90deg,#ff4d6d,#ff8a1f,#ffd227,#3ec46d,#3ab7ff,#7b3fe4,#ff5fd2);
  background-size:200% 100%; animation:arc-defile 1.6s linear infinite; }
@keyframes arc-defile{ to{ background-position:200% 0; } }
.fete-e{ font-size:2rem; line-height:1.1; animation:popbon .6s ease-out; }
.fete-carte b{ font-family:"Fredoka","Nunito",sans-serif; font-size:1.1rem; color:#3a2456; }
.fete-carte span{ font-size:.9rem; color:#7b62a3; font-weight:700; }
@media (prefers-reduced-motion: reduce){ .fete-arc{ animation:none; } .eclat-arc{ animation:none; } }

/* -------- micro-interactions : rubans, pastilles qui tournent, éclats ------- */
@keyframes vue-entre{ from{ opacity:0; transform:translateY(14px) scale(.985); } to{ opacity:1; transform:none; } }
.kit #vue.entre{ animation:vue-entre .34s cubic-bezier(.2,.8,.25,1); }
@keyframes toupie{ 0%{transform:rotate(0) scale(1)} 45%{transform:rotate(200deg) scale(1.18)}
  100%{transform:rotate(360deg) scale(1.04)} }
.kit .pastille.tourne, .kit .onglet.tourne b{ animation:toupie .55s cubic-bezier(.3,1.4,.4,1); }
.kit .onglet b{ display:inline-block; }
.kit .onglet:hover b{ transform:rotate(-8deg) scale(1.08); transition:transform .18s ease; }

/* ruban arc-en-ciel qui traverse l'écran au changement d'onglet / d'étape */
#ruban{ position:fixed; inset-inline:0; top:0; height:5px; z-index:92; pointer-events:none;
  background:linear-gradient(90deg,#ff4d6d,#ff8a1f,#ffd227,#3ec46d,#3ab7ff,#7b3fe4,#ff5fd2);
  transform:scaleX(0); transform-origin:0 50%; opacity:0; }
#ruban.file{ animation:ruban-file .7s ease-out; }
@keyframes ruban-file{ 0%{transform:scaleX(0);opacity:1} 60%{transform:scaleX(1);opacity:1}
  100%{transform:scaleX(1);opacity:0} }

/* éclat de couleur au clic (pastilles, onglets, boutons) */
.etincelle{ position:fixed; z-index:93; pointer-events:none; width:14px; height:14px; border-radius:50%;
  animation:etincelle .62s ease-out forwards; }
@keyframes etincelle{ from{ transform:translate(-50%,-50%) scale(.4); opacity:1; }
  to{ transform:translate(-50%,-50%) translate(var(--dx),var(--dy)) scale(0); opacity:0; } }

/* étapes du quiz : la carte glisse, les choix arrivent en cascade */
@keyframes quiz-entre{ from{ opacity:0; transform:translateX(18px) rotate(.4deg); } to{ opacity:1; transform:none; } }
.kit #carteQuiz{ animation:quiz-entre .32s cubic-bezier(.2,.8,.25,1); }
.kit .choix button{ animation:vue-entre .3s backwards; }
.kit .choix button:nth-child(1){ animation-delay:.04s } .kit .choix button:nth-child(2){ animation-delay:.09s }
.kit .choix button:nth-child(3){ animation-delay:.14s } .kit .choix button:nth-child(4){ animation-delay:.19s }
.kit .choix button:nth-child(5){ animation-delay:.24s }
.kit .choix button:active{ transform:scale(.97) rotate(-.5deg); }
.kit .paquet, .kit .btn{ transition:transform .14s ease, box-shadow .16s ease, background .18s ease; }
.kit .btn:hover{ transform:translateY(-1px); }
@media (prefers-reduced-motion: reduce){
  .kit #vue.entre, .kit #carteQuiz, .kit .choix button, .kit .pastille.tourne,
  .kit .onglet.tourne b, #ruban.file, .etincelle{ animation:none !important; }
}

/* ============ lisibilité de l'hébreu vocalisé (nikud) — iOS + Android ======
   Le nikud est composé de marques combinantes : tout letter-spacing ou
   transformation de casse les décale. On les neutralise partout où de
   l'hébreu peut apparaître, et on donne de l'air vertical aux voyelles. */
.kit .he, .kit .l-he, .kit .d-he, .kit .h, .kit td.he, .kit .en, .kit .rep,
.kit .carte .q, .kit .carte .r.he, .kit .verdict b, .kit .racine .r b, .kit .regle .b {
  font-family: var(--he-serif);
  letter-spacing: 0 !important;      /* jamais d'espacement : casse le nikud */
  word-spacing: normal;
  text-transform: none;
  font-kerning: normal;
  font-variant-ligatures: none;      /* évite les substitutions qui avalent les points */
  font-feature-settings: "kern" 1;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  font-synthesis: none;              /* pas de faux gras : il écrase les voyelles */
  padding-block: 1px;                /* les points bas ne sont jamais rognés */
}
/* interlignage généreux : les voyelles vivent sous la ligne de base */
.kit .l-he, .kit .d-he, .kit .en, .kit .rep, .kit .carte .q, .kit .carte .r.he { line-height: 2.05; }
.kit td.he, .kit .h { line-height: 1.85; }

/* les fragments colorés (binyanim) restent inline dans le flux de leur ligne :
   pas d'isolation bidi, pas d'espacement, la couleur inline reste souveraine */
.kit .mot, .kit .he span, .kit .l-he span, .kit .d-he span {
  /* normal = le fragment reste dans le flux bidi de sa ligne ; « inherit »
     héritait de plaintext et isolait chaque mot, ce qui inversait l'ordre. */
  unicode-bidi: normal; letter-spacing: 0 !important; font-synthesis: none;
}
/* un fragment latin (translittération, ponctuation, chiffre) glissé dans une
   ligne hébraïque garde son propre sens de lecture sans casser la ligne */
.kit .lat, .kit .he bdi, .kit .l-he bdi { unicode-bidi: isolate; }

/* direction décidée ligne par ligne, y compris sur les blocs mixtes */
.kit .l-he, .kit .tr, .kit .h, .kit .f, .kit .en, .kit .rep, .kit .carte .q,
.kit .carte .r, .kit td.he, .kit td.fr, .kit .exo, .kit .verdict,
.kit .bulle, .kit .note { unicode-bidi: plaintext; text-align: start; }

/* mobile : on garde de gros corps de texte, le nikud reste lisible au pouce */
@media (max-width: 480px) {
  .kit .l-he { font-size: 24px; line-height: 2.1; }
  .kit .carte .q { font-size: 30px; }
  .kit .carte .r.he { font-size: 26px; }
  .kit .en, .kit .rep { font-size: 20px; line-height: 2.05; }
  .kit td.he { font-size: 19px; }
}
/* Safari iOS : évite l'agrandissement auto qui déforme l'espacement des voyelles */
@supports (-webkit-touch-callout: none) {
  .kit { -webkit-text-size-adjust: 100%; }
  .kit .l-he, .kit .carte .q { -webkit-font-smoothing: subpixel-antialiased; }
}

/* ====================== écran « Mes progrès » ====================== */
.prog-bloc{ margin-top:14px; }
.prog-t{ font-family:'Fredoka',sans-serif; font-size:19px; margin-bottom:10px; }
.prog-graph{ display:flex; align-items:flex-end; gap:8px; overflow-x:auto;
  padding:6px 2px 2px; -webkit-overflow-scrolling:touch; }
.prog-bar{ display:flex; flex-direction:column; align-items:center; gap:3px; min-width:38px; }
.prog-b{ width:22px; border-radius:11px 11px 6px 6px; display:block;
  animation:pousse .5s cubic-bezier(.2,1.4,.4,1) both; }
@keyframes pousse{ from{ transform:scaleY(.05); transform-origin:bottom; } to{ transform:scaleY(1); } }
.prog-bn{ font-size:11px; font-weight:700; opacity:.75; }
.prog-bl{ font-size:11px; opacity:.55; }
.prog-liste{ display:flex; flex-direction:column; gap:8px; margin-top:12px; }
.prog-l{ display:flex; align-items:center; gap:10px; width:100%; min-height:52px;
  border:0; background:rgba(255,255,255,.7); border-radius:18px; padding:8px 12px;
  text-align:start; cursor:pointer; font:inherit; }
.prog-l:active{ transform:scale(.98); }
.prog-pastille{ color:#fff; font-weight:700; border-radius:999px; padding:6px 10px; font-size:13px; }
.prog-l-txt{ display:flex; flex-direction:column; flex:1; min-width:0; }
.prog-l-txt span{ font-size:12px; opacity:.7; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.prog-l-d{ font-size:12px; opacity:.6; white-space:nowrap; }
.prog-lecons{ display:flex; flex-wrap:wrap; gap:8px; }
.prog-lec{ min-width:56px; min-height:52px; border:0; cursor:pointer; font:inherit;
  border-radius:18px; background:linear-gradient(160deg,#ffe9a8,#c9f7d2);
  display:flex; flex-direction:column; align-items:center; justify-content:center; }
.prog-lec b{ font-family:'Fredoka',sans-serif; font-size:18px; }
.prog-lec span{ font-size:11px; opacity:.7; }
.prog-lec:active{ transform:scale(.95); }

/* explication instantanée : bloc repliable après une bonne réponse */
.lecon-plus{margin-top:10px;border-radius:18px;background:rgba(255,255,255,.72);
  border:2px solid rgba(0,0,0,.06);overflow:hidden}
.lecon-plus>summary{cursor:pointer;list-style:none;padding:12px 16px;min-height:44px;
  display:flex;align-items:center;font-family:'Fredoka',system-ui,sans-serif;font-size:1rem}
.lecon-plus>summary::-webkit-details-marker{display:none}
.lecon-plus[open]>summary{border-bottom:2px solid rgba(0,0,0,.06)}
.lecon-plus .lecon{margin:0;border:0;background:transparent}

/* ---------------------------------------- glossaire cliquable */
.mot-glos{cursor:pointer;border-bottom:2px dotted rgba(124,58,237,.5);border-radius:4px;padding:0 2px}
.mot-glos:active{background:rgba(124,58,237,.12)}
#glos:empty{display:none}
.glos-fond{position:fixed;inset:0;background:rgba(35,20,60,.45);backdrop-filter:blur(3px);z-index:80}
.glos-carte{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:81;
  width:min(94vw,460px);max-height:82vh;overflow:auto;background:#fff;border-radius:28px;
  padding:22px 18px 20px;box-shadow:0 20px 60px rgba(60,30,110,.3);text-align:center}
.glos-carte.grand{text-align:left}
.glos-x{position:absolute;top:10px;right:10px;width:44px;height:44px;border:0;border-radius:50%;
  background:rgba(0,0,0,.06);font-size:1.1rem;cursor:pointer}
.glos-he{font-size:32px;line-height:2;direction:rtl;unicode-bidi:plaintext;cursor:pointer}
.glos-fr{font-size:1.15rem;font-family:'Fredoka',system-ui,sans-serif;margin-top:6px}
.glos-src{opacity:.6;font-size:.9rem;margin:6px 0 14px}
.glos-lecons{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.glos-t{font-family:'Fredoka',system-ui,sans-serif;font-size:1.3rem;margin-bottom:12px}
.glos-champ{width:100%;min-height:48px;border-radius:18px;border:2px solid rgba(0,0,0,.1);
  padding:10px 14px;font-size:1rem;margin-bottom:12px}
.glos-liste{display:flex;flex-direction:column;gap:8px}
.glos-l{display:flex;align-items:center;gap:10px;width:100%;min-height:52px;border:0;cursor:pointer;
  border-radius:18px;padding:8px 12px;background:rgba(124,58,237,.07);text-align:left}
.glos-l .he{font-size:22px;direction:rtl;unicode-bidi:plaintext;flex:0 0 auto}
.glos-l .f{flex:1;font-size:.98rem}
.glos-l .n{opacity:.6;font-size:.85rem}

/* ---- aperçu de leçon depuis le glossaire (pendant le quiz) ---- */
.glos-carte.apercu{ display:flex; flex-direction:column; max-height:88vh; padding:0; overflow:hidden; }
.apercu-tete{ position:sticky; top:0; display:flex; align-items:center; gap:10px;
  padding:12px 14px; background:var(--carte,#fff); border-bottom:2px dashed rgba(0,0,0,.08); z-index:2; }
.apercu-tete .apercu-t{ flex:1; font-size:14px; opacity:.8; }
.apercu-tete .btn.retour{ font-weight:700; }
.apercu-corps{ overflow:auto; -webkit-overflow-scrolling:touch; padding:14px; }
.apercu-pied{ position:sticky; bottom:0; padding:12px 14px calc(12px + env(safe-area-inset-bottom));
  background:var(--carte,#fff); border-top:2px dashed rgba(0,0,0,.08); }
.apercu-pied .btn.gros{ width:100%; min-height:48px; font-size:17px; font-weight:800; }
mark.glos-cible{ background:linear-gradient(180deg,transparent 55%,#ffe27a 55%);
  border-radius:8px; padding:0 2px; color:inherit; animation:eclat-arc .9s ease 2; }

/* ==================================================================
   Refonte UX 2026 : navigation basse, sélecteur de leçon en feuille,
   lisibilité des fragments, contrastes et focus.
   ================================================================== */

/* --- en-tête compact : titre + puce « leçon » ---------------------- */
.kit .chapeau{ display:grid; gap:8px; padding:6px 0 8px; }
.kit .marque{ grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:8px; font-size:16px; }
.kit .marque .marque-t{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.kit .marque .compte{ justify-content:flex-end; margin-top:0; }
.kit .marque .compte-mail{ display:none; }
@media (min-width:520px){ .kit .marque .compte-mail{ display:inline; } }

.kit .puce-lecon{
  display:flex; align-items:center; gap:10px; width:100%;
  min-height:52px; padding:8px 14px; border-radius:999px; cursor:pointer;
  border:3px solid var(--a5, #35a7e8); background:var(--carte,#fff); color:var(--encre,#22243a);
  font-family:"Fredoka","Nunito",sans-serif; font-size:16px; font-weight:700; text-align:left;
  box-shadow:0 4px 0 color-mix(in srgb, var(--a5,#35a7e8) 35%, #fff);
}
.kit .puce-lecon .puce-n{
  flex:none; display:grid; place-items:center; min-width:34px; height:34px; padding:0 8px;
  border-radius:999px; background:linear-gradient(180deg,#84d4ff,var(--a5,#35a7e8)); color:#fff; font-size:15px;
}
.kit .puce-lecon .puce-t{ flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.kit .puce-lecon .puce-f{ flex:none; opacity:.6; }

/* --- feuille de sélection des 50 leçons ---------------------------- */
.feuille{ position:fixed; inset:0; z-index:80; display:flex; align-items:flex-end; }
.feuille[hidden]{ display:none; }
.feuille-fond{ position:absolute; inset:0; background:rgba(20,16,40,.45); backdrop-filter:blur(3px); }
.feuille-carte{
  position:relative; width:100%; max-height:78dvh; overflow:auto;
  background:var(--papier,#fdf7ff); border-radius:28px 28px 0 0;
  padding:14px 14px calc(18px + env(safe-area-inset-bottom));
  box-shadow:0 -10px 40px rgba(30,10,60,.25);
  animation:feuilleMonte .22s ease;
}
@keyframes feuilleMonte{ from{ transform:translateY(22px); opacity:.6 } to{ transform:none; opacity:1 } }
@media (prefers-reduced-motion:reduce){ .feuille-carte{ animation:none } }
.feuille-tete{ display:flex; align-items:center; justify-content:space-between;
  font-family:"Fredoka","Nunito",sans-serif; font-size:18px; padding:2px 4px 10px; }
.feuille-x{ min-width:44px; min-height:44px; border-radius:50%; border:3px solid var(--trait,#e6dcf5);
  background:var(--carte,#fff); font-size:18px; cursor:pointer; color:var(--encre,#22243a); }
.feuille .pastilles{ display:grid; grid-template-columns:repeat(auto-fill,minmax(54px,1fr));
  gap:10px; overflow:visible; padding:4px 2px 6px; }
.feuille .pastille{ width:100%; min-width:0; height:54px; scroll-snap-align:none; }
@media (min-width:760px){ .feuille{ align-items:center; justify-content:center; }
  .feuille-carte{ max-width:640px; border-radius:28px; } }

/* --- barre d'onglets basse (zone du pouce) ------------------------- */
.kit .barre-bas{
  position:fixed; left:0; right:0; bottom:0; z-index:60;
  display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:4px;
  padding:6px max(6px,env(safe-area-inset-left)) calc(6px + env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-right));
  background:color-mix(in srgb, var(--papier,#fdf7ff) 92%, #fff);
  backdrop-filter:blur(10px); border-top:2px solid var(--trait,#e6dcf5); direction:ltr;
}
.kit .barre-bas .onglet{
  min-height:56px; padding:6px 2px; border-radius:16px; border:2px solid transparent;
  background:transparent; box-shadow:none; font-size:10.5px; gap:2px;
}
.kit .barre-bas .onglet b{ font-size:20px; }
.kit .barre-bas .onglet[aria-current="true"]{ color:#fff; border-color:#fff; }
.kit .barre-bas .onglet:nth-child(6){ border-color:transparent; color:#8a5a12; }
.kit .barre-bas .onglet:nth-child(6)[aria-current="true"]{
  background:linear-gradient(180deg,#ffd66b,#f5a623); box-shadow:0 4px 0 #d68b0c; }
.kit .enveloppe{ padding-bottom:calc(104px + env(safe-area-inset-bottom)); }

/* --- lisibilité des fragments colorés ------------------------------ */
.kit .l-he{ line-height:2.15; word-spacing:.12em; }
.kit .l-he .mot{ white-space:pre-wrap; padding-inline:.03em; }
.kit .l-he .mot + .mot{ margin-inline-start:.01em; }

/* --- contraste des verdicts et focus ------------------------------- */
.kit .verdict.bon{ color:#0f7a45; }
.kit .verdict.faux{ color:#b3231f; }
.kit .verdict .pourquoi{ color:var(--encre,#22243a); }
.kit button:focus-visible, .kit input:focus-visible, .kit summary:focus-visible,
.feuille button:focus-visible{ outline:3px solid #1b5cd8; outline-offset:2px; border-radius:12px; }

/* --- aide audio repliée -------------------------------------------- */
.kit .son-aide{ margin:8px 0 4px; font-size:13px; color:var(--encre2,#5b5570); }
.kit .son-aide summary{ cursor:pointer; min-height:32px; display:flex; align-items:center; font-weight:700; }
.kit .son-aide .etat-son{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:6px 0; }
.kit .barre-audio button{ min-height:44px; }
.kit .carte .consigne{ font-weight:800; font-size:15px; color:var(--encre,#22243a);
  margin:0 0 10px; text-align:center; }

/* ---------------------- tableau de bord des compétences ---------------- */
.comp-liste{display:grid;gap:12px}
.comp{border:2px solid color-mix(in srgb,var(--c) 35%,transparent);
  background:color-mix(in srgb,var(--c) 8%,#fff);border-radius:20px;padding:12px 14px}
.comp-ok{border-color:var(--c);box-shadow:0 4px 0 color-mix(in srgb,var(--c) 30%,transparent)}
.comp-h{display:flex;align-items:center;gap:8px;font-size:17px}
.comp-e{font-size:22px}
.comp-h b{flex:1}
.comp-pct{font-weight:800;color:var(--c)}
.comp-jauge{position:relative;height:14px;border-radius:99px;background:#fff;
  border:1px solid color-mix(in srgb,var(--c) 30%,transparent);margin:8px 0 6px;overflow:hidden}
.comp-rempli{position:absolute;inset:0 auto 0 0;background:var(--c);border-radius:99px;
  transition:width .5s cubic-bezier(.2,.9,.3,1.2)}
.comp-cible{position:absolute;top:-2px;bottom:-2px;width:3px;background:#2b2b2b;opacity:.55;border-radius:2px}
.comp-d{font-size:13px;opacity:.8}
.comp-obj{display:flex;align-items:center;gap:8px;font-size:13px;margin-top:8px}
.comp-obj select{min-height:36px;border-radius:12px;padding:2px 8px;
  border:2px solid color-mix(in srgb,var(--c) 40%,transparent);background:#fff;font:inherit}
.comp-badge{font-weight:800;color:var(--c)}
.comp-astuce{font-size:12px;opacity:.65;margin-top:10px}

/* ------------------------- tutoriel guidé (coach marks) ---------------- */
body.tour-ouvert{overflow:hidden}
.tour-fond{position:fixed;inset:0;z-index:120}
.tour-trou{position:absolute;border-radius:22px;border:3px solid #fff;
  box-shadow:0 0 0 9999px rgba(24,16,46,.62), 0 0 0 6px rgba(255,255,255,.35);
  transition:all .25s ease;pointer-events:none;animation:tour-pulse 1.6s ease-in-out infinite}
@keyframes tour-pulse{50%{box-shadow:0 0 0 9999px rgba(24,16,46,.62), 0 0 0 12px rgba(255,255,255,.28)}}
.tour-bulle{position:fixed;left:12px;right:12px;background:#fff;border-radius:24px;
  padding:16px 18px 14px;box-shadow:0 16px 40px rgba(24,16,46,.3);text-align:center;
  max-width:460px;margin:0 auto;animation:tour-in .28s cubic-bezier(.2,.9,.3,1.3)}
@keyframes tour-in{from{opacity:0;transform:translateY(10px) scale(.96)}}
.tour-bulle::before{content:'';position:absolute;left:50%;translate:-50% 0;border:11px solid transparent}
.tour-bulle.bas::before{bottom:-21px;border-top-color:#fff}
.tour-bulle.haut::before{top:-21px;border-bottom-color:#fff}
.tour-e{font-size:32px}
.tour-bulle h3{margin:4px 0 6px;font-size:19px}
.tour-bulle p{margin:0;font-size:15px;line-height:1.5;opacity:.85}
.tour-points{display:flex;gap:6px;justify-content:center;margin:12px 0 10px}
.tour-points span{width:8px;height:8px;border-radius:99px;background:#ddd}
.tour-points span.on{background:#7c3aed;width:22px}
.tour-nav{display:flex;gap:10px;justify-content:center}
.tour-nav .btn{min-height:44px}

/* ==================================================================
   Mobile first — ancrage de la mise en page (fini le « flottant »)
   ================================================================== */

/* La page ne bouge plus latéralement et respecte la hauteur réelle du
   navigateur mobile (barres d'adresse dynamiques). */
.kit{ min-height:100svh; overflow-x:hidden; overscroll-behavior-y:none; }
.kit .enveloppe{ width:100%; }

/* En-tête : plein cadre, opaque, collé au bord haut. */
.kit .chapeau{
  position:sticky; top:0; z-index:40;
  margin-inline:calc(-1 * max(12px, env(safe-area-inset-left)))
               calc(-1 * max(12px, env(safe-area-inset-right)));
  padding:calc(6px + env(safe-area-inset-top))
          max(12px, env(safe-area-inset-right)) 8px
          max(12px, env(safe-area-inset-left));
  background:var(--papier,#f3f7ff);
  backdrop-filter:none;
  border-bottom:2px solid var(--trait,#d9e3fb);
  box-shadow:0 6px 14px -12px rgba(30,40,90,.5);
}
.kit .chapeau::after{ display:none; }
.kit .enveloppe{ padding-top:0; }

/* Barre du bas : opaque, plaquée au bord, sans effet de flottement. */
.kit .barre-bas{
  background:var(--carte,#fff);
  backdrop-filter:none;
  border-top:2px solid var(--trait,#d9e3fb);
  box-shadow:0 -8px 18px -14px rgba(30,40,90,.55);
  gap:2px;
}
.kit .barre-bas .onglet{ min-height:52px; }

/* Réserve exacte sous le contenu pour la barre du bas. */
.kit .enveloppe{ padding-bottom:calc(78px + env(safe-area-inset-bottom)); }

/* Cartes : posées, pas suspendues. */
.kit .titre, .kit .bloc, .kit .lex > div, .kit .decl > div{
  box-shadow:0 2px 0 var(--trait,#d9e3fb);
}
.kit .titre{ margin:12px 0 12px; }

/* Sur petit écran, on garde une seule colonne et des marges régulières. */
@media (max-width:520px){
  .kit{ font-size:16px; }
  .kit .titre .he{ font-size:28px; }
  .kit .decl{ grid-template-columns:1fr; }
  .kit .puce-lecon{ min-height:48px; }
  .profil-barre{ margin:0 0 10px; }
}

/* Rangée de paquets : un seul ruban qui glisse, plus de pavés en escalier. */
.kit .paquets{
  flex-wrap:nowrap; overflow-x:auto; scroll-snap-type:x proximity;
  padding:2px 2px 8px; margin-inline:-2px; scrollbar-width:none;
}
.kit .paquets::-webkit-scrollbar{ display:none; }
.kit .paquet{ flex:none; scroll-snap-align:start; }

/* Onglet actif contenu dans la barre du bas (plus de débordement). */
.kit .barre-bas{ align-items:stretch; padding-top:4px; }
.kit .barre-bas .onglet[aria-current="true"]{ box-shadow:none; transform:none; }

/* ==================================================================
   iPhone : zone sûre du bas (home indicator) — aucun chevauchement
   ================================================================== */
:root{
  /* Toujours au moins 10px de garde, sinon la vraie encoche du bas. */
  --sab: max(10px, env(safe-area-inset-bottom, 0px));
  --h-barre: 58px;               /* hauteur utile des onglets */
  --reserve-bas: calc(var(--h-barre) + var(--sab) + 10px);
}

.kit .barre-bas{
  padding-top:6px;
  padding-bottom:var(--sab);
  padding-left:max(6px, env(safe-area-inset-left, 0px));
  padding-right:max(6px, env(safe-area-inset-right, 0px));
}
.kit .barre-bas .onglet{ min-height:52px; }

/* Réserve sous le contenu : hauteur réelle de la barre + zone sûre. */
.kit .enveloppe{ padding-bottom:var(--reserve-bas); }
.kit main#vue{ scroll-padding-bottom:var(--reserve-bas); }

/* Éléments flottants : ils s'arrêtent au-dessus de la barre. */
.kit .barre-flottante, .kit .fab, .kit .toast,
.tour-bulle.bas{ bottom:calc(var(--reserve-bas) + 8px); }

/* Feuilles et aperçus plein écran : leur pied garde la zone sûre. */
.feuille-carte{ padding-bottom:calc(14px + var(--sab)); }
.apercu-pied{ padding-bottom:calc(12px + var(--sab)); }
.obd-carte{ padding-bottom:calc(18px + var(--sab)); }

/* ============================== routine quotidienne ==================== */
.kit .rout .rout-jauge{display:flex;align-items:center;gap:14px;margin:6px 0 12px}
.kit .rout-anneau{
  --pc:0;width:92px;height:92px;flex:0 0 92px;border-radius:50%;
  background:conic-gradient(#5F9F34 calc(var(--pc)*1%), #ecdff7 0);
  display:grid;place-items:center;position:relative}
.kit .rout-anneau::after{content:"";position:absolute;inset:9px;border-radius:50%;background:#fff}
.kit .rout-anneau span{position:relative;z-index:1;font-family:Fredoka,Nunito,sans-serif;font-size:24px;font-weight:700;color:#3b2b52}
.kit .rout-anneau i{font-style:normal;font-size:13px;color:#7a6a90}
.kit .rout-etat{display:flex;flex-direction:column;gap:2px}
.kit .rout-etat b{font-family:Fredoka,Nunito,sans-serif;font-size:17px}
.kit .rout-etat span{font-size:14px;color:#6b5c82}
.kit .rout-serie{font-weight:700;color:#E77613}
.kit .rout-label{font-weight:700;font-size:14px;color:#5b4a75;margin:8px 0 6px}
.kit .rout-choix{display:flex;gap:8px;flex-wrap:wrap}
.kit .rout-min{
  min-width:60px;min-height:56px;border:0;border-radius:18px;background:#f2e9fb;color:#4a3a66;
  font-family:Fredoka,Nunito,sans-serif;font-size:20px;font-weight:700;display:grid;place-items:center;cursor:pointer}
.kit .rout-min span{display:block;font-size:11px;font-weight:600;color:#7a6a90}
.kit .rout-min.on{background:linear-gradient(180deg,#8ed36a,#5F9F34);color:#fff;box-shadow:0 4px 0 #4b7f28}
.kit .rout-min.on span{color:#eaffe0}
.kit .rout-ligne{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px}
.kit .rout-heure{min-height:44px;border:2px solid #e6d9f6;border-radius:14px;padding:6px 10px;font-size:16px;background:#fff}
.kit .btn.mini.on{background:#e6f6dd;color:#3d6b21}
.kit .rout-astuce{font-size:13px;color:#7a6a90;margin-top:8px}
.kit .rout-semaine{display:flex;gap:8px;align-items:flex-end;margin-top:14px}
.kit .rout-j{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px}
.kit .rout-j-b{width:100%;max-width:30px;border-radius:8px 8px 4px 4px;background:#ece2f8;display:block}
.kit .rout-j.peu .rout-j-b{background:#ffd79a}
.kit .rout-j.ok .rout-j-b{background:#8ed36a}
.kit .rout-j-n{font-size:11px;color:#7a6a90;font-weight:700}

#routBanniere{position:fixed;left:0;right:0;bottom:calc(var(--reserve-bas, 68px) + 8px);z-index:60;
  padding:0 10px;pointer-events:none;opacity:0;transform:translateY(14px);transition:.25s}
#routBanniere.visible{opacity:1;transform:none;pointer-events:auto}
#routBanniere .rout-ban-c{
  display:flex;align-items:center;gap:10px;background:#fff;border-radius:22px;padding:10px 12px;
  box-shadow:0 8px 22px rgba(70,40,110,.18);border:2px solid #f0e4ff}
#routBanniere .rout-ban-e{font-size:26px}
#routBanniere .rout-ban-t{display:flex;flex-direction:column;flex:1;min-width:0}
#routBanniere .rout-ban-t b{font-family:Fredoka,Nunito,sans-serif;font-size:15px}
#routBanniere .rout-ban-t span{font-size:13px;color:#6b5c82}
#routBanniere .rout-ban-x{border:0;background:#f4eefc;width:34px;height:34px;border-radius:50%;font-size:14px;cursor:pointer}


/* --- parcours adaptatif -------------------------------------------- */
.kit .barre-bas .onglet{ font-size:9.5px; }
.kit .barre-bas .onglet b{ font-size:18px; }
.kit .barre-bas .onglet:nth-child(1){ color:#7a3ecf; }
.kit .barre-bas .onglet:nth-child(1)[aria-current="true"]{
  background:linear-gradient(180deg,#c3a2ff,#8b5cf6); box-shadow:0 4px 0 #6d34d6; }
.kit .parc-intro{ text-align:center; }
.kit .parc-emo{ font-size:46px; line-height:1; }
.kit .parc-h{ margin:6px 0 4px; font-size:22px; }
.kit .parc-bloc{ margin-bottom:14px; }
.kit .parc-p{ margin:2px 0 10px; }
.kit .parc-etape{ display:flex; align-items:center; gap:10px; padding:12px;
  border:2px solid var(--trait,#e6dcf5); border-radius:20px; margin-top:10px; background:#fff; }
.kit .parc-etape.top{ border-color:#8b5cf6; box-shadow:0 4px 0 #ede4ff; }
.kit .parc-e{ font-size:26px; }
.kit .parc-tx{ display:flex; flex-direction:column; gap:2px; flex:1; min-width:0; text-align:left; }
.kit .parc-tx span{ font-size:12.5px; color:var(--encre2,#5b5570); }
.kit .parc-jauge{ height:10px; border-radius:99px; background:#efe7fb; overflow:hidden; margin:6px 0 12px; }
.kit .parc-jauge span{ display:block; height:100%; background:linear-gradient(90deg,#8b5cf6,#4BAAC9);
  border-radius:99px; transition:width .3s ease; }
.kit .parc-carte{ display:grid; grid-template-columns:repeat(auto-fill,minmax(46px,1fr)); gap:8px; }
.kit .parc-case{ position:relative; height:46px; border-radius:14px; border:2px solid var(--trait,#e6dcf5);
  background:#fff; font-weight:800; }
.kit .parc-case.valide{ background:linear-gradient(180deg,#a9f0c4,#5F9F34); color:#fff; border-color:#fff; }
.kit .parc-case.encours{ border-color:#E77613; color:#a85a06; }
.kit .parc-ic{ position:absolute; top:-4px; right:-2px; font-size:12px; }
.kit .parc-det{ display:flex; flex-wrap:wrap; gap:6px; justify-content:center; margin:8px 0; }
.kit .parc-chip{ border:2px solid var(--c); color:var(--c); border-radius:99px; padding:3px 10px; font-size:12px; font-weight:700; }

/* ---------------------------- échéancier automatique (révision espacée) */
.kit .pl-bloc{ margin-top:14px }
.kit .pl-sst{ font:700 13px/1.3 Nunito,system-ui; opacity:.65; margin:12px 2px 8px }
.kit .pl-comps{ display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:10px }
.kit .pl-comp{ display:flex; flex-direction:column; gap:3px; align-items:flex-start;
  border:2px solid color-mix(in srgb, var(--c) 45%, transparent); background:color-mix(in srgb, var(--c) 10%, #fff);
  border-radius:18px; padding:10px 12px; text-align:left; cursor:pointer; font:600 13px/1.3 Nunito,system-ui; color:inherit }
.kit .pl-comp[disabled]{ opacity:.45; cursor:default }
.kit .pl-comp.pl-urgent{ border-color:#ff4d6d; background:#fff1f4 }
.kit .pl-ce{ font-size:20px }
.kit .pl-cd{ font-size:12px; opacity:.85 }
.kit .pl-lignes{ display:flex; flex-direction:column; gap:8px }
.kit .pl-ligne{ display:flex; align-items:center; gap:10px; padding:8px 10px;
  border-radius:16px; background:#fff; border:2px solid rgba(0,0,0,.07) }
.kit .pl-ligne.pl-urgent{ border-color:#ffc2cd; background:#fff7f9 }
.kit .pl-n{ flex:none; width:28px; height:28px; border-radius:50%; display:grid; place-items:center;
  background:rgba(0,0,0,.06); font:800 12px/1 Fredoka,system-ui }
.kit .pl-t{ flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  font:600 14px/1.3 Nunito,system-ui }
.kit .pl-e{ flex:none; font-size:12px }
.kit .pl-due{ color:#ff4d6d }
.kit .pl-ok{ opacity:.6 }
.kit .pl-vide{ opacity:.45 }
.kit .pl-b{ flex:none; border:0; border-radius:999px; padding:6px 12px; cursor:pointer;
  background:linear-gradient(180deg,#ffd76e,#ffb03a); font:700 12px/1 Nunito,system-ui }
.kit .pl-b[disabled]{ opacity:.4; cursor:default }
.kit .pl-filtre{ margin-top:12px; font:600 13px/1.4 Nunito,system-ui; display:flex; gap:10px;
  align-items:center; flex-wrap:wrap }
@media (max-width:420px){
  .kit .pl-ligne{ flex-wrap:wrap }
  .kit .pl-t{ flex:1 1 auto }
  .kit .pl-e{ order:3; flex:1 0 100%; padding-left:38px }
}

/* ------- Mode « révision d'aujourd'hui » : bloc d'entrée + compteur ------ */
.auj-bloc{border:2px solid rgba(255,138,0,.35);background:linear-gradient(180deg,#fff7ec,#fff)}
.auj-t{font-family:Fredoka,Nunito,sans-serif;font-weight:700;font-size:18px;margin-bottom:6px}
.sess{margin:10px 0 4px;padding:10px 14px;border-radius:18px;
  background:rgba(255,255,255,.9);box-shadow:0 3px 12px rgba(80,60,120,.10)}
.sess-tete{display:flex;justify-content:space-between;align-items:center;gap:10px;
  font-size:13px;font-family:Nunito,sans-serif}
.sess-tete b{font-family:Fredoka,Nunito,sans-serif}
.sess-jauge{margin-top:7px;height:10px;border-radius:99px;background:rgba(120,100,160,.15);overflow:hidden}
.sess-jauge i{display:block;height:100%;border-radius:99px;
  background:linear-gradient(90deg,#7bd0ff,#a78bfa,#ffa2c0);transition:width .35s ease}

/* ------------------------------------------- rappel du matin (e-mail) */
.rappel-puce{border:0;cursor:pointer;font:600 12px/1 Nunito,sans-serif;
  padding:7px 11px;border-radius:99px;color:#5b3a86;
  background:linear-gradient(135deg,#ffe6a7,#ffc9dd);box-shadow:0 2px 0 rgba(120,100,160,.18)}
.rappel-puce:active{transform:translateY(1px)}
.rappel-feuille{position:fixed;inset:0;z-index:80;display:flex;align-items:center;
  justify-content:center;padding:18px}
.rappel-fond{position:absolute;inset:0;background:rgba(40,25,70,.45)}
.rappel-carte{position:relative;width:min(420px,100%);background:#fff;border-radius:26px;
  padding:20px;box-shadow:0 18px 50px rgba(60,40,100,.28);font-family:Nunito,sans-serif}
.rappel-tete{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.rappel-tete b{font-family:Fredoka,Nunito,sans-serif;font-size:17px}
.rappel-x{border:0;background:transparent;font-size:18px;cursor:pointer;color:#7a6a95}
.rappel-txt{font-size:14px;line-height:1.5;color:#4a3b66;margin:6px 0 14px}
.rappel-champ{width:100%;box-sizing:border-box;border:2px solid rgba(120,100,160,.22);
  border-radius:16px;padding:12px 14px;font:400 15px Nunito,sans-serif;outline:none}
.rappel-champ:focus{border-color:#a78bfa}
.rappel-ok,.rappel-stop{margin-top:12px;width:100%;border:0;cursor:pointer;border-radius:18px;
  padding:13px;font:700 15px Fredoka,Nunito,sans-serif;color:#43286b;
  background:linear-gradient(135deg,#bde9ff,#ffc9dd);box-shadow:0 3px 0 rgba(120,100,160,.2)}
.rappel-stop{background:linear-gradient(135deg,#ffd7d7,#ffe6a7)}
.rappel-ok[disabled]{opacity:.6}
.rappel-msg{margin-top:10px;font-size:13px;color:#3f7d4f;text-align:center}

/* ============ Suivi d'avancement leçon après leçon ============ */
.kit .suivi{background:var(--carte,#fff);border-radius:22px;padding:12px 14px;margin:0 0 14px;
  box-shadow:0 4px 16px rgba(80,60,140,.08)}
.kit .suivi-tete{display:flex;align-items:center;justify-content:space-between;gap:10px;
  font-family:Fredoka,Nunito,sans-serif;font-size:14px;margin-bottom:8px}
.kit .suivi-cpt{font-size:12px;opacity:.7;white-space:nowrap}
.kit .suivi-jauge{height:9px;border-radius:99px;background:rgba(120,100,180,.15);overflow:hidden}
.kit .suivi-jauge.grand{height:12px;margin:8px 0 12px}
.kit .suivi-jauge.mini{height:6px;margin-top:5px}
.kit .suivi-jauge i{display:block;height:100%;border-radius:99px;
  background:linear-gradient(90deg,#7ad0f0,#a78bfa,#f7a8c9);transition:width .4s ease}
.kit .suivi-etapes{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:10px}
.kit .suivi-et{border:0;cursor:pointer;border-radius:16px;padding:8px 4px;font-size:11px;line-height:1.2;
  font-family:Nunito,sans-serif;background:rgba(120,100,180,.09);color:inherit;
  display:flex;flex-direction:column;align-items:center;gap:4px}
.kit .suivi-et .suivi-g{font-size:16px}
.kit .suivi-et.ok{background:rgba(95,159,52,.16);color:#3d7020;font-weight:700}
.kit .suivi-fin{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px;
  font-size:13px;flex-wrap:wrap}
.kit .suivi-liste{display:flex;flex-direction:column;gap:8px}
.kit .suivi-ligne{display:flex;align-items:center;gap:10px;width:100%;text-align:start;cursor:pointer;
  border:0;border-radius:18px;padding:9px 12px;background:rgba(120,100,180,.07);color:inherit;
  font-family:Nunito,sans-serif}
.kit .suivi-ligne.ici{background:rgba(167,139,250,.2);box-shadow:inset 0 0 0 2px rgba(167,139,250,.5)}
.kit .suivi-num{flex:none;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;
  background:#fff;font-weight:800;font-size:12px}
.kit .suivi-tx{flex:1;min-width:0;font-size:13px}
.kit .suivi-tx b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kit .suivi-pct{flex:none;font-size:12px;font-weight:800;opacity:.75}
