/* ============================================================
   ShellForm Technologies · shellformtech.com
   Shared design system · v2.0 (2026-07-11)
   Palette: #1A1A1A ink · #9E9E9E mid · #F7F7F7/#E8E8E8 grays ·
   #72C02C green (accent only) · #0D2410 deep green (charts only)
   ============================================================ */

:root{
  --ink:#1A1A1A;
  --mid:#9E9E9E;
  --body2:#4a4a4a;
  --bg2:#F7F7F7;
  --bg3:#E8E8E8;
  --green:#72C02C;
  --maxw:1200px;
  --pad:32px;
}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
  color:var(--ink);background:#fff;line-height:1.55;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
img{display:block;max-width:100%}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--pad)}

/* ---------- reveal ---------- */
.fade{opacity:0;transform:translateY(14px);transition:opacity .55s ease-out,transform .55s ease-out}
.fade.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  .fade{opacity:1;transform:none;transition:none}
  html{scroll-behavior:auto}
}

/* ---------- nav ---------- */
nav{position:fixed;top:0;left:0;right:0;z-index:60;
  background:rgba(255,255,255,.9);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--bg3)}
nav .wrap{display:flex;align-items:center;justify-content:space-between;height:62px}
.logo{color:var(--ink);text-decoration:none}/* lockup font/size: see v44 canonical block at end */
nav ul{display:flex;gap:30px;list-style:none}
nav ul a{text-decoration:none;color:var(--ink);font-size:12.5px;letter-spacing:.06em;
  padding-bottom:5px;border-bottom:2px solid transparent;transition:border-color .2s}
nav ul a:hover,nav ul a.active{border-color:var(--green)}
nav .cta-mini{font-size:12px;font-weight:700;letter-spacing:.05em;color:var(--ink);
  text-decoration:none;border:1.5px solid var(--ink);padding:8px 16px;transition:.2s}
nav .cta-mini:hover{border-color:var(--green);color:var(--green)}
@media(max-width:920px){nav ul{display:none}}
@media(max-width:560px){nav .cta-mini{display:none}}

/* ---------- hero ---------- */
.hero{position:relative;min-height:100svh;display:flex;align-items:flex-end;
  overflow:hidden;color:#fff}
.hero-bg{position:absolute;inset:0;background-size:cover;background-position:58% 32%;
  transform:scale(1.05);animation:heroScale 7s ease-out forwards}
@keyframes heroScale{to{transform:scale(1)}}
@media (prefers-reduced-motion:reduce){.hero-bg{animation:none;transform:none}}
.hero-shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(10,14,20,.62) 0%,rgba(10,14,20,.38) 46%,rgba(10,14,20,.05) 72%),linear-gradient(180deg,rgba(10,14,20,0) 55%,rgba(10,14,20,.35) 100%)}
.hero .wrap{position:relative;z-index:2;padding-bottom:20vh;padding-top:120px;width:100%}
.hero .eyebrow{font-size:11px;letter-spacing:.34em;color:rgba(255,255,255,.75);margin-bottom:24px}
.hero .rule{width:46px;height:3px;background:var(--green);margin-bottom:32px}
.hero h1{font-size:clamp(42px,6vw,82px);line-height:1.04;font-weight:700;letter-spacing:-.018em}
.hero-text{max-width:58%}
@media(max-width:1100px){.hero-text{max-width:100%}}
.hero p.sub{margin-top:32px;font-size:clamp(16px,1.7vw,21px);max-width:660px;line-height:1.5;color:rgba(255,255,255,.94)}
.hero p.note{margin-top:14px;font-size:13.5px;color:var(--green);font-weight:700;letter-spacing:.02em}
.hero .scroll-hint{position:absolute;left:50%;bottom:26px;transform:translateX(-50%);
  width:1px;height:44px;background:rgba(255,255,255,.4);overflow:hidden}
