/* ============================================================
   components.css — Espace de formation Thierry Russo-Delattre
   Seule source des styles. Les pages assemblent ces classes,
   elles ne définissent rien. Préfixe ef-.
   ============================================================ */

/* ---------- Police (servie en local — RGPD) ----------
   Déposer les fichiers woff2 d'Inter Tight dans assets/fonts/ */
@font-face{font-family:'Inter Tight';src:url('fonts/InterTight-400.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Inter Tight';src:url('fonts/InterTight-500.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:'Inter Tight';src:url('fonts/InterTight-600.woff2') format('woff2');font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:'Inter Tight';src:url('fonts/InterTight-700.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:'Inter Tight';src:url('fonts/InterTight-800.woff2') format('woff2');font-weight:800;font-style:normal;font-display:swap}

/* ---------- Socle ---------- */
*,*::before,*::after{box-sizing:border-box}
html{scroll-padding-top:var(--ef-6)}
body{margin:0;font-family:var(--ef-font);font-size:var(--ef-size-body);line-height:var(--ef-lh-body);color:var(--ef-ink);background:var(--ef-white);-webkit-font-smoothing:antialiased}
h1,h2,h3,h4,p,ul,ol,figure{margin:0}
ul,ol{padding:0;list-style:none}
img,svg,video{display:block;max-width:100%}
a{color:var(--ef-blue);text-decoration:none}
a:hover{color:var(--ef-ink);text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
:focus-visible{outline:2px solid var(--ef-blue);outline-offset:2px;border-radius:var(--ef-r-sm)}

/* Icônes — trait fin 1,5 px, jamais pleines */
.ef-icon{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.ef-icon--sm{width:15px;height:15px}

/* ---------- Typographie ---------- */
.ef-h1{font-size:var(--ef-size-page);line-height:var(--ef-lh-page);font-weight:800;letter-spacing:-0.01em}
.ef-h2{font-size:var(--ef-size-section);line-height:var(--ef-lh-section);font-weight:700}
.ef-h3{font-size:var(--ef-size-card);line-height:var(--ef-lh-card);font-weight:600}
.ef-lead{font-size:var(--ef-size-card);line-height:var(--ef-lh-card);color:var(--ef-text)}
.ef-body{font-size:var(--ef-size-body);line-height:var(--ef-lh-body);color:var(--ef-text)}
.ef-sub{font-size:var(--ef-size-body);line-height:var(--ef-lh-body);color:var(--ef-text)}
.ef-small{font-size:var(--ef-size-small);line-height:var(--ef-lh-small);color:var(--ef-text)}
.ef-micro{font-size:var(--ef-size-micro);line-height:var(--ef-lh-micro);color:var(--ef-text)}
.ef-strong{font-weight:600;color:var(--ef-ink)}
.ef-right{text-align:right}
.ef-accent{color:var(--ef-blue)}
.ef-prose>p+p{margin-top:var(--ef-4)}
.ef-prose p{color:var(--ef-text)}

/* ---------- Structure ---------- */
.ef-shell{display:grid;grid-template-columns:var(--ef-sidebar) minmax(0,1fr);min-height:100vh;background:var(--ef-page)}
.ef-sidebar{display:flex;flex-direction:column;gap:var(--ef-5);padding:var(--ef-5);border-right:1px solid var(--ef-line);background:var(--ef-white);position:sticky;top:0;height:100vh;overflow-y:auto}
.ef-main{min-width:0;padding:0 var(--ef-8) var(--ef-10)}
.ef-container{max-width:var(--ef-content);margin:0 auto}
.ef-container--wide{max-width:var(--ef-content-wide)}
.ef-topbar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:var(--ef-4);min-height:var(--ef-topbar);position:sticky;top:0;z-index:30;background:var(--ef-white);border-bottom:1px solid var(--ef-line);margin:0 calc(var(--ef-8)*-1) var(--ef-7);padding:0 var(--ef-8)}
.ef-topbar__side{display:flex;align-items:center;gap:var(--ef-3);min-width:0}
.ef-topbar__side--end{justify-content:flex-end}
.ef-topbar__step{display:grid;place-items:center;width:40px;height:40px;flex:none;border:1px solid var(--ef-line);border-radius:var(--ef-r-pill);background:var(--ef-white);color:var(--ef-ink)}
.ef-topbar__step:hover{color:var(--ef-blue);border-color:var(--ef-blue);text-decoration:none}
.ef-topbar__title{font-size:var(--ef-size-page);line-height:var(--ef-lh-page);font-weight:800;letter-spacing:-0.01em;color:var(--ef-ink);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}

/* Empilements et rangées */
.ef-stack{display:flex;flex-direction:column;gap:var(--ef-7)}
.ef-stack--sm{gap:var(--ef-5)}
.ef-stack--xs{gap:var(--ef-3)}
.ef-row{display:flex;align-items:center;gap:var(--ef-4)}
.ef-row--between{justify-content:space-between}
.ef-row--wrap{flex-wrap:wrap}
.ef-row--top{align-items:flex-start}
.ef-grid{display:grid;gap:var(--ef-5)}
.ef-grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.ef-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.ef-split{display:grid;grid-template-columns:55fr 45fr;gap:var(--ef-7);align-items:start}
.ef-cols{display:grid;grid-template-columns:minmax(0,1fr) var(--ef-toc);gap:var(--ef-card-pad);align-items:start}
.ef-cols--narrow{grid-template-columns:minmax(0,var(--ef-content-narrow)) var(--ef-toc)}
.ef-cols--prompts{grid-template-columns:minmax(0,var(--ef-prompts-col)) var(--ef-toc)}

/* Fil d'Ariane */
.ef-crumb{display:flex;align-items:center;gap:var(--ef-2);font-size:var(--ef-size-small);line-height:var(--ef-lh-small);color:var(--ef-text)}
.ef-crumb a{color:var(--ef-text)}
.ef-crumb a:hover{color:var(--ef-ink)}

/* Liens en ligne séparés par des filets verticaux */
.ef-inline-links{display:flex;flex-wrap:wrap}
.ef-inline-links a{display:inline-flex;align-items:center;gap:var(--ef-2);min-height:44px;padding:0 var(--ef-6);font-weight:600}
.ef-inline-links a:first-child{padding-left:0}
.ef-inline-links a+a{border-left:1px solid var(--ef-line)}

/* ---------- Barre latérale ---------- */
.ef-brand{display:flex;align-items:center;gap:var(--ef-3);color:inherit}
.ef-brand:hover{text-decoration:none}
.ef-brand__mark{width:40px;height:40px;flex:none;border-radius:var(--ef-r-brand);background:var(--ef-blue);color:var(--ef-white);font-size:var(--ef-size-small);font-weight:800;letter-spacing:.02em;display:grid;place-items:center}
.ef-brand__photo{width:40px;height:40px;flex:none;border-radius:var(--ef-r-pill);object-fit:cover}
.ef-brand__name{display:block;font-size:var(--ef-size-card);line-height:1.2;font-weight:700}
.ef-brand__sub{display:block;font-size:var(--ef-size-small);line-height:var(--ef-lh-small);color:var(--ef-text)}

.ef-switch{display:flex;align-items:center;gap:var(--ef-3);width:100%;text-align:left;background:var(--ef-blue-pale);border-radius:var(--ef-r-card);padding:var(--ef-3) var(--ef-4);min-height:44px}
.ef-switch__label{display:block;font-size:var(--ef-size-label);line-height:var(--ef-lh-label);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ef-text)}
.ef-switch__title{display:block;font-size:var(--ef-size-body);line-height:var(--ef-lh-body);font-weight:700;color:var(--ef-blue)}
.ef-switch .ef-icon{margin-left:auto;color:var(--ef-text)}

.ef-nav{display:flex;flex-direction:column;gap:var(--ef-1)}
.ef-nav-item{display:flex;align-items:center;gap:var(--ef-3);min-height:40px;padding:0 var(--ef-3);border-radius:var(--ef-r-field);font-size:var(--ef-size-body);color:var(--ef-text)}
.ef-nav-item .ef-icon{color:var(--ef-blue)}
.ef-nav-item:hover{background:var(--ef-tint);color:var(--ef-ink);text-decoration:none}
.ef-nav-item.is-active{background:var(--ef-blue-pale);color:var(--ef-blue);font-weight:600}
.ef-nav-sub{display:flex;align-items:center;gap:var(--ef-2);min-height:36px;padding:0 var(--ef-3) 0 calc(var(--ef-6) + var(--ef-1) + var(--ef-3));border-radius:var(--ef-r-field);font-size:var(--ef-size-small);color:var(--ef-text)}
.ef-nav-sub:hover{background:var(--ef-tint);color:var(--ef-ink);text-decoration:none}
.ef-nav-sub.is-active{background:var(--ef-blue-pale);color:var(--ef-blue);font-weight:600}
.ef-nav-sub.is-locked{color:var(--ef-text);opacity:.45;pointer-events:none}
.ef-nav-sep{border:0;border-top:1px solid var(--ef-line);margin:var(--ef-4) 0;width:100%}

.ef-help{margin-top:auto;display:flex;align-items:center;gap:var(--ef-3);border-radius:var(--ef-r-card);padding:var(--ef-4) var(--ef-4) var(--ef-1);color:inherit}
.ef-help:hover{text-decoration:none;background:var(--ef-tint)}
.ef-help__dot{width:10px;height:10px;flex:none;border-radius:var(--ef-r-pill);background:var(--ef-green)}
.ef-help__wa{width:26px;height:26px;flex:none;fill:var(--ef-whatsapp)}
.ef-help__title{font-size:var(--ef-size-small);line-height:var(--ef-lh-small);font-weight:600}
.ef-help__sub{font-size:var(--ef-size-micro);line-height:var(--ef-lh-micro);color:var(--ef-text)}

/* Bouton du tiroir mobile — masqué en desktop */
.ef-menu-btn{display:none;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid var(--ef-line);border-radius:var(--ef-r-field);background:var(--ef-white);color:var(--ef-ink)}
.ef-scrim{display:none;position:fixed;inset:0;background:var(--ef-scrim);border:0;z-index:40}

/* ---------- Surfaces ---------- */
.ef-card{background:var(--ef-white);border:1px solid var(--ef-line);border-radius:var(--ef-r-card);padding:var(--ef-card-pad)}
.ef-card--flex{display:flex;flex-direction:column;gap:var(--ef-3);height:100%}
.ef-card__foot{margin-top:auto;padding-top:var(--ef-4);border-top:1px solid var(--ef-tint);display:flex;align-items:center;justify-content:space-between;gap:var(--ef-3)}
.ef-band{background:var(--ef-warm);border-radius:var(--ef-r-card);padding:var(--ef-7)}
.ef-band .ef-card{box-shadow:var(--ef-shadow-card)}
.ef-note{background:var(--ef-blue-pale);border-radius:var(--ef-r-card);padding:var(--ef-6)}
.ef-note__title{font-size:var(--ef-size-small);line-height:var(--ef-lh-small);font-weight:700;color:var(--ef-blue);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--ef-2)}

/* Bloc replié — details/summary natif */
.ef-fold{border:1px solid var(--ef-line);border-radius:var(--ef-r-card)}
.ef-fold summary{display:flex;align-items:center;gap:var(--ef-3);min-height:44px;padding:var(--ef-3) var(--ef-5);cursor:pointer;font-weight:600;list-style:none}
.ef-fold summary::-webkit-details-marker{display:none}
.ef-fold summary .ef-icon{margin-left:auto;color:var(--ef-text);transition:transform .15s}
.ef-fold[open] summary .ef-icon{transform:rotate(180deg)}
.ef-fold__body{padding:0 var(--ef-5) var(--ef-5)}
.ef-fold+.ef-fold{margin-top:var(--ef-3)}

/* ---------- Boutons ---------- */
.ef-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--ef-2);min-height:44px;padding:0 var(--ef-5);border:1px solid transparent;font-size:var(--ef-size-body);font-weight:600;line-height:1;white-space:nowrap;cursor:pointer;transition:background-color .15s,border-color .15s,color .15s}
a.ef-btn:hover{text-decoration:none}
.ef-btn--primary{background:var(--ef-blue);color:var(--ef-white);border-radius:var(--ef-r-pill)}
.ef-btn--primary:hover{background:var(--ef-blue-hover);color:var(--ef-white)}
.ef-btn--secondary{background:var(--ef-ink);color:var(--ef-white);border-radius:var(--ef-r-card)}
.ef-btn--secondary:hover{background:var(--ef-ink-hover);color:var(--ef-white)}
.ef-btn--tertiary{background:var(--ef-blue-pale);color:var(--ef-blue);border-color:var(--ef-line);border-radius:var(--ef-r-pill)}
.ef-btn--tertiary:hover{border-color:var(--ef-blue);color:var(--ef-blue)}
.ef-btn--white{background:var(--ef-tint);color:var(--ef-text);border-color:transparent;border-radius:var(--ef-r-card)}
.ef-btn--white:hover{background:var(--ef-blue-pale);color:var(--ef-blue)}
.ef-btn--copy{width:32px;height:32px;min-height:32px;padding:0;background:var(--ef-tint);color:var(--ef-text);border-color:transparent;border-radius:var(--ef-r-field)}
.ef-btn--copy:hover{background:var(--ef-line);color:var(--ef-ink)}
.ef-btn--copy.is-copied{background:var(--ef-blue-pale);border-color:transparent;color:var(--ef-blue)}
.ef-btn--block{width:100%}

