.page-projet .fiche-tete {
  position: relative;
  min-height: calc(100vh - var(--entete-h) - var(--sur-haut));
  min-height: calc(100svh - var(--entete-h) - var(--sur-haut));
  display: grid;
  align-content: center;
  padding: 4vh var(--marge) 8vh;
}
.page-projet .fiche-tete-in {
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap: 4vw;
  align-items: center;
  width: 100%;
  max-width: var(--max);
  margin: 0 auto;
}
.page-projet .fiche-texte { display: grid; gap: 22px; align-content: center; justify-items: start; min-width: 0; }
.page-projet .fiche-eyebrow { display: flex; flex-wrap: wrap; align-items: center; gap: 0 14px; color: var(--encre-3); }
.page-projet .fiche-eyebrow::before { content: ""; flex: none; width: 20px; height: 1px; background: var(--signal); }
.page-projet .fiche-groupe {
  display: inline-flex; align-items: center; min-height: 44px;
  color: var(--signal); border-bottom: 1px solid transparent; transition: border-color .3s;
}
@media (hover: hover) { .page-projet .fiche-groupe:hover { border-bottom-color: var(--signal); } }
.page-projet .fiche-titre {
  font-family: var(--display);
  font-weight: 300;
  font-size: clamp(48px, 6.2vw, 112px);
  line-height: .9;
  letter-spacing: -.05em;
  margin-left: -.04em;
  overflow-wrap: break-word;
  max-width: 100%;
}
.page-projet .fiche-cadre { max-width: 34em; margin-top: -4px; font-size: 15px; line-height: 1.45; color: var(--encre-2); }
.page-projet .fiche-aff {
  max-width: 22em;
  padding-top: 20px;
  border-top: 1px solid var(--trait);
  font-family: var(--serif);
  font-weight: 700;
  font-size: clamp(22px, 1.9vw, 30px);
  line-height: 1.16;
}
.page-projet .fiche-mention { max-width: 34em; padding-left: 12px; border-left: 2px solid var(--encre-2); font-size: 15px; line-height: 1.45; color: var(--encre); }
.page-projet .fiche-actions { margin-top: 4px; }
.page-projet main .bouton {
  gap: 14px; min-height: 48px; padding: 0 20px;
  font-family: var(--mono); font-size: 12px; letter-spacing: .14em; text-transform: uppercase; line-height: 1.6;
  transition: border-color .3s, background .3s;
}
@media (hover: hover) { .page-projet main .bouton:hover { border-color: var(--signal); background: var(--signal-lavis); } }
.page-projet .fiche-tete.sans-visuel { min-height: calc(82vh - var(--entete-h)); min-height: calc(82svh - var(--entete-h)); }
.page-projet .sans-visuel .fiche-tete-in { grid-template-columns: minmax(0, 1fr); }
.page-projet .sans-visuel .fiche-texte { max-width: min(980px, 62vw); }
.page-projet .sans-visuel .fiche-titre { font-size: clamp(56px, 8.4vw, 150px); }
.page-projet .sans-visuel .fiche-aff { max-width: 24em; }
.page-projet .fiche-visuel {
  position: relative;
  display: grid;
  place-items: center;
  min-width: 0;
  perspective: 1400px;
  padding: 4vh 0;
}
.page-projet .fiche-objet {
  position: relative;
  display: grid;
  place-items: center;
  width: 100%;
  transform-style: preserve-3d;
  transform: rotateY(-11deg) rotateX(4deg);
  will-change: transform;
}
.page-projet .fiche-objet .cadre {
  position: relative;
  width: min(100%, calc(68vh * var(--rw) / var(--rh)));
  width: min(100%, calc(68svh * var(--rw) / var(--rh)));
  aspect-ratio: var(--rw) / var(--rh);
  margin: 0;
  overflow: hidden;
  background: var(--plaque-2);
  box-shadow: var(--ombre-cadre);
  transition: box-shadow .4s;
}
.page-projet .fiche-objet .cadre::after { content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none; background: var(--reflet); }
.page-projet .fiche-objet .cadre > img { width: 100%; height: 100%; object-fit: cover; }
.page-projet .fiche-objet .reflet {
  position: absolute; left: 6%; right: 6%; bottom: -6vh; height: 9vh; pointer-events: none;
  background: radial-gradient(50% 50% at 50% 50%, rgba(0, 0, 0, .85), rgba(0, 0, 0, .35) 45%, transparent 72%);
  transform: translateZ(-60px);
}
.page-projet .cadre-film { cursor: pointer; }
@media (hover: hover) { .page-projet .cadre-film:hover { box-shadow: var(--ombre-cadre), 0 0 0 1px var(--signal-trait); } }
.page-projet .fiche-objet .cadre.document { padding: 18px; background: linear-gradient(160deg, #1b1b20, #0c0c0f); }
.page-projet .fiche-objet .cadre.document > img { object-fit: contain; box-shadow: 0 20px 40px -10px rgba(0, 0, 0, .8); }
.page-projet .fiche-corps {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(250px, 330px);
  gap: 6vw;
  align-items: start;
  max-width: var(--max);
  margin: 0 auto;
  padding: 4vh var(--marge) 12vh;
}
.page-projet .recit { max-width: 720px; font-size: 18px; line-height: 1.6; color: var(--encre-2); }
.page-projet .recit-titre { display: flex; align-items: center; gap: 12px; margin-bottom: 22px; font-weight: 400; }
.page-projet .recit-titre::before { content: ""; flex: none; width: 20px; height: 1px; background: var(--signal); }
.page-projet .recit p { margin: 0 0 22px; }
.page-projet .recit .lede { margin-bottom: 28px; font-size: 21px; line-height: 1.5; color: var(--encre); }
.page-projet .recit em { color: var(--encre); }
.page-projet .recit .prose-image { margin: 38px 0; }
.prose-image img { display: block; width: 100%; height: auto; box-shadow: var(--ombre-pan); }
.page-projet .recit .code {
  margin: 0 0 22px; padding: 18px 20px; overflow-x: auto;
  background: var(--plaque-3); border-left: 2px solid var(--trait-2);
  font-family: var(--mono); font-size: 14px; line-height: 1.65; color: var(--encre-2);
  white-space: pre-wrap; overflow-wrap: anywhere; tab-size: 4;
}
.page-projet .recit .code code { font: inherit; }
.page-projet .lien-externe { margin: 28px 0 0; }
.page-projet .lien-externe a { display: inline-flex; align-items: center; min-height: 44px; color: var(--encre); border-bottom: 1px solid var(--trait-2); transition: border-color .3s; }
@media (hover: hover) { .page-projet .lien-externe a:hover { border-color: var(--signal); } }
.page-projet .apres { display: grid; gap: 8px; justify-items: start; margin-top: 56px; padding-top: 26px; border-top: 1px solid var(--trait); }
.page-projet .apres-t {
  display: inline-flex; align-items: center; min-height: 44px;
  font-weight: 300; font-size: clamp(26px, 2.4vw, 38px); line-height: 1.05; letter-spacing: -.03em;
  border-bottom: 1px solid transparent; transition: border-color .3s;
}
@media (hover: hover) { .page-projet .apres-t:hover { border-bottom-color: var(--signal); } }
.page-projet .rail-meta { margin: 0; padding: 0 0 0 28px; border-left: 1px solid var(--trait); }
.page-projet .rail-liste { display: grid; }
.page-projet .rail-l { display: grid; gap: 6px; padding: 16px 0; border-bottom: 1px solid var(--trait); }
.page-projet .rail-l:first-child { padding-top: 0; }
.page-projet .rail-l:last-child { padding-bottom: 0; border-bottom: 0; }
.page-projet .rail-l dt {
  font-family: var(--mono); font-size: 11px; letter-spacing: .12em; text-transform: uppercase; line-height: 1.6;
  color: var(--encre-3);
}
.page-projet .rail-l dd { font-size: 15px; line-height: 1.45; color: var(--encre); overflow-wrap: break-word; font-variant-numeric: tabular-nums; }
.page-projet .rail-l dd .mono { font-size: var(--t-date); }
.page-projet .rail-etat { white-space: nowrap; color: var(--encre-2); }
@media (min-width: 1025px) {
  .rail-meta.rail-colle { position: sticky; top: min(calc(var(--entete-h) + 24px), calc(100vh - var(--rail-h, 0px) - 24px)); }
  .rail-meta.rail-colle { top: min(calc(var(--entete-h) + 24px), calc(100svh - var(--rail-h, 0px) - 24px)); }
}
.page-projet .rail-livrables { display: grid; }
.page-projet .rail-livrables a {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 14px;
  min-height: 44px;
  padding: 10px 0;
  border-bottom: 1px solid var(--trait);
  font-family: var(--mono);
  font-size: 12px;
  line-height: 1.5;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--encre);
  transition: border-color .3s;
}
.page-projet .rail-livrables li:first-child a { padding-top: 4px; }
.page-projet .rail-livrables li:last-child a { border-bottom: 0; }
@media (hover: hover) { .page-projet .rail-livrables a:hover { border-bottom-color: var(--signal-trait); } }
@media (hover: hover) { .page-projet .rail-livrables li:last-child a:hover { box-shadow: 0 1px 0 var(--signal-trait); } }
.page-projet .rail-livrables a::after {
  content: "";
  flex: none;
  width: 7px; height: 7px;
  margin-bottom: 3px;
  border-right: 1px solid var(--signal);
  border-bottom: 1px solid var(--signal);
  transform: rotate(45deg);
}
.page-projet .rail-livrables a[data-film]::after {
  width: 0; height: 0; margin: 0;
  border-style: solid;
  border-width: 5px 0 5px 8px;
  border-color: transparent transparent transparent var(--signal);
  transform: none;
}
.page-projet .galerie {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr));
  gap: 14px;
  align-items: start;
  max-width: var(--max);
  margin: 0 auto;
  padding: 0 var(--marge) clamp(64px, 10vh, 112px);
}
.page-projet .galerie-image { margin: 0; }
.page-projet .galerie-image img { width: 100%; height: auto; box-shadow: var(--ombre-pan); }
.page-projet .voisins {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: end;
  gap: 24px;
  max-width: calc(var(--max) - 2 * var(--marge));
  margin: 0 var(--marge);
  padding: 7vh 0 4vh;
  border-top: 1px solid var(--trait);
}
@media (min-width: 1537px) { .page-projet .voisins { margin: 0 auto; } }
.page-projet .voisin { display: grid; gap: 6px; justify-items: start; align-content: end; min-width: 0; min-height: 44px; }
.page-projet .voisin-suivant { justify-items: end; text-align: right; }
.page-projet .voisin-t {
  font-weight: 300; font-size: clamp(24px, 2.6vw, 44px); line-height: 1.05; letter-spacing: -.035em;
  overflow-wrap: break-word; border-bottom: 1px solid transparent; transition: border-color .3s;
}
@media (hover: hover) { .page-projet a.voisin:hover .voisin-t { border-bottom-color: var(--signal); } }
.page-projet .voisins-retour {
  justify-self: center; display: inline-flex; align-items: center; min-height: 44px;
  font-family: var(--mono); font-size: 12px; letter-spacing: .14em; text-transform: uppercase;
  border-bottom: 1px solid var(--trait-2); white-space: nowrap; transition: border-color .3s;
}
@media (hover: hover) { .page-projet .voisins-retour:hover { border-color: var(--signal); } }
.page-autres .liste-tete {
  display: grid; gap: 22px; align-content: end;
  min-height: calc(62vh - var(--entete-h)); min-height: calc(62svh - var(--entete-h));
  max-width: var(--max); margin: 0 auto; padding: 10vh var(--marge) 7vh;
}
.page-autres .liste-retour { display: flex; align-items: center; gap: 12px; }
.page-autres .liste-retour::before { content: ""; flex: none; width: 20px; height: 1px; background: var(--signal); }
.page-autres .liste-retour a { display: inline-flex; align-items: center; min-height: 44px; color: var(--encre-2); border-bottom: 1px solid transparent; transition: color .3s, border-color .3s; }
@media (hover: hover) { .page-autres .liste-retour a:hover { color: var(--encre); border-bottom-color: var(--signal); } }
.page-autres .liste-titre {
  font-family: var(--display); font-weight: 300;
  font-size: clamp(64px, 10vw, 180px); line-height: .84; letter-spacing: -.055em; margin-left: -.05em;
  max-width: min(100%, 11em); overflow-wrap: break-word;
}
.autres { max-width: var(--max); margin: 0 auto 14vh; padding: 0 var(--marge); }
.autre {
  position: relative;
  display: grid;
  grid-template-columns: 320px minmax(0, 1fr) auto;
  gap: 40px;
  align-items: start;
  padding: 32px 0;
  border-top: 1px solid var(--trait);
}
.autre:last-child { border-bottom: 1px solid var(--trait); }
.autre.sans-image { grid-template-columns: minmax(0, 1fr) auto; }
.autre-vignette { position: relative; aspect-ratio: 3 / 2; overflow: hidden; background: var(--plaque-2); box-shadow: var(--ombre-pan); transition: box-shadow .4s; }
.autre-vignette::after { content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none; background: var(--reflet); }
.autre-vignette img { width: 100%; height: 100%; object-fit: cover; }
.autre-vignette.contenue img { object-fit: contain; padding: 5%; }
@media (hover: hover) { .autre:hover .autre-vignette { box-shadow: var(--ombre-pan-survol); } }
.autre-texte { display: grid; gap: 10px; align-content: start; min-width: 0; }
.autre-titre { font-weight: 300; font-size: clamp(26px, 2.4vw, 38px); line-height: 1.05; letter-spacing: -.03em; }
.autre-lien::after { content: ""; position: absolute; inset: 0; z-index: 3; }
.autre-lien:focus-visible { outline: none; }
.autre-lien:focus-visible::after { outline: 2px solid var(--signal); outline-offset: 4px; }
.autre-aff { max-width: 32em; font-family: var(--serif); font-weight: 700; font-size: var(--t-3); line-height: 1.3; }
.autre-cadre { font-size: 15px; line-height: 1.45; color: var(--encre-2); }
.autre .carte-mention { justify-self: start; padding-left: 10px; border-left: 2px solid var(--encre-2); font-size: 15px; line-height: 1.45; }
.autre-annee { color: var(--encre-3); white-space: nowrap; }
@media (hover: hover) { .autre:hover .autre-titre { text-decoration: underline; text-decoration-color: var(--signal); text-decoration-thickness: 1px; text-underline-offset: 6px; } }
body.page-erreur { --ecl-x: 50vw; --ecl-y: 47vh; --ecl-r: 30vh; }
body.page-erreur > main { display: grid; place-items: center; min-height: 100vh; min-height: 100svh; padding: 0 var(--marge); }
.erreur { display: grid; gap: 40px; justify-items: center; text-align: center; }
.erreur-titre { max-width: 11em; font-weight: 300; font-size: clamp(44px, 7vw, 120px); line-height: .95; letter-spacing: -.05em; text-wrap: balance; }
.erreur-lien a { display: inline-flex; align-items: center; min-height: 44px; border-bottom: 1px solid var(--signal); color: var(--encre); }
@media (hover: hover) { .erreur-lien a:hover { border-bottom-width: 2px; } }
@media (max-width: 1024px) {
  .page-projet .fiche-corps { grid-template-columns: minmax(0, 1fr) minmax(220px, 280px); gap: 5vw; }
}
@media (max-width: 900px), (max-height: 500px) and (pointer: coarse) {
  body.page-erreur { --ecl-y: 50vh; --ecl-r: 40vw; }
  .page-projet .fiche-tete, .page-projet .fiche-tete.sans-visuel { min-height: 0; padding: 6vh var(--marge) 5vh; }
  .page-projet .fiche-tete-in { grid-template-columns: minmax(0, 1fr); gap: 36px; }
  .page-projet .sans-visuel .fiche-texte { max-width: none; }
  .page-projet .fiche-visuel { perspective: 1000px; padding: 0 0 2vh; }
  .page-projet .fiche-objet { transform: rotateY(-8deg) rotateX(3deg); }
  .page-projet .fiche-objet .cadre { width: min(100%, calc(64vh * var(--rw) / var(--rh))); width: min(100%, calc(64svh * var(--rw) / var(--rh))); }
  .page-projet .fiche-objet .reflet { bottom: -3vh; height: 5vh; }
  html.plat .page-projet .fiche-objet, html.sans-gl .page-projet .fiche-objet, html:not(.js) .page-projet .fiche-objet { transform: none !important; will-change: auto; }
  html.plat .page-projet .fiche-objet .reflet, html.sans-gl .page-projet .fiche-objet .reflet, html:not(.js) .page-projet .fiche-objet .reflet { display: none; }
  @media (prefers-reduced-motion: reduce) {
    .page-projet .fiche-objet { transform: none !important; will-change: auto; }
    .page-projet .fiche-objet .reflet { display: none; }
  }
  .page-projet .fiche-corps { grid-template-columns: minmax(0, 1fr); gap: 40px; }
  .page-projet .rail-meta { padding: 28px 0 0; border-left: 0; border-top: 1px solid var(--trait); }
  .page-projet .recit { font-size: 17px; }
  .page-projet .recit .lede { font-size: 19px; }
  .page-autres .liste-tete { min-height: 0; padding: 8vh var(--marge) 5vh; }
}
@media (max-width: 760px), (max-height: 500px) and (pointer: coarse) {
  .page-projet .fiche-tete, .page-projet .fiche-tete.sans-visuel { padding-top: 28px; padding-bottom: 36px; }
  .page-projet .fiche-texte { gap: 16px; }
  .page-projet .fiche-eyebrow { gap: 0 10px; max-width: calc(78vw - var(--marge) - 12px); }
  .page-projet .fiche-titre, .page-projet .sans-visuel .fiche-titre { font-size: clamp(44px, 13vw, 64px); }
  .page-projet .fiche-cadre, .page-projet .fiche-mention { font-size: 16px; }
  .page-projet .fiche-aff { font-size: 21px; padding-top: 16px; }
  .page-projet main .bouton { font-size: 13px; letter-spacing: .1em; }
  .page-projet .fiche-corps { padding-top: 32px; padding-bottom: 56px; }
  .page-projet .recit .code { font-size: 13px; }
  .page-projet .rail-l dt { font-size: 13px; letter-spacing: .08em; }
  .page-projet .rail-l dd { font-size: 16px; }
  .page-projet .rail-livrables a { font-size: 13px; letter-spacing: .06em; }
  .page-autres .liste-titre { font-size: clamp(52px, 17vw, 96px); }
  .autre { grid-template-columns: 128px minmax(0, 1fr); gap: 8px 16px; padding: 24px 0; }
  .autre.sans-image { grid-template-columns: minmax(0, 1fr); }
  .autre-vignette { grid-row: span 2; }
  .autre-titre { font-size: 22px; }
  .autre-aff { font-size: 17px; }
  .autre-cadre, .autre .carte-mention { font-size: 16px; }
  .autre-annee { grid-column: 2; }
  .autre.sans-image .autre-annee { grid-column: 1; }
  .page-projet .voisins { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: start; gap: 28px 20px; }
  .page-projet .voisin { align-content: start; }
  .page-projet .voisins-retour { grid-column: 1 / -1; grid-row: 2; justify-self: start; font-size: 13px; letter-spacing: .1em; }
  .page-projet .voisin-t { font-size: 22px; }
}
@media (prefers-reduced-motion: reduce) {
  .page-projet .fiche-objet { will-change: auto; }
}
@media print {
  .entete, .pied { display: none; }
  .page-projet .fiche-objet { transform: none !important; }
  .page-projet .fiche-tete { min-height: 0; }
  .page-projet .voisins { display: none; }
}
