/* =================================================================
   IXOS REAL ESTATE — v2
   Laboratoire d'ingénierie immobilière & patrimoniale.
   Palette minérale : sable, argile, brun rosé, vert sourd, bleu grisé,
   ivoire, encre brune. Calme, premium, éditorial, légèrement expérimental.
   ================================================================= */

:root{
  --sand:      #e7e1d4;
  --sand-2:    #ede8dd;
  --paper:     #f2efe6;
  --ink:       #2c2823;
  --ink-2:     #423b32;
  --ink-soft:  #6a6356;
  --deep:      #262c28;
  --deep-2:    #2e352f;
  --mist:      #b1aa9b;
  --mist-2:    #d9d3c5;
  --clay:      #b0846b;
  --clay-soft: #c6a085;
  --sage:      #7e8775;
  --bluegrey:  #6c7a82;
  --terracotta:#bd7a41;

  --line-l:    rgba(44,40,35,0.13);
  --line-l-2:  rgba(44,40,35,0.24);
  --line-d:    rgba(231,225,212,0.15);
  --line-d-2:  rgba(231,225,212,0.28);

  --maxw: 1280px;
  --gutter: clamp(1.25rem, 5vw, 5.5rem);
  --nav-h: 78px;

  --serif: "Cormorant", Georgia, "Times New Roman", serif;
  --sans:  "Jost", "Helvetica Neue", Arial, sans-serif;
  --ease: cubic-bezier(.22,.61,.36,1);
}

*,*::before,*::after{ box-sizing:border-box; margin:0; padding:0; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
@media (prefers-reduced-motion: reduce){ html{ scroll-behavior:auto; } }

body{
  font-family:var(--sans); font-weight:300;
  background:var(--sand); color:var(--ink);
  line-height:1.7; -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }

/* ============ TYPOGRAPHIE ============ */
.eyebrow{
  font-family:var(--sans); font-weight:400; font-size:.68rem;
  letter-spacing:.32em; text-transform:uppercase; color:var(--ink-soft);
}
.eyebrow .mk{ color:var(--clay); }
.band-deep .eyebrow{ color:var(--mist); }
.band-deep .eyebrow .mk{ color:var(--clay-soft); }

h1,h2,h3{ font-family:var(--serif); font-weight:400; line-height:1.05; letter-spacing:-.005em; }
.display{
  font-family:var(--serif); font-weight:400;
  font-size:clamp(3rem, 8vw, 7rem); line-height:1.0; letter-spacing:-.012em;
}
.display em{ font-style:italic; font-weight:500; }
h2.section-title{ font-size:clamp(2rem, 4.4vw, 3.5rem); line-height:1.04; }
h3{ font-size:clamp(1.4rem,2.2vw,1.9rem); }

.lead{
  font-family:var(--serif); font-weight:400;
  font-size:clamp(1.35rem,2.2vw,1.85rem); line-height:1.42; max-width:36ch; color:var(--ink-2);
}
.band-deep .lead{ color:var(--mist-2); }
p.body{ font-size:1.02rem; font-weight:300; max-width:60ch; color:var(--ink-soft); }
.band-deep p.body{ color:var(--mist); }
p.body + p.body{ margin-top:1.05em; }
strong{ font-weight:500; color:var(--ink); }
.band-deep strong{ color:var(--mist-2); }
.serif-it{ font-family:var(--serif); font-style:italic; }

.ax{ color:var(--clay); font-style:italic; }

/* ============ NAVIGATION ============ */
.nav{
  position:fixed; top:0; left:0; right:0; z-index:100; height:var(--nav-h);
  display:flex; align-items:center; justify-content:space-between; gap:1.2rem;
  padding:0 var(--gutter);
  background:rgba(231,225,212,0); border-bottom:1px solid transparent;
  transition:background .5s var(--ease), border-color .5s var(--ease);
}
.nav.solid{
  background:rgba(231,225,212,.86);
  -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line-l);
}
.nav__logo img{ height:26px; width:auto; }
.nav__logo{ display:flex; align-items:center; flex:0 0 auto; }

.nav__right{ display:flex; align-items:center; gap:clamp(.7rem,1.3vw,1.35rem); }
.nav__links{ display:flex; align-items:center; gap:clamp(.7rem,1.3vw,1.35rem); list-style:none; }
.nav__links a{
  font-size:.7rem; font-weight:400; letter-spacing:.15em; text-transform:uppercase;
  color:var(--ink); opacity:.74; position:relative; padding:.4rem 0; transition:opacity .3s; white-space:nowrap;
}
.nav__links a:hover, .nav__links a.is-active{ opacity:1; }
.nav__links a::after{
  content:""; position:absolute; left:0; right:100%; bottom:-1px; height:1px;
  background:var(--clay); transition:right .35s var(--ease);
}
.nav__links a:hover::after, .nav__links a.is-active::after{ right:0; }

