/* Compléments de la famille Educeet pour les sites d'écoles (chargé après educeet.css) */
.ed-skip { position: absolute; left: -9999px; top: 0; z-index: 10000; background: #fff; padding: 10px 16px; }
.ed-skip:focus { left: 12px; top: 12px; }
.ed-muted { color: var(--it-text-body); font-size: 14px; }
/* logo : image de l'école ou nom en toutes lettres */
.ed-logo { display: inline-flex; align-items: center; gap: 12px; text-decoration: none; }
.ed-logo img { max-height: 56px; width: auto; max-width: 160px; object-fit: contain; }
.ed-logo__name { font-family: var(--it-ff-heading); font-size: 20px; line-height: 1.15; color: var(--it-heading-primary); max-width: 220px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.ed-logo--light .ed-logo__name { color: #fff; }
/* proportions constantes des images (photos de l'école comme illustrations du thème) */
.ed-ratio { overflow: hidden; }
.ed-ratio > img:first-child, .ed-ratio > a > img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; }
.ed-ratio--tall > img:first-child { aspect-ratio: 3 / 4; }
.ed-ratio--portrait > img:first-child { aspect-ratio: 1 / 1; object-position: center top; }
.ed-ratio--wide > img:first-child, .ed-ratio--wide > a > img { aspect-ratio: 16 / 9; }
.ed-hero-photo img { width: 100%; max-width: 620px; aspect-ratio: 1 / 1; object-fit: cover; border-radius: 50% 50% 24px 24px; }
.ed-cta-photo img { max-height: 340px; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 24px 24px 0 0; }
.ed-brand-logo { max-height: 70px; width: auto; max-width: 80%; object-fit: contain; filter: grayscale(.3); transition: filter .2s; }
.it-brand-item:hover .ed-brand-logo { filter: none; }
.ed-prose { color: var(--it-text-body); line-height: 1.8; }
.ed-prose img { max-width: 100%; height: auto; border-radius: 16px; }
.ed-prose h2, .ed-prose h3, .ed-prose h4 { margin: 1.4em 0 .6em; color: var(--it-heading-primary); }
.ed-breadcrumb-overlay { position: absolute; inset: 0; background: linear-gradient(90deg, color-mix(in srgb, var(--it-theme-1) 88%, transparent), color-mix(in srgb, var(--it-theme-1) 55%, transparent)); z-index: -1; }
.it-breadcrumb-area { background-size: cover; background-position: center; }
/* l'en-tête transparent recouvre le haut du bandeau : sa hauteur (mesurée par le script du gabarit, 96 px par défaut
   sans JavaScript) est ajoutée à l'espace au-dessus du titre, pour que la bordure de l'en-tête ne coupe jamais le titre */
.it-breadcrumb-area { padding-top: calc(var(--ed-header-overlap, 96px) + 48px) !important; padding-bottom: 56px !important; }
@media (max-width: 767px) { .it-breadcrumb-area { padding-top: calc(var(--ed-header-overlap, 80px) + 32px) !important; padding-bottom: 40px !important; } }
.it-breadcrumb-area .it-breadcrumb-title, .it-breadcrumb-area .it-breadcrumb-list, .it-breadcrumb-area .it-breadcrumb-list a { color: #fff; }
/* bandeau d'annonces, langues, WhatsApp */
.ed-notice { background: var(--it-theme-2); color: var(--it-heading-primary); font-size: 14px; font-weight: 600; padding: 10px 0; position: relative; z-index: 1000; }
/* en-tête transparent sous le bandeau d'informations (classe posée par layout.html.twig) */
.ed-below-notice:not(.header-sticky) { top: var(--ed-notice-h, 0px) !important; }
.ed-notice .container { display: flex; gap: 14px; align-items: center; overflow: hidden; }
.ed-notice__tag { background: var(--it-theme-1); color: #fff; border-radius: 999px; padding: 2px 12px; flex: none; font-size: 12px; text-transform: uppercase; letter-spacing: .05em; }
.ed-notice__track { display: flex; gap: 40px; white-space: nowrap; overflow-x: auto; scrollbar-width: none; }
.ed-notice__track a { color: inherit; text-decoration: underline; }
.ed-lang { display: inline-flex; gap: 4px; margin-left: 16px; }
.ed-lang a { font-size: 12px; font-weight: 700; padding: 2px 7px; border-radius: 6px; color: inherit; opacity: .75; text-decoration: none; }
.ed-lang a[aria-current="true"] { background: var(--it-theme-2); color: var(--it-heading-primary); opacity: 1; }
.ed-lang--dark a { color: #fff; }
.ed-wa { position: fixed; right: 20px; bottom: 90px; z-index: 99; width: 52px; height: 52px; border-radius: 50%; display: grid; place-items: center; background: #25d366; color: #fff; font-size: 26px; box-shadow: 0 10px 26px rgba(0, 0, 0, .2); }
.ed-wa:hover { color: #fff; transform: translateY(-2px); }
.it-header-top-login-box a { color: inherit; }
/* contenus vides de l'école : message discret plutôt qu'une zone blanche */
.ed-empty { text-align: center; padding: 48px 20px; border: 2px dashed var(--it-gray-2); border-radius: 20px; color: var(--it-text-body); }
/* tableaux (programmes, frais, horaires) */
.ed-table { width: 100%; border-collapse: collapse; background: #fff; border-radius: 16px; overflow: hidden; }
.ed-table th, .ed-table td { padding: 14px 18px; border-bottom: 1px solid var(--it-gray-2); text-align: left; }
.ed-table th { background: var(--it-gray-1); font-weight: 700; color: var(--it-heading-primary); }
@media (max-width: 767px) { .ed-logo__name { font-size: 16px; max-width: 160px; } .ed-wa { bottom: 76px; right: 14px; } }
/* menu principal : tient sur une ligne même avec beaucoup de rubriques */
@media (min-width: 1200px) {
  .it-menu-content > ul { display: flex; flex-wrap: nowrap; justify-content: center; }
  .it-menu-content > ul > li { margin: 0 11px !important; }
  .it-menu-content > ul > li > a { white-space: nowrap; font-size: 15px; }
}
@media (min-width: 1200px) and (max-width: 1399px) { .it-menu-content > ul > li { margin: 0 7px !important; } .it-menu-content > ul > li > a { font-size: 14px; } }
.it-about-list-box ul li { display: flex; gap: 10px; align-items: center; }
.it-about-list-box ul li span { position: static !important; flex: none; }
/* en-têtes : le menu prend la place disponible, les blocs latéraux leur largeur naturelle (menus d'écoles plus longs que la démo) */
@media (min-width: 1200px) {
  #header-sticky .row { flex-wrap: nowrap; }
  #header-sticky .row > [class*="col-"] { width: auto; flex: 0 0 auto; max-width: none; }
  #header-sticky .row > [class*="col-"]:has(.it-menu-content) { flex: 1 1 auto; min-width: 0; }
  #header-sticky .it-header-right-action { gap: 14px; flex-wrap: nowrap; }
  #header-sticky [class*="it-btn"] { white-space: nowrap; }
  #header-sticky [class*="it-btn"] .text-1, #header-sticky [class*="it-btn"] .text-2 { white-space: nowrap; }
}
@media (max-width: 1599px) { .ed-account-label { display: none; } }
.it-header-top-area .ed-account-label { display: inline !important; }
/* plus de largeur pour l'en-tête sur grand écran ; menu resserré en dessous de 1600 px */
@media (min-width: 1200px) { #header-sticky > .container, #header-sticky .container { max-width: min(1520px, 96vw); } }
@media (min-width: 1200px) and (max-width: 1599px) {
  .it-menu-content > ul > li { margin: 0 6px !important; }
  .it-menu-content > ul > li > a { font-size: 14px; }
  #header-sticky [class*="-contact"]:has(a[href^="tel:"]) { display: none !important; }
}
/* aucune barre de défilement horizontale due aux formes décoratives qui débordent (sans casser l'en-tête collant) */
html, body { overflow-x: clip; }
/* menu compact (voir le script de _educeet/layout.html.twig) */
header.ed-menu-compact [class*="col-"]:has(> .it-header-menu), header.ed-menu-compact [class*="col-"]:has(.it-menu-content) { display: none !important; }
header.ed-menu-compact .it-header-bar, header.ed-menu-compact [class*="-bar"]:has(.it-menu-bar), header.ed-menu-compact .it-menu-bar { display: inline-flex !important; }
header.ed-menu-compact .row > [class*="col-"]:last-child { margin-left: auto; }
.it-menu-mobile { display: block; }
.ed-offcanvas-lang { margin: 18px 0 8px; }
.ed-offcanvas-lang .ed-lang { margin-left: 0; }
.ed-offcanvas-lang .ed-lang a { color: var(--it-heading-primary); border: 1px solid var(--it-gray-2); }
/* photos de l'équipe : taille contenue, quelle que soit la mise en page */

[class*="it-team"] [class*="team-thumb"] img, [class*="it-team"] [class*="team-item"] [class*="thumb"] img { aspect-ratio: 1 / 1; object-fit: cover; object-position: center top; }

/* cartes de l'équipe compactes (accueil et page L'équipe, toutes mises en page) */
[class*="it-team"] .row > [class*="col-"]:has(> [class*="team-item"]) { flex: 0 0 auto; width: 50%; }
@media (min-width: 768px) { [class*="it-team"] .row > [class*="col-"]:has(> [class*="team-item"]) { width: 33.333%; } }
@media (min-width: 1200px) { [class*="it-team"] .row > [class*="col-"]:has(> [class*="team-item"]) { width: 20%; } }
[class*="it-team"] [class*="team-item"] { margin-bottom: 24px !important; }
[class*="it-team"] [class*="team-thumb"], [class*="it-team"] [class*="team-item"] [class*="thumb"] { max-width: 150px; margin-left: auto !important; margin-right: auto !important; border-radius: 16px; overflow: hidden; }
[class*="it-team"] [class*="team-content"] { padding: 12px 10px !important; min-height: 0 !important; }
[class*="it-team"] [class*="team-title"], [class*="it-team"] [class*="team-item"] h4, [class*="it-team"] [class*="team-item"] h5 { font-size: 16px !important; line-height: 1.3 !important; margin-bottom: 4px !important; }
[class*="it-team"] [class*="team-item"] span, [class*="it-team"] [class*="team-item"] p { font-size: 13px !important; line-height: 1.4 !important; }
/* cartes de l'équipe toutes identiques : même hauteur, texte réservé sur 2 lignes (nom) + 2 lignes (fonction) */
[class*="it-team"] .row { align-items: stretch; }
[class*="it-team"] .row > [class*="col-"]:has(> [class*="team-item"]) { display: flex; margin-top: 0 !important; }
[class*="it-team"] [class*="team-item"] { width: 100%; display: flex; flex-direction: column; margin-top: 0 !important; }
[class*="it-team"] [class*="team-item"] > [class*="thumb"] { flex: none; }
[class*="it-team"] [class*="team-content-box"], [class*="it-team"] [class*="team-item"] > [class*="team-content"] { flex: 1 1 auto; }
[class*="it-team"] [class*="team-content"]:not(:has(img)) { height: 112px; display: flex; flex-direction: column; justify-content: flex-start; overflow: hidden; }
[class*="it-team"] [class*="team-title"], [class*="it-team"] [class*="team-content"] h4, [class*="it-team"] [class*="team-content"] h5 {
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; min-height: 2.6em; }
[class*="it-team"] [class*="team-content"] span, [class*="it-team"] [class*="team-content"] p {
  display: -webkit-box !important; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
[class*="it-team"] [class*="team-thumb"], [class*="it-team"] [class*="team-item"] [class*="thumb"] { width: 100%; }
[class*="it-team"] [class*="team-thumb"] img, [class*="it-team"] [class*="team-item"] [class*="thumb"] img { width: 100%; height: auto; display: block; }
[class*="it-team"] [class*="team-item"] { padding-bottom: 14px; }
/* jamais un mot ou un signe seul sur la dernière ligne */
h1, h2, h3, h4, h5, h6, .it-section-title, [class*="-title"] { text-wrap: balance; }
p, li, .ed-prose { text-wrap: pretty; }
/* ---- cartes d'une même section : toujours les mêmes dimensions ----
   chaque carte remplit la hauteur de sa colonne (les colonnes d'une rangée Bootstrap ont déjà la même hauteur) */
main .row > [class*="col"]:has(> [class*="-item"]), main .row > [class*="col"]:has(> .ed-card), main .row > [class*="col"]:has(> :only-child[class*="-item"]) { display: flex; flex-direction: column; }
main .row > [class*="col"] > [class*="-item"]:not([class*="-list"]), main .row > [class*="col"] > .ed-card { flex: 1 1 auto; width: 100%; }
main .row > [class*="col"] > :only-child:not([class*="-item"]):has(> [class*="-item"]) { flex: 1 1 auto; display: flex; flex-direction: column; }
main .row > [class*="col"] > :only-child:not([class*="-item"]) > [class*="-item"] { flex: 1 1 auto; }
/* contenu des cartes : le bouton reste en bas de la carte */
main .row > [class*="col"] > [class*="-item"]:not(.d-flex):not([class*="-list"]) { display: flex; flex-direction: column; }
main .row > [class*="col"] > [class*="-item"]:not(.d-flex) > [class*="-content"] { flex: 1 1 auto; display: flex; flex-direction: column; }
main .row > [class*="col"] > [class*="-item"]:not(.d-flex) > [class*="-content"] > [class*="-btn"]:last-child { margin-top: auto; }
/* carrousels : toutes les diapositives à la hauteur de la plus haute */
main .swiper-wrapper { align-items: stretch; }
main .swiper-slide { height: auto; display: flex; }
main .swiper-slide > [class*="-item"], main .swiper-slide > div:only-child { width: 100%; }
