/* Structure commune aux trois maquettes. Chaque maquette définit ses variables et son caractère. */
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--fond);color:var(--encre);font:400 17px/1.6 var(--police-texte);-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%;display:block}
a{color:inherit}
h1,h2,h3{font-family:var(--police-titre);line-height:1.15;margin:0 0 .5em;text-wrap:balance}
p{margin:0 0 1em}
small{font-size:.8em;opacity:.7}
mark{background:var(--surligne);color:inherit;border-radius:3px;padding:0 2px}
:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:4px}
kbd{font:600 11px/1 var(--police-texte);border:1px solid var(--trait);border-bottom-width:2px;border-radius:5px;padding:3px 6px;background:var(--surface);color:var(--encre-2)}
.lien-saut{position:absolute;left:-999px}.lien-saut:focus{left:16px;top:16px;z-index:99;background:var(--surface);padding:8px 12px}

#vue{max-width:var(--largeur,1160px);margin:0 auto;padding:clamp(24px,5vw,56px) 20px 80px;animation:apparait .35s ease}
@keyframes apparait{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
section{margin:56px 0}
section>h2,.annee-titre{font-size:clamp(24px,3vw,32px)}
h2 small{font-family:var(--police-texte);font-size:.5em;vertical-align:middle;background:var(--surface-2);border-radius:99px;padding:3px 10px;opacity:1;color:var(--encre-2)}

/* En-têtes de page */
.page-tete{margin-bottom:36px;max-width:860px}
.page-tete h1{font-size:clamp(38px,6vw,68px);letter-spacing:-.02em}
.surtitre{font:600 13px/1 var(--police-texte);letter-spacing:.14em;text-transform:uppercase;color:var(--accent-texte);margin-bottom:14px}
.chapo{font-size:clamp(18px,2vw,21px);color:var(--encre-2);max-width:760px}
.note{color:var(--encre-2);font-size:15px}
.liste{padding-left:1.1em}.liste li{margin:.35em 0}

/* Chiffres clés */
.chiffres{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin:28px 0}
.chiffre{background:var(--surface);border:1px solid var(--trait);border-radius:var(--rayon);padding:18px 20px}
.chiffre b{display:block;font:700 clamp(26px,3.4vw,36px)/1.1 var(--police-titre);color:var(--accent-texte);letter-spacing:-.02em}
.chiffre span{font-size:14px;color:var(--encre-2)}

/* Puces de mots-clés */
.puces{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 0}
.puce{display:inline-flex;align-items:center;gap:4px;text-decoration:none;font:600 13px/1 var(--police-texte);padding:7px 11px;border-radius:99px;background:var(--puce-fond);color:var(--puce-texte);border:1px solid transparent;transition:.15s}
.puce:hover{border-color:var(--accent);transform:translateY(-1px)}
.puces.petites .puce{font-size:12px;padding:5px 9px}

/* Cartes */
.liste-cartes{display:grid;gap:14px}
.grille-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:16px;margin:24px 0}
.carte{background:var(--surface);border:1px solid var(--trait);border-radius:var(--rayon);padding:22px 24px;scroll-margin-top:100px;transition:box-shadow .2s,border-color .2s,transform .2s}
.carte:hover{box-shadow:var(--ombre);border-color:var(--trait-fort)}
.carte-tete{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px}
.carte-titre{font-size:clamp(18px,2vw,21px);margin:0 0 8px;letter-spacing:-.005em}
.annee{font:700 14px/1 var(--police-texte);color:var(--accent-texte)}
.badge{font:600 12px/1 var(--police-texte);padding:5px 9px;border-radius:6px;background:var(--surface-2);color:var(--encre-2)}
.badge-fort{background:var(--accent);color:var(--accent-encre)}
.badge-or{background:var(--or-fond);color:var(--or-texte)}
.auteurs{font-size:14.5px;color:var(--encre-2);margin:0 0 4px}
.auteurs strong{color:var(--encre)}
.source{font-size:14.5px;color:var(--encre-2);margin:0 0 6px}
.resume{font-size:15.5px;margin:10px 0 0}
.carte-pied{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:10px;margin-top:12px}
.liens{display:flex;flex-wrap:wrap;gap:8px}
.lien-ext,.profil{font:600 13.5px/1 var(--police-texte);text-decoration:none;padding:8px 12px;border-radius:8px;border:1px solid var(--trait);background:var(--fond);white-space:nowrap}
.lien-ext:hover,.profil:hover{border-color:var(--accent);color:var(--accent-texte)}
.profils{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0}
.lien-interne{font-weight:600;color:var(--accent-texte)}
.lies{margin-top:14px;padding-top:12px;border-top:1px dashed var(--trait);display:flex;flex-direction:column;gap:6px}
.lies-titre{font:700 11.5px/1 var(--police-texte);letter-spacing:.12em;text-transform:uppercase;color:var(--encre-2)}
.lien-croise{font-size:14px;text-decoration:none;color:var(--encre)}
.lien-croise:hover{color:var(--accent-texte)}
.lc-genre{font:700 11px/1 var(--police-texte);text-transform:uppercase;letter-spacing:.06em;color:var(--accent-texte);margin-right:4px}
.eclair{animation:eclair 2.2s ease}
@keyframes eclair{0%,40%{box-shadow:0 0 0 4px var(--accent)}100%{box-shadow:none}}

