@import url("tokens.css");

*{box-sizing:border-box;margin:0;padding:0}
html,body{background:var(--tl-paper);color:var(--tl-ink);font-family:var(--tl-font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body{overflow-x:hidden}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
ul,ol{list-style:none}

.cjk{font-family:var(--tl-font-cjk)}
.serif{font-family:var(--tl-font-serif)}
.mono{font-family:var(--tl-font-mono)}

/* ——— Top bar ——— */
.tl-topbar{
  position:fixed;inset:0 0 auto 0;z-index:50;
  display:grid;grid-template-columns:1fr auto 1fr;align-items:center;
  padding:18px 32px;
  transition:background var(--tl-dur-base) var(--tl-ease), color var(--tl-dur-base) var(--tl-ease), border-color var(--tl-dur-base) var(--tl-ease);
  border-bottom:1px solid transparent;
}
.tl-topbar.tl-topbar--solid{background:var(--tl-paper);border-bottom-color:var(--tl-line)}
.tl-topbar.tl-topbar--inverse{color:#fff}
.tl-topbar.tl-topbar--inverse.tl-topbar--solid{background:var(--tl-ink);border-bottom-color:rgba(255,255,255,.08)}
.tl-topbar .brand{display:flex;align-items:baseline;gap:14px;cursor:pointer}
.tl-topbar .brand b{font-weight:500;letter-spacing:.32em;font-size:14px}
.tl-topbar .brand .cjk{font-size:13px;font-weight:300;opacity:.55}
.tl-topbar nav{display:flex;justify-content:center;gap:36px}
.tl-topbar nav a{font-size:11px;letter-spacing:.22em;text-transform:uppercase;font-weight:500;opacity:.62;position:relative;padding:8px 0;transition:opacity .2s var(--tl-ease)}
.tl-topbar nav a:hover{opacity:1}
.tl-topbar nav a.active{opacity:1}
.tl-topbar nav a.active::after{content:"";position:absolute;left:50%;bottom:0;width:18px;height:1px;background:var(--tl-accent);transform:translateX(-50%)}
.tl-topbar .right{display:flex;justify-content:flex-end;gap:18px;align-items:center;font-family:var(--tl-font-mono);font-size:11px;letter-spacing:.08em}
.tl-topbar .right .lang{display:flex;gap:6px}
.tl-topbar .right .lang button{padding:4px 8px;border:1px solid currentColor;opacity:.4;font-family:var(--tl-font-mono);font-size:10px;letter-spacing:.12em;transition:opacity .2s}
.tl-topbar .right .lang button.on{opacity:1}
.tl-topbar .right .clock{opacity:.55}

/* ——— Page chrome ——— */
.tl-page{padding-top:0}
.tl-section{padding:128px 64px;max-width:1920px;margin:0 auto}
@media (max-width:900px){.tl-section{padding:96px 24px}}
.tl-meas{font-family:var(--tl-font-mono);font-size:11px;letter-spacing:.08em;color:var(--tl-stone);text-transform:uppercase}

/* ——— HOME · hero ——— */
.tl-hero{
  position:relative;height:100vh;min-height:720px;background:var(--tl-ink);color:#fff;
  overflow:hidden;
}
.tl-hero .bg{position:absolute;inset:0}
.tl-hero .bg .slide{position:absolute;inset:0;opacity:0;transition:opacity 1.6s var(--tl-ease)}
.tl-hero .bg .slide.on{opacity:1}
.tl-hero .bg .slide img{width:100%;height:100%;object-fit:cover}
.tl-hero .bg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.35) 0%, rgba(0,0,0,0) 35%, rgba(0,0,0,0) 60%, rgba(0,0,0,.55) 100%)}

