:root{color-scheme:light;--paper:#f5f0e5;--ink:#25382f;--muted:#667061;--line:#d6d5c8;--serif:Georgia,'Times New Roman',serif;--sans:Arial,Helvetica,sans-serif}*{box-sizing:border-box}html{background:#28392e;scroll-behavior:smooth}body{margin:0;font-family:var(--sans);color:var(--paper)}button,a,input{touch-action:manipulation}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid currentColor;outline-offset:6px}button{border:0;background:none}button:disabled{cursor:wait;opacity:.6}#water{position:fixed;inset:0;width:100%;height:100%;pointer-events:none}.masthead{position:fixed;inset:0 0 auto;display:flex;justify-content:space-between;align-items:flex-start;padding:32px 38px;z-index:5;pointer-events:none;background:linear-gradient(#17271e8c,transparent);text-shadow:0 1px 8px #08130c80}.masthead>*{pointer-events:auto}.identity{text-decoration:none;font:25px var(--serif);letter-spacing:-.8px}nav{display:flex;gap:25px;align-items:center;padding-top:3px}nav button{font-size:14px;min-height:35px;padding:0}nav button span{margin-left:6px}#river{position:relative;min-height:100svh}#photos{position:relative}.photo-hit{position:absolute;display:block;cursor:grab;background:transparent;border:0;z-index:2;padding:0;outline:none;user-select:none;-webkit-user-select:none}.photo-hit:active{cursor:grabbing}.photo-hit:focus-visible{outline:3px solid #fffbe5;outline-offset:10px;border-radius:1px;box-shadow:0 0 18px #fff9db40}.water-note{position:fixed;left:39px;bottom:40px;pointer-events:none;z-index:3;text-shadow:0 1px 6px #102314;transition:opacity 1s,transform 1s}.water-note>span:first-child{font:italic 20px var(--serif)}.water-note p{font-size:13px;line-height:1.6;opacity:.85;margin:10px 0 0}.down-arrow{display:block;margin-top:19px;font-size:22px}.water-note.gone{opacity:0;transform:translateY(14px)}.motion-toggle{position:fixed;z-index:4;bottom:31px;right:35px;padding:10px 0;font:12px var(--sans);text-shadow:0 1px 6px #102314;opacity:.85}.motion-toggle:hover{opacity:1}.end-note{position:absolute;bottom:80px;text-align:center;width:100%;padding:25px;text-shadow:0 1px 5px #13241c}.end-note p{font:italic 25px var(--serif)}.end-note button{font-size:14px;border-bottom:1px solid #ffffff65;padding:12px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.noscript{position:fixed;inset:20% 15%;padding:40px;background:var(--paper);color:var(--ink)}dialog{border:0;padding:0;max-width:none;max-height:none;width:min(1060px,calc(100% - 72px));height:calc(100dvh - 64px);margin:auto;background:var(--paper);color:var(--ink);box-shadow:0 25px 100px #07150fd9;overflow:auto;overscroll-behavior:contain;scrollbar-color:#a6b09f var(--paper)}dialog::backdrop{background:#0e261c65;backdrop-filter:blur(7px)}dialog[open]{animation:lift-in .55s cubic-bezier(.17,.68,.22,1)}@keyframes lift-in{from{opacity:0;transform:translateY(70px) rotate(-1.5deg) scale(.94);filter:blur(4px)}to{opacity:1;transform:none;filter:none}}.reader-shell{min-height:100%;padding:0 55px 65px}.close-reader{position:sticky;top:0;z-index:3;display:flex;align-items:center;justify-content:space-between;width:100%;padding:23px 0 20px;background:var(--paper);border-bottom:1px solid var(--line);font-size:13px}.close-reader span{font:28px var(--sans);line-height:1}.reader-head{padding:60px 0 35px;max-width:760px}.eyebrow{font:12px var(--sans);letter-spacing:.15em;text-transform:uppercase;margin:0 0 17px}.reader-head h1{font:normal clamp(35px,5vw,66px)/1.05 var(--serif);letter-spacing:-2px;margin:0 0 25px}.description,.section-copy{white-space:pre-line;font:18px/1.65 var(--sans);max-width:760px}.reader-section{padding:35px 0 10px}.reader-section h2{font:normal 32px/1.15 var(--serif);letter-spacing:-.7px}.media-grid{display:grid;gap:20px;margin:25px 0}.media-grid.vertical{grid-template-columns:repeat(2,minmax(0,1fr));max-width:740px;margin-inline:auto}.film{margin:0;min-width:0}.film-title{font-size:13px;margin:11px 0 22px;color:#536150}.film-screen{position:relative;aspect-ratio:16/9;background:#0e1510;overflow:hidden;color:white}.vertical .film-screen{aspect-ratio:9/16}.film-screen iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.film-screen:fullscreen{width:100vw;height:100vh;aspect-ratio:auto;background:#000}.film-cover{position:absolute;inset:0;width:100%;background:transparent;display:flex;align-items:center;justify-content:center;z-index:1}.play-circle{width:64px;height:64px;border:1px solid #fff9;display:grid;place-items:center;border-radius:100%;font-size:18px;padding-left:3px;background:#0e221c44;backdrop-filter:blur(4px)}.film-controls{display:flex;align-items:center;gap:13px;padding:12px 14px;background:#e8e8dc}.film-controls button{padding:4px;min-width:32px;font-size:13px;white-space:nowrap}.film-controls input[type=range]{min-width:30px;flex:1;accent-color:var(--ink)}.film-time{font:12px var(--sans);font-variant-numeric:tabular-nums}.film-status{font-size:13px;margin:8px 0;color:#635e49}.image-grid{display:grid;grid-template-columns:1fr;gap:16px;margin:30px 0}.image-grid img{display:block;width:100%;height:auto}.image-grid.row-2,.image-grid.split,.image-grid.row-match{grid-template-columns:repeat(2,minmax(0,1fr))}.image-grid.row-3{grid-template-columns:repeat(3,minmax(0,1fr))}.image-grid.row-match{align-items:center}.image-grid.split:has(> :nth-child(4))>:first-child{grid-row:span 3}.audio-list{display:grid;gap:20px;margin:25px 0}.audio-item p{font-size:14px}.audio-item audio{width:100%}.credits{white-space:pre-line;border-top:1px solid var(--line);margin-top:45px;padding-top:25px;font:13px/1.8 var(--sans);color:#536150}.project-nav{display:flex;justify-content:space-between;gap:25px;border-top:1px solid var(--line);padding-top:30px;margin-top:50px}.project-nav button{font:18px var(--serif);max-width:45%;padding:5px 0;text-align:left}.project-nav button:last-child{text-align:right}.index-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:38px 28px;padding:10px 0 30px}.index-photo{display:block;padding:10px 10px 17px;background:#fffdf5;box-shadow:0 4px 10px #14251616;text-align:left;transform:rotate(var(--tilt));transition:transform .2s,box-shadow .2s}.index-photo:hover{transform:rotate(0) translateY(-5px);box-shadow:0 9px 17px #14251624}.index-photo img{width:100%;aspect-ratio:1.4;object-fit:cover;display:block}.index-photo strong{display:block;font:16px var(--serif);margin:13px 4px 4px}.index-photo span{font-size:11px;letter-spacing:.05em;margin:0 4px;color:#536150}.search-work{font:16px var(--sans);border:0;border-bottom:1px solid #a6b09f;background:transparent;padding:12px 0;width:100%;color:var(--ink);margin-bottom:35px;outline-offset:4px}.about-contact{display:flex;flex-wrap:wrap;gap:15px 26px;font-size:16px;margin:30px 0 45px}.experience{padding:28px 0;border-top:1px solid var(--line)}.experience .eyebrow{margin-bottom:10px}.experience h2{font:26px var(--serif);margin:8px 0}.experience p{font:16px/1.6 var(--sans);max-width:720px}.experience small{font-size:13px}.empty{font:18px var(--serif)}.lift-ghost{position:fixed;z-index:8;pointer-events:none;object-fit:cover;border:12px solid var(--paper);border-bottom-width:40px;box-shadow:0 35px 90px #08180ab3;animation:photo-lift .65s ease forwards}@keyframes photo-lift{0%{opacity:.75;filter:blur(1px)}70%{opacity:1}100%{transform:translateY(-35px) scale(1.12) rotate(0);opacity:0}}@media(max-width:650px){.masthead{padding:24px 21px}.identity{font-size:22px}nav{gap:18px;padding-top:0}nav button{font-size:13px}.water-note{left:22px;bottom:33px}.water-note>span:first-child{font-size:18px}.water-note p{font-size:12px}.motion-toggle{right:20px;bottom:23px}.down-arrow{margin-top:12px}dialog{width:calc(100% - 16px);height:calc(100dvh - 20px)}.reader-shell{padding:0 22px 40px}.close-reader{padding:19px 0}.reader-head{padding:42px 0 22px}.reader-head h1{letter-spacing:-1.2px}.description,.section-copy{font-size:16px;line-height:1.6}.index-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:26px 16px}.index-photo{padding:7px 7px 12px}.index-photo strong{font-size:15px}.index-photo span{font-size:10px}.media-grid.vertical{grid-template-columns:1fr;max-width:340px}.image-grid.row-3{grid-template-columns:1fr}.film-controls{gap:7px;padding:10px 7px}.film-controls button{font-size:12px;min-width:28px}.film-time{font-size:11px}.project-nav button{font-size:16px}.end-note p{font-size:21px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
[hidden]{display:none!important}.film:fullscreen{display:flex;flex-direction:column;justify-content:center;width:100vw;height:100vh;margin:0;background:#000}.film:fullscreen .film-screen{flex:1;aspect-ratio:auto}.film:fullscreen .film-title,.film:fullscreen .film-status{display:none}.film:fullscreen .film-controls{flex:none;width:100%;background:#162319;color:var(--paper)}
.load-error{position:fixed;left:50%;top:40%;transform:translateX(-50%);width:min(90%,480px);padding:35px;color:var(--ink);background:var(--paper);font:24px var(--serif)}.load-error button,.load-error a{font:16px var(--sans);margin-right:25px;text-decoration:underline}.film-controls input{min-height:24px}
@media(max-width:650px){.water-note{top:103px;bottom:auto}.water-note>span:first-child,.water-note .down-arrow{display:none}.water-note p{margin:0;line-height:1.6}}
#river{overflow:clip;overflow-anchor:none}
.opening{position:relative;height:max(640px,100svh);pointer-events:none;color:#fff8e5}
.poem{position:absolute;top:30%;left:50%;width:calc(100% - 44px);max-width:430px;transform:translateX(-50%);text-align:center;text-shadow:0 2px 12px #08160deb,0 1px 2px #08160dcc;font:italic clamp(17px,1.65vw,23px)/1.68 var(--serif);letter-spacing:.005em}
.poem p{margin:0 0 1.15em}
#wade-in{pointer-events:auto;font:14px var(--sans);text-shadow:0 1px 5px #0c1b11;margin-top:12px;padding:10px 0;border-bottom:1px solid #fff7;min-height:44px}
#wade-in span{display:inline-block;margin-left:30px;transition:transform .3s}
#wade-in:hover span{transform:translateY(5px)}
#photos{position:absolute;inset:0;pointer-events:none}.photo-hit{pointer-events:auto}
.water-note{transition:opacity .7s,transform .7s}
.identity{will-change:opacity,filter}
@media(max-width:900px) and (min-width:651px){.poem{font-size:19px}}
@media(max-width:650px){.opening{height:max(600px,100svh)}.poem{width:84%;top:25%;font-size:clamp(16px,4.55vw,18px);line-height:1.55}.poem p{margin-bottom:1.1em}#wade-in{margin-top:0}.water-note{top:auto;bottom:32px}.water-note>span:first-child,.water-note .down-arrow{display:none}}
.short-opening .poem{top:70px;width:calc(100% - 44px);font-size:16px;line-height:1.45}.short-opening .poem p{margin-bottom:.8em}.short-opening #wade-in{padding:6px 0;min-height:36px;font-size:13px}

.water-note{bottom:78px}.water-note p{margin:0}.motion-toggle{bottom:70px}
.water-note,.motion-toggle{transition:opacity .45s,transform .45s,visibility 0s}
.water-note.gone,.motion-toggle.gone{opacity:0;visibility:hidden;pointer-events:none;transform:translateY(8px);transition:opacity .45s,transform .45s,visibility 0s .45s}
@media(max-width:650px){.water-note{bottom:64px}.motion-toggle{bottom:56px}}
@media(prefers-reduced-motion:reduce){.water-note,.motion-toggle{transition:none}}

/* The static heading receives dialog focus without looking like a selected control. */
#reader-title[tabindex="-1"]:focus{outline:none}
