/* OpenDesign synthesis: editorial atlas + fast index + one spatial interlude. */
:root{--editorial-serif:"Baskerville","Songti SC","STSong","Noto Serif CJK SC",serif;--editorial-mono:"SF Mono",ui-monospace,Menlo,monospace}
body{background:#e9eee9;color:#153930;-webkit-font-smoothing:antialiased}
@view-transition{navigation:auto}
::view-transition-old(root){animation:.22s ease-in both editorial-out}
::view-transition-new(root){animation:.34s cubic-bezier(.16,1,.3,1) both editorial-in}
@keyframes editorial-out{to{opacity:.65}}
@keyframes editorial-in{from{clip-path:inset(0 0 0 100%)}to{clip-path:inset(0)}}
.site-header{height:76px;max-width:none;margin:0 clamp(22px,4.8vw,78px);padding:0;border-bottom:1px solid #aebfb3}
.brand{gap:10px}.brand-mark{height:auto;width:auto;background:transparent;color:#153930;border-radius:0;font-family:var(--editorial-serif);font-size:27px;letter-spacing:-.06em}.brand-note{border-left:1px solid #aebfb3;padding-left:10px;line-height:1.3;font-weight:600}
.site-nav{gap:clamp(20px,2.6vw,38px)}.site-nav a{font-size:12px;letter-spacing:.01em}
.hero-masthead{display:flex;justify-content:space-between;gap:15px;border-top:1px solid #153930;padding-top:11px;font-family:var(--editorial-mono);font-size:10px;letter-spacing:.1em;font-weight:700;color:#4b665e}
.editorial-hero{padding-top:clamp(25px,3.5vw,48px)}.editorial-hero-grid{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);gap:clamp(25px,4vw,64px);align-items:end;padding:clamp(42px,5vw,80px) 0 clamp(32px,4vw,55px)}
.editorial-hero-copy .small-label{margin-bottom:clamp(26px,4vw,58px)}.editorial-hero h1{font-family:var(--editorial-serif);font-weight:600;letter-spacing:-.035em;line-height:1.14;font-size:clamp(46px,5.5vw,82px);max-width:10.5em;margin:0 0 28px}.editorial-hero h1 span{font-style:italic;color:#1557dd}.hero-deck{font-size:clamp(15px,1.45vw,19px);line-height:1.8;color:#35574d;max-width:35em;margin:0 0 30px}.editorial-hero .button{min-width:170px}.editorial-hero .hero-actions{gap:clamp(18px,2.8vw,35px)}
.hero-project{min-width:0}.hero-image-link{position:relative;display:block;overflow:hidden;background:#dce5dc}.hero-image-link img{display:block;width:100%;aspect-ratio:4/4.5;object-fit:cover;object-position:center;transition:transform .65s cubic-bezier(.18,1,.3,1)}.hero-image-link:hover img{transform:scale(1.035)}.image-open{position:absolute;bottom:16px;right:16px;background:#f7f9f5;color:#153930;font-size:11px;font-weight:800;padding:8px 11px}.hero-image-caption{border-top:1px solid #153930;padding-top:10px;margin-top:11px;display:flex;justify-content:space-between;gap:15px;font-size:11px;color:#4b665e;font-weight:650}
.hero-footline{display:flex;justify-content:space-between;align-items:center;gap:20px;border-top:1px solid #bbc9c0;padding:14px 0 20px;font-size:12px;color:#4b665e}.hero-footline a{color:#1557dd;font-weight:700}.hero-footline a:hover{text-decoration:underline}
.selected-work{padding-top:clamp(85px,10vw,155px);padding-bottom:clamp(90px,9vw,140px)}.editorial-section-head{display:grid;grid-template-columns:155px minmax(0,1fr) minmax(170px,.55fr);gap:clamp(20px,3vw,45px);align-items:end;padding-bottom:28px;border-bottom:1px solid #153930}.editorial-section-head .small-label{align-self:start;margin:9px 0 0}.editorial-section-head h2{font-family:var(--editorial-serif);font-size:clamp(35px,4.2vw,60px);font-weight:600;line-height:1.18;letter-spacing:-.025em;margin:0}.editorial-section-head>p{font-size:13px;line-height:1.8;color:#4b665e;margin:0 0 6px}.featured-list{border-top:0}.featured-list .feature-row{min-height:290px;grid-template-columns:14% minmax(0,1fr) 31% 28px;gap:clamp(14px,2.5vw,36px);padding:28px 0;align-items:center}.featured-list .feature-row:hover{background:#e2eae3}.featured-list .feature-meta{align-self:start}.featured-list .feature-copy h3{font-family:var(--editorial-serif);font-size:clamp(27px,3vw,45px);font-weight:600;line-height:1.16}.featured-list .feature-copy p{font-size:13px;line-height:1.75}.featured-list .feature-visual{height:226px}.featured-list .visual{min-height:0}.featured-list .visual-photo img{object-fit:cover}.featured-list .row-arrow{align-self:start}.selected-work .section-end{padding-top:24px}
.spatial-interlude{background:#092820;color:#f0f4ed;overflow:hidden}.spatial-inner{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(30px,5vw,78px);padding-top:clamp(58px,7vw,100px);padding-bottom:clamp(58px,7vw,100px);align-items:center}.spatial-kicker{font-family:var(--editorial-mono);font-size:10px;letter-spacing:.14em;color:#83b9a3;margin-bottom:30px}.spatial-copy h2{font-family:var(--editorial-serif);font-weight:600;font-size:clamp(36px,4vw,61px);letter-spacing:-.025em;line-height:1.18;margin-bottom:20px}.spatial-copy>p:not(.spatial-kicker){color:#bdd2c4;font-size:14px;line-height:1.8;max-width:28em;margin-bottom:28px}.spatial-stages{border-top:1px solid #4c7567}.spatial-stages a{display:grid;grid-template-columns:83px 1fr auto 17px;gap:12px;align-items:baseline;border-bottom:1px solid #4c7567;padding:14px 0;color:#f0f4ed;transition:color .2s,padding-left .2s}.spatial-stages a:hover{color:#87c0ff;padding-left:5px}.spatial-stages span{font-family:var(--editorial-mono);font-size:10px;color:#8abbaa}.spatial-stages strong{font-family:var(--editorial-serif);font-weight:600;font-size:25px}.spatial-stages small{color:#bdd2c4;font-size:11px}.spatial-stages b{font-size:16px;color:#87c0ff}.spatial-view{height:clamp(360px,39vw,540px);background:#031b15;position:relative;overflow:hidden}.spatial-view canvas,.spatial-fallback{position:absolute;inset:0;width:100%;height:100%;display:block}.spatial-fallback{object-fit:cover;opacity:.82}.spatial-view.has-webgl .spatial-fallback{display:none}.spatial-view canvas{opacity:0}.spatial-view.has-webgl canvas{opacity:1}.spatial-view-caption{position:absolute;left:0;right:0;bottom:0;padding:13px 15px;display:flex;justify-content:space-between;gap:10px;background:#051d17cc;color:#d0e4d6;font-size:10px;font-family:var(--editorial-mono);letter-spacing:.03em;pointer-events:none}
.domain-section{padding-top:clamp(90px,10vw,155px);padding-bottom:clamp(90px,9vw,135px)}.editorial-section-head.compact{grid-template-columns:155px 1fr}.domain-list{margin-top:34px}.domain-link{border-top:1px solid #bbc9c0}.domain-link:last-child{border-bottom:1px solid #bbc9c0}.domain-link h3{font-family:var(--editorial-serif);font-weight:600}.method-section{background:#dce6dc;color:#153930}.method-inner{padding-top:clamp(70px,8vw,115px);padding-bottom:clamp(70px,8vw,115px)}.method-title .small-label{color:#1557dd}.method-steps{border-color:#95afa0}.method-steps>div{border-color:#95afa0}.method-steps span{color:#4b665e}.method-title h2,.closing h2{font-family:var(--editorial-serif);font-weight:600}.closing{padding-top:clamp(95px,11vw,160px);padding-bottom:clamp(95px,11vw,160px)}
/* C: project index, with an adjacent reading pane. */
.work-main{padding-bottom:110px}.index-intro{padding-top:clamp(28px,3vw,45px)}.index-intro-main{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(220px,.6fr);align-items:end;gap:30px;padding:clamp(45px,5vw,75px) 0 clamp(45px,5vw,75px)}.index-intro h1{font-family:var(--editorial-serif);font-weight:600;letter-spacing:-.035em;font-size:clamp(58px,7vw,108px);line-height:1;margin:0}.index-intro h1 span{color:#1557dd}.index-intro-main p{font-size:15px;line-height:1.8;color:#4b665e;margin:0 0 4px}.index-toolbar{display:flex;justify-content:space-between;align-items:start;gap:22px;border-top:1px solid #153930;padding:15px 0 16px}.index-toolbar>span{font-size:11px;font-weight:700;color:#4b665e;white-space:nowrap;padding-top:10px}.index-toolbar .filters{border:0;padding:0;justify-content:flex-end}.filter{border:0;border-radius:0;padding:8px 10px;background:transparent;color:#4b665e}.filter small{font-family:var(--editorial-mono);font-size:9px;font-weight:500;margin-left:3px}.filter:hover{background:#dce6dc;color:#153930}.filter.active{background:#153930;color:#fff}.work-console{display:grid;grid-template-columns:minmax(0,1.18fr) minmax(300px,.82fr);border-top:1px solid #153930;border-bottom:1px solid #153930;min-height:750px}.work-ledger{min-width:0}.ledger-head,.index-row{display:grid;grid-template-columns:50px minmax(0,1fr) 110px 22px;gap:16px;align-items:center}.ledger-head{padding:12px 14px 12px 0;border-bottom:1px solid #bbc9c0;color:#4b665e;font-size:10px;font-family:var(--editorial-mono);letter-spacing:.04em}.index-row{width:100%;text-align:left;background:none;border:0;border-bottom:1px solid #bbc9c0;padding:19px 14px 19px 0;color:#153930;min-height:86px;transition:background .18s,padding-left .18s}.index-row:last-child{border-bottom:0}.index-row:hover,.index-row[aria-selected="true"]{background:#dfe9e0;padding-left:10px}.index-num{font-family:var(--editorial-mono);font-size:11px;color:#1557dd}.index-title{font-size:clamp(16px,1.45vw,20px);font-weight:750;line-height:1.35;letter-spacing:-.015em}.index-title small{display:block;font-weight:400;font-size:11px;color:#4b665e;line-height:1.5;margin-top:4px;letter-spacing:0}.index-category{font-size:11px;color:#4b665e}.index-arrow{color:#1557dd;font-size:18px}.work-detail{border-left:1px solid #bbc9c0;background:#f4f7f2;padding:clamp(22px,3vw,45px);min-width:0}.detail-top{display:flex;justify-content:space-between;gap:15px;border-bottom:1px solid #bbc9c0;padding-bottom:13px;font-family:var(--editorial-mono);font-size:10px;color:#4b665e}.work-detail h2{font-family:var(--editorial-serif);font-weight:600;font-size:clamp(30px,3vw,46px);line-height:1.16;letter-spacing:-.025em;margin:28px 0 15px}.detail-question{font-size:15px;font-weight:650;line-height:1.65;max-width:37ch;margin:0 0 25px}.detail-media{height:clamp(260px,27vw,385px);background:#e9eee9;overflow:hidden}.detail-media .visual{height:100%;min-height:0}.detail-media .visual-photo img{width:100%;height:100%;object-fit:cover}.detail-summary{color:#4b665e;font-size:13px;line-height:1.7;margin:20px 0 28px}.detail-cta{display:flex;justify-content:space-between;gap:18px;border-top:1px solid #153930;padding-top:13px;color:#1557dd;font-size:13px;font-weight:800}.detail-cta:hover{text-decoration:underline}.index-footer-note{display:flex;justify-content:space-between;gap:20px;font-size:12px;color:#4b665e;padding-top:18px}.index-footer-note a{color:#1557dd;font-weight:700}
.featured-list .row-1 .visual-photo img,.detail-media.category-hardware .visual-photo img{object-fit:contain}
.domain-list{display:block}.domain-link{min-height:116px;border-top:0}.domain-link:nth-child(odd){border-right:0}.domain-link:nth-child(even){padding-left:0}
/* Carry the editorial type hierarchy into the quieter case and about pages. */
.page-intro h1,.project-head h1,.about-contact h2{font-family:var(--editorial-serif);font-weight:600}.project-page .project-head h1{max-width:17ch}.project-section h2,.architecture-story-heading h2,.architecture-chapter-copy h3{font-family:var(--editorial-serif);font-weight:600}.project-toc{position:sticky;top:30px}.project-section{scroll-margin-top:35px}.about-main{padding-bottom:20px}
.data-showcase .lf-card svg .pop,.data-showcase .lf-card svg .fade,.data-showcase .lf-card svg .draw{animation:none!important;stroke-dashoffset:0!important}
@media(max-width:1050px){.editorial-section-head{grid-template-columns:115px minmax(0,1fr)}.editorial-section-head>p{grid-column:2}.featured-list .feature-row{grid-template-columns:10% minmax(0,1fr) 29% 20px}.spatial-inner{grid-template-columns:1fr 1fr}.spatial-stages a{grid-template-columns:75px 1fr 16px}.spatial-stages small{display:none}.work-console{grid-template-columns:minmax(0,1fr) minmax(280px,.85fr)}}
@media(max-width:760px){.site-header{height:70px}.brand-mark{font-size:24px}.site-nav{top:69px}.editorial-hero-grid{grid-template-columns:1fr;padding-top:55px}.editorial-hero h1{font-size:clamp(44px,10.4vw,70px)}.editorial-hero-copy .small-label{margin-bottom:22px}.hero-project{max-width:none}.hero-image-link img{aspect-ratio:1.45}.hero-image-caption{font-size:10px}.hero-footline{font-size:10px}.selected-work{padding-top:85px}.editorial-section-head,.editorial-section-head.compact{grid-template-columns:1fr;gap:14px}.editorial-section-head .small-label{margin:0}.editorial-section-head>p{grid-column:1}.featured-list .feature-row{grid-template-columns:1fr 112px 18px;gap:14px;min-height:170px;padding:21px 0}.featured-list .feature-meta{grid-column:1/-1}.featured-list .feature-copy h3{font-size:25px}.featured-list .feature-copy p{font-size:11px}.featured-list .feature-visual{height:112px}.spatial-inner{grid-template-columns:1fr}.spatial-view{height:340px;order:-1}.spatial-copy h2{font-size:37px}.spatial-stages small{display:block}.spatial-stages a{grid-template-columns:80px 1fr auto 17px}.index-intro-main{grid-template-columns:1fr;padding:43px 0}.index-intro-main p{max-width:35em}.index-toolbar{display:block}.index-toolbar>span{display:block;padding:0 0 12px}.index-toolbar .filters{justify-content:flex-start}.work-console{grid-template-columns:1fr;min-height:0}.work-detail{border-left:0;border-top:1px solid #153930}.index-row{min-height:75px}.detail-media{height:290px}.work-main{padding-bottom:65px}}
@media(max-width:500px){.hero-masthead span:last-child{display:none}.editorial-hero .hero-actions{align-items:flex-start}.editorial-hero .hero-actions .text-link{margin-top:2px}.hero-image-link img{aspect-ratio:1.22}.hero-image-caption span:last-child{display:none}.spatial-view{height:250px}.spatial-stages a{grid-template-columns:70px 1fr 17px}.spatial-stages small{display:none}.ledger-head,.index-row{grid-template-columns:30px minmax(0,1fr) 16px;gap:11px}.ledger-head span:nth-child(3),.index-category{display:none}.index-row{padding:15px 0}.index-row:hover,.index-row[aria-selected="true"]{padding-left:6px}.index-title{font-size:16px}.index-title small{font-size:10px}.work-detail{padding:23px 0;background:transparent}.detail-media{height:240px}.filter{font-size:11px;padding:7px 8px}.filter small{display:none}.index-intro h1{font-size:56px}}
@media(prefers-reduced-motion:reduce){.hero-image-link img,.index-row,.spatial-stages a{transition:none!important}.hero-image-link:hover img{transform:none}}
@media(prefers-reduced-motion:reduce){::view-transition-old(root),::view-transition-new(root){animation-duration:.01ms!important}}
@media(max-width:760px){.spatial-view.has-webgl canvas{display:none}.spatial-view.has-webgl .spatial-fallback{display:block}}
