@font-face{font-family:'Archivo';font-style:normal;font-weight:100 900;font-stretch:62% 125%;font-display:swap;src:url(/assets/fonts/archivo-normal-var-100_900.woff2) format('woff2')}
@font-face{font-family:'Archivo';font-style:italic;font-weight:100 900;font-stretch:62% 125%;font-display:swap;src:url(/assets/fonts/archivo-italic-var-100_900.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/plexmono-normal-400.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url(/assets/fonts/plexmono-normal-500.woff2) format('woff2')}
:root{
--encre:#191b17;--encre-2:#242621;--platre:#e9e8e2;--platre-2:#f2f1ec;--beton-1:#c9c8c0;--beton-2:#8f8e86;--beton-3:#55554e;--blanc:#fdfdfb;
--cuivre:#a4502e;--cuivre-vif:#c26a41;--patine:#5f7d6e;--pierre-jaune:#d6b98c;
--text-primary:var(--encre);--text-secondary:var(--beton-3);--text-tertiary:var(--beton-2);--text-inverse:var(--platre-2);--text-accent:var(--cuivre);
--surface-page:var(--platre-2);--surface-raised:var(--blanc);--surface-inverse:var(--encre);
--line-strong:var(--encre);--line-default:rgba(25,27,23,.28);--line-subtle:rgba(25,27,23,.12);--line-inverse:rgba(242,241,236,.24);
--scrim-photo:linear-gradient(180deg,rgba(25,27,23,0) 40%,rgba(25,27,23,.72) 100%);
--scrim-photo-top:linear-gradient(180deg,rgba(25,27,23,.55) 0%,rgba(25,27,23,0) 35%);
--font-sans:'Archivo',system-ui,sans-serif;--font-mono:'IBM Plex Mono',ui-monospace,monospace;
--wdth-display:125;--wdth-text:100;
--type-display-xl:clamp(40px,6.2vw,104px);--type-display-l:clamp(34px,4.6vw,72px);--type-display-m:clamp(26px,3.2vw,46px);--type-display-s:clamp(22px,2.2vw,32px);
--display-weight:560;--display-leading:.92;--display-tracking:-.025em;
--type-body-l:20px;--type-body-m:17px;--type-body-s:15px;--body-leading:1.55;
--type-meta-m:13px;--type-meta-s:11.5px;--meta-tracking:.14em;
--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--sp-7:48px;--sp-8:64px;--sp-9:96px;--sp-10:144px;
--page-margin:clamp(20px,4vw,64px);--gutter:clamp(16px,2vw,32px);--section-gap:clamp(72px,10vw,160px);
--surface-inverse-raised:var(--encre-2);
--line-inverse-subtle:rgba(242,241,236,.12);
--state-hover-copper:#8a4227;--state-focus-ring:var(--cuivre);--state-error:#8d3122;--state-success:var(--patine);
--wdth-condensed:78;--page-max:1680px;
--radius-none:0;--radius-s:2px;--radius-pill:999px;
--ease-inout:cubic-bezier(.65,0,.35,1);
--hairline:1px;--rule-strong:2px;
--cursor-link:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22'%3E%3Crect x='7' y='7' width='8' height='8' fill='%23a4502e'/%3E%3C/svg%3E") 11 11, pointer;
--cursor-link-inverse:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22'%3E%3Crect x='7' y='7' width='8' height='8' fill='%23c26a41'/%3E%3C/svg%3E") 11 11, pointer;
--cursor-zoom:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='26' height='26'%3E%3Crect x='2' y='2' width='22' height='22' fill='none' stroke='%23a4502e' stroke-width='1.5'/%3E%3Crect x='10' y='10' width='6' height='6' fill='%23a4502e'/%3E%3C/svg%3E") 13 13, zoom-in;
--ease-out:cubic-bezier(.22,1,.36,1);--dur-fast:180ms;--dur-med:420ms;--dur-reveal:900ms;--reveal-shift:24px;--img-hover-scale:1.04;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;padding-bottom:104px;background:var(--surface-page);color:var(--text-primary);font-family:var(--font-sans);font-size:var(--type-body-m);line-height:var(--body-leading);-webkit-font-smoothing:antialiased;overflow-x:hidden}
img,svg{display:block;max-width:100%}
img{height:auto;background:var(--beton-1)}
a{color:inherit;text-decoration:none;cursor:var(--cursor-link);transition:color var(--dur-fast) var(--ease-out)}
a:hover{color:var(--text-accent)}
a:focus-visible,button:focus-visible{outline:2px solid var(--cuivre);outline-offset:3px}
::selection{background:var(--cuivre);color:var(--platre-2)}
h1,h2,h3,h4{margin:0;font-weight:var(--display-weight);font-variation-settings:'wdth' var(--wdth-display);line-height:var(--display-leading);letter-spacing:var(--display-tracking);text-wrap:balance}
p{margin:0;text-wrap:pretty}
.u-meta{font-family:var(--font-mono);font-size:var(--type-meta-m);font-weight:500;text-transform:uppercase;letter-spacing:var(--meta-tracking)}
.ic{flex:none;display:inline-block}
.skip{position:absolute;left:-9999px;top:0;z-index:100;background:var(--encre);color:var(--platre-2);padding:12px 20px}
.skip:focus{left:0}
.wrap{padding:0 var(--page-margin)}
.u-rule{border:0;border-top:var(--hairline) solid var(--line-default);margin:0}
details summary::-webkit-details-marker{display:none}
details summary span{display:inline-block;transition:transform var(--dur-med) var(--ease-out)}
details[open] summary span{transform:rotate(45deg)}
details summary:hover{color:var(--cuivre)}

/* Reveal ------------------------------------------------------ */
.rv{opacity:0;transform:translateY(var(--reveal-shift));transition:opacity var(--dur-reveal) var(--ease-out),transform var(--dur-reveal) var(--ease-out)}
.rv.on{opacity:1;transform:none}
.rvc>*{clip-path:inset(0 0 100% 0);transform:translateY(14px);transition:clip-path 1100ms var(--ease-out),transform 1100ms var(--ease-out)}
.rvc.on>*{clip-path:inset(0 0 -6% 0);transform:none}
@media (prefers-reduced-motion:reduce){.rv,.rvc>*{opacity:1;transform:none;clip-path:none;transition:none}*{animation-duration:.01ms!important;scroll-behavior:auto}}
@keyframes clipUp{from{clip-path:inset(0 0 100% 0);transform:translateY(18px)}to{clip-path:inset(0 0 -8% 0);transform:none}}
@keyframes drawY{from{transform:scaleY(0)}to{transform:scaleY(1)}}
@keyframes drawX{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes heroSettle{from{transform:scale(1.13)}to{transform:scale(1.05)}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}

/* Navbar ------------------------------------------------------ */
.nav{position:fixed;top:0;left:0;right:0;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:var(--sp-5);padding:18px var(--page-margin);background:rgba(242,241,236,.86);backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2);border-bottom:var(--hairline) solid var(--line-subtle);color:var(--text-primary);transition:background var(--dur-med) var(--ease-out),color var(--dur-med) var(--ease-out),border-color var(--dur-med) var(--ease-out)}
.nav--inv{background:transparent;border-bottom-color:transparent;color:var(--text-inverse)}
.nav--inv .nav__links a{color:var(--platre-2)}
.nav--inv .nav__cta{border-color:var(--line-inverse);color:var(--platre-2)}
.nav__logo{color:inherit;flex:none}
.nav__links{display:flex;gap:var(--sp-6);font-family:var(--font-mono);font-size:var(--type-meta-s);font-weight:500;text-transform:uppercase;letter-spacing:var(--meta-tracking)}
.nav__links a{white-space:nowrap;padding-bottom:3px;border-bottom:var(--rule-strong) solid transparent}
.nav__links a.is-on{border-bottom-color:var(--cuivre)}
.nav__cta{flex:none;font-family:var(--font-mono);font-size:var(--type-meta-s);font-weight:500;text-transform:uppercase;letter-spacing:var(--meta-tracking);border:var(--hairline) solid var(--line-default);padding:11px 18px;white-space:nowrap}
.nav__cta:hover{background:var(--cuivre);border-color:var(--cuivre);color:var(--platre-2)}
@media(max-width:900px){.nav__links,.nav__cta{display:none}.nav{padding:14px var(--page-margin)}}

/* Hero -------------------------------------------------------- */
.hero{position:relative;height:100svh;min-height:560px;overflow:hidden;background:var(--encre);color:var(--text-inverse)}
.hero__bg{position:absolute;inset:0;animation:heroSettle 2600ms var(--ease-out) both;will-change:transform}
.hero__bg img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero__scrim,.hero__scrim2{position:absolute;inset:0}
.hero__scrim{background:linear-gradient(0deg,rgba(25,27,23,.94) 0%,rgba(25,27,23,.86) 30%,rgba(25,27,23,.7) 50%,rgba(25,27,23,.34) 70%,rgba(25,27,23,0) 90%)}
.hero__scrim2{background:var(--scrim-photo-top)}
.hero__body{position:absolute;left:var(--page-margin);right:var(--page-margin);bottom:max(11vh,72px);z-index:2}
.hero h1{font-size:clamp(42px,6.2vw,92px);color:var(--text-inverse);margin-top:var(--sp-4);max-width:13ch;animation:clipUp 1100ms var(--ease-out) 250ms both}
.hero__lede{font-size:var(--type-body-l);max-width:46ch;margin-top:var(--sp-5);color:var(--platre-2)}
.hero__cta{display:inline-flex;align-items:center;gap:12px;margin-top:var(--sp-6);font-family:var(--font-mono);font-size:var(--type-meta-s);font-weight:500;text-transform:uppercase;letter-spacing:var(--meta-tracking);border:var(--hairline) solid var(--line-inverse);color:var(--platre-2);padding:15px 24px;min-height:48px}
.hero__cta:hover{background:var(--platre-2);color:var(--encre);border-color:var(--platre-2)}
.hero__scale{position:absolute;right:var(--page-margin);top:16vh;height:24vh;display:flex;flex-direction:column;align-items:center;gap:12px;z-index:2}
.hero__scale i{width:1px;flex:1;background:var(--line-inverse);position:relative;transform-origin:top;animation:drawY 1400ms var(--ease-out) 500ms both}
.hero__scale i::before,.hero__scale i::after{content:'';position:absolute;left:-5px;width:11px;height:1px;background:var(--line-inverse)}
.hero__scale i::before{top:0}.hero__scale i::after{bottom:0}
.hero__scale span{writing-mode:vertical-rl;font-size:var(--type-meta-s);color:rgba(242,241,236,.5)}
.marks span{position:absolute;width:13px;height:13px;color:var(--line-inverse);z-index:2}
.marks span::before{content:'';position:absolute;left:6px;top:0;width:1px;height:13px;background:currentColor}
.marks span::after{content:'';position:absolute;top:6px;left:0;width:13px;height:1px;background:currentColor}
.marks span:nth-child(1){top:18px;left:18px}.marks span:nth-child(2){top:18px;right:18px}.marks span:nth-child(3){bottom:18px;left:18px}.marks span:nth-child(4){bottom:18px;right:18px}
@media(max-width:760px){.hero__scale{display:none}.hero__body{bottom:calc(8vh + 8px)}}

/* Meta + section headers -------------------------------------- */
.mt{display:inline-flex;align-items:baseline;gap:10px;font-family:var(--font-mono);font-size:var(--type-meta-s);font-weight:500;text-transform:uppercase;letter-spacing:var(--meta-tracking);color:var(--text-tertiary)}
.mt--acc{color:var(--cuivre)}
.mt--inv{color:rgba(242,241,236,.62)}
.mt__n{color:var(--cuivre)}
.sh{border-top:var(--hairline) solid var(--line-default);padding-top:var(--sp-4)}
.sh--inv{border-top-color:var(--line-inverse)}
.sh h2{margin-top:var(--sp-4)}
.sec{padding:var(--section-gap) var(--page-margin)}
.sec--inv{background:var(--surface-inverse);color:var(--text-inverse)}
.sec--inv h2,.sec--inv h3{color:var(--text-inverse)}
.cote{display:flex;align-items:center}
.cote i{width:1px;height:9px;background:var(--line-default);flex:none}
.cote b{flex:1;height:1px;background:var(--line-default);transform-origin:left;animation:drawX 1200ms var(--ease-out) both}
.cote span{font-family:var(--font-mono);font-size:10.5px;font-weight:500;text-transform:uppercase;letter-spacing:var(--meta-tracking);color:var(--text-tertiary);padding:0 12px;white-space:nowrap}

/* Project cards ----------------------------------------------- */
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(340px,100%),1fr));gap:var(--sp-6) var(--gutter);margin-top:var(--sp-6)}
.pc{display:flex;flex-direction:column;height:100%}
.pc__img{position:relative;overflow:hidden;aspect-ratio:4/3;background:var(--beton-1)}
.pc__img img{width:100%;height:100%;object-fit:cover;transition:transform 900ms var(--ease-out)}
.pc:hover .pc__img img{transform:scale(var(--img-hover-scale))}
.pc__tag{position:absolute;top:12px;left:12px;font-family:var(--font-mono);font-size:10.5px;font-weight:500;text-transform:uppercase;letter-spacing:var(--meta-tracking);padding:5px 11px;border-radius:999px;background:rgba(242,241,236,.92);color:var(--cuivre)}
.pc__tag--patine{color:var(--patine)}
.pc__bar{display:flex;justify-content:space-between;align-items:baseline;gap:var(--sp-4);border-top:var(--hairline) solid var(--line-default);padding-top:var(--sp-3);margin-top:var(--sp-4)}
.pc__t{font-size:var(--type-display-s);font-weight:var(--display-weight);font-variation-settings:'wdth' 112;letter-spacing:var(--display-tracking);line-height:1.05}
.pc:hover .pc__t{color:var(--cuivre)}
.pc__y{font-family:var(--font-mono);font-size:var(--type-meta-s);font-weight:500;letter-spacing:var(--meta-tracking);color:var(--text-tertiary);white-space:nowrap}
.pc__p{margin-top:6px;font-size:var(--type-body-s);color:var(--text-secondary)}

