:root{
  --ground:#ffffff;
  --ink:#000000;
  --ink-soft:#4a4a46;
  --mat:#ece9e4;
  --mat-warm:#ebebe6;
  --hairline:rgba(0,0,0,.16);
  /* Henry Pro NP (maquette) → remplacer ici par le webfont sous licence.
     En attendant : EB Garamond, la plus proche des fontes libres. */
  --serif:"Henry Pro NP", "EB Garamond", Garamond, Georgia, "Times New Roman", serif;
  --edge:20px;
  --header-h:55px;
  --body:15px;
  --ease:cubic-bezier(.22,.61,.36,1);
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box}
html{color-scheme:light}
html,body{background:var(--ground)}
body{
  margin:0;
  color:var(--ink);
  font-family:var(--serif);
  font-size:var(--body);
  font-weight:400;
  line-height:1.62;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
img{max-width:100%}
[hidden]{display:none!important}
a{color:inherit;text-decoration:none}
::selection{background:var(--mat);color:var(--ink)}
:focus-visible{outline:1px solid var(--ink);outline-offset:4px}

/* ---------- logotype ---------- */
.logotype{display:block;width:147px;height:auto;color:var(--ink)}
.logotype svg{display:block;width:100%;height:auto}

/* ---------- header ---------- */
.masthead{
  position:fixed;inset:0 0 auto 0;z-index:20;
  padding:var(--edge) var(--edge) 0;
  padding-top:calc(var(--edge) + env(safe-area-inset-top, 0px));
  display:grid;grid-template-columns:1fr auto 1fr;align-items:start;gap:16px;
  opacity:0;pointer-events:none;
  transition:opacity .6s var(--ease);
}
.masthead[data-visible="true"]{opacity:1;pointer-events:auto}
.masthead .logotype{width:147px;grid-column:2}
.menu{grid-column:3;justify-self:end;display:flex;gap:24px;font-size:14px;line-height:1.28}
.menu a{transition:letter-spacing .35s var(--ease)}
.menu a:hover,.menu a:focus-visible,.menu a[aria-current="page"]{font-style:italic;letter-spacing:.05em}

/* ---------- shared ---------- */
em,.i{font-style:italic}
section{position:relative}
.smallcaps{font-variant-caps:all-small-caps;letter-spacing:.1em}

/* ---------- hero ---------- */
.hero{
  min-height:100svh;
  display:grid;
  grid-template-rows:24.2fr 26fr 49.8fr;
  padding:0 max(var(--edge), 16px);
  text-align:center;
}
.hero__mark{grid-row:2;align-self:start;justify-self:center}
.hero__mark .logotype{width:147px}
.hero__text{
  grid-row:3;align-self:center;justify-self:center;
  max-width:44ch;
  display:flex;flex-direction:column;align-items:center;gap:2.6em;
}
.hero__text p{margin:0}
.hero__cta{
  font-variant-caps:small-caps;letter-spacing:.12em;
  display:inline-flex;flex-direction:column;align-items:center;gap:.5em;
}
.hero__cta::after{
  content:"";display:block;width:100%;height:1px;background:var(--ink);
  transform:scaleX(0);transform-origin:center;transition:transform .5s var(--ease);
}
.hero__cta:hover::after,.hero__cta:focus-visible::after{transform:scaleX(1)}

/* ---------- viewer ---------- */
.viewer{
  min-height:100svh;
  padding:calc(var(--header-h) + env(safe-area-inset-top, 0px)) var(--edge) var(--edge);
  display:flex;flex-direction:column;justify-content:center;
}
.viewer__stage{
  position:relative;width:100%;
  aspect-ratio:1600/905;
  max-height:calc(100svh - var(--header-h) - var(--edge) * 2);
  margin-inline:auto;
  background:var(--mat-warm);
  overflow:hidden;
}
.viewer__stage figure{margin:0;position:absolute;inset:0;opacity:0;transition:opacity .9s var(--ease)}
.viewer__stage figure[data-current="true"]{opacity:1}
.viewer__stage img{width:100%;height:100%;object-fit:cover;display:block}
.viewer__nav{position:absolute;inset:0;display:grid;grid-template-columns:1fr 1fr}
.viewer__nav button{border:0;background:none;padding:0;margin:0;cursor:pointer;font:inherit;color:transparent}
.viewer__nav button:first-child{cursor:w-resize}
.viewer__nav button:last-child{cursor:e-resize}

/* ---------- index des projets ---------- */
.index{
  padding:calc(var(--header-h) + 64px + env(safe-area-inset-top, 0px)) max(var(--edge),16px) 0;
}
.index__intro{
  text-align:center;max-width:44ch;margin:0 auto 78px;
}
.index__intro p{margin:0}
.famille{margin-bottom:104px}
.famille__label{
  text-align:center;font-variant-caps:all-small-caps;letter-spacing:.16em;
  font-size:16px;font-weight:400;margin:0 0 4px;
}
.famille__note{
  text-align:center;font-style:italic;color:var(--ink-soft);font-size:14px;
  margin:0 0 34px;
}
.grille{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:44px 34px;max-width:900px;margin-inline:auto;
}
.projet{display:flex;flex-direction:column;gap:12px}
.projet figure{margin:0;aspect-ratio:4/5;max-width:100%;background:var(--mat);overflow:hidden}
.projet img{width:100%;height:100%;object-fit:cover;display:block}
.projet figcaption{
  text-align:center;font-variant-caps:all-small-caps;letter-spacing:.14em;font-size:14px;
}

/* ---------- informations ---------- */
.infos{
  min-height:100svh;
  padding:calc(var(--header-h) + 60px + env(safe-area-inset-top, 0px)) max(var(--edge),16px) 90px;
  display:flex;flex-direction:column;align-items:center;gap:38px;text-align:center;
}
.mat{background:var(--mat);padding:19px 19px 32px;width:236px;max-width:100%}
.mat img{display:block;width:100%;height:255px;object-fit:cover;background:var(--mat-warm)}
.infos__text{max-width:304px}
.infos__text p{margin:0 0 1.35em}
.infos__text p:last-child{margin-bottom:0}
.infos__label{font-variant-caps:all-small-caps;letter-spacing:.1em;margin-bottom:1.9em}
.contact{
  display:flex;flex-direction:column;align-items:center;gap:.55em;
  padding-top:26px;border-top:1px solid var(--hairline);width:236px;max-width:100%;
}
.contact span{font-variant-caps:all-small-caps;letter-spacing:.1em;color:var(--ink-soft)}
.contact a{border-bottom:1px solid var(--hairline);padding-bottom:2px}
.contact a:hover{border-bottom-color:var(--ink)}

.colophon{
  padding:0 max(var(--edge),16px) calc(22px + env(safe-area-inset-bottom, 0px));
  text-align:center;font-size:12px;letter-spacing:.06em;color:var(--ink-soft);
  font-variant-caps:all-small-caps;
}

/* ---------- entrée ---------- */
.fade{opacity:0;transform:translateY(6px);animation:rise .9s var(--ease) forwards}
.fade--1{animation-delay:.05s}
.fade--2{animation-delay:.55s}
.fade--3{animation-delay:.95s}
@keyframes rise{to{opacity:1;transform:none}}

@media (prefers-reduced-motion: reduce){
  .fade{animation:none;opacity:1;transform:none}
  *{transition-duration:.01ms !important}
}

@media (max-width:760px){
  :root{--edge:16px;--header-h:48px}
  .masthead{grid-template-columns:auto 1fr;gap:10px}
  .masthead .logotype{grid-column:1;width:104px}
  .menu{grid-column:2;justify-self:end;gap:16px;font-size:13px}
  .hero__mark .logotype{width:124px}
  .hero{grid-template-rows:22fr 22fr 56fr}
  .viewer__stage{aspect-ratio:4/5}
  .infos{gap:30px}
  .grille{grid-template-columns:1fr;gap:26px}
  .famille{margin-bottom:64px}
  .index__intro{margin-bottom:54px}
}

/* ---------- carte projet cliquable ---------- */
.projet > a{display:flex;flex-direction:column;gap:12px;color:inherit}
.projet > a figure{transition:opacity .45s var(--ease)}
.projet > a:hover figure{opacity:.82}
.projet > a:hover figcaption{font-style:italic}

/* ---------- page d'un projet ---------- */
.projet-page{
  padding:calc(var(--header-h) + 64px + env(safe-area-inset-top, 0px)) max(var(--edge),16px) 0;
  max-width:1100px;margin-inline:auto;
}
.projet-page__head{text-align:center;margin-bottom:58px}
.projet-page__head h1{
  font-size:18px;font-weight:400;margin:0 0 6px;
  font-variant-caps:all-small-caps;letter-spacing:.18em;
}
.projet-page__head p{
  margin:0;font-style:italic;color:var(--ink-soft);font-size:14px;
}
.serie{display:flex;flex-direction:column;gap:22px}
.serie img{width:100%;height:auto;display:block;background:var(--mat)}
.retour{
  display:block;text-align:center;margin:64px 0 0;
  font-variant-caps:all-small-caps;letter-spacing:.12em;font-size:14px;
}
.retour:hover{font-style:italic}

.projet__attente{position:relative;display:block;background:var(--mat)}
.projet__attente img{width:100%;height:100%;object-fit:cover;display:block}
.projet__attente span{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  font-style:italic;font-size:14px;color:var(--ink);text-align:center;
  white-space:nowrap;
}
.projet > a .projet__attente span{
  background:rgba(255,255,255,.82);padding:.45em 1.1em;
}
