.subhero{padding:100px 0 75px;border-bottom:1px solid var(--line)}.subhero h1{font-size:clamp(52px,7vw,92px);line-height:.95;letter-spacing:-.065em;margin:24px 0}.subhero p{max-width:760px;color:var(--muted);font-size:17px;line-height:1.8}.page-content{padding:80px 0 110px}.info-row,.project-row{display:grid;grid-template-columns:180px 1fr 1.25fr;gap:40px;padding:34px 0;border-top:1px solid var(--line)}.info-row:last-child,.project-row:last-child{border-bottom:1px solid var(--line)}.info-row small,.project-row small{font:600 9px "IBM Plex Mono";color:var(--teal)}.info-row h2,.project-row h2{font-size:26px;margin:0}.info-row p,.project-row p{margin:0;color:var(--muted);line-height:1.8;font-size:13px}.platform-details{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--ink);border-left:1px solid var(--line)}.platform-detail{padding:30px;min-height:430px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);scroll-margin-top:100px}.platform-detail>div{display:flex;justify-content:space-between;font:600 9px "IBM Plex Mono";color:var(--teal)}.platform-detail h2{font-size:29px;margin:70px 0 15px}.platform-detail p{color:var(--muted);font-size:13px;line-height:1.8}.platform-detail ul{list-style:none;padding:18px 0 0;margin-top:24px;border-top:1px solid var(--line);font-size:12px}.platform-detail li{padding:6px 0}.platform-detail li:before{content:"+";margin-right:10px;color:var(--teal)}.project-row{grid-template-columns:160px 1fr 210px}.project-row aside{display:flex;flex-direction:column;gap:16px;font:600 9px "IBM Plex Mono";color:var(--teal)}.project-row aside span{color:#8b9596}.method-list{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--ink)}.method-row{min-height:320px;padding:25px 20px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.method-row small{font:600 9px "IBM Plex Mono";color:var(--teal)}.method-row h2{margin:80px 0 12px;font-size:21px}.method-row p{font-size:12px;line-height:1.7;color:var(--muted)}.criteria{margin-top:60px;display:grid;grid-template-columns:repeat(4,1fr);background:var(--ink);color:white}.criteria div{min-height:150px;padding:22px;border-right:1px solid #53616a;display:flex;flex-direction:column;justify-content:space-between}.criteria b{font:600 9px "IBM Plex Mono";color:#8eb0b1}.criteria span{font-size:12px;color:#b9c3c4}
@media(max-width:800px){.info-row,.project-row{grid-template-columns:1fr;gap:12px}.platform-details,.method-list{grid-template-columns:1fr}.criteria{grid-template-columns:1fr 1fr}.subhero{padding-top:70px}}
@media(max-width:520px){.criteria{grid-template-columns:1fr}.platform-detail{min-height:auto}.platform-detail h2{margin-top:48px}}
.project-thumb{grid-column:1/-1;height:230px;margin:0 0 8px;overflow:hidden;border-bottom:1px solid var(--line);background:#e7edeb}.project-thumb img{width:100%;height:100%;object-fit:cover;filter:saturate(.65)}.project-thumb.contain img{object-fit:contain;padding:24px;filter:none}.project-row{padding-top:0;margin-top:34px}.project-row:first-child{margin-top:0}.subhero>.wrap{position:relative}.subhero>.wrap:after{content:"";position:absolute;right:0;top:-100px;bottom:-75px;width:1px;background:var(--line)}
@media(max-width:800px){.subhero>.wrap:after{display:none}.project-thumb{height:190px}}

/* shared spacing rhythm */
.subhero{padding:var(--sp-8) 0 var(--sp-6)}.subhero h1{margin:var(--sp-3) 0}.subhero>.wrap:after{top:calc(var(--sp-8) * -1);bottom:calc(var(--sp-6) * -1)}.page-content{padding:var(--sp-7) 0 var(--sp-8)}.info-row,.project-row{gap:var(--sp-4);padding:var(--sp-4) 0}.platform-detail{min-height:390px;padding:var(--sp-3)}.platform-detail-visual{margin:calc(var(--sp-3) * -1) calc(var(--sp-3) * -1) var(--sp-3);height:176px}.platform-detail h2{margin:var(--sp-6) 0 var(--sp-2)}.method-row{min-height:260px;padding:var(--sp-3)}.method-row h2{margin:var(--sp-6) 0 var(--sp-2)}.criteria{margin-top:var(--sp-6)}
@media(max-width:800px){.subhero{padding:var(--sp-7) 0 var(--sp-5)}.page-content{padding:var(--sp-6) 0 var(--sp-7)}}
