:root{
  --bg:#F2F1EC;
  --ink:#211D19;
  --muted:#6E695F;
  --accent:#7C6A4C;
  --border:#DBD5C8;
  --paper:#FBFAF7;
  --maxw:1180px;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:'Archivo',sans-serif;
  font-size:16px;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,.serif{
  font-family:'Fraunces',serif;
  font-weight:500;
  letter-spacing:-0.01em;
  margin:0;
}
a{color:inherit;}
img{max-width:100%;display:block;}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 32px;}

/* language toggling */
[data-lang="fr"] .en{display:none;}
[data-lang="en"] .fr{display:none;}

/* motion: respect user preference */
@media (prefers-reduced-motion: reduce){
  *{animation-duration:0.001ms !important;animation-iteration-count:1 !important;transition-duration:0.001ms !important;scroll-behavior:auto !important;}
}

/* scroll reveal */
.reveal{opacity:0;transform:translateY(22px);transition:opacity .7s cubic-bezier(.2,.7,.2,1), transform .7s cubic-bezier(.2,.7,.2,1);}
.reveal.visible{opacity:1;transform:translateY(0);}
.reveal-stagger > *{opacity:0;transform:translateY(18px);transition:opacity .6s cubic-bezier(.2,.7,.2,1), transform .6s cubic-bezier(.2,.7,.2,1);}
.reveal-stagger.visible > *{opacity:1;transform:translateY(0);}
.reveal-stagger.visible > *:nth-child(1){transition-delay:.02s;}
.reveal-stagger.visible > *:nth-child(2){transition-delay:.08s;}
.reveal-stagger.visible > *:nth-child(3){transition-delay:.14s;}
.reveal-stagger.visible > *:nth-child(4){transition-delay:.20s;}
.reveal-stagger.visible > *:nth-child(5){transition-delay:.26s;}
.reveal-stagger.visible > *:nth-child(6){transition-delay:.32s;}
.reveal-stagger.visible > *:nth-child(n+7){transition-delay:.36s;}

/* header */
header.site{
  position:sticky;top:0;z-index:50;
  background:rgba(242,241,236,0.88);
  backdrop-filter:blur(8px);
  border-bottom:1px solid var(--border);
}
header.site .wrap{
  display:flex;align-items:center;justify-content:space-between;
  padding-top:18px;padding-bottom:18px;
}
.brand{font-family:'Fraunces',serif;font-size:19px;font-weight:500;text-decoration:none;}
nav.main{display:flex;gap:28px;align-items:center;}
nav.main a{font-size:14px;text-decoration:none;color:var(--ink);opacity:0.75;transition:opacity .2s;}
nav.main a:hover{opacity:1;}
.langswitch{display:flex;gap:0;border:1px solid var(--border);border-radius:20px;overflow:hidden;font-size:12px;}
.langswitch button{
  border:none;background:transparent;padding:6px 14px;cursor:pointer;
  font-family:'Archivo',sans-serif;color:var(--muted);letter-spacing:0.03em;
  transition:background .25s ease, color .25s ease;
}
.langswitch button.active{background:var(--ink);color:var(--paper);}
body.lightbox-open header.site{backdrop-filter:none;position:static;}
@media (max-width:700px){
  nav.main{display:none;}
}