.nav__trame a{ display:inline-flex; align-items:baseline; gap:.04em; text-transform:none !important; opacity:.85; }
.nav__trame a::after{ display:none; }
.trame-mark{ font-family:var(--serif); font-weight:500; font-size:1.18rem; letter-spacing:-.01em; line-height:1; color:var(--ink); }
.trame-mark .dot{ color:var(--terracotta); }

.nav__partner{
  font-size:.66rem; letter-spacing:.18em; text-transform:uppercase;
  border:1px solid var(--line-l-2); border-radius:2px; padding:.55rem .9rem;
  color:var(--ink); opacity:.9; transition:border-color .3s, background .3s, color .3s; white-space:nowrap;
}
.nav__partner:hover{ border-color:var(--clay); color:var(--clay); }

.lang{ display:inline-flex; align-items:center; gap:.5rem; font-size:.66rem; letter-spacing:.12em; padding-left:clamp(.6rem,1.2vw,1.2rem); border-left:1px solid var(--line-l); }
.lang a{ opacity:.5; transition:opacity .3s; }
.lang a.is-active{ opacity:1; color:var(--ink); }
.lang a:hover{ opacity:.85; }

.burger{ display:none; flex-direction:column; gap:5px; background:none; border:0; cursor:pointer; padding:8px; }
.burger span{ width:25px; height:1.5px; background:var(--ink); transition:.35s var(--ease); }
.burger.open span:nth-child(1){ transform:translateY(6.5px) rotate(45deg); }
.burger.open span:nth-child(2){ opacity:0; }
.burger.open span:nth-child(3){ transform:translateY(-6.5px) rotate(-45deg); }

.mobile-menu{
  position:fixed; inset:0; z-index:99; background:var(--sand);
  display:flex; flex-direction:column; justify-content:center; padding:var(--gutter);
  transform:translateY(-100%); transition:transform .6s var(--ease); visibility:hidden;
}
.mobile-menu.open{ transform:translateY(0); visibility:visible; }
.mobile-menu a{ font-family:var(--serif); font-size:2.1rem; color:var(--ink); padding:.26rem 0; }
.mobile-menu a .idx{ font-family:var(--sans); font-size:.66rem; letter-spacing:.2em; color:var(--ink-soft); margin-right:1rem; }
.mobile-menu .mm-foot{ margin-top:1.5rem; padding-top:1.3rem; border-top:1px solid var(--line-l); display:flex; gap:1.6rem; align-items:center; }
.mobile-menu .mm-foot .nav__partner{ font-size:.7rem; display:inline-block; }
.mobile-menu .dot{ color:var(--terracotta); }
.mobile-menu .mm-lang{ font-size:.7rem; letter-spacing:.12em; }
.mobile-menu .mm-lang a{ font-family:var(--sans); font-size:.7rem; opacity:.5; }
.mobile-menu .mm-lang a.is-active{ opacity:1; }

/* ============ LAYOUT ============ */
.wrap{ max-width:var(--maxw); margin:0 auto; padding:0 var(--gutter); }
.wrap-narrow{ max-width:960px; margin:0 auto; padding:0 var(--gutter); }
section{ position:relative; }
.section-pad{ padding:clamp(5rem,11vh,9rem) 0; }
.band-sand{ background:var(--sand); color:var(--ink); }
.band-sand2{ background:var(--sand-2); color:var(--ink); }
.band-paper{ background:var(--paper); color:var(--ink); }
.band-deep{ background:var(--deep); color:var(--mist-2); }
.divline{ height:1px; background:var(--line-l); border:0; }
.band-deep .divline{ background:var(--line-d); }

.sec-index{
  font-size:.68rem; letter-spacing:.3em; text-transform:uppercase; color:var(--ink-soft);
  display:flex; align-items:center; gap:1rem; margin-bottom:2rem;
}
.band-deep .sec-index{ color:var(--mist); }
.sec-index::before{ content:""; width:30px; height:1px; background:var(--clay); }

