/* Outils ajoutés au design d'origine : barre de lecture, retour en haut,
   recherche, bandeau cookies, menu mobile, encadré « Prochains bacs blancs »,
   pages légales et page 404. Mêmes couleurs que ancien.css. */
:root {
  --nuit: #241A4A;
  --orange: #F28C1B;
  --orange-texte: #A84D05;
  --papier: #FFFFFF;
  --surface: #FFFFFF;
  --surface-2: #FFF7ED;
  --texte: #241F33;
  --texte-2: #575067;
  --trait: #ECE7F0;
  --trait-fort: #D6CFE0;
  --texte-police: var(--body);
  --rayon: 12px;
  --e1: 4px; --e2: 8px; --e3: 12px; --e4: 16px; --e5: 24px; --e6: 32px; --e7: 48px; --e8: 64px; --e9: 96px;
}

/* Lisibilité : le texte des boutons orange passe en violet nuit (contraste 6:1) */
.btn-fr { color: var(--nuit); }
.btn-fr:hover { background: #D9740A; color: #fff; transform: none; }
.btn-ph:hover, .btn:hover { transform: none; }
.btn-outline:hover { border-color: var(--nuit); }

/* Lien actif du menu */
.nav-links a[aria-current="page"] { color: var(--dark); background: white; font-weight: 600; box-shadow: 0 2px 8px rgba(0, 0, 0, .06); }
.nav-logo { text-decoration: none; }

/* Pied de page : textes plus lisibles */
footer .footer-brand p { color: rgba(255, 255, 255, .74); }
footer .footer-brand a { color: #fff; }
footer .footer-col h2 { font-family: var(--body); font-size: .72rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: rgba(255, 255, 255, .7); margin-bottom: 14px; }
footer .footer-col ul li a { color: rgba(255, 255, 255, .8); }
footer .footer-bottom { color: rgba(255, 255, 255, .68); }
footer .footer-bottom a, footer .footer-bottom button { color: rgba(255, 255, 255, .8); background: none; border: 0; padding: 0; font: inherit; cursor: pointer; }
footer .footer-bottom a:hover, footer .footer-bottom button:hover { color: #fff; text-decoration: underline; }
footer .footer-brand .logo-mark { text-decoration: none; }

/* Encadré « Prochains bacs blancs » de l'accueil : une liste simple sous les photos */
.hero-droite { display: flex; flex-direction: column; gap: 22px; }
/* « Nous vs les alternatives » suit directement les matières : pas de double espace */
.section.section-vs { padding-top: 0; }
.section-vs .vs-wrap { margin-top: 0; }
/* Le design d'origine masquait les photos sous 1024 px : on les garde, en plus
   compact, avec les pastilles de notes ramenées dans le cadre (pas de débord). */
@media (max-width: 1024px) {
  .hero-photos { display: grid; width: 100%; max-width: 640px; height: 520px; margin: 0 auto; }
  .grade-float.g1 { top: -12px; left: 8px; }
  .grade-float.g2 { right: 8px; }
  .grade-float.g3 { left: 8px; }
}
@media (max-width: 600px) {
  .hero-photos { height: 380px; gap: 8px; padding-bottom: 20px; }
  .hp-main { border-radius: 16px; }
  .grade-float { transform: scale(.8); }
}
.hero-sub-title { color: var(--dark); }
.prochaines-bac { background: #fff; border: 1px solid var(--border); border-radius: 18px; box-shadow: 0 10px 30px rgba(0, 0, 0, .06); overflow: hidden; position: relative; z-index: 2; }
.prochaines-bac .pb-titre { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 12px 18px; border-bottom: 1px solid var(--border); }
.prochaines-bac .pb-titre strong { font-size: .95rem; font-weight: 700; color: var(--dark); }
.prochaines-bac .pb-titre a { color: var(--orange-texte); font-weight: 600; font-size: .86rem; }
.prochaines-bac ul { list-style: none; margin: 0; padding: 0; }
.prochaines-bac li { display: grid; grid-template-columns: 82px 1fr auto; gap: 12px; align-items: center; padding: 11px 18px; border-bottom: 1px solid var(--border); font-size: .9rem; color: var(--dark); }
.prochaines-bac li:last-child { border-bottom: 0; }
.prochaines-bac .p-date { font-weight: 700; line-height: 1.2; }
.prochaines-bac .p-date small { display: block; font-weight: 400; font-size: .78rem; color: var(--grey); }
.prochaines-bac .p-places { font-size: .82rem; color: var(--grey); white-space: nowrap; }
.prochaines-bac .pastille { display: inline-block; width: 9px; height: 9px; border-radius: 3px; margin-right: 6px; vertical-align: 0; }
.prochaines-bac .petit { color: var(--grey); font-size: .78rem; }

/* Matières : petites tuiles pastel, 3 par ligne */
.tuiles-matieres { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; max-width: 980px; margin: 0 auto; }
.tuile-matiere { display: flex; flex-direction: column; gap: 3px; padding: 16px 18px; border-radius: 14px; background: var(--p); color: var(--f); transition: box-shadow .2s; }
.tuile-matiere:hover { box-shadow: 0 8px 22px rgba(0, 0, 0, .08); }
.tuile-matiere strong { font-family: var(--display); font-weight: 400; font-size: 1.35rem; line-height: 1.15; }
.tuile-matiere .tm-niveau { font-size: .7rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; opacity: .85; }
.tuile-matiere .tm-desc { font-size: .84rem; color: var(--dark2); }
.tuile-matiere .tm-lien { font-size: .8rem; font-weight: 700; margin-top: 4px; }
@media (max-width: 860px) { .tuiles-matieres { grid-template-columns: 1fr 1fr; } }
@media (max-width: 480px) { .tuiles-matieres { gap: 8px; } .tuile-matiere { padding: 12px 14px; } .tuile-matiere strong { font-size: 1.1rem; } .tuile-matiere .tm-desc { display: none; } }

/* Palette pastel par matière : fond doux (--p), texte foncé (--f) */
.m-francais { --p: #FDEBDC; --f: #8A3B06; }
.m-philo    { --p: #EEEAFB; --f: #3D2A84; }
.m-maths    { --p: #DFF3EA; --f: #05603F; }
.m-physique { --p: #E5EAFB; --f: #2F3A9A; }
.m-hggsp    { --p: #FBF1D6; --f: #6B4A00; }
.m-ses      { --p: #FBE7F2; --f: #8A1458; }
.m-hlp      { --p: #E0F2F6; --f: #0B5566; }
.m-svt      { --p: #EAF4DD; --f: #3B6510; }
.m-oral     { --p: #FBE6EA; --f: #9A1030; }

/* Calendrier : cartes pastel, plus de couleurs vives */
.session-card .session-top { background: var(--p) !important; color: var(--f) !important; }
.session-card .session-date-badge { background: rgba(255, 255, 255, .7); border: 0; color: var(--f); }
.session-card .session-spots-fill { background: var(--f) !important; opacity: .45; }
.filter-btn { background: #fff; color: var(--grey); border-color: var(--border); }
.filter-btn .pastille, .mv-chip .pastille { display: inline-block; width: 8px; height: 8px; border-radius: 2px; background: var(--f); margin-right: 6px; }
.filter-btn[aria-pressed="true"] { background: var(--p, var(--dark)) !important; color: var(--f, #fff) !important; border-color: var(--f, var(--dark)) !important; }
.mv-chip { background: var(--p) !important; color: var(--f) !important; }
.mv-cell.mv-has { border-color: var(--border) !important; }

/* Petits boutons à icône (recherche, menu) */
.icone-bouton { width: 40px; height: 40px; display: inline-grid; place-items: center; background: #fff; border: 1.5px solid var(--border); border-radius: 10px; color: var(--dark); cursor: pointer; }
.icone-bouton:hover { border-color: var(--dark); }
.icone-bouton svg { width: 19px; height: 19px; }
.menu-bouton { display: none; }
.menu-mobile { display: none; }
@media (max-width: 1060px) {
  .nav-espace { display: none !important; }
}
@media (max-width: 768px) {
  .menu-bouton { display: inline-grid; }
  #nav-cta-insc { display: none; }
  .nav-cta { align-items: center; gap: 8px; }
  .menu-mobile { position: fixed; inset: 64px 0 0 0; z-index: 999; background: #fff; overflow-y: auto; padding: 16px 20px 40px; }
  .menu-mobile.ouvert { display: block; }
  .menu-mobile .m-lien { display: block; padding: 14px 0; border-bottom: 1px solid var(--border); font-family: var(--display); font-size: 1.5rem; color: var(--dark); }
  .menu-mobile .m-lien[aria-current="page"] { color: var(--orange-texte); }
  .menu-mobile .m-secondaires { display: flex; flex-direction: column; gap: 10px; margin-top: 22px; }
  .menu-mobile .btn { justify-content: center; width: 100%; }
  body.menu-ouvert { overflow: hidden; }
}

/* Barre de lecture et retour en haut */
.barre-lecture { position: fixed; top: 0; left: 0; height: 3px; width: 0; background: var(--orange); z-index: 1001; }
.haut { position: fixed; right: 16px; bottom: 16px; z-index: 900; width: 46px; height: 46px; display: grid; place-items: center; background: var(--nuit); color: #fff; border: 0; border-radius: 12px; cursor: pointer; box-shadow: 0 8px 24px rgba(36, 26, 74, .25); }
.haut[hidden] { display: none; }
.haut svg { width: 20px; height: 20px; }

/* Accessibilité */
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.aller-contenu { position: absolute; left: 16px; top: -60px; z-index: 2000; background: var(--nuit); color: #fff; padding: 8px 16px; border-radius: 8px; }
.aller-contenu:focus { top: 8px; }
:focus-visible { outline: 3px solid var(--orange); outline-offset: 2px; }
[data-aller] { cursor: pointer; }

/* Recherche */
.recherche { position: fixed; inset: 0; z-index: 1500; background: rgba(15, 12, 32, .55); display: none; align-items: flex-start; justify-content: center; padding: 10vh 16px 24px; }
.recherche.ouverte { display: flex; }
.recherche-boite { width: 100%; max-width: 640px; background: #fff; border-radius: 16px; box-shadow: 0 20px 60px rgba(0, 0, 0, .3); overflow: hidden; }
.recherche-champ { display: flex; align-items: center; gap: 12px; padding: 12px 16px; border-bottom: 1px solid var(--border); color: var(--grey); }
.recherche-champ input { flex: 1; border: 0; background: transparent; color: var(--dark); font: 1.05rem var(--body); padding: 8px 0; outline: none; }
.recherche-champ kbd { font: .75rem var(--body); border: 1px solid var(--border); border-radius: 4px; padding: 2px 6px; }
.recherche-resultats { list-style: none; margin: 0; padding: 8px 0; max-height: 60vh; overflow-y: auto; }
.recherche-resultats a { display: block; padding: 12px 16px; color: var(--dark); }
.recherche-resultats a:hover, .recherche-resultats a.actif { background: var(--fr-bg); }
.recherche-resultats .r-page { font-size: .72rem; color: var(--grey); text-transform: uppercase; letter-spacing: .06em; }
.recherche-resultats .r-titre { font-weight: 700; }
.recherche-resultats .r-extrait { font-size: .88rem; color: var(--grey); }
.recherche-resultats mark { background: var(--fr-l); color: inherit; }
.recherche-vide { padding: 16px; color: var(--grey); }
.recherche-vide a { color: var(--orange-texte); text-decoration: underline; }

/* Bandeau cookies */
.cookies { position: fixed; left: 16px; bottom: 16px; z-index: 1400; max-width: calc(100vw - 32px); display: flex; align-items: center; gap: 12px; flex-wrap: wrap; background: #fff; color: var(--dark); border: 1px solid var(--border); border-radius: 12px; box-shadow: 0 6px 20px rgba(0, 0, 0, .10); padding: 10px 12px; font-size: .82rem; }
.cookies[hidden] { display: none; }
.cookies p { color: var(--grey); margin: 0; line-height: 1.4; }
.cookies a { color: var(--grey); text-decoration: underline; }
.cookies .boutons { display: flex; gap: 6px; }
.cookies .bouton { min-height: 30px; padding: 0 12px; border-radius: 8px; font: 600 .8rem var(--body); cursor: pointer; border: 1px solid var(--border); background: #fff; color: var(--dark); }
.cookies .bouton-plein { background: var(--dark); border-color: var(--dark); color: #fff; }
.cookies .bouton:hover { border-color: var(--nuit); }

/* Écran de chargement (une fois par visite) */
.chargement { position: fixed; inset: 0; z-index: 3000; background: #fff; display: grid; place-items: center; transition: opacity .25s; }
.chargement.fini { opacity: 0; pointer-events: none; }
.chargement svg { width: 72px; height: 72px; }
.chargement .rayons { transform-origin: 32px 40px; animation: lever 1.1s ease-in-out infinite alternate; }
@keyframes lever { from { transform: translateY(3px); opacity: .5; } to { transform: translateY(0); opacity: 1; } }
html:not(.js) .chargement { display: none; }

/* Pages légales et 404 (dans le style du site) */
.conteneur { width: 100%; max-width: 1200px; margin: 0 auto; padding: 0 32px; }
.etroit { max-width: 820px; }
.legal { padding: 120px 32px 80px; line-height: 1.7; color: var(--dark2); }
.legal h1 { font-family: var(--display); font-weight: 400; font-size: clamp(2rem, 4vw, 2.8rem); color: var(--dark); margin-bottom: 8px; }
.legal h2 { font-family: var(--display); font-weight: 400; font-size: 1.45rem; color: var(--ph); margin: 40px 0 10px; }
.legal h3 { font-size: 1.05rem; margin: 22px 0 6px; color: var(--dark); }
.legal p, .legal ul { margin-bottom: 14px; }
.legal ul { padding-left: 1.2em; }
.legal a { color: var(--orange-texte); text-decoration: underline; }
.legal .maj { color: var(--grey); font-size: .9rem; }
.legal .bref { background: var(--fr-bg); border-radius: 16px; padding: 18px 24px; margin: 24px 0; border: 1px solid var(--fr-l); }
.legal table { width: 100%; border-collapse: collapse; font-size: .9rem; margin: 12px 0 22px; }
.legal th, .legal td { border: 1px solid var(--border); padding: 8px 10px; text-align: left; vertical-align: top; }
.legal th { background: #F8F6FB; }
.legal .bouton { display: inline-flex; padding: 6px 14px; border: 1.5px solid var(--dark); border-radius: 10px; background: #fff; font: 600 .85rem var(--body); cursor: pointer; }
.tableau-defile { overflow-x: auto; }
.todo { background: #FCE7B2; color: #6B3A00; padding: 0 4px; border-radius: 3px; font-weight: 600; }
.introuvable { padding: 140px 0 80px; }
.introuvable .grand { font-family: var(--display); font-size: clamp(5rem, 16vw, 9rem); color: #C8281E; line-height: 1; }
.introuvable h1 { font-family: var(--display); font-weight: 400; font-size: clamp(2rem, 4vw, 3rem); color: var(--dark); margin: 12px 0; }
.introuvable .chapeau { color: var(--grey); font-size: 1.1rem; max-width: 560px; }
.introuvable .boutons { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 24px; }
.introuvable .bouton { display: inline-flex; align-items: center; padding: 14px 26px; border-radius: 12px; font-weight: 600; border: 1.5px solid var(--dark); background: #fff; color: var(--dark); cursor: pointer; font-family: var(--body); font-size: .95rem; }
.introuvable .bouton-plein { background: var(--orange); border-color: var(--orange); color: var(--nuit); }
@media (max-width: 768px) {
  .conteneur, .legal { padding-left: 16px; padding-right: 16px; }
}
@media print { #navbar, footer, .haut, .cookies, .barre-lecture, .recherche { display: none !important; } }

/* Moins de signes « site généré » : pas de bordure colorée autour des cartes
   (fonds pastel gardés), pas de barre décorative au-dessus des titres. */
.subj-card { border: 0 !important; }
.card-fr, .card-ph, .card-gold { border-top: 0 !important; }
.card-fr { background: var(--fr-bg) !important; }
.card-ph { background: var(--ph-bg) !important; }
.card-gold { background: var(--cream) !important; }
.section-accent { display: none !important; }
@media (max-width: 560px) {
  .prochaines-bac ul { grid-template-columns: 1fr 1fr; }
  .prochaines-bac li { border-right: 1px solid var(--border); padding: 12px 14px; }
  .prochaines-bac li:nth-child(2n) { border-right: 0; }
  .prochaines-bac .pb-titre strong { font-size: 1.05rem; }
}

/* ── Version 6 ───────────────────────────────────── */
/* Textes un peu plus grands partout, moins de vide entre les sections */
html { font-size: 106.25%; }
.section { padding: 72px 0; }
.section-sm { padding: 48px 0; }
.body-md { font-size: 1rem; }
.body-lg { font-size: 1.12rem; }
.hero { background: var(--cream); padding: 96px 0 56px; }
.hero-grid { min-height: 0; align-items: start; }
.hero-sub-title { font-size: 1.2rem; }

/* Matières : un bandeau par niveau */
.niveaux { display: grid; gap: 28px; max-width: 1100px; margin: 0 auto; }
.niveau-bandeau { display: flex; align-items: center; gap: 14px; font-family: var(--display); font-weight: 400; font-size: 1.6rem; color: var(--dark); margin-bottom: 14px; }
.niveau-bandeau::after { content: ''; flex: 1; height: 1px; background: var(--border); }
.niveaux .tuiles-matieres { max-width: none; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.tuile-matiere { padding: 20px 22px; gap: 5px; }
.tuile-matiere strong { font-size: 1.55rem; }
.tuile-matiere .tm-desc { font-size: .92rem; }
.tuile-matiere .tm-lien { font-size: .86rem; }
@media (max-width: 960px) { .niveaux .tuiles-matieres { grid-template-columns: 1fr 1fr; } }

/* Calendrier, vue mois : un mois par ligne, grandes cases */
#calendar-month { max-width: 1120px; margin: 0 auto; }
.cal-mois { margin-bottom: 40px; }
.cal-mois h3 { font-family: var(--display); font-weight: 400; font-size: 1.9rem; color: var(--dark); margin-bottom: 12px; }
.cal-entetes, .cal-grille { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
.cal-entetes span { font-size: .82rem; font-weight: 700; color: var(--grey); text-transform: uppercase; letter-spacing: .06em; padding: 0 6px 6px; }
.cal-case { min-height: 104px; background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 8px; display: flex; flex-direction: column; gap: 6px; }
.cal-hors { background: transparent; border-color: transparent; }
.cal-passe { background: #F6F6F7; }
.cal-passe .cal-num { color: #A3A3AA; }
.cal-aujourdhui { border: 2px solid var(--orange); }
.cal-num { font-weight: 700; font-size: .95rem; color: var(--dark); }
.cal-dow { display: none; }
.cal-session { display: flex; flex-direction: column; align-items: flex-start; gap: 1px; width: 100%; text-align: left; border: 0; border-radius: 8px; padding: 7px 9px; background: var(--p); color: var(--f); font: inherit; font-size: .82rem; line-height: 1.3; cursor: default; }
button.cal-session { cursor: pointer; }
button.cal-session:hover { outline: 2px solid var(--f); outline-offset: -2px; }
.cal-session strong { font-size: .9rem; }
.cal-session .cs-places { font-weight: 600; opacity: .85; }
.cal-session.complet { opacity: .55; }
/* Bouton visible dans chaque date réservable (le bloc entier reste cliquable) */
.cal-session .cs-reserver { align-self: stretch; margin-top: 6px; padding: 5px 8px; border-radius: 7px; background: #F28C1B; color: var(--nuit); font-size: .78rem; font-weight: 700; text-align: center; }
button.cal-session:hover .cs-reserver { background: #D9740A; color: #fff; }
/* Vacances scolaires : un trait pastel par zone, trois étages fixes (A, B, C).
   Le trait déborde dans l'espace entre les cases (gap 6px) pour filer d'un jour
   à l'autre ; l'étiquette « Zone A » est posée sur le trait. */
.cal-vacances { display: flex; flex-direction: column; gap: 13px; margin: auto -12px 0; padding: 8px 0 4px; pointer-events: none; }
.cal-vacances i { position: relative; display: block; height: 3px; border-radius: 0; background: var(--z); pointer-events: auto; }
.cal-vacances i.vide { background: none; }
.cal-vacances span { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); padding: 1px 5px; border-radius: 4px; background: var(--z); color: var(--zt); font-size: .56rem; font-weight: 700; letter-spacing: .06em; line-height: 1.2; text-transform: uppercase; white-space: nowrap; }
.cal-vacances .zone-a, .cal-legende .zone-a { --z: #F9C6D3; --zt: #8A2846; }
.cal-vacances .zone-b, .cal-legende .zone-b { --z: #BFDDF7; --zt: #1F4E79; }
.cal-vacances .zone-c, .cal-legende .zone-c { --z: #C9EBC4; --zt: #2B6A2B; }
.cal-legende { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 18px; margin: 0 0 20px; font-size: .85rem; color: #6B6B73; }
.cal-legende span { display: inline-flex; align-items: center; gap: 7px; font-size: .72rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--zt); }
.cal-legende i { display: block; width: 28px; height: 3px; background: var(--z); }
.cal-vide { color: var(--grey); font-size: 1rem; }
.cal-vide a { color: var(--orange-texte); text-decoration: underline; }
@media (max-width: 760px) {
  .cal-entetes { display: none; }
  .cal-grille { display: block; }
  .cal-case.cal-hors, .cal-case.cal-libre { display: none; }
  .cal-case { min-height: 0; margin-bottom: 8px; flex-direction: row; flex-wrap: wrap; align-items: stretch; }
  .cal-num { width: 100%; }
  .cal-dow { display: inline; }
  .cal-session { flex: 1 1 140px; font-size: .9rem; }
  .cal-vacances { flex: 1 1 100%; margin: 2px -8px 0; }
}

/* Calendrier, vue par matière */
.par-matiere { background: #fff; border: 1px solid var(--border); border-radius: 16px; overflow: hidden; margin: 0 auto 18px; max-width: 900px; }
.par-matiere h3 { background: var(--p); color: var(--f); font-family: var(--display); font-weight: 400; font-size: 1.5rem; padding: 14px 22px; margin: 0; }
.par-matiere h3 span { font-family: var(--body); font-size: .85rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; margin-left: 8px; }
.par-matiere ul { list-style: none; margin: 0; padding: 0; }
.par-matiere li { display: grid; grid-template-columns: 1.4fr 1fr 1fr auto; gap: 12px; align-items: center; padding: 12px 22px; border-top: 1px solid var(--border); font-size: .98rem; color: var(--dark); }
.par-matiere .pm-date { font-weight: 700; }
.par-matiere .pm-heure, .par-matiere .pm-places { color: var(--grey); }
.par-matiere .pm-places.peu { color: var(--orange-texte); font-weight: 600; }
.par-matiere .pm-bientot { font-size: .86rem; color: var(--grey); }
@media (max-width: 640px) {
  .par-matiere li { grid-template-columns: 1fr 1fr; }
  .par-matiere li .btn { grid-column: 1 / -1; justify-content: center; }
}

/* Pages juridiques sobres (CGV, données personnelles), sur le modèle des CG de Marmiton :
   texte brun-gris uni, titres numérotés en gras, aucun encadré ni couleur. */
.legal.sobre { background: #fff; color: #3F3735; font-family: var(--body); font-size: 1.05rem; line-height: 1.55; }
.legal.sobre * { color: #3F3735 !important; font-family: var(--body) !important; letter-spacing: 0 !important; background: none !important; font-size: 1.05rem !important; font-weight: 400; }
.legal.sobre h1 { font-size: 1.7rem !important; font-weight: 700 !important; line-height: 1.2; margin: 0 0 16px; }
.legal.sobre h2 { font-size: 1.35rem !important; font-weight: 700 !important; line-height: 1.3; margin: 28px 0 8px; }
.legal.sobre p, .legal.sobre ul { margin: 0 0 12px; }
.legal.sobre a { text-decoration: underline; }
.legal.sobre th, .legal.sobre td { border: 1px solid #3F3735; }
.legal.sobre th { font-weight: 700 !important; }
.legal.sobre .todo { padding: 0; }
.legal.sobre .bouton { border: 0; padding: 0; min-height: 0; text-decoration: underline; box-shadow: none; display: inline; cursor: pointer; }
.legal.sobre .annexe { margin-top: 48px; }
.legal.sobre .annexe, .legal.sobre .annexe * { font-size: .8rem !important; line-height: 1.5; }
.legal.sobre .annexe h2 { margin: 0 0 4px; }
.legal.sobre .annexe p { margin: 0 0 4px; }

/* Page Annales */
.annales-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px}
.annale{background:var(--p);border-radius:14px;padding:22px 22px 20px;display:flex;flex-direction:column;gap:8px}
.annale-tete{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}
.annale-matiere{font-weight:700;color:var(--f);font-size:1.05rem}
.annale-niveau{font-size:.82rem;color:#4B4B55}
.annale-titre{font-size:1rem;font-weight:600;color:#1F1A33;margin:0}
.annale-desc{font-size:.92rem;line-height:1.55;color:#3F3F48;margin:0;flex:1}
.annale-desc:empty{display:none}
.annale-code{font-size:.75rem;letter-spacing:.06em;color:var(--f);margin:2px 0 6px}
.annale-actions{display:flex;gap:10px;flex-wrap:wrap}
.annale .btn-outline{background:#fff}
.annales-cta{margin-top:56px;text-align:center;max-width:620px;margin-left:auto;margin-right:auto}
.annales-cta h2{font-size:1.5rem;margin-bottom:10px}
.annales-cta p{color:var(--grey);margin-bottom:20px;line-height:1.65}
.annale-fenetre{margin:auto;inset:0;border:none;border-radius:14px;padding:26px;max-width:440px;width:calc(100% - 32px);box-shadow:0 20px 60px rgba(20,14,50,.25)}
.annale-fenetre::backdrop{background:rgba(20,14,50,.45)}
.annale-fenetre h2{font-size:1.25rem;margin:0 0 4px}
.annale-fenetre-sous{font-size:.85rem;color:var(--grey);margin:0 0 16px}
.annale-fenetre label{display:block;font-size:.88rem;font-weight:600;margin-bottom:6px}
.annale-fenetre input[type=email]{width:100%;padding:11px 12px;border:1px solid #CFCBDC;border-radius:8px;font:inherit;margin-bottom:14px}
.annale-fenetre .annale-case{display:flex;gap:8px;align-items:flex-start;font-weight:400;font-size:.85rem;line-height:1.45}
.annale-fenetre .annale-case input{margin-top:3px}
.annale-erreur{color:#A32020;font-size:.86rem;margin:8px 0 0}
.annale-fenetre-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px;flex-wrap:wrap}
.annale-mention{font-size:.75rem;color:var(--grey);margin:14px 0 0;line-height:1.45}
.annale-mention a{text-decoration:underline}
