:root{--navy:#101f35;--navy-deep:#0b1729;--paper:#faf9f6;--ink:#172b45;--muted:#52647b;--blue:#2b54bc;--mist:#bdcce1;--line:#d6dce2;--display:'Archivo',sans-serif;--body:'DM Sans',sans-serif;--gutter:clamp(24px,5vw,88px);color-scheme:light;--sc-canvas:#faf9f6;--sc-ink:#172b45;--sc-font-display:var(--display);--sc-font-text:var(--body)}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:96px}body{margin:0;background:var(--paper);color:var(--ink);font:17px/1.65 var(--body);-webkit-font-smoothing:antialiased}::selection{color:var(--paper);background:var(--blue)}a{color:inherit;text-decoration:none;text-underline-offset:5px}a:hover{text-decoration:underline}button{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid #7eacff;outline-offset:6px}img{display:block;max-width:100%}svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--display);font-weight:500;letter-spacing:-.035em;text-wrap:balance}h2{font-size:clamp(36px,4.8vw,70px);line-height:1.06}p{text-wrap:pretty}p+p{margin-top:20px}.section-wrap{padding-inline:var(--gutter);max-width:1600px;margin-inline:auto}.skip-link{position:fixed;top:-100px;left:24px;background:var(--paper);padding:12px;z-index:50}.skip-link:focus{top:16px}.masthead{position:absolute;top:0;inset-inline:0;height:108px;padding:0 var(--gutter);display:flex;align-items:center;gap:42px;z-index:20;color:var(--paper)}.wordmark{font:700 29px/1 var(--display);letter-spacing:-.06em;display:flex;align-items:center;gap:18px}.wordmark span{font:12px/1.3 var(--body);letter-spacing:.08em;width:40px}.masthead nav{display:flex;gap:32px;margin-left:auto;font-size:15px}.motion-toggle{color:inherit;background:transparent;border:1px solid #ffffff55;border-radius:30px;padding:9px 14px;cursor:pointer;font-size:12px;min-height:40px}.opening{height:310svh;background:var(--navy);position:relative;color:var(--paper)}.opening-stage{height:100svh;min-height:650px;position:sticky;top:0;overflow:hidden}.scene{position:absolute;inset:0;overflow:hidden;transform-origin:30% 65%;will-change:transform,clip-path}.scene-photo{width:100%;height:100%;object-fit:cover;object-position:43% 67%;transform:scale(1.02);will-change:transform}.scene-shade{position:absolute;inset:0;background:linear-gradient(180deg,#0b172980 0%,#0b172908 43%,#0b1729c9 100%),linear-gradient(90deg,#0b17297a,transparent 74%)}.opening-copy{position:absolute;top:19%;left:var(--gutter);z-index:2;will-change:transform,opacity}.identity{font-size:15px;letter-spacing:.01em;margin-bottom:24px}.opening h1{font-size:clamp(66px,7.2vw,112px);line-height:.96;letter-spacing:-.04em;font-weight:500}.opening h1 span{color:#d3e2fc}.opening-caption{margin-top:30px;font-size:16px;line-height:1.55}.scene-caption{position:absolute;bottom:34px;left:var(--gutter);right:var(--gutter);display:flex;justify-content:space-between;font-size:13px;z-index:3}.image-credit{color:#d5dfee;font-size:12px}.portrait-reveal{position:absolute;left:57%;right:9%;top:17%;bottom:13%;overflow:hidden;opacity:0;transform:translateY(50px);border-radius:3px;will-change:transform,opacity}.portrait-reveal img{height:100%;width:100%;object-fit:cover;object-position:50% 20%}.portrait-reveal:after{content:'';position:absolute;inset:55% 0 0;background:linear-gradient(transparent,#0b1729df)}.portrait-label{position:absolute;left:24px;bottom:26px;z-index:1;font-size:18px}.portrait-label span{display:block;color:var(--mist);font-size:13px}.reveal-line{position:absolute;left:var(--gutter);top:36%;width:49%;font:500 clamp(35px,4.2vw,64px)/1.09 var(--display);letter-spacing:-.035em;opacity:0;will-change:transform,opacity}.about{padding-block:120px 140px;display:grid;grid-template-columns:1fr 1fr;gap:10%}.about-heading h2{font-size:clamp(35px,4vw,60px)}.location{margin-top:28px;font-size:14px;color:var(--muted)}.about-copy{max-width:590px}.about-copy .lead{font-size:24px;line-height:1.45;color:var(--ink)}.about-copy>p{color:var(--muted)}.credentials{display:flex;flex-wrap:wrap;gap:10px 22px;padding-top:28px;margin-top:30px;border-top:1px solid var(--line);font-size:13px}.work{background:#eaf0f6}.work-heading{display:flex;justify-content:space-between;gap:40px;align-items:end;padding-block:84px 70px}.work-heading p{color:var(--muted);font-size:16px}.project{display:grid;grid-template-columns:1.18fr 1fr;max-width:1600px;margin:auto;padding:0 var(--gutter) 110px;gap:8%;align-items:center}.project-visual{position:relative;min-height:540px;overflow:hidden}.after-visual{background:#cddced;padding:58px 36px 66px;display:flex;align-items:center;justify-content:center}.after-browser{background:var(--paper);width:100%;max-width:480px;box-shadow:0 25px 50px #1b36552a;transform:rotate(-3deg);transform-origin:50% 80%;transition:transform .65s cubic-bezier(.2,.7,.1,1)}.after-visual:hover .after-browser{transform:rotate(0) translateY(-6px)}.browser-top{display:flex;align-items:center;justify-content:space-between;padding:20px 25px;border-bottom:1px solid var(--line);gap:20px}.after-mark{font:600 24px/1 var(--display);letter-spacing:-.04em}.after-mark span,.er{color:#741620}.browser-top>span:last-child{font-size:10px;max-width:110px;line-height:1.3}.after-preview-body{padding:30px}.preview-small{font-size:11px;color:var(--muted)}.after-preview-body h3{font-size:40px;line-height:1.05;margin-top:16px}.after-preview-body>p:not(.preview-small){font-size:13px;max-width:260px;margin-top:18px;line-height:1.5}.guide-example{margin-top:24px;background:#e9edf4;padding:13px 17px;display:flex;justify-content:space-between;font-size:12px}.guide-example svg{width:17px;height:17px}.preview-links{display:flex;justify-content:space-between;border-top:1px solid var(--line);margin-top:24px;padding-top:16px;font-size:10px;gap:12px}.visual-note{position:absolute;left:24px;bottom:20px;font-size:11px;letter-spacing:.02em}.project-type{font-size:13px;color:var(--muted)}.project-copy h3{font-size:clamp(36px,3.7vw,56px);margin-top:18px;line-height:1.1}.project-statement{font:500 clamp(25px,2.3vw,35px)/1.15 var(--display);letter-spacing:-.025em;margin-top:32px}.project-copy>p:not(.project-statement){font-size:17px;color:var(--muted);max-width:440px;margin-top:22px}.text-link{display:inline-flex;align-items:center;gap:20px;border-bottom:1px solid currentColor;font-size:15px;padding-block:12px;margin-top:20px}.text-link:hover{text-decoration:none;color:var(--blue)}.text-link svg{width:18px;height:18px}.project-copy small{display:block;font-size:12px;line-height:1.5;color:var(--muted);margin-top:18px}.language-project{grid-template-columns:1fr 1.18fr;gap:8%}.language-visual{background:#ebe7e0;min-height:530px}.language-visual>img{width:100%;height:530px;object-fit:cover;object-position:center}.language-title{position:absolute;top:34px;left:34px;color:#263e45;max-width:250px;padding:14px 20px;background:#faf9f6ed}.language-title>span{font:500 28px/1.2 var(--display);letter-spacing:-.025em}.language-title p{font-size:12px;margin-top:6px}.language-visual .visual-note{background:var(--paper);padding:8px 12px;color:var(--ink)}.next-project{padding-bottom:60px;display:flex;justify-content:space-between;align-items:center;gap:25px;color:var(--muted);font-size:14px}.next-project p{color:var(--ink);font-size:19px}.record{padding-block:130px;display:grid;grid-template-columns:.8fr 1.2fr;gap:10%}.record-intro{align-self:start;position:sticky;top:80px}.record-intro>p{max-width:330px;color:var(--muted);margin-top:28px}.record-intro .text-link{font-size:13px}.timeline{list-style:none;margin:0;padding:0}.timeline li{display:grid;grid-template-columns:116px 1fr;gap:30px;padding-bottom:58px;position:relative}.timeline li:before{content:'';position:absolute;left:127px;top:10px;bottom:-10px;width:1px;background:var(--line)}.timeline li:last-child:before{bottom:50px}.timeline li:after{content:'';position:absolute;left:123px;top:7px;width:9px;height:9px;background:var(--blue);border-radius:50%;box-shadow:0 0 0 6px var(--paper)}.timeline time{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums;padding-top:2px}.timeline>li>div{padding-left:13px}.timeline-type{font-size:12px;color:var(--blue)}.timeline h3{font-size:26px;line-height:1.15;margin-top:10px}.timeline p{font-size:16px;line-height:1.6;color:var(--muted);margin-top:16px}.timeline p+p{margin-top:12px}footer{background:var(--navy);color:var(--paper);padding-block:95px 32px}.footer-main{display:flex;justify-content:space-between;gap:50px;align-items:end;padding-bottom:78px}.footer-main h2{font-size:clamp(36px,4.6vw,68px)}.contact-link{display:flex;align-items:center;gap:25px;border-bottom:1px solid #9caec6;padding-bottom:12px;font-size:25px}.contact-link svg{width:30px;height:30px}.footer-bottom{display:flex;justify-content:space-between;align-items:end;gap:30px;padding-top:30px;border-top:1px solid #344258;font-size:13px}.footer-bottom span{color:var(--mist)}.footer-bottom>a{white-space:nowrap;font-size:12px}.profile-page{padding-top:135px}.profile-page .masthead{background:var(--navy)}.profile-content{max-width:1000px;padding-bottom:100px}.profile-content h1{font-size:clamp(40px,5vw,70px);line-height:1.04}.profile-content>p{margin-top:22px;max-width:650px}.profile-content h2{font-size:30px;margin-top:60px;margin-bottom:20px}.profile-content dl{display:grid;grid-template-columns:160px 1fr;gap:25px}.profile-content dt{color:var(--muted);font-size:14px}.profile-content dd{margin:0}.profile-content dd span{display:block;color:var(--muted)}.profile-content .back{display:inline-block;margin-bottom:35px;color:var(--blue)}
html[data-motion='off']{scroll-behavior:auto}html[data-motion='off'] .opening{height:100svh;min-height:680px}html[data-motion='off'] .opening-stage{position:relative}html[data-motion='off'] .portrait-reveal,html[data-motion='off'] .reveal-line{display:none}html[data-motion='off'] .scene,html[data-motion='off'] .scene-photo,html[data-motion='off'] .opening-copy{transform:none!important;clip-path:none!important;opacity:1!important}
@media(min-width:1600px){.opening-copy{top:21%}}
@media(max-width:1000px){.masthead{gap:24px}.masthead nav{gap:24px}.opening h1{font-size:clamp(65px,8.5vw,90px)}.portrait-reveal{left:56%;right:5%;top:25%;bottom:20%}.project{gap:5%}.project-visual{min-height:430px}.after-visual{padding:40px 23px 60px}.after-preview-body{padding:24px}.after-preview-body h3{font-size:34px}.language-visual>img{height:470px}.record{gap:6%}.timeline li{grid-template-columns:90px 1fr;gap:20px}.timeline li:before{left:96px}.timeline li:after{left:92px}.timeline time{font-size:12px}}
@media(max-width:700px){body{font-size:16px}.masthead{height:86px;gap:16px}.wordmark{font-size:25px;gap:10px}.wordmark span{font-size:10px;width:33px}.masthead nav{gap:18px;font-size:13px}.masthead nav a:last-child{display:none}.motion-toggle{font-size:10px;padding:6px 9px;min-height:36px}.opening{height:240svh}.opening-stage{min-height:600px}.scene-photo{object-position:29% 65%}.opening-copy{top:20%;right:24px}.identity{font-size:12px;margin-bottom:23px}.opening h1{font-size:clamp(51px,11.8vw,78px);line-height:1;letter-spacing:-.04em}.opening-caption{font-size:14px;margin-top:26px}.scene-caption{bottom:28px;font-size:11px;align-items:end;gap:20px}.image-credit{font-size:10px;max-width:55px;text-align:right}.portrait-reveal{left:26%;right:8%;top:25%;bottom:15%}.reveal-line{top:12%;font-size:30px;width:85%;z-index:4}.portrait-label{font-size:16px;left:18px;bottom:20px}.about{display:block;padding-block:68px 80px}.about-heading h2{font-size:40px}.location{margin-top:18px}.about-copy{margin-top:34px}.about-copy .lead{font-size:21px}.credentials{font-size:12px;gap:10px 18px}.work-heading{display:block;padding-block:60px 40px}.work-heading h2{font-size:42px}.work-heading p{margin-top:22px}.project,.language-project{grid-template-columns:1fr;gap:32px;padding-bottom:66px}.project-visual{min-height:435px}.after-visual{padding:34px 28px 60px}.project-copy h3{font-size:42px}.project-statement{font-size:28px;margin-top:20px}.project-copy>p:not(.project-statement){font-size:16px}.language-project .project-copy{order:2}.language-project .project-visual{order:1}.language-visual>img{height:450px}.language-title{left:20px;top:20px}.next-project{display:block;padding-bottom:50px}.next-project span{display:block;margin-top:8px;font-size:13px}.record{display:block;padding-block:72px 40px}.record-intro{position:static}.record-intro h2{font-size:45px}.record-intro>p{max-width:400px}.timeline{margin-top:50px}.timeline li{grid-template-columns:83px 1fr;gap:19px;padding-bottom:46px}.timeline li:before{left:86px}.timeline li:after{left:82px}.timeline h3{font-size:23px}.timeline>li>div{padding-left:7px}.timeline time{font-size:11px}.timeline-type{font-size:11px}.timeline p{font-size:15px}footer{padding-top:65px}.footer-main{display:block;padding-bottom:55px}.footer-main h2{font-size:40px}.contact-link{width:max-content;margin-top:36px;font-size:23px}.footer-bottom{display:block;font-size:12px}.footer-bottom p+p{margin-top:22px}.footer-bottom>a{display:inline-block;margin-top:25px}.profile-content dl{grid-template-columns:1fr;gap:12px}.profile-content dd{margin-bottom:22px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.opening{height:100svh;min-height:680px}.opening-stage{position:relative}.portrait-reveal,.reveal-line{display:none}.after-browser{transition:none}.scene,.scene-photo,.opening-copy{transform:none!important;clip-path:none!important;opacity:1!important}.record-intro{position:static}}
.opening{height:100svh;min-height:680px}.opening-stage{position:relative}html[data-motion='on'] .opening{height:310svh}html[data-motion='on'] .opening-stage{position:sticky}.about-portrait{width:280px;height:340px;object-fit:cover;object-position:50% 20%;margin-bottom:32px}html[data-motion='on'] .about-portrait{display:none}.project-type,.timeline-type{display:block;margin-top:12px}.project-copy h3,.timeline h3{margin-top:0}.opening-copy{left:52%;right:var(--gutter);top:24%}.opening h1{font-size:clamp(60px,6.6vw,102px)}.scene-shade{background:linear-gradient(180deg,#0b172960 0%,#0b172908 43%,#0b1729c9 100%),linear-gradient(90deg,transparent 30%,#0b172977 80%)}
@media(max-width:1000px) and (min-width:701px){.opening-copy{left:47%;top:25%}.opening h1{font-size:clamp(45px,6.6vw,67px)}.opening-caption{font-size:14px}}
@media(max-width:700px){.opening-copy{left:24px;right:24px;top:19%}.opening h1{font-size:clamp(49px,11.8vw,74px)}.scene{background:var(--navy)}.scene-photo{position:absolute;bottom:0;height:65%;object-position:25% 70%}.scene-shade{background:linear-gradient(180deg,var(--navy) 0%,var(--navy) 25%,#101f35df 38%,#101f3500 64%,#101f35c9 100%)}.scene-caption{bottom:22px}.opening-caption{max-width:245px}.masthead{padding-inline:20px;gap:12px}.masthead nav{gap:15px}.wordmark span{display:none}}
@media(max-width:700px){html[data-motion='on'] .opening{height:240svh}.masthead nav a:last-child{display:block}.masthead{gap:12px}.masthead nav{gap:12px;font-size:12px}.motion-toggle{padding:5px 8px;font-size:10px}.about-portrait{width:220px;height:280px}}
@media(prefers-reduced-motion:reduce){html[data-motion='on'] .opening{height:100svh}html[data-motion='on'] .about-portrait{display:block}}
@media print{.masthead,.opening,.project-visual,.motion-toggle,.contact-link{display:none}body{font-size:11pt}.about,.record,.project{display:block;padding:25px}.record-intro{position:static}.work,footer{background:white;color:#172b45}.timeline li{break-inside:avoid}a[href]:after{content:' (' attr(href) ')';font-size:9pt}.footer-bottom{display:block}}

.scene-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:43% 67%;opacity:0;transition:opacity .4s;will-change:transform;pointer-events:none}.scene-video.is-ready{opacity:1}html[data-motion='off'] .scene-video,html:not([data-motion]) .scene-video{display:none}@media(prefers-reduced-motion:reduce){.scene-video{display:none}}@media(max-width:700px){.scene-video{object-position:29% 65%}}

/* Current AFTER: a capture of the real application, preserving its own typography. */
.after-project .after-visual{background:#dbe3ec}
.after-project .after-browser{max-width:340px;transform:rotate(-2deg);overflow:hidden}
.after-project .after-visual:hover .after-browser{transform:rotate(0) translateY(-6px)}
.after-capture{width:103%;max-width:none;height:auto}

/* Portrait framing: crop in the browser without changing the source asset. */
.about-portrait{overflow:hidden}
.portrait-reveal img,.about-portrait img{width:100%;height:100%;object-fit:cover;object-position:50% 22%}