/* ============ HERO ============ */
.hero{
  min-height:100svh; display:flex; flex-direction:column; justify-content:center;
  padding:calc(var(--nav-h) + 4vh) var(--gutter) 6vh; position:relative; overflow:hidden;
}
.hero__grid{ max-width:var(--maxw); margin:0 auto; width:100%; display:grid; grid-template-columns:1.08fr .92fr; gap:clamp(2rem,5vw,5rem); align-items:center; }
.hero__eyebrow{ margin-bottom:2.1rem; }
.hero h1{ margin-bottom:1.9rem; }
.hero h1 .ln{ display:block; }
.hero__lead{ margin-bottom:2.6rem; }
.hero__poles{ display:flex; gap:2.6rem; }
.pole-link{ display:flex; flex-direction:column; gap:.4rem; font-size:.7rem; letter-spacing:.16em; text-transform:uppercase; color:var(--ink); }
.pole-link .pole-no{ color:var(--clay); font-size:.64rem; }
.pole-link span.t{ opacity:.85; transition:opacity .3s; }
.pole-link:hover span.t{ opacity:1; }

.pagehead{ padding:calc(var(--nav-h) + 9vh) var(--gutter) clamp(2rem,5vh,4rem); }
.pagehead .display{ font-size:clamp(2.6rem,6.5vw,5.4rem); }

/* ============ HERO CARTOGRAPHIE ============ */
.carto{ position:relative; width:100%; max-width:560px; margin-left:auto; aspect-ratio:1/1; }
.carto svg{ width:100%; height:100%; overflow:visible; }
.carto .c-contour{ fill:none; stroke:var(--ink-soft); stroke-width:.8; opacity:.32; }
.carto .c-survey{ fill:none; stroke:var(--ink-soft); stroke-width:.8; opacity:.5; }
.carto .c-route{ fill:none; stroke:var(--clay); stroke-width:1.2; stroke-dasharray:4 5; opacity:.85; }
.carto .c-node{ fill:var(--sand); stroke:var(--ink-soft); stroke-width:1; }
.carto .c-node.mark{ fill:var(--clay); stroke:none; }
.carto .c-node.sage{ fill:var(--sage); stroke:none; }
.carto .c-lab{ font-family:var(--sans); font-size:9px; letter-spacing:.22em; fill:var(--ink-soft); text-transform:uppercase; opacity:.7; }
.carto .drift{ transform-box:fill-box; transform-origin:center; }
@media (prefers-reduced-motion:no-preference){
  .carto.float .drift{ animation:drift 16s ease-in-out infinite alternate; }
}
@keyframes drift{ from{ transform:translate(0,0); } to{ transform:translate(6px,-8px); } }

.draw{ stroke-dasharray:1; stroke-dashoffset:1; }
.is-ready .draw{ animation:draw 1.7s var(--ease) forwards; }
.is-ready .draw.d1{ animation-delay:.1s;} .is-ready .draw.d2{ animation-delay:.35s;}
.is-ready .draw.d3{ animation-delay:.6s;} .is-ready .draw.d4{ animation-delay:.85s;}
.pop{ opacity:0; transform:scale(.4); transform-box:fill-box; transform-origin:center; }
.is-ready .pop{ animation:pop .7s var(--ease) forwards; }
.is-ready .pop.p1{ animation-delay:.9s;} .is-ready .pop.p2{ animation-delay:1.05s;}
.is-ready .pop.p3{ animation-delay:1.2s;} .is-ready .pop.p4{ animation-delay:1.35s;}
.fade-up{ opacity:0; transform:translateY(16px); }
.is-ready .fade-up{ animation:fadeUp 1s var(--ease) forwards; }
.is-ready .fade-up.s1{ animation-delay:.1s;} .is-ready .fade-up.s2{ animation-delay:.25s;}
.is-ready .fade-up.s3{ animation-delay:.4s;} .is-ready .fade-up.s4{ animation-delay:.55s;}
@keyframes draw{ to{ stroke-dashoffset:0; } }
@keyframes pop{ to{ opacity:1; transform:scale(1); } }
@keyframes fadeUp{ to{ opacity:1; transform:none; } }
.carto.float .drift{ animation:drift 11s ease-in-out infinite alternate; opacity:1; }
.carto.float .drift.d-b{ animation-duration:9s; animation-delay:.6s; }
@keyframes drift{ from{ transform:translate(0,0);} to{ transform:translate(3px,-5px);} }

.reveal{ opacity:0; transform:translateY(24px); transition:opacity .9s var(--ease), transform .9s var(--ease); }
.reveal.in{ opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce){
  .draw{ stroke-dashoffset:0 !important; animation:none !important; }
  .pop,.fade-up,.reveal{ opacity:1 !important; transform:none !important; animation:none !important; }
}