.hero .scroll-hint::after{content:"";position:absolute;left:0;top:-40%;width:100%;height:40%;
  background:#fff;animation:hint 2.1s ease-in-out infinite}
@keyframes hint{0%{top:-40%}70%,100%{top:110%}}
@media (prefers-reduced-motion:reduce){.hero .scroll-hint{display:none}}

/* ---------- sections ---------- */
section{padding:140px 0}
.alt{background:var(--bg2)}
.sec-label{font-size:11px;letter-spacing:.3em;color:var(--mid);margin-bottom:16px}
h2{font-size:clamp(30px,3.6vw,48px);line-height:1.1;font-weight:700;letter-spacing:-.012em;max-width:860px}
.lede{margin-top:22px;font-size:17.5px;color:var(--body2);max-width:680px}
@media(max-width:560px){section{padding:96px 0}}

/* ---------- cards ---------- */
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;margin-top:60px}
@media(max-width:920px){.grid4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.grid4{grid-template-columns:1fr}}
.card{border-top:3px solid var(--green);background:var(--bg2);padding:28px 24px}
.alt .card{background:#fff}
.card .k{font-size:11px;letter-spacing:.24em;color:var(--mid);margin-bottom:14px}
.card h3{font-size:16.5px;margin-bottom:10px;line-height:1.3}
.card p{font-size:13.5px;color:#555}

/* ---------- stats ---------- */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;margin-top:60px}
@media(max-width:920px){.stats{grid-template-columns:repeat(2,1fr)}}
.stat{border-top:3px solid var(--green);padding-top:22px}
.stat .n{font-size:clamp(32px,3.6vw,48px);font-weight:700;letter-spacing:-.02em;white-space:nowrap}
.stat .n em{font-style:normal;color:var(--green)}
.stat .d{font-size:13px;color:var(--mid);margin-top:10px;max-width:230px}

/* ---------- full-bleed photo statements ---------- */
.statement{position:relative;min-height:88svh;display:flex;align-items:flex-end;
  color:#fff;overflow:hidden;padding:0}
.statement .bg{position:absolute;inset:0;background-size:cover;background-position:center}
.statement .shade{position:absolute;inset:0;
  background:linear-gradient(to top,rgba(8,11,14,.66) 0%,rgba(8,11,14,.18) 42%,rgba(8,11,14,0) 66%)}
.statement .wrap{position:relative;z-index:2;padding-bottom:3.5svh;width:100%}
.statement h2{color:#fff;font-size:clamp(28px,4.6svh,46px);max-width:900px}
.statement p{margin-top:16px;font-size:15px;max-width:720px;color:rgba(255,255,255,.88);line-height:1.6}
.statement .metrics{margin-top:20px;font-size:15.5px;font-weight:700;letter-spacing:.01em}
.statement .metrics em{font-style:normal;color:var(--green)}

/* ---------- steps ---------- */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;margin-top:60px;counter-reset:st}
@media(max-width:820px){.steps{grid-template-columns:1fr}}
.step{padding:26px 0;border-top:1px solid var(--bg3)}
.step::before{counter-increment:st;content:counter(st,decimal-leading-zero);
  font-size:13px;font-weight:700;color:var(--green);letter-spacing:.1em}
.step h3{font-size:16.5px;margin:12px 0 8px}
.step p{font-size:13.5px;color:#555}

/* ---------- dark numbers band ---------- */
.numbers-band{background:#E8E8E8;color:var(--ink);padding:70px 0;margin-top:90px}
.numbers-band .stats{margin-top:0}
.numbers-band .d{color:#555}

/* ---------- timeline ---------- */
.tl{display:grid;grid-template-columns:repeat(5,1fr);gap:20px;margin-top:70px}
@media(max-width:920px){.tl{grid-template-columns:repeat(2,1fr)}}
.tl>div{border-top:2px solid var(--bg3);padding-top:16px}
.tl>div.hot{border-top-color:var(--green)}
.tl .y{font-weight:700;font-size:19px}
.tl p{font-size:13px;color:#555;margin-top:6px}

/* ---------- project cards ---------- */
.projects{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:64px}
@media(max-width:820px){.projects{grid-template-columns:1fr}}
.proj{background:#fff}
.alt .proj{background:#fff}
.proj .imgbox{aspect-ratio:16/10;overflow:hidden;background:var(--bg3)}
.proj img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease}
.proj:hover img{transform:scale(1.035)}
.proj .meta{padding:16px 2px 0}
.proj .meta h3{font-size:15px}
.proj .meta p{font-size:12.5px;color:var(--mid);margin-top:4px}

/* ---------- engage ---------- */
.engage{display:grid;grid-template-columns:repeat(2,1fr);gap:22px;margin-top:60px}
@media(max-width:820px){.engage{grid-template-columns:1fr}}
.engage .card{background:#fff;border:1px solid var(--bg3);border-top:3px solid var(--green)}
.cta{display:inline-block;margin-top:48px;padding:16px 36px;border:2px solid var(--ink);
  color:var(--ink);text-decoration:none;font-weight:700;font-size:14px;letter-spacing:.04em;transition:.2s}
.cta:hover{border-color:var(--green);color:var(--green)}

/* ---------- footer ---------- */
footer{border-top:1px solid var(--bg3);padding:48px 0;font-size:12.5px;color:var(--mid)}
footer .wrap{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px}
footer a{color:var(--mid);text-decoration:none}
footer a:hover{color:var(--ink)}

/* ---------- exploded assembly (pinned) ---------- */
.exp-pin{position:relative;height:380vh;background:#fff}
.exp-sticky{position:sticky;top:0;height:100svh;display:flex;flex-direction:column;justify-content:center;overflow:hidden}
.exp-head h2{font-size:clamp(24px,2.8vw,38px)}
.exp-grid{position:relative;display:grid;grid-template-columns:240px 1fr 240px;gap:18px;align-items:center;max-width:1240px;margin:20px auto 0;padding:0 24px;width:100%}
.exp-imgbox{position:relative}
.exp-imgbox img{width:100%;height:auto;display:block;max-height:62svh;object-fit:contain}
.exp-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible;z-index:3}
.exp-svg line,.exp-svg polyline{stroke:#b9b9b9;stroke-width:1.2}
.exp-svg circle{fill:var(--green)}
.exp-svg .ln,.exp-svg .dt{opacity:0;transition:opacity .35s}
.exp-svg .ln.on,.exp-svg .dt.on{opacity:1}
.exp-col{display:flex;flex-direction:column;gap:13px}
.exp-item{opacity:0;transform:translateY(8px);transition:opacity .4s,transform .4s;cursor:default}
.exp-item.on{opacity:1;transform:none}
.exp-item .num{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:var(--green);color:#fff;font-size:11px;font-weight:700;margin-right:8px;flex:none}
.exp-item h4{display:flex;align-items:center;font-size:13.5px;line-height:1.25}
.exp-item h4 .ftag{margin-left:6px;color:var(--mid);font-weight:400;font-size:11px;letter-spacing:.05em}
.exp-item h4 .dot{color:var(--green);margin-left:4px}
.exp-item p{font-size:11.5px;color:#777;margin-top:3px;padding-left:28px;line-height:1.4}
.exp-final{opacity:0;transform:translateY(8px);transition:opacity .5s,transform .5s;max-width:1240px;margin:18px auto 0;padding:0 24px;width:100%;text-align:center}
.exp-final.on{opacity:1;transform:none}
.exp-final .bar{display:inline-block;background:#fff;border-left:3px solid var(--green);padding:14px 22px;font-size:14px;text-align:left}
.exp-final .bar b .s{color:var(--mid);font-weight:400}
.exp-legend{max-width:1240px;margin:14px auto 0;padding:0 24px;font-size:11.5px;color:var(--mid);display:flex;gap:22px;justify-content:center}
.spot{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .25s;z-index:2}
.spot.on{opacity:1}
@media(max-width:980px){
  .exp-pin{height:auto}
  .exp-sticky{position:static;height:auto;padding:100px 0 60px}
  .exp-grid{grid-template-columns:1fr}
  .exp-svg{display:none}
  .exp-item{opacity:1;transform:none}
  .exp-imgbox img{max-height:none}
}
@media (prefers-reduced-motion:reduce){
  .exp-pin{height:auto}.exp-sticky{position:static;height:auto;padding:100px 0 60px}
  .exp-item,.exp-final,.exp-svg .ln,.exp-svg .dt{opacity:1;transform:none}
}

/* ---------- duo image pair ---------- */
.duo{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:56px}
@media(max-width:820px){.duo{grid-template-columns:1fr}}
.duo figure{margin:0}
.duo img{width:100%;height:340px;object-fit:cover;background:var(--bg3)}
.duo figcaption{font-size:12.5px;color:var(--mid);margin-top:10px}

/* ---------- member gallery ---------- */
.mem-viewer{display:grid;grid-template-columns:1.1fr .9fr;gap:48px;align-items:center;margin-top:56px}
@media(max-width:920px){.mem-viewer{grid-template-columns:1fr}}
.mem-stage{background:#fff;border:1px solid var(--bg3);display:flex;align-items:center;justify-content:center;min-height:380px;padding:28px}
.mem-stage img{max-height:360px;width:auto;max-width:100%;object-fit:contain;transition:opacity .25s}
.mem-info h3{font-size:22px;margin-bottom:10px}
.mem-info p{font-size:14.5px;color:var(--body2)}
.mem-thumbs{display:grid;grid-template-columns:repeat(8,1fr);gap:10px;margin-top:26px}
@media(max-width:920px){.mem-thumbs{grid-template-columns:repeat(4,1fr)}}
.mem-thumbs button{background:#fff;border:1px solid var(--bg3);border-bottom:3px solid transparent;padding:10px 6px;cursor:pointer;transition:border-color .2s}
.mem-thumbs button img{width:100%;height:64px;object-fit:contain}
.mem-thumbs button span{display:block;font-size:10px;color:var(--mid);margin-top:6px;letter-spacing:.03em}
.mem-thumbs button.active{border-bottom-color:var(--green)}
.mem-thumbs button:hover{border-color:#cfcfcf;border-bottom-color:var(--green)}

/* ---------- modules ---------- */
.mods{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:56px}
@media(max-width:920px){.mods{grid-template-columns:1fr}}
.mod{background:#fff;border-top:3px solid var(--green);padding:26px 24px}
.alt .mod{background:#fff}
.mod .k{font-size:11px;letter-spacing:.22em;color:var(--mid);margin-bottom:12px}
.mod h3{font-size:16.5px;margin-bottom:10px}
.mod p{font-size:13.5px;color:#555;margin-bottom:16px}
.mod img{width:100%;height:300px;object-fit:contain;background:var(--bg2)}
.alt .mod img{background:var(--bg2)}

/* ---------- point rows (green-left) ---------- */
.pts{display:grid;gap:16px;margin-top:44px}
.pt{background:var(--bg2);border-left:3px solid var(--green);padding:20px 24px}
.alt .pt{background:#fff}
.pt h4{font-size:15px;margin-bottom:6px}
.pt p{font-size:13.5px;color:#555}
.split{display:grid;grid-template-columns:1.15fr .85fr;gap:48px;align-items:start;margin-top:12px}
@media(max-width:920px){.split{grid-template-columns:1fr}}
.split .imgs{display:grid;gap:20px}
.split .imgs figure{margin:0}
.split .imgs img{width:100%;object-fit:cover;background:var(--bg3)}
.split .imgs figcaption{font-size:12px;color:var(--mid);margin-top:8px}

/* ---------- photo strip ---------- */
.strip{display:grid;grid-template-columns:repeat(6,1fr);gap:14px;margin-top:44px}
@media(max-width:920px){.strip{grid-template-columns:repeat(3,1fr)}}
.strip figure{margin:0}
.strip img{width:100%;height:130px;object-fit:cover;background:var(--bg3)}
.strip figcaption{font-size:11px;color:var(--mid);margin-top:7px;line-height:1.35}
.strip4{grid-template-columns:repeat(4,1fr)}
.strip4 img{height:170px}
@media(max-width:920px){.strip4{grid-template-columns:repeat(2,1fr)}}

/* ---------- compare ---------- */
.cmp{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;margin-top:56px}
@media(max-width:920px){.cmp{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.cmp{grid-template-columns:1fr}}
.cmp .col{border-top:3px solid var(--bg3);padding-top:18px}
.cmp .col.hot{border-top-color:var(--green)}
.cmp .k{font-size:11px;letter-spacing:.2em;color:var(--mid);margin-bottom:10px}
.cmp h4{font-size:15px;margin-bottom:8px}
.cmp p{font-size:13px;color:#555}
.friction{margin-top:44px;display:flex;flex-wrap:wrap;gap:12px 34px;font-size:13px;color:#555}
.friction b{color:var(--ink)}

/* ---------- adv tiles ---------- */
.adv{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:56px}
@media(max-width:920px){.adv{grid-template-columns:repeat(2,1fr)}}
.adv div{border-top:2px solid var(--bg3);padding-top:14px;transition:border-color .25s}
.adv div:hover{border-top-color:var(--green)}
.adv h4{font-size:14.5px;margin-bottom:6px}
.adv p{font-size:12.5px;color:#666}
.net{margin-top:56px;background:#E8E8E8;color:var(--ink);padding:44px 40px;display:grid;grid-template-columns:1fr 1fr;gap:30px}
@media(max-width:820px){.net{grid-template-columns:1fr}}
.net .n{font-size:clamp(30px,3.4vw,44px);font-weight:700;color:var(--green)}
.net .d{font-size:14px;color:#555;margin-top:6px}
.foot-note{font-size:11.5px;color:var(--mid);margin-top:22px;line-height:1.5}

/* ---------- projects table ---------- */
.ptable{width:100%;border-collapse:collapse;margin-top:56px;font-size:13.5px}
.ptable th{text-align:left;font-size:11px;letter-spacing:.14em;color:var(--mid);padding:0 14px 12px 0;border-bottom:2px solid var(--ink);font-weight:700}
.ptable td{padding:14px 14px 14px 0;border-bottom:1px solid var(--bg3);color:#444;vertical-align:top}
.ptable td:first-child{color:var(--ink);font-weight:700}
@media(max-width:820px){.ptable{display:block;overflow-x:auto;white-space:nowrap}}

/* ---------- provides / operates ---------- */
.model{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:56px}
@media(max-width:820px){.model{grid-template-columns:1fr}}
.model .box{background:var(--bg2);padding:30px 28px;border-top:3px solid var(--green)}
.alt .model .box{background:#fff}
.model .box:last-child{border-top-color:var(--mid)}
.model h3{font-size:16px;margin-bottom:18px;letter-spacing:.02em}
.model dl dt{font-size:13.5px;font-weight:700;margin-top:14px}
.model dl dd{font-size:12.5px;color:#666;margin:3px 0 0}

/* ---------- status ---------- */
.status{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin-top:56px}
@media(max-width:820px){.status{grid-template-columns:1fr}}
.status div{background:#fff;padding:24px 26px;border:1px solid var(--bg3)}
.alt .status div{background:#fff}
.status .k{font-size:10.5px;letter-spacing:.2em;color:var(--green);font-weight:700;margin-bottom:8px}
.status h4{font-size:15px;margin-bottom:5px}
.status p{font-size:12.5px;color:#666}

/* ---------- gallery ---------- */
.gal{columns:3;column-gap:16px;margin-top:56px}
@media(max-width:920px){.gal{columns:2}}
.gal img{width:100%;margin-bottom:16px;background:var(--bg3);break-inside:avoid}
.gal-tag{font-size:11px;letter-spacing:.26em;color:var(--mid);margin:44px 0 18px}

/* ---------- video slot ---------- */
.vslot{position:relative;background:var(--ink);display:flex;align-items:center;justify-content:center;overflow:hidden}
.vslot.vert{aspect-ratio:9/16;max-width:340px}
.vslot.wide{aspect-ratio:16/9}
.vslot .play{width:58px;height:58px;border:2px solid rgba(255,255,255,.8);border-radius:50%;display:flex;align-items:center;justify-content:center}
.vslot .play::after{content:"";border-left:16px solid #fff;border-top:10px solid transparent;border-bottom:10px solid transparent;margin-left:4px}
.vslot .cap{position:absolute;bottom:16px;left:0;right:0;text-align:center;color:#9E9E9E;font-size:11px;letter-spacing:.12em}
.vrow{display:grid;grid-template-columns:340px 1fr;gap:48px;align-items:center;margin-top:56px}
@media(max-width:820px){.vrow{grid-template-columns:1fr}}
.vrow .txt h3{font-size:18px;margin-bottom:10px}
.vrow .txt p{font-size:14px;color:#555}

/* ---------- v3.1 self-audit patch ---------- */
/* statement readability */
.statement .shade{display:none}
.statement h2{text-shadow:0 1px 24px rgba(0,0,0,.45);max-width:900px}
.statement p{text-shadow:0 1px 16px rgba(0,0,0,.5);max-width:760px}
.statement .metrics{text-shadow:0 1px 14px rgba(0,0,0,.5)}

/* justified gallery: 等高行自动填充，无空洞 */
.gal{display:flex;flex-wrap:wrap;gap:14px;margin-top:0;columns:auto}
.gal img{height:240px;width:auto;flex-grow:1;object-fit:cover;margin:0;min-width:140px;max-width:520px}
.gal::after{content:"";flex-grow:999}
@media(max-width:760px){.gal img{height:150px}}

/* origin / company triptych + map */
.orig{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:56px}
@media(max-width:860px){.orig{grid-template-columns:1fr}}
.orig .box{background:#fff;padding:30px 28px;border-top:3px solid var(--mid)}
.orig .box.us{border-top-color:var(--green)}
.orig .k{font-size:10.5px;letter-spacing:.22em;color:var(--mid);font-weight:700;margin-bottom:14px}
.orig h3{font-size:17px;margin-bottom:12px}
.orig p{font-size:13.5px;color:#555;margin-bottom:10px}
.orig dl dt{font-size:13.5px;font-weight:700;margin-top:12px}
.orig dl dd{font-size:12.5px;color:#666;margin:2px 0 0}
.mapbox{margin-top:44px}
.mapbox img{width:100%;height:auto;display:block}
.chips{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}
.chips span{font-size:12px;padding:7px 14px;background:#fff;border:1px solid var(--bg3);color:#444}
.chips span.hot{border-color:var(--green);color:var(--ink);font-weight:700}
.maplegend{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:30px}
@media(max-width:860px){.maplegend{grid-template-columns:1fr}}
.maplegend div{border-top:2px solid var(--bg3);padding-top:12px}
.maplegend div.hot{border-top-color:var(--green)}
.maplegend h4{font-size:13.5px;margin-bottom:5px}
.maplegend p{font-size:12.5px;color:#666}

/* appendix accordion */
details.acc{margin-top:44px;border:1px solid var(--bg3);background:#fff}
.alt details.acc{background:var(--bg2)}
details.acc summary{cursor:pointer;list-style:none;padding:18px 24px;font-size:13px;font-weight:700;letter-spacing:.14em;color:var(--ink);display:flex;justify-content:space-between;align-items:center}
details.acc summary::after{content:"+";font-size:20px;font-weight:400;color:var(--mid)}
details.acc[open] summary::after{content:"−"}
details.acc .inner{padding:6px 24px 28px}
.mtable{width:100%;border-collapse:collapse;font-size:12px}
.mtable th{text-align:left;font-size:10.5px;letter-spacing:.1em;color:var(--mid);padding:10px 10px 10px 0;border-bottom:2px solid var(--ink);vertical-align:bottom}
.mtable th.hot{color:var(--ink)}
.mtable td{padding:12px 10px 12px 0;border-bottom:1px solid var(--bg3);color:#555;vertical-align:top;line-height:1.45}
.mtable td:first-child{font-weight:700;color:var(--ink);font-size:11px;letter-spacing:.08em}
.mtable td.hot{color:var(--ink)}
.mtable-wrap{overflow-x:auto}
.mtable{min-width:900px}
.layers{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
@media(max-width:860px){.layers{grid-template-columns:1fr}}
.layers div{border-top:2px solid var(--green);padding-top:14px}
.layers .k{font-size:10.5px;letter-spacing:.18em;color:var(--green);font-weight:700;margin-bottom:8px}
.layers h4{font-size:14px;margin-bottom:6px}
.layers p{font-size:12.5px;color:#666;margin-bottom:8px}

/* video */
.vslot video,.vid16 video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.vslot{position:relative}
.vid16{position:relative;aspect-ratio:16/9;background:var(--ink);overflow:hidden;margin-top:56px}
.vid16 .cap,.vslot .cap2{position:absolute;bottom:14px;left:18px;color:rgba(255,255,255,.85);font-size:11px;letter-spacing:.14em;z-index:2;text-shadow:0 1px 10px rgba(0,0,0,.6)}
.vduo{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:24px}
@media(max-width:820px){.vduo{grid-template-columns:1fr}}
.vduo .vid16{margin-top:0}

/* ---------- v4 ---------- */
/* statement 文字条（仅文字部分加深，照片保持明亮） */
.statement .band{display:inline-block;background:rgba(12,15,19,.44);padding:26px 32px 24px;max-width:860px}
.statement .band h2{text-shadow:none;margin:0}
.statement .band p{text-shadow:none;margin-top:14px}
.statement .band .metrics{text-shadow:none}

/* not prefab */
.scope2{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:44px}
@media(max-width:820px){.scope2{grid-template-columns:1fr}}
.scope2 .box{background:var(--bg2);padding:26px 26px 22px;border-top:3px solid var(--green)}
.scope2 .box.site{border-top-color:var(--mid)}
.scope2 .k{font-size:10.5px;letter-spacing:.2em;color:var(--mid);font-weight:700;margin-bottom:14px}
.scope2 ul{list-style:none;display:flex;flex-wrap:wrap;gap:8px}
.scope2 li{font-size:12.5px;background:#fff;border:1px solid var(--bg3);padding:7px 13px}
.vrow2{display:grid;grid-template-columns:1.05fr .95fr;gap:44px;align-items:center;margin-top:52px}
@media(max-width:920px){.vrow2{grid-template-columns:1fr}}

/* 三把锁 & is/isnot */
.locks{display:grid;gap:16px;margin-top:52px}
.lock{display:grid;grid-template-columns:1fr 34px 1fr;gap:18px;align-items:start;background:#fff;border:1px solid var(--bg3);padding:22px 26px}
.alt .lock{background:#fff}
@media(max-width:820px){.lock{grid-template-columns:1fr}}
.lock .k{font-size:10.5px;letter-spacing:.16em;color:var(--mid);font-weight:700;margin-bottom:7px}
.lock .k.hot{color:var(--green)}
.lock h4{font-size:14.5px;margin-bottom:6px}
.lock p{font-size:12.5px;color:#666}
.lock .arr{color:var(--green);font-size:20px;text-align:center;padding-top:22px}
@media(max-width:820px){.lock .arr{display:none}}

/* 基础图静态标注 */
.anno-wrap{position:relative}
.anno-wrap img{width:100%;display:block}
.anno-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.anno-svg line{stroke:#b9b9b9;stroke-width:1.1;vector-effect:non-scaling-stroke}
.anno-dot{position:absolute;width:9px;height:9px;border-radius:50%;background:var(--green);transform:translate(-50%,-50%)}
.anno-lb{position:absolute;transform:translate(-50%,-100%);background:#fff;border:1px solid var(--bg3);padding:6px 10px;font-size:11px;line-height:1.35;color:var(--ink);white-space:nowrap;box-shadow:0 1px 4px rgba(0,0,0,.05)}
.anno-lb b{display:block;font-size:11px}
.anno-lb span{color:var(--mid);font-size:10px}
.anno-lb.below{transform:translate(-50%,14px)}
@media(max-width:700px){.anno-lb{font-size:9.5px;padding:4px 7px}}

/* 规格条 */
.spec2{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:44px}
@media(max-width:820px){.spec2{grid-template-columns:1fr}}
.spec2 div{background:#fff;border-top:2px solid var(--green);padding:18px 22px}
.spec2 h5{font-size:11px;letter-spacing:.18em;color:var(--mid);margin-bottom:8px}
.spec2 p{font-size:13px;color:#444}

/* 图片比例锁定（材料/检验区） */
.imgs.r2 img{aspect-ratio:2/1;object-fit:cover;height:auto}
.imgs.r43 img{aspect-ratio:4/3;object-fit:cover;height:auto}

/* 爆炸图收尾箭头 + 10 号章 */
.exp-arrow{width:0;height:0;margin:0 auto;border-left:9px solid transparent;border-right:9px solid transparent;border-bottom:14px solid #9E9E9E;opacity:0;transform:translateY(8px);transition:opacity .5s,transform .5s}
.exp-arrow-stem{width:2px;height:26px;background:#9E9E9E;margin:0 auto;opacity:0;transition:opacity .5s}
.exp-final.on .exp-arrow,.exp-final.on .exp-arrow-stem{opacity:1;transform:none}
.exp-legend{font-weight:700;color:var(--ink)}
.exp-legend .dotg{color:var(--green)}
.chip10{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;border-radius:50%;background:var(--ink);color:#fff;font-size:11px;font-weight:700;padding:0 4px;margin-right:9px}

/* 产线 setup */
.setup{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:56px}
@media(max-width:920px){.setup{grid-template-columns:1fr}}
.setup .box{background:#fff;border-top:3px solid var(--green);padding:26px 24px}
.alt .setup .box{background:#fff}
.setup .k{font-size:10.5px;letter-spacing:.2em;color:var(--mid);font-weight:700;margin-bottom:14px}
.setup h5{font-size:11px;letter-spacing:.14em;color:var(--green);font-weight:700;margin:14px 0 6px}
.setup ul{list-style:none}
.setup li{font-size:12.5px;color:#555;padding:4px 0;border-bottom:1px solid var(--bg2)}
.setup li b{color:var(--ink)}

/* 生态插画带 */
.eco{display:grid;grid-template-columns:repeat(5,1fr);gap:16px;margin-top:44px}
@media(max-width:920px){.eco{grid-template-columns:repeat(3,1fr)}}
.eco div{background:#fff;border:1px solid var(--bg3);padding:12px}
.eco img{width:100%;aspect-ratio:4/3;object-fit:contain}
.eco-list{display:flex;flex-wrap:wrap;gap:10px 26px;margin-top:22px;font-size:12.5px;color:#555}
.eco-list b{color:var(--ink)}
.eco-list .n{color:var(--green);font-weight:700;margin-right:5px}

/* 定价理念 */
.price2{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:56px}
@media(max-width:860px){.price2{grid-template-columns:1fr}}
.price2 .box{background:var(--bg2);padding:28px 28px 24px}
.price2 h3{font-size:16px;margin-bottom:14px}
.price2 p{font-size:13px;color:#555;margin-bottom:10px}
.price2 .tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.price2 .tags span{font-size:11.5px;background:#fff;border:1px solid var(--bg3);padding:6px 11px}
.modes{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:24px}
@media(max-width:860px){.modes{grid-template-columns:1fr}}
.modes > .box{border-top:3px solid var(--green);background:#fff;padding:24px 26px}
.modes > .box:last-child{border-top-color:var(--mid)}
.modes .k{font-size:10.5px;letter-spacing:.18em;color:var(--mid);font-weight:700;margin-bottom:12px}
.modes li{font-size:12.5px;color:#555;list-style:none;padding:5px 0;border-bottom:1px solid var(--bg2)}
.modes li b{color:var(--ink)}

/* appendix 手风琴重设计 */
details.acc{border:1px solid var(--bg3);background:#fff;margin-top:20px}
details.acc summary{padding:20px 26px}
.steps3{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid var(--bg3)}
@media(max-width:860px){.steps3{grid-template-columns:1fr}}
.steps3 > div{padding:22px 24px;border-right:1px solid var(--bg2)}
.steps3 > div:last-child{border-right:none}
.steps3 .n{font-size:26px;font-weight:700;color:var(--green);margin-bottom:8px}
.steps3 h4{font-size:14px;margin-bottom:6px}
.steps3 p{font-size:12.5px;color:#666}

/* vision */
.vision{background:var(--bg2)}
.vision .letter{max-width:800px;margin:56px auto 0;font-size:clamp(17px,2vw,21px);line-height:1.75;color:var(--ink)}
.vision .letter p{margin-bottom:26px}
.vision .letter .em{font-weight:700}
.vision .sig{max-width:800px;margin:44px auto 0;display:flex;align-items:center;gap:18px}
.vision .sig .who b{display:block;font-size:16px}
.vision .sig .who span{font-size:13px;color:var(--mid)}
.vision .sig a{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;border:1px solid var(--ink);padding:9px 16px;color:var(--ink);font-weight:700}
.vision .sig a:hover{background:var(--ink);color:#fff}

/* 应用条 */
.apps{margin-top:44px;background:var(--bg2);padding:24px 28px;font-size:13.5px;color:#444;line-height:1.7}
.alt .apps{background:#fff}
.apps b{color:var(--ink)}

/* footer 分组 */
footer{background:#151515;color:#bdbdbd;padding:70px 0 40px}
.footgrid{display:grid;grid-template-columns:1.4fr repeat(4,1fr);gap:36px;padding-bottom:44px;border-bottom:1px solid #2c2c2c}
@media(max-width:920px){.footgrid{grid-template-columns:1fr 1fr}}
.footgrid .brand{font-weight:700;letter-spacing:.18em;color:#fff;font-size:13px}
.footgrid .brand p{font-weight:400;letter-spacing:0;color:#9E9E9E;font-size:12px;margin-top:12px;line-height:1.6}
.footgrid h5{font-size:10.5px;letter-spacing:.2em;color:#8a8a8a;margin-bottom:14px}
.footgrid ul{list-style:none}
.footgrid li{margin-bottom:9px}
.footgrid a{color:#cfcfcf;text-decoration:none;font-size:12.5px}
.footgrid a:hover{color:var(--green)}
.footmeta{display:flex;justify-content:space-between;gap:20px;padding-top:26px;font-size:11.5px;color:#8a8a8a;flex-wrap:wrap}
.grid3{grid-template-columns:repeat(3,1fr)}
@media(max-width:920px){.grid3{grid-template-columns:1fr}}

/* ---------- v5 ---------- */
/* hero：慢镜头放大（构件由小变大），文字缩小限宽 */
@keyframes heroZoom{from{transform:scale(1)}to{transform:scale(1.22)}}
.hero-bg{transform-origin:74% 42%;animation:heroZoom 9s cubic-bezier(.16,.6,.3,1) forwards}
@media (prefers-reduced-motion:reduce){.hero-bg{animation:none;transform:scale(1.22)}}
.hero h1{font-size:clamp(38px,5vw,68px)}
.hero .sub{font-size:15.5px;max-width:520px}
.hero-text{max-width:46%}
@media(max-width:1100px){.hero-text{max-width:88%}}

/* statement：deck 式全宽底部渐变文字条，照片保持原亮度 */
.statement{display:flex;align-items:flex-end}
.statement .wrap{width:100%}
.statement .band{display:block;max-width:none;width:100%;background:linear-gradient(90deg,rgba(10,13,17,.58) 0%,rgba(10,13,17,.32) 55%,rgba(10,13,17,.02) 100%);padding:30px 38px 32px;margin-bottom:6vh}
.statement .band p{max-width:820px}

/* 模块三图底边对齐 */
.mod{display:flex;flex-direction:column}
.mod img{margin-top:auto;height:320px}

/* 细节对图放大 */
.duo.tall img{height:520px;object-fit:cover}

/* split 两栏上下沿平行：左卡均匀分布 */
.split{align-items:stretch}
.split .pts{align-content:space-between}

/* 照片横排 + 文字网格（面板/检验重排） */
.pts2{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:44px}
@media(max-width:820px){.pts2{grid-template-columns:1fr}}
.rowphotos{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:24px}
@media(max-width:820px){.rowphotos{grid-template-columns:1fr}}
.rowphotos figure{margin:0}
.rowphotos img{width:100%;aspect-ratio:16/10;object-fit:cover;background:var(--bg3)}
.rowphotos figcaption{font-size:12px;color:var(--mid);margin-top:8px}

/* 施工第 7 步整行 */
.step.wide{grid-column:1/-1}

/* 生产两张能力卡 */
.cap2{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:44px}
@media(max-width:820px){.cap2{grid-template-columns:1fr}}
.cap2 div{background:var(--bg2);border-top:3px solid var(--green);padding:24px 26px}
.cap2 h4{font-size:15px;margin-bottom:8px}
.cap2 p{font-size:13px;color:#555}

/* 产线情景卡 */
.scen{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:24px}
@media(max-width:820px){.scen{grid-template-columns:1fr}}
.scen .box{background:#fff;border-top:3px solid var(--mid);padding:24px 26px}
.scen .k{font-size:10.5px;letter-spacing:.18em;color:var(--mid);font-weight:700;margin-bottom:8px}
.scen h4{font-size:15px;margin-bottom:10px;color:var(--ink)}
.scen h4 span{color:var(--green)}
.scen li{list-style:none;font-size:12.5px;color:#555;padding:4px 0;border-bottom:1px solid var(--bg2)}

/* 生态流程图：编号节点 + 归属标签 + 数据虚线 */
.flow{display:grid;grid-template-columns:repeat(6,1fr);gap:14px;margin-top:52px;position:relative}
@media(max-width:980px){.flow{grid-template-columns:repeat(3,1fr)}}
@media(max-width:560px){.flow{grid-template-columns:repeat(2,1fr)}}
.node{background:#fff;border:1px solid var(--bg3);padding:14px 14px 16px;position:relative}
.node .nb{position:absolute;top:-11px;left:12px;width:22px;height:22px;border-radius:50%;background:#fff;border:1px solid var(--bg3);color:var(--ink);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center}
.node img{width:100%;aspect-ratio:4/3;object-fit:contain;background:#fff}
.node .noimg{width:100%;aspect-ratio:4/3;border:1px dashed var(--mid);display:flex;align-items:center;justify-content:center;color:var(--mid);font-size:11px;letter-spacing:.1em}
.node h4{font-size:12.5px;margin-top:10px}
.node p{font-size:11px;color:#777;margin-top:3px;line-height:1.4}
.node .own{display:inline-block;margin-top:9px;font-size:9.5px;letter-spacing:.14em;font-weight:700;padding:3px 8px}
.node .own.sf{background:var(--green);color:#fff}
.node .own.pt{background:#fff;border:1px solid #C9C9C9;color:#666}
.datarail{margin-top:22px;border-top:2px dashed var(--green);padding-top:12px;display:flex;justify-content:space-between;gap:14px;font-size:11.5px;color:#555;flex-wrap:wrap}
.datarail b{color:var(--ink)}

/* how we work 子标题分隔 */
.subhead{margin-top:96px;padding-top:28px;border-top:1px solid var(--bg3);font-size:11px;letter-spacing:.26em;color:var(--green);font-weight:700}
.subhead + h3{font-size:clamp(19px,2.2vw,26px);margin-top:12px;letter-spacing:-.01em}
.entry4{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin-top:40px}
@media(max-width:860px){.entry4{grid-template-columns:1fr}}
.entry4 .box{background:var(--bg2);padding:22px 24px}
.entry4 h4{font-size:14.5px;margin-bottom:12px}
.entry4 dt{font-size:10px;letter-spacing:.18em;color:var(--green);font-weight:700;margin-top:10px}
.entry4 dd{font-size:12.5px;color:#555;margin:2px 0 0}

/* vision 高级化 */
.vision{padding:150px 0}
.vision .open{max-width:860px;margin:64px auto 0;font-size:clamp(24px,3vw,36px);line-height:1.45;font-weight:700;letter-spacing:-.015em;text-align:center}
.vision .letter{margin-top:52px;font-size:clamp(15.5px,1.6vw,18px);line-height:1.85;color:#333}
.vision .letter .em{color:var(--ink)}
.vision .sig{border-top:1px solid #d9d9d9;padding-top:30px;justify-content:space-between}
.steps4{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border-top:1px solid var(--bg3)}
@media(max-width:860px){.steps4{grid-template-columns:1fr 1fr}}
.steps4 > div{padding:22px 24px;border-right:1px solid var(--bg2)}
.steps4 > div:last-child{border-right:none}
.steps4 .n{font-size:22px;font-weight:700;color:var(--green);margin-bottom:8px}
.steps4 h4{font-size:13px;margin-bottom:6px}
.steps4 p{font-size:12px;color:#666}

/* nav 下拉子项 */
nav li{position:relative}
nav li > ul{display:none;position:absolute;top:100%;left:-14px;background:#fff;min-width:230px;padding:12px 0;box-shadow:0 10px 30px rgba(0,0,0,.1);border-top:2px solid var(--green);z-index:60}
nav li:hover > ul{display:block}
nav li > ul li{display:block;margin:0}
nav li > ul a{display:block;padding:8px 20px;font-size:12px;letter-spacing:.02em;color:#444}
nav li > ul a:hover{background:var(--bg2);color:var(--ink)}

/* ---------- v6 ---------- */
/* 全屏陈述：无边框底部渐变蒙版（deck 同款），文字下移 + 段落归属眉标 */
.statement .shade{display:block;position:absolute;top:auto;left:0;right:0;bottom:0;height:36.7%;background:linear-gradient(180deg,rgba(0,0,0,0) 0%,rgba(0,0,0,.6) 100%)}
.statement .band{background:none;padding:0;margin-bottom:0;max-width:920px}
.stlabel{font-size:10.5px;letter-spacing:.26em;color:#a7d97b;font-weight:700;margin-bottom:16px}

/* hero：字号再降一档，构件焦点右移居中 */
.hero h1{font-size:clamp(34px,4.4vw,58px)}
.hero-bg{background-position:56% 30%;transform-origin:56% 35%}
@keyframes heroZoom{from{transform:scale(1)}to{transform:scale(1.16)}}

/* trades 竖排：无残留边线，垂直居中，条目悬挂式换行 */
.trail{background:#fff;display:flex;flex-direction:column;justify-content:center;padding:30px 26px}
.trail .k{font-size:11px;letter-spacing:.2em;color:var(--green);font-weight:700;margin-bottom:20px}
.trail ul{list-style:none}
.trail li{font-size:12.5px;font-weight:700;color:var(--ink);padding:9px 0;border-bottom:1px solid var(--bg2);line-height:1.45}
.trail li:last-child{border-bottom:none}

/* 施工照片带：7 列，三联图跨 2 列保细节 */
.strip7{grid-template-columns:repeat(7,1fr)}
.strip7 .sp2{grid-column:span 2}
@media(max-width:920px){.strip7{grid-template-columns:repeat(3,1fr)}.strip7 .sp2{grid-column:span 3}}

/* 生态节点：5 列，标题/标签基线平行，插画用自身底色 */
.flow{grid-template-columns:repeat(5,1fr)}
@media(max-width:980px){.flow{grid-template-columns:repeat(3,1fr)}}
@media(max-width:560px){.flow{grid-template-columns:1fr 1fr}}
.node h4{min-height:36px;display:flex;align-items:flex-start}
.node p{min-height:46px}
.node .own{margin-top:auto;align-self:flex-start}
.node img{object-fit:cover}

/* 矩阵：首列与 ShellForm 列双固定 */
.mtable th:first-child,.mtable td:first-child{position:sticky;left:0;background:#fff;z-index:2;box-shadow:2px 0 0 var(--bg3)}
.mtable th:last-child,.mtable td:last-child{position:sticky;right:0;background:#F3FAEB;z-index:2;box-shadow:-2px 0 0 var(--green)}
.mtable thead th{background:#fff}
.scrollhint{font-size:11px;letter-spacing:.14em;color:var(--mid);margin:14px 0 6px;text-align:right}

/* 成本四桶明细 */
.cost4{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:40px}
@media(max-width:980px){.cost4{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.cost4{grid-template-columns:1fr}}
.cost4 .col{background:#fff;border-top:3px solid var(--mid);padding:20px 20px 16px}
.cost4 .col.rm{border-top-color:#9E9E9E}
.cost4 .col.sh{border-top-color:var(--green)}
.cost4 .col.ad{border-top-color:var(--ink)}
.cost4 .col.un{border-top-color:var(--bg3)}
.cost4 .k{font-size:10px;letter-spacing:.16em;font-weight:700;color:var(--mid);margin-bottom:14px}
.cost4 dt{font-size:12.5px;font-weight:700;color:var(--ink);margin-top:12px}
.cost4 dd{font-size:11.5px;color:#777;margin:2px 0 0}

/* Mode A/B 全量 */
.modeb{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}
@media(max-width:860px){.modeb{grid-template-columns:1fr}}
.modes .modeb .box{background:#fff;padding:18px 20px;border:1px solid var(--bg3);border-top:1px solid var(--bg3)}
.modeb h5{font-size:13px;margin-bottom:6px}
.modeb p{font-size:12px;color:#666}
.statusline{font-size:11px;letter-spacing:.1em;color:var(--green);font-weight:700;margin-top:10px}

/* v7：白底素材所在区域一律白底；语句间隔条 */
.stgap{height:110px;background:#fff}
.mem-stage{background:#fff}

/* ================= v8: logo mark ================= */
.logomark{width:auto;display:inline-block;vertical-align:middle}/* height/gap: see v44 canonical block */
nav .logo{display:inline-flex;align-items:center}

/* ================= v8: vision, Apple-scale ================= */
.vision{padding:170px 0 150px}
.vision .open{max-width:1020px;margin:56px auto 0;font-size:clamp(32px,4.6vw,64px);line-height:1.22;font-weight:700;letter-spacing:-.02em;text-align:center}
.vision .letter{max-width:780px;margin:72px auto 0;font-size:clamp(16.5px,1.8vw,20px);line-height:1.8;color:#333;text-align:center}
.vision .letter p{margin-bottom:30px}
.vision .vfinal{margin:88px auto 0;text-align:center}
.vision .vfinal .v1{font-size:clamp(24px,3vw,40px);font-weight:700;letter-spacing:-.015em;line-height:1.3}
.vision .vfinal .v2{margin-top:18px;font-size:clamp(34px,5vw,68px);font-weight:700;letter-spacing:-.022em;line-height:1.15;color:var(--green)}
.vision .sig{max-width:780px;margin:80px auto 0;justify-content:space-between}

/* ================= v8: exploded, immersive breakout ================= */
.exp-grid{max-width:min(1680px,96vw);grid-template-columns:280px 1fr 280px}
.exp-head h2{font-size:clamp(26px,3.4vw,50px)}
.exp-item h4{font-size:14.5px}
@media(max-width:920px){.exp-grid{grid-template-columns:1fr}}

/* ================= v8: stats, Apple-scale ================= */
.stat .n{font-size:clamp(36px,4.4vw,62px)}

/* ================= v8: compare, swipe gallery ================= */
.cmp{display:flex;gap:18px;overflow-x:auto;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;
  margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);
  padding:4px max(24px,calc(50vw - 590px)) 20px;scrollbar-width:thin;scrollbar-color:var(--bg3) transparent}
.cmp::-webkit-scrollbar{height:5px}
.cmp::-webkit-scrollbar-thumb{background:var(--bg3)}
.cmp .col{flex:0 0 288px;min-width:288px;scroll-snap-align:start;background:#fff;padding:22px 20px 24px;border-top:3px solid var(--bg3)}
.cmp .col.hot{border-top-color:var(--green)}
@media(min-width:1320px){.cmp{margin-left:0;margin-right:0;padding-left:4px;padding-right:4px}.cmp .col{flex:1 1 0;min-width:0}}

/* ================= v8: traceability ================= */
#traceability .trace{display:grid;grid-template-columns:400px 1fr;gap:44px;margin-top:56px;align-items:start}
@media(max-width:920px){#traceability .trace{grid-template-columns:1fr}}
.trace-card{background:#fff;border:1px solid var(--bg3);padding:30px 28px 24px;box-shadow:0 18px 50px rgba(0,0,0,.07)}
.trace-card .tc-head{display:flex;align-items:center;gap:10px;font-size:11px;letter-spacing:.22em;font-weight:700}
.trace-card .tc-logo{height:20px;width:auto}
.trace-card .tc-id{margin-top:22px;font-size:clamp(34px,3.4vw,46px);font-weight:700;letter-spacing:-.01em}
.trace-card .tc-id span{color:var(--mid)}
.trace-card .tc-sub{margin-top:8px;font-size:13.5px;color:var(--mid);line-height:1.55}
.trace-card .tc-qr{margin-top:22px;display:flex;justify-content:center;padding:14px;background:#fff}
.trace-card .tc-qr img{width:190px;height:190px;image-rendering:pixelated}
.trace-card .tc-note{margin-top:14px;text-align:center;font-size:10.5px;letter-spacing:.18em;color:var(--mid)}
.trace-rec{background:#fff;border:1px solid var(--bg3);padding:22px}
.trace-rec .tr-plan{width:100%;max-height:340px;object-fit:contain;background:#fff}
.trace-rec .tr-rows{margin-top:14px}
.trace-rec .tr-row{display:flex;justify-content:space-between;gap:16px;padding:10px 2px;border-bottom:1px solid var(--bg3);font-size:14px}
.trace-rec .tr-row:last-child{border-bottom:none}
.trace-rec .tr-row span{color:var(--mid)}
.trace-rec .tr-row b{font-weight:700;text-align:right}
.trace-rec .mask{font-style:normal;color:var(--mid);letter-spacing:.14em}
#traceability .foot-note{margin-top:34px;font-size:12.5px;color:var(--mid)}

/* ================= v8: engage alt line ================= */
.engage-alt{margin-top:18px;font-size:13.5px;color:var(--mid)}
.engage-alt a{color:var(--ink);font-weight:700}

/* ================= v8: modal ================= */
.modal{position:fixed;inset:0;z-index:400;display:flex;align-items:center;justify-content:center;padding:20px}
.modal[hidden]{display:none}
.modal .m-back{position:absolute;inset:0;background:rgba(10,13,17,.55)}
.modal .m-box{position:relative;background:#fff;max-width:560px;width:100%;max-height:88svh;overflow:auto;padding:40px 42px 34px}
.modal .m-box.m-small{max-width:420px}
.modal .m-x{position:absolute;top:14px;right:16px;background:none;border:none;font-size:26px;line-height:1;color:var(--mid);cursor:pointer;padding:6px}
.modal .m-x:hover{color:var(--ink)}
.modal h3{font-size:24px;letter-spacing:-.01em}
.modal .m-sub{margin-top:8px;font-size:14px;color:var(--mid);line-height:1.55}
.modal form{margin-top:22px}
.modal label{display:block;font-size:11.5px;letter-spacing:.1em;font-weight:700;color:var(--mid);margin-bottom:14px;text-transform:uppercase}
.modal input,.modal select,.modal textarea{display:block;width:100%;margin-top:6px;font:inherit;font-size:15px;color:var(--ink);padding:11px 12px;border:1px solid var(--bg3);background:#fff;border-radius:0}
.modal input:focus,.modal select:focus,.modal textarea:focus{outline:2px solid var(--green);outline-offset:-1px;border-color:var(--green)}
.modal .f2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:560px){.modal .f2{grid-template-columns:1fr}.modal .m-box{padding:32px 24px 26px}}
.modal .m-send{width:100%;margin-top:4px}
.modal .m-status{margin-top:12px;font-size:13.5px;min-height:1.3em}
.modal .m-status.ok{color:var(--green);font-weight:700}
.modal .m-status.err{color:#b23}
.modal .m-alt{margin-top:20px;padding-top:16px;border-top:1px solid var(--bg3);font-size:13px;color:var(--mid)}
.modal .m-alt a{color:var(--ink);font-weight:700}
.modal .m-name{margin-top:16px;font-size:20px;font-weight:700}
.modal .m-role{margin-top:4px;font-size:14px;color:var(--mid)}
body.modal-open{overflow:hidden}

/* ================= v8: footer ================= */
.foot-top{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;padding-bottom:34px;border-bottom:1px solid rgba(255,255,255,.14);margin-bottom:40px}
.foot-top .flogo{color:#fff}/* lockup font/size: see v44 canonical block */
.foot-contact{display:flex;align-items:center;gap:22px;flex-wrap:wrap}
.foot-contact a{display:inline-flex;align-items:center;gap:8px;color:#d8d8d8;font-size:13.5px}
.foot-contact a:hover{color:#fff}
.foot-contact svg{flex:0 0 auto}
.foot-contact button{font:inherit;font-size:12.5px;font-weight:700;letter-spacing:.06em;color:#fff;background:none;border:1px solid var(--green);padding:9px 18px;cursor:pointer}
.foot-contact button:hover{background:var(--green);color:#0d130a}
footer .flink{font:inherit;background:none;border:none;padding:0;color:inherit;cursor:pointer;text-align:left}
footer .flink:hover{color:#fff}

/* v8: button normalization for .cta / .cta-mini */
button.cta,button.cta-mini{font-family:inherit;cursor:pointer;background:none;-webkit-appearance:none;appearance:none}

/* ================= v9 ================= */
/* 爆炸图 100svh 内收敛，图例不再被裁 */
.exp-head h2{font-size:clamp(24px,3vw,44px)}
.exp-imgbox img{max-height:56svh}
.exp-grid{margin-top:12px}
.exp-legend{margin-top:10px}
/* 追溯样本平面图（竖版真 CAD 底图） */
.trace-rec .tr-plan{max-height:400px;background:#212830}
/* 页脚 logo 与字标垂直居中 */
.foot-top .flogo{display:inline-flex;align-items:center}

/* ================= v10 ================= */
/* 矩阵：独立子节、白卡容器、贴纸列边界修复 */
.matrixsec .mtable-wrap{background:#fff;border:1px solid var(--bg3);padding:0 18px;margin-top:18px}
.alt .matrixsec .mtable-wrap{background:#fff}
.matrixsec .scrollhint{font-size:11px;letter-spacing:.14em;color:var(--mid);margin-top:22px}
.mtable th:first-child,.mtable td:first-child{background:#fff;padding-right:14px;box-shadow:6px 0 8px -4px rgba(0,0,0,.10)}
.mtable th:last-child,.mtable td:last-child{background:#F3FAEB;padding-left:14px;border-left:3px solid var(--green);box-shadow:-6px 0 8px -4px rgba(0,0,0,.10)}
.mtable th{background:#fff}
.mtable-wrap{scrollbar-width:thin;scrollbar-color:var(--bg3) transparent}
.mtable-wrap::-webkit-scrollbar{height:6px}
.mtable-wrap::-webkit-scrollbar-thumb{background:var(--bg3)}
/* 时间线：横线生长 + 上浮，随 .in 触发，延时继承元素 */
.tl>div{border-top:none;position:relative}
.tl>div::before{content:"";position:absolute;top:0;left:0;height:2px;width:0;background:var(--bg3);transition:width .8s ease;transition-delay:inherit}
.tl>div.hot::before{background:var(--green)}
.tl>div.in::before{width:100%}

/* ================= v11 ================= */
/* 导航收敛：单行不折行，容纳 9 项 + 按钮 */
nav .wrap{max-width:1360px}
nav ul{gap:20px}
nav ul>li>a{font-size:12px;white-space:nowrap}
nav ul ul a{white-space:nowrap}
nav .logo{white-space:nowrap}
nav .cta-mini{margin-left:14px;white-space:nowrap}
@media(max-width:1200px){nav ul{display:none}}
/* 数字带降档 */
.stat .n{font-size:clamp(26px,2.9vw,40px)}
.stat .d{font-size:12.5px}
/* routes 时间行 */
.rt-time{margin-top:14px;padding-top:12px;border-top:1px solid var(--bg3);font-size:12px;font-weight:700;letter-spacing:.03em;color:#555}
.rt-time.hot{color:var(--ink);border-top-color:var(--green)}
/* cure 时间条 */
.curebars{margin-top:44px;background:#fff;border:1px solid var(--bg3);padding:26px 28px 22px}
.alt .curebars{background:#fff}
.cb-cap{font-size:10.5px;letter-spacing:.18em;font-weight:700;color:var(--mid);margin-bottom:18px}
.cb{display:grid;grid-template-columns:150px 1fr 260px;gap:16px;align-items:center;padding:9px 0}
.cb span{font-size:12.5px;font-weight:700}
.cb b{font-size:12px;color:#555;font-weight:400;text-align:right}
.cb .track{display:flex;gap:3px;height:14px}
.cb .track i{display:block;height:100%;background:#C9CDD2;transform:scaleX(0);transform-origin:left;transition:transform 1.1s cubic-bezier(.2,.7,.2,1) .25s}
.cb .track i.wet{background:var(--green)}
.cb.hot .track i:not(.wet){background:#8a8f96}
.cb.hot span{color:var(--ink)}
.curebars.in .track i{transform:scaleX(1)}
@media(max-width:760px){.cb{grid-template-columns:110px 1fr}.cb b{grid-column:1/-1;text-align:left}}
/* 商业范围两卡 dl */
.scopedl dt{font-size:13.5px;font-weight:700;margin-top:14px}
.scopedl dd{font-size:12.5px;color:#666;margin:3px 0 0}
.together{margin-top:18px;padding-top:14px;border-top:1px solid var(--bg3);font-size:13.5px}
.together strong{color:var(--ink)}
/* Vision · SpaceX 式显现 */
.vision .open.fade{opacity:0;transform:translateY(34px) scale(1.045);transform-origin:50% 60%;transition:opacity .9s ease,transform .9s cubic-bezier(.22,.8,.24,1);will-change:transform,opacity}
.vision .open.fade.in{opacity:1;transform:none}
.vision .open{font-size:clamp(17px,2vw,21px);line-height:1.75;max-width:800px;font-weight:700;letter-spacing:0}
.vision .vfinal .v1.fade{opacity:0;transform:translateY(26px);transition:all .9s ease .1s}
.vision .vfinal .v1.fade.in{opacity:1;transform:none}
.vision .vfinal .v2.fade{opacity:0;transform:translateY(30px) scale(.94);letter-spacing:.03em;
  transition:opacity 1s ease .25s,transform 1s cubic-bezier(.2,.7,.2,1) .25s,letter-spacing 1.3s ease .25s}
.vision .vfinal .v2.fade.in{opacity:1;transform:none;letter-spacing:-.022em}
.vision .vfinal .v2{font-size:clamp(38px,5.6vw,76px)}
.vision .letter p.fade{transition-duration:.9s}
/* 矩阵三列选择器 */
.mx-chips{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0 14px}
.mx-chips button{font:inherit;font-size:11px;font-weight:700;letter-spacing:.06em;padding:8px 14px;
  border:1px solid var(--bg3);background:#fff;color:#555;cursor:pointer;transition:.15s}
.mx-chips button:hover{border-color:var(--ink);color:var(--ink)}
.mx-chips button.on{background:var(--ink);border-color:var(--ink);color:#fff}
.mx3-wrap{background:#fff;border:1px solid var(--bg3);padding:0 18px}
.mx3{width:100%;border-collapse:collapse;font-size:12.5px}
.mx3 th{text-align:left;font-size:10.5px;letter-spacing:.1em;color:var(--mid);padding:14px 12px;border-bottom:2px solid var(--ink);vertical-align:bottom}
.mx3 th.hot{color:var(--ink);background:#F3FAEB;border-left:3px solid var(--green)}
.mx3 td{padding:13px 12px;border-bottom:1px solid var(--bg3);color:#555;vertical-align:top;line-height:1.5}
.mx3 td:first-child{font-weight:700;color:var(--ink);font-size:11px;letter-spacing:.08em;width:17%;background:#FAFAFA;padding-left:0}
.mx3 td.hot{color:var(--ink);background:#F3FAEB;border-left:3px solid var(--green)}
.mx3 td.mid,.mx3 th.mid{width:39%}
.mx3 .mid.swap{animation:mxfade .35s ease}
@keyframes mxfade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* ================= v12 ================= */
/* routes 卡时间行底部对齐 */
.cmp .col{display:flex;flex-direction:column}
.cmp .col .rt-time{margin-top:auto;min-height:68px}
.rt-note{margin-top:22px;font-size:12px;color:var(--mid)}
/* pricing 卡 k 标签与全站小节标签统一 */
.price2 .box .k{font-size:11px;letter-spacing:.2em;font-weight:700;color:var(--green);margin-bottom:12px}
/* Vision 末句单行 */
.vision .vfinal .v2{white-space:nowrap;font-size:clamp(22px,4.9vw,64px)}
/* 矩阵芯片：编号 + 选中深绿（logo 深绿） */
.mx-chips button.on{background:#002911;border-color:#002911;color:#fff}
.mx-chips button .no{color:#9E9E9E;margin-right:7px;font-weight:400}
.mx-chips button.on .no{color:#8CC63F}
.matrixsec .scrollhint{text-align:left;margin-top:26px;padding-left:2px;border-left:2px solid var(--green);padding:4px 0 4px 12px}
/* 图库间隙 */
.gal{gap:10px}
/* 追溯样本滑动图 */
.tr-slider{position:relative}
.tr-slider .tr-slides{position:relative}
.tr-slider .tr-plan{display:none;width:100%}
.tr-slider .tr-plan.on{display:block;animation:mxfade .35s ease}
.tr-arrow{position:absolute;top:44%;width:38px;height:38px;border:1px solid var(--bg3);background:rgba(255,255,255,.92);
  color:var(--ink);font-size:16px;cursor:pointer;z-index:3;transition:.15s}
.tr-arrow:hover{border-color:var(--ink)}
.tr-arrow.prev{left:10px}.tr-arrow.next{right:10px}
.tr-dots{display:flex;gap:6px;justify-content:center;margin-top:10px}
.tr-dots i{width:7px;height:7px;border-radius:50%;background:var(--bg3)}
.tr-dots i.on{background:var(--green)}
.tr-zoomcap{text-align:center;font-size:10px;letter-spacing:.16em;color:var(--mid);margin-top:8px}

/* ================= v13 ================= */
/* hero 副标题限宽（短视口不与构件重叠） */
.hero .sub,.hero p.lede{max-width:560px}
@media(max-height:820px){.hero .sub,.hero p.lede{max-width:480px;font-size:16px}}
/* routes 时间行与上文间距 */
.cmp .col p{margin-bottom:18px}
/* logistics 标签与上方图间距 */
#logistics .wrap .sec-label{margin-top:34px}
/* 生态卡等高（统一画布已同比） */
.eco-cards img,.eco img{width:100%;height:auto;background:#fff}

.cb.hot b{color:var(--green);font-weight:700}
@media(max-width:760px){.cmp .col .rt-time{min-height:0}}

.vision .letter .em{display:block;margin:26px auto 6px;max-width:760px;font-size:clamp(21px,2.7vw,35px);font-weight:700;line-height:1.35;letter-spacing:-.015em;color:var(--ink)}

/* installation video carousel (Apple-style) */
.ic-h{font-size:clamp(22px,2.6vw,34px);font-weight:700;letter-spacing:-.015em;margin:10px 0 8px}
.ic-sub{color:#9E9E9E;font-size:14px;max-width:640px;line-height:1.55}
.ic-wrap{margin-top:34px}
.ic-track{display:flex;gap:26px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;-ms-overflow-style:none;padding-bottom:6px}
.ic-track::-webkit-scrollbar{display:none}
.ic-card{flex:0 0 min(68%,760px);scroll-snap-align:start}
.ic-frame{background:#0e1114;border-radius:14px;overflow:hidden;aspect-ratio:2.16/1}
.ic-frame video{display:block;width:100%;height:100%;object-fit:cover}
.ic-label{margin:16px 0 6px;font-size:11px;letter-spacing:.14em;color:#1A1A1A;font-weight:700}
.ic-cap{color:#9E9E9E;font-size:14px;line-height:1.6;max-width:640px;margin:0}
.ic-cap b{color:#1A1A1A;font-weight:700}
.ic-nav{display:flex;gap:12px;justify-content:center;margin-top:26px}
.ic-btn{width:40px;height:40px;border-radius:50%;border:1px solid #D8D8D8;background:#fff;color:#1A1A1A;font-size:22px;line-height:1;cursor:pointer;transition:border-color .2s}
.ic-btn:hover{border-color:#1A1A1A}
@media(max-width:760px){.ic-card{flex-basis:86%}}

/* exploded section: fit-any-viewport hardening */
#exp-imgbox{max-width:min(100%, calc(52svh * 1.7778));margin:0 auto}
#exp-imgbox img{width:100%;height:auto;display:block}
@media(max-height:860px){
  .exp-grid{margin-top:8px;gap:12px}
  .exp-final{margin-top:10px}
  .exp-final .bar{font-size:13px;line-height:1.45}
  .exp-item p{font-size:12px;line-height:1.4}
  .exp-legend{margin-top:8px;font-size:11px}
}
@media(max-height:720px){
  #exp-imgbox{max-width:min(100%, calc(44svh * 1.7778))}
  .exp-item p{display:none}
  .exp-item.on p{display:block}
}

/* carousel active-play controls */
.ic-frame{position:relative}
.ic-ctl{position:absolute;right:14px;bottom:14px;width:44px;height:44px;border:0;background:rgba(20,24,28,.55);border-radius:50%;cursor:pointer;padding:0;backdrop-filter:blur(4px)}
.ic-ctl svg{position:absolute;inset:0;width:44px;height:44px;transform:rotate(-90deg)}
.ic-ctl .ring-bg{fill:none;stroke:rgba(255,255,255,.28);stroke-width:2.5}
.ic-ctl .ring{fill:none;stroke:#fff;stroke-width:2.5;stroke-linecap:round;stroke-dasharray:119.4;stroke-dashoffset:119.4}
.ic-ctl .pp{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
.ic-ctl .pp::before{content:"";display:block;width:0;height:0;border-left:12px solid #fff;border-top:7px solid transparent;border-bottom:7px solid transparent;margin-left:3px}
.ic-card.playing .ic-ctl .pp::before{width:4px;height:14px;border:0;background:#fff;box-shadow:8px 0 0 #fff;margin-left:-6px}

#built h2{font-size:clamp(22px,2.55vw,40px);white-space:nowrap}
@media(max-width:1180px){#built h2{white-space:normal}}

/* ===== v20 ===== */
/* exploded title: single line (batch fix #1) */
.exp-head h2{white-space:nowrap;font-size:clamp(22px,2.6vw,38px)}
@media(max-width:980px){.exp-head h2{white-space:normal}}

/* the system at a glance (opening video triad) */
.glance{padding:110px 0 96px;background:#fff}
.glance .sec-label{text-align:center}
.g-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:26px;margin-top:34px}
@media(max-width:820px){.g-row{grid-template-columns:1fr}}
.g-card{display:block;color:inherit;text-decoration:none}
.g-frame{position:relative;border-radius:14px;overflow:hidden;aspect-ratio:16/9;background:#0e1114}
.g-frame.light{background:#fff;border:1px solid #ececec}
.g-frame video{display:block;width:100%;height:100%;object-fit:cover}
.g-frame.light video{object-fit:contain}
.g-label{margin:16px 0 6px;font-size:11px;letter-spacing:.14em;color:#1A1A1A;font-weight:700}
.g-cap{color:#9E9E9E;font-size:13.5px;line-height:1.6;margin:0}
.g-cap b{color:#1A1A1A;font-weight:700}
.g-scope{display:grid;grid-template-columns:1.4fr 1fr;gap:14px;margin-top:10px}
.g-scope .k{font-size:10px;letter-spacing:.12em;color:#9E9E9E;font-weight:700;margin-bottom:6px}
.g-scope ul{list-style:none;margin:0;padding:0}
.g-scope li{font-size:12px;color:#555;line-height:1.55}
.g-card:hover .g-label{color:var(--green)}

/* vision letter fold (B1) */
.letter-more{overflow:hidden;max-height:0;opacity:0;transition:max-height .6s ease,opacity .5s ease}
.letter-more.openx{max-height:900px;opacity:1}
.letter-toggle{display:block;margin:10px auto 0;font-size:12.5px;border:1px solid var(--ink);background:#fff;padding:9px 16px;color:var(--ink);font-weight:700;cursor:pointer;letter-spacing:.02em}
.letter-toggle:hover{background:var(--ink);color:#fff}

/* carousel: center mode + narrow SEQ10 card */
.ic-card{scroll-snap-align:center}
.ic-card.narrow{flex:0 0 min(42.5%,475px)}
.ic-card.narrow .ic-frame{aspect-ratio:1.35/1}
@media(max-width:760px){.ic-card.narrow{flex-basis:54%}}

/* panels: breakdown video + synced phrases (P0, unique on site) */
.pb-wrap{max-width:980px;margin:40px auto 0}
.pb-wrap .pb-frame{border-radius:14px;overflow:hidden;border:1px solid #ececec;background:#fff}
.pb-wrap video{display:block;width:100%;height:auto}
.pb-wrap .cap{margin-top:12px;font-size:11px;letter-spacing:.14em;color:#9E9E9E;font-weight:700;text-align:center}
.sync{transition:color .3s ease}
.sync.lit{color:var(--green)}

/* hero anchored to the hoisted member (46% 54% of hero-crane.webp);
   entrance zoom converges to natural scale so no detail is cropped at rest */
.hero-bg{background-position:46% 54%;transform-origin:46% 54%}
@keyframes heroZoom{from{transform:scale(1.06)}to{transform:scale(1)}}
@media (prefers-reduced-motion:reduce){.hero-bg{animation:none;transform:none}}

/* v21 patches */
.g-kicker{text-align:center;color:#9E9E9E;font-size:14px;margin:6px 0 30px}
.ic-card.contain .ic-frame video{object-fit:contain;background:#0e1114}
.cap-link{color:inherit;text-decoration:underline;text-underline-offset:2px}
.cap-link:hover{color:#1A1A1A}
.pb-sync{margin:14px auto 0;max-width:760px;text-align:center}
.pb-sync .sync-line{color:#C4C6C9;font-size:15px;line-height:1.7;transition:color .45s ease,font-weight .2s}
.pb-sync .sync-line.lit{color:var(--green);font-weight:700}
.exp-head h2{margin-bottom:26px}
#exp-imgbox{max-width:min(100%, calc(56svh * 1.7778))}

/* ===== v22: Apple-style media blocks, connector trio, frosted vision ===== */
.mv{max-width:1100px;margin:44px auto 0}
.mv .mv-frame{border-radius:14px;overflow:hidden;background:#0e1114}
.mv .mv-frame.light{background:#fff;border:1px solid #ececec}
.mv video{display:block;width:100%;height:auto}
.mv .mv-cap{margin-top:12px;font-size:11px;letter-spacing:.14em;color:#9E9E9E;font-weight:700;text-align:center}
.mv .mv-chap{margin-top:16px;text-align:center;font-size:16px;line-height:1.6;color:#555;min-height:1.7em;transition:opacity .3s ease}
.mv .mv-chap.swap{opacity:0}
.mvband{background:#fff;padding:64px 0 0}
.trio{display:grid;grid-template-columns:1fr 1fr 1fr;gap:22px;margin-top:48px}
@media(max-width:820px){.trio{grid-template-columns:1fr}}
.trio figure{margin:0}
.trio .tr-frame{border-radius:14px;overflow:hidden;background:#fff;border:1px solid #ececec;aspect-ratio:3/4}
.trio .tr-frame video{display:block;width:100%;height:100%;object-fit:contain}
.trio figcaption{font-size:12px;color:var(--mid);margin-top:10px;text-align:center}
.duo .vfig{background:#fff;height:340px;border:1px solid #f1f1f1}
.duo .vfig video{display:block;width:100%;height:100%;object-fit:contain}

/* vision: frosted hero backdrop, full letter visible (Apple Vision Pro pattern) */
.vision{position:relative;overflow:hidden}
.vision .v-bg{position:absolute;inset:-60px;background:url('../img/hero-crane.webp') 46% 42%/cover no-repeat;filter:blur(38px) saturate(1.04) brightness(1.08);transform:scale(1.14)}
.vision .v-bg::after{content:'';position:absolute;inset:0;background:rgba(255,255,255,.8)}
.vision .wrap{position:relative;z-index:1}
.vision .letter{max-width:920px;font-size:clamp(19px,2vw,27px);line-height:1.5;font-weight:600;letter-spacing:-.01em;color:#1A1A1A}
.vision .letter p{margin-bottom:34px}
.vision .sig{background:rgba(255,255,255,.4);border-top:1px solid rgba(26,26,26,.18)}

/* ================= v23 ================= */
/* --- hero pinned as the vision backdrop: hero stays, vision text slides over --- */
.vpin{position:relative}
.vpin .hero{position:sticky;top:0;z-index:0}
.vpin .vision{position:relative;z-index:2;
  background:linear-gradient(180deg,rgba(255,255,255,.64) 0,rgba(255,255,255,.92) 260px,#fff 560px);
  -webkit-backdrop-filter:blur(26px) saturate(1.05);backdrop-filter:blur(26px) saturate(1.05)}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .vpin .vision{background:linear-gradient(180deg,rgba(255,255,255,.9) 0,#fff 340px)}}
/* vision compressed to fit one viewport; signature blends in (no separate panel) */
.vision{padding:104px 0 92px}
.vision .open{max-width:920px;margin:32px auto 0;font-size:clamp(20px,2.5vw,32px);line-height:1.32}
.vision .letter{max-width:840px;margin:38px auto 0;font-size:clamp(14.5px,1.35vw,17.5px);line-height:1.6;color:#2a2a2a}
.vision .letter p{margin-bottom:18px}
.vision .vfinal{margin:44px auto 0}
.vision .vfinal .v1{font-size:clamp(19px,2.2vw,30px)}
.vision .vfinal .v2{margin-top:12px;font-size:clamp(26px,3.6vw,48px)}
.vision .sig{max-width:840px;margin:42px auto 0;background:transparent;border-top:1px solid rgba(26,26,26,.16);padding-top:22px}
/* --- shared entrance for media: sudden rise + slight scale-in --- */
.fade.rise{transform:translateY(30px) scale(.965);transition:opacity .8s cubic-bezier(.22,.8,.24,1),transform .8s cubic-bezier(.22,.8,.24,1)}
.fade.rise.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.fade.rise{transform:none}}
/* --- notprefab: text + media two-up, staggered entrance --- */
.np-grid{display:grid;grid-template-columns:1.02fr .98fr;gap:56px;align-items:center}
@media(max-width:980px){.np-grid{grid-template-columns:1fr;gap:36px}}
#notprefab .foot-note{margin-top:40px;max-width:880px}
/* --- full-bleed video band (edge to edge, no frame) --- */
.mvband.bleed{padding:0;margin:0;background:#fff}
.mvband.bleed video{display:block;width:100%;height:auto;border:0;border-radius:0}
.mvband.bleed .mv-chap{margin:16px auto 4px;text-align:center}
.mvband.bleed .mv-cap{margin-bottom:10px}
/* --- frameless in-wrap video --- */
.mv.bare .mv-frame{border:0;border-radius:0;background:none;padding:0}
.mv.bare>video,.mv.bare .mv-crop video{display:block;width:100%;height:auto;border:0;border-radius:0;background:#fff}
.mv-crop{overflow:hidden}
.mv-crop video{transform:scale(1.045);transform-origin:50% 50%}
/* --- materials solo (26): immersive vertical, no frame --- */
.solo{max-width:620px;margin:64px auto 0;text-align:center}
.solo video{display:block;width:100%;height:auto;background:#fff}
.solo .mv-cap{margin-top:14px}
.solo-note{margin:10px auto 0;max-width:560px;font-size:13.5px;color:var(--mid);line-height:1.6}
/* --- load-path band after the exploded assembly (24) --- */
#loadpath{padding:110px 0 10px;background:#fff}
.lp-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:64px;align-items:center}
.lp-txt h3{margin-top:18px;font-size:clamp(24px,2.6vw,34px);letter-spacing:-.015em;font-weight:700}
.lp-txt p{margin-top:18px;font-size:16px;line-height:1.7;color:#333;max-width:540px}
.lp-vid video{display:block;width:100%;max-width:440px;margin:0 auto;height:auto;background:#fff}
@media(max-width:980px){.lp-grid{grid-template-columns:1fr;gap:36px}}
/* --- modules duo: video slot matches the neighbouring photo box --- */
.vfig.tall{height:520px;display:flex;background:#fff}
.vfig.tall video{width:100%;height:100%;object-fit:contain}
@media(max-width:820px){.vfig.tall{height:auto}}
/* glance card 1: member family + factory scope, body style matches cards 2/3 */
.g-min .k{margin-bottom:6px}
.g-min .g-cap{margin-top:0}

/* ================= v24 ================= */
/* glance: card-1 label font matches cards, kicker enlarged */
.g-min .k{font-size:10px;letter-spacing:.12em;color:#9E9E9E;font-weight:700;margin-bottom:6px}
.glance .sec-label{font-size:14px;letter-spacing:.34em;color:#6f6f6f}
/* global video-to-text left-edge alignment */
.mv.bare{max-width:none}
.pb-wrap{max-width:none}
.pb-wrap .pb-frame{border:0;border-radius:0;background:#fff;padding:0}
/* trades band: chapter line above the video, tight */
.mvband.bleed .mv-chap.top{margin:0 auto 12px}
.mvband.bleed{padding-top:6px}
/* bridging lede above the full-bleed pour video */
.bleed-lede{max-width:960px;margin:0 auto 24px;text-align:center;font-size:clamp(17px,1.9vw,24px);line-height:1.5;font-weight:700;letter-spacing:-.01em;color:#1A1A1A}
#pourband{padding-top:64px}
/* materials: video left, four points right, top and bottom edges parallel */
.conn2{display:grid;grid-template-columns:.92fr 1.08fr;gap:44px;align-items:stretch}
.conn2-vid video{display:block;width:100%;height:100%;object-fit:cover;background:#fff}
.conn2-pts{display:flex;flex-direction:column;justify-content:space-between;gap:20px}
.conn2-pts .pt{margin:0}
@media(max-width:980px){.conn2{grid-template-columns:1fr}.conn2-vid video{height:auto}}
/* panels lede: closing sentence on its own line */
.lede-line{display:block;margin-top:10px}
/* production: note under the members video; cure-note sits close to its chart */
.pt-note{margin-top:8px;font-size:12.5px;color:var(--mid);text-align:center;line-height:1.6}
.rt-note{margin-bottom:6px}
.curebars{margin-top:12px}
/* built: factory-integrated trades list, staggered slide-in with drawing hairlines */
.trail li{opacity:0;transform:translateX(-16px);transition:opacity .55s ease,transform .55s cubic-bezier(.22,.8,.24,1)}
.trail.fade.in li{opacity:1;transform:none}
.trail.fade.in li:nth-child(1){transition-delay:.05s}
.trail.fade.in li:nth-child(2){transition-delay:.13s}
.trail.fade.in li:nth-child(3){transition-delay:.21s}
.trail.fade.in li:nth-child(4){transition-delay:.29s}
.trail.fade.in li:nth-child(5){transition-delay:.37s}
.trail.fade.in li:nth-child(6){transition-delay:.45s}
/* why-shellform: hairline draws in on reveal */
.adv div{border-top:0;position:relative}
.adv div::before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--bg3);transform:scaleX(0);transform-origin:left;transition:transform .7s cubic-bezier(.22,.8,.24,1) .1s,background .25s}
.adv div.in::before{transform:scaleX(1)}
.adv div:hover::before{background:var(--green)}
/* highlights widget (Apple-style chips + framed stage + arrows) */
.hl{background:#F1F2F3;border-radius:28px;padding:clamp(22px,3vw,44px);margin-top:44px}
.hl-grid{display:grid;grid-template-columns:minmax(280px,340px) 1fr;gap:36px;align-items:center}
.hl-chips{display:flex;flex-direction:column;gap:11px;align-items:flex-start}
.hl-chip{display:block;text-align:left;background:#fff;border:0;border-radius:24px;padding:10px 16px;font-family:inherit;font-size:13.5px;font-weight:700;color:#1A1A1A;cursor:pointer;box-shadow:0 1px 2px rgba(0,0,0,.05);transition:box-shadow .25s,border-radius .3s}
.hl-chip:hover{box-shadow:0 2px 8px rgba(0,0,0,.1)}
.hl-top{display:flex;align-items:center;gap:10px}
.hl-chip .pl{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#E8E8E8;font-weight:600;font-size:14px;line-height:1;transition:transform .3s,background .3s,color .3s;flex:0 0 auto}
.hl-chip.on{border-radius:18px;max-width:340px}
.hl-chip.on .pl{transform:rotate(45deg);background:var(--green);color:#fff}
.hl-body{display:none;font-weight:400;color:#555;font-size:13px;line-height:1.6;margin-top:8px}
.hl-body b{color:#1A1A1A}
.hl-chip.on .hl-body{display:block}
.hl-stage{position:relative;aspect-ratio:16/10;border-radius:18px;overflow:hidden;background:#fff}
.hl-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .5s ease}
.hl-img.on{opacity:1}
.hl-nav{display:flex;gap:12px;justify-content:center;margin-top:22px}
.hl-btn{width:40px;height:40px;border-radius:50%;border:1px solid #cfcfcf;background:#fff;font-size:20px;line-height:1;color:#1A1A1A;cursor:pointer;transition:all .25s}
.hl-btn:hover{border-color:#1A1A1A}
@media(max-width:980px){.hl-grid{grid-template-columns:1fr}.hl-stage{order:-1}}
/* traceability: slider retired, two framed figures, vertical detail beside the plan */
.tr-duo{display:grid;grid-template-columns:1.35fr .65fr;gap:16px;align-items:stretch}
.tr-duo figure{margin:0;background:#fff;border:1px solid #ececec;border-radius:12px;overflow:hidden;display:flex;flex-direction:column}
.tr-duo figure:last-child{background:#1c232b;border-color:#1c232b}
.tr-duo img{width:100%;height:520px;object-fit:contain;display:block}
.tr-duo figcaption{font-size:11.5px;color:var(--mid);padding:10px 14px;background:#fff}
@media(max-width:920px){.tr-duo{grid-template-columns:1fr}.tr-duo img{height:auto}}

/* ================= v25 ================= */
/* hero: green note sized between kicker and sub */
.hero p.note{font-size:15.5px}
/* exploded diagram: final callout, no green bar, larger type; legend larger */
.exp-final .bar{border-left:0;padding:14px 10px;font-size:15.5px}
.exp-legend{font-size:13px}
/* loadpath: Apple Fitness layout, centered stack */
.lp-center{text-align:center}
.lp-h{font-size:clamp(30px,3.6vw,48px);font-weight:700;letter-spacing:-.02em;margin-top:14px}
.lp-media video{display:block;width:100%;max-width:440px;margin:36px auto 0;background:#fff}
.lp-p{max-width:760px;margin:30px auto 0;font-size:16px;line-height:1.7;color:#333}
#lpintro{margin-top:20px}
/* pour band: breathe, lede slides out */
#pourband{padding-top:110px}
.bleed-lede{margin-bottom:32px}
/* isnot: arrows reveal then gently nudge */
.lock .arr{opacity:0;transform:translateX(-14px);transition:opacity .5s ease .25s,transform .5s cubic-bezier(.22,.8,.24,1) .25s}
.lock.fade.in .arr{opacity:1;transform:none;animation:arrnudge 2.6s ease-in-out 1.1s infinite}
@keyframes arrnudge{0%,100%{transform:translateX(0)}50%{transform:translateX(6px)}}
@media(prefers-reduced-motion:reduce){.lock.fade.in .arr{animation:none}}
/* traceability: square pager beside the QR card, Apple-clean spec rows */
.tr-pager{position:relative}
.tr-slides2{position:relative;aspect-ratio:1/1;border-radius:12px;overflow:hidden;background:#1c232b}
.tr-slides2 figure{position:absolute;inset:0;margin:0;opacity:0;transition:opacity .45s ease}
.tr-slides2 figure.on{opacity:1}
.tr-slides2 img{width:100%;height:100%;object-fit:cover;display:block}
.tr-slides2 figcaption{position:absolute;left:0;right:0;bottom:0;padding:26px 16px 12px;font-size:11.5px;letter-spacing:.02em;color:#fff;background:linear-gradient(0deg,rgba(10,14,18,.62),rgba(10,14,18,0))}
.tr-nav{display:flex;gap:10px;justify-content:center;margin-top:16px}
.trace-rec .tr-rows{margin-top:24px}
.tr-row{display:flex;justify-content:space-between;align-items:baseline;gap:18px;padding:11px 2px;border-bottom:1px solid #ececec;font-size:13.5px;line-height:1.5}
.tr-row:first-child{border-top:1px solid #ececec}
.tr-row span{color:var(--mid)}
.tr-row b{color:#1A1A1A;text-align:right;font-weight:700}
/* video control (Apple-style): pause bars while playing, triangle when paused, replay when ended */
.vwrap{position:relative;display:block;height:100%}
.mv.bare video{display:block;width:100%;height:auto}
.vctl{position:absolute;right:14px;bottom:14px;width:34px;height:34px;border-radius:50%;background:rgba(56,56,60,.6);border:0;cursor:pointer;z-index:6;transition:background .2s}
.vctl:hover{background:rgba(56,56,60,.85)}
.vctl::before{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:4px;height:12px;background:#fff;box-shadow:7px 0 0 #fff;margin-left:-3px}
.vctl.is-paused::before{width:0;height:0;background:none;box-shadow:none;margin-left:2px;border-left:11px solid #fff;border-top:7px solid transparent;border-bottom:7px solid transparent}
.vctl.is-ended::before{content:"\21BB";width:auto;height:auto;background:none;box-shadow:none;margin:0;border:0;color:#fff;font-size:16px;line-height:1}

/* ================= v26 ================= */
/* loadpath merged video: full-bleed breakout inside the centered section */
.lp-media.bleedout{max-width:none;width:100vw;margin-left:calc(50% - 50vw)}
.lp-media.bleedout video{max-width:none;width:100%;margin:36px 0 0;display:block;background:#fff}
.lpsync{transition:color .3s ease}
.lpsync.lit{color:var(--green)}
/* member-family video: full-bleed */
.mv.fullbleed{width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}
/* trades band: viewing-angle kicker above the jumping line, tighter to video */
.mv-kicker{font-size:11px;letter-spacing:.3em;color:var(--mid);font-weight:700;text-align:center;margin:30px 0 6px}
.mvband.bleed .mv-chap.top{margin:0 auto 10px}
/* highlights: vertical selector arrows; geometric plus and chevrons, dead-centered */
.hl-grid{grid-template-columns:auto minmax(260px,330px) 1fr}
.hl-vnav{display:flex;flex-direction:column;gap:10px;align-self:center}
.hl-chip .pl{font-size:0;position:relative}
.hl-chip .pl::before,.hl-chip .pl::after{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:#1A1A1A;width:10px;height:1.6px;transition:background .3s}
.hl-chip .pl::after{width:1.6px;height:10px}
.hl-chip.on .pl::before,.hl-chip.on .pl::after{background:#fff}
.hl-btn{font-size:0;position:relative}
.hl-btn::before{content:"";position:absolute;left:50%;top:50%;width:9px;height:9px;border-left:1.8px solid #1A1A1A;border-bottom:1.8px solid #1A1A1A;transform:translate(-32%,-50%) rotate(45deg)}
.hl-btn[aria-label="Next"]::before{transform:translate(-68%,-50%) rotate(225deg)}
.hl-btn.vup::before{transform:translate(-50%,-30%) rotate(135deg)}
.hl-btn.vdn::before{transform:translate(-50%,-70%) rotate(-45deg)}
@media(max-width:980px){.hl-grid{grid-template-columns:1fr}.hl-vnav{flex-direction:row;order:2;justify-content:center}}


/* ================= v27 ================= */
/* loadpath: sync text sits above the video; video constrained to the content column,
   same width as the panel-breakdown video below (no full bleed) */
.lp-media video{max-width:none;width:100%;margin:44px 0 0;display:block;background:#fff}
#loadpath .lp-p{margin-top:26px}

/* Apple-size video control: larger button, larger glyphs, drawn replay icon */
.vctl{width:42px;height:42px;right:16px;bottom:16px}
.vctl::before{width:5px;height:15px;box-shadow:9px 0 0 #fff;margin-left:-4.5px}
.vctl.is-paused::before{width:0;height:0;background:none;box-shadow:none;margin-left:3px;border-left:14px solid #fff;border-top:9px solid transparent;border-bottom:9px solid transparent}
.vctl.is-ended::before{display:none}
.vctl .g-re{display:none;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:22px;height:22px;fill:#fff}
.vctl.is-ended .g-re{display:block}

/* install-media vertical slot: control wrapper spans the full slot (restores the assembly-lift video) */
.vslot .vwrap{width:100%;height:100%}

/* modules: Apple-style lead statement above the module cards */
.mod-lead{max-width:900px;margin:64px auto 0;text-align:center;font-size:clamp(19px,2.1vw,26px);line-height:1.45;font-weight:700;letter-spacing:-.012em;color:var(--ink)}
.mod-lead .dim{color:var(--mid)}
.mod-lead + .mods{margin-top:44px}

/* modules duo: frameless video card; spacing tuned after the moved statement */
.vfig.tall{border:0}
#modules .duo.tall{margin-top:64px}

/* evaluation matrix: sticky edge columns fill to the container edges
   (green fill on the ShellForm side, light gray band on the label side) */
.matrixsec .mtable-wrap{padding:0}
.mtable th:first-child,.mtable td:first-child{background:linear-gradient(to right,#F2F2F2 0,#F2F2F2 12px,#fff 12px);padding-left:26px}
.mtable th:last-child,.mtable td:last-child{background:#F3FAEB;padding-right:18px}


/* ================= v28 ================= */
/* glance: bold slogan line under the section label */
.g-slogan{font-size:clamp(24px,3vw,40px);font-weight:700;letter-spacing:-.018em;line-height:1.22;max-width:980px;margin-top:14px}
.g-slogan .dim,.mod-lead .dim{color:var(--mid)}

/* highlights: pager lives on the right edge of the stage */
.hl-stage .hl-nav{position:absolute;right:16px;top:50%;transform:translateY(-50%);flex-direction:row;gap:10px;margin:0;z-index:4}
.hl-stage .hl-btn{background:rgba(255,255,255,.92);box-shadow:0 2px 10px rgba(0,0,0,.14)}

/* notprefab: media enters with a slow settle; wrapper carries the scroll drift */
#notprefab .np-media video{transform:scale(1.06);transition:transform 1.4s cubic-bezier(.22,.8,.24,1)}
#notprefab .np-media.in video{transform:scale(1)}
#notprefab .np-media .vwrap{will-change:transform}

/* locks (why + isnot): assumption appears, response takes focus; no looping arrow motion */
.lock.fade.in .arr{animation:none}
.lock>div:first-child{opacity:0;transform:translateY(10px)}
.lock.fade.in>div:first-child{animation:lockAssume 1.5s ease forwards}
@keyframes lockAssume{0%{opacity:0;transform:translateY(10px)}40%{opacity:1;transform:none}100%{opacity:.55;transform:none}}
.lock .arr{transition-delay:.45s,.45s}
.lock>div:last-child{opacity:0;transform:translateX(18px);transition:opacity .55s ease .7s,transform .55s cubic-bezier(.22,.8,.24,1) .7s}
.lock.fade.in>div:last-child{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.lock>div:first-child,.lock>div:last-child{opacity:1;transform:none;animation:none;transition:none}}

/* 25 banner: standalone immersive block; Apple-scale kicker; detail line under the chapter */
.mvband.bleed{padding-top:118px}
.mv-kicker{font-size:15px;letter-spacing:.26em;margin:0 0 16px}
.mvband.bleed .mv-chap.top{margin:0 auto 4px;font-size:19px;font-weight:700;color:var(--ink)}
.mv-detail{text-align:center;font-size:13.5px;line-height:1.55;color:var(--mid);max-width:680px;margin:0 auto 22px;min-height:1.55em;transition:opacity .3s ease}
.mv-detail.swap{opacity:0}

/* built: member video reads at the same visual scale as the factory photo */
#built .split figure:first-child .vwrap{overflow:hidden;display:block}
#built .split figure:first-child video{transform:scale(1.3);transform-origin:center}

/* built: trades list, slightly larger */
.trail li{font-size:14px;padding:11px 0}

/* assemblies: centered Apple-style header block over the full-bleed video */
#assemblies .sec-label,#assemblies h2{text-align:center}
#assemblies .lede{margin-left:auto;margin-right:auto;text-align:center}


/* ================= v29 ================= */
/* curebars: green route label on one line, centered on the bar midline */
.cb{grid-template-columns:150px 1fr auto}
.cb b{white-space:nowrap}
@media(max-width:760px){.cb b{white-space:normal}}

/* 25 banner: gray detail on one line, held stable, moved down toward the video */
.mv-detail{max-width:none;white-space:nowrap;font-size:13px;margin:14px auto 6px}
.mvband.bleed .mv-chap.top{min-height:1.5em}
@media(max-width:760px){.mv-detail{white-space:normal}}

/* built: factory photo pager */
.bp-stage{position:relative;height:560px;overflow:hidden}
.bp-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .45s ease}
.bp-img.on{opacity:1}
.bp-nav{position:absolute;right:14px;bottom:14px;display:flex;gap:10px;z-index:3}
.bp-nav .hl-btn{background:rgba(255,255,255,.92);box-shadow:0 2px 10px rgba(0,0,0,.14)}


/* ================= v30 ================= */
/* global scale: whole page reads larger at 100%, proportions unchanged */
:root{--pz:1.12}
@media(max-width:1100px){:root{--pz:1}}
body{zoom:var(--pz)}
.mv.fullbleed{width:calc(100vw/var(--pz));margin-left:calc(50% - 50vw/var(--pz));margin-right:calc(50% - 50vw/var(--pz))}

/* notprefab: two stacked structure videos */
.np-stack .vid16{margin-top:0}
.np-stack .vid16 + .vid16{margin-top:16px}
#notprefab .np-stack .vid16:nth-child(2) video{transition-delay:.15s}

/* highlights: arrow navigation shows no cross on the active chip */
.hl.nox .hl-chip.on .pl{transform:none}

/* up close: Apple-style closeup card row */
.cu-wrap{margin-top:40px}
.cu-track{display:flex;gap:20px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:6px;scrollbar-width:none;-ms-overflow-style:none}
.cu-track::-webkit-scrollbar{display:none}
.cu-card{flex:0 0 300px;scroll-snap-align:start}
.cu-media{aspect-ratio:3/4;border-radius:18px;overflow:hidden;background:#F7F7F7}
.cu-media img{width:100%;height:100%;object-fit:cover;display:block}
.cu-cap{font-size:13px;line-height:1.6;color:#555;margin-top:12px}
.cu-cap b{color:var(--ink)}
.cu-nav{display:flex;gap:10px;justify-content:flex-end;margin-top:16px}
@media(max-width:760px){.cu-card{flex-basis:76vw}}


/* ================= v31 ================= */
/* highlights: Apple accordion, animated expand; arrows never show the cross */
.hl-body{display:block;overflow:hidden;max-height:0;margin-top:0;transition:max-height .5s cubic-bezier(.22,.8,.24,1),margin-top .35s ease}
.hl-chip.on .hl-body{max-height:360px;margin-top:8px}
#hlw.nox .hl-chip.on .pl,.hl.nox .hl-chip.on .pl{transform:none}

/* stockable stage photo: show the lower detail of the member */
.hl-img[src*="st-stockable"]{object-position:50% 82%}

/* notprefab: merged lede, key phrases black, rest light; note anchors to the media bottom */
#notprefab .np-grid{align-items:stretch}
#notprefab .np-grid>div:first-child{display:flex;flex-direction:column}
.np-lede{color:#8a8a8a}
.np-lede b{color:var(--ink)}
.np-note{font-size:12.5px;line-height:1.65;color:#B3B3B3;max-width:560px;margin-top:auto;padding-top:22px}
#notprefab .np-stack{margin-top:0}

/* stock: Apple card row, wide media, existing copy assigned per card */
.stk-head{font-size:15px;line-height:1.6;color:var(--ink)}
.stk-row{margin-top:22px}
.stk-row .cu-card{flex:0 0 340px}
.cu-media.wide{aspect-ratio:4/3}
.stk-note{font-size:12.5px;color:#9E9E9E;line-height:1.6;margin-top:18px;max-width:900px}

/* ================= v34 ================= */
.gz{color:var(--green)}
.hl-chip.on .pl{display:none}
.hl-grid{grid-template-columns:auto 320px 1fr;gap:26px;align-items:center}
.hl-stage{max-width:none}
.vid16 .cap,.vslot .cap2{position:absolute;top:100%;bottom:auto;left:0;right:auto;color:#9E9E9E;font-size:12px;letter-spacing:.12em;text-shadow:none;margin-top:10px}
.vid16,.vslot{margin-bottom:38px}
.stat .n{font-size:clamp(46px,5vw,74px)}
.stat .d{font-size:14.5px}
.stats-gray .n,.stats-gray .n em{color:#555}
.lock .k{font-size:12px}
.lock h4{font-size:20px;margin-bottom:8px}
.lock p{font-size:15px;line-height:1.65}
#company .lede{max-width:none}
#belowgrade .lede,#below .lede{max-width:none}
#assemblies h2{text-wrap:balance}
.mem-viewer>*{border:0}
.mem-viewer figure,.mem-viewer .mem-fig{border:0;box-shadow:none}
.mem-info h3{font-size:27px}
.mem-info p{font-size:16.5px;line-height:1.7}
.vrow .txt{align-self:center;text-align:center}
.vrow .txt h3{font-size:clamp(30px,3vw,46px);letter-spacing:-.015em}
.vrow .txt p{font-size:17.5px;color:#8a8a8a;max-width:640px;margin:16px auto 0;line-height:1.7}
.vrow .vslot.fade{transition-delay:.05s}
.vrow .txt.fade{transition-delay:.35s}
.mvband.bleed .mv-chap.top{font-size:clamp(24px,2.6vw,36px);font-weight:700;letter-spacing:-.015em;min-height:1.3em}
.mv-detail{font-size:15px;margin-top:16px}
.cmp .col.sfcol{background:#F3FAEB;border:1.5px solid var(--green);padding:20px 22px}


/* ================= v34b ================= */
/* captions move below media, gray */
.capb{position:static!important;display:block;background:none!important;color:#9E9E9E!important;font-size:12.5px;letter-spacing:.14em;margin-top:10px;text-shadow:none!important;padding:0!important}
/* highlights: expanded chip has no icon, text flush left (Apple) */
.hl-chip.on .pl{display:none}
.hl-chip.on .hl-top{padding-left:0}
.steps3{grid-template-columns:repeat(5,1fr)!important}
@media(max-width:1100px){.steps3{grid-template-columns:repeat(2,1fr)!important}}


/* ================= v35 ================= */
/* galleries: three-row horizontal slider, Apple arrows */
.gal{display:grid!important;grid-auto-flow:column;grid-template-rows:repeat(3,230px);grid-auto-columns:minmax(300px,26vw);gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding-bottom:6px}
.gal::-webkit-scrollbar{display:none}
.gal img{width:100%;height:100%;object-fit:cover;scroll-snap-align:start}
.gal-nav{display:flex;gap:10px;justify-content:flex-end;margin-top:14px}
@media(max-width:900px){.gal{grid-template-rows:repeat(2,180px);grid-auto-columns:70vw}}


/* ================= v36 ================= */
/* --- Global type audit (B9): ledes match section body reference; width = content width --- */
.lede{font-size:clamp(17.5px,1.5vw,20px);max-width:none;line-height:1.62}
#logistics h2,#digital h2,#traceability h2,#advantage h2,#compare h2,#install h2,#inspection h2,#projects h2,#proof h2,#model h2,#status h2,#gallery h2,#engage h2{max-width:none}
#belowgrade h2{max-width:none;white-space:nowrap}
@media(max-width:720px){#belowgrade h2{white-space:normal}}
#panels h2{max-width:none}

/* --- Caption sits close to its media (notprefab pair and all vid16/vslot) --- */
.vid16+.capb,.vslot+.capb{margin-top:-27px;margin-bottom:34px}
.mv+.capb,.mvband+.capb{margin-top:12px}

/* --- Company two-column block: body raised to the lock-row reference size --- */
.orig h3{font-size:20px;margin-bottom:14px}
.orig p{font-size:15px;line-height:1.62;color:#555}
.orig dl dt{font-size:15px;margin-top:14px}
.orig dl dd{font-size:13.8px;line-height:1.6}

/* --- Exploded view: #10 bar and legend nudged up, off the fold --- */
.exp-final{margin-top:8px}
.exp-final .bar{padding:12px 20px}
.exp-legend{margin-top:8px}

/* --- Load path: lede spans the video width, animation untouched --- */
#loadpath .lp-p{max-width:none}

/* --- Built: trades list shifted left toward the title's visual midline --- */
@media(min-width:1181px){#built .trail{margin-left:-16px}}

/* --- Member family: lede width matches the load-path lede --- */
#assemblies .lede{max-width:none}

/* --- Production: ShellForm route card keeps the fill, loses the stroke --- */
.cmp .col.sfcol{border:0;padding:21px 23px}
/* kicker above the beams/columns line video */
.mv-kick{font-size:11px;letter-spacing:.14em;color:#9E9E9E;font-weight:700;text-align:center;margin-bottom:14px}
.pt-note{margin-top:12px}
/* paired split-screen labels under the line video (frame-verified) */
.mv-split{display:grid;grid-template-columns:1fr 1fr;margin-top:10px;min-height:1.2em;opacity:0;transition:opacity .3s ease}
.mv-split.on{opacity:1}
.mv-split span{text-align:center;font-size:11px;letter-spacing:.14em;color:#9E9E9E;font-weight:700}

/* --- Highlights: wider stage, equal-height columns, photos keep their ratio (B4) --- */
#highlights .wrap{max-width:1340px}
.hl-grid{grid-template-columns:auto 300px 1fr;gap:24px;align-items:stretch}
.hl-chips{height:100%;justify-content:space-between;gap:9px}
.hl-chip{padding:9px 15px}
.hl-body{font-size:12.8px}
.hl-stage{aspect-ratio:auto;height:100%;min-height:520px}
.hl-img{object-fit:contain;background:#fff}
@media(max-width:980px){.hl-stage{height:auto;aspect-ratio:16/10;min-height:0}.hl-chips{height:auto;justify-content:flex-start}}

/* --- Install-media: Apple statement row + one-row video slider (B5, screenshot 12) --- */
.vrow{grid-template-columns:360px 1fr;gap:64px;align-items:center;margin-top:56px}
.vcell{max-width:360px}
.vslot.vert{max-width:360px}
.vrow .vcell.fade{transition-delay:.05s}
.vrow .txt .vk{font-size:11px;letter-spacing:.3em;color:var(--mid);font-weight:700;margin-bottom:18px}
.vrow .txt h3{font-size:clamp(34px,3.4vw,54px);letter-spacing:-.018em;line-height:1.08}
.vrow .txt p{font-size:18px;color:#8a8a8a;max-width:640px;margin:22px auto 0;line-height:1.7}
@media(max-width:820px){.vcell{margin:0 auto}}
.vgal-wrap{margin-top:64px}
.vgal{display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding-bottom:6px}
.vgal::-webkit-scrollbar{display:none}
.vg-card{flex:0 0 340px;scroll-snap-align:start}
.vg-media{aspect-ratio:16/9;border-radius:18px;overflow:hidden;background:#0e1114;position:relative}
.vg-media video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.vg-cap{font-size:11.5px;letter-spacing:.14em;color:#9E9E9E;margin-top:10px}
.vg-nav{display:flex;gap:10px;justify-content:flex-end;margin-top:14px}
@media(max-width:760px){.vg-card{flex-basis:76vw}}

/* --- Design & engineering: five steps raised to the reference scale --- */
.steps4 .n{font-size:26px}
.steps4 h4{font-size:15.5px;margin-bottom:7px}
.steps4 p{font-size:13.5px;color:#555;line-height:1.55}

/* --- Where the system leads: body and numbers immersive (screenshot 13) --- */
.adv{gap:26px 24px}
.adv h4{font-size:19px;margin-bottom:8px}
.adv p{font-size:15px;color:#555;line-height:1.6}
.apps{font-size:16px;line-height:1.7;padding:28px 32px}
.net{padding:56px 48px;gap:40px}
.net .n{font-size:clamp(52px,5.8vw,88px);letter-spacing:-.02em;line-height:1.05}
.net .d{font-size:16px;color:#4a4a4a;margin-top:12px}

/* --- Proof band: wraps cleanly, smaller plus, no overflow (screenshot 14) --- */
#proof .stats{gap:28px;align-items:start}
#proof .stat .n{white-space:normal;font-size:clamp(30px,3.2vw,50px);line-height:1.08;letter-spacing:-.02em}
#proof .stat .n .plus{font-size:.58em;font-weight:700}

/* --- Setup numbers band: unit sized down (screenshot 10) --- */
.stat .n .unit{font-size:.42em;font-weight:700;margin-left:.14em;letter-spacing:0}

/* --- How we work: sub-section headings raised; entry/cost/scope bodies to reference scale --- */
.subhead + h3{font-size:clamp(22px,2.5vw,32px)}
.entry4 h4{font-size:17px}
.entry4 dt{font-size:10.5px}
.entry4 dd{font-size:14px;line-height:1.55}
.cost4 dt{font-size:14px}
.cost4 dd{font-size:12.8px;line-height:1.5}
.scopedl dt{font-size:15px}
.scopedl dd{font-size:13.5px;line-height:1.55}
.price2 h3{font-size:18px}
.modeb h5{font-size:14.5px}
.modeb p{font-size:13.2px;line-height:1.55}
.friction{font-size:14px}
.pt h4{font-size:16.5px}
.pt p{font-size:14.5px;line-height:1.58}

/* ecosystem: large switchable cards (B6) */
.eco-wrap{margin-top:44px}
.eco-track{display:flex;gap:22px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding-bottom:6px}
.eco-track::-webkit-scrollbar{display:none}
.eco-card{flex:0 0 380px;scroll-snap-align:start;background:var(--bg2);border-radius:20px;padding:20px 22px 24px}
.eco-top{display:flex;align-items:center;justify-content:space-between}
.eco-card .nb{width:26px;height:26px;border-radius:50%;background:#fff;color:var(--ink);font-size:12px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}
.eco-card .own{font-size:10.5px;letter-spacing:.14em;font-weight:700;padding:4px 10px}
.eco-card .own.sf{background:var(--green);color:#fff}
.eco-card .own.pt{background:#fff;border:1px solid #C9C9C9;color:#666}
.eco-media{aspect-ratio:4/3;border-radius:14px;overflow:hidden;background:#fff;margin-top:14px}
.eco-media img{width:100%;height:100%;object-fit:contain}
.eco-card h4{font-size:20px;margin-top:16px;letter-spacing:-.01em}
.eco-card p{font-size:15px;color:#555;margin-top:6px;line-height:1.55}
.eco-nav{display:flex;gap:10px;justify-content:flex-end;margin-top:14px}
@media(max-width:760px){.eco-card{flex-basis:82vw}}

/* provides/operates and closing statements: Apple cards (B7) */
.prov-label{margin-top:56px;font-size:11px;letter-spacing:.26em;font-weight:700;color:var(--green)}
.prov-label.pt2{color:var(--mid)}
.prov3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:18px}
@media(max-width:900px){.prov3{grid-template-columns:1fr}}
.pcard{background:var(--bg2);border-radius:20px;padding:26px 26px 28px}
.pcard .pic{display:inline-flex;width:40px;height:40px;border-radius:12px;background:#fff;align-items:center;justify-content:center;margin-bottom:16px}
.pcard .pic svg{width:22px;height:22px;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.pcard.sfic .pic svg{stroke:var(--green)}
.pcard.ptic .pic svg{stroke:#9E9E9E}
.pcard h4{font-size:17px;letter-spacing:-.01em;margin-bottom:8px;line-height:1.35}
.pcard p{font-size:14.5px;color:#555;line-height:1.62}
.prov3.two{grid-template-columns:1fr 1fr}
@media(max-width:860px){.prov3.two{grid-template-columns:1fr}}

/* gallery: framed video cells inside the three-row slider (B8, screenshot 15) */
.gal .gal-vid{position:relative;border-radius:18px;overflow:hidden;background:#0e1114}
.gal .gal-vid video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.gal .gal-vid.tall{grid-row:1/-1}
.vcell .capb{margin-bottom:0}

/* ============ v37 ============ */
/* unified media captions 11.5 (T1) */
.capb{font-size:11.5px}
.vid16 .cap,.vslot .cap2{font-size:11.5px;letter-spacing:.14em}
.mv-kick,.mv-cap,.mv-split span{font-size:11.5px}
/* highlights: gray letterbox, larger stage (img 1) */
.hl-stage{background:var(--bg2)}
.hl-img{background:var(--bg2)}
@media(min-width:981px){.hl-stage{min-height:560px}}
/* company type alignment (img 2) */
.orig dl dd{font-size:15px;line-height:1.62}
.maplegend h4{font-size:17px}
.maplegend p{font-size:15px;line-height:1.6;color:#555}
.chips span{font-size:14px}
/* steps 3 + 2 (img 4) */
.steps4{grid-template-columns:repeat(6,1fr);row-gap:52px}
.steps4>div{grid-column:span 2}
.steps4>div:nth-child(4){grid-column:2/4}
.steps4>div:nth-child(5){grid-column:4/6}
.steps4 h4{font-size:19px}
.steps4 p{font-size:15px;color:#555}
.steps4 .n{font-size:30px}
@media(max-width:860px){.steps4{grid-template-columns:1fr}.steps4>div,.steps4>div:nth-child(4),.steps4>div:nth-child(5){grid-column:auto}}
/* net: reduces-up-to (imgs 6-7) */
.net .k2{font-size:20px;font-weight:700;color:#1A1A1A;margin-bottom:6px}
.net .n{font-size:clamp(56px,6.2vw,92px);letter-spacing:-.02em;line-height:1}
.net .d{margin-top:12px}
/* proof: one-line stats, parallel grays (img 8) */
#proof .wrap{max-width:1340px}
#proof .stats{grid-template-columns:1.05fr .55fr 1.45fr 1.05fr;gap:28px}
#proof .stat .n{white-space:nowrap;font-size:clamp(26px,3vw,46px);letter-spacing:-.02em}
@media(max-width:920px){#proof .stats{grid-template-columns:1fr 1fr}#proof .stat .n{white-space:normal}}
/* ecosystem: four cards in view (img 9) */
@media(min-width:761px){.eco-card{flex:0 0 calc((100% - 66px)/4)}}
.eco-card h4{font-size:22px}
.datarail{font-size:14.5px}
/* production kicker green (T3) */
.cmp .col.sfcol .k{color:var(--green)}
/* loadpath sync paragraph to lede scale (T2) */
.lp-p{font-size:clamp(17.5px,1.5vw,20px);line-height:1.62}
/* engage boxes (img 13) */
.engage .card .k{font-size:11.5px}
.engage .card p{font-size:15.5px;line-height:1.62}
/* stock heading as centered mid-title (img 15) */
.stk-head{text-align:center}
.stk-head strong{display:block;font-size:clamp(24px,2.6vw,34px);letter-spacing:-.015em;line-height:1.25}
/* cost rows: row-aligned matrix (img 10) */
.costrows{display:grid;grid-template-columns:repeat(4,1fr);column-gap:26px;margin-top:8px}
.costrows .ck{font-size:11px;letter-spacing:.14em;font-weight:700;color:#9E9E9E;padding-top:14px;border-top:3px solid var(--bg3);margin-top:32px}
.costrows .ck.rm{border-top-color:#9E9E9E}
.costrows .ck.sh{border-top-color:var(--green)}
.costrows .ck.ad{border-top-color:var(--ink)}
.costrows .ck.un{border-top-color:var(--bg3)}
.costcell{display:grid;grid-template-rows:subgrid;grid-row:span 2;row-gap:4px;margin-top:26px}
.costcell h4{font-size:15.5px;line-height:1.35;font-weight:700;color:var(--ink)}
.costcell p{font-size:13.8px;color:#555;line-height:1.5;margin:0}
@media(max-width:860px){.costrows{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.costrows{grid-template-columns:1fr}.costcell{margin-top:18px}}
/* gallery breathing room (img 12) */
#gallery .gal{margin-top:68px}

/* ============ v38 ============ */
/* member-family h2: global h2 max-width box un-anchored the centered text (img 1) */
#assemblies h2{max-width:none;text-wrap:normal}
/* production capability boxes to body reference (img 2) */
.cap2 h4{font-size:19px;margin-bottom:10px}
.cap2 p{font-size:15px;color:#555;line-height:1.6}
/* install detail strip as a four-up slider (img 3) */
.strip-wrap{margin-top:44px}
.strip.strip7{display:flex;grid-template-columns:none;gap:22px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding-bottom:6px;margin-top:0}
.strip.strip7::-webkit-scrollbar{display:none}
.strip7 figure{flex:0 0 calc((100% - 66px)/4);scroll-snap-align:start}
.strip7 img{width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;border-radius:18px}
.strip7 figcaption{font-size:12.5px;color:#555;margin-top:10px;line-height:1.5}
.str-nav{display:flex;gap:10px;justify-content:flex-end;margin-top:14px}
@media(max-width:760px){.strip7 figure{flex-basis:76vw}}
/* install header: h2 scale, lede-scale green-lead subtitle at full width (img 4) */
.ic-h{font-size:clamp(30px,3.6vw,48px);letter-spacing:-.012em}
.ic-sub{color:var(--body2);font-size:clamp(17.5px,1.5vw,20px);line-height:1.62;max-width:none;margin-top:16px}
.ic-sub b{color:var(--green)}
/* sequence pager: shared chevron buttons (img 5) */
.ic-nav{gap:10px}
/* install-media: four clips fully in view (img 6) */
@media(min-width:761px){.vg-card{flex:0 0 calc((100% - 48px)/4)}}
/* digital steps: light blocks with separation (img 7) */
.steps4{border-top:0;gap:14px}
.steps4>div{background:var(--bg2);padding:26px 24px 30px;border-right:0}
/* delivery ecosystem: dashed rule retired (img 10) */
.datarail{border-top:0;padding-top:0;margin-top:26px}
/* provides / operates labels raised above card titles (img 11) */
.prov-label{font-size:clamp(21px,2.1vw,26px);letter-spacing:.06em;margin-top:72px}
/* stock heading: one line, above the modeb titles (img 12) */
.stk-head strong{font-size:clamp(22px,2.2vw,28px);white-space:nowrap}
@media(max-width:900px){.stk-head strong{white-space:normal}}
/* vision: opening sits just above body scale, below the em statement (img 14) */
.vision .open{font-size:clamp(18px,1.9vw,23px);line-height:1.5}
/* stakeholder line: lead heading over the role row (img 9) */
.friction{display:block}
.fr-lead{font-size:17.5px;font-weight:700;color:var(--ink);margin-bottom:14px}
.fr-roles{display:flex;flex-wrap:wrap;gap:12px 34px;font-size:14px;color:#555}
.fr-roles b{color:var(--ink)}

/* ============ v39 ============ */
/* panels spec block to body reference (screenshot: thickness pair) */
.spec2 h5{font-size:11.5px;letter-spacing:.14em}
.spec2 p{font-size:15px;color:#555;line-height:1.6}
/* digital steps: bottom two span the full row as halves (img 3) */
.steps4>div:nth-child(4){grid-column:1/4}
.steps4>div:nth-child(5){grid-column:4/7}
/* proof: gray descriptions use their column width (img 4) */
#proof .stat .d{max-width:none;font-size:13.5px;line-height:1.55}
/* how-we-work 01 to 05: sub-section titles at section-h2 scale, bodies at reference */
.subhead+h3{font-size:clamp(30px,3.6vw,48px);line-height:1.1;letter-spacing:-.012em;max-width:none;margin-top:14px}
.entry4 h4{font-size:19px}
.entry4 dt{font-size:11px}
.entry4 dd{font-size:15px;line-height:1.58}
.scopedl dt{font-size:16px}
.scopedl dd{font-size:14.5px;line-height:1.58}
.price2 h3{font-size:20px}
.price2 .box{border-radius:20px}
.together{font-size:14.5px}
/* eco note under the subtitle */
.eco-note{margin-top:12px;font-size:14.5px;color:#555}
.eco-note b{color:var(--ink)}
/* eco pause and play control */
.vctl2{width:40px;height:40px;border-radius:50%;border:1px solid #cfcfcf;background:#fff;cursor:pointer;position:relative;transition:border-color .2s}
.vctl2:hover{border-color:#1A1A1A}
.vctl2::before{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:4px;height:13px;background:#1A1A1A;box-shadow:8px 0 0 #1A1A1A;margin-left:-4px}
.vctl2.paused::before{width:0;height:0;background:none;box-shadow:none;margin-left:2px;border-left:12px solid #1A1A1A;border-top:8px solid transparent;border-bottom:8px solid transparent}
/* 04 cost matrix: rounded column cards, dash accents, row alignment kept (img 8) */
.costrows{column-gap:18px;row-gap:0}
.costrows .ck{background:var(--bg2);border-radius:20px 20px 0 0;border-top:0;padding:24px 22px 6px;margin-top:24px;color:#777}
.costrows .ck::before{content:"";display:block;width:34px;height:3px;margin-bottom:14px;background:#9E9E9E}
.costrows .ck.sh::before{background:var(--green)}
.costrows .ck.ad::before{background:var(--ink)}
.costrows .ck.un::before{background:#D9D9D9}
.costcell{background:var(--bg2);margin-top:0;padding:20px 22px 0}
.costcell:nth-last-child(-n+4){padding-bottom:28px;border-radius:0 0 20px 20px}
.costcell h4{font-size:16px}
.costcell p{font-size:14.2px}
@media(max-width:860px){.costrows .ck,.costcell{background:transparent;border-radius:0;padding-left:0;padding-right:0}.costrows{row-gap:8px}.costrows .ck{border-top:3px solid var(--bg3);padding-top:14px}.costrows .ck.rm{border-top-color:#9E9E9E}.costrows .ck.sh{border-top-color:var(--green)}.costrows .ck.ad{border-top-color:var(--ink)}.costrows .ck::before{display:none}}
/* 05 modes: rounded panels with white item cards (img 9) */
.modes{gap:18px}
.modes>.box{background:var(--bg2);border-radius:20px;border-top:0;padding:26px 24px 22px}
.modes>.box:last-child{border-top:0}
.modes>.box>.k{font-size:12px;letter-spacing:.1em;color:#555;line-height:1.55;margin-bottom:16px}
.modes>.box>.k::before{content:"";display:block;width:34px;height:3px;background:var(--green);margin-bottom:12px}
.modes>.box:last-child>.k::before{background:#9E9E9E}
.modes .modeb{gap:12px;margin-top:14px}
.modes .modeb .box{background:#fff;border:0;border-radius:14px;padding:20px 22px 18px}
.modeb h5{font-size:16.5px;margin-bottom:7px}
.modeb p{font-size:14.5px;color:#555;line-height:1.6}
.statusline{font-size:11.5px;margin-top:12px}

/* ============ v40 ============ */
/* anchors land clear of the fixed nav (img 6) */
[id]{scroll-margin-top:84px}
/* certification pathway steps: three across the full width (img 4) */
.steps3{grid-template-columns:repeat(3,1fr)!important}
@media(max-width:860px){.steps3{grid-template-columns:1fr!important}}
/* ecosystem: all five in one row, no carousel (text note) */
@media(min-width:981px){
.eco-track{overflow:visible;gap:16px}
.eco-card{flex:1 1 0;min-width:0;padding:16px 16px 20px}
.eco-card h4{font-size:17.5px;margin-top:14px;line-height:1.25}
.eco-card p{font-size:13.8px;line-height:1.5;margin-top:5px}
.eco-card .nb{width:24px;height:24px;font-size:11px}
.eco-card .own{font-size:9.5px;padding:3px 8px;letter-spacing:.1em}
.eco-media{margin-top:12px}
}
/* data backbone folds into the intro block (img 2) */
.eco-note{margin-top:8px;font-size:14px;color:#9E9E9E;line-height:1.6}
.eco-note b{color:#555}
/* stock model note: one full-width centered line */
.stk-note{max-width:none;text-align:center;margin-left:auto;margin-right:auto}
/* pricing conclusion as a quiet result chip */
.together{margin-top:20px;border-top:0;background:#F3FAEB;border-radius:12px;padding:14px 18px;font-size:14.5px}
/* footer: nav-mirrored columns, aligned tops, readable scale (img 5) */
.footgrid{grid-template-columns:1.35fr repeat(4,1fr)}
.footgrid .brand p{margin-top:0;font-size:13.5px;line-height:1.7}
.footgrid h5{font-size:11px;margin-bottom:12px}
.footgrid h5.fg2{margin-top:28px}
.footgrid a,.footgrid .flink{font-size:13px}
.footgrid li{margin-bottom:8px}
.footgrid .brand h5{color:#8a8a8a}

/* ============ v41 ============ */
/* footer group labels in brand green (img 2) */
.footgrid h5{color:var(--green)}
/* traceability: shorter slide frame, both drawings contained on their own background (img 4) */
.tr-slides2{aspect-ratio:4/3}
.tr-slides2 img{object-fit:contain}
/* spec rows span the full block in two columns (img 4-2) */
.tr-rows.two{margin-top:26px;columns:2;column-gap:48px}
.tr-rows.two .tr-row{break-inside:avoid}
.tr-rows.two .tr-row:nth-child(1),.tr-rows.two .tr-row:nth-child(5){border-top:1px solid #ececec}
@media(max-width:860px){.tr-rows.two{columns:1}.tr-rows.two .tr-row:nth-child(5){border-top:0}}

/* ============ v42 ============ */
/* section anchors land with the kicker just under the nav (imgs 4/8) */
section[id]{scroll-margin-top:-36px}
.footmeta div:first-child{color:var(--green)}
/* stock note sits between heading and cards (img 2) */
.stk-note{margin:14px auto 0}
.stk-row{margin-top:32px}

/* ============ v42 ============ */
/* section anchors land with the kicker just under the nav (imgs 4/8) */
section[id]{scroll-margin-top:-36px}
.footmeta div:first-child{color:var(--green)}
/* stock note sits between heading and cards (img 2) */
.stk-note{margin:14px auto 0}
.stk-row{margin-top:32px}

/* ============ v43 ============ */
/* footer brand cell: engage links back to body weight, LinkedIn with glyph */
.footgrid .brand ul a,.footgrid .brand ul .flink{font-weight:400;letter-spacing:0;font-size:13px;color:#cfcfcf}
.footgrid .brand ul a:hover,.footgrid .brand ul .flink:hover{color:var(--green)}
.fli{display:inline-flex;align-items:center;gap:7px}
/* nav dropdowns: rounded quiet panels (img 3) */
nav li>ul{border-top:0;border-radius:14px;box-shadow:0 20px 55px rgba(0,0,0,.14);padding:10px;min-width:252px;left:-10px}
nav li>ul a{border-radius:9px;padding:9px 14px;font-size:12.5px;color:#333}
nav li>ul a:hover{background:var(--bg2);color:var(--ink)}
nav li>ul li{margin:0}

/* ============ v44 ============ */
/* Brand lockup, single source of truth. Rebuilt 1:1 from ShellForm_Logo_with_word.pdf
   (embedded font: Arial-BoldMT; measured: wordmark box = 0.70 x mark height -> font-size = 0.94 x mark height;
   gap = 0.22 x mark height; letter-spacing normal; vertically centered).
   Header sized to match the Enquire button (~37px). All older lockup rules were removed in this pass;
   do not re-introduce per-version overrides, edit this block only. */
.logo,.foot-top .flogo{font-family:Arial,"Helvetica Neue",Helvetica,sans-serif;font-weight:700;letter-spacing:0}
/* v46: lockup scaled to sit near the nav-item text size (Hao, img 6-1); ratios unchanged */
nav .logo{font-size:19px}
nav .logo .logomark{height:20px;margin-right:4px}
.foot-top .flogo{display:inline-flex;align-items:center;font-size:23px}
.foot-top .flogo .logomark{height:24px;margin-right:5px}

/* v46: nav bar rhythm refined (img 6-2): even 28px item gaps, calmer tracking, button set off from the menu */
nav ul{gap:28px}
nav ul>li>a{font-size:12px;letter-spacing:.05em}
nav .cta-mini{margin-left:28px;padding:9px 18px}

/* notprefab footnote levels with the FACTORY caption line of the second video (img 2-2).
   The caps are JS-relocated in-flow blocks (.capb), so a pure CSS cross-column alignment
   is not reliable; main.js measures and sets the note's top after layout (v44 block at its end),
   and re-levels on resize. Below 980px the grid stacks and the note returns to static flow. */
#notprefab .np-text{position:relative}
#notprefab .np-note{position:absolute;top:100%;left:0;margin-top:0;padding-top:0;width:min(560px,100%)}
@media(max-width:980px){
  #notprefab .np-note{position:static;margin-top:auto;padding-top:22px;width:auto}
}

/* v47: notprefab caption hierarchy (img 5): identity line bold and darker, contents line lighter and smaller;
   no words removed; first-line alignment with the left footnote is preserved by the v44 leveling script */
#notprefab .capb{line-height:1.7}
.cap-l1{font-weight:700;color:#4A4A4A}
.cap-l2{display:inline-block;margin-top:5px;font-size:11.5px;color:#ABABAB;letter-spacing:.1em}

/* v48: header aligned to the content grid (img 8-1): nav shares the section wrap width,
   so the lockup's left edge sits exactly on the title/subtitle indent and the Enquire
   button's right edge on the content right edge. */
nav .wrap{max-width:var(--maxw)}

/* v48: lockup recalibrated to the re-issued square-mark PDF (Arial-BoldMT confirmed):
   word box = 0.690 x markH (font 0.93 x markH), gap = 0.238 x markH, vertical centering unchanged. */
nav .logo{font-size:19px}
nav .logo .logomark{height:20px;margin-right:5px}
.foot-top .flogo{font-size:22px}
.foot-top .flogo .logomark{height:24px;margin-right:6px}

/* ============ v49 ============ */
/* Certification pathway block always expanded (img 3-1): core positioning, not an FAQ.
   Title and item typography aligned to the site's card scale (img 3-2): title 19px/700,
   item heads 16.5px matching .card h3, body 13.5px matching standard card copy. */
.acc-open{margin-top:44px;border:1px solid var(--bg3);background:#fff}
.alt .acc-open{background:var(--bg2)}
.acc-open .acc-title{padding:22px 26px 18px;font-size:19px;font-weight:700;line-height:1.3;color:var(--ink)}
.acc-open .steps3{border-top:1px solid var(--bg3)}
.acc-open .steps3 h4{font-size:16.5px;margin-bottom:10px;line-height:1.3}
.acc-open .steps3 p{font-size:13.5px;color:#666}

/* ============ v50 ============ */
/* Market frame under the field-capacity intro (img 1-1). One reframe sentence carries the
   positioning; a smaller secondary strip carries the verified market numbers; a sources line
   names every institution behind both bands. DD record in HANDOFF. */
.mkt-claim{margin:26px 0 6px;padding:4px 0 4px 22px;border-left:3px solid var(--green);font-size:17.5px;line-height:1.6;font-weight:600;color:var(--ink)}
.mkt-frame{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;margin-top:34px;padding-top:26px;border-top:1px solid var(--bg3)}
.mkt-frame .mv{display:block;font-size:21px;font-weight:700;letter-spacing:-.01em;margin-bottom:6px}
.mkt-frame .md{display:block;font-size:12.5px;line-height:1.6;color:#8a8a8a}
.mkt-src{margin-top:26px;font-size:11px;line-height:1.6;color:#9E9E9E;letter-spacing:.02em}
@media(max-width:860px){.mkt-frame{grid-template-columns:1fr;gap:18px}}

/* ============ v51 ============ */
/* Certification block restyled to match the soft cards above it (img 4): rounded light panel,
   three evenly divided steps, no hard borders. Sits as a sibling below the two commercial cards. */
.acc-open{border:0;border-radius:18px;background:var(--bg2);padding:30px 34px 8px;margin-top:26px}
.alt .acc-open{background:#fff}
.acc-open .acc-title{padding:0 0 8px;font-size:19px;font-weight:700;line-height:1.3;color:var(--ink)}
.acc-open .steps3{border-top:0;grid-template-columns:repeat(3,1fr);gap:34px}
.acc-open .steps3>div{border:0;padding:14px 0 26px}
@media(max-width:860px){.acc-open .steps3{grid-template-columns:1fr;gap:6px}}

/* ============ v52 ============ */
/* Four comparison cards: kicker, bold title, and body each sit on shared rows via subgrid,
   so all three layers stay level at any width (img 16-2). Graceful fallback where unsupported. */
/* .cmp is a flex swipe row, so shared-height zones do the leveling: the kicker zone fits its
   tallest (three lines), the title zone fits two lines, and the three layers stay parallel. */
#compare .cmp .k{min-height:56px}
#compare .cmp h4{min-height:46px}
@media(max-width:560px){#compare .cmp .k{min-height:0}#compare .cmp h4{min-height:0}}