/* Approche / stats -------------------------------------------- */
.cols3{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--sp-7);margin-top:var(--sp-8)}
.card-t{border-top:var(--hairline) solid var(--line-inverse);padding-top:var(--sp-4)}
.card-t h3{font-size:var(--type-display-s);margin-top:var(--sp-3)}
.card-t p{font-size:var(--type-body-s);color:var(--beton-1);margin-top:var(--sp-4);max-width:40ch}
.quote{font-size:var(--type-display-s);font-weight:var(--display-weight);font-variation-settings:'wdth' 108;line-height:1.24;letter-spacing:-.015em;max-width:34ch}
.quote cite{display:block;margin-top:var(--sp-4);font-family:var(--font-mono);font-size:var(--type-meta-s);font-weight:500;font-style:normal;text-transform:uppercase;letter-spacing:var(--meta-tracking);color:var(--cuivre-vif)}
.stat b{display:block;font-size:var(--type-display-s);font-weight:var(--display-weight);font-variation-settings:'wdth' 118;letter-spacing:var(--display-tracking)}
.stat span{display:block;margin-top:6px;font-family:var(--font-mono);font-size:var(--type-meta-s);font-weight:500;text-transform:uppercase;letter-spacing:var(--meta-tracking);color:var(--text-tertiary)}
.split{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:var(--sp-8);align-items:start}
.split--wide{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:var(--sp-9)}
.half{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-6);align-items:start}
@media(max-width:820px){.split,.split--wide{grid-template-columns:1fr;gap:var(--sp-7)}}
@media(max-width:520px){.half{grid-template-columns:1fr}}