/* ============ BLOC DUAL ============ */
.dual{ display:grid; grid-template-columns:1fr 1fr; gap:0; position:relative; }
.dual__col{ padding:clamp(2.2rem,4vw,4rem) clamp(1.5rem,3vw,3.5rem); position:relative; }
.dual__col + .dual__col{ border-left:1px solid var(--line-l); }
.dual__col.b{ margin-top:0; }
.dual__lab{ font-size:.66rem; letter-spacing:.24em; text-transform:uppercase; color:var(--clay); margin-bottom:1.3rem; }
.dual__col.b .dual__lab{ color:var(--sage); }
.dual h3{ font-size:clamp(1.8rem,3vw,2.6rem); margin-bottom:1.4rem; max-width:13ch; transition:transform .4s var(--ease); }
.dual__col:hover h3{ transform:translateX(6px); }
.dual__list{ list-style:none; }
.dual__list li{ padding:.65rem 0; border-bottom:1px solid var(--line-l); font-size:.96rem; color:var(--ink-soft); }
.dual__more{ display:inline-flex; gap:.6rem; align-items:center; margin-top:1.8rem; font-size:.7rem; letter-spacing:.16em; text-transform:uppercase; }
.dual__more .arrow{ transition:transform .3s; } .dual__more:hover .arrow{ transform:translateX(4px); }
@media (max-width:820px){
  .dual{ grid-template-columns:1fr; }
  .dual__col + .dual__col{ border-left:0; border-top:1px solid var(--line-l); }
  .dual__col.b{ margin-top:0; }
}

/* ============ LISTES ÉDITORIALES ============ */
.elist{ list-style:none; border-top:1px solid var(--line-l); }
.band-deep .elist{ border-top:1px solid var(--line-d); }
.elist li{
  display:grid; grid-template-columns:auto 1fr auto; gap:1.4rem; align-items:baseline;
  padding:1.35rem 0; border-bottom:1px solid var(--line-l); transition:padding .4s var(--ease);
}
.band-deep .elist li{ border-bottom:1px solid var(--line-d); }
.elist li:hover{ padding-left:.7rem; }
.elist .e-tag{ font-size:.64rem; letter-spacing:.2em; text-transform:uppercase; color:var(--clay); }
.elist .e-title{ font-family:var(--serif); font-size:clamp(1.25rem,1.9vw,1.6rem); line-height:1.18; }
.elist .e-meta{ font-size:.72rem; letter-spacing:.08em; color:var(--ink-soft); text-align:right; white-space:nowrap; }
.band-deep .elist .e-meta{ color:var(--mist); }
@media (max-width:640px){
  .elist li{ grid-template-columns:1fr; gap:.45rem; }
  .elist .e-meta{ text-align:left; white-space:normal; }
}

/* ============ SPLIT ============ */
.split{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(2rem,5vw,5rem); align-items:center; }
.split.narrow{ grid-template-columns:1.15fr .85fr; }
.split.text-img{ grid-template-columns:1fr .8fr; }
@media (max-width:860px){ .split,.split.narrow,.split.text-img{ grid-template-columns:1fr; gap:2.4rem; } }

.figure{ position:relative; }
.figure img{ width:100%; height:100%; object-fit:cover; filter:saturate(.95); }
.figure.tall{ aspect-ratio:3/4; }
.figure.portrait{ aspect-ratio:4/5; max-width:360px; }
.figure .cap{ margin-top:.8rem; font-size:.66rem; letter-spacing:.16em; text-transform:uppercase; color:var(--ink-soft); display:flex; gap:.6rem; align-items:center; }
.figure .cap::before{ content:""; width:18px; height:1px; background:var(--clay); }

.frame{ position:relative; aspect-ratio:4/5; max-width:360px; background:var(--sand-2); border:1px solid var(--line-l); overflow:hidden; }
.frame .f-art{ position:absolute; inset:0; opacity:.55; }
.frame .f-art line, .frame .f-art path, .frame .f-art rect{ stroke:var(--line-l-2); fill:none; stroke-width:1; }
.frame .f-cap{ position:absolute; left:0; bottom:0; padding:.9rem 1.1rem; font-size:.62rem; letter-spacing:.18em; text-transform:uppercase; color:var(--ink-soft); }

/* ============ GRILLE EXPERTISES ============ */
.exp-grid{ display:grid; grid-template-columns:repeat(2,1fr); column-gap:clamp(2rem,4vw,4.5rem); row-gap:0; }
.exp{ padding:clamp(1.9rem,3vw,2.8rem) 0; border-top:1px solid var(--line-l); }
.band-deep .exp{ border-top:1px solid var(--line-d); }
.exp__no{ font-size:.66rem; letter-spacing:.2em; text-transform:uppercase; color:var(--clay); margin-bottom:1rem; }
.exp h3{ margin-bottom:.8rem; }
.exp p{ font-size:.95rem; font-weight:300; color:var(--ink-soft); max-width:46ch; }
.band-deep .exp p{ color:var(--mist); }
@media (max-width:720px){ .exp-grid{ grid-template-columns:1fr; } }

