/* Atelier — feuille de style de la version commerciale, écrite pour ce projet.
   Unités : rem = 10 px ; --u = 1 px d'une maquette de 1440 px (375 px sous 1024 px), pour les blocs qui suivent la largeur d'écran. */

:root {
  --chaux: #ede7e1; --encre: #2b2825; --pierre: #b9aea3; --terre: #8c5a3c; --clair: #f4f1ed; --blanc: #fbf9f6;
  --trait: rgba(43, 40, 37, .2); --trait-leger: rgba(43, 40, 37, .1); --trait-clair: rgba(237, 231, 225, .2);
  --f-texte: "Inter", "Helvetica Neue", Arial, sans-serif;
  --f-titre: "Inter Tight", "Inter", "Helvetica Neue", Arial, sans-serif;
  --u: calc(100vw / 1440);
  --sortie: cubic-bezier(.2, .8, .3, 1);
  --glisse: cubic-bezier(.7, 0, .2, 1);
  --vh: 1vh;
}
@media (max-width: 1023px) { :root { --u: calc(100vw / 375); } }

/* ---------- socle ---------- */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { font-size: 62.5%; background: var(--chaux); color: var(--encre); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-size-adjust: 100%; }
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-stopped { overflow: hidden; }
body { background: var(--chaux); font: 400 1.4rem/1.6 var(--f-texte); min-height: 100vh; }
.entree__texte, .bloc-media__resume, .tiroir__paras, .registre__entete, .competences__liste, .formulaire input, .formulaire textarea, .lecteur__temps { letter-spacing: -.05rem; }
main { display: block; overflow-x: clip; }
img, video, svg { display: block; max-width: 100%; }
img, video { height: auto; }
picture { display: contents; }
a { color: inherit; text-decoration: none; }
button, input, textarea { font: inherit; color: inherit; letter-spacing: inherit; background: none; border: 0; border-radius: 0; }
button { cursor: pointer; text-align: inherit; text-transform: inherit; }
ol, ul { list-style: none; }
h1, h2, h3, h4, p, dd, dt { font: inherit; }
b { font-weight: 500; }
::selection { background: var(--encre); color: var(--chaux); }
:focus-visible { outline: 2px solid var(--terre); outline-offset: 3px; }
.sprite { position: absolute; width: 0; height: 0; overflow: hidden; }
.visuel-masque { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.evitement { position: fixed; left: 1rem; top: -10rem; z-index: 300; background: var(--encre); color: var(--chaux); padding: 1rem 1.6rem; font-size: 1.4rem; }
.evitement:focus { top: 1rem; }
.ico { width: 3.4rem; height: 1rem; flex: 0 0 auto; }
body > :not(.curseur):not(.visionneuse):not(.sprite) { opacity: 0; transition: opacity .35s var(--sortie); }
.est-pret body > :not(.curseur):not(.visionneuse):not(.sprite) { opacity: 1; }

/* petites capitales communes */
.petit, .barre__liens, .barre__cv, .rubrique__lien, .panneau__coord, .trait, .pied__coord, .pied__mentions, .entree__etiquette, .entree__valeur,
.bloc-media__titre, .registre__ligne, .profil__retour, .profil__role, .profil__defiler, .tiroir__sous-titre {
  font-size: 1.3rem; line-height: 1.8; letter-spacing: -.05rem; text-transform: uppercase;
}
.legende { display: block; margin-top: 1rem; font-size: 1.2rem; line-height: 1.4; letter-spacing: -.02em; text-transform: uppercase; opacity: .65; }
.statut { display: inline-flex; gap: .6em; align-items: center; font-size: 1.2rem; line-height: 1.2; font-weight: 500; letter-spacing: -.02em; text-transform: uppercase; }
.statut::before { content: ""; width: .7em; height: .7em; border-radius: 50%; background: var(--terre); }

/* ---------- lien souligné avec flèche ---------- */
.trait { position: relative; display: inline-flex; align-items: center; justify-content: space-between; min-width: 20rem; padding-bottom: 1rem; overflow: hidden; }
.trait::before, .trait::after { content: ""; position: absolute; left: 0; bottom: 0; width: 100%; height: 1px; background: currentColor; }
.trait::after { transform: translateX(-101%); }
.trait__fleche { display: block; margin-left: 4rem; overflow: hidden; }
.trait__fleche .ico { width: 3.2rem; }
@media (hover: hover) {
  .trait:hover::before, .relance__cadre:hover .trait::before { transform: translateX(101%); transition: transform .5s var(--glisse); }
  .trait:hover::after, .relance__cadre:hover .trait::after { transform: none; transition: transform .5s var(--glisse) .12s; }
  .trait:hover .trait__fleche .ico, .relance__cadre:hover .trait__fleche .ico, .formulaire__envoi:hover .ico { animation: relais-fleche .7s var(--glisse); }
  .trait.trait--retour:hover .trait__fleche .ico { animation-direction: reverse; }
}
@keyframes relais-fleche { 0% { transform: none; } 48% { transform: translateX(105%); } 52% { transform: translateX(-105%); } 100% { transform: none; } }

/* ---------- pastille ---------- */
.pastille { position: relative; display: inline-flex; align-items: center; padding: calc(6 * var(--u)) calc(16 * var(--u)); border-radius: 100rem; color: #000; overflow: hidden; white-space: nowrap; transition: background-color .35s ease; }
.pastille__fond { position: absolute; left: 0; top: 50%; width: 100%; height: 100%; border-radius: calc(28 * var(--u)); background: var(--pastille, #d9d3cc); transform: translateY(-50%); transition: width .38s var(--sortie), height .38s var(--sortie), left .38s var(--sortie); }
.pastille__texte { position: relative; z-index: 1; font: 500 calc(12 * var(--u))/1 var(--f-titre); text-transform: uppercase; transition: color .3s, padding .38s var(--sortie); }
@media (hover: hover) {
  .pastille:hover { background: var(--encre); }
  .pastille:hover .pastille__fond { width: calc(9 * var(--u)); height: calc(9 * var(--u)); left: calc(8 * var(--u)); }
  .pastille:hover .pastille__texte { color: #fff; padding-left: calc(9 * var(--u)); }
}

/* ---------- barre ---------- */
.barre { position: fixed; inset: 0 0 auto; z-index: 120; height: 6rem; padding: 0 2rem; display: flex; align-items: center; justify-content: space-between; color: var(--encre); transition: color .3s; }
.tete-sombre[data-haut="oui"] .barre, .menu-ouvert .barre { color: var(--chaux); }
.barre__fond { position: absolute; inset: 0; z-index: -1; background: var(--chaux); opacity: 0; pointer-events: none; transition: opacity .12s; }
[data-haut="non"] .barre__fond { opacity: 1; transition-duration: .3s; }
.menu-ouvert .barre__fond { opacity: 0; }
.barre__logo { display: block; width: 3.6rem; height: 3.6rem; transition: opacity .3s; }
.barre__logo span { display: grid; place-items: center; width: 100%; height: 100%; border: 1px solid currentColor; border-radius: 50%; font: 600 1.3rem/1 var(--f-titre); letter-spacing: -.02em; }
.barre__logo:hover { opacity: .6; }
.barre__liens { position: fixed; top: 0; left: 50vw; height: 6rem; display: flex; align-items: center; transform: translate(-50%, -100%); transition: transform .5s var(--sortie), height .5s var(--sortie); z-index: 121; }
.est-pret .barre__liens { transform: translate(-50%, 0); }
[data-haut="non"] .barre__liens { height: 4rem; }
.menu-ouvert .barre__liens { transform: translate(-50%, -100%); pointer-events: none; }
.barre__liens span { margin: 0 .5rem; }
.barre__liens a { position: relative; overflow: hidden; }
.barre__liens a::after { content: ""; position: absolute; left: 0; bottom: 0; width: 100%; height: 1px; background: currentColor; transform: scaleX(0); transform-origin: right; transition: transform .8s var(--sortie); }
.barre__liens a:hover::after { transform: scaleX(1); transform-origin: left; }
.barre__actions { display: flex; align-items: center; gap: 2rem; }
.barre__menu { position: relative; width: 2.3rem; height: 3rem; }
.barre__menu::before, .barre__menu::after { content: ""; position: absolute; left: 0; top: 50%; width: 100%; height: 1px; background: currentColor; transition: transform .7s var(--sortie); }
.barre__menu::before { transform: translateY(-.4rem); }
.barre__menu::after { transform: translateY(.4rem); }
.menu-ouvert .barre__menu::before { transform: rotate(45deg); }
.menu-ouvert .barre__menu::after { transform: rotate(-45deg); }

/* ---------- panneau de navigation ---------- */
.panneau { position: fixed; inset: 0; z-index: 119; padding: 7rem 2rem 3rem; background: var(--voile-panneau, rgba(43, 40, 37, .62)); -webkit-backdrop-filter: blur(.5rem); backdrop-filter: blur(.5rem); color: var(--chaux); overflow: auto; opacity: 0; visibility: hidden; transition: opacity .45s var(--sortie), visibility 0s .45s; }
.menu-ouvert .panneau { opacity: 1; visibility: visible; transition: opacity .45s var(--sortie); }
.panneau__grille { display: grid; grid-template-columns: 48rem 38rem; justify-content: space-between; padding-top: 6vh; min-height: 100%; }
.rubrique__tete { position: relative; overflow: hidden; }
.rubrique__tete::before, .rubrique__tete::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1px; background: currentColor; transform: scaleX(0); transition: transform .9s var(--sortie); }
.rubrique__tete::before { opacity: .2; transform-origin: left; }
.rubrique__tete::after { transform-origin: right; transition-duration: .45s; }
.menu-ouvert .rubrique__tete::before { transform: scaleX(1); transition-delay: calc(var(--r) * .18s - .06s); }
.rubrique.est-ouverte .rubrique__tete::after, .rubrique:hover .rubrique__tete::after { transform: scaleX(1); transform-origin: left; }
.rubrique__bouton { width: 100%; display: flex; align-items: center; padding: 1.6rem 0; transform: translateY(100%); transition: transform .9s var(--sortie); }
.menu-ouvert .rubrique__bouton { transform: none; transition-delay: calc(var(--r) * .18s - .06s); }
.rubrique__numero { flex: 0 0 12rem; align-self: flex-end; margin-bottom: .4rem; font-size: 1.3rem; line-height: 1.8; letter-spacing: -.05rem; }
.rubrique__titre { flex: 1; font-size: 3rem; line-height: 1.2; letter-spacing: -.03em; text-transform: uppercase; }
.rubrique__bouton .ico { width: 1.6rem; height: 1.6rem; }
.rubrique__moins, .est-ouverte .rubrique__plus { display: none; }
.est-ouverte .rubrique__moins { display: block; }
.rubrique__corps { display: grid; grid-template-rows: 0fr; opacity: 0; transition: grid-template-rows .55s var(--sortie), opacity .55s var(--sortie); }
.rubrique.est-ouverte .rubrique__corps { grid-template-rows: 1fr; opacity: 1; }
.rubrique__liste { min-height: 0; overflow: hidden; position: relative; padding: 0 0 0 12rem; }
.rubrique__liste::before { content: ""; display: block; height: 2rem; }
.rubrique__liste::after { content: ""; display: block; height: 2rem; border-bottom: 1px solid var(--trait-clair); transform: scaleX(0); transform-origin: left; transition: transform .9s var(--sortie); }
.menu-ouvert .rubrique__liste::after { transform: scaleX(1); transition-delay: .55s; }
.rubrique__item { position: relative; overflow: hidden; transition: color .3s; }
.rubrique__item:not(:last-child)::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; border-bottom: 1px solid currentColor; opacity: .2; transform: scaleX(0); transform-origin: left; transition: transform .9s var(--sortie); }
.menu-ouvert .rubrique__item::after { transform: scaleX(1); transition-delay: calc(.28s + var(--i) * .09s); }
.rubrique__liste:hover .rubrique__item { color: var(--chaux-50, rgba(237, 231, 225, .5)); }
.rubrique__liste .rubrique__item:hover { color: var(--chaux); }
.rubrique__lien { display: flex; align-items: center; padding: 1rem 5rem 1rem 0; transform: translateY(100%); transition: transform .9s var(--sortie); }
.menu-ouvert .rubrique__lien { transform: none; transition-delay: calc(.08s + var(--i) * .09s); }
.rubrique__num { width: 3.5rem; flex: 0 0 auto; }
.rubrique__fleche { position: absolute; right: 0; top: 50%; margin-top: -.5rem; opacity: 0; transform: translateX(-1rem); transition: opacity .25s, transform .3s var(--sortie); }
.rubrique__item:hover .rubrique__fleche { opacity: 1; transform: none; }
.panneau__infos { display: flex; flex-direction: column; align-items: flex-start; opacity: 0; transition: opacity .6s var(--sortie); }
.menu-ouvert .panneau__infos { opacity: 1; transition-delay: 1s; }
.panneau__coord { display: grid; gap: 4rem; margin-bottom: 4rem; }
.panneau__coord dd { margin-top: 1rem; }
.panneau__contact { margin-top: auto; }

/* ---------- pied de page ---------- */
.pied { position: relative; z-index: 2; display: flex; flex-direction: column; min-height: 100vh; border-top: 1px solid var(--trait); overflow: hidden; }
.pied__appel { position: relative; flex: 1; min-height: 65.6rem; padding: 0 2rem; display: flex; align-items: center; justify-content: center; }
.pied__grand { display: flex; align-items: center; font-size: 5rem; line-height: 1.5; font-weight: 300; letter-spacing: -.03em; text-transform: uppercase; }
.pied__fleche { width: 30rem; height: 3.8rem; margin-right: .75rem; stroke-width: .6; transition: transform .7s var(--sortie); }
.pied__grand:hover .pied__fleche { transform: translateX(1.6rem); }
.pied__bas { border-top: 1px solid var(--trait); padding-top: 2rem; font-weight: 500; }
.pied__haut { margin: 0 2rem; display: flex; justify-content: space-between; align-items: flex-start; }
.pied__coord { display: grid; grid-template-columns: repeat(4, 23rem); gap: 2rem; }
.pied__coord dt { margin-bottom: 2rem; }
.pied__coord a { position: relative; display: inline-block; overflow: hidden; vertical-align: top; }
.pied__coord a::after { content: ""; position: absolute; left: 0; bottom: .2rem; width: 100%; height: 1px; background: currentColor; transform: translateX(-101%); transition: transform .45s var(--sortie); }
.pied__coord a:hover::after { transform: none; }
.pied__mentions { margin: 2rem 2rem 0; padding: 1rem 0; display: flex; justify-content: space-between; }
.pied__mentions p:first-child { width: 50rem; }
.pied__mentions p:nth-child(2) { opacity: .5; margin-right: auto; }
.remonter { position: fixed; right: 2rem; bottom: 5.5rem; z-index: 4; width: 5rem; height: 5rem; border-radius: 50%; background: var(--chaux); display: flex; align-items: center; justify-content: center; transform: translateY(calc(100% + 6rem)); transition: transform .7s var(--sortie); }
.remonter .ico { width: 1.2rem; height: 2rem; }
.voir-remonter .remonter { transform: none; }

/* ---------- curseur ---------- */
.curseur { position: fixed; left: 0; top: 0; z-index: 130; width: 1rem; height: 1rem; margin: -.5rem 0 0 -.5rem; border-radius: 50%; background: rgba(0, 0, 0, .4); pointer-events: none; opacity: 0; transition: opacity .4s; will-change: transform; }
.curseur.est-actif { opacity: 1; }

/* ---------- images ouvrables ---------- */
.agrandir { position: relative; display: block; width: 100%; cursor: zoom-in; }
.agrandir img { width: 100%; }
.loupe { position: absolute; right: 1.6rem; bottom: 1.9rem; z-index: 3; width: 2.4rem; height: 2.4rem; pointer-events: none; transition: transform .4s var(--sortie); }
.loupe svg { width: 100%; height: 100%; }
.loupe circle { fill: rgba(255, 255, 255, .2); }
.loupe path { stroke: #fff; stroke-width: 1.4; }
.agrandir:hover .loupe { transform: scale(1.15); }

/* ---------- visionneuse ---------- */
.visionneuse { position: fixed; inset: 0; z-index: 400; background: #000; color: #fff; opacity: 0; visibility: hidden; transition: opacity .3s ease, visibility 0s .3s; }
.visionneuse.est-ouverte { opacity: 1; visibility: visible; transition: opacity .3s ease; }
.visionneuse__piste { position: absolute; inset: 0; }
.visionneuse__vue { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; padding: calc(56 * var(--u)) calc(72 * var(--u)); opacity: 0; transform: translateX(calc(var(--sens, 1) * 4%)); transition: opacity .45s ease, transform .55s var(--sortie); pointer-events: none; }
.visionneuse__vue.est-active { opacity: 1; transform: none; }
.visionneuse__vue img { max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; }
.visionneuse__dessin { background: var(--clair); padding: 3vw; width: min(90vw, 110rem); }
.visionneuse__dessin svg { width: 100%; height: auto; }
.visionneuse__fermer { position: absolute; top: calc(20 * var(--u)); right: calc(24 * var(--u)); z-index: 10; display: flex; align-items: center; gap: calc(12 * var(--u)); font: 600 calc(12 * var(--u))/1 var(--f-titre); letter-spacing: -.012em; text-transform: uppercase; color: #fff; }
.visionneuse__fermer svg { width: calc(24 * var(--u)); margin-top: calc(-4 * var(--u)); transition: transform .3s ease; }
.visionneuse__fermer circle { fill: rgba(255, 255, 255, .2); }
.visionneuse__fermer path { stroke: #fff; stroke-width: 1.2; }
.visionneuse__fermer:hover svg { transform: rotate(90deg); }
.visionneuse__legende { position: absolute; left: 1.5rem; bottom: 1.25rem; z-index: 10; font-size: 1.2rem; line-height: 1.4; letter-spacing: -.02em; text-transform: uppercase; color: var(--chaux); opacity: .65; }
.visionneuse__compte { position: absolute; right: 1.5rem; bottom: 1.25rem; z-index: 10; font: 600 1.2rem/1.4 var(--f-titre); }
.visionneuse__prec, .visionneuse__suiv { position: absolute; top: 0; bottom: 0; width: 50%; z-index: 3; display: flex; align-items: center; padding: 0 2.4rem; }
.visionneuse__prec { left: 0; cursor: w-resize; } .visionneuse__suiv { right: 0; justify-content: flex-end; cursor: e-resize; }
.visionneuse__prec span, .visionneuse__suiv span { width: 3.2rem; height: 3.2rem; border-radius: 50%; background: rgba(255, 255, 255, .12); display: grid; place-items: center; opacity: 0; transition: opacity .3s; }
.visionneuse__prec:hover span, .visionneuse__suiv:hover span, .visionneuse__prec:focus-visible span, .visionneuse__suiv:focus-visible span { opacity: 1; }
.visionneuse__prec .ico, .visionneuse__suiv .ico { width: 1.4rem; }

/* ---------- apparitions ---------- */
[data-lignes], [data-lettres] { visibility: hidden; }
.est-decoupe { visibility: visible; }
.ligne { display: block; overflow: hidden; padding-bottom: .08em; margin-bottom: -.08em; }
.ligne__int { display: block; transform: translateY(105%); opacity: 0; transition: transform .9s var(--sortie), opacity .9s var(--sortie); transition-delay: calc(var(--l) * .06s + .08s); }
.est-vu .ligne__int { transform: none; opacity: 1; }
.mot { display: inline-block; white-space: nowrap; perspective: 900px; }
.lettre { display: inline-block; opacity: 0; transform: rotateY(80deg); transition: opacity .55s var(--sortie), transform .65s var(--sortie); transition-delay: calc(var(--m) * 1s + var(--c) * .035s); }
.est-vu .lettre { opacity: 1; transform: none; }
[data-fondu] { opacity: 0; transition: opacity 1s ease-out; }
[data-fondu].est-vu { opacity: 1; }

/* =========================================================
   ACCUEIL
   ========================================================= */
.ouverture { position: relative; height: 100vh; height: 100lvh; overflow: hidden; color: #fff; display: flex; align-items: flex-end; }
.ouverture__scene { position: absolute; inset: 0; background: #111; overflow: hidden; perspective: 1400px; will-change: transform; }
.ouverture__image { position: absolute; inset: 0; transform: scale(1.012); transition: transform 1.2s var(--sortie); }
.ouverture__image img { width: 100%; height: 100%; object-fit: cover; }
.ouverture__scene::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0, 0, 0, .35), transparent 35%, rgba(0, 0, 0, .45)); pointer-events: none; }
.ouverture__nom { position: absolute; left: 50%; top: 50%; z-index: 2; transform: translate(-50%, -50%); white-space: nowrap; font: 600 calc(64 * var(--u))/1 var(--f-titre); letter-spacing: -.03em; text-transform: uppercase; transition: opacity .8s ease; }
.ouverture__nom.est-parti { opacity: 0; }
.ouverture__bas { position: relative; z-index: 2; width: 100%; display: flex; align-items: center; justify-content: space-between; padding: 0 calc(25 * var(--u)) calc(16 * var(--u)); opacity: 0; transition: opacity 1s ease-in-out 1.6s; }
.ouverture__titre { display: flex; opacity: 0; transition: opacity .6s var(--sortie) 1.8s; }
.est-pret .ouverture__bas, .est-pret .ouverture__titre { opacity: 1; }
.ouverture__titre span { font-size: calc(11.2 * var(--u)); line-height: calc(12 * var(--u)); letter-spacing: -.016em; text-transform: uppercase; }
.ouverture__titre span:first-child { margin-right: calc(53 * var(--u)); }

.manifeste { position: relative; z-index: 2; height: calc(var(--n) * 100vh); }
.manifeste__colle { position: sticky; top: 0; height: 100vh; overflow: hidden; }
.manifeste__phrases { position: relative; height: 100%; transform: translateY(calc(var(--decale, 0) * 1%)); }
.manifeste__phrase { position: absolute; left: 0; right: 0; top: 50%; transform: translateY(-50%); padding: 0 calc(8 * var(--u)); text-align: center; text-transform: uppercase; font: 600 calc(64 * var(--u))/calc(56 * var(--u)) var(--f-titre); }
.manifeste__phrase .lettre { transition: none; transform: rotateY(calc((1 - var(--v, 0)) * 90deg)); opacity: var(--v, 0); }

.presentation { position: relative; z-index: 2; height: 400vh; }
.presentation__colle { position: sticky; top: 0; height: 100vh; overflow: hidden; display: flex; }
.presentation__photo { position: relative; flex: 0 0 calc(var(--p, 1) * 100%); overflow: hidden; }
.presentation__image { position: absolute; inset: 0; transform: translateY(calc(var(--sortie-p, 0) * 40%)) scale(calc(1.2 - var(--p, 1) * .2)); }
.presentation__image img { width: 100%; height: 100%; object-fit: cover; }
.presentation__texte { flex: 0 0 calc(720 * var(--u)); padding: 0 calc(8 * var(--u)) 0 calc(32 * var(--u)); transform: translateY(calc((1 - var(--p, 1)) * 100%)); }
.presentation__phrase { width: calc(590 * var(--u)); margin-bottom: calc(48 * var(--u)); font: 500 calc(24 * var(--u))/1 var(--f-titre); }
.presentation__suite { width: calc(285 * var(--u)); transform: translateX(calc(var(--q, 1) * 425 * var(--u))); }
.presentation__detail { margin-bottom: calc(15 * var(--u)); font: 500 calc(13 * var(--u))/1.6 var(--f-titre); }

.selection { position: relative; height: 1600vh; color: #fff; }
.selection[style*="--nb"] { height: calc(var(--nb) * 1600vh / 3); }   /* espace administré : autre nombre de projets à l'accueil */
.selection__colle { position: sticky; top: 0; height: 100vh; overflow: hidden; }
.selection__fond { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity .6s ease; }
.selection__fond.est-actif { opacity: 1; }
.selection__voile { position: absolute; inset: 0; z-index: 1; background: rgba(0, 0, 0, .28); }
.selection__liste { position: absolute; inset: 0; z-index: 3; opacity: 0; transition: opacity .25s; }
.selection.est-dedans .selection__liste { opacity: 1; }
.selection__item { position: absolute; left: 0; right: 0; top: 50%; transform: translateY(-50%); text-align: center; text-transform: uppercase; opacity: 0; visibility: hidden; transition: opacity .5s, visibility .5s; }
.selection__item.est-actif { opacity: 1; visibility: visible; }
.selection__nature { font: 400 calc(12 * var(--u))/1 var(--f-titre); letter-spacing: -.012em; }
.selection__titre { font: 600 calc(64 * var(--u))/calc(56 * var(--u)) var(--f-titre); }
.selection__lien { margin-top: calc(48 * var(--u)); }

/* typographie cinétique (d'après Codrops, MIT) */
.cinetique { position: fixed; inset: 0; z-index: 200; display: grid; place-items: center; overflow: hidden; background: var(--chaux); pointer-events: none; }
.cinetique__bloc { width: 100vmax; height: 100vmax; display: grid; align-content: center; justify-content: center; text-align: center; }
.cinetique__ligne { white-space: nowrap; font: 700 clamp(7rem, 18.75vh, 15rem)/.75 var(--f-titre); letter-spacing: -.03em; text-transform: uppercase; color: var(--encre); will-change: transform, opacity; }
.savoirs { position: relative; z-index: 5; height: 150vh; }
.savoirs__colle { position: sticky; top: 0; height: 100vh; overflow: hidden; }
.savoirs__titre { position: absolute; left: 0; right: 0; top: 50%; transform: translateY(-50%); display: flex; justify-content: center; gap: calc(21 * var(--u)); overflow: hidden; text-transform: uppercase; font: 600 calc(240 * var(--u))/1.2 var(--f-titre); letter-spacing: -.048em; opacity: calc(1 - var(--p, 0) * .9); }
.savoirs__mot { display: block; transform: translateY(150%) rotate(2deg); transition: transform 1s cubic-bezier(.76, 0, .24, 1); }
.savoirs__mot:first-child { translate: calc(var(--p, 0) * -270px) 0; }
.savoirs__mot:last-child { translate: calc(var(--p, 0) * 270px) 0; transition-delay: .1s; }
.savoirs.est-vu .savoirs__mot { transform: none; }
.savoirs__liste { position: absolute; inset: 0; z-index: 3; display: flex; flex-direction: column; align-items: center; justify-content: center; transform: translateY(calc((1 - var(--p, 0)) * 100%)); }
.savoirs__item { font: 600 calc(64 * var(--u))/calc(55 * var(--u)) var(--f-texte); letter-spacing: -.03em; text-transform: uppercase; transform: translateY(calc((1 - var(--p, 0)) * var(--k) * var(--k) * 100%)); }
.savoirs__bouton { margin-top: calc(16 * var(--u)); opacity: var(--fin, 0); }

.carnet { position: relative; overflow: hidden; padding: calc(96 * var(--u)) calc(25 * var(--u)) 0; }
.carnet__grille { position: relative; display: flex; flex-direction: column; justify-content: space-between; }
.carnet__mot { order: 1; font: 600 calc(240 * var(--u))/.8 var(--f-titre); letter-spacing: -.048em; }
.carnet__mot--droite { order: 2; margin-top: calc(4 * var(--u)); text-align: right; }
.carnet__texte { order: 3; position: absolute; left: 0; top: calc(372 * var(--u)); }
.carnet__phrase { width: calc(326 * var(--u)); margin: calc(16 * var(--u)) 0 calc(32 * var(--u)); font: 500 calc(13 * var(--u))/calc(16 * var(--u)) var(--f-titre); letter-spacing: -.01em; }
.carnet__liste { display: none; }
.carnet__mot--droite { margin-top: calc(536 * var(--u)); }
.carnet__livre { position: absolute; left: calc(335 * var(--u)); top: calc(126 * var(--u)); width: calc(547 * var(--u)); height: calc(656 * var(--u)); border-radius: calc(4 * var(--u)); overflow: hidden; z-index: 1;
  box-shadow: -155px 155px 61px rgba(0, 0, 0, .01), -99px 99px 56px rgba(0, 0, 0, .05), -56px 56px 47px rgba(0, 0, 0, .16), -25px 25px 35px rgba(0, 0, 0, .27), -6px 6px 19px rgba(0, 0, 0, .31);
  transform: translateX(calc(var(--p, 0) * 100%)) rotate(calc(12.5deg - var(--p, 0) * 10.5deg)); }
.carnet__livre img { width: 100%; height: 100%; object-fit: cover; scale: 1.02; }

/* relance (bandeau d'appel en fin de page) */
.relance { position: relative; }
.relance__cadre { position: relative; display: flex; flex-direction: column; justify-content: space-between; height: 50rem; margin: 0 2rem; padding: 6rem; color: var(--chaux); overflow: hidden; }
.relance__image { position: absolute; inset: 0; overflow: hidden; }
.relance__image img { width: 100%; height: 100%; object-fit: cover; transition: transform 1s var(--sortie); }
.relance__cadre:hover .relance__image img { transform: scale(1.05); }
.relance__image::after { content: ""; position: absolute; inset: 0; background: rgba(0, 0, 0, .18); }
.relance__etiquette { position: relative; z-index: 1; display: flex; align-items: center; font-size: 1.6rem; line-height: 1; text-transform: uppercase; }
.relance__ligne { width: 7.2rem; height: 1rem; margin-right: .5rem; }
.relance__bas { position: relative; z-index: 1; display: block; }
.relance__titre { display: block; max-width: 35rem; font-size: 3rem; line-height: 1.2; letter-spacing: -.03em; text-transform: uppercase; }
.relance__bouton { margin-top: 3rem; }

/* =========================================================
   PAGES DE PROJET, À PROPOS, CONTACT
   ========================================================= */
.projet { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10rem; padding-bottom: 2rem; }

.couverture { position: relative; height: 100vh; overflow: hidden; color: #fff; }
.couverture__image { position: absolute; inset: 0; will-change: transform; }
.couverture__image img { width: 100%; height: 100%; object-fit: cover; }
.couverture__bas { position: absolute; left: calc(28 * var(--u)); bottom: calc(22 * var(--u)); z-index: 1; display: flex; }
.couverture__titre, .couverture__lieu { font: 500 calc(12 * var(--u))/1 var(--f-texte); letter-spacing: -.012em; text-transform: uppercase; }
.couverture__titre { font-size: calc(10 * var(--u)); line-height: 1.6; font-weight: 400; }
.couverture__titre { margin-right: calc(74 * var(--u)); }

.fiche { display: flex; padding: calc(235 * var(--u)) calc(28 * var(--u)); background: var(--chaux); font: 500 calc(12 * var(--u))/1 var(--f-texte); letter-spacing: -.012em; text-transform: uppercase; }
.fiche__col--nature { flex: 0 0 calc(208 * var(--u)); margin-right: calc(66 * var(--u)); }
.fiche__col--programme { flex: 0 0 calc(136 * var(--u)); margin-right: calc(245 * var(--u)); }
.fiche__col--cadre { flex: 0 0 calc(208 * var(--u)); margin-right: calc(105 * var(--u)); }
.fiche__col--statut { flex: 0 0 calc(208 * var(--u)); margin-right: calc(96 * var(--u)); }

.intro__grille { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4rem; align-items: start; max-width: 104rem; margin: 0 auto; padding: 0 2rem; }
.intro__media { position: sticky; top: 4rem; overflow: hidden; }
.intro__media img { width: 100%; }
.intro__texte { max-width: 72rem; }
.intro--contact { padding-top: 14rem; }
.entree { display: flex; align-items: baseline; padding: 3rem 0; border-bottom: 1px solid var(--trait); }
.entree:first-child { padding-top: 0; }
.entree:last-child { padding-bottom: 0; border-bottom: 0; }
.entree__etiquette { flex: 0 0 15rem; max-width: 24.1rem; padding-right: 3rem; }
.entree__texte { max-width: 23rem; margin-right: 5.4rem; }
.entree--grand .entree__etiquette { margin-bottom: 2rem; }
.entree--grand .entree__texte { flex: 1; max-width: 36.6rem; margin-right: 0; font-size: 2rem; line-height: 1.4; }
.entree__accroche { font-size: 2.4rem; line-height: 1.2; text-transform: uppercase; }
.entree--tableau { justify-content: space-between; padding: 0 0 3rem; }
.entree__case { flex: 0 0 auto; width: 15rem; padding-right: 1rem; }
.entree--tableau .entree__etiquette { display: block; margin-bottom: 1rem; padding: 0; opacity: .5; }
.entree__valeur { line-height: 1.6; }

.parti { padding: calc(192 * var(--u)) 0; text-align: center; }
.parti__surtitre { font: 500 calc(12 * var(--u))/1 var(--f-texte); letter-spacing: -.012em; text-transform: uppercase; }
.parti__phrase { max-width: calc(1005 * var(--u)); margin: calc(24 * var(--u)) auto 0; font: 700 calc(51 * var(--u))/.82 var(--f-titre); text-transform: uppercase; }
.parti__texte { max-width: calc(422 * var(--u)); margin: calc(32 * var(--u)) auto 0; font-size: calc(12 * var(--u)); line-height: 1; letter-spacing: -.012em; text-transform: uppercase; }

.vue-texte { position: relative; }
.vue-texte__image, .vue-large__image { overflow: hidden; }
.vue-texte__image img, .vue-large__image img { width: calc(1672 * var(--u)); max-width: none; will-change: transform; }
.vue-texte__phrase { position: absolute; top: calc(236 * var(--u)); left: calc(775 * var(--u)); right: calc(85 * var(--u)); font-size: calc(24 * var(--u)); line-height: 1; letter-spacing: -.016em; color: #fff; text-shadow: 0 1px 18px rgba(0, 0, 0, .35); pointer-events: none; z-index: 2; }

.bloc-media { max-width: 104rem; width: 100%; margin: 0 auto; padding: 0 2rem; }
.bloc-media__grille { display: grid; grid-template-columns: 30rem 60rem; gap: 4rem; justify-content: space-between; }
.bloc-media--gauche .bloc-media__images { order: 2; }
.bloc-media--droite .bloc-media__grille { grid-template-columns: 60rem 30rem; justify-content: start; }
.bloc-media__images { display: grid; gap: 1.5rem; }
.bloc-media__image img { aspect-ratio: 16 / 9; object-fit: cover; }
.bloc-media__texte { display: flex; flex-direction: column; align-items: flex-start; }
.bloc-media__colle { position: sticky; top: 4rem; width: 26rem; }
.bloc-media__titre { font-weight: 500; }
.bloc-media__resume { margin-top: 2rem; max-width: 26rem; }
.bloc-media__suite { margin-top: 4rem; }

.tiroir { position: fixed; inset: 0; z-index: 125; visibility: hidden; transition: visibility 0s .9s; }
.tiroir::after { content: ""; position: absolute; inset: 0; z-index: -1; background: rgba(0, 0, 0, .8); opacity: 0; transition: opacity .9s var(--sortie); }
.tiroir.est-ouvert { visibility: visible; transition: none; }
.tiroir.est-ouvert::after { opacity: 1; }
.tiroir__volet { position: relative; height: 100%; width: calc(100vw - 10rem); max-width: 70rem; margin-left: auto; background: var(--chaux); color: var(--encre); transform: translateX(100%); transition: transform .9s var(--sortie); }
.tiroir.est-ouvert .tiroir__volet { transform: none; }
.tiroir__fermer { position: absolute; top: 2rem; right: calc(100% + 2rem); width: 6rem; height: 6rem; border-radius: 50%; background: var(--chaux); display: grid; place-items: center; opacity: 0; transform: scale(.5); transition: opacity .45s var(--sortie), transform .45s var(--sortie), background-color .35s, color .35s; }
.tiroir.est-ouvert .tiroir__fermer { opacity: 1; transform: none; transition-delay: .45s, .45s, 0s, 0s; }
.tiroir__fermer:hover { background: var(--encre); color: var(--chaux); }
.tiroir__fermer .ico { width: 1rem; height: 1rem; }
.tiroir__defile { height: 100%; overflow: auto; padding: 4rem; overscroll-behavior: contain; }
.tiroir__titre { margin-bottom: 4rem; font-size: 3rem; line-height: 1.2; letter-spacing: -.03em; text-transform: uppercase; }
.tiroir__figure { margin-bottom: 4rem; }
.tiroir__figure img { width: 100%; }
.tiroir__texte { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2rem; }
.tiroir__sous-titre { font-weight: 500; }
.tiroir__paras { display: grid; gap: 2.8rem; }

.schema { display: grid; grid-template-columns: calc(708 * var(--u)) calc(422 * var(--u)); justify-content: space-between; align-items: center; padding: calc(88 * var(--u)) calc(151 * var(--u)) calc(88 * var(--u)) calc(80 * var(--u)); }
.schema__dessin { background: var(--clair); padding: 2rem; }
.schema__dessin svg { width: 100%; height: auto; }
.schema__note, .bilan__texte { font: 500 calc(13 * var(--u))/1.23 var(--f-titre); letter-spacing: -.012em; text-transform: uppercase; }

.duo { max-width: 104rem; width: 100%; margin: 0 auto; padding: 0 2rem; }
.duo__grille { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.4rem; }
.duo__cadre { overflow: hidden; margin: 1.3rem 0 1.4rem; }
.duo__cadre img { aspect-ratio: 16 / 9; object-fit: cover; }

.defile { max-width: 104rem; width: 100%; margin: 0 auto; padding: 0 2rem; }
.defile__cadre { position: relative; overflow: hidden; }
.defile__piste { display: flex; gap: 2rem; overflow-x: auto; scroll-snap-type: x proximity; scrollbar-width: none; cursor: grab; outline-offset: -2px; }
.defile__piste::-webkit-scrollbar { display: none; }
.defile__piste.est-tire { cursor: grabbing; scroll-snap-type: none; }
.defile__vue { flex: 0 0 99.5%; scroll-snap-align: start; overflow: hidden; }
.defile__vue img { aspect-ratio: 16 / 9; object-fit: cover; pointer-events: none; -webkit-user-drag: none; user-select: none; }
.defile__bouton { position: absolute; top: 50%; z-index: 2; width: 6rem; height: 6rem; margin-top: -3rem; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: rgba(0, 0, 0, .4); color: var(--chaux); transition: background-color .45s, opacity .3s; }
.defile__bouton:hover { background: #000; }
.defile__bouton[disabled] { opacity: .35; cursor: default; }
.defile__bouton--prec { left: 3rem; } .defile__bouton--suiv { right: 3rem; }
.defile__bouton .ico { width: 2rem; }

.lecteur__cadre { position: relative; background: #000; overflow: hidden; color: #fff; }
.lecteur__video { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; }
.lecteur__zone { position: absolute; inset: 0; z-index: 2; display: flex; flex-direction: column; align-items: center; justify-content: center; background: rgba(0, 0, 0, .1); transition: background-color .3s; }
.lecteur__rond { width: calc(64 * var(--u)); height: calc(64 * var(--u)); border-radius: 50%; background: rgba(116, 115, 115, .55); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); display: grid; place-items: center; transition: transform .4s var(--sortie), opacity .3s; }
.lecteur__rond svg { width: calc(20 * var(--u)); height: calc(20 * var(--u)); }
.lecteur__lire path { fill: #fff; }
.lecteur__pause { display: none; } .lecteur__pause path { stroke: #fff; stroke-width: 3; stroke-linecap: round; fill: none; }
.lecteur__mot { margin-top: calc(16 * var(--u)); font: 500 calc(12 * var(--u))/1.25 var(--f-texte); letter-spacing: -.012em; text-transform: uppercase; transition: opacity .3s; }
.lecteur__zone:hover .lecteur__rond { transform: scale(1.08); }
.est-en-lecture .lecteur__zone { background: transparent; }
.est-en-lecture .lecteur__rond, .est-en-lecture .lecteur__mot { opacity: 0; }
.est-en-lecture .lecteur__zone:hover .lecteur__rond { opacity: 1; }
.est-en-lecture .lecteur__lire { display: none; } .est-en-lecture .lecteur__pause { display: block; }
.lecteur__commandes { position: absolute; left: 0; right: 0; bottom: 0; z-index: 3; display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; padding: 0 2.4rem; height: 8rem; opacity: 0; transition: opacity .3s; background: linear-gradient(transparent, rgba(0, 0, 0, .35)); }
.lecteur__cadre:hover .lecteur__commandes, .lecteur__cadre:focus-within .lecteur__commandes { opacity: 1; }
.lecteur__temps { font-size: 1.3rem; }
.lecteur__son { width: 2.4rem; height: 2.4rem; }
.lecteur__son path { fill: none; stroke: #fff; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.lecteur__son .ondes, .lecteur__son[aria-pressed="true"] .coupe { display: none; }
.lecteur__son[aria-pressed="true"] .ondes { display: block; }
.lecteur__barre { flex: 0 0 100%; height: .8rem; display: flex; align-items: center; cursor: pointer; }
.lecteur__rail { position: relative; width: 100%; height: .4rem; border-radius: 1rem; background: rgba(255, 255, 255, .3); transition: height .2s; }
.lecteur__barre:hover .lecteur__rail { height: .8rem; }
.lecteur__jauge { position: absolute; inset: 0 auto 0 0; width: calc(var(--avance, 0) * 100%); border-radius: inherit; background: #fff; }
.lecteur__legende { padding: 0 1.75rem; }

.vue-large { margin-top: 1.6rem; }
.bilan { padding: calc(188 * var(--u)) calc(151 * var(--u)) calc(54 * var(--u)) calc(720 * var(--u)); }
.bilan__titre { margin-bottom: calc(32 * var(--u)); font: 700 calc(51 * var(--u))/.82 var(--f-titre); text-transform: uppercase; }

.equipe { position: relative; margin-top: 1.6rem; }
.equipe__fond { position: sticky; top: 0; height: 100vh; overflow: hidden; }
.equipe__fond img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transform: scale(calc(1.2 - var(--p, 0) * .2)); }
.equipe__voile { position: absolute; inset: 0; background: rgba(0, 0, 0, .55); opacity: var(--voile, 0); }
.equipe__liste { position: relative; display: flex; gap: calc(112 * var(--u)); color: var(--blanc); margin-left: calc(581 * var(--u)); padding-bottom: 100vh; }
.equipe__titre, .equipe__liste h3 { font: 500 calc(11 * var(--u))/1.36 var(--f-texte); letter-spacing: -.012em; text-transform: uppercase; }
.equipe__liste ul { width: calc(160 * var(--u)); }
.equipe__liste p { font-size: calc(12 * var(--u)); line-height: 1.25; letter-spacing: -.016em; opacity: .6; max-width: calc(160 * var(--u)); }
.equipe__liste li + li { margin-top: calc(14 * var(--u)); }

/* page Projets */
.titre-page { display: grid; justify-items: center; padding: 0 1.5rem 6.4rem; }
.titre-page__mot { width: 100%; font: 600 calc(240 * var(--u))/.8 var(--f-titre); letter-spacing: -.048em; text-transform: uppercase; }
.titre-page__note { max-width: 56rem; margin-top: 4rem; text-align: center; font-size: 1.2rem; line-height: 1.6; letter-spacing: -.02em; text-transform: uppercase; opacity: .65; }
.cartes { display: flex; flex-wrap: wrap; justify-content: space-between; padding: 0 1rem; }
.cartes--suite::after { content: ""; width: calc(33.333% - 1.1rem); }   /* espace administré : dernière rangée incomplète */
.carte { position: relative; display: block; width: calc(33.333% - 1.1rem); margin-bottom: 1.6rem; padding-bottom: 2rem; }
.carte__image { position: relative; display: block; overflow: hidden; }
.carte__image img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; transition: transform .8s var(--sortie); }
.carte:hover .carte__image img { transform: scale(1.025); }
.carte__image::after { content: ""; position: absolute; inset: 45% 0 0; background: linear-gradient(transparent, rgba(0, 0, 0, .45)); opacity: 0; transition: opacity .5s; }
.carte:hover .carte__image::after, .carte:focus-visible .carte__image::after { opacity: 1; }
.carte__infos { position: absolute; left: 0; right: 0; bottom: 2rem; display: flex; flex-direction: column; align-items: center; padding: 0 1.6rem 3.2rem; color: #fff; text-align: center; text-transform: uppercase; overflow: hidden; }
.carte__titre { font-size: 3.2rem; line-height: 1; margin-bottom: .8rem; }
.carte__lieu { font-size: 1.2rem; line-height: 1; }
.carte__titre, .carte__lieu { opacity: 0; transform: translateY(100%); transition: opacity .45s var(--sortie), transform .55s var(--sortie); }
.carte:hover .carte__titre, .carte:hover .carte__lieu, .carte:focus-visible .carte__titre, .carte:focus-visible .carte__lieu { opacity: 1; transform: none; }
.carte:hover .carte__lieu { transition-delay: .08s; }

.registre { border-top: 1px solid var(--trait); }
.registre__grille { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4rem; align-items: start; margin: 0 2rem; padding-top: 4rem; }
.registre__intitule { position: relative; display: inline-block; justify-self: start; margin-bottom: 4rem; font-size: 3rem; line-height: 1.2; letter-spacing: -.03em; text-transform: uppercase; }
.registre__intitule sup { position: absolute; left: 100%; top: -1rem; font-size: 1.3rem; line-height: 1.6; letter-spacing: -.05rem; }
.registre__tableau { position: relative; padding-bottom: .2rem; }
.registre__entete { display: flex; padding-bottom: 3.3rem; }
.registre__entete span { opacity: .5; }
.registre__entete span:first-child { width: 4rem; }
.registre__entete span:nth-child(2) { flex: 1; padding-left: 2rem; }
.registre__lignes { border-top: 1px solid var(--trait); }
.registre__ligne { position: relative; display: flex; align-items: baseline; padding: 2.8rem 0; border-bottom: 1px solid var(--trait); }
.registre__num { flex: 0 0 auto; min-width: 3.3rem; padding-right: 1.6rem; }
.registre__nom { flex: 1; }
.registre__titre { background: linear-gradient(currentColor, currentColor) 0 100% / 0 1px no-repeat; padding-bottom: 1px; transition: background-size .7s var(--sortie); }
a.registre__ligne:hover .registre__titre { background-size: 100% 1px; }
.registre__sous { opacity: .6; }
.registre__apercu { position: absolute; top: 0; right: calc(100% + 4rem); width: 20rem; height: 26rem; z-index: 1; pointer-events: none; opacity: 0; transform: translateY(1rem); transition: opacity .3s, transform .45s var(--sortie); }
.registre__ligne:last-child:not(:first-child) .registre__apercu, .registre__ligne:nth-last-child(2):not(:first-child) .registre__apercu { top: auto; bottom: 0; }
.registre__ligne:hover .registre__apercu { opacity: 1; transform: none; }
.registre__apercu img { width: 100%; height: 100%; object-fit: cover; }

/* page À propos */
.profil { position: relative; height: 138.4rem; padding: 23rem 2rem 0; text-align: center; color: var(--chaux); background: #000; overflow: hidden; }
.profil__image { position: absolute; inset: 0; }
.profil__image img { width: 100%; height: 100%; object-fit: cover; }
.profil__voile { position: absolute; inset: 0; background: linear-gradient(rgba(0, 0, 0, .4), rgba(0, 0, 0, .3) 40%, rgba(0, 0, 0, .3) 70%, rgba(0, 0, 0, .42)); }
.profil__retour { position: absolute; top: 11rem; left: 2rem; z-index: 1; display: flex; align-items: center; gap: 1.5rem; }
.profil__retour .ico { width: 2.1rem; height: 1.2rem; transition: transform .5s var(--sortie); }
.profil__retour:hover .ico { transform: translateX(-.6rem); }
.profil__texte { position: relative; z-index: 1; }
.profil__nom { max-width: 85rem; margin: 0 auto; font-size: 5rem; line-height: 1.05; font-weight: 300; letter-spacing: -.03em; text-transform: uppercase; }
.profil__role { margin-top: 3.5rem; line-height: 1.6; }
.profil__defiler { position: fixed; left: 50%; bottom: 4.9rem; z-index: 1; display: flex; flex-direction: column; align-items: center; transform: translateX(-50%); font-weight: 500; transition: opacity .4s; }
.profil__defiler .ico { width: 1rem; height: 3.1rem; margin-bottom: 2rem; animation: descend 2.2s var(--glisse) infinite; }
[data-haut="non"] .profil__defiler { opacity: 0; pointer-events: none; }
@keyframes descend { 0%, 15% { transform: translateY(-110%); } 55%, 70% { transform: none; } 100% { transform: translateY(110%); } }
.galerie { position: relative; overflow: hidden; aspect-ratio: 16 / 9; }
.galerie__vues { position: absolute; inset: 0; }
.galerie__vue { position: absolute; inset: 0; overflow: hidden; clip-path: inset(0 0 0 100%); transition: clip-path 1.1s var(--glisse); }
.galerie__vue img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transform: translateX(25%); transition: transform 1.1s var(--glisse); }
.galerie__vue.est-active { clip-path: inset(0); z-index: 1; }
.galerie__vue.est-active img { transform: none; }
.galerie__vue.est-sortante { clip-path: inset(0); z-index: 0; }
.galerie__vue.est-sortante img { transform: translateX(-25%); }
.galerie.recule .galerie__vue { clip-path: inset(0 100% 0 0); }
.galerie.recule .galerie__vue img { transform: translateX(-25%); }
.galerie.recule .galerie__vue.est-active, .galerie.recule .galerie__vue.est-sortante { clip-path: inset(0); }
.galerie.recule .galerie__vue.est-active img { transform: none; }
.galerie.recule .galerie__vue.est-sortante img { transform: translateX(25%); }
.galerie__zone { position: absolute; top: 0; bottom: 0; width: 50%; z-index: 2; }
.galerie__zone--prec { left: 0; cursor: w-resize; } .galerie__zone--suiv { right: 0; cursor: e-resize; }
.galerie__pied { position: absolute; left: 0; right: 0; bottom: 0; z-index: 3; display: flex; justify-content: space-between; align-items: center; padding: 2rem 3rem; color: var(--chaux); pointer-events: none; }
.galerie__compte { font-size: 2rem; line-height: 1.4; }
.galerie__points { display: flex; gap: 1rem; pointer-events: auto; }
.galerie__points button { width: 1rem; height: 1rem; border-radius: 50%; border: 1px solid var(--chaux); transition: background-color .3s; }
.galerie__points button[aria-current="true"] { background: var(--chaux); }
.intro__cv { margin-top: 4rem; }
.intro__cv .ico { width: 1rem; height: 1.6rem; }
.competences { padding: 0 2rem; }
.competences__grille { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4rem; padding-top: 3.3rem; border-top: 1px solid var(--trait); }
.competences__titre { font-size: 3rem; line-height: 1.2; letter-spacing: -.03em; text-transform: uppercase; }
.competences__liste { display: grid; gap: 4rem; }
.competences__nom { opacity: .5; }
.competences__detail { margin-top: 1.5rem; max-width: 75%; text-transform: uppercase; }

/* page Contact */
.formulaire { display: grid; gap: 2rem; }
.formulaire label { display: grid; gap: .8rem; font-size: 1.3rem; line-height: 1.4; text-transform: uppercase; }
.formulaire input, .formulaire textarea { width: 100%; padding: 1rem 2rem; border: 1px solid var(--trait); font-size: 1.4rem; line-height: 1.6; text-transform: none; transition: border-color .3s; }
.formulaire input { height: 6rem; }
.formulaire textarea { height: 10rem; resize: vertical; }
.formulaire input:focus, .formulaire textarea:focus { border-color: var(--encre); outline: none; }
.formulaire .est-invalide { border-color: #c0392b; }
.formulaire__envoi { display: flex; align-items: center; justify-content: space-between; margin-top: 3rem; padding: 2.5rem 2.6rem; background: var(--encre); color: var(--chaux); font-size: 1.3rem; line-height: 1.6; text-transform: uppercase; transition: background-color .35s; }
.formulaire__envoi:hover { background: #000; }
.formulaire__envoi .trait__fleche { overflow: hidden; }
.formulaire__note { margin-top: 3rem; font-size: 1.2rem; line-height: 2.8rem; opacity: .65; }
.formulaire__retour { margin-top: 1rem; min-height: 1.8rem; font-size: 1.3rem; }
.canaux { display: flex; justify-content: center; padding-top: 6rem; }
.canaux__liste { padding: 0 8rem; }
.canal { padding: .2rem 3.2rem; transition: opacity .3s, color .3s; }
.canaux__liste:hover .canal:not(:hover) { opacity: .5; color: #a8a29c; }
.canal__titre { position: relative; width: fit-content; margin: 0 auto; text-align: center; font: 700 calc(80 * var(--u))/.8 var(--f-titre); text-transform: uppercase; }
.canal__titre button { cursor: pointer; }
.canal__note { position: absolute; left: 100%; top: 0; margin-left: .8rem; white-space: nowrap; font: 400 1.2rem/1 var(--f-texte); letter-spacing: -.012em; }
.canal__corps { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .6s var(--sortie); }
.canal.est-ouvert .canal__corps { grid-template-rows: 1fr; }
.canal__valeur { min-height: 0; overflow: hidden; display: flex; justify-content: center; font: 400 1.2rem/1 var(--f-titre); letter-spacing: -.012em; text-transform: uppercase; }
.canal.est-ouvert .canal__valeur { padding: 2.4rem 0 6.4rem; }
.canal__valeur span:first-child { width: 4.3rem; }
.canal__valeur a:hover { text-decoration: underline; }

/* =========================================================
   TABLETTE ET TÉLÉPHONE (sous 1024 px)
   ========================================================= */
@media (max-width: 1023px) {
  .rubrique__titre { font-size: 2.4rem; }
  .rubrique__numero { display: none; }
  .panneau__grille { display: flex; flex-direction: column; padding-top: 0; }
  .rubrique__liste { padding-left: 0; }
  .panneau__coord { display: none; }
  .panneau__infos { margin-top: 3.7rem; }
  .barre__liens { display: none; }

  .pied__appel { min-height: 51rem; }
  .pied__grand { font-size: 3.4rem; text-align: center; }
  .pied__fleche { display: none; }
  .pied__haut { display: block; margin: 0; padding: 0 2rem 5rem; border-bottom: 1px solid var(--trait); }
  .pied__coord { grid-template-columns: 1fr; gap: 4rem; }
  .pied__coord dd { margin-top: 1rem; }
  .pied__contact { margin-top: 7rem; }
  .pied__mentions { margin: 0; padding: 3rem 2rem; flex-direction: column; gap: .4rem; }
  .pied__mentions p:first-child { width: auto; }

  .pastille { padding: calc(10 * var(--u)) calc(16 * var(--u)); }
  .pastille__texte { font-size: calc(14 * var(--u)); }

  .ouverture__nom { font-size: calc(36 * var(--u)); }
  .ouverture__bas { position: absolute; inset: 0; flex-direction: column; justify-content: flex-end; gap: calc(16 * var(--u)); padding: 0 calc(16 * var(--u)) calc(16 * var(--u)); }
  .ouverture__titre { flex-direction: column; gap: calc(4 * var(--u)); width: 100%; }
  .ouverture__titre span { font-size: calc(14 * var(--u)); line-height: 1; font-weight: 500; letter-spacing: -.032em; }
  .ouverture__titre span:first-child { margin-right: 0; }
  .ouverture__titre span:last-child { text-align: right; }

  .manifeste__phrase { padding: 0 calc(16 * var(--u)); font-size: calc(40 * var(--u)); line-height: .87; letter-spacing: calc(-1.28 * var(--u)); }
  .manifeste__phrase br { display: none; }

  .presentation { height: auto; }
  .presentation__colle { position: relative; flex-direction: column; height: 100vh; }
  .presentation__photo { flex: 1 1 auto; }
  .presentation__image { transform: none; }
  .presentation__texte { flex: 0 0 auto; min-height: calc(355 * var(--u)); padding: calc(32 * var(--u)) calc(16 * var(--u)); transform: none; }
  .presentation__phrase { width: 100%; margin-bottom: calc(16 * var(--u)); font-size: calc(18 * var(--u)); }
  .presentation__suite { width: 100%; transform: none; }
  .presentation__detail { margin-bottom: calc(40 * var(--u)); font-size: calc(12 * var(--u)); line-height: 1.1; }

  .selection { height: 800vh; }
  .selection[style*="--nb"] { height: calc(var(--nb) * 800vh / 3); }
  .selection__item { top: calc(160 * var(--u)); transform: none; }
  .selection__nature { font-size: calc(14 * var(--u)); font-weight: 600; }
  .selection__titre { margin-top: calc(16 * var(--u)); font-size: calc(40 * var(--u)); line-height: .87; letter-spacing: -.03em; }
  .selection__lien { margin-top: calc(32 * var(--u)); }

  .savoirs__titre { font-size: calc(64 * var(--u)); gap: calc(8 * var(--u)); }
  .savoirs__mot:first-child { translate: calc(var(--p, 0) * -130px) 0; }
  .savoirs__mot:last-child { translate: calc(var(--p, 0) * 130px) 0; }
  .savoirs__item { font-size: calc(40 * var(--u)); line-height: .87; letter-spacing: calc(-1.28 * var(--u)); }

  .carnet { padding: calc(96 * var(--u)) calc(16 * var(--u)) calc(16 * var(--u)); }
  .carnet__mot { font-size: calc(64 * var(--u)); }
  .carnet__mot--droite { margin-top: 0; text-align: left; }
  .carnet__texte { position: static; order: 4; }
  .carnet__phrase { width: 100%; margin: calc(16 * var(--u)) 0 calc(32 * var(--u)); }
  .carnet__livre { position: relative; order: 3; left: auto; top: auto; width: calc(284 * var(--u)); height: calc(340 * var(--u)); margin: calc(30 * var(--u)) 0 calc(107 * var(--u)) calc(16 * var(--u));
    box-shadow: -89px 89px 35px rgba(0, 0, 0, .01), -57px 57px 32px rgba(0, 0, 0, .05), -32px 32px 27px rgba(0, 0, 0, .16), -14px 14px 20px rgba(0, 0, 0, .27), -3px 3px 11px rgba(0, 0, 0, .31);
    transform: translateX(calc(var(--p, 0) * 50%)) rotate(calc(12.5deg - var(--p, 0) * 2.5deg)); }

  .relance__cadre { height: 45rem; padding: 3rem; }
  .relance__titre { font-size: 2.4rem; }

  .projet { gap: 8rem; }
  .couverture__bas { left: calc(16 * var(--u)); right: calc(16 * var(--u)); bottom: calc(16 * var(--u)); display: grid; grid-template-columns: 1fr 1fr; gap: calc(8 * var(--u)); }
  .couverture__titre, .couverture__lieu { font-size: calc(14 * var(--u)); line-height: 1; font-weight: 500; margin: 0; }
  .couverture__lieu { text-align: right; }
  .fiche { flex-direction: column; align-items: center; text-align: center; padding: calc(32 * var(--u)) 0; font: 500 calc(14 * var(--u))/1 var(--f-titre); }
  .fiche__col { flex: 1 1 0 !important; margin: 0 0 calc(24 * var(--u)) !important; width: 100%; }
  .fiche__col:last-child { margin-bottom: 0 !important; }
  .intro__grille { display: block; }
  .intro__media { position: relative; top: auto; margin-bottom: 3rem; }
  .entree--tableau { display: grid; gap: 4rem; }
  .entree__case { width: auto; padding: 0; }
  .entree__etiquette { flex-basis: auto; }
  .entree__texte { margin-right: 0; }
  .entree--grand { flex-direction: column; }
  .parti { padding: calc(80 * var(--u)) 0; }
  .parti__surtitre { font-size: calc(14 * var(--u)); }
  .parti__phrase { max-width: 100%; margin: calc(16 * var(--u)) 0 calc(24 * var(--u)); padding: 0 calc(16 * var(--u)); font-size: calc(34 * var(--u)); font-weight: 600; }
  .parti__texte { max-width: 100%; margin: 0; padding: 0 calc(16 * var(--u)); font-size: calc(14 * var(--u)); line-height: 1.2; }
  .vue-texte { display: flex; flex-direction: column; padding: calc(32 * var(--u)) 0 calc(4 * var(--u)); }
  .vue-texte__phrase { position: static; order: -1; margin-bottom: calc(32 * var(--u)); padding: 0 calc(16 * var(--u)); font-size: calc(14 * var(--u)); line-height: 1.2; text-transform: uppercase; color: inherit; text-shadow: none; }
  .bloc-media__grille, .bloc-media--droite .bloc-media__grille { grid-template-columns: 1fr; }
  .bloc-media--gauche .bloc-media__images { order: 0; }
  .bloc-media__colle { position: relative; top: auto; }
  .schema { grid-template-columns: 1fr; padding: calc(80 * var(--u)) calc(16 * var(--u)) 0; }
  .schema__note { order: -1; margin-bottom: calc(16 * var(--u)); }
  .schema__note, .bilan__texte { font-size: calc(14 * var(--u)); line-height: 1.2; letter-spacing: -.016em; }
  .duo__grille { grid-template-columns: 1fr; }
  .duo__cadre { margin: 0; }
  .defile__vue { flex-basis: 99.4%; }
  .lecteur__rond { background: rgba(255, 255, 255, .2); }
  .lecteur__mot { font-size: calc(14 * var(--u)); }
  .vue-large { margin-top: .4rem; }
  .bilan { padding: calc(80 * var(--u)) calc(16 * var(--u)); }
  .bilan__titre { margin-bottom: calc(16 * var(--u)); font-size: calc(34 * var(--u)); font-weight: 600; }
  .equipe { margin-top: .4rem; }
  .equipe__liste { margin-left: 0; padding: 0 calc(16 * var(--u)) 100vh calc(104 * var(--u)); gap: calc(50 * var(--u)); }
  .equipe__titre, .equipe__liste h3 { font-size: calc(14 * var(--u)); line-height: 1; }
  .equipe__liste ul { width: auto; flex: 1; }
  .equipe__liste p { margin-top: calc(4 * var(--u)); font-size: calc(14 * var(--u)); line-height: 1; opacity: 1; color: #b8b7b8; max-width: none; }
  .tiroir__volet { width: 100%; }
  .tiroir__fermer { right: 1rem; top: 1rem; width: 4rem; height: 4rem; opacity: 1; z-index: 2; }
  .tiroir__defile { padding: 2rem; }
  .tiroir__texte { grid-template-columns: 1fr; }

  .titre-page { padding: 0 1.5rem 4rem; }
  .titre-page__mot { font-size: calc(64 * var(--u)); }
  .titre-page__note { width: 100%; margin-top: 2rem; }
  .carte { width: 100%; }
  .carte__titre, .carte__lieu { opacity: 1; transform: none; }
  .carte__image::after { opacity: 1; }
  .registre__grille { grid-template-columns: 1fr; gap: 0; }
  .registre__apercu { display: none; }

  .profil { height: 100vh; min-height: 60rem; padding-top: 18rem; }
  .profil__retour { top: 8rem; }
  .profil__nom { font-size: 3.4rem; }
  .competences__grille { grid-template-columns: 1fr; }
  .competences__detail { max-width: none; }

  .intro--contact { padding-top: 10rem; }
  .canaux__liste { padding: 0 1.6rem; }
  .canal { padding: .2rem 0; }
  .canal__titre { font-size: calc(48 * var(--u)); }
  .canal__note { position: static; display: block; margin: .8rem 0 0; text-align: center; }
}

/* mouvement réduit : tout reste lisible, rien ne glisse */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; transition-delay: 0s !important; }
  [data-lignes], [data-lettres] { visibility: visible; }
  .ligne__int, .lettre, [data-fondu] { opacity: 1 !important; transform: none !important; }
  .savoirs__mot { transform: none; }
}