/* Parcellis --------------------------------------------------- */
.plug{border:var(--hairline) solid var(--line-default);background:var(--surface-raised);padding:var(--sp-6);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--sp-5)}
.plug img{height:30px;width:auto}
.plug p{font-size:var(--type-body-m);color:var(--text-secondary);max-width:52ch;margin-top:var(--sp-4)}
.plug__link{display:inline-flex;align-items:center;gap:12px;color:var(--cuivre);font-family:var(--font-mono);font-size:var(--type-meta-m);font-weight:500;text-transform:uppercase;letter-spacing:var(--meta-tracking);border-bottom:var(--hairline) solid var(--cuivre);padding-bottom:3px}

/* Contact ----------------------------------------------------- */
.crow{display:flex;justify-content:space-between;align-items:baseline;gap:var(--sp-5);border-top:var(--hairline) solid var(--line-default);padding:16px 0;min-height:48px}
.crow:last-of-type{border-bottom:var(--hairline) solid var(--line-default)}
.crow__l{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-mono);font-size:var(--type-meta-s);font-weight:500;text-transform:uppercase;letter-spacing:var(--meta-tracking);color:var(--text-tertiary)}
.crow__v{display:inline-flex;align-items:center;gap:10px;font-size:var(--type-body-m);text-align:right}
.crow__v .ic{color:var(--cuivre);transition:transform var(--dur-fast) var(--ease-out)}
.crow:hover .crow__l,.crow:hover .crow__v{color:var(--cuivre)}
.crow:hover .crow__v .ic{transform:translate(3px,-3px)}
.linklist{display:flex;flex-direction:column;gap:var(--sp-3);border-top:var(--hairline) solid var(--line-default);padding-top:var(--sp-4);align-items:flex-start}
.linklist a{display:inline-flex;align-items:baseline;gap:8px;font-size:var(--type-body-s);border-bottom:var(--hairline) solid var(--line-default);padding-bottom:2px;min-height:32px}
.linklist a:hover{border-bottom-color:var(--cuivre)}
.linklist a em{font-style:normal;color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--type-meta-s);letter-spacing:var(--meta-tracking);text-transform:uppercase}