/* ============ TRIPTYQUE ============ */
.trip{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(1.6rem,3vw,3rem); }
.trip__item{ border-top:1px solid var(--line-l); padding-top:1.6rem; }
.band-deep .trip__item{ border-top:1px solid var(--line-d); }
.trip__no{ font-family:var(--serif); font-size:1.7rem; color:var(--clay); line-height:1; margin-bottom:1rem; }
.trip__item h3{ font-size:1.4rem; margin-bottom:.7rem; }
.trip__item p{ font-size:.93rem; font-weight:300; color:var(--ink-soft); }
.band-deep .trip__item p{ color:var(--mist); }
@media (max-width:820px){ .trip{ grid-template-columns:1fr; gap:0; } .trip__item{ padding:1.6rem 0; } }

/* ============ DONNÉES ============ */
.data-list{ list-style:none; border-top:1px solid var(--line-l); }
.band-deep .data-list{ border-top:1px solid var(--line-d); }
.data-list li{ display:grid; grid-template-columns:minmax(130px,32%) 1fr; gap:1.4rem; padding:1rem 0; border-bottom:1px solid var(--line-l); font-size:.96rem; }
.band-deep .data-list li{ border-bottom:1px solid var(--line-d); }
.data-list .k{ font-size:.66rem; letter-spacing:.18em; text-transform:uppercase; color:var(--ink-soft); padding-top:.25rem; }
.band-deep .data-list .k{ color:var(--mist); }
.data-list .v.serif{ font-family:var(--serif); font-size:1.18rem; }

.cred{ list-style:none; display:grid; gap:1.3rem; }
.cred li{ display:flex; gap:1.4rem; align-items:baseline; padding-bottom:1.3rem; border-bottom:1px solid var(--line-l); }
.band-deep .cred li{ border-bottom:1px solid var(--line-d); }
.cred .yr{ font-size:.7rem; letter-spacing:.12em; color:var(--clay); min-width:140px; }
.cred .ti{ font-family:var(--serif); font-size:1.22rem; }
.cred .su{ display:block; font-size:.8rem; color:var(--ink-soft); margin-top:.15rem; }

/* ============ ENGAGEMENTS RSE ============ */
.eng{ display:grid; grid-template-columns:repeat(3,1fr); column-gap:clamp(2rem,3.5vw,3.5rem); row-gap:0; }
.eng__item{ border-top:1px solid var(--line-l); padding:1.8rem 0; }
.eng__no{ font-family:var(--serif); font-size:2rem; color:var(--clay); line-height:1; margin-bottom:1rem; }
.eng__item h3{ font-size:1.32rem; margin-bottom:.65rem; }
.eng__item p{ font-size:.91rem; font-weight:300; color:var(--ink-soft); max-width:38ch; }
@media (max-width:860px){ .eng{ grid-template-columns:1fr; } }
.refs{ display:flex; flex-wrap:wrap; gap:.9rem 2.2rem; font-size:.68rem; letter-spacing:.16em; text-transform:uppercase; color:var(--ink-soft); }

/* ============ CONTRIBUTIONS ============ */
.contrib-list{ list-style:none; border-top:1px solid var(--line-l); }
.contrib{ display:grid; grid-template-columns:108px 1fr auto; gap:1.5rem; align-items:baseline; padding:1.6rem 0; border-bottom:1px solid var(--line-l); transition:padding .4s var(--ease); }
.contrib:hover{ padding-left:.7rem; }
.contrib .ct-type{ font-size:.64rem; letter-spacing:.2em; text-transform:uppercase; color:var(--clay); }
.contrib .ct-title{ font-family:var(--serif); font-size:clamp(1.25rem,1.9vw,1.65rem); line-height:1.18; }
.contrib .ct-title .arrow{ font-family:var(--sans); font-size:.7rem; color:var(--ink-soft); margin-left:.5rem; opacity:0; transition:opacity .3s; }
.contrib:hover .ct-title .arrow{ opacity:1; }
.contrib .ct-meta{ font-size:.72rem; letter-spacing:.08em; color:var(--ink-soft); white-space:nowrap; }
@media (max-width:680px){ .contrib{ grid-template-columns:1fr; gap:.45rem; } .contrib .ct-meta{ white-space:normal; } }

