:root{--black:#080808;--cream:#f1eee8;--acid:#d7ff3f;--mono:'DM Mono',monospace;--sans:'Space Grotesk',sans-serif}*{box-sizing:border-box}html,body{margin:0;background:var(--black);font-family:var(--sans);color:var(--cream)}body{overflow-x:hidden}.grain{pointer-events:none;position:fixed;z-index:20;inset:0;opacity:.055;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.6'/%3E%3C/svg%3E")}.page{display:none;min-height:100svh;position:relative;overflow:hidden}.page.is-active{display:block}.topbar{position:relative;z-index:3;height:90px;padding:28px 3.2vw;display:flex;align-items:center;justify-content:space-between;font-family:var(--mono);font-size:11px;text-transform:uppercase}.wordmark{font-weight:600;font-size:16px;text-decoration:none;color:inherit;letter-spacing:-1px}.wordmark span{font-size:8px;vertical-align:top;margin-left:2px}.topbar nav{display:flex;gap:42px;margin-left:auto;margin-right:42px}.topbar a{color:inherit;text-decoration:none}.topbar nav a{opacity:.5;transition:opacity .3s}.topbar nav a:hover,.topbar nav a.active{opacity:1}.mail-link{border-bottom:1px solid currentColor;padding-bottom:3px}.page-home{background:var(--black)}.home-grid{border-top:1px solid #303030;position:absolute;top:50%;left:3.2vw;right:3.2vw;transform:translateY(-50%);padding-top:28px;display:flex;justify-content:space-between}.intro-tags{font-size:clamp(18px,2vw,29px);line-height:1.18;letter-spacing:-.05em}.intro-tags p{margin:0}.intro-note{text-align:right;font-family:var(--mono);font-size:11px;line-height:1.55;margin:1px 0}.hero-name{position:absolute;left:2.5vw;right:2.5vw;bottom:-2.2vw;display:flex;align-items:flex-end;justify-content:space-between;letter-spacing:-.105em;line-height:.65;font-weight:600;font-size:clamp(150px,27.4vw,480px);white-space:nowrap}.hero-morel{font-size:.81em}.home-footer{position:absolute;bottom:26px;left:3.2vw;right:3.2vw;display:flex;justify-content:space-between;align-items:center;font-family:var(--mono);font-size:10px}.scroll-prompt{color:inherit;text-decoration:none}.scroll-prompt i{font-style:normal;font-size:18px;margin-left:5px}.reveal{animation:up .9s cubic-bezier(.16,1,.3,1) both}.intro-note{animation-delay:.12s}@keyframes up{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}.transition{position:fixed;z-index:30;inset:0;background:var(--acid);color:#0c0c0c;display:flex;justify-content:space-between;align-items:center;font-size:18vw;font-weight:700;letter-spacing:-.1em;padding:0 3vw;transform:translateY(100%);pointer-events:none}.transition.is-moving{animation:wipe .85s cubic-bezier(.76,0,.24,1) forwards}@keyframes wipe{0%{transform:translateY(100%)}45%{transform:translateY(0)}55%{transform:translateY(0)}100%{transform:translateY(-100%)}}.page-work{background:var(--cream);color:#111;padding-bottom:6vh}.work-heading{padding:8vh 3.2vw 5vh;position:relative}.work-heading p,.work-heading span,.eyebrow,.project-index,.project-type,.project-year{font-family:var(--mono);font-size:10px;text-transform:uppercase}.work-heading h1{font-size:clamp(66px,10.5vw,170px);line-height:.82;letter-spacing:-.09em;margin:10px 0 0}.work-heading span{position:absolute;bottom:6vh;right:3.2vw}.project-list{border-top:1px solid #bcb9b4}.project{display:grid;grid-template-columns:8% 1fr 26% 8%;gap:15px;align-items:center;min-height:112px;padding:0 3.2vw;border-bottom:1px solid #bcb9b4;text-decoration:none;color:inherit;transition:padding .45s cubic-bezier(.16,1,.3,1),background .3s}.project:hover{padding-left:5vw;background:#e4e1da}.project-title{font-size:clamp(34px,5.4vw,80px);letter-spacing:-.07em}.preview-image{position:fixed;z-index:4;top:50%;left:57%;width:25vw;aspect-ratio:.83;pointer-events:none;overflow:hidden;opacity:0;transform:translate(-50%,-50%) rotate(4deg) scale(.84);transition:.4s cubic-bezier(.16,1,.3,1)}.preview-image.visible{opacity:1;transform:translate(-50%,-50%) rotate(2deg) scale(1)}.preview-image img{width:100%;height:100%;object-fit:cover}.page-about{background:#101010}.about-layout{display:grid;grid-template-columns:40% 1fr;gap:9vw;min-height:calc(100svh - 90px);padding:6vh 9vw 12vh 3.2vw}.portrait-wrap{max-height:610px;overflow:hidden}.portrait-wrap img{height:100%;width:100%;object-fit:cover;filter:grayscale(100%)}.about-copy{padding-top:4vh}.about-copy h1{font-size:clamp(55px,8vw,124px);line-height:.83;letter-spacing:-.09em;margin:23px 0 55px}.body-copy{max-width:480px;font-size:clamp(18px,1.7vw,26px);letter-spacing:-.035em;line-height:1.25}.about-details{font-family:var(--mono);font-size:10px;text-transform:uppercase;margin-top:60px;border-top:1px solid #3a3a3a;max-width:480px;padding-top:16px;display:grid;grid-template-columns:1fr 1fr}.about-details span,.about-details strong{display:block}.about-details span{opacity:.5;margin-bottom:8px}.about-details strong{font-weight:400;line-height:1.45}.contact-band{border-top:1px solid #3a3a3a;padding:25px 3.2vw;display:flex;align-items:center;justify-content:space-between;font-family:var(--mono);font-size:10px;text-transform:uppercase}.contact-band p{margin:0}.contact-band a{color:var(--acid);font-size:clamp(22px,3.5vw,48px);font-family:var(--sans);letter-spacing:-.06em;text-transform:none;text-decoration:none}.contact-band i{font-style:normal}.page-project{background:var(--cream);color:#111;padding:27px 3.2vw 3.2vw}.back{font-family:var(--mono);font-size:10px;color:inherit;text-decoration:none;text-transform:uppercase}.project-hero{padding:8vh 0 6vh;position:relative}.project-hero p,.project-meta{font-family:var(--mono);font-size:10px;text-transform:uppercase}.project-hero h1{font-size:clamp(80px,13vw,190px);line-height:.76;letter-spacing:-.1em;margin:35px 0 0}.project-meta{display:flex;gap:70px;line-height:1.5;position:absolute;right:2vw;bottom:7vh}.project-cover{width:100%;height:55vh;object-fit:cover;display:block}.cursor-orb{position:fixed;top:0;left:0;width:18px;height:18px;border-radius:50%;background:var(--acid);mix-blend-mode:difference;pointer-events:none;z-index:50;transform:translate(-50%,-50%);transition:width .25s,height .25s,opacity .25s}.cursor-orb.grow{width:64px;height:64px}
@media(max-width:700px){.cursor-orb{display:none}.topbar{height:72px;padding:22px 5vw}.topbar nav{gap:17px;margin-right:0}.mail-link{display:none}.home-grid{left:5vw;right:5vw;top:42%;display:block;padding-top:16px}.intro-tags{font-size:23px}.intro-note{text-align:left;margin-top:22px;font-size:9px}.hero-name{font-size:27vw;left:4vw;right:4vw;bottom:3vw;display:block;line-height:.73}.hero-name span{display:block}.hero-morel{font-size:1em}.home-footer{left:5vw;right:5vw;bottom:17px}.home-footer span:first-child{display:none}.work-heading{padding:8vh 5vw 5vh}.work-heading span{right:5vw;bottom:3.3vh}.project{grid-template-columns:11% 1fr 14%;padding:0 5vw;min-height:94px}.project:hover{padding-left:6vw}.project-type{display:none}.project-year{text-align:right}.preview-image{display:none}.about-layout{display:flex;flex-direction:column;padding:4vh 5vw 10vh;gap:28px}.portrait-wrap{height:48vh}.about-copy{padding:0}.about-copy h1{margin:18px 0 36px}.about-details{margin-top:42px}.contact-band{padding:18px 5vw;display:grid;gap:14px}.contact-band span{display:none}.page-project{padding:22px 5vw 5vw}.project-hero{padding:11vh 0 8vh}.project-meta{position:static;margin-top:38px;gap:35px}.project-cover{height:45vh}}

/* Animation d’ouverture — composition et rythme de la page de référence */
.page-home .topbar,.page-home .home-footer{display:none}.intro-note{font-family:var(--sans);font-size:clamp(23px,2.1vw,35px);line-height:1.15;letter-spacing:-.07em}.intro-note a{color:inherit}.page-home.is-active .hero-name{animation:hero-enter 1.5s cubic-bezier(.16,1,.3,1) .15s both}.page-home.is-active .home-grid{animation:grid-enter .9s cubic-bezier(.16,1,.3,1) 1.12s both}.page-home.is-active .intro-tags p{animation:up .65s cubic-bezier(.16,1,.3,1) both}.page-home.is-active .intro-tags p:nth-child(1){animation-delay:1.25s}.page-home.is-active .intro-tags p:nth-child(2){animation-delay:1.33s}.page-home.is-active .intro-tags p:nth-child(3){animation-delay:1.41s}.page-home.is-active .intro-tags p:nth-child(4){animation-delay:1.49s}.page-home.is-active .intro-note{animation:up .75s cubic-bezier(.16,1,.3,1) 1.58s both}@keyframes hero-enter{0%{opacity:0;transform:translateY(-38vh);filter:blur(3px)}52%{opacity:.05;filter:blur(0)}100%{opacity:1;transform:translateY(0)}}@keyframes grid-enter{from{opacity:0;transform:translateY(calc(-50% + 25px));clip-path:inset(0 100% 0 0)}to{opacity:1;transform:translateY(-50%);clip-path:inset(0 0 0 0)}}
@media(max-width:700px){.intro-note{font-size:25px}.page-home.is-active .home-grid{animation-name:grid-enter-mobile}@keyframes grid-enter-mobile{from{opacity:0;transform:translateY(calc(-50% + 25px));clip-path:inset(0 100% 0 0)}to{opacity:1;transform:translateY(-50%);clip-path:inset(0 0 0 0)}}}

/* Séquence d’introduction : marque sombre, flash, puis composition complète. */
.loader-mark{position:absolute;z-index:4;top:18vh;left:50%;font-size:clamp(120px,18vw,290px);font-weight:600;line-height:.75;letter-spacing:-.11em;white-space:nowrap;color:#101010;opacity:0;transform:translate(-50%,-65vh)}.loader-mark sup{font-size:.35em;vertical-align:top;letter-spacing:-.04em;margin-left:.08em}.page-home .hero-name,.page-home .home-grid{opacity:0}.page-home.is-active .loader-mark{animation:loader-sequence 4.65s cubic-bezier(.77,0,.18,1) both}.page-home.is-active .hero-name{animation:final-logo 1.05s cubic-bezier(.16,1,.3,1) 3.68s both}.page-home.is-active .home-grid{animation:final-grid .75s cubic-bezier(.16,1,.3,1) 4.03s both}.page-home.is-active .intro-tags p{animation:label-rise .45s cubic-bezier(.16,1,.3,1) both}.page-home.is-active .intro-tags p:nth-child(1){animation-delay:4.2s}.page-home.is-active .intro-tags p:nth-child(2){animation-delay:4.27s}.page-home.is-active .intro-tags p:nth-child(3){animation-delay:4.34s}.page-home.is-active .intro-tags p:nth-child(4){animation-delay:4.41s}.page-home.is-active .intro-note{animation:label-rise .55s cubic-bezier(.16,1,.3,1) 4.25s both}@keyframes loader-sequence{0%{opacity:0;transform:translate(-50%,-68vh);color:#0b0b0b}12%{opacity:1}42%{opacity:1;transform:translate(-50%,-6vh);color:#141414}62%{opacity:1;transform:translate(-50%,-6vh);color:#141414}76%{opacity:1;transform:translate(-50%,-6vh);color:#f2f2f0}86%{opacity:0;transform:translate(-50%,6vh);color:#f2f2f0}100%{opacity:0;transform:translate(-50%,10vh)}}@keyframes final-logo{from{opacity:0;transform:translateY(32vh) scale(.88)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes final-grid{from{opacity:0;transform:translateY(calc(-50% + 18px));clip-path:inset(0 0 100% 0)}to{opacity:1;transform:translateY(-50%);clip-path:inset(0 0 0 0)}}@keyframes label-rise{from{opacity:0;transform:translateY(17px);filter:blur(3px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}
@media(max-width:700px){.loader-mark{top:27vh;font-size:28vw}.page-home.is-active .hero-name{animation-name:final-logo-mobile}@keyframes final-logo-mobile{from{opacity:0;transform:translateY(22vh) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}}

/* Ajustements de composition et portfolio vertical. */
.page-home .home-grid{top:43%}.page-home .hero-name{bottom:3.8vw}.portfolio-intro{padding:8vh 3.2vw 5vh;position:relative}.portfolio-intro p,.portfolio-intro span{font-family:var(--mono);font-size:10px;text-transform:uppercase}.portfolio-intro h1{font-size:clamp(110px,18vw,300px);line-height:.72;letter-spacing:-.115em;margin:18px 0 0}.portfolio-intro span{position:absolute;right:3.2vw;bottom:5.5vh}.portfolio-grid{padding:0 3.2vw 14vh;display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(18px,2.5vw,42px);align-items:start}.portfolio-card{margin:0;position:relative;overflow:hidden;background:#d9d5ce}.portfolio-card:nth-child(1){grid-column:1 / span 5}.portfolio-card:nth-child(2){grid-column:7 / span 6;margin-top:12vw}.portfolio-card:nth-child(3){grid-column:2 / span 4;margin-top:5vw}.portfolio-card:nth-child(4){grid-column:7 / span 5;margin-top:3vw}.portfolio-card:nth-child(5){grid-column:1 / span 7;margin-top:8vw}.portfolio-card:nth-child(6){grid-column:9 / span 4;margin-top:1vw}.portfolio-card:nth-child(7){grid-column:2 / span 5;margin-top:7vw}.portfolio-card:nth-child(8){grid-column:8 / span 5;margin-top:15vw}.portfolio-card.tall{aspect-ratio:.71}.portfolio-card.wide{aspect-ratio:1.28}.portfolio-card.medium{aspect-ratio:.82}.portfolio-card img{width:100%;height:100%;display:block;object-fit:cover;transform:scale(1.07);transition:transform 1.1s cubic-bezier(.16,1,.3,1)}.portfolio-card:hover img{transform:scale(1)}.portfolio-card figcaption{position:absolute;bottom:0;left:0;background:var(--cream);padding:8px 10px;font-family:var(--mono);font-size:9px;text-transform:uppercase}.reveal-on-scroll{opacity:0;transform:translateY(75px);transition:opacity .85s cubic-bezier(.16,1,.3,1),transform .85s cubic-bezier(.16,1,.3,1)}.reveal-on-scroll.in-view{opacity:1;transform:translateY(0)}.about-copy h1 sup{font-size:.35em;vertical-align:top;letter-spacing:-.04em}.about-story{max-width:575px;font-size:clamp(16px,1.4vw,20px);line-height:1.38;letter-spacing:-.025em}.about-story p{margin:0 0 1.4em}.about-story p:first-child{font-size:1.22em;line-height:1.25}.about-layout{align-items:start}.portrait-wrap{position:sticky;top:35px}.page-about{overflow:visible}
@media(max-width:700px){.page-home .home-grid{top:36%}.page-home .hero-name{bottom:9vw}.portfolio-intro{padding:8vh 5vw 6vh}.portfolio-intro span{right:5vw;bottom:3.5vh}.portfolio-grid{padding:0 5vw 12vh;display:grid;grid-template-columns:1fr 1fr;gap:16px}.portfolio-card:nth-child(n){grid-column:auto;margin-top:0}.portfolio-card:nth-child(2),.portfolio-card:nth-child(5),.portfolio-card:nth-child(8){grid-column:span 2}.portfolio-card:nth-child(1),.portfolio-card:nth-child(4),.portfolio-card:nth-child(7){aspect-ratio:.73}.portfolio-card figcaption{font-size:8px;padding:6px 7px}.portrait-wrap{position:static}.about-story{font-size:17px}.about-copy h1{font-size:20vw}}

/* Finitions : blanc de transition, About sans portrait, page Contact façon interface Apple. */
.transition{background:#f7f7f5;color:#101010}.page-about .about-layout{display:block;max-width:900px;padding-left:12vw}.page-about .about-copy{padding-top:7vh}.page-contact{background:#f5f5f7;color:#1d1d1f;min-height:100svh}.contact-topbar{border-bottom:1px solid #d2d2d7}.contact-topbar .wordmark{color:#1d1d1f}.contact-shell{max-width:1120px;margin:0 auto;padding:12vh 5vw 8vh}.contact-shell .eyebrow{color:#6e6e73;margin:0}.contact-shell h1{font-size:clamp(58px,9vw,140px);line-height:.88;letter-spacing:-.085em;margin:22px 0 7vh}.contact-shell h1 em{font-family:Georgia,serif;font-weight:400;letter-spacing:-.09em}.contact-card{background:rgba(255,255,255,.82);border:1px solid rgba(0,0,0,.08);border-radius:32px;box-shadow:0 20px 60px rgba(0,0,0,.08);overflow:hidden;backdrop-filter:blur(20px)}.contact-email{display:flex;align-items:center;justify-content:space-between;padding:clamp(27px,4vw,60px);font-size:clamp(24px,4.6vw,70px);line-height:1;letter-spacing:-.075em;text-decoration:none;color:#1d1d1f;border-bottom:1px solid #dedee3;transition:background .25s}.contact-email:hover{background:#fff}.contact-email span{font-size:.65em}.contact-details{display:grid;grid-template-columns:repeat(3,1fr)}.contact-details a{min-height:145px;padding:27px;text-decoration:none;color:#1d1d1f;border-right:1px solid #dedee3;font-size:clamp(15px,1.6vw,21px);line-height:1.25;letter-spacing:-.04em;transition:background .25s}.contact-details a:last-child{border-right:0}.contact-details a:hover{background:#fafafa}.contact-details span{display:block;font-family:var(--mono);font-size:9px;text-transform:uppercase;letter-spacing:0;color:#6e6e73;margin-bottom:29px}.contact-footer{position:absolute;bottom:25px;left:3.2vw;right:3.2vw;display:flex;justify-content:space-between;font-family:var(--mono);font-size:9px;text-transform:uppercase;color:#6e6e73}
@media(max-width:700px){.page-about .about-layout{padding-left:5vw}.contact-topbar nav{gap:14px}.contact-shell{padding:9vh 5vw 14vh}.contact-shell h1{font-size:16vw;margin-bottom:8vh}.contact-card{border-radius:22px}.contact-email{padding:25px 20px;font-size:7.4vw}.contact-details{grid-template-columns:1fr}.contact-details a{min-height:auto;border-right:0;border-bottom:1px solid #dedee3;padding:20px}.contact-details a:last-child{border-bottom:0}.contact-details span{margin-bottom:8px}.contact-footer{left:5vw;right:5vw;bottom:18px;font-size:8px}}

.cursor-orb{background:#fff;mix-blend-mode:difference}

.loader-mark sup{margin-left:.25em}.portfolio-card:nth-child(9){grid-column:2 / span 5;margin-top:9vw}.portfolio-card:nth-child(10){grid-column:8 / span 4;margin-top:3vw}.portfolio-card:nth-child(11){grid-column:1 / span 6;margin-top:10vw}.portfolio-card:nth-child(12){grid-column:8 / span 5;margin-top:7vw}.portfolio-card:nth-child(13){grid-column:2 / span 4;margin-top:12vw}.portfolio-card:nth-child(14){grid-column:8 / span 4;margin-top:4vw}
@media(max-width:700px){.portfolio-card:nth-child(9),.portfolio-card:nth-child(10),.portfolio-card:nth-child(11),.portfolio-card:nth-child(12),.portfolio-card:nth-child(13),.portfolio-card:nth-child(14){grid-column:auto;margin-top:0}.portfolio-card:nth-child(11){grid-column:span 2}}
