:root{--black:#000;--paper:#F2F1ED;--graphite:#1C1C1C;--steel:#8C8C87;--line:#2A2A2A;--signal:#E8401C;--gutter:clamp(20px,4vw,64px);--max:1480px;--d:'Archivo',system-ui,sans-serif;--b:'Jost',system-ui,sans-serif}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--black);color:var(--paper);font-family:var(--b);font-weight:300;font-size:17px;line-height:1.5;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
img,svg,video{display:block;max-width:100%}
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--gutter)}
h1,h2,h3,.display{font-family:var(--d);font-variation-settings:'wdth' 82;font-weight:700;letter-spacing:-.03em;line-height:.92}
h2{font-size:clamp(40px,6.2vw,104px)}
h3{font-size:clamp(22px,2vw,30px);letter-spacing:-.02em;line-height:1.05}
.sub{font-size:clamp(17px,1.35vw,22px);color:var(--steel);max-width:34ch}
.lead{font-size:clamp(18px,1.5vw,24px);line-height:1.35;max-width:60ch}
:focus-visible{outline:2px solid var(--signal);outline-offset:4px}
.skip{position:absolute;left:-999px;top:8px;background:var(--paper);color:var(--black);padding:8px 12px;z-index:100}.skip:focus{left:8px}
.wm{height:26px;width:auto}
.btns{display:flex;gap:12px;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;gap:12px;border:1px solid var(--paper);padding:14px 22px;border-radius:999px;font-size:15px;font-weight:400;transition:background .2s,color .2s;font-family:var(--b);background:transparent;color:var(--paper);cursor:pointer}
.btn:hover{background:var(--paper);color:var(--black)}
.btn.solid{background:var(--paper);color:var(--black)}
.btn.solid:hover{background:var(--signal);border-color:var(--signal);color:#fff}
/* nav */
.nav{position:fixed;inset:0 0 auto 0;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:22px var(--gutter);mix-blend-mode:difference;color:#fff}
.nav ul{display:flex;gap:28px;list-style:none;font-size:15px;font-weight:400}
.nav li a{position:relative;padding-bottom:3px}
.nav li a::after{content:'';position:absolute;left:0;right:100%;bottom:0;height:1px;background:currentColor;transition:right .25s}
.nav li a:hover::after,.nav li a[aria-current]::after{right:0}
.nav .cta{display:flex;align-items:center;gap:10px;font-size:15px;font-weight:400}
.nav .cta i{width:8px;height:8px;border-radius:50%;background:currentColor;animation:pulse 2.4s ease-in-out infinite}
@keyframes pulse{50%{opacity:.35}}
.burger{display:none;background:none;border:0;width:40px;height:40px;cursor:pointer;flex-direction:column;gap:7px;align-items:center;justify-content:center}
.burger span{width:24px;height:1.5px;background:#fff;display:block}
.drawer{position:fixed;inset:0;background:var(--black);z-index:19;padding:110px var(--gutter)}
.drawer ul{list-style:none;display:grid;gap:18px}
.drawer a{font-family:var(--d);font-variation-settings:'wdth' 82;font-weight:700;font-size:40px;letter-spacing:-.02em}
@media(max-width:1000px){.nav ul,.nav .cta{display:none}.burger{display:flex}}
/* hero */
.hero{position:relative;min-height:100svh;display:grid;grid-template-rows:1fr auto;overflow:hidden;isolation:isolate;padding-top:90px}
.hero.short{min-height:72svh}
.reel{position:absolute;inset:0;z-index:-1;background:radial-gradient(120% 90% at 85% 20%,#2a2a2a 0%,#0a0a0a 55%,#000 100%)}
.reel .bgvid{width:100%;height:100%;object-fit:cover;opacity:.55;filter:grayscale(1) contrast(1.1)}
.reel::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.35),rgba(0,0,0,.15) 50%,rgba(0,0,0,.85)),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.5'/%3E%3C/svg%3E");opacity:1;mix-blend-mode:normal}
.hero .mark{position:absolute;right:calc(var(--gutter) - 10vw);top:46%;width:clamp(360px,58vw,860px);transform:translateY(-50%);color:var(--paper);opacity:.16;z-index:0}
.hero .ring{transform-origin:200px 200px}
.hero .outer{animation:spin-in 1.6s cubic-bezier(.2,.8,.2,1) both}
.hero .inner{animation:spin-in-r 1.6s cubic-bezier(.2,.8,.2,1) .08s both}
@keyframes spin-in{from{transform:rotate(-150deg);opacity:0}to{transform:rotate(0);opacity:1}}
@keyframes spin-in-r{from{transform:rotate(130deg);opacity:0}to{transform:rotate(0);opacity:1}}
.hero .copy{position:relative;z-index:1;align-self:end;padding:0 var(--gutter) 56px;max-width:var(--max);margin:0 auto;width:100%;display:grid;gap:28px}
.hero h1{font-size:clamp(50px,9.5vw,170px);overflow:hidden;max-width:12ch}
.hero.brand-hero h1{font-size:clamp(44px,7vw,124px);max-width:14ch}
.hero.short h1{font-size:clamp(44px,7vw,124px)}
.hero h1 span{display:block;animation:rise 1.1s cubic-bezier(.2,.8,.2,1) .4s both}
@keyframes rise{from{transform:translateY(110%)}to{transform:translateY(0)}}
.hero .row{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:24px}
.hero .sub{max-width:48ch}
.meta{display:flex;gap:28px;font-size:14px;color:var(--steel);font-weight:400;padding-top:8px;border-top:1px solid var(--line);flex-wrap:wrap}
.meta b{color:var(--paper);font-weight:400}
@media(prefers-reduced-motion:reduce){.hero .ring,.hero h1 span{animation:none}.reel .bgvid{display:none}}
/* machine */
.machine{padding:clamp(80px,12vw,180px) 0}
.machine .grid{display:grid;grid-template-columns:1.2fr 1fr;gap:64px;align-items:center}
.machine p{font-size:clamp(18px,1.6vw,26px);line-height:1.35;font-weight:300;max-width:38ch;margin-top:28px}
.machine h2{font-size:clamp(36px,5vw,84px)}
.machine-svg{width:100%;max-width:620px;justify-self:end;color:var(--paper)}
.machine-svg .ring{transform-origin:200px 200px;transition:transform 1.4s cubic-bezier(.2,.8,.2,1)}
.machine-svg:not(.in) .outer{transform:rotate(-120deg)}.machine-svg:not(.in) .inner{transform:rotate(110deg)}
.machine-svg .node{opacity:0;transition:opacity .6s calc(.3s + var(--i)*.12s)}.machine-svg.in .node{opacity:1}
.machine-svg .orbit{animation:orbit 90s linear infinite;transform-origin:400px 400px}
@keyframes orbit{to{transform:rotate(360deg)}}
.creed{list-style:none;display:grid;gap:14px;font-size:clamp(18px,1.5vw,24px);font-weight:400;line-height:1.3}
.creed li{padding:14px 0;border-top:1px solid var(--line)}.creed li:last-child{border-bottom:1px solid var(--line)}
@media(max-width:900px){.machine .grid{grid-template-columns:1fr}.machine-svg{max-width:420px;justify-self:center}}
/* brands */
.brands{border-top:1px solid var(--line)}
.brand{display:grid;grid-template-columns:minmax(220px,1fr) 2fr 1fr;gap:32px;align-items:center;padding:34px var(--gutter);border-bottom:1px solid var(--line);max-width:var(--max);margin:0 auto;transition:background .3s;position:relative}
.brand:hover,.brand:focus-within{background:var(--paper);color:var(--black)}
.brand .name{font-family:var(--d);font-variation-settings:'wdth' 82;font-weight:700;letter-spacing:-.02em;font-size:clamp(28px,3.6vw,56px);line-height:1}
.brand .name small{display:block;font-family:var(--b);font-weight:400;font-size:14px;letter-spacing:.06em;margin-top:8px;opacity:.7}
.brand .desc{font-size:clamp(16px,1.2vw,20px);max-width:48ch;color:var(--steel);transition:color .3s}
.brand:hover .desc{color:var(--black)}
.brand .tag{justify-self:end;display:flex;gap:10px;align-items:center;font-size:14px;font-weight:400;white-space:nowrap}
.brand .tag::after{content:'';width:34px;height:1px;background:currentColor;transition:width .3s}
.brand:hover .tag::after{width:64px}
.brand .thumb{position:absolute;right:calc(var(--gutter) + 190px);top:50%;width:260px;aspect-ratio:4/3;object-fit:cover;transform:translateY(-50%) rotate(-3deg) scale(.9);opacity:0;pointer-events:none;transition:.35s;filter:grayscale(1)}
.brand:hover .thumb{opacity:1;transform:translateY(-50%) rotate(-2deg) scale(1)}
@media(max-width:900px){.brand{grid-template-columns:1fr;gap:12px}.brand .tag{justify-self:start}.brand .thumb{display:none}}
/* work */
.work{padding:clamp(80px,12vw,180px) 0 0}
.head{display:flex;justify-content:space-between;align-items:end;gap:24px;flex-wrap:wrap;margin-bottom:48px}
.work .grid,.agrid{display:grid;grid-template-columns:repeat(12,1fr);gap:20px}
.tile{position:relative;display:block}
.tile .frame{aspect-ratio:16/10;background:#0e0e0e;overflow:hidden}
.tile .frame img{width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.05);transition:transform .6s cubic-bezier(.2,.8,.2,1),filter .4s}
.tile:hover .frame img{transform:scale(1.03);filter:grayscale(.2) contrast(1.05)}
.tile .cap{display:flex;justify-content:space-between;gap:16px;padding:16px 0 0;font-size:15px}
.tile .cap span{color:var(--steel);text-align:right}
.t1{grid-column:1/8}.t2{grid-column:8/13;align-self:end}.t3{grid-column:1/6}.t4{grid-column:6/13}
.t2 .frame{aspect-ratio:4/5}.t3 .frame{aspect-ratio:1/1}
.award{position:absolute;top:16px;left:16px;background:var(--paper);color:var(--black);font-size:12px;font-weight:500;letter-spacing:.08em;padding:6px 10px;border-radius:999px}
.agrid .tile{grid-column:span 6}
@media(max-width:900px){.t1,.t2,.t3,.t4,.agrid .tile{grid-column:1/13}}
.awards{padding:clamp(60px,8vw,120px) 0 0}.awards h2{margin-bottom:40px}.awards .note{margin-top:32px;color:var(--steel);max-width:70ch}
/* ticker */
.ticker{margin:clamp(80px,12vw,180px) 0 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);overflow:hidden;white-space:nowrap}
.ticker .track{display:inline-flex;animation:slide 48s linear infinite;padding:28px 0}
.ticker .item{display:inline-flex;align-items:baseline;gap:14px;padding:0 48px;border-right:1px solid var(--line)}
.ticker .n{font-family:var(--d);font-variation-settings:'wdth' 82;font-weight:700;font-size:clamp(40px,5vw,84px);letter-spacing:-.03em;line-height:1}
.ticker .l{font-size:15px;color:var(--steel);font-weight:400}
@keyframes slide{to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.ticker .track{animation:none}}
/* counters */
.counters{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;padding:0 var(--gutter) clamp(60px,8vw,120px)}
.counters div{border-top:1px solid var(--line);padding-top:18px}
.counters .n{display:block;font-family:var(--d);font-variation-settings:'wdth' 82;font-weight:700;font-size:clamp(44px,6vw,110px);letter-spacing:-.03em;line-height:1}
.counters .l{font-size:15px;color:var(--steel)}
@media(max-width:800px){.counters{grid-template-columns:1fr 1fr}}
/* partners */
.partners{padding:clamp(80px,12vw,160px) 0;background:var(--paper);color:var(--black)}
.partners .logos{display:grid;grid-template-columns:repeat(6,1fr);gap:28px 40px;margin-top:48px;align-items:center}
.partners img{width:100%;max-height:64px;object-fit:contain;filter:grayscale(1) contrast(1.1);mix-blend-mode:multiply;opacity:.75;transition:opacity .2s}
.partners img:hover{opacity:1}
@media(max-width:900px){.partners .logos{grid-template-columns:repeat(3,1fr)}}
/* quotes */
.quote{background:var(--paper);color:var(--black);padding:clamp(80px,12vw,180px) 0}
.quote blockquote{font-family:var(--d);font-variation-settings:'wdth' 86;font-weight:500;font-size:clamp(26px,3.6vw,58px);line-height:1.08;letter-spacing:-.025em;max-width:22ch}
.quote cite{display:block;font-style:normal;font-family:var(--b);font-size:16px;margin-top:36px;color:#555}
.quote cite b{color:var(--black);font-weight:500}
.quote .mark{width:72px;color:var(--black);margin-bottom:40px}
.qgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;padding-top:clamp(60px,8vw,120px);padding-bottom:clamp(60px,8vw,120px)}
.qgrid figure{border-top:1px solid var(--line);padding:24px 0}
.qgrid blockquote{font-size:clamp(18px,1.5vw,24px);line-height:1.35;max-width:48ch}
.qgrid figcaption{margin-top:18px;font-size:15px;color:var(--steel)}.qgrid figcaption b{color:var(--paper);font-weight:400}
@media(max-width:800px){.qgrid{grid-template-columns:1fr}}
/* team */
.team{padding:clamp(80px,12vw,160px) 0}
.trow{display:grid;grid-template-columns:repeat(5,1fr);gap:16px}
.person img{aspect-ratio:3/4;object-fit:cover;width:100%;filter:grayscale(1) contrast(1.05)}
.person h3{font-family:var(--b);font-weight:500;font-size:16px;margin-top:12px;letter-spacing:0;line-height:1.3}
.person p{font-size:14px;color:var(--steel)}
.team.full{padding-top:0}
@media(max-width:900px){.trow{grid-template-columns:repeat(2,1fr)}}
/* services, process */
.services{padding:clamp(60px,8vw,120px) 0}
.sgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid var(--line);border-left:1px solid var(--line)}
.svc{padding:32px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-height:260px;display:flex;flex-direction:column;gap:14px;transition:background .3s,color .3s}
.svc:hover{background:var(--paper);color:var(--black)}
.svc p{color:var(--steel);font-size:16px}.svc:hover p{color:var(--black)}
@media(max-width:900px){.sgrid{grid-template-columns:1fr}}
.process{padding:clamp(60px,8vw,120px) 0}
.steps{list-style:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:20px;margin-top:48px;counter-reset:s}
.steps li{border-top:1px solid var(--line);padding-top:18px}
.steps .k{font-family:var(--d);font-variation-settings:'wdth' 82;font-weight:700;font-size:48px;letter-spacing:-.03em;display:block;color:var(--steel);line-height:1}
.steps b{display:block;font-weight:500;font-size:20px;margin:14px 0 8px}.steps p{font-size:15px;color:var(--steel)}
/* experiences */
.cats{display:grid;gap:0;padding-top:clamp(60px,8vw,120px)}
.cat{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center;padding:48px 0;border-top:1px solid var(--line)}
.cat:nth-child(even) img{order:2}
.cat img{aspect-ratio:3/2;object-fit:cover;width:100%;filter:grayscale(1) contrast(1.05);transition:filter .5s}.cat:hover img{filter:grayscale(0)}
.cat .lead{margin:16px 0 14px;color:var(--paper)}.cat p{color:var(--steel);max-width:58ch}
@media(max-width:900px){.cat{grid-template-columns:1fr}.cat:nth-child(even) img{order:0}}
.portfolio{padding:clamp(60px,8vw,120px) 0}.portfolio h2{margin-bottom:32px}
.filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:28px}
.chip{background:none;border:1px solid var(--line);color:var(--steel);padding:8px 16px;border-radius:999px;font:inherit;font-size:14px;cursor:pointer}
.chip.on,.chip:hover{border-color:var(--paper);color:var(--paper)}
.egrid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.egrid figure{overflow:hidden}
.egrid figure[hidden]{display:none}
.egrid img{aspect-ratio:1/1;object-fit:cover;width:100%;filter:grayscale(1);transition:filter .5s,transform .6s}
.egrid figure:hover img{filter:grayscale(0);transform:scale(1.03)}
.egrid figcaption{padding:12px 0 0;font-size:14px;display:flex;justify-content:space-between;gap:12px}.egrid figcaption span{color:var(--steel)}
@media(max-width:900px){.egrid{grid-template-columns:repeat(2,1fr)}}
/* magazine, cases */
.mosaic{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.mosaic img{aspect-ratio:4/5;object-fit:cover;width:100%;filter:grayscale(1)}
.mosaic img:nth-child(2){margin-top:48px}.mosaic img:nth-child(3){margin-top:-48px}
.feature{padding:0 var(--gutter) clamp(60px,8vw,120px)}
.feature .grid,.case{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center}
.feature .frame img,.case .frame img{width:100%;aspect-ratio:4/3;object-fit:cover;filter:grayscale(1)}
.feature h2,.case h2{font-size:clamp(32px,4vw,64px);margin-bottom:20px}
.feature p,.case p{color:var(--steel);margin-bottom:18px;max-width:58ch}.case p b{color:var(--paper);font-weight:500}
.case small{font-size:14px;color:var(--steel);display:block;margin-bottom:12px}
.cases{display:grid;gap:clamp(60px,8vw,120px);padding:clamp(60px,8vw,120px) var(--gutter)}
.case:nth-child(even) .frame{order:2}
@media(max-width:900px){.feature .grid,.case{grid-template-columns:1fr}.case:nth-child(even) .frame{order:0}}
/* about */
.howfit{padding:clamp(60px,8vw,120px) 0}.howfit h2{margin-bottom:24px}.howfit .lead{color:var(--steel);margin-bottom:40px}
table{width:100%;border-collapse:collapse;font-size:16px}
th{text-align:left;font-weight:400;color:var(--steel);padding:12px 16px 12px 0;border-bottom:1px solid var(--line);font-size:14px}
td{padding:18px 16px 18px 0;border-bottom:1px solid var(--line);vertical-align:top}td a{text-decoration:underline;text-underline-offset:4px}
.timeline{padding:clamp(60px,8vw,120px) 0}.timeline h2{margin-bottom:40px}
.timeline ol{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
.timeline li{border-top:1px solid var(--paper);padding-top:16px;display:grid;gap:10px}
.timeline .y{font-family:var(--d);font-variation-settings:'wdth' 82;font-weight:700;font-size:40px;letter-spacing:-.03em;line-height:1}
.timeline .t{font-size:15px;color:var(--steel)}
@media(max-width:900px){.timeline ol{grid-template-columns:1fr 1fr}}
/* cta */
.ctab{padding:clamp(80px,12vw,180px) var(--gutter);display:grid;gap:24px;justify-items:start;border-top:1px solid var(--line)}
.ctab h2{font-size:clamp(44px,7vw,120px);max-width:12ch}
/* contact */
.contact{padding:clamp(140px,18vw,220px) 0 clamp(80px,12vw,160px)}
.contact .grid{display:grid;grid-template-columns:1.1fr 1fr;gap:64px}
.contact h1{font-size:clamp(44px,7vw,120px)}
.contact .sub{margin-top:24px}.contact .sub a{text-decoration:underline;text-underline-offset:4px}
.clist{margin-top:40px;display:grid;gap:10px;font-size:16px;color:var(--steel)}.clist b{color:var(--paper);font-weight:400;display:inline-block;min-width:110px}
.contact form{display:grid;gap:14px;align-self:end}
.contact input,.contact select,.contact textarea{width:100%;background:transparent;border:0;border-bottom:1px solid var(--line);color:var(--paper);font:inherit;padding:14px 0;border-radius:0}
.contact input:focus,.contact textarea:focus,.contact select:focus{outline:none;border-color:var(--paper)}
.contact select option{color:#000}.fmsg{font-size:15px;color:var(--steel);min-height:1.5em}
@media(max-width:900px){.contact .grid{grid-template-columns:1fr}}
.legalpage{padding:160px 0 120px;max-width:70ch}.legalpage h1{font-size:64px;margin-bottom:24px}
/* footer */
footer{border-top:1px solid var(--line);padding:48px 0 32px}
footer .big{width:100%;color:var(--paper);margin-bottom:40px}
footer .cols{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;font-size:15px;color:var(--steel)}
footer .cols b{display:block;color:var(--paper);font-weight:400;margin-bottom:10px}
footer .cols a:hover{color:var(--paper)}
footer .legal{margin-top:48px;font-size:13px;color:var(--steel);display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px}
@media(max-width:900px){footer .cols{grid-template-columns:1fr 1fr}}
