/*
Theme Name: Zhenxiang Electric
Theme URI: https://www.zhenxiangelectric.com
Author: Hunan Zhenxiang Electric Co., Ltd.
Description: Brochure and enquiry theme for Zhenxiang Electric. Medium- and low-voltage switchgear presented as product families with technical data, no shop or checkout.
Version: 1.0.0
Requires at least: 6.0
Requires PHP: 7.4
License: Proprietary
Text Domain: zhenxiang
*/

:root{
  --ink:#1d1d1f; --ground:#ffffff; --surface:#ebedf1; --surface-2:#dbdee4; --line:#c6cad1; --line-soft:#dde0e6;
  --text:#1d1d1f; --text-2:#6e6e73; --text-3:#86868b;
  --accent:#b02a30; --accent-deep:#8e1f25;
  --dark:#000000; --dark-2:#1d1d1f; --dark-text:#f5f5f7; --dark-text-2:#a1a1a6; --dark-line:rgba(245,245,247,.16);
  --nav-bg:rgba(255,255,255,.88); --nav-text:#1d1d1f; --nav-line:#dfe2e7;
  --r-tile:18px; --r-hero:28px; --r-pill:980px;
  --tone-dark:#121419; --tone-dark-2:#1b1e25; --tone-dark-line:rgba(255,255,255,.13);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --ink:#f5f5f7; --ground:#000000; --surface:#1d1d1f; --surface-2:#2c2c2e; --line:#424245; --line-soft:#2c2c2e;
    --text:#f5f5f7; --text-2:#a1a1a6; --text-3:#86868b; --accent:#d8434a; --accent-deep:#b02a30;
    --dark:#0b0b0c; --dark-2:#1d1d1f; --nav-bg:rgba(16,18,22,.86); --nav-text:#f5f5f7; --nav-line:rgba(255,255,255,.12);
  }
}
:root[data-theme="dark"]{
  --ink:#f5f5f7; --ground:#000000; --surface:#1d1d1f; --surface-2:#2c2c2e; --line:#424245; --line-soft:#2c2c2e;
  --text:#f5f5f7; --text-2:#a1a1a6; --text-3:#86868b; --accent:#d8434a; --accent-deep:#b02a30;
  --dark:#0b0b0c; --dark-2:#1d1d1f; --nav-bg:rgba(16,18,22,.86); --nav-text:#f5f5f7; --nav-line:rgba(255,255,255,.12);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--ground);color:var(--text);font-family:"SF Pro Text","SF Pro Display",-apple-system,BlinkMacSystemFont,"Inter","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:17px;line-height:1.47;letter-spacing:-.022em;-webkit-font-smoothing:antialiased}
a{color:inherit}
img{max-width:100%;display:block}
h1,h2,h3,h4{font-family:"SF Pro Display","SF Pro Text",-apple-system,BlinkMacSystemFont,"Inter","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:600;margin:0;text-wrap:balance;color:var(--ink)}
h1{font-size:clamp(2.75rem,6vw,5rem);line-height:1.05;letter-spacing:-.015em;font-weight:700}
h2{font-size:clamp(2rem,4.2vw,3.5rem);line-height:1.07;letter-spacing:-.005em}
h3{font-size:clamp(1.5rem,2.4vw,2rem);line-height:1.125;letter-spacing:.004em}
h4{font-size:1.3rem;line-height:1.2;letter-spacing:.009em}
p{margin:0}
.mono{font-family:"SF Mono",ui-monospace,Menlo,Consolas,monospace;letter-spacing:0}
.wrap{max-width:1024px;margin-inline:auto;padding-inline:22px}
.wrap.wide{max-width:1200px}
.eyebrow{font-size:.78rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);display:inline-flex;align-items:center;gap:11px}
.eyebrow::before{content:"";width:26px;height:2px;background:currentColor;flex:none}
.rule{display:none}
.lede{font-size:1.3rem;line-height:1.38;letter-spacing:.011em;color:var(--text-2);max-width:56ch;font-weight:400}
.btn{display:inline-flex;align-items:center;gap:6px;padding:11px 22px;border:1px solid var(--ink);border-radius:var(--r-pill);font-weight:400;font-size:1.0625rem;letter-spacing:-.022em;text-decoration:none;color:var(--ink);background:transparent;cursor:pointer;font-family:inherit;transition:background .15s,color .15s,border-color .15s;line-height:1.2}
.btn:hover{background:var(--ink);color:var(--ground)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn.primary:hover{background:var(--accent-deep);border-color:var(--accent-deep);color:#fff}
.link{color:var(--accent);text-decoration:none;font-size:1.0625rem;letter-spacing:-.022em}
.link:hover{text-decoration:underline}
.link::after{content:" \203A";font-weight:400}
.btn:focus-visible,a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}
/* nav */
.nav{position:sticky;top:0;z-index:20;background:var(--nav-bg);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);color:var(--nav-text);border-bottom:1px solid var(--nav-line)}
.nav .wrap{display:flex;align-items:center;gap:0;min-height:72px;max-width:1200px}
.brand{display:flex;align-items:center;gap:9px;text-decoration:none;color:var(--nav-text);margin-right:auto}
.brand svg{width:28px;height:20px}
.brand b{font-size:1.02rem;font-weight:700;letter-spacing:-.015em;line-height:1}
.brand small{display:none}
.nav nav{display:flex;gap:0;margin-left:auto}
.nav nav a{text-decoration:none;font-size:.9rem;font-weight:500;letter-spacing:-.01em;padding:0 15px;line-height:72px;color:var(--nav-text);opacity:.74}
.nav nav a:hover{opacity:1}
.nav nav a.active{opacity:1}
.nav .rfq{margin-left:18px;background:var(--accent);color:#fff;padding:10px 20px;border-radius:var(--r-pill);font-weight:600;text-decoration:none;font-size:.85rem;letter-spacing:-.01em;white-space:nowrap}
.nav .rfq:hover{background:var(--accent-deep)}
.menu-btn{display:none;margin-left:auto;background:none;border:0;color:var(--nav-text);padding:8px 0;font-family:inherit;font-size:.8rem;cursor:pointer}
@media (max-width:960px){
  .nav nav{display:none;position:absolute;left:0;right:0;top:72px;background:rgba(255,255,255,.97);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);flex-direction:column;padding:16px 22px 24px;gap:0}
  .nav nav a{font-size:1.3rem;line-height:1.3;padding:12px 0;border-bottom:1px solid var(--line-soft);letter-spacing:-.02em}
  .nav nav.open{display:flex}
  .nav .rfq{display:none}
  .menu-btn{display:inline-block}
}
/* hero: the installation photo carries the panel; the text sits over it */
.hero{position:relative;background:#0b0b0c;color:#fff;text-align:center;isolation:isolate;overflow:hidden}
.hero.has-bg{min-height:clamp(560px,86vh,860px);display:flex;align-items:center}
.hero .hero-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;margin:0;border-radius:0}
/* Two layers: a vertical wash so the nav and headline keep contrast, and a centre
   vignette so the photo stays legible behind the copy. */
.hero .hero-veil{position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(6,6,8,.88) 0%,rgba(6,6,8,.60) 38%,rgba(6,6,8,.74) 100%),radial-gradient(118% 82% at 50% 46%,rgba(6,6,8,.16) 0%,rgba(6,6,8,.76) 100%)}
.hero .wrap{padding-block:140px 72px;max-width:1200px;position:relative}
.hero.has-bg .wrap{padding-block:124px 64px}
.hero h1{max-width:19ch;margin-inline:auto;color:#fff;text-shadow:0 2px 28px rgba(0,0,0,.42)}
.hero .rule{display:none}
.hero p{font-size:clamp(1.2rem,2vw,1.55rem);line-height:1.32;letter-spacing:.007em;color:rgba(255,255,255,.82);max-width:46ch;margin:22px auto 0;font-weight:400}
.hero .cta{display:flex;gap:16px;justify-content:center;margin-top:34px;flex-wrap:wrap}
.hero .cta .btn{font-size:1rem;padding:13px 26px;border-radius:var(--r-pill);border:1px solid rgba(255,255,255,.5);color:#fff;background:transparent;letter-spacing:-.01em}
.hero .cta .btn:hover{background:rgba(255,255,255,.12);color:#fff;text-decoration:none}
.hero .cta .btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.hero .cta .btn.primary:hover{background:var(--accent-deep);border-color:var(--accent-deep)}
.hero .cta .btn::after{content:""}
.hero .tags{margin-top:30px}
.hero .tags span{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.22);color:rgba(255,255,255,.92);font-family:"SF Mono",ui-monospace,Menlo,Consolas,monospace;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;padding:8px 14px}
@media (max-width:800px){.hero.has-bg{min-height:0}.hero .wrap,.hero.has-bg .wrap{padding-block:104px 56px}.hero .cta{gap:12px}}
/* trust row */
.trust{background:var(--ground)}
.trust .wrap{display:flex;flex-direction:column;align-items:center;gap:18px;padding-block:56px 8px;max-width:1024px}
.clients{display:flex;flex-wrap:wrap;gap:10px 34px;align-items:baseline;justify-content:center}
.clients span{font-weight:600;font-size:1.05rem;letter-spacing:-.01em;color:var(--text-3)}
.badges{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.badges span{font-size:.75rem;font-weight:500;letter-spacing:-.01em;padding:7px 14px;border-radius:var(--r-pill);background:var(--surface);color:var(--text-2);white-space:nowrap}
/* sections */
section.block{padding-block:112px}
section.block.tight{padding-block:80px}
/* Follows a page head directly. It used to collapse to zero so the two read as
   one block, which worked while page heads were white. They are dark now, so it
   keeps a reduced-but-real gap instead of butting against the dark edge. */
section.block.joined{padding-top:clamp(56px,6vw,80px)}
section.grey{background:var(--surface)}
.two{display:grid;grid-template-columns:1fr;gap:clamp(30px,3.4vw,46px);text-align:center;justify-items:center}
.two h2{max-width:20ch}
.two p{color:var(--text-2);font-size:1.3rem;line-height:1.38;letter-spacing:.011em;max-width:58ch}
.two p + p{margin-top:22px}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:28px;margin-top:72px;text-align:center}
.stats .n{font-size:3.4rem;font-weight:600;letter-spacing:-.02em;line-height:1;color:var(--accent);font-variant-numeric:tabular-nums}
.stats .n small{font-size:1.1rem;font-weight:500;color:var(--accent);margin-left:4px;letter-spacing:0}
.stats .l{font-size:1rem;color:var(--text-2);margin:12px auto 0;max-width:22ch;letter-spacing:-.01em}
@media (max-width:800px){.stats{grid-template-columns:1fr 1fr;gap:40px 20px}}
.sec-head{display:flex;flex-direction:column;align-items:center;text-align:center;gap:clamp(12px,1.4vw,18px);margin-bottom:56px}
.sec-head h2{max-width:22ch}
.sec-head p{color:var(--text-2);max-width:52ch;font-size:1.3rem;line-height:1.38;letter-spacing:.011em;margin-top:clamp(6px,0.8vw,10px)}
/* the eyebrow is a <p> inside .sec-head, so it needs the higher specificity to keep the accent */
.sec-head p.eyebrow{color:var(--accent);font-size:.78rem;line-height:1.4;margin-top:0;max-width:none}
.sec-head .link{margin-top:6px}
/* product index tiles */
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px}
.tile{text-decoration:none;display:flex;flex-direction:column;background:var(--ground);border-radius:var(--r-tile);overflow:hidden;transition:transform .2s;text-align:center}
section.grey .tile{background:var(--ground)}
section:not(.grey) .tile{background:var(--surface)}
.tile:hover{transform:scale(1.015)}
.tile .ph{aspect-ratio:1/1;overflow:hidden;padding:22px 22px 0}
.tile .ph img{width:100%;height:100%;object-fit:cover;border-radius:12px;background:var(--surface)}
.tile .ph.none{display:grid;place-items:center;color:var(--text-3);font-size:.75rem;letter-spacing:-.01em;text-align:center;padding:22px}
.tile .ph.none b{display:block;font-family:"SF Mono",ui-monospace,Menlo,Consolas,monospace;font-size:.95rem;color:var(--text-2);letter-spacing:0;margin-bottom:8px}
.tile .body{padding:20px 22px 26px;display:flex;flex-direction:column;gap:6px;flex:1;align-items:center}
.tile h4{color:var(--ink);font-size:1.2rem}
.tile .scope{font-size:.9rem;color:var(--text-2);flex:1;letter-spacing:-.01em}
.tile .link{margin-top:10px;font-size:.95rem}
/* group tiles (home) */
.groups{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}
.gtile{text-decoration:none;background:var(--ground);border-radius:var(--r-tile);padding:0 0 26px;display:flex;flex-direction:column;align-items:center;text-align:center;transition:transform .2s}
.gtile:hover{transform:scale(1.02)}
.gtile .ph{aspect-ratio:1/1;overflow:hidden;width:100%;padding:18px 18px 0}
.gtile .ph img{width:100%;height:100%;object-fit:cover;border-radius:12px}
.gtile h4{padding:18px 16px 6px;color:var(--ink);font-size:1.05rem}
.gtile p{padding:0 16px;font-size:.85rem;color:var(--text-2);flex:1;letter-spacing:-.01em}
.gtile .link{padding:12px 16px 0;font-size:.9rem}
@media (max-width:1000px){.groups{grid-template-columns:repeat(3,1fr)}}
@media (max-width:640px){.groups{grid-template-columns:1fr 1fr}}
/* featured product */
.feat{display:grid;grid-template-columns:1fr;gap:40px;text-align:center;justify-items:center}
.feat img{border-radius:var(--r-hero);width:100%;max-width:1024px;aspect-ratio:16/9;object-fit:contain;background:var(--surface);padding:32px;order:2}
.feat > div{order:1;max-width:760px}
.feat h2{margin-top:10px}
.feat .lede{margin:18px auto 0}
.hl{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;margin-top:40px;text-align:center}
.hl b{display:block;font-size:1.5rem;font-weight:600;color:var(--ink);letter-spacing:-.01em;line-height:1.15}
.hl span{display:block;font-size:.85rem;color:var(--text-2);margin-top:8px;letter-spacing:-.01em}
.feat .cta{display:flex;gap:28px;margin-top:32px;flex-wrap:wrap;justify-content:center}
@media (max-width:800px){.hl{grid-template-columns:1fr 1fr}.feat img{border-radius:18px;aspect-ratio:4/3}}
/* markets */
.markets{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.mkt{background:var(--ground);border-radius:var(--r-tile);padding:32px 28px 30px;text-align:center}
section:not(.grey) .mkt{background:var(--surface)}
.mkt .n{font-size:2.6rem;font-weight:600;letter-spacing:-.02em;line-height:1;color:var(--accent);font-variant-numeric:tabular-nums}
.mkt .n small{font-size:.9rem;font-weight:500;color:var(--accent);margin-left:4px;letter-spacing:0}
.mkt h4{margin-top:14px;font-size:1.2rem}
.mkt p{font-size:.92rem;color:var(--text-2);margin-top:8px;letter-spacing:-.01em}
@media (max-width:900px){.markets{grid-template-columns:1fr 1fr}}
@media (max-width:600px){.markets{grid-template-columns:1fr}}
/* alternating rows -> Apple style split tiles */
.row{display:grid;grid-template-columns:1fr 1fr;gap:0;align-items:stretch;background:var(--surface);border-radius:var(--r-tile);overflow:hidden;margin-top:18px}
section.grey .row{background:var(--ground)}
.row + .row{border-top:0}
.row img{width:100%;height:100%;min-height:320px;object-fit:cover;border-radius:0}
.row.flip img{order:2}
.row > div{padding:56px 48px;display:flex;flex-direction:column;justify-content:center}
.row h3{font-size:1.75rem;letter-spacing:-.01em}
.row p{color:var(--text-2);margin-top:14px;font-size:1.05rem;line-height:1.45;letter-spacing:-.01em}
.row ul{margin:16px 0 0;padding-left:20px;color:var(--text-2);font-size:1rem;letter-spacing:-.01em}
.row li{margin:6px 0}
@media (max-width:860px){.row{grid-template-columns:1fr}.row.flip img{order:0}.row img{min-height:0;aspect-ratio:3/2}.row > div{padding:32px 26px 36px}}
/* lead time */
.lead{display:grid;grid-template-columns:repeat(7,1fr);gap:10px;margin-top:8px}
.lead div{padding:22px 8px;text-align:center;background:var(--surface);border-radius:14px}
section.grey .lead div{background:var(--ground)}
.lead .d{font-size:1.9rem;font-weight:600;color:var(--ink);line-height:1;letter-spacing:-.02em}
.lead .u{font-size:.72rem;color:var(--text-3);letter-spacing:-.01em;margin-top:6px}
.lead .p{font-size:.9rem;color:var(--accent);margin-top:8px;font-weight:500}
@media (max-width:900px){.lead{grid-template-columns:repeat(4,1fr)}}
@media (max-width:520px){.lead{grid-template-columns:repeat(2,1fr)}}
/* dark band */
.band{background:var(--tone-dark);color:var(--dark-text)}
.band .wrap{padding-block:112px}
.band h2,.band h3,.band h4{color:var(--dark-text)}
.band .eyebrow{color:var(--accent)}
.band p{color:var(--dark-text-2)}
.band .btn{border-color:rgba(245,245,247,.55);color:var(--dark-text)}
.band .btn:hover{background:var(--dark-text);color:var(--dark)}
.band .btn.primary{border-color:var(--accent);color:#fff}
.band .btn.primary:hover{background:var(--accent-deep);border-color:var(--accent-deep)}
.band.cta{background:var(--surface);color:var(--ink)}
.band.cta h2{color:var(--ink)}
.band.cta p{color:var(--text-2)}
.band.cta .wrap{padding-block:96px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:24px}
.band.cta .btn{border-color:var(--accent)}
.refs{display:grid;grid-template-columns:repeat(3,1fr);gap:0 40px;margin-top:56px;text-align:left}
.refs ul{list-style:none;margin:0;padding:0}
.refs li{padding:14px 0;border-top:1px solid var(--dark-line);font-size:.95rem;color:var(--dark-text);letter-spacing:-.01em}
.refs li span{display:block;font-size:.8rem;color:var(--dark-text-2);margin-top:3px}
.refs h4{font-size:.8rem;letter-spacing:-.01em;color:var(--dark-text-2);font-weight:600;margin-bottom:10px}
.band .sec-head{margin-bottom:0}
@media (max-width:860px){.refs{grid-template-columns:1fr}}
/* tables */
.spec{width:100%;border-collapse:collapse;font-size:.95rem;letter-spacing:-.01em}
.spec th{text-align:left;font-size:.75rem;letter-spacing:-.01em;color:var(--text-3);font-weight:600;padding:0 16px 12px 12px;border-bottom:1px solid var(--line)}
.spec td{padding:13px 16px 13px 12px;border-bottom:1px solid var(--line-soft);vertical-align:top}
.spec td:first-child{color:var(--text-2);width:42%}
.spec td:last-child{color:var(--ink);font-variant-numeric:tabular-nums}
.tscroll{overflow-x:auto;background:var(--ground);border-radius:var(--r-tile);padding:22px 18px}
section.grey .tscroll{background:var(--ground)}
section:not(.grey) .tscroll{background:var(--surface)}
.certs{width:100%;border-collapse:collapse;font-size:.95rem;letter-spacing:-.01em}
.certs th{text-align:left;font-size:.75rem;color:var(--text-3);font-weight:600;padding:0 16px 12px 12px;border-bottom:1px solid var(--line)}
.certs td{padding:13px 16px 13px 12px;border-bottom:1px solid var(--line-soft);vertical-align:top}
.certs td:first-child{font-weight:600;color:var(--ink);white-space:nowrap}
/* faq */
.faq{max-width:820px;margin-inline:auto}
.faq details{border-bottom:1px solid var(--line-soft)}
.faq details:first-child{border-top:1px solid var(--line-soft)}
.faq summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:24px;padding:22px 0;font-weight:600;font-size:1.15rem;color:var(--ink);letter-spacing:-.01em}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-weight:300;font-size:1.6rem;color:var(--text-3)}
.faq details[open] summary::after{content:"\2013"}
.faq .a{padding:0 0 24px;color:var(--text-2);max-width:70ch;line-height:1.5;letter-spacing:-.01em;font-size:1.05rem}
/* page head */
.page-head{background:var(--ground)}
.page-head .wrap{padding-block:88px 56px;display:grid;grid-template-columns:1fr;gap:40px;justify-items:center;text-align:center}
.page-head .crumb{font-size:.9rem;color:var(--text-3);text-decoration:none;margin-bottom:14px;display:inline-block}
.page-head .crumb:hover{color:var(--ink)}
.page-head h1{margin-top:8px;max-width:20ch}
.page-head .scope{font-size:1.3rem;color:var(--text-2);margin-top:14px;letter-spacing:.011em}
.page-head .lede{margin:18px auto 0}
.page-head .ph{background:var(--surface);border-radius:var(--r-hero);overflow:hidden;aspect-ratio:16/9;width:100%;max-width:1024px}
.page-head .ph img{width:100%;height:100%;object-fit:contain;padding:32px}
.page-head .ph.none{display:grid;place-items:center;color:var(--text-3);font-size:.8rem;text-align:center}
.page-head .ph.none b{display:block;font-family:"SF Mono",ui-monospace,Menlo,Consolas,monospace;font-size:1.4rem;color:var(--text-2);margin-bottom:10px;letter-spacing:0}
.page-head > .wrap > div > div{justify-content:center}
.benefits{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.benefits > div{background:var(--surface);border-radius:var(--r-tile);padding:32px 28px;text-align:center}
.benefits h4{padding:0;border:0;display:block;font-size:1.2rem}
.benefits p{font-size:.95rem;color:var(--text-2);margin-top:10px;letter-spacing:-.01em}
@media (max-width:800px){.benefits{grid-template-columns:1fr}}
.detail-grid{display:grid;grid-template-columns:7fr 4fr;gap:40px;align-items:start}
.aside{background:var(--ground);border-radius:var(--r-tile);padding:26px 26px 8px}
.aside h4{font-size:.75rem;letter-spacing:-.01em;color:var(--text-3);font-weight:600;margin-bottom:10px}
.aside ul{margin:0 0 26px;padding:0;list-style:none}
.aside li{padding:9px 0;border-bottom:1px solid var(--line-soft);font-size:.95rem;letter-spacing:-.01em}
.aside .code{font-family:"SF Mono",ui-monospace,Menlo,Consolas,monospace;font-size:.85rem;letter-spacing:0}
@media (max-width:860px){.detail-grid{grid-template-columns:1fr;gap:24px}}
.group{margin-bottom:96px}
.group .intro{max-width:56ch;color:var(--text-2);margin:12px auto 36px;text-align:center;font-size:1.15rem;letter-spacing:-.01em}
.group-head{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center}
.group-head span{font-size:.9rem;color:var(--text-3)}
/* contact */
.contact{display:grid;grid-template-columns:7fr 5fr;gap:40px}
.contact form{display:grid;gap:16px;background:var(--surface);border-radius:var(--r-tile);padding:32px}
.contact label{display:grid;gap:6px;font-size:.85rem;font-weight:500;letter-spacing:-.01em}
.contact input,.contact select,.contact textarea{font:inherit;font-size:1rem;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--ground);color:var(--text);width:100%;letter-spacing:-.01em}
.contact textarea{min-height:140px;resize:vertical}
.contact .r2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.who h4{font-size:.75rem;letter-spacing:-.01em;color:var(--text-3);font-weight:600;margin-bottom:8px}
.who .blk{padding:22px 0;border-top:1px solid var(--line-soft)}
.who .blk:first-child{border-top:0;padding-top:0}
.who .blk b{display:block;font-size:1.15rem;color:var(--ink);letter-spacing:-.01em}
.who .blk p{color:var(--text-2);font-size:.95rem;margin-top:4px;letter-spacing:-.01em}
.who .blk a{color:var(--accent);text-decoration:none}
.who .blk a:hover{text-decoration:underline}
@media (max-width:860px){.contact{grid-template-columns:1fr}.contact .r2{grid-template-columns:1fr}}
.note{font-size:.8rem;color:var(--text-3);margin-top:8px;letter-spacing:-.01em}
/* footer: Apple light grey */
footer{background:var(--surface);color:var(--text-2);font-size:.75rem;letter-spacing:-.01em}
footer .wrap{padding-block:28px 12px;display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:24px;border-bottom:1px solid var(--line);max-width:1024px}
footer h4{font-size:.75rem;letter-spacing:-.01em;color:var(--ink);margin-bottom:10px;font-weight:600}
footer a{color:var(--text-2);text-decoration:none;display:block;padding:3px 0}
footer a:hover{text-decoration:underline;color:var(--ink)}
footer p{color:var(--text-2);line-height:1.5}
.foot-bottom{border-top:0}
.foot-bottom .wrap{display:flex;justify-content:space-between;gap:16px;padding-block:16px 24px;font-size:.75rem;color:var(--text-3);flex-wrap:wrap;border-bottom:0}
@media (max-width:800px){footer .wrap{grid-template-columns:1fr 1fr}}
@media (max-width:520px){footer .wrap{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

/* ===== v0.5 additions: SEGA M structure on Apple styling ===== */
.hero .eyebrow{margin-bottom:14px}
.tags{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:28px}
.tags span{font-family:inherit;font-size:.95rem;font-weight:500;letter-spacing:-.01em;padding:10px 18px;border-radius:var(--r-pill);border:1px solid var(--line);color:var(--ink);background:var(--surface)}
.tags{gap:10px}
/* One step lighter than the dark sections so it reads as an inset band between
   the hero and the partnership statement, not a third shade of black. */
.statbar{background:var(--tone-dark-2);color:var(--dark-text)}
.statbar .wrap{display:grid;grid-template-columns:repeat(4,1fr);max-width:1200px}
.statbar .wrap > div{padding:30px 22px;border-left:1px solid var(--dark-line);text-align:center}
.statbar .wrap > div:first-child{border-left:0}
.statbar b{display:block;font-size:2.4rem;font-weight:600;letter-spacing:-.02em;line-height:1;color:#fff}
.statbar span{display:block;font-size:.8rem;color:var(--dark-text-2);margin-top:10px;letter-spacing:-.01em}
@media (max-width:800px){.statbar .wrap{grid-template-columns:1fr 1fr}.statbar .wrap > div:nth-child(3){border-left:0}.statbar .wrap > div:nth-child(n+3){border-top:1px solid var(--dark-line)}}
.partner{text-align:center}
.partner .wrap{max-width:860px}
.partner h2{margin-top:12px}
.pathline{display:grid;grid-template-columns:repeat(5,1fr);gap:0;position:relative;margin-top:8px}
.pathline::before{content:"";position:absolute;left:10%;right:10%;top:9px;height:2px;background:var(--line)}
.pathline a{text-decoration:none;text-align:center;padding:0 12px;position:relative}
.pathline i{display:block;width:20px;height:20px;border-radius:50%;background:var(--ground);border:2px solid var(--accent);margin:0 auto 18px;position:relative;z-index:1}
.pathline b{display:block;font-size:1.05rem;color:var(--ink);letter-spacing:-.01em}
.pathline span{display:block;font-size:.8rem;color:var(--text-2);margin-top:6px;letter-spacing:-.01em}
@media (max-width:860px){.pathline{grid-template-columns:1fr;gap:22px}.pathline::before{display:none}.pathline i{margin-bottom:8px}}
.certgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.certgrid div{background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--r-tile);padding:26px 22px;text-align:left;transition:border-color .2s ease,transform .2s ease}
.certgrid div:hover{border-color:var(--accent);transform:translateY(-2px)}
.certgrid b{display:block;font-size:1.3rem;letter-spacing:-.01em;color:var(--ink);margin-top:14px}
.certgrid span{display:block;font-size:.85rem;color:var(--text-2);margin-top:6px}
/* The icon stands in for a certificate we do not hold yet, so it takes the same
   footprint as a thumbnail and the grid stays even either way. */
.ictile{display:inline-flex;align-items:center;justify-content:center;width:92px;height:130px;border-radius:8px;
  background:color-mix(in srgb,var(--accent) 8%,transparent);border:1px solid var(--line-soft);color:var(--accent)}
.ictile .ic{width:30px;height:30px;opacity:.85}
.certgrid div b{margin-top:16px}
@media (max-width:800px){.certgrid{grid-template-columns:1fr 1fr}}
.regions{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.regions div{background:var(--ground);border-radius:var(--r-tile);padding:22px 24px}
.regions b{display:block;font-size:1.05rem;color:var(--ink);letter-spacing:-.01em}
.regions span{display:block;font-size:.88rem;color:var(--text-2);margin-top:4px}
@media (max-width:700px){.regions{grid-template-columns:1fr}}
.ex{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:14px}
.ex div{background:var(--ground);border-radius:var(--r-tile);padding:18px 20px;text-align:center}
.ex b{display:block;font-size:1.3rem;color:var(--accent);letter-spacing:-.01em}
.ex span{display:block;font-size:.8rem;color:var(--text-2);margin-top:4px}
@media (max-width:700px){.ex{grid-template-columns:1fr 1fr}}
.sectors{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}
.sector{position:relative;border-radius:var(--r-tile);overflow:hidden;aspect-ratio:3/4;text-decoration:none;background:var(--dark-2);display:block}
.sector img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.55;filter:saturate(.6)}
.sector div{position:absolute;left:0;right:0;bottom:0;padding:18px 18px 20px;background:linear-gradient(180deg,rgba(0,0,0,0),rgba(0,0,0,.75));color:#fff}
.sector b{display:block;font-size:1.15rem;letter-spacing:-.01em}
.sector span{display:block;font-size:.78rem;color:var(--dark-text-2);margin-top:6px;line-height:1.4}
@media (max-width:960px){.sectors{grid-template-columns:repeat(3,1fr)}}
@media (max-width:600px){.sectors{grid-template-columns:1fr 1fr}.sector{aspect-ratio:1/1}}
.ptag{font-size:.68rem;font-weight:500;letter-spacing:.02em;color:var(--accent);text-transform:uppercase}
.pills{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-top:10px}
.pills span{font-family:inherit;font-size:.8rem;font-weight:500;letter-spacing:-.01em;padding:5px 11px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--text)}
.subhead{margin:40px 0 18px;font-size:1.25rem;color:var(--ink);padding-bottom:10px;border-bottom:1px solid var(--line-soft)}
.subhead:first-of-type{margin-top:0}
.guide{width:100%;border-collapse:collapse;font-size:.93rem;letter-spacing:-.01em}
.guide th{text-align:left;font-size:.75rem;color:var(--text-3);font-weight:600;padding:0 16px 12px 12px;border-bottom:1px solid var(--line)}
.guide td{padding:14px 16px 14px 12px;border-bottom:1px solid var(--line-soft);vertical-align:top;color:var(--text-2)}
.guide td:first-child{color:var(--ink);font-weight:600;white-space:nowrap}
.guide td a{color:var(--ink);text-decoration:none}
.guide td a:hover{color:var(--accent)}
.princ{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.princ div{background:var(--surface);border-radius:var(--r-tile);padding:28px 28px 26px}
.princ small{display:block;font-family:"SF Mono",ui-monospace,monospace;font-size:.7rem;color:var(--accent);letter-spacing:.04em;margin-bottom:10px}
.princ h4{font-size:1.15rem}
.princ p{font-size:.92rem;color:var(--text-2);margin-top:8px;letter-spacing:-.01em}
@media (max-width:700px){.princ{grid-template-columns:1fr}}
.steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:14px;counter-reset:step}
.steps li{background:var(--ground);border-radius:var(--r-tile);padding:26px 24px 24px;counter-increment:step;position:relative}
section:not(.grey) .steps li{background:var(--surface)}
.steps li::before{content:counter(step);display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--accent);color:#fff;font-size:.85rem;font-weight:600;margin-bottom:14px}
.steps b{display:block;font-size:1.05rem;color:var(--ink);letter-spacing:-.01em}
.steps span{display:block;font-size:.88rem;color:var(--text-2);margin-top:6px;letter-spacing:-.01em;line-height:1.45}
@media (max-width:860px){.steps{grid-template-columns:1fr}}
/* mega menu */
.nav .wrap{position:relative}
#prodMenu{display:none;position:absolute;left:0;right:0;top:72px;background:rgba(255,255,255,.97);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);color:var(--ink);z-index:19;border-bottom:1px solid var(--nav-line);box-shadow:0 18px 40px rgba(18,20,25,.12)}
body.menu-open #prodMenu{display:block}
.mega .wrap{display:grid;grid-template-columns:repeat(6,1fr);gap:24px;padding-block:36px 40px;max-width:1200px}
.mega .col a{display:block;color:var(--text-2);text-decoration:none;font-size:.85rem;padding:5px 0;letter-spacing:-.01em}
.mega .col a:hover{color:var(--accent)}
.mega .col a.colhead{color:var(--ink);font-weight:700;font-size:.95rem;margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid var(--line-soft)}
@media (max-width:960px){#prodMenu{display:none!important}}
.nav nav a.has-menu::after{content:" \25BE";font-size:.65em;opacity:.7}

.hero .eyebrow{font-size:.9rem;font-weight:700;letter-spacing:.18em;max-width:none;line-height:1.4;color:#ff6b6f;justify-content:center}
.hero .eyebrow::before{width:34px}
.band.cta .btn:not(.primary){color:var(--ink);border-color:var(--ink)}
.band.cta .btn:not(.primary):hover{background:var(--ink);color:var(--ground)}
.mega .col a.colhead{min-height:3.2em;display:flex;align-items:flex-end}

/* Shopify additions */
.skip{position:absolute;left:-9999px}.skip:focus{left:16px;top:8px;background:#fff;padding:8px 12px;z-index:99}
.mobile-only{display:none}@media (max-width:960px){.mobile-only{display:block}}
.rte p{margin:0 0 1em;color:var(--text-2)}.rte h2,.rte h3{margin:1.6em 0 .5em}.rte ul{color:var(--text-2)}.rte table{width:100%;border-collapse:collapse}.rte td,.rte th{padding:10px 12px;border-bottom:1px solid var(--line-soft);text-align:left;font-size:.93rem}
.two > div:nth-child(2) p{color:var(--text-2);font-size:1.3rem;line-height:1.38;letter-spacing:.011em;max-width:58ch;margin:0 auto}
.two > div:nth-child(2) p + p{margin-top:22px}
.row > div p{color:var(--text-2);margin-top:14px;font-size:1.05rem;line-height:1.45}
.row > div ul{margin:16px 0 0;padding-left:20px;color:var(--text-2)}
.shopify-challenge__container{padding:60px 20px}

.hero img,.feat img,.page-head .ph img,.row img,.tile .ph img,.gtile .ph img,.sector img{height:auto}
.row img,.tile .ph img,.gtile .ph img,.sector img,.page-head .ph img{height:100%}
.hero img{height:auto}

/* real ZXDQ logo */
.brand .logo{height:46px;width:auto;flex:none}
.brand{gap:11px}
@media (max-width:520px){.brand .logo{height:36px}.brand b{font-size:.86rem}}
.foot-logo{height:52px;width:auto;margin-bottom:20px}


.nowrap-last td:last-child{white-space:nowrap}

/* Reveal on scroll. Disabled outright for anyone who asks for reduced motion,
   and the .is-in class is added by zx.js only when the observer is supported,
   so content is never left hidden. */
.reveal{opacity:0;transform:translateY(18px);transition:opacity .7s cubic-bezier(.2,.6,.2,1),transform .7s cubic-bezier(.2,.6,.2,1)}
.reveal.is-in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}}

/* Export reach: asymmetric, with the map carrying the section rather than a
   grid of identical cards. */
.reach .reach-grid{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);gap:56px;align-items:center}
.reach .sec-head{display:none}
.reach-copy{text-align:left}
.reach-copy .eyebrow{margin-bottom:16px}
.reach-copy h2{max-width:14ch}
.reach-copy .lede{margin-top:20px;max-width:46ch;font-size:1.15rem}
.reach-pills{display:flex;flex-wrap:wrap;gap:8px;margin-top:26px}
.reach-pills span{font-family:"SF Mono",ui-monospace,Menlo,Consolas,monospace;font-size:.72rem;letter-spacing:.06em;
  text-transform:uppercase;padding:8px 13px;border:1px solid var(--line);border-radius:var(--r-pill);color:var(--text-2);white-space:nowrap}
.reach-stats{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:28px;max-width:460px}
.reach-stats div{background:var(--ground);border:1px solid var(--line-soft);border-radius:14px;padding:18px 20px}
.reach-stats b{display:block;font-size:1.45rem;font-weight:700;letter-spacing:-.015em;color:var(--accent)}
.reach-stats span{display:block;font-family:"SF Mono",ui-monospace,Menlo,Consolas,monospace;font-size:.66rem;
  letter-spacing:.08em;text-transform:uppercase;color:var(--text-3);margin-top:7px;line-height:1.45}
.reach .cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:30px}
.reach-map{position:relative}
.reach-map svg{width:100%;height:auto;display:block;overflow:visible}
/* The land needs to read clearly against the section's light grey, so it gets its
   own value rather than reusing --surface-2, which was nearly invisible. */
.reach-map .land path{fill:#a9a9b4;stroke:none}
.reach-map .rt{fill:none;stroke:var(--accent);stroke-width:2.1;stroke-dasharray:7 7;opacity:.85;
  stroke-dashoffset:0;animation:zx-flow 26s linear infinite}
@keyframes zx-flow{to{stroke-dashoffset:-220}}
.reach-map .pt circle{fill:var(--accent)}
.reach-map .pt text,.reach-map .hub text{font-family:"SF Mono",ui-monospace,Menlo,Consolas,monospace;
  font-size:21px;font-weight:600;letter-spacing:.06em;fill:#4a4a52}
.reach-map .hub circle{fill:var(--accent)}
.reach-map .hub .halo{fill:var(--accent);opacity:.2;animation:zx-pulse 3.2s ease-out infinite}
@keyframes zx-pulse{0%{opacity:.28;r:9}70%{opacity:0;r:21}100%{opacity:0;r:21}}
.reach-map .hub text{fill:var(--accent);font-weight:700;font-size:23px}
@media (prefers-reduced-motion:reduce){.reach-map .rt,.reach-map .hub .halo{animation:none}}
@media (max-width:960px){
  .reach .reach-grid{grid-template-columns:1fr;gap:36px}
  .reach-map{order:-1}
  .reach-stats{max-width:none}
}
@media (max-width:560px){.reach-stats{grid-template-columns:1fr}}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .reach-map .land path{fill:#3a3a42}
  :root:not([data-theme="light"]) .reach-map .pt text{fill:#9a9aa3}}
:root[data-theme="dark"] .reach-map .land path{fill:#3a3a42}
:root[data-theme="dark"] .reach-map .pt text{fill:#9a9aa3}

/* ---------------------------------------------------------------------------
   Section tones. Light, grey and dark alternate down the page. The grey step is
   deep enough to read as a different band, and dark sections carry the points
   that should land hardest - the Schneider authorisation, the project record
   and the closing call to action.
   --------------------------------------------------------------------------- */
section.dark{background:var(--tone-dark);color:var(--dark-text)}
section.dark h1,section.dark h2,section.dark h3,section.dark h4{color:#fff}
section.dark p,section.dark .lede,section.dark .sec-head p{color:rgba(255,255,255,.72)}
section.dark .sec-head p.eyebrow{color:#ff6b6f}
section.dark .eyebrow{color:#ff6b6f}
section.dark .link{color:#ff6b6f}
section.dark .tags span,section.dark .pills span{background:rgba(255,255,255,.07);border:1px solid var(--tone-dark-line);color:rgba(255,255,255,.9)}
section.dark .btn{border-color:rgba(255,255,255,.5);color:#fff}
section.dark .btn:hover{background:rgba(255,255,255,.12)}
section.dark .btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
section.dark .btn.primary:hover{background:var(--accent-deep);border-color:var(--accent-deep)}
/* cards inside a dark section */
section.dark .tile,section.dark .gtile,section.dark .benefits > div,section.dark .princ div,section.dark .certgrid div,
section.dark .mkt,section.dark .lead div,section.dark .reach-stats div,section.dark .tscroll{
  background:var(--tone-dark-2);border-color:var(--tone-dark-line);color:var(--dark-text)}
section.dark .tile h4,section.dark .gtile h4,section.dark .certgrid b{color:#fff}
section.dark .gtile{border:1px solid var(--tone-dark-line)}
section.dark .gtile p{color:var(--dark-text-2)}
section.dark .tile .scope,section.dark .certgrid span,section.dark .reach-stats span{color:var(--dark-text-2)}
section.dark table,section.dark td,section.dark th{color:var(--dark-text);border-color:var(--tone-dark-line)}
section.dark th{color:#fff}
section.dark .reach-map .land path{fill:#333842}
section.dark .reach-map .pt text{fill:#9aa0ab}

/* Cards need an edge, or they read as flat patches of colour rather than objects. */
section.grey .tile,section.grey .benefits > div,section.grey .princ div,
section.grey .mkt,section.grey .lead div,section.grey .reach-stats div{
  background:var(--ground);border:1px solid var(--line-soft)}
section:not(.grey):not(.dark) .benefits > div,section:not(.grey):not(.dark) .princ div,
section:not(.grey):not(.dark) .lead div{border:1px solid var(--line-soft)}
.tile{border:1px solid var(--line-soft)}
.tile:hover{transform:translateY(-3px);border-color:var(--line);box-shadow:0 10px 30px rgba(18,20,25,.09)}
.certgrid div:hover{box-shadow:0 10px 30px rgba(18,20,25,.08)}

/* The band CTA is light only when it is not explicitly a dark section. */
section.band.cta.dark{background:var(--tone-dark);color:var(--dark-text)}
section.band.cta.dark h2{color:#fff}
section.band.cta.dark p{color:rgba(255,255,255,.72)}

/* On a dark section the project tiles are the content, so the photos come up and
   the tiles take an edge - at 55% over near-black they sank into the background. */
section.dark .sector{border:1px solid var(--tone-dark-line);background:#0e1014}
section.dark .sector img{opacity:.8;filter:saturate(.9)}
section.dark .sector:hover img{opacity:.95}
section.dark .clients span{color:rgba(255,255,255,.62)}
section.dark .sector span{color:rgba(255,255,255,.78)}

/* Interior pages open on a dark band, the way the home page opens on the hero,
   so every page starts the same and the alternation has somewhere to begin. */
.page-head.dark{background:var(--tone-dark);color:var(--dark-text)}
.page-head.dark h1{color:#fff}
.page-head.dark .lede,.page-head.dark .scope,.page-head.dark p{color:rgba(255,255,255,.72)}
.page-head.dark .eyebrow{color:#ff6b6f}
.page-head.dark .crumb{color:rgba(255,255,255,.6)}
.page-head.dark .crumb:hover{color:#fff}
.page-head.dark .ph{background:var(--tone-dark-2)}
.page-head.dark .wrap{padding-block:104px 72px}

/* A real certificate carries more weight than a drawn icon, so where one is held
   the tile shows the document itself and opens the full page in a new tab. */
.certgrid div{display:flex;flex-direction:column;align-items:flex-start}
.certshot{display:block;width:92px;border-radius:8px;overflow:hidden;border:1px solid var(--line);
  background:#fff;box-shadow:0 2px 10px rgba(18,20,25,.1);transition:transform .2s ease,box-shadow .2s ease}
.certshot img{width:100%;height:auto;display:block}
.certshot:hover{transform:translateY(-2px) scale(1.03);box-shadow:0 10px 26px rgba(18,20,25,.18)}

section.dark .certshot{border-color:var(--tone-dark-line)}

/* About hero: dark navy section, light intro, gold accent, bright uncropped photo */
.about-hero{background:var(--tone-dark);color:var(--dark-text,#fff)}
.about-hero > .wrap{padding-block:96px 40px;text-align:left}
.about-hero .eyebrow{justify-content:flex-start;margin-bottom:14px;color:#ff6b6f}
.about-hero .eyebrow::before{background:currentColor}
.about-hero h1{color:#fff;margin:0;max-width:none;font-size:clamp(2.2rem,4.6vw,3.8rem);line-height:1.05;letter-spacing:-.02em}
.about-hero .lede{color:rgba(255,255,255,.72);max-width:62ch;margin:20px 0 0;font-size:clamp(1.02rem,1.4vw,1.2rem);line-height:1.55}
.about-hero .tags{justify-content:flex-start;margin-top:28px}
.about-hero .tags span{font-family:"SF Mono",ui-monospace,Menlo,Consolas,monospace;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;padding:9px 15px;background:transparent;border:1px solid var(--tone-dark-line);color:rgba(255,255,255,.9)}
.about-hero .about-photo{margin:0;padding-bottom:80px}
.about-hero .about-photo img{display:block;width:100%;height:auto;border-radius:var(--r-hero,18px)}
@media (max-width:800px){.about-hero > .wrap{padding-block:56px 28px}.about-hero .about-photo{padding-bottom:48px}.about-hero .about-photo img{border-radius:12px}}

/* About: pillars and timeline */
.pillar-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:40px}
.pillar{background:#fff;border:1px solid var(--line,#e3e5e8);border-radius:var(--r-hero,18px);padding:32px 28px}
.pillar .pn{font-family:"SF Mono",ui-monospace,Menlo,Consolas,monospace;font-size:.78rem;letter-spacing:.14em;color:var(--accent)}
.pillar h3{margin:14px 0 10px;font-size:1.3rem;color:#14233f;letter-spacing:-.01em}
.pillar p{margin:0;color:var(--text-2);line-height:1.55}
.tl{list-style:none;margin:40px 0 0;padding:0;max-width:860px;border-left:2px solid var(--line,#e3e5e8)}
.tl li{display:grid;grid-template-columns:120px 1fr;gap:24px;padding:0 0 36px 28px;position:relative}
.tl li::before{content:"";position:absolute;left:-7px;top:6px;width:12px;height:12px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px #fff}
.tl-year{font-size:1.5rem;font-weight:700;color:#14233f;letter-spacing:-.02em}
.tl h3{margin:2px 0 6px;font-size:1.15rem;color:#14233f}
.tl p{margin:0;color:var(--text-2);line-height:1.55}
@media (max-width:800px){.pillar-grid{grid-template-columns:1fr}.tl li{grid-template-columns:1fr;gap:6px}}

/* About intro: left-aligned to match the hero above */
.about-hero + section.block .two{text-align:left;justify-items:start}
.about-hero + section.block .two h2{max-width:24ch}
.about-hero + section.block .two > div:nth-child(2) p{margin:0;max-width:62ch}
.about-hero + section.block .stats{width:100%;text-align:left}
.about-hero + section.block .stats .l{margin-left:0}
.about-hero + section.block .two > div:nth-child(2) p + p{margin-top:22px}

/* Manufacturing gallery */
.mfg-gallery{margin-top:64px}
.mfg-gallery h3{font-size:1.5rem;letter-spacing:-.01em;margin:0}
.mfg-gallery .note{margin:8px 0 0;color:var(--text-3);font-size:.95rem}
.mfg-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:24px}
.mfg-grid figure{margin:0}
.mfg-zoom{display:block;border-radius:var(--r-tile,14px);overflow:hidden;background:var(--surface);cursor:zoom-in}
.mfg-zoom img{display:block;width:100%;height:auto;aspect-ratio:2/1;object-fit:cover;transition:transform .35s ease}
.mfg-zoom:hover img{transform:scale(1.03)}
.mfg-grid figcaption{padding:12px 2px 0}
.mfg-grid figcaption b{display:block;font-size:1rem;color:var(--ink);letter-spacing:-.01em}
.mfg-grid figcaption span{display:block;margin-top:4px;font-size:.92rem;line-height:1.4;color:var(--text-2)}
.mfg-gallery.compact{margin-top:48px}
.mfg-lightbox{border:0;padding:0;background:transparent;max-width:min(1200px,94vw);width:100%;overflow:visible}
.mfg-lightbox::backdrop{background:rgba(8,12,22,.82)}
.mfg-lightbox img{display:block;width:100%;height:auto;max-height:80vh;object-fit:contain;border-radius:12px;background:#000}
.mfg-lightbox p{margin:12px 0 0;color:#fff;text-align:center;font-size:1rem}
.mfg-close{position:absolute;right:6px;top:-44px;background:none;border:0;color:#fff;font-size:2.2rem;line-height:1;cursor:pointer}
@media (max-width:960px){.mfg-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.mfg-grid{grid-template-columns:1fr;gap:22px}.mfg-gallery{margin-top:48px}}

/* Manufacturing intro: keep the one-sentence lede on a single line on wide screens */

/* Customer-priority cards, authorisation notes, grouped manufacturing */
.pillar-grid.five{grid-template-columns:repeat(6,1fr)}
.pillar-grid.five .pillar:nth-child(-n+3){grid-column:span 2}
.pillar-grid.five .pillar:nth-child(n+4){grid-column:span 3}
.pillar .pq{margin:12px 0 0;font-size:.82rem;line-height:1.35;color:var(--text-3);font-style:italic}
.pillar .pn + h3{margin-top:14px}
.pillar .pq + h3{margin-top:8px}
.pillar .proof{margin-top:16px;padding-top:14px;border-top:1px solid var(--line,#e3e5e8);font-size:.92rem;line-height:1.45}
.pillar .proof b{display:block;font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:4px}
.note-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.note-card{border:1px solid var(--line,#e3e5e8);border-radius:var(--r-hero,18px);padding:30px 28px;background:#fff}
.note-card h3{margin:0 0 12px;font-size:1.25rem;color:#14233f}
.note-card ul{margin:0;padding-left:20px;color:var(--text-2);line-height:1.5}
.note-card li{margin:8px 0}
section.notes{padding-top:0}
.mfg-group{margin-top:64px}
.mfg-group:first-of-type{margin-top:48px}
.mfg-gh{display:flex;gap:20px;align-items:flex-start;margin-bottom:8px}
.mfg-gh .gn{font-family:"SF Mono",ui-monospace,Menlo,Consolas,monospace;font-size:.85rem;letter-spacing:.14em;color:var(--accent);padding-top:10px}
.mfg-gh h3{margin:0;font-size:1.6rem;letter-spacing:-.015em;color:#14233f}
.mfg-gh p{margin:6px 0 0;max-width:68ch;color:var(--text-2);line-height:1.5}
.mfg-gallery.in-group{margin-top:20px}
.mfg-grid.four{grid-template-columns:repeat(4,1fr);margin-top:0}
@media (max-width:1100px){.mfg-grid.four{grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.mfg-grid.four{grid-template-columns:1fr}}
@media (max-width:960px){.pillar-grid.five{grid-template-columns:1fr 1fr}.pillar-grid.five .pillar:nth-child(n){grid-column:auto}.note-grid{grid-template-columns:1fr}}
@media (max-width:560px){.pillar-grid.five{grid-template-columns:1fr}.mfg-gh{gap:14px}.mfg-group{margin-top:48px}}

/* About: one heading scale for every section, meaningful line breaks on desktop */
.about-hero ~ section h2{font-size:clamp(1.9rem,3vw,2.6rem);line-height:1.12;letter-spacing:-.02em}
.sec-head .subhead{margin:10px 0 0;font-size:clamp(1.1rem,1.8vw,1.45rem);font-weight:500;letter-spacing:-.01em;color:var(--text-2);line-height:1.25}
.sec-head .subhead{border:0;padding:0;box-shadow:none;background:none}.sec-head .subhead::before,.sec-head .subhead::after{content:none}

/* Section introductions: centred headings, left-aligned paragraphs at a comfortable reading width */
.about-hero ~ section .sec-head h2,.about-hero ~ section .sec-head .subhead{text-wrap:balance}
section.factory .sec-head .subhead{white-space:normal;margin-bottom:6px}
section.factory .sec-head h2{font-size:clamp(1.9rem,3vw,2.6rem);line-height:1.12}

/* Left-aligned section system (class .left, set per section with "align": "left").
   One left edge for label, rule, heading, subtitle and every paragraph; paragraphs only narrow, never re-centre. */
.block.left .sec-head{display:flex;flex-direction:column;align-items:flex-start;text-align:left;gap:0;margin:0 0 40px;max-width:none}
.block.left .sec-head > *{margin-left:0;margin-right:0;text-align:left}
.block.left .sec-head .eyebrow{justify-content:flex-start;margin:0 0 14px}
.block.left .sec-head h2{max-width:none;margin:0;font-size:clamp(1.9rem,3vw,2.6rem);line-height:1.12;letter-spacing:-.02em;text-wrap:balance}
.block.left .sec-head .subhead{margin:10px 0 0;max-width:none}
.block.left .sec-head p:not(.eyebrow):not(.subhead){width:100%;max-width:64ch;box-sizing:border-box;margin:20px 0 0;font-size:clamp(1.02rem,1.3vw,1.18rem);line-height:1.55;white-space:normal;text-wrap:pretty}
.block.left .sec-head p:not(.eyebrow):not(.subhead) + p:not(.eyebrow):not(.subhead){margin-top:16px}

/* Projects: reference cards, expandable list, project examples */
.client-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.client-card{display:flex;flex-direction:column;gap:6px;padding:20px 20px 18px;background:var(--surface);border:1px solid var(--line,#e3e5e8);border-radius:var(--r-tile,14px);min-width:0;overflow-wrap:anywhere}
.client-card b{font-size:1.1rem;line-height:1.25;letter-spacing:-.01em;color:#14233f}
.client-card .cs{font-family:"SF Mono",ui-monospace,Menlo,Consolas,monospace;font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}
.client-card .cp{font-size:.92rem;line-height:1.45;color:var(--text-2)}
.client-card em{font-style:normal;font-size:.8rem;color:var(--text-3)}
.client-more{margin-top:16px}
.client-more > summary{list-style:none;display:inline-flex;margin:8px 0 20px}
.client-more > summary::-webkit-details-marker{display:none}
.client-more .when-open{display:none}
.client-more[open] .when-open{display:inline}
.client-more[open] .when-closed{display:none}
.client-examples{margin-top:56px}
.client-examples h3{font-size:1.5rem;letter-spacing:-.01em;margin:0 0 20px;color:#14233f}
.ex-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.ex-card{background:#fff;border:1px solid var(--line,#e3e5e8);border-radius:var(--r-hero,18px);padding:26px 24px}
.ex-card .ex-sector{margin:0;font-family:"SF Mono",ui-monospace,Menlo,Consolas,monospace;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}
.ex-card h4{margin:10px 0 14px;font-size:1.2rem;line-height:1.25;color:#14233f}
.ex-card dl{margin:0}
.ex-card dt{font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);margin-top:12px}
.ex-card dd{margin:4px 0 0;color:var(--text-2);line-height:1.5}
@media (max-width:1100px){.client-grid{grid-template-columns:repeat(2,1fr)}.ex-grid{grid-template-columns:1fr 1fr}}
@media (max-width:640px){.ex-grid{grid-template-columns:1fr}}
@media (max-width:420px){.client-grid{grid-template-columns:1fr}}

@media (max-width:420px){.client-grid{grid-template-columns:1fr 1fr}.client-card{padding:16px 14px}.client-card b{font-size:1rem}}

/* Testing and Quality Control: compact cards, complete photo in a neutral frame */
.tst-group{margin-top:44px}
.tst-group h3{margin:0;font-size:1.2rem;letter-spacing:-.01em;color:#14233f}
.tst-lede{margin:6px 0 0;max-width:64ch;color:var(--text-2);font-size:.98rem;line-height:1.5}
.tst-lede.tst-after{margin-top:14px;font-size:.92rem;color:var(--text-3)}
.tst-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:18px}
.tst-card{margin:0;display:flex;flex-direction:column;background:#fff;border:1px solid var(--line,#e3e5e8);border-radius:var(--r-tile,14px);overflow:hidden;min-width:0}
.tst-frame{display:flex;align-items:center;justify-content:center;height:210px;background:#eceef2;border-radius:0;overflow:hidden;cursor:zoom-in}
.tst-frame img{display:block;width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;aspect-ratio:auto;transition:none}
.tst-frame:hover img{transform:none}
.tst-card figcaption{display:flex;flex-direction:column;gap:6px;padding:14px 16px 18px;text-align:left}
.tst-card figcaption b{font-size:1rem;line-height:1.3;letter-spacing:-.01em;color:var(--ink)}
.tst-card figcaption span{font-size:.92rem;line-height:1.5;color:var(--text-2)}
.tst-support{margin-top:40px}
.tst-support h3{font-size:1.02rem;color:var(--text-2);font-weight:600}
.tst-card.small .tst-frame{height:150px}
.tst-card.small figcaption b{font-size:.95rem}
.tst-card.small figcaption span{font-size:.88rem}
.tst-foot{margin:40px 0 0;max-width:64ch;color:var(--text-2);font-size:.98rem;line-height:1.55}
@media (max-width:960px){.tst-cards{grid-template-columns:repeat(2,1fr)}}
@media (max-width:600px){.tst-cards{grid-template-columns:1fr}.tst-frame{height:220px}.tst-card.small .tst-frame{height:170px}}

/* Home: Schneider partner heading, two lines (main heading + subtitle) */
.partner h2{font-size:clamp(1.9rem,3vw,2.6rem);line-height:1.12;max-width:none;letter-spacing:-.02em}
.partner .subhead{margin:10px auto 0;text-align:center;font-size:clamp(1.1rem,1.8vw,1.45rem);font-weight:500;letter-spacing:-.01em;color:var(--text-2);line-height:1.25;max-width:none}
@media (min-width:600px){.partner .subhead{white-space:nowrap}}

/* Manufacturing heading and subtitle: one line on desktop (Home and About); natural wrapping below 900px */
section.factory .sec-head h2,section.factory .sec-head .subhead{max-width:none}
@media (min-width:900px){section.factory .sec-head h2,section.factory .sec-head .subhead{white-space:nowrap}}

/* Authorisation groups: Schneider Electric and ABB, identical cards */
.auth-group{margin-top:28px;padding:28px 28px 22px;background:#fff;border:1px solid var(--line,#e3e5e8);border-radius:var(--r-hero,18px)}
.auth-group:first-of-type{margin-top:0}
.auth-gh h3{margin:0;font-size:1.5rem;letter-spacing:-.015em;color:#14233f}
.auth-gh .auth-sub{margin:6px 0 0;font-size:1.02rem;font-weight:500;color:var(--text-2)}
.auth-gh .auth-issuer{margin:6px 0 18px;font-size:.92rem;color:var(--text-3);line-height:1.45}
.auth-group .tscroll{margin:0}
.auth-note{margin:14px 0 0;max-width:80ch;font-size:.92rem;line-height:1.55;color:var(--text-2)}
.auth-group .tscroll + .auth-note{margin-top:16px}
@media (max-width:600px){.auth-group{padding:22px 16px 18px}}

/* Official manufacturer illustrations: shown whole (never cropped), on white, with a representative-image label */
.tile .ph.illus{position:relative;padding-bottom:30px}
.tile .ph.illus img{object-fit:contain;background:#fff;border-radius:12px}
.tile .ph .illus-note{position:absolute;left:22px;right:22px;bottom:8px;font-size:.68rem;line-height:1.2;color:var(--text-3);text-align:center}
.page-head figure.ph.illus{margin:0 auto;aspect-ratio:auto;max-width:1024px;background:var(--surface);display:flex;flex-direction:column;align-items:center;padding:24px 24px 16px;border-radius:var(--r-hero)}
.page-head figure.ph.illus .mfg-zoom{display:block;border-radius:0;background:#fff;width:100%;max-width:640px}
.page-head figure.ph.illus img{width:100%;height:auto;max-height:560px;object-fit:contain;padding:0;display:block;margin:0 auto}
.page-head figure.ph.illus figcaption{margin-top:14px;max-width:70ch;font-size:.85rem;line-height:1.45;color:var(--text-3);text-align:center}
.page-head.dark .btn:not(.primary){color:#fff;border-color:rgba(255,255,255,.5)}
.page-head.dark .btn:not(.primary):hover{background:rgba(255,255,255,.12);color:#fff}

/* Product pictures: one consistent frame, complete equipment, never cropped or stretched */
.tile .ph.framed img{object-fit:contain;background:#fff;border-radius:12px}
.tile .ph.framed{padding-bottom:22px}
.tile .ph.framed.illus{padding-bottom:30px}
.page-head .ph.framed img{object-fit:contain;background:#fff;border-radius:12px;padding:20px;height:auto;max-height:560px;width:100%}

/* Products without a verified photo: compact text-only card instead of a large empty image area */
.tile .ph.none.compact{aspect-ratio:auto;display:block;padding:22px 22px 0;text-align:center}
.tile .ph.none.compact b{display:block;margin:0;padding:14px 12px;background:#fff;border-radius:12px;font-family:"SF Mono",ui-monospace,Menlo,Consolas,monospace;font-size:.85rem;line-height:1.35;color:var(--text-2);letter-spacing:0;overflow-wrap:anywhere}