/* ---------- Éléments ---------- */
.ef-tag{display:inline-flex;align-self:flex-start;align-items:center;height:24px;padding:0 var(--ef-3);border-radius:var(--ef-r-pill);background:var(--ef-tint);font-size:var(--ef-size-micro);font-weight:600;color:var(--ef-text);white-space:nowrap}
.ef-tag--personal{background:var(--ef-blue-pale);color:var(--ef-blue)}

.ef-pill{display:inline-flex;align-items:center;min-height:36px;padding:0 var(--ef-4);border-radius:var(--ef-r-pill);border:1px solid var(--ef-line);background:var(--ef-white);font-size:var(--ef-size-small);color:var(--ef-text);white-space:nowrap;transition:border-color .15s,color .15s}
.ef-pill:hover{border-color:var(--ef-text);color:var(--ef-ink);text-decoration:none}
.ef-pill.is-active{background:var(--ef-blue-pale);border-color:transparent;color:var(--ef-blue);font-weight:600}
.ef-pills{display:flex;flex-wrap:wrap;gap:var(--ef-2)}
.ef-pills--column{flex-direction:column;align-items:stretch}
.ef-pills--scroll{flex-wrap:nowrap;overflow-x:auto;padding-bottom:var(--ef-2)}
.ef-mobile-only{display:none}

