@font-face{font-family:Plex;src:url('assets/plex-sans.woff2');font-display:swap}@font-face{font-family:Newsreader;src:url('assets/newsreader.woff2');font-display:swap}
:root{--paper:#fcfbf7;--ink:#25352f;--muted:#64716a;--line:#d9dfd6;--accent:#456852}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:25px}body{margin:0;background:var(--paper);color:var(--ink);font-family:Plex,Arial,sans-serif}a{color:inherit;text-decoration:none}button{font:inherit}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:7px}.skip{position:absolute;top:-100px;background:var(--paper);z-index:10;padding:15px}.skip:focus{top:0}header{margin:0 4.5vw;padding:27px 0;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.identity{font-size:18px;letter-spacing:-.04em}.identity span{font-size:10px;letter-spacing:.08em;margin-left:13px;color:var(--muted)}nav{display:flex;gap:30px;font-size:12px}nav a:hover,.text-link:hover{text-decoration:underline;text-underline-offset:6px}.intro{padding:43px 4.5vw 48px}.intro-top,.intro-bottom{display:flex;justify-content:space-between;align-items:center;font-size:12px}.intro-top{color:var(--muted)}h1{font-size:clamp(70px,12.3vw,210px);font-weight:400;letter-spacing:-.073em;line-height:.98;margin:43px 0 34px}em{font-family:Newsreader,Georgia,serif;font-weight:400;letter-spacing:-.045em}h1 em{font-size:1.07em}.intro-bottom p{font-size:17px;line-height:1.5;margin:0}.intro-bottom a{display:flex;align-items:center;gap:35px}.intro-bottom a span{font-size:30px}.showcase{display:grid;grid-template-columns:1fr 2.5fr;gap:5vw;margin:0 4.5vw 115px;padding-top:32px;border-top:1px solid var(--line)}.label{font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}.project-selector{padding:12px 0}.project-buttons{display:flex;flex-direction:column;margin:30px 0}.project-buttons button{text-align:left;display:flex;align-items:center;gap:16px;cursor:pointer;border:0;border-bottom:1px solid var(--line);background:none;color:var(--muted);padding:17px 0;font-size:19px;letter-spacing:-.03em}.project-buttons button span{font-size:10px;letter-spacing:0}.project-buttons button i{font-style:normal;margin-left:auto;opacity:0}.project-buttons button[aria-pressed=true]{color:var(--ink)}.project-buttons button[aria-pressed=true] i{opacity:1}.project-buttons button:hover{color:var(--accent)}.preview-description{font-size:14px;line-height:1.7;min-height:48px;max-width:230px}.text-link{font-size:12px;border-bottom:1px solid var(--accent);padding-bottom:6px}.preview-stage{background:#e8eee5;padding:40px 35px 20px;perspective:1200px;display:flex;flex-direction:column;justify-content:center;min-width:0}.preview-sheet{display:block;transform:rotateY(var(--ry,-4deg)) rotateX(var(--rx,3deg));transition:transform .45s ease;box-shadow:0 18px 35px -25px #25352f80;border:6px solid #fff;background:#fff}.preview-sheet img{display:block;width:100%;aspect-ratio:1.64;object-fit:cover;object-position:top}.preview-caption{display:flex;justify-content:space-between;gap:20px;font-size:10px;color:#53634f;margin-top:30px}.work{margin:0 4.5vw 100px}.section-heading{display:flex;justify-content:space-between;align-items:end;padding-top:30px;border-top:1px solid var(--line);margin-bottom:50px}.section-heading h2,.writing h2{font-size:clamp(40px,5.4vw,80px);font-weight:400;line-height:1.02;letter-spacing:-.055em;margin:0}.section-heading p{font-size:14px;line-height:1.7;max-width:280px;margin:0}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:65px 35px}.project:nth-child(even){padding-top:85px}.project-image{position:relative;display:block;padding:32px;background:#edf0e9;overflow:hidden}.project-image img{display:block;width:100%;aspect-ratio:1.42;object-fit:cover;object-position:top;transition:transform .5s}.project-image:hover img{transform:translateY(-5px)}.project-image>span{position:absolute;right:32px;bottom:24px;background:var(--paper);padding:11px 15px;font-size:11px}.project-info{display:flex;gap:15px;padding-top:20px;align-items:baseline}.number{font-size:10px;color:var(--muted)}h3{font-size:29px;font-weight:400;letter-spacing:-.05em;margin:0}.project-info p{font-size:12px;line-height:1.5;color:var(--muted);margin:8px 0}.discipline{font-size:10px;color:var(--muted);margin-left:auto;white-space:nowrap}.writing{border-top:1px solid var(--line);margin:0 4.5vw;padding:42px 0 90px;display:grid;grid-template-columns:1fr 2fr 1fr;gap:30px}.writing h2{font-size:clamp(38px,4vw,65px)}.writing p{font-size:14px;line-height:1.8;margin:0 0 25px}footer{background:#edf0e9;padding:50px 4.5vw 25px}.footer-name{display:flex;justify-content:space-between;font-family:Newsreader,Georgia,serif;font-size:clamp(65px,10vw,150px);letter-spacing:-.05em;border-bottom:1px solid #ccd5c8;padding-bottom:35px}footer>div{display:flex;justify-content:space-between;gap:25px;font-size:11px;padding-top:25px}
@media(min-width:1700px){body{max-width:1800px;margin:auto}}@media(max-width:750px){header{padding:21px 0;margin:0 22px}.identity{font-size:15px}.identity span{display:none}nav{gap:16px;font-size:11px}nav a:last-child{display:none}.intro{padding:30px 22px}.intro-top{font-size:10px}.intro-top span:last-child{display:none}h1{font-size:clamp(64px,15vw,115px);line-height:.92;margin:33px 0}h1 em{display:block;padding-left:12vw;margin-top:12px}.intro-bottom p{font-size:14px}.intro-bottom a{font-size:10px;gap:12px;max-width:115px}.showcase{margin:0 22px 65px;padding-top:15px;display:flex;flex-direction:column;gap:20px}.project-selector{display:contents}.project-selector>.label{order:0;margin:0}.project-buttons{order:2;display:grid;grid-template-columns:1fr 1fr;gap:0 20px;margin:0}.project-buttons button{font-size:15px;gap:10px;min-height:48px}.preview-stage{order:1;padding:22px 15px 15px}.preview-sheet{border:3px solid white;transform:none}.preview-caption{font-size:9px;margin-top:20px}.preview-caption span:last-child{max-width:105px;text-align:right}.preview-description{order:3;min-height:0;max-width:none;margin:0}.project-selector>.text-link{order:4;align-self:start}.work{margin:0 22px 55px}.section-heading{display:block;padding-top:25px;margin-bottom:30px}.section-heading h2{font-size:43px}.section-heading p{margin-top:23px;max-width:310px;font-size:13px}.project-grid{grid-template-columns:1fr;gap:35px}.project:nth-child(even){padding-top:0}.project-image{padding:20px}.project-image>span{right:20px;bottom:16px}h3{font-size:26px}.discipline{font-size:9px}.writing{margin:0 22px;grid-template-columns:1fr;gap:24px;padding:30px 0 50px}.writing h2{font-size:45px}.writing p{max-width:360px}footer{padding:30px 22px 25px}footer>div{flex-wrap:wrap;gap:17px;font-size:10px}footer>div a{overflow-wrap:anywhere}.footer-name{font-size:70px;padding-bottom:20px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important}.preview-sheet{transform:none}.project-image:hover img{transform:none}}
@media(max-width:360px){h1{font-size:57px}h1 em{padding-left:8vw}.project-info{flex-wrap:wrap}.discipline{margin-left:25px}.intro-bottom a{max-width:96px;gap:8px}.project-buttons button{font-size:14px}}
/* Dimensional project cube: a light physical frame, with fluid direct manipulation. */
.preview-stage{padding:22px 28px 20px;background:#e8eee5;overflow:hidden}.cube-toolbar{display:flex;justify-content:space-between;align-items:center;font-size:10px;color:#53634f}.cube-toolbar button{border:1px solid #bdcabb;background:transparent;border-radius:0;padding:8px 12px;font-size:10px;color:inherit;cursor:pointer}.cube-space{--size:clamp(200px,27vw,350px);height:440px;position:relative;perspective:1400px;touch-action:pan-y;cursor:grab;display:grid;place-items:center}.cube-space.is-dragging{cursor:grabbing}.cube-light{position:absolute;width:55%;height:30px;bottom:38px;background:#5c755b;opacity:.15;filter:blur(19px);border-radius:50%;pointer-events:none}.cube-tilt{width:var(--size);height:var(--size);transform-style:preserve-3d;transform:rotateX(var(--pitch,-9deg)) rotateZ(var(--roll,0deg));transition:transform .65s cubic-bezier(.2,.8,.2,1)}.project-cube{position:relative;width:100%;height:100%;transform-style:preserve-3d;transform:rotateY(var(--angle,-17deg));transition:transform 1.15s cubic-bezier(.22,.8,.2,1);will-change:transform}.is-dragging .project-cube{transition:none}.cube-face,.cube-cap{position:absolute;inset:0;background:#fcfbf7;border:1px solid #cbd3c6;backface-visibility:hidden}.cube-face{transform:rotateY(calc(var(--face)*90deg)) translateZ(calc(var(--size)/2));padding:14px;display:flex;flex-direction:column}.face-label{font-size:10px;color:#50604d;line-height:1;padding:2px 0 14px}.cube-face img{width:100%;flex:1;min-height:0;object-fit:cover;object-position:top;border:1px solid #d5dcd1}.cube-top{transform:rotateX(90deg) translateZ(calc(var(--size)/2));background:#f5f6ef}.cube-bottom{transform:rotateX(-90deg) translateZ(calc(var(--size)/2));background:#d4ddce}.cube-navigation{display:flex;align-items:center;justify-content:space-between;padding-top:10px}.cube-navigation button{width:44px;height:44px;border:1px solid #becbb9;background:transparent;color:#25352f;font-size:22px;cursor:pointer}.cube-navigation a{font-size:20px;font-family:Newsreader,Georgia,serif}.preview-caption{margin-top:20px}.cube-space.is-still .cube-tilt{transform:none}.cube-space.is-still .project-cube{transform:none;transition:none}.cube-space.is-still .cube-face{display:none;transform:none}.cube-space.is-still .cube-face.is-selected{display:flex}.cube-space.is-still .cube-cap{display:none}.project{transition:opacity .7s ease,translate .9s cubic-bezier(.2,.8,.2,1)}.motion-ready .project:not(.in-view){opacity:0;translate:0 30px}
@media(max-width:750px){.preview-stage{padding:16px}.cube-space{--size:205px;height:320px}.cube-light{bottom:22px}.cube-face{padding:10px}.face-label{font-size:8px;padding-bottom:10px}.cube-navigation{padding-top:0}.cube-navigation a{font-size:19px}.preview-caption{margin-top:14px}}@media(max-width:360px){.cube-space{--size:180px;height:285px}}
@media(prefers-reduced-motion:reduce){.cube-tilt{transform:none}.project-cube{transform:rotateY(var(--flat-angle,0deg));transition:none}.cube-light{display:none}.motion-ready .project:not(.in-view){opacity:1;translate:none}}
/* Composition 02: the dimensional object belongs in the opening, not below it. */
.opening{display:grid;grid-template-columns:.9fr 1.1fr;margin:0 4.5vw;gap:4vw;min-height:700px;align-items:center;padding:42px 0 55px}.intro{padding:0;align-self:center}.intro-top{font-size:11px}.intro h1{font-size:clamp(70px,8.2vw,145px);line-height:.91;margin:43px 0;letter-spacing:-.07em}.intro h1 em{display:block;margin-top:8px}.intro-bottom{display:block}.intro-bottom p{font-size:18px;line-height:1.6}.intro-bottom>a{margin-top:35px;display:inline-flex;gap:25px;font-size:11px}.showcase{display:flex;flex-direction:column;gap:0;border:0;padding:0;margin:0;min-width:0}.preview-stage{order:0;background:transparent;padding:0;overflow:visible}.cube-toolbar{font-size:10px}.cube-space{--size:clamp(220px,25vw,360px);height:440px}.cube-light{bottom:35px}.cube-navigation{padding:0 15px}.cube-navigation button{border-radius:50%;border-color:#cbd3c6}.preview-caption{margin:18px 15px 0}.project-selector{order:1;padding:0;margin-top:24px;border-top:1px solid var(--line)}.project-selector>.label,.preview-description,.project-selector>.text-link{display:none}.project-buttons{display:grid;grid-template-columns:1fr 1fr;gap:0 24px;margin:0}.project-buttons button{font-size:13px;padding:13px 0}.project-buttons button i{font-size:15px}.cube-face{border-color:#c9d2c4;background:#fefdf9}.cube-face img{object-fit:cover}.cube-position{color:#25352f}.project-cube{transition:none}.cube-tilt{transition:none}.work{margin-top:30px}.section-heading{padding-top:40px;margin-bottom:55px}.section-heading h2{font-size:clamp(45px,5vw,75px)}.project-grid{display:flex;flex-direction:column;gap:80px}.project{display:grid;grid-template-columns:1.9fr 1fr;gap:5vw;align-items:center}.project:nth-child(even){padding:0;grid-template-columns:1fr 1.9fr}.project:nth-child(even) .project-image{order:2}.project:nth-child(even) .project-info{order:1}.project-image{padding:40px;background:#e9eee5;aspect-ratio:1.4;display:flex;align-items:center}.project-image>img:first-child{aspect-ratio:auto;max-height:100%;object-fit:contain;box-shadow:0 18px 25px -22px #20302280;border:5px solid #fcfbf7}.project-image>span{bottom:14px;right:18px;background:transparent;padding:0;font-size:10px}.project-info{display:grid;grid-template-columns:22px 1fr;gap:14px 10px;padding:0;align-items:baseline}.project-info h3{font-family:Newsreader,Georgia,serif;font-size:clamp(33px,3.5vw,56px);letter-spacing:-.04em}.project-info p{font-size:15px;line-height:1.75;max-width:280px;margin:16px 0 24px}.project-read{font-size:11px;border-bottom:1px solid #a1b09a;padding-bottom:6px;display:inline-block}.discipline{grid-column:2;grid-row:1;font-size:10px;letter-spacing:.03em;margin:0 0 18px}.project-info>div{grid-column:2;grid-row:2}.project-info>.number{grid-row:1}.paired-image{padding-right:95px}.project-image .phone-inset{position:absolute;right:24px;bottom:38px;width:24%;height:64%;object-fit:cover;object-position:top;aspect-ratio:auto;border:5px solid #fcfbf7;box-shadow:0 16px 25px -15px #20302255;transform:translateZ(0)}.project-image:hover .phone-inset{transform:translateY(-8px)}.project-image:hover>img:first-child{transform:translateY(-3px)}.writing{margin-top:120px}.project{scroll-margin-top:40px}
@media(min-width:1600px){.opening{min-height:780px}.cube-space{height:530px}}
@media(max-width:750px){.opening{display:block;min-height:0;margin:0 22px;padding:30px 0 0}.intro{padding:0}.intro h1{font-size:clamp(70px,17vw,110px);margin:25px 0;line-height:.89}.intro h1 br{display:none}.intro h1 em{padding-left:12vw;margin-top:14px}.intro-bottom{display:flex;gap:18px}.intro-bottom p{font-size:14px}.intro-bottom>a{font-size:10px;margin:0;gap:15px}.showcase{margin:35px 0 60px;display:flex}.preview-stage{order:0}.cube-space{--size:205px;height:335px}.cube-toolbar{font-size:9px}.cube-navigation{padding:0}.preview-caption{margin:17px 0 0}.project-selector{display:block;margin-top:25px;order:1}.project-buttons{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.project-buttons button{font-size:13px}.project-selector>.label,.project-selector>.text-link,.preview-description{display:none}.work{margin-top:0}.section-heading{margin-bottom:30px}.project-grid{gap:45px}.project,.project:nth-child(even){display:flex;flex-direction:column;gap:23px;align-items:stretch}.project:nth-child(even) .project-image{order:0}.project:nth-child(even) .project-info{order:1}.project-image{padding:22px;aspect-ratio:1.3}.project-info{display:grid;grid-template-columns:24px 1fr;gap:0 7px}.project-info h3{font-size:37px}.project-info p{font-size:14px;max-width:none;margin:10px 0 14px}.discipline{margin-bottom:10px}.paired-image{padding-right:60px}.project-image .phone-inset{right:15px;bottom:35px;border-width:3px;width:25%;height:62%}.project-image>img:first-child{border-width:3px}.writing{margin-top:70px}.cube-face{padding:10px}}@media(max-width:360px){.intro h1{font-size:62px}.intro h1 em{padding-left:6vw}.cube-space{--size:178px;height:295px}.intro-bottom>a{gap:6px}.project-info h3{font-size:32px}}
@media(max-width:750px){.intro-top span:first-child{display:inline}}
@media(max-width:360px){.intro-bottom{display:block}.intro-bottom>a{margin-top:20px;max-width:none}.intro-bottom p{max-width:240px}}

/* Keyboard navigation follows the same sequence as the visible composition. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.motion-ready .project:focus-within{opacity:1;translate:none;transition:none}
main:focus{outline:none}

/* Personal portrait: original photograph, cropped only by the page frame. */
.portrait-wrap{position:relative;width:100%;max-width:410px;padding:0 14px 24px 0}.portrait-window{aspect-ratio:4/5;overflow:hidden;background:#e9eee5;transform:rotate(-3deg);border:9px solid #fff;box-shadow:0 15px 30px -25px #25352f80}.portrait-window img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 72%;transform:scale(1.35);transform-origin:50% 65%}.portrait-label{position:absolute;bottom:3px;left:24px;font-family:Newsreader,Georgia,serif;font-style:italic;font-size:20px;background:#e5ebd5;padding:9px 16px;transform:rotate(2deg)}.portrait-mark{position:absolute;right:-6px;top:-24px;color:#a64b36;font-size:78px;line-height:1;transform:rotate(12deg)}.personal-links{display:flex;flex-wrap:wrap;gap:20px 30px;font-size:14px}.personal-links a{padding-bottom:6px;text-decoration:none;border-bottom:1px solid #9ba992}.instagram-link{display:block;margin-top:20px;font-size:12px}.about-story{align-self:center}.about-grid{gap:8vw}.about .portrait-wrap{align-self:start}
@media(max-width:650px){.portrait-wrap{max-width:330px;margin:10px auto 28px}.portrait-label{font-size:17px;left:10px}.portrait-mark{right:0}.personal-links{font-size:13px}}

.personal-note{display:grid;grid-template-columns:1fr 1.2fr;align-items:center;gap:10vw;margin:100px 10vw 110px}.personal-copy h2{font-weight:400;font-size:clamp(43px,5vw,75px);line-height:1.04;letter-spacing:-.05em;margin:25px 0}.personal-copy>p{font-size:17px;line-height:1.8;max-width:450px;margin-bottom:30px}@media(max-width:750px){.personal-note{grid-template-columns:1fr;gap:25px;margin:75px 22px 60px}.personal-copy>p{font-size:15px}.personal-copy h2{font-size:49px}.personal-copy>.label{font-size:10px}}

@media(max-width:520px){header{flex-wrap:wrap;gap:16px}header nav{width:100%;gap:24px}header nav a:last-child{display:inline}}
