/* J2B Industrial v2
   General Sans (display, 400/500) and Switzer (text). Black field, bone paper, steel greys.
   Red is reserved for the mark and one live signal per view. */

@font-face{font-family:"GS";src:url(/fonts/GeneralSans-400.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"GS";src:url(/fonts/GeneralSans-500.woff2) format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:"SW";src:url(/fonts/switzer-400.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"SW";src:url(/fonts/switzer-500.woff2) format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:"SW";src:url(/fonts/switzer-600.woff2) format("woff2");font-weight:600;font-display:swap}

:root{
  --k0:#08090a; --k1:#0f1112; --k2:#16191b; --k3:#202427;
  --w0:#f3f2ee; --w1:#e9e7e1; --w2:#d8d5cd;
  --t-hi:#efeee9; --t-md:#a9adb1; --t-lo:#7d8286;
  --p-hi:#131415; --p-md:#4b4f53; --p-lo:#63676b;
  --red:#e21e24; --red-d:#b3151a; --red-t:#ea3a40;
  --ln:rgba(239,238,233,.12); --ln2:rgba(239,238,233,.24);
  --pl:rgba(19,20,21,.12); --pl2:rgba(19,20,21,.26);
  --disp:"GS",ui-sans-serif,system-ui,sans-serif;
  --text:"SW",ui-sans-serif,system-ui,sans-serif;
  --m:clamp(16px,4.2vw,72px);
  --ease:cubic-bezier(.22,.7,.12,1);
  --hh:72px;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--k0);color:var(--t-hi);font:400 17px/1.62 var(--text);-webkit-font-smoothing:antialiased;overflow-x:hidden;font-variant-numeric:tabular-nums}
img,svg,video{display:block;max-width:100%}
figure{margin:0}
a{color:inherit}
button{font:inherit;color:inherit}
::selection{background:var(--red);color:#fff}
.skip{position:absolute;left:-9999px}.skip:focus{left:16px;top:16px;z-index:200;background:var(--red);color:#fff;padding:10px 14px}
:focus-visible{outline:2px solid var(--red);outline-offset:3px}
p{margin:0 0 1em}
.m{padding-left:var(--m);padding-right:var(--m)}
.mx{max-width:1680px;margin-left:auto;margin-right:auto}

/* type scale */
.h0,.h1,.h2,.h3,.h4{font-family:var(--disp);font-weight:400;margin:0;letter-spacing:-.035em}
.h0{font-size:clamp(46px,7.6vw,132px);line-height:.98;letter-spacing:-.045em}
.h1{font-size:clamp(40px,5.6vw,96px);line-height:1}
.h2{font-size:clamp(32px,3.9vw,64px);line-height:1.04}
.h3{font-size:clamp(24px,2.3vw,36px);line-height:1.1;letter-spacing:-.025em}
.h4{font-size:clamp(19px,1.45vw,22px);line-height:1.25;letter-spacing:-.012em;font-weight:500}
.body-lg{font-size:clamp(18px,1.42vw,22px);line-height:1.55;color:var(--t-md);max-width:44ch}
.small{font-size:14px;color:var(--t-lo)}
.w .body-lg{color:var(--p-md)}.w .small{color:var(--p-lo)}
.dim{color:var(--t-lo)}.w .dim{color:var(--p-lo)}
sup.fn{font-size:.52em;vertical-align:super;line-height:0;margin-left:2px}
sup.fn a{text-decoration:none;color:var(--t-lo)}
.w sup.fn a,.prose sup.fn a{color:var(--red-d);font-weight:600}
.w{background:var(--w0);color:var(--p-hi)}
.w1{background:var(--w1);color:var(--p-hi)}
.k1{background:var(--k1)}.k2{background:var(--k2)}

/* links + buttons */
.go{display:inline-flex;align-items:center;gap:14px;text-decoration:none;font:500 15px var(--text);letter-spacing:.005em;padding:0 0 6px;border-bottom:1px solid currentColor;white-space:nowrap}
.go i{display:inline-block;width:22px;height:1px;background:currentColor;position:relative;transition:width .35s var(--ease)}
.go i::after{content:"";position:absolute;right:0;top:-3px;width:7px;height:7px;border-top:1px solid currentColor;border-right:1px solid currentColor;transform:rotate(45deg)}
.go:hover i{width:34px}
.btn{display:inline-flex;align-items:center;gap:12px;height:52px;padding:0 24px;font:500 15px var(--text);text-decoration:none;border:1px solid var(--ln2);color:var(--t-hi);background:transparent;cursor:pointer;transition:background .25s,border-color .25s,color .25s;white-space:nowrap}
.btn:hover{border-color:var(--t-hi)}
.btn.solid{background:var(--t-hi);color:var(--k0);border-color:var(--t-hi)}
.btn.solid:hover{background:#fff}
.btn.red{background:var(--red);border-color:var(--red);color:#fff}
.btn.red:hover{background:var(--red-d);border-color:var(--red-d)}
.w .btn{border-color:var(--pl2);color:var(--p-hi)}
.w .btn.solid{background:var(--p-hi);color:var(--w0);border-color:var(--p-hi)}

/* header */
.hd{position:fixed;left:0;right:0;top:0;z-index:80;height:var(--hh);display:flex;align-items:center;transition:background .35s,border-color .35s,transform .35s;border-bottom:1px solid transparent}
.hd.solid,.hd.open{background:rgba(8,9,10,.92);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-color:var(--ln)}
.hd.hide{transform:translateY(-100%)}
.hd .in{display:flex;align-items:center;gap:30px;width:100%}
.hd .logo img{height:34px;width:auto}
.nv{display:flex;align-items:center;gap:4px;margin-left:24px}
.nv>a,.nv>.mm>button{font:500 14.5px var(--text);text-decoration:none;color:var(--t-md);padding:24px 12px;background:none;border:0;cursor:pointer;transition:color .2s;display:block}
.nv>a:hover,.nv>.mm>button:hover,.nv>a[aria-current],.nv>.mm.cur>button,.nv>.mm.on>button{color:var(--t-hi)}
.hd .rt{margin-left:auto;display:flex;align-items:center;gap:22px}
.hd .rt .tel{font-size:14px;text-decoration:none;color:var(--t-md)}
.hd .rt .tel:hover{color:var(--t-hi)}
.hd .btn{height:42px;padding:0 18px;font-size:14px}
.mp{position:fixed;left:0;right:0;top:var(--hh);background:var(--k1);border-bottom:1px solid var(--ln);display:none;z-index:79}
.mm.on .mp{display:block}
.mp .grid{display:grid;grid-template-columns:1.2fr repeat(3,1fr);gap:28px;padding-top:36px;padding-bottom:40px}
.mp a{text-decoration:none;display:block}
.mp .feat{position:relative;aspect-ratio:16/10;overflow:hidden}
.mp .feat img{width:100%;height:100%;object-fit:cover;transition:transform 1s var(--ease)}
.mp .feat:hover img{transform:scale(1.03)}
.mp .feat span{position:absolute;left:0;bottom:0;right:0;padding:18px 20px;background:linear-gradient(transparent,rgba(0,0,0,.72));font:500 20px var(--disp);letter-spacing:-.015em}
.mp .it{padding-top:6px;border-top:1px solid var(--ln)}
.mp .it b{display:block;font:500 18px var(--disp);letter-spacing:-.01em;margin:12px 0 6px}
.mp .it span{font-size:14px;color:var(--t-lo);line-height:1.5;display:block}
.mp .it:hover b{color:#fff}
.burg{display:none;margin-left:auto;width:46px;height:46px;border:1px solid var(--ln2);background:none;cursor:pointer;align-items:center;justify-content:center}
.burg i{display:block;width:18px;height:1.5px;background:#fff;box-shadow:0 -6px 0 #fff,0 6px 0 #fff}
@media (max-width:1180px){.nv,.hd .rt{display:none}.burg{display:flex}}
.mob{position:fixed;inset:0;z-index:120;background:var(--k0);overflow:auto;display:none;padding:0 var(--m) 40px}
.mob.open{display:block}
.mob .top{position:sticky;top:0;background:var(--k0);display:flex;justify-content:space-between;align-items:center;height:var(--hh);z-index:2}
.mob .top img{height:30px;width:auto}
.mob .x{width:46px;height:46px;border:1px solid var(--ln2);background:none;font-size:24px;cursor:pointer}
.mob a{display:block;text-decoration:none;font:400 28px var(--disp);letter-spacing:-.025em;padding:13px 0;border-bottom:1px solid var(--ln)}
.mob a.s{font:400 17px var(--text);letter-spacing:0;color:var(--t-md);padding-left:16px}
.mob .btn{margin-top:28px;width:100%;justify-content:center;height:58px;border-bottom:0}

/* hero film */
.film{position:relative;height:100svh;min-height:640px;overflow:hidden;background:var(--k0)}
.film .fr{position:absolute;inset:0;opacity:0;transition:opacity 1.8s ease}
.film .fr.on{opacity:1}
.film .fr img,.film video{width:100%;height:100%;object-fit:cover;filter:brightness(.72) contrast(1.06) saturate(.9)}
.film .fr.on img{animation:drift 9s linear forwards}
@keyframes drift{from{transform:scale(1.06)}to{transform:scale(1)}}
.film::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,9,10,.6) 0,rgba(8,9,10,0) 20%,rgba(8,9,10,.15) 38%,rgba(8,9,10,.82) 70%,var(--k0) 100%),linear-gradient(90deg,rgba(8,9,10,.55),rgba(8,9,10,0) 60%)}
.film .cap{position:absolute;left:0;right:0;bottom:0;z-index:2;padding-bottom:clamp(28px,5vh,56px)}
.film .cap .row{display:grid;grid-template-columns:1fr auto;gap:40px;align-items:end}
.film h1{max-width:15ch}
.film .side{max-width:360px;padding-bottom:10px}
.film .side p{color:var(--t-md);font-size:16px}
.film .side .acts{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}
.film .meta{display:flex;gap:0;border-top:1px solid var(--ln2);margin-top:clamp(28px,4vh,48px)}
.film .meta div{flex:1;padding:16px 20px 0 0;font-size:13.5px;color:var(--t-md);line-height:1.45}
.film .meta div+div{padding-left:20px;border-left:1px solid var(--ln)}
.film .meta b{display:block;color:var(--t-hi);font:500 15px var(--text);margin-bottom:2px}
.film .dots{position:absolute;right:var(--m);top:calc(var(--hh) + 28px);z-index:2;display:flex;gap:6px}
.film .dots i{width:26px;height:2px;background:var(--ln2);position:relative;overflow:hidden}
.film .dots i.on::after{content:"";position:absolute;inset:0;background:var(--t-hi);animation:bar 6s linear forwards}
@keyframes bar{from{transform:translateX(-100%)}to{transform:none}}
@media (prefers-reduced-motion:reduce){.film .fr.on img{animation:none}.film .dots{display:none}}
@media (max-width:900px){.film .cap .row{grid-template-columns:1fr}.film .meta{flex-wrap:wrap}.film .meta div{flex:1 1 50%;border-left:0!important;padding-left:0!important;padding-bottom:12px}}

/* interior opener variants */
.op{padding-top:calc(var(--hh) + clamp(56px,9vh,120px));padding-bottom:clamp(40px,6vh,72px)}
.op .trail{font-size:13.5px;color:var(--t-lo);margin-bottom:clamp(28px,4vh,48px)}
.op .trail a{color:var(--t-md)}.op .trail a:hover{color:var(--t-hi)}
/* breadcrumb links carry a fine underline so they are not told apart by colour alone */
.trail a{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px;text-decoration-color:color-mix(in srgb,currentColor 45%,transparent)}
.w .op .trail,.op.w .trail{color:var(--p-lo)}.op.w .trail a{color:var(--p-md)}
.op-bleed{position:relative;height:88svh;min-height:600px;overflow:hidden}
.op-bleed>img,.op-bleed>video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:brightness(.66) contrast(1.06) saturate(.9)}
.op-bleed::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,9,10,.6),rgba(8,9,10,0) 24%,rgba(8,9,10,.3) 48%,rgba(8,9,10,.92)),linear-gradient(90deg,rgba(8,9,10,.6),rgba(8,9,10,0) 65%)}
.op-bleed .cap{position:absolute;left:0;right:0;bottom:0;z-index:2;padding-bottom:clamp(32px,6vh,64px)}
.op-bleed .trail{font-size:13.5px;color:var(--t-md);margin-bottom:22px}
.op-bleed .trail a:hover{color:var(--t-hi)}