.ef-search{position:relative;display:block}
.ef-search .ef-icon{position:absolute;left:var(--ef-4);top:50%;transform:translateY(-50%);color:var(--ef-text);pointer-events:none}
.ef-search__input{width:100%;height:46px;border:1px solid var(--ef-line);border-radius:var(--ef-r-field);background:var(--ef-white);padding:0 var(--ef-4) 0 calc(var(--ef-4) + 18px + var(--ef-3));font:inherit;color:var(--ef-ink)}
.ef-search__input::placeholder{color:var(--ef-text)}
.ef-search__input:focus{outline:2px solid var(--ef-blue);outline-offset:-1px}

.ef-field{display:block}
.ef-field__label{display:block;font-size:var(--ef-size-small);line-height:var(--ef-lh-small);font-weight:600;margin-bottom:var(--ef-2)}
.ef-field__input{width:100%;height:44px;border:1px solid var(--ef-line);border-radius:var(--ef-r-field);background:var(--ef-tint);padding:0 var(--ef-4);font:inherit;color:var(--ef-ink)}
.ef-field__input::placeholder{color:var(--ef-text)}
.ef-field__input:focus{outline:2px solid var(--ef-blue);outline-offset:-1px}
textarea.ef-field__input{height:auto;min-height:calc(var(--ef-lh-body)*2 + var(--ef-4));padding:var(--ef-2) var(--ef-4);resize:vertical}

