
:root{--paper:#f4f1e9;--white:#fbfaf6;--ink:#252722;--muted:#595b52;--rust:#96543b;--field:#e8e3d8;--serif:"Source Serif 4",Georgia,serif;--sans:"DM Sans",Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px}body{margin:0;background:var(--paper);color:var(--ink);font:17px/1.65 var(--sans)}::selection{background:#dbb39c;color:var(--ink)}a{color:inherit;text-underline-offset:5px;text-decoration-thickness:1px}button{font:inherit;color:inherit}a:focus-visible,button:focus-visible{outline:3px solid var(--rust);outline-offset:6px}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:1.1;letter-spacing:-.025em;text-wrap:balance}h1{font-size:clamp(48px,6.2vw,88px)}h2{font-size:clamp(34px,3.4vw,48px)}h3{font-size:clamp(32px,3vw,43px)}p+p{margin-top:20px}header,main,footer{width:min(1280px,calc(100% - 112px));margin-inline:auto}header{display:flex;align-items:center;justify-content:space-between;gap:30px;padding:32px 0}nav{display:flex;gap:30px;align-items:center}nav a{text-decoration:none;font-size:15px;white-space:nowrap}nav a[aria-current]{color:var(--rust);text-decoration:underline}.wordmark{display:flex;align-items:center;gap:14px;text-decoration:none;font-family:var(--serif);font-size:25px}.mark{display:flex;background:var(--rust);color:var(--paper);width:30px;height:30px;align-items:center;justify-content:center}.arrow{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.5;vertical-align:middle;flex-shrink:0}.skip{position:absolute;left:20px;top:-100px;background:var(--ink);color:var(--paper);padding:10px;z-index:5}.skip:focus{top:12px}.hero{display:grid;grid-template-columns:1fr 1fr;gap:72px;align-items:center;padding:82px 0 100px}.intro{font-family:var(--serif);font-size:31px;line-height:1.32;max-width:20ch;margin-top:28px}.hero-body{max-width:47ch;margin-top:24px;color:var(--muted)}.button{display:inline-flex;align-items:center;gap:28px;background:var(--ink);color:var(--white);padding:14px 22px;text-decoration:none;margin-top:32px;transition:transform 160ms ease-out,background-color 160ms ease-out}.button:active{transform:scale(.97)}.hero-art{background:var(--field);padding:22px 22px 16px}.art{display:block;width:100%;height:auto}.hero-art figcaption{margin-top:17px;font-size:14px;color:var(--muted);display:flex;justify-content:space-between;gap:15px}.hero-art figcaption span{color:var(--ink)}.section-intro{display:grid;grid-template-columns:1fr 1fr;gap:72px;margin-bottom:58px}.section-intro p{max-width:46ch;color:var(--muted)}.project-row{display:grid;grid-template-columns:1.17fr 1fr;gap:82px;align-items:center;margin-bottom:110px}.project-row.reverse{grid-template-columns:1fr 1.17fr}.reverse .project-media{order:2}.reverse .project-copy{order:1}.art-link{display:block;position:relative;background:var(--field);overflow:hidden;text-decoration:none}.art-link>.art{aspect-ratio:1.55}.process-view{display:none}.project-media[data-mode=process] .art:not(.process-view){display:none}.project-media[data-mode=process] .process-view{display:block}.open-cue{position:absolute;right:14px;bottom:14px;padding:8px 12px;background:var(--white);font-size:14px;display:flex;gap:12px;align-items:center}.project-description{font:25px/1.35 var(--serif);margin-top:20px;max-width:32ch}.stage{color:var(--rust);font-size:15px;margin:23px 0 14px}.project-copy>p:not(.stage):not(.project-description){color:var(--muted);max-width:44ch}.text-link{display:inline-flex;align-items:center;gap:20px;margin-top:24px;text-decoration:none;padding:4px 0}.text-link:hover{text-decoration:underline}.view-switch{display:flex;gap:2px;position:relative;margin-top:14px}.view-switch[hidden]{display:none}.view-switch button{border:0;background:transparent;cursor:pointer;font-size:14px;padding:7px 15px;min-height:40px}.view-switch button[aria-pressed=true]{background:var(--ink);color:var(--white)}.view-switch button:active{transform:scale(.97)}.caption,figcaption{font-size:14px;line-height:1.5;color:var(--muted);margin-top:12px}.closing{padding:58px 65px 64px;background:var(--field);max-width:100%;margin-bottom:90px}.closing p{font-size:21px;max-width:52ch;margin-top:20px}.closing h2{max-width:22ch}footer{padding:52px 0 60px;display:flex;justify-content:space-between;gap:40px}.footer-name{font:32px var(--serif);text-decoration:none}footer p{font-size:14px;color:var(--muted);margin-top:12px}footer>div:last-child{text-align:right}.small{font-size:14px;color:var(--muted)}.page-heading{padding:60px 0 65px}.case-deck{font:29px/1.35 var(--serif);max-width:35ch;margin-top:24px}.case-top{padding:34px 0 48px}.back{font-size:14px;color:var(--muted);display:inline-block;margin-bottom:34px}.case-meta{display:grid;grid-template-columns:1fr 2fr;gap:50px;margin-top:40px;max-width:880px;font-size:16px}.case-meta span{display:block;color:var(--muted);font-size:14px;margin-bottom:8px}.case-meta p+p{margin:0}.case-cover{max-width:1000px;margin:0 auto 60px}.case-cover .art{max-height:610px;background:var(--field)}.case-body{display:grid;grid-template-columns:190px minmax(0,760px);gap:75px;justify-content:center}.contents{display:flex;flex-direction:column;align-items:flex-start;gap:18px;position:sticky;top:35px;align-self:start}.contents a{white-space:normal}.narrative section{margin-bottom:58px;scroll-margin-top:40px}.narrative h2{font-size:35px;margin-bottom:22px}.narrative p{max-width:68ch}.question{font:28px/1.35 var(--serif)}.narrative figure{margin-top:35px;background:var(--white);padding:18px}.narrative figure .art{max-height:520px}.reflection{background:var(--field);padding:36px}.next-project{padding:40px 0 75px;max-width:1025px;margin:auto}.next-project p{color:var(--muted);font-size:15px;margin-bottom:18px}.next-project a{text-decoration:none}.letter{max-width:720px;margin:0 auto 70px;font-size:20px}.pending{background:var(--field);padding:22px;font-size:16px}.letter .pending{margin:40px 0}.pending h2{font-size:30px;margin-bottom:18px}.contact-layout{display:grid;grid-template-columns:1fr 1fr;gap:80px;max-width:1000px}.contact-layout h2{font-size:36px;margin-bottom:24px}.contact-layout .pending{margin-bottom:20px}.preview-files{margin:70px 0;background:var(--field);padding:38px}.preview-files h2{margin-bottom:20px}.preview-files a{margin-right:32px}.film{margin-bottom:80px}.film>p{margin-top:20px;max-width:68ch}.film video{width:100%;display:block;background:#161813;max-height:640px}.film-stills{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:30px}.film-stills img{display:block;width:100%;height:auto}.photo-section>p{max-width:64ch;margin:22px 0 40px}.photo-grid{columns:2;column-gap:40px}.photo-grid figure{break-inside:avoid;margin-bottom:46px}.photo-grid img{display:block;width:100%;height:auto}.photo-grid a{display:block}.photo-section{margin-bottom:80px}.photo-grid figure:nth-child(3n){padding-inline:35px}#film-media{margin-top:28px}.film-stills figcaption{font-variant-numeric:tabular-nums}@media(hover:hover) and (pointer:fine){.art-link .open-cue{transition:transform 180ms ease-out}.art-link:hover .open-cue{transform:translateX(-5px)}.button:hover{background:var(--rust)}nav a:hover{color:var(--rust)}}@media(max-width:1000px){header,main,footer{width:calc(100% - 64px)}nav{gap:18px}.hero{gap:35px;padding-top:55px}.hero h1{font-size:66px}.hero-art figcaption{display:block}.project-row,.project-row.reverse{gap:40px}.case-body{grid-template-columns:150px minmax(0,1fr);gap:35px}.project-description{font-size:23px}.section-intro{gap:35px}.closing{padding:40px}}@media(max-width:650px){header,main,footer{width:calc(100% - 40px)}header{display:block;padding:23px 0}.wordmark{font-size:24px}nav{justify-content:space-between;gap:9px;margin-top:22px}nav a{font-size:13px}.hero{display:flex;flex-direction:column;align-items:stretch;gap:40px;padding:40px 0 65px}.hero h1{font-size:58px}.intro{font-size:28px;max-width:24ch;margin-top:23px}.hero-body{font-size:16px}.hero-art{padding:14px}.hero-art figcaption{display:flex;font-size:12px}.section-intro{display:block;margin-bottom:38px}.section-intro p{margin-top:20px;font-size:16px}.project-row,.project-row.reverse{display:flex;flex-direction:column;align-items:stretch;gap:24px;margin-bottom:65px}.reverse .project-media,.reverse .project-copy{order:initial}.project-description{font-size:24px}.stage{margin-top:19px}.project-copy>p:not(.project-description){font-size:16px}.text-link{margin-top:18px}.closing{padding:30px 24px;margin-bottom:35px}.closing p{font-size:18px}footer{display:block;padding:34px 0 45px}footer>div:last-child{text-align:left;margin-top:30px}.page-heading{padding:36px 0 45px}.page-heading h1{font-size:50px}.case-deck{font-size:25px}.case-meta{display:block;margin-top:30px}.case-meta p+p{margin-top:22px}.case-top h1{font-size:50px}.case-body{display:block}.contents{position:static;flex-direction:row;flex-wrap:wrap;gap:12px 22px;margin-bottom:40px}.contents a{font-size:14px}.case-cover{margin-bottom:30px}.narrative h2{font-size:31px}.narrative section{margin-bottom:42px}.narrative figure{padding:10px}.reflection{padding:26px}.letter{font-size:18px}.contact-layout{display:block}.contact-layout section+section{margin-top:35px}.contact-layout h2{font-size:32px}.preview-files{padding:25px;margin:45px 0}.film-stills{grid-template-columns:1fr;gap:25px}.photo-grid{columns:1}.photo-grid figure:nth-child(3n){padding-inline:0}.film{margin-bottom:55px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.button:active,.view-switch button:active,.art-link:hover .open-cue{transform:none!important}}@media print{header,footer,.view-switch,.contents{display:none}main{width:100%}body{background:white}.project-row{break-inside:avoid}.art{max-height:400px}}

@media(min-width:651px){.film-stills{grid-template-columns:repeat(2,1fr)}}

.art{overflow:hidden}.project-copy h3 a{text-decoration:none}.project-copy h3 a:hover{text-decoration:underline}.hero-art figcaption{gap:8px}

.hero-body,.project-copy>p:not(.stage):not(.project-description),.section-intro p{color:var(--ink)}@media(max-width:650px){.hero-art figcaption{font-size:13px}}

.about-layout{display:grid;grid-template-columns:minmax(220px,330px) minmax(0,720px);gap:clamp(40px,7vw,100px);align-items:start;margin-bottom:70px;justify-content:center}.about-layout .letter{margin:0}.portrait-aside{position:sticky;top:40px}.portrait{position:relative;padding:25px 5px 0}.portrait img{display:block;position:relative;width:100%;height:auto;z-index:1}.portrait figcaption{font-family:var(--serif);font-size:23px;color:var(--ink);margin:22px 0 0 18px}.portrait-line{position:absolute;inset:0;width:100%;height:auto;fill:none;stroke:var(--rust);stroke-width:2.5;stroke-linecap:round}.portrait-line path{vector-effect:non-scaling-stroke}@media(hover:hover) and (pointer:fine){.portrait img{transition:transform 180ms ease-out}.portrait:hover img{transform:translateY(-2px)}}@media(max-width:850px){.about-layout{grid-template-columns:240px minmax(0,1fr);gap:35px}}@media(max-width:650px){.about-layout{display:block;margin-bottom:45px}.portrait-aside{position:static;max-width:260px;margin:0 auto 38px}.portrait figcaption{font-size:22px}.portrait{padding-top:15px}}@media(prefers-reduced-motion:reduce){.portrait:hover img{transform:none}}

/* Approved home hierarchy: personal introduction, four equal projects, journal, contact. */
.personal-hero{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:60px;padding:45px 0 100px;min-height:630px}.personal-hero h1{font-size:clamp(58px,6.2vw,88px)}.personal-hero .intro{max-width:26ch;font-size:32px}.personal-hero .hero-body{max-width:49ch;font-size:18px}.personal-hero .hero-body+.hero-body{margin-top:16px}.hero-portrait{position:relative;max-width:470px;width:100%;justify-self:end;padding:15px 0 0;perspective:900px}.hero-portrait img{position:relative;display:block;width:100%;height:auto;z-index:1;transform-origin:center 62%;transition:transform 240ms cubic-bezier(.2,.7,.2,1)}.portrait-orbit{position:absolute;width:100%;height:auto;inset:0;fill:none;stroke:var(--rust);stroke-width:2.5;stroke-linecap:round;pointer-events:none}.hero-portrait figcaption{position:relative;text-align:center;margin-top:18px;font-size:15px;color:var(--muted)}.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:65px 50px;margin-bottom:95px}.project-tile{min-width:0;display:flex;flex-direction:column;gap:23px}.project-tile .project-copy{display:flex;flex-direction:column;align-items:start;flex:1}.project-tile h3{font-size:34px}.project-tile .project-description{font-size:24px;max-width:34ch;margin-top:13px}.project-tile .stage{margin-top:18px;margin-bottom:0}.project-tile .text-link{margin-top:18px}.project-tile .art-link>.art{aspect-ratio:1.6}.project-tile .media-caption{min-height:42px}.work .section-intro{align-items:start}.work .section-intro h2{max-width:15ch}header nav{margin-left:auto}header{justify-content:space-between}.closing{margin-top:0}@media(max-width:1000px){.personal-hero{gap:30px;min-height:600px}.personal-hero .intro{font-size:28px}.personal-hero .hero-body{font-size:17px}.project-grid{gap:55px 35px}.project-tile h3{font-size:31px}}@media(max-width:650px){header{display:flex;align-items:center;gap:15px}header nav{margin-top:0;justify-content:end}header nav a{font-size:14px}.personal-hero{display:grid;grid-template-columns:1fr;gap:30px;min-height:0;padding:32px 0 65px}.personal-hero h1{font-size:58px}.personal-hero .intro{font-size:28px;max-width:24ch}.personal-hero .hero-body{font-size:17px}.hero-portrait{max-width:300px;justify-self:center;padding-top:0}.hero-portrait figcaption{font-size:14px}.project-grid{grid-template-columns:1fr;gap:55px;margin-bottom:60px}.project-tile{gap:20px}.project-tile .media-caption{min-height:0}.project-tile h3{font-size:33px}.project-tile .project-description{font-size:24px}.personal-hero .button{margin-top:25px}.work .section-intro h2{max-width:100%}}@media(prefers-reduced-motion:reduce){.hero-portrait img{transform:none!important;transition:none}}

