/* Shared visual system: home, case studies and mobile navigation. */
:root{color-scheme:light;--paper:#f6f4ef;--ink:#202322;--muted:#686b66;--line:#d6d6cc;--sand:#e5e4db;--accent:#75826b;--header-height:88px}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:112px}body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,Helvetica,sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,select{font:inherit}button,summary,select{cursor:pointer}button{color:inherit}img{display:block;max-width:100%;height:auto}h1,h2,h3,h4,p,figure{margin:0}a,button{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,select:focus-visible{outline:3px solid #89956d;outline-offset:5px}[hidden]{display:none!important}.wrap{width:min(1280px,calc(100% - 96px));margin-inline:auto}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.skip{position:fixed;top:12px;left:12px;background:white;color:black;padding:16px;z-index:150;transform:translateY(-160%)}.skip:focus{transform:none}.muted{color:#797c72}.eyebrow{font-size:11px;letter-spacing:2px;text-transform:uppercase;display:flex;align-items:center;gap:20px;line-height:1.6}.eyebrow>span{width:38px;height:1px;background:currentColor;opacity:.5}h2{font-size:clamp(32px,3.5vw,49px);line-height:1.13;letter-spacing:-1.8px;font-weight:600}h3{font-size:21px;letter-spacing:-.5px}.section{padding:90px 0;border-bottom:1px solid var(--line)}.section-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:40px;margin-bottom:40px}.section-heading .eyebrow{margin-bottom:18px;color:var(--muted)}.section-intro{max-width:340px;color:var(--muted);font-size:15px;line-height:1.8}.button{display:inline-flex;align-items:center;justify-content:center;gap:24px;min-height:52px;padding:15px 24px;border:1px solid transparent;border-radius:4px;font-size:14px;line-height:1.4;transition:background .2s,transform .2s}.button:hover{transform:translateY(-3px)}.light{background:#efeee5;color:#1b211d}.light:hover{background:white}.dark{background:#262e29;color:white}.dark:hover{background:#424d42}.text-link{padding:15px 0;border-bottom:1px solid #ffffff80;font-size:14px}.inline-link{display:inline-flex;gap:8px;min-height:44px;align-items:center;font-size:13px;text-decoration:underline;text-underline-offset:5px}
.header{position:fixed;inset:0 0 auto;z-index:50;color:white;transition:background .25s,color .25s,box-shadow .25s}.header-inner{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:var(--header-height);border-bottom:1px solid #ffffff35}.wordmark{font-size:27px;letter-spacing:3px;font-weight:800;flex-shrink:0}.wordmark>span{color:#c7d2bc}.header nav{display:flex;align-items:center;gap:30px;font-size:13px}.header nav a{padding:15px 0;transition:opacity .2s}.header nav a:hover{opacity:.6}.header .nav-contact{border:1px solid #ffffff70;border-radius:4px;padding:12px 18px}.nav-contact span{margin-left:20px}.header.scrolled,.project-page .header{background:#f6f4eff5;backdrop-filter:blur(16px);color:var(--ink);box-shadow:0 1px 0 var(--line)}.header.scrolled .header-inner,.project-page .header-inner{border-color:transparent}.header.scrolled .nav-contact,.project-page .nav-contact{border-color:#bfc1b7}.header.scrolled .wordmark>span,.project-page .wordmark>span{color:#75826b}.menu-toggle{display:none;align-items:center;gap:14px;min-height:46px;padding:10px 13px;border:1px solid #ffffff65;border-radius:4px;background:transparent;color:inherit}.scrolled .menu-toggle,.project-page .menu-toggle{border-color:var(--line)}.menu-icon{width:19px;height:10px;border-block:1px solid currentColor}.mobile-dialog{position:fixed;inset:0;margin:0 0 0 auto;height:100dvh;max-height:100dvh;width:min(440px,100%);max-width:100%;padding:28px;background:var(--paper);color:var(--ink);border:0;overflow-y:auto;overscroll-behavior:contain}.mobile-dialog::backdrop{background:#101a21a6;backdrop-filter:blur(5px)}.mobile-dialog[open]{display:flex;flex-direction:column;animation:menu-in .25s ease-out}.dialog-top{display:flex;justify-content:space-between;align-items:center;padding-bottom:30px;border-bottom:1px solid var(--line)}.menu-close{border:1px solid var(--line);background:transparent;border-radius:50%;width:46px;height:46px;font-size:25px;flex-shrink:0}.mobile-dialog nav{display:flex;flex-direction:column;margin:25px 0}.mobile-dialog nav a{display:flex;justify-content:space-between;align-items:center;padding:20px 0;min-height:64px;font-size:29px;letter-spacing:-1px;border-bottom:1px solid var(--line)}.mobile-dialog nav a::after{content:'↗';font-size:24px;color:#7a8370}.mobile-dialog nav a span{display:none}.dialog-bottom{margin-top:auto;padding-top:28px;display:flex;flex-direction:column;gap:16px}.dialog-bottom a{font-size:14px;min-height:36px}.dialog-bottom .eyebrow{color:var(--muted)}body.menu-open{overflow:hidden}
.hero{min-height:760px;min-height:min(900px,100svh);background:linear-gradient(90deg,#0b182baa,#16243533),url('../content/images/slider.jpeg') center/cover no-repeat;color:white;padding-top:var(--header-height)}.hero-content{position:relative;min-height:650px;min-height:calc(min(900px,100svh) - var(--header-height));display:grid;grid-template-columns:1fr 210px;gap:70px;align-items:center;padding-block:70px 100px}.hero-copy{max-width:800px}.hero h1{font-size:clamp(64px,7.4vw,108px);line-height:.98;letter-spacing:-5px;font-weight:600;margin:28px 0}.hero h1 em{font-style:normal;color:#d6ddce}.intro{font-size:17px;line-height:1.7;color:#e9eae6;max-width:560px}.hero-actions{display:flex;align-items:center;flex-wrap:wrap;gap:28px;margin-top:30px}.portrait{align-self:end;margin:0 0 30px;max-width:160px;justify-self:end}.portrait img{width:116px;height:116px;border-radius:50%;object-fit:cover;border:3px solid #ffffff38;filter:saturate(.45)}.portrait figcaption{position:static;margin-top:17px;font-size:12px;line-height:1.7}.portrait strong{display:block;font-size:13px;font-weight:500;letter-spacing:1px}.portrait figcaption span{display:block;color:#dce0df;margin-top:5px}.scroll-cue{position:absolute;bottom:28px;left:0;display:flex;align-items:center;gap:14px;text-transform:uppercase;letter-spacing:2px;font-size:10px;color:#e0e4df}.scroll-cue>span{width:32px;height:42px;border:1px solid #ffffff55;border-radius:20px;display:grid;place-items:center;font-size:18px}.expertise{display:flex;justify-content:space-between;gap:24px;padding:30px 0;border-bottom:1px solid var(--line);font-size:10px;letter-spacing:2px;text-transform:uppercase}.expertise span+span::before{content:'+';margin-right:34px;color:#8c9483}
.journey-columns{display:grid;grid-template-columns:1.15fr 1fr;gap:80px}.column-title{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:20px;font-size:16px;letter-spacing:0}.column-title>span{font-size:12px;color:#8b8e84}.timeline{list-style:none;margin:30px 0 0;padding:0 0 0 22px;border-left:1px solid #c9cec0}.timeline li{position:relative;padding:0 0 36px 10px}.timeline li:last-child{padding-bottom:4px}.timeline li::before{content:'';position:absolute;left:-28px;top:5px;width:10px;height:10px;border-radius:50%;background:#818e74;box-shadow:0 0 0 5px var(--paper)}.timeline-date{display:flex;flex-wrap:wrap;gap:12px;align-items:center;text-transform:uppercase;letter-spacing:1px;font-size:10px!important;color:var(--muted);margin-bottom:12px}.timeline-date>span{padding:3px 9px;border:1px solid #cbd3c3;border-radius:20px;color:#58654c;font-size:9px}.timeline h4{font-size:24px;letter-spacing:-.6px;font-weight:500;margin-bottom:8px}.timeline p{font-size:14px;line-height:1.8;color:var(--muted)}.timeline .timeline-place{color:var(--ink);margin-bottom:5px}.tags{display:flex;gap:7px;flex-wrap:wrap;margin-top:14px}.tags span{padding:6px 10px;background:#eaece3;color:#62695c;border-radius:3px;font-size:10px}.cv-card{display:flex;align-items:center;justify-content:space-between;background:#e9ebe3;border:1px solid #dce0d3;padding:25px;margin-top:40px;border-radius:5px}.cv-card span{font-size:12px;color:var(--muted)}.cv-card strong{display:block;color:var(--ink);font-size:18px;font-weight:500;margin-top:8px}.cv-card>span:last-child{font-size:30px}.skills-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:30px}.skills-grid article{border-top:1px solid var(--line);padding-top:22px}.skill-number{font-size:12px;color:#868e7c;display:block;margin-bottom:28px}.skills-grid h3{font-size:19px;margin-bottom:15px}.skills-grid p{font-size:14px;line-height:1.8;color:var(--muted)}
.filters{display:flex;flex-wrap:wrap;gap:4px}.filters button{min-height:44px;border:1px solid transparent;background:transparent;padding:10px 16px;border-radius:25px;font-size:12px;transition:background .2s}.filters button:hover{background:#e8e9df}.filters button[aria-pressed=true]{background:#e1e5d9;border-color:#cdd3c2}.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:36px 24px}.project-card{min-width:0}.project-card>a{display:block}.project-image{position:relative;background:#e7e5df;aspect-ratio:1.22;overflow:hidden;border-radius:5px}.project-image img{width:100%;height:100%;object-fit:contain;transition:transform .6s cubic-bezier(.2,.65,.3,1)}.project-index{position:absolute;top:15px;left:15px;z-index:1;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#f6f4efdd;font-size:10px}.project-card a:hover img{transform:scale(1.04)}.project-caption{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:20px 0;border-bottom:1px solid var(--line)}.project-caption p{font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--muted);margin-bottom:8px}.project-caption h3{font-size:20px;font-weight:500;line-height:1.25}.card-arrow{display:grid;place-items:center;flex-shrink:0;width:35px;height:35px;border:1px solid var(--line);border-radius:50%;font-size:20px;transition:background .2s,transform .2s}.project-card a:hover .card-arrow{background:#dce1d2;transform:rotate(45deg)}
.contact{position:relative;display:flex;justify-content:space-between;align-items:center;gap:40px;background:#29332c;color:#f5f5ec;padding:55px 60px;border-radius:5px;margin:70px 0 30px;overflow:hidden}.contact::before{content:'';position:absolute;width:340px;height:340px;border:1px solid #ffffff0c;border-radius:50%;left:22%;top:-100px;pointer-events:none}.contact .eyebrow{font-size:9px;color:#c2cbb9;margin-bottom:14px}.contact h2{font-size:clamp(32px,4vw,52px)}.contact-links{display:flex;flex-direction:column;gap:8px;margin-top:18px;font-size:12px;color:#d4dacd}.contact-links a{min-height:24px;display:flex;align-items:center}.contact-links a:hover{text-decoration:underline}footer{display:flex;align-items:center;justify-content:space-between;gap:25px;padding:18px 0 35px;font-size:12px}footer small{display:block;font-size:10px;color:var(--muted);margin-top:8px}footer>div{display:flex;gap:35px}footer a{display:inline-block;padding:12px 0}.footer-name{letter-spacing:1px}
/* Case studies */
.project-intro{padding:145px 0 45px}.back-link{display:inline-flex;align-items:center;min-height:44px;color:var(--muted);font-size:12px;margin-bottom:38px}.project-intro .eyebrow{color:#727d65}.project-intro h1{font-size:clamp(44px,6.5vw,88px);line-height:1.04;letter-spacing:-3px;max-width:1000px;font-weight:500;margin:22px 0}.project-lead{font-size:20px;line-height:1.7;color:var(--muted);max-width:760px;text-wrap:pretty}.project-meta{display:grid;grid-template-columns:1fr 1fr 1.5fr;gap:30px;margin-top:45px;border-top:1px solid var(--line);padding-top:25px}.project-meta span{display:block;text-transform:uppercase;font-size:10px;letter-spacing:1.5px;color:var(--muted);margin-bottom:9px}.project-meta strong{font-size:13px;font-weight:500;line-height:1.6}.project-cover{position:relative;display:block;background:#e8e6e0;border-radius:6px;overflow:hidden}.project-cover img{width:100%;height:min(650px,65vw);object-fit:contain}.project-cover>span{position:absolute;bottom:18px;right:18px;padding:10px 15px;background:#f6f4efe8;border-radius:3px;font-size:11px}.interactive-section{margin:70px 0}.interactive-section>.eyebrow{margin-bottom:15px}.model-stage{position:relative;border:1px solid var(--line);border-radius:6px;overflow:hidden;min-height:450px;background:#e8e6e0}.model-poster{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:.3}.model-launch{position:relative;z-index:1;min-height:450px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:30px;text-align:center}.model-launch>p{font-size:12px;color:#444b42}.model-launch .inline-link{font-size:12px}.model-stage model-viewer{display:block;width:100%;height:550px;background:#e8e6e0;touch-action:pan-y}.model-error{padding:24px;color:#363e34;line-height:1.7}.model-toolbar{display:flex;gap:15px;align-items:center;flex-wrap:wrap;padding:15px;border-top:1px solid var(--line);background:var(--paper)}.model-toolbar p{font-size:12px;color:var(--muted)}.model-toolbar button{background:transparent;border:1px solid var(--line);border-radius:4px;padding:12px;font-size:12px;min-height:44px}.case-layout{display:grid;grid-template-columns:260px minmax(0,1fr);gap:90px;margin:80px 0}.case-sidebar{align-self:start;position:sticky;top:125px}.case-sidebar>.eyebrow{margin-bottom:20px;color:var(--muted)}.case-sidebar nav{display:flex;flex-direction:column;margin-bottom:25px}.case-sidebar nav a{display:flex;gap:13px;padding:14px 0;border-bottom:1px solid var(--line);font-size:12px;line-height:1.6}.case-sidebar nav a>span{color:#818e74}.case-article{max-width:760px}.case-article h2{font-size:30px;letter-spacing:-.8px;margin:42px 0 22px;line-height:1.3}.case-article h2:first-child{margin-top:0}.case-article p,.case-article li{font-size:16px;line-height:1.9;color:var(--muted);margin-bottom:20px}.case-article ul{padding-left:22px}.case-article strong{font-weight:600;color:var(--ink)}.case-article img{width:100%;border-radius:5px;margin-block:30px}.reference-link{margin-top:30px;padding:25px;background:#e9ece2}.reference-link>a{display:inline-block;margin-top:12px;font-size:14px;text-decoration:underline;text-underline-offset:5px}.next-project{display:flex;justify-content:space-between;align-items:center;gap:25px;padding:35px 0;border-block:1px solid var(--line)}.next-project .eyebrow{color:var(--muted);margin-bottom:12px}.next-project h2{font-size:32px}.next-project>span{font-size:48px;color:#78856d;transition:transform .25s}.next-project:hover>span{transform:translate(4px,-4px)}.empty-project{min-height:85svh}.empty-project .button{margin-top:25px}.map-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(240px,1fr);gap:25px;margin-top:30px;align-items:start}.tree-map{position:relative;background:#e7e5df;border-radius:5px;overflow:hidden}.tree-map>img{width:100%;height:auto}.map-marker{position:absolute;transform:translate(-50%,-50%);width:28px;height:28px;border:1px solid #fff;background:#263d2eea;color:white;box-shadow:0 2px 8px #0002;border-radius:50%;padding:0;font-size:10px;z-index:1}.map-marker[aria-pressed=true]{background:#a9512b;z-index:3;box-shadow:0 0 0 5px #a9512b33}.map-info{padding:25px;background:#e9ece3;border-radius:5px}.map-info label{display:block;font-size:12px;margin-bottom:12px}.map-info select{max-width:100%;width:100%;padding:12px 8px;background:var(--paper);border:1px solid #c5cebd;border-radius:3px;font-size:13px;min-height:44px}.map-info p{font-size:13px;line-height:1.8;color:var(--muted);margin-top:15px}#plant-details{margin-top:25px}#plant-details h3{font-size:20px}#plant-details p{font-style:italic}
/* Progressive motion: content stays visible without JavaScript. */
.reveal.motion-ready{opacity:0;transform:translateY(24px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.65,.3,1)}.reveal.motion-ready.is-visible{opacity:1;transform:none}@keyframes menu-in{from{transform:translateX(30px);opacity:0}to{transform:none;opacity:1}}
@media(min-width:1500px){.hero-content{grid-template-columns:1fr 240px}.portrait{max-width:180px}.portrait img{width:130px;height:130px}}
@media(max-width:1100px){.wrap{width:calc(100% - 64px)}.hero-content{gap:35px;grid-template-columns:1fr 150px}.hero h1{letter-spacing:-3.5px}.section-heading{gap:25px}.section-intro{max-width:280px}.journey-columns{gap:45px}.skills-grid{gap:22px}.project-grid{gap:28px 18px}.section-heading:has(.filters){align-items:flex-start;flex-direction:column}.case-layout{grid-template-columns:210px minmax(0,1fr);gap:40px}.contact{padding:40px}.expertise{letter-spacing:1px}.expertise span+span::before{margin-right:20px}.header nav{gap:20px}.project-meta{gap:20px}}
@media(max-width:800px){:root{--header-height:74px}html{scroll-padding-top:94px}.wrap{width:calc(100% - 40px)}.header-inner{min-height:74px;gap:16px}.header.enhanced #navigation{display:none}.header.enhanced .menu-toggle{display:flex}.wordmark{font-size:24px}.header:not(.enhanced){position:relative;background:#29352c}.header:not(.enhanced) .header-inner{flex-wrap:wrap;padding-block:15px}.header:not(.enhanced) nav{flex-wrap:wrap;gap:10px 18px}.project-page .header:not(.enhanced){background:var(--paper)}.hero{min-height:0;background-position:62% center}.hero-content{grid-template-columns:1fr;min-height:0;padding-block:65px 90px;gap:35px}.hero h1{font-size:clamp(58px,10vw,83px);letter-spacing:-3px;margin-block:25px}.intro{font-size:16px}.hero-actions{gap:20px;margin-top:25px}.portrait{display:flex;align-items:center;gap:16px;width:auto;max-width:none;justify-self:start;margin:0}.portrait img{width:65px;height:65px;border-width:2px}.portrait figcaption{margin:0;font-size:10px;line-height:1.5}.portrait strong{font-size:11px}.portrait figcaption span{margin-top:2px}.scroll-cue{bottom:22px}.scroll-cue>span{height:32px;width:25px}.expertise{display:grid;grid-template-columns:1fr 1fr;text-align:center;gap:18px;padding:26px 0;font-size:9px;letter-spacing:1.2px}.expertise span+span::before{content:none}.section{padding:55px 0}.section-heading{flex-direction:column;align-items:flex-start;gap:20px;margin-bottom:30px}.section-intro{max-width:100%;font-size:14px}.section-heading .eyebrow{margin-bottom:15px}h2{font-size:34px;letter-spacing:-1.2px}.journey-columns{gap:35px}.column-title{font-size:14px;line-height:1.5;gap:8px}.timeline h4{font-size:21px}.timeline p{font-size:13px}.timeline-date{font-size:9px!important;letter-spacing:.6px}.timeline{padding-left:15px}.timeline li{padding-left:8px}.timeline li::before{left:-21px;width:10px;height:10px}.cv-card{padding:20px}.cv-card strong{font-size:16px}.skills-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}.skill-number{margin-bottom:18px}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 18px}.project-caption h3{font-size:18px}.project-caption p{font-size:9px;line-height:1.5}.card-arrow{width:29px;height:29px;font-size:17px}.filters{gap:3px;max-width:100%}.filters button{padding:10px 14px;font-size:12px}.contact{flex-direction:column;align-items:flex-start;gap:25px;padding:30px;margin:45px 0 20px}.contact h2{font-size:37px}.contact-links{font-size:13px;gap:10px}.contact-links a{min-height:32px}.contact .eyebrow{font-size:9px;letter-spacing:1.2px}footer>div{gap:20px}.project-intro{padding-top:110px;padding-bottom:30px}.back-link{margin-bottom:25px}.project-intro h1{font-size:clamp(40px,8vw,66px);letter-spacing:-2px;overflow-wrap:anywhere}.project-lead{font-size:17px}.project-meta{grid-template-columns:1fr 1fr;gap:24px;margin-top:30px}.project-meta>div:last-child{grid-column:1/-1}.project-cover img{height:auto;max-height:480px;min-height:220px;object-fit:contain}.case-layout{grid-template-columns:1fr;gap:30px;margin:45px 0}.case-sidebar{position:static;padding:22px;background:#eceee6;border-radius:4px}.case-sidebar nav{margin-bottom:10px}.case-sidebar nav a{font-size:13px}.case-article h2{font-size:27px}.case-article p,.case-article li{font-size:15px}.interactive-section{margin-block:45px}.model-stage,.model-launch{min-height:350px}.model-stage model-viewer{height:420px}.map-layout{grid-template-columns:1fr}.map-marker{width:25px;height:25px;font-size:9px}.next-project h2{font-size:28px}.next-project>span{font-size:35px}}
@media(max-width:540px){.journey-columns{grid-template-columns:1fr;gap:40px}.column-title{font-size:16px}.timeline h4{font-size:24px}.timeline p{font-size:14px}.timeline{margin-top:28px}.timeline li{padding-bottom:32px}.timeline-date{font-size:10px!important}.cv-card{margin-top:28px}.project-grid{grid-template-columns:1fr}.project-image{aspect-ratio:1.3}.project-caption h3{font-size:22px}.project-caption p{font-size:10px}.card-arrow{width:35px;height:35px;font-size:22px}.hero-content{padding-top:48px}.hero h1{font-size:clamp(52px,12vw,68px);letter-spacing:-2.8px}.hero-actions{gap:10px;align-items:flex-start;flex-direction:column}.hero-actions .button{font-size:13px;min-height:49px}.text-link{font-size:13px}.eyebrow{font-size:9px;letter-spacing:1.6px}.intro br{display:none}.skills-grid{gap:30px 20px}.skills-grid h3{font-size:18px}.skills-grid p{font-size:13px}.filters{width:100%;flex-wrap:wrap}.filters button{padding-inline:11px;font-size:11px}.contact{padding:28px 22px}.contact .eyebrow{font-size:8px}.contact h2{font-size:33px}footer{align-items:flex-start}footer>div{gap:6px;flex-direction:column;font-size:11px}footer a{padding:10px 0}.project-meta{grid-template-columns:1fr}.project-meta>div:last-child{grid-column:auto}.project-intro h1{font-size:43px}.project-cover>span{bottom:10px;right:10px;font-size:10px}.model-stage model-viewer{height:340px}.model-launch{padding:20px}.model-toolbar{align-items:flex-start;flex-direction:column}.map-marker{width:22px;height:22px;font-size:8px}.next-project h2{font-size:26px}.mobile-dialog{padding:22px}.mobile-dialog nav a{font-size:28px}.map-info{padding:20px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.reveal.motion-ready{opacity:1;transform:none}}

/* All trees remain visible; the larger species controls are reserved for desktop. */
.map-dot{position:absolute;width:9px;height:9px;border-radius:50%;background:#51694b;border:1px solid white;transform:translate(-50%,-50%);pointer-events:none}
.map-dot.is-selected{background:#a9512b;box-shadow:0 0 0 4px #a9512b45;z-index:2}
.map-marker:hover,.map-marker:focus-visible{z-index:5}
@media(max-width:800px){.map-marker{display:none}.map-dot{width:7px;height:7px}}
.model-primary{margin-top:0}
.model-primary .section-heading{margin-bottom:22px}
.model-primary .section-heading h2{font-size:26px}
@media(max-width:800px){.model-primary{margin-top:0}.model-primary .section-heading h2{font-size:24px}}
/* Original identity and media-first project pages. */
.brand-logo{display:block;width:160px;height:auto}
.header:not(.scrolled) .brand-logo{filter:invert(1)}
.project-page .header .brand-logo,.header.scrolled .brand-logo,.mobile-dialog .brand-logo{filter:none}
.project-intro>.project-cover,.project-intro>.model-primary{margin:28px 0 32px}
.project-intro>.model-primary .model-stage{border:0}
.featured-project{grid-column:span 2}
.featured-project .project-image{aspect-ratio:2.05}
.featured-project .project-caption p{color:#516543;font-weight:600}
.featured-project .project-index{width:auto;border-radius:4px;padding:0 12px}
.featured-project .project-index::after{content:' / À LA UNE';margin-left:4px}
.animation-controls{width:100%;display:flex;align-items:center;gap:14px;flex-wrap:wrap;border-bottom:1px solid var(--line);padding-bottom:16px}
.model-toolbar .animation-play{background:#293d2c;color:white;border-color:#293d2c;min-width:150px}
.animation-timeline{flex:1;min-width:180px;font-size:11px;display:grid;gap:8px}
.animation-timeline input{width:100%;accent-color:#5b7550;min-height:26px;cursor:pointer}
.animation-clock{font-variant-numeric:tabular-nums;color:var(--muted);font-size:11px}
.animation-speed{display:grid;gap:8px;font-size:11px}
.animation-speed select{font-size:16px;padding:8px;border:1px solid var(--line);border-radius:4px;background:var(--paper)}
.model-toolbar .toggle-walls{border-color:#86947b;background:#e3e9dd;font-weight:600}
@media(max-width:800px){.brand-logo{width:135px}.project-intro>.model-primary{margin-top:22px}.featured-project .project-image{aspect-ratio:1.7}}
@media(max-width:540px){.featured-project{grid-column:auto}.featured-project .project-image{aspect-ratio:1.3}.animation-controls{gap:12px}.animation-timeline{flex-basis:100%;order:3}.animation-speed{margin-left:auto}.model-toolbar{flex-direction:row;align-items:center}.model-toolbar>p{flex-basis:100%}.brand-logo{width:125px}}

/* Contact form */
.contact-form-section{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(45px,8vw,110px);padding:80px 0;border-bottom:1px solid var(--line)}
.contact-intro{align-self:start;position:sticky;top:125px}
.contact-intro .eyebrow{color:var(--muted);margin-bottom:20px}
.contact-intro h2{max-width:520px}
.contact-intro>p:not(.eyebrow){max-width:460px;color:var(--muted);font-size:15px;line-height:1.8;margin-top:22px}
.contact-direct{display:flex;flex-direction:column;align-items:flex-start;gap:8px;margin-top:30px;font-size:13px}
.contact-direct a{min-height:34px;display:flex;align-items:center;text-decoration:underline;text-underline-offset:5px}
.contact-form{padding:35px;background:#e9ece3;border:1px solid #dce1d7;border-radius:6px}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.form-field{display:flex;flex-direction:column;gap:9px;margin-bottom:22px}
.form-field label,.consent{font-size:12px;line-height:1.5}
.form-field input,.form-field textarea{width:100%;border:1px solid #c7ccc1;border-radius:4px;background:#fbfaf7;color:var(--ink);padding:14px 15px;font:inherit;font-size:16px;transition:border-color .2s,box-shadow .2s}
.form-field textarea{resize:vertical;min-height:160px;line-height:1.6}
.form-field input:focus,.form-field textarea:focus{outline:0;border-color:#708068;box-shadow:0 0 0 3px #70806822}
.form-field input:user-invalid,.form-field textarea:user-invalid{border-color:#a3574a}
.honeypot{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important}
.consent{display:flex;align-items:flex-start;gap:11px;color:var(--muted);margin:2px 0 25px}
.consent input{width:18px;height:18px;margin:0;flex:0 0 auto;accent-color:#52694d}
.form-submit{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.form-submit .button:disabled{opacity:.65;cursor:wait;transform:none}
.form-status{flex:1;min-width:210px;font-size:13px;line-height:1.6}
.form-status.is-success{color:#385f35}
.form-status.is-error{color:#8a3e35}
.form-status.is-info{color:#526252}
@media(max-width:800px){.contact-form-section{grid-template-columns:1fr;gap:35px;padding:55px 0}.contact-intro{position:static}.contact-form{padding:26px}.form-row{grid-template-columns:1fr;gap:0}}
@media(max-width:540px){.contact-form{padding:22px 18px}.form-submit{align-items:stretch;flex-direction:column}.form-submit .button{width:100%}.form-status{min-width:0}.contact-direct{font-size:12px}}

/* Signature contact experience */
.contact-studio{position:relative;isolation:isolate;grid-template-columns:minmax(300px,.78fr) minmax(520px,1.22fr);gap:clamp(45px,7vw,100px);margin:80px 0 30px;padding:clamp(42px,6vw,78px);border:0;border-radius:10px;background:#1f2b24;color:#f2f1e9;overflow:hidden}
.contact-studio::before{content:'';position:absolute;z-index:-1;width:560px;height:560px;left:-240px;bottom:-330px;border:1px solid #b9c9ad26;border-radius:50%;box-shadow:0 0 0 80px #b9c9ad0a,0 0 0 160px #b9c9ad08}
.contact-studio::after{content:'';position:absolute;z-index:-1;inset:0;background:linear-gradient(90deg,#ffffff06 1px,transparent 1px),linear-gradient(#ffffff06 1px,transparent 1px);background-size:56px 56px;mask-image:linear-gradient(90deg,#000,transparent 55%);pointer-events:none}
.contact-studio .contact-intro{position:static;padding-top:5px}
.contact-availability{display:inline-flex;align-items:center;gap:9px;margin-bottom:54px;padding:8px 12px;border:1px solid #aebb9f4a;border-radius:30px;color:#d7ded1;font-size:10px;letter-spacing:1px;text-transform:uppercase}
.contact-availability>span{width:7px;height:7px;border-radius:50%;background:#a8ca8d;box-shadow:0 0 0 5px #a8ca8d16;animation:availability-pulse 2.2s ease-in-out infinite}
.contact-studio .contact-intro .eyebrow{color:#aeb9aa;margin-bottom:19px}
.contact-studio .contact-intro h2{font-size:clamp(43px,5vw,69px);line-height:1.02;letter-spacing:-3px;font-weight:500;color:#fff}
.contact-studio .contact-intro h2 em{font-style:normal;color:#b8c6ab}
.contact-studio .contact-intro>p:not(.eyebrow){color:#c4cbc2;max-width:390px;margin-top:25px;font-size:14px}
.contact-steps{list-style:none;padding:0;margin:42px 0 0;border-top:1px solid #ffffff1c}
.contact-steps li{display:grid;grid-template-columns:35px 1fr;gap:12px;padding:17px 0;border-bottom:1px solid #ffffff1c}
.contact-steps li>span{color:#94a28e;font-size:10px;letter-spacing:1px;padding-top:3px}
.contact-steps strong{display:block;font-size:13px;font-weight:500;margin-bottom:5px}
.contact-steps small{display:block;color:#9fa9a0;font-size:11px;line-height:1.5}
.contact-studio .contact-direct{margin-top:30px;color:#d9ded6}
.contact-studio .contact-direct>span{margin-bottom:6px;color:#8f9b90;text-transform:uppercase;letter-spacing:1.5px;font-size:9px}
.contact-studio .contact-direct a{font-size:12px}
.contact-panel{position:relative;padding:clamp(28px,4vw,46px);background:#f3f1e9;color:var(--ink);border:0;border-radius:8px;box-shadow:0 24px 80px #07100a4a}
.contact-panel::before{content:'';position:absolute;top:0;left:46px;width:70px;height:3px;background:#718067}
.contact-panel-head{display:flex;align-items:flex-start;gap:18px;margin-bottom:35px;padding-bottom:26px;border-bottom:1px solid #d5d6cc}
.contact-panel-number{display:grid;place-items:center;flex:0 0 auto;width:34px;height:34px;border-radius:50%;background:#dfe5d8;color:#4c5c47;font-size:10px}
.contact-panel-head p{font-size:20px;letter-spacing:-.4px;margin:0 0 6px}
.contact-panel-head small{color:var(--muted);font-size:11px}
.project-choice{margin:0 0 29px;padding:0;border:0}
.project-choice legend{font-size:12px;margin-bottom:13px}
.project-options{display:flex;flex-wrap:wrap;gap:8px}
.project-options label{position:relative;cursor:pointer}
.project-options input{position:absolute;inset:0;opacity:0;pointer-events:none}
.project-options label>span{display:flex;align-items:center;min-height:40px;padding:9px 14px;border:1px solid #cdd0c5;border-radius:30px;background:#f9f8f3;font-size:11px;transition:background .2s,border-color .2s,color .2s,transform .2s}
.project-options label:hover>span{transform:translateY(-2px);border-color:#87957d}
.project-options input:checked+span{background:#293a2d;border-color:#293a2d;color:white}
.project-options input:focus-visible+span{outline:3px solid #89956d;outline-offset:3px}
.contact-panel .form-row{gap:16px}
.contact-panel .form-field{position:relative;margin-bottom:20px;gap:8px}
.contact-panel .form-field label{font-size:11px;letter-spacing:.2px;color:#4f554f}
.contact-panel .form-field input,.contact-panel .form-field textarea,.contact-panel .form-field select{border:0;border-bottom:1px solid #bfc4b8;border-radius:0;background:transparent;padding:10px 0 13px;color:var(--ink);font:inherit;font-size:15px}
.contact-panel .form-field select{min-height:45px;cursor:pointer}
.contact-panel .form-field input::placeholder,.contact-panel .form-field textarea::placeholder{color:#9b9d97;opacity:1}
.contact-panel .form-field input:focus,.contact-panel .form-field textarea:focus,.contact-panel .form-field select:focus{box-shadow:none;border-color:#52684b;outline:0}
.contact-panel .message-field{margin-top:5px}
.contact-panel .message-field textarea{min-height:130px}
.field-hint{align-self:flex-end;color:#999c95;font-size:9px;letter-spacing:.4px}
.contact-panel .consent{font-size:10px;line-height:1.6;margin:5px 0 24px}
.contact-panel .consent input{accent-color:#293a2d}
.contact-send{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:61px;padding:8px 9px 8px 22px;border:0;border-radius:4px;background:#26362a;color:white;font:inherit;font-size:13px;cursor:pointer;transition:background .2s,transform .2s}
.contact-send:hover{background:#3d503f;transform:translateY(-2px)}
.contact-send:disabled{opacity:.65;cursor:wait;transform:none}
.send-arrow{display:grid;place-items:center;width:43px;height:43px;border-radius:50%;background:#dce5d4;color:#26362a;font-size:19px}
.contact-panel .form-status{flex-basis:100%;margin-top:4px}
@keyframes availability-pulse{50%{opacity:.55;box-shadow:0 0 0 8px #a8ca8d0b}}
@media(max-width:1050px){.contact-studio{grid-template-columns:1fr;padding:55px}.contact-studio .contact-intro{display:grid;grid-template-columns:1fr 1fr;gap:0 40px}.contact-availability,.contact-studio .contact-intro>.eyebrow,.contact-studio .contact-intro>h2,.contact-studio .contact-intro>p{grid-column:1}.contact-steps{grid-column:2;grid-row:1/6;margin:0}.contact-studio .contact-direct{grid-column:1}.contact-panel{margin-top:5px}}
@media(max-width:700px){.contact-studio{margin-block:50px 20px;padding:38px 24px}.contact-studio .contact-intro{display:block}.contact-availability{margin-bottom:38px}.contact-studio .contact-intro h2{font-size:47px;letter-spacing:-2px}.contact-steps{margin-top:35px}.contact-panel{padding:30px 22px}.form-row-subject{grid-template-columns:1fr}.project-options label>span{padding-inline:12px}.contact-panel-head{margin-bottom:28px}.contact-panel::before{left:22px}}
@media(prefers-reduced-motion:reduce){.contact-availability>span{animation:none}}

/* Unified forest, cream and sage palette */
:root{--paper:#f3f1e9;--ink:#1f2b24;--muted:#667166;--line:#c9cec2;--sand:#dfe5d8;--accent:#718067;--deep:#1f2b24;--sage:#b8c6ab;--soft-sage:#e4e9df}
body{background:var(--paper);color:var(--ink)}
.hero{background-image:linear-gradient(90deg,#102019c7,#1f2b2440),url('../content/images/slider.jpeg')}
.hero h1 em{color:#c5d1ba}
.header.scrolled,.project-page .header{background:#f3f1e9f2;color:var(--ink)}
.header.scrolled .nav-contact,.project-page .nav-contact{border-color:#aeb7a9}
.button.dark,.model-toolbar .animation-play{background:var(--deep);color:#fff}
.button.dark:hover,.model-toolbar .animation-play:hover{background:#3b4c3e}
.expertise{color:#455346}
.journey{margin-top:70px;padding:clamp(45px,6vw,75px);border:0;border-radius:9px;background:var(--deep);color:#f4f2eb}
.journey .section-heading .eyebrow,.journey .section-intro,.journey .muted,.journey .timeline p,.journey .timeline small{color:#b9c3b9}
.journey .column-title{border-color:#ffffff2b}
.journey .column-title>span,.journey .timeline-date{color:#9faa9f}
.journey .timeline{border-color:#7f907d}
.journey .timeline li::before{background:#b6c9aa;box-shadow:0 0 0 5px var(--deep)}
.journey .timeline .timeline-place,.journey .timeline strong,.journey .timeline h4{color:#fff}
.journey .timeline-date>span{border-color:#899a84;color:#c9d6c3}
.journey .tags span{background:#ffffff10;color:#d7ded4}
.journey .cv-card{background:#dfe6d8;border-color:#dfe6d8;color:var(--ink)}
.journey .cv-card span{color:#596559}
.journey .cv-card strong{color:var(--ink)}
.skills{margin-top:24px;padding-inline:clamp(26px,5vw,65px);border-radius:9px;background:var(--soft-sage)}
.skills-grid article{border-color:#b9c2b4}
.skill-number{color:#63715f}
.project-image{background:#dfe2db}
.project-caption{border-color:#bdc5b9}
.card-arrow{border-color:#b7c0b2;color:#425441}
.project-card a:hover .card-arrow{background:var(--deep);color:#fff}
.filters button[aria-pressed=true]{background:var(--deep);border-color:var(--deep);color:#fff}
.contact,.reference-link,.case-sidebar,.map-info{background:var(--soft-sage)}
.contact{background:var(--deep)}
.case-sidebar nav a{border-color:#bdc5b9}
.model-stage,.model-stage model-viewer,.project-cover{background:#dfe2db}
.model-toolbar{background:#eeede6;border-color:#bdc5b9}
.model-toolbar button{border-color:#aeb8a9}
.next-project{border-color:#b7c0b2}
footer{border-color:#bdc5b9}

/* Media-first project introduction: the 3D object is visible and centered on arrival. */
.project-intro-model{display:grid;grid-template-columns:minmax(250px,.36fr) minmax(560px,.64fr);grid-template-rows:auto auto auto auto 1fr;column-gap:clamp(38px,6vw,90px);align-items:start;min-height:100svh;padding:120px 0 45px}
.project-intro-model>.back-link{grid-column:1/-1;margin-bottom:18px}
.project-intro-model>.eyebrow{grid-column:1;grid-row:2;align-self:end;margin-top:30px}
.project-intro-model>h1{grid-column:1;grid-row:3;font-size:clamp(42px,4.7vw,66px);line-height:1.02;letter-spacing:-2.5px;margin:16px 0 20px}
.project-intro-model>.model-primary{grid-column:2;grid-row:2/6;align-self:center;width:100%;margin:0}
.project-intro-model>.project-lead{grid-column:1;grid-row:4;font-size:16px;line-height:1.65}
.project-intro-model>.project-meta{grid-column:1;grid-row:5;grid-template-columns:1fr;margin-top:28px;padding-top:20px;gap:16px}
.project-intro-model>.project-meta>div:last-child{grid-column:auto}
.project-intro-model .model-stage{width:100%;min-height:0;border:0;box-shadow:0 20px 70px #26352b1c}
.project-intro-model .model-stage model-viewer{height:clamp(430px,55svh,560px)}
.project-intro-model .model-poster{object-fit:contain}
.project-intro-model .model-toolbar{position:relative;z-index:2}
@media(max-width:1050px){.journey{padding-inline:45px}.project-intro-model{grid-template-columns:minmax(230px,.38fr) minmax(450px,.62fr);column-gap:35px}.project-intro-model .model-stage model-viewer{height:480px}}
@media(max-width:850px){.journey{margin-top:45px;padding:45px 30px}.skills{margin-top:18px}.project-intro-model{display:block;min-height:0;padding-top:110px}.project-intro-model>.back-link{margin-bottom:24px}.project-intro-model>.eyebrow{margin-top:0}.project-intro-model>h1{font-size:clamp(39px,8vw,56px);margin:16px 0 25px}.project-intro-model>.model-primary{margin:0 0 30px}.project-intro-model>.project-lead{font-size:16px}.project-intro-model>.project-meta{display:grid;grid-template-columns:1fr 1fr;margin-top:25px}.project-intro-model .model-stage model-viewer{height:min(52svh,460px)}}
@media(max-width:540px){.journey{margin-inline:-4px;padding:38px 24px}.skills{margin-inline:-4px;padding-inline:24px}.project-intro-model{padding-top:100px}.project-intro-model>h1{font-size:40px;letter-spacing:-1.7px}.project-intro-model>.project-meta{grid-template-columns:1fr}.project-intro-model .model-stage model-viewer{height:390px}.project-intro-model .model-toolbar{padding:12px}}

/* Portfolio V2 — precision, engineering and aeronautical composition. */
:root{--paper:#f6f4ef;--ink:#202322;--muted:#686b66;--line:#d6d6cc;--sand:#e5e4db;--accent:#75826b;--deep:#262e29;--sage:#c7d2bc;--soft-sage:#e9ebe3}
body{background-color:var(--paper);background-image:linear-gradient(90deg,transparent calc(100% - 1px),#d6d6cc24 1px);background-size:min(8.333vw,120px) 100%}
.wrap{width:min(1360px,calc(100% - 96px))}
.section{position:relative;padding-block:clamp(82px,9vw,132px)}
.section::before{content:'';position:absolute;left:0;top:0;width:34px;height:1px;background:var(--accent);box-shadow:44px 0 0 var(--line)}
.header.scrolled,.project-page .header{background:#f6f4eff2}

/* Immersive landing composition */
.hero{position:relative;isolation:isolate;overflow:hidden;background-image:linear-gradient(90deg,#202322d9,#20232273 64%,#20232236),url('../content/images/slider.jpeg')}
.hero::after{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(90deg,#ffffff0b 1px,transparent 1px),linear-gradient(#ffffff0b 1px,transparent 1px);background-size:72px 72px;mask-image:linear-gradient(90deg,#000,transparent 85%)}
.hero-content{z-index:1;grid-template-columns:minmax(0,1fr) 190px}
.hero-copy{position:relative;max-width:980px}
.hero-copy::before{content:attr(data-coordinates);position:absolute;left:0;top:-48px;color:#ffffff8a;font-size:9px;letter-spacing:2px;font-variant-numeric:tabular-nums}
.hero h1{font-size:clamp(78px,10.2vw,148px);line-height:.78;letter-spacing:-7px;text-transform:uppercase;margin:34px 0 46px}
.hero h1 em{display:inline-block;margin-left:clamp(36px,9vw,130px);color:#d6ddce;font-weight:400}
.hero .intro{max-width:620px;font-size:clamp(16px,1.35vw,19px)}
.hero-geometry{position:absolute;z-index:0;right:-7vw;top:11%;width:min(52vw,720px);aspect-ratio:1;pointer-events:none;transform:translate3d(var(--geo-x,0),var(--geo-y,0),0);transition:transform .55s cubic-bezier(.2,.65,.3,1)}
.hero-orbit,.hero-axis,.hero-cross{position:absolute;inset:50%;transform:translate(-50%,-50%)}
.hero-orbit{width:74%;height:74%;border:1px solid #ffffff29;border-radius:50%;box-shadow:0 0 0 68px #ffffff0b,0 0 0 136px #ffffff08}
.hero-orbit::before,.hero-orbit::after{content:'';position:absolute;inset:12%;border:1px dashed #ffffff26;border-radius:50%}
.hero-orbit::after{inset:39%;border-style:solid;background:#ffffff08}
.hero-axis{width:100%;height:1px;background:linear-gradient(90deg,transparent,#ffffff2d,transparent)}
.hero-axis::after{content:'';position:absolute;left:50%;top:-360px;width:1px;height:720px;background:linear-gradient(transparent,#ffffff2d,transparent)}
.hero-cross{width:13px;height:13px;border:1px solid #ffffff6b;border-radius:50%}
.hero-cross::before,.hero-cross::after{content:'';position:absolute;background:#ffffff8f}.hero-cross::before{left:5px;top:-8px;width:1px;height:27px}.hero-cross::after{left:-8px;top:5px;width:27px;height:1px}
.hero-coordinate{position:absolute;right:16%;bottom:13%;font-size:9px;letter-spacing:2px;color:#ffffff82;text-transform:uppercase}

/* About and capability system */
.journey{background:var(--deep);color:#f6f4ef;border-radius:2px;box-shadow:24px 24px 0 var(--sand)}
.journey::after{content:'ABOUT / 01';position:absolute;right:34px;top:28px;color:#ffffff42;font-size:9px;letter-spacing:2px}
.skills{background:var(--soft-sage);border-radius:2px}
.skills-grid{gap:1px;background:var(--line);border:1px solid var(--line)}
.skills-grid article{position:relative;min-height:270px;padding:30px;background:var(--paper);border:0;overflow:hidden}
.skills-grid article::before{content:attr(data-symbol);display:grid;place-items:center;width:44px;height:44px;margin-bottom:42px;border:1px solid var(--line);border-radius:50%;color:var(--accent);font-size:17px}
.skills-grid article::after{content:'';position:absolute;right:-48px;bottom:-48px;width:125px;height:125px;border:1px solid var(--line);border-radius:50%;box-shadow:0 0 0 24px #d6d6cc24}
.skill-number{position:absolute;right:20px;top:20px}

/* Uniform project gallery */
.filters{max-width:720px;justify-content:flex-end}
.filters button{border-radius:2px;border-color:var(--line);background:var(--paper)}
.filters button[aria-pressed=true]{background:var(--deep);border-color:var(--deep);color:#fff}
.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:30px}
.featured-project{grid-column:auto}
.project-card{position:relative;min-width:0}
.project-card>a{height:100%;display:flex;flex-direction:column;border:1px solid var(--line);background:var(--paper);padding:10px;transition:transform .35s ease,box-shadow .35s ease}
.project-card>a:hover{transform:translateY(-7px);box-shadow:0 22px 55px #20232216}
.project-card>a::before,.project-card>a::after{content:'';position:absolute;z-index:3;pointer-events:none;opacity:0;transition:opacity .3s,transform .3s}
.project-card>a::before{inset:0;border-top:1px solid var(--accent);border-left:1px solid var(--accent);transform:translate(-7px,-7px)}
.project-card>a::after{right:-7px;bottom:-7px;width:42px;height:42px;border-right:1px solid var(--accent);border-bottom:1px solid var(--accent);transform:translate(7px,7px)}
.project-card>a:hover::before,.project-card>a:hover::after{opacity:1;transform:none}
.project-image,.featured-project .project-image{aspect-ratio:16/10;border-radius:0;background:var(--sand)}
.project-image::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,transparent 49.8%,#f6f4ef22 50%,transparent 50.2%),linear-gradient(transparent 49.8%,#f6f4ef22 50%,transparent 50.2%);opacity:0;transition:opacity .3s}
.project-card:hover .project-image::after{opacity:1}
.project-caption{flex:1;align-items:flex-start;padding:22px 12px 14px;border:0}
.project-caption>div{display:flex;flex-direction:column;height:100%}
.project-caption h3{font-size:clamp(22px,2vw,30px);margin-top:7px}
.project-summary{max-width:460px;margin:14px 0 22px;color:var(--muted);font-size:13px!important;line-height:1.7;text-transform:none!important;letter-spacing:0!important}
.project-cta{margin-top:auto;display:inline-flex;align-items:center;gap:10px;font-size:11px;text-transform:uppercase;letter-spacing:1.2px}
.project-cta::before{content:'';width:24px;height:1px;background:var(--accent);transition:width .25s}.project-card:hover .project-cta::before{width:42px}
.card-arrow{margin-top:3px;flex:0 0 auto}

/* Case-study structure and model controls */
.project-intro{position:relative}
.project-intro::before{content:'CASE STUDY';position:absolute;right:0;top:132px;color:var(--muted);font-size:9px;letter-spacing:2px}
.project-intro h1{max-width:850px}
.project-meta{border-color:var(--line)}
.project-meta>div{position:relative;padding-left:18px}.project-meta>div::before{content:'';position:absolute;left:0;top:2px;width:6px;height:6px;border:1px solid var(--accent);border-radius:50%}
.case-sidebar nav a{transition:padding-left .2s,color .2s}.case-sidebar nav a:hover{padding-left:8px;color:var(--accent)}
.case-article h2{position:relative;padding-top:35px;border-top:1px solid var(--line)}
.case-article h2::before{content:attr(data-step) ' —';display:block;margin-bottom:13px;color:var(--accent);font-size:10px;letter-spacing:1.7px}
.case-article img{background:var(--sand);border-radius:2px}
.model-stage:fullscreen{display:flex;flex-direction:column;background:var(--paper);padding:20px}.model-stage:fullscreen model-viewer{height:calc(100vh - 120px);flex:1}.model-stage:fullscreen .model-toolbar{flex:0 0 auto}
.model-toolbar button{transition:background .2s,color .2s,border-color .2s}.model-toolbar button:hover{background:var(--deep);border-color:var(--deep);color:white}

/* Contact keeps the original palette and geometry. */
.contact-studio{background:var(--deep);border-radius:2px}
.contact-panel{background:var(--paper);border-radius:2px}
.contact-send,.project-options input:checked+span{background:var(--deep)}
.contact-panel .form-field input,.contact-panel .form-field textarea,.contact-panel .form-field select{min-height:50px}
.contact-panel .message-field textarea{min-height:160px}

@media(max-width:1050px){.hero h1{font-size:clamp(72px,11vw,118px)}.hero-geometry{right:-20vw;width:70vw}.project-grid{gap:22px}.skills-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:800px){body{background-image:none}.wrap{width:calc(100% - 40px)}.hero-content{grid-template-columns:1fr}.hero h1{font-size:clamp(58px,15vw,96px);line-height:.84;letter-spacing:-4px}.hero h1 em{margin-left:8vw}.hero-geometry{right:-42vw;top:20%;width:110vw;opacity:.55}.hero-copy::before{top:-30px}.portrait{z-index:2}.section{padding-block:70px}.journey{box-shadow:10px 10px 0 var(--sand)}.project-grid{grid-template-columns:1fr}.filters{justify-content:flex-start}.project-intro::before{display:none}.model-stage:fullscreen{padding:0}.model-stage:fullscreen model-viewer{height:calc(100vh - 180px)}.project-intro-model .model-stage model-viewer{height:min(52svh,460px)}}
@media(max-width:540px){.hero h1{font-size:clamp(54px,18vw,76px);letter-spacing:-3px}.hero-actions{align-items:stretch}.hero-actions .button{width:100%}.hero-coordinate{display:none}.skills-grid{grid-template-columns:1fr}.skills-grid article{min-height:235px}.section-heading{margin-bottom:32px}.filters{display:grid;grid-template-columns:1fr 1fr;width:100%}.filters button{width:100%;padding-inline:8px}.project-card>a{padding:7px}.project-caption{padding-inline:8px}.project-summary{font-size:12px!important}.contact-panel .form-field input,.contact-panel .form-field textarea,.contact-panel .form-field select{font-size:16px}.fullscreen-model{display:none}}
@media(prefers-reduced-motion:reduce){.hero-geometry{transform:none!important}.project-card>a:hover{transform:none}}

/* Full-bleed imagery and bilingual navigation. */
.project-image img{object-fit:cover;object-position:center}
.project-cover{aspect-ratio:16/8;min-height:320px}
.project-cover img{width:100%;height:100%;max-height:none;object-fit:cover;object-position:center}
.project-card[data-category~="mecanique"] .project-image img,.project-card[data-category~="aeronautique"] .project-image img{object-position:center}
.language-switch{display:flex;align-items:center;gap:5px;margin-left:auto;padding:5px;border:1px solid currentColor;border-radius:30px;font-size:9px;letter-spacing:1px;opacity:.85}
.language-switch button{display:grid;place-items:center;min-width:31px;height:28px;padding:0;border:0;border-radius:20px;background:transparent;color:inherit;font:inherit;cursor:pointer}
.language-switch button[aria-pressed="true"]{background:currentColor;color:var(--paper)}
.header:not(.scrolled):not(.project-page) .language-switch button[aria-pressed="true"]{background:#f6f4ef;color:#202322}
.header-inner>.language-switch+nav{margin-left:0}
@media(min-width:801px){.header-inner>.language-switch{order:2}.header-inner>nav{order:1;margin-left:auto}.header-inner>.menu-toggle{order:3}}
@media(max-width:800px){.language-switch{margin-left:auto}.project-cover{aspect-ratio:4/3;min-height:260px}.project-cover img{min-height:0}.header-inner{gap:10px}}
@media(max-width:390px){.language-switch{gap:2px;padding:3px}.language-switch button{min-width:27px;height:26px}.brand-logo{width:110px}}

/* Scroll storytelling — each chapter uses a distinct motion language. */
@property --scroll-progress{syntax:'<number>';inherits:true;initial-value:0}
html,body{overflow-x:clip}
.scroll-scene{--scroll-progress:0;--scene-visible:0}

/* 01: cinematic depth in the opening image. */
.hero{background-size:calc(100% + (var(--scroll-progress) * 7%));background-position:center calc(50% + (var(--scroll-progress) * 5%))}
.hero-copy{transform:translate3d(0,calc(var(--scroll-progress) * -34px),0);opacity:calc(1 - (var(--scroll-progress) * .34))}
.hero-geometry{rotate:calc(var(--scroll-progress) * 18deg);scale:calc(1 + (var(--scroll-progress) * .08))}
.portrait{transform:translate3d(0,calc(var(--scroll-progress) * 22px),0)}
.scroll-cue span{animation:cue-float 1.8s ease-in-out infinite}
@keyframes cue-float{50%{transform:translateY(5px)}}

/* 02: the expertise strip travels like a technical readout. */
.expertise{position:relative;overflow:hidden;transform:translate3d(calc((var(--scroll-progress) - .5) * -26px),0,0)}
.expertise::after{content:'';position:absolute;left:0;bottom:0;width:32%;height:1px;background:var(--accent);transform:scaleX(calc(var(--scroll-progress) * 3));transform-origin:left}

/* 03: the journey draws itself and highlights the active milestone. */
.journey{overflow:hidden}
.journey::before{transform:scaleX(calc(.25 + var(--scroll-progress) * .75));transform-origin:left}
.journey .section-heading{transform:translate3d(calc((1 - var(--scroll-progress)) * -24px),0,0)}
.timeline{position:relative;border-left-color:transparent}
.timeline::before{content:'';position:absolute;left:-1px;top:0;width:1px;height:100%;background:#7f907d;transform:scaleY(clamp(0,var(--scroll-progress) * 1.55,1));transform-origin:top}
.timeline li{transition:opacity .45s,transform .55s,color .3s;opacity:.48;transform:translateX(5px)}
.timeline li.is-current{opacity:1;transform:translateX(12px)}
.timeline li.is-current::before{background:#f6f4ef;box-shadow:0 0 0 6px var(--deep),0 0 0 7px #c7d2bc;transform:scale(1.18)}

/* 04: skills open in alternating mechanical movements. */
.skills-grid article{transition:transform .65s cubic-bezier(.2,.75,.2,1),opacity .5s,background .3s;transition-delay:calc(var(--item-index) * 45ms)}
.skills-grid article:nth-child(odd){transform-origin:left center}.skills-grid article:nth-child(even){transform-origin:right center}
.skills-grid article:hover{z-index:2;transform:translateY(-8px) rotate(.35deg);background:#fff;box-shadow:0 18px 45px #20232214}
.skills-grid article:hover::after{transform:scale(1.16)}
.skills-grid article::after{transition:transform .55s ease}

/* 05: projects are revealed through a drawing-board aperture. */
.project-card.motion-ready{clip-path:inset(0 0 100% 0);transform:translateY(36px) rotate(calc((var(--item-index) - 4) * .08deg));opacity:1}
.project-card.motion-ready.is-visible{clip-path:inset(0);transform:none;transition:clip-path .85s cubic-bezier(.2,.75,.2,1),transform .85s cubic-bezier(.2,.75,.2,1);transition-delay:calc((var(--item-index) % 2) * 90ms)}
.project-card.filter-enter{animation:filter-card-in .55s cubic-bezier(.2,.75,.2,1) both}
@keyframes filter-card-in{from{opacity:0;transform:translateY(22px) scale(.985);clip-path:inset(0 0 22% 0)}to{opacity:1;transform:none;clip-path:inset(0)}}
.project-card:hover .project-image img{transform:scale(1.075) rotate(.25deg)}
.project-card:hover .project-index{transform:rotate(360deg)}
.project-index{transition:transform .65s cubic-bezier(.2,.75,.2,1)}

/* 06: the contact grid and orbit respond to the reading progress. */
.contact-studio::before{transform:translate3d(calc(var(--scroll-progress) * 42px),calc(var(--scroll-progress) * -28px),0) rotate(calc(var(--scroll-progress) * 24deg))}
.contact-studio::after{background-position:calc(var(--scroll-progress) * 55px) calc(var(--scroll-progress) * -35px)}
.contact-intro{transform:translate3d(0,calc((.5 - var(--scroll-progress)) * 22px),0)}
.contact-panel{transform:translate3d(0,calc((.5 - var(--scroll-progress)) * -28px),0);transition:box-shadow .4s}
.contact-studio:hover .contact-panel{box-shadow:0 30px 90px #07100a60}

/* Case studies: the model stays calm while the written process advances. */
.project-page .project-intro>.eyebrow,.project-page .project-intro>h1,.project-page .project-intro>.project-lead,.project-page .project-intro>.project-meta{transform:translate3d(0,calc(var(--scroll-progress) * -18px),0)}
.case-article>h2.motion-ready,.case-article>p.motion-ready,.case-article>ul.motion-ready{transition-delay:calc((var(--item-index) % 3) * 55ms)}
.case-article h2::before{transform:translateX(calc((1 - var(--scene-visible)) * -16px));transition:transform .45s}
.next-project{position:relative;overflow:hidden}
.next-project::before{content:'';position:absolute;inset:0;background:var(--soft-sage);transform:scaleX(var(--scroll-progress));transform-origin:left;z-index:-1}

/* Directional reveal variants. */
.reveal.motion-ready[data-reveal-direction="left"]{transform:translate3d(-28px,12px,0)}
.reveal.motion-ready[data-reveal-direction="right"]{transform:translate3d(28px,12px,0)}
.reveal.motion-ready[data-reveal-direction="up"]{transform:translate3d(0,28px,0)}
.reveal.motion-ready.is-visible{transform:none}

@media(max-width:800px){.hero{background-size:cover;background-position:62% center}.hero-copy,.portrait,.project-page .project-intro>.eyebrow,.project-page .project-intro>h1,.project-page .project-intro>.project-lead,.project-page .project-intro>.project-meta{transform:none}.expertise{transform:none}.timeline li.is-current{transform:translateX(5px)}.contact-intro,.contact-panel{transform:none}}
@media(prefers-reduced-motion:reduce){.hero{background-size:cover;background-position:center}.hero-copy,.portrait,.hero-geometry,.expertise,.journey .section-heading,.timeline li,.contact-intro,.contact-panel,.contact-studio::before,.project-page .project-intro>*{transform:none!important;rotate:0deg!important;scale:1!important;opacity:1!important}.scroll-cue span{animation:none}.project-card.motion-ready{clip-path:none}.timeline::before{transform:none}}

/* École Boulle: the interactive map is the primary project visual. */
.project-intro>.map-primary{margin:30px 0 38px;padding:28px;border:1px solid var(--line);background:var(--soft-sage);border-radius:2px}
.map-primary>.eyebrow{margin-bottom:10px;color:var(--accent)}
.map-primary>h2{font-size:clamp(24px,3vw,38px)}
.map-primary .map-layout{grid-template-columns:minmax(0,2.4fr) minmax(250px,.6fr);align-items:stretch}
.map-primary .tree-map{min-height:420px;border:1px solid var(--line);background:var(--paper)}
.map-primary .tree-map>img{width:100%;height:100%;object-fit:contain}
.map-primary .map-info{display:flex;flex-direction:column;justify-content:center;border:1px solid var(--line);background:var(--paper)}
.map-primary .map-marker{transition:transform .2s,box-shadow .2s,background .2s}
.map-primary .map-marker:hover,.map-primary .map-marker:focus-visible{transform:translate(-50%,-50%) scale(1.16)}
.map-primary .map-marker[aria-pressed=true]{animation:map-marker-pulse 1.8s ease-in-out infinite}
@keyframes map-marker-pulse{50%{box-shadow:0 0 0 9px #a9512b18}}
@media(max-width:800px){.project-intro>.map-primary{margin-inline:0;padding:18px}.map-primary .map-layout{grid-template-columns:1fr}.map-primary .tree-map{min-height:0}.map-primary .map-info{padding:20px}.map-primary>h2{font-size:27px}}
@media(prefers-reduced-motion:reduce){.map-primary .map-marker[aria-pressed=true]{animation:none}}

/* Restored original Image Map Pro experience. */
.legacy-map .map-instructions{max-width:760px;margin:12px 0 24px;color:var(--muted);font-size:13px;line-height:1.7}
.legacy-map #image-map-pro{width:100%;min-height:520px;background:var(--paper);border:1px solid var(--line);overflow:hidden}
.legacy-map .imp-wrap{margin-inline:auto}
.legacy-map .imp-object-menu{font-family:Arial,Helvetica,sans-serif}
.legacy-map .imp-object-list-item{transition:transform .2s,box-shadow .2s}
.legacy-map .imp-object-list-item:hover{transform:translateX(-3px);box-shadow:0 8px 20px #20232212}
@media(max-width:800px){.legacy-map #image-map-pro{min-height:420px}.legacy-map .map-instructions{font-size:12px}.legacy-map .imp-object-menu{max-height:240px;overflow:auto}}

/* Image Map Pro controls aligned with the portfolio identity. */
.legacy-map .imp-container{background:var(--paper)!important}
.legacy-map .imp-ui-element{display:grid!important;place-items:center!important;width:43px!important;height:43px!important;border:1px solid #ffffff66!important;border-radius:50%!important;background:var(--deep)!important;box-shadow:0 8px 24px #20232225!important;transition:transform .2s,background .2s!important}
.legacy-map .imp-ui-element:hover{transform:translateY(-2px) scale(1.04);background:#424d42!important}
.legacy-map .imp-ui-element .imp-icon{width:15px!important;height:15px!important;fill:#f6f4ef!important}
.legacy-map .imp-object-menu.imp-object-menu-right{padding:10px!important;background:var(--soft-sage)!important;border-left:1px solid var(--line)!important}
.legacy-map .imp-object-list-artboard-container{gap:6px!important;padding:0!important}
.legacy-map .imp-object-list-item{min-height:42px!important;display:flex!important;align-items:center!important;padding:9px 12px!important;border:1px solid var(--line)!important;border-radius:2px!important;background:var(--paper)!important;color:var(--ink)!important;font-size:11px!important}
.legacy-map .imp-object-list-item.imp-object-list-item-highlighted{background:var(--deep)!important;color:#fff!important;border-color:var(--deep)!important}
.legacy-map .imp-menu-close-button{background:var(--deep)!important}
.legacy-map .imp-tooltip{border-radius:2px!important;background:var(--deep)!important;box-shadow:0 16px 45px #20232235!important}

/* Botanical information selector linked to the legacy map. */
.species-explorer{display:grid;grid-template-columns:minmax(260px,.7fr) minmax(0,1.3fr);gap:clamp(28px,5vw,70px);margin:25px 0 5px;padding:clamp(28px,4vw,52px);border:1px solid var(--line);background:var(--paper)}
.species-selector{align-self:start;position:sticky;top:118px}
.species-selector .eyebrow{margin-bottom:15px;color:var(--accent)}
.species-selector h2{font-size:clamp(28px,3.2vw,43px);margin-bottom:32px}
.species-selector label{display:block;margin-bottom:9px;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:1.2px}
.species-selector select{width:100%;min-height:54px;padding:12px 42px 12px 15px;border:1px solid var(--line);border-radius:2px;background:var(--soft-sage);color:var(--ink);font-size:14px}
.species-help{margin-top:13px;color:var(--muted);font-size:11px;line-height:1.6}
.species-card{position:relative;min-height:390px;padding:clamp(28px,4vw,48px);overflow:hidden;background:var(--deep);color:#f6f4ef}
.species-card::after{content:'';position:absolute;right:-100px;bottom:-100px;width:280px;height:280px;border:1px solid #c7d2bc26;border-radius:50%;box-shadow:0 0 0 45px #c7d2bc0b,0 0 0 90px #c7d2bc08}
.species-card-head{position:relative;z-index:1;display:grid;grid-template-columns:65px 1fr;gap:20px;padding-bottom:30px;border-bottom:1px solid #ffffff20}
.species-index{font-size:10px;letter-spacing:1.5px;color:#aab6a5;padding-top:8px}
.species-name{font-size:clamp(29px,4vw,48px);line-height:1.05;letter-spacing:-1.8px}
.species-latin{margin-top:9px;color:#bfc8bc;font-size:14px;font-style:italic}
.species-card dl{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin:28px 0;background:#ffffff20}
.species-card dl>div{padding:17px;background:var(--deep)}
.species-card dt{margin-bottom:8px;color:#95a191;font-size:9px;text-transform:uppercase;letter-spacing:1.4px}
.species-card dd{margin:0;font-size:12px;line-height:1.5}
.species-description{position:relative;z-index:1;max-width:680px;color:#d2d8d0;font-size:14px;line-height:1.8}
.species-wiki{position:relative;z-index:1;display:inline-flex;align-items:center;min-height:44px;margin-top:24px;border-bottom:1px solid #b8c5b4;color:#f6f4ef;font-size:12px}
.species-wiki:hover{color:var(--sage)}
@media(max-width:800px){.species-explorer{grid-template-columns:1fr;padding:24px 18px}.species-selector{position:static}.species-selector h2{margin-bottom:22px}.species-card{min-height:0;padding:27px 22px}.species-card-head{grid-template-columns:1fr;gap:9px}.species-card dl{grid-template-columns:1fr}.species-card dl>div{padding:13px 0}.legacy-map .imp-ui-element{width:39px!important;height:39px!important}}

/* Portfolio-wide technical geometry and complete journey presentation. */
.section{position:relative;isolation:isolate}
.section:not(.journey):not(.contact-studio)::after{content:'';position:absolute;z-index:-1;right:-42px;top:52px;width:112px;height:112px;border:1px solid #7f907d24;border-radius:50%;box-shadow:0 0 0 22px #7f907d0c,0 0 0 44px #7f907d08;pointer-events:none}
.section:nth-of-type(even):not(.journey):not(.contact-studio)::after{right:auto;left:-54px;top:auto;bottom:64px}
.section-heading::after{content:'+';position:absolute;right:0;top:-4px;color:var(--accent);font:12px/1 monospace;opacity:.6}
.section-heading{position:relative}
.journey{overflow:visible;background-image:linear-gradient(#f6f4ef0c 1px,transparent 1px),linear-gradient(90deg,#f6f4ef0c 1px,transparent 1px);background-size:42px 42px}
.journey::after{white-space:nowrap}
.journey .timeline li{opacity:.76;transform:none}
.journey .timeline li.is-current{opacity:1;transform:translateX(9px)}
.timeline-brand{display:flex;align-items:center;gap:14px;margin:8px 0 5px}
.timeline-brand h4{margin:0}
.timeline-logo{display:grid;place-items:center;flex:0 0 58px;width:58px;height:48px;padding:6px;border:1px solid #ffffff26;background:#f6f4ef;clip-path:polygon(0 0,calc(100% - 9px) 0,100% 9px,100% 100%,0 100%)}
.timeline-logo img{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain}
.timeline li::after{content:'';position:absolute;right:0;top:20px;width:22px;height:22px;border-top:1px solid #ffffff20;border-right:1px solid #ffffff20}

/* The herbarium uses the photographs as a full-width editorial banner. */
.species-card{padding:0;display:grid;grid-template-rows:minmax(250px,42%) 1fr}
.species-photo{position:relative;z-index:1;min-height:250px;margin:0;overflow:hidden;background:var(--soft-sage)}
.species-photo::before,.species-photo::after{content:'';position:absolute;z-index:2;pointer-events:none}
.species-photo::before{inset:18px;border:1px solid #ffffff66;clip-path:polygon(0 0,22% 0,22% 1px,1px 1px,1px 22%,0 22%,0 0,100% 0,100% 22%,calc(100% - 1px) 22%,calc(100% - 1px) 1px,78% 1px,78% 0,100% 0,100% 100%,78% 100%,78% calc(100% - 1px),calc(100% - 1px) calc(100% - 1px),calc(100% - 1px) 78%,100% 78%,100% 100%,0 100%,0 78%,1px 78%,1px calc(100% - 1px),22% calc(100% - 1px),22% 100%,0 100%)}
.species-photo::after{left:50%;top:50%;width:38px;height:38px;border:1px solid #fff8;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 7px #0001}
.species-photo img{width:100%;height:100%;min-height:250px;display:block;object-fit:cover;transition:opacity .25s,transform .65s cubic-bezier(.2,.75,.2,1)}
.species-card:hover .species-photo img{transform:scale(1.025)}
.species-photo figcaption{position:absolute;z-index:3;left:18px;bottom:18px;padding:6px 9px;background:#202322d9;color:#f6f4ef;font-size:9px;letter-spacing:.7px;text-transform:uppercase}
.species-card-body{position:relative;z-index:1;padding:clamp(26px,4vw,46px)}
.species-card-body::before{content:'BOT / 01';position:absolute;right:28px;top:18px;color:#95a191;font:9px/1 monospace;letter-spacing:1.3px}
.species-card::after{z-index:0}

@media(max-width:800px){
  .section:not(.journey):not(.contact-studio)::after{width:72px;height:72px;right:-22px;opacity:.55}
  .journey{overflow:hidden;margin-inline:-10px;padding-inline:24px}
  .journey .timeline li,.journey .timeline li.is-current{opacity:1;transform:none}
  .timeline-logo{flex-basis:52px;width:52px;height:44px}
  .timeline li::after{display:none}
  .species-card{padding:0;grid-template-rows:230px auto}
  .species-card-body{padding:25px 21px 30px}
  .species-photo,.species-photo img{min-height:230px}
}

/* Precision pass: natural portrait, unified controls and reliable contrast. */
.portrait img{filter:none!important;object-position:center top}
.timeline-logo{transition:opacity .25s,filter .25s,transform .25s}
.timeline li:hover .timeline-logo{opacity:.92;filter:contrast(1.04);transform:translateY(-2px)}
.button,.contact-send,.model-toolbar button,.filters button,.menu-toggle,.menu-close{min-height:46px;border-radius:3px;padding:11px 18px;display:inline-flex;align-items:center;justify-content:center;gap:12px;font:inherit;font-size:12px;line-height:1.2;letter-spacing:.35px;transition:background .22s,color .22s,border-color .22s,transform .22s,opacity .22s}
.button:hover,.contact-send:hover,.model-toolbar button:hover,.filters button:hover{transform:translateY(-2px)}
.button:focus-visible,.contact-send:focus-visible,.model-toolbar button:focus-visible,.filters button:focus-visible,.menu-toggle:focus-visible,.menu-close:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
select,.species-selector select,.contact-panel select,.animation-speed select{color:var(--ink)!important;background-color:var(--soft-sage)!important;border:1px solid #aeb8a8!important;color-scheme:light;accent-color:var(--deep)}
select:hover{background-color:#e4e8de!important;border-color:#7d8a78!important}
select:focus,select:active{color:var(--ink)!important;background-color:#edf0e9!important;border-color:var(--accent)!important}
select option{color:#202322!important;background:#f6f4ef!important}

/* Project cards preserve information hierarchy at every content length. */
.project-card{height:auto}
.project-card>a{position:relative;height:100%;border-radius:3px;overflow:visible}
.project-caption{min-height:235px}
.project-tech{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 18px}
.project-tech span{padding:6px 8px;border:1px solid var(--line);background:var(--soft-sage);color:var(--ink);font-size:9px;line-height:1;text-transform:uppercase;letter-spacing:.75px}
.project-card .project-cta{min-height:34px}
.project-card[hidden]{display:none!important}

/* Visual continuation cards reuse the actual destination artwork. */
.next-project{display:grid;grid-template-columns:minmax(150px,260px) 1fr auto;padding:14px;gap:clamp(20px,4vw,50px);background:var(--paper)}
.next-project-media{width:100%;height:145px;overflow:hidden;background:var(--sand);font-size:0!important}
.next-project-media img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .55s cubic-bezier(.2,.75,.2,1)}
.next-project:hover .next-project-media img{transform:scale(1.05)}
.next-project-description{max-width:520px;margin-top:9px;color:var(--muted);font-size:13px;line-height:1.55}
.next-project>span:last-child{font-size:42px}

/* The legacy map keeps its useful hotspots; duplicate chrome stays out of the way. */
.legacy-map .imp-ui-element,.legacy-map .imp-object-menu{display:none!important}
.legacy-map #image-map-pro{min-height:480px}
.legacy-map .imp-wrap{max-width:100%!important}

/* Contextual drafting motifs: wood growth, flight path and mechanical datum lines. */
.page-sylviculture_ecole_boulle .species-card::before{content:'';position:absolute;z-index:2;right:24px;top:24px;width:76px;height:76px;border:1px solid #d7dfd133;border-radius:47% 53% 45% 55%;box-shadow:0 0 0 11px #d7dfd115,0 0 0 23px #d7dfd10b;pointer-events:none}
.page-jet_engine .project-intro::after,.page-robot_soudage .project-intro::after,.page-moteur .project-intro::after{content:'';position:absolute;right:3%;top:165px;width:190px;height:78px;border-top:1px solid #7f907d55;border-radius:50%;transform:rotate(-12deg);box-shadow:0 -13px 0 -12px #7f907d55,0 -26px 0 -25px #7f907d40;pointer-events:none}
.page-table_basse .case-layout,.page-table_chevet .case-layout,.page-mario_menuiserie .case-layout{background-image:repeating-radial-gradient(circle at 100% 100%,transparent 0 28px,#7f907d12 29px 30px);background-size:190px 190px;background-repeat:no-repeat;background-position:right bottom}

@media(max-width:800px){
  .next-project{grid-template-columns:110px 1fr auto;gap:15px;padding:10px}
  .next-project-media{height:105px}
  .next-project h2{font-size:22px}
  .next-project>span:last-child{font-size:30px}
  .project-caption{min-height:0}
  .page-jet_engine .project-intro::after,.page-robot_soudage .project-intro::after,.page-moteur .project-intro::after{display:none}
}
@media(max-width:480px){.next-project{grid-template-columns:88px 1fr}.next-project-media{height:88px}.next-project>span:last-child{display:none}}

/* Contextual technical drawings — forms, not navigation. */
.project-card .project-image::after{content:'';position:absolute;inset:0;z-index:1;background-repeat:no-repeat;background-position:right bottom;background-size:min(78%,390px) auto;opacity:.2;transition:opacity .35s,transform .55s;pointer-events:none}
.project-card:hover .project-image::after{opacity:.46;transform:translate(-4px,-3px)}
.project-card>a[href*="table_basse"] .project-image::after,.project-card>a[href*="table_chevet"] .project-image::after,.project-card>a[href*="mario_menuiserie"] .project-image::after{background-image:url('../content/geometry/wood-plan.svg')}
.project-card>a[href*="sylviculture"] .project-image::after{background-image:url('../content/geometry/sylviculture.svg');background-size:88% auto;opacity:.32}
.project-card[data-category~="aeronautique"] .project-image::after{background-image:url('../content/geometry/aero-flow.svg')}
.project-card[data-category~="mecanique"]:not([data-category~="aeronautique"]) .project-image::after,.project-card[data-category~="robotique"] .project-image::after{background-image:url('../content/geometry/mechanical-datum.svg')}
.project-card[data-category~="developpement"]:not(:has(a[href*="mario_menuiserie"])) .project-image::after{background-image:url('../content/geometry/digital-grid.svg')}

/* Wood pages use dimension lines and grain; aerospace uses airflow; mechanics uses datums. */
.page-table_basse .project-intro,.page-table_chevet .project-intro,.page-mario_menuiserie .project-intro{background:url('../content/geometry/wood-plan.svg') right 18%/min(42vw,520px) auto no-repeat}
.page-jet_engine .project-intro{background:url('../content/geometry/aero-flow.svg') right 22%/min(43vw,560px) auto no-repeat}
.page-robot_soudage .project-intro,.page-moteur .project-intro,.page-mecanisme_percussion .project-intro{background:url('../content/geometry/mechanical-datum.svg') right 20%/min(40vw,520px) auto no-repeat}
.page-devishelper .project-intro,.page-suivi_production .project-intro{background:url('../content/geometry/digital-grid.svg') right 20%/min(40vw,520px) auto no-repeat}

/* Botanical study: leaf veins, branching and canopy axes replace every generic circle. */
.page-sylviculture_ecole_boulle .species-card::before{content:'';position:absolute;z-index:2;inset:auto 0 0 auto;width:min(72%,620px);height:58%;border:0;border-radius:0;box-shadow:none;background:url('../content/geometry/sylviculture.svg') right bottom/contain no-repeat;opacity:.25;pointer-events:none}
.page-sylviculture_ecole_boulle .species-card::after{content:'LEAF / BRANCH / GROWTH';position:absolute;z-index:2;right:25px;bottom:18px;width:auto;height:auto;border:0;border-radius:0;box-shadow:none;background:none;color:#aab6a5;font:8px/1 monospace;letter-spacing:1.3px}
.page-sylviculture_ecole_boulle .map-primary{background-color:var(--soft-sage);background-image:url('../content/geometry/sylviculture.svg');background-repeat:no-repeat;background-position:right top;background-size:min(35%,420px) auto}
.page-sylviculture_ecole_boulle .species-photo::after{border-radius:48% 52% 48% 52%;transform:translate(-50%,-50%) rotate(35deg);box-shadow:none}

@media(max-width:800px){
  .project-card .project-image::after{background-size:92% auto;opacity:.24}
  .project-page .project-intro{background-size:76vw auto;background-position:135% 18%;background-blend-mode:multiply}
  .page-sylviculture_ecole_boulle .species-card::before{width:94%;height:45%;opacity:.18}
  .page-sylviculture_ecole_boulle .map-primary{background-size:75% auto}
}

/* Footer language control: clear active state on every page. */
footer .language-switch{order:-1;margin:0 12px 0 0;padding:4px;border:1px solid var(--line);border-radius:3px;background:var(--paper);color:var(--ink);opacity:1}
footer .language-switch button{min-width:38px;height:34px;color:var(--ink)!important;background:transparent!important;border-radius:2px}
footer .language-switch button[aria-pressed="true"]{background:var(--deep)!important;color:#f6f4ef!important}
footer .language-switch button:hover:not([aria-pressed="true"]){background:var(--soft-sage)!important}
footer .language-switch span{color:var(--muted)}

/* Journey logos sit directly in the composition, without pasted-on tiles. */
.timeline-logo{flex-basis:72px;width:72px;height:48px;padding:4px;border:0;background:transparent;clip-path:none;overflow:visible}
.timeline-logo img{filter:grayscale(1) brightness(0) invert(1);opacity:.68;mix-blend-mode:screen;transition:filter .25s,opacity .25s,transform .25s}
.timeline li:hover .timeline-logo{filter:none;transform:none}
.timeline li:hover .timeline-logo img{filter:grayscale(.2) brightness(1.15);opacity:1;transform:translateY(-1px)}

/* A distinct drawing treatment for every project card. */
.project-card>a[href*="robot_soudage"] .project-image::after{background-position:92% 78%;background-size:58% auto;transform:rotate(-4deg)}
.project-card>a[href*="jet_engine"] .project-image::after{background-position:100% 60%;background-size:72% auto;transform:rotate(2deg)}
.project-card>a[href*="moteur.html"] .project-image::after{background-position:8% 96%;background-size:55% auto;transform:scaleX(-1)}
.project-card>a[href*="mecanisme_percussion"] .project-image::after{background-position:96% 94%;background-size:48% auto;transform:rotate(8deg)}
.project-card>a[href*="sylviculture"] .project-image::after{background-position:50% 100%;background-size:94% auto;transform:none}
.project-card>a[href*="table_basse"] .project-image::after{background-position:100% 100%;background-size:60% auto;transform:rotate(-2deg)}
.project-card>a[href*="table_chevet"] .project-image::after{background-position:96% 92%;background-size:54% auto;transform:scaleX(-1)}
.project-card>a[href*="mario_menuiserie"] .project-image::after{background-position:5% 95%;background-size:48% auto;transform:rotate(4deg)}
.project-card>a[href*="suivi_production"] .project-image::after{background-position:100% 100%;background-size:68% auto;transform:rotate(-3deg)}
.project-card>a[href*="devishelper"] .project-image::after{background-position:5% 90%;background-size:62% auto;transform:scaleX(-1) rotate(3deg)}
.project-card:hover .project-image::after{opacity:.48}

/* Previous / next controls for the woodworking sequence. */
.wood-project-nav{display:grid;grid-template-columns:1fr 1fr;gap:1px;margin:0 0 24px;padding:1px;background:var(--line)}
.wood-project-nav a{position:relative;display:flex;flex-direction:column;justify-content:center;min-height:104px;padding:22px 26px;background:var(--paper);transition:background .25s,color .25s,transform .25s}
.wood-project-nav a:last-child{text-align:right;align-items:flex-end}
.wood-project-nav a::after{content:'';position:absolute;inset:8px;border-top:1px solid transparent;border-bottom:1px solid transparent;transition:border-color .25s}
.wood-project-nav a:hover{z-index:1;background:var(--deep);color:#f6f4ef;transform:translateY(-2px)}
.wood-project-nav a:hover::after{border-color:#c7d2bc55}
.wood-project-nav span{margin-bottom:8px;color:var(--muted);font-size:9px;text-transform:uppercase;letter-spacing:1.2px}
.wood-project-nav a:hover span{color:#c7d2bc}
.wood-project-nav strong{font-size:18px;font-weight:500}

@media(max-width:800px){
  footer>div{flex-wrap:wrap}
  footer .language-switch{width:auto;margin-right:5px}
  .timeline-logo{flex-basis:62px;width:62px;height:44px}
  .wood-project-nav a{min-height:90px;padding:18px}
  .wood-project-nav strong{font-size:15px}
}
@media(max-width:460px){.wood-project-nav{grid-template-columns:1fr}.wood-project-nav a:last-child{text-align:left;align-items:flex-start}}



/* Remove the cropped airflow ornament from the Jet Engine heading. */
.page-jet_engine .project-intro{background-image:none}
.page-jet_engine .project-intro::after{display:none}


/* Lightweight sparks anchored to the welding table inside model-viewer. */
.welding-spark-anchor{position:relative;display:block;width:2px;height:2px;overflow:visible;pointer-events:none;filter:drop-shadow(0 0 4px #ffb347)}
.welding-spark-anchor::before{content:'';position:absolute;left:50%;top:50%;width:8px;height:8px;border-radius:50%;background:#fff;opacity:0;transform:translate(-50%,-50%)}
.welding-spark-anchor:has(.welding-spark-particle)::before{animation:weld-flash .2s ease-out}
.welding-spark-particle{--spark-x:20px;--spark-y:-25px;--spark-delay:0ms;--spark-size:2px;position:absolute;left:0;top:0;width:var(--spark-size);height:calc(var(--spark-size) * 3.5);border-radius:50%;background:linear-gradient(#fff,#ffd06a 45%,#d56b2a);transform-origin:center top;animation:weld-spark .52s cubic-bezier(.1,.7,.3,1) var(--spark-delay) both;box-shadow:0 0 5px #ffad45}
@keyframes weld-spark{0%{opacity:0;transform:translate(0,0) rotate(0deg) scaleY(.4)}12%{opacity:1}100%{opacity:0;transform:translate(var(--spark-x),var(--spark-y)) rotate(140deg) scaleY(1)}}
@keyframes weld-flash{0%{opacity:1;transform:translate(-50%,-50%) scale(.4)}100%{opacity:0;transform:translate(-50%,-50%) scale(2.8)}}
@media(prefers-reduced-motion:reduce){.welding-spark-anchor{display:none!important}}

/* Transparent cutaway controls. */
.model-toolbar .toggle-transparency{border-color:var(--accent);color:var(--deep);font-weight:600}
.model-toolbar .toggle-transparency[aria-pressed="true"]{background:var(--deep);border-color:var(--deep);color:#f6f4ef}

/* The legacy tree map uses the full canvas: no rounded corner and no reserved hidden menu. */
.legacy-map .imp-container{padding-right:0!important;padding-left:0!important}
.legacy-map .imp-canvas,.legacy-map .imp-canvas-wrap{border-radius:0!important}
.legacy-map .imp-canvas-wrap,.legacy-map .imp-canvas{width:100%!important}


/* Book École Boulle: original spreads presented as a quiet editorial case study. */
.project-page .project-intro::before,.project-page .project-intro::after{content:none!important;display:none!important}
.book-page .book-intro{padding-bottom:70px}
.book-actions{display:flex;align-items:center;gap:28px;flex-wrap:wrap;margin:34px 0 46px}
.book-hero{position:relative;margin:0;border:1px solid var(--line);background:var(--deep);overflow:hidden}
.book-hero img{display:block;width:100%;height:auto}
.book-statement{display:grid;grid-template-columns:minmax(220px,.65fr) minmax(320px,1fr) minmax(280px,.85fr);gap:48px;align-items:start;padding:85px 0;border-block:1px solid var(--line)}
.book-statement h2{font-size:clamp(34px,4vw,58px);line-height:1.04;letter-spacing:-2px}
.book-statement>p:last-child{font-size:16px;line-height:1.85;color:var(--muted)}
.book-chapters{padding:95px 0 70px}
.book-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:56px 28px}
.book-spread{margin:0;min-width:0}
.book-spread img{display:block;width:100%;height:auto;aspect-ratio:1.414/1;object-fit:cover;border:1px solid var(--line);background:#fff;transition:transform .55s cubic-bezier(.2,.7,.2,1),box-shadow .55s}
.book-spread:hover img{transform:translateY(-5px);box-shadow:0 22px 55px #2023221c}
.book-spread figcaption{display:grid;grid-template-columns:42px 1fr;gap:12px;margin-top:17px;padding-top:14px;border-top:1px solid var(--line)}
.book-spread figcaption>span{font-size:10px;letter-spacing:1.4px;color:var(--accent)}
.book-spread strong{display:block;font-size:18px;font-weight:550;margin-bottom:5px}
.book-spread small{font-size:11px;color:var(--muted);line-height:1.5}
.book-values{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin:35px 0 95px;background:var(--line);border:1px solid var(--line)}
.book-values>div{padding:34px;background:var(--soft-sage);min-height:210px}
.book-values span{display:block;color:var(--accent);font-size:10px;letter-spacing:1.5px;margin-bottom:35px}
.book-values strong{display:block;font-size:24px;font-weight:500;margin-bottom:13px}
.book-values p{font-size:13px;line-height:1.75;color:var(--muted)}
@media(max-width:900px){.book-statement{grid-template-columns:1fr 1fr}.book-statement>.eyebrow{grid-column:1/-1}.book-values>div{padding:25px}}
@media(max-width:680px){.book-actions{align-items:flex-start;flex-direction:column}.book-statement{grid-template-columns:1fr;padding:58px 0}.book-statement>.eyebrow{grid-column:auto}.book-grid{grid-template-columns:1fr;gap:42px}.book-chapters{padding-top:65px}.book-values{grid-template-columns:1fr}.book-values>div{min-height:0}.book-spread strong{font-size:17px}}
@media(prefers-reduced-motion:reduce){.book-spread img{transition:none}.book-spread:hover img{transform:none}}

/* Immersive project reel inspired by editorial, full-screen scroll storytelling. */
.project-reel{--reel-progress:0;--reel-local:0;position:relative;height:520vh;margin-inline:calc(50% - 50vw);background:var(--deep);color:#f6f4ef}
.project-reel-sticky{position:sticky;top:0;height:100svh;min-height:680px;overflow:hidden;padding:clamp(95px,10vh,125px) max(48px,calc((100vw - 1280px)/2)) 54px;isolation:isolate}
.project-reel-sticky::before{content:'';position:absolute;z-index:-2;inset:0;background:radial-gradient(circle at calc(18% + var(--reel-progress)*64%) 48%,#89977a45 0,transparent 38%),linear-gradient(135deg,#263029,#17201b);transform:scale(calc(1 + var(--reel-local)*.035))}
.project-reel-sticky::after{content:'';position:absolute;z-index:-1;inset:0;background-image:linear-gradient(#ffffff0a 1px,transparent 1px),linear-gradient(90deg,#ffffff0a 1px,transparent 1px);background-size:68px 68px;mask-image:linear-gradient(90deg,transparent,#000 24%,#000 76%,transparent);transform:translate3d(calc(var(--reel-progress)*-68px),calc(var(--reel-progress)*34px),0)}
.project-reel-head{position:relative;z-index:3;display:flex;justify-content:space-between;padding-bottom:16px;border-bottom:1px solid #f6f4ef45;text-transform:uppercase;font-size:10px;letter-spacing:2px}
.project-reel-visuals{position:absolute;left:8vw;top:18%;width:min(50vw,720px);height:64%;perspective:1000px}
.project-reel-frame{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:transparent;transform:translate3d(0,calc((.5 - var(--reel-local))*2%),0) scale(1);filter:drop-shadow(0 26px 22px #0005);user-select:none;pointer-events:none}
.project-reel-readout{position:absolute;left:0;bottom:4%;padding-left:15px;border-left:1px solid #f6f4ef66;color:#d7dcd5;text-transform:uppercase;letter-spacing:1.4px;pointer-events:none}.project-reel-readout small{font-size:7px;color:#aeb8aa}
.project-reel-copy{position:absolute;z-index:2;right:max(48px,calc((100vw - 1280px)/2));top:31%;width:min(39vw,520px);min-height:310px}
.project-reel-item{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;opacity:0;transform:translate3d(0,70px,0);transition:opacity .55s,transform .8s cubic-bezier(.16,.75,.18,1)}
.project-reel-item.is-active{opacity:1;transform:translate3d(0,calc((.5 - var(--reel-local))*20px),0)}
.project-reel-item p{text-transform:uppercase;font-size:10px;letter-spacing:2px;color:#c9d1c4;margin-bottom:20px}
.project-reel-item h2{font-size:clamp(55px,6vw,92px);font-weight:500;letter-spacing:-4px;line-height:.92;text-wrap:balance}
.project-reel-summary{display:block;max-width:430px;margin-top:24px;font-size:15px;line-height:1.7;color:#d7dcd5}
.project-reel-tech{display:flex;flex-wrap:wrap;gap:7px;margin-top:20px;padding:0;list-style:none}.project-reel-tech li{padding:7px 10px;border:1px solid #d7dcd547;font-size:9px;line-height:1;text-transform:uppercase;letter-spacing:1.2px;color:#eef1eb;background:#ffffff08}
.project-reel-link{position:absolute;z-index:4;right:max(48px,calc((100vw - 1280px)/2));bottom:11%;display:flex;align-items:center;justify-content:space-between;width:min(39vw,520px);padding:17px 0;border-block:1px solid #f6f4ef55;font-size:12px;text-transform:uppercase;letter-spacing:1.5px}
.project-reel-link b{font-size:22px;font-weight:400;transition:transform .3s}.project-reel-link:hover b{transform:translate(5px,-5px)}
.project-reel-track{position:absolute;z-index:4;left:8vw;bottom:8%;width:min(50vw,720px);height:1px;background:#ffffff35}.project-reel-track i{display:block;width:100%;height:2px;background:#d8ded1;transform:scaleX(var(--reel-progress));transform-origin:left}
.site-scroll-meter{--page-progress:0;position:fixed;z-index:45;right:18px;top:50%;translate:0 -50%;display:grid;justify-items:center;gap:10px;color:var(--accent);pointer-events:none;mix-blend-mode:multiply}.site-scroll-meter span{font-size:8px;letter-spacing:2px;text-transform:uppercase;writing-mode:vertical-rl}.site-scroll-meter i{display:block;width:1px;height:76px;background:linear-gradient(to bottom,var(--accent) calc(var(--page-progress)*100%),#7f907d38 0)}
@media(max-width:1000px){.project-reel-visuals{left:5vw;width:53vw}.project-reel-copy,.project-reel-link{right:5vw;width:39vw}.project-reel-item h2{font-size:clamp(46px,6vw,70px)}}
@media(max-width:800px){.project-reel{display:none}.site-scroll-meter{display:none}}
@media(prefers-reduced-motion:reduce){.project-reel{display:none}.site-scroll-meter{display:none}.project-reel-frame,.project-reel-item{transition:none}}
.header.reel-header{background:transparent;color:#fff;box-shadow:none;backdrop-filter:none}.header.reel-header .header-inner{border-color:#ffffff35}.header.reel-header .brand-logo{filter:invert(1)}.header.reel-header .nav-contact,.header.reel-header .menu-toggle{border-color:#ffffff70}.header.reel-header .language-switch{border-color:#ffffff55;background:#ffffff0d}.header.reel-header .language-switch button{color:#fff}.header.reel-header .language-switch button[aria-pressed="true"]{background:#fff;color:var(--ink)}

/* Technical measuring-rail scrollbar, echoing the site's CAD language. */
html{scrollbar-width:thin;scrollbar-color:#415244 #e9e7e0;scrollbar-gutter:stable}
html::-webkit-scrollbar{width:14px;height:14px}
html::-webkit-scrollbar-track{background-color:#e9e7e0;background-image:repeating-linear-gradient(to bottom,transparent 0,transparent 11px,#8a96804d 11px,#8a96804d 12px);border-left:1px solid #bcc3b7}
html::-webkit-scrollbar-thumb{min-height:64px;background:linear-gradient(to right,#e9e7e0 0 3px,#415244 3px 10px,#e9e7e0 10px);border-block:1px solid #415244;border-radius:0}
html::-webkit-scrollbar-thumb:hover{background:linear-gradient(to right,#e9e7e0 0 2px,#2e4034 2px 11px,#e9e7e0 11px)}
html::-webkit-scrollbar-thumb:active{background:linear-gradient(to right,#e9e7e0 0 2px,#a9512b 2px 11px,#e9e7e0 11px);border-color:#a9512b}
html::-webkit-scrollbar-corner{background:#e9e7e0;border:1px solid #bcc3b7}
html::-webkit-scrollbar-button{display:none}
html.reel-scrollbar{scrollbar-color:#dce3d7 #18231d}
html.reel-scrollbar::-webkit-scrollbar-track{background-color:#18231d;background-image:repeating-linear-gradient(to bottom,transparent 0,transparent 11px,#e8eee71f 11px,#e8eee71f 12px);border-left-color:#ffffff2e}
html.reel-scrollbar::-webkit-scrollbar-thumb{background:linear-gradient(to right,#18231d 0 3px,#dce3d7 3px 10px,#18231d 10px);border-block-color:#dce3d7}
html.reel-scrollbar::-webkit-scrollbar-thumb:hover{background:linear-gradient(to right,#18231d 0 2px,#fff 2px 11px,#18231d 11px)}

/* First-session entrance: scrolling completes the technical loading sequence. */
body.intro-locked{overflow:hidden}
.site-intro{--intro-progress:0;position:fixed;z-index:999999;inset:0;overflow:hidden;background:#18231d;color:#f6f4ef;isolation:isolate;cursor:ns-resize;transition:opacity .65s ease,visibility .65s,clip-path .85s cubic-bezier(.76,0,.24,1);clip-path:inset(0)}
.site-intro.is-complete{opacity:0;visibility:hidden;clip-path:inset(0 0 100% 0)}
.site-intro-grid{position:absolute;z-index:-2;inset:0;background-image:linear-gradient(#ffffff0a 1px,transparent 1px),linear-gradient(90deg,#ffffff0a 1px,transparent 1px);background-size:64px 64px;transform:translate3d(calc(var(--intro-progress)*-64px),calc(var(--intro-progress)*32px),0)}
.site-intro::before,.site-intro::after{content:'';position:absolute;z-index:-1;pointer-events:none}.site-intro::before{inset:-30%;background:radial-gradient(circle at calc(25% + var(--intro-progress)*50%) 50%,#8b997b38 0,transparent 37%)}.site-intro::after{left:7vw;right:7vw;top:88px;height:1px;background:#ffffff35}
.site-intro-top{position:absolute;top:42px;left:7vw;right:7vw;display:flex;justify-content:space-between;gap:30px;font-size:9px;letter-spacing:2px;text-transform:uppercase;color:#cbd3c6}
.site-intro-center{position:absolute;left:7vw;top:50%;translate:0 -54%;display:grid;gap:34px}.site-intro-center img{width:min(42vw,520px);height:auto;filter:invert(1);transform:translateX(calc((1 - var(--intro-progress))*-28px));opacity:calc(.55 + var(--intro-progress)*.45)}.site-intro-center p{font-size:clamp(24px,2.8vw,44px);line-height:1.08;letter-spacing:-1.5px;color:#d8ded4}
.site-intro-orbit{position:absolute;right:9vw;top:50%;width:min(36vw,510px);aspect-ratio:1;translate:0 -50%;transform:rotate(calc(var(--intro-progress)*180deg));transition:transform .08s linear}.site-intro-orbit::before,.site-intro-orbit::after,.site-intro-orbit i{content:'';position:absolute;border:1px solid #cad4c433;border-radius:50%}.site-intro-orbit::before{inset:0}.site-intro-orbit::after{inset:16%}.site-intro-orbit i:nth-child(1){inset:32%}.site-intro-orbit i:nth-child(2){left:50%;top:-7px;width:14px;height:14px;background:#a9512b;border-color:#a9512b}.site-intro-orbit i:nth-child(3){inset:49%;background:#f6f4ef;border:0}.site-intro-orbit i:nth-child(1)::before{content:'';position:absolute;left:50%;top:-34%;width:1px;height:168%;background:#cad4c426}.site-intro-orbit i:nth-child(1)::after{content:'';position:absolute;top:50%;left:-34%;height:1px;width:168%;background:#cad4c426}
.site-intro-bottom{position:absolute;left:7vw;right:7vw;bottom:46px;display:grid;grid-template-columns:auto 1fr 72px;align-items:end;gap:34px}.site-intro-bottom>div:first-child{display:grid;gap:6px;text-transform:uppercase;letter-spacing:1.5px}.site-intro-bottom span{font-size:10px}.site-intro-bottom small{font-size:7px;color:#98a494}.site-intro-progress{height:1px;margin-bottom:9px;background:#ffffff2e;overflow:hidden}.site-intro-progress i{display:block;width:100%;height:2px;background:#f6f4ef;transform:scaleX(var(--intro-progress));transform-origin:left}.site-intro-bottom strong{font-size:42px;line-height:.8;font-weight:400;font-variant-numeric:tabular-nums;letter-spacing:-2px}.site-intro-bottom strong::after{content:'/100';font-size:8px;letter-spacing:1px;color:#98a494;margin-left:4px}
@media(max-width:700px){.site-intro-top{top:28px;left:24px;right:24px;flex-direction:column;gap:7px}.site-intro::after{top:83px;left:24px;right:24px}.site-intro-center{left:24px;right:24px;top:43%;gap:25px}.site-intro-center img{width:min(82vw,430px)}.site-intro-center p{font-size:30px}.site-intro-orbit{right:-28vw;top:48%;width:90vw;opacity:.58}.site-intro-bottom{left:24px;right:24px;bottom:30px;grid-template-columns:1fr 58px;gap:20px}.site-intro-bottom>div:first-child{grid-column:1/-1}.site-intro-bottom strong{font-size:34px}}
@media(prefers-reduced-motion:reduce){.site-intro,.site-intro-grid,.site-intro-center img,.site-intro-orbit{transition:none}}

/* ================================================================
   OBSIDIAN / COPPER — complete visual direction inspired by the
   supplied metallic-flow artwork. Existing content stays intact.
   ================================================================ */
:root{color-scheme:dark;--paper:#080808;--ink:#f3f0eb;--muted:#aaa6a0;--line:#ffffff1c;--sand:#151310;--accent:#c67b43;--deep:#050505;--soft-sage:#11100f;--copper:#d08a50;--copper-bright:#ffc07d;--metal:#bbb8b4;--panel:#100f0e;--pointer-x:0;--pointer-y:0}
html{scrollbar-color:#c67b43 #090909}
body{background:#080808;color:var(--ink);background-image:radial-gradient(circle at 78% 18%,#d08a500b,transparent 28%),linear-gradient(90deg,#ffffff0f 1px,transparent 1px),linear-gradient(#ffffff0b 1px,transparent 1px);background-size:auto,96px 96px,96px 96px}
body::selection{background:#c67b43;color:#080808}
.metal-atmosphere{position:fixed;z-index:-1;inset:0;overflow:hidden;pointer-events:none;opacity:.7}.metal-atmosphere i{position:absolute;display:block;width:72vw;height:32vw;border:1px solid #d08a504f;border-radius:50%;filter:drop-shadow(0 0 12px #d08a502e);transition:transform .7s cubic-bezier(.2,.7,.2,1)}.metal-atmosphere i:nth-child(1){right:-24vw;top:20vh;rotate:-28deg;transform:translate(calc(var(--pointer-x)*22px),calc(var(--pointer-y)*18px))}.metal-atmosphere i:nth-child(2){left:-34vw;top:58vh;rotate:24deg;border-color:#ffffff28;transform:translate(calc(var(--pointer-x)*-16px),calc(var(--pointer-y)*-12px))}.metal-atmosphere i:nth-child(3){right:-42vw;top:105vh;rotate:-44deg;width:88vw;height:46vw;border-color:#d08a5038;box-shadow:0 0 0 18px #ffffff05,0 0 0 19px #ffffff18}
.section{border-color:var(--line)}.section-heading .eyebrow,.section-intro,.muted{color:var(--muted)}.eyebrow{color:#d8a375}.eyebrow>span{background:var(--copper)}
h1,h2,h3,h4{font-weight:400}.section h2,.project-intro h1{letter-spacing:-2.4px}
.header,.header.scrolled,.project-page .header{background:#0808089c;color:#fff;box-shadow:0 1px 0 #ffffff18;backdrop-filter:blur(18px) saturate(120%)}.header-inner,.header.scrolled .header-inner,.project-page .header-inner{border-color:#ffffff20}.header .brand-logo,.header.scrolled .brand-logo,.project-page .header .brand-logo{filter:invert(1)}.header .nav-contact,.header.scrolled .nav-contact,.project-page .nav-contact,.menu-toggle,.scrolled .menu-toggle,.project-page .menu-toggle{border-color:#d08a5066}.header nav a:hover{color:#efad73;opacity:1}.language-switch{background:#ffffff08!important;border-color:#ffffff20!important}.language-switch button{color:#c9c5bf}.language-switch button[aria-pressed=true]{background:var(--copper)!important;color:#080808!important}
.hero{position:relative;overflow:hidden;background:radial-gradient(ellipse at 83% 38%,#d08a501d 0,transparent 25%),radial-gradient(ellipse at 72% 78%,#ffffff0b 0,transparent 31%),linear-gradient(112deg,#020202 0%,#070707 54%,#0d0b09 100%);color:#fff}.hero::before{content:'';position:absolute;z-index:0;right:-8vw;top:-34%;width:min(67vw,960px);height:148%;border:1px solid #ffffff38;border-radius:54% 46% 61% 39%/36% 58% 42% 64%;box-shadow:inset 34px -10px 48px #ffffff0d,inset -18px 12px 38px #d08a501d,-3px 2px 12px #d08a503b;transform:translate(calc(var(--pointer-x)*-18px),calc(var(--pointer-y)*-14px)) rotate(-17deg);transition:transform .7s cubic-bezier(.2,.7,.2,1);pointer-events:none}.hero::after{content:'';position:absolute;z-index:0;right:-18vw;bottom:-38%;width:min(82vw,1120px);height:74%;border:1px solid transparent;border-top-color:#d08a508f;border-left-color:#ffffff30;border-radius:50%;box-shadow:0 -2px 14px #d08a5038,inset 0 18px 45px #ffffff08;transform:translate(calc(var(--pointer-x)*14px),calc(var(--pointer-y)*10px)) rotate(13deg);transition:transform .85s cubic-bezier(.2,.7,.2,1);pointer-events:none}.hero-content{z-index:1}.hero h1{font-weight:300;letter-spacing:-6px;text-transform:uppercase}.hero h1 em{color:var(--copper-bright);font-weight:300}.hero .intro{color:#c9c5bf}.hero-copy::before{border-color:#d08a5066!important}.hero-geometry{filter:sepia(1) saturate(1.8);opacity:.7}.portrait img{border-color:#d08a506e;filter:grayscale(.7) sepia(.18)}.scroll-cue>span{border-color:#d08a5073;color:var(--copper-bright)}
.button{border-radius:0}.button.dark,.contact-send{background:linear-gradient(135deg,#d08a50,#9d552b);color:#090909;border-color:#e9ad72}.button.dark:hover,.contact-send:hover{background:#f0ae70}.button.light{background:#f0ece5;color:#090909}.text-link{border-color:#d08a50}.inline-link{color:#df9a60}
.expertise{border-color:var(--line);color:#cac6c0}.expertise span+span::before{color:var(--copper)}
.journey,.skills{background:linear-gradient(145deg,#12110f,#080808 62%);border:1px solid #ffffff19;border-radius:0;box-shadow:24px 24px 0 #c67b430a;color:var(--ink)}.journey::before{background:linear-gradient(90deg,var(--copper),transparent)!important}.journey::after{color:#d08a5069}.journey .timeline{border-color:#d08a505c}.journey .timeline li::before{background:var(--copper);box-shadow:0 0 0 5px #0b0a09,0 0 18px #d08a5082}.journey .timeline-date>span,.tags span{border:1px solid #d08a504d;background:#d08a500d;color:#d9ad87;border-radius:0}.journey .cv-card,.cv-card{background:#15120f;border-color:#d08a503d;color:var(--ink);border-radius:0}.journey .cv-card span,.cv-card span{color:var(--muted)}.journey .cv-card strong,.cv-card strong{color:#fff}
.skills-grid{background:#ffffff18;border-color:#ffffff18}.skills-grid article{background:#0d0c0b;color:var(--ink)}.skills-grid article::before{border-color:#d08a5059;color:var(--copper-bright);border-radius:50%}.skills-grid article::after{border-color:#d08a5033;box-shadow:0 0 0 24px #d08a5008}.skills-grid article:hover{background:#17130f;box-shadow:0 20px 60px #000b}.skills-grid p,.timeline p{color:var(--muted)}
.filters button{color:#bdb8b2;border-radius:0}.filters button:hover{background:#d08a5012;color:#fff}.filters button[aria-pressed=true]{background:#d08a5022;border-color:#d08a5066;color:#ffc18a}
.project-card>a{background:#0c0b0a;border-color:#ffffff1c}.project-card>a:hover{box-shadow:0 26px 70px #000c}.project-card>a::before,.project-card>a::after{border-color:var(--copper)}.project-image{background:radial-gradient(circle at 50% 40%,#2b2119,#0a0a09 65%);border-radius:0}.project-image::before{content:'';position:absolute;z-index:1;inset:0;pointer-events:none;background:linear-gradient(120deg,transparent 35%,#d08a501d 50%,transparent 62%);transform:translateX(-120%);transition:transform .8s ease}.project-card:hover .project-image::before{transform:translateX(120%)}.project-image img{filter:saturate(.86) contrast(1.05)}.project-caption{border-color:var(--line)}.project-caption p,.project-summary{color:var(--muted)}.card-arrow{border-color:#d08a5066;color:var(--copper-bright)}.project-card a:hover .card-arrow{background:var(--copper);color:#080808}.project-tech span,.project-reel-tech li{border-color:#d08a5052!important;color:#d9ad87!important;background:#d08a500b!important}
.contact,.contact-form,.contact-panel,.contact-studio,.reference-link,.case-sidebar,.map-info{background:linear-gradient(145deg,#16120f,#0b0a09)!important;border:1px solid #d08a5036!important;color:var(--ink);border-radius:0!important}.contact::before,.contact-studio::before{border-color:#d08a502e!important}.contact-links,.contact-intro p,.contact-panel p{color:var(--muted)}.form-field input,.form-field textarea,.form-field select,.contact-form input,.contact-form textarea,.contact-form select{background:#070707!important;color:#f5f1eb!important;border-color:#ffffff22!important;border-radius:0!important}.form-field input:focus,.form-field textarea:focus,.form-field select:focus{border-color:var(--copper)!important;box-shadow:0 0 0 3px #d08a5018}.form-field label{color:#c9c2ba}.form-status{color:#d9ad87}
.project-intro::before{border-color:#d08a503d!important;box-shadow:0 0 0 28px #d08a5008!important}.back-link,.project-lead,.project-meta span,.case-article p,.case-article li{color:var(--muted)}.project-intro .eyebrow,.case-sidebar nav a>span,.next-project>span{color:var(--copper)}.project-meta{border-color:var(--line)}.project-cover,.model-stage,.model-stage model-viewer,.model-toolbar{background:#0d0c0b!important;border-color:#ffffff1d}.project-cover>span{background:#0a0908e8;color:#e9dfd5;border:1px solid #d08a5044}.model-poster{filter:brightness(.72) sepia(.12)}.model-toolbar p,.model-launch>p{color:var(--muted)}.model-toolbar button{border-color:#d08a5052;color:#e8c4a3}.case-sidebar{padding:28px 24px 24px}.case-sidebar>.eyebrow{margin-bottom:18px}.case-sidebar nav{margin-inline:-24px;margin-bottom:14px}.case-sidebar nav a{gap:14px;padding:16px 24px;border-color:var(--line)}.case-sidebar>.inline-link{width:100%;padding:12px 0 2px;line-height:1.45}.case-article strong{color:#fff}.case-article img{border-radius:0;border:1px solid #ffffff14}.next-project{border-color:var(--line)}.next-project:hover{color:#ffc18a}
.tree-map,.map-primary .tree-map{background:#d8d3ca;border-color:#d08a5059}.map-info select{background:#090909;color:#eee8e1;border-color:#d08a504d}.map-marker{background:#15100c;color:#fff;border-color:#e8b07c}.map-marker[aria-pressed=true]{background:#b56634;box-shadow:0 0 0 5px #d08a5038}.plant-image,.tree-species-card img{border-radius:0}
.book-page,.book-spread,.book-viewer{background:#0c0b0a!important;border-color:#ffffff1b!important}.book-controls button{border-color:#d08a5050!important;color:#e3b78f!important}
footer{border-color:var(--line);color:#c9c4bd}.footer-name small{color:#8f8a84}
.mobile-dialog{background:#0a0908;color:#f4efe9;border-left:1px solid #d08a5040}.mobile-dialog::backdrop{background:#000c}.mobile-dialog nav a,.dialog-top{border-color:#ffffff1c}.mobile-dialog nav a::after,.dialog-bottom .eyebrow{color:var(--copper)}.menu-close{border-color:#d08a5052}
.mobile-dialog .brand-logo{filter:invert(1)!important}
.project-reel,.project-reel-sticky{background:#060606}.project-reel-sticky::before{background:radial-gradient(circle at calc(18% + var(--reel-progress)*64%) 48%,#d08a5033 0,transparent 38%),linear-gradient(135deg,#120e0b,#030303)}.project-reel-sticky::after{background-image:linear-gradient(#ffffff0a 1px,transparent 1px),linear-gradient(90deg,#ffffff0a 1px,transparent 1px)}.project-reel-track i{background:linear-gradient(90deg,#fff,var(--copper))}.project-reel-readout{border-color:#d08a5070}.project-reel-link{border-color:#d08a5052}
.site-intro{background:#050505}.site-intro::before{background:radial-gradient(circle at calc(25% + var(--intro-progress)*50%) 50%,#d08a5038 0,transparent 37%)}.site-intro-orbit::before,.site-intro-orbit::after,.site-intro-orbit i{border-color:#d08a5044}.site-intro-orbit i:nth-child(2){background:var(--copper);border-color:var(--copper)}.site-intro-progress i{background:linear-gradient(90deg,#fff,var(--copper))}
html::-webkit-scrollbar-track{background-color:#090909;background-image:repeating-linear-gradient(to bottom,transparent 0,transparent 11px,#d08a5033 11px,#d08a5033 12px);border-color:#2b2119}html::-webkit-scrollbar-thumb{background:linear-gradient(to right,#090909 0 3px,#c67b43 3px 10px,#090909 10px);border-color:#c67b43}
@media(max-width:800px){body{background-color:#080808;background-image:radial-gradient(circle at 80% 10%,#d08a5012,transparent 24%)}.hero{background:radial-gradient(ellipse at 88% 24%,#d08a5022,transparent 27%),linear-gradient(155deg,#030303,#0b0907)}.hero::before{right:-58vw;top:-18%;width:125vw;height:105%;opacity:.72}.hero::after{right:-70vw;bottom:-8%;width:150vw;height:58%;opacity:.8}.header,.header.scrolled,.project-page .header{background:#080808e8}.journey,.skills{box-shadow:10px 10px 0 #c67b430d}.metal-atmosphere{opacity:.4}.project-image img{filter:saturate(.9)}.case-sidebar{padding:24px 20px 20px}.case-sidebar nav{margin-inline:-20px}.case-sidebar nav a{padding:15px 20px}}
@media(prefers-reduced-motion:reduce){.metal-atmosphere i,.hero::before,.hero::after{transform:none!important}.project-image::before{display:none}}
.page-paused *,.page-paused *::before,.page-paused *::after{animation-play-state:paused!important}
.section,.journey,.skills,#projets,.contact-studio,.case-layout,.next-project{content-visibility:auto;contain-intrinsic-size:auto 760px}

/* Final control pass — consistent contrast and interaction across every page. */
:where(button,.button,select,input,textarea){font-family:inherit}
:where(button,.button,.text-link,.inline-link,select,input,textarea){transition:border-color .2s ease,background-color .2s ease,color .2s ease,box-shadow .2s ease,transform .2s ease}
:where(button,.button,select,input,textarea):focus-visible{outline:2px solid var(--copper-bright)!important;outline-offset:3px}
:where(button,.button)[disabled]{cursor:not-allowed;opacity:.55;transform:none!important}

select,.species-selector select,.map-info select,.contact-panel select,.animation-speed select{min-height:48px;padding:11px 42px 11px 14px!important;color:#f3f0eb!important;background-color:#0a0908!important;border:1px solid #d08a5066!important;border-radius:0!important;color-scheme:dark;accent-color:var(--copper)}
select:hover,.species-selector select:hover,.map-info select:hover,.contact-panel select:hover,.animation-speed select:hover{color:#fff!important;background-color:#15110e!important;border-color:#d99a67!important}
select:focus,select:active{color:#fff!important;background-color:#0a0908!important;border-color:var(--copper-bright)!important;box-shadow:0 0 0 3px #d08a501c!important}
select option{color:#f3f0eb!important;background:#0d0c0b!important}

.filters button{background:#0a0908;border-color:#ffffff24;color:#d1cbc4}.filters button:hover{background:#17120f;border-color:#d08a506b;color:#fff}.filters button[aria-pressed=true]{background:var(--copper)!important;border-color:#e3a36d!important;color:#090909!important;box-shadow:inset 0 0 0 1px #ffffff20}
.model-toolbar button,.book-controls button{background:#0a0908;color:#e9c3a1;border-color:#d08a505e!important}.model-toolbar button:hover,.book-controls button:hover{background:#21170f;color:#fff;border-color:#e5a36c!important}.model-toolbar .animation-play,.model-toolbar .toggle-walls,.model-toolbar .toggle-transparency[aria-pressed=true]{background:linear-gradient(135deg,#d08a50,#9d552b)!important;color:#090909!important;border-color:#e9ad72!important}.model-toolbar button[aria-pressed=true]:not(.toggle-transparency),.book-controls button[aria-pressed=true]{background:#f0ece5;color:#090909;border-color:#fff!important}

.project-options label>span{background:#0a0908;border-color:#ffffff24;color:#d4cec7;border-radius:0}.project-options label:hover>span{background:#17120f;border-color:#d08a506b;color:#fff}.project-options input:checked+span{background:var(--copper);border-color:#e3a36d;color:#090909}.project-options input:focus-visible+span{outline:2px solid var(--copper-bright);outline-offset:3px}.consent{color:#bcb6af}.consent input{accent-color:var(--copper)}
.contact-send{background:linear-gradient(135deg,#d08a50,#9d552b)!important;color:#090909!important;border:1px solid #e9ad72}.contact-send:hover{background:#f0ae70!important}.send-arrow{background:#090909;color:#f5c196}.form-status.is-success{color:#9fd091}.form-status.is-error{color:#ff9c8e}.form-status.is-info{color:#d5b79d}

footer .language-switch{background:#0a0908!important;border-color:#d08a504e!important;color:#d6d0c9!important}footer .language-switch button{color:#c6c0b9!important;background:transparent!important;border:1px solid transparent!important}footer .language-switch button:hover:not([aria-pressed=true]){background:#ffffff0b!important;color:#fff!important}footer .language-switch button[aria-pressed=true]{background:var(--copper)!important;color:#090909!important;border-color:#e4a36c!important}
.language-switch button,footer .language-switch button{min-width:42px;height:40px}
.header .language-switch button[aria-pressed=true],.header.reel-header .language-switch button[aria-pressed=true]{background:var(--copper)!important;color:#090909!important}.mobile-dialog .language-switch{background:#0a0908!important;border-color:#d08a5055!important}.mobile-dialog .language-switch button[aria-pressed=true]{background:var(--copper)!important;color:#090909!important}

html::-webkit-scrollbar{width:12px;height:12px}html::-webkit-scrollbar-track{background-color:#080808;background-image:repeating-linear-gradient(to bottom,transparent 0,transparent 11px,#d08a5028 11px,#d08a5028 12px);border-left:1px solid #ffffff16}html::-webkit-scrollbar-thumb{min-height:64px;background:linear-gradient(to right,#080808 0 3px,#c67b43 3px 9px,#080808 9px);border-block:1px solid #d89a68}html::-webkit-scrollbar-thumb:hover{background:linear-gradient(to right,#080808 0 2px,#efad73 2px 10px,#080808 10px)}html::-webkit-scrollbar-thumb:active{background:linear-gradient(to right,#080808 0 2px,#fff 2px 10px,#080808 10px);border-color:#fff}html::-webkit-scrollbar-corner{background:#080808;border-color:#ffffff16}

@media(max-width:540px){.button,.contact-send,.model-toolbar button,.filters button,.menu-toggle,.menu-close{min-height:48px}.model-toolbar{gap:8px}.model-toolbar button{flex:1 1 auto}.animation-speed select{min-height:46px}.contact-send{width:100%}.language-switch button,footer .language-switch button{min-width:44px;height:44px}}

/* Skills workshop — one concrete project for every stage of the process. */
.skills-workshop{--skills-progress:0}.skills-workshop .section-heading{margin-bottom:54px}.skills-workshop .section-heading h2{max-width:760px}.skills-workshop .section-intro{max-width:390px}.skills-process{position:relative}.skills-progress{position:relative;height:26px;margin:0 0 17px}.skills-progress::before{content:'';position:absolute;left:0;right:0;top:12px;height:1px;background:#ffffff24}.skills-progress::after{content:'IDEA / PROCESS / REAL';position:absolute;right:0;top:-8px;color:#8e8780;font:8px/1 monospace;letter-spacing:1.4px}.skills-progress i{position:absolute;z-index:1;left:0;top:10px;width:100%;height:3px;transform:scaleX(var(--skills-progress));transform-origin:left center;background:linear-gradient(90deg,var(--copper),var(--copper-bright));box-shadow:0 0 18px #d08a504b;transition:transform .65s cubic-bezier(.2,.75,.2,1)}.skills-workshop .skills-grid{position:relative;gap:1px;background:#ffffff1d;border-color:#ffffff1d}.skills-workshop .skill-stage{min-height:510px;padding:0;background:#0b0a09;overflow:hidden;transform:none}.skills-workshop .skill-stage::before{content:'';position:absolute;z-index:4;left:24px;top:-24px;width:10px;height:10px;margin:0;border:2px solid #080808;border-radius:50%;background:#5e554e;box-shadow:0 0 0 1px #ffffff36;transition:background .3s,box-shadow .3s,transform .3s}.skills-workshop .skill-stage::after{content:'';position:absolute;z-index:2;right:-70px;bottom:-70px;width:170px;height:170px;border:1px solid #d08a5028;border-radius:50%;box-shadow:0 0 0 24px #d08a5008,0 0 0 48px #ffffff05;pointer-events:none}.skills-workshop .skill-stage>a{position:relative;z-index:3;display:flex;height:100%;flex-direction:column;color:inherit}.skill-visual{position:relative;aspect-ratio:1.28;overflow:hidden;background:radial-gradient(circle at 48% 40%,#34251a,#090909 68%);border-bottom:1px solid #ffffff18}.skill-visual::after{content:'';position:absolute;inset:0;background:linear-gradient(125deg,transparent 35%,#d08a5020 50%,transparent 64%);transform:translateX(-125%);transition:transform .8s ease}.skill-visual img{width:100%;height:100%;object-fit:contain;filter:saturate(.78) contrast(1.06);transition:transform .65s cubic-bezier(.2,.7,.2,1),filter .35s}.skill-visual figcaption{position:absolute;z-index:2;left:15px;bottom:14px;padding:6px 8px;background:#080808d9;border:1px solid #ffffff1f;color:#c9c1ba;font-size:8px;letter-spacing:1px;text-transform:uppercase}.skill-copy{position:relative;display:flex;flex:1;flex-direction:column;padding:27px 25px 24px}.skills-workshop .skill-number{right:22px;top:26px;color:#9f978f}.skill-verb{margin:0 0 14px!important;color:var(--copper)!important;font-size:9px!important;letter-spacing:1.7px!important;text-transform:uppercase}.skills-workshop .skill-copy h3{max-width:235px;margin:0 0 14px;font-size:21px;line-height:1.25}.skills-workshop .skill-copy>p:not(.skill-verb){margin:0 0 24px;font-size:12px;line-height:1.75}.skill-project{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-top:auto;padding-top:17px;border-top:1px solid #ffffff17;color:#e8c09d;font-size:10px;text-transform:uppercase;letter-spacing:.75px}.skill-project b{font-size:18px;font-weight:400;transition:transform .25s}.skills-workshop .skill-stage:hover,.skills-workshop .skill-stage.is-process-active{z-index:3;background:#15110e;box-shadow:0 24px 70px #000c}.skills-workshop .skill-stage:hover .skill-visual img,.skills-workshop .skill-stage.is-process-active .skill-visual img{transform:scale(1.045);filter:saturate(1) contrast(1.08)}.skills-workshop .skill-stage:hover .skill-visual::after,.skills-workshop .skill-stage.is-process-active .skill-visual::after{transform:translateX(125%)}.skills-workshop .skill-stage:hover::before,.skills-workshop .skill-stage.is-process-active::before{background:var(--copper-bright);box-shadow:0 0 0 1px var(--copper),0 0 18px #d08a50;transform:scale(1.18)}.skills-workshop .skill-stage:hover .skill-project b{transform:translate(4px,-4px)}.skills-cta{margin:30px 0 0 auto;width:max-content}
@media(max-width:1050px){.skills-workshop .skills-grid{grid-template-columns:repeat(2,1fr)}.skills-workshop .skill-stage{min-height:480px}.skills-progress{display:none}}
@media(max-width:540px){.skills-workshop .section-heading{margin-bottom:34px}.skills-workshop .skills-grid{grid-template-columns:1fr}.skills-workshop .skill-stage{min-height:0}.skill-visual{aspect-ratio:1.45}.skill-copy{min-height:245px;padding:24px 21px}.skills-cta{width:100%;margin-top:22px}.skills-workshop .skill-stage::before{display:none}}

/* Compact proof of range, without repeating the project gallery. */
.skills-scope{display:flex;align-items:center;justify-content:space-between;gap:24px;margin:24px 0 0;padding:18px 0;border-block:1px solid #ffffff1c}.skills-scope strong{color:var(--copper-bright);font-size:11px;letter-spacing:1.25px;text-transform:uppercase}.skills-scope span{color:var(--muted);font-size:9px;letter-spacing:.7px;text-align:right;text-transform:uppercase}
@media(max-width:540px){.skills-scope{align-items:flex-start;flex-direction:column;gap:8px}.skills-scope span{text-align:left;line-height:1.65}}

/* Recruiter mode — a concise, non-repetitive reading path through existing work. */
.recruiter-trigger{display:flex;align-items:center;justify-content:space-between;gap:28px;min-height:49px;padding:0 17px;background:#0b0a09b8;border:1px solid #d08a5061;color:#f1ebe5;font-size:10px;letter-spacing:.7px;text-transform:uppercase}.recruiter-trigger b{color:var(--copper-bright);font:9px/1 monospace;letter-spacing:.5px}.recruiter-trigger:hover{background:#d08a50;color:#080808;border-color:#e6a66e}.recruiter-trigger:hover b{color:#080808}.recruiter-dialog{inset:0;z-index:900000000;width:100%;max-width:none;height:100%;max-height:none;margin:0;padding:0;background:#080706;color:#f3f0eb;border:0}.recruiter-dialog::backdrop{background:#000}.recruiter-dialog[open]{display:block}.recruiter-shell{position:relative;display:grid;grid-template-rows:auto 1fr auto;min-height:100%;overflow:hidden;background:radial-gradient(circle at 85% 15%,#d08a5018,transparent 28%),linear-gradient(#ffffff08 1px,transparent 1px),linear-gradient(90deg,#ffffff08 1px,transparent 1px),#080706;background-size:auto,72px 72px,72px 72px}.recruiter-shell::before,.recruiter-shell::after{content:'';position:absolute;pointer-events:none;border:1px solid #d08a5038;border-radius:50%}.recruiter-shell::before{right:-16vw;top:-40vw;width:65vw;height:65vw;box-shadow:0 0 0 48px #d08a5006,0 0 0 96px #ffffff05}.recruiter-shell::after{left:-10vw;bottom:-26vw;width:38vw;height:38vw}.recruiter-head,.recruiter-nav{position:relative;z-index:2;display:grid;grid-template-columns:1fr minmax(220px,440px) 1fr;align-items:center;gap:35px;padding:22px clamp(24px,5vw,76px);border-bottom:1px solid #ffffff1c}.recruiter-brand{font-size:15px;font-weight:700;letter-spacing:2px}.recruiter-brand span{color:var(--copper)}.recruiter-progress{display:flex;align-items:center;gap:15px}.recruiter-progress>i{display:block;flex:1;height:2px;background:linear-gradient(90deg,var(--copper-bright) var(--recruiter-progress,20%),#ffffff20 var(--recruiter-progress,20%));transition:background .35s}.recruiter-progress span{color:#aaa29a;font:9px/1 monospace;white-space:nowrap}.recruiter-progress b{color:#fff;font-weight:400}.recruiter-close{justify-self:end;padding:10px 0;background:none;border:0;color:#c8c1ba;font-size:10px;letter-spacing:1px;text-transform:uppercase}.recruiter-close:hover{color:var(--copper-bright)}.recruiter-track{position:relative;z-index:1;display:grid;align-items:center;width:min(1420px,100%);margin:auto;padding:40px clamp(24px,7vw,104px);overflow:auto}.recruiter-step{width:100%;animation:recruiterIn .48s cubic-bezier(.2,.75,.2,1) both}.recruiter-index{margin-bottom:28px;color:var(--copper-bright);font:9px/1 monospace;letter-spacing:1.8px}.recruiter-step-grid{display:grid;grid-template-columns:minmax(320px,.85fr) minmax(420px,1.15fr);align-items:start;gap:clamp(50px,9vw,150px)}.recruiter-step h2{font-size:clamp(48px,7vw,106px);font-weight:300;line-height:.88;letter-spacing:-.055em}.recruiter-step h2 em{color:var(--copper-bright);font-family:Georgia,serif;font-weight:400}.recruiter-statement{padding-top:48px}.recruiter-statement>p{max-width:690px;font-size:clamp(19px,2.2vw,34px);font-weight:300;line-height:1.45}.recruiter-statement ul{display:grid;gap:0;margin:42px 0 0;padding:0;list-style:none;border-top:1px solid #ffffff22}.recruiter-statement li{padding:15px 0;border-bottom:1px solid #ffffff22;color:#bbb3ab;font-size:11px;letter-spacing:1px;text-transform:uppercase}.recruiter-method{display:grid;grid-template-columns:repeat(2,1fr);margin:0;padding:0;list-style:none;border:1px solid #ffffff20}.recruiter-method li{display:grid;grid-template-columns:40px 1fr;gap:5px 14px;min-height:150px;padding:27px;border:1px solid #ffffff10}.recruiter-method span{grid-row:1/3;color:var(--copper);font:9px/1 monospace}.recruiter-method strong{font-size:20px;font-weight:400}.recruiter-method small{color:#aaa39c;font-size:12px;line-height:1.6}.recruiter-proof-layout{grid-template-columns:minmax(290px,.65fr) minmax(500px,1.35fr)}.recruiter-proofs{display:grid;grid-template-columns:repeat(2,1fr);border:1px solid #ffffff20}.recruiter-proofs a{position:relative;display:flex;min-height:180px;flex-direction:column;padding:25px;border:1px solid #ffffff10;transition:background .25s,transform .25s}.recruiter-proofs a:hover{z-index:1;background:#d08a50;color:#090807;transform:translateY(-4px)}.recruiter-proofs span{margin-bottom:24px;color:var(--copper-bright);font-size:9px;letter-spacing:1px;text-transform:uppercase}.recruiter-proofs a:hover span{color:#090807}.recruiter-proofs strong{font-size:21px;font-weight:400}.recruiter-proofs small{max-width:240px;margin-top:8px;color:#aaa39c;font-size:11px;line-height:1.5}.recruiter-proofs a:hover small{color:#25170e}.recruiter-proofs b{position:absolute;right:22px;top:21px;font-size:18px;font-weight:400}.recruiter-timeline{border-top:1px solid #ffffff28}.recruiter-timeline article{display:grid;grid-template-columns:150px 1fr 1.2fr;gap:25px;padding:24px 0;border-bottom:1px solid #ffffff28}.recruiter-timeline time{color:var(--copper-bright);font:9px/1.4 monospace;text-transform:uppercase}.recruiter-timeline strong{font-size:17px;font-weight:400}.recruiter-timeline p{color:#aaa39c;font-size:12px;line-height:1.55}.recruiter-finish{max-width:1100px}.recruiter-finish h2{margin-bottom:30px}.recruiter-finish>p:not(.eyebrow){max-width:720px;color:#bbb4ad;font-size:17px;line-height:1.65}.recruiter-finish>div{display:flex;align-items:center;gap:14px;margin-top:35px}.recruiter-nav{grid-template-columns:1fr auto 1fr;border-top:1px solid #ffffff1c;border-bottom:0}.recruiter-nav button{width:max-content;padding:12px 0;background:none;border:0;color:#e8e1db;font-size:10px;letter-spacing:1px;text-transform:uppercase}.recruiter-nav button:last-child{justify-self:end;color:var(--copper-bright)}.recruiter-nav button:disabled{opacity:.28}.recruiter-nav p{text-align:center}.recruiter-nav p span,.recruiter-nav p strong{display:block}.recruiter-nav p span{margin-bottom:4px;color:#817a74;font-size:7px;letter-spacing:1.2px;text-transform:uppercase}.recruiter-nav p strong{font:9px/1 monospace;font-weight:400}.recruiter-dialog-closing .recruiter-shell{animation:recruiterOut .25s ease both}@keyframes recruiterIn{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}@keyframes recruiterOut{to{opacity:0;transform:scale(.985)}}
@media(max-width:820px){.recruiter-head{grid-template-columns:1fr auto}.recruiter-progress{grid-row:2;grid-column:1/-1}.recruiter-track{align-items:start;padding-top:34px}.recruiter-step-grid,.recruiter-proof-layout{grid-template-columns:1fr;gap:36px}.recruiter-step h2{font-size:clamp(48px,13vw,76px)}.recruiter-statement{padding-top:0}.recruiter-timeline article{grid-template-columns:120px 1fr}.recruiter-timeline p{grid-column:2}.recruiter-nav{grid-template-columns:1fr 1fr}.recruiter-nav p{display:none}}
@media(max-width:540px){.hero-actions{align-items:stretch}.recruiter-trigger{width:100%}.recruiter-head,.recruiter-nav{padding:16px 19px}.recruiter-brand{font-size:12px}.recruiter-close{font-size:9px}.recruiter-track{padding:29px 19px}.recruiter-index{margin-bottom:20px}.recruiter-step h2{font-size:45px}.recruiter-statement>p{font-size:18px}.recruiter-statement ul{margin-top:25px}.recruiter-method,.recruiter-proofs{grid-template-columns:1fr}.recruiter-method li,.recruiter-proofs a{min-height:125px;padding:20px}.recruiter-timeline article{grid-template-columns:1fr;gap:7px}.recruiter-timeline p{grid-column:auto}.recruiter-finish>div{align-items:stretch;flex-direction:column}.recruiter-finish .button{text-align:center}.recruiter-nav button{min-height:44px}.recruiter-shell::before{width:110vw;height:110vw;right:-50vw;top:-30vw}}
@media(prefers-reduced-motion:reduce){.recruiter-step,.recruiter-dialog-closing .recruiter-shell{animation:none}}

/* Local identity font and unified technical icons. */
@font-face{font-family:'Montserrat Alternates';src:url('../content/fonts/MontserratAlternates-Regular.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Montserrat Alternates';src:url('../content/fonts/MontserratAlternates-SemiBold.ttf') format('truetype');font-weight:600 800;font-style:normal;font-display:swap}
.brand-name,.hero h1,.portrait strong,.recruiter-brand,.footer-name{font-family:'Montserrat Alternates',Arial,sans-serif}
.brand-name{display:inline-flex;align-items:baseline;gap:.42em;color:#fff;font-size:18px;font-weight:400;letter-spacing:.08em;white-space:nowrap}
.brand-name b{color:var(--copper-bright,#df995f);font-weight:600}
.header.scrolled .brand-name,.project-page .brand-name{color:#fff}
.mobile-dialog .brand-name{color:var(--ink)}
.mobile-dialog .brand-name b{color:var(--copper,#d08a50)}
.skill-icon{display:grid;place-items:center;width:42px;height:42px;margin:0 0 18px;border:1px solid #d08a5061;color:var(--copper-bright);background:#d08a5008;transition:color .25s,background .25s,border-color .25s,transform .25s}
.skill-icon svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.45;stroke-linecap:round;stroke-linejoin:round}
.skill-stage:hover .skill-icon,.skill-stage.is-process-active .skill-icon{color:#080808;background:var(--copper-bright);border-color:var(--copper-bright);transform:translateY(-2px)}
.card-arrow{font-family:Arial,sans-serif;font-weight:300}.menu-close{display:grid;place-items:center}
@media(max-width:800px){.brand-name{font-size:16px}.skill-icon{width:40px;height:40px}}

/* Header fused with the opening scene at scroll position 0. */
.header:not(.scrolled){background:transparent!important;box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
.header:not(.scrolled) .header-inner{border-bottom-color:transparent!important}
.header:not(.scrolled) .menu-toggle{background:transparent}
.header.scrolled{background:#080808e8!important;box-shadow:0 1px 0 #ffffff18!important;backdrop-filter:blur(18px) saturate(120%)!important;-webkit-backdrop-filter:blur(18px) saturate(120%)!important}


/* Preserve the name's natural capitalization in the hero title. */
.hero h1{ text-transform:none }
.hero h1 em{font-weight:600;text-transform:uppercase}