/* generic section spacing */
.sx{padding-top:clamp(88px,12vw,200px);padding-bottom:clamp(88px,12vw,200px)}
.sm{padding-top:clamp(64px,8vw,128px);padding-bottom:clamp(64px,8vw,128px)}

/* context band: long-form statement with footnoted data */
.ctx{display:grid;grid-template-columns:repeat(12,1fr);gap:0 clamp(16px,2vw,32px)}
.ctx .lead{grid-column:1/10;font:400 clamp(26px,2.9vw,48px)/1.2 var(--disp);letter-spacing:-.028em;margin:0}
.ctx .lead .q{color:var(--t-lo)}
.w .ctx .lead .q{color:var(--p-lo)}
.ctx .stats{grid-column:1/13;display:grid;grid-template-columns:repeat(4,1fr);margin-top:clamp(56px,7vw,110px);border-top:1px solid var(--ln2)}
.w .ctx .stats{border-color:var(--pl2)}
.ctx .stat{padding:22px 24px 0 0}
.ctx .stat+.stat{padding-left:24px;border-left:1px solid var(--ln)}
.w .ctx .stat+.stat{border-color:var(--pl)}
.ctx .stat b{display:block;font:400 clamp(38px,4.2vw,68px)/1 var(--disp);letter-spacing:-.04em;margin-bottom:14px}
.ctx .stat span{font-size:14.5px;line-height:1.5;color:var(--t-md);display:block;max-width:30ch}
.w .ctx .stat span{color:var(--p-md)}
.ctx .stat cite{display:block;font-style:normal;font-size:12.5px;color:var(--t-lo);margin-top:10px}
.w .ctx .stat cite{color:var(--p-lo)}
@media (max-width:1000px){.ctx .lead{grid-column:1/13}.ctx .stats{grid-template-columns:1fr 1fr}.ctx .stat:nth-child(3){border-left:0;padding-left:0}.ctx .stat:nth-child(n+3){margin-top:28px}}
@media (max-width:520px){.ctx .stats{grid-template-columns:1fr}.ctx .stat{border-left:0!important;padding-left:0!important;margin-top:24px}}