.note{ border-top:1px solid var(--line-l); padding:clamp(2rem,3.5vw,3rem) 0; }
.note__tag{ font-size:.64rem; letter-spacing:.2em; text-transform:uppercase; color:var(--sage); margin-bottom:1rem; }
.note h3{ font-size:clamp(1.5rem,2.4vw,2rem); margin-bottom:1.1rem; max-width:30ch; }
.note p{ font-size:.97rem; font-weight:300; color:var(--ink-soft); max-width:64ch; }
.note__themes{ display:flex; flex-wrap:wrap; gap:.5rem .8rem; margin-top:1.6rem; }
.note__themes span{ font-size:.64rem; letter-spacing:.08em; color:var(--ink-soft); border:1px solid var(--line-l); border-radius:2px; padding:.3rem .6rem; }
.note__more{ margin-top:1.5rem; }
.note__more > summary{ list-style:none; cursor:pointer; display:inline-flex; align-items:center; gap:.6rem; font-size:.7rem; letter-spacing:.18em; text-transform:uppercase; color:var(--ink); padding-bottom:.3rem; border-bottom:1px solid var(--line-l-2); transition:color .3s,border-color .3s; }
.note__more > summary::-webkit-details-marker{ display:none; }
.note__more > summary:hover{ color:var(--clay); border-color:var(--clay); }
.note__more > summary .chev{ transition:transform .35s var(--ease); display:inline-block; }
.note__more[open] > summary{ margin-bottom:1.6rem; }
.note__more[open] > summary .chev{ transform:rotate(90deg); }
.note__full p{ font-size:.97rem; font-weight:300; color:var(--ink-soft); max-width:64ch; margin-bottom:1.05rem; }
.note__full p:last-child{ margin-bottom:0; }
.note__full .note__src{ margin-top:1.3rem; font-size:.72rem; letter-spacing:.06em; color:var(--ink-soft); font-style:italic; }

/* ============ CARTE TRAME ============ */
.trame-edit{ display:grid; grid-template-columns:auto 1fr auto; gap:clamp(2rem,5vw,5rem); align-items:center; padding:clamp(2.4rem,5vw,4rem) 0; border-top:1px solid var(--line-l); border-bottom:1px solid var(--line-l); }
.trame-edit .te-mark{ font-family:var(--serif); font-weight:500; font-size:clamp(2.6rem,5vw,4rem); line-height:1; }
.trame-edit .te-mark .dot{ color:var(--terracotta); }
.trame-edit p{ font-size:1rem; font-weight:300; color:var(--ink-soft); max-width:46ch; }
.trame-edit .te-link{ display:inline-flex; align-items:center; gap:.6rem; font-size:.7rem; letter-spacing:.18em; text-transform:uppercase; white-space:nowrap; }
.trame-edit .te-link .arrow{ transition:transform .3s; } .trame-edit .te-link:hover .arrow{ transform:translate(3px,-3px); }
@media (max-width:820px){ .trame-edit{ grid-template-columns:1fr; gap:1.6rem; text-align:left; } }

/* ============ FORMULAIRE ============ */
.form{ display:grid; grid-template-columns:1fr 1fr; gap:1.8rem 2.2rem; }
.field{ display:flex; flex-direction:column; }
.field.full{ grid-column:1 / -1; }
.field label{ font-size:.64rem; letter-spacing:.18em; text-transform:uppercase; color:var(--ink-soft); margin-bottom:.5rem; }
.field input, .field textarea, .field select{
  font-family:var(--sans); font-size:1rem; font-weight:300; color:var(--ink);
  background:transparent; border:0; border-bottom:1px solid var(--line-l-2);
  padding:.55rem 0; transition:border-color .3s;
}
.field textarea{ resize:vertical; min-height:120px; }
.field input:focus, .field textarea:focus, .field select:focus{ outline:none; border-bottom-color:var(--clay); }
.field input::placeholder, .field textarea::placeholder{ color:var(--ink-soft); opacity:.5; }
.form__submit{ grid-column:1 / -1; display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:1rem; margin-top:.6rem; }
.btn{
  font-family:var(--sans); font-size:.72rem; letter-spacing:.2em; text-transform:uppercase;
  color:var(--ink); background:transparent; border:1px solid var(--line-l-2); border-radius:2px;
  padding:.9rem 2rem; cursor:pointer; transition:border-color .3s, color .3s, background .3s;
}
.btn:hover{ border-color:var(--clay); color:var(--clay); }
.form__note{ font-size:.72rem; color:var(--ink-soft); }
@media (max-width:680px){ .form{ grid-template-columns:1fr; } }