/* Project page ------------------------------------------------ */
.pfull{position:relative;height:min(72vh,760px);overflow:hidden;background:var(--encre)}
.pfull img{width:100%;height:100%;object-fit:cover;animation:heroSettle 2600ms var(--ease-out) both}
.pfull__cap{position:absolute;left:var(--page-margin);right:var(--page-margin);bottom:22px;display:flex;justify-content:space-between;gap:var(--sp-4);color:rgba(242,241,236,.86);font-family:var(--font-mono);font-size:var(--type-meta-s);font-weight:500;text-transform:uppercase;letter-spacing:var(--meta-tracking);z-index:2}
.pmeta{border-top:var(--hairline) solid var(--line-default)}
.pmeta div{display:grid;grid-template-columns:minmax(120px,190px) 1fr;gap:var(--sp-5);border-bottom:var(--hairline) solid var(--line-subtle);padding:15px 0}
.pmeta dt,.pmeta .k{font-family:var(--font-mono);font-size:var(--type-meta-s);font-weight:500;text-transform:uppercase;letter-spacing:var(--meta-tracking);color:var(--text-tertiary)}
.pmeta dd,.pmeta .v{margin:0;font-size:var(--type-body-s);color:var(--text-primary)}
@media(max-width:640px){.pmeta div{grid-template-columns:1fr;gap:6px}}
.zoom{cursor:var(--cursor-zoom);display:block;width:100%;padding:0;border:0;background:none;text-align:left;font:inherit;color:inherit}
.zoom__f{overflow:hidden;background:var(--beton-1)}
.zoom--framed .zoom__f{background:var(--blanc);border:var(--hairline) solid var(--line-subtle)}
.zoom img{width:100%;transition:transform 900ms var(--ease-out)}
.zoom:hover img{transform:scale(var(--img-hover-scale))}
.zoom__c{display:flex;justify-content:space-between;gap:var(--sp-4);font-family:var(--font-mono);font-size:var(--type-meta-s);font-weight:500;text-transform:uppercase;letter-spacing:var(--meta-tracking);color:var(--text-tertiary);margin-top:var(--sp-3);border-bottom:var(--hairline) solid var(--line-subtle);padding-bottom:var(--sp-3)}
.zoom:hover .zoom__c{color:var(--cuivre)}
.gal2{display:grid;grid-template-columns:1fr 1fr;gap:var(--gutter);margin-top:var(--sp-8)}
@media(max-width:640px){.gal2{grid-template-columns:1fr}}

/* Lightbox ---------------------------------------------------- */
.lb{position:fixed;inset:0;z-index:90;background:rgba(20,21,18,.96);display:flex;flex-direction:column;animation:fadeIn 260ms var(--ease-out) both}
.lb[hidden]{display:none}
.lb__top{display:flex;justify-content:space-between;align-items:center;gap:var(--sp-4);padding:16px var(--page-margin);color:rgba(242,241,236,.72);font-family:var(--font-mono);font-size:var(--type-meta-s);font-weight:500;text-transform:uppercase;letter-spacing:var(--meta-tracking)}
.lb__x{background:none;border:var(--hairline) solid var(--line-inverse);color:var(--platre-2);width:44px;height:44px;cursor:var(--cursor-link-inverse);font-size:18px;line-height:1}
.lb__x:hover{background:var(--platre-2);color:var(--encre)}
.lb__stage{flex:1;display:flex;align-items:center;justify-content:center;padding:0 var(--page-margin);min-height:0}
.lb__stage img{max-width:100%;max-height:100%;object-fit:contain;background:none;animation:fadeIn 320ms var(--ease-out) both}
.lb__bot{display:flex;justify-content:center;align-items:center;gap:var(--sp-5);padding:18px var(--page-margin) 24px}
.lb__bot button{background:none;border:var(--hairline) solid var(--line-inverse);color:var(--platre-2);min-width:48px;min-height:44px;cursor:var(--cursor-link-inverse);font-family:var(--font-mono);font-size:var(--type-meta-s);letter-spacing:var(--meta-tracking)}
.lb__bot button:hover{background:var(--platre-2);color:var(--encre)}
.lb__cap{color:rgba(242,241,236,.66);font-size:var(--type-body-s);text-align:center;max-width:52ch}

