/* ==========================================================================
   Design system « Contraste énergique » — Club d'activités physiques (CCPB inc. / CAPV inc.)
   Haut de page nuit (en-tête, héros, têtes de page, bande « Comment ça marche », pied de page) et contenu blanc.
   Accent : le dégradé or → bleu des deux villes (or de Varennes, bleu de Boucherville), accordé aux logos « Élan »
   (point corail #FF8A5C conservé). Il ne porte jamais de texte courant.
   Titres : Archivo condensée (OFL 1.1) · texte : Atkinson Hyperlegible Next (OFL 1.1) avec les chiffres d'Archivo.
   VOCABULAIRE DE CLASSES PARTAGÉ : les noms existants sont conservés (qc/design/analyse.md §4) ; les jetons gardent
   leurs noms (--violet, --bleu, --ink, --muted, --line, --bg-soft, --radius…) avec de nouvelles valeurs, pour que le
   back-office, le compte, le paiement, les rapports et le portail professeures suivent sans modification.
   Principes : mobile d'abord (320-360 px), texte 19 px (18 px au téléphone), rien sous 16 px, contrastes AA calculés
   (/guide-de-style/), boutons ≥ 52 px, liens ≥ 44-48 px, focus bleu 3 px, un seul fichier CSS, aucun framework,
   aucune ressource externe, fonctionne sans JavaScript.
   ========================================================================== */

/* ---------- Polices auto-hébergées (SIL OFL 1.1 — static/fonts/OFL-*.txt) ---------- */
/* Titres : Archivo variable (graisse 100-900, largeur 62-125 %), utilisée condensée */
@font-face{font-family:"Club Titre";font-style:normal;font-weight:100 900;font-stretch:62% 125%;font-display:swap;src:url("../fonts/archivo-latin-wdth-normal.woff2") format("woff2")}
/* Texte : Atkinson Hyperlegible Next (Braille Institute), conçue pour la basse vision… */
@font-face{font-family:"Club Texte";font-style:normal;font-weight:200 800;font-display:swap;src:url("../fonts/atkinson-hyperlegible-next-latin-wght-normal.woff2") format("woff2")}
/* …dont seuls les chiffres (zéro barré « 2Ø26 ») viennent d'Archivo : heures, prix, dates et téléphones nets */
@font-face{font-family:"Club Texte";font-style:normal;font-weight:200 800;font-display:swap;src:url("../fonts/archivo-latin-wdth-normal.woff2") format("woff2");unicode-range:U+0030-0039}

