@font-face{font-family:Satoshi;src:url('/assets/fonts/Satoshi-Variable.woff2') format('woff2');font-style:normal;font-weight:300 900;font-display:swap}
@font-face{font-family:Advercase;src:url('/assets/fonts/Advercase-Font-Demo-Regular.otf') format('opentype');font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:Advercase;src:url('/assets/fonts/Advercase-Font-Demo-Bold.otf') format('opentype');font-style:normal;font-weight:700;font-display:swap}
:root{--ink:#320800;--accent:#ff5b3d;--paper:#fff7f6}*{box-sizing:border-box}html{scroll-behavior:auto}body{margin:0;background:linear-gradient(145deg,#fff0ee,#fff7f6 88%);color:var(--ink);font-family:Satoshi,sans-serif}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}h1,h2,h3,p{margin:0}h1,h2,.quote,.tags,.detail-tag{font-family:Advercase,Georgia,serif}h2{font-size:40px;line-height:1.1}.container{width:min(1328px,calc(100% - 112px));margin:auto}.hero{position:relative;max-width:1440px;margin:auto;height:827px;border-radius:0 0 24px 24px;overflow:hidden}.top-nav{position:absolute;z-index:5;top:20px;left:50%;transform:translateX(-50%);width:min(1000px,calc(100% - 40px));background:var(--ink);border-radius:60px;display:flex;align-items:center;justify-content:space-between;padding:8px 8px 8px 41px;color:white;font-weight:700;font-size:20px}.top-nav>div{display:flex;gap:50px}.pill{display:inline-flex;background:var(--accent);color:white;border-radius:99px;padding:20px 24px;font-weight:700;font-size:20px;line-height:1.1}.home-hero{max-width:none;background:var(--ink) url('/assets/figma/home-background.webp') center/cover}.hero-copy{position:absolute;z-index:2;left:10%;top:25%;color:white}.hero-copy>p{font-family:Advercase,Georgia,serif;font-size:60px;text-shadow:0 4px 40px var(--ink)}.hero-copy h1{width:min(64vw,919px);margin:15px 0 -10px}.hero-copy h1 img{width:100%}.portrait{position:absolute;right:0;bottom:0;width:56%;height:94%;object-fit:contain;object-position:bottom right}.tags{display:flex;gap:20px;position:relative;z-index:3}.tags span,.detail-tag{background:var(--accent);color:white;border:1px solid #ffb3a5;border-radius:80px;padding:12px 28px;font-size:32px;box-shadow:0 -4px 20px #32080040}.tags span:nth-child(odd){transform:rotate(-2deg)}.tags span:nth-child(even){transform:rotate(2deg)}.quote{position:relative;margin:200px auto;max-width:1100px;text-align:center;font-size:clamp(32px,4.5vw,65px);font-weight:700;line-height:1.15}.quote p{position:relative;z-index:1}.quote-art{position:absolute;width:140%;max-width:none;left:-20%;top:10%;z-index:0}.quote-art-two{top:15%;transform:rotate(4deg)}.project-section{margin:0 auto 200px}.project-section h2{margin-bottom:32px}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:56px}.card>img{width:100%;aspect-ratio:405/550;object-fit:cover;border-radius:24px}.card-info{padding:16px 8px 0}.card h3{font-size:24px;font-weight:900;letter-spacing:-1px;text-transform:uppercase}.card-info>div{display:flex;justify-content:space-between;align-items:center;color:var(--accent);font-size:20px;margin-top:4px}.arrow{display:grid;place-items:center;background:var(--accent);color:white;border-radius:50%;width:40px;height:40px;font-size:24px}.more{display:flex;justify-content:flex-end;margin-top:32px}.photo-strip{position:relative;margin-bottom:200px}.strip-images{display:flex;gap:28px;overflow:hidden}.strip-images img{width:calc((100% - 56px)/3);aspect-ratio:1;object-fit:cover;border-radius:24px;flex:none}.photo-strip>p,.photo-strip>span{position:absolute;z-index:1;background:var(--ink);color:white;border-radius:50px;padding:12px 22px;font-family:Advercase,Georgia,serif}.photo-strip>p{left:10%;top:-20px}.photo-strip>span{right:10%;bottom:-20px}.footer{background:var(--ink);color:white}.footer-inner{max-width:1440px;margin:auto;padding:40px 96px}.footer h2{font-size:80px;color:var(--accent)}.footer h3{font:700 40px Advercase,Georgia,serif}.contacts{display:flex;flex-wrap:wrap;gap:32px;margin:56px 0}.contacts>a,.contacts>div{display:flex;align-items:center;gap:16px;font-size:20px;line-height:1.6}.contact-icon{display:grid;place-items:center;background:var(--paper);color:var(--accent);width:46px;height:46px;border-radius:50%;font-size:25px}.copyright{border-top:1px solid #fff7f680;padding-top:40px;font-size:16px;font-weight:900;font-style:italic}.detail-hero{background:linear-gradient(to top,#320800,transparent 65%),url('/assets/figma/senart-hero.webp') center/cover}.detail-hero-content{position:absolute;bottom:100px;left:10%;right:4%;display:flex;align-items:end;justify-content:space-between;gap:20px;color:white}.detail-hero h1{font-size:56px;line-height:1.1}.detail-tag{display:block;width:max-content;margin:12px 0 0 auto;background:white;color:var(--accent);border-color:var(--accent);transform:rotate(-2deg)}.detail-body{padding-top:100px}.brief{background:white;border-radius:24px;padding:50px;box-shadow:-4px 4px 10px #ff5b3d80;margin-bottom:100px}.brief h2{margin-bottom:16px}.brief p,.detail-row p{font-size:20px;line-height:1.5}.detail-row{display:grid;grid-template-columns:1fr 2fr;gap:16px;margin-bottom:100px}.detail-row h2{color:var(--accent)}.detail-row p+p{margin-top:24px}.detail-row img{width:100%;border-radius:24px;margin-top:32px}.detail-gallery{width:100%;border-radius:24px;margin-bottom:100px}.listing-header{position:relative;padding:180px 0 80px;background:var(--ink);color:white;border-radius:0 0 24px 24px}.listing-header h1{font-size:clamp(50px,7vw,90px)}.listing-header p{font-size:20px;margin-top:14px}.listing-header .eyebrow{color:var(--accent);font-weight:700}.listing-section{padding:100px 0 200px}.fictional{opacity:.75}
@media(max-width:760px){.container{width:calc(100% - 40px)}.hero{height:680px}.top-nav{font-size:14px;padding:7px 7px 7px 16px}.top-nav>div{gap:18px}.pill{font-size:14px;padding:15px 17px}.hero-copy{top:145px;left:7%}.hero-copy>p{font-size:35px}.hero-copy h1{width:85vw}.portrait{width:85%;height:58%}.tags{gap:8px;flex-wrap:wrap}.tags span,.detail-tag{font-size:18px;padding:9px 14px}.quote{margin:110px auto;font-size:32px}.cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:30px 16px}.card h3{font-size:17px;letter-spacing:-.5px}.card-info>div{font-size:15px}.arrow{width:32px;height:32px}.project-section{margin-bottom:110px}.project-section h2,h2{font-size:32px}.photo-strip{margin-bottom:110px}.strip-images img{width:70%}.footer-inner{padding:40px 20px}.footer h2{font-size:48px}.footer h3{font-size:28px}.contacts{gap:24px;margin:35px 0;display:grid}.contacts>a,.contacts>div{font-size:16px}.detail-hero-content{left:20px;right:20px;bottom:45px;align-items:flex-start;flex-direction:column}.detail-hero h1{font-size:42px}.detail-body{padding-top:60px}.brief{padding:28px;margin-bottom:60px}.detail-row{grid-template-columns:1fr;gap:20px;margin-bottom:60px}.brief p,.detail-row p{font-size:17px}.detail-gallery{margin-bottom:60px}.listing-header{padding:150px 0 60px}.listing-section{padding:60px 0 110px}}