/* scrollytelling: sticky figure, stepping text */
.sty{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(32px,5vw,96px)}
.sty .stage{position:sticky;top:calc(var(--hh) + 24px);height:calc(100svh - var(--hh) - 48px);min-height:520px;display:flex;flex-direction:column}
.sty .stage .shot{position:relative;flex:1;overflow:hidden;background:var(--k2)}
.sty .stage .shot img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .8s ease}
.sty .stage .shot img.on{opacity:1}
.sty .stage .dia{margin-top:14px;border:1px solid var(--ln);padding:12px 14px;background:var(--k1)}
.sty .steps{padding:18vh 0 26vh}
.sty .step{min-height:62vh;display:flex;flex-direction:column;justify-content:center;opacity:.28;transition:opacity .5s}
.sty .step.on{opacity:1}
.sty .step .tag{font:500 13px var(--text);color:var(--t-lo);margin-bottom:14px;display:block}
.sty .step.on .tag{color:var(--red-t)}
.sty .step h3{margin-bottom:16px}
.sty .step p{color:var(--t-md);max-width:46ch}
.sty .step ul{list-style:none;padding:0;margin:18px 0 0;font-size:15px;color:var(--t-md)}
.sty .step li{padding:9px 0;border-top:1px solid var(--ln)}
@media (max-width:980px){.sty{grid-template-columns:1fr}.sty .stage{position:relative;top:0;height:auto;min-height:0}.sty .stage .shot{aspect-ratio:4/3;flex:none}.sty .steps{padding:24px 0}.sty .step{min-height:0;opacity:1;padding:26px 0;border-top:1px solid var(--ln)}}

/* schematic (compact, used inside stage) */
.pfd{width:100%;height:auto}
.pfd .pipe{stroke:var(--t-lo);stroke-width:2;fill:none}
.pfd .flow{stroke:var(--red);stroke-width:2;fill:none;stroke-dasharray:5 12;animation:flow 1.4s linear infinite}
@keyframes flow{to{stroke-dashoffset:-34}}
.pfd .sym{stroke:var(--t-md);stroke-width:1.5;fill:var(--k1);transition:stroke .3s,fill .3s}
.pfd .n.on .sym{stroke:#fff;fill:var(--k3)}
.pfd text{fill:var(--t-lo);font:500 10.5px var(--text)}
.pfd .n.on text{fill:var(--t-hi)}
@media (prefers-reduced-motion:reduce){.pfd .flow{animation:none}}

/* typographic index with cursor image */
.idx{border-top:1px solid var(--ln2);position:relative}
.w .idx{border-color:var(--pl2)}
.idx a{display:grid;grid-template-columns:1fr 1.2fr 160px;align-items:center;gap:32px;padding:clamp(22px,2.6vw,38px) 0;border-bottom:1px solid var(--ln);text-decoration:none;position:relative;transition:padding .45s var(--ease)}
.w .idx a{border-color:var(--pl)}
.idx a .t{font:400 clamp(30px,3.8vw,62px)/1 var(--disp);letter-spacing:-.035em;transition:color .3s}
.idx a .d{color:var(--t-md);font-size:15.5px;max-width:48ch}
.w .idx a .d{color:var(--p-md)}
.idx a .r{justify-self:end;font-size:13.5px;color:var(--t-lo);display:flex;align-items:center;gap:12px}
.w .idx a .r{color:var(--p-lo)}
.idx a .r i{width:26px;height:1px;background:currentColor;display:inline-block;transition:width .35s var(--ease)}
.idx a:hover{padding-left:18px}
.idx a:hover .r i{width:44px}
.idx a:hover .r{color:var(--t-hi)}
.w .idx a:hover .r{color:var(--p-hi)}
.idx .peek{position:fixed;left:0;top:0;width:340px;aspect-ratio:4/3;pointer-events:none;z-index:40;opacity:0;transform:translate(-50%,-50%) scale(.9);transition:opacity .25s,transform .35s var(--ease);overflow:hidden}
.idx .peek.on{opacity:1;transform:translate(-50%,-50%) scale(1)}
.idx .peek img{width:100%;height:100%;object-fit:cover}
@media (hover:none),(max-width:900px){.idx .peek{display:none}.idx a{grid-template-columns:1fr;gap:10px}.idx a .r{justify-self:start}}

/* horizontal gallery */
.hg{overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;cursor:grab}
.hg::-webkit-scrollbar{display:none}
.hg .track{display:flex;gap:clamp(10px,1vw,16px);padding-left:var(--m);padding-right:var(--m);width:max-content}
.hg figure{scroll-snap-align:start;width:clamp(280px,34vw,560px);flex:none}
.hg figure.tall{width:clamp(220px,22vw,380px)}
.hg .pic{aspect-ratio:4/3;overflow:hidden;background:var(--k2)}
.hg figure.tall .pic{aspect-ratio:3/4}
.hg .pic img{width:100%;height:100%;object-fit:cover}
.hg figcaption{display:flex;justify-content:space-between;gap:16px;padding-top:12px;font-size:14px;color:var(--t-md)}
.w .hg figcaption{color:var(--p-md)}
.hg figcaption span:last-child{color:var(--t-lo)}
.hg-ctl{display:flex;gap:8px}
.hg-ctl button{width:48px;height:48px;border:1px solid var(--ln2);background:none;cursor:pointer;font-size:18px}
.w .hg-ctl button{border-color:var(--pl2)}
.hg-ctl button:hover{border-color:currentColor}

/* sequence (5 phases) as a wide timeline */
.seq{display:grid;grid-template-columns:repeat(5,1fr);border-top:1px solid var(--pl2);counter-reset:s}
.seq .ph{padding:26px 26px 0 0;position:relative}
.seq .ph+.ph{padding-left:26px;border-left:1px solid var(--pl)}
.seq .ph::before{counter-increment:s;content:"0" counter(s);font:500 13px var(--text);color:var(--p-lo);display:block;margin-bottom:34px}
.seq .ph.key::before{color:var(--red)}
.seq .ph h3{margin-bottom:14px}
.seq .ph p{font-size:15px;color:var(--p-md);line-height:1.55}
.seq .ph .gate{display:block;margin-top:16px;padding-top:12px;border-top:1px solid var(--pl);font-size:13px;color:var(--p-lo)}
.seq.dk{border-color:var(--ln2)}.seq.dk .ph+.ph{border-color:var(--ln)}.seq.dk .ph p{color:var(--t-md)}.seq.dk .ph::before,.seq.dk .ph .gate{color:var(--t-lo)}.seq.dk .ph .gate{border-color:var(--ln)}
@media (max-width:1000px){.seq{grid-template-columns:1fr}.seq .ph,.seq .ph+.ph{padding:24px 0;border-left:0;border-bottom:1px solid var(--pl)}.seq.dk .ph{border-color:var(--ln)}.seq .ph::before{margin-bottom:12px}}

/* production line (from v1, refined) */
.line{position:relative}
.line .stick{padding-top:clamp(88px,10vw,168px);padding-bottom:clamp(88px,10vw,168px)}
.line .top{display:flex;justify-content:space-between;align-items:end;gap:32px;flex-wrap:wrap;margin-bottom:clamp(24px,4vh,48px)}
.line .count{font:400 clamp(64px,9vw,150px)/.85 var(--disp);letter-spacing:-.05em;text-align:right}
.line .count span{color:var(--t-lo)}
.line .count small{display:block;font:400 13.5px var(--text);letter-spacing:0;color:var(--t-lo);margin-top:12px}
.stations{display:grid;grid-template-columns:repeat(8,1fr);border-top:1px solid var(--ln);border-bottom:1px solid var(--ln)}
.st{padding:16px 12px 14px;border-left:1px solid var(--ln);position:relative;transition:background .3s}
.st:first-child{border-left:0}
.st .sn{font:500 12px var(--text);color:var(--t-lo)}
.st .sl{display:block;font:500 clamp(14px,1.1vw,16px)/1.2 var(--text);margin:4px 0 12px;min-height:2.4em}
.st svg{width:100%;height:auto;color:var(--t-hi)}
.st .serial{margin-top:8px;font-size:12px;color:var(--t-lo)}
.st.act{background:var(--k2)}
.st.act::after{content:"";position:absolute;left:0;right:0;top:-1px;height:2px;background:var(--red)}
.st.act .sn{color:var(--red)}
.skid .s-ghost{opacity:.16}
.line .rail{height:1px;background:var(--ln);margin-top:24px;position:relative}
.line .rail i{position:absolute;left:0;top:-.5px;height:2px;width:0;background:var(--t-hi)}
.line .note{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-top:14px;font-size:13px;color:var(--t-lo)}
@media (max-width:900px){.line .stick{padding:96px 0}.stations{grid-template-columns:repeat(4,1fr)}.st:nth-child(5){border-left:0}.st:nth-child(n+5){border-top:1px solid var(--ln)}.line .count{text-align:left}}
@media (max-width:480px){.stations{grid-template-columns:1fr 1fr}.st:nth-child(odd){border-left:0}.st:nth-child(n+3){border-top:1px solid var(--ln)}}

/* spec sheet table */
.spec{width:100%;border-collapse:collapse;font-size:15.5px}
.spec th,.spec td{text-align:left;vertical-align:top;padding:16px 20px 16px 0;border-top:1px solid var(--ln)}
.w .spec th,.w .spec td{border-color:var(--pl)}
.spec th{font:500 15px var(--text);width:32%;color:var(--t-hi)}
.w .spec th{color:var(--p-hi)}
.spec td{color:var(--t-md)}
.w .spec td{color:var(--p-md)}
.spec tr:last-child th,.spec tr:last-child td{border-bottom:1px solid var(--ln)}
.w .spec tr:last-child th,.w .spec tr:last-child td{border-color:var(--pl)}
@media (max-width:640px){.spec th,.spec td{display:block;width:auto;padding:4px 0}.spec th{padding-top:16px}.spec td{border-top:0;padding-bottom:14px}}

/* two-column layout primitives (used sparingly) */
.cols{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(20px,2.4vw,40px)}
.c-1-5{grid-column:1/6}.c-6-13{grid-column:6/13}.c-7-13{grid-column:7/13}.c-1-7{grid-column:1/7}.c-1-8{grid-column:1/8}.c-8-13{grid-column:8/13}.c-1-13{grid-column:1/13}.c-3-11{grid-column:3/11}.c-5-13{grid-column:5/13}.c-1-4{grid-column:1/4}.c-4-13{grid-column:4/13}.c-9-13{grid-column:9/13}.c-1-9{grid-column:1/9}.c-1-10{grid-column:1/10}.c-1-6{grid-column:1/6}
@media (max-width:980px){.cols>*{grid-column:1/13!important}}

/* full-bleed plate with overlaid ledger */
.plate{position:relative;min-height:92svh;overflow:hidden;display:flex;align-items:flex-end}
.plate>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:brightness(.8)}
.plate::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(8,9,10,.88) 0,rgba(8,9,10,.55) 42%,rgba(8,9,10,0) 72%),linear-gradient(0deg,rgba(8,9,10,.7),transparent 40%)}
.plate .in{position:relative;z-index:2;width:100%;padding-bottom:clamp(40px,7vh,88px)}
.plate .in .body-lg{color:var(--t-md)}
.led{margin-top:36px;max-width:620px;border-top:1px solid var(--ln2)}
.led div{display:grid;grid-template-columns:minmax(80px,170px) minmax(0,1fr);gap:20px;padding:13px 0;border-bottom:1px solid var(--ln);font-size:15px}
.led dt,.led div>span:first-child{color:var(--t-lo)}
.led dt,.led dd{margin:0;font-weight:inherit}
@media (max-width:600px){.led div{grid-template-columns:1fr;gap:2px}}

