@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&display=swap');500;600&family=IBM+Plex+Mono:wght@400;500&display=swap');
:root{color-scheme:dark;--bg:#101110;--ink:#e9e8df;--muted:#96988e;--line:#343630;--accent:#c3c9ae}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:var(--bg);color:var(--ink);font-family:'DM Sans',Arial,sans-serif}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:6px}header{height:104px;padding:0 5%;display:flex;align-items:center;justify-content:space-between}.brand{font-size:16px;font-weight:600;letter-spacing:.03em}.brand span{display:block;font:9px 'IBM Plex Mono',monospace;letter-spacing:.22em;margin-top:7px;color:var(--muted)}nav{display:flex;gap:38px;font-size:13px}nav sup{font:8px monospace;color:var(--muted);margin-left:6px}nav a:hover{color:var(--accent)}.hero{height:min(650px,67vw);min-height:430px;position:relative;margin:0 2%;overflow:hidden;background:#080908}.hero>img{position:absolute;width:100%;height:100%;object-fit:cover;object-position:75% center}.hero-copy{position:absolute;top:30%;left:5%;text-shadow:0 2px 24px #000}.eyebrow,.hero-bottom,.section-line,.intro>span,.disciplines,footer,.viewer-toolbar,.contact-note{font:10px 'IBM Plex Mono',monospace;letter-spacing:.08em}.eyebrow{color:var(--accent);margin:0 0 25px}h1{font-size:clamp(55px,7.8vw,130px);letter-spacing:-.065em;font-weight:400;margin:0;line-height:1.06}.occupation{font-size:clamp(23px,3vw,42px);margin:12px 0 0;font-weight:400;letter-spacing:-.03em}.hero-bottom{position:absolute;bottom:28px;left:5%;right:5%;display:flex;justify-content:space-between;font-size:9px}.hero-bottom a{border-bottom:1px solid #72776d;padding-bottom:5px}.work{padding:100px 7% 90px}.section-line{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding-top:18px}.section-line h2{font:inherit;margin:0;text-transform:uppercase}.section-line>span{color:var(--muted)}.intro{display:flex;align-items:end;justify-content:space-between;margin:45px 0 55px;gap:30px}.intro>p{font-size:clamp(28px,3.8vw,56px);line-height:1.1;letter-spacing:-.045em;margin:0}.intro>span{color:var(--muted);line-height:1.8}.gallery{display:grid;grid-template-columns:1fr 1fr;gap:60px 26px}.frame{margin:0}.frame:first-child{grid-column:1/-1}.image-button{padding:0;border:0;background:#050605;display:block;cursor:zoom-in;width:100%;overflow:hidden}.image-button img{width:100%;display:block;aspect-ratio:2.39;object-fit:contain;transition:transform .6s ease}.image-button:hover img{transform:scale(1.025)}figcaption{display:flex;justify-content:space-between;margin-top:14px;font:10px 'IBM Plex Mono',monospace;color:var(--muted);letter-spacing:.04em}figcaption span:first-child{color:var(--ink)}.about{border-top:1px solid var(--line);margin:0 7%;padding:75px 0 100px;display:grid;grid-template-columns:1fr 2fr}.about h2{font-size:clamp(32px,4.4vw,65px);line-height:1.08;letter-spacing:-.05em;font-weight:400;margin:0 0 32px}.about div>p{max-width:490px;color:#b1b3a9;line-height:1.7;font-size:16px}.disciplines{display:flex;gap:24px;margin-top:35px;color:var(--accent)}.contact{border-top:1px solid var(--line);padding:70px 7% 90px;background:#171914}.contact h2{font-size:clamp(60px,9vw,130px);letter-spacing:-.06em;font-weight:400;line-height:1;margin:0 0 28px}.contact>p:not(.eyebrow){color:var(--muted)}.contact-note{margin-top:35px}footer{padding:30px 5%;display:flex;justify-content:space-between;gap:20px;font-size:9px;color:var(--muted)}dialog{border:0;background:#0b0c0b;color:var(--ink);width:100vw;height:100dvh;max-width:none;max-height:none;padding:22px 4%;margin:0}dialog::backdrop{background:#0b0c0b}dialog[open]{display:flex;flex-direction:column;align-items:center;justify-content:center}.viewer-toolbar{position:absolute;top:24px;left:4%;right:4%;display:flex;justify-content:space-between;align-items:center}.viewer-toolbar button{background:none;border:0;font:inherit;cursor:pointer;padding:12px}dialog img{max-width:92%;max-height:78dvh;object-fit:contain}dialog .prev,dialog .next{position:absolute;top:48%;background:#151712aa;border:1px solid var(--line);padding:14px;cursor:pointer}.prev{left:1%}.next{right:1%}#caption{font:11px 'IBM Plex Mono',monospace;color:var(--muted)}.skip{position:fixed;left:10px;top:-100px;background:var(--ink);color:var(--bg);padding:12px;z-index:10}.skip:focus{top:10px}@media(max-width:640px){header{height:90px;padding:0 6%}.brand{font-size:13px}nav{gap:18px;font-size:11px}nav sup{display:none}.hero{height:auto;min-height:0;margin:0}.hero>img{position:relative;height:240px;object-position:85% center}.hero-copy{position:relative;top:auto;left:auto;padding:30px 7% 35px}.hero-copy .eyebrow{font-size:9px;margin-bottom:15px}h1{font-size:58px}.occupation{font-size:27px}.hero-bottom{position:relative;bottom:auto;left:auto;right:auto;margin:0 7%;padding-bottom:25px;font-size:8px;gap:20px}.hero-bottom>span{max-width:130px;line-height:1.6}.work{padding-top:55px}.intro{align-items:start;flex-direction:column;margin:35px 0}.intro>span{font-size:9px}.gallery{grid-template-columns:1fr;gap:32px}.frame:first-child{grid-column:auto}.section-line{font-size:9px}.about{grid-template-columns:1fr;padding:45px 0 60px}.about>.eyebrow{margin-bottom:35px}.contact{padding-top:45px;padding-bottom:60px}footer{flex-wrap:wrap;font-size:8px}footer>span:nth-child(2){display:none}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.image-button img{transition:none}}

.hero-media{position:absolute;inset:0}.hero-media img,.hero-media video{width:100%;height:100%;object-fit:cover;object-position:75% center}.hero-media video{position:absolute;inset:0}.video-toggle{position:absolute;right:5%;top:24px;background:#101110b8;border:1px solid #72776d;padding:10px 14px;font:10px monospace;cursor:pointer}.projects{padding:65px 7% 0}.project-list{margin-top:35px}.project-link{display:grid;grid-template-columns:100px 1fr 1fr 30px;gap:20px;align-items:center;border-bottom:1px solid var(--line);padding:30px 0}.project-link:hover{color:var(--accent)}.project-link h3{font-weight:400;font-size:35px;letter-spacing:-.04em;margin:0}.project-link span{font:11px 'IBM Plex Mono',monospace;color:var(--muted)}.socials{display:flex;flex-wrap:wrap;gap:24px;margin-top:25px;font-size:13px}.email{display:inline-block;font-size:clamp(18px,3vw,38px);border-bottom:1px solid var(--muted);margin-top:12px;overflow-wrap:anywhere}.project-page{padding:55px 7% 85px}.project-page h1{font-size:clamp(56px,10vw,130px);margin:30px 0}.project-meta{display:flex;flex-wrap:wrap;gap:24px;font:11px 'IBM Plex Mono',monospace;color:var(--accent);line-height:1.8}.project-copy{max-width:680px;color:#b1b3a9;line-height:1.7;font-size:18px;margin:35px 0}.film-slot{margin:45px 0;background:#171914;border:1px solid var(--line);padding:35px;min-height:150px}.film-slot:has(iframe){padding:0;aspect-ratio:16/9}.film-slot iframe{border:0;width:100%;height:100%}.film-slot p{color:var(--muted);font-size:14px}.text-link{border-bottom:1px solid var(--muted);padding-bottom:4px}.project-stills{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin:45px 0}.project-stills img{width:100%;display:block}.project-stills button{background:none;border:0;padding:0;cursor:zoom-in}.project-stills button:first-child{grid-column:1/-1}.page-next{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:30px;margin-top:60px;font:12px 'IBM Plex Mono',monospace}.hero-bottom{pointer-events:none}.hero-bottom a{pointer-events:auto}.hero-copy{pointer-events:none}.film-slot h2{font-weight:400}.work{padding-top:70px}
@media(max-width:640px){.hero-media{position:relative;height:240px}.hero-media img{display:block}.hero-copy{padding-bottom:35px}.video-toggle{top:16px;right:5%}.projects{padding-top:40px}.project-link{grid-template-columns:40px 1fr 20px;gap:12px}.project-link h3{font-size:29px}.project-link .role{grid-column:2;grid-row:2}.project-link .arrow{grid-column:3;grid-row:1}.project-stills{grid-template-columns:1fr}.project-stills button:first-child{grid-column:auto}.film-slot{padding:22px}.project-page{padding-top:30px}.section-line>span{font-size:8px}.project-meta{gap:10px;flex-direction:column}.hero-copy h1{font-size:clamp(42px,12vw,58px)}}

body{font-family:'Space Grotesk',Arial,sans-serif}.dynamic-home{--shade:.22;--name-size:7vw}.dynamic-home header{position:absolute;inset:0 0 auto;z-index:3;color:#fff;background:linear-gradient(#0007,transparent);height:95px}.dynamic-home .brand{font-weight:500}.dynamic-home .hero{margin:0;height:100svh;min-height:560px}.dynamic-home .hero-media{position:absolute;inset:0}.dynamic-home .hero-media>img{position:absolute;inset:0;z-index:0}.dynamic-home .hero-media>video{position:absolute;inset:0;z-index:1;object-position:center;width:100%;height:100%;object-fit:cover}.dynamic-home .hero-media:after{content:'';position:absolute;inset:0;background:rgba(0,0,0,var(--shade));z-index:2;pointer-events:none}.dynamic-home .hero-copy{z-index:2;top:auto;bottom:16%;left:6%}.dynamic-home h1{font-size:clamp(42px,var(--name-size),120px);letter-spacing:-.055em}.dynamic-home .occupation{font-size:22px}.dynamic-home .hero-copy .eyebrow{font-family:inherit;font-size:10px;letter-spacing:.18em;color:#ddd}.dynamic-home .hero-bottom{z-index:2;left:6%;right:6%}.hero-pause{position:absolute;z-index:3;bottom:82px;right:6%;background:#0004;border:1px solid #fff5;border-radius:25px;padding:10px 17px;font-size:11px;cursor:pointer}.visual-work{padding:70px 6% 60px}.work-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.work-heading h2{font-size:24px;font-weight:400;letter-spacing:-.04em}.work-heading>span{font-size:10px;color:var(--muted);letter-spacing:.1em}.project-cards{display:grid;grid-template-columns:1fr 1fr;gap:24px}.project-card{position:relative;aspect-ratio:1.25;overflow:hidden;background:#070807;display:flex;align-items:end;padding:35px}.project-card:after{content:'';position:absolute;inset:0;background:linear-gradient(transparent 25%,#000b)}.project-card>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .8s}.project-card:hover>img{transform:scale(1.06)}.project-card>div,.project-card>b{position:relative;z-index:1}.project-card span{font-size:10px;letter-spacing:.12em;color:#bfc0b6}.project-card h3{font-size:clamp(30px,4vw,65px);letter-spacing:-.05em;font-weight:400;margin:12px 0}.project-card p{font-size:11px;color:#c1c3b8}.project-card>b{margin-left:auto;font-size:26px;font-weight:400}.archive-open{display:flex;justify-content:space-between;width:100%;padding:26px 0;margin-top:26px;border:0;border-top:1px solid var(--line);background:none;text-align:left;cursor:pointer;font-size:14px}.content-panel{inset:0;max-width:none;max-height:none;width:100%;height:100dvh;padding:100px 8%;margin:0;background:#101110;border:0;overflow:auto}.content-panel[open]{display:block}.content-panel>button{position:fixed;right:6%;top:30px;background:#101110;border:1px solid var(--line);padding:12px 20px;cursor:pointer;z-index:2}.content-panel h2{font-size:clamp(45px,8vw,110px);font-weight:400;letter-spacing:-.05em;line-height:1.05}.content-panel>p:not(.eyebrow){max-width:650px;font-size:clamp(20px,3vw,36px);line-height:1.45;color:#b1b3a9}.archive-images{display:grid;grid-template-columns:1fr 1fr;gap:24px}.archive-images img{width:100%}.preview-controls{position:fixed;right:20px;top:110px;z-index:8;background:#171914f5;border:1px solid #555;padding:22px;width:280px;box-shadow:0 10px 40px #0006;font-size:12px}.preview-controls h2{font-size:18px;margin-top:0}.preview-controls label{display:block;margin:18px 0}.preview-controls input,.preview-controls select{display:block;width:100%;margin-top:8px}.preview-controls button{border:1px solid #777;background:#272a23;padding:10px;cursor:pointer}.preview-controls p{font-size:11px;color:#aaa;line-height:1.6}.motion-off *{transition:none!important;scroll-behavior:auto!important}@media(max-width:640px){.dynamic-home .hero{min-height:520px}.dynamic-home .hero-media{height:100%}.dynamic-home .hero-copy{position:absolute;padding:0;bottom:19%;left:7%}.dynamic-home .hero-bottom{position:absolute;margin:0;bottom:25px;padding:0}.dynamic-home .hero-copy h1{font-size:clamp(42px,var(--name-size),68px)}.project-cards{grid-template-columns:1fr}.project-card{aspect-ratio:1.15;padding:24px}.work-heading>span{display:none}.archive-images{grid-template-columns:1fr}.content-panel{padding-top:100px}.dynamic-home header{height:90px}.preview-controls{top:90px;right:10px;width:250px}.hero-pause{bottom:90px}}

/* Full-width panoramic header and project covers */
.dynamic-home .hero{width:100%;height:auto;aspect-ratio:2.36;min-height:400px;max-height:780px;margin:0}.dynamic-home h1,.dynamic-home .occupation,.dynamic-home .brand{color:#fff}.dynamic-home .hero-copy{bottom:22%}.project-cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.project-card{aspect-ratio:.92;padding:25px}.project-card h3{font-size:clamp(27px,3.2vw,52px)}.project-card.cyaphine>img{object-position:80% center}.visual-work{padding-top:35px}.photo-page{padding:60px 6%}.photo-page h1{font-size:clamp(40px,6vw,85px);margin:25px 0 45px}.photo-gallery{display:grid;grid-template-columns:1fr 1fr;gap:28px;margin-bottom:45px}.photo-gallery img{width:100%;height:100%;object-fit:contain;display:block}.photo-gallery a{background:#080908}.photo-gallery a:first-child{grid-column:1/-1}@media(max-width:800px){.project-cards{grid-template-columns:1fr}.project-card{aspect-ratio:1.5}.dynamic-home .hero{aspect-ratio:auto;height:65svh;min-height:420px}.dynamic-home .hero-copy{bottom:24%}.photo-gallery{grid-template-columns:1fr}.photo-gallery a:first-child{grid-column:auto}}

.dynamic-home{position:relative;isolation:isolate}.video-strip-background{position:absolute;left:0;width:100%;z-index:-1;pointer-events:none;image-rendering:pixelated;filter:brightness(.78)}.dynamic-home .visual-work,.dynamic-home footer{background:transparent}.dynamic-home .project-card{box-shadow:0 8px 35px #0003}

/* Solid black throughout; CYAPHINE uses the title image's brightest colour. */
:root{--bg:#000}body,.contact,.content-panel,dialog,dialog::backdrop,.film-slot,.photo-gallery a{background:#000}.video-strip-background{display:none!important}.dynamic-home .visual-work,.dynamic-home footer{background:#000}.cyaphine-page{--bg:#f4f4f4;--ink:#101010;--muted:#555;--line:#bcbcbc;--accent:#383838;color-scheme:light;background:#f4f4f4;color:var(--ink)}.cyaphine-page header,.cyaphine-page footer,.cyaphine-page .contact,.cyaphine-page .project-page,.cyaphine-page .film-slot{background:#f4f4f4;color:var(--ink)}.cyaphine-page .project-copy,.cyaphine-page .contact>p:not(.eyebrow){color:#444}.cyaphine-title-banner{width:100%;margin:0;background:#f4f4f4}.cyaphine-title-banner img{display:block;width:100%;height:auto;object-fit:contain}.cyaphine-page .project-page{padding-top:35px}.cyaphine-page .cyaphine-heading{font-size:clamp(32px,4vw,58px);margin:30px 0}.cyaphine-page .film-slot p{color:#555}
