
.office-story{position:relative;background:var(--paper);isolation:isolate}
.office-heading{display:grid;grid-template-columns:1fr .8fr;gap:8vw;align-items:end;padding-block:42px 24px}
.office-heading h1{font-size:clamp(36px,4vw,60px)}
.office-heading .eyebrow{margin-bottom:15px}
.office-heading-copy>p:first-child{font-size:1rem;max-width:40ch;color:var(--muted);line-height:1.9;margin:0}
.office-hint{display:flex;gap:14px;align-items:center;font-size:.875rem;line-height:1.8;color:var(--muted);margin:16px 0 0}
.office-hint>span:first-child{font-size:23px;color:var(--accent)}
.office-track{position:relative}
.office-panel{max-width:1600px;margin-inline:auto;padding:8px 28px 20px;display:grid;grid-template-columns:minmax(0,1fr);justify-items:center;background:var(--paper)}
.is-office-scroll .office-track{height:var(--office-scene-height,auto)}
.is-office-scroll .office-panel{position:sticky;top:var(--header-height)}
.office-figure{width:100%;min-width:0;margin:0}
.office-art{position:relative;width:100%;aspect-ratio:3/2;overflow:hidden;background:var(--surface)}
.office-layer{position:absolute;inset:0;overflow:hidden;opacity:0;pointer-events:none}
.office-layer:last-of-type{opacity:1}
/* A 1% overscan keeps the generated atlas's centre seam outside each viewport. */
.office-layer img{position:absolute;display:block;width:202%;height:202%;max-width:none;left:-.5%;top:-.5%;user-select:none;-webkit-user-drag:none}
.office-layer[data-office-frame="1"] img{left:-101.5%}
.office-layer[data-office-frame="2"] img{top:-101.5%}
.office-layer[data-office-frame="3"] img{left:-101.5%;top:-101.5%}
.office-scan{position:absolute;top:0;bottom:0;width:1px;background:var(--paper);opacity:0;pointer-events:none}
.office-figure figcaption{display:flex;justify-content:space-between;align-items:baseline;gap:12px 24px;padding:12px 0}
.office-stage-name{display:block;font-size:1rem;line-height:1.6}
.office-concept{font-size:.75rem;line-height:1.7;color:var(--muted);text-align:right}
.office-stage-detail{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.office-progress{width:100%;min-width:0}
.office-progress-line{height:1px;background:var(--line);overflow:hidden}
.office-progress-line>span{display:block;width:100%;height:100%;background:var(--accent);transform:scaleX(var(--office-progress,1));transform-origin:left}
.office-stages{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;padding-top:10px}
.office-stages button{position:relative;min-height:44px;text-align:left;border:0;background:none;color:var(--muted);padding:5px 0 10px;font-size:.875rem;line-height:1.8}
.office-stages button::after{content:"";position:absolute;left:0;bottom:2px;width:28px;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:left}
.office-stages button[aria-pressed="true"]{color:var(--accent)}
.office-stages button[aria-pressed="true"]::after{transform:scaleX(1)}
.office-stages button:disabled{cursor:default}
.office-stages button:hover{color:var(--accent)}
.office-load-status{display:none;font-size:.875rem;color:var(--muted);padding:12px 0;margin:0}
.is-loading .office-load-status,.is-load-error .office-load-status{display:block}
.is-load-error .office-art{display:none}
.is-office-manual .office-figure,.is-office-manual .office-progress{max-width:1200px}
.commercial-bottom{display:flex;align-items:center;justify-content:space-between;gap:32px;border-top:1px solid var(--line);padding-top:24px;margin-top:20px}
.commercial-bottom>p{font-size:.875rem;line-height:1.9;max-width:56ch;margin:0;color:var(--muted)}
.commercial-bottom .text-link{flex-shrink:0}
@media(min-width:761px){.is-office-scroll .office-figure,.is-office-scroll .office-progress{width:min(100%,calc((100svh - var(--header-height) - 158px) * 1.5))}}
@media(max-width:760px){
 .office-heading{display:block;padding-block:28px 20px}
 .office-heading h1{font-size:36px}
 .office-heading h1 br{display:none}
 .office-heading-copy{margin-top:14px}
 .office-heading-copy>p:first-child{font-size:1rem}
 .office-panel{padding:8px 16px 18px}
 .office-figure figcaption{display:block;padding-block:10px}
 .office-stage-name{font-size:.875rem}
 .office-concept{display:block;text-align:left;margin-top:5px}
 .office-stages{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 18px}
 .commercial-bottom{display:block}
 .commercial-bottom .text-link{margin-top:16px}
}
@media(prefers-reduced-motion:reduce){
 .is-office-scroll .office-track{height:auto}
 .office-panel{position:relative!important}
 .office-scan{display:none}
}