.interventions{list-style:none;padding:0;margin:14px 0 0;display:grid;gap:14px}
.interventions li{padding-left:14px;border-left:3px solid var(--accent)}
.iv-type{display:block;font:700 11.5px/1.3 var(--police-texte);letter-spacing:.08em;text-transform:uppercase;color:var(--accent-texte);margin-bottom:3px}
.iv-titre{display:block;font-weight:600;line-height:1.35;margin-bottom:3px}
.interventions .resume{font-size:14.5px;color:var(--encre-2)}

/* Carte des idées */
.constellation{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 320px;align-items:center;border:1px solid var(--trait);border-radius:calc(var(--rayon) * 1.3);background:radial-gradient(circle at 45% 45%,var(--surface-2) 0,var(--surface) 70%);overflow:hidden}
.constellation svg{display:block;width:100%;height:auto;padding-top:34px;touch-action:manipulation}
.constellation .aide{position:absolute;left:18px;top:14px;right:340px;font:700 11.5px/1.4 var(--police-texte);letter-spacing:.1em;text-transform:uppercase;color:var(--encre-2)}
.noeud{cursor:pointer}
.noeud circle{transition:opacity .2s}
.noeud .lbl{font:700 13px var(--police-texte);fill:var(--encre);paint-order:stroke;stroke:var(--surface);stroke-width:4px;stroke-linejoin:round;pointer-events:none}
.noeud .n{font:700 15px var(--police-titre);fill:#0b0d12;pointer-events:none}
.arete{stroke:var(--trait-fort);transition:opacity .2s,stroke .2s}
svg.focus .noeud:not(.voisin):not(.actif){opacity:.18}
svg.focus .arete{opacity:.08}
svg.focus .arete.actif{opacity:1;stroke:var(--accent)}
.noeud.actif circle{stroke:var(--encre);stroke-width:3px}
.apercu{margin:16px;align-self:stretch;background:var(--fond);border:1px solid var(--trait);border-radius:16px;padding:16px 18px;font-size:14px}
.apercu h3{font:700 22px/1.15 var(--police-titre);margin:0 0 6px}
.apercu p{color:var(--encre-2);margin:0 0 10px}
.apercu ul{list-style:none;margin:0 0 12px;padding:0;display:grid;gap:8px}
.apercu li a{text-decoration:none;display:block;line-height:1.35}
.apercu li small{display:block;font-weight:700;letter-spacing:.06em;text-transform:uppercase;font-size:10.5px;color:var(--accent-texte);opacity:1}
.apercu .ouvrir{font-weight:800;color:var(--accent-texte);text-decoration:none}
.apercu .relie{margin-top:10px;font-size:12.5px}.apercu .relie a{color:inherit}
@media (max-width:1000px){.constellation{grid-template-columns:1fr}.constellation .aide{right:18px}.apercu{margin:0 12px 12px}}
.constellation.etroite .noeud .lbl{font-size:21px;stroke-width:6px}.constellation.etroite .noeud .n{font-size:20px}
.constellation.etroite svg{padding-top:84px}
@media (max-width:640px){.constellation svg{padding-top:64px}}

/* Distinctions */
.distinctions-grille{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:12px}
.distinction{display:flex;flex-direction:column;gap:6px;text-decoration:none;background:var(--surface);border:1px solid var(--trait);border-radius:var(--rayon);padding:16px 18px;transition:.2s}
a.distinction:hover{transform:translateY(-2px);box-shadow:var(--ombre)}
.distinction strong{font:600 16px/1.35 var(--police-titre);color:var(--or-texte)}
.d-annee{font:700 13px var(--police-texte);color:var(--accent-texte)}
.d-texte{font-size:14px;color:var(--encre-2)}

/* Thème d'une intervention */
.theme-media{font-size:15px;margin:8px 0 0}

/* Déontologie */
.interets{font-size:13.5px;color:var(--encre-2);background:var(--surface-2);border-radius:8px;padding:8px 10px;margin:12px 0 0}
.interets a{color:var(--accent-texte);font-weight:600}
.identite-pro{background:var(--surface);border:1px solid var(--trait);border-left:4px solid var(--accent);border-radius:var(--rayon);padding:16px 20px;margin:0 0 20px}
.identite-pro p{margin:0 0 6px}
.frise-el.type-conseil::before{border-color:var(--encre-2)}

/* Articles à la une */
.vedettes-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:12px}
.vedette{display:flex;flex-direction:column;gap:8px;text-decoration:none;background:var(--surface);border:1px solid var(--trait);border-top:4px solid var(--accent);border-radius:var(--rayon);padding:16px 18px;transition:.2s}
.vedette:hover{transform:translateY(-2px);box-shadow:var(--ombre)}
.vedette .v-tete{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.vedette .annee{margin-left:auto}
.vedette strong{font:600 16.5px/1.35 var(--police-titre)}
.vedette em{font-size:13.5px;color:var(--encre-2)}

/* Médias */
.carte-media .carte-tete{gap:10px}
.media-icone{font-size:18px}
.media-nom{font-weight:700;font-size:14.5px}
.date{font-size:13.5px;color:var(--encre-2);margin-left:auto}
.extrait{margin:10px 0 0;padding:4px 0 4px 14px;border-left:3px solid var(--accent-2);font:italic 500 17px/1.4 var(--police-titre);color:var(--encre)}
.video{position:relative;aspect-ratio:16/9;border-radius:var(--rayon);overflow:hidden;background:#0b0b0b;margin:14px 0 4px}
.video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.video-bouton{position:absolute;inset:0;width:100%;border:0;cursor:pointer;color:#fff;background:radial-gradient(circle at 30% 20%,var(--accent) 0,transparent 55%),linear-gradient(135deg,#111 0%,#262626 100%);display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-end;gap:6px;padding:22px;text-align:left;font-family:var(--police-texte)}
.video-play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:74px;height:74px;border-radius:50%;background:rgba(255,255,255,.95);color:#111;display:grid;place-items:center;font-size:24px;padding-left:5px;transition:transform .2s}
.video-bouton:hover .video-play{transform:translate(-50%,-50%) scale(1.08)}
.video-texte{font:700 18px/1.25 var(--police-titre);max-width:90%}
.video-note{font-size:12.5px;opacity:.75}
.video-legende{font-size:14px;color:var(--encre-2);margin-top:6px}

/* Stop Postillons */
.stop-postillons{background:var(--sp-fond);color:var(--sp-encre);border-radius:calc(var(--rayon) * 1.6);padding:clamp(24px,5vw,48px);scroll-margin-top:100px}
.stop-postillons h2{font-size:clamp(34px,5vw,56px);margin-bottom:6px}
.sp-slogan{font:italic 500 clamp(18px,2.2vw,24px)/1.3 var(--police-titre);opacity:.9}
.sp-corps{max-width:760px;margin-top:18px}
.stop-postillons .chiffre{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.18)}
.stop-postillons .chiffre b{color:var(--sp-accent)}
.stop-postillons .chiffre span{color:inherit;opacity:.8}
.stop-postillons .surtitre{color:var(--sp-accent)}
.stop-postillons .lien-ext{background:transparent;color:inherit;border-color:rgba(255,255,255,.35)}
.stop-postillons .lien-croise{color:inherit}.stop-postillons .lc-genre{color:var(--sp-accent)}
.stop-postillons .lies{border-color:rgba(255,255,255,.25)}.stop-postillons .lies-titre{color:inherit;opacity:.7}

/* Filtres */
.filtres{display:grid;gap:10px;margin:20px 0 22px;padding:14px;border-radius:var(--rayon);background:var(--surface-2)}
.filtre-ligne{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.filtre-label{font:700 11.5px/1 var(--police-texte);letter-spacing:.12em;text-transform:uppercase;color:var(--encre-2);margin-right:6px;min-width:52px}
.filtre{font:600 13px/1 var(--police-texte);padding:8px 11px;border-radius:99px;border:1px solid var(--trait);background:var(--surface);color:var(--encre);cursor:pointer}
.filtre.actif{background:var(--encre);color:var(--fond);border-color:var(--encre)}
.filtre small{opacity:.6;margin-left:2px}

/* Frise */
.frise{list-style:none;margin:20px 0;padding:0;position:relative}
.frise::before{content:"";position:absolute;left:112px;top:6px;bottom:6px;width:2px;background:var(--trait)}
.frise-el{display:grid;grid-template-columns:100px 1fr;gap:32px;padding:10px 0;position:relative;scroll-margin-top:100px}
.frise-el::before{content:"";position:absolute;left:106px;top:18px;width:14px;height:14px;border-radius:50%;background:var(--fond);border:3px solid var(--accent)}
.frise-el.type-soins::before{border-color:var(--c-soins)}.frise-el.type-universite::before{border-color:var(--c-univ)}.frise-el.type-engagement::before{border-color:var(--c-eng)}
.frise-date{font:700 14px/1.4 var(--police-texte);color:var(--encre-2);text-align:right;padding-top:8px}
.frise-corps h3{font-size:19px;margin:6px 0 4px}.frise-corps p{margin:0;color:var(--encre-2);font-size:15.5px}
.frise-corps a{text-decoration:none}
.bio p{font-size:clamp(17px,1.7vw,19px);max-width:780px}

/* Barres et jauges */
.barres{display:grid;gap:8px;margin-top:14px}
.barre-ligne{display:grid;grid-template-columns:92px 1fr 60px;gap:12px;align-items:center;font-size:14px}
.barre{display:flex;height:16px;border-radius:99px;background:var(--surface-2);overflow:hidden}
.seg{height:100%}.seg-3,.legende .seg-3{background:var(--accent)}.seg-2,.legende .seg-2{background:var(--accent-2)}.seg-t,.legende .seg-t{background:var(--encre-2)}
.barre-val{font-weight:700;text-align:right}
.legende{font-size:13.5px;color:var(--encre-2);display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.legende span{display:inline-block;width:12px;height:12px;border-radius:3px;margin-left:10px}
.grille-cnu{display:grid;gap:10px;margin-top:10px}
.cnu-ligne{display:grid;grid-template-columns:minmax(150px,280px) 1fr 70px;gap:14px;align-items:center;font-size:14.5px}
.jauge{height:10px;border-radius:99px;background:var(--surface-2);overflow:hidden}.jauge span{display:block;height:100%;background:var(--accent);border-radius:99px}
.cnu-ligne b{text-align:right}

/* Blocs d'action */
.bloc-action{display:flex;flex-direction:column;gap:6px;text-decoration:none;padding:24px 26px;border-radius:var(--rayon);background:var(--surface);border:1px solid var(--trait);transition:.2s}
.bloc-action strong{font:700 clamp(21px,2.4vw,26px)/1.2 var(--police-titre)}
.bloc-action span:last-child{color:var(--encre-2);font-size:15px}
.ba-sur{font:700 11.5px/1 var(--police-texte);letter-spacing:.14em;text-transform:uppercase;color:var(--accent-texte)}
.bloc-action:hover{transform:translateY(-2px);box-shadow:var(--ombre)}
.bloc-rdv{background:var(--accent);color:var(--accent-encre);border-color:var(--accent)}
.bloc-rdv .ba-sur,.bloc-rdv span:last-child{color:inherit;opacity:.85}
.urgence{font-size:14.5px;padding:12px 16px;border-radius:10px;background:var(--surface-2)}

/* Thèmes & résultats */
.theme-resume{display:flex;flex-wrap:wrap;gap:10px}
.theme-resume a{text-decoration:none;padding:9px 14px;border-radius:10px;background:var(--surface);border:1px solid var(--trait);font-size:15px}
.theme-resume b{color:var(--accent-texte)}
.voisins{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0 0 20px}
.resultats{display:grid;gap:8px}
.resultat{display:flex;flex-direction:column;gap:3px;text-decoration:none;padding:12px 16px;border-radius:12px;background:var(--surface);border:1px solid var(--trait)}
.resultat:hover,.resultat.selection{border-color:var(--accent);background:var(--surface-2)}
.res-rub{font:700 11px/1.2 var(--police-texte);letter-spacing:.1em;text-transform:uppercase;color:var(--accent-texte)}
.res-titre{font-weight:600;line-height:1.35}
.res-meta{font-size:13.5px;color:var(--encre-2)}
.tout-voir .res-titre{color:var(--accent-texte)}
.recherche-page{display:flex;gap:8px;margin-top:10px;max-width:640px}
.recherche-page input{flex:1;font:inherit;padding:12px 16px;border-radius:12px;border:1px solid var(--trait);background:var(--surface);color:var(--encre)}
.recherche-page button{font:600 15px var(--police-texte);padding:0 18px;border-radius:12px;border:0;background:var(--accent);color:var(--accent-encre);cursor:pointer}

/* Palette de recherche */
.palette{position:fixed;inset:0;z-index:100}
.palette-fond{position:absolute;inset:0;background:rgba(10,10,14,.45);backdrop-filter:blur(6px)}
.palette-boite{position:relative;max-width:680px;margin:10vh auto 0;background:var(--surface);color:var(--encre);border:1px solid var(--trait);border-radius:18px;box-shadow:0 30px 80px rgba(0,0,0,.35);overflow:hidden;width:calc(100% - 32px)}
.palette-champ{display:flex;align-items:center;gap:12px;padding:16px 18px;border-bottom:1px solid var(--trait);font-size:22px;color:var(--encre-2)}
.palette-champ input{flex:1;border:0;outline:0;background:transparent;font:500 19px var(--police-texte);color:var(--encre);min-width:0}
.palette-res{max-height:min(60vh,520px);overflow:auto;padding:10px;display:grid;gap:6px}
.palette-titre,.palette-vide{font:700 11.5px/1 var(--police-texte);letter-spacing:.12em;text-transform:uppercase;color:var(--encre-2);margin:6px 6px 4px}
.palette-pied{display:flex;gap:16px;padding:10px 16px;border-top:1px solid var(--trait);font-size:12.5px;color:var(--encre-2);flex-wrap:wrap}
html.palette-ouverte{overflow:hidden}

/* Suggestions sous un champ en ligne */
.suggestions{position:absolute;left:0;right:0;top:calc(100% + 8px);z-index:20;background:var(--surface);border:1px solid var(--trait);border-radius:16px;box-shadow:var(--ombre);padding:8px;display:grid;gap:6px;max-height:420px;overflow:auto;text-align:left}

@media (max-width:640px){
  body{font-size:16px}
  .frise::before{left:10px}.frise-el{grid-template-columns:1fr;gap:2px;padding-left:34px}.frise-el::before{left:4px}.frise-date{text-align:left;padding-top:0}
  .barre-ligne{grid-template-columns:72px 1fr 48px;gap:8px}
  .cnu-ligne{grid-template-columns:1fr 60px}.cnu-ligne .jauge{grid-column:1/-1;order:3}
  .carte{padding:18px}
  .date{margin-left:0;width:100%}
  .palette-boite{margin-top:4vh}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
