:root{--bg:#0A0A0A;--panel:#141414;--line:#2a2a2a;--tx:#ededea;--mute:#9a9a96;--or:#ff6a1a;--pad:clamp(20px,5vw,72px);box-sizing:border-box}
*,*::before,*::after{box-sizing:inherit}
html{scroll-behavior:smooth;scroll-padding-top:64px}
body{margin:0;background:var(--bg);color:var(--tx);font:400 17px/1.6 "Space Grotesk",system-ui,sans-serif;padding-bottom:env(safe-area-inset-bottom,0)}
a{color:inherit;text-decoration:none}
:focus-visible{outline:2px solid var(--or);outline-offset:3px}
h1,h2,h3{font-weight:700;line-height:1.02;letter-spacing:-.02em;margin:0}
p{margin:0 0 1em;max-width:62ch;color:#c9c9c5}
section{padding:clamp(72px,12vw,160px) var(--pad)}
.wrap{max-width:1280px;margin:0 auto}
/* nav */
nav{position:fixed;inset:0 0 auto;z-index:20;display:flex;justify-content:space-between;align-items:center;padding:calc(14px + env(safe-area-inset-top,0px)) var(--pad) 14px;background:linear-gradient(#0A0A0Af0,#0A0A0A00)}
nav b{font-size:15px;letter-spacing:.04em}
nav ul{display:flex;gap:clamp(14px,3vw,36px);list-style:none;margin:0;padding:0;font-size:14px}
nav a{padding:4px 0;border-bottom:2px solid transparent;transition:border-color .25s,color .25s}
nav a:hover,nav a.on{border-color:var(--or);color:var(--or)}
/* hero */
.hero{min-height:100svh;display:flex;align-items:flex-end;position:relative;overflow:hidden;padding:120px var(--pad) 0}
.hero .ph{position:absolute;inset:-6% 0;aspect-ratio:auto;z-index:0;opacity:.55}
.hero::after{content:"";position:absolute;inset:0;background:linear-gradient(#0A0A0A00 30%,var(--bg) 96%)}
.hero .wrap{position:relative;z-index:1;width:100%}
.hero h1{font-size:clamp(46px,11vw,168px)}
.hero h1 span{display:block;color:var(--or)}
.hero p.lead{font-size:clamp(18px,2vw,24px);color:var(--tx);margin:28px 0}
.btns{display:flex;gap:12px;flex-wrap:wrap}
.btn{padding:14px 26px;border:1.5px solid var(--or);font-weight:500;font-size:14px;letter-spacing:.06em;transition:background .25s,color .25s}
.btn.fill{background:var(--or);color:#0A0A0A}
.btn:hover{background:var(--or);color:#0A0A0A}.btn.fill:hover{background:transparent;color:var(--or)}
.tags{margin-top:44px;color:var(--mute);font-size:13px;letter-spacing:.12em;display:flex;gap:6px 26px;flex-wrap:wrap}
.in{animation:up .9s cubic-bezier(.2,.7,.2,1) both}.in:nth-child(2){animation-delay:.12s}.in:nth-child(3){animation-delay:.24s}.in:nth-child(4){animation-delay:.36s}
@keyframes up{from{opacity:0;transform:translateY(28px)}}
/* image placeholders */
.ph{position:relative;margin:0;overflow:hidden;aspect-ratio:var(--r,16/9);background:repeating-linear-gradient(135deg,#161616 0 14px,#121212 14px 28px);border:1px solid var(--line)}
.ph iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.ph img,.ph video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .9s cubic-bezier(.2,.7,.2,1)}
.ph .vbtn img{transition:none}
.ph:hover img{transform:scale(1.04)}.ph:hover .vbtn img{transform:none}
.ph:not(:has(img,video,iframe,.vbtn))::before{content:attr(data-label);position:absolute;left:16px;bottom:14px;font-size:12px;letter-spacing:.08em;color:var(--or)}
.ph:not(:has(img,video,iframe,.vbtn))::after{content:"";position:absolute;top:16px;right:16px;width:22px;height:22px;border-top:2px solid var(--or);border-right:2px solid var(--or)}
.hero .ph{border:0}
/* layout helpers */
.rise{opacity:0;transform:translateY(32px);transition:opacity .9s,transform .9s cubic-bezier(.2,.7,.2,1)}.rise.show{opacity:1;transform:none}
.meta{color:var(--or);font-size:14px;margin-bottom:18px}
h2{font-size:clamp(34px,6vw,84px)}
.work-item{display:block;margin-top:clamp(40px,7vw,96px)}
.work-item .ph{margin-bottom:28px}
.work-item.big .ph{--r:21/9}.work-item.small{max-width:720px;margin-left:auto}
.work-item h3{font-size:clamp(30px,5vw,64px)}
.work-item p{margin-top:14px}
.go{color:var(--or);font-weight:500;border-bottom:2px solid var(--or);padding-bottom:2px}
.work-item:hover h3{color:var(--or)}
/* case study */
.case{background:var(--panel)}
.case>.wrap>header{margin-bottom:clamp(40px,6vw,88px)}
.case>.wrap>header p{font-size:clamp(19px,2.2vw,28px);color:var(--tx);max-width:34em;margin-top:24px}
.block{display:grid;grid-template-columns:5fr 7fr;gap:clamp(24px,5vw,80px);align-items:center;margin-top:clamp(64px,10vw,140px)}
.block.flip{grid-template-columns:7fr 5fr}.block.flip .txt{order:2}
.block h3{font-size:clamp(26px,3.6vw,48px);margin-bottom:20px;padding-top:16px;border-top:3px solid var(--or);display:inline-block}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:20px}.grid3 .ph{--r:4/5}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.full{margin-top:clamp(64px,10vw,140px)}.full .ph{--r:21/9}
.chain{display:flex;flex-wrap:wrap;gap:8px 0;margin:0 0 28px;padding:0;list-style:none;font-size:14px}
.chain li{display:flex;align-items:center;color:var(--tx)}
.chain li+li::before{content:"";width:22px;height:2px;background:var(--or);margin:0 8px}
.bosses{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:24px}.bosses .ph{--r:3/4}
.bosses h4{margin:12px 0 4px;font-size:18px}.bosses p{font-size:14px;color:var(--mute)}
.bosses.envs{grid-template-columns:repeat(5,1fr)}.bosses.envs .ph{--r:3/4}
.sys{list-style:none;margin:24px 0 0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:0 24px}
.sys li{padding:12px 0 12px 14px;border-left:2px solid var(--or);margin-top:14px;font-size:15px;color:var(--tx)}
@media(max-width:860px){.bosses.envs{grid-template-columns:1fr 1fr}.sys{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.bosses.envs,.sys{grid-template-columns:1fr}}
/* gallery */
.gal{margin-top:32px}
.gal-track{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:14px;scrollbar-width:thin;scrollbar-color:var(--or) var(--line);outline-offset:4px}
.slide{flex:0 0 min(86vw,880px);margin:0;scroll-snap-align:start}
.slide .ph{cursor:zoom-in}
.slide figcaption{padding-top:14px;font-size:15px;color:var(--mute);max-width:60ch}
.slide figcaption b{display:block;color:var(--tx);font-size:18px;margin-bottom:2px}
.gal-bar{display:flex;align-items:center;gap:10px;margin-top:14px}
.gal-btn{width:46px;height:46px;border:1.5px solid var(--or);background:none;color:var(--or);font:inherit;font-size:20px;cursor:pointer;transition:background .25s,color .25s}
.gal-btn:hover{background:var(--or);color:#0A0A0A}
.gal-count{margin-left:auto;font-size:13px;letter-spacing:.12em;color:var(--mute)}
/* videos */
.vids{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:24px}.vids .ph{--r:16/9}
.vid video{object-fit:contain;background:#000}
.zoom{cursor:zoom-in}.stack{display:grid;gap:12px}
.mmlogo{display:block;width:88px;height:88px;margin-bottom:22px}
.vcap{font-size:14px;color:var(--mute);margin:12px 0 0;max-width:62ch}
.ph video{background:#000}
.about .ph img{object-position:50% 30%}
/* click-to-play link player */
.vbtn{position:absolute;inset:0;width:100%;height:100%;border:0;padding:0;background:#0d0d0d center/cover no-repeat;cursor:pointer;display:grid;place-items:center;color:var(--tx);text-decoration:none}
.vbtn::before{content:"";width:76px;height:76px;border:2px solid var(--or);border-radius:50%;background:rgba(10,10,10,.65);transition:background .25s}
.vbtn::after{content:"";position:absolute;border-left:20px solid var(--or);border-top:12px solid transparent;border-bottom:12px solid transparent;margin-left:6px;transition:border-color .25s}
.vbtn:hover::before{background:var(--or)}.vbtn:hover::after{border-left-color:#0A0A0A}
.vlabel{position:absolute;left:14px;bottom:12px;max-width:70%;font-size:13px;text-align:left;text-shadow:0 1px 6px #000}
.vopen{position:absolute;right:10px;bottom:10px;z-index:2;padding:5px 10px;font-size:12px;background:rgba(10,10,10,.78);border:1px solid var(--line);transition:border-color .25s,color .25s}
.vopen:hover{border-color:var(--or);color:var(--or)}
/* general gallery */
.tabs{display:flex;gap:8px;flex-wrap:wrap;margin:28px 0 36px}
.tab{padding:10px 18px;border:1.5px solid var(--line);background:none;color:var(--tx);font:inherit;font-size:14px;cursor:pointer;transition:border-color .25s,color .25s,background .25s}
.tab:hover{border-color:var(--or);color:var(--or)}
.tab[aria-pressed="true"]{border-color:var(--or);background:var(--or);color:#0A0A0A}
.gg{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.gg li[hidden]{display:none}
.gi{display:block;position:relative;width:100%;padding:0;border:1px solid var(--line);background:#111;cursor:zoom-in;aspect-ratio:2/1;overflow:hidden}
.gi img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .9s cubic-bezier(.2,.7,.2,1)}
.gi:hover img{transform:scale(1.05)}
.gi span{position:absolute;left:0;right:0;bottom:0;padding:24px 12px 10px;font:inherit;font-size:12px;text-align:left;color:#fff;background:linear-gradient(transparent,rgba(0,0,0,.82));opacity:0;transition:opacity .3s}
.gi:hover span,.gi:focus-visible span{opacity:1}
/* lightbox */
dialog#lb{border:1px solid var(--line);background:var(--bg);color:var(--tx);padding:0;max-width:96vw;max-height:94vh;overflow:auto}
dialog#lb::backdrop{background:rgba(0,0,0,.88)}
#lb img{display:block;max-width:96vw;max-height:80vh;margin:0 auto}
#lb p{margin:0;padding:14px 18px;font-size:14px;color:var(--mute)}
.lb-nav,.lb-x{position:absolute;width:46px;height:46px;border:1.5px solid var(--or);background:rgba(10,10,10,.8);color:var(--or);font:inherit;font-size:20px;cursor:pointer;transition:background .25s,color .25s}
.lb-nav:hover,.lb-x:hover{background:var(--or);color:#0A0A0A}
.lb-nav{top:calc(50% - 46px)}#lb-prev{left:10px}#lb-next{right:10px}.lb-x{top:10px;right:10px;z-index:2}
.award{margin-top:clamp(64px,10vw,140px);display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,5vw,72px);align-items:center;border:1px solid var(--or);padding:clamp(24px,4vw,56px)}
.award h3{font-size:clamp(30px,5vw,68px);color:var(--or)}
.tight .block{margin-top:clamp(48px,7vw,96px)}
/* philosophy */
.phil{text-align:left;position:relative;overflow:hidden}
.phil h2{font-size:clamp(44px,10vw,150px);max-width:11ch}
.phil h2 em{font-style:normal;color:var(--or)}
.phil .lede{font-size:clamp(20px,2.4vw,30px);color:var(--tx);max-width:30em;margin:36px 0 56px}
.web{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border-top:1px solid var(--line)}
.web div{padding:24px 24px 24px 0;border-left:2px solid var(--or);padding-left:18px;margin-top:-1px;margin:32px 0 0}
.web b{display:block;font-size:20px;margin-bottom:6px}.web span{color:var(--mute);font-size:15px}
/* about / contact */
.about{display:grid;grid-template-columns:5fr 7fr;gap:clamp(32px,6vw,96px)}
.about .ph{--r:4/5}
.club{margin-top:40px;padding:20px 0 0;border-top:1px solid var(--line);font-size:15px;color:var(--mute)}
.club b{color:var(--tx)}
.contact{border-top:1px solid var(--line)}
.contact h2 a{color:var(--or)}
.contact h2{font-size:clamp(30px,6vw,88px)}
.links{display:flex;gap:10px 32px;flex-wrap:wrap;margin-top:40px}
.links a{border-bottom:2px solid var(--line);padding-bottom:3px;transition:.25s}.links a:hover{border-color:var(--or);color:var(--or)}
footer{padding:28px var(--pad);color:var(--mute);font-size:13px;border-top:1px solid var(--line)}
@media(max-width:860px){.vids{grid-template-columns:1fr}.block,.block.flip,.about,.award{grid-template-columns:1fr}.block.flip .txt{order:0}.bosses,.web{grid-template-columns:1fr 1fr}.grid3{grid-template-columns:1fr 1fr}nav b{display:none}nav{justify-content:center}}
@media(max-width:480px){.bosses,.web{grid-template-columns:1fr}.hero .tags{display:none}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}.rise{opacity:1;transform:none}}
/* deployment additions */
[hidden]{display:none!important}
.skip{position:fixed;left:12px;top:-60px;z-index:50;padding:10px 16px;background:var(--or);color:#0A0A0A;font-weight:500;transition:top .2s}.skip:focus{top:12px}
.hero .role{font-size:clamp(28px,6vw,84px);font-weight:700;line-height:1.02;letter-spacing:-.02em;color:var(--or);margin:8px 0 0;max-width:none}
.zoom img,.slide .ph img{cursor:zoom-in}
.ph.vid.yt{--r:16/9}
.vid-main{max-width:1040px}
.vbtn img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.vbtn::before,.vbtn::after{z-index:1}
.vlabel{z-index:1}
.vids.three{grid-template-columns:repeat(3,1fr)}
@media(max-width:860px){.vids.three{grid-template-columns:1fr}}
