@font-face{font-family:"Instrument Sans";src:url(fonts/instrument-sans-latin-400-normal.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Instrument Sans";src:url(fonts/instrument-sans-latin-600-normal.woff2) format("woff2");font-weight:500 600;font-display:swap}@font-face{font-family:"Instrument Sans";src:url(fonts/instrument-sans-latin-700-normal.woff2) format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:"Plex Mono";src:url(fonts/ibm-plex-mono-latin-400-normal.woff2) format("woff2");font-weight:400 500;font-display:swap}
:root{
  --night:#14171B;--wall:#4E6577;--mist:#E3E6E8;--day:#F6F6F4;--acc:#4E6577;--acc-l:#9FB3C2;--logo:#E8470F;
  --ink:#14171B;--mute:#55626A;--line:#D3DCDD;
  --pad:clamp(20px,5vw,72px);--max:1296px;--gut:clamp(16px,2vw,24px);
  --sec:clamp(80px,10vw,144px);
  --f-d:"Instrument Sans",system-ui,sans-serif;--f-b:"Instrument Sans",system-ui,sans-serif;--f-m:"Plex Mono",ui-monospace,monospace;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:88px;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--day);color:var(--ink);font:400 16px/1.6 var(--f-b);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img{display:block;max-width:100%;height:auto}
a{color:inherit}
h1,h2{font-family:var(--f-d);font-weight:600;margin:0;letter-spacing:-.025em;text-wrap:balance}
p{margin:0}
html[lang=en] .fr,html[lang=fr] .en{display:none}
.skip{position:absolute;left:12px;top:-60px;background:var(--night);color:#fff;padding:10px 14px;z-index:99}
.skip:focus{top:12px}
:focus-visible{outline:2px solid var(--acc);outline-offset:3px}
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--pad)}
.grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gut)}
.grid>*{grid-column:1/-1}
.eyebrow{font:500 12px/1 var(--f-m);letter-spacing:.08em;text-transform:uppercase;color:var(--wall);margin-bottom:24px}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;height:52px;padding:0 26px;background:var(--night);color:var(--day);border:0;border-radius:2px;font:500 15px/1 var(--f-b);text-decoration:none;cursor:pointer;transition:background .2s,color .2s;white-space:nowrap}
.btn:hover{background:var(--wall)}
.btn--sm{height:40px;padding:0 18px;font-size:14px}
.btn--light{background:var(--day);color:var(--night)}
.btn--light:hover{background:#fff;color:var(--night)}
.link{font:500 15px/1 var(--f-b);text-decoration:none;border-bottom:1px solid var(--line);padding-bottom:6px;transition:border-color .2s}
.link:hover{border-color:var(--ink)}

/* header */
.hdr{position:sticky;top:0;z-index:20;background:rgba(247,248,246,.92);backdrop-filter:saturate(1.4) blur(12px);-webkit-backdrop-filter:saturate(1.4) blur(12px);border-bottom:1px solid transparent;transition:border-color .2s}
.hdr.is-scrolled{border-color:var(--line)}
.hdr__in{display:flex;align-items:center;height:76px;gap:40px}
.hdr__logo{display:block;text-decoration:none}
.hdr__nav{display:flex;gap:32px;margin-left:auto}
.hdr__nav a{font-size:14px;font-weight:500;text-decoration:none;color:var(--mute);transition:color .2s}
.hdr__nav a:hover{color:var(--ink)}
.hdr__act{display:flex;align-items:center;gap:20px}
.lang{display:flex;align-items:center}
.lang button{position:relative;font:500 11px/1 var(--f-m);letter-spacing:.14em;background:none;border:0;color:var(--mute);height:32px;padding:0 8px;cursor:pointer;transition:color .25s}
.lang button+button::before{content:"";position:absolute;left:0;top:50%;width:1px;height:10px;margin-top:-5px;background:currentColor;opacity:.35;pointer-events:none}
.lang button::after{content:"";position:absolute;left:8px;right:calc(8px - .14em);bottom:7px;height:1px;background:#E8470F;transform:scaleX(0);transform-origin:left;transition:transform .3s cubic-bezier(.2,.7,.2,1)}
.lang button[aria-pressed=true]{color:var(--ink)}
.lang button[aria-pressed=true]::after{transform:scaleX(1)}
.lang button:not([aria-pressed=true]):hover{color:var(--ink)}
.lang button:focus-visible{outline:1px solid #E8470F;outline-offset:2px}

/* hero */
.hero{padding:clamp(40px,6vw,88px) 0 0}
.hero__grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gut);align-items:end}
.hero__text{grid-column:1/7;padding-bottom:clamp(24px,4vw,64px)}
.hero h1{font-size:clamp(44px,5.8vw,84px);line-height:1.0;letter-spacing:-.035em;max-width:11ch}
.lede{margin-top:32px;font-size:clamp(17px,1.4vw,19px);line-height:1.55;color:var(--mute);max-width:40ch}
.hero__cta{display:flex;align-items:center;gap:32px;margin-top:44px;flex-wrap:wrap}
.hero__fig{grid-column:8/13;margin:0}
.hero__fig img{width:100%;aspect-ratio:4/5;object-fit:cover;object-position:50% 40%;background:var(--mist)}
.cap{margin-top:14px;font:400 12px/1.4 var(--f-m);color:var(--mute);letter-spacing:.02em}

/* sections */
.sec{padding:var(--sec) 0}
.sec--tint{background:#EEF2F1}
.sec__head{grid-column:1/-1;margin-bottom:clamp(40px,5vw,72px);display:grid;grid-template-columns:subgrid}
.sec__head .eyebrow{grid-column:1/4;margin:10px 0 0}
.sec__head h2{grid-column:4/12;font-size:clamp(30px,3.4vw,48px);line-height:1.08}

/* services accordion */
.svc{grid-column:4/-1;border-top:1px solid var(--ink)}
.svc__item{border-bottom:1px solid var(--line)}
.svc__item summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:48px minmax(0,1.1fr) minmax(0,1.3fr) 24px;gap:var(--gut);align-items:baseline;padding:28px 0;transition:color .2s}
.svc__item summary::-webkit-details-marker{display:none}
.svc__n{font:500 12px/1 var(--f-m);color:var(--wall)}
.svc__t{font:500 22px/1.25 var(--f-d);letter-spacing:-.01em}
.svc__s{color:var(--mute);font-size:16px}
.svc__i{position:relative;width:14px;height:14px;justify-self:end;align-self:center}
.svc__i::before,.svc__i::after{content:"";position:absolute;left:0;top:6px;width:14px;height:2px;background:currentColor;transition:transform .25s}
.svc__i::after{transform:rotate(90deg)}
.svc__item[open] .svc__i::after{transform:rotate(0)}
.svc__item summary:hover .svc__t{color:var(--wall)}
.svc__b{list-style:none;margin:0;padding:0 0 32px;display:grid;grid-template-columns:48px minmax(0,1.1fr) minmax(0,1.3fr) 24px;gap:0 var(--gut)}
.svc__b li{grid-column:3/4;position:relative;padding:0 0 0 22px;font-size:15px;line-height:1.5}
.svc__b li+li{margin-top:10px}
.svc__b li::before{content:"";position:absolute;left:0;top:.75em;margin-top:-3px;width:6px;height:6px;background:var(--acc)}

/* clients */
.lg{width:auto;max-width:78%;filter:grayscale(1) contrast(1.05);opacity:.7;transition:filter .35s ease,opacity .35s ease,transform .35s ease}
.logos li:hover .lg{filter:none;opacity:1;transform:scale(1.04)}
.logos li:not(:hover) .lg--brivia{filter:grayscale(1) contrast(1.3) brightness(.8)}
.also__l{font:500 12px/1 var(--f-m);letter-spacing:.08em;text-transform:uppercase;color:var(--mute);margin-right:16px}
.also i{font-style:normal;color:var(--mute);margin:0 8px}

/* gallery */
.gal{grid-column:1/-1;list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--gut);row-gap:56px}
.gal__btn{all:unset;display:block;cursor:zoom-in;width:100%}
.gal__btn:focus-visible{outline:2px solid var(--acc);outline-offset:4px}
.gal__btn picture{display:block;overflow:hidden;background:var(--mist)}
.gal__btn img{width:100%;aspect-ratio:4/5;object-fit:cover;transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.gal__btn:hover img{transform:scale(1.03)}
.gal__cap{display:flex;flex-direction:column;gap:4px;margin-top:16px}
.gal__cap b{font:500 16px/1.3 var(--f-d)}
.gal__cap>span{font-size:14px;color:var(--mute)}

/* contact */
.sec--dark{background:var(--night);color:var(--day)}
.sec--dark .eyebrow{color:var(--acc-l)}
.ct__info{grid-column:1/6}
.ct__info h2{font-size:clamp(36px,4.2vw,60px);line-height:1.04}
.ct__lede{margin-top:24px;color:#A9B6BA;max-width:34ch;font-size:17px}
.ct__dl{margin:48px 0 0;display:grid;gap:0;border-top:1px solid rgba(247,248,246,.16)}
.ct__dl div{display:grid;grid-template-columns:120px 1fr;padding:18px 0;border-bottom:1px solid rgba(247,248,246,.16)}
.ct__dl dt{font:500 12px/1.9 var(--f-m);letter-spacing:.08em;text-transform:uppercase;color:#A9B6BA}
.ct__dl dd{margin:0;font-size:17px}
.ph{color:#A9B6BA;font-style:italic}
.form{grid-column:7/-1;display:grid;gap:24px;align-content:start}
.form__note{font:500 12px/1 var(--f-m);letter-spacing:.06em;text-transform:uppercase;color:var(--acc-l);display:flex;align-items:center;gap:10px}
.form__note::before{content:"";width:8px;height:8px;background:var(--acc-l)}
.form__row{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.form label{display:grid;gap:10px}
.lbl{font-size:13px;color:#A9B6BA}
.form input,.form select,.form textarea{width:100%;font:400 16px/1.4 var(--f-b);color:var(--day);background:transparent;border:0;border-bottom:1px solid rgba(247,248,246,.3);border-radius:0;padding:10px 0;transition:border-color .2s;appearance:none;-webkit-appearance:none}
.form select{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23A9B6BA' stroke-width='1.5'/%3E%3C/svg%3E") right 2px center no-repeat;padding-right:24px}
.form select option{color:var(--night)}
.form textarea{resize:vertical;min-height:112px}
.form input:hover,.form select:hover,.form textarea:hover{border-color:rgba(247,248,246,.6)}
.form input:focus,.form select:focus,.form textarea:focus{outline:0;border-color:var(--acc-l)}
.form__foot{display:flex;align-items:center;gap:24px;margin-top:8px;flex-wrap:wrap}
.form__status{font-size:14px;color:#A9B6BA}

/* footer */
.ftr{padding:40px 0;border-top:1px solid var(--line)}
.ftr__in{display:flex;align-items:center;gap:32px}
.ftr img{height:22px;width:auto}
.ftr p{font-size:13px;color:var(--mute);margin-left:auto}
.ftr a{font-size:13px;color:var(--mute);text-decoration:none}
.ftr a:hover{color:var(--ink)}

/* lightbox */
.lb{border:0;padding:0;background:transparent;max-width:min(92vw,1100px);max-height:92vh;overflow:visible}
.lb::backdrop{background:rgba(14,27,36,.92)}
.lb figure{margin:0}
.lb img{max-height:80vh;width:auto;max-width:100%;margin:0 auto}
.lb figcaption{margin-top:16px;color:var(--day);font-size:14px;text-align:center}
.lb__x{position:fixed;top:20px;right:24px;background:none;border:1px solid rgba(247,248,246,.3);color:var(--day);font:500 13px/1 var(--f-b);height:40px;padding:0 16px;cursor:pointer;border-radius:2px}
.lb__x:hover{border-color:var(--day)}
.lb[open]{animation:fade .25s ease}

/* fade-in */
.js .rv{opacity:0;transform:translateY(12px);transition:opacity .7s ease,transform .7s ease}
.js .rv.in{opacity:1;transform:none}
@keyframes fade{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important;scroll-behavior:auto!important}.js .rv{opacity:1;transform:none}}

/* responsive */
@media (max-width:1080px){
  .hdr__nav{gap:24px}
  .sec__head .eyebrow{grid-column:1/-1;margin-bottom:20px}
  .sec__head h2{grid-column:1/11}
  .svc{grid-column:1/-1}
}
@media (max-width:900px){
  .hdr__nav{display:none}
  .hdr__act{margin-left:auto}
  .hero__text,.hero__fig{grid-column:1/-1}
  .hero__text{padding-bottom:48px}
  .hero h1{max-width:12ch}
  .gal{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:40px}
  .ct__info,.form{grid-column:1/-1}
  .form{margin-top:56px}
  .svc__item summary,.svc__b{grid-template-columns:40px minmax(0,1fr) 24px}
  .svc__s{grid-column:2/3;grid-row:2}
  .svc__i{grid-column:3;grid-row:1}
  .svc__b li{grid-column:2/3}
  .svc__item summary{row-gap:8px}
}
@media (max-width:560px){
  .hdr__in{height:64px;gap:12px}
  .hdr__act{gap:10px}
  .btn--sm .en,.btn--sm .fr{font-size:13px}
  .btn--sm{padding:0 14px}
  html{scroll-padding-top:72px}
  .hero{padding-top:32px}
  .lede{margin-top:24px}
  .hero__cta{gap:24px;margin-top:32px}
  .hero__fig{margin:0 calc(var(--pad) * -1)}
  .hero__fig .cap{padding:0 var(--pad)}
  .sec__head h2{grid-column:1/-1}
  .svc__t{font-size:19px}
  .svc__s{font-size:15px}
  .also__l{display:block;margin-bottom:8px}
  .form__row{grid-template-columns:1fr}
  .ct__dl div{grid-template-columns:96px 1fr}
  .ftr__in{flex-direction:column;align-items:flex-start;gap:16px}
  .ftr p{margin-left:0}
}


/* brand logo */
.logo{display:block;height:32px;width:auto;color:var(--ink)}
.ftr .logo{height:26px}
.hdr.is-scrolled .hdr__in{height:60px}
.hdr.is-scrolled .logo{height:32px}
.hdr__in{transition:height .3s ease}
.hdr__nav a{position:relative;padding:6px 0}
.hdr__nav a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1.5px;background:var(--acc);transform:scaleX(0);transform-origin:left;transition:transform .3s ease}
.hdr__nav a:hover::after,.hdr__nav a.is-active::after{transform:scaleX(1)}
.hdr__nav a.is-active{color:var(--ink)}
/* button lift */
.btn{transition:background .2s,color .2s,transform .2s ease,box-shadow .2s ease}
.btn:hover{transform:translateY(-2px);box-shadow:0 8px 20px -10px rgba(20,23,27,.55)}
.btn:active{transform:none;box-shadow:none}
/* stats */
.stats{display:flex;gap:clamp(24px,4vw,56px);margin:56px 0 0;padding-top:28px;border-top:1px solid var(--line)}
.stats dt{order:2;font:400 12px/1.4 var(--f-m);letter-spacing:.06em;text-transform:uppercase;color:var(--mute);margin-top:8px}
.stats div{display:flex;flex-direction:column}
.stats dd{order:1;margin:0;font:600 clamp(32px,3.2vw,44px)/1 var(--f-d);letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--ink)}
/* gallery hover overlay */
.gal__btn picture{position:relative}
.gal__btn picture::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(20,23,27,.55),rgba(20,23,27,0) 55%);opacity:0;transition:opacity .35s ease}
.gal__btn{position:relative}
.gal__ov{position:absolute;left:16px;bottom:16px;z-index:2;color:#fff;font:500 13px/1 var(--f-b);letter-spacing:.02em;opacity:0;transform:translateY(6px);transition:opacity .35s ease,transform .35s ease;pointer-events:none}
.gal__btn:hover picture::after,.gal__btn:focus-visible picture::after{opacity:1}
.gal__btn:hover .gal__ov,.gal__btn:focus-visible .gal__ov{opacity:1;transform:none}
.gal__btn:hover img{transform:scale(1.05)}
.gal li{position:relative}
/* lightbox nav */
.lb__nav{position:fixed;top:50%;transform:translateY(-50%);width:48px;height:48px;border-radius:50%;background:rgba(246,246,244,.08);border:1px solid rgba(246,246,244,.25);color:#fff;font-size:18px;cursor:pointer;transition:background .2s,border-color .2s}
.lb__nav:hover{background:rgba(246,246,244,.18);border-color:#fff}
.lb__prev{left:24px}.lb__next{right:24px}
.lb__count{position:fixed;top:30px;left:24px;margin:0;color:rgba(246,246,244,.7);font:400 12px/1 var(--f-m);letter-spacing:.08em}
.lb img{transition:opacity .25s ease}
.lb.is-swapping img{opacity:0}
/* stagger */
.js .rv{transition-delay:calc(var(--i,0) * 70ms)}
/* accordion body wrapper */
.svc__item{overflow:hidden}
@media (max-width:560px){.stats{gap:20px;margin-top:40px}.lb__nav{top:auto;bottom:24px;transform:none}.lb__prev{left:calc(50% - 60px)}.lb__next{right:calc(50% - 60px)}.logo{height:28px}.hdr.is-scrolled .logo{height:28px}}
@media (prefers-reduced-motion:reduce){.btn:hover,.gal__btn:hover img,.logos li:hover .lg{transform:none}}
.btn--sm .short{display:none}
@media (max-width:560px){.btn--sm .long{display:none}.btn--sm .short{display:inline}}
.logos li:hover .lg--type{color:var(--ink)}

/* client marquee */
.marquee{grid-column:1/-1;position:relative;overflow:hidden;border-top:1px solid var(--line);border-bottom:1px solid var(--line);-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.logos{list-style:none;margin:0;padding:0;display:flex;width:max-content;animation:marq 60s linear infinite}
.marquee:hover .logos,.marquee:focus-within .logos{animation-play-state:paused}
.logos li{flex:0 0 auto;width:clamp(150px,14vw,200px);height:clamp(96px,9vw,128px);display:flex;align-items:center;justify-content:center}
@keyframes marq{to{transform:translateX(-50%)}}
.lg--magil{height:38px}.lg--gsmv{height:30px}.lg--bgo{height:30px}.lg--sidcan{height:19px}.lg--mach{height:23px}.lg--brivia{height:50px}.lg--broccolini{height:16px}.lg--construgep{height:20px}.lg--tisseur{height:14px}.lg--corsim{height:36px}.lg--wilkar{height:26px}
.lg--type{display:inline-block;font:700 19px/1 var(--f-d);letter-spacing:.2em;color:#3a3d42;padding-left:.2em}
.lg--cb7{font-size:24px;letter-spacing:.08em}
@media (max-width:560px){.logos{animation-duration:45s}.logos li{width:132px;height:84px}.lg{max-width:80%}.lg--magil{height:30px}.lg--gsmv{height:22px}.lg--bgo{height:24px}.lg--sidcan{height:14px}.lg--mach{height:18px}.lg--brivia{height:40px}.lg--broccolini{height:12px}.lg--construgep{height:15px}.lg--tisseur{height:13px}.lg--corsim{height:28px}.lg--wilkar{height:20px}.lg--type{font-size:15px}.lg--cb7{font-size:19px}}
@media (prefers-reduced-motion:reduce){.marquee{-webkit-mask-image:none;mask-image:none;border:0}.logos{animation:none;width:auto;flex-wrap:wrap;justify-content:center}.logos li[aria-hidden]{display:none}}

/* ongoing projects */
.sub{grid-column:1/-1;margin-top:120px}
.sub__h{font:500 22px/1.2 var(--f-d);letter-spacing:-.01em;margin:0 0 32px;padding-top:24px;border-top:1px solid var(--mist)}
@media (max-width:760px){.sub{margin-top:72px}.gal--ongoing li:first-child{grid-column:1/-1}.gal--ongoing li:first-child img{aspect-ratio:4/3}}

/* ===================== richness layer (additive) ===================== */
:root{--slate:#1B2129}
.mono{font:400 12px/1.4 var(--f-m);letter-spacing:.06em;text-transform:uppercase}
/* texture: grain + column rules + progress rail */

.cols{position:fixed;inset:0;z-index:1;pointer-events:none;max-width:var(--max);margin:0 auto;padding:0 var(--pad);display:grid;grid-template-columns:repeat(6,1fr)}
.cols i{border-left:1px solid rgba(20,23,27,.045)}.cols i:last-child{border-right:1px solid rgba(20,23,27,.045)}
.prog{position:fixed;right:0;top:0;bottom:0;width:2px;z-index:30;pointer-events:none}
.prog i{display:block;height:100%;background:var(--wall);transform:scaleY(0);transform-origin:top}
main,.ftr{position:relative}
.sec>.wrap,.ftr>.wrap{position:relative;z-index:2}
/* chapter labels */
.chap{display:flex;align-items:center;gap:14px}
.chap__l{display:block;height:1px;flex:0 1 72px;background:currentColor;opacity:.5;transform-origin:left;transition:transform .9s cubic-bezier(.2,.7,.2,1) .2s}
.js .rv:not(.in) .chap__l{transform:scaleX(0)}
.chap__n{opacity:.8}
.chap__l,.chap__n{display:none}
/* section heads bigger */
.sec__head h2{font-size:clamp(34px,4.4vw,64px);line-height:1.02;letter-spacing:-.035em}
/* services: editorial with image + plan motif */
.svc{position:relative}
.svc__item{position:relative}
.svc__img{position:absolute;right:calc(100% + var(--gut));top:34px;z-index:2;width:calc((100% - 8 * var(--gut)) / 9 * 3 + var(--gut));margin:0;opacity:0;transform:translateY(12px);transition:opacity .5s ease,transform .6s cubic-bezier(.2,.7,.2,1);pointer-events:none}
.svc__img img{width:100%;aspect-ratio:4/5;object-fit:cover;background:var(--mist)}
.svc__img span{position:absolute;left:12px;top:12px;color:#fff;font:400 11px/1 var(--f-m);letter-spacing:.06em;mix-blend-mode:difference}
.svc__item[open] .svc__img{opacity:1;transform:none}
.svc__item summary{padding:34px 0}
.svc__t{font-size:clamp(22px,2vw,28px)}

/* clients tint gets rules */
.sec--tint{position:relative;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
/* past work: asymmetric editorial grid */
.gal--past{grid-template-columns:repeat(12,minmax(0,1fr));row-gap:var(--gut)}
.gal--past li{position:relative;grid-column:span 4;min-height:260px}
.gal--past li:nth-child(6){order:1;grid-column:span 5;aspect-ratio:4/5}
.gal--past li:nth-child(2){order:2;grid-column:span 7}
.gal--past li:nth-child(3){order:3;aspect-ratio:4/5}
.gal--past li:nth-child(4){order:4;aspect-ratio:4/5}
.gal--past li:nth-child(1){order:5;aspect-ratio:4/5}
.gal--past li:nth-child(5){order:6;grid-column:1/-1;aspect-ratio:21/9}
.gal--past .gal__btn{position:absolute;inset:0}
.gal--past .gal__btn picture{position:absolute;inset:0}
.gal--past .gal__btn img{width:100%;height:100%;aspect-ratio:auto}
.gal--past .gal__btn picture::after{opacity:1;background:linear-gradient(to top,rgba(20,23,27,.62),rgba(20,23,27,0) 45%)}
.gal--past .gal__cap{position:absolute;left:20px;right:20px;bottom:18px;margin:0;z-index:3;color:#fff;flex-direction:row;align-items:baseline;gap:14px}
.gal--past .gal__cap b{font-size:clamp(16px,1.4vw,20px)}
.gal__n{opacity:.85;font-size:11px;color:#fff}
.gal--past .gal__n{display:none}
.gal--past .gal__ov{left:auto;right:20px;top:18px;bottom:auto}
.gal--past li::before{content:"";position:absolute;top:-1px;left:0;width:28px;height:1px;background:var(--ink);z-index:3}
/* ongoing: distinct slate band */
.sec--ongoing{background:var(--slate);color:var(--day);position:relative;overflow:hidden}

.sec--ongoing .eyebrow{color:var(--acc-l)}
.sub{margin:0}
.sub__h{font:600 clamp(34px,4.4vw,64px)/1.02 var(--f-d);letter-spacing:-.035em;margin:0 0 clamp(40px,5vw,72px);padding:0;border:0}
.gal--ongoing{grid-template-columns:repeat(3,minmax(0,1fr))}
.gal--ongoing li:nth-child(2){margin-top:clamp(0px,6vw,96px)}
.gal--ongoing .gal__btn picture{background:#2A323C}
.gal--ongoing .gal__cap{color:var(--day);flex-direction:row;align-items:center;gap:14px;justify-content:space-between;border-top:1px solid rgba(247,248,246,.18);padding-top:14px}
.gal--ongoing .gal__cap .gal__n{display:none}
.live{display:inline-flex;align-items:center;gap:8px;font-size:11px;color:var(--acc-l);order:2}
.live i{width:7px;height:7px;border-radius:50%;background:#6FE3A0;box-shadow:0 0 0 0 rgba(111,227,160,.6);animation:pulse 2.4s ease-out infinite}
@keyframes pulse{70%{box-shadow:0 0 0 8px rgba(111,227,160,0)}100%{box-shadow:0 0 0 0 rgba(111,227,160,0)}}
/* contact: closing band */
#contact{position:relative;overflow:hidden;border-top:1px solid rgba(247,248,246,.08)}

.ct__info h2{font-size:clamp(48px,7vw,112px);line-height:.95;letter-spacing:-.045em}
.ct__info{grid-column:1/7}
.form{grid-column:8/-1}
/* footer */
.ftr{padding:0;border-top:0;background:var(--night);color:var(--day)}
.ftr__top{display:flex;justify-content:space-between;align-items:flex-end;gap:40px;padding-top:72px;padding-bottom:56px;border-bottom:1px solid rgba(247,248,246,.12)}
.ftr__brand p{margin-top:20px;color:#8D9AA1}
.ftr__nav{display:flex;gap:clamp(20px,3vw,40px)}
.ftr .ftr__nav a{font:500 clamp(16px,1.4vw,20px)/1 var(--f-d);color:var(--day);letter-spacing:-.01em}
.ftr .ftr__nav a:hover{color:var(--acc-l)}
.ftr__in{padding-top:24px;padding-bottom:28px}
.ftr .ftr__in p,.ftr .ftr__in a{color:#8D9AA1;font-size:11px}
.ftr .ftr__in a:hover{color:var(--day)}
/* responsive */
@media (max-width:900px){
  .svc__img{position:relative;right:auto;top:auto;width:100%;opacity:1;transform:none;display:none;margin:0 0 24px}
  .svc__item[open] .svc__img{display:block;grid-column:1/-1;order:9;margin:16px 0 0}
  .svc__img img{aspect-ratio:16/9}
  .svc__plan{display:none}
  .ct__info,.form{grid-column:1/-1}
  .cols{grid-template-columns:repeat(4,1fr)}.cols i:nth-child(n+5){display:none}
}
@media (max-width:760px){
  .gal--past{grid-template-columns:1fr 1fr}
  .gal--past li,.gal--past li:nth-child(n){grid-column:span 1;aspect-ratio:4/5;min-height:0}
  .gal--past li:nth-child(6){grid-column:1/-1;aspect-ratio:4/5}.gal--past li:nth-child(2),.gal--past li:nth-child(5),.gal--past li:nth-child(1){grid-column:1/-1;aspect-ratio:16/10}
  .gal--past .gal__cap{left:14px;bottom:12px}
  .gal--ongoing{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:14px;margin:0 calc(var(--pad) * -1);padding:0 var(--pad);scrollbar-width:none}
  .gal--ongoing li{flex:0 0 76%;scroll-snap-align:start;margin:0!important}
  .gal--ongoing li:first-child img{aspect-ratio:4/5}
  .ftr__top{flex-direction:column;align-items:flex-start;padding-top:56px}
  .ftr__nav{flex-wrap:wrap}
}
/* one colour grade for all project imagery */
.gal__btn img,.lb img{filter:saturate(.82) contrast(1.06) brightness(.98) sepia(.06) hue-rotate(-4deg)}
@media (max-width:760px){.gal--ongoing .gal__cap{flex-wrap:wrap;gap:6px}}
.svc__img img{aspect-ratio:1/1;background:#ECEFF0;border:1px solid var(--line)}
.svc__img span{color:var(--wall);mix-blend-mode:normal}
@media (max-width:900px){.svc__img img{aspect-ratio:16/10;object-fit:cover}}
.sec--ongoing::after{content:"";position:absolute;right:max(2vw,calc((100vw - var(--max))/2 - 40px));top:40px;width:min(34vw,420px);aspect-ratio:600/800;background:url(tower-curv.svg) no-repeat center/contain;opacity:.16;pointer-events:none}
@media (max-width:760px){.sec--ongoing::after{width:58vw;opacity:.1}}
.svc__item{overflow:visible}
.gal--past li:nth-child(6) img{object-position:50% 0}
.svc>.svc__img{position:absolute;top:auto;margin-top:34px}
.svc>.svc__img:has(+ .svc__item[open]){opacity:1;transform:none}
@media (max-width:900px){.svc>.svc__img{display:none}}
.gal--past li:nth-child(6),.gal--past li:nth-child(3),.gal--past li:nth-child(4),.gal--past li:nth-child(1),.gal--past li:nth-child(5){align-self:start;min-height:0}
@media (max-width:760px){.gal--past li:nth-child(n){align-self:start}}
.band{background:#21262C;color:var(--day);padding:clamp(64px,8vw,112px) 0;position:relative;z-index:0;border-bottom:1px solid rgba(247,248,246,.08)}
.band__in{position:relative;z-index:2}
.band .eyebrow{color:var(--acc-l)}
.band__art{display:block;margin:clamp(24px,3vw,40px) calc(var(--pad) * -.5) 0}
.band__art img{width:100%;height:auto;mix-blend-mode:lighten}
.band__cap{display:flex;justify-content:space-between;margin-top:20px;padding-top:16px;border-top:1px solid rgba(247,248,246,.14);color:#8D9AA1;text-transform:none}
.band{background:#25282D}
.band__art img{mix-blend-mode:normal}
@media (max-width:760px){.band__cap span:last-child{display:none}.band__art{margin-left:0;margin-right:0}}

/* grid v3: YUL feature + GV2, then four regular tiles (Passerelle regular) */
.gal--past li:nth-child(n){grid-column:span 3;aspect-ratio:4/5;align-self:start;min-height:0}
.gal--past li:nth-child(6){order:1;grid-column:span 5;aspect-ratio:4/5}
.gal--past li:nth-child(2){order:2;grid-column:span 7;aspect-ratio:auto;align-self:stretch}
.gal--past li:nth-child(3){order:3}.gal--past li:nth-child(4){order:4}.gal--past li:nth-child(1){order:5}.gal--past li:nth-child(5){order:6}
@media (max-width:760px){
  .gal--past li:nth-child(n){grid-column:span 1;aspect-ratio:4/5}
  .gal--past li:nth-child(6){grid-column:1/-1;aspect-ratio:4/5}
  .gal--past li:nth-child(2){grid-column:1/-1;aspect-ratio:16/10;align-self:start}
}

/* ongoing tower outline: whole drawing visible */
.sec--ongoing::after{top:auto;bottom:clamp(24px,4vw,56px);right:max(16px,calc((100vw - var(--max))/2 + var(--pad)));width:auto;height:min(78%,640px);aspect-ratio:600/800;background-size:contain;background-position:right bottom;opacity:.14;z-index:0}
.sec--ongoing .sub{position:relative;z-index:2}
@media (max-width:760px){.sec--ongoing::after{top:24px;bottom:auto;height:300px;right:12px;opacity:.1}}


/* grid v4: YUL tall left, GV2 + 1500 stacked right, then four regular tiles */
.gal--past li:nth-child(n){grid-column:span 3;grid-row:auto;aspect-ratio:4/5;align-self:start;min-height:0}
.gal--past li:nth-child(6){order:1;grid-column:span 6;grid-row:span 2;aspect-ratio:auto;align-self:stretch}
.gal--past li:nth-child(2){order:2;grid-column:span 6;aspect-ratio:16/10}
.gal--past li:nth-child(7){order:3;grid-column:span 6;aspect-ratio:16/10}
.gal--past li:nth-child(3){order:4}.gal--past li:nth-child(4){order:5}.gal--past li:nth-child(1){order:6}.gal--past li:nth-child(5){order:7}
@media (max-width:760px){
  .gal--past li:nth-child(n){grid-column:span 1;grid-row:auto;aspect-ratio:4/5;align-self:start}
  .gal--past li:nth-child(6){grid-column:1/-1;aspect-ratio:4/5}
  .gal--past li:nth-child(2),.gal--past li:nth-child(7){grid-column:1/-1;aspect-ratio:16/10}
}

/* hero: SP1 dusk, centred (Joseph-approved deploy) */
.hdr{transition:background .35s,border-color .35s,color .35s}
.hdr:not(.is-scrolled){background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;color:#fff}
.hdr:not(.is-scrolled) .logo,.hdr:not(.is-scrolled) .hdr__nav a,.hdr:not(.is-scrolled) .hdr__nav a.is-active{color:#fff}
.hdr:not(.is-scrolled) .hdr__nav a::after{background:#fff}
.hdr:not(.is-scrolled) .lang button{color:rgba(255,255,255,.6)}
.hdr:not(.is-scrolled) .lang button[aria-pressed=true],.hdr:not(.is-scrolled) .lang button:hover{color:#fff}
.hdr:not(.is-scrolled) .btn--sm{background:#fff;color:var(--night)}
.hero{position:relative;z-index:2;padding:0;margin-top:-76px;min-height:max(680px,100svh);display:flex;color:#fff;overflow:hidden;background:var(--night)}
.hero__media{position:absolute;inset:0}
.hero__media picture,.hero__media img{width:100%;height:100%}
.hero__media img{object-fit:cover;object-position:50% 35%;transform:scale(1.08);transform-origin:50% 50%;animation:zoomout 20s cubic-bezier(.2,.6,.3,1) forwards;will-change:transform;backface-visibility:hidden}
@keyframes zoomout{from{transform:scale(1.16)}to{transform:scale(1.08)}}
.hero__shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,23,27,.55) 0,rgba(20,23,27,.05) 30%,rgba(20,23,27,.2) 55%,rgba(20,23,27,.86) 100%)}
.hero__in{position:relative;z-index:2;width:100%;display:flex;flex-direction:column;justify-content:flex-end;padding-top:140px;padding-bottom:40px}
.hero__meta{display:flex;justify-content:space-between;color:rgba(255,255,255,.8);margin-bottom:28px;padding-bottom:16px}
.hero h1{font-size:clamp(56px,9.4vw,152px);line-height:.92;letter-spacing:-.045em;font-weight:600;max-width:10.5ch}
.hero__row{display:flex;justify-content:space-between;align-items:flex-end;gap:40px;margin-top:40px;flex-wrap:wrap}
.hero .lede{margin:0;color:rgba(255,255,255,.82);max-width:44ch}
.hero__cta{margin:0}
.hero .btn{background:#fff;color:var(--night)}
.hero .btn:hover{background:var(--mist)}
.hero .link{color:#fff;border-color:rgba(255,255,255,.4)}
.hero .link:hover{border-color:#fff}
.hero__foot{display:flex;justify-content:space-between;align-items:center;margin-top:56px;color:rgba(255,255,255,.6)}
.hero__cap{text-transform:none;letter-spacing:.02em}
.hero__scroll{display:flex;align-items:center;gap:12px}
.hero__scroll i{display:block;width:1px;height:40px;background:rgba(255,255,255,.5);position:relative;overflow:hidden}
.hero__scroll i::after{content:"";position:absolute;left:0;top:-40%;width:1px;height:40%;background:#fff;animation:drip 2.2s ease-in-out infinite}
@keyframes drip{to{top:100%}}
@media (max-width:760px){.hero{margin-top:-64px}.hero__in{padding-top:110px;padding-bottom:28px}.hero__row{margin-top:28px}.hero__foot{margin-top:36px}.hero__cap{display:none}}
@media (prefers-reduced-motion:reduce){.hero__media img{animation:none;transform:none}.hero__scroll i::after,.live i{animation:none}}
@media (max-width:760px){.hero__idx{display:none}.hero__meta{margin-bottom:20px}}
.hero{background:#21262C}
.hero__media img{object-fit:cover;object-position:50% 38%}
.hero__shade{background:linear-gradient(180deg,rgba(20,23,27,.35) 0,rgba(20,23,27,0) 35%,rgba(20,23,27,.15) 55%,rgba(20,23,27,.8) 100%)}

.hero__media img{opacity:1;object-position:50% 30%}
.hero__shade{background:linear-gradient(180deg,rgba(20,23,27,.45) 0,rgba(20,23,27,0) 28%,rgba(20,23,27,.1) 50%,rgba(20,23,27,.82) 100%)}

@media (max-width:760px){}
.hero__media img{opacity:1;object-position:50% 30%}

.due{order:2;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--acc-l);opacity:.75;white-space:nowrap}
.sec--ongoing .gal__cap{flex-wrap:wrap;row-gap:4px}.sec--ongoing .due{flex-basis:100%;order:3}
/* client strip arrows */
.marq-nav{grid-column:1/-1;display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
.marq-btn{width:40px;height:40px;display:grid;place-items:center;background:transparent;border:1px solid var(--line);border-radius:50%;color:var(--mute);cursor:pointer;transition:color .25s,border-color .25s,transform .25s}
.marq-btn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.4}
.marq-btn:hover,.marq-btn:focus-visible{color:var(--ink);border-color:var(--ink)}
.marq-btn:active{transform:scale(.94)}
.marquee.is-js .logos{animation:none;will-change:transform}.marquee.is-js{touch-action:pan-y;cursor:grab}.marquee.is-drag{cursor:grabbing}
@media (prefers-reduced-motion:reduce){.marq-nav{display:none}}
/* ongoing row 2 (2 tiles, same size; stagger continues) */
@media (min-width:761px){.gal--ongoing li:nth-child(5){margin-top:clamp(0px,6vw,96px)}}
/* BMU line drawing: background of the exterior high-rise panel only */
.svc__item--bmu,.svc__item--park,.svc__item--comm,.svc__item--post{position:relative;isolation:isolate}
.svc__item--bmu::after{content:"";position:absolute;z-index:-1;pointer-events:none;left:calc(48px + var(--gut));right:24px;bottom:12px;top:auto;height:auto;aspect-ratio:1686/947;max-height:calc(100% - 24px);background:url(img/svc-bmu-line.webp) no-repeat center bottom/contain;opacity:0;transition:opacity .5s ease}

.svc__item--park::after{content:"";position:absolute;z-index:-1;pointer-events:none;left:calc(48px + var(--gut));right:24px;bottom:12px;top:auto;height:auto;aspect-ratio:2936/1680;max-height:calc(100% - 24px);background:url(img/svc-park-line.webp) no-repeat center bottom/contain;opacity:0;transition:opacity .5s ease}
.svc__item--bmu[open]::after,.svc__item--park[open]::after{opacity:.22}
@media (max-width:760px){.svc__item--bmu::after,.svc__item--park::after{left:0;right:0;bottom:10px;max-height:none}.svc__item--bmu[open]::after,.svc__item--park[open]::after{opacity:.16}}
/* photo backgrounds: left column under the title, natural ratio */
.svc__item--comm::after,.svc__item--post::after{content:"";position:absolute;z-index:-1;pointer-events:none;left:calc(48px + var(--gut));bottom:18px;width:clamp(240px,24vw,360px);height:auto;background:no-repeat center/100% 100%;opacity:0;transition:opacity .5s ease}
.svc__item--comm::after{width:clamp(220px,20vw,300px);aspect-ratio:1100/784;background-image:url(img/svc-comm-hall.webp)}
.svc__item--post::after{aspect-ratio:1420/952;background-image:url(img/svc-post-kitchen.webp)}
.svc__item--comm[open]::after,.svc__item--post[open]::after{opacity:.32}
@media (max-width:760px){.svc__item--comm::after,.svc__item--post::after{left:auto;right:0;bottom:12px;width:70%!important}.svc__item--comm[open]::after,.svc__item--post[open]::after{opacity:.2}}
/* all four service backgrounds: left column under the title, same size, true ratio */
.svc__item--post::after,.svc__item--comm::after,.svc__item--bmu::after,.svc__item--park::after{left:calc(48px + var(--gut));right:auto;top:auto;bottom:18px;width:clamp(360px,32vw,470px);height:auto;max-height:none;background-size:100% 100%;background-position:center}
@media (max-width:760px){.svc__item--post::after,.svc__item--comm::after,.svc__item--bmu::after,.svc__item--park::after{left:auto;right:0;bottom:12px;width:86%!important}}
/* weather ticker */
.wx{border-bottom:1px solid var(--line);background:var(--day);overflow:hidden}
.wx__vp{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent);mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent)}
.wx__track{display:flex;width:max-content;animation:wxmarq var(--wxd,60s) linear infinite}
.wx:hover .wx__track{animation-play-state:paused}
@keyframes wxmarq{to{transform:translateX(-50%)}}
.wx__it{display:flex;align-items:center;gap:12px;padding:15px 28px;white-space:nowrap;border-right:1px solid var(--line);font-size:13px;color:var(--ink);font-variant-numeric:tabular-nums}
.wx__it svg{width:20px;height:20px;flex:0 0 auto;fill:none;stroke:var(--wall);stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}
.wx__k{font-family:var(--f-m);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--mute)}
.wx__k b{font-weight:500;color:var(--ink)}
.wx__t{font-weight:600}.wx__t i{font-style:normal;font-weight:400;color:var(--mute)}
.wx__w{font-size:11px;letter-spacing:.06em;color:var(--mute)}
@media (max-width:760px){.wx__it{padding:12px 20px;gap:10px;font-size:12px}}
@media (prefers-reduced-motion:reduce){.wx__track{animation:none;width:auto;flex-wrap:wrap;justify-content:center}.wx__track [aria-hidden]{display:none}.wx__vp{-webkit-mask-image:none;mask-image:none}}
.svc__item.is-closing::after{opacity:0!important}
/* contact: tower line drawing, left, faint */
#contact>.wrap{position:relative;z-index:1}
/* perf: pause offscreen animations, isolate paint */
.is-off,.is-off *,.is-off *::after,.is-off *::before{animation-play-state:paused!important}
.wx,.marquee{contain:paint}
.svc__item--comm::after{width:clamp(284px,25.3vw,371px)}
/* ticker inside Ongoing (dark variant) */
.wx--dark{background:transparent;border-top:1px solid rgba(247,248,246,.12);border-bottom:1px solid rgba(247,248,246,.12);position:relative;z-index:2;margin:calc(var(--sec) * -1) 0 calc(var(--sec) * .7)}
.wx--dark .wx__it{color:var(--day);border-right-color:rgba(247,248,246,.12)}
.wx--dark .wx__it svg{stroke:#A9B6BA}
.wx--dark .wx__k,.wx--dark .wx__w,.wx--dark .wx__t i{color:#8E9AA0}
.wx--dark .wx__k b{color:var(--day)}
.svc__item--bmu::after,.svc__item--park::after{width:clamp(240px,20.5vw,300px)}
/* client logos: original full colour by default */
.lg,.logos li:not(:hover) .lg--brivia{filter:none!important;opacity:1}
.logos li:hover .lg{transform:none}
.lg--type,.logos li:hover .lg--type{color:var(--ink)}
/* Ongoing: Curv rendering watermark (replaces line drawing; svg kept as tower-curv.svg) */
.sec--ongoing::after{background:url(img/curv-watermark.webp) no-repeat right bottom/contain;aspect-ratio:520/1277;opacity:.32}
@media (max-width:760px){.sec--ongoing::after{opacity:.15}}
/* Curv watermark: spans the right-hand column (positioned via JS vars; CSS fallback) */
@media (min-width:761px){.sec--ongoing::after{top:var(--wm-t,18%);bottom:auto;height:var(--wm-h,78%);width:auto;right:auto;left:var(--wm-l,62%);aspect-ratio:520/1277;opacity:.21}}
.marquee{-webkit-mask-image:linear-gradient(90deg,transparent 0,rgba(0,0,0,.35) 5%,#000 15%,#000 85%,rgba(0,0,0,.35) 95%,transparent 100%);mask-image:linear-gradient(90deg,transparent 0,rgba(0,0,0,.35) 5%,#000 15%,#000 85%,rgba(0,0,0,.35) 95%,transparent 100%)}
.wx--band{margin:0;background:#25282D;border-top:1px solid rgba(247,248,246,.10);border-bottom:1px solid rgba(247,248,246,.08)}
/* TRIAL: services as horizontal cards */
.svc--cards{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--gut);border-top:0;margin-top:clamp(32px,4vw,56px)}
.svc--cards .svc__item{display:block;position:relative;isolation:isolate;overflow:hidden;border:1px solid var(--line);background:var(--day);padding:calc(62.5% + 26px) 26px 30px;transition:border-color .3s,transform .3s}
.svc--cards .svc__item:hover{border-color:#C9D0D4}
.svc--cards .svc__item::after{position:absolute!important;z-index:-1;left:0!important;right:0!important;top:0!important;bottom:auto!important;width:auto!important;height:auto!important;max-height:none!important;aspect-ratio:16/10!important;background-size:cover!important;background-position:center!important;background-repeat:no-repeat!important;opacity:.62!important;transition:none;border-bottom:1px solid var(--line)}
.svc--cards .svc__item--bmu::after,.svc--cards .svc__item--park::after{background-size:86% auto!important;opacity:.8!important}
.svc--cards .svc__item summary{display:block;padding:0;cursor:default}
.svc--cards .svc__item summary:hover .svc__t{color:inherit}
.svc--cards .svc__n{display:block;margin-bottom:14px}
.svc--cards .svc__t{display:block;font-size:clamp(19px,1.5vw,22px);line-height:1.2;min-height:2.4em}
.svc--cards .svc__s{display:block;margin-top:12px;font-size:15px;line-height:1.5}
.svc--cards .svc__i{display:none}
.svc--cards .svc__b{display:block;padding:18px 0 0;margin-top:18px;border-top:1px solid var(--line)}
.svc--cards .svc__b li{font-size:14px}
@media (max-width:1100px) and (min-width:761px){.svc--cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:760px){.svc--cards{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:14px;margin-left:calc(var(--pad) * -1);margin-right:calc(var(--pad) * -1);padding:0 var(--pad) 4px;scrollbar-width:none}
.svc--cards::-webkit-scrollbar{display:none}
.svc--cards .svc__item{flex:0 0 82%;scroll-snap-align:start;padding:calc(51.25% + 22px) 22px 26px}
.svc--cards .svc__item::after{width:auto!important;opacity:.62!important}
.svc--cards .svc__t{min-height:0}}
/* work-at-height outlook (band) */
.wh{margin-top:28px}
.wh__h{margin:0 0 14px;font-size:11px;letter-spacing:.14em;color:#8D9AA1}
.wh__days{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid rgba(247,248,246,.12);border-bottom:1px solid rgba(247,248,246,.12)}
.wh__d{display:flex;flex-direction:column;gap:8px;padding:18px 24px 18px 0}
.wh__d+.wh__d{padding-left:24px;border-left:1px solid rgba(247,248,246,.12)}
.wh__day{font-size:11px;letter-spacing:.14em;color:#8D9AA1}
.wh__st{display:flex;align-items:center;gap:10px;font-size:15px;color:var(--day)}
.wh__st i{width:8px;height:8px;border-radius:50%;flex:0 0 auto}
.is-go .wh__st i{background:#6FE3A0;box-shadow:0 0 10px rgba(111,227,160,.55)}
.is-no .wh__st i{background:#C9655F;box-shadow:0 0 10px rgba(201,101,95,.4)}
.wh__v{font-size:11px;letter-spacing:.06em;color:#8D9AA1;text-transform:none}
@media (max-width:760px){.wh__d,.wh__d+.wh__d{padding:14px 8px}.wh__d:first-child{padding-left:0}.wh__st{font-size:13px;align-items:flex-start}.wh__st i{margin-top:5px}.wh__v{font-size:10px;line-height:1.5}}
/* cards as dropdowns */
.svc--cards{align-items:start}
.svc--cards .svc__item summary{cursor:pointer;position:relative;padding-right:28px}
.svc--cards .svc__item summary:hover .svc__t{color:var(--wall)}
.svc--cards .svc__i{display:block;position:absolute;right:0;top:30px}
.svc--cards .svc__item:not([open]){padding-bottom:26px}
.svc--cards .svc__s{max-height:0;opacity:0;overflow:hidden;margin-top:0;transition:max-height .32s cubic-bezier(.2,.7,.2,1),opacity .32s,margin-top .32s}
.svc--cards .svc__item[open]:not(.is-closing) .svc__s{max-height:9em;opacity:1;margin-top:12px}
.svc--cards .svc__item summary:focus-visible{outline:2px solid var(--acc);outline-offset:4px}
@media (max-width:760px){.svc--cards{align-items:flex-start}.svc--cards .svc__t{min-height:2.4em}}
.btn,.btn--sm,.btn--light,.hero .btn{border-radius:6px}
/* cards: image strip hidden until open */
.svc--cards .svc__item{padding-top:26px;transition:padding-top .34s cubic-bezier(.2,.7,.2,1),border-color .3s}
.svc--cards .svc__item[open]:not(.is-closing){padding-top:calc(62.5% + 26px)}
.svc--cards .svc__item::after{opacity:0!important;transition:opacity .34s ease!important}
.svc--cards .svc__item[open]:not(.is-closing)::after{opacity:.62!important}
.svc--cards .svc__item--bmu[open]:not(.is-closing)::after,.svc--cards .svc__item--park[open]:not(.is-closing)::after{opacity:.8!important}
@media (max-width:760px){.svc--cards .svc__item{padding-top:22px}.svc--cards .svc__item[open]:not(.is-closing){padding-top:calc(51.25% + 22px)}}
/* ===== services v2: graphite cards ===== */
.svc--cards{align-items:stretch;grid-template-columns:repeat(4,minmax(0,1fr));transition:grid-template-columns .55s cubic-bezier(.2,.7,.2,1)}
@media (min-width:1101px){
.svc--cards:has(>.svc__item:nth-child(1)[open]:not(.is-closing)){grid-template-columns:2fr 1fr 1fr 1fr}
.svc--cards:has(>.svc__item:nth-child(2)[open]:not(.is-closing)){grid-template-columns:1fr 2fr 1fr 1fr}
.svc--cards:has(>.svc__item:nth-child(3)[open]:not(.is-closing)){grid-template-columns:1fr 1fr 2fr 1fr}
.svc--cards:has(>.svc__item:nth-child(4)[open]:not(.is-closing)){grid-template-columns:1fr 1fr 1fr 2fr}}
.svc--cards .svc__item,.svc--cards .svc__item[open]:not(.is-closing){background:#1F2328;border:0;border-radius:4px;color:#E9ECEE;min-height:clamp(260px,22vw,320px);padding:30px 30px 32px!important;display:flex;flex-direction:column;box-shadow:0 1px 0 rgba(255,255,255,.04) inset;transition:transform .45s cubic-bezier(.2,.7,.2,1),box-shadow .45s,opacity .45s,filter .45s}
.svc--cards .svc__item::after{inset:0!important;aspect-ratio:auto!important;height:auto!important;width:auto!important;background-size:cover!important;background-position:center!important;border:0!important;opacity:.13!important;filter:saturate(.5);transform:scale(1.06);transition:opacity .6s ease,transform 1.2s cubic-bezier(.2,.7,.2,1),filter .6s!important}
.svc--cards .svc__item--bmu::after,.svc--cards .svc__item--park::after{background-size:120% auto!important;filter:invert(1) brightness(1.4)}
.svc--cards .svc__item::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(31,35,40,.15) 0%,rgba(31,35,40,.55) 45%,rgba(31,35,40,.96) 100%);pointer-events:none}
.svc--cards .svc__item:hover{transform:translateY(-4px);box-shadow:0 18px 40px -22px rgba(15,18,22,.55)}
.svc--cards .svc__item:hover::after{opacity:.24!important;transform:scale(1.02)}
.svc--cards .svc__item[open]:not(.is-closing)::after{opacity:.42!important;filter:saturate(.75);transform:scale(1)}
.svc--cards .svc__item--bmu[open]:not(.is-closing)::after,.svc--cards .svc__item--park[open]:not(.is-closing)::after{opacity:.32!important;filter:invert(1) brightness(1.4)}
.svc--cards:has(.svc__item[open]:not(.is-closing)) .svc__item:not([open]){opacity:.55;filter:saturate(.6)}
.svc--cards:has(.svc__item[open]:not(.is-closing)) .svc__item:not([open]):hover{opacity:.9}
.svc--cards .svc__item summary{display:flex;flex-direction:column;flex:1;position:relative;outline:none}
.svc--cards .svc__item summary:focus-visible{outline:1px solid #9FB3C2;outline-offset:10px}
.svc--cards .svc__n{display:flex;align-items:center;gap:14px;font:500 11px/1 var(--f-m);letter-spacing:.24em;color:rgba(233,236,238,.62);margin-bottom:auto;padding-bottom:40px;padding-top:13px}
.svc--cards .svc__n::after{content:"";display:block;width:28px;height:1px;background:currentColor;opacity:.55;transition:width .5s cubic-bezier(.2,.7,.2,1),background .3s,opacity .3s}
.svc--cards .svc__item:hover .svc__n::after{width:44px;opacity:.8}
.svc--cards .svc__item[open]:not(.is-closing) .svc__n{color:#F4F6F7}
.svc--cards .svc__item[open]:not(.is-closing) .svc__n::after{width:56px;background:#E8470F;opacity:1}
.svc--cards .svc__t{font-size:clamp(22px,1.9vw,30px)!important;line-height:1.08;letter-spacing:-.02em;font-weight:600;color:#F4F6F7;min-height:0!important;padding-right:52px;position:relative;display:inline-block;align-self:flex-start}
.svc--cards .svc__t::after{content:"";position:absolute;left:0;bottom:-10px;height:1px;width:calc(100% - 52px);background:#9FB3C2;transform:scaleX(0);transform-origin:left;transition:transform .5s cubic-bezier(.2,.7,.2,1)}
.svc--cards .svc__item:hover .svc__t::after,.svc--cards .svc__item[open] .svc__t::after{transform:scaleX(1)}
.svc--cards .svc__item summary:hover .svc__t{color:#fff}
.svc--cards .svc__i{display:block!important;position:absolute!important;right:0;top:0;left:auto;width:38px;height:38px;border:1px solid rgba(159,179,194,.55);border-radius:50%;transition:transform .5s cubic-bezier(.2,.7,.2,1),background .3s,border-color .3s}
.svc--cards .svc__i::before,.svc--cards .svc__i::after{content:"";position:absolute;left:50%;top:50%;width:12px;height:1px;background:#E9ECEE;margin:0 0 0 -6px;transform:none;border:0}
.svc--cards .svc__i::after{transform:rotate(90deg)}
.svc--cards .svc__item:hover .svc__i{border-color:#C9D6DF;background:rgba(255,255,255,.04)}
.svc--cards .svc__item[open]:not(.is-closing) .svc__i{transform:rotate(135deg);border-color:#C9D6DF}
.svc--cards .svc__s{color:#B9C3CA!important;font-size:16px!important;max-width:34em}
.svc--cards .svc__b{border-top:1px solid rgba(255,255,255,.12)!important;max-width:36em}
.svc--cards .svc__b li{color:#D5DBDF;font-size:15px!important}
.svc--cards .svc__b li::before{background:#9FB3C2!important}
.svc--cards .svc__b li{opacity:0;transform:translateY(8px);transition:opacity .45s,transform .45s cubic-bezier(.2,.7,.2,1)}
.svc--cards .svc__item[open]:not(.is-closing) .svc__b li{opacity:1;transform:none}
.svc--cards .svc__item[open] .svc__b li:nth-child(1){transition-delay:.15s}
.svc--cards .svc__item[open] .svc__b li:nth-child(2){transition-delay:.25s}
.svc--cards .svc__item[open] .svc__b li:nth-child(3){transition-delay:.35s}
@media (max-width:760px){.svc--cards .svc__item,.svc--cards .svc__item[open]:not(.is-closing){min-height:240px;padding:24px 22px 26px!important}.svc--cards:has(.svc__item[open]:not(.is-closing)) .svc__item:not([open]){opacity:.7}}
@media (prefers-reduced-motion:reduce){.svc--cards,.svc--cards .svc__item,.svc--cards .svc__item::after,.svc--cards .svc__i,.svc--cards .svc__t::after,.svc--cards .svc__b li{transition:none!important}.svc--cards .svc__item:hover{transform:none}}
.svc--cards:has(.svc__item[open]:not(.is-closing)) .svc__item:not([open]){opacity:1!important;filter:brightness(.62) saturate(.7)!important}
.svc--cards:has(.svc__item[open]:not(.is-closing)) .svc__item:not([open]):hover{filter:none!important}
.svc--cards .svc__i::before,.svc--cards .svc__i::after{opacity:1!important}
.svc--cards .svc__t{padding-right:0!important;hyphens:manual}
.svc--cards .svc__t::after{width:100%}
.svc--cards .svc__item[open]:not(.is-closing) .svc__i::after{transform:rotate(90deg)}
.svc--cards .svc__i::before{transform:none!important}.svc--cards .svc__i::after{transform:rotate(90deg)!important}
.svc--cards .svc__item[open]::before{background:linear-gradient(180deg,rgba(24,27,31,.35) 0%,rgba(24,27,31,.72) 40%,rgba(24,27,31,.94) 100%)}
.svc--cards .svc__item[open]:not(.is-closing)::after{opacity:.3!important}
/* v2.1: ::after (image) painted above ::before (gradient) at equal z-index; push image beneath */
.svc--cards .svc__item::after{z-index:-2!important;border-radius:inherit}
.svc--cards .svc__item,.svc--cards .svc__item[open]:not(.is-closing){border-radius:16px;overflow:hidden}
.svc--cards .svc__item::before{border-radius:inherit}
.svc--cards .svc__item[open]::before{background:linear-gradient(180deg,rgba(20,22,26,.25) 0%,rgba(20,22,26,.45) 30%,rgba(20,22,26,.88) 45%,rgba(20,22,26,.92) 100%)}
.svc--cards .svc__item[open]:not(.is-closing)::after{opacity:.5!important}
@media (max-width:760px){.svc--cards .svc__item,.svc--cards .svc__item[open]:not(.is-closing){border-radius:14px}}
.svc--cards .svc__item[open]::before{background:linear-gradient(180deg,rgba(20,22,26,.05) 0%,rgba(20,22,26,.25) 30%,rgba(20,22,26,.86) 45%,rgba(20,22,26,.92) 100%)}.svc--cards .svc__item[open]:not(.is-closing)::after{opacity:.65!important}
/* service cards v4: graded matched set */
.svc--cards .svc__item::after{background-size:cover!important;background-repeat:no-repeat!important;filter:none!important;opacity:.34!important;transform:scale(1.06);transition:opacity .6s ease,transform 2.4s cubic-bezier(.2,.6,.3,1),filter .6s ease!important}
.svc--cards .svc__item--post::after{background-image:url(img/svc-v4-post.webp)!important;background-position:46% 60%!important}
.svc--cards .svc__item--comm::after{background-image:url(img/svc-v4-comm.webp)!important;background-position:62% 45%!important}
.svc--cards .svc__item--bmu::after{background-image:url(img/svc-v4-bmu.webp)!important;background-position:30% 55%!important}
.svc--cards .svc__item--park::after{background-image:url(img/svc-v4-park.webp)!important;background-position:50% 55%!important}
.svc--cards .svc__item:hover::after{opacity:.46!important;filter:brightness(1.12)!important}
.svc--cards .svc__item[open]:not(.is-closing)::after,.svc--cards .svc__item--bmu[open]:not(.is-closing)::after,.svc--cards .svc__item--park[open]:not(.is-closing)::after{opacity:.82!important;filter:none!important;transform:scale(1);background-size:100% auto!important;background-position:center top!important}
@media (prefers-reduced-motion:reduce){.svc--cards .svc__item::after,.svc--cards .svc__item[open]:not(.is-closing)::after{transform:none!important;transition:opacity .3s ease!important}}
/* services bg sample B: 1500, right side */
#services{position:relative;z-index:2;isolation:isolate;background:var(--day);overflow:hidden}
#services::before{content:"";position:absolute;z-index:-1;pointer-events:none;right:max(-80px,calc((100vw - var(--max))/2 - 160px));top:0;bottom:0;width:min(640px,48vw);background:url(img/svc-bg-1500.webp) no-repeat right center/contain;opacity:.15}
@media (max-width:760px){#services::before{right:-60px;width:85vw;opacity:.1}}
/* contact: dusk tower, ghosted, centred on the section */
#contact::after{content:"";position:absolute;z-index:0;pointer-events:none;left:50%;top:50%;transform:translate(-50%,-50%);height:108%;aspect-ratio:1013/1400;background:url(img/ct-bg-dusk.webp) no-repeat center/contain;opacity:.11;mix-blend-mode:screen;-webkit-mask-image:radial-gradient(ellipse 50% 50% at 50% 45%,#000 40%,transparent 100%);mask-image:radial-gradient(ellipse 50% 50% at 50% 45%,#000 40%,transparent 100%)}
@media (max-width:760px){#contact::after{height:auto;width:110vw;max-height:100%;opacity:.09}}
/* delivered X: hover-reveal gallery */
.gal--past li::before{display:none}
.gal--past .gal__btn picture{overflow:hidden}
.gal--past .gal__btn img{transition:transform 1.4s cubic-bezier(.2,.6,.2,1)}
.gal--past .gal__btn:hover img,.gal--past .gal__btn:focus-visible img{transform:scale(1.04)}
.gal--past .gal__btn picture::after{opacity:1!important;background:linear-gradient(to top,rgba(20,23,27,.86) 0%,rgba(20,23,27,.45) 32%,rgba(20,23,27,0) 62%);transform:translateY(22%);transition:transform .8s cubic-bezier(.2,.7,.2,1),opacity .6s}
.gal--past .gal__btn:hover picture::after,.gal--past .gal__btn:focus-visible picture::after{transform:none}
.gal--past .gal__cap{flex-direction:column;align-items:flex-start;gap:10px;transform:translateY(10px);transition:transform .7s cubic-bezier(.2,.7,.2,1)}
.gal--past .gal__cap::before{content:"Delivered";font:500 10px/1 var(--f-m);letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.78);opacity:0;transform:translateY(6px);transition:opacity .5s .08s,transform .6s .08s cubic-bezier(.2,.7,.2,1)}
html[lang=fr] .gal--past .gal__cap::before{content:"Livré"}
.gal--past .gal__cap b{position:relative;padding-bottom:10px}
.gal--past .gal__cap b::after{content:"";position:absolute;left:0;bottom:0;height:1px;width:40px;background:#E8470F;transform:scaleX(0);transform-origin:left;transition:transform .6s .12s cubic-bezier(.2,.7,.2,1)}
.gal--past .gal__btn:hover .gal__cap,.gal--past .gal__btn:focus-visible .gal__cap{transform:none}
.gal--past .gal__btn:hover .gal__cap::before,.gal--past .gal__btn:focus-visible .gal__cap::before{opacity:1;transform:none}
.gal--past .gal__btn:hover .gal__cap b::after,.gal--past .gal__btn:focus-visible .gal__cap b::after{transform:scaleX(1)}
@media (hover:none) and (pointer:coarse){.gal--past .gal__cap,.gal--past .gal__cap::before,.gal--past .gal__btn picture::after{transform:none;opacity:1}.gal--past .gal__cap b::after{transform:scaleX(1)}}
@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){
.gal--past li{animation:gal-in linear both;animation-timeline:view();animation-range:entry 5% entry 75%}
@keyframes gal-in{from{opacity:0;transform:translateY(36px) scale(.985)}to{opacity:1;transform:none}}}}
@media (prefers-reduced-motion:reduce){.gal--past .gal__btn img,.gal--past .gal__cap,.gal--past .gal__btn picture::after{transition:none}}
/* delivered: hide background grid lines (same approach as hero) */
#work{position:relative;z-index:2;background:var(--day)}
/* ongoing: mobile swipe row, perfectly aligned */
@media (max-width:760px){
.gal--ongoing{align-items:flex-start;scroll-padding-inline:var(--pad);-webkit-overflow-scrolling:touch}
.gal--ongoing li,.js .gal--ongoing li.rv,.js .gal--ongoing li.rv.in{flex:0 0 78%;margin:0!important;opacity:1!important;transform:none!important;transition:none!important}
.gal--ongoing li img,.gal--ongoing li:first-child img{aspect-ratio:4/5}
.gal--ongoing .gal__cap{flex-direction:column;align-items:flex-start;flex-wrap:nowrap;gap:6px}
.gal--ongoing .gal__cap b{order:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.gal--ongoing .gal__cap .live{order:2}
.gal--ongoing .gal__cap .due{order:3;flex-basis:auto}
}
/* at height: outlook above the art, ticker below the band (swapped) */
.band .wh{margin:0 0 clamp(28px,4vw,48px)}
/* swing-stage rotation in the At height band */
.sw{position:relative;aspect-ratio:2600/996;overflow:hidden}
.sw__s{position:absolute;inset:0;display:block;opacity:0;transition:opacity 1.4s ease}
.sw__s img{width:100%;height:100%;object-fit:contain;display:block}
.sw__s.is-on{opacity:1;z-index:2}
.sw--on .sw__s img{transform:scale(1.035);filter:blur(1.5px);transition:transform 6.5s cubic-bezier(.2,.6,.3,1),filter 1.6s ease}
.sw--on .sw__s.is-on img{transform:scale(1);filter:none}
.sw--on .sw__s.is-on:not(:first-child){-webkit-mask-image:linear-gradient(90deg,#000 45%,transparent 55%);mask-image:linear-gradient(90deg,#000 45%,transparent 55%);-webkit-mask-size:220% 100%;mask-size:220% 100%;animation:sw-draw 2.4s cubic-bezier(.5,0,.2,1) both}
.sw--on .sw__s.is-off{opacity:0;z-index:1}
@keyframes sw-draw{from{-webkit-mask-position:100% 0;mask-position:100% 0}to{-webkit-mask-position:0 0;mask-position:0 0}}
.sw__scan{position:absolute;top:6%;bottom:6%;left:0;width:1px;background:linear-gradient(#E8470F00,#E8470F 30%,#E8470F 70%,#E8470F00);opacity:0;z-index:3;pointer-events:none}
.sw--scan .sw__scan{animation:sw-scan 2.4s cubic-bezier(.5,0,.2,1) both}
@keyframes sw-scan{0%{left:0;opacity:0}12%{opacity:.7}85%{opacity:.5}100%{left:100%;opacity:0}}
.band__cap{align-items:center}
.sw__cap{transition:opacity .35s ease}.sw__cap--x{opacity:0}
.sw__r{display:flex;align-items:center;gap:18px}
.sw__ticks{display:flex;gap:6px}
.sw__ticks i{position:relative;width:22px;height:2px;background:rgba(247,248,246,.16);overflow:hidden}
.sw__ticks i::after{content:"";position:absolute;inset:0;background:#E8470F;transform:scaleX(0);transform-origin:left}
.sw__ticks i.d::after{transform:scaleX(1);background:rgba(247,248,246,.5)}
.sw__ticks i.a::after{animation:sw-tick 6s linear forwards}
@keyframes sw-tick{to{transform:scaleX(1)}}
@media (max-width:760px){.band__cap span.sw__r{display:flex}.sw__ref{display:none}.sw__ticks i{width:16px}}
@media (prefers-reduced-motion:reduce){.sw__s:not(:first-child),.sw__ticks{display:none}}
/* tighter At height band (~30%) */
.band{padding:clamp(44px,5.5vw,78px) 0}
.band .eyebrow{margin-bottom:16px}
.band .wh{margin:0 0 clamp(18px,2.6vw,32px)}
.band .wh__h{margin-bottom:10px}
.band__art{margin-top:clamp(16px,2vw,28px)}
.band__cap{margin-top:14px;padding-top:12px}
/* At height drawings: solid white lines, no blending */
.band__art.sw img,.sw__s img{mix-blend-mode:normal;opacity:1;filter:none}
/* services: same orange caption line as Delivered */
.svc--cards .svc__t::after{width:40px!important;height:1px;background:#E8470F;transition:transform .6s .12s cubic-bezier(.2,.7,.2,1)}
@media (hover:none) and (pointer:coarse){.svc--cards .svc__t::after{transform:scaleX(1)}}
@media (prefers-reduced-motion:reduce){.svc--cards .svc__t::after{transition:none!important}}
.svc--cards .svc__item[open]:not(.is-closing) .svc__n::after{background:currentColor!important;opacity:.8!important}
/* At height rotation: 4s per slide */
.sw__s{transition:opacity 1s ease}
.sw--on .sw__s img{transition:transform 4.4s cubic-bezier(.2,.6,.3,1),filter 1.1s ease}
.sw--on .sw__s.is-on:not(:first-child){animation-duration:1.6s}
.sw--scan .sw__scan{animation-duration:1.6s}
.sw__ticks i.a::after{animation-duration:4s}
/* At height rotation: manual controls */
.sw{touch-action:pan-y}
.sw:focus-visible{outline:1px solid rgba(232,71,15,.6);outline-offset:4px}
.sw__tk{appearance:none;-webkit-appearance:none;background:none;border:0;margin:0;padding:10px 0;cursor:pointer;display:flex;align-items:center}
.sw__tk:hover i{background:rgba(247,248,246,.34)}
.sw__tk:focus-visible{outline:1px solid #E8470F;outline-offset:3px}
.sw__ticks i.p::after{animation:none;transform:scaleX(1)}
.sw__nav{position:absolute;top:50%;z-index:4;transform:translateY(-50%);width:44px;height:64px;display:grid;place-items:center;padding:0;background:none;border:0;color:rgba(247,248,246,.62);cursor:pointer;opacity:0;transition:opacity .3s ease,color .2s ease}
.sw__nav--p{left:0}.sw__nav--n{right:0}
.sw:hover .sw__nav,.sw:focus-within .sw__nav{opacity:1}
.sw__nav:hover,.sw__nav:focus-visible{color:#fff}
.sw__nav:focus-visible{outline:1px solid #E8470F;outline-offset:-6px}
@media (hover:none) and (pointer:coarse){.sw__nav{opacity:.6}}
