/* ============================================================
   LCJCD — couche design "agence primée"  (elevate.css)
   ============================================================ */

/* — Affinage typographique global — */
.intro h1, .head h1, .phead h1, .hero h1,
.statement p, .cap .t, .cell .t, .founders h3,
.next .t, .left h1, .band figcaption{
  font-feature-settings:"liga" 1,"dlig" 1,"kern" 1;
  -webkit-font-smoothing:antialiased;
  text-wrap:balance;
}
.intro h1{font-size:clamp(34px,5vw,72px) !important;line-height:1.05 !important;letter-spacing:-.01em}
.hero h1{letter-spacing:-.015em}
body{letter-spacing:.005em}

/* — Grain / texture d'atmosphère — */
body>.grain, .grain{position:fixed !important;inset:0 !important;z-index:9998 !important;pointer-events:none !important;opacity:.035 !important;mix-blend-mode:multiply}

/* — Préchargeur — */
#pre{position:fixed;inset:0;z-index:10000;background:#f7f5f1;display:flex;align-items:center;justify-content:center;
  transition:opacity 1s cubic-bezier(.7,0,.2,1),visibility 1s}
#pre.done{opacity:0;visibility:hidden}
#pre .mark{text-align:center;overflow:hidden}
#pre .mark b{display:block;font-family:var(--sans);font-weight:400;font-size:clamp(34px,7vw,82px);letter-spacing:.5em;
  padding-left:.5em;color:#161412;transform:translateY(110%);animation:rise 1.1s cubic-bezier(.16,1,.3,1) .15s forwards}
#pre .mark span{display:block;font-size:10px;letter-spacing:.42em;text-transform:uppercase;color:#8a847c;margin-top:18px;
  opacity:0;animation:fadein .8s ease .8s forwards}
#pre .bar{position:absolute;left:0;bottom:0;height:2px;width:0;background:#161412;animation:load 1.5s cubic-bezier(.7,0,.2,1) forwards}
@keyframes rise{to{transform:none}}
@keyframes fadein{to{opacity:1}}
@keyframes load{to{width:100%}}

