/* =========================================================================
   Christ the King Secretarial School - Site public
   Charte du site :
     bleu marine  #1E4B75  structure, titres, en-tete
     bordeaux     #9B0029  boutons d'action, libelles
     navy fonce   #141E31  bandeaux sombres, pied de page
     or           #c8a24a  DECORATIF uniquement (filets, ornements) :
                           contraste insuffisant pour du texte sur blanc
   Les trois premieres sont modifiables depuis Administration > Apparence.
   Les couleurs des reseaux sociaux et les couleurs d'etat (succes/erreur)
   sont volontairement conservees hors charte.
   ========================================================================= */
:root{
  --brand-primary:#1E4B75;
  --brand-dark:#141E31;
  --brand-secondary:#9B0029;
  --brand-secondary-dark:#7a0020;
  --ink:#22262b;
  --muted:#5b636b;
  --line:#e6e8ec;
  --bg:#ffffff;
  --bg-soft:#f5f7fa;
  --brand-gold:#c8a24a;
  --radius:12px;
  --shadow:0 10px 30px rgba(20,30,49,.10);
  --container:1160px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;color:var(--ink);background:var(--bg);
  font-family:'Source Sans 3',system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;
  font-size:17px;line-height:1.65;
}
h1,h2,h3,h4{font-family:'Playfair Display',Georgia,serif;line-height:1.2;color:var(--brand-dark);margin:0 0 .5em}
a{color:var(--brand-primary);text-decoration:none}
a:hover{color:var(--brand-secondary)}
img{max-width:100%;display:block}
.container{max-width:var(--container);margin:0 auto;padding:0 24px}
.center{text-align:center}
.mt{margin-top:1.4rem}
.muted{color:var(--muted)}

/* Boutons */
.btn{display:inline-block;padding:.8rem 1.6rem;border-radius:999px;font-weight:600;
  font-family:inherit;cursor:pointer;border:2px solid transparent;transition:.2s;font-size:1rem}
