:root{--bg:#0b0b0b;--fg:#ededeb;--accent:#bfdded;--line:#343434;--muted:#a3a3a0;--pad:clamp(20px,2vw,40px)}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--bg);color:var(--fg);font:16px/1.45 Arial,Helvetica,sans-serif}a{color:inherit;text-decoration:none}button{color:inherit;font:inherit;cursor:pointer}a,button{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:6px}button{border:0;background:none}img,video{display:block;width:100%;object-fit:cover}h1,h2,h3,p{margin:0;font-weight:400}h1,h2,h3{letter-spacing:-.055em;line-height:1.04}.label,nav,.filters,.view-switch,.project-meta,.copyright,.eyebrow{font:12px/1.5 "Courier New",monospace;letter-spacing:.02em;text-transform:uppercase}.skip{position:fixed;top:-80px;left:20px;z-index:100;background:var(--accent);color:#000;padding:12px}.skip:focus{top:10px}
.header{position:fixed;inset:0 0 auto;z-index:20;display:grid;grid-template-columns:25% 38% 1fr;align-items:center;gap:20px;padding:23px var(--pad);background:linear-gradient(#0008,transparent);transition:background .3s}.header.solid{background:#0b0b0bf5}.wordmark{font-size:24px;line-height:.9;letter-spacing:-.065em;max-width:180px}.calibration{display:flex;align-items:center;gap:7px;width:96%;height:20px}.calibration i{height:10px;background:var(--fg);flex:1}.calibration i:nth-child(-n+2){flex:5}.calibration i:nth-child(6){flex:.5}.calibration i:nth-child(7){flex:.25}.calibration i:nth-child(8){flex:.1}nav{display:flex;justify-content:space-between;gap:25px}nav a{white-space:nowrap}nav a:hover,nav a[aria-current=page]{color:var(--accent)}
.hero{height:100svh;min-height:540px;position:relative;overflow:hidden;background:#172325}.hero-media{position:absolute;inset:0;height:100%;filter:brightness(.68);animation:drift 18s ease-in-out infinite alternate}.hero:after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 35%,#0006)}.hero-title{position:absolute;bottom:24px;left:var(--pad);right:var(--pad);z-index:2;color:var(--accent);font-size:clamp(55px,12.15vw,240px);letter-spacing:-.07em;line-height:.88}.hero-title span{display:block}.hero-title .first{display:flex;justify-content:space-between;align-items:center}.cross{width:9vw;height:9vw;position:relative;margin-right:1vw;flex-shrink:0}.cross:before,.cross:after{content:"";position:absolute;background:var(--accent)}.cross:before{width:100%;height:2px;top:50%;left:0}.cross:after{height:100%;width:2px;left:50%;top:0}.hero-note{position:absolute;top:100px;left:var(--pad);z-index:2;color:#ddd}.motion-button{position:absolute;right:var(--pad);top:100px;z-index:3;font:12px "Courier New",monospace;border:1px solid #ffffff60;padding:8px 12px;text-transform:uppercase}.intro{padding:110px var(--pad) 100px}.intro .label{margin-bottom:25px;color:var(--muted)}.intro p{font-size:clamp(30px,4.55vw,80px);letter-spacing:-.05em;line-height:1.06}.work-section{padding:0 var(--pad) 100px}.section-top{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:32px}.section-top h2{font-size:clamp(32px,3vw,56px)}sup{font:12px "Courier New",monospace;vertical-align:top;letter-spacing:0;margin-left:7px}.grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.card{display:block;position:relative;overflow:hidden;border-radius:3px;background:#181818;aspect-ratio:1.85}.card img{height:100%;transition:transform .7s,filter .4s}.card:after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 40%,#000b);opacity:.5;transition:opacity .3s}.card-caption{position:absolute;left:24px;right:24px;bottom:22px;z-index:2;display:flex;justify-content:space-between;align-items:end;gap:12px}.card h3{font-size:clamp(26px,3vw,56px)}.card .label{text-align:right}.card:hover img,.card:focus-visible img{transform:scale(1.045);filter:brightness(.78)}.card:hover:after{opacity:1}.sample-tag{position:absolute;top:18px;left:22px;z-index:2;font:11px "Courier New",monospace;text-transform:uppercase;color:#fff8}.page{padding:150px var(--pad) 100px;min-height:70vh}.page-title{font-size:clamp(60px,10vw,160px);margin-bottom:65px}.toolbar{display:flex;justify-content:space-between;flex-wrap:wrap;gap:20px;margin-bottom:30px}.filters,.view-switch{display:flex;flex-wrap:wrap;gap:22px;font-size:14px}.filters button,.view-switch button{padding:0 0 7px;color:var(--muted);border-bottom:1px solid transparent}.filters button[aria-pressed=true],.view-switch button[aria-pressed=true]{color:var(--fg);border-color:var(--fg)}.list .card{aspect-ratio:auto;min-height:100px;display:grid;grid-template-columns:130px 1fr;gap:24px;border-radius:0;border-top:1px solid var(--line);background:none;padding:16px 0;overflow:visible}.list .card img{width:130px;height:74px}.list .card-caption{position:static;align-items:center}.list .card h3{font-size:clamp(24px,3.5vw,64px)}.list .card:after,.list .sample-tag{display:none}.list .card-caption .label{color:var(--muted)}.list .card:hover img{transform:none}.empty{padding:70px 0;color:var(--muted)}
.about-copy{font-size:clamp(32px,5vw,85px);line-height:1.07;letter-spacing:-.045em;max-width:1500px}.about-layout{display:grid;grid-template-columns:1fr 1fr;gap:7vw;margin-top:80px;align-items:start}.about-layout img{aspect-ratio:auto;height:auto;object-fit:contain}.about-layout p{font-size:clamp(24px,2.6vw,44px);line-height:1.2;letter-spacing:-.035em}.text-link{display:inline-block;border-bottom:1px solid var(--muted);padding-bottom:5px;margin-top:30px}.contact-row{display:grid;grid-template-columns:25% 1fr;gap:30px;padding:35px 0;border-top:1px solid var(--line)}.contact-row a,.contact-row .contact-value{font-size:clamp(25px,5vw,80px);letter-spacing:-.05em;line-height:1.1;overflow-wrap:anywhere}.contact-row .label{color:var(--muted)}.unconfigured{color:var(--muted)}
.project-page{padding-top:95px}.project-cover{width:100%;height:min(76vh,900px);object-fit:cover;background:#171717}.project-body{display:grid;grid-template-columns:1fr 1fr;gap:8vw;padding:60px var(--pad) 80px}.project-body h1{font-size:clamp(46px,6vw,105px);margin-bottom:25px}.project-meta{display:grid;grid-template-columns:1fr 1fr;gap:25px;font-size:14px}.project-meta dt{color:var(--muted);font-size:12px;margin-bottom:8px}.project-meta dd{margin:0;text-transform:none;font-family:Arial,sans-serif;font-size:16px}details{border-top:1px solid var(--line);padding:20px 0}details:last-child{border-bottom:1px solid var(--line)}summary{list-style:none;cursor:pointer;font:14px "Courier New",monospace;text-transform:uppercase;display:flex;justify-content:space-between}summary:after{content:"+"}details[open] summary:after{content:"−"}details p{padding-top:24px;max-width:55ch;color:#bbb;white-space:pre-line}.film-player{aspect-ratio:16/9;width:100%;border:0;background:#111}.still-gallery{display:grid;grid-template-columns:1fr 1fr;gap:24px;padding:0 var(--pad) 90px}.still-gallery img{aspect-ratio:16/10}.project-next{display:block;padding:40px var(--pad);border-top:1px solid var(--line);font-size:clamp(30px,5vw,80px);letter-spacing:-.05em}.project-next .label{display:block;margin-bottom:15px;color:var(--muted)}
footer{padding:60px var(--pad) 24px;border-top:1px solid var(--line)}.footer-top{display:grid;grid-template-columns:1fr 1fr 2fr;gap:40px;margin-bottom:90px}.footer-top .label{color:var(--muted);margin-bottom:15px}.footer-top a{display:block;width:fit-content;font-size:20px;line-height:1.6}.footer-top a:hover{color:var(--accent)}.footer-role{font-size:clamp(28px,4vw,70px);letter-spacing:-.04em;line-height:1.05}.footer-name{font-size:clamp(64px,15vw,280px);line-height:.85;letter-spacing:-.07em;white-space:nowrap;margin-bottom:35px}.copyright{display:flex;justify-content:space-between;gap:20px;color:var(--muted)}@keyframes drift{from{transform:scale(1)}to{transform:scale(1.055)}}
@media(min-width:1800px){.hero-title{font-size:12.1vw}}@media(max-width:800px){.header{grid-template-columns:1fr 1fr;padding-top:20px;gap:10px}.calibration{display:none}nav{gap:16px;justify-content:flex-end;font-size:12px}.wordmark{font-size:21px}.hero-title{font-size:12vw;bottom:40px}.hero{min-height:500px}.intro{padding:75px var(--pad)}.grid{gap:16px}.card-caption{left:14px;right:14px;bottom:15px;display:block}.card .label{text-align:left;margin-top:8px}.card h3{font-size:28px}.sample-tag{left:14px;top:12px}.about-layout,.project-body{grid-template-columns:1fr;gap:45px}.about-layout{margin-top:45px}.page{padding-top:125px}.contact-row{grid-template-columns:1fr;gap:14px}.footer-top{grid-template-columns:1fr 1fr}.footer-role{grid-column:1/-1}.footer-top{margin-bottom:70px}.list .card-caption{display:flex}.project-cover{height:55vh}.project-body{padding-top:35px}.still-gallery{gap:16px}.page-title{margin-bottom:40px}}
@media(max-width:520px){nav span{display:none}nav{gap:14px}.grid{grid-template-columns:1fr}.card{aspect-ratio:1.6}.hero-title{font-size:11.85vw;letter-spacing:-.075em}.hero-title .first{margin-bottom:7px}.cross{width:11vw;height:11vw}.hero-note{font-size:11px}.intro p{font-size:34px}.section-top h2{font-size:32px}.section-top .label{font-size:11px}.filters{gap:16px}.list .card{grid-template-columns:75px 1fr;gap:14px}.list .card img{width:75px;height:65px}.list .card-caption{display:block}.list .card h3{font-size:26px}.still-gallery{grid-template-columns:1fr}.copyright{font-size:10px}.footer-name{font-size:15vw}.footer-top a{font-size:18px}.contact-value{font-size:28px!important}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}

/* Identity sits on the opening image; practice follows beneath it. */
.hero-name{font-size:clamp(60px,15vw,280px);line-height:.9}.role-banner{padding:40px var(--pad) 0}.role-banner h2{font-size:clamp(32px,6.3vw,110px);line-height:1.06;letter-spacing:-.055em}.role-banner+.intro{padding-top:65px}

/* Preserve the framing of project sequences. */
.project-cover{height:auto;max-height:80vh;object-fit:contain}.still-gallery img{aspect-ratio:auto;height:auto}.still-gallery{align-items:start}

/* Portfolio refresh: retain the dark palette and let project images breathe. */
:root{--pad:clamp(22px,3.6vw,72px);--line:#303232;--muted:#a8aaa8}
.header{padding-top:26px;padding-bottom:26px}.header.solid{border-bottom:1px solid #ffffff12;backdrop-filter:blur(16px)}
.hero{height:88svh;min-height:540px}.hero-name{font-size:clamp(68px,15vw,280px);bottom:38px}.hero-media{filter:brightness(.76)}
.role-banner{padding-top:42px}.role-banner h2{font-size:clamp(30px,5vw,86px)}
.intro{display:grid;grid-template-columns:1fr 3fr;gap:40px;padding-bottom:110px}.intro p:not(.label){font-size:clamp(26px,3.1vw,52px);line-height:1.18;max-width:29ch}.intro .label{padding-top:8px}
.section-top{margin-bottom:38px;border-top:1px solid var(--line);padding-top:25px}.section-top h2{font-size:clamp(32px,4vw,64px)}
.grid{gap:56px 28px}.card{aspect-ratio:auto;border-radius:0;background:transparent;overflow:visible}.card:after{display:none}
.card-media{position:relative;aspect-ratio:16/9;overflow:hidden;background:#202525;border-radius:2px}.card-media img{width:100%;height:100%;object-fit:cover}.card-placeholder{height:100%;display:flex;align-items:center;justify-content:center;padding:35px;background:linear-gradient(140deg,#243339,#101819);color:var(--accent);font-size:clamp(30px,4vw,68px);letter-spacing:-.05em}
.card-open{position:absolute;right:18px;bottom:18px;width:40px;height:40px;border-radius:50%;background:#101010b3;display:grid;place-items:center;font-size:25px;opacity:0;transform:translateY(6px);transition:.25s}
.card:hover .card-open,.card:focus-visible .card-open{opacity:1;transform:none}.card:hover img,.card:focus-visible img{transform:scale(1.025);filter:brightness(.9)}
.card-caption{position:static;padding-top:18px;display:flex;align-items:start;gap:16px}.card-caption>div{display:flex;align-items:baseline;gap:13px;min-width:0}.card h3{font-size:clamp(21px,2vw,34px);line-height:1.15;letter-spacing:-.035em}.card-number{color:var(--muted);font-size:10px}.card-caption>.label{padding-top:5px;color:var(--muted);font-size:10px;flex-shrink:0}
.page-title{margin-bottom:48px}.toolbar{border-bottom:1px solid var(--line);padding-bottom:18px;margin-bottom:36px}
.list .card{grid-template-columns:180px 1fr;padding:22px 0;gap:28px}.list .card-media{width:180px;aspect-ratio:16/9}.list .card img{width:100%;height:100%}.list .card-caption{align-items:center;padding:0}.list .card h3{font-size:clamp(23px,3vw,48px)}.list .card-open{display:none}.list .card-placeholder{padding:10px;font-size:20px}
.project-page{padding-top:102px}.project-topline{display:flex;justify-content:space-between;gap:24px;padding:24px var(--pad);color:var(--muted)}.project-topline>a:hover{color:var(--fg)}
.film-player{display:block;width:calc(100% - 2 * var(--pad));margin:0 auto;border-radius:2px;max-height:82vh}.project-body{padding-top:65px;gap:6vw;grid-template-columns:1fr 1fr}.project-body h1{font-size:clamp(42px,5.5vw,88px);line-height:1.04}.project-body details p{font-size:clamp(18px,1.55vw,25px);line-height:1.6;letter-spacing:-.015em;color:#d0d2d0}.project-meta{margin-top:32px}.still-gallery{gap:28px;align-items:center}.still-gallery img:nth-child(3n){grid-column:1/-1;max-width:100%}.project-next{padding-top:55px;padding-bottom:65px}.project-next:hover{color:var(--accent)}
footer{margin-top:30px}.footer-name{color:var(--accent)}
@media(max-width:800px){.intro{grid-template-columns:1fr;gap:12px;padding-bottom:75px}.intro p:not(.label){max-width:none}.grid{gap:38px 20px}.card-caption{display:block}.card-caption>.label{display:block;text-align:left;margin:8px 0 0 25px}.project-body{grid-template-columns:1fr}.project-topline>span{display:none}.hero{height:80svh}.still-gallery{gap:18px}.calibration{display:none}}
@media(max-width:520px){.grid{gap:35px}.card{aspect-ratio:auto}.card h3{font-size:25px}.card-caption{display:flex}.card-caption>.label{margin:0;font-size:9px}.card-number{display:none}.list .card{grid-template-columns:94px 1fr;gap:16px}.list .card-media{width:94px}.list .card-caption{display:block}.list .card h3{font-size:22px}.list .card-caption>.label{margin-top:7px}.list .card-placeholder{font-size:14px}.hero-name{font-size:16vw;bottom:30px}.role-banner h2{font-size:8vw}.project-body{padding-top:38px;padding-bottom:45px}.project-body details p{font-size:19px}.still-gallery img:nth-child(3n){grid-column:auto}.card-open{opacity:1;transform:none;width:32px;height:32px;font-size:21px;right:12px;bottom:12px}.footer-name{font-size:14vw}}

/* Header without the calibration graphic. */
.header{grid-template-columns:1fr auto}.header nav{justify-content:flex-end;gap:clamp(16px,3vw,48px)}

/* Rotating project covers on the home page. */
.hero-gallery .hero-slide{animation:none;opacity:0;transition:opacity .75s ease;object-fit:cover}.hero-gallery .hero-slide.is-visible{opacity:1}.hero-gallery:after{pointer-events:none;background:linear-gradient(#0004,transparent 35%,#0009)}
.hero-controls{position:absolute;right:var(--pad);top:100px;z-index:3;display:flex;gap:8px;align-items:center}.hero-controls button{background:#080808a6;border:1px solid #ffffff50;min-height:42px;padding:9px 13px;font:11px "Courier New",monospace;text-transform:uppercase}.hero-controls button:hover{background:#080808e6}
.hero-project{position:absolute;top:160px;left:var(--pad);z-index:3;display:flex;gap:20px;max-width:calc(100% - 2 * var(--pad));text-shadow:0 1px 8px #000}.hero-project:hover{color:var(--accent)}#hero-count{white-space:nowrap;color:#dedede}.hero-gallery .hero-title{pointer-events:none}
@media(max-width:600px){.hero-gallery .hero-note{top:95px}.hero-controls{top:130px;left:var(--pad);right:auto}.hero-project{top:195px;gap:14px;font-size:10px;max-width:85%}.hero-controls button{min-height:44px}.hero-gallery .hero-media{object-position:center}}
@media(prefers-reduced-motion:reduce){.hero-gallery .hero-slide{transition:none}}

/* Solid navigation bar above the opening gallery. */
.header,.header.solid{height:80px;padding-top:0;padding-bottom:0;background:#000;backdrop-filter:none;border-bottom:1px solid #242424}
.hero-gallery{margin-top:80px;height:calc(88svh - 80px);min-height:460px}.hero-gallery .hero-note{top:24px}.hero-gallery .hero-controls{top:24px}.hero-gallery .hero-project{top:auto;bottom:28px}
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:600px){.header,.header.solid{height:72px}.hero-gallery{margin-top:72px;height:calc(80svh - 72px);min-height:400px}.hero-gallery .hero-note{top:22px}.hero-gallery .hero-controls{top:56px}.hero-gallery .hero-project{top:auto;bottom:24px}}

.hero-accessible-pause:focus{clip:auto;width:auto;height:auto;margin:0;top:24px;right:var(--pad);padding:12px;background:#000;color:#fff;z-index:5}

/* Show opening covers at their original brightness. */
.hero-gallery .hero-media{filter:none}.hero-gallery:after{display:none;background:none}

/* Camera cursor: mouse only; native controls and touch keep their own pointer. */
.camera-cursor{position:fixed;left:0;top:0;z-index:10000;width:32px;height:32px;transform:translate(-50%,-58%);pointer-events:none;opacity:0;color:#fff;filter:drop-shadow(0 1px 2px #000) drop-shadow(0 0 1px #000);isolation:isolate}
.camera-cursor.is-visible{opacity:1}.camera-cursor svg{display:block;overflow:visible;transition:transform .15s ease}.camera-cursor.is-over-link svg{transform:scale(1.12)}.camera-flash{opacity:0}.camera-cursor.is-flashing .camera-flash{animation:camera-snap .32s ease-out}.camera-cursor.is-flashing .camera-outline{fill:#ffffff30}
@keyframes camera-snap{0%{opacity:1}35%{opacity:1}100%{opacity:0}}
@media(hover:hover) and (pointer:fine){.camera-cursor-active,.camera-cursor-active body,.camera-cursor-active a,.camera-cursor-active button,.camera-cursor-active summary{cursor:none}}
@media(hover:none),(pointer:coarse){.camera-cursor{display:none}}
@media(prefers-reduced-motion:reduce){.camera-cursor svg{transition:none}.camera-cursor.is-flashing .camera-flash{animation:none;opacity:1}}

/* Expanded header identity and a camera only on interactive elements. */
.header .wordmark{max-width:none;font-size:clamp(12px,1.25vw,20px);line-height:1.4;letter-spacing:-.025em;min-width:0}.camera-flash{color:#ffe23b}.camera-cursor.is-flashing .camera-outline{fill:#ffe23b30}
@media(max-width:760px){.header,.header.solid{height:112px;grid-template-columns:1fr;gap:8px;padding-top:14px;padding-bottom:14px}.header .wordmark{font-size:13px;max-width:100%;line-height:1.45}.header nav{justify-content:flex-start;gap:24px}.hero-gallery{margin-top:112px;height:calc(80svh - 112px)}.project-page{padding-top:120px}.page{padding-top:150px}}

/* Homepage introduction: heading above supporting copy. */
.intro{grid-template-columns:1fr;gap:26px}
.intro-title{font-size:clamp(32px,4.2vw,72px);line-height:1.08;letter-spacing:-.045em;max-width:24ch}
.intro p:not(.label){max-width:48ch}
@media(max-width:800px){.intro{gap:22px}}

.about-page .about-layout{margin-top:0}
.about-page .about-copy{font-size:clamp(32px,3.6vw,60px);margin-bottom:28px}
