:root{--accent:#ff6245}
header,.case-page header{position:fixed;inset:0 0 auto;height:48px;min-height:48px;padding:0 20px;width:100%;max-width:none;margin:0;font-size:11px;mix-blend-mode:normal;background:linear-gradient(#10101066,transparent);backdrop-filter:none;border:0}
header.is-scrolled,.case-page header.is-scrolled{height:44px;min-height:44px;padding:0 20px;background:#10101070;backdrop-filter:blur(16px)}
.wordmark{font-size:11px;letter-spacing:.08em;min-width:0;min-height:32px}.wordmark:before{content:'';display:inline-block;width:5px;height:5px;background:var(--accent);margin-right:9px;vertical-align:middle}nav,.case-nav{font-size:11px;gap:20px}.case-nav>div{gap:12px}.case-nav button{font-size:11px;padding:6px 0;min-height:32px}nav a{min-height:32px}
.portfolio-home .hero{height:100svh;min-height:660px;margin:0;padding:0;display:block;overflow:hidden;isolation:isolate}
.portfolio-home .stage-media{position:absolute;inset:0;margin:0;padding:0;display:block;min-height:0;z-index:-2;background:#171717}
.portfolio-home .stage-media img{position:absolute;inset:0;width:100%;height:100%;min-height:0;max-height:none;aspect-ratio:auto;object-fit:cover;opacity:0;transition:opacity 1.1s ease,transform 7s linear;transform:scale(1.035)}
.portfolio-home .stage-media img.is-active{opacity:1;transform:scale(1)}
.portfolio-home .hero:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,#0002,transparent 35%,#0008);z-index:-1;pointer-events:none}
.stage-panel{position:absolute;left:20px;top:85px;width:278px;padding:16px 17px 12px;border:1px solid #ffffff38;background:#12121238;backdrop-filter:blur(22px) saturate(.8);-webkit-backdrop-filter:blur(22px) saturate(.8);box-shadow:0 12px 50px #0001}
.stage-panel-heading{display:flex;justify-content:space-between;font-size:10px;letter-spacing:.03em;padding-bottom:12px;border-bottom:1px solid #ffffff30;margin-bottom:8px;color:#ddd}
.stage-panel .stage-list{gap:0;width:100%}.stage-panel .stage-list button{display:flex;gap:12px;align-items:center;min-height:27px;padding:3px 0;font-size:11px;line-height:1.4;color:#d0d0d0;transition:color .2s,transform .25s;font-weight:400;text-decoration:none;width:100%}
.stage-num{font-size:9px;color:#bbb;min-width:15px;font-variant-numeric:tabular-nums}
.stage-panel .stage-list button.selected{color:#fff;font-weight:400}.stage-panel .stage-list button.selected .stage-num{color:var(--accent)}.stage-panel .stage-list button.selected span:last-child{text-decoration:underline;text-underline-offset:4px}
.stage-panel #stage-open{display:flex;align-items:center;justify-content:space-between;margin-top:12px;border:0;border-top:1px solid #ffffff30;padding:14px 0 8px;background:none;color:#fff;font-size:11px;min-height:40px;width:100%;text-align:left}
.stage-panel .stage-controls{display:flex;justify-content:space-between;gap:10px;font-size:10px;padding-top:2px;color:#ccc}.stage-panel .stage-controls button{font-size:11px;min-height:32px;background:none;padding:4px 0;border:0;color:#fff}.stage-controls #stage-pause{margin-left:auto;font-size:10px;min-width:42px;text-align:right}
.stage-title{position:absolute;right:25px;bottom:82px;left:330px;text-align:right;pointer-events:none}.stage-title h1{font-size:clamp(45px,8.5vw,150px);font-weight:400;line-height:.95;letter-spacing:-.065em;margin:0;overflow-wrap:anywhere;text-wrap:balance}.stage-title p{font-size:11px;margin:16px 0 0;letter-spacing:.01em}
.stage-home-footer{position:absolute;bottom:0;left:0;width:100%;display:flex;justify-content:space-between;align-items:center;padding:15px 20px;border-top:1px solid #ffffff30;font-size:10px;gap:16px}.stage-home-footer a{min-height:30px;align-content:center}
footer,.case-page footer{padding:18px 20px;font-size:11px}.footer-kicker{font-size:10px}.email{font-size:15px;letter-spacing:0;margin:8px 0 16px}.footer-bottom,.case-page .footer-bottom{font-size:10px;padding-top:12px;gap:12px}.footer-bottom a{font-size:11px;min-height:30px}.footer-bottom span{display:inline}
.work>.section-top h2,.about>.section-top h2,.playground>.section-top h2{font-size:12px;letter-spacing:.03em}.work .small{font-size:10px}.filters button,.view-switch button{font-size:11px}.project-title{font-size:22px;letter-spacing:-.04em}.project-meta{font-size:10px}.project-summary{font-size:12px}.project-card .project-image{aspect-ratio:4/3;height:auto;max-height:none}.project-grid{gap:38px 18px}.index .project-title{font-size:18px}.index .project-image{height:55px;aspect-ratio:auto}.project-card:hover .project-title{color:var(--accent)}
.about-statement{font-size:clamp(45px,7vw,110px);letter-spacing:-.055em}.about-statement span{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:10px}.about-copy p{font-size:16px}.case-page .case-intro{padding-top:90px}.case-intro h1{letter-spacing:-.08em}.case-jump a:before{content:'↗';color:var(--accent);margin-right:7px}.case-page .room-tabs button[aria-selected=true]{background:transparent;border-bottom:2px solid var(--accent)}.case-end>a{font-size:clamp(26px,4vw,65px);letter-spacing:-.04em}.reading-progress{background:var(--accent);mix-blend-mode:normal;height:1px}html{scroll-padding-top:70px}
@media(hover:hover) and (pointer:fine){.stage-panel .stage-list button:hover{font-size:11px;transform:translateX(4px);color:#fff}.stage-panel #stage-open:hover{text-decoration:underline;text-underline-offset:4px}.stage-controls button:hover,.stage-home-footer a:hover{color:var(--accent)}}
@media(max-width:760px){
 header,.case-page header{height:64px;min-height:64px;padding:6px 16px;align-content:center;gap:0;flex-wrap:wrap}header.is-scrolled,.case-page header.is-scrolled{height:60px;min-height:60px;padding:4px 16px}.wordmark{font-size:10px;min-height:22px}.portfolio-home nav{gap:0 16px;width:100%;font-size:10px}.portfolio-home nav a{min-height:28px}.case-nav{width:auto;margin-left:auto;gap:18px;font-size:10px}.case-nav>a,.case-nav button{min-height:32px}.case-page header .wordmark{margin-right:15px}.case-nav button{font-size:10px}
 .portfolio-home .hero{height:100svh;min-height:720px}.stage-panel{left:16px;top:83px;width:240px;padding:13px 15px 10px}.stage-panel-heading{font-size:9px;padding-bottom:9px}.stage-panel .stage-list button{font-size:11px;min-height:29px;padding:4px 0}.stage-panel #stage-open{margin-top:7px;padding-top:10px}.stage-panel .stage-controls button{min-height:34px}.stage-title{left:16px;right:16px;bottom:89px;text-align:right}.stage-title h1{font-size:clamp(39px,12vw,78px);max-width:100%;line-height:1}.stage-title p{font-size:10px;margin-top:10px}.stage-home-footer{padding:9px 16px;font-size:9px;gap:8px;flex-wrap:wrap}.stage-home-footer>span{width:100%;font-size:9px;color:#ddd}.stage-home-footer a{min-height:26px}.stage-home-footer a:last-child{margin-left:auto}
 footer,.case-page footer{padding:16px}.footer-bottom a{font-size:10px;min-height:32px}.footer-bottom span{font-size:9px}.email{font-size:15px;margin:8px 0 14px}.work,.about,.playground{padding-top:28px}.filters button,.view-switch button{font-size:11px;min-height:36px}.case-page .case-intro{padding-top:90px}.case-page .case-intro h1{font-size:105px}.project-title{font-size:22px}.index .project-title{font-size:16px}.index .project-meta{font-size:10px}.about-copy p{font-size:16px}.case-jump{font-size:11px}.case-section{scroll-margin-top:75px}
}
@media(prefers-reduced-motion:reduce){.portfolio-home .stage-media img{transition:none;transform:none}.stage-panel .stage-list button:hover{transform:none}}
@media(max-width:760px){.stage-panel .stage-list button{min-height:25px;padding:3px 0}.stage-panel .stage-list button:hover{font-size:11px}.stage-title h1.long-title{font-size:32px}}
/* Diffuse contrast, without a rectangular edge. */
:root{--accent:#c9efac}
header,.case-page header,header.is-scrolled,.case-page header.is-scrolled{background:none;backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:none;isolation:isolate;border:0}
header:after{content:'';position:absolute;inset:-12px -24px -60px;z-index:-1;pointer-events:none;background:linear-gradient(#10101085,#10101038 55%,transparent);backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px);mask-image:linear-gradient(#000 25%,transparent 100%);-webkit-mask-image:linear-gradient(#000 25%,transparent 100%)}
header.is-scrolled:after{backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px)}
header .wordmark,header .wordmark:hover{font-family:'Snell Roundhand','Segoe Script','Brush Script MT',cursive;font-size:24px;line-height:1.3;letter-spacing:0;font-weight:400;text-transform:none;font-style:normal;text-decoration:none;transform:none;white-space:nowrap}.wordmark:before{width:4px;height:4px;margin-right:10px}
.stage-panel{border:0;background:none;backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:none;isolation:isolate;padding-left:0;padding-right:0;text-shadow:0 1px 6px #000b}
.stage-panel:before{content:'';position:absolute;inset:-45px -75px -45px -65px;z-index:-1;pointer-events:none;background:#10101080;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);mask-image:radial-gradient(ellipse closest-side,#000 50%,#000b 70%,transparent 100%);-webkit-mask-image:radial-gradient(ellipse closest-side,#000 50%,#000b 70%,transparent 100%)}
.stage-panel-heading,.stage-panel #stage-open{border:0}.stage-panel .stage-list button{color:#e3e3e3}.stage-num{color:#ccc}.stage-home-footer{border-top:0;text-shadow:0 1px 6px #000}
#halftone-surface{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:0;transition:opacity .6s;z-index:1}.halftone-ready #halftone-surface{opacity:1}
@media(max-width:760px){header .wordmark,header .wordmark:hover{font-size:22px;min-height:26px}.portfolio-home header,.portfolio-home header.is-scrolled{height:70px;min-height:70px}.case-page header,.case-page header.is-scrolled{height:64px;min-height:64px}.case-page .case-nav{gap:12px}.case-page header .wordmark{margin-right:5px}.stage-panel{top:90px}.stage-panel:before{inset:-40px -60px -40px -40px}.portfolio-home nav{font-size:10px}}
.portfolio-home .hero:before{content:'';position:absolute;inset:0 auto 0 0;width:min(620px,85vw);background:linear-gradient(90deg,#000000b8 0%,#00000080 42%,#00000035 72%,transparent);pointer-events:none;z-index:-1}
.stage-panel{text-shadow:0 1px 2px #000,0 0 9px #0009}.stage-panel .stage-list button,.stage-panel-heading,.stage-num{color:#f4f4ef}.stage-title{text-shadow:0 2px 12px #0005}
header:after{background:linear-gradient(#101010d0,#10101070 48%,transparent)}
.stage-panel:before{backdrop-filter:none;-webkit-backdrop-filter:none;mask-image:none;-webkit-mask-image:none;background:radial-gradient(ellipse at 25% 45%,#0005,transparent 72%);filter:blur(20px)}
header .wordmark,header .wordmark:hover{font-family:Arial,Helvetica,sans-serif;font-size:11px;font-weight:400;letter-spacing:0;font-style:normal;text-transform:lowercase;line-height:1.4;min-height:32px}
header nav{align-items:center}header nav a{display:flex;align-items:center;line-height:1.4;text-transform:lowercase}
.stage-title{pointer-events:auto}.stage-title h1 a{display:inline-block;color:inherit;min-height:44px}.stage-title h1 a:hover{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.12em}.stage-title h1 a:focus-visible{outline:1px solid var(--accent);outline-offset:8px}.stage-title h1 a.long-title{font-size:.8em}
.curriculum{padding:45px 22px 65px;border-top:1px solid var(--line);scroll-margin-top:70px}.curriculum h2{font-size:12px;letter-spacing:.03em}.cv-layout{display:grid;grid-template-columns:1fr 1fr;gap:10vw;margin-top:35px}.cv-statement{font-size:clamp(40px,5vw,76px);line-height:1.08;letter-spacing:-.055em;margin:0}.cv-layout>div>p{font-size:16px;line-height:1.6;max-width:650px;margin:0 0 22px}.cv-download{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--accent);color:var(--accent);max-width:650px;min-height:52px;font-size:16px;margin-top:34px}.cv-download:hover{text-decoration:underline;text-underline-offset:5px}.cv-file-note{display:block;font-size:10px;color:var(--muted);margin-top:12px}
@media(max-width:760px){header .wordmark,header .wordmark:hover{font-size:11px;min-height:28px}.portfolio-home header,.portfolio-home header.is-scrolled{height:64px;min-height:64px}.portfolio-home nav{gap:20px}.cv-layout{grid-template-columns:1fr;gap:28px;margin-top:25px}.curriculum{padding:30px 16px 45px}.cv-statement{font-size:40px}.cv-layout>div>p{font-size:16px}.stage-title h1 a.long-title{font-size:32px}}
@media(max-width:760px){.case-page .case-nav{width:100%;margin-left:0;justify-content:space-between;gap:10px}.case-page header,.case-page header.is-scrolled{height:76px;min-height:76px}.case-page .case-intro{padding-top:100px}}
:root{--accent:#b5ff43}
header .wordmark,header .wordmark.section-active{border:0;text-decoration:none}header .wordmark:hover{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}header .wordmark:focus-visible{outline:1px solid var(--accent);outline-offset:4px}
.footer-kicker{display:block;font-size:clamp(25px,3vw,42px);letter-spacing:-.04em;line-height:1.15;margin-bottom:16px}
.intro{height:100svh;min-height:550px;background:#000;position:relative;overflow:hidden;isolation:isolate;scroll-margin-top:0}.intro-accessible{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:0}#intro-halftone{display:block;width:100%;height:100%;position:absolute;inset:0;pointer-events:none}
.intro-scroll{position:absolute;bottom:95px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:14px;font-size:11px;min-height:44px;color:#ddd;white-space:nowrap}.intro-scroll span{font-size:24px;color:var(--accent);animation:intro-cue 2s ease-in-out infinite}.intro-footer{position:absolute;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;gap:15px;padding:15px 20px;font-size:10px}.intro-footer a{min-height:30px;align-content:center}
@keyframes intro-cue{0%,100%{transform:translateY(0)}50%{transform:translateY(6px)}}
@media(max-width:760px){.intro{min-height:600px}.intro-footer{font-size:9px;padding:12px 16px;flex-wrap:wrap}.intro-scroll{bottom:100px}.footer-kicker{font-size:30px}}
@media(prefers-reduced-motion:reduce){.intro-scroll span{animation:none}}
:root{--accent:#bcbcbc}
.intro-playing header .wordmark{opacity:0;pointer-events:none}.intro-playing #intro-halftone{position:fixed;inset:0;z-index:21;height:100svh}.intro-playing .intro-scroll{opacity:0;transition:opacity .4s}.intro-formed .intro-scroll{opacity:1}.intro-playing .intro-footer{z-index:22}.intro-playing header nav{margin-left:auto}
@media(prefers-reduced-motion:reduce){.intro-playing #intro-halftone{position:absolute;z-index:1}.intro-playing header .wordmark{opacity:1;pointer-events:auto}}
header .wordmark,header .wordmark:hover{text-transform:none}

/* Archive: original colours appear on hover or keyboard focus. */
.project-card .project-image img{filter:grayscale(1);transition:filter .55s ease,transform .8s ease}.project-card:hover .project-image img,.project-card:focus-visible .project-image img{filter:grayscale(0)}.portfolio-home .stage-media{filter:grayscale(1);transition:filter .55s ease}.portfolio-home .hero:hover .stage-media,.portfolio-home .hero:focus-within .stage-media{filter:grayscale(0)}@media(prefers-reduced-motion:reduce){.project-card .project-image img,.portfolio-home .stage-media{transition:none}}
