/* CUBE HERITAGE — version light unique · passe "craft" éditoriale */
:root{
  --bg:#ffffff; --bg2:#f7f5f2;
  --txt:#161412; --txt2:#524b43;
  --marron:#66452c; --marron-f:#3f2819;
  --accent:#66452c; --accent-strong:#3f2819;
  --beige:#c9b697;
  --gris:#8c857c; --ligne:#e8e3db;
  --serif:'Cormorant Garamond',Georgia,serif;
  --sans:'Inter',system-ui,sans-serif;
  --ease:cubic-bezier(.22,1,.36,1);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;text-size-adjust:100%} /* mobile : mêmes polices que la version web, pas de gonflement iOS */
body{font-family:var(--sans);color:var(--txt);background:var(--bg);font-weight:300;line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:hidden}
body.locked{overflow:hidden}
h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:1.06;color:var(--txt);font-feature-settings:"liga","dlig";letter-spacing:.005em}
img{display:block;width:100%;height:100%;object-fit:cover}
a{color:inherit;text-decoration:none}
::selection{background:var(--accent);color:#fff}
:focus-visible{outline:1px solid var(--accent);outline-offset:4px}
.wrap{max-width:1280px;margin:0 auto;padding:0 36px}
.eyebrow{font-size:11.5px;letter-spacing:.36em;text-transform:uppercase;color:var(--accent);font-weight:400}
.eyebrow .no{color:var(--gris);margin-right:14px;letter-spacing:.1em}
.lede,.projet p,.savoir .col p{color:var(--txt2)}

/* Bouton */
.btn{display:inline-block;border:1px solid var(--accent-strong);color:var(--accent-strong);background:transparent;
     padding:16px 40px;font-size:12px;letter-spacing:.2em;text-transform:uppercase;cursor:pointer;
     transition:background .85s var(--ease),color .85s var(--ease)}
.btn:hover{background:var(--accent-strong);color:#fff}

/* ===== CADRE "TABLEAU" + LÉGENDE ===== */
.framed{display:block;position:relative;padding:18px;border:3px solid var(--accent);transition:border-color .6s var(--ease)}
a.framed:hover{border-color:var(--accent-strong)}
.framed figure,.framed .ph-in{overflow:hidden}
.framed img{transition:transform 2.6s var(--ease),opacity 2.4s var(--ease)}
a.framed:hover img{transform:scale(1.03)}
.framed .frame-cta{position:absolute;left:50%;bottom:38px;transform:translate(-50%,14px);background:rgba(255,255,255,.94);
  color:var(--accent-strong);padding:12px 26px;font-size:11px;letter-spacing:.2em;text-transform:uppercase;
  opacity:0;transition:opacity .5s var(--ease),transform .5s var(--ease);z-index:3;pointer-events:none}
a.framed:hover .frame-cta{opacity:1;transform:translate(-50%,0)}
/* légende éditoriale sous la photo */
.cap{display:flex;align-items:baseline;gap:12px;margin-top:14px;font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--gris)}
.cap i{font-style:normal;font-family:var(--serif);font-size:13px;color:var(--accent)}

/* ===== PRÉCHARGEUR ===== */
.loader{position:fixed;inset:0;background:var(--bg);z-index:200;display:flex;align-items:center;justify-content:center;transition:transform .9s var(--ease) .1s}
.loader .cube{position:relative;width:96px}
.loader .cube img{display:block;width:96px;height:auto}
.loader .cube .gray{filter:grayscale(1);opacity:.18}
.loader .cube .color{position:absolute;inset:0;clip-path:inset(100% 0 0 0);animation:fillup 1.8s var(--ease) .25s forwards}
@keyframes fillup{to{clip-path:inset(0 0 0 0)}}
body.loaded .loader{transform:translateY(-100%)}
body.leaving .loader{transform:translateY(0);transition:transform .55s var(--ease)}
body.leaving .loader .cube .color{animation:fillup 1.8s var(--ease) .1s forwards}

/* ===== NAV ===== */
header.nav{position:fixed;top:0;left:0;right:0;z-index:90;padding:24px 0;background:var(--bg);transition:transform .5s var(--ease),padding .4s,border .4s}
header.nav.hide{transform:translateY(-110%)}
header.nav.scrolled{padding:12px 0;border-bottom:1px solid var(--ligne)}
.nav .wrap{display:flex;align-items:center;justify-content:space-between;gap:18px;position:relative}
.nav .center{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center;pointer-events:none;transition:opacity .4s var(--ease)}
.nav .center .eyebrow{font-size:10px;letter-spacing:.3em}
.nav .center .trait2{width:210px;height:1px;background:var(--accent);margin:7px auto 0}
.nav .center .zones-mini{margin-top:7px;font-size:9.5px;letter-spacing:.3em;text-transform:uppercase;color:var(--gris)}
header.nav.scrolled .center{opacity:0}
.nav .right{display:flex;align-items:center;gap:14px}
.logo{position:relative;display:block;height:52px;width:141px;transition:width .55s var(--ease),height .55s var(--ease)}
.logo img{position:absolute;left:0;top:0;height:100%;width:auto;transition:opacity .45s var(--ease)}
.logo .mark{opacity:0}
header.nav.scrolled .logo{width:38px;height:44px}
header.nav.scrolled .logo .lock{opacity:0}
header.nav.scrolled .logo .mark{opacity:1}



/* Commutateur langue */
.toggle{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--ligne);color:var(--txt);
  padding:8px 14px;font-size:11px;letter-spacing:.16em;text-transform:uppercase;background:none;cursor:pointer;
  transition:border-color .4s}