/* — Curseur personnalisé (desktop) — */
@media(hover:hover) and (pointer:fine){
  .cur{position:fixed;top:0;left:0;z-index:9999;pointer-events:none;width:64px;height:64px;border:1px solid rgba(255,255,255,.9);
    border-radius:50%;display:flex;align-items:center;justify-content:center;transform:translate(-50%,-50%) scale(0);
    transition:transform .35s cubic-bezier(.16,1,.3,1),background .35s,border-color .35s;mix-blend-mode:difference}
  .cur.show{transform:translate(-50%,-50%) scale(1)}
  .cur::after{content:"VOIR";font-family:var(--sans);font-size:9px;letter-spacing:.22em;color:#fff}
  .cur.dot{width:8px;height:8px;background:#fff;border-color:#fff}
  .cur.dot::after{content:""}
}

/* — Révélations au scroll — */
[data-rise]{opacity:0;transform:translateY(34px);transition:opacity 1.1s cubic-bezier(.16,1,.3,1),transform 1.1s cubic-bezier(.16,1,.3,1)}
[data-rise].in{opacity:1;transform:none}
[data-rise].d1{transition-delay:.08s}[data-rise].d2{transition-delay:.16s}[data-rise].d3{transition-delay:.24s}

/* — Image hovers (grille projets) plus cinétiques — */
.cell{overflow:hidden}
.cell img{transition:transform 1.2s cubic-bezier(.16,1,.3,1),filter 1.2s !important}
.cell:hover img{transform:scale(1.06) !important;filter:saturate(1.05)}
.cell .ov .t{transition:transform .6s cubic-bezier(.16,1,.3,1)}
.cell:hover .ov .t{transform:translateY(-3px)}

/* — Hero parallax target — */
.hero img,.frame img{will-change:transform}

/* — Numérotation éditoriale projets (grille) — */
.cell{counter-increment:proj}
.cell .ov::before{content:counter(proj,decimal-leading-zero);position:absolute;top:20px;left:22px;
  font-family:var(--serif);font-style:italic;font-size:15px;color:rgba(255,255,255,.75);letter-spacing:.05em}
.grid{counter-reset:proj}

/* — Liens nav: petit point actif — */
header nav a.on::before{content:"";position:absolute;left:50%;top:-9px;width:3px;height:3px;border-radius:50%;
  background:var(--ink);transform:translateX(-50%)}

/* — Scrollbar discrète — */
::selection{background:#161412;color:#f7f5f1}

/* — Bouton retour-haut — */
#top{position:fixed;right:26px;bottom:26px;z-index:60;width:46px;height:46px;border-radius:50%;border:1px solid var(--line);
  background:rgba(255,255,255,.9);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;
  cursor:pointer;opacity:0;transform:translateY(12px) scale(.9);transition:.4s cubic-bezier(.16,1,.3,1);font-size:15px;color:var(--ink)}
#top.show{opacity:1;transform:none}
#top:hover{background:var(--ink);color:#fff;border-color:var(--ink)}
@media(max-width:860px){#top{right:16px;bottom:16px}}

/* — Correctif: empilement légendes hero/frame — */
.cap .t,.cap .m,.cap .tag{display:block}
.cap .t{margin-bottom:10px}
.cap .m{margin-top:0}
.hero .cap h1{margin-bottom:12px}
.hero .cap .loc{display:block}


/* — Menu mobile fonctionnel — */
.menu-btn{cursor:pointer;user-select:none;color:var(--ink);position:relative;z-index:10002}
.menu-btn:focus-visible{outline:1px solid var(--ink);outline-offset:6px}
.mobile-menu{position:fixed;inset:0;z-index:10001;background:rgba(247,245,241,.98);backdrop-filter:saturate(160%) blur(16px);display:flex;flex-direction:column;justify-content:center;padding:96px 28px 42px;opacity:0;visibility:hidden;pointer-events:none;transform:translateY(-10px);transition:opacity .35s cubic-bezier(.16,1,.3,1),visibility .35s,transform .35s cubic-bezier(.16,1,.3,1)}
.mobile-menu.open{opacity:1;visibility:visible;pointer-events:auto;transform:none}
.mobile-menu nav{display:flex !important;flex-direction:column;align-items:flex-start;gap:24px}
.mobile-menu nav a{font-family:var(--serif);font-size:clamp(34px,12vw,58px);line-height:1;letter-spacing:.01em;text-transform:none;opacity:1;color:var(--ink);padding:0}
.mobile-menu nav a::after{display:none}
.mobile-menu nav a.on{font-style:italic;color:var(--ink)}
.mobile-menu .mobile-tools{margin-top:42px;display:flex;gap:24px;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted)}
body.menu-open{overflow:hidden}
body.menu-open header{background:rgba(247,245,241,.96);border-bottom-color:transparent;z-index:10002}
@media(min-width:861px){.mobile-menu{display:none}}
@media(max-width:860px){.menu-btn{display:block;font-size:11px;letter-spacing:.2em;text-transform:uppercase}.mobile-menu{display:flex}.brand{z-index:10002}}

/* — Recherche site-wide — */
.search-trigger{cursor:pointer;user-select:none}
.search-trigger:focus-visible{outline:1px solid var(--ink);outline-offset:5px}
.search-layer{position:fixed;inset:0;z-index:10003;background:rgba(247,245,241,.96);backdrop-filter:saturate(160%) blur(18px);display:flex;align-items:flex-start;justify-content:center;padding:118px 38px 38px;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .35s cubic-bezier(.16,1,.3,1),visibility .35s}
.search-layer.open{opacity:1;visibility:visible;pointer-events:auto}
.search-panel{width:min(920px,100%);position:relative;color:var(--ink)}
.search-close{position:absolute;right:0;top:-54px;border:0;background:none;color:var(--muted);font-family:var(--sans);font-size:11px;letter-spacing:.22em;text-transform:uppercase;cursor:pointer;padding:10px 0}
.search-close:hover{color:var(--ink)}
.search-kicker{font-size:11px;letter-spacing:.34em;text-transform:uppercase;color:var(--muted);margin-bottom:18px}
.search-input{width:100%;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);font-family:var(--serif);font-size:clamp(30px,6vw,66px);font-weight:400;line-height:1.1;padding:0 0 18px;outline:none;border-radius:0}
.search-input::placeholder{color:rgba(22,20,18,.28)}
.search-results{display:grid;gap:1px;margin-top:32px;background:var(--line)}
.search-result{display:grid;grid-template-columns:1.2fr 1fr;gap:20px;align-items:baseline;background:#f7f5f1;padding:18px 20px;transition:background .25s}
.search-result:hover{background:#fff}
.search-result strong{font-family:var(--serif);font-size:24px;font-weight:400;line-height:1.15}
.search-result span{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);line-height:1.55}
.search-empty{background:#f7f5f1;padding:22px 20px;color:var(--muted);font-size:14px;letter-spacing:.04em}
body.search-open{overflow:hidden}
@media(max-width:860px){.search-layer{padding:96px 18px 24px}.search-close{top:-46px}.search-result{grid-template-columns:1fr;gap:8px;padding:16px 0;background:#f7f5f1}.search-results{background:transparent;border-top:1px solid var(--line)}.search-result{border-bottom:1px solid var(--line)}.search-result strong{font-size:23px}.search-result span{font-size:10px}}

/* — Bascule langue — */
.lang-trigger{cursor:pointer;user-select:none}
.lang-trigger:focus-visible{outline:1px solid var(--ink);outline-offset:5px}
body.lang-en .lang-trigger{opacity:1}
