/* Source: /style.css */
@font-face{font-family:Integral;src:url('/assets/integral-demibold.woff2') format('woff2');font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:Unbounded;src:url('/assets/unbounded-site-fd1d541f9ead.woff2') format('woff2');font-weight:200 900;font-display:swap}
@font-face{font-family:DM;src:url('/assets/dm-sans.woff2') format('woff2');font-weight:100 900;font-display:swap}
:root{--ink:#10110f;--cream:#e9e5d8;--muted:#8d8f80;--line:rgba(233,229,216,.25);--gutter:3.2vw;--header:90px}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:0;scrollbar-gutter:stable}body{margin:0;background:var(--ink);color:var(--cream);font:14px/1.4 DM,Arial,sans-serif;-webkit-font-smoothing:antialiased}body.is-loading{overflow:hidden}body.dialog-open{overflow:hidden}a{color:inherit;text-decoration:none}button{color:inherit;font:inherit;border:0;background:none;cursor:pointer;padding:0}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible{outline:2px solid currentColor;outline-offset:7px}button:disabled{opacity:.25;cursor:default}img,video{display:block;max-width:100%}h1,h2,h3,p{margin:0}::selection{background:var(--cream);color:var(--ink)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;top:-100px;left:24px;z-index:1000;padding:14px;background:var(--cream);color:var(--ink)}.skip-link:focus{top:10px}
.site-header{position:fixed;inset:0 0 auto;height:var(--header);z-index:30;pointer-events:none;mix-blend-mode:difference;color:#eeeade}.site-header nav{position:absolute;top:31px;right:var(--gutter);display:flex;gap:32px;pointer-events:auto}.site-header nav a{display:flex;align-items:baseline;gap:6px;font-size:15px}.site-header nav a:after{content:'';height:1px;background:currentColor;position:absolute;bottom:-5px;width:0;transition:width .25s}.site-header nav a:hover:after{width:22px}.wordmark{position:fixed;left:var(--gutter);top:11vh;width:calc(100vw - 6.4vw);font-family:Unbounded,Arial,sans-serif;font-size:clamp(85px,14vw,230px);line-height:.87;letter-spacing:-.075em;pointer-events:auto;transform-origin:top left;will-change:transform;display:flex;flex-direction:column}.wordmark>span{display:block;white-space:nowrap;width:max-content}.wordmark>span:nth-child(2){align-self:flex-end;margin-top:.035em}.wordmark .letter{display:inline-block}.is-loading .site-header{opacity:0}.opening{height:165svh;position:relative}.opening-sticky{height:100svh;position:sticky;top:0;overflow:hidden}.opening-kicker{position:absolute;top:31px;left:var(--gutter);right:34%;display:flex;justify-content:space-between;font-size:10px;letter-spacing:.07em;line-height:1.25;opacity:1;transition:opacity .2s}.hero-aperture{position:absolute;inset:53% 27% 13%;overflow:hidden;will-change:inset;transform:translateZ(0);background:#232620}.hero-media,.hero-media>img,.hero-media>video,.hero-media>iframe{position:absolute;width:100%;height:100%;object-fit:cover;border:0}.hero-media>iframe{pointer-events:none;transform:scale(1.03)}.hero-media{transform:scale(1.08);will-change:transform}.hero-shade{position:absolute;inset:0;background:linear-gradient(0deg,rgba(0,0,0,.7),transparent 50%);opacity:0}.hero-film-label{position:absolute;left:6.2vw;bottom:17%;opacity:0;transform:translateY(20px);pointer-events:none}.hero-film-label>span{font-size:10px;letter-spacing:.12em}.hero-film-label p{font-family:Unbounded,Arial,sans-serif;font-size:clamp(44px,6.4vw,100px);line-height:1.15;letter-spacing:-.05em}.hero-play{margin-top:17px;font-size:10px;letter-spacing:.08em;pointer-events:auto}.hero-play span{margin-left:30px}.opening-footer{position:absolute;bottom:32px;left:var(--gutter);right:var(--gutter);display:flex;justify-content:space-between;align-items:end;font-size:10px;line-height:1.4;letter-spacing:.035em}.scroll-cue{position:absolute;left:50%;transform:translateX(-50%);display:flex;gap:25px;align-items:center}.scroll-cue span{font-size:25px;font-weight:400;animation:down-cue 2s ease-in-out infinite}@keyframes down-cue{0%,100%{transform:translateY(-3px)}50%{transform:translateY(3px)}}
.film-section{position:relative;height:740svh;background:var(--ink)}.cinema{position:sticky;top:0;height:100svh;overflow:hidden;background:radial-gradient(ellipse at 30% 90%,#263027 0%,#10110f 65%);transition:background-color 1s}.cinema-top{position:absolute;top:calc(var(--header) + 22px);left:var(--gutter);right:var(--gutter);display:flex;justify-content:space-between;align-items:center;z-index:3}.cinema-top h2,.cinema-top button{font-size:10px;letter-spacing:.09em;text-transform:uppercase;font-weight:400}.cinema-top button{display:flex;gap:25px}.film-caption{position:absolute;z-index:3;left:10.5vw;top:23vh;pointer-events:none;max-width:70vw;transition:opacity .2s,transform .3s}.film-category{font-size:9px;letter-spacing:.1em;display:block;margin-bottom:14px}.film-title{font-family:Unbounded,Arial,sans-serif;font-weight:400;font-size:clamp(52px,8vw,128px);letter-spacing:-.065em;line-height:.9;max-width:790px;text-wrap:balance}.film-track{position:absolute;inset:34% auto auto 24%;display:flex;gap:4vw;will-change:transform;height:45vh;align-items:center}.film-slide{position:relative;flex:0 0 58vw;width:58vw;height:100%;overflow:hidden;border:0;padding:0;text-align:left;background:#20221e;opacity:.35;transition:opacity .5s,filter .5s;filter:saturate(.75);cursor:pointer}.film-slide.active{opacity:1;filter:saturate(1)}.film-slide img,.film-slide video,.film-slide iframe{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border:0}.film-slide iframe{pointer-events:none;width:102%;height:102%;left:-1%;top:-1%}.film-slide:after{content:'';position:absolute;inset:0;background:linear-gradient(120deg,rgba(0,0,0,.22),transparent 60%);pointer-events:none}.slide-play{position:absolute;bottom:24px;right:24px;width:50px;height:50px;border:1px solid rgba(233,229,216,.7);border-radius:50%;display:grid;place-items:center;z-index:2;font-size:10px;transition:background .3s,transform .3s}.film-slide:hover .slide-play{background:var(--cream);color:var(--ink);transform:scale(1.08)}.film-slide:focus-visible{outline-offset:-4px}.cinema-bottom{position:absolute;bottom:7vh;left:var(--gutter);right:var(--gutter);display:flex;align-items:center;justify-content:space-between;gap:24px}.film-client{font-size:10px;letter-spacing:.05em;text-transform:uppercase;max-width:38%}.film-controls{display:flex;gap:25px;align-items:center}.film-controls button{font-size:24px;min-height:40px;min-width:32px}.film-counter{font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap}.film-counter i{font-style:normal;color:#8e9085;margin-left:12px}
.stills-section{position:relative;background:var(--cream);color:var(--ink);padding:110px var(--gutter) 100px}.section-meta{display:flex;justify-content:space-between;font-size:10px;letter-spacing:.06em}.stills-heading{display:flex;justify-content:space-between;align-items:flex-end;margin:70px 8vw 90px 0}.stills-heading h2{font-family:Unbounded,Arial,sans-serif;font-size:clamp(92px,13.5vw,210px);font-weight:400;line-height:.86;letter-spacing:-.07em}.stills-heading em,.about-grid em{font-weight:400;font-style:italic}.stills-heading p{font-size:12px;line-height:1.5;margin-bottom:10px}.photo-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:100px 2.4vw;align-items:start}.photo-card{border:0;padding:0;width:100%;text-align:left;grid-column:span 5;position:relative}.photo-card:nth-child(6n+1){grid-column:2 / span 5}.photo-card:nth-child(6n+2){grid-column:9 / span 4;margin-top:180px}.photo-card:nth-child(6n+3){grid-column:1 / span 6;margin-top:-100px}.photo-card:nth-child(6n+4){grid-column:8 / span 5;margin-top:90px}.photo-card:nth-child(6n+5){grid-column:2 / span 4;margin-top:-80px}.photo-card:nth-child(6n+6){grid-column:8 / span 4;margin-top:80px}.photo-card .photo-frame{display:block;overflow:hidden;background:#d5d1c6}.photo-card img{width:100%;height:auto;transition:transform .9s cubic-bezier(.2,.65,.2,1)}.photo-card:hover img{transform:scale(1.035)}.photo-card figcaption{display:flex;justify-content:space-between;font-size:10px;letter-spacing:.025em;margin-top:16px}.photo-card .photo-number{opacity:.45}.text-link{font-size:10px;letter-spacing:.08em;display:flex;justify-content:space-between;border-bottom:1px solid;padding:16px 0;width:330px;max-width:100%}.all-photographs{margin:110px auto 0}.text-link span{font-size:18px}
.about-section{padding:100px var(--gutter) 0;background:var(--ink)}.about-section .section-meta button{font-size:10px;letter-spacing:.06em}.about-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:8vw;margin:95px 0 120px}.about-grid h2{font-family:Unbounded,Arial,sans-serif;font-size:clamp(80px,11vw,180px);line-height:.9;letter-spacing:-.065em;font-weight:400}.about-copy{max-width:460px;padding-top:10px}.bio{font-size:clamp(20px,2vw,30px);line-height:1.4;letter-spacing:-.02em}.contact-links{display:flex;flex-direction:column;margin-top:45px;gap:20px}.contact-links a{display:flex;justify-content:space-between;font-size:10px;letter-spacing:.06em;border-bottom:1px solid var(--line);padding-bottom:16px}.contact-links a span{font-size:15px}.about-section footer{border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:20px;font-size:9px;letter-spacing:.04em;padding:26px 0 30px}.about-section footer span:last-child{opacity:.5}
.loader{position:fixed;inset:0;background:transparent;z-index:100;color:var(--cream);overflow:hidden;transition:opacity .45s;will-change:opacity}.loader[hidden]{display:none}.loader-top{position:absolute;left:var(--gutter);right:var(--gutter);top:32px;display:flex;justify-content:space-between;font-size:9px;letter-spacing:.08em}.loader-bottom{position:absolute;bottom:30px;left:var(--gutter);right:var(--gutter);display:flex;justify-content:space-between;align-items:end;font-size:10px;letter-spacing:.06em}.loader-bottom button{font-size:9px;letter-spacing:.05em}dialog{border:0;padding:0;color:var(--cream);background:var(--ink);max-width:none;max-height:none;width:100vw;height:100dvh;inset:0;margin:0}dialog::backdrop{background:rgba(0,0,0,.8)}dialog[open]{display:flex;flex-direction:column}.dialog-bar{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:26px var(--gutter);border-bottom:1px solid var(--line);font-size:11px}.dialog-bar h2{font-size:14px;font-weight:400}.dialog-bar button{font-size:10px;letter-spacing:.05em;min-height:32px}.player-body{flex:1;min-height:0;position:relative;display:grid;place-items:center;margin:25px 5vw}.player-body iframe,.player-body video{width:100%;height:100%;border:0}.original-link{font-size:10px;letter-spacing:.06em;text-align:center;padding:20px;margin-top:auto}.original-link:hover{text-decoration:underline}.player-poster{height:100%;max-height:65vh;object-fit:contain}.player-fallback{display:grid;gap:25px;justify-items:center}.player-fallback a{border-bottom:1px solid;padding:12px 0}#photo-viewer{background:var(--cream);color:var(--ink)}#photo-viewer .dialog-bar{border-color:#bbb8ae}#photo-viewer>img{margin:auto;max-height:calc(100dvh - 170px);max-width:90vw;object-fit:contain}.photo-controls{display:flex;justify-content:center;align-items:center;gap:50px;padding:20px;font-size:10px}.photo-controls button{font-size:25px;min-width:40px}.index-list{overflow:auto;padding:10px var(--gutter) 40px}.index-entry{display:grid;grid-template-columns:40px 100px 1fr auto;align-items:center;gap:25px;width:100%;text-align:left;border-bottom:1px solid var(--line);padding:18px 0}.index-entry img{width:100px;height:60px;object-fit:cover}.index-entry .index-title{font-family:Unbounded,Arial,sans-serif;font-size:clamp(24px,4vw,48px);letter-spacing:-.045em}.index-entry .index-client{font-size:9px;letter-spacing:.04em;color:var(--muted);text-align:right}.index-entry:hover .index-title{font-style:italic}.noscript{position:fixed;bottom:0;z-index:500;background:var(--cream);color:var(--ink);padding:20px;width:100%}
@media(min-width:1700px){.film-track{height:49vh;top:30%}.film-title{max-width:1000px}.wordmark{font-size:14vw}}
@media(max-width:760px){:root{--gutter:6vw;--header:78px}.site-header nav{top:24px;gap:20px}.site-header nav a{font-size:12px}.wordmark{top:18vh;width:88vw;font-size:18vw;line-height:.94;letter-spacing:-.075em}.wordmark>span:nth-child(2){margin-top:0}.opening-kicker{top:24px;font-size:8px;right:50%}.opening{height:148svh}.hero-aperture{inset:47% 14% 20%}.opening-footer{bottom:25px;font-size:8px}.scroll-cue{left:auto;right:0;transform:none;gap:14px}.hero-film-label{left:9vw;bottom:22%}.hero-film-label p{font-size:12vw;max-width:80vw}.hero-film-label>span{font-size:8px}.hero-play{font-size:9px}.cinema-top{top:100px}.cinema-top h2,.cinema-top button{font-size:9px}.film-caption{top:25vh;left:6vw;max-width:88vw}.film-category{font-size:8px;margin-bottom:12px}.film-title{font-size:15vw;max-width:90vw}.film-track{top:38%;left:12%;gap:6vw;height:33vh}.film-slide{width:82vw;flex-basis:82vw}.film-slide .slide-play{width:38px;height:38px;bottom:15px;right:15px}.cinema-bottom{bottom:11vh;flex-wrap:wrap;row-gap:30px}.film-client{font-size:8px;max-width:52%}.film-controls{gap:14px}.film-counter{font-size:10px}.film-counter i{margin-left:5px}.film-controls button{font-size:20px}.stills-section{padding-top:100px;padding-bottom:70px}.section-meta{font-size:8px}.stills-heading{margin:55px 0 60px}.stills-heading h2{font-size:22vw}.stills-heading p{font-size:10px}.photo-grid{grid-template-columns:repeat(6,1fr);gap:48px 18px}.photo-card:nth-child(6n+1){grid-column:1 / span 4}.photo-card:nth-child(6n+2){grid-column:4 / span 3;margin-top:0}.photo-card:nth-child(6n+3){grid-column:1 / span 5;margin-top:0}.photo-card:nth-child(6n+4){grid-column:3 / span 4;margin-top:0}.photo-card:nth-child(6n+5){grid-column:1 / span 4;margin-top:0}.photo-card:nth-child(6n+6){grid-column:3 / span 4;margin-top:0}.photo-card figcaption{font-size:8px;margin-top:10px}.all-photographs{margin-top:70px;font-size:9px;width:100%}.about-section{padding-top:80px}.about-section .section-meta button{font-size:8px}.about-grid{grid-template-columns:1fr;gap:45px;margin:65px 0 80px}.about-grid h2{font-size:23vw}.about-copy{max-width:none}.bio{font-size:21px;max-width:440px}.about-section footer{font-size:8px;align-items:start;flex-wrap:wrap;row-gap:22px}.about-section footer span:last-child{display:none}.loader-top,.loader-bottom{font-size:8px}.loader-bottom button{font-size:8px}.index-entry{grid-template-columns:24px 64px 1fr;gap:16px}.index-entry img{width:64px;height:45px}.index-entry .index-client{display:none}.index-entry .index-title{font-size:25px}.dialog-bar{font-size:10px}.player-body{margin:20px 0}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.loader{display:none!important}.hero-media{transform:none!important}.photo-card img{transform:none!important}}

/* Heavy extended typography: the reference's graphic weight. */
.wordmark{font-weight:900;font-size:13.2vw;line-height:.92;letter-spacing:-.065em}
.film-title{font-weight:800;text-transform:uppercase;font-size:7.3vw;line-height:.95;letter-spacing:-.06em;max-width:80vw}
.hero-film-label p{font-family:Unbounded,Arial,sans-serif;font-weight:800;text-transform:uppercase;font-size:5.7vw;letter-spacing:-.06em;max-width:76vw;line-height:1}
.stills-heading h2{font-weight:800;font-size:15vw;line-height:.95;letter-spacing:-.07em;text-transform:uppercase}
.about-grid h2{font-weight:800;font-size:8vw;line-height:1;letter-spacing:-.06em;text-transform:uppercase}
.stills-heading em,.about-grid em{font-style:normal;font-weight:inherit}


.index-entry .index-title{font-weight:700;text-transform:uppercase;font-size:clamp(20px,3vw,40px)}
.index-entry:hover .index-title{font-style:normal;opacity:.65}
.photo-categories{display:flex;gap:25px;font-size:10px;margin-top:28px}
.photo-categories a{border-bottom:1px solid;padding-bottom:5px}
@media(max-width:760px){.wordmark{font-size:15.6vw;top:20vh;line-height:.98}.hero-film-label p{font-size:10vw;max-width:82vw}.film-title{font-size:12vw;max-width:88vw}.stills-heading h2{font-size:19vw}.about-grid h2{font-size:15vw}.photo-categories{gap:20px;font-size:9px}.stills-heading{display:block}.stills-heading p{margin-top:30px}.index-entry .index-title{font-size:18px}}

/* Opening filmstrip: spread, gather, then open the first film. */
.wordmark{font-weight:550;font-size:11.8vw;letter-spacing:-.065em;line-height:.98;top:15vh}
.wordmark>span:nth-child(2){margin-top:.03em}
.film-title,.hero-film-label p{font-weight:650;letter-spacing:-.055em}
.about-grid h2{font-weight:550}
.opening{height:180svh}
.hero-aperture{inset:auto;z-index:9;will-change:left,top,width,height}
.reel-card{position:absolute;overflow:hidden;background:#232620;will-change:left,top,width,height;pointer-events:none}
.reel-card img,.reel-card video{width:100%;height:100%;object-fit:cover}
.hero-film-label{z-index:12;bottom:18%}
.opening-footer{z-index:13}
@media(max-width:760px){.wordmark{font-size:15.1vw;top:23vh;font-weight:550}.opening{height:180svh}.hero-film-label{bottom:28%}.hero-film-label p{font-size:10vw}}

/* Widescreen frames and titles below the image. */
.cinema{--film-width:min(62vw,90vh);--film-top:14vh}
.film-track{left:calc((100vw - var(--film-width))/2);top:var(--film-top);height:calc(var(--film-width)*.5625);gap:4vw}
.film-slide{width:var(--film-width);flex-basis:var(--film-width);border-radius:clamp(14px,2vw,30px);aspect-ratio:16/9}
.film-caption{top:calc(var(--film-top) + var(--film-width)*.5625 + 3.5vh);left:4vw;width:92vw;max-width:none;text-align:center}
.film-category{font-size:9px;margin-bottom:15px}
.film-title{font-size:5.6vw;max-width:100%;line-height:1.05}
.film-title.long-title{font-size:4.6vw}
.cinema-top{top:88px}
.cinema-bottom{bottom:3.5vh}
.hero-film-label{left:5vw;width:90vw;bottom:auto;text-align:center}
.hero-film-label p{font-size:4.9vw;max-width:none}
.hero-film-label>span{display:none}
.hero-play{margin-top:20px}
.hero-media{transform:none!important}
.hero-aperture,.reel-card{aspect-ratio:16/9;border-radius:8px}
.player-body iframe,.player-body video{width:min(90vw,calc((100dvh - 160px)*1.777778));height:auto;aspect-ratio:16/9;max-height:100%;border-radius:16px;object-fit:contain;background:#000}
.index-entry img{aspect-ratio:16/9;height:auto;border-radius:5px}
@media(max-width:760px){
 .cinema{--film-width:88vw;--film-top:25vh}
 .film-track{gap:6vw}
 .film-caption{top:calc(var(--film-top) + var(--film-width)*.5625 + 32px);left:6vw;width:88vw}
 .film-title{font-size:9vw}.film-title.long-title{font-size:7.8vw}
 .film-category{font-size:8px;margin-bottom:15px}
 .cinema-top{top:100px}.cinema-bottom{bottom:12vh}
 .hero-film-label p{font-size:9vw}.hero-play{margin-top:18px}
 .player-body iframe,.player-body video{width:96vw;border-radius:10px}
}

.stills-heading h2{font-weight:650;letter-spacing:-.045em}
.photo-card figcaption>span:first-child{font-size:9px}

/* One pinned stage: the opening card becomes the first film in the same track. */
.opening.film-section{height:870svh}
.film-anchor{position:absolute;left:0;width:1px;height:1px;pointer-events:none}
.opening-sticky.cinema{background:var(--ink)}
.cinema:before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 30% 100%,var(--scene-tint,#263027),transparent 70%);opacity:var(--scene-tint-opacity,0);pointer-events:none;transition:background .5s;mask-image:linear-gradient(#000 55%,transparent);-webkit-mask-image:linear-gradient(#000 55%,transparent)}
.film-track{position:absolute;inset:0;width:100%;height:100%;display:block;transform:none!important;pointer-events:none}
.film-slide{position:absolute;flex:none;will-change:left,top,width,height,scale;transform-origin:50% 50%;transition:filter .5s;filter:none}
.film-caption{z-index:25;top:auto}
.film-title{font-size:4.9vw}.film-title.long-title{font-size:4.3vw}
.cinema-top,.cinema-bottom{z-index:25}
.cinema-top{justify-content:flex-end}
.film-ui{opacity:0}
.opening-footer{z-index:25}

@media(max-width:760px){.film-title{font-size:9vw}.film-title.long-title{font-size:7.8vw}.film-caption{width:88vw;left:6vw}.opening.film-section{height:870svh}}

/* Still film images spin in a ring, then unfurl into the opening strip. */
/* A return visit never flashes the server-rendered ring while scripts load.
   Keep the landing guarded by is-loading until its layout is measured. */
html.intro-visited .loader{display:none!important}
html{scrollbar-gutter:stable}
.intro-backdrop{position:absolute;inset:0;z-index:0;background:var(--ink)}
.intro-orbit{position:absolute;inset:0;z-index:1;pointer-events:none;--intro-radius:min(29vw,390px);--intro-vertical:calc(var(--intro-radius)*.52)}
.intro-card{position:absolute;left:50%;top:47%;width:min(19vw,280px);aspect-ratio:16/9;overflow:hidden;border-radius:8px;background:#22241f;transform-origin:50% 50%;box-shadow:0 10px 40px #0003;transform:translate(-50%,-50%) translate(var(--intro-x),var(--intro-y)) scale(.94)}
/* The first ring is real HTML with ordinary image files. It can paint before
   deferred animation scripts execute; the script reuses these exact elements. */
.intro-card:nth-child(1){--intro-x:calc(var(--intro-radius)*-.85264);--intro-y:calc(var(--intro-vertical)*-.5225)}
.intro-card:nth-child(2){--intro-x:calc(var(--intro-radius)*-.94088);--intro-y:calc(var(--intro-vertical)*.33874)}
.intro-card:nth-child(3){--intro-x:calc(var(--intro-radius)*-.32062);--intro-y:calc(var(--intro-vertical)*.94721)}
.intro-card:nth-child(4){--intro-x:calc(var(--intro-radius)*.54107);--intro-y:calc(var(--intro-vertical)*.84098)}
.intro-card:nth-child(5){--intro-x:calc(var(--intro-radius)*.99533);--intro-y:calc(var(--intro-vertical)*.09655)}
.intro-card:nth-child(6){--intro-x:calc(var(--intro-radius)*.70008);--intro-y:calc(var(--intro-vertical)*-.71407)}
.intro-card:nth-child(7){--intro-x:calc(var(--intro-radius)*-.12235);--intro-y:calc(var(--intro-vertical)*-.99249)}
.intro-card img,.intro-card video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.film-slide img,.film-slide video,.intro-card img,.intro-card video{transform:scale(var(--preview-scale,1));transform-origin:center}
/* Keep Safari's video layer inside the rounded aperture at fractional sizes.
   A one-pixel bleed covers the poster beneath without changing the frame. */
.film-slide,.intro-fanning .intro-card{-webkit-mask-image:linear-gradient(#fff,#fff);mask-image:linear-gradient(#fff,#fff)}
/* Only a revealed trial video needs Safari's clipping layer. Still-only cards
   retain the ordinary image paint path that fixed the first-load blank ring. */
.intro-motion-trial .intro-card:has(>video[data-preview-visible="true"]){-webkit-mask-image:linear-gradient(#fff,#fff);mask-image:linear-gradient(#fff,#fff)}
.film-slide video,.intro-card video{inset:-1px;width:calc(100% + 2px);height:calc(100% + 2px);max-width:none}
/* The opening's small, transformed frames must not retain a bright poster
   under the anti-aliased edge of a playing video. Restore it on media failure. */
.intro-card img,.film-slide img{visibility:inherit}
:is(.intro-card,.film-slide):has(>video[data-preview-visible="true"])>img{visibility:hidden;transition:visibility 0s linear 180ms}
.intro-card img{inset:-1px;width:calc(100% + 2px);height:calc(100% + 2px);max-width:none}
.intro-card:after{content:'';position:absolute;inset:0;background:linear-gradient(120deg,rgba(0,0,0,.22),transparent 60%);pointer-events:none}
.loader-chrome{z-index:50}
.loader-bottom button{min-height:36px}
.is-loading .film-track,.is-loading .opening-footer,.is-loading .opening-kicker{visibility:hidden}
/* Orbit cards are separate from this destination strip. Keep the strip fully
   transparent until the same live players are handed back in finishIntro. */
.is-loading .film-track{opacity:0;pointer-events:none}
.is-loading.intro-reveal .film-track,.is-loading.intro-fanning .film-track{visibility:visible}
.is-loading.intro-fanning .film-slide{visibility:hidden}
@media(max-width:760px){.loader-top{top:25px}.loader-bottom{bottom:25px}.intro-card{border-radius:6px}}
@media(max-width:760px){.intro-orbit{--intro-radius:28vw;--intro-vertical:calc(var(--intro-radius)*.88)}.intro-card{width:25vw;aspect-ratio:3/4}}
.loader[data-phase="error"] .load-status{position:absolute;left:10%;top:58%;width:80%;height:auto;padding:0;margin:0;overflow:visible;clip:auto;white-space:normal;text-align:center;font-size:14px;line-height:1.5}
.loader[data-phase="error"] .intro-progress{display:none}
.loader[data-phase="error"] .loader-bottom{flex-wrap:wrap;align-items:center}

.intro-progress{position:absolute;left:50%;top:47%;transform:translate(-50%,-50%);display:flex;align-items:baseline;gap:6px;font-variant-numeric:tabular-nums}
.load-count{font:500 clamp(30px,3.6vw,54px)/1 Unbounded,Arial,sans-serif;letter-spacing:-.07em}
.load-unit{font:400 11px/1 DM,Arial,sans-serif;opacity:.65}
@media(max-width:760px){.intro-progress{gap:4px}.load-count{font-size:25px}.load-unit{font-size:9px}}

/* Mobile name and opening film strip. */
@media(max-width:760px){
 body:not(.press-page) .wordmark{left:6vw;top:23.5svh;width:88vw;font-size:16vw;font-weight:550;line-height:1.02;letter-spacing:-.065em}
 body:not(.press-page) .wordmark>span:nth-child(2){margin-top:.045em}
 body:not(.press-page) .site-header nav{top:26px;right:6vw;gap:16px}
 body:not(.press-page) .site-header nav a{font-size:11px;min-height:28px;align-items:center}
}

/* The owner's Integral DemiBold wordmark, restored after the Heavy comparison. */
.wordmark{font-family:Integral,Arial,sans-serif;font-weight:600;letter-spacing:-.035em;font-size:12.7vw;line-height:1.02}
/* Outline exploration: retain Integral's letterforms and scale the stroke with the name. */
@supports (-webkit-text-stroke:1px currentColor){.wordmark{-webkit-text-fill-color:transparent;-webkit-text-stroke:.045em currentColor}}
.wordmark .letter{display:inline}
@media(max-width:760px){
 body:not(.press-page) .wordmark{font-weight:600;font-size:17.2vw;letter-spacing:-.035em;line-height:1.08}
 body:has(.opening.film-section) .wordmark{line-height:.94}
 body:has(.opening.film-section) .wordmark>span{height:auto}
 body:has(.opening.film-section) .wordmark>span:nth-child(2){margin-top:.02em}
}

/* The project title opens the same film as its preview. */
.film-title-trigger{display:block;width:100%;min-height:44px;pointer-events:auto;font:inherit;letter-spacing:inherit;text-transform:inherit;text-align:inherit;text-wrap:inherit}
.film-explore-hint{font:italic 500 17px/1.2 'Cormorant Garamond',Georgia,serif;white-space:nowrap;pointer-events:none}
.desktop-scroll-hint{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}
.mobile-scroll-hint{display:none}
/* Show the settled gallery hints only after the previews reach their film frame. */
.cinema-bottom[inert] .film-explore-hint{visibility:hidden}
.scroll-cue{width:76px;height:44px;min-width:44px;justify-content:center}
/* Desktop uses the same serif scroll hint as the gallery; mobile keeps Explore and its line. */
.scroll-cue .cue-explore{position:absolute;bottom:0;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:14px;white-space:nowrap;opacity:0;animation:none}
.scroll-cue .cue-label{display:block;font:italic 500 17px/1.2 'Cormorant Garamond',Georgia,serif;letter-spacing:0;-webkit-text-fill-color:currentColor;animation:none}
.scroll-cue .cue-label-mobile{display:none}
/* The line only shrinks inside its own height, so it cannot grow into the label. */
.scroll-cue .cue-line{display:none;flex:none;width:2px;height:40px;background:currentColor;transform-origin:center bottom;animation:opening-cue-line 2s ease-in-out infinite}
/* finishIntro removes is-loading only after every unfurl card has arrived. */
body:not(.is-loading) .scroll-cue .cue-explore{animation:opening-cue-arrive .6s ease-out .15s both}
@keyframes opening-cue-line{0%,100%{transform:scaleY(.75)}50%{transform:scaleY(1)}}
@keyframes opening-cue-arrive{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){body:not(.is-loading) .scroll-cue .cue-explore{animation:none;opacity:1}.scroll-cue .cue-line{animation:none;transform:none}}
/* A desktop wheel notch can cross the scroll fade in one frame. Give that
   opacity change a short dissolve; retain the approved mobile scroll response. */
@media(prefers-reduced-motion:no-preference){
 @media(min-width:761px) and (min-height:501px),(min-width:1001px){
  .opening-footer{transition:opacity .45s ease-out}
 }
}
@media(max-width:760px), (max-width:1000px) and (max-height:500px){
 .desktop-scroll-hint{display:none}
 /* Keep the approved name/thumbnail geometry: the whole cue fits inside the
    existing 44px footer instead of extending upward over the thumbnails. */
 .scroll-cue .cue-explore{position:static;transform:none;gap:6px}
 .scroll-cue .cue-label{font-size:14px;line-height:1.2}
 .scroll-cue .cue-label-desktop{display:none}
 .scroll-cue .cue-label-mobile{display:block}
 .scroll-cue .cue-line{display:block;height:clamp(16px,3svh,20px)}
}

/* Responsive composition: keep film, caption and controls inside the safe frame. */
html{-webkit-text-size-adjust:100%}
.film-controls button,.photo-controls button{min-width:44px;min-height:44px;touch-action:manipulation}
#open-index{min-height:44px;align-items:center;padding-inline:8px;touch-action:manipulation}
.loader-bottom button,.scroll-cue{min-height:44px;align-items:center}
.loader-bottom{bottom:max(20px,env(safe-area-inset-bottom));gap:12px}
.dialog-bar{flex-shrink:0;padding-top:max(16px,env(safe-area-inset-top));padding-inline:max(var(--gutter),env(safe-area-inset-left)) max(var(--gutter),env(safe-area-inset-right))}
.dialog-bar button{min-height:44px;min-width:60px;flex:none}
.dialog-bar h2,.dialog-bar>span{min-width:0;overflow-wrap:anywhere}
.index-list{min-height:0;overscroll-behavior:contain;padding-bottom:max(32px,env(safe-area-inset-bottom))}
.index-entry{grid-template-columns:40px 100px minmax(0,1fr) auto}
.index-title{overflow-wrap:anywhere}
.photo-controls{flex-shrink:0;padding-bottom:max(20px,env(safe-area-inset-bottom))}
#photo-viewer>img{min-height:0;flex:1;max-height:calc(100dvh - 180px - env(safe-area-inset-top) - env(safe-area-inset-bottom));width:90%;object-fit:contain}
.contact-links a,.about-section footer a,.photo-categories a{min-height:44px;align-items:center}
.about-section footer{align-items:center;padding-bottom:max(30px,env(safe-area-inset-bottom))}
@media(hover:none){.photo-card:hover img{transform:none}}
@media(max-width:760px){
 :root{--gutter:max(6vw,env(safe-area-inset-left),env(safe-area-inset-right))}
 body:has(.opening.film-section) .site-header .corner-menu-trigger{top:max(clamp(40px,7svh,60px),calc(env(safe-area-inset-top) + 8px))}
 .cinema-top{top:max(clamp(40px,7svh,60px),calc(env(safe-area-inset-top) + 8px));left:auto;right:max(calc(6vw + 52px),calc(env(safe-area-inset-right) + 66px))}
 .cinema-top .film-strip-label{display:none}
 .cinema-bottom{bottom:max(40px,calc(env(safe-area-inset-bottom) + 22px));gap:6px;flex-wrap:nowrap;flex-direction:column;text-align:center}
 .film-client{width:100%;max-width:280px;height:24px;display:flex;align-items:center;justify-content:center;line-height:12px}
 .film-controls{gap:22px;flex:none;justify-content:center}
 .film-counter{font-size:12px;min-width:54px}
 .mobile-scroll-hint{display:block;font:italic 500 17px/1.2 'Cormorant Garamond',Georgia,serif}
 .opening-footer{bottom:max(34px,calc(env(safe-area-inset-bottom) + 18px));display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center}

 .opening-footer .scroll-cue{position:relative;inset:auto;transform:none;order:1;justify-content:center;font:italic 500 17px/1.2 'Cormorant Garamond',Georgia,serif;gap:12px;text-transform:none}
 .opening-kicker{top:max(28px,calc(env(safe-area-inset-top) + 8px))}
 .index-entry{grid-template-columns:20px 56px minmax(0,1fr);gap:12px}
 .index-entry img{width:56px}
 .index-entry .index-title{font-size:clamp(14px,4.4vw,22px);line-height:1.2}
 .photo-card figcaption{gap:8px;line-height:1.5}
 .photo-card figcaption>span:first-child{font-size:8px}
 .photo-number{flex:none}
 .section-meta{gap:20px;line-height:1.5}
 .section-meta>span:last-child{text-align:right}
 /* Center the label against the button's 44px touch target, not its bottom edge. */
 .loader-bottom{left:var(--gutter);right:var(--gutter);align-items:center}
 .loader-bottom .load-label,.loader-bottom button{font-size:8px;line-height:1.4;white-space:nowrap}
}
/* A short, wide screen needs its own composition, rather than a squeezed portrait. */
@media(max-width:760px) and (max-height:560px) and (orientation:portrait){
 body:has(.opening.film-section) .site-header .corner-menu-trigger,.cinema-top{top:max(16px,env(safe-area-inset-top))}
 .cinema-bottom{bottom:max(16px,env(safe-area-inset-bottom));gap:3px}
 .film-title{font-size:7.8vw}.film-title.long-title{font-size:6.7vw}
 :root .opening-sticky .film-caption .film-category{font-size:18px;margin-bottom:6px}
 .opening-sticky .film-awards{height:32px;margin-top:3px}
 .opening-sticky .film-awards .award-badge{min-height:32px;padding-block:0}
 .mobile-scroll-hint{font-size:15px}
}
@media(max-height:500px) and (orientation:landscape){
 body:has(.opening.film-section) .site-header .corner-menu-trigger{top:max(26px,calc(env(safe-area-inset-top) + 8px))}
 .cinema-top{top:66px;right:max(var(--gutter),calc(env(safe-area-inset-right) + 14px))}
 .cinema-bottom{bottom:max(12px,env(safe-area-inset-bottom));flex-wrap:nowrap}
 .film-caption{left:12%;width:76%}
 .film-title,.film-title.long-title{font-size:clamp(18px,4.8svh,27px);line-height:1.05}
 .film-title-trigger{min-height:44px}
 .film-category{font-size:9px;margin-bottom:5px}
 .film-client{max-width:33%;font-size:8px}
 .film-controls{gap:12px}
 body:not(.press-page) .wordmark{top:19svh;font-size:clamp(32px,12svh,65px);width:66%;left:var(--gutter);line-height:1.02}
 body:has(.opening.film-section) .wordmark{line-height:1.02}
 body:has(.opening.film-section) .wordmark>span{height:auto}
 .opening-kicker{font-size:8px;top:24px}
 .opening-footer{bottom:18px}
 .loader-bottom{bottom:max(12px,env(safe-area-inset-bottom))}
}
@media(max-height:500px) and (orientation:landscape){
 .cinema-bottom{flex-direction:row;align-items:center}
 .film-client{width:auto;height:auto;justify-content:flex-start;text-align:left}
 .mobile-scroll-hint{display:none}
 .opening-footer{flex-direction:row;align-items:center;justify-content:center;gap:20px}
 .opening-footer .scroll-cue{position:relative;inset:auto;transform:none;order:1}

}
@media(max-width:1000px) and (max-height:500px) and (orientation:landscape){
 .mobile-scroll-hint{display:block;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}
}

/* Keep the mobile film navigation low when Safari retracts its browser bars.
   The opening ring and name retain their existing small-viewport composition. */
.opening-sticky.cinema.mobile-film-stack.is-film-settled{height:100dvh}
.opening-sticky.cinema.mobile-film-stack .cinema-bottom{
 bottom:max(clamp(16px,3dvh,28px),calc(env(safe-area-inset-bottom) + 12px));
 justify-content:flex-start;
}
.opening-sticky.cinema.mobile-film-stack .film-controls{margin-top:auto}
.opening-sticky.cinema.mobile-film-stack .mobile-scroll-hint{margin-top:6px}
.opening-sticky.cinema.mobile-film-stack .film-caption{transition:opacity .2s,transform .3s,top 320ms cubic-bezier(.22,1,.36,1)}
@media(prefers-reduced-motion:reduce){
 .opening-sticky.cinema.mobile-film-stack .film-caption{transition:none}
}

/* A small social mark with a full keyboard and touch target on every footer. */
.footer-instagram-nav{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.footer-instagram-nav>a{display:inline-flex;align-items:center;min-height:44px}
a.footer-instagram{display:inline-flex;align-items:center;justify-content:center;flex:0 0 44px;width:44px;height:44px;min-width:44px;min-height:44px;padding:12px;margin:0;border:0;color:var(--cream,#e9e5d8);line-height:1;text-decoration:none;touch-action:manipulation}
.footer-instagram svg{display:block;flex:none;width:20px;height:20px;max-width:none}
a.footer-instagram:focus-visible{outline:2px solid currentColor;outline-offset:3px}
@media(hover:hover){a.footer-instagram:hover{opacity:.7}}


/* Source: /menu.css */
/* A quiet corner control opens the main navigation. */
:is(.site-header,.supporting-header) .corner-menu-trigger{position:absolute;top:max(20px,calc(env(safe-area-inset-top) + 8px));right:max(var(--gutter),calc(env(safe-area-inset-right) + 16px));display:flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;pointer-events:auto;font-size:11px;letter-spacing:.08em;will-change:transform;touch-action:manipulation}
.corner-menu-strokes{display:none;flex-direction:column;gap:6px;width:22px}
.corner-menu-strokes:before,.corner-menu-strokes:after{content:'';height:1px;width:100%;background:currentColor;transition:transform .25s}
.corner-menu-trigger:hover .corner-menu-strokes:before{transform:translateX(-3px)}
.corner-menu-trigger:hover .corner-menu-strokes:after{transform:translateX(3px)}
:is(.site-header,.supporting-header) [data-menu-navigation][hidden]{display:none}
body.corner-menu-open{overflow:hidden}
dialog.corner-menu{position:fixed;inset:0;width:100%;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;overflow:hidden;color:var(--cream);background:transparent}
dialog.corner-menu[open]{display:flex;align-items:flex-end;flex-direction:column}
dialog.corner-menu::backdrop{background:#050604a8;backdrop-filter:blur(7px)}
.corner-menu-panel{position:relative;flex:none;width:min(58vw,780px);height:100%;padding:max(clamp(100px,18svh,180px),calc(env(safe-area-inset-top) + 80px)) max(clamp(42px,6vw,110px),calc(env(safe-area-inset-right) + 24px)) max(clamp(100px,18svh,180px),calc(env(safe-area-inset-bottom) + 24px));display:flex;flex-direction:column;align-items:stretch;overflow-y:auto;overscroll-behavior:contain;background:var(--ink);border-left:1px solid var(--line);animation:corner-menu-arrive .5s cubic-bezier(.22,1,.36,1) both}
.corner-menu-close{position:absolute;right:max(var(--gutter),calc(env(safe-area-inset-right) + 16px));top:max(20px,calc(env(safe-area-inset-top) + 8px));min-width:44px;min-height:44px;display:flex;align-items:center;gap:17px;font-size:11px;letter-spacing:.08em;touch-action:manipulation}
.corner-menu-cross{position:relative;width:20px;height:20px}
.corner-menu-cross:before,.corner-menu-cross:after{content:'';position:absolute;left:0;top:9px;width:20px;height:1px;background:currentColor;transform:rotate(45deg)}
.corner-menu-cross:after{transform:rotate(-45deg)}
.corner-menu [data-menu-navigation]{width:100%;margin-block:auto;display:flex;flex-direction:column;align-items:flex-start;gap:clamp(18px,4svh,40px)}
/* Negative tracking needs extra paint room for the final glyph in the rainbow text. */
.corner-menu [data-menu-navigation] a{display:flex;align-items:center;min-height:44px;max-width:100%;padding-inline-end:.14em;font:400 clamp(44px,6.3vw,90px)/1.15 Unbounded,Arial,sans-serif;letter-spacing:-.065em;overflow-wrap:anywhere;transition:opacity .2s,transform .3s;touch-action:manipulation}
.corner-menu [data-menu-navigation] a:hover{transform:translateX(8px)}
.corner-menu [data-menu-navigation] a[aria-current=page]{opacity:.48}
@keyframes corner-menu-arrive{from{opacity:0;transform:translateX(34px)}to{opacity:1;transform:translateX(0)}}
@keyframes corner-menu-mobile-arrive{from{transform:translate3d(100%,0,0)}to{transform:translate3d(0,0,0)}}
@keyframes corner-menu-mobile-leave{from{transform:var(--menu-leave-from,translate3d(0,0,0))}to{transform:translate3d(100%,0,0)}}
@media(max-width:760px),(max-width:1000px) and (max-height:500px) and (orientation:landscape){
 /* hidden is still a scroll container: showModal's automatic focus can pan it
    to the offscreen CLOSE button. clip prevents that invisible horizontal scroll.
    The panel itself remains vertically scrollable for short screens. */
 dialog.corner-menu{overflow:clip}
 :is(.site-header,.supporting-header) .corner-menu-trigger{top:max(26px,calc(env(safe-area-inset-top) + 8px));right:max(24px,calc(env(safe-area-inset-right) + 14px));width:44px;justify-content:center}
 .corner-menu-label{display:none}
 .corner-menu-strokes{display:flex}
 .corner-menu-panel{width:100%;padding:max(100px,calc(env(safe-area-inset-top) + 80px)) max(9vw,calc(env(safe-area-inset-right) + 24px)) max(100px,calc(env(safe-area-inset-bottom) + 24px)) max(9vw,calc(env(safe-area-inset-left) + 24px));border-left:0;animation:corner-menu-mobile-arrive .8s cubic-bezier(.4,0,.2,1) both}
 .corner-menu.is-closing .corner-menu-panel{animation:corner-menu-mobile-leave .3s cubic-bezier(.4,0,.6,1) both}
 .corner-menu-close{top:max(26px,calc(env(safe-area-inset-top) + 8px));right:max(34px,calc(env(safe-area-inset-right) + 24px));font-size:10px;gap:12px}
 /* menu.js fades each link and the close control directly after showModal().
    Keep the static state readable if motion is unavailable or disabled. */
 .corner-menu [data-menu-navigation]{gap:32px}
 .corner-menu [data-menu-navigation] a{font-size:clamp(40px,13vw,76px);animation:none;transition:none}
 .corner-menu [data-menu-navigation] a:hover{transform:none}
}
@media(max-height:600px){
 .corner-menu-panel{padding-top:max(82px,calc(env(safe-area-inset-top) + 66px));padding-bottom:max(24px,calc(env(safe-area-inset-bottom) + 16px))}
 .corner-menu [data-menu-navigation]{gap:clamp(8px,2svh,14px)}
 .corner-menu [data-menu-navigation] a{font-size:clamp(32px,8svh,48px)}
}
@media(prefers-reduced-motion:reduce){.corner-menu-panel,.corner-menu.is-closing .corner-menu-panel,.corner-menu [data-menu-navigation],.corner-menu [data-menu-navigation] a{animation:none}.corner-menu [data-menu-navigation] a,.corner-menu-strokes:before,.corner-menu-strokes:after{transition:none}}

/* Supporting pages keep their header in document flow, using the same menu control. */
.supporting-header .corner-menu-trigger{position:static;inset:auto;transform:none;flex:none}


/* Source: /interaction.css */
/* A moving spectrum lives in the lettering, never in the image or hit area. */
@property --link-shimmer { syntax:"<percentage>"; inherits:true; initial-value:0%; }
:where(a[href],button,.film-info>summary,.film-up-next>summary){--link-shimmer:0%;--shimmer-animation:none;--shimmer-word-animation:none}
@media(hover:hover){
 :where(a[href],button:not(:disabled),.film-info>summary,.film-up-next>summary):hover{--link-shimmer:100%;--shimmer-animation:link-spectrum 4s linear infinite;--shimmer-word-animation:word-spectrum 4s linear infinite}
}
/* Menu links stay on the normal text paint path while the drawer moves.
   Do not set animation here: menu.css owns the mobile link reveal. */
.corner-menu [data-menu-navigation] a{background-image:none;-webkit-text-fill-color:currentColor}

@supports (background-clip:text) and (color:color-mix(in srgb,white,black)){
 :is(.film-title-trigger,.corner-menu-label,
 .corner-menu-close>span:first-child,.project-word-inner,.stills-page .project-title,.stills-index-link .project-title,
 .stills-filters button,.index-entry .index-title,[id="open-index"],
 .contact-links a:not([data-closing-reveal]),.about-section footer a:not([data-closing-reveal]),
 .closing-section a[data-closing-reveal]:not(.footer-instagram)>.closing-reveal-inner,.press-entry h2,.press-preview-meta a,
 .press-contact,.back-films,.award-result,.award-name,.award-year,
 .close-player>span,.close-index,.original-link,.fp-next-title,.fp-next-kicker,
 .sg-back>span,.sg-close>span,.sg-next-title,.sg-next-label,
 .stills-page-header a,.stills-page-footer a,.stills-page-next,.stills-page-next em,
 .stills-chapter-cue,[id="skip-intro"],[id="retry-loading"],
 .fp-play-label,.film-controls button,.sg-controls button,.project-index-label,.pindex-title,.pindex-close,
 .film-list-card h2,.film-list-card .film-list-client,.film-list-card .film-list-type,
 .film-gallery-index a,.film-gallery-scroll>span:first-child,.film-preview-toggle,
 .film-back,.film-info>summary>:first-child,.film-info-credits a,.film-source-link a,
 .film-document .feature-synopsis a,.film-page-header nav a,.film-page-footer a:not(.footer-instagram),
 .film-up-next-summary-label,.film-up-next-card-title,.film-gallery-open-index>span:last-child,
 .film-gallery-picker-title,.film-gallery-picker-client,[data-film-gallery-index-close]>span){
  background-image:linear-gradient(90deg,
   color-mix(in srgb,currentColor,var(--shimmer-color-1,#9081fa) var(--link-shimmer)) 0%,
   color-mix(in srgb,currentColor,var(--shimmer-color-2,#1afffe) var(--link-shimmer)) 20%,
   color-mix(in srgb,currentColor,var(--shimmer-color-3,#eddd1b) var(--link-shimmer)) 40%,
   color-mix(in srgb,currentColor,var(--shimmer-color-4,#fd8f50) var(--link-shimmer)) 60%,
   color-mix(in srgb,currentColor,var(--shimmer-color-5,#fa3335) var(--link-shimmer)) 80%,
   color-mix(in srgb,currentColor,var(--shimmer-color-6,#9081fa) var(--link-shimmer)) 100%);
  background-size:400% 100%;background-position:0% 50%;
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
  animation:var(--shimmer-animation,none);
 }
 /* Only a hovered desktop menu link uses transparent gradient lettering.
    These breakpoints exclude the compact mobile drawer as well as touch devices. */
 @media(hover:hover) and (pointer:fine) and (min-width:761px) and (min-height:501px),(hover:hover) and (pointer:fine) and (min-width:1001px){
  .corner-menu [data-menu-navigation] a:hover{
   background-image:linear-gradient(90deg,var(--shimmer-color-1,#9081fa) 0%,var(--shimmer-color-2,#1afffe) 20%,var(--shimmer-color-3,#eddd1b) 40%,var(--shimmer-color-4,#fd8f50) 60%,var(--shimmer-color-5,#fa3335) 80%,var(--shimmer-color-6,#9081fa) 100%);
   background-size:400% 100%;background-position:0% 50%;
   -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
   animation:link-spectrum 4s linear infinite;
  }
 }
 /* A masked link moves its own text layer. Paint the spectrum on that layer,
    not its stationary parent, so transformed lettering stays visible. */
 .closing-section a[data-closing-reveal]{background-image:none;-webkit-text-fill-color:currentColor;animation:none}
 /* Restore the original soft palette on large titles; navigation keeps its vivid colors. */
 :is(.film-title-trigger,.project-word-inner,.stills-page .project-title,.stills-index-link .project-title,
 .index-entry .index-title,.press-entry h2,.fp-next-title,.sg-next-title,.stills-page-next em,.stills-page-name,.pindex-title,
 .film-list-card h2){
  --shimmer-color-1:#ffa77e;--shimmer-color-2:#ff789f;--shimmer-color-3:#b7a0ff;
  --shimmer-color-4:#7be6ee;--shimmer-color-5:#f1df88;--shimmer-color-6:#ffa77e;
 }
 /* Large project lettering has a slower drift than small navigation labels. */
 body :is(.film-title-trigger,.stills-page .project-title,.stills-index-link .project-title,
 .index-entry .index-title,.fp-next-title,.sg-next-title,.pindex-title,.film-list-card h2){animation-duration:12s}
 .stills-project-card .project-title .project-word-inner{background-size:calc(var(--shimmer-width,300px) * 4) 100%;animation:var(--shimmer-word-animation,none);animation-duration:12s}
 /* A gallery card fills the viewport; only its hovered lettering shimmers.
    The gallery stylesheet restores pointer events on these text-sized labels. */
 .film-list-card :is(h2,.film-list-client,.film-list-type){--link-shimmer:0%;--shimmer-animation:none;--shimmer-word-animation:none}
 @media(hover:hover){
  .film-list-card :is(h2,.film-list-client,.film-list-type):hover{--link-shimmer:100%;--shimmer-animation:link-spectrum 4s linear infinite}
 }
 /* No color transition: leaving the hit area restores the normal text immediately.
    Existing word-rise and menu-slide transitions remain independent. */
}
.film-title-trigger{width:fit-content;max-width:100%;margin-inline:auto}
@keyframes link-spectrum{from{background-position:0% 50%}to{background-position:-400% 50%}}
@keyframes word-spectrum{
 from{background-position:calc(0px - var(--shimmer-offset,0px)) 50%}
 to{background-position:calc(var(--shimmer-width,300px) * 12 - var(--shimmer-offset,0px)) 50%}
}

.award-badge:focus-visible,.index-entry:focus-visible .index-title{opacity:1}
#film-player.film-lightbox .close-player:hover{background:transparent;color:#eee7d7}
@media(hover:hover){
 .award-badge:hover,.index-entry:hover .index-title{opacity:1}
}

/* Touch and keyboard focus keep normal text and existing focus outlines.
   Reduced motion retains the hover spectrum without moving it. */
@media(prefers-reduced-motion:reduce){
 :is(.film-title-trigger,.corner-menu-label,
 .corner-menu-close>span:first-child,.project-word-inner,.stills-page .project-title,.stills-index-link .project-title,
 .stills-filters button,.index-entry .index-title,[id="open-index"],
 .contact-links a:not([data-closing-reveal]),.about-section footer a:not([data-closing-reveal]),
 .closing-section a[data-closing-reveal]:not(.footer-instagram)>.closing-reveal-inner,.press-entry h2,.press-preview-meta a,
 .press-contact,.back-films,.award-result,.award-name,.award-year,
 .close-player>span,.close-index,.original-link,.fp-next-title,.fp-next-kicker,
 .sg-back>span,.sg-close>span,.sg-next-title,.sg-next-label,
 .stills-page-header a,.stills-page-footer a,.stills-page-next,.stills-page-next em,
 .stills-chapter-cue,[id="skip-intro"],[id="retry-loading"],
 .fp-play-label,.film-controls button,.sg-controls button,.project-index-label,.pindex-title,.pindex-close,
 .film-list-card h2,.film-list-card .film-list-client,.film-list-card .film-list-type,
 .film-gallery-index a,.film-gallery-scroll>span:first-child,.film-preview-toggle,
 .film-back,.film-info>summary>:first-child,.film-info-credits a,.film-source-link a,
 .film-document .feature-synopsis a,.film-page-header nav a,.film-page-footer a:not(.footer-instagram),
 .film-up-next-summary-label,.film-up-next-card-title,.film-gallery-open-index>span:last-child,
 .film-gallery-picker-title,.film-gallery-picker-client,[data-film-gallery-index-close]>span){animation:none;transition:none;background-position:50% 50%}
 .corner-menu [data-menu-navigation] a:hover{animation:none;background-position:50% 50%}
 .stills-project-card .project-title .project-word-inner{animation:none;background-position:calc(var(--shimmer-width,300px) * -.7 - var(--shimmer-offset,0px)) 50%}
}
@media(forced-colors:active){
 /* System link/button colors remain readable when gradients are suppressed. */
 :is(a,button,a *,button *,.film-info>summary>:first-child,.film-up-next-summary-label){-webkit-text-fill-color:currentColor!important;background-image:none!important;animation:none!important}
 .wordmark:hover{color:LinkText}
}
/* Match the mobile navigation's plain text paint path during the drawer entrance. */
@media(max-width:760px),(max-width:1000px) and (max-height:500px) and (orientation:landscape){
 #site-menu.corner-menu .corner-menu-close>span:first-child{background-image:none;-webkit-text-fill-color:currentColor;animation:none}
}


/* Source: /wordmark-hover.css */
/* Absolute SVG contours share the native glyph positions and baseline. */
:is(.wordmark,[data-wordmark-hover])>span{position:relative}
[data-wordmark-hover]>span{display:block;width:max-content}
.wordmark-hover-baseline{display:inline-block!important;width:0!important;height:0!important;margin:0!important;padding:0!important;border:0!important;vertical-align:baseline;overflow:hidden;pointer-events:none}
.wordmark-hover-svg{position:absolute;inset:0;width:100%;height:100%;max-width:none;display:block;overflow:visible;opacity:0;pointer-events:none;-webkit-text-stroke:0}
.wordmark-hover-outline{font-style:normal;font-kerning:none;letter-spacing:0;fill:none;stroke-width:var(--wordmark-hover-stroke,.045em);-webkit-text-stroke:0;-webkit-text-fill-color:transparent}
/* Closing color follows the name's existing scroll motion, including touch. */
.wordmark.has-wordmark-hover>span{-webkit-text-stroke-color:color-mix(in srgb,currentColor calc(100% - var(--wordmark-closing-spectrum,0)*100%),transparent)}
.wordmark.has-wordmark-hover .wordmark-hover-svg{opacity:var(--wordmark-closing-spectrum,0)}
@media(hover:hover){
 :is(.wordmark,[data-wordmark-hover]).has-wordmark-hover.is-wordmark-hover{animation:none}
 :is(.wordmark,[data-wordmark-hover]).has-wordmark-hover.is-wordmark-hover>span{-webkit-text-stroke-color:transparent}
 :is(.wordmark,[data-wordmark-hover]).has-wordmark-hover.is-wordmark-hover .wordmark-hover-svg{opacity:1}
}
@media(forced-colors:active){
 .wordmark.has-wordmark-hover>span{-webkit-text-stroke-color:currentColor}
 .wordmark.has-wordmark-hover .wordmark-hover-svg{display:none}
 :is(.wordmark,[data-wordmark-hover]).has-wordmark-hover.is-wordmark-hover>span{-webkit-text-stroke-color:currentColor}
 :is(.wordmark,[data-wordmark-hover]).has-wordmark-hover.is-wordmark-hover .wordmark-hover-svg{display:none}
}


/* Source: /about/about.css */
/* A portrait-led biography using the portfolio's existing type and quiet space. */
@font-face{font-family:'Cormorant Garamond';src:url('/assets/cormorant-garamond-italic.woff2') format('woff2');font-style:italic;font-weight:500;font-display:swap}
body.about-page{background:var(--ink);color:var(--cream)}
body.about-page .site-header{height:100px;mix-blend-mode:difference;background:transparent}
body.about-page .wordmark{position:absolute;left:max(var(--gutter),calc(env(safe-area-inset-left) + 16px));top:max(20px,calc(env(safe-area-inset-top) + 8px));width:auto;min-height:44px;flex-direction:row;gap:.28em;align-items:flex-start;justify-content:flex-start;font-size:23px;font-weight:600;line-height:1.02;letter-spacing:-.035em}
body.about-page .wordmark>span:nth-child(2){align-self:flex-start;margin-top:0}
.about-main{padding:145px max(var(--gutter),calc(env(safe-area-inset-right) + 16px)) 0 max(var(--gutter),calc(env(safe-area-inset-left) + 16px));max-width:1920px;margin:auto}
.about-intro{display:flex;align-items:flex-end;justify-content:space-between;gap:32px;margin-bottom:clamp(50px,7vw,108px)}
.about-intro h1{font:800 clamp(76px,12.5vw,190px)/.9 Unbounded,Arial,sans-serif;letter-spacing:-.075em;text-transform:uppercase;margin-left:-.04em}
.about-kicker{font-size:11px;line-height:1.5;letter-spacing:.08em;text-transform:uppercase;padding-bottom:8px}
.about-story{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1fr);gap:clamp(60px,10vw,180px);align-items:start}
.about-portrait{position:sticky;top:120px;min-width:0;margin:0 0 30px 20px}
.about-portrait-frame{position:relative}
.about-portrait-frame:before,.about-portrait-frame:after{content:'';position:absolute;inset:-13px;pointer-events:none;border-color:var(--cream);border-style:solid;opacity:.58;width:29px;height:29px}
.about-portrait-frame:before{border-width:1px 0 0 1px}
.about-portrait-frame:after{inset:auto -13px -13px auto;border-width:0 1px 1px 0}
.about-portrait img{display:block;width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;object-position:56% center;background:#242620}
.about-portrait figcaption{display:flex;justify-content:space-between;gap:12px;margin-top:28px;font-size:10px;line-height:1.4;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.about-biography{min-width:0;padding-top:4px}
.about-lead{font:400 clamp(33px,3.6vw,58px)/1.12 DM,Arial,sans-serif;letter-spacing:-.035em;max-width:18ch;margin-bottom:32px;text-wrap:pretty}
.about-prose{max-width:590px;font-size:clamp(17px,1.4vw,21px);line-height:1.65;letter-spacing:-.015em;color:#c6c4b9}
.about-prose p+p{margin-top:1.4em}
.about-prose em{color:var(--cream);font-style:italic}
.about-contact{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1fr);gap:clamp(60px,10vw,180px);padding-top:clamp(80px,10vw,155px);padding-bottom:clamp(70px,9vw,135px)}
.about-contact h2{font:500 clamp(39px,4.4vw,70px)/1.06 'Cormorant Garamond',Georgia,serif;font-style:italic;letter-spacing:-.045em;align-self:start}
.about-contact-links{margin-top:0;gap:24px;min-width:0}
.about-contact-links a{border-bottom-color:var(--line);font-size:clamp(16px,1.65vw,25px);text-transform:none;letter-spacing:-.025em;padding-bottom:18px;min-width:0;overflow-wrap:anywhere}
.about-contact-links a span{font-size:23px;padding-left:18px;flex:none}
.about-contact-links .about-contact-label{display:block;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.about-footer{display:flex;justify-content:space-between;gap:24px;align-items:center;border-top:1px solid var(--line);padding:25px 0 max(35px,calc(env(safe-area-inset-bottom) + 20px));font-size:10px;text-transform:uppercase;letter-spacing:.05em}
.about-footer p{color:var(--muted)}
.about-footer .back-films{display:flex;align-items:center;gap:24px;min-height:44px}
.about-intro{animation:about-arrive 1s cubic-bezier(.22,1,.36,1) both}
.about-story{animation:about-arrive 1.1s .12s cubic-bezier(.22,1,.36,1) both}
.about-page.is-about-motion [data-about-reveal]{opacity:0;transform:translateY(24px);transition:opacity 1.1s ease,transform 1.1s cubic-bezier(.22,1,.36,1)}
.about-page.is-about-motion [data-about-reveal].is-visible{opacity:1;transform:none}
@keyframes about-arrive{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
@media(min-width:1600px){.about-story,.about-contact{grid-template-columns:minmax(0,.8fr) minmax(0,1fr)}.about-portrait{max-width:630px;margin-left:4vw}.about-prose{font-size:22px}.about-lead{font-size:64px}}
@media(max-width:1000px){.about-story,.about-contact{gap:6vw}.about-portrait{margin-left:13px}.about-lead{font-size:38px}.about-prose{font-size:17px}}
@media(max-width:760px){
 body.about-page .site-header{height:calc(86px + env(safe-area-inset-top))}
 body.about-page .wordmark{top:max(30px,calc(env(safe-area-inset-top) + 12px));font-size:18px;line-height:1.08;width:auto}
 .about-main{padding-top:calc(130px + env(safe-area-inset-top))}
 .about-intro{display:block;margin-bottom:45px}
 .about-intro h1{font-size:clamp(65px,19vw,128px)}
 .about-kicker{font-size:10px;margin-top:22px;padding-bottom:0}
 .about-story{grid-template-columns:1fr;gap:48px}
 .about-portrait{position:relative;top:auto;width:calc(100% - 26px);max-width:470px;margin:0 auto}
 .about-portrait-frame:before,.about-portrait-frame:after{width:24px;height:24px;inset:-10px}
 .about-portrait-frame:after{inset:auto -10px -10px auto}
 .about-portrait figcaption{font-size:9px;margin-top:23px}
 .about-biography{padding-top:0}
 .about-lead{font-size:clamp(35px,9.8vw,48px);max-width:19ch;margin-bottom:28px}
 .about-prose{font-size:17px;line-height:1.65;max-width:none}
 .about-contact{grid-template-columns:1fr;gap:28px;padding-top:65px;padding-bottom:50px}
 .about-contact h2{font-size:43px}
 .about-contact-links{gap:22px}
 .about-contact-links a{font-size:21px;padding-bottom:15px}
 .about-footer{flex-wrap:wrap;gap:12px;font-size:9px;padding-top:20px}
}
@media(max-width:360px){body.about-page .wordmark{font-size:16px}.about-lead{font-size:33px}.about-prose{font-size:16px}}
@media(max-width:1000px) and (max-height:500px) and (orientation:landscape){body.about-page .wordmark{top:max(30px,calc(env(safe-area-inset-top) + 12px));font-size:18px;line-height:1.08}.about-main{padding-top:115px}.about-portrait{position:relative;top:auto}}
@media(prefers-reduced-motion:reduce){.about-intro,.about-story{animation:none}.about-page.is-about-motion [data-about-reveal]{opacity:1;transform:none;transition:none}}