/* gates rail (quality 14) */
.gates{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(7,1fr);border-top:1px solid var(--pl2)}
.gates li{padding:18px 16px 22px 0;border-bottom:1px solid var(--pl);position:relative;font-size:14.5px;line-height:1.35}
.gates li:nth-child(7n+1){padding-left:0}
.gates li+li{padding-left:16px}
.gates li:nth-child(7n+1){padding-left:0}
.gates li b{display:block;font:500 12.5px var(--text);color:var(--p-lo);margin-bottom:20px}
.gates li.hold b{color:var(--red-d)}
.gates li.hold::before{content:"";position:absolute;top:-1px;left:0;right:16px;height:2px;background:var(--red)}
@media (max-width:1000px){.gates{grid-template-columns:repeat(2,1fr)}.gates li,.gates li+li{padding-left:0}}

/* nameplate object */
.np{background:linear-gradient(135deg,#dfe1e2,#b7babd 45%,#e6e7e8 62%,#aeb1b4);color:#18191a;padding:30px 32px 26px;position:relative;max-width:520px;box-shadow:0 30px 80px rgba(0,0,0,.35),inset 0 0 0 1px rgba(0,0,0,.18)}
.np::before,.np::after{content:"";position:absolute;top:14px;width:10px;height:10px;border-radius:50%;background:#8b8e91;box-shadow:inset 0 1px 1px rgba(0,0,0,.5)}
.np::before{left:14px}.np::after{right:14px}
.np img{height:36px;width:auto;margin:0 auto 18px}
.np dl{display:grid;grid-template-columns:auto 1fr;gap:7px 18px;margin:0;font-size:13.5px}
.np dt{font-weight:600;color:#3c3e40}.np dd{margin:0}
.np .f{font-size:11.5px;color:#4c4e50;text-align:center;margin-top:16px}

/* article (insights) */
.art{display:grid;grid-template-columns:260px minmax(0,720px);gap:clamp(32px,5vw,96px);justify-content:center}
.art aside{position:sticky;top:calc(var(--hh) + 32px);align-self:start;font-size:14px;color:var(--p-lo)}
.art aside b{display:block;color:var(--p-hi);font-weight:500;margin:18px 0 6px}
.art aside a{display:block;text-decoration:none;padding:5px 0;color:var(--p-md)}
.art aside a:hover{color:var(--p-hi)}
.prose{font-size:18px;line-height:1.72;color:#2c2f32}
.prose h2{font:400 clamp(28px,2.4vw,38px)/1.12 var(--disp);letter-spacing:-.028em;color:var(--p-hi);margin:2.2em 0 .7em}
.prose h3{font:500 21px/1.3 var(--disp);color:var(--p-hi);margin:1.8em 0 .5em;letter-spacing:-.01em}
.prose p{margin:0 0 1.15em}
.prose ul,.prose ol{padding-left:1.2em;margin:0 0 1.2em}
.prose li{margin-bottom:.45em}
.prose table{width:100%;border-collapse:collapse;font-size:15.5px;margin:1.4em 0 1.8em}
.prose th,.prose td{text-align:left;padding:11px 14px 11px 0;border-top:1px solid var(--pl);vertical-align:top}
.prose th{font-weight:600;color:var(--p-hi)}
.prose .callout{border-left:2px solid var(--red);padding:4px 0 4px 20px;margin:1.6em 0;color:var(--p-md)}
.prose a{color:var(--p-hi);text-decoration-thickness:1px;text-underline-offset:3px}
.prose .refs{font-size:14.5px;color:var(--p-md);border-top:1px solid var(--pl2);margin-top:3em;padding-top:1.4em}
.prose .refs li{margin-bottom:.7em;word-break:break-word}
@media (max-width:1000px){.art{grid-template-columns:1fr}.art aside{position:static}}

/* insight cards list (not boxed) */
.ins{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,2.4vw,40px)}
.ins a{text-decoration:none;display:block}
.ins .pic{aspect-ratio:16/10;overflow:hidden;background:var(--w2);margin-bottom:18px}
.ins .pic img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease)}
.ins a:hover .pic img{transform:scale(1.03)}
.ins .k{font-size:13px;color:var(--p-lo);display:block;margin-bottom:10px}
.ins h3{margin-bottom:10px}
.ins p{font-size:15px;color:var(--p-md)}
.k1 .ins .k,.k0 .ins .k{color:var(--t-lo)}
@media (max-width:980px){.ins{grid-template-columns:1fr}}

/* glossary */
.gl{columns:2;column-gap:clamp(32px,5vw,80px)}
.gl div{break-inside:avoid;padding:18px 0;border-top:1px solid var(--pl)}
.gl dt{font:500 18px var(--disp);color:var(--p-hi);letter-spacing:-.01em;margin-bottom:6px}
.gl dd{margin:0;color:var(--p-md);font-size:15.5px}
@media (max-width:800px){.gl{columns:1}}

/* forms */
.fm{display:grid;grid-template-columns:1fr 1fr;gap:18px 20px}
.fm .full{grid-column:1/-1}
.fm label{display:flex;flex-direction:column;gap:8px;font:500 13.5px var(--text);color:var(--t-md)}
.fm input,.fm select,.fm textarea{font:400 16px var(--text);color:var(--t-hi);background:transparent;border:0;border-bottom:1px solid var(--ln2);padding:12px 0;border-radius:0;-webkit-appearance:none;appearance:none;width:100%}
.fm select option{background:var(--k1)}
.fm textarea{min-height:120px;resize:vertical;border:1px solid var(--ln2);padding:12px}
.fm input:focus,.fm select:focus,.fm textarea:focus{outline:none;border-color:var(--t-hi)}
.fm .opts{display:flex;flex-wrap:wrap;gap:8px}
.fm .opts label{display:block}
.fm .opts input{position:absolute;opacity:0;pointer-events:none;width:auto}
.fm .opts span{display:inline-block;padding:10px 15px;border:1px solid var(--ln2);font:400 14.5px var(--text);color:var(--t-md);cursor:pointer}
.fm .opts input:checked+span{background:var(--t-hi);color:var(--k0);border-color:var(--t-hi)}
.fm .opts input:focus-visible+span{outline:2px solid var(--red);outline-offset:2px}
.fm .lbl{font:500 13.5px var(--text);color:var(--t-md);display:block;margin-bottom:10px}
.fm-note{font-size:13px;color:var(--t-lo);margin-top:14px}
.ok{display:none;margin-top:20px;padding:18px 20px;border:1px solid var(--ln2)}
.ok.show{display:block}
.ok.err{border-color:var(--red)}
.ok b{font-weight:500;color:var(--t-hi)}
.ok a,.fm-note a{color:var(--t-hi);text-underline-offset:3px}
.fm .hp{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}
.fm button[disabled]{opacity:.6;cursor:progress}
@media (max-width:640px){.fm{grid-template-columns:1fr}}

/* closing */
.close{position:relative;overflow:hidden}
.close .bg{position:absolute;inset:0}
.close .bg img{width:100%;height:100%;object-fit:cover;opacity:.28}
.close .bg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,var(--k0),rgba(8,9,10,.6) 40%,var(--k0))}
.close .in{position:relative}

/* footer */
.ft{background:var(--k0);border-top:1px solid var(--ln);padding-top:clamp(64px,8vw,120px);padding-bottom:28px;font-size:14.5px;color:var(--t-md)}
.ft .top{display:grid;grid-template-columns:1.5fr repeat(4,1fr);gap:32px}
.ft .top img{height:40px;width:auto;margin-bottom:22px}
.ft h2{font:500 13px var(--text);color:var(--t-lo);margin:0 0 16px;letter-spacing:0;text-wrap:wrap}
.ft ul{list-style:none;margin:0;padding:0}
.ft li{margin-bottom:10px}
.ft a{text-decoration:none}.ft a:hover{color:var(--t-hi)}
.ft address{font-style:normal;line-height:1.75}
.ft .sig{font:400 clamp(36px,6vw,104px)/.95 var(--disp);letter-spacing:-.045em;color:var(--t-hi);margin:clamp(64px,8vw,120px) 0 28px}
.ft .sig span{color:var(--t-lo);display:block}
.ft .bot span{display:flex;flex-wrap:wrap;gap:4px 14px}
.ft .bot{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;border-top:1px solid var(--ln);padding-top:22px;font-size:13px;color:var(--t-lo)}
@media (max-width:980px){.ft .top{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.ft .top{grid-template-columns:1fr}}

/* reveal */
.rv{opacity:0;transform:translateY(26px);transition:opacity 1s var(--ease),transform 1s var(--ease)}
.rv.in{opacity:1;transform:none}
.no-js .rv{opacity:1;transform:none}
.no-js .sty .step{opacity:1}
@media (prefers-reduced-motion:reduce){.rv{opacity:1;transform:none;transition:none}}

/* utility */
.mt-s{margin-top:18px}.mt-m{margin-top:clamp(28px,3vw,44px)}.mt-l{margin-top:clamp(48px,6vw,96px)}
.flex-end{display:flex;justify-content:space-between;align-items:end;gap:32px;flex-wrap:wrap}
.ph-img{overflow:hidden;background:var(--k2)}.ph-img img{width:100%;height:100%;object-fit:cover}
.ar-43{aspect-ratio:4/3}.ar-34{aspect-ratio:3/4}.ar-169{aspect-ratio:16/9}.ar-21{aspect-ratio:21/9}
.hide-s{}
@media (max-width:760px){.hide-s{display:none}}

/* label voice: captions, figure numbers, data labels (not section eyebrows) */
.lab{font:500 11.5px/1.3 var(--text);letter-spacing:.09em;text-transform:uppercase;color:var(--t-lo)}
.w .lab,.w1 .lab{color:var(--p-lo)}
.clk{white-space:nowrap}
.clk b{color:var(--t-md);font-weight:500}

/* hero rail of product lines (links) */
.film .meta a{flex:1;text-decoration:none;padding:16px 20px 2px 0;font-size:13.5px;color:var(--t-md);line-height:1.45;position:relative;transition:color .25s}
.film .meta a+a{padding-left:20px;border-left:1px solid var(--ln)}
.film .meta a b{display:block;color:var(--t-hi);font:500 15px var(--text);margin:8px 0 2px}
.film .meta a::before{content:"";position:absolute;left:0;right:0;top:-1px;height:2px;background:transparent;transition:background .3s}
.film .meta a:hover::before{background:var(--t-hi)}
.film .meta a.flag::before{background:var(--red)}
.film .meta a:hover{color:var(--t-hi)}
.film .fig{position:absolute;right:var(--m);top:calc(var(--hh) + 26px);z-index:2;text-align:right}
@media (max-width:900px){.film .meta{flex-wrap:wrap}.film .meta a{flex:1 1 50%;border-left:0!important;padding-left:0!important;padding-bottom:12px}.film .fig{display:none}}

/* sticky section index */
.sidx{position:sticky;top:0;z-index:60;background:rgba(8,9,10,.9);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--ln);transition:top .35s}
.hd:not(.hide)~main .sidx{top:var(--hh)}
.sidx .in{display:flex;gap:26px;overflow-x:auto;scrollbar-width:none;height:46px;align-items:center}
.sidx .in::-webkit-scrollbar{display:none}
.sidx a{text-decoration:none;white-space:nowrap;position:relative;padding-left:14px}
.sidx a::before{content:"";position:absolute;left:0;top:50%;width:6px;height:6px;margin-top:-3px;border:1px solid var(--t-lo);border-radius:50%}
.sidx a.on{color:var(--t-hi)}
.sidx a.on::before{background:var(--red);border-color:var(--red)}

/* bento of product lines */
.bento{display:grid;grid-template-columns:repeat(12,1fr);gap:8px}
.bento a{position:relative;display:block;overflow:hidden;text-decoration:none;background:var(--k2);min-height:clamp(320px,34vw,560px)}
.bento a:nth-child(1){grid-column:span 7}.bento a:nth-child(2){grid-column:span 5}.bento a:nth-child(3){grid-column:span 5}.bento a:nth-child(4){grid-column:span 7}
.bento img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 1.4s var(--ease)}
.bento a::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,9,10,.5),rgba(8,9,10,0) 30%,rgba(8,9,10,0) 50%,rgba(8,9,10,.82))}
.bento a:hover img{transform:scale(1.035)}
.bento .ix{position:absolute;left:24px;top:22px;z-index:2;color:var(--t-md)}
.bento .nm{position:absolute;left:24px;right:24px;bottom:22px;z-index:2}
.bento .nm b{display:block;font:400 clamp(26px,2.6vw,40px)/1.05 var(--disp);letter-spacing:-.03em;color:var(--t-hi)}
.bento .nm span{display:block;margin-top:10px;font-size:14.5px;color:var(--t-md);max-width:46ch;opacity:.0;transform:translateY(6px);transition:opacity .4s,transform .4s var(--ease)}
.bento a:hover .nm span,.bento a:focus-visible .nm span{opacity:1;transform:none}
@media (hover:none){.bento .nm span{opacity:1;transform:none}}
@media (max-width:900px){.bento a{grid-column:1/13!important;min-height:300px}}

