@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap');
:root{--paper:#f6f4ef;--ink:#20201e;--muted:#62615b;--red:#b52c24;--line:#26251d28;--gutter:4vw}*{box-sizing:border-box}html{scroll-behavior:auto}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',Arial,sans-serif}a{color:inherit;text-decoration:none}button,summary,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible,summary:focus-visible,.carousel:focus-visible{outline:2px solid var(--red);outline-offset:7px}button{border:0;background:none}.skip{position:fixed;top:-70px;left:20px;z-index:100;background:var(--paper);padding:15px}.skip:focus{top:15px}header{position:fixed;z-index:20;top:0;left:0;right:0;height:100px;padding:25px var(--gutter);display:flex;align-items:center;justify-content:space-between;background:linear-gradient(var(--paper),#f6f4ef00)}.identity{display:flex;gap:14px;align-items:center;font-size:14px;font-weight:700;letter-spacing:.1em}.identity svg{width:30px;height:37px}.identity small{font-size:8px;display:block;letter-spacing:.14em;margin-top:5px;font-weight:500}nav{display:flex;align-items:center;gap:34px;font-size:13px}nav sup{font-size:9px;color:var(--red)}.contact-link{border-bottom:1px solid;padding:10px 0}.contact-link span{margin-left:28px}.journey{height:1400svh}.stage{position:sticky;top:0;height:100svh;min-height:600px;overflow:clip}.visuals,.visuals img,.scene-video,.readability{position:absolute;inset:0;width:100%;height:100%}.visuals img,.scene-video{object-fit:cover;object-position:center}.scene-video{opacity:0}.scene-video.show{opacity:1}.readability{background:linear-gradient(90deg,#f6f4ef08 32%,#f6f4ef00 46%,#f6f4efdb 65%,#f6f4eff0 100%);opacity:0;transition:opacity .25s}.stage.info-mode .readability{opacity:1}.chapter{position:absolute;z-index:2;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .25s,transform .4s;transform:translateY(14px)}.chapter.active{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0)}.hero{left:var(--gutter);top:21%;width:49%;height:73%}.eyebrow{font-size:10px;font-weight:600;letter-spacing:.15em;line-height:1.5;display:flex;gap:8px;align-items:center}.red-dot{width:6px;height:6px;background:var(--red);border-radius:50%}h1,h2,h3,p{margin:0}h1{font-family:Manrope,Arial,sans-serif;font-size:clamp(52px,5.7vw,98px);line-height:1.025;letter-spacing:-.064em;font-weight:500;margin:24px 0}em{font-family:Georgia,serif;font-weight:400}h1 em{font-size:.93em;letter-spacing:-.067em}.intro{font-size:clamp(13px,1.05vw,17px);line-height:1.6;max-width:325px;margin:20px 0 22px}.text-link{display:inline-flex;gap:30px;border-bottom:1px solid var(--ink);padding-bottom:8px;font-size:12px}.text-link span{color:var(--red)}.hero-foot{position:absolute;bottom:0;left:0;width:84%;display:flex;justify-content:space-between;font-size:8px;letter-spacing:.12em}.hero-foot a span{margin-left:10px;color:var(--red)}.info{left:56%;right:8%;top:50%;transform:translateY(calc(-50% + 14px));max-height:calc(100svh - 170px)}.info.active{transform:translateY(-50%)}h2{font-family:Manrope,Arial,sans-serif;font-size:clamp(30px,3.15vw,58px);line-height:1.13;letter-spacing:-.055em;font-weight:500;margin:18px 0 23px}.info p{font-size:clamp(12px,.98vw,15px);line-height:1.65;color:#57554f}.info .lead{color:var(--ink);font-size:clamp(14px,1.17vw,18px);line-height:1.55;margin-bottom:15px}.timeline{margin-top:25px}.timeline>div{display:grid;grid-template-columns:64px 1fr;gap:13px;border-top:1px solid var(--line);padding:12px 0}.timeline>div>span{color:var(--red);font-size:10px;letter-spacing:.05em;padding-top:3px}.timeline p{font-size:11px;line-height:1.5}.timeline strong{display:block;font-weight:500;color:var(--ink)}.note{font-size:8px;letter-spacing:.1em;margin-top:15px;display:flex;gap:15px}.note span{letter-spacing:0;font-size:11px;color:var(--muted)}.expertise-intro{max-width:350px;margin-bottom:23px!important}.expertise-list details{border-top:1px solid var(--line)}.expertise-list details:last-child{border-bottom:1px solid var(--line)}summary{list-style:none;display:flex;align-items:center;padding:17px 0;font-size:clamp(15px,1.45vw,22px);letter-spacing:-.025em;cursor:pointer}summary::-webkit-details-marker{display:none}summary>span{font-size:9px;letter-spacing:.05em;color:var(--red);width:32px}summary b{font-weight:400;margin-left:auto;font-size:21px}details[open] summary b{transform:rotate(45deg)}.expertise-list p{padding:0 10px 20px 32px;font-size:12px}.tools{font-size:8px;letter-spacing:.1em;margin-top:25px;color:var(--muted)}.work{left:45%;right:8%}.work-heading{display:flex;justify-content:space-between;align-items:center}.work h2{font-size:clamp(32px,3vw,48px)}.edition{font-size:8px;letter-spacing:.09em;line-height:1.6}.carousel{overflow:hidden;touch-action:pan-y}.carousel-track{display:flex;transition:transform .55s cubic-bezier(.2,.8,.2,1)}.project{flex:0 0 100%;min-width:0}.project-art{height:clamp(200px,33vh,380px);padding:24px;position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between}.project-art>span,.project-art>small{font-size:8px;letter-spacing:.13em;z-index:2}.art-one{background:#ba3225;color:#f5e5cb}.art-symbol{font-family:Georgia,serif;font-size:clamp(150px,21vh,220px);line-height:.6;letter-spacing:-.13em;position:absolute;top:30%;left:24%;transform:rotate(-8deg)}.art-symbol span{font-family:Arial;font-size:.7em;position:relative;top:-15px}.art-two{background:#bcc6b1;color:#183b2f}.orbit-art{position:absolute;inset:0;display:grid;place-items:center}.orbit-art i{position:absolute;width:62%;height:80%;border:1px solid #183b2f80;border-radius:50%;transform:rotate(25deg)}.orbit-art i:nth-child(2){transform:rotate(-25deg)}.orbit-art i:nth-child(3){width:35%;transform:rotate(70deg)}.orbit-art b{font-family:Manrope;font-size:58px;letter-spacing:-.06em;line-height:.9;font-weight:500}.art-three{background:#272621;color:#ebe4d7}.story-art{position:absolute;left:26%;top:13%;font-size:clamp(44px,7vh,76px);line-height:.85;letter-spacing:-.06em}.story-art em{color:#d67c53}.project-caption{display:flex;justify-content:space-between;padding:18px 0 14px;align-items:center}.project-caption span{font-size:8px;letter-spacing:.13em;color:var(--red)}h3{font-size:22px;font-weight:500;letter-spacing:-.045em;margin-top:7px}.project-caption p{font-size:11px;margin-top:4px}.project-open{width:45px;height:45px;border:1px solid var(--line);border-radius:50%;font-size:24px}.project-open:hover{background:var(--ink);color:var(--paper)}.carousel-controls{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding-top:12px}.project-dots{display:flex;gap:4px}.project-dots button{width:28px;height:25px;padding:10px 0}.project-dots button:after{content:'';display:block;background:#aaa;height:2px}.project-dots .selected:after{background:var(--red)}#project-count{font-size:9px;letter-spacing:.1em}.carousel-controls>div:last-child{display:flex;gap:15px}.carousel-controls>div:last-child button{width:30px;height:30px;font-size:20px}.work-note{font-size:10px!important;margin-top:8px!important}.contact h2{font-size:clamp(38px,3.7vw,64px)}.contact .lead{max-width:420px}.email-link{font-size:clamp(17px,1.6vw,25px);letter-spacing:-.04em;display:flex;justify-content:space-between;border-bottom:1px solid;padding:24px 0 15px}.email-link span{color:var(--red)}.contact-details{display:flex;justify-content:space-between;font-size:8px;letter-spacing:.08em;margin:18px 0 55px}.chapter-nav{position:absolute;z-index:4;right:2.1vw;top:43%;display:flex;flex-direction:column;gap:10px}.chapter-nav a{height:19px;display:flex;align-items:center;justify-content:flex-end;gap:12px}.chapter-nav span{opacity:0;font-size:8px;text-transform:uppercase;letter-spacing:.1em}.chapter-nav a:hover span{opacity:1}.chapter-nav i{width:4px;height:4px;background:#87837b;border-radius:50%;display:block}.chapter-nav .current i{width:7px;height:7px;background:var(--red)}.stage-footer{position:absolute;bottom:27px;left:var(--gutter);right:var(--gutter);display:flex;justify-content:space-between;font-size:8px;letter-spacing:.13em;z-index:3}.stage-footer b{color:var(--red);margin-left:10px;font-size:14px;font-weight:400}.hero.active~.stage-footer{display:none}.progress-line{position:absolute;bottom:0;left:0;right:0;height:2px;background:#8882}.progress-line i{display:block;transform-origin:left;background:var(--red);height:100%;transform:scaleX(0)}.end-note{position:relative;background:#171815;color:#f1eee5;padding-top:75px}.end-heading{padding:0 var(--gutter) 42px}.end-heading .eyebrow{color:#c3bcb0;font-size:9px}.end-heading h2{margin-bottom:10px;font-size:clamp(36px,4.5vw,70px)}.end-heading p{font-size:13px;color:#b8b5ac}.meme-wrap{position:relative;width:100%;aspect-ratio:3/1}.meme-wrap video{display:block;width:100%;height:100%;object-fit:cover}.meme-wrap button{position:absolute;right:3vw;bottom:20px;background:#171815d9;color:white;border:1px solid #fff8;border-radius:30px;padding:9px 18px;font-size:11px}footer{padding:35px var(--gutter);display:flex;justify-content:space-between;align-items:center;gap:30px;font-size:8px;letter-spacing:.12em}footer>a{font-size:13px}footer a span{display:block;font-size:8px;margin-top:8px;color:#b8b5ac}dialog{border:0;padding:60px;max-width:520px;background:var(--paper);color:var(--ink)}dialog::backdrop{background:#18181499;backdrop-filter:blur(6px)}dialog h2{font-size:42px}dialog p{font-size:15px;line-height:1.65;margin-bottom:30px}.dialog-close{position:absolute;top:12px;right:15px;font-size:30px}
@media(min-width:1700px){.info{right:10%;left:58%}.work{left:46%;right:10%}}@media(max-height:760px) and (min-width:761px){header{height:80px}.hero{top:18%}h1{font-size:5.2vw;margin:18px 0}.intro{font-size:13px;max-width:300px;margin:15px 0}.info h2{margin:12px 0 16px}.timeline{margin-top:15px}.timeline>div{padding:8px 0}.note{margin-top:8px}.expertise-list summary{padding:12px 0}.tools{margin-top:15px}.work .project-art{height:30vh}}
@media(max-width:760px){:root{--gutter:6vw}header{height:82px;padding-top:20px}.identity{font-size:11px;gap:8px}.identity small{font-size:6px}.identity svg{width:23px}nav{gap:18px;font-size:11px}nav>a:first-child{display:none}.contact-link span{margin-left:9px}.stage{min-height:620px}.hero{top:20%;width:88%;height:72%}h1{font-size:clamp(47px,12vw,76px);max-width:330px}.hero .intro{max-width:245px;font-size:12px}.hero .eyebrow{font-size:8px}.hero-foot{width:100%;bottom:20px;font-size:7px}.visuals img,.scene-video{object-position:65% center}.stage:not(.info-mode) .readability{opacity:1;background:linear-gradient(90deg,#f6f4efed,#f6f4efac 45%,#f6f4ef00 80%)}.stage.info-mode .readability{background:linear-gradient(0deg,#f6f4effa 5%,#f6f4eff0 65%,#f6f4ef50 100%)}.info{left:6vw;right:9vw;top:auto;bottom:80px;max-height:calc(100svh - 155px);transform:translateY(15px)}.info.active{transform:translateY(0)}h2{font-size:34px;margin:14px 0 18px}.info .eyebrow{font-size:8px}.info .lead{font-size:14px}.info p{font-size:12px}.timeline{margin-top:18px}.timeline>div{padding:10px 0}.timeline p{font-size:10px}.note{font-size:7px}.note span{font-size:10px}.chapter-nav{right:3vw}.chapter-nav span{display:none}.stage-footer{font-size:7px;bottom:28px}.stage-footer>span:nth-child(2){display:none}.work-heading{display:block}.edition{display:none}.work h2{font-size:34px}.project-art{height:30svh;min-height:180px;max-height:300px}.project-caption{padding:12px 0}h3{font-size:21px}.work-note{font-size:9px!important}.expertise-list summary{font-size:18px;padding:15px 0}.expertise-list p{font-size:12px}.tools{font-size:7px}.contact h2{font-size:40px}.email-link{font-size:22px}.contact-details{font-size:7px;margin-bottom:35px}.end-note{padding-top:50px}.end-heading{padding-bottom:30px}.end-heading h2{font-size:34px}.meme-wrap{aspect-ratio:3/1}.meme-wrap button{bottom:8px;right:10px;padding:5px 10px;font-size:9px}footer{flex-wrap:wrap;padding-top:25px}footer>span:nth-child(2){display:none}dialog{width:90%;padding:45px 28px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}.journey{height:auto}.stage{height:auto;position:relative;min-height:0;overflow:visible}.visuals{display:none}.chapter,.chapter.active,.info,.info.active{position:relative;left:auto;right:auto;top:auto;bottom:auto;opacity:1;visibility:visible;pointer-events:auto;transform:none;max-height:none;width:auto;min-height:100svh;margin:0;padding:130px 8vw 70px;background:linear-gradient(#f6f4efdd,#f6f4eff0),var(--scene) center/cover}.hero{--scene:url('assets/hero.webp')}.info[data-section="about"]{--scene:url('assets/about-me.webp')}.info[data-section="expertise"]{--scene:url('assets/expertise.webp')}.info[data-section="work"]{--scene:url('assets/work.webp')}.info[data-section="contact"]{--scene:url('assets/contact.webp')}.hero-foot,.chapter-nav,.stage-footer,.progress-line{display:none}.project-art{max-width:900px}}
/* Keep small navigation cues readable across moving imagery. */
header nav{background:#f6f4efd9;backdrop-filter:blur(12px);padding:0 18px;border-radius:3px}.hero-foot{max-width:315px}.stage-footer>span{background:#f6f4efc9;padding:4px 7px}.stage-footer{align-items:center}
@media(min-width:761px){.stage[data-chapter="work"] .readability{background:linear-gradient(90deg,#f6f4ef00 31%,#f6f4ef10 38%,#f6f4eff5 46%,#f6f4eff5 100%)}}
header{transition:transform .3s}header.on-end{transform:translateY(-110%)}
html,body,.journey,.stage{overflow-anchor:none}

/* Unobstructed artwork: readability treatment intentionally deferred. */
.readability{display:none!important}
header,header nav,.stage-footer>span{background:transparent;backdrop-filter:none}
@media(prefers-reduced-motion:reduce){.chapter,.chapter.active,.info,.info.active{background:var(--scene) center/cover}}

/* Editorial grotesk typography and smoked-glass content panels. */
body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}
h1,h2,h3,.orbit-art b{font-family:Archivo,"Helvetica Neue",Arial,sans-serif;font-weight:400;font-style:normal;letter-spacing:-.045em}
h1,h2{text-transform:uppercase}h1{font-size:clamp(42px,4.8vw,82px);line-height:1.06}h1 em,h2 em{font:inherit;letter-spacing:inherit}
.eyebrow,.tools,.edition,.note,.timeline>div>span,.project-caption>div>span,.stage-footer,.hero-foot,.contact-details{font-family:"IBM Plex Mono",monospace;font-weight:400;letter-spacing:.06em}
.info{left:52%;right:6%;padding:30px 32px;border:1px solid #ffffff30;border-radius:22px;color:#fff;background:linear-gradient(135deg,#282a2bea,#101214eb);backdrop-filter:blur(24px) saturate(115%);-webkit-backdrop-filter:blur(24px) saturate(115%);box-shadow:inset 0 1px 0 #ffffff26,inset 0 -1px 0 #ffffff08,0 24px 65px #0003;max-height:calc(100svh - 155px);overflow-y:auto;scrollbar-width:thin;scrollbar-color:#ffffff50 transparent;--line:#ffffff29;--ink:#fff;--muted:#d5d7d9;--red:#ff9b8e}
.info h2{font-size:clamp(25px,2.25vw,39px);line-height:1.14;margin:15px 0 20px}.info p,.info .note span{color:#d8dadc}.info .lead,.info .timeline strong{color:#fff}.info .eyebrow{color:#d8dadc;font-size:9px}.info summary{font-family:"Helvetica Neue",Arial,sans-serif;font-size:19px}.info .text-link{border-color:#ffffff90}.info .project-open{border-color:#ffffff60}.info .project-open:hover{background:#fff;color:#121415}.info .project-art{border-radius:10px}.info .project-caption p{color:#d8dadc}.info .project-caption h3{font-size:22px}.info .project-art{color:inherit}.info .art-one{color:#f5e5cb}.info .art-two{color:#183b2f}.info .art-three{color:#ebe4d7}
.work{left:44%;right:6%;padding:27px 30px}.work .project-art{height:27vh;min-height:170px}.work .edition{font-size:7px}.work .work-heading h2{font-size:clamp(24px,2.1vw,36px)}.carousel-track{transition:none}.contact h2{font-size:clamp(29px,2.65vw,46px)}.contact .contact-details{margin-bottom:30px}.info .tools{color:#d0d2d4}.end-heading h2{font-size:clamp(28px,3.7vw,64px)}
@media(max-width:760px){h1{font-size:clamp(34px,9.5vw,62px);max-width:100%}.hero{width:89%}.info,.work{left:4vw;right:7vw;bottom:72px;top:auto;padding:23px 21px;border-radius:19px;max-height:calc(100svh - 170px)}.info h2,.work .work-heading h2{font-size:25px}.info .lead{font-size:13px}.info p{font-size:12px}.info .timeline p{font-size:10px}.info .eyebrow{font-size:7px}.info summary{font-size:16px}.info .project-art{height:25svh;min-height:150px}.info .note{display:block}.info .note span{display:block;margin-top:6px}.info .contact-details{font-size:6px}.contact .email-link{font-size:19px}.info .tools{font-size:7px}.work .project-caption h3{font-size:19px}}
@media(prefers-reduced-motion:reduce){.info,.info.active{left:auto;right:auto;bottom:auto;top:auto;margin:24px 5vw;padding:38px 28px;min-height:0;max-height:none;overflow:visible;background:#17191bf0}.hero{background:var(--scene) center/cover}.carousel-track{transition:none}}

/* A24 film-title reference: mixed case, medium weight, -4% tracking. */
body{font-family:Inter,"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400}
h1,h2,h3,.orbit-art b{font-family:Inter,"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;letter-spacing:-.04em;text-transform:none;font-style:normal}
h1{line-height:.96;font-size:clamp(50px,5.2vw,88px)}
h1 em,h2 em{font:inherit;letter-spacing:inherit}.info h2{line-height:1.03;font-size:clamp(29px,2.6vw,44px)}.work .work-heading h2{font-size:clamp(27px,2.5vw,42px)}.contact h2{font-size:clamp(34px,3vw,49px)}
.info summary{font-family:Inter,"Helvetica Neue",Arial,sans-serif}.eyebrow{letter-spacing:.025em}.hero .intro{font-size:14px;line-height:1.5}
@media(max-width:760px){h1{font-size:clamp(45px,11.5vw,68px)}.info h2,.work .work-heading h2{font-size:28px}.contact h2{font-size:33px}.hero .intro{font-size:13px}}
/* More transparent smoked glass, with a fine reflective rim. */
.info{background:linear-gradient(135deg,rgba(24,29,34,.672),rgba(12,17,22,.693));backdrop-filter:blur(15px) saturate(145%);-webkit-backdrop-filter:blur(15px) saturate(145%);border:1px solid rgba(255,255,255,.38);border-top-color:rgba(255,255,255,.66);border-left-color:rgba(255,255,255,.48);box-shadow:inset 0 1px 0 rgba(255,255,255,.22),inset 0 -1px 0 rgba(255,255,255,.12),0 18px 50px rgba(0,0,0,.15);text-shadow:0 1px 3px rgba(0,0,0,.45)}
.info p,.info .note span,.info .tools{color:#f0f1f2}.info .project-art{text-shadow:none}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.info{background:rgba(22,26,30,.78)}}
@media(prefers-reduced-motion:reduce){.info,.info.active{background:rgba(22,26,30,.8)}}

/* Live case-study previews */
.project-media{position:relative;height:27vh;min-height:170px;background:#101419;overflow:hidden;border-radius:8px}
.project-media>a{display:block;width:100%;height:100%}
.project-preview{display:block;width:100%;height:100%;object-fit:cover;object-position:center}
.preview-toggle{position:absolute;right:10px;bottom:10px;background:rgba(15,19,23,.8);color:#fff;border:1px solid #ffffff66;border-radius:24px;padding:8px 12px;font:11px "IBM Plex Mono",monospace;cursor:pointer;backdrop-filter:blur(12px)}
.project-caption h3 a{color:inherit;text-decoration:none}.project-caption h3 a:hover{text-decoration:underline;text-underline-offset:4px}
a.project-open{display:flex;align-items:center;justify-content:center;text-decoration:none;flex-shrink:0}
.project-media a:focus-visible{outline:3px solid white;outline-offset:-4px}
@media(max-width:700px){.project-media{height:24vh;min-height:140px}.project-caption h3{font-size:21px}}
