/* Office-specific editorial layout; shared navigation, Work and Home are untouched. */
.office-page{--office-rule:#c8cbbf;--office-muted:#6c7264}
.office-opening.frame-content{padding-bottom:28px}
.office-opening .frame-page-title{margin-bottom:40px}
.office-opening .frame-page-title h1{font-size:clamp(64px,9vw,132px);font-weight:400;line-height:.94;letter-spacing:-.065em}
.office-page .office-index{margin:0;align-items:center;gap:26px;font-size:12px}
.office-index a{text-decoration:none}.office-index a:hover{text-decoration:underline}
.office-language{margin-left:auto;display:flex;gap:14px}.office-language button{border:0;background:none;padding:5px 0;font:inherit;color:var(--office-muted);cursor:pointer}.office-language [aria-pressed=true]{color:inherit;border-bottom:1px solid currentColor}
.office-space-image{margin:0}.office-space-hero img{display:block;width:100%;height:auto;aspect-ratio:1672/941;max-height:calc(100svh - 150px);object-fit:cover;object-position:center}
.office-space-image figcaption{display:flex;gap:12px;flex-wrap:wrap;align-items:baseline;font-size:10px;line-height:1.5;letter-spacing:.04em;color:var(--office-muted);padding:12px 0}
.office-space-hero figcaption{padding:12px 5%}.office-space-image .office-concept-label{margin-left:auto}
.office-space-pending>div{height:min(56vw,620px);background:#dedfd8}.office-space-detail.office-space-pending>div{height:360px}
.office-content.frame-content{padding-top:100px;padding-bottom:90px}
.office-page .office-intro{border:0;padding:0;display:grid;grid-template-columns:1fr 2fr 3fr;gap:5%;margin-bottom:110px}
.office-page .office-intro h2{font-size:clamp(25px,3vw,44px);line-height:1.13;font-weight:400;letter-spacing:-.035em;overflow-wrap:anywhere;margin:0}
.office-practice-heading>p{font-size:14px;margin-top:22px;color:var(--office-muted)}
.office-practice-copy .office-lead{font-size:clamp(19px,2vw,26px);line-height:1.5;letter-spacing:-.015em;margin:0 0 26px;max-width:38ch}
.office-practice-more summary,.office-member-bio summary{list-style:none;cursor:pointer;font-size:11px;letter-spacing:.04em;display:flex;justify-content:space-between;border-bottom:1px solid var(--office-rule);padding:0 0 12px}
.office-practice-more summary:after,.office-member-bio summary:after{content:'+';font-size:18px;line-height:1}
.office-practice-more[open] summary:after,.office-member-bio[open] summary:after{content:'−'}
.office-practice-more p{font-size:14px;line-height:1.9;white-space:pre-line;max-width:48ch;margin-top:24px;color:var(--office-muted)}
.office-section-heading{border-top:1px solid var(--office-rule);padding-top:20px;display:flex;align-items:baseline;gap:32px}
.office-section-heading h2{margin:0;font-size:38px;line-height:1.1;font-weight:400;letter-spacing:-.04em}.office-section-heading>p:empty{display:none}
.office-people-group{margin-top:66px;scroll-margin-top:90px}
.office-people-group h3{display:flex;align-items:baseline;gap:16px;font-size:25px;line-height:1.2;font-weight:400;margin:0 0 28px;letter-spacing:-.025em}
.office-people-group h3 small{font-size:12px;color:var(--office-muted);font-weight:400;letter-spacing:0}
.office-member-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:52px 32px}
.office-member{min-width:0}.office-portrait{aspect-ratio:1/1;background:#e7e7e0;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden}
.office-portrait img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 30%}
.office-portrait-pending{display:block;width:100%;height:100%}
.office-concept-label{display:block;font-size:9px;line-height:1.5;font-weight:400;letter-spacing:.02em;color:var(--office-muted)}
.office-portrait>.office-concept-label{position:absolute;bottom:0;left:0;right:0;padding:7px 10px;background:rgba(245,244,239,.9)}
.office-member-copy{padding-top:18px;border-top:1px solid var(--office-rule);margin-top:16px}
.office-member-name{display:inline;font-size:23px;font-weight:400;line-height:1.3;letter-spacing:-.03em;margin:0}
.office-member-name[lang=zh-CN]{font-size:14px;margin-left:12px;letter-spacing:0;color:var(--office-muted)}
.office-member .office-member-role{font-size:12px;line-height:1.5;margin:10px 0 0;letter-spacing:.01em}
.office-member .office-member-role[lang=zh-CN]{margin-top:3px;color:var(--office-muted)}
.office-member-credentials{font-size:10px;line-height:1.6;color:var(--office-muted);margin:10px 0 0;min-height:1em}
.office-member-bio{margin-top:18px}.office-member-bio p,.office-member-bio blockquote{white-space:pre-line;font-size:13px;line-height:1.9;margin:20px 0;overflow-wrap:anywhere}.office-member-bio blockquote{border-left:1px solid var(--office-rule);padding-left:16px;color:var(--office-muted)}
.office-page[data-language=en] .office-practice-copy [lang=zh-CN],.office-page[data-language=en] .office-member-bio [lang=zh-CN],.office-page[data-language=en] .office-member-credentials[lang=zh-CN]{display:none}
.office-page[data-language=zh] .office-practice-copy [lang=en],.office-page[data-language=zh] .office-member-bio [lang=en],.office-page[data-language=zh] .office-member-credentials[lang=en]{display:none}
.office-alumni{border-top:1px solid var(--office-rule);padding-top:28px;margin-top:80px}.office-alumni h3{font-size:20px}.office-alumni .office-member-list{display:flex;flex-wrap:wrap;gap:28px 42px}.office-alumni .office-member{display:flex;align-items:center;gap:16px}.office-alumni .office-portrait{width:72px;flex:0 0 72px}.office-alumni .office-member-copy{border:0;padding:0;margin:0}.office-alumni .office-member-name{display:block;font-size:15px}.office-alumni .office-member-name[lang=zh-CN]{font-size:12px;margin:5px 0 0}.office-alumni .office-concept-label{font-size:8px;padding:3px}.office-alumni p{font-size:10px;color:var(--office-muted)}
.office-space-detail{margin-top:100px}.office-space-detail img{display:block;width:100%;height:auto;aspect-ratio:16/7;object-fit:cover}.office-support{display:grid;grid-template-columns:1fr 1fr;gap:8%;margin-top:80px}.office-support section{border-top:1px solid var(--office-rule);padding-top:20px}.office-support h2{font-size:26px;font-weight:400;margin:24px 0}.office-support p{font-size:13px;line-height:1.8;color:var(--office-muted)}
.office-preview-note{padding:10px 5%;font-size:10px;color:#6c7264;border-bottom:1px solid #c8cbbf;margin:0}
@media(max-width:800px){.office-page .office-intro{grid-template-columns:1fr 2fr;gap:26px}.office-intro>.eyebrow{grid-column:1/-1}.office-member-list{gap:36px 20px}.office-member-name{font-size:19px}.office-member-name[lang=zh-CN]{display:block;margin:5px 0 0}}
@media(max-width:560px){.office-opening.frame-content{padding-top:36px}.office-opening .frame-page-title{margin-bottom:30px}.office-page .office-index{gap:14px;font-size:10px}.office-language{margin-left:0}.office-content.frame-content{padding-top:50px}.office-page .office-intro{display:block;margin-bottom:60px}.office-practice-heading{margin:22px 0 28px}.office-practice-copy .office-lead{font-size:20px}.office-section-heading{display:block}.office-section-heading h2{font-size:32px;margin-top:18px}.office-people-group{margin-top:42px}.office-member-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:30px 16px}.office-member-name{font-size:18px}.office-member-name[lang=zh-CN]{font-size:12px}.office-member-copy{padding-top:12px;margin-top:10px}.office-member-role{font-size:11px!important}.office-member-bio summary{font-size:10px}.office-alumni{margin-top:50px}.office-alumni .office-member-list{gap:20px}.office-alumni .office-portrait{width:48px;flex-basis:48px}.office-alumni .office-member{gap:10px}.office-space-detail{margin-top:60px}.office-space-detail img{aspect-ratio:4/3}.office-support{grid-template-columns:1fr;gap:32px;margin-top:50px}}

.office-people-index{display:flex;flex-wrap:wrap;gap:24px;font-size:12px;margin-top:28px}.office-people-index a{text-decoration:underline;text-underline-offset:5px}

/* Supplied original portraits are small; retain a unified frame without enlarging their pixels. */
.office-portrait.is-original img{width:auto;height:auto;max-width:min(148px,100%);max-height:196px;object-fit:contain}

/* Keep the opening image and its title in one calm editorial sequence. */
.office-page>[data-office-space="hero"]+.office-opening{padding-top:36px}
@media(max-width:560px){.office-space-hero img{aspect-ratio:4/3;max-height:none}.office-page>[data-office-space="hero"]+.office-opening{padding-top:28px}}

/* The studio image stays still while the editorial content scrolls over it. */
.office-page{position:relative;isolation:isolate;background:#f5f4ef;--office-image-opacity:1}
.office-page>[data-office-space="hero"]{position:sticky;top:var(--nav-height);z-index:0;pointer-events:none}
.office-page>[data-office-space="hero"] .office-space-image{opacity:var(--office-image-opacity)}
.office-page>.office-opening{position:relative;z-index:1;background:linear-gradient(to bottom,transparent,#f5f4ef 150px);padding-top:90px!important}
.office-page>.office-content{position:relative;z-index:1;background:#f5f4ef}
@media(prefers-reduced-motion:reduce){.office-page>[data-office-space="hero"]{position:relative;top:auto}.office-page>[data-office-space="hero"] .office-space-image{opacity:1}.office-page>.office-opening{background:#f5f4ef;padding-top:36px!important}}

/* The main navigation already names Office; keep this transition as a quiet index. */
.office-opening .frame-page-title{margin:0 0 26px;display:block}
.office-opening .frame-page-title h1{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.office-opening .frame-page-title p{font-size:11px;letter-spacing:.04em;line-height:1.5;margin:0;color:var(--office-muted)}
.office-opening .office-index{border-bottom:1px solid var(--office-rule);padding-bottom:26px;gap:36px;font-size:14px}
.office-content.frame-content{padding-top:64px}
@media(max-width:560px){.office-opening .office-index{gap:20px;font-size:12px;padding-bottom:22px}.office-content.frame-content{padding-top:36px}}

/* A single two-column editorial grid connects the index and practice text. */
.office-opening .frame-page-title{margin:0}
.office-opening .frame-page-title p{display:none}
.office-opening .office-index{justify-content:flex-end;gap:32px;padding-bottom:22px;font-size:16px}
.office-page .office-intro{grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:10%;row-gap:20px;margin-bottom:90px}
.office-intro>.eyebrow{grid-column:1/-1}
.office-page .office-intro h2{font-size:clamp(26px,3.2vw,46px);max-width:16ch;line-height:1.12}
.office-practice-copy .office-lead{font-size:clamp(18px,1.65vw,23px);line-height:1.55;max-width:38ch;margin-bottom:30px}
.office-content.frame-content{padding-top:44px}
@media(max-width:560px){.office-opening .office-index{justify-content:space-between;gap:12px;font-size:14px}.office-page .office-intro{display:block;margin-bottom:60px}.office-practice-heading{margin:20px 0 30px}.office-content.frame-content{padding-top:30px}.office-practice-copy .office-lead{font-size:19px}}

.office-alumni-placeholder .office-portrait{color:var(--office-muted);font-size:18px;font-weight:400}.office-alumni-placeholder .office-member-copy p{margin-top:6px}

/* Alumni shares the same visual weight and portrait grid as the current team. */
.office-alumni h3{font-size:25px}
.office-alumni .office-member-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:52px 32px}
.office-alumni .office-member{display:block;min-width:0}
.office-alumni .office-portrait{width:100%;aspect-ratio:1/1}
.office-alumni .office-member-copy{padding-top:18px;border-top:1px solid var(--office-rule);margin-top:16px}
.office-alumni .office-member-name{font-size:23px;line-height:1.3}
.office-alumni .office-member-copy p{font-size:12px;margin-top:10px}
.office-alumni-placeholder .office-portrait{font-size:32px}
@media(max-width:800px){.office-alumni .office-member-list{gap:36px 20px}.office-alumni .office-member-name{font-size:19px}}
@media(max-width:560px){.office-alumni .office-member-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:30px 16px}.office-alumni .office-member-name{font-size:18px}.office-alumni .office-member-copy{padding-top:12px;margin-top:10px}}

/* Six alumni per row on desktop, with readable cards on smaller screens. */
.office-alumni .office-member-list{grid-template-columns:repeat(6,minmax(0,1fr));gap:32px 20px}
.office-alumni .office-member-name{font-size:16px;line-height:1.35}
@media(max-width:800px){.office-alumni .office-member-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:28px 20px}}
@media(max-width:560px){.office-alumni .office-member-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 16px}}

/* Share content tracks across each card row instead of fixing text heights. */
.office-people-group:not(.office-alumni) .office-member{display:grid;grid-template-rows:subgrid;grid-row:span 5;row-gap:0;align-content:start}
.office-people-group:not(.office-alumni) .office-member-copy{display:grid;grid-template-rows:subgrid;grid-row:span 4;row-gap:0}
.office-people-group:not(.office-alumni) .office-member-name{display:block;grid-row:1;align-self:start}
.office-people-group:not(.office-alumni) .office-member-role{grid-row:2;align-self:start}
.office-people-group:not(.office-alumni) .office-member-credentials{grid-row:3;align-self:start}
.office-people-group:not(.office-alumni) .office-member-bio{grid-row:4;align-self:start}

/* Reserve the same metadata slots even when a member has no credentials or biography. */
.office-people-group:not(.office-alumni) .office-member-name{min-height:30px}
.office-people-group:not(.office-alumni) .office-member-role{min-height:36px}
.office-people-group:not(.office-alumni) .office-member-credentials{min-height:32px}
.office-member-bio-empty{min-height:31px;border-bottom:1px solid var(--office-rule)}

/* Compact people rhythm while retaining shared tracks and aligned rules. */
.office-member-list{row-gap:30px}
.office-people-group{margin-top:44px}
.office-people-group h3{margin-bottom:20px}
.office-people-group:not(.office-alumni) .office-member-copy{margin-top:12px;padding-top:12px}
.office-people-group:not(.office-alumni) .office-member-name{min-height:28px}
.office-people-group:not(.office-alumni) .office-member-role{min-height:18px;margin-top:5px;line-height:1.4}
.office-people-group:not(.office-alumni) .office-member-credentials{min-height:16px;margin-top:6px;line-height:1.4}
.office-people-group:not(.office-alumni) .office-member-bio{margin-top:12px}
.office-member-bio summary{padding-bottom:8px}
.office-member-bio-empty{min-height:27px}
.office-member-bio p,.office-member-bio blockquote{line-height:1.6;margin:12px 0}
.office-alumni{margin-top:50px}
.office-alumni .office-member-list{row-gap:26px}
.office-alumni .office-member-copy{margin-top:12px;padding-top:12px}
.office-alumni .office-member-copy p{margin-top:6px}
@media(max-width:560px){.office-member-list{row-gap:24px}.office-people-group{margin-top:34px}.office-people-group:not(.office-alumni) .office-member-name{min-height:24px}}

/* Tighter credentials; Team does not reserve an absent biography footer. */
.office-people-group:not(.office-alumni) .office-member-credentials{margin-top:2px}
.office-team .office-member-bio-empty{display:none}
.office-people-group.office-team .office-member-credentials[aria-hidden="true"]{display:none}
.office-people-group.office-team .office-member-copy{padding-bottom:0}
.office-team .office-member-bio summary{border-bottom:0}
.office-team .office-member-list{row-gap:24px}

/* Name and professional information share a compact two-column caption. */
.office-people-group:not(.office-alumni) .office-member{grid-row:span 4}
.office-people-group:not(.office-alumni) .office-member-copy{grid-row:span 3;grid-template-columns:minmax(0,.9fr) minmax(0,1.35fr);column-gap:18px}
.office-people-group:not(.office-alumni) .office-member-name{grid-column:1;grid-row:1 / 3;font-size:20px;line-height:1.2;overflow-wrap:anywhere}
.office-people-group:not(.office-alumni) .office-member-role{grid-column:2;grid-row:1;margin-top:0;min-height:0;line-height:1.35}
.office-people-group:not(.office-alumni) .office-member-credentials{grid-column:2;grid-row:2;margin-top:3px;min-height:0;line-height:1.35}
.office-people-group:not(.office-alumni) .office-member-bio{grid-column:1 / -1;grid-row:3;margin-top:10px}
@media(max-width:800px){.office-people-group:not(.office-alumni) .office-member-copy{column-gap:12px}.office-people-group:not(.office-alumni) .office-member-name{font-size:18px}}
@media(max-width:560px){.office-people-group:not(.office-alumni) .office-member-copy{grid-template-columns:1fr;column-gap:0;grid-row:span 4}.office-people-group:not(.office-alumni) .office-member{grid-row:span 5}.office-people-group:not(.office-alumni) .office-member-name{grid-column:1;grid-row:1}.office-people-group:not(.office-alumni) .office-member-role{grid-column:1;grid-row:2;margin-top:4px}.office-people-group:not(.office-alumni) .office-member-credentials{grid-column:1;grid-row:3}.office-people-group:not(.office-alumni) .office-member-bio{grid-row:4}}

/* Professional details align with the right edge of each desktop card. */
.office-people-group:not(.office-alumni) :is(.office-member-role,.office-member-credentials){text-align:right}
@media(max-width:560px){.office-people-group:not(.office-alumni) :is(.office-member-role,.office-member-credentials){text-align:left}}

/* Pin the image to the viewport edge so the sliding banner exposes imagery, not a gutter. */
.office-page>[data-office-space="hero"]{top:0}

/* Keep imagery behind the banner even during fast scroll reversals. */
.office-page{margin-top:calc(-1 * var(--nav-height))}
@media(prefers-reduced-motion:reduce){.office-page{margin-top:0}}

/* Restore the original photograph below the banner; extend only its upper edge. */
.office-space-hero:has(img[src="assets/office/studio-placeholder.png"]){position:relative;padding-top:var(--nav-height);--office-photo-height:min(56.28vw,calc(100svh - 150px))}
.office-space-hero:has(img[src="assets/office/studio-placeholder.png"])::before{content:"";position:absolute;inset:0 0 auto;height:var(--nav-height);background-image:url('assets/office/studio-top-extension.png');background-size:100% auto;background-repeat:no-repeat;background-position:center calc(var(--nav-height) - 11.96vw - (56.28vw - var(--office-photo-height))/2)}
@media(max-width:560px){.office-space-hero:has(img[src="assets/office/studio-placeholder.png"])::before{background-size:133.26vw auto;background-position:center calc(var(--nav-height) - 15.94vw);background-color:#c3bcae}}
@media(prefers-reduced-motion:reduce){.office-space-hero:has(img[src="assets/office/studio-placeholder.png"]){padding-top:0}.office-space-hero::before{display:none}}