.toggle:hover{border-color:var(--accent)}
.toggle .sep{opacity:.4}
.toggle b{font-weight:500;color:var(--accent)}
.toggle span{font-weight:300;opacity:.55}

.burger{display:flex;flex-direction:column;gap:6px;background:none;border:none;cursor:pointer;padding:8px;z-index:120}
.burger span{display:block;width:30px;height:1.5px;background:var(--txt);transition:transform .5s var(--ease),opacity .35s}
body.menu-open .burger span:nth-child(1){transform:translateY(7.5px) rotate(45deg)}
body.menu-open .burger span:nth-child(2){opacity:0}
body.menu-open .burger span:nth-child(3){transform:translateY(-7.5px) rotate(-45deg)}

/* ===== MENU ===== */
.menu-overlay{position:fixed;inset:0;z-index:100;background:var(--bg);clip-path:inset(0 0 100% 0);transition:clip-path .8s var(--ease);pointer-events:none}
body.menu-open .menu-overlay{clip-path:inset(0 0 0 0);pointer-events:auto}
.menu-close{position:absolute;top:26px;right:36px;display:flex;align-items:center;gap:10px;background:none;border:1px solid var(--ligne);
  color:var(--txt);padding:10px 20px;font-size:11px;letter-spacing:.2em;text-transform:uppercase;cursor:pointer;
  opacity:0;transition:opacity .5s var(--ease) .4s;z-index:2}
body.menu-open .menu-close{opacity:1}
.menu-close:hover{border-color:var(--accent)}
.menu-inner{height:100%;display:flex;align-items:center;justify-content:space-between;gap:60px;flex-wrap:wrap;padding-top:80px}
.menu-links{display:flex;flex-direction:column;gap:6px}
.menu-links a{font-family:var(--serif);font-size:clamp(32px,5vw,62px);line-height:1.18;color:var(--txt);
  opacity:0;transform:translateY(26px);transition:opacity .6s var(--ease),transform .6s var(--ease),color .3s}