.tl-hero .frame{
  position:absolute;inset:96px 64px 64px;display:grid;grid-template-rows:auto 1fr auto;gap:32px;
  pointer-events:none;
}
.tl-hero .frame > *{pointer-events:auto}
.tl-hero .topline{display:flex;justify-content:space-between;align-items:baseline;font-family:var(--tl-font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;opacity:.78}
.tl-hero .topline .div{flex:1;height:1px;background:rgba(255,255,255,.4);margin:0 24px;align-self:center}

.tl-hero .stage{display:grid;grid-template-columns:1fr auto;align-items:end;gap:48px}
.tl-hero h1{font-weight:300;line-height:.95;letter-spacing:-.015em;font-size:clamp(36px,3.5vw,56px);max-width:22ch}
.tl-hero h1 .cjk{display:block;font-weight:300;font-size:.5em;letter-spacing:.08em;color:rgba(255,255,255,.7);margin-top:.6em}
.tl-hero .credit{
  text-align:right;font-family:var(--tl-font-mono);font-size:11px;letter-spacing:.06em;line-height:1.7;
  color:rgba(255,255,255,.78);max-width:280px
}
.tl-hero .credit b{color:#fff;font-weight:500;display:block;margin-bottom:6px;letter-spacing:.18em;text-transform:uppercase}

.tl-hero .footline{display:grid;grid-template-columns:auto 1fr auto auto;gap:32px;align-items:center;font-family:var(--tl-font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase}
.tl-hero .counter{font-size:13px;letter-spacing:.12em}
.tl-hero .counter b{color:var(--tl-accent);font-weight:500}
.tl-hero .scroll-cue{display:flex;align-items:center;gap:12px;opacity:.7}
.tl-hero .arrows{display:flex;gap:0;border:1px solid rgba(255,255,255,.4)}
.tl-hero .arrows button{padding:10px 16px;color:#fff;border-right:1px solid rgba(255,255,255,.4);transition:background .2s,color .2s}
.tl-hero .arrows button:last-child{border-right:0}
.tl-hero .arrows button:hover{background:#fff;color:var(--tl-ink)}

/* ——— HOME · statement strip ——— */
.tl-statement{
  display:grid;grid-template-columns:120px 1fr 320px;gap:48px;
  padding:160px 64px;align-items:start;background:var(--tl-paper);
}
.tl-statement .num{font-family:var(--tl-font-mono);font-size:11px;color:var(--tl-stone);letter-spacing:.18em;padding-top:14px}
.tl-statement .body{font-weight:300;font-size:clamp(28px,3vw,48px);line-height:1.25;letter-spacing:-.015em;color:var(--tl-ink);max-width:24ch}
.tl-statement .body em{font-style:normal;color:var(--tl-stone)}
.tl-statement .body .cjk{display:block;font-weight:300;color:var(--tl-graphite);margin-top:.5em;font-size:.62em;line-height:1.6}
.tl-statement .meta{font-family:var(--tl-font-mono);font-size:11px;color:var(--tl-stone);letter-spacing:.06em;line-height:1.9;border-top:1px solid var(--tl-line);padding-top:18px}
.tl-statement .meta b{color:var(--tl-ink);font-weight:500}

/* ——— Section header rule (museum-label style) ——— */
.tl-secrule{
  display:grid;grid-template-columns:120px 1fr auto;gap:32px;align-items:baseline;
  padding-bottom:32px;margin-bottom:64px;border-top:1px solid var(--tl-ink);padding-top:24px
}
.tl-secrule .num{font-family:var(--tl-font-mono);font-size:11px;letter-spacing:.18em;color:var(--tl-stone)}
.tl-secrule h2{font-weight:300;font-size:48px;line-height:1;letter-spacing:-.02em}
.tl-secrule h2 .cjk{font-weight:300;color:var(--tl-stone);font-size:.6em;margin-left:18px;letter-spacing:.04em}
.tl-secrule .right{font-family:var(--tl-font-mono);font-size:11px;color:var(--tl-stone);letter-spacing:.06em;text-align:right;line-height:1.7;max-width:300px}

/* ——— HOME · index strip ——— */
.tl-index{
  display:grid;grid-template-columns:repeat(12,1fr);gap:32px;padding:0 64px 160px;background:var(--tl-paper)
}
.tl-index .head{grid-column:1/-1;margin-bottom:24px}

.tl-index .list{grid-column:1/8;border-top:1px solid var(--tl-ink)}
.tl-index .row{
  display:grid;grid-template-columns:60px 1fr auto auto;gap:24px;align-items:baseline;
  padding:22px 0;border-bottom:1px solid var(--tl-line);cursor:pointer;
  transition:padding-left .35s var(--tl-ease), color .25s var(--tl-ease);
  position:relative
}
.tl-index .row:hover{padding-left:16px}
.tl-index .row .no{font-family:var(--tl-font-mono);font-size:11px;color:var(--tl-stone);letter-spacing:.08em}
.tl-index .row .name{font-size:24px;font-weight:400;letter-spacing:-.01em;color:var(--tl-ink)}
.tl-index .row .name .cjk{color:var(--tl-stone);font-size:.7em;font-weight:300;margin-left:14px}
.tl-index .row .place{font-family:var(--tl-font-mono);font-size:11px;color:var(--tl-stone);letter-spacing:.06em;text-transform:uppercase}
.tl-index .row .arr{font-family:var(--tl-font-mono);font-size:14px;color:var(--tl-stone);transform:translateX(-8px);opacity:0;transition:transform .3s var(--tl-ease),opacity .3s var(--tl-ease)}
.tl-index .row:hover .arr{transform:translateX(0);opacity:1;color:var(--tl-accent)}
.tl-index .row.is-active{color:var(--tl-ink)}

.tl-index .preview{
  grid-column:9/13;position:sticky;top:120px;height:600px;background:var(--tl-mist);
  overflow:hidden;border:1px solid var(--tl-line)
}
.tl-index .preview .layer{position:absolute;inset:0;opacity:0;transition:opacity .5s var(--tl-ease)}
.tl-index .preview .layer.on{opacity:1}
.tl-index .preview img{width:100%;height:100%;object-fit:cover}
.tl-index .preview .pmeta{
  position:absolute;left:0;right:0;bottom:0;padding:16px 20px;
  display:flex;justify-content:space-between;font-family:var(--tl-font-mono);font-size:11px;
  color:#fff;letter-spacing:.06em;text-transform:uppercase;
  background:linear-gradient(to top,rgba(0,0,0,.7),rgba(0,0,0,0))
}

/* ——— HOME · disciplines ——— */
.tl-disc{display:grid;grid-template-columns:repeat(12,1fr);gap:0;padding:0 64px 160px;border-top:1px solid var(--tl-ink)}
.tl-disc .cell{
  grid-column:span 4;padding:48px 32px 32px;border-right:1px solid var(--tl-line);border-bottom:1px solid var(--tl-line);
  min-height:220px;display:flex;flex-direction:column;justify-content:space-between;
  transition:background .25s var(--tl-ease)
}
.tl-disc .cell:hover{background:var(--tl-bone)}
.tl-disc .cell .top{display:flex;justify-content:space-between;align-items:start}
.tl-disc .cell .top .num{font-family:var(--tl-font-mono);font-size:11px;color:var(--tl-stone);letter-spacing:.12em}
.tl-disc .cell .top .count{font-family:var(--tl-font-mono);font-size:11px;color:var(--tl-stone)}
.tl-disc .cell .name{font-size:36px;font-weight:300;letter-spacing:-.015em}
.tl-disc .cell .name .cjk{display:block;color:var(--tl-stone);font-size:.5em;letter-spacing:.04em;margin-top:6px}

/* ——— HOME · awards strip ——— */
.tl-awards{padding:0 64px 160px}
.tl-awards .list{border-top:1px solid var(--tl-ink)}
.tl-awards .row{display:grid;grid-template-columns:120px 1fr auto;gap:32px;padding:28px 0;border-bottom:1px solid var(--tl-line);align-items:baseline}
.tl-awards .row .yr{font-family:var(--tl-font-mono);font-size:14px;color:var(--tl-ink)}
.tl-awards .row .nm{font-size:22px;font-weight:400;letter-spacing:-.005em}
.tl-awards .row .nm .cjk{color:var(--tl-stone);font-size:.65em;margin-left:14px;font-weight:300}
.tl-awards .row .ct{font-family:var(--tl-font-mono);font-size:11px;color:var(--tl-stone);letter-spacing:.12em;text-transform:uppercase}

/* ——— Footer ——— */
.tl-foot{
  background:var(--tl-ink);color:rgba(255,255,255,.7);padding:96px 64px 32px
}
.tl-foot .grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr 1fr;gap:48px;padding-bottom:96px;border-bottom:1px solid rgba(255,255,255,.12)}
.tl-foot .mark{color:#fff;font-weight:300;letter-spacing:.32em;font-size:24px;margin-bottom:14px}
.tl-foot .mark .cjk{display:block;font-size:14px;letter-spacing:.18em;opacity:.6;margin-top:8px;font-weight:300}
.tl-foot p{font-size:13px;line-height:1.7;max-width:34ch}
.tl-foot h6{color:#fff;font-family:var(--tl-font-mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;margin-bottom:16px;font-weight:500}
.tl-foot ul{display:flex;flex-direction:column;gap:8px}
.tl-foot ul a, .tl-foot ul li{font-size:13px;color:rgba(255,255,255,.65);transition:color .2s}
.tl-foot ul a:hover{color:#fff}
.tl-foot .row-ad{display:grid;grid-template-columns:repeat(4,1fr);gap:48px;padding:48px 0;border-bottom:1px solid rgba(255,255,255,.12)}
.tl-foot .row-ad .ad{font-size:13px;line-height:1.7;color:rgba(255,255,255,.7)}
.tl-foot .row-ad .ad b{display:block;color:#fff;font-family:var(--tl-font-mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;margin-bottom:8px;font-weight:500}
.tl-foot .legal{padding-top:32px;display:flex;justify-content:space-between;font-family:var(--tl-font-mono);font-size:11px;color:rgba(255,255,255,.4);letter-spacing:.06em}

/* ——— Projects index page ——— */
.tl-pgrid{display:grid;grid-template-columns:repeat(12,1fr);gap:32px;padding:0 64px 160px}
.tl-pgrid .head{grid-column:1/-1;margin-bottom:32px}
.tl-pgrid .filter{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:10px;border-top:1px solid var(--tl-ink);padding:24px 0;margin-bottom:48px;align-items:center}
.tl-pgrid .filter .lbl{font-family:var(--tl-font-mono);font-size:11px;color:var(--tl-stone);letter-spacing:.18em;text-transform:uppercase;margin-right:16px}
.tl-pgrid .filter .chip{padding:8px 14px;border:1px solid var(--tl-line);background:var(--tl-paper);font-family:var(--tl-font-mono);font-size:11px;color:var(--tl-graphite);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;transition:all .2s var(--tl-ease)}
.tl-pgrid .filter .chip:hover{border-color:var(--tl-ink)}
.tl-pgrid .filter .chip.on{background:var(--tl-ink);color:#fff;border-color:var(--tl-ink)}
.tl-pgrid .filter .view{margin-left:auto;display:flex;gap:0;border:1px solid var(--tl-line)}
.tl-pgrid .filter .view button{padding:8px 12px;font-family:var(--tl-font-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--tl-stone);border-right:1px solid var(--tl-line)}
.tl-pgrid .filter .view button:last-child{border-right:0}
.tl-pgrid .filter .view button.on{color:var(--tl-ink);background:var(--tl-bone)}

.tl-pgrid .card{grid-column:span 4;cursor:pointer;display:block}
.tl-pgrid.dense .card{grid-column:span 3}
.tl-pgrid.list-view .card{grid-column:span 12}
.tl-pgrid .card .img{
  position:relative;aspect-ratio:4/3;background:var(--tl-mist);overflow:hidden;border:1px solid var(--tl-line)
}
.tl-pgrid .card .img img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--tl-ease),filter .4s var(--tl-ease)}
.tl-pgrid .card:hover .img img{transform:scale(1.04)}
.tl-pgrid .card .img .num{position:absolute;top:14px;left:16px;font-family:var(--tl-font-mono);font-size:11px;color:#fff;letter-spacing:.08em;mix-blend-mode:difference}
.tl-pgrid .card .img .stamp{position:absolute;top:14px;right:16px;padding:4px 8px;background:rgba(255,255,255,.92);font-family:var(--tl-font-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--tl-ink)}
.tl-pgrid .card .body{padding:18px 0 0;display:grid;grid-template-columns:1fr auto;gap:8px}
.tl-pgrid .card .ttl{font-size:20px;font-weight:400;letter-spacing:-.005em;line-height:1.25;grid-column:1/2}
.tl-pgrid .card .ttl .cjk{color:var(--tl-stone);font-size:.7em;margin-left:10px;font-weight:300}
.tl-pgrid .card .cat{font-family:var(--tl-font-mono);font-size:10px;color:var(--tl-stone);letter-spacing:.18em;text-transform:uppercase;grid-column:1/2}
.tl-pgrid .card .yr{font-family:var(--tl-font-mono);font-size:11px;color:var(--tl-stone);letter-spacing:.06em;grid-column:2/3;grid-row:1/3;align-self:start;padding-top:4px}

.tl-pgrid.list-view .card{display:grid;grid-template-columns:60px 1fr 220px 220px 100px;gap:24px;padding:18px 0;border-bottom:1px solid var(--tl-line);align-items:baseline}
.tl-pgrid.list-view .card:hover{background:var(--tl-bone)}
.tl-pgrid.list-view .card .img{display:none}
.tl-pgrid.list-view .card .body{display:contents}
.tl-pgrid.list-view .card .ttl{font-size:22px;grid-column:auto}
.tl-pgrid.list-view .card .cat,.tl-pgrid.list-view .card .yr{grid-column:auto;align-self:baseline}

/* ——— Project detail ——— */
.tl-detail-hero{position:relative;height:88vh;min-height:700px;background:var(--tl-ink);overflow:hidden}
.tl-detail-hero img{width:100%;height:100%;object-fit:cover}
.tl-detail-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.45) 0,rgba(0,0,0,0) 30%, rgba(0,0,0,0) 60%, rgba(0,0,0,.55) 100%)}
.tl-detail-hero .frame{position:absolute;inset:96px 64px 64px;color:#fff;display:flex;flex-direction:column;justify-content:flex-end;gap:24px;pointer-events:none}
.tl-detail-hero .breadcrumb{font-family:var(--tl-font-mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;opacity:.78}
.tl-detail-hero .breadcrumb a{cursor:pointer;pointer-events:auto}
.tl-detail-hero h1{font-weight:300;font-size:clamp(56px,9vw,128px);letter-spacing:-.025em;line-height:.95;max-width:14ch}
.tl-detail-hero h1 .cjk{display:block;font-weight:300;color:rgba(255,255,255,.65);font-size:.42em;margin-top:.2em}
.tl-detail-hero .meta-row{display:grid;grid-template-columns:repeat(4,1fr);gap:32px;border-top:1px solid rgba(255,255,255,.3);padding-top:24px;font-family:var(--tl-font-mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;max-width:1100px}
.tl-detail-hero .meta-row .key{opacity:.6;margin-bottom:6px}
.tl-detail-hero .meta-row .val{color:#fff}

.tl-detail-body{padding:128px 64px;display:grid;grid-template-columns:120px 1fr 360px;gap:48px}
.tl-detail-body .num{font-family:var(--tl-font-mono);font-size:11px;color:var(--tl-stone);letter-spacing:.18em;padding-top:14px}
.tl-detail-body .lede{font-weight:300;font-size:32px;line-height:1.4;letter-spacing:-.01em;color:var(--tl-ink);max-width:30ch}
.tl-detail-body .lede .cjk{display:block;color:var(--tl-graphite);font-size:.7em;margin-top:.6em;line-height:1.65}
.tl-detail-body .meta-block{font-family:var(--tl-font-mono);font-size:12px;line-height:1.9;letter-spacing:.04em}
.tl-detail-body .meta-block .row{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:14px 0;border-bottom:1px dotted var(--tl-line)}
.tl-detail-body .meta-block .row b{color:var(--tl-ink);font-weight:500;font-size:11px;letter-spacing:.18em;text-transform:uppercase}
.tl-detail-body .meta-block .row span{color:var(--tl-graphite);font-family:var(--tl-font-sans);font-size:13px}

.tl-detail-gallery{padding:0 64px 128px;display:grid;grid-template-columns:repeat(12,1fr);gap:32px}
.tl-detail-gallery .g-l{grid-column:1/8;aspect-ratio:4/3;background:var(--tl-mist);overflow:hidden}
.tl-detail-gallery .g-r{grid-column:8/13;display:flex;flex-direction:column;gap:32px}
.tl-detail-gallery .g-r > div{aspect-ratio:4/3;background:var(--tl-mist);overflow:hidden}
.tl-detail-gallery img{width:100%;height:100%;object-fit:cover}

.tl-detail-fullbleed{height:90vh;min-height:600px;background:var(--tl-mist);margin-bottom:128px;overflow:hidden}
.tl-detail-fullbleed img{width:100%;height:100%;object-fit:cover}

.tl-detail-next{padding:0 64px 96px;display:grid;grid-template-columns:1fr 1fr;gap:32px;border-top:1px solid var(--tl-ink);padding-top:48px}
.tl-detail-next a{cursor:pointer;display:block}
.tl-detail-next .key{font-family:var(--tl-font-mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--tl-stone);margin-bottom:14px}
.tl-detail-next .ttl{font-size:36px;font-weight:300;letter-spacing:-.015em;transition:color .2s}
.tl-detail-next .ttl .cjk{color:var(--tl-stone);font-size:.6em;margin-left:14px}
.tl-detail-next a:hover .ttl{color:var(--tl-accent)}
.tl-detail-next .right{text-align:right}

/* ——— Firm page ——— */
.tl-firm-hero{padding:160px 64px 96px;display:grid;grid-template-columns:120px 1fr 320px;gap:48px;align-items:end}
.tl-firm-hero .num{font-family:var(--tl-font-mono);font-size:11px;color:var(--tl-stone);letter-spacing:.18em}
.tl-firm-hero h1{font-weight:300;font-size:clamp(56px,8vw,128px);line-height:.95;letter-spacing:-.025em}
.tl-firm-hero h1 .cjk{display:block;font-weight:300;color:var(--tl-stone);font-size:.4em;margin-top:.25em}
.tl-firm-hero .meta{font-family:var(--tl-font-mono);font-size:11px;color:var(--tl-stone);letter-spacing:.06em;line-height:1.9}

.tl-firm-img{padding:0 64px 128px}
.tl-firm-img figure{aspect-ratio:16/9;background:var(--tl-mist);overflow:hidden;position:relative}
.tl-firm-img figure img{width:100%;height:100%;object-fit:cover}
.tl-firm-img figcaption{display:flex;justify-content:space-between;padding-top:16px;font-family:var(--tl-font-mono);font-size:11px;color:var(--tl-stone);letter-spacing:.06em;text-transform:uppercase}

.tl-firm-essay{padding:0 64px 160px;display:grid;grid-template-columns:120px 1fr 1fr;gap:48px}
.tl-firm-essay .num{font-family:var(--tl-font-mono);font-size:11px;color:var(--tl-stone);letter-spacing:.18em;padding-top:14px}
.tl-firm-essay .col{font-size:17px;line-height:1.75;color:var(--tl-graphite);font-weight:400}
.tl-firm-essay .col p{margin-bottom:24px}
.tl-firm-essay .col p:first-letter{font-size:1.4em;font-weight:300;color:var(--tl-ink)}
.tl-firm-essay .col.cjk-col{font-family:var(--tl-font-serif);line-height:2}

.tl-firm-team{padding:0 64px 128px}
.tl-firm-team .grid{display:grid;grid-template-columns:repeat(4,1fr);gap:32px;margin-top:48px}
.tl-firm-team .person .ph{aspect-ratio:4/5;background:var(--tl-mist);position:relative;border:1px solid var(--tl-line);overflow:hidden}
.tl-firm-team .person .ph::before,.tl-firm-team .person .ph::after{content:"";position:absolute;inset:0;background-image:linear-gradient(45deg,transparent calc(50% - .5px),var(--tl-line) calc(50% - .5px),var(--tl-line) calc(50% + .5px),transparent calc(50% + .5px))}
.tl-firm-team .person .ph::after{transform:scaleY(-1)}
.tl-firm-team .person .nm{font-size:18px;font-weight:400;margin-top:14px;letter-spacing:-.005em}
.tl-firm-team .person .nm .cjk{color:var(--tl-stone);font-weight:300;font-size:.75em;margin-left:8px}
.tl-firm-team .person .role{font-family:var(--tl-font-mono);font-size:11px;color:var(--tl-stone);letter-spacing:.08em;margin-top:4px;text-transform:uppercase}

/* ——— Contact ——— */
.tl-contact{padding:160px 64px;display:grid;grid-template-columns:120px 1fr 1fr;gap:48px;min-height:calc(100vh - 64px)}
.tl-contact .num{font-family:var(--tl-font-mono);font-size:11px;color:var(--tl-stone);letter-spacing:.18em}
.tl-contact h1{font-weight:300;font-size:clamp(56px,8vw,128px);line-height:.95;letter-spacing:-.03em}
.tl-contact h1 .cjk{display:block;font-weight:300;color:var(--tl-stone);font-size:.4em;margin-top:.25em}
.tl-contact .lede{font-size:20px;line-height:1.5;color:var(--tl-graphite);max-width:36ch;margin-top:24px;font-weight:300}
.tl-contact .offices{display:flex;flex-direction:column;gap:48px}
.tl-contact .offices .o{padding:24px 0;border-top:1px solid var(--tl-ink)}
.tl-contact .offices .o h3{font-size:24px;font-weight:400;letter-spacing:-.005em;margin-bottom:14px}
.tl-contact .offices .o h3 .cjk{color:var(--tl-stone);font-size:.6em;margin-left:10px;font-weight:300}
.tl-contact .offices .o p{font-family:var(--tl-font-mono);font-size:12px;line-height:1.9;color:var(--tl-graphite);letter-spacing:.04em}
.tl-contact .offices .o p b{color:var(--tl-ink);font-weight:500}
.tl-contact .offices .o p a{display:inline-block;border-bottom:1px solid var(--tl-line);transition:border-color .2s}
.tl-contact .offices .o p a:hover{border-bottom-color:var(--tl-ink)}

/* Page transition */
.tl-page{animation:fadeUp .6s var(--tl-ease)}
@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}

/* Reveal */
[data-reveal]{opacity:0;transform:translateY(24px);transition:opacity .9s var(--tl-ease), transform .9s var(--tl-ease)}
[data-reveal].in{opacity:1;transform:none}

/* Tweaks accent injection */
:root{--tl-accent:var(--tl-ochre)}
[data-accent="ochre"]{--tl-accent:var(--tl-ochre)}
[data-accent="indigo"]{--tl-accent:var(--tl-indigo)}
[data-accent="moss"]{--tl-accent:var(--tl-moss)}
[data-accent="rust"]{--tl-accent:var(--tl-rust)}

/* Density tweak */
[data-density="compact"] .tl-section,[data-density="compact"] .tl-statement,[data-density="compact"] .tl-firm-essay,[data-density="compact"] .tl-firm-hero,[data-density="compact"] .tl-firm-img,[data-density="compact"] .tl-firm-team,[data-density="compact"] .tl-disc,[data-density="compact"] .tl-awards,[data-density="compact"] .tl-index,[data-density="compact"] .tl-pgrid{padding-top:80px;padding-bottom:80px}

/* CJK-priority swap */
[data-lang="cjk"] .swap-en{display:none}
[data-lang="cjk"] .swap-cjk{display:inline}
.swap-cjk{display:none}

/* ——— Lab page ——— */
.tl-lab-list{padding:0 120px 96px;border-top:1px solid var(--tl-line)}
.tl-lab-list .lab-row{display:grid;grid-template-columns:140px 1fr 380px;gap:32px;padding:32px 0;border-bottom:1px solid var(--tl-line);align-items:center}
.tl-lab-list .lab-row:hover{background:var(--tl-bone)}
.tl-lab-list .lab-meta{font-family:var(--tl-font-mono);font-size:11px;color:var(--tl-stone);letter-spacing:.18em;line-height:2}
.tl-lab-list .lab-meta .num{color:var(--tl-ink);font-size:13px;margin-bottom:8px}
.tl-lab-list .lab-meta .kind{display:block}
.tl-lab-list .lab-meta .year{display:block;color:var(--tl-graphite)}
.tl-lab-list .lab-body{padding-top:2px}
.tl-lab-list .lab-body .tag{font-family:var(--tl-font-mono);font-size:10px;letter-spacing:.22em;color:var(--tl-accent);text-transform:uppercase;margin-bottom:14px}
.tl-lab-list .lab-title{font-weight:300;font-size:36px;line-height:1.1;letter-spacing:-.015em;color:var(--tl-ink);margin-bottom:18px}
.tl-lab-list .lab-title .cjk{display:block;font-size:.55em;color:var(--tl-stone);font-weight:300;margin-top:6px;letter-spacing:0}
.tl-lab-list .lab-blurb{font-size:15px;line-height:1.7;color:var(--tl-graphite);max-width:54ch;margin-bottom:22px}
.tl-lab-list .lab-link{font-family:var(--tl-font-mono);font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--tl-ink);border-bottom:1px solid var(--tl-line);padding-bottom:3px;cursor:pointer}
.tl-lab-list .lab-link:hover{border-color:var(--tl-accent);color:var(--tl-accent)}
.tl-lab-list .lab-img{aspect-ratio:16/9;overflow:hidden;background:var(--tl-mist);align-self:stretch}
.tl-lab-list .lab-img img{width:100%;height:100%;object-fit:cover;filter:grayscale(.15)}
.tl-lab-foot{padding:64px 64px 160px;display:grid;grid-template-columns:120px 1fr;gap:48px;align-items:start}
.tl-lab-foot .num{font-family:var(--tl-font-mono);font-size:11px;color:var(--tl-stone);letter-spacing:.18em;padding-top:6px}
.tl-lab-foot p{font-size:22px;font-weight:300;line-height:1.5;color:var(--tl-ink);max-width:60ch}

/* ——— Art page ——— */
.tl-art-grid{padding:0 64px 96px;display:grid;grid-template-columns:1fr 1fr;gap:64px 48px;border-top:1px solid var(--tl-line);padding-top:64px}
.tl-art-grid .art-card{display:flex;flex-direction:column}
.tl-art-grid .art-img{position:relative;aspect-ratio:4/5;background:var(--tl-mist);overflow:hidden;margin-bottom:24px}
.tl-art-grid .art-img img{width:100%;height:100%;object-fit:cover}
.tl-art-grid .art-img .num{position:absolute;top:16px;left:16px;font-family:var(--tl-font-mono);font-size:11px;color:#fff;letter-spacing:.18em;background:rgba(17,17,16,.7);padding:6px 10px}
.tl-art-grid .art-img .stamp{position:absolute;bottom:16px;right:16px;font-family:var(--tl-font-mono);font-size:10px;color:#fff;letter-spacing:.22em;border:1px solid rgba(255,255,255,.6);padding:5px 10px}
.tl-art-grid .art-title{font-weight:300;font-size:32px;line-height:1.1;letter-spacing:-.015em;color:var(--tl-ink);margin-bottom:16px}
.tl-art-grid .art-title .cjk{display:block;font-size:.55em;color:var(--tl-stone);margin-top:6px;letter-spacing:0}
.tl-art-grid .art-blurb{font-size:15px;line-height:1.7;color:var(--tl-graphite);margin-bottom:24px;max-width:50ch}
.tl-art-grid .art-meta{border-top:1px solid var(--tl-line);font-family:var(--tl-font-mono);font-size:11px;letter-spacing:.06em;color:var(--tl-stone)}
.tl-art-grid .art-meta .row{display:grid;grid-template-columns:120px 1fr;padding:10px 0;border-bottom:1px solid var(--tl-line)}
.tl-art-grid .art-meta .row b{color:var(--tl-ink);font-weight:500;text-transform:uppercase}
.tl-art-grid .art-meta .row span{color:var(--tl-graphite)}
.tl-art-cta{padding:64px 64px 160px;display:grid;grid-template-columns:120px 1fr;gap:48px;align-items:start;border-top:1px solid var(--tl-line)}
.tl-art-cta .num{font-family:var(--tl-font-mono);font-size:11px;color:var(--tl-stone);letter-spacing:.18em;padding-top:6px}
.tl-art-cta p{font-size:22px;font-weight:300;line-height:1.5;color:var(--tl-ink)}
.tl-art-cta a{color:var(--tl-accent);border-bottom:1px solid var(--tl-line);padding-bottom:2px}

@media(max-width:900px){
  .tl-lab-list{padding:0 24px 64px}
  .tl-lab-list .lab-row{grid-template-columns:1fr;gap:16px;padding:32px 0}
  .tl-lab-list .lab-img{aspect-ratio:3/2;order:-1}
  .tl-lab-foot,.tl-art-cta{padding:48px 24px 96px;grid-template-columns:1fr;gap:16px}
  .tl-art-grid{padding:48px 24px 64px;grid-template-columns:1fr;gap:48px}
}

/* Custom scrollbar (subtle) */
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:var(--tl-line)}
::-webkit-scrollbar-thumb:hover{background:var(--tl-stone)}

/* Mobile niceties */
@media (max-width:900px){
  .tl-topbar{padding:14px 20px;grid-template-columns:1fr auto}
  .tl-topbar nav{display:none}
  .tl-topbar .right{display:none}
  .tl-hero .frame{inset:80px 24px 32px}
  .tl-hero .stage{grid-template-columns:1fr}
  .tl-hero .credit{display:none}
  .tl-statement{grid-template-columns:1fr;padding:80px 24px;gap:24px}
  .tl-index{grid-template-columns:1fr;padding:0 24px 80px}
  .tl-index .list,.tl-index .preview{grid-column:1/-1}
  .tl-index .preview{display:none}
  .tl-disc{padding:0 24px 80px;grid-template-columns:1fr}
  .tl-disc .cell{grid-column:1/-1;border-right:0}
  .tl-awards{padding:0 24px 80px}
  .tl-pgrid{padding:0 24px 80px;grid-template-columns:1fr 1fr;gap:16px}
  .tl-pgrid .card{grid-column:span 1!important}
  .tl-detail-body,.tl-firm-hero,.tl-firm-essay,.tl-firm-team,.tl-contact,.tl-detail-gallery,.tl-detail-next{padding:64px 24px;grid-template-columns:1fr;gap:24px}
  .tl-foot{padding:48px 24px 24px}
  .tl-foot .grid{grid-template-columns:1fr;gap:32px;padding-bottom:48px}
  .tl-foot .row-ad{grid-template-columns:1fr 1fr;gap:24px}
}