.interest-link{text-decoration-color:var(--rust);text-decoration-thickness:1px;transition:color 160ms ease-out}.interest-link:hover,.interest-link:focus-visible{color:var(--rust)}.project-tile:target h3{color:var(--rust)}.project-tile{scroll-margin-top:32px}@media(max-width:650px){.personal-hero{gap:22px}.hero-introduction{display:contents}.personal-hero h1{grid-row:1}.personal-hero .hero-portrait{grid-row:2;max-width:240px}.personal-hero .intro{grid-row:3;margin-top:0}.personal-hero .hero-body{margin-top:0}.personal-hero .hero-body+.hero-body{margin-top:0}.personal-hero .button{justify-self:start;margin-top:3px}}

/* Portrait-first revision: centered personal introduction; four projects share one row. */
.portrait-first{display:grid;grid-template-columns:1fr;gap:0;min-height:0;padding:36px 0 85px;text-align:center;justify-items:center}.portrait-first .hero-introduction{display:contents}.portrait-first h1{grid-row:2;font-size:clamp(50px,5vw,72px);margin-top:25px}.portrait-first .hero-portrait{grid-row:1;justify-self:center;max-width:270px;padding:0}.portrait-first .intro{grid-row:3;max-width:34ch;font-size:30px;line-height:1.3;margin-top:20px}.portrait-first .hero-body{max-width:68ch;font-size:17px;margin-top:22px}.portrait-first .hero-body+.hero-body{margin-top:12px}.portrait-first .button{justify-self:center;margin-top:27px}.portrait-orbit,.portrait-line{display:none}.work .section-intro{display:block;text-align:center;margin-bottom:40px}.work .section-intro h2{max-width:none;font-size:42px}.work .section-intro p{max-width:62ch;margin:20px auto 0}.project-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:28px;margin-bottom:80px}.project-tile{gap:18px}.project-tile .art-link>.art{aspect-ratio:1.25}.project-tile h3{font-size:27px}.project-tile .project-description{font-family:var(--sans);font-size:16px;line-height:1.55;margin-top:14px}.project-tile .stage{font-size:14px;margin-top:17px}.project-tile .media-caption{font-size:13px;min-height:60px}.project-tile .text-link{font-size:14px}.project-tile .open-cue{right:9px;bottom:9px;font-size:13px;padding:6px 9px;gap:6px}.project-tile .view-switch button{padding:6px 11px}.closing{max-width:100%;padding:38px;text-align:center}.closing h2,.closing p{margin-inline:auto}.closing h2{font-size:36px}.closing p{font-size:18px}@media(max-width:1100px){.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:50px 35px}.project-tile h3{font-size:31px}.project-tile .art-link>.art{aspect-ratio:1.6}.project-tile .media-caption{min-height:40px}.portrait-first .hero-portrait{max-width:250px}}@media(max-width:650px){.portrait-first{padding:24px 0 60px}.portrait-first .hero-portrait{max-width:210px;grid-row:1}.portrait-first h1{grid-row:2;font-size:48px;margin-top:22px}.portrait-first .intro{grid-row:3;font-size:25px;margin-top:19px;max-width:25ch}.portrait-first .hero-body{font-size:16px;margin-top:20px}.portrait-first .hero-body+.hero-body{margin-top:13px}.portrait-first .button{margin-top:24px}.project-grid{grid-template-columns:1fr;gap:46px}.project-tile h3{font-size:33px}.project-tile .project-description{font-size:18px}.project-tile .media-caption{min-height:0}.work .section-intro h2{font-size:36px}.closing{padding:30px 22px}.closing h2{font-size:30px}}

