:root{--bg:#0a0b0b;--text:#f1f1ef;--muted:#999a98;--line:#303130;color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font:13px/1.625 'Helvetica Neue',Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;transition:background .4s,color .4s}body.light{--bg:#efefec;--text:#171817;--muted:#676865;--line:#ccc;color-scheme:light}a{color:inherit;text-decoration:none}button{color:inherit;font:inherit;border:0;background:none;cursor:pointer;padding:0}a,button{-webkit-tap-highlight-color:transparent}a:hover,button:hover{opacity:.7}a:focus-visible,button:focus-visible{outline:1px solid currentColor;outline-offset:6px}header{position:fixed;z-index:10;top:0;left:0;width:100%;padding:44px 48px;display:flex;align-items:center;justify-content:space-between;background:linear-gradient(var(--bg),transparent)}.brand{text-transform:uppercase;letter-spacing:.09em;font-weight:500}nav{display:flex;gap:30px}nav a{color:var(--muted)}nav a[aria-current=page]{color:var(--text)}footer{position:fixed;z-index:10;bottom:0;padding:28px 48px;width:100%;display:flex;justify-content:space-between;align-items:center;pointer-events:none;background:linear-gradient(transparent,var(--bg));color:var(--muted)}footer a,footer button{pointer-events:auto}.settings{display:flex;gap:26px;align-items:center}#theme{width:24px;height:28px;display:grid;place-items:center}#theme span{display:block;width:14px;height:14px;background:var(--text);border-radius:50%}#motion{font-size:11px}#position{font-size:11px;font-variant-numeric:tabular-nums}.film-section{min-height:100svh;display:grid;place-items:center;padding:100px 0}.film{display:block;position:relative;width:66.6667vw;aspect-ratio:2.222;background:#171818;overflow:hidden;color:#fff;isolation:isolate}.film img{width:100%;height:100%;object-fit:cover;display:block;transition:transform 1.4s cubic-bezier(.2,.7,.2,1),opacity .8s}.film iframe{position:absolute;inset:50% auto auto 50%;width:100%;height:125%;transform:translate(-50%,-50%);border:0;pointer-events:none;opacity:0;transition:opacity .8s}.film iframe.ready{opacity:1}.film:after{content:'';position:absolute;inset:0;background:#0002;pointer-events:none;transition:background .6s}.film:hover{opacity:1}.film:hover:after{background:#0004}.film:hover img{transform:scale(1.025)}.caption{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:16px;z-index:2;text-shadow:0 1px 10px #000;letter-spacing:.01em}.caption em{font-style:normal;color:#ddd}.watch{position:absolute;left:50%;top:calc(50% + 30px);transform:translate(-50%,8px);opacity:0;transition:.4s;z-index:3;font-size:11px}.film:hover .watch,.film:focus-visible .watch{opacity:1;transform:translate(-50%,0)}main{animation:arrive 1s ease both}@keyframes arrive{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.archive{padding:160px 8vw 140px;display:grid;grid-template-columns:repeat(2,1fr);gap:60px 32px}.archive .film{width:100%}.archive .caption{inset:auto 0 0;padding:20px;justify-content:flex-start}.archive .watch{display:none}.feature-list{max-width:1100px;margin:auto;padding:170px 48px 150px;display:grid;grid-template-columns:1fr 1fr;gap:80px}.poster{display:block;width:100%;text-align:left}.poster img{display:block;width:100%;height:60vh;object-fit:contain;transition:transform .7s}.poster:hover img{transform:translateY(-6px)}.poster p{margin-top:25px}.poster span{display:block;color:var(--muted)}.about{width:66.6667%;margin:auto;padding:24vh 0 160px}.about h1{font-size:clamp(24px,2.6vw,44px);font-weight:400;line-height:1.3;letter-spacing:-.025em;max-width:780px;margin:0 0 80px}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:60px}.about h2{font-size:13px;font-weight:400;color:var(--muted);margin:0 0 22px}.about p{margin:0 0 22px}.about ul{list-style:none;padding:0;margin:0}.about .contact{display:inline-block;margin-top:60px;border-bottom:1px solid var(--line)}dialog{position:fixed;inset:0;margin:0;width:100vw;max-width:none;height:100dvh;max-height:none;background:#080909;color:#eee;border:0;padding:40px 48px;z-index:30}dialog::backdrop{background:#000}dialog[open]{display:flex;flex-direction:column;justify-content:space-between}.player-top,.player-bottom{display:flex;justify-content:space-between;gap:20px}.player-bottom{color:#aaa;margin:0}#screen{height:calc(100dvh - 180px);width:100%;display:grid;place-items:center}#screen iframe{width:100%;height:100%;border:0}.skip{position:fixed;top:-100px;left:20px;z-index:99}.skip:focus{top:20px;background:var(--bg);padding:10px}@media(max-width:700px){header{padding:24px 20px;align-items:flex-start}nav{gap:18px;font-size:12px}.brand{font-size:12px}footer{padding:20px;font-size:11px}#motion{font-size:10px}.settings{gap:12px}#position{display:none}.film{width:calc(100vw - 32px);aspect-ratio:16/10}.film iframe{width:178%;height:160%}.film-section{min-height:90svh}.caption{gap:10px;font-size:12px}.archive{padding:120px 16px;grid-template-columns:1fr;gap:24px}.archive .film{aspect-ratio:16/9}.feature-list{padding:130px 30px;grid-template-columns:1fr;gap:65px}.poster img{height:55vh}.about{width:auto;padding:170px 26px 130px}.about h1{margin-bottom:60px}.about-grid{grid-template-columns:1fr;gap:40px}dialog{padding:24px 20px}.player-bottom{font-size:11px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}

/* Full films on Home; original wide loops in Archive. Never zoom the embed. */
.film{aspect-ratio:16/9;background:#000}
.film img{object-fit:contain;background:#000}
.film iframe{inset:0;width:100%;height:100%;transform:none;background:#000;color-scheme:normal}
.archive .film{aspect-ratio:21/9}
dialog,dialog::backdrop,#screen,#screen iframe{background:#000!important;color-scheme:normal}
dialog{color:#f1f1ef}
@media(max-width:700px){.film{aspect-ratio:16/9}.film iframe{inset:0;width:100%;height:100%;transform:none}.archive .film{aspect-ratio:21/9}}

/* Center the source frame inside a picture-only window without distorting it. */
.film iframe{inset:50% auto auto 50%;transform:translate(-50%,-50%)}
.film img{object-fit:cover}
.cropped-player{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#000}
.picture-window{position:relative;overflow:hidden;flex:none;background:#000}
#screen .picture-window iframe{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:100%;max-height:none}
.crop-controls{height:48px;display:flex;gap:20px;align-items:center;width:min(100%,900px);padding:8px 12px;color:#eee}
.crop-controls input{min-width:40px;flex:1;accent-color:#eee}
@media(max-width:700px){.crop-controls{gap:12px;font-size:11px}}

/* Wide Archive frames with the original two-column spacing. */
.archive{padding:160px 8vw 140px;grid-template-columns:repeat(2,minmax(0,1fr));gap:60px 32px;align-items:start}
.archive .film{width:100%;aspect-ratio:3.45/1!important;height:auto;min-height:0;min-width:0;align-self:start}
.archive .caption{inset:0;padding:20px;justify-content:center;align-items:center}
.poster-static:hover img{transform:none}
@media(max-width:700px){.archive{padding:120px 16px;grid-template-columns:1fr;gap:24px}.archive .caption{font-size:11px;gap:8px;padding:8px}}

/* Seal fractional-pixel seams between the video and its fallback still. */
.archive .film{clip-path:inset(1px)}
.archive .film iframe{transform:translate(-50%,-50%) scale(1.008)}
.archive .film:has(iframe.ready) img{visibility:hidden;transition:visibility 0s .8s}

/* Lowercase typography and a dedicated narrative film page. */
body,button,input,.brand{text-transform:lowercase}
body.project-page{--bg:#000;--text:#f1f1ef;--muted:#999a98;--line:#303130;background:#000;color:var(--text);color-scheme:dark}
.project-detail{max-width:1440px;margin:0 auto;padding:140px 8vw 150px}
.project-film{width:100%;aspect-ratio:16/9;background:#000}
.project-film iframe{display:block;width:100%;height:100%;border:0;background:#000;color-scheme:normal}
.project-copy{padding-top:32px;font-size:13px;line-height:1.65}
.project-copy h1{font:inherit;margin:0}
.project-copy p{margin:0}
.project-copy .project-note{margin-top:24px;color:var(--muted)}
.project-back{display:inline-block;margin-top:36px;color:var(--muted)}
@media(max-width:700px){.project-detail{padding:120px 20px 120px}.project-copy{padding-top:24px}}

/* Shared controls for every full-film player, including the project page. */
.picture-window iframe,#screen .picture-window iframe{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border:0;max-height:none}
.project-film{aspect-ratio:auto;height:calc(min(47.25vw, 680px) + 48px)}
.cropped-player:fullscreen{width:100vw;height:100dvh;padding:24px;background:#000}
@media(max-width:700px){.project-film{height:calc((100vw - 40px)*.5625 + 48px)}.cropped-player:fullscreen{padding:12px}}

/* Pin the viewing area independently of fullscreen's layout changes. */
dialog{overflow:hidden;padding:0}
dialog[open]{display:block}
dialog .player-top,dialog .player-bottom{position:absolute;left:48px;right:48px;min-width:0;margin:0}
dialog .player-top{top:40px;align-items:center}
dialog .player-bottom{bottom:40px}
#screen{position:absolute;inset:88px 48px;width:auto;height:auto;min-height:0;min-width:0;overflow:hidden;display:block}
.cropped-player{min-height:0;min-width:0;overflow:hidden}
.crop-controls{flex-shrink:0}
@media(max-width:700px){dialog .player-top,dialog .player-bottom{left:20px;right:20px}dialog .player-top{top:24px}dialog .player-bottom{bottom:24px}#screen{inset:72px 20px}}

/* Let each film's image take over after its introduction. */
.film .caption{opacity:1;transition:opacity .3s ease}
@media(hover:hover){.film:hover .caption{opacity:0;animation:none}}


.brand{text-transform:uppercase}

/* Seal Home preview edges and retire the still once the video fade completes. */
.film-section .film{clip-path:inset(1px)}
.film-section .film iframe{transform:translate(-50%,-50%) scale(1.004)}
.film-section .film:has(iframe.ready) img{visibility:hidden;transition:visibility 0s .8s}

/* Keep the still visible until Vimeo reports actual playback. */
.film iframe{opacity:0;transition:none}
.film iframe.ready{opacity:1}
.archive .film:has(iframe.ready) img,.film-section .film:has(iframe.ready) img{visibility:hidden;transition:none}

/* Smaller feature posters and a quieter About introduction. */
.feature-list{max-width:850px}
.poster img{height:min(42vh,420px)}
.about h1{font-size:clamp(20px,2vw,32px);max-width:640px}
@media(max-width:700px){.feature-list{max-width:360px}.poster img{height:min(42vh,340px)}}
