@font-face{font-family:'DM Sans';font-style:normal;font-weight:400;src:url('assets/dm-sans-regular.ttf') format('truetype');font-display:swap}
@font-face{font-family:'DM Sans';font-style:normal;font-weight:500 700;src:url('assets/dm-sans-medium.ttf') format('truetype');font-display:swap}
@font-face{font-family:Manrope;font-style:normal;font-weight:400 800;src:url('assets/manrope-medium.ttf') format('truetype');font-display:swap}
:root{--paper:#faf8f8;--ink:#211e21;--muted:#797277;--line:#dfd8dd;--rose:#bc517f;--pink:#e8abc6;--pink-light:#f3e5ec;--page:6%}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',Arial,sans-serif;letter-spacing:0}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,.carousel:focus-visible{outline:2px solid var(--rose);outline-offset:5px}button{touch-action:manipulation}.skip-link{position:fixed;top:-100px;left:20px;background:var(--ink);color:white;z-index:20;padding:12px}.skip-link:focus{top:10px}header,main,footer{position:relative;z-index:1}header{height:100px;margin:0 var(--page);display:flex;align-items:center;border-bottom:1px solid var(--line)}.wordmark{font-family:Arial,sans-serif;font-style:italic;font-weight:700;font-size:45px;line-height:1}.wordmark span{color:var(--rose)}.header-name{font-size:9px;line-height:1.4;margin-left:24px;font-weight:500}nav{margin-left:auto;display:flex;gap:35px;align-items:center;font-size:12px}nav sup{font-size:8px;color:var(--rose);margin-left:4px}nav>a:not(.contact-link){position:relative}nav>a:not(.contact-link)::after{content:'';position:absolute;left:0;right:100%;bottom:-5px;height:1px;background:var(--rose);transition:right .3s}nav>a:hover::after{right:0}.contact-link{border:1px solid var(--line);border-radius:30px;padding:12px 18px;transition:background .3s}.contact-link:hover{background:var(--pink-light)}.contact-link span{margin-left:24px}.hero{padding:25px var(--page) 32px;isolation:isolate}.hero-meta{display:flex;justify-content:space-between;align-items:center}.availability{font-size:10px;display:flex;align-items:center;gap:8px}.availability i{height:5px;width:5px;background:var(--rose);border-radius:50%;box-shadow:0 0 0 4px #bc517f0c}.edition,.tiny{font-size:9px;font-weight:500}.edition{color:var(--muted)}.hero-stage{position:relative;height:390px;display:flex;align-items:center;justify-content:center;isolation:isolate;margin:12px -6.82% 0}.hero-stage h1{margin:0;position:relative;z-index:1;font-weight:500;line-height:.94;width:840px;max-width:86%}.hero-name{font-size:10px;display:block;text-align:center;margin-bottom:20px;line-height:1}.hero-type{font-family:Arial,sans-serif;display:block;text-transform:uppercase;font-size:112px;font-weight:500;font-style:italic;white-space:nowrap}.hero-second{font-family:Manrope,Arial,sans-serif;font-size:111px;display:block;text-align:right;font-weight:500;padding-right:12px}.amp{font-family:Georgia,serif;font-size:97px;font-style:italic;font-weight:400;margin-right:15px}.period{color:var(--rose)}.ribbon-layer{position:absolute;inset:0;pointer-events:none;overflow:hidden}.ribbon-back{z-index:0}.ribbon-front{z-index:2}.ribbon-layer canvas{display:block;width:100%;height:100%}.side-note{position:absolute;right:2.4%;top:43%;writing-mode:vertical-rl;font-size:8px;color:var(--muted);z-index:3}.hero-bottom{display:flex;justify-content:space-between;align-items:center;gap:20px}.hero-bottom p{font-size:13px;line-height:1.65;margin:0}.hero-bottom .hero-disciplines{font-size:9px;line-height:1.8;color:var(--muted)}.explore{display:flex;align-items:center;gap:20px;font-size:11px}.circle-arrow{width:45px;height:45px;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;font-size:20px;transition:background .3s,transform .3s}.explore:hover .circle-arrow{background:var(--pink-light);transform:translateY(3px)}
#projets{overflow:hidden;padding:0 0 45px}.section-head{margin:0 var(--page);border-top:1px solid var(--line);padding:27px 0 14px;display:flex;justify-content:space-between;align-items:center}.section-label{display:flex;align-items:center;gap:20px}.index{font-size:10px;color:var(--muted)}.section-head h2{font-size:19px;font-weight:500;margin:0}.pink-dot{color:var(--rose)}.section-head>.tiny{color:var(--muted)}.carousel{height:430px;position:relative;perspective:1500px;perspective-origin:50% 45%;touch-action:pan-y;cursor:grab}.carousel.dragging{cursor:grabbing}.track{height:100%;position:relative;transform-style:preserve-3d}.project{position:absolute;left:50%;top:25px;width:510px;max-width:76%;padding:0;border:0;background:transparent;text-align:left;transform-origin:center;will-change:transform;transform-style:preserve-3d;cursor:inherit}.visual{height:310px;position:relative;border-radius:5px;background:#eee7eb;box-shadow:0 30px 45px -28px #5c344c66,0 1px 2px #4e294030;transition:transform .32s ease-out,box-shadow .32s;transform:perspective(900px) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg)) scale(var(--scale,1));isolation:isolate}.visual::after{content:'';position:absolute;inset:0;border:1px solid #fff7;border-radius:5px;pointer-events:none}.visual img{width:100%;height:100%;display:block;object-fit:cover;border-radius:5px;user-select:none}.project[data-index="1"] .visual img{object-position:center 37%}.sample{position:absolute;top:14px;left:14px;border-radius:2px;padding:6px 8px;color:#352832;background:#faf8f8eb;font-size:8px}.open{width:37px;height:37px;position:absolute;bottom:16px;right:16px;display:grid;place-items:center;border-radius:50%;background:#faf8f8;font-size:22px;transform:translateZ(20px);transition:background .25s}.project.active:hover .open{background:var(--pink-light)}.sheen{position:absolute;inset:0;border-radius:5px;pointer-events:none;opacity:0;background:linear-gradient(115deg,transparent 25%,#ffffff35 48%,transparent 65%);background-position:var(--shine,50%) 50%;background-size:180% 100%;transition:opacity .3s}.project.active:hover .sheen{opacity:1}.project-caption{display:flex;justify-content:space-between;gap:10px;padding:21px 1px 0;transition:opacity .3s}.project-caption h3{font-size:19px;font-weight:500;margin:0 0 5px}.project-caption p,.project-caption>span{margin:0;font-size:10px;color:var(--muted)}.project:not(.active) .project-caption{opacity:0}.carousel-footer{display:flex;align-items:center;justify-content:space-between;margin:0 var(--page);gap:20px}.drag-note,.selection-note{font-size:9px;color:var(--muted);flex:1}.drag-note span{margin-left:14px;font-size:17px}.selection-note{text-align:right}.controls{display:flex;align-items:center;gap:24px}.controls button{width:42px;height:42px;border:1px solid var(--line);border-radius:50%;background:transparent;font-size:21px;transition:background .2s,transform .2s}.controls button:hover{background:var(--pink-light);transform:scale(1.07)}#counter{font-size:10px;min-width:36px;text-align:center}.credit{font-size:9px;text-align:center;color:var(--muted);line-height:1.6;margin:22px 6% 0}.credit a{border-bottom:1px solid var(--line)}
.about{margin:0 var(--page);padding:76px 0 80px;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;gap:10%}.about h2{font-family:Manrope,sans-serif;font-size:53px;line-height:1.12;font-weight:500;margin:33px 0 35px}.about h2 em{font-family:Georgia,serif;color:var(--rose);font-weight:400}.location{font-size:9px;color:var(--muted)}.location>span{font-size:17px;margin-left:22px}.about-copy .lead{font-size:24px;line-height:1.4;color:var(--ink);margin-top:0;margin-bottom:25px}.about-copy>p{font-size:13px;line-height:1.85;color:var(--muted);max-width:400px}.skills{border-top:1px solid var(--line);padding-top:23px;margin-top:28px;display:grid;grid-template-columns:1fr 1fr;gap:18px}.skills span,.education>span{font-size:8px;color:var(--muted)}.skills p{font-size:12px;line-height:1.8;margin:12px 0 0}.education{border-top:1px solid var(--line);padding-top:18px;margin-top:25px}.education p{font-size:11px;line-height:1.8;margin:8px 0 0}.education strong{font-weight:500}.contact{margin:0 var(--page);padding:38px 0 40px;border-top:1px solid var(--line);position:relative}.contact-title{display:flex;align-items:center;justify-content:space-between;margin:27px 0 32px;gap:20px}.contact h2{font-family:Manrope,sans-serif;font-size:76px;line-height:1.08;font-weight:500;margin:0}.contact h2 em{font-family:Georgia,serif;font-weight:400}.contact-arrow{height:118px;width:118px;flex-shrink:0;background:var(--pink-light);color:var(--rose);border-radius:50%;font-size:65px;display:grid;place-items:center;transition:transform .5s,background .5s}.contact-title:hover .contact-arrow{transform:rotate(45deg);background:var(--pink)}.contact-title:hover h2 em{color:var(--rose)}.contact-bottom{display:flex;align-items:end;justify-content:space-between;gap:20px}.contact-bottom>a{font-size:14px;border-bottom:1px solid var(--rose);padding:0 0 8px;overflow-wrap:anywhere}.contact-bottom>a span{margin-left:15px}.contact-bottom p{font-size:11px;line-height:1.6;color:var(--muted);margin:0}footer{margin:0 var(--page);border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:20px;padding:25px 0;font-size:9px;color:var(--muted)}.footer-name{font-size:11px;color:var(--ink)}.footer-name span{font-size:8px;color:var(--muted);display:block;margin-top:4px}
#lights{position:fixed;inset:0;pointer-events:none;z-index:0;overflow:hidden}.light{position:absolute;opacity:.48;color:#c281a5;font-size:10px;transition:transform 1.5s ease-out;text-shadow:0 0 7px #ecc2d8}.light:nth-child(3n){font-size:5px;opacity:.25}dialog{border:1px solid var(--line);border-radius:6px;background:var(--paper);width:min(870px,92%);padding:0;max-height:90dvh;overflow:auto;box-shadow:0 30px 110px #20182055}dialog::backdrop{background:#211e2199;backdrop-filter:blur(9px)}.close{position:absolute;right:14px;top:14px;border:0;border-radius:50%;width:40px;height:40px;background:var(--paper);font-size:26px;z-index:3}.detail-image{height:420px;background:#efe9ed}.detail-image img{height:100%;width:100%;object-fit:contain}.detail-copy{padding:28px 35px}.detail-copy h2{font-size:28px;font-weight:500;margin:12px 0}.detail-copy p{font-size:13px;line-height:1.7;color:var(--muted);max-width:570px}.detail-copy a{font-size:12px;border-bottom:1px solid var(--rose)}.image-error{display:grid;place-items:center;height:100%;padding:30px;color:var(--muted);font-size:13px}
@media(min-width:1450px){:root{--page:8%}.hero-stage{margin-left:-9.52%;margin-right:-9.52%;height:430px}.hero-stage h1{width:940px}.hero-type{font-size:128px}.hero-second{font-size:123px}.amp{font-size:110px}.project{width:580px}.visual{height:350px}.carousel{height:470px}}
@media(max-width:1000px){.hero-stage{height:350px}.hero-stage h1{width:670px}.hero-type{font-size:90px}.hero-second{font-size:87px}.amp{font-size:78px}.about h2{font-size:42px}.about-copy .lead{font-size:21px}.contact h2{font-size:61px}.contact-arrow{width:100px;height:100px;font-size:55px}.project{width:470px}.hero-bottom .hero-disciplines{display:none}}
@media(max-width:680px){:root{--page:6%}header{height:78px}.wordmark{font-size:37px}.header-name{font-size:7px;margin-left:14px}nav{gap:18px;font-size:10px}.contact-link{padding:9px 12px}.contact-link span{margin-left:9px}.hero{padding-top:21px;padding-bottom:25px}.availability{font-size:9px}.edition{font-size:7px}.hero-stage{height:285px}.hero-stage h1{width:490px}.hero-name{font-size:8px;margin-bottom:20px}.hero-type{font-size:64px}.hero-second{font-size:64px}.amp{font-size:58px}.side-note{font-size:6px;right:2%}.hero-bottom p{font-size:11px}.explore{gap:10px;font-size:9px}.circle-arrow{width:34px;height:34px;font-size:17px}.section-head{padding-top:21px}.section-head h2{font-size:16px}.section-head>.tiny{display:none}.section-label{gap:14px}.carousel{height:355px}.project{width:440px;top:22px}.visual{height:245px}.project-caption{padding-top:18px}.project-caption h3{font-size:16px}.project-caption p,.project-caption>span{font-size:9px}.sample{font-size:6px;padding:5px 6px;top:10px;left:10px}.open{width:32px;height:32px;font-size:19px;bottom:12px;right:12px}.selection-note{display:none}.drag-note{flex:0 1 auto}.controls{gap:17px}.controls button{width:36px;height:36px}.credit{font-size:8px;max-width:310px;margin:20px auto 0}.about{padding:45px 0;gap:35px;grid-template-columns:1fr}.about h2{font-size:44px;margin:23px 0}.about-copy .lead{font-size:23px}.about-copy .lead br{display:none}.about-copy>p{max-width:none}.skills{gap:25px}.contact{padding:30px 0}.contact h2{font-size:47px}.contact-arrow{width:63px;height:63px;font-size:37px}.contact-bottom{display:block}.contact-bottom>a{font-size:12px;display:inline-block}.contact-bottom p{margin-top:22px}.contact-title{gap:10px;margin-top:23px}.contact .tiny{font-size:8px}footer>span{display:none}.detail-image{height:330px}.detail-copy{padding:23px}.detail-copy h2{font-size:23px}}
@media(max-width:430px){.header-name{display:none}.hero-stage{height:256px}.hero-type{font-size:50px}.hero-second{font-size:53px}.amp{font-size:47px;margin-right:8px}.hero-name{margin-bottom:22px}.edition{display:none}.hero-bottom p{font-size:10px}.explore>span:first-child{max-width:70px;line-height:1.5}.visual{height:226px}.carousel{height:330px}.project-caption h3{font-size:14px}.project-caption>span{font-size:8px}.project-caption p{font-size:8px}.drag-note{font-size:8px}.contact h2{font-size:36px}.contact-arrow{width:48px;height:48px;font-size:30px}.section-head h2{font-size:14px}}
.controls{position:relative;padding-bottom:8px}.controls #autoplay{font-size:15px;width:34px;height:34px;color:var(--rose)}.controls #autoplay:disabled{opacity:.4;cursor:default}.auto-progress{position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--line);overflow:hidden;border-radius:2px}.auto-progress::after{content:'';display:block;height:100%;background:var(--rose);transform-origin:left;transform:scaleX(var(--progress,0))}.circle-arrow,.contact-arrow{transform:translate3d(var(--mag-x,0px),var(--mag-y,0px),0) rotate(var(--turn,0deg));transition:transform .45s cubic-bezier(.2,.8,.2,1),background .3s}.explore:hover .circle-arrow{transform:translate3d(var(--mag-x,0px),var(--mag-y,0px),0)}.contact-title:hover .contact-arrow{--turn:35deg;transform:translate3d(var(--mag-x,0px),var(--mag-y,0px),0) rotate(var(--turn))}
@media(max-width:430px){.controls{gap:12px}.drag-note span{margin-left:6px}.controls #autoplay{width:32px;height:32px}}
@media(max-width:360px){.hero-type{font-size:45px}.hero-second{font-size:47px}.amp{font-size:42px}.contact h2{font-size:31px}.section-head h2{font-size:13px}.drag-note{max-width:75px;line-height:1.5}}
@media(max-width:680px){.hero-meta{gap:12px}.availability{line-height:1.5;max-width:70%}.availability i{flex:none}.hero-bottom>p:first-child{max-width:65%}.hero-bottom>p:first-child br{display:none}}
@media(max-width:430px){.availability{max-width:100%}.hero-bottom>p:first-child{max-width:60%}}
/* The editorial timeline extends the same thin-rule rhythm as the CV. */
.journey{margin:0 var(--page);padding:73px 0 76px;border-top:1px solid var(--line);display:grid;grid-template-columns:.8fr 1.2fr;gap:10%}.journey-intro{position:relative}.journey h2{font-family:Manrope,Arial,sans-serif;font-size:40px;line-height:1.15;font-weight:500;margin:28px 0 18px}.journey h2 em{font-family:Georgia,serif;font-weight:400;color:var(--rose)}.journey-intro p{max-width:300px;font-size:13px;line-height:1.7;color:var(--muted)}.timeline-label{font-size:9px;letter-spacing:.12em;color:var(--rose);padding-bottom:15px}.timeline-label-second{padding-top:28px}.timeline-item{display:grid;grid-template-columns:110px 1fr 22px;gap:18px;border-top:1px solid var(--line);padding:20px 0 22px;align-items:start}.timeline-item time{font-size:10px;color:var(--rose);white-space:nowrap;padding-top:4px;font-weight:600}.timeline-item h3{font-size:16px;line-height:1.3;font-weight:500;margin:0 0 6px}.timeline-item p{font-size:12px;color:var(--muted);line-height:1.6;margin:0;max-width:340px}.timeline-mark{font-size:17px;color:var(--pink)}
@media(max-width:900px){.journey{grid-template-columns:1fr 1.35fr;gap:6%}.journey h2{font-size:33px}.timeline-item{grid-template-columns:88px 1fr 14px;gap:10px}.timeline-item time{font-size:9px}}
@media(max-width:680px){.journey{padding:48px 0 53px;display:block}.journey h2{font-size:35px;margin:20px 0 13px}.journey-intro p{max-width:330px;margin:0 0 33px}.timeline-item{grid-template-columns:82px 1fr;gap:10px;padding:17px 0}.timeline-item h3{font-size:14px}.timeline-item p{font-size:11px}.timeline-mark{display:none}.timeline-label-second{padding-top:22px}}
@media(max-width:360px){.timeline-item{grid-template-columns:70px 1fr;gap:8px}.timeline-item time{white-space:normal}}
.light{opacity:.57;font-size:11px;color:#b96b96;transition:none;will-change:transform;animation:star-pulse 4.8s ease-in-out infinite alternate}.light:nth-child(3n){font-size:7px;opacity:.45}.light:nth-child(5n){font-size:13px;color:#aa7c9a}@keyframes star-pulse{from{opacity:.35}to{opacity:.74}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}.light{display:none}.visual{transform:none!important}}
.contact-methods{display:flex;align-items:center;flex-wrap:wrap;gap:18px 34px}.contact-methods a{font-size:14px;border-bottom:1px solid var(--rose);padding-bottom:8px;white-space:nowrap}.contact-methods a:first-child{white-space:normal;overflow-wrap:anywhere}.contact-methods a span{margin-left:10px}.contact-methods a:hover{color:var(--rose)}@media(max-width:680px){.contact-methods{gap:12px 24px}.contact-methods a{font-size:12px}}
.wordmark{position:relative;isolation:isolate;display:inline-flex;align-items:center;justify-content:center;flex:none;width:82px;height:64px;font-size:43px;letter-spacing:-4px}.wordmark .logo-letters{position:relative;color:var(--ink);padding-right:5px}.wordmark .logo-letters span{color:var(--rose)}.logo-asterisk{position:absolute;width:82px;height:82px;inset:50% auto auto 50%;margin:-41px 0 0 -41px;color:var(--rose);opacity:.23;pointer-events:none;transform:rotate(15deg);transform-origin:center}.wordmark:hover .logo-asterisk,.wordmark:focus-visible .logo-asterisk{animation:logo-turn 1.15s cubic-bezier(.22,.65,.25,1) both}@keyframes logo-turn{from{transform:rotate(15deg)}to{transform:rotate(375deg)}}.header-name{margin-left:15px}@media(max-width:680px){.wordmark{width:64px;height:48px;font-size:36px;letter-spacing:-3px}.logo-asterisk{width:68px;height:68px;margin:-34px 0 0 -34px}.header-name{margin-left:10px}}



.wordmark .logo-asterisk{opacity:.16}

.wordmark{width:108px;height:68px}.wordmark .logo-emblem{display:block;width:108px;height:auto;transition:transform .4s ease}.wordmark:hover .logo-emblem{transform:translateY(-2px)}@media(max-width:680px){.wordmark{width:83px;height:54px}.wordmark .logo-emblem{width:83px}}

.carousel-footer{display:grid;grid-template-columns:1fr auto 1fr}.carousel-footer .controls{grid-column:2}@media(max-width:680px){.carousel-footer{display:flex;justify-content:space-between}}

.woven-title{position:relative;isolation:isolate}.woven-copy{position:relative;z-index:1}.title-ribbon{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;transform:translateY(var(--ribbon-y,0px));transition:transform .5s ease}.title-ribbon-back{z-index:0}.title-ribbon-front{z-index:2}@media(prefers-reduced-motion:reduce){.title-ribbon{transform:none}}

.hero-stage h1{z-index:auto}.hero-type>span{position:relative;z-index:1}.hero-type>.letter-over{z-index:3}.hero-name,.hero-second{position:relative;z-index:1}.woven-word{position:relative;display:inline-block;isolation:isolate}.woven-word .woven-copy{position:relative;z-index:1}.woven-word .title-ribbon{inset:-18% -5% auto;width:110%;height:135%;opacity:.88}.woven-word .title-ribbon-front{z-index:2}

.cursor-sparkles{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:1000}@media(prefers-reduced-motion:reduce),(pointer:coarse){.cursor-sparkles{display:none}}
/* Let the visible cards receive clicks through their transparent 3D track. */
.track{pointer-events:none}.project{pointer-events:auto;cursor:pointer}.carousel.dragging .project{cursor:grabbing}

/* Rose-tinted glass is reserved for controls and compact surfaces. */
:root{--glass-edge:#ffffffd9;--glass-shadow:0 9px 28px #7c4a6820,0 1px 3px #69435912}
.contact-link,.circle-arrow,.controls button,.sample,.open,.close,.contact-arrow{
  background:linear-gradient(145deg,#ffffffba,#f3e3ed85 68%,#ffffff9e);
  border:1px solid var(--glass-edge);
  box-shadow:inset 0 1px 1px #fff9,var(--glass-shadow);
  -webkit-backdrop-filter:blur(14px) saturate(1.25);
  backdrop-filter:blur(14px) saturate(1.25);
}
.contact-link:hover,.circle-arrow:hover,.controls button:hover,.project.active:hover .open,.contact-title:hover .contact-arrow{
  background:linear-gradient(145deg,#fffdfde6,#eec9dcbb);
  border-color:#e7b6cf;
}
.availability{
  padding:8px 12px;border:1px solid #ffffffc7;border-radius:30px;
  background:#ffffff91;box-shadow:inset 0 1px #fff9,0 5px 18px #b96f9910;
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
}
.sample{color:#352832;background:linear-gradient(145deg,#ffffffdc,#f8eaf2b8);border-radius:4px;box-shadow:inset 0 1px #fff9,0 5px 16px #33202a25}
.open{color:var(--ink);background:#ffffffc7}
.controls button{background:#ffffff94}
.contact-arrow{color:var(--rose);background:linear-gradient(145deg,#fff9,#edccdcaa);box-shadow:inset 0 2px 2px #fff9,0 18px 36px #b7699422}
dialog{background:#faf8f8e8;border-color:#fff;box-shadow:0 32px 100px #211e2147,inset 0 1px #fff; -webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px)}
.detail-copy{background:linear-gradient(145deg,#ffffffb0,#f8ecf29e);border-top:1px solid #fff}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .contact-link,.circle-arrow,.controls button,.sample,.open,.close,.contact-arrow,.availability{background:#f8edf3f2}
  dialog{background:var(--paper)}
}
/* A page floating above the paper, ready to be opened. */
.cv-section{margin:0 var(--page);padding:70px 0 85px;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:8%}
.cv-copy h2{font:500 clamp(38px,4vw,58px)/1.13 Manrope,sans-serif;margin:25px 0}.cv-copy h2 em{font-family:Georgia,serif;font-weight:400;color:var(--rose)}
.cv-copy>p{font-size:16px;line-height:1.7;color:var(--muted)}.cv-copy .cv-note{font-size:13px;margin-top:24px}.cv-text-open{border:0;border-bottom:1px solid var(--rose);padding:10px 0;background:transparent;font-size:16px}.cv-text-open span{margin-left:24px;color:var(--rose)}
.cv-stage{perspective:1300px;display:grid;justify-items:center;padding:28px 12px 0;min-width:0}.cv-trigger{width:min(100%,290px);background:none;border:0;padding:0;perspective:1300px;cursor:zoom-in}.cv-float{display:block;animation:cv-float 6s ease-in-out infinite;transform-style:preserve-3d}.cv-sheet{display:block;position:relative;transform:rotateX(var(--cv-x,8deg)) rotateY(var(--cv-y,-13deg)) rotateZ(-4deg);transition:transform .35s ease;box-shadow:1px 1px 0 #ddd3da,3px 3px 0 #eee5ea,16px 28px 36px -12px #6b405c33;border:1px solid #fff;border-radius:2px;overflow:hidden;background:var(--paper)}.cv-sheet img{display:block;width:100%;height:auto}.cv-glint{position:absolute;inset:0;pointer-events:none;background:linear-gradient(115deg,#fff8,transparent 40%,#fff0 65%,#fff5);opacity:.5}.cv-trigger:hover .cv-sheet{box-shadow:1px 1px 0 #ddd3da,3px 3px 0 #eee5ea,18px 32px 40px -12px #6b405c44}.cv-hint{font-size:13px;color:var(--muted);margin-top:38px}.cv-trigger[aria-busy=true]{cursor:progress}
@keyframes cv-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-13px)}}
#cv-dialog{width:min(850px,94vw);max-width:94vw;max-height:92dvh;padding:0;border:1px solid #ffffffb3;border-radius:12px;background:#f4edf2;box-shadow:0 30px 100px #211e2155;overflow:auto;color:var(--ink)}#cv-dialog::backdrop{background:#211e215c;backdrop-filter:blur(12px)}.cv-toolbar{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:20px;padding:17px 24px;background:#faf8f8ed;backdrop-filter:blur(15px);border-bottom:1px solid var(--line)}.cv-toolbar h2{font-size:17px;margin:0 0 3px}.cv-toolbar span{font-size:13px;color:var(--muted)}.cv-toolbar a{margin-left:auto;font-size:14px;border-bottom:1px solid var(--rose);padding:5px 0}.cv-close{background:transparent;border:1px solid var(--line);border-radius:50%;width:38px;height:38px;font-size:25px;flex-shrink:0}.cv-document{padding:30px;display:flex;justify-content:center}.cv-document img{display:block;max-width:100%;width:650px;height:auto;align-self:start;box-shadow:0 6px 22px #211e2119}
.hero-meta .availability{font-size:12px}.hero-meta .edition{display:block;flex-shrink:0;font-size:11px}.hero-meta{gap:16px}.hero-bottom>p:first-child{max-width:450px}.about h2 em{display:inline-block}.about-copy>p{font-size:16px}.section-head h2{line-height:1.4}
@media(max-width:680px){nav{gap:14px}.cv-section{grid-template-columns:1fr;gap:25px;padding:45px 0 55px}.cv-trigger{width:235px}.cv-copy h2{font-size:42px}.cv-stage{padding-top:15px}.cv-toolbar{padding:12px;gap:12px}.cv-toolbar a{font-size:13px}.cv-document{padding:14px}.hero-meta{align-items:flex-start}.hero-meta .availability{font-size:11px;max-width:66%}.hero-meta .edition{font-size:9px;padding-top:3px}.hero-bottom>p:first-child{max-width:65%}.about h2{font-size:clamp(34px,9vw,44px)}}
@media(prefers-reduced-motion:reduce){.cv-float{animation:none}.cv-sheet{transition:none;transform:none}}
/* Project categories and case studies */
.section-head{align-items:flex-start;gap:25px;flex-wrap:wrap}.section-label{flex:1 1 330px}.project-filters{display:flex;justify-content:flex-end;flex:1 1 640px;flex-wrap:wrap;gap:8px}.project-filters button{font-size:14px;line-height:1.3;padding:10px 15px;border-radius:40px;border:1px solid #fff;background:linear-gradient(145deg,#ffffffb8,#f1e3ec80);box-shadow:inset 0 1px 1px #fff,0 4px 15px #6b405c09;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);transition:background .2s,box-shadow .2s,color .2s}.project-filters button:hover{background:#f0dce8}.project-filters button[aria-pressed=true]{background:linear-gradient(135deg,#ebc2d6dd,#f5e4eddd);border-color:#cc88a7;color:#682c48;box-shadow:inset 0 1px 1px #fff,0 4px 16px #bc517f17}.project-status{margin:0 var(--page) 8px;font-size:13px;color:var(--muted)}.project[hidden]{display:none!important}.project-visual{background:#f1e9ee;padding:30px 16px 14px;overflow:hidden}.project-visual>img{object-fit:contain!important;object-position:center!important;border-radius:2px}.project-visual .sample{font-size:10px;top:8px;left:12px;padding:3px 7px}.project-caption p{font-size:12px}.project-caption h3{line-height:1.3}.controls button:disabled{opacity:.35;cursor:default}.project-preview{height:100%;display:flex;flex-direction:column;justify-content:center;gap:8px}.project-preview img{width:100%;min-height:0;object-fit:contain!important;object-position:center!important;flex:1;border-radius:0}
#detail .detail-image{height:auto;max-height:none;padding:50px 30px 25px;display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:center;gap:15px;background:#eee6ec}#detail .detail-image img{width:auto;max-width:100%;height:auto;max-height:470px;object-fit:contain;border-radius:3px}#detail .detail-copy{padding:30px 40px 40px}#detail-meta{font-size:13px;line-height:1.6;color:var(--rose)}#detail .detail-copy h2{font-size:clamp(24px,4vw,36px);margin-bottom:22px}#detail-description p{max-width:none;font-size:16px;line-height:1.75;margin:8px 0 0}#detail-description h3{font-size:17px;font-weight:500;margin:26px 0 0}#detail-description .project-intro{font-size:18px}.credit{font-size:12px}.hero-bottom>p:first-child{font-size:14px}
@media(min-width:1500px){.section-head{flex-wrap:nowrap}.section-label{flex-basis:35%}.project-filters{flex-basis:65%}}
@media(max-width:680px){.section-label{flex-basis:100%}.section-head{gap:16px}.project-filters{justify-content:flex-start;gap:7px}.project-filters button{padding:9px 12px;font-size:13px}.project-caption h3{font-size:16px}.project-caption p{font-size:11px}.project-visual .sample{font-size:9px}#detail .detail-image{padding:55px 14px 20px}#detail .detail-copy{padding:22px}.hero-bottom>p:first-child{font-size:12px}.project-status{font-size:12px}.credit{padding:0 10px}}

/* The full headline and its ribbon arrive together, preserving their stacking. */
@keyframes welcome-arrive{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}
/* Keep the background quiet on phones, including landscape touch screens. */
@media(max-width:680px),(hover:none) and (pointer:coarse){#lights{display:none}}
/* Weather case study: a short introduction, then curated screen groups. */
#detail.curated-case[open]{display:flex;flex-direction:column;width:min(1000px,94vw)}
#detail.curated-case .detail-copy{order:-1;padding:42px 40px 25px}
#detail.curated-case .detail-image{display:block;padding:0 40px 35px;background:var(--paper)}
.case-group{padding:28px 0;border-top:1px solid var(--line)}
.case-group h3{font-size:22px;font-weight:500;margin:0 0 10px}
.case-group>p{font-size:16px;line-height:1.65;color:var(--muted);max-width:700px;margin:0 0 24px}
.case-screens{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;align-items:start}
.case-screens.single{grid-template-columns:minmax(0,1fr)}
.case-screens figure{margin:0;min-width:0}.case-screens a{display:block;cursor:zoom-in}
#detail.curated-case .case-screens img{display:block;width:100%;height:auto;max-height:none;border:1px solid var(--line);border-radius:6px}
.case-screens figcaption{font-size:13px;color:var(--muted);line-height:1.5;margin-top:10px}
.case-links{display:flex;gap:12px;flex-wrap:wrap;margin-top:25px}
#detail .case-links a{font-size:14px;border:1px solid #dbb3c6;border-radius:30px;padding:10px 16px;background:#f5e7ef}
.curated-case details[open] .case-screens{margin-top:24px}
@media(max-width:680px){#detail.curated-case .detail-copy{padding:48px 20px 24px}#detail.curated-case .detail-image{padding:0 20px 24px}.case-screens{grid-template-columns:1fr;gap:24px}.case-group h3{font-size:20px}}
#detail.weather-case[open]{display:flex;flex-direction:column}
#detail.weather-case .detail-copy{order:-1;padding:40px 40px 25px}
#detail.weather-case .detail-image{display:block;padding:0 40px 40px;background:var(--paper)}
.weather-group{padding:28px 0;border-top:1px solid var(--line)}
.weather-group h3{font-size:21px;font-weight:500;margin:0 0 10px}
.weather-group>p{font-size:15px;line-height:1.65;color:var(--muted);max-width:590px;margin:0 0 24px}
.weather-screens{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;align-items:start}
.weather-screens figure{margin:0;min-width:0;text-align:center}
#detail.weather-case .weather-screens img{width:100%;height:auto;max-height:none;border-radius:10px;display:block}
.weather-screens figcaption{font-size:13px;color:var(--muted);margin-top:12px;line-height:1.5}
.weather-group:nth-child(n+2) .weather-screens{grid-template-columns:repeat(2,minmax(0,220px));justify-content:center;gap:30px}
.weather-variants{border-top:1px solid var(--line);padding:20px 0}
.weather-variants summary{cursor:pointer;color:var(--rose);font-size:15px;padding:8px 0}
.weather-variants[open] .weather-screens{margin-top:24px}
@media(max-width:680px){#detail.weather-case .detail-copy{padding:48px 20px 24px}#detail.weather-case .detail-image{padding:0 20px 24px}.weather-screens{gap:9px}.weather-group:nth-child(n+2) .weather-screens{gap:14px}.weather-group h3{font-size:19px}.weather-screens figcaption{font-size:12px}.weather-variants .weather-screens{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(prefers-reduced-motion:no-preference){.hero-stage{animation:welcome-arrive 1.05s cubic-bezier(.22,.61,.36,1) both}}