/* Hero proportions follow the 1440 × 827 Figma frame. */
@media (min-width:761px){
 .home-hero{height:clamp(500px,57.43vw,827px)}
 .home-hero .hero-copy{left:max(12%, calc((100% - 1440px)/2 + 173px));top:21.5%}
 .home-hero .hero-copy>p{font-size:clamp(32px,4.167vw,60px);line-height:1.05}
 .home-hero .hero-copy h1{width:min(60vw,850px);margin:0 0 -1.5%;transform:translateX(-3.44%)}
 .home-hero .portrait{z-index:3;right:calc(max(0px, (100% - 1440px)/2) - 2%);bottom:0;width:min(55.9%, 805px);height:98.7%;object-fit:contain;object-position:bottom right}
 .home-hero .tags{gap:clamp(10px,1.39vw,20px)}
 .home-hero .tags span{font-size:clamp(18px,2.22vw,32px);padding:clamp(9px,1.11vw,16px) clamp(16px,2.08vw,30px);line-height:1}
}
.contact-icon img{width:30px;height:30px;object-fit:contain}
.arrow img{width:24px;height:24px;object-fit:contain;filter:brightness(0) invert(1)}
@media(max-width:760px){.home-hero .portrait{z-index:3;height:65%;right:-3%}.home-hero .hero-copy{z-index:2;top:125px;left:9%}.home-hero .tags{z-index:4}.home-hero .hero-copy h1{width:75vw;margin:4px 0 0;transform:translateX(-3.44%)}}