/* numbered figure plates */
.figs{display:grid;grid-template-columns:repeat(12,1fr);gap:8px}
.figs figure{position:relative;display:flex;flex-direction:column}
.figs .a{grid-column:1/9;grid-row:span 2}
.figs .b,.figs .c{grid-column:9/13}
.figs .b .pic,.figs .c .pic{flex:none}
.figs .pic{overflow:hidden;background:var(--k2);flex:1}
.figs .a .pic{aspect-ratio:auto;min-height:clamp(360px,40vw,660px)}
.figs .b .pic,.figs .c .pic{aspect-ratio:4/3}
.figs img{width:100%;height:100%;object-fit:cover}
.figs figcaption{padding:10px 0 0}
.figs .row2{grid-column:1/13;display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:22px}
.figs .row2 .pic{aspect-ratio:4/3}
@media (max-width:900px){.figs .a,.figs .b,.figs .c{grid-column:1/13}.figs .a .pic{min-height:0;aspect-ratio:4/3}.figs .row2{grid-template-columns:1fr 1fr}}

/* FAQ */
.fq{border-top:1px solid var(--ln)}
.w .fq{border-color:var(--pl)}
.fq:last-of-type{border-bottom:1px solid var(--ln)}
.w .fq:last-of-type{border-color:var(--pl)}
.fq summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:24px;align-items:center;padding:24px 0;font:400 clamp(20px,1.7vw,26px)/1.25 var(--disp);letter-spacing:-.018em}
.fq summary::-webkit-details-marker{display:none}
.fq summary i{flex:none;width:16px;height:16px;position:relative}
.fq summary i::before,.fq summary i::after{content:"";position:absolute;left:0;right:0;top:7.5px;height:1px;background:currentColor;transition:transform .3s}
.fq summary i::after{transform:rotate(90deg)}
.fq[open] summary i::after{transform:none}
.fq p{max-width:70ch;color:var(--t-md);padding:0 0 26px;margin:0}
.w .fq p{color:var(--p-md)}