.ef-avatar{width:40px;height:40px;flex:none;border-radius:var(--ef-r-pill);background:var(--ef-blue-pale);color:var(--ef-blue);font-size:var(--ef-size-micro);font-weight:700;display:grid;place-items:center;text-transform:uppercase}
.ef-avatar img{width:100%;height:100%;object-fit:cover;border-radius:inherit}
.ef-avatar--lg{width:48px;height:48px;font-size:var(--ef-size-body)}
.ef-avatar--xl{width:96px;height:96px;font-size:var(--ef-size-section)}
a.ef-avatar:hover{text-decoration:none}

/* Menu du compte, ouvert depuis l'avatar */
.ef-menu{position:relative}
.ef-menu__list{position:absolute;top:100%;right:0;z-index:40;min-width:200px;margin-top:var(--ef-2);display:none;flex-direction:column;padding:var(--ef-2);border:1px solid var(--ef-line);border-radius:var(--ef-r-card);background:var(--ef-white)}
/* Passerelle invisible : sans elle, le survol se perd dans l'espace entre l'avatar et la liste, et le menu se referme en chemin. */
.ef-menu__list::before{content:"";position:absolute;left:0;right:0;top:calc(var(--ef-2)*-1);height:var(--ef-2)}
.ef-menu:hover>.ef-menu__list,.ef-menu:focus-within>.ef-menu__list{display:flex}
.ef-menu__item{display:flex;align-items:center;gap:var(--ef-3);padding:var(--ef-2) var(--ef-3);border-radius:var(--ef-r-field);font-size:var(--ef-size-body);line-height:var(--ef-lh-body);color:var(--ef-ink);white-space:nowrap}
.ef-menu__item:hover{background:var(--ef-tint);color:var(--ef-blue);text-decoration:none}
.ef-menu__sep{height:1px;margin:var(--ef-2) 0;background:var(--ef-line)}

.ef-count{font-size:var(--ef-size-micro);line-height:var(--ef-lh-micro);color:var(--ef-text)}

.ef-check{display:flex;align-items:flex-start;gap:var(--ef-3);min-height:44px;padding:var(--ef-2) 0;cursor:pointer}
.ef-check input{position:absolute;width:20px;height:20px;opacity:0;cursor:pointer}
.ef-check__box{width:20px;height:20px;flex:none;margin-top:2px;border:1.5px solid var(--ef-blue);border-radius:var(--ef-r-sm);background:var(--ef-white);display:grid;place-items:center;color:var(--ef-white)}
.ef-check__box .ef-icon{width:12px;height:12px;stroke-width:2.5;opacity:0}
.ef-check input:checked+.ef-check__box{background:var(--ef-blue)}
.ef-check input:checked+.ef-check__box .ef-icon{opacity:1}
.ef-check input:focus-visible+.ef-check__box{outline:2px solid var(--ef-blue);outline-offset:2px}
.ef-check__label{font-size:var(--ef-size-body);line-height:var(--ef-lh-body)}
.ef-check input:checked~.ef-check__label{text-decoration:line-through;color:var(--ef-text)}