/* Soft motion with staggered entrances gives the page a handmade rhythm. */
.top-nav{position:fixed;z-index:100}
.pill,.arrow{transition:transform .22s ease-out,box-shadow .22s ease-out,background-color .22s ease-out}
@media (hover:hover){
 .pill:hover{transform:translateY(-4px) rotate(-1deg);box-shadow:3px 5px 0 #320800}
 .card:hover .arrow{transform:translate(3px,-3px) rotate(8deg)}
}
.pill:focus-visible,.card:focus-visible,.top-nav a:focus-visible,.contacts a:focus-visible{outline:3px solid #ff9a86;outline-offset:4px}
.home-hero .hero-copy>p{animation:hero-enter .55s cubic-bezier(.2,.7,.2,1) both}
.home-hero .hero-copy h1{animation:hero-name .6s cubic-bezier(.2,.7,.2,1) .12s both}
.home-hero .portrait{animation:hero-portrait .65s cubic-bezier(.2,.7,.2,1) .2s both}
.home-hero .tags span{animation:tag-enter .45s cubic-bezier(.2,.7,.2,1) .48s both}
.home-hero .tags span:nth-child(2){animation-delay:.58s}
.home-hero .tags span:nth-child(3){animation-delay:.68s}
@keyframes hero-enter{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
@keyframes hero-name{from{opacity:0;translate:0 22px}to{opacity:1;translate:0 0}}
@keyframes hero-portrait{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
@keyframes tag-enter{from{opacity:0;translate:0 12px}to{opacity:1;translate:0 0}}
.quote-word{display:inline-block;white-space:nowrap}
.quote-animated .quote-letter{opacity:.22;transition:opacity .12s ease-out}
.quote-animated .quote-letter.is-revealed{opacity:1}
.card>img{filter:grayscale(1);transition:filter .45s ease-out}
@media (hover:hover){.card:hover>img{filter:grayscale(0)}}
.card:focus-visible>img{filter:grayscale(0)}
.strip-images{overflow:hidden;display:block}
.strip-track{display:flex;width:max-content;animation:strip-scroll 110s linear infinite}
.strip-group{display:flex;gap:28px;padding-right:28px}
.strip-group img{width:min(calc((100vw - 168px)/3),424px);height:auto;aspect-ratio:1;object-fit:cover;border-radius:24px;flex:none}
@keyframes strip-scroll{to{transform:translateX(-50%)}}
.contact-value{position:relative;display:inline-block;max-width:100%}
.contact-value::after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:2px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .25s ease}
@media(hover:hover){.contacts a:hover .contact-value::after{transform:scaleX(1)}}
.contacts a:focus-visible .contact-value::after{transform:scaleX(1)}
@media(prefers-reduced-motion:reduce){.contact-value::after{transition:none}}
@media(max-width:760px){.strip-group img{width:calc((100vw - 40px)*.7)}}
@media(prefers-reduced-motion:reduce){
 .home-hero .hero-copy>p,.home-hero .hero-copy h1,.home-hero .portrait,.home-hero .tags span,.strip-track{animation:none}
 .pill,.arrow,.card>img,.contacts a>span:last-child,.quote-animated .quote-letter{transition:none}
 .card>img{filter:none}
}

/* Expressive entrances and tactile interactions, with a smooth handmade rhythm. */
.home-hero .hero-copy>p{animation-duration:.7s}
.home-hero .hero-copy h1{animation-duration:.85s;animation-delay:.12s}
.home-hero .portrait{animation-duration:.85s;animation-delay:.2s}
.home-hero .tags span{animation-duration:.6s;animation-timing-function:cubic-bezier(.18,.8,.28,1.25);animation-delay:.55s}
.home-hero .tags span:nth-child(2){animation-delay:.68s}
.home-hero .tags span:nth-child(3){animation-delay:.81s}
@keyframes hero-enter{from{opacity:0;transform:translateY(30px) rotate(-2deg)}to{opacity:1;transform:translateY(0) rotate(0)}}
@keyframes hero-name{from{opacity:0;translate:0 55px;scale:.95}to{opacity:1;translate:0 0;scale:1}}
@keyframes hero-portrait{from{opacity:0;transform:translate(35px,45px) rotate(2deg)}to{opacity:1;transform:translate(0,0) rotate(0)}}
@keyframes tag-enter{from{opacity:0;translate:0 30px;scale:.82}to{opacity:1;translate:0 0;scale:1}}
.reveal-ready{opacity:0;transform:translateY(42px) rotate(-1deg);transition:opacity .65s ease-out,transform .8s cubic-bezier(.2,.75,.2,1)}
.reveal-ready.is-visible{opacity:1;transform:translateY(0) rotate(0)}
.cards .card:nth-child(3n+2){transition-delay:.09s}
.cards .card:nth-child(3n){transition-delay:.18s}
.card>img{transition:filter .5s ease,transform .5s cubic-bezier(.2,.7,.2,1),box-shadow .5s ease}
.pill,.arrow{transition:transform .3s cubic-bezier(.2,.8,.25,1.25),box-shadow .3s ease,background-color .3s ease}
.top-nav>div a{position:relative}
.top-nav>div a::after{content:'';position:absolute;left:0;right:0;bottom:-6px;height:2px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .25s ease}
@media(hover:hover){
 .pill:hover{transform:translateY(-5px) rotate(-2deg);box-shadow:5px 7px 0 #320800}
 .card:hover>img{filter:grayscale(0);transform:translateY(-8px) rotate(-1deg);box-shadow:8px 12px 0 #ff5b3d}
 .card:hover .arrow{transform:translate(5px,-5px) rotate(45deg)}
 .top-nav>div a:hover::after{transform:scaleX(1)}
 .contacts a .contact-icon{transition:transform .35s cubic-bezier(.2,.8,.25,1.25)}
 .contacts a:hover .contact-icon{transform:rotate(-12deg) scale(1.12)}
}
.card:focus-visible>img{transform:translateY(-6px);box-shadow:6px 8px 0 #ff5b3d}
@media(prefers-reduced-motion:reduce){
 .home-hero .hero-copy>p,.home-hero .hero-copy h1,.home-hero .portrait,.home-hero .tags span{animation:none}
 .reveal-ready,.reveal-ready.is-visible{opacity:1;transform:none;transition:none}
 .card>img,.pill,.arrow,.top-nav>div a::after,.contacts a .contact-icon{transition:none}
 .card:hover>img,.card:focus-visible>img,.pill:hover,.card:hover .arrow,.contacts a:hover .contact-icon{transform:none}
}

/* Shared project detail layout. Project artwork stays at its original proportions. */
.detail-hero{background-image:linear-gradient(to top,#320800,transparent 65%),var(--detail-image)}
.detail-hero h1{max-width:750px}
.detail-row-content{min-width:0}
.detail-row-content h3{font-size:24px;font-weight:900;line-height:1.2;letter-spacing:-1px;text-transform:uppercase;margin:32px 0 12px}
.detail-row-content p+h3{margin-top:32px}
.detail-section-images{display:grid;gap:24px;margin-top:32px}
.detail-row .detail-section-images img{width:100%;height:auto;max-height:750px;object-fit:contain;margin:0;border-radius:24px}
.detail-link{display:inline-block;margin-top:24px;color:var(--accent);font-weight:700;text-decoration:underline;text-underline-offset:4px}
.detail-gallery-section{margin-bottom:100px}
.detail-gallery-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;align-items:start}
.detail-gallery-grid img{width:100%;height:auto;border-radius:24px}
.detail-gallery-grid img:only-child{grid-column:1/-1}
@media(max-width:760px){.detail-hero h1{font-size:clamp(32px,9vw,42px);overflow-wrap:anywhere}.detail-gallery-section{margin-bottom:60px}.detail-gallery-grid{gap:16px}.detail-row-content h3{font-size:20px}}

/* Project pages: a staged introduction and playful, fluid reveals. */
.detail-hero::before{content:'';position:absolute;inset:0;background:linear-gradient(to top,#320800,transparent 65%),var(--detail-image) center/cover;animation:detail-background 1.2s cubic-bezier(.2,.7,.2,1) both;pointer-events:none}
.detail-hero-content{z-index:1}
.detail-hero-content h1{animation:detail-title .8s cubic-bezier(.2,.75,.2,1) .1s both}
.detail-hero-content .detail-tag{animation:detail-label .65s cubic-bezier(.2,.8,.25,1.2) .45s both}
.detail-hero-content>.pill{animation:detail-button .6s cubic-bezier(.2,.75,.2,1) .6s both}
@keyframes detail-background{from{opacity:.4;transform:scale(1.07)}to{opacity:1;transform:scale(1)}}
@keyframes detail-title{from{opacity:0;translate:0 38px}to{opacity:1;translate:0 0}}
@keyframes detail-label{from{opacity:0;translate:0 22px;scale:.85}to{opacity:1;translate:0 0;scale:1}}
@keyframes detail-button{from{opacity:0;translate:0 18px}to{opacity:1;translate:0 0}}
.detail-section-images img.reveal-ready,.detail-gallery-grid img.reveal-ready{transform:translateY(30px) rotate(1deg) scale(.97)}
.detail-section-images img.reveal-ready.is-visible,.detail-gallery-grid img.reveal-ready.is-visible{transform:none}
.detail-section-images img:nth-child(even),.detail-gallery-grid img:nth-child(even){transition-delay:.1s}
.detail-link{transition:color .25s ease,text-decoration-thickness .25s ease,text-underline-offset .25s ease}
@media(hover:hover){.detail-link:hover{color:var(--ink);text-decoration-thickness:3px;text-underline-offset:7px}}
@media(prefers-reduced-motion:reduce){
 .detail-hero::before,.detail-hero-content h1,.detail-hero-content .detail-tag,.detail-hero-content>.pill{animation:none}
 .detail-section-images img.reveal-ready,.detail-gallery-grid img.reveal-ready{opacity:1;transform:none;transition:none}
 .detail-link{transition:none}
}

/* Keep content within the screen at every viewport width. */
html,body{max-width:100%;overflow-x:clip}
.quote-art{width:100%;left:0}
.card,.card-info,.contacts>a,.contacts>div{min-width:0}
.card h3,.card-info p,.contacts a>span:last-child,.detail-link{overflow-wrap:anywhere}
.arrow,.contact-icon{flex:none}
@media(max-width:480px){
 .top-nav{width:calc(100% - 24px);font-size:clamp(11px,3.2vw,14px);padding-left:12px}
 .top-nav>div{gap:clamp(8px,3vw,18px)}
 .top-nav .pill{font-size:inherit;padding:13px 12px;white-space:nowrap}
 .cards{grid-template-columns:1fr}
 .quote{font-size:clamp(25px,7vw,32px)}
 .contacts a>span:last-child{min-width:0}
 .detail-tag{max-width:100%;width:fit-content;overflow-wrap:anywhere}
}


/* Header and full-width brush strokes behind the quotation. */
.top-nav{height:60px;z-index:7;gap:86px}
.top-nav>div{align-items:center;flex-shrink:0}
.top-nav .pill{min-height:44px;align-items:center;justify-content:center;padding:0 24px;font-size:16px;line-height:22px;white-space:nowrap}
.quote{max-width:1000px}
.quote-art{width:100vw;height:100%;left:50%;top:0;transform:translateX(-50%);object-fit:fill;pointer-events:none}
.quote-art-two{top:15%;transform:translateX(-50%) rotate(-4deg)}
@media(max-width:760px){
 .top-nav{gap:12px}
 .top-nav .pill{min-height:44px;padding:0 16px;font-size:14px}
}
@media(max-width:480px){
 .top-nav{gap:8px}
 .top-nav .pill{padding:0 10px;font-size:clamp(10px,3vw,14px)}
 .quote-art{width:140vw}
}

/* Space between footer contact blocks. */
.contacts{gap:48px}
@media(max-width:760px){.contacts{gap:40px}}


/* Cursor-responsive light over the original hero artwork. */
.home-hero::before{content:"";position:absolute;inset:-55px;background:url('/assets/figma/home-background.webp') center/cover;transform:translate(var(--shift-x,0),var(--shift-y,0));transition:transform .5s ease-out;pointer-events:none}
.home-hero::after{content:"";position:absolute;inset:0;background:radial-gradient(circle 380px at var(--pointer-x,50%) var(--pointer-y,50%),rgba(255,137,91,.55),rgba(255,91,61,.18) 40%,transparent 75%);opacity:0;transition:opacity .4s ease;pointer-events:none}
.home-hero.pointer-active::after{opacity:1}
@media(prefers-reduced-motion:reduce){.home-hero::before{transform:none;transition:none}.home-hero::after{display:none}}

/* Primary button dimensions from the Figma component. */
.pill,.top-nav .pill{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 24px;font-size:16px;line-height:22px;white-space:nowrap}
@media(max-width:400px){
 .top-nav{height:auto;flex-wrap:wrap;gap:10px;padding:12px}
 .top-nav>div{width:100%;justify-content:space-between}
 .top-nav .pill{margin-left:auto}
}


/* Raise project titles and labels while keeping the hero action in place. */
.detail-hero-content>div{position:relative;top:-40px}
@media(max-width:760px){.detail-hero-content>div{top:-20px}}
.detail-hero-content>.pill{position:relative;top:-40px}
@media(max-width:760px){.detail-hero-content>.pill{top:-20px}}
@media(hover:hover){
 .hero .pill:hover,.listing-header .pill:hover{box-shadow:5px 7px 0 var(--paper)}
}

/* Project stories: a single flowing column and generous full-width artwork. */
.detail-body{counter-reset:project-section}
.detail-body .brief{max-width:1000px;margin:0 auto 110px;padding:clamp(28px,5vw,64px);border-radius:28px;box-shadow:none;background:#fff;position:relative}
.detail-body .brief::before{content:'LE PROJET';display:inline-block;margin-bottom:20px;padding:8px 14px;border-radius:99px;background:var(--accent);color:white;font:700 13px/1 Satoshi,sans-serif;letter-spacing:.08em}
.detail-body .brief h2{font-size:clamp(40px,5vw,64px);margin-bottom:20px}
.detail-body .brief p{max-width:800px;font-size:clamp(18px,1.7vw,23px)}
.detail-row{display:block;position:relative;margin:0 auto 120px;counter-increment:project-section}
.detail-row>h2{display:flex;align-items:baseline;gap:16px;max-width:1050px;margin:0 auto 28px;font-size:clamp(36px,4.2vw,60px);line-height:1.05;color:var(--ink)}
.detail-row>h2::before{content:counter(project-section,decimal-leading-zero);flex:none;color:var(--accent);font:700 16px/1 Satoshi,sans-serif;letter-spacing:.04em}
.detail-row-content{max-width:1050px;margin:auto}
.detail-row-content>p,.detail-row-content>h3,.detail-row-content>.detail-link{max-width:800px;margin-left:0}
.detail-row-content>p{font-size:clamp(18px,1.5vw,21px);line-height:1.6}
.detail-row-content>h3{color:var(--accent);margin-top:32px}
.detail-section-images{margin-top:40px;gap:24px}
.detail-row .detail-section-images img{max-height:none;background:#fff;object-fit:contain}
.detail-row:nth-of-type(even) .detail-section-images{transform:rotate(-.5deg)}
.detail-row:nth-of-type(odd) .detail-section-images{transform:rotate(.5deg)}
.detail-gallery-section{margin:0 auto 120px;max-width:1050px}
.detail-gallery-grid{gap:24px}
.detail-gallery-grid img:nth-child(even){margin-top:32px}
.detail-gallery-grid img:only-child{margin-top:0}
@media(max-width:760px){
 .detail-body .brief{margin-bottom:70px}
 .detail-row{margin-bottom:75px}
 .detail-row>h2{gap:10px;margin-bottom:22px;font-size:clamp(30px,8vw,42px)}
 .detail-row>h2::before{font-size:13px}
 .detail-section-images{margin-top:28px}
 .detail-gallery-section{margin-bottom:75px}
 .detail-gallery-grid img:nth-child(even){margin-top:16px}
}

/* Compact headings, numbered markers and comfortable reading width. */
.detail-body .brief{max-width:800px}
.detail-body .brief h2{font-size:28px;line-height:1.2}
.detail-body .brief p,.detail-row-content>p{font-size:16px;line-height:1.7}
.detail-body .brief p{max-width:68ch}
.detail-row>h2{max-width:680px;align-items:center;gap:14px;font-size:28px;line-height:1.2}
.detail-row>h2::before{display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--accent);border-radius:50%;background:#fff7f6;color:var(--accent);font:700 14px/1 Satoshi,sans-serif;letter-spacing:0}
.detail-row-content>p,.detail-row-content>h3,.detail-row-content>.detail-link{max-width:680px;margin-left:auto;margin-right:auto}
.detail-row-content>h3{font-size:19px;line-height:1.3;letter-spacing:0}
.detail-row-content>.detail-link{display:block;width:fit-content;margin-left:max(0px,calc((100% - 680px)/2))}
@media(max-width:760px){
 .detail-body .brief h2,.detail-row>h2{font-size:24px}
 .detail-row>h2::before{width:36px;height:36px;font-size:13px}
 .detail-row-content>.detail-link{margin-left:0}
}

/* Readable project text and custom list markers. */
.detail-body .brief p,.detail-row-content>p,.project-list{font-size:18px;line-height:1.7}
.project-list{max-width:680px;margin:24px auto;padding:0;list-style:none}
.project-list li{position:relative;padding-left:32px}
.project-list li+li{margin-top:18px}
.project-list li::before{content:'✳';position:absolute;left:0;top:.05em;color:var(--accent);font-size:20px;line-height:1.5}
.project-list strong{color:var(--ink)}

/* A winding path links the brief to each step of the project. */
.detail-body .brief{width:83%;max-width:none;margin-left:0;margin-right:auto}
.detail-body .brief::after{content:'';position:absolute;top:100%;left:12%;width:76%;height:110px;border-left:2px dashed #ffad9e;border-bottom:2px dashed #ffad9e;border-radius:0 0 0 30px;pointer-events:none}
.detail-body .detail-row{width:83%;margin-left:auto;margin-right:0}
.detail-body .detail-row:nth-of-type(odd){margin-left:0;margin-right:auto}
.detail-body .detail-row>h2,.detail-body .detail-row-content{max-width:none}
.detail-body .detail-row-content>p,.detail-body .detail-row-content>h3,.detail-body .project-list{margin-left:0;margin-right:0}
.detail-body .detail-row-content>.detail-link{margin-left:0}
.detail-body .detail-row::after{content:'';position:absolute;top:100%;right:12%;width:76%;height:120px;border-right:2px dashed #ffad9e;border-bottom:2px dashed #ffad9e;border-radius:0 0 30px 0;pointer-events:none}
.detail-body .detail-row:nth-of-type(odd)::after{right:auto;left:12%;border-right:0;border-left:2px dashed #ffad9e;border-radius:0 0 0 30px}
.detail-body .detail-row:not(:has(+ .detail-row))::after{display:none}
.detail-body .detail-section-images img{width:100%;height:auto}
@media(max-width:760px){
 .detail-body .brief,.detail-body .detail-row,.detail-body .detail-row:nth-of-type(odd){width:calc(100% - 20px);margin-left:auto;margin-right:0}
 .detail-body .brief::after,.detail-body .detail-row::after,.detail-body .detail-row:nth-of-type(odd)::after{left:-12px;right:auto;width:0;height:75px;border:0;border-left:2px dashed #ffad9e;border-radius:0}
 .detail-body .brief::after{height:70px}
}

/* One soft, continuous curve, drawn behind the story content. */
.detail-body{position:relative;isolation:isolate}
.detail-body .brief::after,.detail-body .detail-row::after,.detail-body .detail-row:nth-of-type(odd)::after{display:none}
.story-path{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:-1}
.story-path path{fill:none;stroke:#ff5b3d;stroke-opacity:.3;stroke-width:9;stroke-linecap:round;stroke-linejoin:round}
.detail-body .detail-row>h2::before{position:relative;background:#fff7f6;box-shadow:0 0 0 5px #fff7f6}
@media(max-width:760px){.story-path path{stroke-width:7;stroke-opacity:.28}}

/* Cards sit above the continuous path, which remains visible between steps. */
.story-path{z-index:0}
.detail-body>.brief,.detail-body>.detail-row,.detail-body>.detail-gallery-section,.detail-body>.project-section{position:relative;z-index:1}
.detail-body .detail-row{padding:clamp(24px,4vw,48px);background:#fff;border:1px solid #ffddd6;border-radius:28px;box-shadow:0 10px 32px #3208000a}
.detail-body .detail-row>h2{margin-bottom:24px}
.detail-body .detail-section-images{margin-bottom:0}
@media(max-width:760px){.detail-body .detail-row{padding:24px 20px;border-radius:22px}}

/* Playful cards and a path that fills as the story unfolds. */
.story-path .story-path-track{stroke:#ff5b3d;stroke-opacity:.18;stroke-width:12}
.story-path .story-path-progress{stroke:#ff5b3d;stroke-opacity:.85;stroke-width:8}
.detail-body .brief{border:1px solid #ffc5b9;box-shadow:8px 8px 0 #ff5b3d30}
.detail-body .detail-row{border:1px solid #ffc5b9;box-shadow:8px 8px 0 #ff5b3d30}
.detail-body .detail-row:nth-of-type(odd){box-shadow:-8px 8px 0 #ff5b3d30}
.detail-body .detail-row::before{content:'✳';position:absolute;top:22px;right:28px;color:#ff5b3d;opacity:.55;font-size:24px;line-height:1;transform:rotate(15deg)}
.detail-body .detail-row>h2{padding-right:30px}
.detail-body .detail-row>h2::before{background:var(--accent);border-color:var(--accent);color:white;box-shadow:0 0 0 5px #fff0ed;transform:rotate(-8deg)}
.detail-body .detail-row:nth-of-type(odd)>h2::before{transform:rotate(8deg)}
@media(max-width:760px){
 .story-path .story-path-track{stroke-width:10}
 .story-path .story-path-progress{stroke-width:7}
 .detail-body .brief,.detail-body .detail-row,.detail-body .detail-row:nth-of-type(odd){box-shadow:5px 5px 0 #ff5b3d30}
 .detail-body .detail-row::before{top:18px;right:18px;font-size:20px}
}

/* Project brief, based on the Figma BriefSection. */
.detail-body .brief{
 width:min(969.438px,calc(100% - 8px));
 max-width:none;
 margin-left:0;
 margin-right:auto;
 padding:40px;
 border:1px solid var(--accent);
 border-radius:20px;
 background:#fff;
 box-shadow:8px 8px 0 var(--accent);
}
.detail-body .brief::before{content:none}
.detail-body .brief h2{
 margin:0 0 16px;
 color:var(--accent);
 font-size:32px;
 line-height:1;
}
.detail-body .brief p{
 max-width:837px;
 color:var(--ink);
 font-size:18px;
 line-height:normal;
}
@media(max-width:760px){
 .detail-body .brief{width:calc(100% - 8px);margin-left:0;margin-right:auto;padding:28px 24px;box-shadow:8px 8px 0 var(--accent)}
 .detail-body .brief h2{font-size:28px}
}

/* Project content cards, based on the Figma ContentBox. */
.detail-body .detail-row,
.detail-body .detail-row:nth-of-type(odd){
 padding:40px;
 border:1px solid var(--accent);
 border-radius:20px;
 background:#fff;
 box-shadow:8px 8px 0 rgba(255,91,61,.19);
}
.detail-body .detail-row::before{content:none}
.detail-body .detail-row>h2{
 display:flex;
 width:fit-content;
 max-width:100%;
 min-height:64px;
 align-items:center;
 gap:16px;
 margin:0 0 24px;
 padding:0 32px 0 0;
 border-radius:100px;
 background:#ffe6e1;
 color:var(--ink);
 font-size:32px;
 line-height:1.1;
}
.detail-body .detail-row>h2::before,
.detail-body .detail-row:nth-of-type(odd)>h2::before{
 content:counter(project-section);
 display:grid;
 place-items:center;
 width:64px;
 height:64px;
 border:0;
 border-radius:35px;
 background:var(--accent);
 color:#fff;
 box-shadow:none;
 transform:none;
 font:700 32px/1 Advercase,Georgia,serif;
}
.detail-body .detail-row-content>p,
.detail-body .project-list{
 max-width:none;
 font-size:18px;
 line-height:normal;
}
.detail-body .detail-row-content>p+p{margin-top:24px}
.detail-body .project-list{margin:32px 0 24px;padding:0;list-style:none}
.detail-body .project-list li{padding-left:39px}
.detail-body .project-list li+li{margin-top:24px}
.detail-body .project-list li::before{
 content:'';
 left:16px;
 top:.48em;
 width:7px;
 height:7px;
 background:url('/assets/figma/project-list-bullet.svg') center/contain no-repeat;
}
.detail-body .detail-section-images{margin-top:24px}
@media(max-width:760px){
 .detail-body .detail-row,
 .detail-body .detail-row:nth-of-type(odd){padding:24px 20px;box-shadow:8px 8px 0 rgba(255,91,61,.19)}
 .detail-body .detail-row>h2{min-height:48px;gap:12px;padding-right:18px;font-size:24px}
 .detail-body .detail-row>h2::before,
 .detail-body .detail-row:nth-of-type(odd)>h2::before{width:48px;height:48px;font-size:24px}
}

/* Musée des Arts Forains: keep the project visuals at a consistent reading width. */
.museum-detail .brief p + p{margin-top:16px}
.museum-detail .detail-section-images{max-width:680px;margin-left:auto;margin-right:auto}

.site-link-pending{opacity:.65;cursor:default}
.detail-row-content .site-link-pending{margin-top:24px}

/* Pella prototype and collar are presented together; test artwork stays inside its card. */
.pella-detail .detail-row:nth-of-type(4) .detail-section-images{grid-template-columns:repeat(2,minmax(0,1fr));align-items:center;max-width:680px;margin-left:auto;margin-right:auto}
.pella-detail .detail-row:nth-of-type(5) .detail-section-images{max-width:440px;margin-left:auto;margin-right:auto}
@media(max-width:600px){.pella-detail .detail-row:nth-of-type(4) .detail-section-images{grid-template-columns:1fr;max-width:360px}}

/* Pella: align the prototype visuals at equal height across the card. */
.pella-detail .detail-row:nth-of-type(4) .detail-section-images{max-width:none;grid-template-columns:1.526fr 1fr;align-items:stretch}
.pella-detail .detail-row:nth-of-type(4) .detail-section-images img{width:100%;height:100%;aspect-ratio:auto;object-fit:contain}
@media(max-width:600px){.pella-detail .detail-row:nth-of-type(4) .detail-section-images{grid-template-columns:1.526fr 1fr;max-width:none;gap:12px}}

/* Synpeak: smaller artwork and compact, responsive video players. */
.synpeak-detail .detail-section-images{max-width:520px;margin-left:auto;margin-right:auto}
.synpeak-videos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;max-width:720px;margin:24px auto 0}
.synpeak-videos iframe{display:block;width:100%;aspect-ratio:16/9;border:0;border-radius:16px}
@media(max-width:600px){.synpeak-videos{grid-template-columns:1fr;max-width:420px}}

/* Synpeak: paired images and full-width video players. */
.synpeak-detail .detail-row:nth-of-type(3) .detail-section-images,
.synpeak-detail .detail-row:nth-of-type(4) .detail-section-images{max-width:none;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
.synpeak-videos{max-width:none;grid-template-columns:1fr}
@media(max-width:600px){
 .synpeak-detail .detail-row:nth-of-type(3) .detail-section-images,
 .synpeak-detail .detail-row:nth-of-type(4) .detail-section-images{gap:12px}
 .synpeak-videos{max-width:none}
}
.synpeak-detail .synpeak-videos{grid-template-columns:repeat(2,minmax(0,1fr));max-width:none}
@media(max-width:600px){.synpeak-detail .synpeak-videos{gap:12px}}

/* Photo gallery: paired images fill the cards, with the landscape mosaic above. */
.photo-detail .detail-section-images{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch}
.photo-detail .detail-section-images img{width:100%;height:100%;aspect-ratio:1;object-fit:cover}
.photo-detail .detail-row:nth-of-type(3) .detail-section-images img:first-child{grid-column:1/-1;aspect-ratio:auto;height:auto;object-fit:contain}
@media(max-width:600px){.photo-detail .detail-section-images{gap:12px}}

/* Project detail heroes span the full viewport width. */
.hero.detail-hero{width:100%;max-width:none}

/* Projects hero and shared footer, aligned with the Figma designs. */
.listing-header{height:400px;padding:0;color:#fff;background:linear-gradient(to top,rgba(50,8,0,.3),transparent 55%),url('/assets/figma/projects-hero.webp') center/cover;border-radius:0 0 24px 24px}
.listing-header>.container{position:absolute;left:max(56px,calc((100% - 1270px)/2));bottom:64px;width:calc(100% - 112px);margin:0}
.listing-header h1{font-size:56px;line-height:1;text-shadow:0 4px 40px #320800bf}
.listing-header p{margin-top:32px;font-size:20px;line-height:normal;text-shadow:0 4px 40px #320800bf}
.footer-inner{padding:40px 96px}
.footer h2{font-size:40px;line-height:1.1;color:#fff}
.contacts{width:100%;justify-content:space-between;gap:16px;margin:56px 0;align-items:flex-start}
.contacts>a,.contacts>div{gap:16px;padding:8px 16px 8px 8px;font-size:20px;line-height:normal}
.contacts a>span:last-child{display:flex;flex-direction:column;gap:4px}
.contacts a>span:last-child br{display:none}
.contact-icon{width:46px;height:46px;flex:none}
.contact-icon img{width:30px;height:30px}
.footer-divider{overflow:hidden;height:1px}
.footer-divider img{max-width:none}
.copyright{border:0;padding-top:56px}
@media(max-width:760px){
 .listing-header{height:360px;padding:0}
 .listing-header>.container{left:20px;bottom:48px;width:calc(100% - 40px)}
 .listing-header h1{font-size:clamp(40px,10vw,56px)}
 .listing-header p{font-size:18px;margin-top:20px}
 .footer-inner{padding:40px 20px}
 .footer h2{font-size:32px}
 .contacts{display:grid;gap:20px;margin:40px 0}
 .contacts>a,.contacts>div{font-size:16px}
 .contacts a>span:last-child{gap:4px}
 .copyright{padding-top:40px}
}

/* Full-width photo strip and its labels. */
.photo-strip{width:100vw;margin-left:calc(50% - 50vw)}
.photo-strip>p{transform:rotate(-2deg)}
.photo-strip>span{transform:rotate(2deg)}

/* Preserve the disabled opacity when the hero animation finishes. */
.detail-hero-content>.site-link-pending{animation:none}

/* Mobile navigation and responsive layout. */
.nav-toggle,.mobile-menu{display:none}
@media(max-width:760px){
 .top-nav{position:fixed;top:0;left:0;transform:none;width:100%;height:64px;padding:0 16px;border-radius:0;display:flex;justify-content:flex-end;gap:12px;z-index:100;transition:transform .3s ease}
 .top-nav.nav-hidden{transform:translateY(-100%)}
 .top-nav>.nav-links{display:none}
 .top-nav .nav-cta{position:relative;z-index:2;min-height:40px;padding:0 15px;font-size:13px}
 .nav-toggle{position:relative;z-index:2;display:flex;width:44px;height:44px;padding:7px;flex-direction:column;justify-content:center;gap:6px;border:0;background:transparent;color:white;cursor:pointer}
 .nav-toggle span{display:block;width:30px;height:2px;border-radius:2px;background:currentColor;transition:transform .3s ease,opacity .2s ease}
 .menu-open .nav-toggle span:first-child{transform:translateY(8px) rotate(45deg)}
 .menu-open .nav-toggle span:nth-child(2){opacity:0}
 .menu-open .nav-toggle span:last-child{transform:translateY(-8px) rotate(-45deg)}
 .top-nav>.mobile-menu{position:fixed;inset:0;display:flex;width:100vw;height:100dvh;padding:100px 28px 40px;flex-direction:column;align-items:flex-start;justify-content:center;gap:24px;background:var(--ink);opacity:0;visibility:hidden;transform:translateY(-16px);transition:opacity .3s ease,transform .3s ease,visibility .3s;overflow:auto}
 .top-nav.menu-open>.mobile-menu{opacity:1;visibility:visible;transform:translateY(0)}
 .mobile-menu a{font:700 clamp(36px,10vw,58px)/1.1 Advercase,Georgia,serif;color:white;transition:transform .3s ease,opacity .3s ease;transform:translateY(14px);opacity:0}
 .menu-open .mobile-menu a{transform:none;opacity:1;transition-delay:.08s}
 .menu-open .mobile-menu a:nth-child(2){transition-delay:.12s}
 .menu-open .mobile-menu a:nth-child(3){transition-delay:.16s}
 body.mobile-menu-open{overflow:hidden}
 .home-hero{height:clamp(360px,100vw,500px)}
 .home-hero .hero-copy{top:100px;left:6%;width:58%}
 .home-hero .hero-copy>p{font-size:clamp(17px,4.5vw,28px)}
 .home-hero .hero-copy h1{width:100%;margin:4px 0 2px}
 .home-hero .portrait{right:-10%;width:66%;height:78%}
 .home-hero .tags{align-items:flex-start;flex-direction:column;gap:6px}
 .home-hero .tags span{font-size:clamp(12px,3.2vw,16px);padding:6px 12px;line-height:1}
 .cards{row-gap:46px}
 .card-info>div{margin-top:0;align-items:flex-start}
 .card-info>div p{line-height:1.2}
 .contact-icon{width:38px;height:38px}
 .contact-icon img{width:23px;height:23px}
 .hero.detail-hero{height:clamp(400px,115vw,540px)}
 .detail-hero-content{left:20px;right:20px;bottom:24px;gap:24px}
 .detail-hero-content>div,.detail-hero-content>.pill{top:0}
 .detail-hero-content>.pill{align-self:flex-end}
 .detail-hero-content>.site-link-pending{opacity:1;background:#ffb3a5;color:#63271d}
 .detail-body .brief,.detail-body .detail-row,.detail-body .detail-row:nth-of-type(odd){width:100%;margin-left:0;margin-right:0}
 .detail-body .detail-row>h2{padding:8px 18px 8px 0;border-radius:28px;line-height:1.2}
 .detail-body .detail-row>h2::before,.detail-body .detail-row:nth-of-type(odd)>h2::before{align-self:center}
 .detail-body .detail-section-images,.pella-detail .detail-row:nth-of-type(4) .detail-section-images,.synpeak-detail .detail-row:nth-of-type(3) .detail-section-images,.synpeak-detail .detail-row:nth-of-type(4) .detail-section-images,.photo-detail .detail-section-images,.detail-gallery-grid{grid-template-columns:minmax(0,1fr);transform:none}
 .detail-body .detail-section-images img,.photo-detail .detail-section-images img,.pella-detail .detail-row:nth-of-type(4) .detail-section-images img{height:auto;aspect-ratio:auto;object-fit:contain;grid-column:auto}
 .detail-gallery-grid img:nth-child(even){margin-top:0}
}
@media(prefers-reduced-motion:reduce){.top-nav,.nav-toggle span,.top-nav>.mobile-menu,.mobile-menu a{transition:none}}

/* Mobile refinements: floating navigation and circular menu reveal. */
@media(max-width:760px){
 .top-nav{top:12px;left:12px;width:calc(100% - 24px);height:56px;padding:0 8px 0 12px;border-radius:32px}
 .top-nav.nav-hidden{transform:translateY(calc(-100% - 12px))}
 .top-nav>.mobile-menu{inset:0 auto auto 0;width:100vw;height:100dvh;opacity:1;transform:none;clip-path:circle(0 at calc(100% - 42px) 40px);visibility:hidden;transition:clip-path .55s cubic-bezier(.65,0,.2,1),visibility 0s .55s}
 .top-nav.menu-open>.mobile-menu{clip-path:circle(150vmax at calc(100% - 42px) 40px);visibility:visible;transform:none;transition:clip-path .65s cubic-bezier(.65,0,.2,1),visibility 0s}
 .home-hero .hero-copy{width:88%}
 .home-hero .hero-copy h1{width:66%}
 .home-hero .tags{flex-direction:row;flex-wrap:nowrap;gap:5px}
 .home-hero .tags span{font-size:clamp(10px,2.8vw,15px);padding:6px 9px;white-space:nowrap}
 .quote{margin-bottom:75px}
 .footer h2{font-size:28px}
}
@media(prefers-reduced-motion:reduce){.top-nav>.mobile-menu,.top-nav.menu-open>.mobile-menu{transition:none}}

/* The full-screen menu is only used on mobile. */
@media(min-width:761px){.top-nav>.mobile-menu{display:none}}

/* Parcours: an editorial timeline inspired by the project pages. */
.parcours-header .eyebrow{font-size:14px;letter-spacing:.12em;margin:0 0 18px}
.parcours-header p:last-child{max-width:650px;line-height:1.5}
.parcours-body{padding-top:100px;padding-bottom:140px}
.parcours-intro{max-width:850px;background:#fff;border-radius:28px;padding:clamp(28px,5vw,64px);margin:0 auto 100px}
.parcours-intro span,.parcours-kind{font-size:13px;font-weight:900;letter-spacing:.1em;color:var(--accent)}
.parcours-intro h2{font-size:clamp(30px,3.5vw,48px);margin:18px 0}
.parcours-intro p,.parcours-content p,.parcours-next p{font-size:18px;line-height:1.7}
.parcours-timeline{max-width:1050px;margin:auto}
.parcours-step{display:grid;grid-template-columns:200px 1fr;gap:40px;position:relative;padding:0 0 85px 38px;border-left:2px dashed #ffad9e}
.parcours-step:last-child{padding-bottom:0;border-left-color:transparent}
.parcours-step:before{content:'';position:absolute;top:3px;left:-9px;width:16px;height:16px;border:3px solid var(--accent);border-radius:50%;background:var(--paper)}
.parcours-date{color:var(--accent);font-weight:900;font-size:19px}
.parcours-content h2{font-size:clamp(30px,3vw,42px);margin:12px 0 28px}
.parcours-entry+.parcours-entry{margin-top:28px}
.parcours-entry h3{font-size:21px;line-height:1.3}
.parcours-content .parcours-place{color:#a43c29;font-weight:700;margin:6px 0 10px}
.parcours-photo{margin:32px 0 0;max-width:700px}
.parcours-photo img{width:100%;max-height:420px;object-fit:cover;border-radius:24px}
.parcours-photo figcaption{font-size:14px;color:#88584e;margin-top:10px}
.parcours-next{text-align:center;margin:110px auto 0}
.parcours-next p{margin:16px 0 24px}
@media(max-width:760px){.parcours-body{padding-top:60px;padding-bottom:90px}.parcours-intro{margin-bottom:65px}.parcours-step{grid-template-columns:1fr;gap:12px;padding:0 0 60px 26px}.parcours-date{font-size:16px}.parcours-content h2{margin-bottom:20px}.parcours-intro p,.parcours-content p,.parcours-next p{font-size:16px}.parcours-entry h3{font-size:19px}.parcours-next{margin-top:70px}}

/* Give each milestone a clear card while keeping the timeline visible. */
.parcours-content{background:#fff;border-radius:26px;padding:clamp(24px,3vw,42px);box-shadow:0 8px 30px #3208000b}
.parcours-step:before{top:28px}
.parcours-date{padding-top:25px}
@media(max-width:760px){.parcours-content{padding:24px;border-radius:22px}.parcours-step:before{top:2px}.parcours-date{padding-top:0}}

/* Short dashes fill as the reader moves through the timeline. */
.parcours-timeline{position:relative}
.parcours-timeline::before,.parcours-line-progress{content:'';position:absolute;left:0;top:0;width:2px;pointer-events:none;background:repeating-linear-gradient(to bottom,#ffad9e 0 4px,transparent 4px 10px)}
.parcours-timeline::before{height:var(--timeline-height,100%)}
.parcours-line-progress{background:repeating-linear-gradient(to bottom,var(--accent) 0 4px,transparent 4px 10px)}
.parcours-step,.parcours-step:last-child{border-left:2px solid transparent}
.parcours-step:before{z-index:1}
.parcours-intro h2,.parcours-content h2{margin-top:0}
.parcours-photo img{max-height:none;object-fit:contain}

/* Continuous curved timeline and milestones. */
.parcours-timeline::before,.parcours-line-progress{display:none}
.parcours-line{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.parcours-line path{fill:none;stroke-width:2;stroke-linecap:round}
.parcours-line-track{stroke:#ffd1c9}
.parcours-line-fill{stroke:var(--accent)}
.parcours-step:before{transition:background-color .2s ease;background:var(--paper)}
.parcours-step.point-reached:before{background:var(--accent)}
@media(prefers-reduced-motion:reduce){.parcours-step:before{transition:none}}
.parcours-entry h3 + .parcours-place{margin-top:2px}
/* Disabled buttons and parcours refinements. */
.site-link-pending,.detail-hero-content>.site-link-pending{opacity:1;background:#ffb3a5;color:#63271d}
.parcours-employer{font-size:.75em;font-weight:700;color:#1b1615}
.parcours-content .detail-link{display:block;width:fit-content;margin-left:auto;text-align:right}

/* Home logo in the navigation. */
.nav-home-logo{display:grid;place-items:center;width:48px;height:48px;flex:none;border-radius:50%}
.nav-home-logo img{width:44px;height:44px}
@media(max-width:760px){.top-nav{justify-content:space-between}.top-nav .nav-home-logo{order:2;position:relative;z-index:2}.top-nav .nav-toggle{order:1}.top-nav>.mobile-menu{order:3}}

/* Brand and navigation. */
.top-nav{width:min(1328px,calc(100% - 40px));height:76px;padding:8px 10px 8px 14px;gap:20px}
.nav-brand{display:flex;align-items:center;gap:12px;min-width:0}
.nav-brand img{width:52px;height:52px;flex:none}
.nav-brand span{display:flex;flex-direction:column;gap:2px;min-width:0}
.nav-brand strong{font-size:19px;line-height:1.1;white-space:nowrap}
.nav-brand small{font-size:13px;font-weight:500;line-height:1.2;white-space:nowrap}
.top-nav>.nav-links{display:flex;align-items:center;justify-content:flex-end;gap:32px;margin-left:auto;font-size:16px}
.top-nav .nav-contact{min-height:48px;padding:0 24px}
.top-nav>.nav-links .nav-contact::after{content:none}
@media(max-width:760px){
 .top-nav{height:64px;padding:6px 10px;flex-wrap:nowrap;justify-content:space-between;gap:8px}
 .nav-brand{position:relative;z-index:2;gap:8px}
 .nav-brand img{width:46px;height:46px}
 .nav-brand strong{font-size:15px}
 .nav-brand small{font-size:clamp(9px,2.6vw,12px)}
 .top-nav>.nav-links{display:none}
 .top-nav .nav-toggle{order:0;flex:none}
}

/* The mobile menu expands from the navigation's rounded shape. */
.mobile-contact{display:none}
@media(max-width:760px){
 .top-nav .mobile-contact{display:inline-flex;position:relative;z-index:2;flex:none;margin-left:auto;min-height:40px;padding:0 12px;font-size:13px}
 .top-nav>.mobile-menu{inset:0 auto auto 0;width:100%;height:64px;padding:100px 28px 40px;clip-path:none;border-radius:32px;visibility:hidden;overflow:hidden;transition:width .22s ease .28s,height .28s ease,top .22s ease .28s,left .22s ease .28s,border-radius .22s ease .28s,visibility 0s .5s}
 .top-nav.menu-open>.mobile-menu{top:-12px;left:-12px;width:100vw;height:100dvh;clip-path:none;border-radius:0;visibility:visible;overflow:auto;transition:width .22s ease,height .28s ease .22s,top .22s ease,left .22s ease,border-radius .22s ease,visibility 0s}
 .top-nav .mobile-contact{order:0}
 .top-nav .nav-toggle{order:0}
 .menu-open .mobile-menu a{transition-delay:.28s}
}
@media(max-width:380px){.nav-brand small{display:none}.nav-brand img{width:40px;height:40px}.nav-brand strong{font-size:14px}.top-nav .mobile-contact{padding:0 10px;font-size:12px}}
@media(prefers-reduced-motion:reduce){.top-nav>.mobile-menu,.top-nav.menu-open>.mobile-menu{transition:none}}

@media(max-width:760px){
 .top-nav .mobile-contact{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s ease,visibility 0s .2s}
 .top-nav.menu-open .mobile-contact{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .2s ease .22s,visibility 0s}
}
@media(prefers-reduced-motion:reduce){.top-nav .mobile-contact,.top-nav.menu-open .mobile-contact{transition:none}}

/* Expand the rounded header into the full-screen menu in one motion. */
@media(max-width:760px){
 .top-nav>.mobile-menu,.top-nav.menu-open>.mobile-menu{top:-12px;left:-12px;width:100vw;height:100dvh;border-radius:0}
 .top-nav>.mobile-menu{clip-path:inset(12px 12px calc(100% - 76px) 12px round 32px);visibility:hidden;overflow:hidden;transition:clip-path .6s cubic-bezier(.65,0,.2,1),visibility 0s .6s}
 .top-nav.menu-open>.mobile-menu{clip-path:inset(0 round 0);visibility:visible;overflow:auto;transition:clip-path .6s cubic-bezier(.65,0,.2,1),visibility 0s}
}
@media(prefers-reduced-motion:reduce){.top-nav>.mobile-menu,.top-nav.menu-open>.mobile-menu{transition:none}}
@media(max-width:760px){
 .top-nav>.mobile-menu,.top-nav.menu-open>.mobile-menu{top:0;left:0;width:100vw;height:100dvh}
 .top-nav>.mobile-menu{padding:100px 28px 110px}
 .top-nav>.mobile-menu .mobile-contact{display:inline-flex;position:absolute;right:28px;bottom:calc(max(28px,env(safe-area-inset-bottom)) + 56px);width:auto;min-height:48px;margin:0;padding:0 24px;font:700 16px/1.1 Satoshi,sans-serif;color:#fff;background:var(--accent);border-radius:99px;opacity:0;visibility:inherit;pointer-events:auto;transform:translateY(18px);transition:opacity .35s ease,transform .35s ease,box-shadow .25s ease}
 .top-nav.menu-open>.mobile-menu .mobile-contact{opacity:1;transform:none;transition-delay:.35s}
 .top-nav>.mobile-menu .mobile-contact::after{content:none}
}
@media(prefers-reduced-motion:reduce){.top-nav>.mobile-menu .mobile-contact{transition:none}}
@media(max-width:760px){
 .top-nav>.mobile-menu,.top-nav.menu-open>.mobile-menu{position:absolute;top:-12px;left:-12px;width:calc(100% + 24px);height:100dvh}
 .top-nav>.mobile-menu .mobile-contact{bottom:calc(max(28px,env(safe-area-inset-bottom)) + 168px)}
}
@media(max-width:760px){.top-nav>.mobile-menu,.top-nav.menu-open>.mobile-menu{width:100vw}}
@media(max-width:760px){.top-nav>.mobile-menu{clip-path:inset(12px var(--menu-right-inset,12px) calc(100% - 76px) 12px round 32px)}}
/* Reveal each mobile menu item with the same gentle movement. */
@media(max-width:760px){
 .top-nav>.mobile-menu a:not(.mobile-contact){opacity:0;transform:translateY(18px);transition:opacity .45s ease,transform .45s cubic-bezier(.2,.75,.2,1)}
 .top-nav.menu-open>.mobile-menu a:not(.mobile-contact){opacity:1;transform:translateY(0)}
 .top-nav.menu-open>.mobile-menu a:nth-child(1){transition-delay:.25s}
 .top-nav.menu-open>.mobile-menu a:nth-child(2){transition-delay:.32s}
 .top-nav.menu-open>.mobile-menu a:nth-child(3){transition-delay:.39s}
}
@media(prefers-reduced-motion:reduce){.top-nav>.mobile-menu a:not(.mobile-contact){transition:none}}
@media(max-width:760px){
 .top-nav.menu-open>.mobile-menu a.menu-selected:not(.mobile-contact){color:transparent;background:linear-gradient(90deg,var(--accent) 0 50%,#fff 50% 100%) 100% 0/200% 100% no-repeat;-webkit-background-clip:text;background-clip:text;animation:menu-selection-fill .6s ease forwards}
 .top-nav>.mobile-menu.menu-navigating a{pointer-events:none}
 @keyframes menu-selection-fill{to{background-position:0 0}}
}
@media(prefers-reduced-motion:reduce){.top-nav.menu-open>.mobile-menu a.menu-selected:not(.mobile-contact){animation:none;color:var(--accent)}}

@media(max-width:760px){
 .top-nav.menu-open>.mobile-menu a.menu-selected:not(.mobile-contact){color:transparent;background-image:linear-gradient(var(--accent),var(--accent)),linear-gradient(#fff,#fff);background-position:center;background-size:0% 100%,100% 100%;background-repeat:no-repeat;-webkit-background-clip:text;background-clip:text;animation:menu-selection-center .55s ease forwards}
 @keyframes menu-selection-center{to{background-size:100% 100%,100% 100%}}
}
/* A larger introduction overlaps the portrait without moving it. */
@media(min-width:761px){.home-hero .hero-copy h1{width:min(68vw,960px)}.home-hero .hero-copy>p{font-size:clamp(35px,4.5vw,65px)}}
@media(max-width:760px){.home-hero .hero-copy h1{width:76%}.home-hero .hero-copy>p{font-size:clamp(19px,4.9vw,31px)}}

/* Tools sit alongside the project brief, then stack on smaller screens. */
.brief-layout{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1fr) minmax(200px,260px);align-items:start;gap:24px;margin:0 0 110px}
.detail-body .brief-layout .brief{width:100%;margin:0}
.project-tools{background:#fff;border:1px solid var(--accent);border-radius:20px;padding:28px;box-shadow:8px 8px 0 var(--accent)}
.project-tools h2{color:var(--accent);font-size:25px;line-height:1.1;margin-bottom:22px}
.project-tools ul{list-style:none;padding:0;margin:0;display:grid;gap:18px}
.project-tools li{display:flex;align-items:center;gap:13px;font-size:16px;font-weight:700;line-height:1.25;color:#111}
.project-tools img{width:28px;height:28px;object-fit:contain;flex:none}
@media(max-width:760px){.brief-layout{grid-template-columns:1fr;gap:20px;margin-bottom:75px}.project-tools{padding:24px;box-shadow:5px 5px 0 var(--accent)}.project-tools h2{font-size:23px}.project-tools ul{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}}
@media(max-width:360px){.project-tools ul{grid-template-columns:1fr}}
.project-tools{box-shadow:8px 8px 0 #ff5b3d30}
@media(max-width:760px){.project-tools{box-shadow:5px 5px 0 #ff5b3d30}}
.site-link-pending,.detail-hero-content>.site-link-pending{color:#fff}
/* On mobile, the title pill keeps the number circle's height for a single line. */
@media(max-width:760px){
 .detail-body .detail-row>h2{min-height:48px;padding:0 18px 0 0;align-items:center}
 .detail-body .detail-row>h2::before,.detail-body .detail-row:nth-of-type(odd)>h2::before{width:48px;height:48px;flex:0 0 48px;align-self:center}
}
@media(max-width:760px){.detail-body .detail-row>h2.title-two-lines{padding-top:8px;padding-bottom:8px}}
@media(min-width:761px) and (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
.footer-bottom{display:flex;justify-content:space-between;align-items:center;gap:24px;padding-top:36px}
.footer-bottom .copyright{border:0;padding:0}
.footer-linkedin{width:48px;height:48px;border:1px solid #fff;border-radius:50%;display:grid;place-items:center;flex:none;transition:background .25s ease,transform .25s ease}
.footer-linkedin img{width:22px;height:22px;filter:invert(1)}
.footer-linkedin:focus-visible{outline:3px solid #ff9a86;outline-offset:4px}
@media(hover:hover){.footer-linkedin:hover{transform:translateY(-3px);background:#ffffff20}}
@media(prefers-reduced-motion:reduce){.footer-linkedin{transition:none}}
/* Keep the tags above the portrait while the name remains behind it. */
@media(min-width:761px){
 .home-hero .hero-copy{z-index:auto}
 .home-hero .hero-copy>p,.home-hero .hero-copy h1{position:relative;z-index:2}
 .home-hero .tags{z-index:4}
}
@media(min-width:761px){
 .home-hero .hero-copy{z-index:2;left:max(8%,calc((100% - 1440px)/2 + 115px))}
 .home-hero .portrait{right:calc(max(0px,(100% - 1440px)/2) - 6%)}
}
