:root{
  --paper:#f2f1ec;
  --ink:#111;
  --muted:#6e6e67;
  --line:#a9a9a2;
  --sage:#d9ddd4;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;overflow-x:clip}
body{
  font-family:-apple-system,BlinkMacSystemFont,"Helvetica Neue","Hiragino Sans","Yu Gothic UI","Yu Gothic",sans-serif;
  background:var(--paper);color:var(--ink);line-height:1.72;overflow-x:hidden
}
img{display:block;width:100%;height:auto}
a{color:inherit;text-decoration:none}
section{scroll-margin-top:82px}
.site-header{
  position:fixed;inset:0 0 auto 0;z-index:1000;display:flex;align-items:center;justify-content:space-between;
  padding:24px 4vw;transition:.35s ease
}
.site-header.scrolled{padding-top:14px;padding-bottom:14px;background:rgba(242,241,236,.88);backdrop-filter:blur(16px);border-bottom:1px solid rgba(0,0,0,.08)}
.brand{display:flex;align-items:center;gap:10px;font-size:20px;font-weight:700;letter-spacing:.16em}
.brand img{width:28px;height:28px}
.site-nav{display:flex;align-items:center;gap:28px}
.site-nav a{font-size:11px;font-weight:600;letter-spacing:.14em;position:relative}
.site-nav a:not(.nav-contact)::after{content:"";position:absolute;left:0;bottom:-7px;width:0;height:1px;background:#111;transition:.25s}
.site-nav a.active:not(.nav-contact)::after,.site-nav a:hover:not(.nav-contact)::after{width:100%}
.nav-contact{border:1px solid #111;padding:10px 16px}
.menu-button{display:none;border:0;background:transparent}
.menu-button span{display:block;width:28px;height:1px;background:#111;margin:7px}

.hero{
  min-height:100vh;display:grid;grid-template-columns:1.05fr .72fr;grid-template-rows:auto 1fr auto;gap:0 7vw;
  padding:125px 5vw 7vh;position:relative;align-items:end
}
.hero-meta{position:absolute;top:125px;left:5vw;font-size:10px;letter-spacing:.24em}
.hero-copy{align-self:end;padding-bottom:6vh}
.eyebrow{font-size:10px;letter-spacing:.18em;margin-bottom:22px}
.hero h1{font-size:clamp(64px,8vw,126px);line-height:.88;font-weight:500;letter-spacing:-.065em}
.hero h1 span{display:block}
.hero-ja{font-size:clamp(20px,2vw,30px);letter-spacing:.08em;margin-top:34px}
.hero-visual{grid-column:2;grid-row:1 / span 2;align-self:stretch;min-height:68vh;overflow:hidden;border-radius:2px}
.hero-visual img{height:100%;object-fit:cover}
.hero-note{grid-column:2;display:grid;grid-template-columns:70px 1fr;gap:20px;font-size:12px;padding-top:20px}
.hero-note span{letter-spacing:.16em}
.scroll-cue{position:absolute;left:5vw;bottom:3vh;font-size:9px;letter-spacing:.24em}
.purpose{min-height:88vh;background:#111;color:#fff;padding:120px 7vw;display:flex;flex-direction:column;justify-content:center;position:relative}
.section-kicker{font-size:10px;letter-spacing:.24em;margin-bottom:46px}
.purpose h2{font-size:clamp(44px,6.3vw,96px);line-height:1.22;font-weight:400;letter-spacing:-.05em;max-width:1300px}
.purpose h2 span{color:#666}
.ticker{overflow:hidden;border-bottom:1px solid #aaa;background:var(--paper)}
.ticker-track{display:flex;width:max-content;animation:ticker 26s linear infinite}
.ticker-track span{white-space:nowrap;padding:26px 0;font-size:12px;letter-spacing:.18em}
@keyframes ticker{to{transform:translateX(-50%)}}

.section{padding:140px 7vw}
.section-heading{display:grid;grid-template-columns:190px 1fr;margin-bottom:90px}
.section-heading>p{font-size:10px;letter-spacing:.18em}
.section-heading h2{font-size:clamp(50px,6vw,92px);line-height:.94;font-weight:400;letter-spacing:-.055em}
.section-heading div>span{display:block;margin-top:18px;font-size:12px;letter-spacing:.16em}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:10vw}
.large-copy{font-size:clamp(34px,4vw,60px);line-height:1.42;letter-spacing:-.035em}
.body-copy{max-width:540px;font-size:15px}
.body-copy p+p{margin-top:24px}
.text-link,.contact-link{display:inline-flex;align-items:center;gap:28px;margin-top:42px;padding-bottom:8px;border-bottom:1px solid currentColor;font-size:11px;letter-spacing:.18em}
.text-link span,.contact-link span{transition:.25s}
.text-link:hover span,.contact-link:hover span{transform:translateX(8px)}

.services{background:var(--sage)}
.service-list{border-top:1px solid #999}
.service-item{display:grid;grid-template-columns:70px .85fr 1fr;gap:4vw;padding:54px 0;border-bottom:1px solid #999}
.service-item>span{font-size:10px}
.service-item h3{font-size:clamp(30px,4vw,52px);line-height:1.06;font-weight:400;letter-spacing:-.04em}
.service-item p{max-width:520px;color:#555;font-size:14px}

.works{background:var(--paper)}
.project{display:grid;grid-template-columns:1.35fr .65fr;gap:6vw;align-items:end;margin-bottom:145px}
.project.reverse{grid-template-columns:.65fr 1.35fr}
.project.reverse .project-image{order:2}
.project-image{overflow:hidden;aspect-ratio:16/10}
.project-image img{height:100%;object-fit:cover;transition:transform .9s cubic-bezier(.2,.7,.2,1)}
.project:hover .project-image img{transform:scale(1.035)}
.project-copy p,.project-copy span{font-size:10px;letter-spacing:.18em}
.project-copy span{display:block;margin-top:18px;color:#666}
.project-copy h3{font-size:clamp(32px,4vw,56px);line-height:1.05;font-weight:400;letter-spacing:-.045em;margin-top:14px}
.project-copy small{display:block;margin-top:18px;color:#777;letter-spacing:.08em}

.clients{background:#111;color:#fff;padding:100px 7vw 130px}
.clients-inner{max-width:1400px;margin:auto}
.clients-inner>p{font-size:10px;letter-spacing:.22em;margin-bottom:54px}
.client-grid{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid #444;border-left:1px solid #444}
.client-grid span{min-height:150px;display:grid;place-items:center;border-right:1px solid #444;border-bottom:1px solid #444;color:#9b9b9b;font-size:18px;letter-spacing:.12em}

.news-list{border-top:1px solid var(--line)}
.news-list a{display:grid;grid-template-columns:145px 105px 1fr 40px;gap:18px;align-items:center;padding:28px 0;border-bottom:1px solid var(--line);transition:.25s}
.news-list a:hover{padding-left:14px}
.news-list time,.news-list span{font-size:10px;letter-spacing:.12em}
.news-list span{color:#777}.news-list strong{font-size:14px;font-weight:500}.news-list b{font-size:20px;font-weight:400}

.company{background:#deddd7}
.company-table{border-top:1px solid #999}
.company-table div{display:grid;grid-template-columns:130px 1fr;padding:21px 0;border-bottom:1px solid #999;font-size:13px}
.company-table dt{color:#777}

.contact{min-height:88vh;background:#151515;color:#fff;padding:120px 7vw;display:flex;align-items:center}
.contact>div{max-width:1400px;width:100%;margin:auto}
.contact h2{font-size:clamp(62px,10vw,148px);line-height:.86;font-weight:400;letter-spacing:-.07em}
.contact h2 span{color:#555}
.contact-copy{max-width:530px;margin-top:44px;color:#aaa;font-size:14px}
footer{background:#151515;color:#777;border-top:1px solid #333;padding:34px 5vw;display:flex;justify-content:space-between;font-size:9px;letter-spacing:.18em}

.reveal-right,.reveal-up{opacity:0;transition:opacity .85s cubic-bezier(.2,.7,.2,1),transform .85s cubic-bezier(.2,.7,.2,1)}
.reveal-right{transform:translateX(68px)}.reveal-up{transform:translateY(48px)}
.reveal-mask{overflow:hidden}
.reveal-mask img{clip-path:inset(0 100% 0 0);transition:clip-path 1.05s cubic-bezier(.2,.7,.2,1)}
.visible{opacity:1;transform:none}.reveal-mask.visible img{clip-path:inset(0 0 0 0)}
.delay-1{transition-delay:.12s}.delay-2{transition-delay:.24s}

@media (max-width:900px){
  .site-header{padding:18px 6vw}.menu-button{display:block;z-index:1200}
  .site-nav{position:fixed;top:0;right:-100%;width:100%;height:100vh;background:var(--paper);padding:110px 8vw;flex-direction:column;align-items:flex-start;gap:26px;transition:.4s}
  .site-nav.open{right:0}.site-nav a{font-size:28px;font-weight:400}.nav-contact{border:0;padding:0}
  .hero{grid-template-columns:1fr;padding:120px 6vw 80px;min-height:auto}
  .hero-meta{display:none}.hero-copy{padding-bottom:45px}.hero h1{font-size:18vw}
  .hero-visual{grid-column:1;grid-row:auto;min-height:0;aspect-ratio:5/6}
  .hero-note{grid-column:1}.scroll-cue{display:none}
  .purpose{min-height:72vh;padding:100px 6vw}.section{padding:100px 6vw}
  .section-heading{grid-template-columns:1fr;gap:18px;margin-bottom:64px}
  .two-col{grid-template-columns:1fr;gap:58px}
  .service-item{grid-template-columns:45px 1fr;gap:20px}.service-item p{grid-column:2}
  .project,.project.reverse{grid-template-columns:1fr;gap:28px;margin-bottom:90px}
  .project.reverse .project-image{order:initial}
  .client-grid{grid-template-columns:1fr 1fr}.client-grid span{min-height:110px;font-size:13px}
  .news-list a{grid-template-columns:100px 1fr 28px}.news-list a>span{display:none}
  footer{flex-direction:column;gap:10px}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}
}

@media (max-width:900px){
  .site-nav{visibility:hidden;height:100dvh;overflow-y:auto}
  .site-nav.open{visibility:visible}
  .service-item>*{min-width:0;overflow-wrap:anywhere}
}
@media (min-width:901px){
  .hero-copy{grid-row:1 / span 2;padding-top:50px}
}