body.menu-open .menu-links a{opacity:1;transform:none}
body.menu-open .menu-links a:nth-child(1){transition-delay:.20s}
body.menu-open .menu-links a:nth-child(2){transition-delay:.28s}
body.menu-open .menu-links a:nth-child(3){transition-delay:.36s}
body.menu-open .menu-links a:nth-child(4){transition-delay:.44s}
body.menu-open .menu-links a:nth-child(5){transition-delay:.52s}
.menu-links a:hover{color:var(--accent)}
.menu-side{display:flex;flex-direction:column;gap:10px;opacity:0;transition:opacity .6s var(--ease) .5s}
body.menu-open .menu-side{opacity:1}
.menu-side a{font-size:14.5px;color:var(--txt2);transition:color .3s}
.menu-side a:hover{color:var(--accent)}
.menu-side .eyebrow{margin-bottom:8px}
.menu-contact{margin-top:20px;font-size:13.5px;color:var(--gris);line-height:1.9}

/* ===== RÉVÉLATIONS ===== */
.rv{opacity:0;transform:translateY(30px);transition:opacity 1.5s var(--ease),transform 1.5s var(--ease)}
.rv.in{opacity:1;transform:none}
.rv.d1{transition-delay:.12s}.rv.d2{transition-delay:.24s}.rv.d3{transition-delay:.36s}.rv.d4{transition-delay:.48s}
.veil img{opacity:0;transform:scale(1.05);transition:opacity 2.4s var(--ease),transform 3s var(--ease)}
.veil.in img{opacity:1;transform:scale(1)}
.lines .ln{display:block;overflow:hidden}
.lines .ln span{display:inline-block;transform:translateY(110%);transition:transform 1.05s var(--ease)}
.lines.in .ln:nth-child(1) span{transition-delay:.05s}
.lines.in .ln:nth-child(2) span{transition-delay:.17s}
.lines.in .ln span{transform:none}

