@font-face{font-family:"Public Sans";font-weight:300;font-style:normal;font-display:swap;src:url(/assets/fonts/public-sans-300-normal.woff2) format("woff2")}
@font-face{font-family:"Public Sans";font-weight:300;font-style:italic;font-display:swap;src:url(/assets/fonts/public-sans-300-italic.woff2) format("woff2")}
@font-face{font-family:"Public Sans";font-weight:700;font-style:normal;font-display:swap;src:url(/assets/fonts/public-sans-700-normal.woff2) format("woff2")}

:root{
  --bg:#000;--fg:#fff;--muted:rgba(255,255,255,.72);--line:rgba(255,255,255,.22);
  --gutter:clamp(16px,4vw,68px);
  --t-body:clamp(17px,1.55vw,25.5px);
  --t-title:clamp(40px,4.1vw,68px);
  --t-big:clamp(30px,3.2vw,54px);
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--fg);font-family:"Public Sans",system-ui,sans-serif;font-weight:300;font-size:var(--t-body);line-height:1.3;letter-spacing:-.03em;-webkit-font-smoothing:antialiased}
img,video,iframe{display:block;max-width:100%}
img{height:auto}
a{color:inherit}
h1,h2,h3,h4{font-weight:700;margin:0;letter-spacing:-.05em;line-height:.97}
p{margin:0 0 .8em}
.sr,.skip{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip:focus{position:fixed;top:8px;left:8px;width:auto;height:auto;clip:auto;background:#fff;color:#000;padding:8px 12px;z-index:100}
:focus-visible{outline:2px solid #fff;outline-offset:3px}

/* header */
.site-header{position:absolute;top:0;left:0;right:0;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:22px var(--gutter)}
.brand img{width:56px;height:auto}
.site-nav{display:flex;gap:clamp(20px,3vw,40px);font-size:clamp(14px,1vw,16px);letter-spacing:-.04em}
.site-nav a{text-decoration:none;padding:4px 0;background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat;transition:background-size .25s}
.site-nav a:hover,.site-nav a[aria-current]{background-size:100% 1px}
.menu-btn{display:none;background:none;border:0;color:inherit;width:44px;height:44px;padding:10px;cursor:pointer}
.menu-btn span{display:block;height:1.5px;background:currentColor;margin:6px 0;transition:transform .25s}

main{padding-top:120px;min-height:70vh}
body:has(.hero) main{padding-top:0}

/* layout helpers */
.wrap{padding:0 var(--gutter)}
.narrow{max-width:1100px;margin:0 auto}
.center{text-align:center}
.page-title{font-size:var(--t-title);text-align:center;margin:20px 0 clamp(32px,4vw,70px)}
.lede{max-width:900px;margin:0 auto 1.4em}
.muted{color:var(--muted)}

/* home */
.hero{height:min(74vw,100svh);min-height:420px;overflow:hidden;position:relative}
.hero video{width:100%;height:100%;object-fit:cover}
.home-intro{text-align:center;padding:clamp(32px,4vw,48px) var(--gutter) 80px}
.home-intro .lede{max-width:none}
.big-links{display:flex;flex-direction:column;align-items:center;gap:.55em;margin-top:clamp(24px,3vw,48px)}
.big-links h2{font-size:var(--t-big)}
.big-links a{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em;transition:opacity .2s}
.big-links a:hover{opacity:.7}

/* portfolio grid */
.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(40px,4vw,63px) 32px;padding-bottom:80px}
.card{text-decoration:none;display:block}
.card img{width:100%;aspect-ratio:1920/1166;object-fit:cover;transition:opacity .3s}
.card:hover img{opacity:.8}
.card h3{font-size:clamp(20px,1.65vw,27px);margin-top:16px;letter-spacing:-.05em}

/* project */
.project{text-align:center;padding:0 var(--gutter);margin-bottom:clamp(32px,4vw,56px)}
.kicker{font-style:italic;font-size:clamp(16px,1.25vw,20.5px);margin-bottom:.6em}
.kicker a{text-underline-offset:.15em}
.project-title{font-size:clamp(40px,min(8.8vw,calc(150vw / var(--len,15))),148px);line-height:.95;text-wrap:balance}
.video{width:min(100% - 2*var(--gutter),1400px);margin:0 auto;background:#111}
.video iframe{width:100%;height:100%;border:0}
.stills{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.stills img{width:100%;aspect-ratio:16/9;object-fit:cover}
.pager{display:flex;justify-content:space-between;align-items:center;padding:clamp(32px,4vw,56px) 0 40px}
.pager a{display:flex;align-items:center;gap:.6em;text-decoration:none;font-weight:700;font-size:clamp(20px,1.9vw,31px);letter-spacing:-.05em}
.pager svg{width:12px;height:24px;flex:none;transition:transform .2s}
.pager .next:hover svg{transform:translateX(4px)}
.pager .prev:hover svg{transform:translateX(-4px)}

/* services */
.accordion{margin-top:clamp(24px,3vw,40px);border-top:1px solid var(--line);text-align:left}
details{border-bottom:1px solid var(--line)}
summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:24px 1fr 24px;align-items:center;padding:clamp(14px,1.4vw,20px) 0}
summary::-webkit-details-marker{display:none}
summary h3{grid-column:2;text-align:center;font-size:clamp(22px,2vw,34px)}
summary svg{grid-column:3;width:24px;height:24px;transition:transform .25s}
details[open] summary svg{transform:rotate(180deg)}
details p{padding:0 0 .2em}
details p:last-child{padding-bottom:1.2em}
.cta{background:#fff;color:#000;text-align:center;padding:clamp(56px,6vw,76px) var(--gutter);margin-top:100px}
.cta h2{font-size:var(--t-title);margin-bottom:.35em}
.btn{display:inline-block;background:#000;color:#fff;text-decoration:none;font-size:clamp(14px,1vw,16px);padding:1.2em 3.8em;transition:opacity .2s}
.btn:hover{opacity:.8}

/* about */
.wordmark{width:min(100%,560px);height:auto;margin:0 auto clamp(40px,5vw,72px)}
.prose{font-size:clamp(16px,1.1vw,18.5px)}
.list-section{padding-top:clamp(56px,7vw,110px)}
.section-title{font-size:var(--t-title);margin-bottom:.6em}
.plain{list-style:none;padding:0;margin:0;display:grid;gap:.7em;font-weight:700;letter-spacing:-.04em;font-size:clamp(16px,1.25vw,20.5px)}
.press a{text-underline-offset:.2em}

/* contact */
.contact{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:clamp(24px,5vw,80px);max-width:1400px;margin:0 auto;padding-bottom:80px}
.contact img{width:100%;max-width:620px;height:auto;justify-self:center}
.contact .page-title{text-align:left;margin:0 0 .7em}
.contact .kicker{font-size:clamp(15px,1.1vw,17px)}
.email{font-size:clamp(20px,1.6vw,26px)}
.email a{text-underline-offset:.2em;word-break:break-word}

/* footer */
.site-footer{padding:56px clamp(16px,8vw,117px) 56px;font-size:clamp(15px,1.15vw,19px)}
.site-footer p{margin-bottom:12px}
.social{display:flex;gap:10px;align-items:center}
.social a{display:flex;width:28px;height:28px;align-items:center;justify-content:center;transition:opacity .2s}
.social a:hover{opacity:.6}
.social svg{width:18px;height:18px}

/* mobile */
@media (max-width:800px){
  .menu-btn{display:block;position:relative;z-index:30}
  .site-nav{position:fixed;inset:0;background:#000;flex-direction:column;align-items:center;justify-content:center;gap:24px;font-size:28px;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s}
  .nav-open .site-nav{opacity:1;visibility:visible}
  .nav-open{overflow:hidden}
  .nav-open .menu-btn span:first-child{transform:translateY(3.75px) rotate(45deg)}
  .nav-open .menu-btn span:last-child{transform:translateY(-3.75px) rotate(-45deg)}
  .brand img{width:44px}
  main{padding-top:92px}
  .hero{height:60svh;min-height:320px}
  .grid{grid-template-columns:1fr}
  .stills{grid-template-columns:1fr;gap:12px;padding:0 var(--gutter)}
  .contact{grid-template-columns:1fr;text-align:center}
  .contact img{max-width:320px}
  .contact .page-title{text-align:center}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