/* Long-form portfolio: one complete project at a time. */
.project-grid{grid-template-columns:1fr;gap:110px;margin:0 auto 120px;max-width:1180px}.project-tile{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:65px;align-items:center}.project-tile .art-link>.art{aspect-ratio:1.45}.project-tile h3{font-size:clamp(36px,4vw,52px)}.project-tile .project-description{font:26px/1.4 var(--serif);max-width:26ch;margin-top:22px}.project-tile .media-caption{min-height:0;font-size:14px}.project-tile .stage{font-size:15px;margin-top:25px}.project-tile .text-link{font-size:16px;margin-top:24px}.project-tile .project-copy{display:block}.project-tile .open-cue{font-size:14px;padding:10px 14px;right:15px;bottom:15px}.project-tile .view-switch button{padding:8px 16px}.work .section-intro{margin-bottom:70px}.exploded-story{height:260vh;min-height:1600px;margin:0 0 100px;position:relative}.exploded-sticky{position:sticky;top:0;min-height:100vh;display:grid;grid-template-columns:minmax(270px,.75fr) minmax(0,1.4fr);gap:45px;align-items:center}.exploded-copy h2{font-size:clamp(36px,4vw,58px);line-height:1.1;margin-bottom:25px}.exploded-copy>p{max-width:35ch}.exploded-copy .small{margin-top:18px;font-size:14px}.model-stage{position:relative;width:100%;height:min(78vh,760px);min-height:420px;overflow:hidden;background:var(--field)}.model-canvas{display:block;width:100%;height:100%;touch-action:pan-y}.model-canvas[hidden]{display:none}.model-fallback{width:100%;height:100%;object-fit:contain}.model-status{position:absolute;bottom:15px;left:20px;right:20px;font-size:13px}.exploded-copy label{display:flex;justify-content:space-between;gap:10px;font-size:14px;margin-top:24px}.exploded-copy input{width:100%;accent-color:var(--rust);min-height:36px;cursor:ew-resize}.exploded-copy button{background:none;border:0;color:var(--ink);font:14px var(--sans);cursor:pointer;margin:8px 20px 0 0}.exploded-copy a{font-size:14px;display:inline-block}.layer-legend{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:24px;font-size:13px;color:var(--muted)}.layer-legend span{transition:color 160ms ease-out}.layer-legend span.active{color:var(--rust)}
@media(max-width:900px){.project-tile{gap:35px;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr)}.project-tile .project-description{font-size:23px}.exploded-sticky{gap:22px;grid-template-columns:minmax(240px,.9fr) minmax(0,1.1fr)}}
@media(max-width:650px){.project-grid{gap:75px;margin-bottom:85px}.project-tile{display:flex;flex-direction:column;align-items:stretch;gap:24px}.project-tile h3{font-size:37px}.project-tile .project-description{font-size:24px}.project-tile .stage{margin-top:18px}.exploded-story{height:220vh;min-height:1500px;margin-bottom:65px}.exploded-sticky{min-height:100svh;display:flex;flex-direction:column;justify-content:center;gap:15px;padding:18px 0}.exploded-copy{width:100%}.exploded-copy h2{font-size:34px;margin-bottom:12px}.exploded-copy>p{font-size:15px;max-width:none}.exploded-copy .small{font-size:12px;margin-top:8px}.layer-legend{margin-top:10px;font-size:12px;gap:4px 12px}.exploded-copy label{margin-top:10px;font-size:13px}.model-stage{height:41svh;min-height:260px;order:-1}.model-status{font-size:11px;bottom:7px;left:12px}.exploded-copy a,.exploded-copy button{font-size:13px;margin-top:4px}.work .section-intro{margin-bottom:45px}}
@media(prefers-reduced-motion:reduce){.exploded-story{height:auto;min-height:0}.exploded-sticky{position:relative;min-height:0}.layer-legend span{transition:none}}

.exploded-copy input:focus-visible{outline:3px solid var(--rust);outline-offset:4px}

/* Slider-only assembly: normal document flow, no scroll hold. */
.exploded-story{height:auto;min-height:0}.exploded-sticky{position:relative;top:auto;min-height:0;padding:45px 0}@media(max-width:650px){.exploded-story{height:auto;min-height:0}.exploded-sticky{min-height:0;padding:0}}

/* Unified symbolic Blender covers, with original evidence inside case studies. */
.cover-art{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:contain}.project-tile .media-caption{font-size:15px;color:var(--ink);margin-top:15px}.project-tile .art-link{background:#f0ece3}