/* ---------- Vidéo ---------- */
.ef-video{position:relative;aspect-ratio:16/9;width:100%;border-radius:var(--ef-r-card);overflow:hidden;background:var(--ef-tint)}
.ef-video img{width:100%;height:100%;object-fit:cover}
.ef-video iframe{width:100%;height:100%;border:0}
button.ef-video{border:0;padding:0;cursor:pointer;font:inherit;text-align:inherit}
.ef-video--placeholder{background:var(--ef-warm);display:grid;place-items:center;font-size:var(--ef-size-body);color:var(--ef-text);text-align:center;padding:var(--ef-5)}
.ef-video__play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:64px;height:64px;border-radius:var(--ef-r-pill);background:var(--ef-white);display:grid;place-items:center}
.ef-video__play::after{content:"";display:block;margin-left:3px;border-style:solid;border-width:11px 0 11px 18px;border-color:transparent transparent transparent var(--ef-blue)}
.ef-video__progress{position:absolute;left:0;right:0;bottom:0;height:4px}
.ef-video__progress::before{content:"";position:absolute;inset:0;width:var(--progress,0%);background:var(--ef-blue)}
.ef-video__time{position:absolute;right:var(--ef-3);bottom:var(--ef-3);white-space:nowrap;font-size:var(--ef-size-micro);line-height:var(--ef-lh-micro);font-weight:600;color:var(--ef-white);font-variant-numeric:tabular-nums}
.ef-video__caption{margin-top:var(--ef-3);font-size:var(--ef-size-small);line-height:var(--ef-lh-small);color:var(--ef-text)}

/* ---------- Prompt ---------- */
.ef-prompt__head{margin-bottom:var(--ef-3)}
.ef-prompt__title{font-size:var(--ef-size-card);line-height:var(--ef-lh-card);font-weight:600}
.ef-prompt__promise{font-size:var(--ef-size-small);line-height:var(--ef-lh-small);color:var(--ef-text);margin-top:var(--ef-1)}
.ef-prompt__body{position:relative}
.ef-prompt__body .ef-btn--copy{position:absolute;top:var(--ef-4);right:var(--ef-4)}
.ef-prompt__code{margin:0;background:var(--ef-white);border:1px solid var(--ef-line);border-radius:var(--ef-r-card);padding:var(--ef-5);padding-right:var(--ef-9);font-family:var(--ef-mono);font-size:var(--ef-size-small);line-height:var(--ef-lh-body);color:var(--ef-ink);white-space:pre-wrap;overflow-wrap:break-word;max-height:220px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--ef-line) transparent}
.ef-prompt__code::-webkit-scrollbar{width:8px}
.ef-prompt__code::-webkit-scrollbar-thumb{background:var(--ef-line);border-radius:var(--ef-r-pill)}
.ef-prompt__code::-webkit-scrollbar-track{background:transparent}
.ef-var{color:var(--ef-blue);font-weight:600}
.ef-prompt__meta{margin-top:var(--ef-2);font-size:var(--ef-size-small);line-height:var(--ef-lh-small);color:var(--ef-text)}
.ef-prompt+.ef-prompt{margin-top:var(--ef-6)}

/* Groupe de prompts */
.ef-prompt-group{border-top:1px solid var(--ef-line);padding-top:var(--ef-6)}
.ef-prompt-group__head{display:flex;align-items:baseline;gap:var(--ef-3);margin-bottom:var(--ef-5)}

/* ---------- Sommaire collant ---------- */
.ef-toc{position:sticky;top:calc(var(--ef-topbar) + var(--ef-7));max-height:calc(100vh - var(--ef-topbar) - var(--ef-7)*2);overflow-y:auto;font-size:var(--ef-size-toc);line-height:var(--ef-lh-toc)}
.ef-toc__title{font-size:var(--ef-size-label);line-height:var(--ef-lh-label);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ef-text);margin-bottom:var(--ef-3)}
.ef-toc__item{display:block;padding:var(--ef-1) 0 var(--ef-1) var(--ef-4);border-left:1px solid var(--ef-line);color:var(--ef-text)}
.ef-toc__item:hover{color:var(--ef-ink);text-decoration:none}
.ef-toc__item.is-active{border-left:2px solid var(--ef-blue);padding-left:calc(var(--ef-4) - 1px);color:var(--ef-blue);font-weight:600}
.ef-toc__group{display:block;padding:var(--ef-1) 0 var(--ef-1) var(--ef-4);border-left:1px solid var(--ef-line);color:var(--ef-ink);font-weight:600}
.ef-toc__item--sub{font-size:var(--ef-size-small);padding-left:var(--ef-6)}
.ef-toc__item--sub.is-active{padding-left:calc(var(--ef-6) - 1px)}
.ef-toc__extra{margin-top:var(--ef-5);padding-top:var(--ef-5);border-top:1px solid var(--ef-line)}