/* big figure strip (key facts) */
.kf{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--ln2)}
.kf div{padding:22px 24px 0 0}
.kf div+div{padding-left:24px;border-left:1px solid var(--ln)}
.kf b{display:block;font:400 clamp(30px,3.2vw,52px)/1.02 var(--disp);letter-spacing:-.035em;margin:14px 0 10px}
.kf span.s{display:block;font-size:14.5px;color:var(--t-md);max-width:32ch}
.w .kf{border-color:var(--pl2)}.w .kf div+div{border-color:var(--pl)}.w .kf span.s{color:var(--p-md)}
@media (max-width:900px){.kf{grid-template-columns:1fr 1fr}.kf div:nth-child(3){border-left:0;padding-left:0}.kf div:nth-child(n+3){margin-top:26px}}
@media (max-width:480px){.kf{grid-template-columns:1fr}.kf div{border-left:0!important;padding-left:0!important;margin-top:22px}}

/* full schematic (FGC page) */
.schem-wrap{border:1px solid var(--ln);background:var(--k1);overflow-x:auto;-webkit-overflow-scrolling:touch}
.schem{min-width:960px;padding:26px 24px 10px}
.schem svg{width:100%;height:auto}
.schem .node{cursor:pointer}
.schem .node .hit{fill:transparent}
.schem .node .sym{stroke:var(--t-hi);fill:var(--k1);stroke-width:1.5;transition:stroke .2s}
.schem .node text{fill:var(--t-md);font:500 12px var(--text)}
.schem .node text.tg{fill:var(--t-lo);font-weight:400;font-size:11px}
.schem .node:focus{outline:none}
.schem .node:focus-visible .sym{stroke:#fff}
.schem .node:hover .sym,.schem .node.on .sym{stroke:var(--red)}
.schem .node.on text{fill:#fff}
.schem .pipe{stroke:var(--t-lo);stroke-width:2;fill:none}
.schem .flow{stroke:var(--red);stroke-width:2;fill:none;stroke-dasharray:6 14;animation:flow 1.6s linear infinite}
.schem .sig{stroke:var(--t-lo);stroke-width:1;stroke-dasharray:3 4;fill:none}
.schem .lbl{fill:var(--t-lo);font:500 11.5px var(--text)}
.schem-info{display:grid;grid-template-columns:280px 1fr;gap:28px;padding:24px;border-top:1px solid var(--ln);min-height:140px}
.schem-info .tagno{display:block;margin-bottom:8px;color:var(--red)}
.schem-info p{color:var(--t-md);margin:0;max-width:70ch}
@media (max-width:700px){.schem-info{grid-template-columns:1fr;gap:8px}}

/* doc columns */
.docs{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(24px,3vw,48px)}
.docs h3{margin-bottom:14px}
.docs ul{list-style:none;padding:0;margin:0}
.docs li{padding:11px 0;border-top:1px solid var(--pl);font-size:15.5px;color:var(--p-md)}
.k1 .docs li,.docs.dk li{border-color:var(--ln);color:var(--t-md)}
@media (max-width:900px){.docs{grid-template-columns:1fr}}

/* process train diagram (water etc.) */
.train{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;border-top:1px solid var(--pl2);counter-reset:t}
.train div{padding:22px 20px 0 0;position:relative}
.train div+div{padding-left:20px;border-left:1px solid var(--pl)}
.train div::after{content:"";position:absolute;right:-5px;top:-5px;width:9px;height:9px;background:var(--w0);border:1px solid var(--p-hi);border-radius:50%;z-index:1}
.train div:last-child::after{display:none}
.train b{display:block;font:500 17px var(--disp);letter-spacing:-.01em;margin:12px 0 8px}
.train span.s{font-size:14.5px;color:var(--p-md);display:block}
@media (max-width:900px){.train{grid-auto-flow:row}.train div,.train div+div{padding:18px 0;border-left:0;border-bottom:1px solid var(--pl)}.train div::after{display:none}}

/* quality traveler */
.trav{position:relative}
.trav-rail{position:absolute;left:31px;top:0;bottom:0;width:1px;background:var(--pl2)}
.trav-rail i{position:absolute;left:-.5px;top:0;width:2px;height:0;background:var(--red)}
.trav .gate{display:grid;grid-template-columns:64px 1.1fr 1.4fr 1fr;gap:clamp(16px,2.5vw,44px);padding:26px 0;border-bottom:1px solid var(--pl);position:relative}
.trav .gate .g{width:64px;height:64px;border:1px solid var(--p-hi);background:var(--w0);display:flex;align-items:center;justify-content:center;font:400 20px var(--disp);position:relative;z-index:1;transition:background .3s,color .3s,border-color .3s}
.trav .gate.done .g{background:var(--p-hi);color:var(--w0)}
.trav .gate.hold .g{border-color:var(--red)}
.trav .gate.done.hold .g{background:var(--red);border-color:var(--red);color:#fff}
.trav .gate h3{margin-top:6px}
.trav .gate .ty{display:inline-block;margin-top:12px}
.trav .gate.hold .ty{color:var(--red-d)}
.trav .gate p{margin:6px 0 0;color:var(--p-md);font-size:15.5px}
.trav .gate .rec{font-size:15px;color:var(--p-md);padding-top:6px}
.trav .gate .rec .lab{display:block;margin-bottom:6px}
@media (max-width:900px){.trav .gate{grid-template-columns:64px 1fr}.trav .gate>div:nth-child(3),.trav .gate>div:nth-child(4){grid-column:2}}

/* program ledger (illustrative) */
.ledger{width:100%;border-collapse:collapse;font-size:14.5px}
.ledger th{font:500 11.5px var(--text);letter-spacing:.09em;text-transform:uppercase;color:var(--t-lo);text-align:left;padding:0 16px 12px 0;border-bottom:1px solid var(--ln2)}
.ledger td{padding:13px 16px 13px 0;border-bottom:1px solid var(--ln);color:var(--t-md);white-space:nowrap}
.ledger td:first-child{color:var(--t-hi)}
.ledger .st-ok{color:var(--t-hi)}
.ledger .st-live{color:var(--red)}
.ledger-wrap{overflow-x:auto}

/* site diagram (data centers) */
.dia-wrap{overflow-x:auto;border-top:1px solid var(--ln2);padding-top:28px}
.sitemap-svg{min-width:860px;width:100%;height:auto}
.sitemap-svg text{fill:var(--t-hi);font-weight:500}
.sitemap-svg text.s{fill:var(--t-lo);font-weight:400;font-size:12px}
.sitemap-svg .ext rect{fill:var(--k1);stroke:var(--ln2)}
.sitemap-svg .j2b rect{fill:rgba(226,30,36,.08);stroke:var(--red);stroke-width:1.5}
.sitemap-svg .ar{fill:none;stroke:#7d8286;stroke-width:1.5;marker-end:url(#ar)}
.sitemap-svg .j2bk{fill:rgba(226,30,36,.12);stroke:var(--red)}
.sitemap-svg .extk{fill:var(--k1);stroke:var(--ln2)}
.led span,.led dt,.led dd{overflow-wrap:anywhere;min-width:0}
@media (max-width:900px){
  .film .fr img{filter:brightness(.5) contrast(1.05) saturate(.9)}
  .op-bleed>img,.op-bleed>video{filter:brightness(.48) saturate(.9)}
  .plate{display:block;min-height:0}
  .plate>img{position:relative;height:340px;filter:none}
  .plate::after{display:none}
  .plate .in{background:var(--k0);padding-top:36px}
}

/* OEM/EPC handoff matrix (partners): who does what at each of the four stages; J2B column carries the rule */
.hand{width:100%;border-collapse:collapse;border-top:1px solid var(--pl2)}
.hand thead th{font:500 11.5px/1.3 var(--text);letter-spacing:.09em;text-transform:uppercase;color:var(--p-lo);text-align:left;padding:16px 24px 16px 0;border-bottom:1px solid var(--pl)}
.hand thead th:last-child,.hand td:last-child{padding-left:24px;border-left:1px solid var(--pl2)}
.hand tbody th{font:400 clamp(22px,2vw,30px)/1.12 var(--disp);letter-spacing:-.025em;text-align:left;vertical-align:top;width:32%;padding:28px 24px 30px 0;border-bottom:1px solid var(--pl);color:var(--p-hi)}
.hand tbody th .n{display:block;font:500 13px var(--text);letter-spacing:0;color:var(--p-lo);margin-bottom:14px}
.hand tbody tr:last-child th .n{color:var(--red)}
.hand td{vertical-align:top;padding:28px 24px 30px 0;font-size:15.5px;line-height:1.55;color:var(--p-md);border-bottom:1px solid var(--pl)}
.hand td:last-child{color:var(--p-hi)}
@media (max-width:760px){
  .hand thead{display:none}
  .hand,.hand tbody,.hand tr,.hand th,.hand td{display:block;width:auto}
  .hand tr{padding:24px 0;border-bottom:1px solid var(--pl)}
  .hand tbody th,.hand td,.hand td:last-child{border:0;padding:0}
  .hand tbody th{width:auto}
  .hand td{margin-top:14px}
  .hand td::before{content:attr(data-l);display:block;font:500 11.5px/1.3 var(--text);letter-spacing:.09em;text-transform:uppercase;color:var(--p-lo);margin-bottom:4px}
}

/* three-up key facts (partners audiences) */
.kf.k3{grid-template-columns:repeat(3,1fr)}
@media (max-width:900px){.kf.k3{grid-template-columns:1fr}.kf.k3 div,.kf.k3 div+div{border-left:0;padding-left:0}.kf.k3 div+div{margin-top:26px;padding-top:22px;border-top:1px solid var(--ln)}}

/* home partners band: the four-step handoff as a chain */
.chain{list-style:none;margin-left:0;margin-right:0;margin-bottom:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--ln2)}
.chain li{position:relative;padding:22px 28px 0 0;font:400 clamp(20px,1.7vw,28px)/1.15 var(--disp);letter-spacing:-.02em;color:var(--t-hi)}
.chain li+li{padding-left:28px;border-left:1px solid var(--ln)}
.chain li span{display:block;font:500 13px var(--text);letter-spacing:0;color:var(--t-lo);margin-bottom:26px}
.chain li:last-child span{color:var(--red)}
.chain li+li::before{content:"";position:absolute;left:-5px;top:-5px;width:9px;height:9px;border-top:1px solid var(--t-md);border-right:1px solid var(--t-md);transform:rotate(45deg);background:var(--k1)}
@media (max-width:900px){.chain{grid-template-columns:1fr 1fr}.chain li:nth-child(3){border-left:0;padding-left:0}.chain li:nth-child(n+3){margin-top:26px;padding-top:22px;border-top:1px solid var(--ln)}.chain li::before{display:none}}
@media (max-width:480px){.chain{grid-template-columns:1fr}.chain li,.chain li+li{border-left:0;padding-left:0}.chain li+li{margin-top:18px;padding-top:18px;border-top:1px solid var(--ln)}.chain li span{margin-bottom:10px}}

/* header fit: seven nav items + CTA need the clock's 230px between the burger breakpoint and 1400px */
.hd .logo{flex-shrink:0}
@media (max-width:1399px){.hd .clk{display:none}}

/* ---- 2026-09-29 revision components ---- */
/* mega menus with longer lists: the feature card spans the item rows */
.mp .feat{grid-row:span 3;align-self:start}
.mp .it b{font-size:17px}

/* product and industry catalog: image cards, three across */
.cat{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.cat a{position:relative;display:block;aspect-ratio:4/3;overflow:hidden;background:var(--k2);text-decoration:none;color:var(--t-hi)}
.cat img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease)}
.cat a::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,9,10,.5),rgba(8,9,10,0) 24%,rgba(8,9,10,0) 34%,rgba(8,9,10,.58) 58%,rgba(8,9,10,.94))}
.cat a:hover img{transform:scale(1.035)}
.cat .ix{position:absolute;left:20px;top:18px;z-index:2;color:var(--t-md)}
.cat .nm{position:absolute;left:20px;right:20px;bottom:18px;z-index:2;text-shadow:0 1px 16px rgba(0,0,0,.5)}
.cat .nm b{display:block;font:400 clamp(21px,1.75vw,28px)/1.08 var(--disp);letter-spacing:-.025em}
.cat .nm span{display:block;margin-top:8px;font-size:14px;color:#c9ccce;max-width:40ch}
@media (max-width:980px){.cat{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.cat{grid-template-columns:1fr}}

/* capability pillars */
.pil{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--ln2)}
.pil>div{padding:28px 32px 0 0}
.pil>div+div{padding-left:32px;border-left:1px solid var(--ln)}
.pil .lab{display:block;margin-bottom:26px}
.pil h3{margin-bottom:16px}
.pil p{font-size:16px;color:var(--t-md);max-width:40ch;margin:0}
.w .pil{border-color:var(--pl2)}.w .pil>div+div{border-color:var(--pl)}.w .pil p{color:var(--p-md)}
@media (max-width:900px){.pil{grid-template-columns:1fr}.pil>div,.pil>div+div{padding:26px 0 0;border-left:0}.pil>div+div{margin-top:26px;border-top:1px solid var(--ln)}.w .pil>div+div{border-top-color:var(--pl)}}

/* eight-step integration chain (extends .chain) */
.chain.c8{grid-template-columns:repeat(8,1fr)}
.chain.c8 li{font-size:clamp(16px,1.2vw,20px);padding-right:14px}
.chain.c8 li+li{padding-left:14px}
.chain.c8 li span{margin-bottom:18px}
.w .chain{border-color:var(--pl2)}
.w .chain li{color:var(--p-hi)}
.w .chain li+li{border-color:var(--pl)}
.w .chain li span{color:var(--p-lo)}
.w .chain li+li::before{border-color:var(--p-md);background:var(--w0)}
.w1 .chain li+li::before{background:var(--w1)}
@media (max-width:1100px){.chain.c8{grid-template-columns:repeat(4,1fr)}.chain.c8 li:nth-child(5){border-left:0;padding-left:0}.chain.c8 li:nth-child(n+5){margin-top:24px;padding-top:20px;border-top:1px solid var(--ln)}.chain.c8 li:nth-child(5)::before{display:none}.w .chain.c8 li:nth-child(n+5){border-top-color:var(--pl)}}
@media (max-width:560px){.chain.c8{grid-template-columns:1fr 1fr}.chain.c8 li:nth-child(odd){border-left:0;padding-left:0}.chain.c8 li:nth-child(n+3){margin-top:20px;padding-top:18px;border-top:1px solid var(--ln)}.chain.c8 li::before{display:none}.w .chain.c8 li:nth-child(n+3){border-top-color:var(--pl)}}

/* highlight grid (fleet program capabilities, company attributes) */
.hl{display:grid;grid-template-columns:repeat(4,1fr);gap:0 32px}
.hl>div{padding:22px 0 30px;border-top:1px solid var(--ln2)}
.hl .lab{display:block;margin-bottom:14px}
.hl h3{font:500 clamp(18px,1.35vw,21px)/1.25 var(--disp);letter-spacing:-.012em;margin:0 0 10px}
.hl p{font-size:15px;color:var(--t-md);margin:0;max-width:34ch}
.w .hl>div{border-color:var(--pl2)}.w .hl p{color:var(--p-md)}
@media (max-width:1100px){.hl{grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.hl{grid-template-columns:1fr}}

/* parallel execution chart (fleet programs) */
.gantt{border-top:1px solid var(--pl2)}
.gantt .row{display:grid;grid-template-columns:minmax(150px,260px) 1fr;align-items:center;gap:24px;padding:14px 0;border-bottom:1px solid var(--pl)}
.gantt .row>span{font-size:15px;color:var(--p-hi)}
.gantt .tr{position:relative;height:14px;background:repeating-linear-gradient(90deg,transparent 0,transparent calc(10% - 1px),var(--pl) calc(10% - 1px),var(--pl) 10%)}
.gantt .tr i{position:absolute;top:0;bottom:0;left:var(--a);width:var(--w);background:var(--p-hi)}
.gantt .row.key .tr i{background:var(--red)}
.gantt .ax{display:grid;grid-template-columns:minmax(150px,260px) 1fr;gap:24px;padding-top:12px;font-size:12.5px;color:var(--p-lo)}
.gantt .ax div{display:flex;justify-content:space-between}
@media (max-width:640px){.gantt .row,.gantt .ax{grid-template-columns:1fr;gap:8px}.gantt .ax>span{display:none}}

/* partner audiences */
.aud{border-top:1px solid var(--ln2)}
.aud>div{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);gap:32px;align-items:baseline;padding:clamp(20px,2.2vw,30px) 0;border-bottom:1px solid var(--ln)}
.aud b{font:400 clamp(26px,2.6vw,42px)/1.05 var(--disp);letter-spacing:-.03em}
.aud span{font-size:16px;color:var(--t-md);max-width:52ch}
@media (max-width:760px){.aud>div{grid-template-columns:1fr;gap:8px}}

/* statement band */
.stmt{font:400 clamp(26px,2.9vw,46px)/1.12 var(--disp);letter-spacing:-.03em;max-width:28ch;margin:0}
.stmt em{font-style:normal;color:var(--red)}
.w .stmt em{color:var(--red-d)}

/* interior heroes grow with their content instead of clipping it (long client headlines, small phones) */
.op-bleed{display:flex;flex-direction:column;justify-content:flex-end;height:auto;min-height:max(600px,88svh)}
.op-bleed .cap{position:relative;padding-top:calc(var(--hh) + 40px)}
@media (max-width:360px){.h0{font-size:40px}}

/* plain ruled list */
.ticks{list-style:none;padding:0;margin:28px 0 0}
.ticks li{padding:11px 0;border-top:1px solid var(--ln);font-size:15.5px;color:var(--t-md)}
.w .ticks li{border-color:var(--pl);color:var(--p-md)}
/* home hero grows with its content on short and narrow screens instead of pushing the headline above the fold */
.film{display:flex;flex-direction:column;justify-content:flex-end;height:auto;min-height:max(640px,100svh)}
.film .cap{position:relative;padding-top:calc(var(--hh) + 56px)}
@media (max-width:420px){.film h1{font-size:40px}.film .cap{padding-top:calc(var(--hh) + 36px)}}

/* three-photo lower row in figure grids: three across on desktop, the last photo full width on small screens */
@media (min-width:901px){.figs .row2.n3{grid-template-columns:repeat(3,1fr)}}
@media (max-width:900px){.figs .row2.n3 figure:last-child{grid-column:1/-1}}
/* arrow links wrap on narrow phones instead of widening the page */
.go{max-width:100%}
@media (max-width:560px){.go{white-space:normal}}
