:root{
  --ink:#0d0f0e; --ink-2:#141816; --line:#262b28;
  --paper:#eeebe4; --dim:#858b84; --mid:#aaaea8; --unlit:#353a36;
  --flap:#f0c35a;
  --serif:'Instrument Serif',Georgia,serif;
  --sans:Manrope,'Helvetica Neue',Arial,sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,Menlo,monospace;
  --gut:clamp(24px,6vw,104px);
  --hdr:92px;
  --caps:12.5px;             /* the small capitalised text used across the site */
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--ink);color:var(--paper);font-family:var(--sans);-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0}
img{display:block;max-width:100%}
.wrap{padding-inline:var(--gut)}
.eyebrow{font-size:var(--caps);letter-spacing:.22em;text-transform:uppercase;color:var(--mid)}
.sec{padding-block:130px;border-top:1px solid var(--line)}
.sec-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:44px}
.sec-title{margin:12px 0 0;font-family:var(--serif);font-weight:400;font-size:clamp(34px,4vw,58px);line-height:1.05}
.quiet-link{font-size:14px;color:var(--mid);border-bottom:1px solid var(--line);padding-bottom:3px;transition:color .3s,border-color .3s}
.quiet-link:hover{color:var(--paper);border-color:var(--paper)}
.ph{background:repeating-linear-gradient(135deg,#171b19 0 14px,#141816 14px 28px);color:var(--dim);display:flex;align-items:center;justify-content:center;text-align:center;font-size:12px;letter-spacing:.06em;padding:16px}

/* ================= Header ================= */
.hdr{position:fixed;inset:0 0 auto 0;z-index:50;height:var(--hdr);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding-inline:var(--gut);mix-blend-mode:difference;color:#fff;pointer-events:none}
.hdr>*{pointer-events:auto}
.menu-btn{display:flex;align-items:center;gap:14px;min-height:44px;font-size:var(--caps);letter-spacing:.18em;text-transform:uppercase;justify-self:start}
.burger{position:relative;width:24px;height:12px}
.burger i{position:absolute;left:0;width:100%;height:1.5px;background:#fff;transition:transform .45s cubic-bezier(.7,0,.2,1),top .45s cubic-bezier(.7,0,.2,1)}
.burger i:nth-child(1){top:0}.burger i:nth-child(2){top:10.5px}
.menu-open .burger i:nth-child(1){top:5.25px;transform:rotate(45deg)}
.menu-open .burger i:nth-child(2){top:5.25px;transform:rotate(-45deg)}
.menu-btn .lbl{display:inline-block;min-width:48px}
.logo{display:flex;align-items:center;justify-content:center;width:44px;height:44px}
.logo img{width:32px;height:32px;object-fit:contain}
.socials{justify-self:end;display:flex;gap:24px;font-size:var(--caps);letter-spacing:.18em;text-transform:uppercase}
.socials a{min-height:44px;display:flex;align-items:center;opacity:.9}
.socials a:hover{opacity:1}
@media (max-width:760px){:root{--hdr:72px}.socials{display:none}.menu-btn .lbl{display:none}.logo img{width:24px;height:24px}}

/* ================= Menu overlay (translucent, greys the page beneath) ================= */
.menu{position:fixed;inset:0;z-index:40;background:rgba(10,12,11,.55);-webkit-backdrop-filter:grayscale(1) brightness(.55) blur(2px);backdrop-filter:grayscale(1) brightness(.55) blur(2px);display:flex;flex-direction:column;justify-content:center;padding:calc(var(--hdr) + 24px) var(--gut) 48px;overflow-y:auto;opacity:0;visibility:hidden;transition:opacity .5s ease,visibility .5s}
.menu-open .menu{opacity:1;visibility:visible}
.menu .hl>li{opacity:0;transform:translateY(14px);transition:opacity .5s ease,transform .5s ease}
.menu-open .menu .hl>li{opacity:1;transform:none}
.menu .m-socials{margin-top:40px;display:none;gap:22px;font-size:var(--caps);letter-spacing:.18em;text-transform:uppercase;color:var(--mid)}
@media (max-width:760px){.menu .m-socials{display:flex;flex-wrap:wrap}}

/* ================= Highlight list (text lights up on hover / scroll) ================= */
.hl{list-style:none;margin:0;padding:0}
.hl>li>a,.hl>li>button{width:100%;display:flex;align-items:baseline;justify-content:space-between;gap:24px;padding:6px 0;color:var(--dim);transition:color .35s ease;text-align:left}
.hl .t{font-family:var(--serif);font-size:clamp(34px,5.2vw,76px);line-height:1.05;transition:transform .35s ease}
.hl .m{font-size:14px;color:var(--dim);white-space:nowrap;transition:color .35s}
.hl li.on>a,.hl li.on>button{color:var(--paper)}
.hl li.on>a .t,.hl li.on>button .t{transform:translateX(12px)}
.hl li.on .m{color:var(--mid)}
.menu .hl .t{font-size:clamp(32px,4.4vw,62px)}
.menu .hl>li>a,.menu .hl>li>button,.menu .hl .subl a{color:rgba(238,235,228,.78)}
.menu .hl .m{color:rgba(238,235,228,.6)}
.menu .hl li.on>a,.menu .hl li.on>button,.menu .hl .subl a:hover{color:#fff}
.menu .hl li.on .m{color:rgba(255,255,255,.85)}
.hl .plus{display:inline-block;margin-left:14px;font-family:var(--sans);font-size:.4em;vertical-align:middle;transition:transform .4s}
.hl li.expanded .plus{transform:rotate(45deg)}
.hl .subl{padding-left:clamp(24px,6vw,96px);display:grid;grid-template-rows:0fr;transition:grid-template-rows .42s cubic-bezier(.6,0,.2,1)}
.hl .subl>div{overflow:hidden}
.hl li.expanded .subl{grid-template-rows:1fr}
.hl .subl a{display:flex;justify-content:space-between;align-items:baseline;gap:24px;padding:4px 0;color:var(--dim);transition:color .3s,transform .5s ease,opacity .5s ease;opacity:0;transform:translateX(-16px)}
.hl li.expanded .subl a{opacity:1;transform:none}
.hl .subl a:hover,.hl .subl a:focus-visible{color:var(--paper)}
.hl .subl .t{font-size:clamp(24px,2.8vw,40px)}
@media (max-width:700px){.hl .m{display:none}}

/* ================= Hero ================= */
.hero{position:relative;height:100svh;min-height:560px;overflow:hidden;background:#000}
.vbg{position:absolute;inset:0;overflow:hidden;pointer-events:none;will-change:filter,transform}
.vbg iframe,.vbg video{position:absolute;top:50%;left:50%;width:100vw;height:56.25vw;min-height:100%;min-width:177.78vh;transform:translate(-50%,-50%);border:0;object-fit:cover}
.vbg img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;animation:drift 24s ease-in-out infinite alternate}
@keyframes drift{from{transform:scale(1.02)}to{transform:scale(1.1) translate(-1%,-1%)}}
.hero::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.6),rgba(0,0,0,0) 50%);pointer-events:none}
.hero .fade{position:absolute;inset:0;background:linear-gradient(to bottom,rgba(13,15,14,0) 30%,var(--ink) 100%);opacity:0;pointer-events:none;z-index:1}
.hero-txt{position:absolute;left:var(--gut);right:var(--gut);bottom:52px;z-index:2;display:flex;justify-content:space-between;align-items:flex-end;gap:24px}
.id-anchor{visibility:hidden}
.scroll-cue{font-size:var(--caps);letter-spacing:.22em;text-transform:uppercase;color:#cfccc4;display:flex;align-items:center;gap:10px;flex-shrink:0}
.scroll-cue span{display:block;width:1px;height:36px;background:#cfccc4;animation:cue 2.2s ease-in-out infinite;transform-origin:top}
@keyframes cue{0%{transform:scaleY(0)}50%{transform:scaleY(1)}100%{transform:scaleY(0);transform-origin:bottom}}

/* Name block — travels from the hero into the About section */
.idblock{margin:0;display:inline-flex;flex-direction:column;align-items:flex-start;gap:12px;transform-origin:0 0}
.idblock.flying{position:fixed;left:0;top:0;z-index:30;will-change:transform,opacity}
.idblock .nm{font-family:var(--serif);font-weight:400;text-transform:uppercase;letter-spacing:.01em;line-height:1;white-space:nowrap;font-size:44px}
.idblock .role{font-weight:400;font-size:14px;letter-spacing:.22em;text-transform:uppercase;color:#e7e4dc;white-space:nowrap}
.idblock .loc{font-weight:400;font-size:var(--caps);letter-spacing:.22em;text-transform:uppercase;color:#9ea39d;white-space:nowrap}
@media (max-width:700px){.idblock .role{font-size:10.5px;letter-spacing:.1em}.idblock .loc{font-size:10px;letter-spacing:.16em}.scroll-cue{display:none}}

/* ================= Bio ================= */
.bio{padding-block:150px 120px;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:24px;position:relative}
.bio .rail{grid-column:1/span 3;grid-row:1/span 3;position:relative}
.bio .rail .dock{position:sticky;top:calc(var(--hdr) + 36px)}
.bio .p1{grid-column:1/span 6;grid-row:1;z-index:2}
.bio .photo{grid-column:9/span 3;grid-row:1/span 2;align-self:start;position:relative;z-index:1;margin:0}
.bio .photo .frame{overflow:hidden;aspect-ratio:911/1366}
.bio .photo img{width:100%;height:112%;object-fit:cover;transform:translateY(var(--py,0));will-change:transform}
.bio .photo figcaption{position:absolute;top:0;left:100%;margin-left:14px;writing-mode:vertical-rl;font-size:12px;letter-spacing:.12em;color:var(--dim);white-space:nowrap}
@media (max-width:900px){.bio .photo figcaption{position:static;writing-mode:horizontal-tb;margin:12px 0 0}}
.bio .p2{grid-column:4/span 6;grid-row:2;margin-top:64px;z-index:2}
.bio p{margin:0;font-family:var(--serif);font-size:clamp(24px,2.35vw,36px);line-height:1.3}
.bio .p2 p{text-shadow:0 1px 18px rgba(0,0,0,.85)}
.w{color:var(--unlit);transition:color .3s}
.w.lit{color:var(--paper)}
.bio .skills{grid-column:1/-1;grid-row:3;margin-top:80px;font-size:14px;letter-spacing:.14em;text-transform:uppercase;color:var(--mid);line-height:2}
@media (max-width:900px){
  .bio{display:flex;flex-direction:column}
  .bio .rail{display:none}
  .bio .photo{width:70%;align-self:center;margin:40px auto 40px}
  .bio .p2{margin-top:0}
}

/* ================= Logos ================= */
.logos{padding-block:80px 96px;border-top:1px solid var(--line)}
.logos .row{margin-top:40px;display:flex;flex-wrap:nowrap;align-items:center;justify-content:space-between;gap:14px}
.logos a{display:flex;align-items:center;justify-content:center;min-height:44px}
.logos img{height:clamp(12px,1.5vw,22px);width:auto;opacity:.38;transition:opacity .3s}
.logos img.tall{height:clamp(16px,2.05vw,30px)}
.logos a:hover img,.logos a:focus-visible img{opacity:1}
@media (max-width:700px){
  .logos .row{display:flex;flex-wrap:wrap;justify-content:center;gap:26px 0}
  .logos a{height:56px;width:33.33%;padding:0 8px}
  .logos img,.logos img.tall{height:auto;max-height:30px;max-width:100%}
}

/* ================= Showreel (full bleed) ================= */
.reel{position:relative}
/* the showreel sits still underneath: everything above it is an opaque curtain that slides away (pure CSS, so it stays smooth on trackpads) */
.bio,.logos,.reel>.wrap{position:relative;z-index:1;background:var(--ink)}
.reel>.wrap{display:flow-root;border-top:1px solid var(--line);padding-top:110px}
.reel .frame{position:relative;width:100%;aspect-ratio:16/9;background:#000}
.reel iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.reel .cap{display:flex;justify-content:space-between;align-items:baseline;gap:24px;padding-top:20px;padding-bottom:110px}
.reel .cap .m{font-size:14px;color:var(--mid)}

/* ================= Projects: DVD stack ================= */
.projects{border-top:1px solid var(--line);padding-top:110px}
.stack{border-top:1px solid var(--line)}
.dvd{position:relative;height:96px;overflow:hidden;border-bottom:1px solid var(--line);transition:height .9s cubic-bezier(.65,0,.35,1);cursor:pointer;background:#000;outline:none}
.dvd .bg{position:absolute;inset:0;background-size:cover;background-repeat:no-repeat;background-position:center var(--focus,50%);filter:grayscale(1) brightness(.55);transform:scale(1);transition:filter .5s ease,transform .7s cubic-bezier(.2,.7,.2,1),background-position .9s cubic-bezier(.65,0,.35,1)}
.dvd:hover .bg,.dvd:focus-visible .bg{filter:none;transform:scale(1.035)}
.dvd.open .bg{filter:none;transform:none;background-position:center center}
.dvd::before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(to right,rgba(0,0,0,.55),rgba(0,0,0,0) 45%);pointer-events:none;transition:opacity .6s}
.dvd.open::before{background:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0) 110px)}
.dvd .spine{position:absolute;left:var(--gut);right:var(--gut);top:0;height:96px;display:flex;align-items:center;justify-content:space-between;gap:24px;z-index:2;color:#fff;text-shadow:0 1px 10px rgba(0,0,0,.6)}
.dvd .spine .l{display:flex;align-items:center;gap:18px;min-width:0}
.dvd .spine .ti{font-family:var(--serif);font-size:clamp(26px,2.8vw,40px);line-height:1.2;padding-block:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dvd .spine .br,.dvd .spine .ro{font-size:var(--caps);letter-spacing:.18em;text-transform:uppercase;color:#fff;white-space:nowrap}
.dvd .detail{position:absolute;left:var(--gut);bottom:44px;z-index:2;max-width:min(640px,80%);padding:0;opacity:0;transform:translateY(16px);transition:opacity .6s ease .3s,transform .7s ease .3s}
.dvd .detail p{margin:0;font-size:17px;line-height:1.6;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.7),0 0 18px rgba(0,0,0,.55)}
.dvd.open .detail{opacity:1;transform:none}
@media (max-width:700px){.dvd .spine .br,.dvd .spine .ro .dt{display:none}.dvd .spine .ro{font-size:11px}.dvd .detail{max-width:none;right:var(--gut);bottom:20px;padding:16px}.dvd .detail p{font-size:14.5px}}

/* ================= Horizontal galleries (Documentary, Other work) ================= */
.gallery{position:relative}
.track{display:flex;gap:24px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding-inline:var(--gut);scroll-padding-inline:var(--gut)}
.track::-webkit-scrollbar{display:none}
.card{flex:0 0 auto;scroll-snap-align:start;display:flex;flex-direction:column;gap:14px}
.card .pic{position:relative;overflow:hidden;background:#111}
.card .pic img{width:100%;height:100%;object-fit:cover;transition:transform 1s ease,filter .6s ease}
.card:hover .pic img{transform:scale(1.04)}
.card h3{margin:0;font-family:var(--serif);font-weight:400;font-size:28px}
.card .m{font-size:var(--caps);letter-spacing:.14em;text-transform:uppercase;color:var(--mid)}
.doc .card{width:calc((100vw - 2*var(--gut) - 3*24px)/4);min-width:240px}
.doc .card .pic{aspect-ratio:9/16}
.doc .card .desc{position:absolute;inset:0;padding:22px;display:flex;flex-direction:column;align-items:flex-start;gap:12px;opacity:0;transition:opacity .45s ease;pointer-events:none}
.doc .card .desc p{margin:0;font-size:14px;line-height:1.6;color:#eeebe4;display:-webkit-box;-webkit-line-clamp:var(--lines,11);-webkit-box-orient:vertical;overflow:hidden;transform:translateY(-8px);transition:transform .6s ease}
.doc .card .desc .rm{font-size:var(--caps);letter-spacing:.16em;text-transform:uppercase;color:var(--paper);border-bottom:1px solid rgba(255,255,255,.5);padding-bottom:2px;min-height:32px;display:none}
.doc .card .desc.clamped .rm{display:inline-block}
.doc .card .desc.full{overflow-y:auto}
.doc .card .desc.full p{display:block}
.doc .card:hover .pic img,.doc .card:focus-visible .pic img{filter:grayscale(1) brightness(.25)}
.doc .card:hover .desc,.doc .card:focus-visible .desc{opacity:1;pointer-events:auto}
.doc .card:hover .desc p,.doc .card:focus-visible .desc p{transform:none}
.ow .card{width:calc((100vw - 2*var(--gut) - 2*24px)/3.3);min-width:250px}
.ow .card .pic{aspect-ratio:4/5}
.arrows{display:flex;gap:10px}
.arrow{width:48px;height:48px;border:1px solid var(--line);border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--paper);transition:border-color .3s,opacity .3s}
.arrow:hover{border-color:var(--paper)}
.arrow:disabled{opacity:.25;cursor:default}
.arrow:disabled:hover{border-color:var(--line)}

/* ================= Shoot diary: departures board ================= */
.board{background:#070808;border:1px solid var(--line);border-radius:6px;padding:28px clamp(16px,2.4vw,36px) 20px}
.board-top{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap;margin-bottom:22px}
.toggle{display:inline-flex;border:1px solid var(--line);border-radius:999px;padding:4px}
.toggle button{display:flex;justify-content:center;align-items:center;gap:10px;min-height:42px;padding:0 20px;border-radius:999px;font-size:var(--caps);letter-spacing:.18em;text-transform:uppercase;color:var(--dim);transition:background .3s,color .3s}
.toggle button[aria-pressed="true"]{background:var(--paper);color:#0d0f0e}
.toggle svg{width:20px;height:20px;fill:currentColor}
.board table{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:14px}
.board th{text-align:left;font-weight:500;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--dim);padding:0 14px 12px 0;border-bottom:1px solid var(--line);font-family:var(--sans)}
.board td{padding:15px 14px 15px 0;border-bottom:1px solid #1a1e1c;color:#e9e6de;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}
.board td.pj{color:var(--flap)}
.board td.st span{display:inline-block;padding:4px 8px;border:1px solid currentColor;border-radius:3px;font-size:11px;letter-spacing:.12em}
.board td.st.nda{color:#e9918a}.board td.st.prod{color:#9cc3e6}.board td.st.soon{color:var(--flap)}.board td.st.rel{color:#8fd19e}
.board .empty{padding:24px 0;color:var(--dim)}
.board-wrap{overflow-x:auto}
.board .more{margin-top:18px;font-size:var(--caps);letter-spacing:.18em;text-transform:uppercase;color:var(--mid);min-height:44px}
.board .more:hover{color:var(--paper)}
.board td.ds{color:#cfccc4}
.board table{font-size:13px}
.board td.ds,.board td.fo,.board td.ro{white-space:normal;min-width:110px}
.board td.dt{min-width:118px}
.board td.st{width:1%}
@media (max-width:900px){
  .board{padding:20px 16px 12px}
  .board thead{display:none}
  .board table,.board tbody{display:block}
  .board tr{display:grid;grid-template-columns:1fr auto;column-gap:12px;row-gap:5px;padding:16px 0;border-bottom:1px solid #1a1e1c}
  .board td{display:block;padding:0;border:0;white-space:normal;font-size:12.5px}
  .board td.dt{grid-column:1;grid-row:1;color:var(--mid)}
  .board td.st{grid-column:2;grid-row:1;justify-self:end;width:auto}
  .board td.pj{grid-column:1/-1;grid-row:2;font-size:16px;margin-top:2px}
  .board td.ds{grid-column:1/-1;grid-row:3}
  .board td.ds::before{content:"→ ";color:var(--dim)}
  .board td.ds.none{display:none}
  .board td.ds,.board td.fo,.board td.ro,.board td.dt{min-width:0}
  .toggle{display:flex;width:100%}
  .toggle button{flex:1;padding:0 10px;gap:8px;letter-spacing:.12em}
  .board td.ro{grid-column:1/-1;grid-row:4;color:var(--mid)}
  .board td.fo{grid-column:1/-1;grid-row:5;color:var(--dim);font-size:11.5px}
  .board td.empty{grid-column:1/-1}
}

/* ================= Footer ================= */
footer{padding:130px var(--gut) 44px;background:#070808}
footer .big{font-family:var(--serif);font-size:clamp(40px,6vw,88px);line-height:1.05;margin:0 0 48px;max-width:1100px}
footer .big.small-d{font-size:clamp(34px,3.6vw,54px)}
footer .big a{border-bottom:2px solid var(--dim);transition:border-color .3s}
footer .big a:hover{border-color:var(--paper)}
footer .cols{display:flex;flex-wrap:wrap;gap:20px 64px;font-size:15px;color:var(--mid)}
footer .cols a:hover{color:var(--paper)}
footer .base{margin-top:96px;padding-top:24px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;font-size:12.5px;color:var(--dim)}

/* ================= Other-work pages ================= */
.wk-hero .title{position:absolute;left:var(--gut);bottom:52px;z-index:2}
.wk-hero .title .g{font-size:14px;letter-spacing:.22em;text-transform:uppercase;color:#e7e4dc}
.wk-hero .title h1{margin:10px 0 0;font-family:var(--serif);font-weight:400;text-transform:uppercase;letter-spacing:.01em;font-size:clamp(48px,7.4vw,116px);line-height:.95}
.wk-hero .vbg{transform-origin:center}
.wk-hero .fv{margin-top:14px;font-size:var(--caps);letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.82)}
.wk-hero .vbg iframe{pointer-events:none}
/* bespoke player controls */
.pc{position:absolute;right:var(--gut);bottom:52px;z-index:3;display:flex;align-items:center;gap:14px;width:min(460px,46vw);color:#fff}
.pc button{width:44px;height:44px;border-radius:50%;border:1px solid rgba(255,255,255,.45);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:border-color .3s,background .3s;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:rgba(0,0,0,.18)}
.pc button:hover{border-color:#fff;background:rgba(0,0,0,.35)}
.pc svg{width:16px;height:16px;fill:#fff}
.pc .bar{position:relative;flex:1;height:44px;display:flex;align-items:center;cursor:pointer;touch-action:none}
.pc .bar i{position:absolute;left:0;right:0;height:2px;background:rgba(255,255,255,.28);border-radius:2px}
.pc .bar b{position:absolute;left:0;height:2px;background:#fff;border-radius:2px;width:0}
.pc .bar s{position:absolute;top:50%;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:#fff;left:0;transform:scale(0);transition:transform .2s;text-decoration:none}
.pc .bar:hover s,.pc .bar.drag s{transform:scale(1)}
.pc .tm{font-family:var(--mono);font-size:12px;letter-spacing:.06em;min-width:92px;text-align:right;color:rgba(255,255,255,.85)}
@media (max-width:760px){.pc{left:var(--gut);right:var(--gut);width:auto;bottom:16px}.wk-hero .title{bottom:84px}.pc .tm{display:none}}
.wk-hero .scroll-cue{display:none}

.wk-stage{position:relative}
.wk-pin{position:sticky;top:0;height:100vh;overflow:hidden}
.wk-title{position:fixed;left:var(--gut);bottom:36px;z-index:30;mix-blend-mode:difference;color:#fff;pointer-events:none;opacity:0;transition:opacity .4s}
.wk-title .sw{position:relative;overflow:hidden}
.wk-title .sw>span{display:block;transition:transform .7s cubic-bezier(.65,0,.35,1),opacity .5s}
.wk-title .sw>span.out{position:absolute;left:0;top:0;transform:translateY(-100%);opacity:0}
.wk-title .sw>span.in{transform:translateY(100%);opacity:0}
.wk-title .g{font-size:var(--caps);letter-spacing:.22em;text-transform:uppercase}
.wk-title .n{margin-top:6px;font-family:var(--serif);text-transform:uppercase;letter-spacing:.01em;font-size:clamp(40px,5vw,78px);line-height:1}
.wk-row{position:absolute;left:0;display:flex;align-items:flex-start;padding-inline:var(--gut);will-change:transform}
.blk{flex:0 0 auto;position:relative}
.it{position:relative;overflow:hidden;background:#111;will-change:transform}
.it video,.it img{width:100%;height:100%;object-fit:cover;display:block}
.it.ph{background:repeating-linear-gradient(135deg,#171b19 0 14px,#141816 14px 28px)}
.blk.b2x2,.blk.sph{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
.blk.txt{display:flex;flex-direction:column;gap:18px;overflow-y:auto;scrollbar-width:none;padding-right:8px}
.blk.txt::-webkit-scrollbar{display:none}
.blk.txt .k{font-size:var(--caps);letter-spacing:.22em;text-transform:uppercase;color:var(--mid)}
.blk.txt h2{margin:0;font-family:var(--serif);font-weight:400;text-transform:uppercase;font-size:clamp(34px,3vw,48px);line-height:1}
.blk.txt p{margin:0;font-size:15px;line-height:1.7;color:#d6d3cc}
.vc{position:absolute;right:12px;bottom:12px;z-index:2;display:flex;gap:8px}
.vc button{height:40px;min-width:40px;padding:0 12px;border-radius:999px;display:flex;align-items:center;justify-content:center;gap:8px;background:rgba(0,0,0,.45);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.35);color:#fff;font-size:11px;letter-spacing:.16em;text-transform:uppercase}
.vc svg{width:15px;height:15px;fill:#fff}
.replay{position:absolute;inset:0;z-index:3;display:none;align-items:center;justify-content:center;background:rgba(0,0,0,.45)}
.it.ended .replay{display:flex}
.replay span{display:flex;align-items:center;gap:10px;padding:12px 20px;border:1px solid rgba(255,255,255,.6);border-radius:999px;font-size:var(--caps);letter-spacing:.18em;text-transform:uppercase;color:#fff}
.replay svg{width:16px;height:16px;fill:#fff}
.wk-foot{display:flex;justify-content:space-between;gap:16px;padding:44px var(--gut) 64px;border-top:1px solid var(--line);font-size:14px;color:var(--mid)}
.wk-foot a:hover{color:var(--paper)}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .scroll-cue span,.vbg img{animation:none}
  .w{color:var(--paper)}
  .dvd,.dvd .bg,.dvd .fg,.dvd .detail,.hl .subl,.burger i{transition:none}
  .bio .photo img{transform:none}
}
.hero .vbg{transform:scale(var(--hs,1))}
.blk.b2x2,.blk.sph{grid-template-rows:repeat(2,minmax(0,1fr))}
.blk.b2x2 .it,.blk.sph .it{height:100%}

@media (max-width:760px){
  .sec{padding-block:80px}
  .bio{padding-block:96px 72px}
  .logos{padding-block:56px 64px}
  .reel>.wrap{padding-top:72px}.reel .cap{padding-bottom:72px}
  .projects{padding-top:72px}
  .projects .wrap[style]{padding-block:20px 72px!important}
  .sec-head{margin-bottom:28px}
  footer{padding-top:90px}
}

/* ---- round 6 ---- */
@media (orientation:landscape) and (max-height:520px){.hero{min-height:0}}
.wk-hero .title .g,.wk-hero .title h1,.wk-hero .pc{transition:opacity .8s ease}
.wk-hero.idle .title .g,.wk-hero.idle .title h1,.wk-hero.idle .pc{opacity:0;pointer-events:none}
.wk-hero.idle{cursor:none}
.wk-hero.fit .vbg{background:#000}
.wk-hero.fit .vbg iframe{width:100vw!important;height:56.25vw!important;min-height:0!important;min-width:0!important}
.blk.txt{padding:4px 36px 0;justify-content:flex-start}
.blk.txt p{font-size:15px;line-height:1.8}
@media (max-width:760px){.blk.txt{padding:4px 12px 0}}
.sep{flex:0 0 auto;width:1px;margin:0 44px;position:relative;background:linear-gradient(to bottom,transparent,#3a403c 12%,#3a403c 88%,transparent)}
.sep span{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-90deg);white-space:nowrap;background:var(--ink);padding:0 14px;font-size:var(--caps);letter-spacing:.22em;text-transform:uppercase;color:var(--mid)}
.it.vid{cursor:zoom-in}
.it.vid:focus-visible{outline:2px solid #fff;outline-offset:3px}
.lb{position:fixed;inset:0;z-index:80;display:flex;align-items:center;justify-content:center;background:rgba(8,10,9,.55);-webkit-backdrop-filter:blur(18px) grayscale(.7) brightness(.6);backdrop-filter:blur(18px) grayscale(.7) brightness(.6);opacity:0;visibility:hidden;transition:opacity .4s,visibility .4s}
.lb.open{opacity:1;visibility:visible}
.lb-box{position:relative;display:flex;flex-direction:column;align-items:center;gap:14px;transform:scale(.96);transition:transform .45s cubic-bezier(.2,.7,.2,1)}
.lb.open .lb-box{transform:none}
.lb video{display:block;height:min(80vh,calc(100vw * 16 / 9 - 40px));width:auto;max-width:92vw;background:#000;box-shadow:0 30px 80px rgba(0,0,0,.5)}
.lb.wide video{width:min(88vw,calc(80vh * 16 / 9));height:auto}
.lb .lb-pc{position:static;width:100%;max-width:520px;min-width:280px}
.lb-x{position:absolute;top:20px;right:var(--gut);width:48px;height:48px;border-radius:50%;border:1px solid rgba(255,255,255,.5);display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.25)}
.lb-x:hover{border-color:#fff}
.lb-x svg{width:20px;height:20px;fill:#fff}
body.lb-open{overflow:hidden}

/* ---- round 7 ---- */
/* text blocks never scroll inside themselves (the page does the moving) */
.blk.txt{overflow:hidden}
/* project dividers: a thin line broken by the label, nothing behind it */
.sep{width:auto;background:none;display:flex;flex-direction:column;align-items:center;margin:0 40px;will-change:transform}
.sep::before,.sep::after{content:"";flex:1;width:1px}
.sep::before{background:linear-gradient(to bottom,transparent,#3a403c 30%)}
.sep::after{background:linear-gradient(to top,transparent,#3a403c 30%)}
.sep span{position:static;transform:rotate(180deg);writing-mode:vertical-rl;background:none;padding:18px 0}
@media (max-width:760px){.sep{margin:0 16px 0 0}.blk.txt{padding:0 4px 0 10px;gap:14px}.blk.txt p{line-height:1.6}}
/* showreel reveal: the film stays put while its frame opens upwards over it */
.reel .frame{overflow:hidden}
.reel .frame-in{position:absolute;inset:0;transform-origin:50% 40%;will-change:transform}

/* ---- Field Map (home page opening frame) ---- */
.fm{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);align-items:center;gap:clamp(24px,4vw,64px);min-height:min(100vh,980px);padding:110px var(--gut);border-top:1px solid var(--line);overflow:hidden}
.fm-text{position:relative;z-index:1;min-width:0}
.fm-h{margin:16px 0 18px;font-family:var(--serif);font-weight:400;font-size:clamp(44px,6.2vw,104px);line-height:.95;letter-spacing:-.005em;text-wrap:balance}
.fm-h em{font-style:italic;color:var(--flap)}
.fm p{margin:0;max-width:44ch;font-size:16px;line-height:1.65;color:var(--mid)}
.fm-btn{display:inline-flex;align-items:center;height:48px;margin-top:28px;padding:0 22px;border-radius:999px;border:1px solid rgba(238,235,228,.35);font-size:var(--caps);letter-spacing:.18em;text-transform:uppercase;transition:border-color .3s,background .3s}
.fm-btn:hover{border-color:var(--paper);background:rgba(238,235,228,.06)}
.fm-globe{position:relative;display:block;width:100%;aspect-ratio:1;max-height:82vh;justify-self:center}
.fm-globe canvas{position:absolute;left:-25%;top:-25%;width:150%;height:150%;pointer-events:none}
.fm-globe.off{display:none}
@media (max-width:900px){.fm{grid-template-columns:1fr;padding-block:72px;min-height:0}.fm-globe{order:-1;max-width:520px;margin-inline:auto}.fm p{font-size:15px}}

/* showreel: a white disc with the play arrow cut out (the film shows through), our own controls, full screen */
.reel-play{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:center;width:100%;cursor:pointer}
.reel-play svg{width:clamp(76px,8.5vw,112px);height:auto;fill:rgba(255,255,255,.94);filter:drop-shadow(0 8px 30px rgba(0,0,0,.45)) drop-shadow(0 2px 6px rgba(0,0,0,.3));opacity:0;transform:scale(.86);transition:opacity .35s ease,transform .5s cubic-bezier(.2,.7,.2,1)}
.reel .frame:not(.playing):hover .reel-play svg,.reel-play:focus-visible svg{opacity:1;transform:none}
.reel-play:focus-visible{outline:none}
@media (hover:none){.reel .frame:not(.playing) .reel-play svg{opacity:1;transform:none}}
.reel-pc{left:clamp(16px,2.4vw,32px);right:clamp(16px,2.4vw,32px);bottom:clamp(14px,2vw,26px);width:auto;z-index:3;opacity:0;pointer-events:none;transition:opacity .45s ease}
.reel .frame.started .reel-pc{opacity:1;pointer-events:auto}
.reel .frame.playing.idle .reel-pc{opacity:0;pointer-events:none}
.reel .frame.playing.idle{cursor:none}
.reel-pc .tm{min-width:92px}
.reel .frame:fullscreen{width:100vw;height:100vh;aspect-ratio:auto;max-height:none}
.reel .frame:-webkit-full-screen{width:100vw;height:100vh}
/* the showreel holds still for a moment before the page carries on */
.reel-pin{position:relative;z-index:0;margin-top:-56.25vw;height:calc(112.5vw + 15vh)}
.reel-pin .frame{position:sticky;top:max(0px,calc((100vh - 56.25vw) / 2))}
@media (max-width:760px){.reel-pin{height:calc(112.5vw + 10vh)}.reel-pc .tm{display:none}.reel-pc{gap:8px}.reel-pc button{width:38px;height:38px}}
.fm-n{display:inline-block;text-align:right;font-variant-numeric:tabular-nums;transition:text-shadow .4s}
.fm-n.counting{}

/* a little weather drifting across the home page */
.drift{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}
.drift img,.drift canvas{position:absolute;left:0;top:0;max-width:none;height:auto;opacity:0;will-change:transform,opacity;user-select:none}
#index{position:relative}#index>*:not(.drift){position:relative;z-index:1}
.menu>*:not(.drift){position:relative;z-index:1}
@media (prefers-reduced-motion:reduce){.drift{display:none}}
/* on the Field Map screen the clouds drift in front of the globe (faintly), behind the words */
.fm .fm-drift{z-index:0}
.fm .fm-globe{z-index:1}   /* the clouds pass behind the globe */
.fm .fm-text{z-index:3}

/* ---------- Other work: gallery preview block, full-screen gallery grid, photo viewer ---------- */
/* a wider pause, with a faint rule, between the films and the photo gallery */
.blk.galh{margin-left:clamp(56px,9vw,150px)}
.blk.galh::before{content:"";position:absolute;top:8%;bottom:8%;left:calc(clamp(56px,9vw,150px) / -2 - 8px);width:1px;background:linear-gradient(to bottom,transparent,#3a403c 15%,#3a403c 85%,transparent)}
.blk.galh.join{margin-left:0}.blk.galh.join::before{display:none}
.blk.galh .gh{position:relative;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1.5fr 1fr;gap:6px;width:100%;height:100%;padding:0;border:0;background:none;cursor:pointer;text-align:left}
.gh>span{position:relative;overflow:hidden;background:#151816}
.gh img{width:100%;height:100%;object-fit:cover;display:block;transition:transform 1.1s cubic-bezier(.2,.7,.2,1),filter .5s}
.gh:hover img,.gh:focus-visible img{transform:scale(1.05)}
.gh .gh-a{grid-column:1/-1}
.gh .gh-c i{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(8,10,9,.55);font-style:normal;font-family:var(--serif);font-size:clamp(28px,2.6vw,40px);color:var(--paper);transition:background .4s}
.gh:hover .gh-c i{background:rgba(8,10,9,.35)}
.gh .gh-l{position:absolute;left:0;right:0;top:0;padding:16px 18px 40px;background:linear-gradient(rgba(8,10,9,.7),transparent);display:flex;flex-direction:column;gap:4px;pointer-events:none}
.gh .gh-l b{font-weight:400;font-family:var(--serif);font-size:clamp(22px,2vw,30px);line-height:1;color:var(--paper)}
.gh .gh-l small{font-size:var(--caps);letter-spacing:.2em;text-transform:uppercase;color:#d6d3cc}
.gh:focus-visible{outline:1px solid var(--paper);outline-offset:4px}
.pgrid{position:fixed;inset:0;z-index:79;display:flex;flex-direction:column;background:rgba(10,12,11,.97);opacity:0;visibility:hidden;transition:opacity .4s,visibility .4s}
.pgrid.open{opacity:1;visibility:visible}
.pg-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;padding:24px var(--gut) 20px}
.pg-hd .k{font-size:var(--caps);letter-spacing:.22em;text-transform:uppercase;color:var(--mid)}
.pg-hd h2{margin:8px 0 0;font-family:var(--serif);font-weight:400;text-transform:uppercase;font-size:clamp(30px,3.4vw,52px);line-height:1}
.pg-hd .lb-x{position:static;flex-shrink:0}
.pg-body{flex:1;overflow-y:auto;padding:0 var(--gut) 60px;overscroll-behavior:contain}
.pg-rows{display:flex;flex-wrap:wrap;gap:8px}
.pg-it{position:relative;flex:0 0 auto;padding:0;border:0;overflow:hidden;background:#151816;cursor:zoom-in;transform:translateY(16px);opacity:0;transition:opacity .6s,transform .8s cubic-bezier(.2,.7,.2,1)}
.pgrid.open .pg-it{transform:none;opacity:1}
.pg-it img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .9s cubic-bezier(.2,.7,.2,1),filter .4s}
.pg-it:hover img{transform:scale(1.04)}
/* only dim the others while the pointer is on a photo, not on the gaps between them */
.pg-rows:has(.pg-it:hover) .pg-it:not(:hover) img{filter:brightness(.7)}
@media (max-width:760px){.pg-rows{gap:5px}.pg-hd{padding-top:18px}}
.plb{position:fixed;inset:0;z-index:81;display:flex;align-items:center;justify-content:center;background:rgba(8,10,9,.86);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);opacity:0;visibility:hidden;transition:opacity .4s,visibility .4s;touch-action:pan-y}
.plb.open{opacity:1;visibility:visible}
.plb-fig{margin:0;display:flex;flex-direction:column;align-items:center;gap:14px;transform:scale(.97);transition:transform .45s cubic-bezier(.2,.7,.2,1)}
.plb.open .plb-fig{transform:none}
.plb-fig img{display:block;max-width:min(calc(100vw - 2*var(--gut) - 150px),1800px);max-height:82vh;width:auto;height:auto;box-shadow:0 30px 80px rgba(0,0,0,.5);transition:opacity .25s;user-select:none;-webkit-user-drag:none}
.plb.swap .plb-fig img{opacity:.25}
.plb-n{font-family:var(--mono,monospace);font-size:12px;letter-spacing:.14em;color:var(--mid)}
.plb-nav{position:absolute;top:50%;transform:translateY(-50%);width:52px;height:52px;border-radius:50%;border:1px solid rgba(255,255,255,.4);background:rgba(0,0,0,.25);display:flex;align-items:center;justify-content:center;transition:border-color .25s}
.plb-nav:hover{border-color:#fff}
.plb-nav svg{width:22px;height:22px;fill:#fff}
.plb-nav.prev{left:var(--gut)}.plb-nav.next{right:var(--gut)}
@media (max-width:760px){.plb-nav{top:auto;bottom:22px;transform:none;width:46px;height:46px}.plb-fig img{max-width:94vw;max-height:74vh}}

/* ---------- Other work: 12-tile block, Vimeo film in the row, and its large viewer ---------- */
.blk.t12{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr))}
.blk.t12 .it{height:100%}
.blk.vim .it.vm{cursor:zoom-in;background:#000}
.vm-f{position:absolute;inset:0;pointer-events:none}
.vm-f iframe{position:absolute;inset:0;width:100%;height:100%;border:0;opacity:0;transition:opacity .6s}
.it.vm.on .vm-f iframe{opacity:1}
.it.vm:focus-visible{outline:2px solid #fff;outline-offset:3px}
.vlb-box{position:relative}
.vlb-f{position:relative;background:#000;box-shadow:0 30px 80px rgba(0,0,0,.5)}
.vlb-f iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.vlb .vlb-pc{position:absolute;left:50%;right:auto;bottom:18px;transform:translateX(-50%);width:min(560px,calc(100% - 32px));padding:6px 10px;border-radius:999px;background:rgba(0,0,0,.35);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:opacity .5s}
.vlb.idle .vlb-pc,.vlb.idle .lb-x{opacity:0;pointer-events:none}
.vlb.idle{cursor:none}
.vlb .lb-x{transition:opacity .5s,border-color .3s}
@media (max-width:760px){.vlb .vlb-pc{bottom:10px;gap:8px}.vlb .vlb-pc .tm{display:none}.vlb .vlb-pc button{width:38px;height:38px}}
/* phones: longer project names (e.g. Iniala Beach House) stay on one line under the row */
@media (max-width:760px){.wk-title .n{font-size:min(40px,8vw);white-space:nowrap}}

/* ---------- Other work: tiled photo gallery along the row, single photo at its own shape, Vimeo holding image ---------- */
.blk.gal{position:relative}
.blk.gal .gi{position:absolute;display:block;padding:0;border:0;overflow:hidden;background:#151816;cursor:zoom-in}
.blk.gal .gi img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .9s cubic-bezier(.2,.7,.2,1),filter .5s}
.blk.gal .gi:hover img,.blk.gal .gi:focus-visible img{transform:scale(1.04)}
.blk.gal .gi:focus-visible{outline:1px solid var(--paper);outline-offset:3px}
.vm-poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.vm-poster:not([src]){display:none}

/* ---------- Fine art: hero slideshow, the 10 m roll strip, smaller dividers inside a project, title cards ---------- */
.wk-hero .vbg img.sl{opacity:0;transition:opacity 1.6s ease}
.wk-hero .vbg img.sl.on{opacity:1}
.wk-hero .fv{transition:opacity .35s}
.wk-hero .fv.swap{opacity:0}
.blk.strip{display:flex;flex-direction:column;justify-content:center;gap:14px}
.blk.strip .it{height:var(--sh,40%) !important;flex:0 0 auto;background:none}
.blk.strip .it img{object-fit:contain}
.blk.strip .cap{font-size:var(--caps);letter-spacing:.2em;text-transform:uppercase;color:var(--mid)}
.sep.sub{margin:0 28px}
.sep.sub span{color:var(--dim);font-size:10.5px;letter-spacing:.24em}
.sep.sub{justify-content:center}
.sep.sub::before,.sep.sub::after{flex:0 0 22%;opacity:.6}
.blk.txt.tt{justify-content:center}
.blk.txt.tt h2{font-size:clamp(40px,4.4vw,72px);margin:6px 0 4px}
.blk.txt.tt p{font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--mid)}
.pc[hidden]{display:none!important}
.blk.strip .cap{white-space:nowrap}

/* pages that centre their text blocks top to bottom (fine art) */
.wk-row.mid .blk.txt{justify-content:safe center}
.wk-row.mid .blk.txt.pair{justify-content:flex-start}
.wk-row.mid .blk.txt.tt{padding-right:0}
.wk-title .n{padding-bottom:.18em;margin-bottom:-.18em}   /* room for the tails of J and Q below the line */

/* fine art: title cards get room either side; a line break in their small print is kept */
.wk-row.mid .blk.txt.tt{margin:0 clamp(24px,3.2vw,60px)}
.blk.txt.tt p{white-space:pre-line}
/* photos that open large */
.blk.np .gi,.blk.tdx .gi{display:block;width:100%;height:100%;padding:0;border:0;background:#151816;overflow:hidden;cursor:zoom-in}
.blk.np .gi img,.blk.tdx .gi img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .9s cubic-bezier(.2,.7,.2,1)}
.blk.np .gi:hover img,.blk.tdx .gi:hover img{transform:scale(1.03)}
/* text with two detail photos underneath, in one column */
.blk.tdx{display:flex;flex-direction:column;justify-content:center;gap:36px;margin:0 clamp(40px,6vw,110px);background:none}
.td-t{display:flex;flex-direction:column;gap:16px}
.td-t p{margin:0;font-size:15px;line-height:1.7;color:#d6d3cc}
.td-pair{display:flex;gap:10px}
.td-c{margin-top:12px;text-align:center;font-size:var(--caps);letter-spacing:.2em;text-transform:uppercase;color:var(--mid)}
@media (max-width:760px){.blk.tdx{margin:0 8px}.td-t p{line-height:1.6}}
/* full-screen photo: artwork title above the count */
.plb-fig figcaption{display:flex;flex-direction:column;align-items:center;gap:6px}
.plb-t{font-family:var(--serif);font-size:clamp(18px,1.6vw,24px);color:var(--paper)}
.plb-t[hidden],.plb-n[hidden]{display:none}
.plb.one .plb-nav{display:none}
.wk-row.mid .blk.txt.tt{padding-left:0}
/* title cards break only where the words are set to break, whatever the screen or font */
.blk.txt.tt h2{white-space:pre}

/* menu + index: just the names, no small descriptions */
.hl .m{display:none}
/* Other Work: the sub-list fades in once there is room for it, instead of sliding out from under a hard edge */
.hl .subl a{transform:translateY(6px);transition:color .3s,transform .4s cubic-bezier(.2,.7,.2,1),opacity .3s ease}
.hl li.expanded .subl>div{overflow:visible}   /* once open, nothing is clipped by the edge of the list */

/* documentary cards: once opened with Read more, the full text scrolls inside the card (phones included) */
.doc .card .desc.full{overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch}
.doc .card .desc.full p{overflow:visible;flex-shrink:0;-webkit-line-clamp:unset}
.doc .card .desc .rm{flex-shrink:0}
@media (max-width:900px){.bio .photo figcaption{text-align:center}}
/* home page: tighter spacing between sections (about a quarter less) */
.sec{padding-block:96px}
.sec-head{margin-bottom:36px}
.bio{padding-block:112px 88px}
.logos{padding-block:64px 72px}
.reel>.wrap{padding-top:84px}.reel .cap{padding-bottom:84px}
.projects{padding-top:84px}
footer{padding-top:100px}
.fm{padding-block:84px;min-height:min(88vh,880px)}
@media (max-width:900px){.fm{padding-block:60px;min-height:0}}
@media (max-width:760px){
  .sec{padding-block:64px}
  .bio{padding-block:80px 60px}
  .logos{padding-block:48px 52px}
  .reel>.wrap{padding-top:60px}.reel .cap{padding-bottom:60px}
  .projects{padding-top:60px}
  .projects .wrap[style]{padding-block:20px 60px!important}
  footer{padding-top:72px}
}
/* "Copied" note shown when an email link is clicked */
.copied-tip{position:fixed;z-index:200;transform:translate(-50%,-100%) translateY(6px);padding:7px 12px;border-radius:999px;background:rgba(238,235,228,.95);color:#0b0d0c;font-size:11px;letter-spacing:.16em;text-transform:uppercase;pointer-events:none;opacity:0;transition:opacity .25s,transform .35s cubic-bezier(.2,.7,.2,1)}
.copied-tip.on{opacity:1;transform:translate(-50%,-100%)}

/* Field Map: the countries number as an odometer */
.fm-n.reel-n{display:inline-flex;vertical-align:top;height:.95em;min-width:0;overflow:visible}
/* each reel window is taller than the line (so tall numerals are never clipped) but pulled in so the line height doesn't change */
.fm-n .rc{display:inline-block;height:1.3em;margin:-.175em -.06em;padding:0 .06em;overflow:hidden;-webkit-mask-image:linear-gradient(to bottom,transparent,#000 9%,#000 91%,transparent);mask-image:linear-gradient(to bottom,transparent,#000 9%,#000 91%,transparent)}
.fm-n .rs{display:block;transform-origin:50% 0;will-change:transform,filter}
.fm-n .rs i{display:block;height:1.3em;line-height:1.3em;font-style:inherit;text-align:center}
/* project banners: full colour; the one under the pointer zooms in and the others dim slightly */
.dvd .bg{filter:none}
.stack:has(.dvd:hover) .dvd:not(:hover):not(.open) .bg,.stack:has(.dvd:focus-visible) .dvd:not(:focus-visible):not(.open) .bg{filter:grayscale(.65) brightness(.6)}
@media (hover:none){.stack .dvd .bg{filter:none!important}}

/* projects: the description sits just under the title when a project opens (no blur panel) */
.dvd .detail{top:96px;bottom:auto}
.dvd.open::before{background:linear-gradient(to bottom,rgba(0,0,0,.6),rgba(0,0,0,.38) 190px,rgba(0,0,0,0) 330px)}
@media (max-width:700px){.dvd .detail{top:84px;bottom:auto;padding:0 0 16px}}

/* ---- round 64: phones ---- */
.bar{touch-action:none}
.m-only{display:none}
.blk.txt .wrm{display:none}
.vm-hint{display:none}
.vlb-tap{display:none}
.txo{position:fixed;inset:0;z-index:85;background:var(--ink);opacity:0;visibility:hidden;transition:opacity .4s,visibility .4s}
.txo.open{opacity:1;visibility:visible}
.txo-in{position:absolute;inset:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:96px 28px 60px}
.txo .k{font-size:var(--caps);letter-spacing:.22em;text-transform:uppercase;color:var(--mid)}
.txo h2{margin:10px 0 26px;font-family:var(--serif);font-weight:400;text-transform:uppercase;font-size:40px;line-height:1}
.txo p{margin:0 0 18px;font-size:15px;line-height:1.7;color:#d6d3cc}
.txo .lb-x{z-index:2}
@media (max-width:760px){
  .d-only{display:none}.m-only{display:block}
  /* text blocks: more room between the words and the pictures beside them */
  .blk.txt{padding:0 24px}
  .wk-row.mid .blk.txt.tt{padding:0}
  .blk.tdx{margin:0 26px}
  /* a long block is cut short, fading out above a Read more */
  .blk.txt.clip{overflow:hidden}
  .blk.txt.clip::after{content:'';position:absolute;left:0;right:0;bottom:0;height:110px;background:linear-gradient(rgba(13,15,14,0),var(--ink) 62%);pointer-events:none;z-index:1}
  .blk.txt.clip .wrm{display:inline-block;position:absolute;left:24px;bottom:4px;z-index:2;font-size:var(--caps);letter-spacing:.16em;text-transform:uppercase;color:var(--paper);background:none;border:0;border-bottom:1px solid rgba(255,255,255,.5);padding:8px 0 3px;font-family:inherit}
  /* exhibition titles: larger, and the same on every card */
  .blk.txt.tt h2{font-size:52px}
  /* titles above the film fade together, slowly, with a little blur */
  .wk-hero .title .g,.wk-hero .title h1{transition:opacity 1.4s ease,filter 1.4s ease;will-change:opacity,filter}
  .wk-hero.idle .title .g,.wk-hero.idle .title h1{opacity:0;filter:blur(6px)}
}
/* touch screens: a hint that a film opens full screen; taps on a full-screen film reach our controls */
@media (hover:none){
  .vm-hint{display:flex;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:2;align-items:center;gap:8px;height:36px;padding:0 14px 0 10px;border-radius:999px;background:rgba(0,0,0,.45);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.35);color:#fff;font-size:10px;letter-spacing:.16em;text-transform:uppercase;pointer-events:none}
  .vm-hint svg{width:14px;height:14px;fill:#fff}
  .vlb-tap{display:block;position:absolute;left:0;right:0;top:0;bottom:0;z-index:1}
  .vlb .vlb-pc{z-index:2}
}
/* ---- round 65 ---- */
.td-pair{justify-content:center}
.wk-row.gathering .it{will-change:transform}
@media (max-width:760px){
  .lb-box>.lb-x{top:10px;right:10px;width:40px;height:40px;z-index:5;background:rgba(0,0,0,.4);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
  .lb-box>.lb-x svg{width:18px;height:18px}
}
/* ---- round 66: the name waits for its typeface, then fades in at its final size ---- */
.idblock{transition:opacity .6s ease}
.idblock.wait{opacity:0;animation:idshow .6s 3s forwards}
@keyframes idshow{to{opacity:1}}