/* ===== BANDE VIDÉO ===== */
.filmband{position:relative;margin-top:104px;height:calc(100vh - 104px);overflow:hidden;background:#0d0b0a}
.filmband video,.filmband .fallback{position:absolute;left:0;width:100%;object-fit:cover;
  /* la vidéo déborde par le haut : les 18 % supérieurs (coin logo) sortent du cadre */
  top:-18%;height:118%}
/* en lecture plein écran, la vidéo reprend son cadrage entier */
.filmband:fullscreen video,.filmband:-webkit-full-screen video,
.filmband.playing video{top:0;height:100%}
.filmband::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 70%,rgba(13,11,10,.35));pointer-events:none}
.filmband.compact{margin-top:0;height:min(72vh,760px)}
.filmband.playing video{object-fit:contain;background:#000}
.filmband.playing::after{display:none}
.filmband{cursor:pointer}
.filmband:fullscreen{background:#000}
.filmband:fullscreen video{object-fit:contain}
/* croix de fermeture : visible uniquement en plein écran */
.filmband.fs-mobile{position:fixed;inset:0;z-index:150;height:100vh;margin:0;background:#000}
.filmband.fs-mobile video{top:0;height:100%;object-fit:contain}
.filmband.fs-mobile .fs-close{display:flex}
.filmband .fs-close{display:none;position:absolute;top:26px;right:26px;z-index:6;width:52px;height:52px;
  align-items:center;justify-content:center;background:rgba(0,0,0,.45);border:1px solid rgba(255,255,255,.55);
  border-radius:50%;color:#fff;font-size:18px;cursor:pointer;transition:background .3s}
.filmband .fs-close:hover{background:rgba(0,0,0,.75)}
.filmband:fullscreen .fs-close{display:flex}
.filmband:-webkit-full-screen .fs-close{display:flex}
video:fullscreen{object-fit:contain!important;background:#000}
video:-webkit-full-screen{object-fit:contain!important;background:#000}
.playfilm{display:none!important}                          /* bouton retiré : clic sur la vidéo = plein écran */
.playfilm span:not(.ring){display:none}                     /* bouton play seul, sans texte */
.filmband.playing .scroll-hint,.filmband:fullscreen .scroll-hint,
.filmband:-webkit-full-screen .scroll-hint,
.filmband.playing .playfilm,.filmband:fullscreen .playfilm,
.filmband:-webkit-full-screen .playfilm{display:none}       /* invisible pendant la lecture */
.playfilm .ring{width:74px;height:74px;border:1px solid rgba(255,255,255,.75);border-radius:50%;display:flex;align-items:center;justify-content:center;transition:transform .8s var(--ease),background .8s var(--ease)}
.playfilm .ring::before{content:"";width:0;height:0;border-left:14px solid #fff;border-top:9px solid transparent;border-bottom:9px solid transparent;margin-left:4px}
.playfilm:hover .ring{transform:scale(1.08);background:rgba(255,255,255,.12)}
.scroll-hint{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);z-index:4;font-size:10.5px;letter-spacing:.34em;text-transform:uppercase;color:rgba(255,255,255,.8);display:flex;flex-direction:column;align-items:center;gap:10px}
.scroll-hint::after{content:"";width:1px;height:38px;background:linear-gradient(rgba(255,255,255,.8),transparent);animation:drip 2.4s var(--ease) infinite}
@keyframes drip{0%{transform:scaleY(0);transform-origin:top}45%{transform:scaleY(1);transform-origin:top}55%{transform:scaleY(1);transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}

/* ===== INTRO ===== */
.intro{padding:110px 0 90px;text-align:center}
.intro h1{font-size:clamp(46px,6.2vw,92px);font-weight:300;max-width:16ch;margin:0 auto}
.intro p.lead{font-size:clamp(16px,1.5vw,19px);max-width:52ch;margin:28px auto 40px;color:var(--txt2)}

/* ===== BANDEAU VILLES (non cliquable) ===== */
.marquee{border-top:1px solid var(--ligne);border-bottom:1px solid var(--ligne);padding:26px 0;overflow:hidden;white-space:nowrap}
.marquee .track{display:inline-block;animation:mq 90s linear infinite}
.marquee span{font-family:var(--serif);font-style:italic;font-size:clamp(22px,2.6vw,34px);color:var(--accent);margin:0 34px;opacity:.85}
.marquee i{font-style:normal;color:var(--ligne)}
@keyframes mq{to{transform:translateX(-50%)}}

section{padding:120px 0}
.lbl{margin-bottom:22px}
.section-title{font-size:clamp(32px,4.4vw,56px);max-width:20ch}
.lede{font-size:clamp(16px,1.4vw,19px);max-width:62ch}
.alt{background:var(--bg2)}
.page-head{padding:170px 0 70px}
.page-head .section-title{font-size:clamp(38px,5.4vw,72px)}

/* ===== MANIFESTE ===== */
.manifeste .grid{display:grid;grid-template-columns:1.05fr .95fr;gap:76px;align-items:center}
.manifeste .figure-slot .ph-in{aspect-ratio:4/5}

/* ===== LISTE PROJETS ===== */
.plist{display:grid;grid-template-columns:repeat(2,1fr);gap:72px 44px;margin-top:60px}
.plist .card h3{font-size:clamp(24px,2.4vw,34px);margin-top:20px}
.plist .card h3 a:hover{color:var(--accent)}
.plist .card .meta{font-size:11.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--accent);margin-top:8px}
.plist .card figure{aspect-ratio:4/3}
/* décalage éditorial : la 2e colonne démarre plus bas (asymétrie voulue) */
@media(min-width:881px){.plist .card:nth-child(even){transform:translateY(56px)}}

/* ===== RESPIRATION ===== */
.breather{position:relative;height:78vh;overflow:hidden;display:flex;align-items:center;justify-content:center;padding:0}
.breather .bg{position:absolute;inset:-12% 0;will-change:transform}
.breather .bg::after{content:"";position:absolute;inset:0;background:rgba(22,20,18,.34)}
.breather blockquote{position:relative;z-index:2;font-family:var(--serif);font-weight:300;font-style:italic;font-size:clamp(26px,3.6vw,46px);color:#fff;text-align:center;max-width:24ch;padding:0 24px}

/* ===== SAVOIR-FAIRE ===== */
.savoir .cols{display:grid;grid-template-columns:repeat(4,1fr);gap:46px;margin-top:64px}
.savoir .col{position:relative;padding-top:24px}
.savoir .col::before{content:"";position:absolute;top:0;left:0;height:1px;width:100%;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform 1.1s var(--ease)}
.savoir .col.in::before{transform:scaleX(1)}
.savoir .col .n{font-family:var(--serif);font-size:30px;color:var(--accent);margin-bottom:12px}
.savoir .col h3{font-size:23px;margin-bottom:12px}
.savoir .col p{font-size:14.5px}

/* ===== DÉTAILS ===== */
.matiere .strip{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;margin-top:60px}
.matiere .ph-in{aspect-ratio:1;overflow:hidden}

/* ===== ZONES ===== */
.zones .list{display:flex;flex-wrap:wrap;gap:14px;margin-top:40px}
.zones .chip{border:1px solid var(--accent);color:var(--accent-strong);padding:12px 28px;font-size:13.5px;letter-spacing:.12em;transition:background .7s var(--ease),color .7s var(--ease)}
a.chip:hover{background:var(--accent-strong);color:#fff}
.zones .chip.mute{border-color:var(--ligne);color:var(--gris)}

/* ===== CONTACT ===== */
.contact .grid{display:grid;grid-template-columns:1fr 1fr;gap:76px}
.contact a.mail{font-family:var(--serif);font-size:clamp(26px,3vw,42px);color:var(--accent-strong);border-bottom:1px solid var(--accent);display:inline-block;margin-top:18px;transition:color .3s}
.contact a.mail:hover{color:var(--accent)}
form{display:grid;gap:18px}
form input,form textarea{background:transparent;border:none;border-bottom:1px solid var(--ligne);color:var(--txt);padding:14px 0;font-family:var(--sans);font-size:15px;transition:border-color .4s}
form input::placeholder,form textarea::placeholder{color:var(--gris)}
form input:focus,form textarea:focus{outline:none;border-color:var(--accent)}

/* Confirmation d'envoi (sans changer de page) */
.send-row{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.form-toast{opacity:0;pointer-events:none;background:var(--beige);color:var(--marron-f);
  padding:13px 22px;font-size:13px;letter-spacing:.05em;transition:opacity .5s var(--ease)}
.form-toast.show{opacity:1}

/* ===== FOOTER ===== */
footer.site{border-top:1px solid var(--ligne);padding:56px 0;font-size:12.5px;line-height:1.9;color:var(--gris)}
footer.site .row{display:flex;justify-content:space-between;flex-wrap:wrap;gap:24px}
footer.site .row img{height:44px;width:auto;margin-bottom:12px}
footer.site a:hover{color:var(--accent)}

/* ===== CTA FLOTTANT ===== */
.cta-float{position:fixed;right:26px;bottom:26px;z-index:80;background:var(--accent-strong);color:#fff;padding:15px 28px;font-size:11.5px;letter-spacing:.18em;text-transform:uppercase;opacity:0;transform:translateY(18px);pointer-events:none;transition:.5s var(--ease)}
.cta-float.show{opacity:1;transform:none;pointer-events:auto}
.cta-float:hover{background:var(--accent)}
body.menu-open .cta-float{opacity:0;pointer-events:none}

/* Pastille play centrale (avant le premier clic) */
.filmband .playcue{position:absolute;inset:0;z-index:4;display:flex;align-items:center;justify-content:center;pointer-events:none}
.filmband .playcue span{width:86px;height:86px;border:1px solid rgba(255,255,255,.85);border-radius:50%;display:flex;align-items:center;justify-content:center;background:rgba(13,11,10,.28);backdrop-filter:blur(2px);transition:transform .6s var(--ease)}
.filmband .playcue span::before{content:"";width:0;height:0;border-left:16px solid #fff;border-top:10px solid transparent;border-bottom:10px solid transparent;margin-left:5px}
.filmband:hover .playcue span{transform:scale(1.07)}
.filmband.started .playcue{display:none}

/* ===== VISIONNEUSE ===== */
.lightbox{position:fixed;inset:0;z-index:150;background:rgba(16,13,11,.96);display:none;align-items:center;justify-content:center}
.lightbox.open{display:flex}
.lightbox img{max-width:92vw;max-height:88vh;width:auto;height:auto;object-fit:contain;box-shadow:0 30px 80px rgba(0,0,0,.5)}
.lightbox button{position:absolute;background:none;border:1px solid rgba(255,255,255,.5);color:#fff;cursor:pointer;
  width:54px;height:54px;border-radius:50%;font-size:20px;display:flex;align-items:center;justify-content:center;transition:background .3s,border-color .3s}
.lightbox button:hover{background:rgba(255,255,255,.14);border-color:#fff}
.lb-close{top:26px;right:26px}
.lb-prev{left:26px;top:50%;transform:translateY(-50%);font-size:30px}
.lb-next{right:26px;top:50%;transform:translateY(-50%);font-size:30px}
@media(max-width:880px){.lb-prev{left:10px}.lb-next{right:10px}.lb-close{top:14px;right:14px}}

/* ===== CURSEUR ===== */
.cursor{position:fixed;z-index:300;width:36px;height:36px;border:1px solid var(--accent);border-radius:50%;pointer-events:none;transform:translate(-50%,-50%);transition:width .3s,height .3s,opacity .3s;opacity:0;mix-blend-mode:multiply}
body.has-cursor .cursor{opacity:.7}
.cursor.big{width:64px;height:64px}
@media(hover:none){.cursor{display:none}}

/* ===== PORTFOLIO ===== */
.p-hero{position:relative;height:74vh;min-height:460px;overflow:hidden;display:flex;align-items:flex-end}
.p-hero .bg{position:absolute;inset:-10% 0;will-change:transform}
.p-hero .bg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(22,20,18,.28),rgba(22,20,18,.62))}
.p-hero .wrap{position:relative;z-index:2;padding-bottom:7vh;color:#fff}
.p-hero h1{color:#fff;font-size:clamp(38px,5.6vw,78px);font-weight:300;max-width:16ch}
.p-hero .eyebrow{color:var(--beige)}
.p-hero .meta{margin-top:18px;font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--beige)}
.p-intro .grid{display:grid;grid-template-columns:1fr 1fr;gap:70px}
.p-facts{display:grid;gap:18px;align-content:start}
.p-facts div{display:flex;justify-content:space-between;gap:20px;border-bottom:1px solid var(--ligne);padding-bottom:12px;font-size:14.5px}
.p-facts .k{color:var(--gris);letter-spacing:.08em;text-transform:uppercase;font-size:11.5px}
.p-gal{display:grid;grid-template-columns:repeat(2,1fr);gap:34px}
.p-gal .g-slot .ph-in{aspect-ratio:3/2;overflow:hidden}
.p-gal .g-slot.full{grid-column:1/-1}
.p-gal .g-slot.full .ph-in{aspect-ratio:16/7}
.p-nav{border-top:1px solid var(--ligne);padding:44px 0}
.p-nav .wrap{display:flex;justify-content:space-between;flex-wrap:wrap;gap:16px;font-size:13px;letter-spacing:.14em;text-transform:uppercase}
.p-nav a:hover{color:var(--accent)}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition-duration:.01ms!important}
  .rv,.lines .ln span,.veil img,.brandband .trait{opacity:1!important;transform:none!important}
}
@media(max-width:880px){
  .nav .center{display:none}
  .manifeste .grid,.contact .grid,.p-intro .grid{grid-template-columns:1fr;gap:46px}
  .plist,.p-gal,.savoir .cols,.matiere .strip{grid-template-columns:1fr}
  section{padding:80px 0}
  .breather{height:52vh}
  .filmband{margin-top:86px;height:60vh}
  .filmband.compact{height:44vh}
  .menu-inner{flex-direction:column;align-items:flex-start;justify-content:center;gap:34px}
  .menu-close{right:20px;top:20px}
  .logo{width:120px;height:44px}
  .playfilm{right:22px;bottom:80px}
  .nav .right{gap:8px}
  .toggle{padding:7px 10px}
  .framed{padding:12px;border-width:2px}
  .page-head{padding:140px 0 50px}
}