/* hero */
section.hero{position:relative;height:88vh;min-height:560px;overflow:hidden;}
section.hero img{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  transform:scale(1.08);
  animation:heroZoom 1.6s cubic-bezier(.2,.7,.2,1) forwards;
}
@keyframes heroZoom{ to{ transform:scale(1); } }
section.hero .scrim{
  position:absolute;inset:0;
  background:linear-gradient(180deg, rgba(20,18,15,0.15) 0%, rgba(20,18,15,0.05) 40%, rgba(20,18,15,0.55) 100%);
}
section.hero .content{
  position:absolute;left:0;right:0;bottom:0;padding:0 32px 56px;
  max-width:var(--maxw);margin:0 auto;color:#F5F3ED;
}
section.hero .content > *{
  opacity:0;transform:translateY(16px);
  animation:heroUp .9s cubic-bezier(.2,.7,.2,1) forwards;
}
section.hero .content h1{animation-delay:.25s;}
section.hero .content p{animation-delay:.45s;}
section.hero .content .breadcrumb{animation-delay:.1s;}
@keyframes heroUp{ to{ opacity:1; transform:translateY(0); } }
section.hero h1{font-size:clamp(38px,7vw,84px);line-height:0.98;color:#F5F3ED;}
section.hero .role{
  font-size:15px;letter-spacing:0.02em;color:#E7E3D8;margin-top:14px;
  max-width:520px;
}
.scrolldown{
  position:absolute;right:32px;bottom:28px;color:#F5F3ED;opacity:0.85;
  animation:bob 2.2s ease-in-out infinite;
}
@keyframes bob{ 0%,100%{transform:translateY(0);} 50%{transform:translateY(6px);} }

/* subpage hero (shorter) */
section.hero.sub{height:64vh;min-height:420px;}
section.hero .breadcrumb{
  font-size:13px;letter-spacing:.03em;margin-bottom:14px;
}
section.hero .breadcrumb a{text-decoration:none;border-bottom:1px solid rgba(245,243,237,.5);padding-bottom:1px;}
section.hero .breadcrumb a:hover{border-bottom-color:rgba(245,243,237,1);}
section.hero .tag-row{
  display:flex;gap:18px;flex-wrap:wrap;margin-top:16px;font-size:13.5px;color:#E7E3D8;
}

/* intro strip */
section.intro{padding:96px 0 64px;}
section.intro .row{display:flex;gap:64px;align-items:flex-start;}
section.intro .eyebrow{font-size:13px;color:var(--accent);letter-spacing:0.04em;margin-bottom:18px;}
section.intro p.lead{
  font-family:'Fraunces',serif;font-size:clamp(22px,3vw,32px);font-weight:400;
  line-height:1.35;max-width:760px;font-style:italic;
}
@media (max-width:800px){
  section.intro .row{flex-direction:column;gap:24px;}
}

/* projects index */
section.index{padding:40px 0 100px;border-top:1px solid var(--border);}
.index-list{border-top:1px solid var(--border);margin-top:24px;}
.index-row{
  display:flex;align-items:baseline;justify-content:space-between;
  padding:26px 0;border-bottom:1px solid var(--border);
  text-decoration:none;color:var(--ink);position:relative;cursor:pointer;
}
.index-row .num{font-size:13px;color:var(--muted);width:32px;flex:none;}
.index-row .name{
  font-family:'Fraunces',serif;font-size:clamp(24px,4vw,40px);font-weight:400;
  flex:1;transition:transform .35s cubic-bezier(.2,.8,.2,1);
}
.index-row .arrow{
  opacity:0;transform:translateX(-6px);
  transition:opacity .3s ease, transform .3s ease;
  margin-right:14px;color:var(--accent);
}
.index-row:hover .name{transform:translateX(10px);}
.index-row:hover .arrow{opacity:1;transform:translateX(0);}
.index-row .meta{font-size:13px;color:var(--muted);text-align:right;flex:none;padding-left:20px;}
.hover-preview{
  position:fixed;pointer-events:none;width:280px;height:190px;
  border-radius:2px;overflow:hidden;opacity:0;transform:scale(0.96);
  transition:opacity .2s ease, transform .2s ease;z-index:60;
  box-shadow:0 20px 40px rgba(20,18,15,0.25);
}
.hover-preview img{width:100%;height:100%;object-fit:cover;}
.hover-preview.visible{opacity:1;transform:scale(1);}
@media (max-width:800px){
  .hover-preview{display:none;}
  .index-row .meta{display:none;}
}

/* project sections (on-page teaser, index) */
section.project{padding:88px 0;border-top:1px solid var(--border);}
section.project .head{
  display:flex;justify-content:space-between;align-items:flex-end;gap:24px;
  margin-bottom:40px;flex-wrap:wrap;
}
section.project h2{font-size:clamp(32px,5vw,56px);}
section.project .tag{font-size:13px;color:var(--muted);text-align:right;line-height:1.6;}
.project-grid{display:grid;grid-template-columns:1.1fr 0.9fr;gap:56px;align-items:start;}
.project-grid .text p{max-width:46ch;color:#3C3833;}
.project-grid .text .note{
  margin-top:22px;padding:14px 16px;border-left:2px solid var(--accent);
  font-size:13.5px;color:var(--muted);max-width:46ch;
}
.project-grid figure{margin:0;overflow:hidden;border-radius:2px;}
.project-grid figure img{border-radius:2px;transition:transform .6s cubic-bezier(.2,.7,.2,1);}
.project-grid figure:hover img{transform:scale(1.045);}
figure.full{margin:40px 0 0;}
figure.full img{width:100%;border-radius:2px;}
.gallery-2{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:40px;}
@media (max-width:900px){
  .project-grid{grid-template-columns:1fr;}
  .gallery-2{grid-template-columns:1fr;}
}
.view-project{
  display:inline-flex;align-items:center;gap:10px;margin-top:28px;
  font-size:13.5px;letter-spacing:.03em;text-decoration:none;color:var(--ink);
  border-bottom:1px solid var(--ink);padding-bottom:3px;
  transition:gap .25s ease, opacity .25s ease;
}
.view-project:hover{gap:16px;}
.view-project svg{transition:transform .25s ease;}
.view-project:hover svg{transform:translateX(3px);}

/* AI section */
section.ai{padding:88px 0;border-top:1px solid var(--border);background:var(--paper);}
section.ai .text p{max-width:70ch;color:#3C3833;}
.ai-gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:44px;}
.ai-gallery figure{margin:0;cursor:zoom-in;border-radius:2px;overflow:hidden;aspect-ratio:1/1;}
.ai-gallery img{border-radius:2px;aspect-ratio:1/1;object-fit:cover;width:100%;height:100%;transition:transform .6s cubic-bezier(.2,.7,.2,1);}
.ai-gallery figure:hover img{transform:scale(1.06);}
@media (max-width:800px){
  .ai-gallery{grid-template-columns:1fr 1fr;}
}

/* about */
section.about{padding:88px 0;border-top:1px solid var(--border);}
.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:64px;}
.about-grid p{max-width:52ch;color:#3C3833;}
.skills-list{list-style:none;margin:0;padding:0;font-size:14px;}
.skills-list li{
  display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--border);
}
.skills-list li span:first-child{color:var(--muted);}
h3.small-head{font-size:13px;letter-spacing:0.04em;color:var(--accent);margin-bottom:16px;text-transform:none;}
@media (max-width:800px){
  .about-grid{grid-template-columns:1fr;gap:32px;}
}

/* contact / footer */
footer.site{padding:88px 0 56px;border-top:1px solid var(--border);}
footer.site .row{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:32px;}
footer.site h2{font-size:clamp(30px,5vw,52px);max-width:600px;}
footer.site .contact-block{font-size:15px;line-height:2;}
footer.site .contact-block a{text-decoration:none;border-bottom:1px solid var(--border);}
footer.site .bottom{margin-top:70px;display:flex;justify-content:space-between;font-size:12.5px;color:var(--muted);flex-wrap:wrap;gap:10px;}

/* ============ project subpages ============ */
section.project-body{padding:80px 0;}
.project-lead{display:grid;grid-template-columns:1.1fr 0.9fr;gap:64px;align-items:start;padding-bottom:64px;border-bottom:1px solid var(--border);}
.project-lead .text p{max-width:52ch;color:#3C3833;}
.project-lead .text .note{
  margin-top:22px;padding:14px 16px;border-left:2px solid var(--accent);
  font-size:13.5px;color:var(--muted);max-width:52ch;
}
.project-lead .facts{font-size:13.5px;color:var(--muted);line-height:2;}
.project-lead .facts strong{display:block;color:var(--ink);font-family:'Fraunces',serif;font-size:15px;font-weight:500;margin-bottom:2px;}
@media (max-width:900px){
  .project-lead{grid-template-columns:1fr;gap:28px;}
}

.gallery-head{padding:64px 0 8px;display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:12px;}
.gallery-head h2{font-size:clamp(22px,3vw,30px);}
.gallery-head .count{font-size:13px;color:var(--muted);}

.gallery-grid{
  column-count:2;column-gap:20px;padding:24px 0 0;
}
.gallery-grid figure{
  break-inside:avoid;margin:0 0 20px;border-radius:2px;overflow:hidden;cursor:zoom-in;
  background:var(--paper);border:1px solid var(--border);
}
.gallery-grid img{width:100%;display:block;transition:transform .5s cubic-bezier(.2,.7,.2,1), opacity .5s ease;}
.gallery-grid figure:hover img{transform:scale(1.03);}
@media (max-width:800px){
  .gallery-grid{column-count:1;}
}

/* lightbox */
.lightbox{
  position:fixed;inset:0;background:rgba(18,16,14,0.94);z-index:200;
  display:flex;align-items:center;justify-content:center;
  opacity:0;pointer-events:none;transition:opacity .25s ease;
  padding:5vh 5vw;
}
.lightbox.open{opacity:1;pointer-events:auto;}
.lightbox img{
  max-width:100%;max-height:88vh;margin:auto;border-radius:2px;
  box-shadow:0 30px 80px rgba(0,0,0,0.5);
  transform:scale(.97);transition:transform .25s ease;
}
.lightbox.open img{transform:scale(1);}
.lightbox .lb-close, .lightbox .lb-prev, .lightbox .lb-next{
  position:absolute;background:none;border:none;color:#F5F3ED;cursor:pointer;
  opacity:.75;transition:opacity .2s ease;padding:14px;
}
.lightbox .lb-close:hover, .lightbox .lb-prev:hover, .lightbox .lb-next:hover{opacity:1;}
.lightbox .lb-close{top:10px;right:14px;}
.lightbox .lb-prev{left:6px;top:50%;transform:translateY(-50%);}
.lightbox .lb-next{right:6px;top:50%;transform:translateY(-50%);}
.lightbox .lb-count{position:absolute;bottom:18px;left:0;right:0;text-align:center;color:#E7E3D8;font-size:12.5px;letter-spacing:.04em;}

/* multi-part project pages (urban + memoire + architecture) */
.part-divider{
  padding:96px 0 32px;border-top:1px solid var(--border);margin-top:24px;
  display:flex;align-items:baseline;gap:20px;flex-wrap:wrap;
}
.part-divider .part-num{
  font-family:'Fraunces',serif;font-size:clamp(40px,7vw,72px);color:var(--accent);
  line-height:1;font-weight:400;
}
.part-divider .part-title h2{font-size:clamp(24px,4vw,38px);}
.part-divider .part-title .sub{font-size:13.5px;color:var(--muted);margin-top:6px;}
.part-credit{
  font-size:12.5px;color:var(--muted);margin:-10px 0 40px;padding-bottom:24px;
  border-bottom:1px solid var(--border);
}
.memoire-card{
  display:grid;grid-template-columns:0.7fr 1.3fr;gap:56px;align-items:center;
  padding:8px 0 24px;
}
.memoire-card figure{margin:0;}
.memoire-card figure img{border-radius:2px;box-shadow:0 30px 60px rgba(20,18,15,0.18);}
.memoire-card .text p{color:#3C3833;max-width:56ch;}
.memoire-card .thesis-title{font-family:'Fraunces',serif;font-size:clamp(20px,3vw,28px);margin-bottom:14px;font-style:italic;}
.axes-list{list-style:none;margin:22px 0 0;padding:0;display:grid;gap:10px;}
.axes-list li{font-size:13.5px;color:var(--muted);padding-left:18px;position:relative;}
.axes-list li::before{content:"—";position:absolute;left:0;color:var(--accent);}
@media (max-width:800px){
  .memoire-card{grid-template-columns:1fr;gap:28px;}
}

.video-wrap{
  position:relative;width:100%;border-radius:2px;overflow:hidden;
  background:#000;margin:8px 0 0;box-shadow:0 30px 60px rgba(20,18,15,0.18);
}
.video-wrap video{width:100%;display:block;max-height:80vh;}

/* project prev/next nav */
.project-nav{
  border-top:1px solid var(--border);display:grid;grid-template-columns:1fr 1fr;
}
.project-nav a{
  display:block;padding:48px 32px;text-decoration:none;color:var(--ink);
  transition:background .25s ease;
}
.project-nav a:hover{background:var(--paper);}
.project-nav a.next{text-align:right;border-left:1px solid var(--border);}
.project-nav .eyebrow{font-size:12px;color:var(--muted);letter-spacing:.04em;margin-bottom:8px;}
.project-nav .name{font-family:'Fraunces',serif;font-size:clamp(22px,3.4vw,32px);}
@media (max-width:700px){
  .project-nav{grid-template-columns:1fr;}
  .project-nav a.next{border-left:none;border-top:1px solid var(--border);}
}