/* ---------- Vignette de coaching ---------- */
.ef-thumb{display:block;color:inherit;background:var(--ef-white);border:1px solid var(--ef-line);border-radius:var(--ef-r-thumb);overflow:hidden}
.ef-thumb:hover{text-decoration:none}
.ef-thumb:hover .ef-thumb__title{color:var(--ef-blue)}
.ef-thumb__media{display:block;position:relative;aspect-ratio:16/9;border-radius:var(--ef-r-thumb) var(--ef-r-thumb) 0 0;overflow:hidden;background:var(--ef-tint)}
.ef-thumb__media img{width:100%;height:100%;object-fit:cover}
.ef-thumb--upcoming .ef-thumb__media{background:var(--ef-warm);display:grid;place-items:center;font-size:var(--ef-size-body);color:var(--ef-text)}
.ef-thumb__progress{position:absolute;left:0;right:0;bottom:0;height:4px}
.ef-thumb__progress::before{content:"";position:absolute;inset:0;width:var(--progress,0%);background:var(--ef-blue)}
.ef-thumb__title{display:block;font-size:var(--ef-size-card);line-height:var(--ef-lh-card);font-weight:700;color:var(--ef-ink);padding:var(--ef-6) var(--ef-6) 0}
.ef-thumb__meta{display:flex;align-items:center;gap:var(--ef-3);padding:var(--ef-2) var(--ef-6) var(--ef-6)}
.ef-thumb__date{display:flex;align-items:center;gap:var(--ef-2);font-size:var(--ef-size-small);line-height:var(--ef-lh-small);color:var(--ef-text)}
.ef-thumb__dur{display:flex;align-items:center;gap:var(--ef-2);font-size:var(--ef-size-small);line-height:var(--ef-lh-small);color:var(--ef-text)}
.ef-thumb__body{display:flex;flex-direction:column;align-items:flex-start;gap:var(--ef-2);padding:var(--ef-6)}
.ef-thumb__sep{width:1px;height:14px;background:var(--ef-line)}
.ef-thumb__date .ef-icon,.ef-thumb__dur .ef-icon{width:14px;height:14px;color:var(--ef-blue)}

/* ---------- Chapitrage ---------- */
.ef-chapters{display:flex;flex-direction:column}
.ef-chapters__row{display:flex;align-items:center;gap:var(--ef-4);min-height:40px;padding:0 var(--ef-3);border-radius:var(--ef-r-field);color:inherit}
.ef-chapters__row:hover{background:var(--ef-tint);text-decoration:none}
.ef-chapters__time{flex:none;width:56px;font-size:var(--ef-size-small);font-weight:600;color:var(--ef-blue);font-variant-numeric:tabular-nums}
.ef-chapters__label{font-size:var(--ef-size-body);color:var(--ef-text)}
.ef-chapters__row.is-active{background:var(--ef-blue-pale)}
.ef-chapters__row.is-active .ef-chapters__label{color:var(--ef-blue);font-weight:600}

/* ---------- Ligne de fichier ---------- */
.ef-file-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:var(--ef-4);padding:var(--ef-4) 0}
.ef-file-row+.ef-file-row{border-top:1px solid var(--ef-tint)}
.ef-file-row__icon{width:40px;height:40px;border-radius:var(--ef-r-pill);background:var(--ef-blue-pale);color:var(--ef-blue);display:grid;place-items:center}
.ef-file-row__name{font-size:var(--ef-size-body);line-height:var(--ef-lh-body);font-weight:600;display:flex;align-items:center;gap:var(--ef-2);flex-wrap:wrap}
.ef-file-row__sub{font-size:var(--ef-size-micro);line-height:var(--ef-lh-micro);color:var(--ef-text)}
.ef-file-row__spec{font-size:var(--ef-size-small);color:var(--ef-text);white-space:nowrap}

/* ---------- Ligne de lien ---------- */
.ef-link-row{display:flex;align-items:baseline;gap:var(--ef-3);padding:var(--ef-1) 0;color:inherit}
.ef-link-row:hover{text-decoration:none}
.ef-link-row .ef-icon{align-self:center;color:var(--ef-blue)}
.ef-link-row__label{font-size:var(--ef-size-body);font-weight:600;color:var(--ef-blue)}
.ef-link-row:hover .ef-link-row__label{color:var(--ef-ink)}
/* Prochain coaching, en pied de carte */
.ef-next{display:flex;align-items:center;gap:var(--ef-4);margin-top:auto;padding-top:var(--ef-5);border-top:1px solid var(--ef-line)}
.ef-next__date{flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;width:72px;padding:var(--ef-3) var(--ef-2);border:1px solid var(--ef-line);border-radius:var(--ef-r-field);background:var(--ef-tint);overflow:hidden}
.ef-next__annee{margin-top:var(--ef-1);font-size:var(--ef-size-micro);line-height:1;color:var(--ef-text);font-variant-numeric:tabular-nums}
.ef-next__jour{font-size:var(--ef-size-page);line-height:1;font-weight:800;color:var(--ef-ink);letter-spacing:-0.02em}
.ef-next__mois{margin-top:var(--ef-1);font-size:var(--ef-size-micro);line-height:1;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--ef-text)}
.ef-next__corps{display:flex;flex-direction:column;align-items:flex-start;gap:var(--ef-2);min-width:0}
.ef-next__titre{font-size:var(--ef-size-card);line-height:var(--ef-lh-card);font-weight:600;color:var(--ef-ink)}
.ef-next__quand{font-size:var(--ef-size-small);line-height:var(--ef-lh-small);color:var(--ef-text)}
.ef-link-row__desc{font-size:var(--ef-size-small);color:var(--ef-text)}

