:root{--bg:#0a0a0a;--card:#141414;--line:#242424;--text:#f5f5f5;--mute:#8d8d8d}
*{box-sizing:border-box;margin:0}
body{background:var(--bg);color:var(--text);font:400 17px/1.6 'Inter',system-ui,sans-serif;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
:focus-visible{outline:2px solid #fff;outline-offset:3px}
.wrap{max-width:1160px;margin:0 auto;padding:0 24px}
header{position:sticky;top:0;z-index:10;background:rgba(10,10,10,.85);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
header .wrap{display:flex;justify-content:space-between;align-items:center;height:68px}
.logo{font-weight:700;letter-spacing:-.02em;font-size:18px}
nav{display:flex;gap:28px;align-items:center;font-size:15px;color:var(--mute)}
nav a:hover,nav a.on{color:var(--text)}
.btn{display:inline-block;padding:13px 26px;border-radius:8px;background:var(--text);color:#0a0a0a;font:600 15px 'Inter',sans-serif;border:0;cursor:pointer;transition:opacity .2s}
.btn:hover{opacity:.85}
.btn.line{background:none;border:1px solid #3a3a3a;color:var(--text)}
.btn.line:hover{border-color:#fff;opacity:1}
nav .btn{padding:9px 18px;font-size:14px;color:#0a0a0a}
.hero{padding:140px 0 110px}
h1{font-size:clamp(42px,7.5vw,104px);line-height:1;letter-spacing:-.045em;font-weight:700;max-width:13ch}
.hero p{color:var(--mute);font-size:19px;max-width:44ch;margin:28px 0 36px}
.cta{display:flex;gap:12px;flex-wrap:wrap}
h2{font-size:clamp(30px,4vw,48px);letter-spacing:-.035em;line-height:1.05;font-weight:700}
.sec{padding:90px 0;border-top:1px solid var(--line)}
.sec .top{display:flex;justify-content:space-between;align-items:end;gap:20px;flex-wrap:wrap;margin-bottom:36px}
.sec .top p{color:var(--mute)}
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.tile{position:relative;aspect-ratio:1;background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden;display:flex;align-items:flex-end;padding:20px}
.tile video,.tile img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.tile div{position:relative}
.tile h3{font-size:19px;font-weight:600;letter-spacing:-.02em}
.tile span{font-size:14px;color:var(--mute)}
.tile.empty:after{content:"Cover image";position:absolute;inset:0;display:grid;place-items:center;color:#3a3a3a;font-size:14px}
#services{scroll-margin-top:68px}
.services{display:grid;gap:clamp(32px,6vw,72px)}
.service{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:center;gap:clamp(24px,6vw,72px)}
.service-media{display:block;width:100%;height:auto;border:1px solid var(--line);border-radius:12px;background:var(--card)}
.service-copy h3{font-size:clamp(24px,3vw,38px);line-height:1.12;letter-spacing:-.035em}
.service-copy p{max-width:43ch;margin-top:14px;color:var(--mute)}
@media(min-width:801px){
 .service-reverse .service-media{grid-area:1 / 2}
 .service-reverse .service-copy{grid-area:1 / 1}
}
.cta-sec{padding:120px 0;text-align:center;border-top:1px solid var(--line)}
.cta-sec h2{font-size:clamp(36px,6vw,80px);max-width:14ch;margin:0 auto 32px}
footer{border-top:1px solid var(--line);padding:28px 0;color:var(--mute);font-size:14px}
footer .wrap{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px}
.contact{padding-top:110px;padding-bottom:110px;display:grid;grid-template-columns:1fr 1fr;gap:70px}
.contact p{color:var(--mute);margin:22px 0}
.contact .mail{display:block;font-size:22px;font-weight:600;letter-spacing:-.02em;margin-top:8px}
form{display:grid;gap:16px}
label{display:grid;gap:7px;font-size:14px;color:var(--mute)}
input,select,textarea{background:var(--card);border:1px solid var(--line);color:var(--text);padding:13px 15px;border-radius:8px;font:400 16px 'Inter',sans-serif;width:100%}
input:focus,select:focus,textarea:focus{outline:none;border-color:#fff}
textarea{min-height:130px;resize:vertical}
.row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.note{font-size:13px;color:var(--mute)}
@media(max-width:800px){
 nav a:not(.btn){display:none}
 .hero{padding:90px 0 70px}
 .grid,.service{grid-template-columns:1fr}
 .service{gap:16px}
 .tile{aspect-ratio:1}
 .contact{grid-template-columns:1fr;gap:40px;padding-top:50px;padding-bottom:70px}
 .row{grid-template-columns:1fr}
}

/* hero video */
.hero{position:relative;overflow:hidden;min-height:78vh;display:flex;align-items:center}
.hero .bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.55}
.hero:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,10,10,.2),#0a0a0a);pointer-events:none}
.hero .wrap{position:relative;z-index:1}
a.tile{transition:border-color .25s}
a.tile:hover{border-color:#fff}
a.tile img{transition:transform .5s}a.tile:hover img{transform:scale(1.04)}
/* category pages */
.phead{padding:80px 0 50px}
.phead .back{color:var(--mute);font-size:15px;display:inline-block;margin-bottom:26px}
.phead .back:hover{color:var(--text)}
.phead h1{font-size:clamp(40px,6.5vw,88px);max-width:none}
.phead p{color:var(--mute);margin-top:16px;max-width:46ch}
.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;padding-bottom:90px}
.gallery .shot{position:relative;aspect-ratio:1;background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.gallery .shot img{width:100%;height:100%;object-fit:cover;display:block}
.gallery .shot.empty{display:grid;place-items:center;color:#3a3a3a;font-size:14px}
@media(max-width:800px){.gallery{grid-template-columns:1fr 1fr;gap:10px}.hero{min-height:70vh}}

/* scroll-scrub banner */
.hero-scrub{height:320vh;position:relative}
.hero-scrub .pin{position:sticky;top:68px;height:calc(100vh - 68px);background:#050505;overflow:hidden;display:grid;place-items:center}
.hero-scrub video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero-scrub .hint{color:#3a3a3a;font-size:14px}
@media(max-width:800px){.hero-scrub{height:280vh}}

/* looping banner video */
.hero-video{background:#000;display:flex;justify-content:center}
.hero-video video{display:block;width:100%;max-width:1600px;height:auto;aspect-ratio:1359/363}
@media(max-width:800px){
 .sec{padding:48px 0}
 .cta-sec{padding:72px 0}
 .sec .top{margin-bottom:24px}
}

@media(max-width:800px){#work{padding-top:24px;border-top:0}}
.sec .top h2{font-size:clamp(22px,2.4vw,30px);letter-spacing:-.02em}
#work{padding-top:44px;border-top:0}

.phead{padding:36px 0 28px}
.phead .back{margin-bottom:14px}
.phead h1{font-size:clamp(28px,3.4vw,44px);letter-spacing:-.03em}
@media(max-width:800px){
 .gallery{grid-template-columns:1fr;gap:12px}
 .phead{padding:14px 0 16px}
 .phead .back{margin-bottom:8px}
}
.gallery .shot video{width:100%;height:100%;object-fit:cover;display:block}
.back-to-top{display:none}
@media(max-width:800px){
 .back-to-top:not([hidden]){
  position:fixed;
  z-index:11;
  right:calc(16px + env(safe-area-inset-right, 0px));
  bottom:calc(16px + env(safe-area-inset-bottom, 0px));
  display:grid;
  place-items:center;
  width:48px;
  height:48px;
  border:1px solid var(--line);
  border-radius:50%;
  background:rgba(20,20,20,.6);
  color:var(--text);
  font:24px/1 'Inter',system-ui,sans-serif;
  cursor:pointer;
 }
 body:has(.lb.on) .back-to-top{display:none}
}
a.tile:not(.empty):before{content:"";position:absolute;inset:auto 0 0 0;height:45%;background:linear-gradient(transparent,rgba(0,0,0,.75));z-index:1}
a.tile div{z-index:2}
/* lightbox */
.gallery .shot{cursor:zoom-in}
.lb{position:fixed;inset:0;z-index:100;background:rgba(0,0,0,.96);display:none;align-items:center;justify-content:center;overflow:hidden}
.lb.on{display:flex}
.lb img,.lb video{max-width:94vw;max-height:88vh;display:block;transition:transform .2s;touch-action:none;user-select:none;-webkit-user-drag:none}
.lb img{
 --lb-photo-height:88vh;
 width:min(94vw,calc(var(--lb-photo-height) * var(--lb-photo-ratio,1)));
 height:auto;
}
.lb-status{position:absolute;bottom:76px;left:16px;right:16px;text-align:center;color:var(--text);font-size:13px;pointer-events:none}
.lb video{touch-action:auto}
.lb button{position:absolute;z-index:2;background:rgba(255,255,255,.1);border:0;color:#fff;font:400 30px/1 'Inter',sans-serif;width:48px;height:48px;border-radius:50%;cursor:pointer}
.lb button:hover{background:rgba(255,255,255,.22)}
.lb .x{top:16px;right:16px}
.lb .p{left:16px;top:50%;margin-top:-24px}
.lb .n{right:16px;top:50%;margin-top:-24px}
.lb .ct{position:absolute;bottom:18px;left:0;right:0;text-align:center;color:#8d8d8d;font-size:14px}
@media(max-width:800px){
 .lb img,.lb video{max-height:calc(100dvh - 144px - 2 * env(safe-area-inset-bottom, 0px))}
 .lb img{--lb-photo-height:calc(100dvh - 144px - 2 * env(safe-area-inset-bottom, 0px))}
 .lb-status{bottom:calc(76px + env(safe-area-inset-bottom, 0px))}
 .lb .lb-nav{
  position:absolute;
  z-index:2;
  bottom:calc(12px + env(safe-area-inset-bottom, 0px));
  left:50%;
  transform:translateX(-50%);
  display:flex;
  align-items:center;
  gap:12px;
 }
 .lb .lb-nav button,.lb .ct{position:static;margin:0}
 .lb .ct{min-width:7ch;white-space:nowrap}
}