.btn-primary{background:var(--brand-secondary);color:#fff;border-color:var(--brand-secondary)}
.btn-primary:hover{background:var(--brand-secondary-dark);border-color:var(--brand-secondary-dark);color:#fff}
.btn-outline{background:transparent;color:#fff;border-color:#fff}
.btn-outline:hover{background:#fff;color:var(--brand-dark)}

/* En-tete */
.site-header{position:sticky;top:0;z-index:50;background:#fff;border-bottom:1px solid var(--line);
  box-shadow:0 2px 10px rgba(20,30,49,.05)}
.header-inner{display:flex;align-items:center;justify-content:space-between;min-height:76px;gap:1rem}
.brand{display:flex;align-items:center;gap:.7rem;flex-shrink:0}
.brand-logo{height:52px;width:auto}
.brand-text{display:flex;flex-direction:column;line-height:1.05;min-width:0}
.brand-text strong,.brand-text small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.brand-text strong{font-family:'Playfair Display',serif;color:var(--brand-primary);font-size:1.15rem}
.brand-text small{color:var(--brand-secondary);font-weight:600;letter-spacing:.5px;font-size:.72rem;text-transform:uppercase}
.main-nav{display:flex;align-items:center;gap:1.4rem}
.main-nav .nav-link{color:var(--brand-dark);font-weight:600;font-size:.98rem;white-space:nowrap}
.main-nav .nav-link:hover{color:var(--brand-secondary)}
.btn-nav{background:var(--brand-primary);color:#fff!important;padding:.55rem 1.1rem;border-radius:999px}
.btn-nav:hover{background:var(--brand-secondary)}
.nav-toggle,.nav-toggle-label{display:none}

/* Choix de la langue : pastille FR|EN a droite de l'en-tete.
   Volontairement hors du menu deroulant mobile — cache derriere le bouton
   « menu », le choix serait invisible pour un visiteur qui ne lit pas le
   francais, c'est-a-dire exactement celui a qui il s'adresse. */
.header-actions{display:flex;align-items:center;gap:.85rem;flex-shrink:0}
.lang-switch{display:inline-flex;align-items:center;border:1px solid var(--line);
  border-radius:999px;overflow:hidden;background:#fff}
.lang-opt{display:block;padding:.34rem .72rem;font-size:.8rem;font-weight:700;
  letter-spacing:.05em;line-height:1.35;color:var(--brand-dark);
  transition:background .15s,color .15s}
a.lang-opt:hover,a.lang-opt:focus-visible{background:var(--line);color:var(--brand-secondary)}
.lang-opt.is-active{background:var(--brand-primary);color:#fff;cursor:default}
.topbar-links .lang-switch{margin-left:1.2rem;vertical-align:middle}

/* Barre utilitaire (topbar) */
.topbar{background:var(--brand-dark);color:#dfe6ef;font-size:.85rem}
.topbar-inner{display:flex;justify-content:space-between;align-items:center;min-height:38px;gap:1rem;flex-wrap:wrap}
.topbar-text{opacity:.9}
.topbar-links a{color:#dfe6ef;margin-left:1.2rem}
.topbar-links a:hover{color:#fff}

/* Menu deroulant (sous-menus) */
.nav-item{position:relative}
.nav-item.has-sub>.nav-link{display:inline-flex;align-items:center;gap:.25rem}
.caret{font-size:.7rem;transition:transform .2s}
.nav-item.has-sub:hover .caret{transform:rotate(180deg)}
.submenu{position:absolute;top:100%;left:0;background:#fff;min-width:230px;border-radius:10px;
  box-shadow:0 14px 34px rgba(20,30,49,.18);padding:.5rem;opacity:0;visibility:hidden;
  transform:translateY(8px);transition:.18s;z-index:60;border-top:3px solid var(--brand-secondary)}
.nav-item.has-sub:hover .submenu,.nav-item.has-sub:focus-within .submenu{opacity:1;visibility:visible;transform:translateY(0)}
.submenu a{display:block;padding:.6rem .8rem;border-radius:7px;color:var(--brand-dark);font-weight:600;font-size:.92rem}
.submenu a:hover{background:var(--bg-soft);color:var(--brand-secondary)}

/* Hero */
.hero{background-size:cover;background-position:center;color:#fff;text-align:center;
  padding:7rem 0 6.5rem;position:relative}
.hero-content{max-width:820px}
.hero-kicker{font-style:italic;color:#f2d9de;font-size:1.05rem;margin-bottom:1rem}
.hero h1{color:#fff;font-size:3.2rem;margin-bottom:1rem}
.hero-lead{font-size:1.2rem;color:#eef2f7;max-width:680px;margin:0 auto 2rem}
.hero-actions{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}

/* Sections */
.section{padding:5rem 0}
.section-alt{background:var(--bg-soft)}
.section-head{max-width:760px;margin:0 auto 3rem;text-align:center}
.eyebrow{display:inline-block;text-transform:uppercase;letter-spacing:2px;font-size:.78rem;
  font-weight:700;color:var(--brand-secondary);margin-bottom:.6rem}
.section-head h2{font-size:2.4rem}
.section-intro{color:var(--muted);font-size:1.1rem}

/* Split (image + texte) */
.split{display:grid;grid-template-columns:1fr 1fr;gap:3.5rem;align-items:center}
.split-media img{border-radius:var(--radius);box-shadow:var(--shadow);width:100%;object-fit:cover;background:var(--bg-soft)}
.split-text h2{font-size:2.3rem}
.split-text h3{color:var(--brand-secondary);font-size:1.5rem}

/* Cartes programmes */
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:1.8rem}
.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;
  box-shadow:var(--shadow);transition:transform .2s,box-shadow .2s}
.card:hover{transform:translateY(-6px);box-shadow:0 18px 40px rgba(20,30,49,.16)}
.card-media{aspect-ratio:16/10;overflow:hidden;background:var(--bg-soft)}
.card-media img{width:100%;height:100%;object-fit:cover}
.card-body{padding:1.5rem}
.card-body h3{color:var(--brand-primary);font-size:1.35rem;border-left:4px solid var(--brand-secondary);padding-left:.7rem}

/* Actualites */
.posts-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.8rem}
.post-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}
.post-thumb{display:block;aspect-ratio:16/9;overflow:hidden;background:var(--bg-soft)}
.post-thumb img{width:100%;height:100%;object-fit:cover;transition:transform .3s}
.post-card:hover .post-thumb img{transform:scale(1.05)}
.post-card-body{padding:1.4rem}
.post-date{display:inline-block;background:var(--brand-secondary);color:#fff;font-size:.8rem;font-weight:700;
  padding:.25rem .7rem;border-radius:999px;margin-bottom:.6rem}
.article-date{display:inline-block;background:var(--brand-secondary);color:#fff;font-weight:700;
  padding:.3rem .8rem;border-radius:999px;font-size:.9rem;margin:.3rem 0}
.post-card-body h3{font-size:1.25rem}
.post-card-body h3 a{color:var(--brand-dark)}
.link-more{font-weight:700;color:var(--brand-secondary)}

/* Bloc Vision (dans A propos) */
.vision-block{margin-top:1.6rem;padding-top:1.4rem;border-top:2px solid var(--line)}
.vision-block h3{color:var(--brand-secondary);font-size:1.5rem}

/* Section Admissions (cartes Dates / Conditions / Remarque) */
.section-admissions{background:linear-gradient(150deg,var(--brand-dark),var(--brand-primary));color:#fff;padding:5rem 0}
.admissions-head{max-width:760px;margin:0 auto 2.5rem;text-align:center}
.section-admissions h2{color:#fff;font-size:2.4rem}
.admissions-intro{color:#e7edf5;font-size:1.1rem;margin:.5rem 0}
.eyebrow-light{color:#f2c9d2}
.admissions-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.6rem;align-items:start}
.adm-card{background:#fff;border-radius:14px;padding:1.8rem;box-shadow:0 16px 40px rgba(13,20,33,.28);border-top:5px solid var(--brand-secondary)}
.adm-card h3{color:var(--brand-primary);font-size:1.35rem;margin-bottom:.8rem;padding-bottom:.5rem;border-bottom:2px solid var(--line)}
.adm-card p{color:#3a4149;margin:.5rem 0}
.adm-list{list-style:none;padding:0;margin:.4rem 0}
.adm-list li{position:relative;padding:.42rem 0 .42rem 1.7rem;color:#3a4149;border-bottom:1px dashed var(--line)}
.adm-list li:last-child{border-bottom:none}
.adm-list li::before{content:'✓';position:absolute;left:0;top:.42rem;color:var(--brand-secondary);font-weight:800}
.admissions-cta{text-align:center;margin-top:2.2rem}
.btn-light{background:#fff;color:var(--brand-secondary);border-color:#fff}
.btn-light:hover{background:var(--brand-secondary);color:#fff;border-color:#fff}

/* Avis aux anciennes etudiantes */
.section-alumni{background:linear-gradient(135deg,var(--brand-dark),var(--brand-primary));padding:5rem 0}
.alumni-card{max-width:900px;margin:0 auto;background:#fff;border-radius:16px;box-shadow:0 24px 60px rgba(13,20,33,.35);
  padding:3rem 3.2rem;border-top:6px solid var(--brand-secondary)}
.alumni-card .eyebrow{color:var(--brand-secondary)}
.alumni-card h2{font-size:2.3rem;margin-bottom:.4rem}
.alumni-subtitle{font-style:italic;color:var(--brand-primary);font-weight:600;font-size:1.15rem;margin:0 0 1.6rem}
.alumni-body p{margin:.85rem 0;color:#3a4149}
.alumni-body p:first-child{font-weight:600;color:var(--brand-dark)}
.alumni-actions{margin-top:2rem;text-align:center}
.btn-lg{padding:1rem 2.4rem;font-size:1.1rem;box-shadow:0 8px 22px rgba(155,0,41,.35)}

/* Contact */
.section-contact{background:linear-gradient(180deg,var(--bg-soft),#fff)}
.contact-list{list-style:none;padding:0;margin:1.5rem 0}
.contact-list li{padding:.5rem 0;border-bottom:1px dashed var(--line)}
.contact-form{display:grid;gap:1rem;background:#fff;padding:2rem;border-radius:var(--radius);box-shadow:var(--shadow)}
.contact-form label{display:flex;flex-direction:column;font-weight:600;color:var(--brand-dark);gap:.35rem;font-size:.95rem}
.contact-form input,.contact-form textarea{padding:.7rem .8rem;border:1px solid var(--line);border-radius:8px;
  font-family:inherit;font-size:1rem}
.contact-form input:focus,.contact-form textarea:focus{outline:2px solid var(--brand-primary);border-color:transparent}

/* ===== Annonces / nouvelles ===== */
.ann-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.8rem}
.ann-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;
  box-shadow:var(--shadow);display:flex;flex-direction:column;transition:transform .2s,box-shadow .2s}
.ann-card:hover{transform:translateY(-4px);box-shadow:0 18px 40px rgba(20,30,49,.16)}
.ann-card.is-pinned{border-top:4px solid var(--brand-secondary)}
.ann-thumb{display:block;aspect-ratio:16/9;overflow:hidden;background:var(--bg-soft)}
.ann-thumb img{width:100%;height:100%;object-fit:cover;transition:transform .3s}
.ann-card:hover .ann-thumb img{transform:scale(1.04)}
.ann-body{padding:1.4rem;display:flex;flex-direction:column;gap:.35rem;flex:1}
.ann-meta{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
.ann-cat{display:inline-block;background:var(--brand-primary);color:#fff;font-size:.72rem;font-weight:700;
  padding:.2rem .7rem;border-radius:999px;text-transform:uppercase;letter-spacing:.5px}
.ann-pin{font-size:.75rem;color:var(--brand-secondary);font-weight:700}
.ann-date{color:var(--muted);font-size:.85rem;font-weight:600}
.ann-body h2,.ann-body h3{font-size:1.2rem;margin:.2rem 0}
.ann-body h2 a,.ann-body h3 a{color:var(--brand-dark)}
.ann-body h2 a:hover,.ann-body h3 a:hover{color:var(--brand-secondary)}
.ann-body p{color:var(--muted);font-size:.95rem;margin:0}
.ann-body .link-more{margin-top:auto;padding-top:.6rem}
.ann-others{margin-top:2.5rem;padding-top:1.4rem;border-top:2px solid var(--line)}
.ann-others h3{font-size:1.2rem;color:var(--brand-primary)}
.ann-others ul{list-style:none;padding:0;margin:.6rem 0 0}
.ann-others li{padding:.45rem 0;border-bottom:1px dashed var(--line)}

/* Video : cadre 16/9 responsive (iframe ou fichier televerse) */
.video-frame{position:relative;width:100%;aspect-ratio:16/9;background:#000;border-radius:var(--radius);
  overflow:hidden;box-shadow:var(--shadow);margin-bottom:1.5rem}
.video-frame iframe,.video-frame video{position:absolute;inset:0;width:100%;height:100%;border:0;display:block}

/* Pastille de lecture sur les vignettes video */
.ann-thumb{position:relative}
.ann-play{position:absolute;inset:0;margin:auto;width:56px;height:56px;border-radius:50%;
  background:rgba(0,0,0,.55);color:#fff;display:flex;align-items:center;justify-content:center;
  font-size:1.3rem;padding-left:4px;transition:.2s;pointer-events:none}
.ann-card:hover .ann-play{background:var(--brand-secondary);transform:scale(1.08)}
.ann-thumb-video{display:flex;align-items:center;justify-content:center;aspect-ratio:16/9;
  background:linear-gradient(135deg,var(--brand-dark),var(--brand-primary))}

/* Filtres par categorie */
.filters{display:flex;gap:.6rem;flex-wrap:wrap;margin-bottom:2rem}
.filter-chip{display:inline-flex;align-items:center;gap:.4rem;background:#fff;border:1px solid var(--line);
  border-radius:999px;padding:.5rem 1.1rem;font-weight:600;color:var(--brand-dark);font-size:.92rem}
.filter-chip:hover{border-color:var(--brand-primary);color:var(--brand-primary)}
.filter-chip.is-active{background:var(--brand-primary);color:#fff;border-color:var(--brand-primary)}
.filter-count{background:rgba(0,0,0,.08);border-radius:999px;padding:0 .45rem;font-size:.78rem}
.filter-chip.is-active .filter-count{background:rgba(255,255,255,.25)}

/* Pagination */
.pagination{display:flex;gap:.4rem;justify-content:center;flex-wrap:wrap;margin-top:2.5rem}
.page-link{min-width:42px;text-align:center;padding:.55rem .9rem;border:1px solid var(--line);
  border-radius:8px;background:#fff;font-weight:600;color:var(--brand-dark)}
.page-link:hover{border-color:var(--brand-primary);color:var(--brand-primary)}
.page-link.is-active{background:var(--brand-secondary);color:#fff;border-color:var(--brand-secondary)}

/* ===== Prise de rendez-vous ===== */
.rdv-layout{display:grid;grid-template-columns:1fr 330px;gap:2.5rem;align-items:start}
/* Sans min-width:0, la colonne principale s'elargit a la taille du bandeau de
   jours (qui defile) et c'est toute la page qui part en scroll horizontal. */
.rdv-main{min-width:0}
.rdv-step{display:flex;align-items:center;gap:.7rem;font-size:1.4rem;margin:2rem 0 1rem}
.rdv-step:first-child{margin-top:0}
.rdv-step small{font-weight:400;font-size:1rem;font-family:'Source Sans 3',sans-serif;text-transform:capitalize}
.rdv-num{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;flex-shrink:0;
  border-radius:50%;background:var(--brand-secondary);color:#fff;font-size:1rem;font-weight:800;
  font-family:'Source Sans 3',sans-serif}

/* Cartes d'etape */
.rdv-panel{background:#fff;border:1px solid var(--line);border-radius:14px;padding:1.8rem 2rem;
  box-shadow:var(--shadow);margin-bottom:1.4rem}
.rdv-panel .rdv-step{margin-top:0}

/* ---- Calendrier mensuel ---- */
.cal{max-width:560px}
.cal-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.9rem}
.cal-month{font-family:'Playfair Display',Georgia,serif;font-size:1.5rem;color:var(--brand-dark);
  text-transform:capitalize;font-weight:700}
.cal-nav{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;flex-shrink:0;
  border:1px solid var(--line);border-radius:10px;font-size:1.5rem;line-height:1;color:var(--brand-primary);
  background:#fff;transition:.15s}
.cal-nav:hover{background:var(--brand-primary);border-color:var(--brand-primary);color:#fff}
.cal-nav.is-off{color:#c9cfd6;background:var(--bg-soft);cursor:default}

.cal-grid{width:100%;border-collapse:separate;border-spacing:6px;table-layout:fixed}
.cal-grid th{padding:.2rem 0 .4rem;font-size:.75rem;font-weight:700;letter-spacing:1px;
  text-transform:uppercase;color:var(--muted)}
.cal-grid th abbr{text-decoration:none;border:none}
.cal-grid td{padding:0}

.cal-day{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.1rem;
  aspect-ratio:1/1;border-radius:10px;border:1px solid transparent;background:var(--bg-soft);
  color:var(--muted);font-weight:600;transition:.15s}
.cal-num{font-size:1.05rem;line-height:1.1}
.cal-free{font-size:.68rem;font-weight:700;background:rgba(255,255,255,.75);border-radius:999px;
  padding:0 .38rem;color:var(--brand-secondary)}
.cal-tag{font-size:.6rem;text-transform:uppercase;letter-spacing:.5px;font-weight:700;opacity:.75}

/* Jour reservable : c'est le seul etat cliquable, donc le seul mis en avant. */
a.cal-day.is-libre{background:#fff;border-color:var(--brand-primary);color:var(--brand-primary);
  box-shadow:0 2px 8px rgba(30,75,117,.12)}
a.cal-day.is-libre:hover{background:var(--brand-primary);color:#fff;transform:translateY(-2px);
  box-shadow:0 10px 22px rgba(30,75,117,.28)}
a.cal-day.is-libre:hover .cal-free{color:var(--brand-primary)}
a.cal-day.is-libre:focus-visible{outline:3px solid var(--brand-secondary);outline-offset:2px}
.cal-day.is-selected{background:var(--brand-secondary)!important;border-color:var(--brand-secondary)!important;
  color:#fff!important;box-shadow:0 10px 22px rgba(155,0,41,.3)!important}
.cal-day.is-selected .cal-free{color:var(--brand-secondary)}
.cal-day.is-today{border-color:var(--brand-gold);border-style:dashed}
.cal-day.is-complet{background:#fdecec;color:#a5241f}
.cal-day.is-ferme{background:#f3e9d8;color:#8a6d1e}
.cal-day.is-aucun,.cal-day.is-passe{background:var(--bg-soft);color:#b4bcc5}
.cal-day.is-passe .cal-num{text-decoration:line-through}
.cal-day.is-hors{background:transparent}

.cal-legend{list-style:none;display:flex;flex-wrap:wrap;gap:1rem;padding:0;margin:1.1rem 0 0;
  font-size:.85rem;color:var(--muted)}
.cal-legend li{display:flex;align-items:center;gap:.4rem}
.dot{width:12px;height:12px;border-radius:4px;display:inline-block}
.dot-free{background:#fff;border:1px solid var(--brand-primary)}
.dot-full{background:#fdecec;border:1px solid #f3c2c0}
.dot-closed{background:#f3e9d8;border:1px solid #e2cfa8}
.dot-none{background:var(--bg-soft);border:1px solid var(--line)}

/* ---- Creneaux : matin / apres-midi ---- */
.rdv-selected-day{text-transform:capitalize;font-weight:700;color:var(--brand-primary);
  margin:-.5rem 0 1.4rem;font-size:1.1rem}
.rdv-periods{display:grid;gap:1.6rem}
.rdv-period-head{display:flex;align-items:center;gap:.7rem;margin-bottom:.8rem;
  padding-bottom:.5rem;border-bottom:1px solid var(--line)}
.rdv-period-head h3{margin:0;font-size:1.15rem;color:var(--brand-dark)}
.rdv-ampm{display:inline-flex;align-items:center;justify-content:center;min-width:42px;padding:.15rem .5rem;
  border-radius:6px;font-size:.72rem;font-weight:800;letter-spacing:1px;font-family:'Source Sans 3',sans-serif}
.rdv-ampm-am{background:#e4eef8;color:var(--brand-primary)}
.rdv-ampm-pm{background:#f7e4e9;color:var(--brand-secondary)}
.rdv-period-empty{color:var(--muted);font-size:.92rem;margin:0}

/* Creneaux horaires */
.rdv-slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(126px,1fr));gap:.7rem}
.rdv-slot{display:flex;flex-direction:column;align-items:center;gap:.1rem;padding:.7rem .5rem;cursor:pointer;
  background:#fff;border:1px solid var(--line);border-radius:10px;transition:.15s;text-align:center}
.rdv-slot:hover{border-color:var(--brand-primary)}
.rdv-slot input{position:absolute;opacity:0;width:0;height:0}
.rdv-slot-time{font-weight:700;color:var(--brand-dark)}
.rdv-slot-state{font-size:.78rem;color:var(--muted)}
/* Selection : d'abord le repli (bordeaux sur blanc), qui fonctionne partout
   car la case cochee precede les libelles ; puis la pastille pleine sur les
   navigateurs qui connaissent :has(). */
.rdv-slot input:checked ~ .rdv-slot-time,.rdv-slot input:checked ~ .rdv-slot-state{color:var(--brand-secondary);font-weight:700}
.rdv-slot input:focus-visible ~ .rdv-slot-time{text-decoration:underline}
.rdv-slot:has(input:checked){background:var(--brand-secondary);border-color:var(--brand-secondary)}
.rdv-slot:has(input:checked) .rdv-slot-time,.rdv-slot:has(input:checked) .rdv-slot-state{color:#fff}
.rdv-slot:has(input:focus-visible){outline:3px solid var(--brand-primary);outline-offset:2px}
.rdv-slot.is-taken{background:var(--bg-soft);border-style:dashed;cursor:not-allowed;opacity:.6}
.rdv-slot.is-taken .rdv-slot-time{text-decoration:line-through;color:var(--muted)}

/* Formulaire */
.rdv-form{margin:0}
.rdv-fields{display:grid;gap:1rem}
.rdv-fields label{display:flex;flex-direction:column;gap:.35rem;font-weight:600;color:var(--brand-dark);font-size:.95rem}
.rdv-fields input,.rdv-fields select,.rdv-fields textarea{padding:.7rem .8rem;border:1px solid var(--line);
  border-radius:8px;font-family:inherit;font-size:1rem;font-weight:400;color:var(--ink);background:#fff}
.rdv-fields input:focus,.rdv-fields select:focus,.rdv-fields textarea:focus{outline:2px solid var(--brand-primary);border-color:transparent}
.rdv-hint{color:var(--muted);font-size:.88rem;margin:0}
.rdv-trap{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* Colonne d'information */
.rdv-aside{display:grid;gap:1.2rem;position:sticky;top:100px}
.rdv-box{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:1.4rem;box-shadow:var(--shadow)}
.rdv-box h3{font-size:1.15rem;color:var(--brand-primary);margin-bottom:.7rem}
.rdv-box-warn{border-left:4px solid var(--brand-secondary)}
.rdv-box .contact-list{margin:0 0 .8rem}
.rdv-hours,.rdv-closures{list-style:none;padding:0;margin:0 0 .8rem}
.rdv-hours li{display:flex;flex-wrap:wrap;gap:.5rem;align-items:baseline;padding:.45rem 0;border-bottom:1px dashed var(--line)}
.rdv-hours li:last-child{border-bottom:none}
.rdv-hours strong{text-transform:capitalize;color:var(--brand-dark);min-width:5.5rem}
.rdv-hours small{width:100%}
.rdv-closures li{padding:.35rem 0;font-size:.92rem;border-bottom:1px dashed var(--line)}
.rdv-closures li:last-child{border-bottom:none}
.rdv-empty{text-align:center;padding:2.5rem}

/* Libelle reserve aux lecteurs d'ecran */
.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}

/* Section « Prendre rendez-vous » de la page d'accueil */
.section-rdv{background:var(--bg-soft)}
.rdv-teaser{display:grid;grid-template-columns:1.1fr 1fr;gap:2.5rem;align-items:center;background:#fff;
  border-radius:16px;padding:2.6rem 2.8rem;box-shadow:var(--shadow);border-top:5px solid var(--brand-secondary)}
.rdv-teaser h2{font-size:2.1rem;margin-bottom:.6rem}
.rdv-teaser p{color:var(--muted);margin:0 0 1.4rem}
.rdv-next{list-style:none;padding:0;margin:0}
.rdv-next li{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.7rem .2rem;
  border-bottom:1px dashed var(--line)}
.rdv-next li:last-child{border-bottom:none}
.rdv-next .rdv-next-day{font-weight:700;color:var(--brand-dark);text-transform:capitalize}
.rdv-next .rdv-next-free{font-size:.85rem;color:var(--brand-secondary);font-weight:700;white-space:nowrap}

@media(max-width:980px){
  .rdv-layout{grid-template-columns:1fr}
  .rdv-aside{position:static}
  .rdv-teaser{grid-template-columns:1fr;padding:2rem 1.6rem}
  .cal{max-width:none}
}
@media(max-width:600px){
  .rdv-panel{padding:1.3rem 1.1rem}
  .cal-grid{border-spacing:4px}
  .cal-num{font-size:.95rem}
  .cal-free{font-size:.62rem}
  .cal-tag{display:none}
  .cal-month{font-size:1.25rem}
}

/* ===== Telephones (<= 420 px) =====

   Sur un ecran de 320 px, 24 px de marge de chaque cote consomment 15 % de la
   largeur utile. On les ramene a 16 px : le calendrier des rendez-vous y gagne
   assez de place pour que ses cases atteignent la taille d'une pastille
   tactile confortable, et l'en-tete cesse d'etre a l'etroit. */
/* Sur telephone, la devise du bandeau superieur prend trois lignes avant le
   moindre contenu. On la masque en dessous de 600 px : elle reste affichee
   dans le pied de page, et le bandeau garde ce qui sert vraiment sur un
   telephone — appeler l ecole et lui ecrire. */
@media(max-width:600px){
  .topbar-text{display:none}
  .topbar-inner{justify-content:center}
}

@media(max-width:420px){
  .container{padding:0 16px}
  .header-inner{gap:.6rem;min-height:66px}
  .header-actions{gap:.6rem}
  .brand{gap:.5rem}
  .brand-logo{height:40px}
  .brand-text strong{font-size:.95rem}
  .brand-text small{font-size:.58rem;letter-spacing:.3px}
  .nav-toggle-label{width:38px}
  .lang-opt{padding:.8rem .55rem;font-size:.75rem}
  .main-nav{padding:1rem 16px}
  /* Le calendrier regagne quelques pixels par case : plus la case est grande,
     moins on se trompe de jour au doigt. */
  .rdv-panel{padding:1.1rem .9rem}
  .cal-grid{border-spacing:3px}
  .hero-actions{flex-direction:column;align-items:stretch}
  .hero-actions .btn{width:100%}
}

/* ===== Reseaux sociaux ===== */
.social-links{display:inline-flex;gap:.6rem;align-items:center;margin-top:.8rem}
.social-link{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;
  border-radius:50%;background:rgba(255,255,255,.12);color:#fff;transition:.2s}
.social-link:hover{color:#fff;transform:translateY(-2px)}
.social-fb:hover{background:#1877F2}
.social-ig:hover{background:linear-gradient(45deg,#F58529,#DD2A7B,#8134AF)}
/* Version compacte dans la barre utilitaire */
.topbar-links .social-links{margin-top:0;margin-left:1.2rem;vertical-align:middle}
.topbar-links .social-link{width:28px;height:28px}
.topbar-links .social-link svg{width:15px;height:15px}

/* ===== Espace anciennes etudiantes ===== */
.btn-outline-dark{background:transparent;color:var(--brand-primary);border-color:var(--brand-primary)}
.btn-outline-dark:hover{background:var(--brand-primary);color:#fff}
.alumni-hint{margin-top:1rem;color:var(--muted);font-size:.92rem}
.banner-flex{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}

/* Connexion / inscription */
.auth-grid{display:grid;grid-template-columns:1fr 1fr;gap:2rem;max-width:900px;margin:0 auto}
.auth-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:2rem;box-shadow:var(--shadow)}
.auth-card-accent{border-top:5px solid var(--brand-secondary)}
.auth-card h2{font-size:1.5rem}
.auth-form{display:grid;gap:.9rem;margin-top:1rem}
.auth-form label,.form-card-public label{display:flex;flex-direction:column;gap:.35rem;font-weight:600;color:var(--brand-dark);font-size:.95rem}
.auth-form input,.form-card-public input,.form-card-public textarea{padding:.7rem .8rem;border:1px solid var(--line);border-radius:8px;font-family:inherit;font-size:1rem;font-weight:400;color:var(--ink)}
.auth-form input:focus,.form-card-public input:focus,.form-card-public textarea:focus{outline:2px solid var(--brand-primary);border-color:transparent}
.btn-block{width:100%}

/* Tableau de bord */
.dash-tabs{display:flex;gap:.8rem;flex-wrap:wrap;margin-bottom:1.5rem}
.dash-tab{background:#fff;border:1px solid var(--line);border-radius:999px;padding:.6rem 1.2rem;font-weight:700;color:var(--brand-dark)}
.dash-tab:hover{background:var(--brand-primary);color:#fff}
.dash-tab-pdf{background:var(--brand-secondary);color:#fff;border-color:var(--brand-secondary)}
.dash-tab-pdf:hover{background:var(--brand-secondary-dark);color:#fff}
.dash-panel{background:#fff;border:1px solid var(--line);border-radius:14px;padding:2rem;box-shadow:var(--shadow);margin-bottom:1.6rem;scroll-margin-top:100px}
.form-card-public{display:grid;gap:1rem;margin-top:1rem}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.checkbox-pub{flex-direction:row!important;align-items:center;gap:.5rem}
.checkbox-pub input{width:auto}
.badge{display:inline-block;background:var(--brand-secondary);color:#fff;font-size:.72rem;font-weight:700;padding:.1rem .5rem;border-radius:999px}

/* Messagerie */
.thread{display:flex;flex-direction:column;gap:.8rem;margin:1rem 0;max-height:420px;overflow-y:auto;padding:.3rem}
.msg{max-width:80%;padding:.8rem 1rem;border-radius:12px;font-size:.95rem}
.msg-me{align-self:flex-end;background:var(--brand-primary);color:#fff}
.msg-them{align-self:flex-start;background:var(--bg-soft);border:1px solid var(--line)}
.msg-head{font-size:.8rem;margin-bottom:.3rem;opacity:.9}
.msg-me .msg-head .muted{color:#dbe6f2}
.msg-file{display:inline-block;margin-top:.4rem;font-weight:700}
.msg-me .msg-file{color:#fff;text-decoration:underline}
.msg-form{border-top:1px solid var(--line);padding-top:1rem;display:grid;gap:.7rem}
.msg-form textarea{padding:.7rem .8rem;border:1px solid var(--line);border-radius:8px;font-family:inherit;font-size:1rem}
.msg-form-actions{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}
.file-btn{background:var(--bg-soft);border:1px dashed var(--brand-primary);color:var(--brand-primary);padding:.5rem 1rem;border-radius:8px;font-weight:600;cursor:pointer;font-size:.9rem}
.file-btn input{display:none}

@media(max-width:760px){
  .auth-grid,.grid-2{grid-template-columns:1fr}
  .msg{max-width:100%}
}

/* Bandeau de page */
.page-banner{background:var(--brand-dark);color:#fff;padding:3.5rem 0}
.page-banner h1{color:#fff}
.page-banner p{color:#c9d3df;margin:0}

/* Article */
.article-narrow{max-width:760px}
.link-back,.link-more,.footer-admin-link{font-weight:600}
.article-title{font-size:2.6rem;margin:.5rem 0 1.2rem}
.article-hero{border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:1.5rem;width:100%}
.article-lead{font-size:1.2rem;color:var(--muted);font-weight:500}
.article-body p{margin:1rem 0}

/* Pied de page */
.site-footer{background:var(--brand-dark);color:#cdd6e2;margin-top:0}
.footer-grid{display:grid;grid-template-columns:2fr 1fr 1.2fr;gap:2rem;padding:3.5rem 24px}
.site-footer h4{color:#fff;font-family:'Source Sans 3',sans-serif;font-size:1rem;text-transform:uppercase;letter-spacing:1px}
.site-footer a{color:#cdd6e2}
.site-footer a:hover{color:#fff}
.footer-tagline{font-style:italic;color:var(--brand-gold)}
.footer-bottom{background:#0d1421}
.footer-bottom .container{display:flex;justify-content:space-between;align-items:center;padding:1rem 24px;font-size:.85rem;color:#8a97a8}
.footer-admin-link{color:#8a97a8}

/* Flash */
.flash{max-width:var(--container);margin:1rem auto;padding:.9rem 1.2rem;border-radius:8px;font-weight:600}
.flash-success{background:#e7f6ec;color:#1c7a3f;border:1px solid #b6e3c6}
.flash-error{background:#fdecec;color:#a5241f;border:1px solid #f3c2c0}

/* Responsive */
@media(max-width:900px){
  .cards,.posts-grid{grid-template-columns:1fr 1fr}
  .footer-grid{grid-template-columns:1fr 1fr}
}
/* Entre 1100 et 1300 px, la rangee tient encore mais de justesse : on resserre
   l'espacement et la taille du texte plutot que de replier le menu trop tot. */
@media(max-width:1300px){
  .main-nav{gap:1rem}
  .main-nav .nav-link{font-size:.92rem}
  .btn-nav{padding:.5rem .9rem}
  .brand-text strong{font-size:1.05rem}
}

/* Menu deroulant.

   Declenche a 1100 px et non a 760 px : la rangee compte huit entrees de
   premier niveau, un bouton « Inscriptions » et la pastille FR|EN. En dessous
   de cette largeur elle ne tient plus, et le nom de l'ecole venait se
   superposer au premier lien. La pastille de langue, elle, reste toujours
   visible dans l'en-tete : elle ne rejoint jamais le menu replie. */
@media(max-width:1100px){
  .nav-toggle-label{display:flex;flex-direction:column;justify-content:center;width:42px;height:42px;cursor:pointer}
  .nav-toggle-label span,.nav-toggle-label span::before,.nav-toggle-label span::after{
    content:'';display:block;height:3px;width:26px;background:var(--brand-dark);border-radius:2px;position:relative}
  .nav-toggle-label span::before{position:absolute;top:-8px}
  .nav-toggle-label span::after{position:absolute;top:8px}
  .main-nav{position:absolute;top:100%;left:0;right:0;background:#fff;flex-direction:column;
    align-items:stretch;padding:1rem 24px;gap:.2rem;border-bottom:1px solid var(--line);
    box-shadow:var(--shadow);display:none;max-height:80vh;overflow-y:auto}
  .main-nav .nav-link{padding:.7rem 0;border-bottom:1px solid var(--line);display:block}
  .nav-toggle:checked~.main-nav{display:flex}
  .nav-item{position:static}
  .submenu{position:static;opacity:1;visibility:visible;transform:none;box-shadow:none;
    border-top:none;padding:0 0 .4rem .8rem;min-width:0;border-left:2px solid var(--line);margin:0 0 .4rem}
  .submenu a{padding:.5rem 0}
  .caret{display:none}
}
@media(max-width:760px){
  /* Au doigt, la pastille doit rester confortable : on gagne en hauteur
     (environ 40 px) ce qu'on rend en largeur. */
  .lang-opt{padding:.8rem .8rem;font-size:.8rem}
  .topbar-links a{display:inline-block;padding:.3rem 0}
  .social-link{width:40px;height:40px}
  .hero h1{font-size:2.3rem}
  .split{grid-template-columns:1fr}
  .cards,.posts-grid,.footer-grid{grid-template-columns:1fr}
  .footer-bottom .container{flex-direction:column;gap:.5rem}
  .alumni-card{padding:2rem 1.4rem}
  .alumni-card h2{font-size:1.8rem}
  .section-alumni{padding:3.5rem 0}
  .admissions-inner{grid-template-columns:1fr;gap:1.5rem;text-align:center}
}