/* ============ LIGNE INSTITUTIONNELLE ============ */
.statement{ padding:clamp(4.5rem,10vh,8rem) var(--gutter); }
.statement p{ font-family:var(--serif); font-size:clamp(1.8rem,3.4vw,3rem); line-height:1.22; max-width:24ch; margin:0 auto; text-align:center; color:var(--ink); }
.band-deep .statement p, .band-deep.statement p{ color:var(--mist-2); }
.statement.left p{ text-align:left; margin:0; max-width:30ch; }

.endlink{ display:inline-flex; align-items:center; gap:.7rem; font-size:.72rem; letter-spacing:.18em; text-transform:uppercase; padding-bottom:.3rem; border-bottom:1px solid currentColor; }
.endlink .arrow{ transition:transform .3s; } .endlink:hover .arrow{ transform:translateX(4px); }

/* ============ PIED DE PAGE ============ */
.footer{ background:var(--deep); color:var(--mist-2); padding:clamp(3.5rem,7vw,5.5rem) var(--gutter) 2.4rem; }
.footer__grid{ max-width:var(--maxw); margin:0 auto; display:grid; grid-template-columns:1.5fr 1fr 1fr; gap:2.5rem; }
.footer__logo img{ height:30px; margin-bottom:1.4rem; }
.footer__tag{ font-family:var(--serif); font-size:1.3rem; max-width:24ch; color:var(--mist-2); }
.footer h4{ font-family:var(--sans); font-weight:400; font-size:.66rem; letter-spacing:.2em; text-transform:uppercase; color:var(--mist); margin-bottom:1.2rem; }
.footer ul{ list-style:none; display:grid; gap:.6rem; font-size:.88rem; }
.footer ul a{ opacity:.82; } .footer ul a:hover{ opacity:1; color:var(--clay-soft); }
.footer__addr{ font-size:.88rem; color:var(--mist); line-height:1.7; }
.footer__addr strong{ color:var(--mist-2); display:block; font-weight:400; }
.footer__bottom{ max-width:var(--maxw); margin:3.4rem auto 0; padding-top:1.5rem; border-top:1px solid var(--line-d); display:flex; justify-content:space-between; flex-wrap:wrap; gap:1rem; font-size:.68rem; letter-spacing:.08em; color:var(--mist); }
.footer__bottom .ft-trame{ font-family:var(--serif); } .footer__bottom .ft-trame .dot{ color:var(--terracotta); }
@media (max-width:760px){ .footer__grid{ grid-template-columns:1fr; gap:2.2rem; } }

/* ============ RESPONSIVE NAV ============ */
@media (max-width:1300px){
  .nav__links, .nav__partner{ display:none; }
  .burger{ display:flex; }
  .lang{ border-left:0; padding-left:0; }
}

/* divers */
.mt-sm{ margin-top:1.1rem;} .mt-md{ margin-top:2.1rem;} .mt-lg{ margin-top:3.4rem;}
.maxw-sm{ max-width:54ch; }
.txt-center{ text-align:center; }
::selection{ background:var(--clay); color:var(--paper); }

@media (max-width:860px){
  .hero{ min-height:auto; padding-top:calc(var(--nav-h) + 7vh); padding-bottom:11vh; }
  .hero__grid{ grid-template-columns:1fr; gap:3rem; }
  .carto{ max-width:320px; margin:0 auto; order:2; }
}

/* ============ LOGO IXOS (SVG inline) ============ */
.ixoslogo{ display:block; width:auto; }
.nav__logo .ixoslogo{ width:122px; height:auto; color:var(--ink); }
.footer__logo .ixoslogo{ width:190px; height:auto; color:var(--mist-2); margin-bottom:1.5rem; }
.dot{ display:inline-block; width:.37em; height:.37em; border-radius:50%; background:var(--terracotta); vertical-align:baseline; line-height:0; text-indent:-9999px; overflow:hidden; margin-left:.05em; }
.mobile-menu .dot{ width:.4em; height:.4em; }
.footer__bottom .ft-trame .dot{ width:.38em; height:.38em; }

/* ============ CARTE TRAME — logo réel ============ */
.trame-edit .te-logo{ width:220px; max-width:42vw; height:auto; }