/* ---------- Pagination précédent / suivant ---------- */
.ef-pager{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--ef-line);padding-top:var(--ef-5)}
.ef-pager__prev,.ef-pager__next{display:flex;flex-direction:column;gap:var(--ef-1);padding:var(--ef-2) var(--ef-5);color:inherit}
.ef-pager__prev{padding-left:0}
.ef-pager__next{align-items:flex-end;text-align:right;border-left:1px solid var(--ef-line);padding-right:0}
.ef-pager__prev:only-child{border:0}
.ef-pager a:hover{text-decoration:none}
.ef-pager__kicker{display:flex;align-items:center;gap:var(--ef-2);font-size:var(--ef-size-micro);line-height:var(--ef-lh-micro);color:var(--ef-text)}
.ef-pager__title{font-size:var(--ef-size-body);line-height:var(--ef-lh-body);font-weight:600}
.ef-pager a:hover .ef-pager__title{color:var(--ef-blue)}

/* ---------- Connexion ---------- */
.ef-login{min-height:100vh;display:grid;place-items:center;padding:var(--ef-6);background:var(--ef-page)}
.ef-login__card{width:420px;max-width:100%;display:flex;flex-direction:column;gap:var(--ef-5)}
.ef-login__name{font-size:20px;line-height:var(--ef-lh-section);font-weight:700}
.ef-login-title{font-size:var(--ef-size-page);line-height:var(--ef-lh-page);font-weight:800;letter-spacing:-0.01em}
.ef-login-photo{width:72px;height:72px;flex:none;border-radius:var(--ef-r-pill);object-fit:cover}
.ef-login-photo--lg{width:96px;height:96px}
/* Variante A — deux colonnes */
.ef-login-split{display:grid;grid-template-columns:1fr 1fr;min-height:100vh;background:var(--ef-page)}
.ef-login-split__brand{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:var(--ef-5);padding:var(--ef-10);background:var(--ef-white);border-right:1px solid var(--ef-line)}
.ef-login-split__form{display:grid;place-items:center;padding:var(--ef-8)}
/* Variante B — colonne centrée */
.ef-login-center{min-height:100vh;display:grid;place-items:center;background:var(--ef-page);padding:var(--ef-card-pad)}
.ef-login-center__col{width:460px;max-width:100%;display:flex;flex-direction:column;gap:var(--ef-5);align-items:center;text-align:center}
.ef-login-center__col .ef-card{width:100%;text-align:left}
.ef-login-brand{display:flex;align-items:flex-end;gap:var(--ef-3);margin-bottom:var(--ef-5)}
.ef-login-brand__espace{font-style:italic;font-weight:300;font-size:38px;line-height:1;color:var(--ef-ink);transform:translateY(calc(0.21em - 3px))}
.ef-login-brand__logo{height:34px;width:auto}
/* Variante C — grande carte double */
.ef-login-wide{width:880px;max-width:100%}
.ef-login-wide__grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--ef-8);align-items:center}
@media (max-width:1024px){
  .ef-login-split{grid-template-columns:minmax(0,1fr)}
  .ef-login-split__brand{border-right:0;border-bottom:1px solid var(--ef-line);padding:var(--ef-8) var(--ef-6)}
  .ef-login-wide__grid{grid-template-columns:minmax(0,1fr)}
}

/* Pied de carte : action + compteur dessous */
.ef-card__action{display:flex;flex-direction:column;align-items:flex-end;gap:var(--ef-1)}

/* Ligne de métadonnées à icônes (date, heure, durée) */
.ef-meta{display:flex;align-items:center;gap:var(--ef-3);flex-wrap:wrap}
.ef-meta__item{display:flex;align-items:center;gap:var(--ef-2);font-size:var(--ef-size-body);line-height:var(--ef-lh-body);color:var(--ef-text)}
.ef-meta__item .ef-icon{width:16px;height:16px;color:var(--ef-blue)}
.ef-meta__sep{width:1px;height:14px;background:var(--ef-line)}

/* ---------- Gabarit coaching — deux états sur un seul conteneur ---------- */
.ef-coaching.is-upcoming .ef-only-past{display:none}
.ef-coaching.is-past .ef-only-upcoming{display:none}

/* Masquage accessible */
.ef-visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* ---------- Parcours (frise des coachings) ---------- */
.ef-path{display:grid;grid-template-columns:repeat(6,1fr)}
.ef-path__step{position:relative;display:flex;flex-direction:column;align-items:center;gap:var(--ef-2);text-align:center;color:inherit;padding-top:var(--ef-1)}
.ef-path__step::before{content:"";position:absolute;top:calc(var(--ef-1) + 14px);right:50%;width:100%;height:2px;background:var(--ef-line);transform:translateX(-14px)}
.ef-path__step:first-child::before{display:none}
.ef-path__step.is-done::before{background:var(--ef-blue)}
.ef-path__dot{position:relative;z-index:1;width:28px;height:28px;border-radius:var(--ef-r-pill);display:grid;place-items:center;background:var(--ef-tint);border:2px solid var(--ef-line);color:var(--ef-text);font-size:var(--ef-size-micro);font-weight:700}
.ef-path__step.is-done .ef-path__dot{background:var(--ef-blue);border-color:var(--ef-blue);color:var(--ef-white)}
.ef-path__step.is-current .ef-path__dot{background:var(--ef-white);border-color:var(--ef-blue);color:var(--ef-blue)}
.ef-path__dot .ef-icon{width:13px;height:13px;stroke-width:2.5}
.ef-path__label{font-size:var(--ef-size-micro);line-height:var(--ef-lh-micro);font-weight:600;color:var(--ef-ink)}
.ef-path__step.is-todo .ef-path__label{color:var(--ef-text);font-weight:400}
.ef-path__date{font-size:var(--ef-size-micro);line-height:var(--ef-lh-micro);color:var(--ef-text)}
a.ef-path__step:hover{text-decoration:none}
a.ef-path__step:hover .ef-path__label{color:var(--ef-blue)}
@media (max-width:768px){
  .ef-path{grid-template-columns:repeat(3,1fr);row-gap:var(--ef-5)}
  .ef-path__step:nth-child(4)::before{display:none}
}