/* Footer ------------------------------------------------------ */
.ft{background:var(--surface-inverse);color:var(--text-inverse);padding:var(--sp-9) var(--page-margin) var(--sp-6)}
.ft__grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr 1fr;gap:var(--sp-6) var(--sp-7)}
.ft__col{display:flex;flex-direction:column;gap:var(--sp-3);align-items:flex-start;min-width:0}
.ft__col a{display:inline-flex;align-items:center;gap:9px;font-size:var(--type-body-s);color:var(--platre-2);min-height:30px}
.ft__col a:hover{color:var(--cuivre-vif)}
.ft__lbl{color:rgba(242,241,236,.5);font-size:var(--type-meta-s);display:block;margin-bottom:4px}
.ft__addr{font-size:var(--type-body-s);color:var(--beton-1);margin-top:var(--sp-4)}
.ft__more{color:var(--cuivre-vif)!important}
.ft__base{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--sp-4) var(--sp-6);border-top:var(--hairline) solid var(--line-inverse);margin-top:var(--sp-8);padding-top:var(--sp-3);color:rgba(242,241,236,.62);font-size:var(--type-meta-s)}
.ft__legal{justify-content:center}
@media(max-width:900px){.ft__base{grid-template-columns:1fr;justify-items:start;gap:var(--sp-2)}.ft__legal{justify-content:flex-start}}
@media(max-width:1100px){.ft__grid{grid-template-columns:1fr 1fr 1fr}}
@media(max-width:900px){.ft__grid{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.ft__grid{grid-template-columns:1fr;gap:var(--sp-6)}}

/* Bottom bar -------------------------------------------------- */
.bb{position:fixed;left:0;right:0;bottom:0;z-index:45;padding:0 var(--page-margin) 18px;pointer-events:none}
.bb__box{pointer-events:auto;margin:0 auto;max-width:1180px;background:rgba(25,27,23,.9);backdrop-filter:blur(16px) saturate(1.3);-webkit-backdrop-filter:blur(16px) saturate(1.3);border:var(--hairline) solid var(--line-inverse);box-shadow:0 14px 44px rgba(25,27,23,.28);color:var(--platre-2);animation:bbIn 900ms var(--ease-out) 400ms both}
@keyframes bbIn{from{transform:translateY(90px);opacity:0}to{transform:none;opacity:1}}
.bb__desk{display:flex;align-items:center;gap:var(--sp-5);padding:12px 16px 12px 20px}
.bb__ctx{flex:1;font-size:var(--type-meta-s);color:rgba(242,241,236,.5);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bb__count{font-size:var(--type-meta-s);color:var(--cuivre-vif);white-space:nowrap}
.bb__nav{font-family:var(--font-mono);font-size:var(--type-meta-s);font-weight:500;text-transform:uppercase;letter-spacing:var(--meta-tracking);color:var(--platre-2);white-space:nowrap;padding:8px 2px;min-height:40px;display:inline-flex;align-items:center;border-bottom:var(--rule-strong) solid transparent}
.bb__nav:hover{color:var(--cuivre-vif)}
.bb__act{font-family:var(--font-mono);font-size:var(--type-meta-s);font-weight:500;text-transform:uppercase;letter-spacing:var(--meta-tracking);border:var(--hairline) solid var(--line-inverse);padding:11px 16px;white-space:nowrap;color:var(--platre-2);display:inline-flex;align-items:center;gap:8px;min-height:42px}
.bb__act:hover{background:var(--platre-2);border-color:var(--platre-2);color:var(--encre)}
.bb__mob{display:none}
@media(max-width:900px){
  .bb{padding:0 12px 12px}
  .bb__desk{display:none}
  .bb__mob{display:grid;grid-template-columns:1fr 1fr 1fr}
  .bb__mob a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:60px;font-family:var(--font-mono);font-size:10.5px;font-weight:500;text-transform:uppercase;letter-spacing:.1em;color:var(--platre-2);border-right:var(--hairline) solid var(--line-inverse)}
  .bb__mob a:last-child{border-right:0}
  .bb__mob a:active{background:rgba(242,241,236,.12)}
  body{padding-bottom:92px}
}

/* Coupe schematique du financement */
.subs{display:grid;grid-template-columns:minmax(240px,.85fr) minmax(0,1.15fr);gap:var(--sp-8);align-items:start}
.bsec{position:relative;background:var(--blanc);border:var(--hairline) solid var(--line-default);padding:26px 30px 0;display:grid;grid-template-rows:26px 54px 1fr 1fr 52px 30px;aspect-ratio:4/4.6;min-width:0}
.bsec__z{position:relative;border:var(--hairline) solid var(--line-default);transition:background var(--dur-med) var(--ease-out),border-color var(--dur-med) var(--ease-out)}
.bsec__pv{border:0;display:grid;grid-template-columns:repeat(4,1fr);gap:4px;align-items:end;padding:0 12%}
.bsec__pv i{display:block;height:13px;border:var(--hairline) solid var(--line-default);transform:skewX(-16deg);transition:background var(--dur-med) var(--ease-out),border-color var(--dur-med) var(--ease-out)}
.bsec__roof{clip-path:polygon(50% 0,100% 100%,0 100%);border:0;background:var(--beton-1);transition:background var(--dur-med) var(--ease-out)}
.bsec__wall{display:grid;grid-template-columns:1fr 1fr 1fr;gap:11px;padding:13px;border-top:0}
.bsec__win{border:var(--hairline) solid var(--line-default);background:var(--platre);transition:background var(--dur-med) var(--ease-out),border-color var(--dur-med) var(--ease-out)}
.bsec__cave{border-top:0;background:repeating-linear-gradient(135deg,transparent 0 5px,rgba(25,27,23,.09) 5px 6px)}
.bsec__boiler{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:34%;height:52%;border:var(--rule-strong) solid var(--line-default);transition:border-color var(--dur-med) var(--ease-out),background var(--dur-med) var(--ease-out)}
.bsec__ground{border:0;border-top:var(--rule-strong) solid var(--line-strong);background:repeating-linear-gradient(135deg,transparent 0 6px,rgba(25,27,23,.16) 6px 7px);transition:border-color var(--dur-med) var(--ease-out)}
.bsec__frame{position:absolute;left:14px;right:14px;top:14px;bottom:44px;border:var(--hairline) dashed var(--line-subtle);pointer-events:none;transition:border-color var(--dur-med) var(--ease-out)}
.bsec__n{position:absolute;font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.1em;color:var(--beton-3);transition:color var(--dur-med) var(--ease-out);white-space:nowrap;background:var(--blanc);padding:1px 4px;z-index:3}
.subs:has([data-z="1"]:hover) .bsec__frame{border-color:var(--cuivre);border-style:solid}
.subs:has([data-z="1"]:hover) .bsec__n1{color:var(--cuivre)}
.subs:has([data-z="2"]:hover) .bsec__roof{background:var(--pierre-jaune)}
.subs:has([data-z="2"]:hover) .bsec__wall,.subs:has([data-z="2"]:hover) .bsec__win{border-color:var(--cuivre);background:rgba(164,80,46,.12)}
.subs:has([data-z="2"]:hover) .bsec__n2{color:var(--cuivre)}
.subs:has([data-z="3"]:hover) .bsec__boiler{border-color:var(--cuivre);background:rgba(164,80,46,.16)}
.subs:has([data-z="3"]:hover) .bsec__n3{color:var(--cuivre)}
.subs:has([data-z="4"]:hover) .bsec__pv i{border-color:var(--cuivre);background:rgba(164,80,46,.24)}
.subs:has([data-z="4"]:hover) .bsec__n4{color:var(--cuivre)}
.subs:has([data-z="5"]:hover) .bsec__ground{border-top-color:var(--cuivre)}
.subs:has([data-z="5"]:hover) .bsec__n5{color:var(--cuivre)}
.sub{display:grid;grid-template-columns:34px 1fr;gap:var(--sp-4);border-top:var(--hairline) solid var(--line-default);padding:16px 0;transition:background var(--dur-fast) var(--ease-out)}
.sub:last-of-type{border-bottom:var(--hairline) solid var(--line-default)}
.sub:hover{background:var(--blanc)}
.sub__n{font-family:var(--font-mono);font-size:var(--type-meta-s);font-weight:500;letter-spacing:.1em;color:var(--beton-3);padding-top:3px;transition:color var(--dur-fast) var(--ease-out)}
.sub:hover .sub__n{color:var(--cuivre)}
.sub__t{display:flex;justify-content:space-between;align-items:baseline;gap:var(--sp-4);flex-wrap:wrap}
.sub__t b{font-size:var(--type-body-m);font-weight:560;font-variation-settings:'wdth' 110}
.sub__amt{font-family:var(--font-mono);font-size:var(--type-meta-s);font-weight:500;letter-spacing:.08em;color:var(--cuivre);white-space:nowrap}
.sub p{margin-top:5px;font-size:var(--type-body-s);color:var(--text-secondary);max-width:46ch}
.sub--lead{background:var(--blanc);box-shadow:inset 2px 0 0 var(--cuivre)}
@media(max-width:820px){.subs{grid-template-columns:1fr;gap:var(--sp-7)}.bsec{max-width:340px;aspect-ratio:4/4.2}}

/* Frise chronologique — fin de la valeur locative */
.tl{margin-top:var(--sp-7)}
.tl__band{display:grid;grid-template-columns:repeat(5,1fr);align-items:end;min-height:46px}
.tl__win{grid-column:2 / 5;background:rgba(164,80,46,.12);border:var(--hairline) solid var(--cuivre);border-bottom:0;padding:9px 14px;display:flex;justify-content:space-between;gap:var(--sp-4);flex-wrap:wrap;align-items:baseline}
.tl__win span{font-family:var(--font-mono);font-size:var(--type-meta-s);font-weight:500;text-transform:uppercase;letter-spacing:var(--meta-tracking);color:var(--cuivre)}
.tl__axis{display:grid;grid-template-columns:repeat(5,1fr);border-top:var(--rule-strong) solid var(--line-strong);position:relative}
.tl__col{position:relative;padding:18px 14px 0;border-left:var(--hairline) solid var(--line-subtle);min-width:0}
.tl__col:first-child{border-left:0;padding-left:0}
.tl__col::before{content:"";position:absolute;top:0;left:0;width:1px;height:10px;background:var(--line-strong)}
.tl__col:first-child::before{left:0}
.tl__col--cut{border-left:var(--rule-strong) solid var(--cuivre)}
.tl__col--cut::before{background:var(--cuivre);height:16px;width:2px}
.tl__y{display:block;font-family:var(--font-mono);font-size:var(--type-display-s);font-weight:500;letter-spacing:-.01em;line-height:1;color:var(--text-primary)}
.tl__col--in .tl__y{color:var(--cuivre)}
.tl__col--cut .tl__y{color:var(--cuivre)}
.tl__e{display:block;margin-top:10px;font-size:var(--type-body-s);color:var(--text-secondary);max-width:24ch}
.tl__tag{display:inline-block;margin-top:9px;font-family:var(--font-mono);font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.1em;color:var(--beton-3)}
@media(max-width:820px){.tl__band{display:none}.tl__axis{grid-template-columns:1fr;border-top:0}.tl__col{border-left:0;border-top:var(--hairline) solid var(--line-default);padding:16px 0 20px}.tl__col--cut{border-top:var(--rule-strong) solid var(--cuivre)}.tl__col::before{display:none}.tl__e{max-width:52ch}}
/* Ce qui change — deux colonnes opposées */
.chg{display:grid;grid-template-columns:1fr 1fr;gap:var(--gutter);margin-top:var(--sp-7)}
.chg__c{border-top:var(--rule-strong) solid var(--line-strong);padding-top:var(--sp-4)}
.chg__c--out{border-top-color:var(--cuivre)}
.chg__h{font-family:var(--font-mono);font-size:var(--type-meta-s);font-weight:500;text-transform:uppercase;letter-spacing:var(--meta-tracking);color:var(--text-tertiary)}
.chg__c--out .chg__h{color:var(--cuivre)}
.chg li{list-style:none;border-bottom:var(--hairline) solid var(--line-subtle);padding:13px 0;font-size:var(--type-body-s);display:grid;grid-template-columns:18px 1fr;gap:10px}
.chg ul{margin:var(--sp-3) 0 0;padding:0}
.chg li i{font-style:normal;color:var(--cuivre);font-family:var(--font-mono);font-size:13px;line-height:1.5}
.chg__c--keep li i{color:var(--patine)}
.chg li b{font-weight:560}
@media(max-width:700px){.chg{grid-template-columns:1fr;gap:var(--sp-6)}}
/* Compteur */
.cnt{border:var(--hairline) solid var(--line-default);background:var(--surface-raised);padding:var(--sp-6);text-align:center}
.cnt b{display:block;font-size:clamp(64px,10vw,132px);font-weight:var(--display-weight);font-variation-settings:'wdth' 122;line-height:.9;letter-spacing:var(--display-tracking);color:var(--cuivre)}
.cnt span{display:block;margin-top:var(--sp-4);font-family:var(--font-mono);font-size:var(--type-meta-s);font-weight:500;text-transform:uppercase;letter-spacing:var(--meta-tracking);color:var(--text-tertiary)}

/* Curseur — le carre cuivre du logo sur tout element cliquable */
button,summary,[role="button"],label,.pc,.crow,.zoom{cursor:var(--cursor-link)}
.zoom{cursor:var(--cursor-zoom)}
.sec--inv a,.sec--inv button,.ft a,.ft button,.bb a,.bb button,.lb a,.lb button,.nav--inv a,.hero a,.pfull a{cursor:var(--cursor-link-inverse)}
input,textarea,select{cursor:auto}
button:disabled,a[aria-disabled="true"]{cursor:not-allowed}

/* Surtitre en surimpression photo : texte clair pleine opacite, accent porte par un carre cuivre */
.hero__eyebrow,.pfull__eyebrow{display:inline-flex;align-items:center;gap:11px;font-family:var(--font-mono);font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:var(--meta-tracking);color:var(--platre-2)}
.hero__eyebrow i,.pfull__eyebrow i{width:7px;height:7px;background:var(--cuivre-vif);flex:none;display:block}

/* Fenêtres basses : le bloc de texte occupe une part plus grande du hero, le voile doit
   remonter d'autant. Sur les grands écrans le dégradé de base suffit et la photo reste ouverte. */
@media (max-height:780px){
  .hero__scrim{background:linear-gradient(0deg,rgba(25,27,23,.94) 0%,rgba(25,27,23,.84) 40%,rgba(25,27,23,.62) 72%,rgba(25,27,23,.22) 86%,rgba(25,27,23,0) 100%)}
}

/* Bandeau de consentement + liens legaux du pied de page */
.cb{position:fixed;left:var(--page-margin);right:var(--page-margin);bottom:calc(var(--sp-5) + 88px);z-index:61;display:flex;justify-content:center;pointer-events:none}
.cb[hidden]{display:none}
.cb__box{pointer-events:auto;max-width:620px;background:var(--surface-inverse);border:var(--hairline) solid var(--line-inverse);box-shadow:0 18px 52px rgba(25,27,23,.34);padding:var(--sp-6);color:var(--text-inverse);animation:cbIn 700ms var(--ease-out) both}
@keyframes cbIn{from{transform:translateY(28px);opacity:0}to{transform:none;opacity:1}}
.cb__box p{font-size:var(--type-body-s);color:var(--platre-2);margin:var(--sp-4) 0 0;max-width:58ch}
.cb__act{display:flex;gap:var(--sp-4);align-items:center;flex-wrap:wrap;margin-top:var(--sp-5)}
.cb__act button{font-family:var(--font-mono);font-size:var(--type-meta-s);font-weight:500;text-transform:uppercase;letter-spacing:var(--meta-tracking);padding:12px 20px;min-height:44px;border:var(--hairline) solid var(--platre-2);cursor:var(--cursor-link-inverse)}
.cb__yes{background:var(--platre-2);color:var(--encre)}
.cb__yes:hover{background:var(--cuivre-vif);border-color:var(--cuivre-vif);color:var(--platre-2)}
.cb__no{background:none;color:var(--platre-2);border-color:var(--line-inverse)}
.cb__no:hover{border-color:var(--platre-2)}
.cb__act a{font-family:var(--font-mono);font-size:var(--type-meta-s);font-weight:500;text-transform:uppercase;letter-spacing:var(--meta-tracking);color:var(--cuivre-vif);border-bottom:var(--hairline) solid var(--cuivre-vif);padding-bottom:2px}
.ft__legal{display:flex;gap:var(--sp-5);flex-wrap:wrap;align-items:baseline}
.ft__legal a,.ft__legal button{display:inline-flex;align-items:center;font-family:var(--font-mono);font-size:var(--type-meta-s);font-weight:500;text-transform:uppercase;letter-spacing:var(--meta-tracking);color:rgba(242,241,236,.62);background:none;border:0;padding:6px 0;min-height:44px}
.ft__legal a:hover,.ft__legal button:hover{color:var(--cuivre-vif)}
@media(max-width:820px){.cb{left:12px;right:12px;bottom:calc(76px + 12px)}.cb__box{padding:var(--sp-5)}.cb__act button{flex:1;min-width:120px}}
/* Pages legales — colonne de lecture */
.legal{max-width:74ch}
.legal h2{font-size:var(--type-display-s);margin-top:var(--sp-8);border-top:var(--hairline) solid var(--line-default);padding-top:var(--sp-4)}
.legal h3{font-size:var(--type-body-l);font-variation-settings:'wdth' 110;margin-top:var(--sp-6)}
.legal p,.legal li{font-size:var(--type-body-m);color:var(--text-secondary);margin-top:var(--sp-4)}
.legal ul{padding-left:20px;margin:0}
.legal li{margin-top:var(--sp-3)}
.legal a{color:var(--cuivre);border-bottom:var(--hairline) solid var(--line-default)}
.legal a:hover{border-bottom-color:var(--cuivre)}
.legal strong{font-weight:560;color:var(--text-primary)}
.legal dl{margin:var(--sp-5) 0 0;border-top:var(--hairline) solid var(--line-default)}
.legal dl>div{display:grid;grid-template-columns:minmax(130px,200px) 1fr;gap:var(--sp-5);border-bottom:var(--hairline) solid var(--line-subtle);padding:14px 0}
.legal dt{font-family:var(--font-mono);font-size:var(--type-meta-s);font-weight:500;text-transform:uppercase;letter-spacing:var(--meta-tracking);color:var(--text-tertiary)}
.legal dd{margin:0;font-size:var(--type-body-s)}
@media(max-width:640px){.legal dl>div{grid-template-columns:1fr;gap:5px}}

/* Menu mobile — bouton MENU / FERMER en meta mono, overlay plein ecran (pas de hamburger) */
.nav__menu{display:none}
.mnav{display:none}
@media(max-width:900px){
  .nav__menu{display:inline-flex;align-items:center;font-family:var(--font-mono);font-size:var(--type-meta-s);font-weight:500;text-transform:uppercase;letter-spacing:var(--meta-tracking);background:none;border:var(--hairline) solid currentColor;color:inherit;padding:10px 15px;min-height:44px;flex:none}
  .nav--inv .nav__menu{border-color:var(--line-inverse);color:var(--platre-2)}
  .mnav{display:flex;position:fixed;inset:0;z-index:70;flex-direction:column;background:var(--surface-inverse);color:var(--text-inverse);padding:0 var(--page-margin);overflow-y:auto;animation:mnavIn 420ms var(--ease-out) both}
  .mnav[hidden]{display:none}
  .mnav__top{display:flex;justify-content:space-between;align-items:center;gap:var(--sp-4);padding:16px 0;border-bottom:var(--hairline) solid var(--line-inverse)}
  .mnav__top .u-meta{font-size:var(--type-meta-s);color:rgba(242,241,236,.55)}
  .mnav__top button{font-family:var(--font-mono);font-size:var(--type-meta-s);font-weight:500;text-transform:uppercase;letter-spacing:var(--meta-tracking);background:none;border:var(--hairline) solid var(--line-inverse);color:var(--platre-2);padding:10px 15px;min-height:44px;cursor:var(--cursor-link-inverse)}
  .mnav__top button:hover{background:var(--platre-2);color:var(--encre)}
  .mnav__list{list-style:none;margin:var(--sp-6) 0 0;padding:0;flex:1}
  .mnav__list li{border-bottom:var(--hairline) solid var(--line-inverse-subtle);animation:mnavItem 520ms var(--ease-out) both}
  .mnav__list li:nth-child(1){animation-delay:60ms}.mnav__list li:nth-child(2){animation-delay:110ms}.mnav__list li:nth-child(3){animation-delay:160ms}
  .mnav__list li:nth-child(4){animation-delay:210ms}.mnav__list li:nth-child(5){animation-delay:260ms}.mnav__list li:nth-child(6){animation-delay:310ms}
  .mnav__list a{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-4);padding:18px 0;font-size:clamp(28px,8vw,44px);font-weight:var(--display-weight);font-variation-settings:'wdth' 118;letter-spacing:var(--display-tracking);line-height:1;color:var(--platre-2);min-height:56px}
  .mnav__list a[aria-current]{color:var(--cuivre-vif)}
  .mnav__list a::after{content:"\2192";font-size:.42em;opacity:.5;font-weight:400}
  .mnav__foot{display:flex;flex-direction:column;gap:var(--sp-3);align-items:flex-start;border-top:var(--hairline) solid var(--line-inverse);margin-top:var(--sp-7);padding:var(--sp-5) 0 var(--sp-8)}
  .mnav__foot a{display:inline-flex;align-items:center;gap:10px;font-size:var(--type-body-m);color:var(--platre-2);min-height:44px}
  .mnav__addr{font-size:var(--type-meta-s);color:rgba(242,241,236,.62)}
  body.mnav-open{overflow:hidden}
}
@keyframes mnavIn{from{opacity:0}to{opacity:1}}
@keyframes mnavItem{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