/* ============ RÉALISATIONS ============ */
.real-list{ border-top:1px solid var(--line-l); }
.real{ border-bottom:1px solid var(--line-l); padding:clamp(1.9rem,3.2vw,2.8rem) 0; }
.real__top{ display:flex; flex-wrap:wrap; align-items:baseline; gap:.5rem 1.3rem; margin-bottom:.95rem; }
.real__tag{ font-size:.64rem; letter-spacing:.2em; text-transform:uppercase; color:var(--clay); white-space:nowrap; }
.real__title{ font-family:var(--serif); font-weight:500; font-size:clamp(1.4rem,2.2vw,1.95rem); line-height:1.12; flex:1 1 auto; }
.real__loc{ font-size:.72rem; letter-spacing:.06em; color:var(--ink-soft); white-space:nowrap; }
.real p{ font-size:.97rem; font-weight:300; color:var(--ink-soft); max-width:74ch; }
.real__odd{ display:flex; flex-wrap:wrap; align-items:center; gap:.45rem; margin-top:1.2rem; }
.real__odd .lab{ font-size:.58rem; letter-spacing:.18em; text-transform:uppercase; color:var(--ink-soft); margin-right:.4rem; }
.real__odd span{ font-size:.64rem; color:var(--ink-soft); border:1px solid var(--line-l-2); border-radius:50%; width:1.95rem; height:1.95rem; display:inline-flex; align-items:center; justify-content:center; }

/* ============ LECTEUR (note intégrale, cadre scrollable) ============ */
.note__open{ display:inline-flex; align-items:center; gap:.6rem; margin-top:1.5rem; cursor:pointer; background:none; border:0; padding:0 0 .3rem 0; font-family:var(--sans); font-size:.7rem; letter-spacing:.18em; text-transform:uppercase; color:var(--ink); border-bottom:1px solid var(--line-l-2); transition:color .3s,border-color .3s; }
.note__open:hover{ color:var(--clay); border-color:var(--clay); }
.note__open .arrow{ transition:transform .3s; } .note__open:hover .arrow{ transform:translateX(3px); }

.reader{ position:fixed; inset:0; z-index:300; display:none; align-items:center; justify-content:center; padding:clamp(1rem,4vw,3rem); }
.reader.is-open{ display:flex; }
.reader__backdrop{ position:absolute; inset:0; background:rgba(24,21,17,.55); backdrop-filter:blur(4px); -webkit-backdrop-filter:blur(4px); animation:rd-fade .35s var(--ease); }
.reader__panel{ position:relative; background:var(--paper); width:min(760px,100%); max-height:86vh; overflow-y:auto; padding:clamp(2rem,4vw,3.6rem); border:1px solid var(--mist-2); box-shadow:0 30px 90px -30px rgba(24,21,17,.5); animation:rd-rise .4s var(--ease); }
.reader__panel::-webkit-scrollbar{ width:10px; }
.reader__panel::-webkit-scrollbar-track{ background:var(--sand-2); }
.reader__panel::-webkit-scrollbar-thumb{ background:var(--mist); border:3px solid var(--sand-2); border-radius:10px; }
.reader__panel{ scrollbar-color:var(--mist) var(--sand-2); scrollbar-width:thin; }
.reader__close{ position:sticky; top:0; float:right; margin:-.4rem -.4rem 0 1rem; width:2.4rem; height:2.4rem; border-radius:50%; border:1px solid var(--line-l); background:var(--paper); color:var(--ink); font-size:1.3rem; line-height:1; cursor:pointer; transition:background .3s,color .3s,border-color .3s; }
.reader__close:hover{ background:var(--deep); color:var(--paper); border-color:var(--deep); }
.reader__tag{ font-size:.66rem; letter-spacing:.22em; text-transform:uppercase; color:var(--clay); margin-bottom:.8rem; }
.reader__title{ font-family:var(--serif); font-weight:500; font-size:clamp(1.5rem,2.6vw,2.1rem); line-height:1.12; margin-bottom:1.6rem; max-width:30ch; }
.reader__body p{ font-size:1rem; font-weight:300; line-height:1.75; color:var(--ink-soft); max-width:64ch; margin-bottom:1.1rem; }
.reader__body p:last-child{ margin-bottom:0; }
.reader__src{ margin-top:1.6rem; padding-top:1.2rem; border-top:1px solid var(--line-l); font-size:.74rem; letter-spacing:.04em; font-style:italic; color:var(--ink-soft); }
.reader__foot{ margin-top:2rem; }
.btn-ghost{ font-family:var(--sans); font-size:.72rem; letter-spacing:.18em; text-transform:uppercase; color:var(--ink); background:none; border:1px solid var(--ink); padding:.75rem 1.6rem; cursor:pointer; transition:background .3s,color .3s; }
.btn-ghost:hover{ background:var(--ink); color:var(--paper); }
@keyframes rd-fade{ from{ opacity:0; } to{ opacity:1; } }
@keyframes rd-rise{ from{ opacity:0; transform:translateY(18px); } to{ opacity:1; transform:none; } }
body.reader-open{ overflow:hidden; }

.reader__byline{ font-size:.82rem; letter-spacing:.03em; font-style:italic; color:var(--ink-soft); margin:-1.1rem 0 1.9rem; }