/* ---------- Mission de la semaine ---------- */
.ef-mission{display:flex;flex-direction:column;gap:var(--ef-3);background:var(--ef-blue-pale);border-radius:var(--ef-r-card);padding:var(--ef-card-pad);height:100%}
.ef-mission__kicker{font-size:var(--ef-size-label);line-height:var(--ef-lh-label);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ef-blue)}
.ef-mission__title{font-size:var(--ef-size-section);line-height:var(--ef-lh-section);font-weight:700}
.ef-mission__src{margin-top:auto;font-size:var(--ef-size-small);line-height:var(--ef-lh-small);color:var(--ef-text)}

/* Champ en erreur + message */
.ef-field--error .ef-field__input{border-color:var(--ef-error)}
.ef-field--error .ef-field__input:focus{outline-color:var(--ef-error)}
.ef-field__msg{display:block;margin-top:var(--ef-1);font-size:var(--ef-size-small);line-height:var(--ef-lh-small);color:var(--ef-error)}

/* Interrupteur de réglage (l'ef-switch existant est le sélecteur de formation) */
.ef-toggle{display:flex;align-items:center;gap:var(--ef-3);min-height:44px;cursor:pointer}
.ef-toggle input{position:absolute;width:44px;height:24px;opacity:0;cursor:pointer}
.ef-toggle__track{position:relative;width:44px;height:24px;flex:none;border-radius:var(--ef-r-pill);background:var(--ef-line);transition:background-color .15s}
.ef-toggle__track::after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:var(--ef-r-pill);background:var(--ef-white);transition:transform .15s}
.ef-toggle input:checked+.ef-toggle__track{background:var(--ef-blue)}
.ef-toggle input:checked+.ef-toggle__track::after{transform:translateX(20px)}
.ef-toggle input:focus-visible+.ef-toggle__track{outline:2px solid var(--ef-blue);outline-offset:2px}
.ef-toggle__label{font-size:var(--ef-size-body);line-height:var(--ef-lh-body)}

/* ---------- Adaptatif ---------- */
@media (max-width:1024px){
  .ef-shell{display:block}
  .ef-sidebar{position:fixed;inset:0 auto 0 0;width:var(--ef-sidebar);z-index:50;transform:translateX(-100%);transition:transform .2s ease;box-shadow:none}
  .ef-sidebar.is-open{transform:none}
  .ef-scrim.is-open{display:block}
  .ef-menu-btn{display:inline-flex}
  .ef-topbar{margin:0 calc(var(--ef-6)*-1) var(--ef-6);padding:0 var(--ef-6)}
  .ef-topbar__step{display:none}
  .ef-main{padding:0 var(--ef-6) var(--ef-9)}
  .ef-cols,.ef-cols--narrow,.ef-cols--prompts{grid-template-columns:minmax(0,1fr)}
  .ef-toc{display:none}
  .ef-split{grid-template-columns:minmax(0,1fr)}
  .ef-grid--3{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ef-pills--column{flex-direction:row;overflow-x:auto;flex-wrap:nowrap;padding-bottom:var(--ef-2)}
  .ef-mobile-only{display:flex}
}
@media (max-width:768px){
  .ef-main{padding:0 var(--ef-4) var(--ef-9)}
  .ef-topbar{margin:0 calc(var(--ef-4)*-1) var(--ef-5);padding:0 var(--ef-4)}
  .ef-h1,.ef-topbar__title{font-size:var(--ef-size-section);line-height:var(--ef-lh-section)}
  .ef-grid--2,.ef-grid--3{grid-template-columns:minmax(0,1fr)}
  .ef-band{padding:var(--ef-5)}
  .ef-inline-links a{padding:0 var(--ef-4)}
  .ef-file-row{grid-template-columns:auto minmax(0,1fr)}
  .ef-file-row__spec{display:none}
  .ef-file-row .ef-btn{grid-column:2}
  .ef-pager{grid-template-columns:minmax(0,1fr)}
  .ef-pager__next{border-left:0;border-top:1px solid var(--ef-line);margin-top:var(--ef-3);padding:var(--ef-4) 0 0;align-items:flex-start;text-align:left}
}