/* ---------- Jetons ---------- */
:root{
  /* Nuit : en-tête, héros, têtes de page, bande des étapes, pied de page (texte blanc 18,5:1) */
  --nuit:#140F2D; --nuit-2:#1E1842; --nuit-3:#2E2763; --sur-nuit:#FFFFFF; --sur-nuit-2:#CFC9EC;
  /* Contenu clair */
  --bg:#FFFFFF; --surface:#FFFFFF; --brume:#F4F2FA; --bg-soft:#F4F2FA; --soft:#F4F2FA; --cream:#FFF6EE;
  --line:#E4E0EE; --line-strong:#C9C3DB;
  --border:#7C7596;
  /* Encre */
  --ink:#140F2D; --ink-soft:#2A2445; --muted:#4C4666;
  /* Dégradé lumineux (lettres B/V du Club, accordé aux versions inverses du logo) — décor seulement */
  /* Dégradé du site : or (Varennes) → bleu (Boucherville), demande du Club. --rose et --lilas gardent leurs noms
     (vocabulaire partagé) mais valent maintenant l'or et le bleu du dégradé. */
  --corail:#FF8A5C; --rose:#E8BC45; --lilas:#5B86F5; --azur:#5B86F5;
  --grad:linear-gradient(100deg,#F2CF6B 0%,#E8BC45 28%,#7FA2F7 64%,#5B86F5 100%);
  --grad-b:linear-gradient(160deg,#9DB8FF 8%,#3D6FF0 92%);   /* lettre B : bleu de Boucherville */
  --grad-v:linear-gradient(160deg,#E8BC45 8%,#9A6A0A 92%);   /* lettre V : or de Varennes */
  /* Actions : l'encre (boutons pleins, segment choisi) ; anciens noms conservés pour les apps */
  --accent:#140F2D; --accent-hover:#2B2360; --accent-soft:#EFEDFD; --accent-text:#140F2D; --accent-100:#EFEDFD;
  --violet:#140F2D; --violet-700:#2B2360; --violet-900:#140F2D; --lavande:#EFEDFD;
  /* Repère ville = couleurs du logo, toujours avec le nom écrit (blanc dessus : 5,59:1 et 6,15:1) */
  /* Couleurs des villes = couleurs des logos : Boucherville bleu, Varennes or (texte blanc sur l'or : 4,7:1) */
  --boucherville:#1F5BCB; --boucherville-soft:#ECF2FD; --boucherville-ink:#1A4CA8; --boucherville-clair:#9DB8FF;
  --varennes:#9A6A0A; --varennes-soft:#FBF3DD; --varennes-ink:#7A5500; --varennes-clair:#F2CF6B;
  --bleu:#1F5BCB; --bleu-700:#1A4CA8; --bleu-900:#133A82; --bleu-100:#ECF2FD;
  /* Moments */
  --jour:#9A3412; --jour-soft:#FFF0E3; --jour-icone:#C2410C; --soir:#140F2D; --soir-icone:#C9B8FF;
  /* États */
  --vert:#0B7445; --vert-700:#0A6039; --vert-100:#E1F4EA;
  --rouge:#B42318; --rouge-100:#FDECEA; --jaune:#E9A800; --jaune-100:#FFF0D2;
  --coral:#FF8A5C;
  /* Formes */
  --radius:16px; --radius-lg:24px; --radius-xl:28px; --radius-sm:12px; --pill:999px;
  --focus:3px solid #3D6FF0;
  --shadow-sm:0 1px 2px rgba(20,15,45,.07); --shadow:0 16px 40px -16px rgba(20,15,45,.22); --shadow-lg:0 24px 60px -20px rgba(20,15,45,.34);
  --ease:cubic-bezier(.2,.7,.2,1);
  --f-titre:"Club Titre","Arial Narrow","Roboto Condensed",system-ui,sans-serif;
  --f-texte:"Club Texte",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --font:var(--f-texte);
  --tap:52px;
  --gutter:clamp(16px,4vw,40px);
  --section:clamp(64px,8vw,112px);
  --s-1:4px; --s-2:8px; --s-3:12px; --s-4:16px; --s-5:24px; --s-6:32px; --s-7:48px; --s-8:64px; --s-9:96px;
}

/* ---------- Base ---------- */
[hidden]{display:none!important}
*,*::before,*::after{box-sizing:border-box}
html{font-size:112.5%;-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:16px}
body{margin:0;font-family:var(--f-texte);font-size:1.0556rem;color:var(--ink);background:var(--bg);line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-wrap:break-word}
img,svg,video{max-width:100%;height:auto;display:block}
a{color:var(--ink);text-decoration-thickness:1.5px;text-underline-offset:.2em}
a:hover{color:var(--ink-soft);text-decoration-thickness:2px}
a[href^="mailto:"],code{overflow-wrap:anywhere}
:focus-visible{outline:var(--focus);outline-offset:3px}
h1,h2,h3,h4{font-family:var(--f-titre);font-stretch:80%;font-weight:800;line-height:1.04;letter-spacing:-.004em;word-spacing:.05em;margin:0 0 .5em;color:inherit;text-wrap:balance}
h1{font-size:clamp(2.4rem,1.5rem + 3vw,3.8rem);font-stretch:76%;line-height:.98}
h2{font-size:clamp(1.8rem,1.3rem + 1.6vw,2.6rem)}
h3{font-size:clamp(1.3rem,1.2rem + .4vw,1.5rem);font-weight:750;font-stretch:84%;line-height:1.12}
h4{font-size:1.2222rem;font-weight:750;font-stretch:86%}
.h1,.h2,.h3{font-family:var(--f-titre);font-weight:800;line-height:1.04;margin:0 0 .5em;text-wrap:balance}
.h1{font-size:clamp(2.4rem,1.5rem + 3vw,3.8rem);font-stretch:76%}
.h2{font-size:clamp(1.8rem,1.3rem + 1.6vw,2.6rem);font-stretch:80%}
.h3{font-size:clamp(1.3rem,1.2rem + .4vw,1.5rem);font-weight:750;font-stretch:84%}
p,ul,ol,dl{margin:0 0 1em}
p{text-wrap:pretty}
ul,ol{padding-left:1.3em}
small,.small{font-size:.8889rem}
strong,b{font-weight:700}
hr{border:0;border-top:1px solid var(--line);margin:var(--s-6) 0}
code{font-size:.9em;padding:.1em .35em;border-radius:6px;background:var(--brume);color:var(--ink)}
.container{width:100%;max-width:calc(1240px + 2 * var(--gutter));margin-inline:auto;padding-inline:var(--gutter)}
.container--narrow{max-width:calc(840px + 2 * var(--gutter))}
.container--wide{max-width:calc(1360px + 2 * var(--gutter))}
main{display:block;min-height:50vh;padding-bottom:var(--section)}
main:focus{outline:none}
.skip-link{position:absolute;left:16px;top:-120px;z-index:200;display:inline-flex;align-items:center;min-height:48px;padding:0 22px;border-radius:var(--pill);background:var(--surface);color:var(--ink);font-weight:700;text-decoration:none;box-shadow:var(--shadow)}
.skip-link:focus{top:12px;color:var(--ink)}
.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;margin:-1px;padding:0;border:0}
.lead{font-size:clamp(1.0556rem,1rem + .35vw,1.2222rem);line-height:1.5;color:var(--muted);max-width:40em}
.lead p:last-child{margin-bottom:0}
.kicker{display:inline-flex;align-items:center;gap:10px;margin:0 0 var(--s-3);font-size:.8889rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.kicker::before{content:"";flex:none;width:28px;height:3px;border-radius:3px;background:var(--grad)}
.kicker .icon{width:20px;height:20px}
.kicker--varennes{color:var(--varennes-ink)}
.muted{color:var(--muted)}
.center{text-align:center}
.nowrap{white-space:nowrap}
.prose{max-width:70ch}
.prose h2{margin-top:var(--s-7)}
.prose h3{margin-top:var(--s-6)}
.prose li{margin-bottom:.35em}
.checklist{list-style:none;padding:0;display:grid;gap:10px}
.prose .checklist li{margin:0}
.checklist li{display:flex;gap:12px;align-items:flex-start}
.checklist .icon{color:var(--vert);flex:none;width:1.5em;height:1.5em;margin-top:.05em;padding:.28em;border-radius:50%;background:var(--vert-100);stroke-width:2.8}
.stack>*+*{margin-top:var(--s-4)}
.cluster{display:flex;flex-wrap:wrap;gap:var(--s-3);align-items:center}
.spread{display:flex;flex-wrap:wrap;gap:var(--s-3);align-items:center;justify-content:space-between}
.icon{width:1.15em;height:1.15em;flex:none;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;vertical-align:-.2em}
.icon--lg{width:2rem;height:2rem}
.svg-sprite{position:absolute;width:0;height:0;overflow:hidden}
/* Texte en dégradé : titres de 44 px et plus sur fond nuit seulement (pire point 5,4:1 sur --nuit) */
.grad{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-box-decoration-break:clone;box-decoration-break:clone}
.dot{display:inline-block;flex:none;width:10px;height:10px;border-radius:50%;background:var(--border);vertical-align:.05em}
.dot--boucherville{background:var(--boucherville)}
.dot--varennes{background:var(--varennes)}
.dot--ok{background:var(--vert)}
.dot--on{background:var(--ink)}
.intensity .dot,.badge .dot{width:.55em;height:.55em}
.pulse{position:relative;display:inline-block;flex:none;width:10px;height:10px;border-radius:50%;background:var(--grad)}
.pulse::after{content:"";position:absolute;inset:-5px;border-radius:50%;border:2px solid var(--rose);opacity:0;animation:pulse 2.4s var(--ease) 2}
@keyframes pulse{0%{transform:scale(.6);opacity:.9}100%{transform:scale(1.6);opacity:0}}

/* ---------- Sections ---------- */
.section{padding-block:var(--section) 0}
.section--flush{padding-block:clamp(40px,5vw,72px) 0}
.section--soft,.section--brume{background:var(--brume)}
.section--cream{background:var(--cream)}
.section--soft,.section--brume,.section--cream,.section--nuit{padding-bottom:var(--section)}
/* Une section blanche suivie d'une bande nuit ou pastel garde sa marge basse (les tuiles ne touchent jamais la bande) */
.section:has(+ .section--nuit,+ .section--soft,+ .section--brume,+ .section--cream){padding-bottom:var(--section)}
.section--nuit{position:relative;overflow:hidden;background:var(--nuit);color:var(--sur-nuit)}
.section--nuit::before{content:"";position:absolute;left:-15%;top:-50%;width:60%;height:100%;background:radial-gradient(closest-side,rgba(232,188,69,.18),rgba(232,188,69,0));pointer-events:none}
.section--nuit>.container{position:relative}
.section__head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px 32px;margin-bottom:clamp(28px,3.5vw,44px)}
.section__head h2{margin:0;font-size:clamp(2.1rem,1.2rem + 2.6vw,3.6rem);font-stretch:78%;line-height:1}
.section__head p{margin:14px 0 0;color:var(--muted);font-size:clamp(1.0556rem,1rem + .3vw,1.1667rem);max-width:40em}
.section--nuit .section__head p{color:var(--sur-nuit-2)}
.eyebrow{display:inline-flex;align-items:center;gap:10px;margin:0 0 14px!important;font-size:.8889rem!important;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.eyebrow::before{content:"";width:28px;height:3px;border-radius:3px;background:var(--grad)}
.section--nuit .eyebrow,.page-top .eyebrow{color:var(--sur-nuit-2)}
.link-arrow{display:inline-flex;align-items:center;gap:.45em;min-height:48px;font-weight:700;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:.25em;color:var(--ink)}
.link-arrow .icon{transition:transform .18s var(--ease)}
.link-arrow:hover .icon{transform:translateX(3px)}

/* ---------- En-tête (commune : public, gestion, portail professeures) — bloc nuit ---------- */
.site-header{position:relative;z-index:50;background:var(--nuit);color:var(--sur-nuit)}
.site-header__inner{display:flex;flex-wrap:wrap;gap:10px 24px;align-items:center;justify-content:space-between;min-height:72px;padding-block:8px}
.brand{display:inline-flex;align-items:center;gap:12px;min-height:48px;color:var(--sur-nuit);text-decoration:none;font-weight:700;line-height:1.15}
.brand:hover{color:var(--sur-nuit)}
.brand__text{display:block;font-family:var(--f-titre);font-stretch:84%;font-weight:800;font-size:1.2222rem;letter-spacing:.002em}
.brand small{display:block;margin-top:3px;font-family:var(--f-texte);font-weight:500;color:var(--sur-nuit-2);font-size:.8889rem;letter-spacing:.01em}
.main-nav{display:flex;gap:2px;flex-wrap:wrap;align-items:center}
.main-nav a{position:relative;display:inline-flex;align-items:center;gap:6px;min-height:48px;padding:0 14px;border-radius:var(--pill);color:var(--sur-nuit);font-weight:600;font-size:1rem;text-decoration:none;transition:background-color .18s var(--ease)}
.main-nav a:hover{background:rgba(255,255,255,.09);color:var(--sur-nuit)}
.main-nav a[aria-current=page]{color:#FFFFFF;background:var(--nuit-2)}
.main-nav a[aria-current=page]::after{content:"";position:absolute;left:14px;right:14px;bottom:5px;height:3px;border-radius:3px;background:var(--grad)}
.main-nav a.nav--varennes[aria-current=page]{background:var(--nuit-2)}
.main-nav .btn{min-height:44px}
.main-nav__spacer{flex:1}
.main-nav .badge{margin-left:2px}
.nav-logout{margin:0}
.site-header--bo .brand__text::before{content:"";display:inline-block;width:12px;height:12px;margin-right:10px;border-radius:50%;background:var(--grad);vertical-align:.02em}
/* Gestion et portail professeures : écran plus large pour les tableaux, texte 18 px, titres plus sobres, navigation
   complète toujours visible (elle s'enroule sur plusieurs lignes au téléphone ; aucun menu masqué) */
body.bo,body.prof{font-size:1rem}
.bo .container,.prof .container{max-width:calc(1440px + 2 * var(--gutter))}
.bo h1,.prof h1{font-size:clamp(1.9rem,1.4rem + 1.4vw,2.6rem);font-stretch:80%}
.bo h2,.prof h2{font-size:clamp(1.35rem,1.2rem + .5vw,1.7rem);font-stretch:86%;font-weight:750}
.bo h3,.prof h3{font-stretch:90%}
.bo .table,.prof .table{font-size:.9444rem}
.site-header--bo .site-header__inner{gap:4px 16px}
.site-header--bo .main-nav{flex:1 1 auto;justify-content:flex-end}
.site-header--bo .main-nav a{padding:0 12px;font-size:.9444rem}
/* Bureau : les 11 liens et « Déconnexion » sur UNE ligne (depuis SEO et Pare-feu, « Déconnexion » passait seul sur une
   3e ligne à 1440 px : en-tête de 162 px) */
@media (min-width:1280px){.site-header--bo .main-nav a{padding:0 7px}}
.site-header--bo .nav-logout{margin-left:6px}
.site-header--bo .nav-logout .btn{background:transparent;border-color:rgba(255,255,255,.72);color:var(--sur-nuit)}
.site-header--bo .nav-logout .btn:hover{background:rgba(255,255,255,.1);border-color:#FFFFFF;color:#FFFFFF}
/* Ancien bouton de menu (gabarits antérieurs) : limité à la navigation qui le déclare ([data-nav]) */
.nav-toggle{display:none;min-height:var(--tap);min-width:var(--tap);padding:0 16px;border-radius:var(--pill);border:2px solid rgba(255,255,255,.72);background:transparent;font:inherit;font-weight:650;color:var(--sur-nuit);cursor:pointer;align-items:center;gap:8px}
@media (max-width:999px){
  .js .nav-toggle{display:inline-flex}
  .js .main-nav[data-nav]{display:none;width:100%;padding-top:8px;border-top:1px solid var(--nuit-3)}
  .js .main-nav[data-nav].is-open{display:flex}
}

/* En-tête publique : une ligne de 80 px — signature, 3 liens, panier et connexion discrets ; menu <details> sous 960 px */
.site-header--public .site-header__inner{flex-wrap:nowrap;gap:28px;min-height:80px;padding-block:0}
.site-header--public .brand{flex:none;gap:0;margin-right:4px}
.brand__picture{display:contents}
.brand__logo{display:block;height:38px;width:auto}
.main-nav--public{display:block}
.main-nav__list{display:flex;gap:4px;margin:0;padding:0;list-style:none}
.main-nav--public a{padding:0 16px;white-space:nowrap}
/* 3 liens (Cours, À propos, Nous joindre) : entre 960 et 1149 px, liens resserrés et panier en icône seule */
@media (min-width:960px) and (max-width:1149.98px){
  .site-header--public .site-header__inner{gap:14px}
  .main-nav--public a{padding:0 11px}
  .main-nav--public a[aria-current=page]::after{left:11px;right:11px}
  .header-cart__label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
}
.main-nav--public a[aria-current=page]{background:transparent}
.main-nav--public a[aria-current=page]::after{left:16px;right:16px}
.header-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-left:auto}
.header-cart{position:relative;display:inline-flex;align-items:center;gap:9px;min-height:48px;padding:0 14px;border-radius:var(--pill);color:var(--sur-nuit);text-decoration:none;font-weight:600;font-size:1rem;transition:background-color .18s var(--ease)}
.header-cart:hover{background:rgba(255,255,255,.09);color:var(--sur-nuit)}
.header-cart .icon{width:22px;height:22px}
.header-cart[aria-current=page]{background:var(--nuit-2)}
.header-cart__count{display:inline-grid;place-items:center;min-width:26px;height:26px;padding:0 7px;border-radius:var(--pill);background:var(--corail);color:var(--nuit);font-size:.8889rem;font-weight:700;line-height:1}
.header-account{display:inline-flex;align-items:center;gap:9px;min-height:48px;padding:0 20px 0 16px;border-radius:var(--pill);border:2px solid rgba(255,255,255,.72);color:var(--sur-nuit);text-decoration:none;font-weight:650;font-size:1rem;white-space:nowrap;transition:background-color .18s var(--ease),border-color .18s var(--ease)}
.header-account:hover,.header-account[aria-current=page]{border-color:#FFFFFF;background:rgba(255,255,255,.1);color:#FFFFFF}
.header-account .icon{width:20px;height:20px}
.nav-menu{display:none}
.nav-menu>summary{list-style:none;display:inline-flex;align-items:center;gap:8px;min-height:48px;min-width:48px;padding:0 18px 0 14px;border-radius:var(--pill);border:2px solid rgba(255,255,255,.72);color:var(--sur-nuit);font-weight:650;font-size:1rem;cursor:pointer;user-select:none}
.nav-menu>summary::-webkit-details-marker{display:none}
.nav-menu>summary::marker{content:""}
.nav-menu>summary .icon{width:22px;height:22px}
.nav-menu .nav-menu__icon-close{display:none}
.nav-menu[open] .nav-menu__icon-close{display:block}
.nav-menu[open] .nav-menu__icon-open{display:none}
.nav-menu[open]>summary{background:#FFFFFF;border-color:#FFFFFF;color:var(--nuit)}
.nav-menu:not([open]) .nav-menu__panel{display:none}  /* menu fermé : aucune boîte, donc aucun débordement (Chrome applique content-visibility:hidden au panneau absolu, qui garderait une largeur étroite — WCAG 1.4.10) */
.nav-menu__panel{position:absolute;left:0;right:0;top:100%;z-index:60;max-width:100%;padding:8px var(--gutter) 28px;background:var(--nuit);border-top:1px solid var(--nuit-3);box-shadow:0 28px 40px -12px rgba(8,5,24,.55);max-height:calc(100vh - 68px);overflow-y:auto}
.nav-menu__nav{max-width:640px;margin:0 auto}
.nav-menu__list{list-style:none;margin:0;padding:0}
.nav-menu__list a{display:flex;flex-wrap:wrap;min-width:0;align-items:center;justify-content:space-between;gap:12px;min-height:58px;border-bottom:1px solid var(--nuit-3);color:var(--sur-nuit);text-decoration:none;font-size:1.0556rem;font-weight:650}
.nav-menu__list a .icon{color:var(--sur-nuit-2);flex:none}
.nav-menu__list a:hover{color:#FFFFFF}
.nav-menu__list a:hover .nav-menu__label{text-decoration:underline;text-underline-offset:.25em}
.nav-menu__list a[aria-current=page] .nav-menu__label{background:var(--grad) no-repeat 0 100%/100% 3px;padding-bottom:5px}
.nav-menu__label{display:inline-flex;align-items:center;gap:12px;min-width:0;max-width:100%;overflow-wrap:anywhere}
.nav-menu__actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:22px}
.nav-menu__actions .btn{width:100%;padding:0 16px}

/* ---------- Boutons (≥ 52 px, --tap) ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.6em;min-height:var(--tap);padding:10px 26px;border-radius:var(--pill);border:2px solid var(--line-strong);font:inherit;font-size:1.0556rem;font-weight:650;line-height:1.2;text-decoration:none;text-align:center;cursor:pointer;background:var(--surface);color:var(--ink);transition:background-color .18s var(--ease),color .18s var(--ease),border-color .18s var(--ease),transform .18s var(--ease)}
.btn:hover{border-color:var(--ink);color:var(--ink)}
.btn:active{transform:translateY(1px)}
.btn .icon{width:1.15em;height:1.15em;transition:transform .18s var(--ease)}
.btn:hover .icon--arrow{transform:translateX(3px)}
.btn--primary{background:var(--ink);border-color:var(--ink);color:#FFFFFF}
.btn--primary:hover{background:#2B2360;border-color:#2B2360;color:#FFFFFF}
.btn--secondary{background:var(--surface);border-color:var(--ink);color:var(--ink)}
.btn--secondary:hover{background:var(--brume);border-color:var(--ink);color:var(--ink)}
.btn--quiet{background:var(--brume);border-color:var(--brume);color:var(--ink)}
.btn--quiet:hover{background:#E9E5F6;border-color:#E9E5F6;color:var(--ink)}
.btn--light{background:#FFFFFF;border-color:#FFFFFF;color:var(--nuit)}
.btn--light:hover{background:#EDEAFB;border-color:#EDEAFB;color:var(--nuit)}
.btn--ghost{background:transparent;border-color:rgba(255,255,255,.72);color:#FFFFFF}
.btn--ghost:hover{background:rgba(255,255,255,.1);border-color:#FFFFFF;color:#FFFFFF}
.btn--varennes{background:var(--varennes);border-color:var(--varennes);color:#FFFFFF}
.btn--varennes:hover{background:#6E4D00;border-color:#6E4D00;color:#FFFFFF}
.btn--boucherville{background:var(--boucherville);border-color:var(--boucherville);color:#FFFFFF}
.btn--boucherville:hover{background:var(--bleu-900);border-color:var(--bleu-900);color:#FFFFFF}
.btn--danger{background:var(--rouge);border-color:var(--rouge);color:#FFFFFF}
.btn--danger:hover{background:#8F1C13;border-color:#8F1C13;color:#FFFFFF}
.btn--help{background:#FFFFFF;border-color:#FFFFFF;color:var(--ink);box-shadow:0 10px 30px rgba(20,15,45,.24),0 0 0 1px rgba(20,15,45,.1)}
.btn--help:hover{background:#FFFFFF;border-color:#FFFFFF;color:var(--ink)}
.btn--small{min-height:48px;padding:8px 20px;font-size:1rem}
/* Bouton secondaire « petit » (tableaux de la gestion) : même bordure encre que .btn--secondary, jamais deux styles côte à côte */
.btn--small:where(:not(.btn--primary,.btn--quiet,.btn--light,.btn--ghost,.btn--varennes,.btn--boucherville,.btn--danger,.btn--link,.btn--help)){border-color:var(--ink)}
.table .btn,.page-actions .btn,.ca-actions .btn,.bo-page__actions .btn{white-space:normal;height:auto;min-height:44px;padding-block:8px;line-height:1.2;border-radius:14px}
.btn--large{min-height:58px;padding:10px 32px;font-size:1.1111rem}
.btn--block{width:100%}
.btn--link{background:transparent;border-color:transparent;color:var(--ink);text-decoration:underline;text-underline-offset:.2em;padding-left:8px;padding-right:8px}
.btn--link:hover{background:transparent;border-color:transparent;color:var(--ink-soft)}
.btn--waitlist{background:var(--surface);border-color:var(--ink);color:var(--ink)}
.btn--waitlist:hover{background:var(--brume);color:var(--ink)}
.btn[aria-disabled=true],.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}
.btn-row{display:flex;flex-wrap:wrap;gap:var(--s-3)}
.round-go{display:grid;place-items:center;flex:none;width:60px;height:60px;border-radius:50%;background:var(--ink);color:#FFFFFF;transition:transform .2s var(--ease)}
.round-go .icon{width:24px;height:24px}

/* ---------- Cartes, grilles, badges ---------- */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:26px}
.card--soft{background:var(--brume);border-color:transparent}
.card--cream{background:var(--cream);border-color:transparent}
.card h2:first-child,.card h3:first-child{margin-top:0}
.grid{display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr))}
ul.grid,ol.grid{list-style:none;padding:0;margin:0}
.grid--2{grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr))}
.grid--3{grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr))}
.badge{max-width:100%;display:inline-flex;align-items:center;gap:7px;min-height:32px;padding:3px 13px;border-radius:var(--pill);background:var(--brume);color:var(--ink-soft);font-size:.8889rem;font-weight:700;line-height:1.25;letter-spacing:.01em;white-space:nowrap}
.badge .icon{width:17px;height:17px}
.badge--boucherville{background:var(--boucherville);color:#FFFFFF}
.badge--varennes{background:var(--varennes);color:#FFFFFF}
.badge--ok{background:var(--vert-100);color:var(--vert)}
.badge--warn{background:#FFF0D2;color:#8A4B00}
.badge--full{background:var(--rouge-100);color:var(--rouge)}
.badge--info{background:#ECF2FD;color:#1A4CA8}
.badge--muted{background:#EEECF4;color:#4C4666}
.badge--accent{background:#FFEBDD;color:#8A3413}
.badge--type{background:var(--brume);color:var(--ink-soft)}
.badge--jour{background:var(--jour-soft);color:var(--jour)}
.badge--jour .icon{color:var(--jour-icone)}
.badge--soir{background:var(--nuit);color:#FFFFFF}
.badge--soir .icon{color:var(--soir-icone)}
/* « Nouveau cours » / « Nouvel horaire » : anneau au dégradé du Club (décor), texte encre sur blanc (AA) */
.badge--new{background:linear-gradient(#FFFFFF,#FFFFFF) padding-box,var(--grad) border-box;border:2px solid transparent;color:var(--ink);padding:1px 12px 1px 9px}
.badge--new .icon{color:var(--rose);fill:currentColor;stroke:none}

/* ---------- Alertes, bannières, avis ---------- */
.alert{padding:16px 20px;border-radius:var(--radius);margin:12px 0;border:1px solid transparent;border-left:5px solid #1F5BCB;background:#EEF3FC;color:var(--ink)}
.alert--success{border-color:#0B7445;background:#E9F5EE}
.alert--error{border-color:#B42318;background:#FDECEA}
.alert--warning{border-color:#8A4B00;background:#FFF4DC}
.alert--info{border-color:#1F5BCB;background:#EEF3FC}
.alert a{color:inherit;font-weight:700}
.alert:focus{outline:var(--focus);outline-offset:3px}
.alert p:last-child{margin-bottom:0}
/* Bannière planifiée (modèle Announcement) : fine barre intégrée au bloc nuit, sous l'en-tête */
.announcement{position:relative;z-index:1;background:var(--nuit);color:#FFFFFF;border-top:1px solid var(--nuit-3);font-size:.9444rem;line-height:1.4}
.announcement__inner{display:flex;align-items:center;justify-content:center;min-height:48px;padding-block:6px;text-align:center}
.announcement__link{display:inline-flex;align-items:center;justify-content:center;gap:4px 12px;min-height:44px;color:#FFFFFF;text-decoration:none}
.announcement__link:hover{color:#FFFFFF}
.announcement__text{margin:0}
.announcement p.announcement__text{display:inline-flex;align-items:center;gap:12px}
.announcement__text--short,.hero__announce .announcement__text--chip{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden}
.announcement__text--short{display:none}
/* Gestion : aperçu de l'annonce publique, sans lien de sortie ni point animé */
.announcement--staff,.announcement--staff.announcement--important{background:var(--brume);color:var(--ink-soft);border-top:0;border-bottom:1px solid var(--line);font-size:.8889rem}
.announcement--staff .announcement__inner{justify-content:flex-start;min-height:40px;text-align:left}
.announcement--staff p.announcement__text{gap:10px;flex-wrap:wrap}
.announcement__staff-k{display:inline-flex;align-items:center;min-height:24px;padding:0 10px;border-radius:var(--pill);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-strong);font-weight:700;color:var(--ink);white-space:nowrap}
.announcement__cta{display:inline-flex;align-items:center;gap:6px;font-weight:700;white-space:nowrap}
.announcement__cta-label{text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:.2em}
.announcement__cta .icon{width:1.05em;height:1.05em;transition:transform .18s var(--ease)}
.announcement__link:hover .announcement__cta .icon{transform:translateX(3px)}
.announcement a{color:#FFFFFF}
.announcement--important{background:#FFE9C9;color:var(--ink);border-top-color:#FFE9C9}
.announcement--important .announcement__link,.announcement--important a{color:var(--ink)}
.announcement--important .pulse{background:var(--boucherville)}
.announcement--important .pulse::after{border-color:var(--boucherville)}
.notice{display:flex;gap:12px;align-items:flex-start;padding:16px 20px;border-radius:var(--radius);background:var(--cream);border:1px solid #F3E2D0}
.notice .icon{margin-top:.2em;color:var(--jour-icone)}
.notice p{margin:0}
.notice--lavande{background:var(--brume);border-color:var(--line)}
.notice--lavande .icon{color:#6A4FE0}
.notice--bleu{background:var(--bleu-100);border-color:#D3E1F9}
.notice--bleu .icon{color:var(--bleu-700)}

/* ---------- Formulaires (WCAG 2.2 : libellé visible, aide avant, erreur près du champ) ---------- */
.field{margin:0 0 20px;max-width:620px}
.field label,.field legend{display:block;font-weight:700;margin-bottom:6px;font-size:1rem}
.field__help{margin:0 0 8px;color:var(--muted);font-size:.9444rem}
.field__error{margin:0 0 8px;color:var(--rouge);font-weight:700;display:flex;gap:8px;align-items:flex-start}
.field__error::before{content:"!";display:inline-grid;place-items:center;flex:none;width:1.3em;height:1.3em;margin-top:.1em;border-radius:50%;background:var(--rouge);color:#FFFFFF;font-size:.85em;font-weight:700}
.field__error[hidden]{display:none}
.field--error input,.field--error select,.field--error textarea{border-color:var(--rouge);background:#FFFBFA}
input,select,textarea{font:inherit;font-size:1rem;min-height:var(--tap);padding:10px 16px;border:2px solid var(--border);border-radius:14px;width:100%;max-width:560px;background:var(--surface);color:var(--ink)}
input:hover,select:hover,textarea:hover{border-color:var(--ink-soft)}
input:focus-visible,select:focus-visible,textarea:focus-visible{border-color:var(--ink);outline:var(--focus);outline-offset:2px}
/* Un champ « date » délègue le focus à ses segments internes (jour, mois, année) : :focus-visible ne
   s'applique alors plus à l'élément lui-même, et la personne au clavier perd de vue où elle se trouve.
   Mesuré sur la date de naissance de l'inscription — seul arrêt de tabulation du site sans indicateur. */
input[type=date]:focus-within{border-color:var(--ink);outline:var(--focus);outline-offset:2px}
textarea{min-height:160px;resize:vertical}
input[type=checkbox],input[type=radio]{width:26px;height:26px;min-height:26px;padding:0;margin:0;accent-color:var(--ink);flex:none}
select{appearance:none;-webkit-appearance:none;background-image:url("../img/chevron-down.svg");background-repeat:no-repeat;background-position:right 14px center;background-size:20px;padding-right:44px}
.req{color:var(--rouge)}
.form-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-top:var(--s-5)}
.form-errors{margin-bottom:var(--s-5)}
/* Date de naissance en trois champs (jour, mois, année) dans un <fieldset> : libellés courts au-dessus de chaque champ */
.date-parts{display:flex;flex-wrap:wrap;gap:10px 12px;align-items:flex-end}
fieldset.field>.date-parts>div{margin:0}
fieldset.field>.date-parts label,.field .date-parts label{display:block;min-height:0;margin:0 0 4px;padding:0;border:0;background:none;font-size:.9444rem;font-weight:600;color:var(--ink-soft);cursor:default}
.date-parts>div{min-width:0}
.date-parts__day input{width:4.6em}
.date-parts__month select{width:10.5em;max-width:100%}
.date-parts__year input{width:6.2em}
.check{display:flex;gap:12px;align-items:center;min-height:var(--tap);padding:8px 0;font-weight:600;cursor:pointer}
.check input{margin-top:0}
.hp-field{position:absolute!important;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}
fieldset{border:0;padding:0;margin:0;min-width:0}
legend{padding:0}
/* Boutons-options (radios stylés) : le bouton radio reste accessible au clavier */
.pill-group{display:flex;flex-wrap:wrap;gap:8px}
.pill-group input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.pill-group label{display:inline-flex;align-items:center;gap:8px;min-height:48px;padding:0 18px;border-radius:var(--pill);border:2px solid var(--border);background:var(--surface);color:var(--ink);font-weight:600;cursor:pointer;margin:0;font-size:1rem}
.pill-group label:hover{border-color:var(--ink)}
.pill-group input:checked+label{background:var(--ink);border-color:var(--ink);color:#FFFFFF}
.pill-group input:focus-visible+label{outline:var(--focus);outline-offset:3px}
.pill-group label small{font-weight:400;font-size:.9444rem}
.pill-group--primary label{min-height:var(--tap)}
.pill-group--small label{min-height:44px;padding:0 16px}

/* ---------- Tableaux ---------- */
.table{width:100%;border-collapse:collapse;font-size:1rem}
.table th,.table td{padding:12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.table th{background:var(--brume);font-weight:700;color:var(--ink)}
.table thead th{border-bottom:2px solid var(--line-strong)}
.table tbody tr:hover td{background:#FBFAFD}
.table-wrap{position:relative;overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:var(--radius-sm)}   /* relative : les textes « visually-hidden » (position:absolute) des boutons restent rognés par la zone défilante, sinon toute la PAGE devient plus large que l'iPad (1389 px pour 810) */
.table caption{text-align:left;font-weight:700;padding:8px 0;caption-side:top}

/* ---------- Étapes du parcours d'inscription ---------- */
.steps{display:flex;gap:6px;list-style:none;padding:4px;flex-wrap:wrap;margin:0 0 var(--s-5);border-radius:var(--pill);background:var(--brume);box-shadow:inset 0 0 0 1px var(--line);width:fit-content;max-width:100%}
.steps li{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;border-radius:var(--pill);background:var(--brume);color:var(--muted);font-weight:600;font-size:1rem}
.steps li[aria-current=step]{background:var(--ink);color:#FFFFFF;font-weight:700}
.steps li.is-done{color:var(--vert-700)}
.steps li.is-done::before{content:"✓";font-weight:700}
/* Panier et révision : la ville est déjà écrite dans l'en-tête de l'organisme, pas de seconde pastille sur chaque ligne */
.org-block .line__title .badge--boucherville,.org-block .line__title .badge--varennes{display:none}

/* ---------- Bouton « Besoin d'aide? » (toujours visible, §5.2) ---------- */
.help-fab{position:fixed;right:20px;bottom:20px;z-index:45}
.help-fab summary{list-style:none;min-height:56px;padding:0 20px 0 8px;gap:10px;font-weight:700}
.help-fab summary::-webkit-details-marker{display:none}
.help-fab summary::marker{content:""}
.help-fab summary::before{content:"?";content:"?" / "";display:inline-grid;place-items:center;flex:none;width:40px;height:40px;border-radius:50%;background:#140F2D;color:#FFFFFF;font-family:var(--f-titre);font-size:1.25rem;font-weight:800;line-height:1}
.help-fab__label--short{display:none}
.help-fab details[open] summary{background:var(--nuit);border-color:var(--nuit);color:#FFFFFF}
.help-fab details[open] summary::before{background:#FFFFFF;color:var(--nuit)}
.help-fab__panel{position:absolute;right:0;bottom:calc(100% + 12px);width:min(360px,calc(100vw - 32px));max-height:calc(100vh - 120px);overflow-y:auto;padding:22px 22px 12px;background:var(--surface);border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow-lg);color:var(--ink)}
.help-fab__panel a{display:flex;align-items:center;gap:10px;min-height:52px;color:var(--ink);text-decoration:none}
.help-fab__panel a:hover{text-decoration:underline}
.help-fab__panel p{margin:0 0 10px}
.help-fab__title .muted{font-size:.9444rem}
.help-fab__list{list-style:none;margin:0;padding:0}
.help-fab__list li{padding:10px 0;border-top:1px solid var(--line)}
.help-fab__name{display:block;font-weight:700}
.help-fab__list a:not(.help-fab__mail){font-family:var(--f-titre);font-stretch:88%;font-size:1.3333rem;font-weight:750}
.help-fab__mail{font-size:.9444rem;overflow-wrap:anywhere;text-decoration:underline!important}
.help-fab__faq{margin:0!important;border-top:1px solid var(--line)}
.help-fab__faq a{justify-content:space-between;font-weight:700}

/* ---------- Pied de page (nuit, filet en dégradé) ---------- */
.site-footer{position:relative;padding:80px 0 36px;background:var(--nuit);color:#FFFFFF}
.site-footer::before{content:"";position:absolute;left:0;right:0;top:0;height:4px;background:var(--grad)}
.site-footer a{color:#FFFFFF}
.site-footer a:hover{color:#FFFFFF}
.site-footer__grid{display:grid;gap:40px 32px;grid-template-columns:minmax(0,1.6fr) repeat(3,minmax(0,1fr)) minmax(0,1.25fr)}
.site-footer h2{margin:0 0 12px;font-family:var(--f-texte);font-size:.8889rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#CFC9EC}
.site-footer ul{list-style:none;padding:0;margin:0}
.site-footer li{margin:0}
.site-footer li a{display:inline-flex;align-items:center;gap:10px;min-height:48px;padding-block:4px;color:#FFFFFF;text-decoration:none;font-size:1rem;line-height:1.3}
.site-footer li a:hover{text-decoration:underline;text-underline-offset:.25em}
.site-footer__signature{display:inline-flex;min-height:48px;align-items:center}
.site-footer__signature img{height:40px;width:auto}
.site-footer__tagline{margin:18px 0 0;color:var(--sur-nuit-2);max-width:26em;font-size:1rem}
.footer-logos{list-style:none;padding:0;margin:22px 0 0;display:flex;flex-wrap:wrap;gap:12px}
.footer-logos li{margin:0}
.site-footer .footer-logos a{display:inline-flex}
.site-footer__social{margin:18px 0 0}
.site-footer__social a{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-weight:700}
.site-footer__social .icon{width:22px;height:22px}
.brand-plate{display:inline-flex;align-items:center;min-height:52px;padding:10px 18px;border-radius:var(--radius);background:#FFFFFF}
.brand-plate img{height:40px;width:auto}
.site-footer .brand-plate{padding:10px 18px;min-height:60px}
.site-footer .footer-logos{margin-top:24px}
.site-footer .contact-line{display:flex;flex-direction:column;margin:0 0 16px}
.contact-line strong{font-weight:700}
.contact-line a{display:inline-flex;align-items:center;gap:8px;min-height:44px;text-decoration:none}
.contact-line__phone{font-family:var(--f-titre);font-stretch:88%;font-size:1.2222rem;font-weight:750}
.contact-line__mail{font-size:.9444rem;min-height:32px!important;color:var(--sur-nuit-2)!important;text-decoration:underline!important;overflow-wrap:anywhere}
.site-footer__bottom{display:grid;gap:8px;margin-top:56px;padding-top:24px;border-top:1px solid var(--nuit-3);font-size:.9444rem;color:#CFC9EC}
.site-footer__bottom p{margin:0;max-width:none}
.site-footer__bottom a{color:#CFC9EC}
.site-footer__bottom a:hover{color:#FFFFFF}
.site-footer__legal ul{display:flex;flex-wrap:wrap;gap:0 22px;list-style:none;margin:0 0 4px;padding:0}
.site-footer__legal li a{min-height:48px;padding-block:0;font-size:.9444rem;color:#FFFFFF;text-decoration:underline;text-underline-offset:.2em}
.site-footer__credits{font-size:.8889rem}
.site-footer--minimal{padding:32px 0}

/* ---------- Fil d'Ariane ---------- */
.breadcrumb{padding:var(--s-4) 0 0;font-size:.9444rem}
.breadcrumb ol{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:0 10px;align-items:center;color:var(--muted)}
.breadcrumb li+li::before{content:"/";margin-right:10px;color:var(--border)}
.breadcrumb a{display:inline-flex;align-items:center;min-height:48px;padding-inline:2px;color:var(--muted)}
.breadcrumb a:hover{color:var(--ink)}
.breadcrumb [aria-current=page]{color:var(--ink-soft)}

/* ---------- Têtes de page (bloc nuit) ---------- */
/* Page d'archive (apps/migration : anciens liens et signets de WordPress, fil d'Ariane sans <ol>) : tête nuit pleine largeur */
.container--narrow:has(>.breadcrumb+.page-head)>.breadcrumb,.container--narrow:has(>.breadcrumb+.page-head)>.page-head{position:relative;background:var(--nuit);color:var(--sur-nuit-2);box-shadow:0 0 0 100vmax var(--nuit);clip-path:inset(0 -100vmax)}
.container--narrow:has(>.breadcrumb+.page-head)>.breadcrumb{display:flex;flex-wrap:wrap;align-items:center;gap:0 10px;padding:clamp(12px,2vw,24px) 0 0;color:#8E87B5}
.container--narrow:has(>.breadcrumb+.page-head)>.breadcrumb a{color:var(--sur-nuit-2)}
.container--narrow:has(>.breadcrumb+.page-head)>.breadcrumb a:hover,.container--narrow:has(>.breadcrumb+.page-head)>.breadcrumb [aria-current=page]{color:#FFFFFF}
.container--narrow:has(>.breadcrumb+.page-head)>.page-head{padding-block:4px clamp(44px,5vw,64px);margin-bottom:clamp(32px,4vw,48px);color:#FFFFFF}
.container--narrow:has(>.breadcrumb+.page-head)>.page-head .kicker,.container--narrow:has(>.breadcrumb+.page-head)>.page-head .lead{color:var(--sur-nuit-2)}
/* Pages sans tête (parcours d'inscription, compte, paiement) : le titre ne colle jamais à l'en-tête ni à la bannière */
main>.container:first-child>h1:first-child,main>.messages+.container>h1:first-child{margin-top:clamp(32px,5vw,64px)}
/* …ni quand la page commence par autre chose qu'un titre (étapes du paiement, « ← Mes groupes » du portail professeures) */
body:not(.bo) main>.container:first-child:not(.detail):not(:has(>h1:first-child)):not(:has(>.breadcrumb:first-child)){padding-top:clamp(32px,5vw,64px)}
body:not(.bo) main>.messages+.container:not(.detail):not(:has(>h1:first-child)):not(:has(>.breadcrumb:first-child)){padding-top:16px}
/* Microtextes du cahier (§5.3) employés comme titres : phrase lisible, jamais un titre géant sur 3-4 lignes */
.h-microtexte,.two-ways .way>h2,.page-narrow:has(>form[action$="/connexion/"])>h1:first-child{font-family:var(--f-texte);font-stretch:100%;font-size:1.3333rem;font-weight:700;line-height:1.3;letter-spacing:0;word-spacing:0}
.page-narrow:has(>form[action$="/connexion/"])>h1:first-child{font-size:clamp(1.4444rem,1.3rem + .4vw,1.6667rem);line-height:1.3}
.org-block h2,.dash-grid .card h2{font-size:clamp(1.3rem,1.15rem + .5vw,1.6rem)}
.messages{padding-top:16px}
.page-narrow>h1,.page-medium>h1,.page-wide>h1{font-size:clamp(2.1rem,1.5rem + 1.8vw,3rem)}
.page-head{padding-block:clamp(32px,5vw,64px) clamp(20px,3vw,32px)}
.page-head h1{margin:0;font-size:clamp(2.6rem,1.4rem + 4vw,5rem);font-stretch:74%;line-height:.96}
.page-head .lead{margin-top:18px}
.page-head--inline{padding-block:12px 24px}
.page-top{position:relative;overflow:hidden;background:var(--nuit);color:var(--sur-nuit);padding-block:clamp(24px,3.5vw,44px) clamp(44px,5vw,64px)}
.page-top--overlap{padding-bottom:clamp(84px,8vw,112px)}
.page-top::before{content:"";position:absolute;right:-10%;top:-60%;width:55%;height:180%;background:radial-gradient(closest-side,rgba(232,188,69,.20),rgba(232,188,69,0));pointer-events:none}
.page-top>.container{position:relative}
.page-top .kicker,.page-top .lead,.page-top .page-head__sub,.detail__head .kicker{color:var(--sur-nuit-2)}
.page-top .lead{max-width:36em}
.page-top a:not(.btn),.detail__head a:not(.btn){color:#FFFFFF}
.page-top .breadcrumb,.detail__head .breadcrumb{padding:0;margin:-8px 0 6px}
.page-top .breadcrumb ol,.detail__head .breadcrumb ol{color:var(--sur-nuit-2)}
.page-top .breadcrumb a,.detail__head .breadcrumb a{color:var(--sur-nuit-2)}
.page-top .breadcrumb a:hover,.detail__head .breadcrumb a:hover{color:#FFFFFF}
.page-top .breadcrumb li+li::before,.detail__head .breadcrumb li+li::before{color:#8E87B5}
.page-top .breadcrumb [aria-current=page],.detail__head .breadcrumb [aria-current=page]{color:#FFFFFF}
.page-top .badge--soir,.detail__head .badge--soir{box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.55)}
.page-top .badge--type,.page-top .badge--muted,.detail__head .badge--type{background:var(--nuit-2);color:#FFFFFF;box-shadow:inset 0 0 0 1px var(--nuit-3)}
.page-head__row{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:24px 32px}
.page-head__sub{margin:16px 0 0;font-size:clamp(1.0556rem,1rem + .3vw,1.1667rem)}
.page-head__stats{display:flex;flex-wrap:wrap;gap:10px;margin:0;padding:0;list-style:none}
.stat{min-width:120px;padding:12px 18px;border-radius:16px;background:var(--nuit-2);border:1px solid var(--nuit-3)}
.stat b{display:block;font-family:var(--f-titre);font-stretch:78%;font-weight:800;font-size:1.9rem;line-height:1}
.stat span{font-size:.8889rem;color:var(--sur-nuit-2)}
.page-head--boucherville::before,.page-top--boucherville::before{background:radial-gradient(closest-side,rgba(91,134,245,.26),rgba(91,134,245,0))}
.page-head--varennes::before,.page-top--varennes::before{background:radial-gradient(closest-side,rgba(232,188,69,.26),rgba(232,188,69,0))}
.meta-pills{list-style:none;display:flex;flex-wrap:wrap;gap:10px;margin:22px 0 0;padding:0}
.meta-pills li{display:inline-flex;align-items:center;gap:9px;min-height:40px;padding:4px 16px;border-radius:var(--pill);background:var(--nuit-2);border:1px solid var(--nuit-3);font-size:.9444rem;font-weight:600;color:#FFFFFF}
.meta-pills .icon{color:var(--soir-icone)}
.meta-pills .dot{background:#5A5380}
.meta-pills .dot--on{background:var(--rose)}

/* ---------- Accueil : héros nuit ---------- */
.hero{position:relative;overflow:hidden;background:var(--nuit);color:var(--sur-nuit);padding-block:clamp(28px,4.5vw,56px) clamp(56px,7vw,96px)}
.hero::before{content:"";position:absolute;right:-12%;bottom:-40%;width:70%;height:90%;background:radial-gradient(closest-side,rgba(91,134,245,.30),rgba(91,134,245,0));pointer-events:none}
.hero__inner{position:relative;display:grid;grid-template-columns:minmax(0,1fr);gap:24px;align-items:center}
.hero__inner>*{min-width:0}
.hero__text{min-width:0}
.display{margin:26px 0 24px;max-width:none;font-size:clamp(2.7rem,1.2rem + 3.6vw,4.75rem);font-stretch:74%;font-weight:800;line-height:.95;letter-spacing:-.008em;word-spacing:.06em;color:#FFFFFF;text-wrap:balance}
.display__l{display:inline}
@media (min-width:980px){.display__l{display:block}}
.hero__lead{max-width:31em;margin:0 0 32px;font-size:clamp(1.1111rem,1rem + .4vw,1.2222rem);line-height:1.5;color:var(--sur-nuit-2)}
.hero__actions{display:flex;flex-wrap:wrap;gap:14px;margin:0}
.hero__note{display:flex;align-items:flex-start;gap:10px;max-width:30em;margin:24px 0 0;font-size:1rem;color:var(--sur-nuit-2)}
.hero__note .icon{color:#7FE0B0;margin-top:.2em}
.hero__media{position:relative;margin:16px 0 0}
.hero__media::before{content:"";position:absolute;inset:10% -7% -7% 12%;border-radius:48px;background:var(--grad);filter:blur(56px);opacity:.5;pointer-events:none}
.hero__media img{position:relative;width:100%;height:auto;aspect-ratio:5/4;object-fit:cover;object-position:40% 50%;border-radius:var(--radius-xl)}
.photo-tag{position:absolute;left:18px;bottom:18px;display:inline-flex;align-items:center;gap:10px;max-width:calc(100% - 36px);padding:10px 16px;border-radius:var(--pill);background:#FFFFFF;color:var(--ink);font-size:.9444rem;font-weight:700;line-height:1.25;box-shadow:0 6px 20px rgba(10,6,30,.2)}
.photo-tag .pulse::after{display:none}
/* Annonce de l'accueil : puce de 48 px dans le héros (toute la puce est le lien) */
.hero__announce{display:flex;max-width:100%;grid-column:1/-1}
.hero__announce+.hero__text .display{margin-top:0}
.hero__announce .announcement__text--chip strong{font-weight:800}
.announcement__dot{color:var(--sur-nuit-2)}
.hero__announce .announcement{background:transparent;border:0;font-size:1rem}
.hero__announce .announcement__inner{display:block;min-height:0;padding:0;max-width:none;width:auto;margin:0;text-align:left}
.hero__announce .announcement__link,.hero__status{display:inline-flex;align-items:center;flex-wrap:nowrap;gap:12px;max-width:100%;min-height:48px;margin:0;padding:6px 20px 6px 16px;border-radius:var(--pill);background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.18);color:#FFFFFF;text-align:left;line-height:1.3;transition:background-color .18s var(--ease),border-color .18s var(--ease)}
.hero__announce .announcement__link:hover{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.34)}
.hero__announce .announcement__text--chip{min-width:0;font-weight:650}
/* Puce : le libellé du lien reste lu par les lecteurs d'écran; à l'écran, une flèche dans une pastille blanche */
.hero__announce .announcement__sep{display:none}
.hero__announce .announcement__cta{flex:none;display:grid;place-items:center;width:34px;height:34px;margin-right:-12px;border-radius:50%;background:#FFFFFF;color:var(--nuit)}
.hero__announce .announcement__cta-label{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.hero__announce .announcement__cta .icon{width:18px;height:18px}
.hero__announce .announcement__link{padding:6px 18px 6px 16px}
.hero__announce .announcement__sep{width:1px;height:18px;background:rgba(255,255,255,.28)}
.hero__announce .announcement--important .announcement__link{background:#FFE9C9;border-color:#FFE9C9;color:var(--ink)}
.hero__status{font-size:1rem}
.hero__status strong{font-weight:700}

/* Entrées « Cours de jour » / « Cours du soir » */
.moments{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}
.city-card{position:relative;display:flex;flex-direction:column;color:var(--ink);text-decoration:none}
.city-card:hover{color:var(--ink)}
.city-card h3,.city-card h4{margin:0}
.city-card p{margin:0}
.city-card .city-card__cta{display:grid;place-items:center;flex:none;width:60px;height:60px;min-height:60px;border-radius:50%;background:var(--ink);color:#FFFFFF;transition:transform .2s var(--ease)}
.city-card .city-card__cta .icon{width:24px;height:24px}
.city-card--boucherville .city-card__cta{background:var(--boucherville)}
.city-card--varennes .city-card__cta{background:var(--varennes)}
.city-card:hover .city-card__cta{transform:translateX(4px)}
.moment-card{overflow:hidden;border-radius:var(--radius-xl);background:var(--brume);transition:transform .22s var(--ease),box-shadow .22s var(--ease)}
.moment-card--soir{background:var(--nuit);color:#FFFFFF}
.moment-card--soir:hover{color:#FFFFFF}
.moment-card:hover{transform:translateY(-3px);box-shadow:0 16px 40px rgba(20,15,45,.16)}
.moment-card__photo{position:relative;display:block;aspect-ratio:16/9;overflow:hidden;background:var(--line)}
.moment-card__photo img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ease)}
.moment-card:hover .moment-card__photo img{transform:scale(1.03)}
.moment-card__body{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:6px 20px;padding:26px 30px 30px}
.moment-card__k{grid-column:1/-1;display:inline-flex;align-items:center;gap:10px;font-weight:700;font-size:1rem;color:var(--muted)}
.moment-card__k .icon{width:22px;height:22px}
.moment-card--jour .moment-card__k .icon{color:var(--jour-icone)}
.moment-card--soir .moment-card__k{color:var(--sur-nuit-2)}
.moment-card--soir .moment-card__k .icon{color:var(--soir-icone)}
.moment-card__head{display:flex;flex-direction:column;gap:6px;min-width:0}
.moment-card h3,.moment-card h4{font-size:clamp(2rem,1.3rem + 1.6vw,2.75rem);font-stretch:76%;font-weight:800;line-height:1}
.moment-card__text{color:var(--muted);font-size:1.0556rem}
.moment-card__count{font-weight:700;color:var(--ink)}
.moment-card--soir .moment-card__text{color:var(--sur-nuit-2)}
.moment-card--soir .moment-card__count{color:#FFFFFF}
.moment-card--soir .city-card__cta{background:#FFFFFF;color:var(--nuit)}
.city-card__org{display:block;font-size:.9444rem;font-weight:700;color:var(--muted);margin-bottom:4px}

/* Entrées Boucherville / Varennes (grandes lettres B et V en dégradé, clin d'œil au site du Club) */
.cities-head{display:flex;align-items:center;gap:18px;margin:56px 0 22px;font-size:1.5rem;font-stretch:84%;font-weight:750}
.cities-head::after{content:"";flex:1;height:1px;background:var(--line)}
.cities-lead{margin:-10px 0 22px;color:var(--muted);max-width:44em}
.cities{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
.city-card--boucherville,.city-card--varennes{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:26px;padding:24px 28px 24px 24px;border-radius:var(--radius-xl);border:1px solid var(--line);background:var(--surface);transition:border-color .2s var(--ease),transform .22s var(--ease),box-shadow .22s var(--ease)}
.city-card--boucherville:hover,.city-card--varennes:hover{transform:translateY(-3px);box-shadow:0 16px 40px rgba(20,15,45,.1)}
.city-card--boucherville:hover{border-color:var(--boucherville)}
.city-card--varennes:hover{border-color:var(--varennes)}
.city-card__letter{display:grid;place-items:center;width:124px;height:124px;border-radius:26px;background:var(--nuit);font-family:var(--f-titre);font-stretch:70%;font-weight:900;font-size:6.8rem;line-height:1;user-select:none}
.city-card__letter span{display:block;transform:translateY(5%);background:var(--grad-b);-webkit-background-clip:text;background-clip:text;color:transparent}
.city-card--varennes .city-card__letter span{background:var(--grad-v);-webkit-background-clip:text;background-clip:text}
.city-card__top{display:flex;flex-direction:column;min-width:0}
.city-card__name{display:block;margin:0!important;font-family:var(--f-titre);overflow-wrap:normal;word-break:keep-all;font-size:clamp(2rem,1.5rem + 1.3vw,2.5rem);font-stretch:78%;font-weight:800;line-height:1}
.city-card__count{display:block;margin-top:8px;color:var(--muted);font-size:1rem}
.tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-top:24px}
.tile{display:flex;align-items:center;gap:18px;min-height:88px;padding:18px 24px;border-radius:var(--radius-lg);background:var(--brume);color:var(--ink);text-decoration:none;transition:background-color .18s var(--ease),transform .22s var(--ease)}
.tile:hover{background:#ECE8F7;color:var(--ink);transform:translateY(-2px)}
.tile__icon{display:grid;place-items:center;flex:none;width:52px;height:52px;border-radius:50%;background:var(--surface);color:var(--ink)}
.tile__icon .icon{width:24px;height:24px}
.tile__body{display:block;flex:1;min-width:0}
.tile h3{margin:0;font-size:1.4rem;font-stretch:84%}
.tile__title{display:block;margin:0;font-size:1.4rem;font-stretch:84%}
.tile__text{display:block;margin-top:2px;font-size:1rem;color:var(--muted)}
.tile__arrow{flex:none;width:24px;height:24px;transition:transform .18s var(--ease)}
.tile:hover .tile__arrow{transform:translateX(3px)}
.type-links{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.type-links__label{font-weight:700;color:var(--muted);margin-right:2px}
.type-links a{display:inline-flex;align-items:center;gap:8px;min-height:48px;padding:0 18px;border-radius:var(--pill);background:var(--surface);border:1px solid var(--line-strong);color:var(--ink);font-weight:600;text-decoration:none}
.type-links a:hover{border-color:var(--ink);color:var(--ink)}

/* Comment ça marche, en 3 étapes (bande nuit) */
.howto{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.howto li{padding:30px 28px 32px;border-radius:var(--radius-xl);background:var(--nuit-2);border:1px solid var(--nuit-3)}
.howto__n{display:block;width:max-content;margin-bottom:20px;font-family:var(--f-titre);font-stretch:70%;font-weight:900;font-size:5.2rem;line-height:.85;background:var(--grad);background-size:300% 100%;-webkit-background-clip:text;background-clip:text;color:transparent}
.howto li:nth-child(1) .howto__n{background-position:0 0}
.howto li:nth-child(2) .howto__n{background-position:50% 0}
.howto li:nth-child(3) .howto__n{background-position:100% 0}
.howto h3{margin:0 0 12px;font-size:1.75rem;font-stretch:80%}
.howto p{margin:0;color:var(--sur-nuit-2)}
.howto--compact{grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr))}
.howto--compact .howto__n{font-size:3.4rem}
.sg-demo .howto li{background:var(--nuit)}
.dates{display:grid;grid-template-columns:minmax(0,1fr);gap:24px;margin-top:44px;padding-top:32px;border-top:1px solid var(--nuit-3);align-items:start}
.dates__head{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px}
.dates__head h3{margin:0;font-size:1.6rem;font-stretch:82%}
.dates__lead{margin:-12px 0 0;color:var(--sur-nuit-2);font-size:1rem}
.dates__session{display:inline-flex;align-items:center;min-height:32px;margin:0;padding:0 12px;border-radius:var(--pill);background:var(--nuit-2);border:1px solid var(--nuit-3);color:#FFFFFF;font-weight:700;font-size:.9444rem}
.dates__next{grid-column:1/-1;margin:0;color:var(--sur-nuit-2);font-size:1rem}
.dates__next strong{color:#FFFFFF}
.timeline{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr));gap:20px}
.timeline li{position:relative;display:flex;flex-direction:column;gap:4px;padding:2px 0 2px 18px;border-left:3px solid var(--rose)}
.timeline li.is-past{border-left-color:var(--nuit-3)}
.timeline__dot{display:none}
.timeline__label{order:2;font-size:1rem;color:var(--sur-nuit-2)}
.timeline__when{order:1;font-family:var(--f-titre);font-stretch:84%;font-size:1.35rem;font-weight:750;line-height:1.15;color:#FFFFFF}
.timeline li.is-past .timeline__when{color:var(--sur-nuit-2)}
.dates__past{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;font-size:.9444rem;color:var(--sur-nuit-2)}
.dates__past-k{margin:0;font-weight:700}
.dates__past ul{display:flex;flex-wrap:wrap;gap:4px 0;margin:0;padding:0;list-style:none}
.dates__past li{white-space:nowrap}
.dates__past li+li::before{content:"·";content:"·" / "";margin:0 10px;color:#8E87B5}

/* Aide : Valérie et Robert */
.help{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:56px;align-items:center}
.help__intro h2{margin:0;font-size:clamp(2.1rem,1.2rem + 2.6vw,3.6rem);font-stretch:78%;line-height:1}
.help__intro h2 span{display:block}
.help__text{margin:18px 0 22px;color:var(--muted);font-size:clamp(1.0556rem,1rem + .3vw,1.1667rem);max-width:28em}
.help-cards{display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr))}
.help-cards--3{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr))}
.help-card{display:flex;flex-direction:column;align-items:flex-start;gap:14px;padding:24px;border-radius:var(--radius-xl);background:var(--surface);border:1px solid var(--line)}
.help-card--soft,.help-card.card--soft{background:var(--brume);border-color:transparent}
.help-card__who{display:flex;align-items:center;gap:14px}
.help-card__name{margin:0;font-size:1.1667rem;font-weight:700;line-height:1.2}
.help-card strong{font-size:1.1111rem}
.help-card a{display:inline-flex;align-items:center;gap:10px;min-height:48px;font-weight:700;text-decoration:none;color:var(--ink)}
.help-card a:hover{text-decoration:underline}
.help-card .btn,.help-card__phone{align-self:stretch;justify-content:flex-start;min-height:56px;padding:0 20px;border-radius:var(--pill);background:var(--brume);border-color:var(--brume);font-family:var(--f-titre);font-stretch:88%;font-size:1.3333rem;font-weight:750;letter-spacing:.01em;text-decoration:none}
.help-card .btn:hover,.help-card__phone:hover{background:#E9E5F6;border-color:#E9E5F6;text-decoration:none}
.help-card__mail{min-height:44px!important;font-size:.9444rem;font-weight:500!important;color:var(--muted)!important;text-decoration:underline!important;overflow-wrap:anywhere}
/* Anneau neutre : Valérie et Robert répondent pour les deux villes (aucune couleur de ville sans le nom écrit) */
.avatar{position:relative;display:grid;place-items:center;flex:none;width:56px;height:56px;border-radius:50%;background:var(--nuit);color:#FFFFFF;font-family:var(--f-titre);font-stretch:80%;font-weight:800;font-size:1.5rem;box-shadow:0 0 0 3px #FFFFFF,0 0 0 5px var(--lilas)}
.avatar--photo{object-fit:cover;background:var(--surface)}
.avatar--varennes{box-shadow:0 0 0 3px #FFFFFF,0 0 0 5px var(--lilas)}

.media-split{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s-6);align-items:center}
.media-split>*{min-width:0}
.media-split img{border-radius:var(--radius-xl)}
@media (min-width:900px){.media-split{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.media-split--reverse>*:first-child{order:2}}

/* ---------- Catalogue : filtres (carte blanche posée sur le bloc nuit) et puces ---------- */
.filters--catalog{position:relative;z-index:2;margin:-64px 0 16px;padding:22px 24px 24px;background:var(--surface);border-radius:var(--radius-xl);box-shadow:0 18px 50px rgba(20,15,45,.14),0 0 0 1px var(--line)}
.filters__title{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin:0 0 16px;font-size:1.3333rem;font-stretch:84%;font-weight:750}
.filters__hint{font-family:var(--f-texte);font-size:.9444rem;font-weight:500;color:var(--muted)}
.filters__row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:18px 22px}
.seg{border:0;margin:0;padding:0;min-width:0}
.seg legend,.more-filters__panel legend,.more-filters__panel .field>label{display:block;padding:0;margin-bottom:8px;font-size:.8889rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.seg__track{display:inline-flex;flex-wrap:wrap;gap:2px;padding:4px;border-radius:var(--pill);background:var(--brume);box-shadow:inset 0 0 0 1px var(--border)}
.seg input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.seg label{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 18px;border-radius:var(--pill);font-weight:650;font-size:1rem;color:var(--ink);cursor:pointer;white-space:nowrap;transition:background-color .15s var(--ease),color .15s var(--ease)}
.seg label:hover{background:rgba(20,15,45,.07)}
.seg label .icon{width:20px;height:20px}
.seg__hint{font-size:.8889rem;font-weight:400}
.seg input:checked+label{background:var(--ink);color:#FFFFFF}
.seg input:checked+label .dot{box-shadow:0 0 0 2px #FFFFFF}
.seg input:focus-visible+label{outline:var(--focus);outline-offset:2px}
.pill--jour .icon{color:var(--jour-icone)}
.seg input:checked+label.pill--jour .icon{color:#FFB98A}
.pill--soir .icon{color:#5B45C9}
.seg input:checked+label.pill--soir .icon{color:var(--soir-icone)}
.more-filters{min-width:0}
.more-filters>summary{list-style:none;display:inline-flex;align-items:center;gap:10px;min-height:56px;padding:0 20px;border-radius:var(--pill);border:2px solid var(--border);background:var(--surface);font-weight:650;font-size:1rem;cursor:pointer}
.more-filters>summary::-webkit-details-marker{display:none}
.more-filters>summary::marker{content:""}
.more-filters>summary:hover{border-color:var(--ink)}
.more-filters__chevron{transition:transform .2s var(--ease)}
.more-filters[open]>summary{border-color:var(--ink)}
.more-filters[open] .more-filters__chevron{transform:rotate(180deg)}
.more-filters[open]{flex-basis:100%;order:3}
.more-filters__panel{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));gap:16px 22px;align-items:end;margin-top:14px;padding:20px 22px;border-radius:var(--radius);background:var(--brume)}
.more-filters__panel .field{margin:0;max-width:none}
.more-filters__panel select{max-width:none}
/* Case « Seulement les cours avec des places » : libellé normal, pas le style « titre » des autres champs (règle ci-dessus) */
.more-filters__panel .field>label.check{display:flex;margin:0;text-transform:none;letter-spacing:0;font-size:1rem;font-weight:600;color:var(--ink)}
.filters__precise-moment{grid-column:1/-1}
.filters__places .check{min-height:52px;padding:0}
@media (min-width:640px){.more-filters__panel .filters__lieu{grid-column:span 2}}   /* noms de bâtiments longs (« Centre multifonctionnel Francine-Gadbois ») */
.filters__actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.filters.is-instant .filters__actions{display:none}   /* filtrage immédiat (app.js) : plus de bouton */
/* Case « Nom du cours » : même titre que les autres filtres, aussi haute que les boutons voisins */
.filters__search{margin:0;flex:1 1 220px;max-width:320px}
.filters__search>label{display:block;padding:0;margin-bottom:8px;font-size:.8889rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.filters__search input{min-height:56px;max-width:none}
.filters__summary{font-weight:700;margin:var(--s-3) 0}
.filters__precise{margin:12px 0 6px;color:var(--muted);font-size:.9444rem}
.chips{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:0 0 var(--s-4);padding:0;list-style:none}
.chip{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 8px 0 16px;border-radius:var(--pill);background:var(--brume);color:var(--ink);font-weight:650;font-size:.9444rem;text-decoration:none;box-shadow:inset 0 0 0 1px var(--line-strong)}
.chip:hover{background:#ECE8F7;color:var(--ink)}
.chip__x{display:inline-grid;place-items:center;width:30px;aspect-ratio:1;border-radius:50%;background:var(--surface);font-size:1.1rem;line-height:1}
.chips__clear{display:inline-flex;align-items:center;min-height:44px;padding:0 8px;font-weight:700;font-size:.9444rem}
.results{padding-top:20px}
.results-count{margin:8px 0 var(--s-5);font-size:1.0556rem;color:var(--muted)}
.results-count strong{color:var(--ink)}
.results .notice{margin-bottom:var(--s-5)}
.empty{padding:var(--s-7) var(--s-6);border-radius:var(--radius-xl);background:var(--brume);text-align:center}
.empty h2,.empty h3{margin-bottom:var(--s-2)}
.assist{display:flex;flex-wrap:wrap;align-items:center;gap:16px 20px;margin-top:56px;padding:24px 28px;border-radius:var(--radius-xl);background:var(--nuit);color:#FFFFFF}
.assist__icon{display:grid;place-items:center;flex:none;width:52px;height:52px;border-radius:50%;background:var(--nuit-2);color:var(--corail)}
.assist__icon .icon{width:22px;height:22px}
.assist__text{flex:1 1 320px;margin:0;color:var(--sur-nuit-2)}
.assist__text strong{color:#FFFFFF}
.assist__links{display:flex;flex-wrap:wrap;gap:10px}
.assist .btn{font-family:var(--f-titre);font-stretch:88%;font-size:1.2222rem;font-weight:750}

/* ---------- Sections par ville + carte de groupe (§5.1.3 : 9 informations + un bouton) ---------- */
.city-section{margin-top:clamp(36px,4vw,52px)}
.city-section__head{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;margin-bottom:22px}
.city-section__icon{display:grid;place-items:center;flex:none;width:52px;height:52px;border-radius:50%;background:var(--nuit);font-family:var(--f-titre);font-stretch:72%;font-weight:900;font-size:2rem;line-height:1}
.city-section__icon span{background:var(--grad-b);-webkit-background-clip:text;background-clip:text;color:transparent}
.city-section--varennes .city-section__icon span{background:var(--grad-v);-webkit-background-clip:text;background-clip:text}
.city-section__head h2,.city-section__head h3{margin:0;font-size:clamp(1.9rem,1.3rem + 1.4vw,2.5rem);font-stretch:78%}
.city-section__name{display:inline-flex;flex-wrap:wrap;align-items:center;gap:12px;max-width:100%;overflow-wrap:anywhere}
.city-section__count{font-family:var(--f-texte);font-size:1rem;font-weight:500;color:var(--muted)}
.city-section__org{margin:0 0 0 auto;color:var(--muted);font-size:1rem}
.city-section__org a{display:inline-flex;align-items:center;min-height:48px;font-weight:700}
.cards{list-style:none;margin:0;padding:0;display:grid;gap:24px;grid-template-columns:repeat(3,minmax(0,1fr))}
.cards>li{display:flex;min-width:0}
.cards>li>*{flex:1;min-width:0}
.group-card{position:relative;display:flex;flex-direction:column;height:100%;padding:24px 24px 20px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);transition:border-color .2s var(--ease),box-shadow .22s var(--ease),transform .22s var(--ease)}
.group-card:hover{border-color:#BDB6D3;box-shadow:0 14px 36px rgba(20,15,45,.09);transform:translateY(-2px)}
.group-card--boucherville{box-shadow:inset 0 4px 0 var(--boucherville)}
.group-card--varennes{box-shadow:inset 0 4px 0 var(--varennes)}
.group-card--boucherville:hover{box-shadow:inset 0 4px 0 var(--boucherville),0 14px 36px rgba(20,15,45,.09)}
.group-card--varennes:hover{box-shadow:inset 0 4px 0 var(--varennes),0 14px 36px rgba(20,15,45,.09)}
.group-card--new{border:2px solid transparent;background:linear-gradient(var(--surface),var(--surface)) padding-box,var(--grad) border-box;padding:23px 23px 19px}
.group-card--new:hover{border-color:transparent}
.group-card__body{display:flex;flex-direction:column;flex:1}
.group-card__top{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.group-card__title{margin:10px 0 0;font-size:1.6rem;font-stretch:80%;font-weight:800;line-height:1.05}
.group-card__title a{display:inline-flex;align-items:center;min-height:48px;color:var(--ink);text-decoration:none}
.group-card__title a:hover{text-decoration:underline;text-decoration-thickness:2px}
.group-card__when{margin:0 0 16px;font-family:var(--f-titre);font-stretch:86%;font-weight:700;font-size:1.3333rem;line-height:1.2;color:var(--ink)}
.group-card__when .sep{color:var(--muted);font-weight:600}
.group-card__when .icon{color:var(--muted)}
.group-card__when--xl{font-size:1.5rem}
.group-card__facts{display:grid;gap:9px;margin:0 0 4px;padding:16px 0 0;border-top:1px solid var(--line);font-size:1rem;line-height:1.4}
.group-card__facts>div{display:flex;flex-wrap:wrap;column-gap:14px;align-items:baseline}   /* texte agrandi (200 %) : la valeur passe sous l'étiquette au lieu d'être coupée au milieu des mots */
.group-card__facts dt{flex:0 0 4em;color:var(--muted);font-weight:500}
.group-card__facts dd{flex:1 1 9em;min-width:0;margin:0;font-weight:650;color:var(--ink)}
.group-card__facts a{color:inherit;text-decoration:none}
.group-card__facts a:hover{text-decoration:underline}
.group-card__room{display:block;font-weight:500;color:var(--muted)}
.group-card__session{display:block;margin-top:2px;font-size:.8889rem;font-weight:500;color:var(--muted)}
.group-card__note{margin:12px 0 0;padding:8px 12px;border-radius:var(--radius-sm);background:var(--brume);font-size:.9444rem;color:var(--ink-soft)}
.group-card__foot{display:flex;flex-direction:column;gap:14px;margin-top:auto;padding-top:16px}
.group-card__row{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;padding-top:16px;border-top:1px solid var(--line)}
.group-card__price{display:flex;flex-direction:column;margin:0;line-height:1}
.group-card__price strong{font-family:var(--f-titre);font-stretch:80%;font-size:2.2rem;font-weight:800;white-space:nowrap}
.group-card__price span{margin-top:6px;font-size:.8889rem;color:var(--muted)}
.group-card__avail{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0}
.group-card__avail .badge,.cta-panel__avail .badge{white-space:normal;min-height:34px}
.group-card__avail .badge--ok::before,.group-card__avail .badge--warn::before,.group-card__avail .badge--full::before,.cta-panel__avail .badge--ok::before,.cta-panel__avail .badge--warn::before,.cta-panel__avail .badge--full::before{content:"";flex:none;width:9px;height:9px;border-radius:50%;background:currentColor}
.group-card__hint{margin:0;font-size:.9444rem;color:var(--muted)}
.group-card__actions{display:flex;flex-wrap:wrap;align-items:center;gap:14px}
.group-card__actions .btn{flex:1 1 auto}
.group-card__actions .link-arrow{flex:none;font-size:1rem}
.group-card__code{color:var(--muted);font-size:.8889rem}

/* ---------- Logos des deux organismes ---------- */
.city-logo{margin:0 0 var(--s-5)}
.city-logo .brand-plate img{height:48px}

/* ---------- Fiches : cours, groupe, lieu ---------- */
.detail-hero{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s-6);align-items:center}
.detail-hero>*{min-width:0}
.detail-hero img{max-width:100%;height:auto;border-radius:var(--radius-xl)}
.detail-hero__meta{display:flex;flex-wrap:wrap;gap:8px;margin:var(--s-4) 0}
.detail-hero__meta .badge,.detail-hero .cluster .badge{white-space:normal;max-width:100%}
@media (min-width:900px){.detail-hero{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}}
.detail-hero h1{margin:4px 0 0;font-size:clamp(2.6rem,1.4rem + 4vw,5rem);font-stretch:74%;line-height:.96}
.course-hero__media{position:relative}
.course-hero__media::before{content:"";position:absolute;inset:10% -6% -6% 12%;border-radius:40px;background:var(--grad);filter:blur(52px);opacity:.42;pointer-events:none}
.course-hero__media img{position:relative;width:100%;aspect-ratio:4/3;object-fit:cover}
.course-hero__cta{margin:var(--s-5) 0 0}
.course-body{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:var(--s-7);align-items:start;padding-top:clamp(40px,5vw,64px)}
.course-body .prose h2:first-child{margin-top:0}
.course-body__aside .card h3{display:flex;align-items:center;gap:10px;font-size:1.3333rem}
.course-body__aside .card h3 .icon{color:var(--muted)}
.related{margin-top:var(--s-7);padding:28px 32px;border-radius:var(--radius-xl);background:var(--brume)}
.related h2{font-size:1.8rem;margin-bottom:var(--s-4)}
.photo--left img{object-position:left center}
.photo--right img{object-position:right center}
.course-hero__media.photo--contain img,.detail__photo.photo--contain img{object-fit:contain;background:#FFFFFF}
.prose h2{font-size:clamp(1.8rem,1.3rem + 1.2vw,2.4rem)}

/* Fiche d'un groupe : tête nuit pleine largeur, panneau d'inscription collant sur toute la hauteur, contenu */
.detail{display:grid;grid-template-columns:minmax(0,1fr) 400px;grid-template-areas:"head aside" "intro aside" "body aside";grid-template-rows:auto auto 1fr;gap:0 56px;align-items:start}
.detail__head{grid-area:head;position:relative;min-width:0;padding-block:clamp(20px,3vw,36px) clamp(48px,6vw,72px);background:var(--nuit);color:#FFFFFF;box-shadow:0 0 0 100vmax var(--nuit);clip-path:inset(0 -100vmax)}
.detail__aside{grid-area:aside;align-self:stretch;min-width:0;padding-top:clamp(28px,4vw,56px)}
.detail__intro{grid-area:intro;min-width:0}
.detail__body{grid-area:body;min-width:0}
.detail__badges{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 18px}
.detail__head h1{margin:0;font-size:clamp(2.6rem,1.4rem + 4vw,5rem);font-stretch:74%;line-height:.96}
.detail__when{display:flex;flex-wrap:wrap;gap:8px 28px;margin:22px 0 0;font-size:clamp(1.0556rem,1rem + .4vw,1.1667rem);color:#FFFFFF}
.detail__when>span{display:inline-flex;align-items:center;gap:10px}
.detail__when .icon{color:var(--soir-icone)}
.detail__lead{margin:clamp(28px,3.5vw,44px) 0 0;max-width:40em;font-size:clamp(1.0556rem,1rem + .3vw,1.1667rem);line-height:1.55;color:var(--ink-soft)}
.detail__lead a{color:var(--ink);font-weight:700}
.detail__photo{margin-top:clamp(36px,4vw,56px);border-radius:var(--radius-xl);overflow:hidden;aspect-ratio:16/9;background:var(--line)}
.detail__photo img{width:100%;height:100%;object-fit:cover}
.sticky-cta{position:sticky;top:24px}
.cta-panel{position:sticky;top:24px;padding:28px;background:var(--surface);border-radius:var(--radius-xl);box-shadow:0 22px 60px rgba(20,15,45,.16),0 0 0 1px var(--line)}
.cta-panel--varennes{box-shadow:0 22px 60px rgba(20,15,45,.16),0 0 0 1px var(--line)}
.cta-panel__price{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px}
.price{display:flex;flex-direction:column;margin:0;font-family:var(--f-titre);font-stretch:80%;font-size:3.2rem;font-weight:800;line-height:1}
.price small{margin-top:8px;font-family:var(--f-texte);font-size:.9444rem;font-weight:500;color:var(--muted)}
.cta-panel__code{display:inline-flex;align-items:center;min-height:32px;padding:0 12px;border-radius:var(--pill);background:var(--brume);font-size:.8889rem;font-weight:700;color:var(--ink-soft);white-space:nowrap}
.cta-panel__avail{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:20px 0 0}
.cta-panel__capacity{color:var(--muted);font-size:.9444rem}
.cta-panel__next{display:flex;gap:10px;align-items:flex-start;margin:14px 0 0;font-size:1rem;color:var(--ink-soft)}
.cta-panel__next .icon{margin-top:.2em;color:var(--muted)}
.cta-panel__state{margin:16px 0 0;font-size:1rem}
.cta-panel .btn{width:100%;margin-top:20px}
.cta-panel__hint{margin:10px 0 0;font-size:.9444rem;color:var(--muted)}
.cta-panel__notes{list-style:none;display:grid;gap:10px;margin:20px 0 0;padding:0;font-size:.9444rem;line-height:1.5;color:var(--ink-soft)}
.cta-panel__notes li{display:flex;gap:10px;align-items:flex-start}
.cta-panel__notes .icon{margin-top:.15em;color:var(--vert)}
.cta-panel__meta{margin-top:18px;padding-top:14px;border-top:1px solid var(--line);font-size:.9444rem;color:var(--muted)}
.cta-panel__meta p{margin:0}
.cta-panel__org{display:flex;gap:10px;align-items:baseline}
.cta-panel__call-title{margin:10px 0 0!important;color:var(--muted)}
.cta-panel__call{list-style:none;display:grid;gap:0;margin:2px 0 0;padding:0}
.cta-panel__call li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:0 12px}
.cta-panel__call-name{color:var(--ink-soft);font-weight:600}
.cta-panel__call a{display:inline-flex;align-items:center;gap:6px;min-height:44px;font-weight:700;color:var(--ink);white-space:nowrap}
.block{margin-top:clamp(48px,6vw,72px)}
.block--first{margin-top:clamp(36px,4vw,56px)}
.block h2{margin:0;font-size:clamp(1.8rem,1.3rem + 1.2vw,2.4rem)}
.block__intro{margin:10px 0 0;color:var(--muted);max-width:40em}
.block h2+.info-cards,.block__intro+.info-cards{margin-top:24px}
.facts{display:grid;gap:0;margin:24px 0 0}
.facts>div{min-width:0;display:grid;grid-template-columns:minmax(0,1fr);gap:6px;padding:18px 0;border-top:1px solid var(--line)}
.facts .icon{color:var(--muted);width:20px;height:20px}
.facts dt{display:flex;align-items:center;gap:10px;margin:0;font-size:.8889rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.facts dd{margin:0;font-size:1.1111rem;font-weight:650;line-height:1.35;color:var(--ink)}
.facts__more{display:block;margin-top:2px;font-size:1rem;font-weight:400;color:var(--muted)}
.facts__more .badge{margin-top:4px;white-space:normal}   /* « Complet — liste d'attente offerte » se replie (texte agrandi) */
.facts--2{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:40px}
.schedule{list-style:none;padding:0;margin:24px 0 0;display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(min(100%,178px),1fr))}
.schedule li,.schedule__item{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-height:82px;padding:14px 16px;border-radius:16px;background:var(--surface);border:1px solid var(--line)}
.schedule__n{font-size:.8889rem;font-weight:700;color:var(--muted)}
.schedule__date{font-family:var(--f-titre);font-stretch:84%;font-size:1.2222rem;font-weight:750;line-height:1.15;color:var(--ink);overflow-wrap:anywhere}
.schedule__note{display:block;font-size:.8889rem;color:var(--muted)}
.schedule .badge{margin-top:6px;white-space:normal;text-align:left}
.schedule li.is-past{background:var(--brume);border-color:transparent}
.schedule li.is-past .schedule__date{color:var(--muted)}
.schedule li.is-next,.schedule li.is-today{background:var(--ink);border-color:var(--ink)}
.schedule li.is-next .schedule__n,.schedule li.is-today .schedule__n{color:var(--sur-nuit-2)}
.schedule li.is-next .schedule__date,.schedule li.is-today .schedule__date{color:#FFFFFF}
.schedule li.is-next .schedule__note,.schedule li.is-today .schedule__note{color:var(--sur-nuit-2)}
.schedule li.is-off{background:var(--surface);border:2px dashed var(--line-strong)}
.schedule li.is-off .schedule__date{text-decoration:line-through;text-decoration-thickness:1.5px;color:var(--ink-soft)}
.schedule__legend{list-style:none;display:flex;flex-wrap:wrap;gap:8px 24px;margin:16px 0 0;padding:0;font-size:.9444rem;color:var(--muted)}
.schedule__legend li{display:inline-flex;align-items:center;gap:8px}
.schedule__swatch{display:inline-block;width:18px;height:18px;border-radius:6px;border:1px solid var(--line-strong);background:var(--surface)}
.schedule__swatch--past{background:var(--brume);border-color:var(--brume)}
.schedule__swatch--next{background:var(--ink);border-color:var(--ink)}
.schedule__swatch--off{border:2px dashed var(--line-strong)}
.schedule__off-note{margin:12px 0 0;font-weight:650;color:var(--ink-soft)}
.schedule__foot{margin:12px 0 0;font-size:.9444rem;color:var(--muted);max-width:52em}
.info-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.info-card{padding:26px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-xl)}
.info-card h3{margin:0 0 10px;font-size:1.5rem}
.info-card p{color:var(--ink-soft)}
.info-card .kicker{margin-bottom:12px}
.info-card .notice{margin-bottom:1em}
.map-links{display:flex;flex-wrap:wrap;gap:10px}
.teacher-card{display:block}
.teacher-card__who{display:flex;align-items:center;gap:16px;margin-bottom:12px}
.teacher-card__who h3{margin:0}
.teacher-card .avatar{width:64px;height:64px;border-radius:50%;object-fit:cover;flex:none;margin:0}
.teacher-card img{width:auto;height:auto;max-width:120px;max-height:140px;border-radius:12px;flex:none;margin:0}
/* Photo de la professeure ou du professeur : grande, sur presque toute la largeur de l'encadré, jamais recadrée */
.teacher-card .teacher-card__photo{display:block;width:100%;max-width:none;height:auto;max-height:520px;object-fit:contain;
  margin:4px 0 16px;border-radius:16px}
.others{list-style:none;display:grid;gap:0;margin:20px 0 0;padding:6px 22px;border-radius:var(--radius-xl);background:var(--brume)}
.others>li+li{border-top:1px solid var(--line)}
.other-slot{display:grid;grid-template-columns:8.5rem minmax(0,1fr) auto;grid-template-areas:"city when arrow" "city where arrow";align-items:center;gap:2px 16px;min-height:72px;padding:12px 0;color:var(--ink);text-decoration:none}
.other-slot:hover{color:var(--ink)}
.other-slot:hover .other-slot__when{text-decoration:underline}
.other-slot .badge{grid-area:city;justify-self:start}
.other-slot__when{grid-area:when;font-weight:700}
.other-slot__where{grid-area:where;font-size:.9444rem;color:var(--muted)}
.other-slot__arrow{grid-area:arrow;transition:transform .18s var(--ease)}
.other-slot:hover .other-slot__arrow{transform:translateX(3px)}

/* ---------- Pages ville ---------- */
.city-head__inner{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:var(--s-7);align-items:center}
.city-head__text{min-width:0}
.city-head__text h1{margin:0}
.city-head__text .lead{margin-top:18px}
.city-head__text .btn-row{margin-top:var(--s-5)}
.city-head__media{position:relative;min-width:0}
.city-head__media img{position:relative;width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--radius-xl)}
.city-head__letter{position:absolute;z-index:1;left:-6px;bottom:-6px;display:grid;place-items:center;width:104px;height:104px;border-radius:26px;background:var(--nuit);box-shadow:0 0 0 6px var(--nuit);font-family:var(--f-titre);font-stretch:70%;font-weight:900;font-size:6rem;line-height:1}
.city-head__letter span{display:block;transform:translateY(5%);background:var(--grad-b);-webkit-background-clip:text;background-clip:text;color:transparent}
.page-head--varennes .city-head__letter span{background:var(--grad-v);-webkit-background-clip:text;background-clip:text}
.city-places{margin-top:var(--s-6)}
.city-places__title{margin:0 0 12px;font-family:var(--f-texte);font-size:.8889rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--sur-nuit-2)}
.city-places__list{list-style:none;display:flex;flex-wrap:wrap;gap:10px;margin:0;padding:0}
.city-places__list a{display:inline-flex;align-items:center;gap:10px;min-height:48px;padding:0 16px;border-radius:var(--pill);background:var(--nuit-2);border:1px solid var(--nuit-3);color:#FFFFFF;font-weight:600;font-size:1rem;text-decoration:none}
.city-places__list a:hover{border-color:var(--sur-nuit-2);color:#FFFFFF}
.city-places__list .icon{color:var(--sur-nuit-2)}
.city-places__n{color:var(--sur-nuit-2);font-weight:500;font-size:.9444rem;white-space:nowrap}

/* ---------- Lieux ---------- */
.cards--places{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr))}
.place-card{position:relative;display:flex;flex-direction:column;gap:10px;height:100%;padding:24px 26px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);transition:border-color .18s var(--ease),box-shadow .22s var(--ease),transform .22s var(--ease)}
.place-card:hover{border-color:#BDB6D3;box-shadow:0 14px 36px rgba(20,15,45,.09);transform:translateY(-2px)}
.place-card--boucherville{box-shadow:inset 0 4px 0 var(--boucherville)}
.place-card--varennes{box-shadow:inset 0 4px 0 var(--varennes)}
.place-card__title{margin:0;font-size:1.5rem}
.place-card__title a{color:var(--ink);text-decoration:none}
.place-card__title a::after{content:"";position:absolute;inset:0;border-radius:inherit}
.place-card__title a:hover{text-decoration:underline}
.place-card__room{margin:0;font-weight:650;color:var(--ink-soft)}
.place-card__address{display:flex;gap:8px;align-items:flex-start;margin:0;color:var(--muted);font-size:1rem}
.place-card__address .icon{margin-top:.2em}
.place-card__meta{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 0}
.place-card__more{display:inline-flex;align-items:center;gap:6px;margin-top:auto;padding-top:8px;font-weight:700;color:var(--ink);text-decoration:underline;text-underline-offset:.25em}
.place-card--multi .place-card__title a::after{content:none}
.place-card--multi:hover{transform:none}
.place-card__rooms{list-style:none;margin:4px 0 0;padding:0;border-top:1px solid var(--line)}
.place-card__rooms li{border-bottom:1px solid var(--line)}
.place-card__rooms a{display:flex;align-items:center;gap:12px;min-height:52px;color:var(--ink);text-decoration:none;font-weight:650}
.place-card__rooms a:hover .place-card__room-name{text-decoration:underline;text-underline-offset:.2em}
.place-card__room-name{flex:1;min-width:0}
.place-card__n{font-size:.9444rem;font-weight:500;color:var(--muted);white-space:nowrap}
.place-card__rooms .icon{flex:none;color:var(--muted);transition:transform .18s var(--ease)}
.place-card__rooms a:hover .icon{transform:translateX(3px)}
.place-card__none{display:inline-flex;align-items:center;min-height:32px;font-size:.9444rem;color:var(--muted)}
.place-card--empty{background:var(--brume);border-color:transparent;box-shadow:none}
.place-card--empty .place-card__title a{color:var(--ink-soft)}
.place-summary ul,.check-list{list-style:none;padding:0;margin:0;display:grid;gap:10px}
.check-list li{position:relative;padding-left:28px}
.check-list li::before{content:"";position:absolute;left:4px;top:.5em;width:12px;height:12px;border-radius:50%;background:var(--grad)}
.location-body{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:var(--s-7);align-items:start;padding-top:clamp(36px,4vw,56px)}
.location-body .facts{margin-top:0}
.location-body .map-links{margin-top:24px}

/* ---------- FAQ, sommaire, textes ---------- */
.faq{padding-top:clamp(32px,4vw,48px)}
.faq h2{margin:var(--s-7) 0 var(--s-4);font-size:clamp(1.7rem,1.3rem + 1vw,2.2rem)}
.faq__group:first-of-type h2{margin-top:var(--s-5)}
.faq details{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);margin-bottom:10px;overflow:hidden}
.faq summary{list-style:none;cursor:pointer;display:flex;align-items:center;min-height:var(--tap);padding:16px 64px 16px 22px;position:relative;font-weight:700;font-size:1.0556rem;line-height:1.35}
.faq summary::-webkit-details-marker{display:none}
.faq summary::marker{content:""}
.faq summary::after{content:"+";position:absolute;right:16px;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--brume);color:var(--ink);font-size:1.3rem;font-weight:600;line-height:1}
.faq details[open] summary::after{content:"–";background:var(--ink);color:#FFFFFF}
.faq summary:hover{background:#FBFAFD}
.faq .faq__body{padding:2px 22px 20px;color:var(--ink-soft)}
.faq .faq__body p:last-child{margin-bottom:0}
.faq__help{margin-top:var(--s-7)}
.toc{background:var(--brume);border-radius:var(--radius-lg);padding:14px 26px;margin-bottom:var(--s-6)}
.toc ol{margin:0;padding-left:1.2em}
@media (min-width:760px){.faq .toc ol{columns:2;column-gap:40px}}
.toc li{margin:0}
.toc a{display:inline-flex;align-items:center;min-height:48px;font-weight:650}
.policy h2,.policy h3{scroll-margin-top:16px}
/* Tableaux des textes (politiques, FAQ) : ils se replient au lieu de défiler (aucune zone défilante sans clavier) */
.prose .table-wrap,.faq__body .table-wrap{overflow-x:visible}
.prose .table th,.prose .table td,.faq__body .table th,.faq__body .table td{overflow-wrap:anywhere;hyphens:auto}
@media (max-width:640px){.prose .table,.faq__body .table{font-size:.8889rem}.prose .table th,.prose .table td,.faq__body .table th,.faq__body .table td{padding:10px 8px}}
.policy-others ul{padding-left:1.2em}
.contact-layout{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:var(--s-6);align-items:start}
.card--form{padding:32px}
.page-body{padding-top:clamp(36px,4vw,56px)}

/* ---------- Crédits photos ---------- */
.credits-summary{max-width:60em;color:var(--ink-soft)}
.credits{list-style:none;margin:var(--s-5) 0 0;padding:0;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(min(100%,520px),1fr))}
.credit{display:grid;grid-template-columns:140px minmax(0,1fr);gap:16px;align-items:start;padding:16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}
.credit__thumb{width:140px;height:auto;aspect-ratio:3/2;object-fit:cover;border-radius:10px}
.credit__text p{margin:0}
.credit__title{font-weight:700}
.credit__line{margin-top:4px!important;font-size:.9444rem;color:var(--ink-soft)}
.credit__meta{margin-top:4px!important;font-size:.8889rem;color:var(--muted)}

/* ---------- Guide de style ---------- */
.sg-swatches{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(min(100%,190px),1fr))}
.sg-swatch{border-radius:var(--radius);border:1px solid var(--line);overflow:hidden;background:var(--surface)}
.sg-swatch__color{display:block;width:100%;height:72px}
.sg-swatch__meta{padding:10px 12px;font-size:.8889rem}
.sg-block{margin-bottom:var(--s-8)}
.sg-block>h2{padding-bottom:10px;border-bottom:1px solid var(--line)}
.sg-demo{padding:24px;border:1px dashed var(--line-strong);border-radius:var(--radius);background:var(--surface)}
.sg-demo--nuit{background:var(--nuit);border-color:var(--nuit-3);color:#FFFFFF}
.sg-photo{margin:0}
.sg-photo img{border-radius:var(--radius);aspect-ratio:3/2;object-fit:cover;width:100%}
.sg-photo figcaption{padding:8px 2px 0}

/* ---------- Pages d'erreur ---------- */
.error-page{padding-block:clamp(40px,6vw,72px) 0}
.error-page .help-cards{margin-top:var(--s-6)}
.error-page__foot{margin-top:var(--s-5)}
.site-header--minimal .site-header__inner{justify-content:flex-start}
.brand__logo--static{width:auto}

/* ---------- Utilitaires ---------- */
.mt-0{margin-top:0}.mb-0{margin-bottom:0!important}.mt-4{margin-top:var(--s-4)}.mt-5{margin-top:var(--s-5)}.mt-6{margin-top:var(--s-6)}.mb-5{margin-bottom:var(--s-5)}
.hidden{display:none!important}
.js .js-hide{display:none!important}
.no-js .no-js-hide{display:none!important}

/* ==========================================================================
   Adaptation
   ========================================================================== */
@media (min-width:980px){
  .hero__inner{grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);gap:32px 72px}
  .hero__media{margin:0}
  /* Puce d'annonce pleine largeur : nom de la session, message, séparateur et destination du lien écrits en clair */
  .hero__announce .announcement__sep{display:block;flex:none}
  .hero__announce .announcement__cta{width:auto;height:auto;margin:0;gap:6px;border-radius:0;background:transparent;color:#FFFFFF;display:inline-flex}
  .hero__announce .announcement__cta-label{position:static!important;width:auto;height:auto;overflow:visible;clip:auto;white-space:nowrap}
  .hero__announce .announcement__link{padding:6px 22px 6px 16px}
  .hero__announce .announcement--important .announcement__cta{color:var(--ink)}
}
@media (max-width:1180px){
  .cards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .detail{grid-template-columns:minmax(0,1fr) 360px;gap:0 40px}
  .site-footer__grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .site-footer__brand{grid-column:1/-1}
  .city-card__letter{width:104px;height:104px;font-size:5.6rem}
  .timeline{grid-template-columns:repeat(2,minmax(0,1fr))}
}
/* En-tête de 960 à 1079 px (iPad à l'horizontale, petit portable) : tout reste sur la ligne, un peu resserré */
@media (min-width:960px) and (max-width:1079.98px){
  .site-header--public .site-header__inner{gap:20px}
  .main-nav--public a{padding-inline:10px}
  .main-nav--public a[aria-current=page]::after{left:10px;right:10px}
  .header-cart{padding:0 10px}
  .header-account{padding:0 16px 0 12px}
}
/* En-tête : menu « Menu » (<details>) sous 960 px ; signature compacte */
@media (max-width:959.98px){
  .site-header--public .site-header__inner{flex-wrap:wrap;gap:10px;min-height:72px}   /* une ligne; deux seulement au texte agrandi */
  .site-header--public .brand{min-width:0;margin-right:auto}
  .brand__logo{height:40px}
  .main-nav--public,.header-account{display:none}
  .header-cart{padding:0;width:48px;justify-content:center}
  .header-cart__label{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .header-cart .header-cart__count{position:absolute;top:0;right:-4px;min-width:22px;height:22px;padding:0 5px;font-size:.8889rem}
  .nav-menu{display:block}
}
@media (max-width:979.98px){
  .hero__media{max-width:none}
  .moments,.cities,.tiles{grid-template-columns:minmax(0,1fr)}
  .howto{grid-template-columns:minmax(0,1fr)}
  .dates{grid-template-columns:minmax(0,1fr);gap:18px}
  .help{grid-template-columns:minmax(0,1fr);gap:36px}
  .detail{grid-template-columns:minmax(0,1fr);grid-template-areas:"head" "aside" "intro" "body";grid-template-rows:none;gap:0}
  .detail__head{padding-bottom:104px}
  .detail__aside{padding-top:0;margin-top:-72px;position:relative;z-index:2}
  .cta-panel{position:static}
  .course-body,.contact-layout,.location-body{grid-template-columns:minmax(0,1fr)}
  .city-head__inner{grid-template-columns:minmax(0,1fr);gap:var(--s-6)}
  .city-head__media{max-width:none}
  .city-head__letter{left:auto;right:18px;bottom:18px;width:88px;height:88px;font-size:4.6rem;border-radius:20px}
  .info-cards{grid-template-columns:minmax(0,1fr)}
  .filters__actions{margin-left:0}
  .section__head{display:block}
}
@media (max-width:760px){
  body{font-size:1rem}
  /* Deux lignes « Bouger ensemble, » / « près de chez vous. » jusqu'à 320 px (taille liée à la largeur, jamais sous 38 px) */
  .display{margin:22px 0 18px;font-size:clamp(2.1rem,12vw,3.3rem)}
  .display__l{display:block}
  .hero__lead{font-size:1.0556rem;margin-bottom:26px}
  .btn--large{padding:0 22px;font-size:1.0556rem}
  .course-hero__cta .btn{width:100%}
  .hero__actions{flex-direction:column;align-items:stretch}
  .hero__actions .btn{width:100%}
  .hero__note{font-size:.9444rem;margin-top:20px}
  .hero__media img{aspect-ratio:4/3}
  .hero__media::before{filter:blur(36px);inset:14% -4% -5% 10%}
  .hero__announce .announcement__link,.hero__status{font-size:.9444rem;padding:6px 16px 6px 14px;gap:2px 10px}
  .hero__announce .announcement__sep,.hero__announce .announcement__cta-label{display:none}
  .announcement__text--long{display:none}
  .announcement__text--short{display:-webkit-box}
  .announcement__inner{justify-content:flex-start;text-align:left}
  .announcement__link{flex-wrap:nowrap;justify-content:flex-start;gap:12px}
  .announcement__cta-label{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .announcement__cta .icon{width:1.3em;height:1.3em}
  .moment-card__body{padding:20px 22px 24px}
  .city-card .city-card__cta{width:52px;height:52px;min-height:52px}
  .city-card--boucherville,.city-card--varennes{gap:14px;padding:14px 16px 14px 14px;border-radius:22px}
  .city-card__letter{width:64px;height:64px;border-radius:16px;font-size:3.6rem}
  .city-card__name{font-size:clamp(1.5rem,1rem + 2.6vw,1.9rem);overflow-wrap:anywhere}   /* texte agrandi : « Boucherville » se replie */
  .city-card--boucherville .city-card__cta,.city-card--varennes .city-card__cta{width:44px;height:44px;min-height:44px}
  .city-card__count{font-size:.9444rem}
  .cities-head{margin-top:40px;font-size:1.3rem}
  .tile{padding:16px 18px;min-height:80px}
  .howto li{padding:24px}
  .howto__n{font-size:4rem;margin-bottom:14px}
  .timeline{grid-template-columns:minmax(0,1fr);gap:16px}
  .dates__past,.dates__past ul{display:block}
  .dates__past li{white-space:normal;margin-top:4px}
  .dates__past li+li::before{content:none}
  .help-cards{grid-template-columns:minmax(0,1fr)}
  .site-footer{padding-top:56px}
  .site-footer__grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,7.5em),1fr));gap:28px 18px}   /* 2 colonnes (320 à 760 px); 1 seule au texte agrandi à 200 % */
  .site-footer__help{grid-column:1/-1}
  .site-footer__signature img{height:34px}
  .page-top{padding-block:24px 48px}
  .page-top--overlap{padding-bottom:88px}
  .page-head__stats{display:none}
  .filters--catalog{margin-top:-64px;padding:16px;border-radius:22px}
  .filters__row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px 10px}
  .filters__row>.seg{grid-column:1/-1}
  .filters__search{grid-column:1/-1;max-width:none}
  .seg,.seg__track{width:100%}
  .seg__track{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}
  .seg label{padding:0 8px;gap:6px;font-size:.9444rem}
  .seg__hint{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .seg--ville .seg__track{grid-auto-flow:row;grid-template-columns:repeat(2,minmax(0,1fr));border-radius:26px}
  .seg--ville label[for=ville-toutes]{grid-column:1/-1}
  .seg--ville .seg__track label{border-radius:22px}
  .more-filters>summary{width:100%;justify-content:center;gap:8px;padding:0 12px;white-space:nowrap}
  .more-filters[open]{grid-column:1/-1;order:0}
  .more-filters__panel{padding:16px}
  .filters__actions .btn{min-height:56px;padding:0 20px}
  .city-section__org{margin-left:0;flex-basis:100%}
  .cards{grid-template-columns:minmax(0,1fr);gap:16px}
  .group-card{padding:20px 20px 18px}
  .facts--2{grid-template-columns:minmax(0,1fr)}
  .detail__badges{margin-bottom:12px}
  .detail__badges .badge--type{display:none}
  /* La session et le nombre de cours sont déjà dans l'encadré prix : une seule pastille (intensité) dans le bloc nuit */
  .detail__head .meta-pills li:first-child,.detail__head .meta-pills li:last-child{display:none}
  .detail__head .meta-pills{margin-top:12px}
  .detail__head .meta-pills li{min-height:36px}
  .detail__head{padding-block:16px 64px}
  .detail__head h1{font-size:clamp(2.1rem,1.5rem + 3vw,2.6rem);line-height:1}
  .detail__when{margin-top:14px;gap:4px 20px;font-size:1rem;line-height:1.4}
  .detail__aside{margin-top:-48px}
  .cta-panel .price{font-size:2.4rem}
  .cta-panel .price small{margin-top:6px}
  .cta-panel{padding:18px 20px}
  .cta-panel__avail{margin-top:10px}
  .cta-panel .btn{margin-top:14px}
  .breadcrumb li{display:none}
  .breadcrumb li:nth-last-child(2){display:block}
  .breadcrumb li:nth-last-child(2)::before{content:"‹";margin-right:8px;font-size:1.3em;line-height:1}
  .credit{grid-template-columns:96px minmax(0,1fr)}
  .credit__thumb{width:96px}
  .card--form{padding:22px}
  .related{padding:22px}
  .steps{border-radius:22px;gap:4px}
  .steps li{padding:0 12px;font-size:.9444rem}
  .city-places__list li{flex:1 1 100%}
  .city-places__list a{display:flex;width:100%;min-height:52px;padding:8px 16px;border-radius:18px}
  .city-places__list a>span:first-of-type{flex:1}
  .price{font-size:2.8rem}
  .cta-panel__code{display:none}
  /* Téléphone : prix, places, puis « S'inscrire » tout de suite (au-dessus du bouton d'aide flottant); le reste suit */
  .cta-panel{display:flex;flex-direction:column}
  .cta-panel .btn{order:1}
  .cta-panel__hint{order:2}
  .cta-panel__next{order:3;margin-top:16px}
  .cta-panel__notes{order:4}
  .cta-panel__meta{order:5}
  .schedule{grid-template-columns:repeat(auto-fill,minmax(min(100%,max(7.5em,calc(50% - 4px))),1fr));gap:8px}   /* 2 colonnes; 1 seule au texte agrandi à 200 % */
  .schedule li,.schedule__item{min-height:0;padding:12px 14px}
  .schedule__date{font-size:1.0556rem}
  .other-slot{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"city arrow" "when arrow" "where arrow"}
  .other-slot .badge{justify-self:start;margin-bottom:4px}
  .nav-menu__actions{grid-template-columns:minmax(0,1fr)}
  .site-header--bo .main-nav{justify-content:flex-start;margin-left:-12px}
}
/* Téléphone : toutes les cibles de type bouton à 52 px (demande du Club) ; bouton d'aide en pastille ronde de 56 px */
@media (max-width:639.98px){
  .btn,.btn--small,.main-nav a,.pill-group label,.pill-group--small label,.nav-toggle,.chip,.type-links a{min-height:var(--tap)}
  .btn--small{padding:0 18px;font-size:1rem}
  .help-fab{right:16px;bottom:16px}
  .help-fab summary{width:56px;height:56px;min-height:56px;padding:0;border-radius:50%;justify-content:center;gap:0}
  .help-fab summary::before{width:40px;height:40px;font-size:1.5rem}
  .help-fab__label{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .site-footer{padding-bottom:104px}
  main{padding-bottom:88px}
  .btn-row .btn{flex:1 1 100%}
  .brand__logo{height:36px}
  main .subtotal,main .totals{flex-direction:column;align-items:flex-start;gap:2px}
  body:not(.bo):not(.prof) main .actions{flex-direction:column;align-items:stretch}
  body:not(.bo):not(.prof) main .actions .btn{width:100%}
  body:not(.bo):not(.prof) main .actions .btn--primary{order:-1}
  /* Texte agrandi (réglage du téléphone, jusqu'à 200 %) : un bouton ne dépasse jamais l'écran, son long mot se coupe
     (« rectification) », « OpenStreetMap »). Pas dans les tableaux : leurs colonnes gardent la largeur de leurs mots. */
  .btn{max-width:100%}
  .btn:not(.table .btn){overflow-wrap:anywhere}
  /* Catalogue : « Plus de filtres » sur toute la largeur, au-dessus de « Afficher les cours » (à côté, il était
     écrasé en pastille de 49 px et son libellé débordait de la carte) */
  .filters__row{grid-template-columns:minmax(0,1fr)}
  .filters__actions .btn{width:100%}
  /* Étapes du parcours : « Étape 1 sur 5 · Panier » et une fine barre en dégradé (les 5 étapes restent lues) */
  .flow-steps .steps{position:relative;display:block;width:100%;padding:0;border-radius:0;background:none;box-shadow:none}
  .flow-steps .steps li{position:absolute!important;width:1px;height:1px;min-height:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;margin:-1px;padding:0}
  .flow-steps .steps::before{display:block;margin:0 0 8px;font-size:.9444rem;font-weight:700;color:var(--ink)}
  .flow-steps .steps::after{content:"";display:block;height:6px;border-radius:3px;background:linear-gradient(90deg,transparent var(--fill,0%),var(--line) var(--fill,0%)),var(--grad)}
  .flow-steps .steps:has(>li:nth-child(1)[aria-current=step]){--fill:20%}
  .flow-steps .steps:has(>li:nth-child(2)[aria-current=step]){--fill:40%}
  .flow-steps .steps:has(>li:nth-child(3)[aria-current=step]){--fill:60%}
  .flow-steps .steps:has(>li:nth-child(4)[aria-current=step]){--fill:80%}
  .flow-steps .steps:has(>li:nth-child(5)[aria-current=step]){--fill:100%}
  .flow-steps .steps:has(>li:nth-child(1)[aria-current=step])::before{content:"Étape 1 sur 5 · Panier";content:"Étape 1 sur 5 · Panier" / ""}
  .flow-steps .steps:has(>li:nth-child(2)[aria-current=step])::before{content:"Étape 2 sur 5 · Participant";content:"Étape 2 sur 5 · Participant" / ""}
  .flow-steps .steps:has(>li:nth-child(3)[aria-current=step])::before{content:"Étape 3 sur 5 · Révision";content:"Étape 3 sur 5 · Révision" / ""}
  .flow-steps .steps:has(>li:nth-child(4)[aria-current=step])::before{content:"Étape 4 sur 5 · Paiement";content:"Étape 4 sur 5 · Paiement" / ""}
  .flow-steps .steps:has(>li:nth-child(5)[aria-current=step])::before{content:"Étape 5 sur 5 · Confirmation";content:"Étape 5 sur 5 · Confirmation" / ""}
  .flow-steps .steps:not(:has(>li[aria-current=step])){display:none}
  /* Date de naissance : les 3 champs sur une ligne (le mois prend la place qui reste); texte agrandi à 200 % : ils
     passent l'un sous l'autre au lieu d'élargir le formulaire (la liste « Mois » de 10,5em faisait défiler la page) */
  .date-parts{gap:10px 8px}
  .date-parts__day{flex:0 0 2.8em}
  .date-parts__month{flex:1 1 7.4em}   /* « septembre » en entier */
  .date-parts__year{flex:0 0 4em}
  .date-parts__day input,.date-parts__year input{width:100%;padding-inline:10px}
  .date-parts__month select{width:100%;padding-left:10px;padding-right:34px;background-position:right 8px center}
}
@media (max-width:419.98px){
  .hero__announce .announcement__link{font-size:.8889rem;padding-inline:14px 16px;gap:10px}
  .hero__announce .announcement__text--chip{-webkit-line-clamp:3;line-clamp:3}
  .more-filters>summary>.icon:first-child{display:none}
  .brand__logo{height:34px}
}
@media (max-width:379.98px){
  .brand__logo{height:30px}
  .site-header--public .site-header__inner{gap:6px}
  .site-header--public .header-actions{gap:6px}
  .site-header--public .header-cart{width:44px}
  .nav-menu>summary{padding:0 12px;gap:6px}
}
@media (max-width:339.98px){
  .brand__logo{height:26px}
}
/* Tablette et petit bureau : même pastille ronde « ? » de 56 px qu'au téléphone (libellé lu par les lecteurs d'écran) */
@media (min-width:640px) and (max-width:1439.98px){
  .help-fab summary{width:56px;height:56px;min-height:56px;padding:0;border-radius:50%;justify-content:center;gap:0}
  .help-fab summary::before{width:40px;height:40px;font-size:1.5rem}
  .help-fab__label--long{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .help-fab__label--short{display:none}
  main{padding-bottom:max(88px,var(--section))}
}
/* De 640 à 979 px (iPad en portrait) : photos du héros et des villes sur toute la largeur de la colonne, en 16:9 */
@media (min-width:640px) and (max-width:979.98px){
  .hero__media img,.city-head__media img{aspect-ratio:16/9}
}
/* Grand écran : l'aide se range dans la marge droite (pastille ronde + libellé dessous), hors des cartes */
@media (min-width:1440px){
  .help-fab{right:max(12px,calc((100vw - 1240px) / 2 - 88px));bottom:28px}
  .help-fab summary{flex-direction:column;justify-content:center;gap:4px;width:76px;min-height:0;height:auto;padding:10px 0 8px;border-radius:24px;font-size:.8889rem;line-height:1.1;text-align:center}
  .help-fab__label--long{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .help-fab__label--short{display:block}
}

/* Écran tactile (téléphone, iPad) : liens isolés à 44 px au doigt (à la souris, l'aspect du bureau ne change pas) */
@media (pointer:coarse){
  .contact-line__mail{min-height:44px!important}
  .link-list a,.policy-others li>a,.policy-full>a{display:inline-flex;align-items:center;min-height:44px}
}
/* ---------- Gestion et portail des professeures sur iPad (écran tactile) ou fenêtre de moins de 1280 px ----------
   À la souris sur un écran de bureau (1280 px et plus), rien ne change. */
@media (pointer:coarse),(max-width:1279.98px){
  /* Tableaux larges (défilement dans leur cadre) : une ombre sur le bord qui cache encore des colonnes */
  .bo .table-wrap,.prof .table-wrap{background:linear-gradient(90deg,#FFFFFF 30%,rgba(255,255,255,0)) left center/32px 100% no-repeat local,linear-gradient(270deg,#FFFFFF 30%,rgba(255,255,255,0)) right center/32px 100% no-repeat local,radial-gradient(farthest-side at 0 50%,rgba(20,15,45,.2),rgba(20,15,45,0)) left center/12px 100% no-repeat scroll,radial-gradient(farthest-side at 100% 50%,rgba(20,15,45,.2),rgba(20,15,45,0)) right center/12px 100% no-repeat scroll}
  /* Colonne « Actions » figée à droite (fiche participant, groupes) : les boutons restent sur la ligne qu'ils visent */
  .table--actions tr>:last-child{position:sticky;right:0;z-index:1;background:#FFFFFF;box-shadow:-10px 0 10px -10px rgba(20,15,45,.3)}
  .table--actions thead tr>:last-child{background:var(--brume)}
  /* Première colonne lisible (groupe, personne) : jamais écrasée à 50-80 px sur 5 lignes. La colonne de sélection (case
     à cocher, et son en-tête .col-select au texte masqué) garde sa largeur. « Inscriptions » de la fiche participant
     (.table--lead, colonne « Actions » figée) : « Session / groupe » à 12em, avec une spécificité plus forte que la
     règle de 8em. Seulement ce tableau : appliqués à tous les tableaux à colonne figée, les 12em élargissaient « Date »
     (paiements) et faisaient défiler de côté les cartes du portail des professeures au texte agrandi. */
  .bo .table-wrap .table tr>:first-child:not(:has(input[type=checkbox])):not(.col-select),.prof .table-wrap .table tr>:first-child{min-width:8em}
  .bo .table-wrap .table.table--lead tr>:first-child:not(:has(input[type=checkbox])):not(.col-select){min-width:12em}
  /* Montants (.num, insécables) : la note sous le prix (« Prix au prorata (10 cours sur 13) ») se replie. Sur une ligne,
     elle élargissait « Prix » à 240 px, caché sous la colonne « Actions » figée (17 px visibles en portrait). */
  .bo .table--actions td.num .small-note{white-space:normal}
  /* « Inscriptions » : le statut (« En attente de paiement ») se replie aussi; « Prix » tient avant la colonne figée */
  .bo .table--lead td .badge{white-space:normal}
  /* Codes d'action du journal (security.mfa_verified) : sur une ligne, pas une lettre par ligne */
  .bo .table code{white-space:nowrap;overflow-wrap:normal}
  /* Case de sélection d'une ligne : zone de 44 × 44 px autour de la case (libellé qui l'entoure) */
  .check-cell{display:inline-grid;place-items:center;min-width:44px;min-height:44px;margin:-9px 0;cursor:pointer}
}
/* Tablette (iPad, de 768 à 1279 px) : en-tête de la gestion et du portail sur 2 rangées au lieu de 3 (166 → 116 px);
   la signature garde « Gestion » ou « Espace professeure », la navigation se range à côté */
@media (min-width:768px) and (max-width:1279.98px){
  .site-header--bo .site-header__inner{flex-wrap:nowrap;column-gap:8px}
  .site-header--bo .brand small{display:none}
  .site-header--bo .main-nav{flex:1 1 0;min-width:0}
  .site-header--bo .main-nav a{padding:0 6px;font-size:.8889rem}
  .site-header--bo .main-nav a[aria-current=page]::after{left:6px;right:6px}
  .site-header--bo .nav-logout .btn{padding-inline:14px;font-size:.8889rem}
}
/* iPad en portrait (768 à 859 px) : les 9 liens du portail des professeures vu par l'administration tiennent sur 2
   rangées au lieu de 3 (164 → 114 px); les 5 liens d'une professeure ne changent pas */
@media (min-width:768px) and (max-width:859.98px){
  .site-header--prof .main-nav:has(>a:nth-child(8)) a{padding:0 4px;font-size:.8333rem}
  .site-header--prof .main-nav:has(>a:nth-child(8)) a[aria-current=page]::after{left:4px;right:4px}
}

/* ---------- Mouvement réduit ---------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  html{scroll-behavior:auto}
  .moment-card:hover,.moment-card:hover .moment-card__photo img,.group-card:hover,.tile:hover,.place-card:hover,.city-card--boucherville:hover,.city-card--varennes:hover,.city-card:hover .city-card__cta{transform:none}
}

/* ---------- Couleurs forcées (Windows contraste élevé) : texte en dégradé et points décoratifs lisibles ---------- */
@media (forced-colors:active){
  .grad,.city-card__letter span,.city-head__letter span,.city-section__icon span,.howto__n{background:none!important;color:CanvasText!important;forced-color-adjust:none}
  .dot,.pulse{forced-color-adjust:none;background:CanvasText}
  .site-footer::before,.kicker::before,.eyebrow::before{display:none}
  .main-nav a[aria-current=page]::after{background:Highlight}
  .detail__head{box-shadow:none;clip-path:none}
}

/* ---------- Impression ---------- */
/* ---------- À propos : histoire (tête nuit + photo), repères, texte + citation, organismes reconnus ---------- */
/* Même dégradé or → bleu que l'accueil (couleurs des deux villes) */
.page-about{--grad:linear-gradient(100deg,#F2CF6B 0%,#E8BC45 28%,#7FA2F7 64%,#5B86F5 100%);--rose:#E8BC45;--lilas:#5B86F5}
.page-about .page-top::before,.page-about .about-quote::before{background:radial-gradient(closest-side,rgba(91,134,245,.28),rgba(91,134,245,0))}
.about-head__inner{display:grid;grid-template-columns:minmax(0,1fr);gap:28px;align-items:center}
.about-head__inner>*{min-width:0}
.about-head .lead{max-width:34em}
.about-head__media{position:relative;margin:0}
.about-head__media::before{content:"";position:absolute;inset:10% -6% -6% 10%;border-radius:48px;background:var(--grad);filter:blur(56px);opacity:.45;pointer-events:none}
.about-head__media img{position:relative;display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;border-radius:var(--radius-xl)}
.about-facts{list-style:none;margin:0 0 var(--s-8);padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.about-facts li{margin:0;padding:22px 20px;border-radius:var(--radius-lg);background:var(--brume)}
.about-facts__value{display:block;font-family:var(--f-titre);font-weight:800;font-stretch:74%;font-size:clamp(1.9rem,1.4rem + 1.6vw,2.6rem);line-height:1;color:var(--ink)}
.about-facts__label{display:block;margin-top:8px;color:var(--muted)}
.about-split{display:grid;grid-template-columns:minmax(0,1fr);gap:32px;align-items:center;margin-bottom:var(--s-8)}
.about-split>*{min-width:0}
.about-split__text{max-width:40em}
.about-split__text p:last-child{margin-bottom:0}
.about-quote{position:relative;margin:0;padding:clamp(28px,4vw,40px);border-radius:var(--radius-xl);background:var(--nuit);color:var(--sur-nuit);overflow:hidden}
.about-quote::before{content:"";position:absolute;right:-30%;top:-50%;width:80%;height:160%;background:radial-gradient(closest-side,rgba(139,120,255,.22),rgba(139,120,255,0));pointer-events:none}
.about-quote blockquote{position:relative;margin:0}
.about-quote blockquote p{margin:0;font-size:clamp(1.1111rem,1rem + .45vw,1.3333rem);line-height:1.55}
.about-quote figcaption{position:relative;display:flex;align-items:center;gap:10px;margin-top:20px;font-weight:700;color:var(--sur-nuit-2)}
.about-quote figcaption::before{content:"";flex:none;width:28px;height:3px;border-radius:3px;background:var(--grad)}
.about-orgs{display:flex;flex-wrap:wrap;align-items:center;gap:20px 32px;padding:clamp(22px,3vw,32px);border:1px solid var(--line);border-radius:var(--radius-xl)}
.about-orgs__logos{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:12px}
.about-orgs__logos li{margin:0}
.about-orgs__logos a{display:inline-flex;align-items:center;min-height:var(--tap);padding:8px 14px;border-radius:var(--radius)}
.about-orgs__logos img{height:44px;width:auto}
.about-orgs p{flex:1 1 22em;margin:0}
@media (min-width:760px){.about-facts{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (min-width:980px){
  .about-head__inner{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:56px}
  .about-split{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:56px}
}

@media print{
  .site-header,.site-footer,.help-fab,.no-print,.announcement,.filters,.chips,.nav-toggle,.skip-link,.hero__actions,.assist{display:none!important}
  body{background:#fff;color:#000;font-size:11pt}
  a{color:#000;text-decoration:underline}
  a[href^="http"]::after{content:" (" attr(href) ")";font-size:.85em}
  .card,.group-card,.cta-panel,.facts>div,.schedule li{box-shadow:none;border:1px solid #999;break-inside:avoid}
  .hero,.page-top,.detail__head,.section--soft,.section--nuit,.section--cream{background:#fff!important;color:#000!important;box-shadow:none!important}
  .hero *,.page-top *,.detail__head *,.section--nuit *{color:#000!important}
  .grad,.city-card__letter span,.howto__n{background:none!important;color:#000!important}
  .detail{grid-template-columns:1fr;grid-template-areas:"head" "aside" "intro" "body"}
  .cta-panel{position:static}
  .btn{border:1px solid #000;background:#fff!important;color:#000!important;box-shadow:none}
  .schedule{grid-template-columns:repeat(3,1fr)}
  main{padding-bottom:0}
}

/* « Voir le compte comme cette personne » (gestion) : bandeau d'aperçu, impossible à confondre avec une vraie connexion */
.view-as-banner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px;padding:10px var(--gutter,16px);background:var(--jaune-100);color:var(--ink);border-bottom:3px solid var(--jaune)}
.view-as-banner p{margin:0}
.view-as-banner form{margin:0}
