/* Wison New Energies — round 4.
   One type scale, one button, one accent. White page, imagery does the work.
   §1 tokens  §2 base + type  §3 buttons  §4 header  §5 hero  §6 bands
   §7 stats  §8 stages  §9 products  §10 bases + globe  §11 sustainability
   §12 news  §13 footer  §14 sliders  §15 motion  §16 responsive  §17 product pages */
@import url('../fonts/_notosans.css');
/* the group's display face (client review 2026-09-29: big titles in the group Bold) */
@font-face{font-family:'Hedley New';font-weight:700;font-display:swap;src:url('../fonts/HedleyNew-Bold.woff2') format('woff2')}
@font-face{font-family:'Noto Sans SC';font-weight:400;font-display:swap;src:url('../fonts/NotoSansSC-400.woff2') format('woff2')}
@font-face{font-family:'Noto Sans SC';font-weight:500;font-display:swap;src:url('../fonts/NotoSansSC-500.woff2') format('woff2')}
@font-face{font-family:'Noto Sans SC';font-weight:700;font-display:swap;src:url('../fonts/NotoSansSC-700.woff2') format('woff2')}

/* ═══ §1 tokens ═══════════════════════════════════════════════════════ */
:root{
  /* colour rules (client review 2026-09-29, the type spec at /type/):
     titles black · text dark grey · eyebrows and captions light grey ·
     figures and anything you press in brand blue · red only as the accent.
     Neutral greys, no blue cast, so the page reads clean and bright. */
  --paper:#FFFFFF; --paper-2:#F5F6F7; --line:#E6E8EB;
  --ink:#111317; --ink-2:#4B5058; --ink-3:#8A9099;
  --red:#DA291C; --blue:#1B365D;
  --deep:#111317; /* the dark blocks that replaced the grey ones */
  --lift:0 22px 48px -12px rgba(22,32,46,.22),0 4px 12px rgba(22,32,46,.06);
  --display:'Hedley New','Noto Sans','Noto Sans SC',system-ui,-apple-system,'PingFang SC','Microsoft YaHei',sans-serif;
  --sans:'Noto Sans','Noto Sans SC',system-ui,-apple-system,'PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif;
  /* the scale: desktop → 1440×715 → phone. Nothing else in the file sets a size. */
  --fs-display:clamp(2.5rem,5vw,4.5rem);      /* 72 */
  --fs-h2:clamp(2rem,3.4vw,3rem);             /* 48 */
  --fs-h3:clamp(1.25rem,1.9vw,1.75rem);       /* 28 */
  --fs-lead:clamp(1.125rem,1.45vw,1.3125rem); /* 21 */
  --fs-body:1.0625rem;                        /* 17 */
  --fs-ui:.9375rem;                           /* 15 */
  --fs-cap:.8125rem;                          /* 13 */
  --lh-tight:1.05; --lh-h2:1.1; --lh-h3:1.25; --lh-lead:1.5; --lh-body:1.6;
  --w-display:700; --w-h3:400;
  --track-display:-.01em; --track-h2:-.005em;
  --track-cap:.05em;
  --wrap:76rem; --gut:clamp(1rem,4vw,3.5rem);
  --r-panel:1.5rem; --r-card:1rem; --r-pill:999px;
  --band:clamp(4rem,9vh,7rem);
  --hdr:4rem;
}
html[lang="zh-Hans"]{
  --w-display:700; --w-h3:500; --track-display:0; --track-h2:0; --track-cap:.08em;
  --lh-tight:1.15; --lh-h2:1.2; --lh-h3:1.35; --lh-lead:1.7; --lh-body:1.8;
}

/* ═══ §2 base + type ══════════════════════════════════════════════════ */
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scroll-padding-top:var(--hdr)}
/* (no scroll-snap: a band taller than the window snapped the reader back
   to its top and hid what was below — Winton, 2026-09-25) */
body{margin:0;background:var(--paper);color:var(--ink);font:400 var(--fs-body)/var(--lh-body) var(--sans);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}
img,video,svg{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
h1,h2,h3,h4,p{margin:0}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:1rem;top:-3rem;background:var(--ink);color:#fff;padding:.5rem 1rem;border-radius:var(--r-pill);z-index:100}
.skip:focus{top:1rem}
.wrap{width:min(var(--wrap),100% - 2*var(--gut));margin-inline:auto}
.cover{width:100%;height:100%;object-fit:cover}

.display,.h2{font-family:var(--display)}
.display{font-size:var(--fs-display);line-height:var(--lh-tight);font-weight:var(--w-display);letter-spacing:var(--track-display);text-wrap:balance}
.h2{font-size:var(--fs-h2);line-height:var(--lh-h2);font-weight:var(--w-display);letter-spacing:var(--track-h2);text-wrap:balance}
.h3{font-size:var(--fs-h3);line-height:var(--lh-h3);font-weight:var(--w-h3)}
.lead{font-size:var(--fs-lead);line-height:var(--lh-lead);color:var(--ink-2);max-width:60ch;text-wrap:pretty}
.eyebrow{display:inline-flex;align-items:center;gap:.6rem;font-size:var(--fs-cap);line-height:1.4;font-weight:500;letter-spacing:var(--track-cap);text-transform:uppercase;color:var(--ink-3)}
.eyebrow::before{content:"";width:1.25rem;height:2px;background:var(--red);border-radius:2px;flex:none}
.cap{font-size:var(--fs-cap);line-height:1.5;color:var(--ink-3)}
.more{display:inline-flex;align-items:center;gap:.35rem;font-size:var(--fs-ui);font-weight:500;color:var(--ink)}
.more svg,.btn svg{width:1.1em;height:1.1em;flex:none;transition:transform .25s}
a:hover .more svg,.btn:hover svg{transform:translateX(3px)}
a:hover .more svg{color:var(--red)}

/* ═══ §3 the one button ═══════════════════════════════════════════════
   ONE rule, everywhere. primary: light surface, navy words, no border;
   hover turns it navy. secondary (only ever beside a primary): clear,
   outlined; hover turns it red. Both are flat at rest and lift on hover —
   the same behaviour as every clickable card on the page. */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;height:2.75rem;min-width:9.5rem;padding:0 1.6rem;border-radius:var(--r-pill);
  font-size:var(--fs-ui);font-weight:500;line-height:1;white-space:nowrap;border:1px solid transparent;
  transition:background .25s,color .25s,border-color .25s,box-shadow .25s,transform .25s}
.btn:hover{transform:translateY(-2px);box-shadow:var(--lift)}
.btn:active{transform:scale(.97)}
.btn--primary{background:#fff;color:var(--blue)}
.on-white .btn--primary{background:var(--paper-2)}
.btn--primary:hover,.on-white .btn--primary:hover{background:var(--blue);color:#fff}
.btn--secondary{background:transparent;color:#fff;border-color:rgba(255,255,255,.75)}
.band .btn--secondary,.pcard .btn--secondary{color:var(--blue);border-color:var(--blue)}
.btn--secondary:hover,.band .btn--secondary:hover{background:var(--red);border-color:var(--red);color:#fff}
.btns{display:flex;flex-wrap:wrap;gap:.75rem}
.btn--sm{height:2.25rem;min-width:0;padding:0 1.1rem;font-size:var(--fs-cap)}
.fcard .btn--primary{background:var(--paper-2)}.fcard .btn--primary:hover{background:var(--blue);color:#fff}

/* ═══ §4 header ═══════════════════════════════════════════════════════ */
.hdr{position:fixed;inset:0 0 auto;z-index:50;height:var(--hdr);color:#fff;transition:background .3s,color .3s,box-shadow .3s}
.hdr__in{width:min(var(--wrap),100% - 2*var(--gut));margin-inline:auto;height:100%;display:flex;align-items:center;gap:2rem}
.hdr__logo{display:block;height:2.125rem}
.hdr__logo img{height:100%;width:auto}
.hdr__logo--dark{display:none}
.hdr__nav{margin-inline:auto}
.hdr__nav ul,.menu ul{list-style:none;margin:0;padding:0;display:flex;gap:2rem}
.hdr__nav a{font-size:var(--fs-ui);opacity:.86;transition:opacity .2s;padding:.5rem 0}
.hdr__nav a{position:relative}
.hdr__nav a::after{content:"";position:absolute;left:0;right:0;bottom:.1rem;height:2px;background:var(--red);transform:scaleX(0);transform-origin:left;transition:transform .25s}
.hdr__nav a:hover{opacity:1}
.hdr__nav a:hover::after{transform:scaleX(1)}
.hdr__end{display:flex;align-items:center;gap:1rem}
.hdr__lang{font-size:var(--fs-cap);font-weight:500;letter-spacing:.06em;opacity:.86;padding:.4rem .7rem;border:1px solid currentColor;border-radius:var(--r-pill);line-height:1}
.hdr__lang:hover{opacity:1}
.hdr__menu{display:none;width:2.5rem;height:2.5rem;position:relative}
.hdr__menu span:not(.sr){position:absolute;left:.6rem;right:.6rem;height:1.5px;background:currentColor;transition:transform .3s,top .3s}
.hdr__menu span:nth-child(1){top:.95rem}.hdr__menu span:nth-child(2){top:1.45rem}
.hdr__menu[aria-expanded="true"] span:nth-child(1){top:1.2rem;transform:rotate(45deg)}
.hdr__menu[aria-expanded="true"] span:nth-child(2){top:1.2rem;transform:rotate(-45deg)}
.hdr--stuck,.hdr--open{background:rgba(255,255,255,.9);color:var(--ink);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 1px 0 var(--line)}
.hdr--stuck .hdr__logo--dark,.hdr--open .hdr__logo--dark{display:block}
.hdr--stuck .hdr__logo--light,.hdr--open .hdr__logo--light{display:none}
.hdr--stuck .hdr__nav a{color:var(--ink-2);opacity:1}
.hdr--stuck .hdr__nav a:hover{color:var(--ink)}
.menu{background:#fff;border-top:1px solid var(--line);padding:1rem var(--gut) 1.5rem}
.menu ul{flex-direction:column;gap:0}
.menu a{display:block;padding:.8rem 0;font-size:var(--fs-lead);border-bottom:1px solid var(--line)}

/* ═══ §5 hero ═════════════════════════════════════════════════════════ */
.hero{position:relative;min-height:100svh;display:grid;place-items:center;color:#fff;overflow:hidden;isolation:isolate;text-align:center;padding:calc(var(--hdr) + 2rem) 0 5rem}
.hero__media{position:absolute;inset:0;z-index:-1;background:var(--ink)}
.hero__media img,.hero__media video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero__media video{opacity:0}
.hero.is-playing .hero__media video.is-front{opacity:1}
.hero__media::after{content:"";position:absolute;inset:0;
  /* a soft shade behind the words only; the rest of the film stays bright */
  background:radial-gradient(56% 40% at 50% 52%,rgba(0,0,0,.4),rgba(0,0,0,.14) 55%,transparent 80%),linear-gradient(180deg,rgba(0,0,0,.14),transparent 20%,transparent 75%,rgba(0,0,0,.2))}
.hero__in{display:grid;justify-items:center;gap:1.5rem;text-shadow:0 1px 2px rgba(0,0,0,.18),0 2px 28px rgba(0,0,0,.38)}
.hero__in .btn{text-shadow:none}
.hero .lead{color:rgba(255,255,255,.88);max-width:44ch}
html[lang="zh-Hans"] .hero .lead{max-width:30em}
.hero .btns{justify-content:center;margin-top:.5rem}
/* featured news: a slim bar at the foot of the hero; pressed, it opens a
   floating card (image, kind, title, two lines, link, arrows through the
   items); closed, the card folds back into the bar. One line, always. */
.fbar{position:absolute;left:50%;translate:-50% 0;bottom:1.5rem;z-index:5;transform:translateY(160%);opacity:0;display:flex;align-items:center;
  width:max-content;max-width:min(52rem,calc(100% - 2rem));background:rgba(255,255,255,.96);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-radius:var(--r-pill);box-shadow:0 18px 44px -10px rgba(22,32,46,.32),0 2px 8px rgba(22,32,46,.10);padding:.3rem .4rem .3rem .5rem;
  transition:transform .6s cubic-bezier(.2,.8,.2,1),opacity .4s}
.fbar.is-on{transform:none;opacity:1}
.fbar.is-folded{transform:translateY(40%) scale(.96);opacity:0;pointer-events:none}
.fbar__in{flex:1;min-width:0;display:flex;align-items:center;gap:1rem;font-size:var(--fs-ui);line-height:1.3;padding:.55rem .5rem .55rem 1rem;border-radius:var(--r-pill);white-space:nowrap;text-align:start}
.fbar__kind{flex:none;color:var(--red);font-size:var(--fs-cap);font-weight:500;letter-spacing:var(--track-cap);text-transform:uppercase}
.fbar__title{min-width:0;overflow:hidden;text-overflow:ellipsis;font-weight:500;color:var(--ink)}
.fbar__meta{flex:none;color:var(--ink-2)}
.fbar__cta{flex:none;display:inline-flex;align-items:center;gap:.3rem;font-weight:500;color:var(--blue);margin-left:.25rem}
.fbar__cta svg{width:1.1em;height:1.1em;transition:transform .25s}
.fbar__in:hover .fbar__cta svg{transform:translateY(-2px);color:var(--red)}
.fbar__x{flex:none;width:2.25rem;height:2.25rem;border-radius:50%;display:grid;place-items:center;color:var(--ink-3);transition:background .2s,color .2s}
.fbar__x:hover{background:var(--paper-2);color:var(--ink)}
.fbar__x svg,.fcard__x svg{width:1rem;height:1rem}
.fcard{position:absolute;left:50%;bottom:1.5rem;z-index:6;width:min(46rem,calc(100% - 2rem));translate:-50% 0;display:grid;text-align:start;color:var(--ink);
  background:#fff;border-radius:var(--r-panel);box-shadow:0 30px 70px -18px rgba(22,32,46,.45),0 4px 14px rgba(22,32,46,.12);overflow:hidden;
  transform-origin:50% 100%;transform:translateY(12px) scale(.94);opacity:0;transition:transform .45s cubic-bezier(.2,.8,.2,1),opacity .3s}
.fcard.is-open{transform:none;opacity:1}
.fcard{touch-action:pan-y}
.fbar[hidden],.fcard[hidden]{display:none}
.fcard__item{display:grid;grid-template-columns:38% 1fr;min-height:12.5rem}
.fcard__item[hidden]{display:none}
.fcard__media{position:relative;background:var(--paper-2)}
.fcard__media img{position:absolute;inset:0}
.fcard__txt{display:grid;gap:.5rem;align-content:start;justify-items:start;padding:1.5rem 3.5rem 3.25rem 1.75rem}
.fcard__kind{display:flex;gap:.75rem;font-size:var(--fs-cap);letter-spacing:var(--track-cap);text-transform:uppercase;color:var(--ink-3)}
.fcard__kind span{color:var(--red);font-weight:500}
.fcard__title{font-size:1.25rem;line-height:1.3;font-weight:var(--w-h3);color:var(--ink);text-wrap:balance}
.fcard__sum{color:var(--ink-2);font-size:var(--fs-ui);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.fcard__txt .more{margin-top:.25rem}
.fcard__x{position:absolute;top:.75rem;right:.75rem;z-index:2;width:2.25rem;height:2.25rem;border-radius:50%;display:grid;place-items:center;background:var(--paper-2);color:var(--ink-2);transition:background .2s,color .2s}
.fcard__x:hover{background:var(--blue);color:#fff}
.fcard__pager{position:absolute;right:1rem;bottom:.9rem;display:flex;align-items:center;gap:.5rem;font-size:var(--fs-cap);color:var(--ink-3)}
.fcard__count b{color:var(--ink);font-weight:500}
.fcard__step{width:2rem;height:2rem;border-radius:50%;display:grid;place-items:center;background:var(--paper-2);color:var(--blue);transition:background .2s,color .2s}
.fcard__step svg{width:.95rem;height:.95rem}
.fcard__step[data-dir="-1"] svg{transform:rotate(180deg)}
.fcard__step:hover{background:var(--blue);color:#fff}
/* the film's pause button, bottom right, quiet until hovered */
.hero__pause{position:absolute;right:var(--gut);bottom:1.75rem;z-index:4;width:2.5rem;height:2.5rem;border-radius:50%;display:grid;place-items:center;
  color:#fff;background:rgba(0,0,0,.22);border:1px solid rgba(255,255,255,.45);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);opacity:.75;transition:opacity .2s,background .2s}
.hero__pause:hover{opacity:1;background:rgba(0,0,0,.4)}
.hero__pause[hidden]{display:none}
.hero__pause svg{width:1rem;height:1rem}
.hero__pause .i-play,.hero__pause[aria-pressed="true"] .i-pause{display:none}
.hero__pause[aria-pressed="true"] .i-play{display:block}
/* while the card is open the hero's words step up out of its way */
.hero__in{transition:transform .5s cubic-bezier(.2,.8,.2,1)}
.hero.has-card .hero__in{transform:translateY(-7vh)}

/* ═══ §6 bands ════════════════════════════════════════════════════════ */
.band{padding-block:var(--band)}
.band--tint{background:var(--paper-2)}
/* the dark block (client review 2026-09-29): the grey bands became near-black,
   so white and dark alternate with real contrast. Words turn white; cards on
   it stay white. */
.band--dark{background:var(--deep);color:#fff}
.band--dark .h2{color:#fff}
.band--dark .lead{color:rgba(255,255,255,.72)}
.band--dark .eyebrow{color:rgba(255,255,255,.55)}
.band--dark .stage__tabs{border-color:rgba(255,255,255,.16)}
.band--dark .stage__tabs [role=tab]{color:rgba(255,255,255,.55)}
.band--dark .stage__tabs [role=tab]:hover{color:rgba(255,255,255,.85)}
.band--dark .stage__tabs [role=tab][aria-selected="true"]{color:#fff}
.band--dark .stage__panel{background:#1d2026}
.band--dark .adv{border-color:rgba(255,255,255,.18)}
.band--dark .adv__t{color:#fff}
.band--dark .btn--primary{background:#fff;color:var(--blue)}
.band--dark .btn--primary:hover{background:var(--red);color:#fff}
.band--dark .btn--secondary{color:#fff;border-color:rgba(255,255,255,.7)}
.band--dark .btn--secondary:hover{background:var(--red);border-color:var(--red)}
.band--short{padding-block:calc(var(--band) * .7)}
.band--screen{min-height:calc(100svh - var(--hdr));display:grid;grid-template-columns:minmax(0,1fr);align-content:center;padding-block:clamp(2.75rem,6.5vh,6rem)}
.bhead__end{display:flex;align-items:center;gap:1rem}
/* every section header sits on the left edge of the column — one rule */
.bhead{text-align:start;max-width:56rem;display:grid;justify-items:start;gap:.75rem}
.bhead .lead{margin-top:.25rem}
.bhead--row{max-width:none;display:flex;justify-content:space-between;align-items:end;text-align:start;gap:2rem}
.bhead--row > div{display:grid;gap:.75rem}
.bhead--row > .bhead__end,.bhead--row > .snav{display:flex;gap:1rem;align-items:center}
.bhead--row > .snav{gap:.6rem}
.snav{display:flex;gap:.6rem;flex:none}
.snav__btn{width:2.75rem;height:2.75rem;border-radius:50%;display:grid;place-items:center;background:var(--paper-2);color:var(--blue);transition:background .25s,color .25s,box-shadow .25s,transform .25s}
.band--tint .snav__btn{background:#fff}
.snav__btn svg{width:1.1rem;height:1.1rem}
.snav__btn[data-dir="-1"] svg{transform:rotate(180deg)}
.snav__btn:hover{background:var(--blue);color:#fff;box-shadow:var(--lift);transform:translateY(-2px)}
.snav__btn:disabled{opacity:.35;pointer-events:none}

/* ═══ §7 the numbers — icon, count-up, label; no boxes ════════════════ */
.stats{display:grid;grid-template-columns:repeat(4,1fr);margin-top:3rem;background:var(--paper-2);border-radius:var(--r-panel);padding:clamp(2rem,4vw,3.5rem) clamp(1.5rem,3vw,3rem)}
.stat{display:grid;justify-items:start;gap:.9rem;text-align:start;padding:.25rem 1rem .25rem 2rem;border-left:1px solid #DFE2E6}
.stat:first-child{border-left:0;padding-left:0}
.stat__ico{width:2.5rem;height:2.5rem;object-fit:contain}
.stat__n{display:flex;align-items:baseline;gap:.2rem}
.num{font-size:clamp(2.75rem,4.6vw,4.25rem);line-height:1;font-weight:300;letter-spacing:-.025em;font-variant-numeric:tabular-nums;color:var(--blue)}
.num__unit{font-size:var(--fs-h3);font-weight:300;color:var(--blue)}
.stat p{color:var(--ink-2);font-size:var(--fs-ui)}

/* ═══ §8 EPCIC stages ═════════════════════════════════════════════════ */
.stage{margin-top:2.5rem}
.stage__tabs{display:flex;justify-content:space-between;gap:1rem;border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none}
.stage__tabs::-webkit-scrollbar{display:none}
.stage__tabs [role=tab]{position:relative;padding:.9rem 0;font-size:var(--fs-ui);color:var(--ink-3);white-space:nowrap;transition:color .2s}
.stage__tabs [role=tab]:hover{color:var(--ink-2)}
.stage__tabs [role=tab][aria-selected="true"]{color:var(--ink);font-weight:500}
.stage__bar{position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--red);transform:scaleX(0);transform-origin:left}
.stage__panel{position:relative;margin-top:1.5rem;height:clamp(320px,56vh,620px);border-radius:var(--r-panel);overflow:hidden;background:var(--line)}
.stage__panel [role=tabpanel]{position:absolute;inset:0;opacity:0;transition:opacity .5s;overflow:hidden}
/* the source photographs carry a burnt-in stage name along the bottom: the
   picture is drawn a third taller than its frame so that strip is never seen */
.stage__panel img.cover{height:136%;object-position:center top}
.stage__panel [role=tabpanel][data-on]{opacity:1}
.stage__panel [role=tabpanel][hidden]{display:block}
.stage__cap{position:absolute;inset:auto 0 0;padding:4rem 2.5rem 2.25rem;color:#fff;background:linear-gradient(180deg,transparent,rgba(0,0,0,.42))}
.stage__cap p{margin-top:.4rem;color:rgba(255,255,255,.86)}
@media (min-width:961px){.stage__cap p{white-space:nowrap}}
/* the six advantages of one team, under the stages */
.advs{list-style:none;margin:1.5rem 0 0;padding:0;display:grid;grid-template-columns:repeat(6,1fr);gap:1rem}
.adv{display:flex;align-items:baseline;gap:.6rem;padding-top:1rem;border-top:2px solid var(--line)}
.adv__no{font-size:var(--fs-cap);font-weight:500;letter-spacing:var(--track-cap);color:var(--red)}
.adv__t{font-size:var(--fs-ui);font-weight:500;color:var(--ink);line-height:1.35}

/* ═══ §9 products — Tesla's feature card: words and figures beside the film
   One card language for the whole page: a flat tinted surface at rest.
   Anything CLICKABLE lifts on hover (shadow + a slight scale), like Apple's. */
.pcard{display:grid;grid-template-columns:5fr 7fr;gap:clamp(1.5rem,3vw,3rem);align-items:stretch;background:var(--paper-2);border-radius:var(--r-panel);
  padding:clamp(1.25rem,2.2vw,2rem);padding-left:clamp(1.5rem,4vw,4rem)}
.pcard__txt{display:grid;gap:.75rem;justify-items:start;align-content:center}
.pcard__txt .lead{max-width:40ch}
.pcard__stats{display:flex;flex-wrap:wrap;gap:1rem 2.5rem;margin:.25rem 0 .5rem}
.pcard__stats b{display:block;font-size:var(--fs-h3);line-height:1.2;font-weight:400;color:var(--blue);white-space:nowrap}
.pcard__stats span{display:block;font-size:var(--fs-cap);color:var(--ink-2);margin-top:.2rem;max-width:22ch}
.pcard__media{position:relative;border-radius:var(--r-card);overflow:hidden;min-height:clamp(220px,calc(100svh - 28rem),480px);background:var(--line)}
.pcard__media img,.pcard__media video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
/* the five cards slide sideways; round arrows on the card's own edges, a
   named pill per product with a filled active state and a timer line */
.pcar{margin-top:1.5rem}
#products{padding-block:clamp(2rem,5vh,6rem)}
.pcar__frame{position:relative}
.pcar__track{display:flex;gap:1.25rem;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;border-radius:var(--r-panel);overscroll-behavior-x:contain}
.pcar__track::-webkit-scrollbar{display:none}
.pcar__track .pcard{flex:0 0 100%;scroll-snap-align:center}
.pcar__edge{position:absolute;top:50%;z-index:2;width:3.25rem;height:3.25rem;margin-top:-1.625rem;border-radius:50%;display:grid;place-items:center;
  background:#fff;color:var(--blue);box-shadow:0 10px 28px -8px rgba(22,32,46,.35),0 2px 6px rgba(22,32,46,.08);transition:background .25s,color .25s,transform .25s,opacity .25s}
.pcar__edge svg{width:1.25rem;height:1.25rem}
.pcar__edge--prev{left:-1.625rem}.pcar__edge--next{right:-1.625rem}
.pcar__edge--prev svg{transform:rotate(180deg)}
.pcar__edge:hover{background:var(--blue);color:#fff;transform:scale(1.06)}
.pcar__dots{display:flex;flex-wrap:wrap;width:max-content;max-width:100%;margin:0 0 1.25rem;gap:.4rem;padding:.35rem;border-radius:var(--r-pill);background:#fff;box-shadow:0 0 0 1px #D5DEE9}
.pcar__dot{position:relative;overflow:hidden;padding:.65rem 1.15rem;border-radius:var(--r-pill);font-size:var(--fs-ui);font-weight:500;color:var(--ink-2);transition:background .25s,color .25s}
.pcar__dot:hover{color:var(--blue);background:var(--paper-2)}
.pcar__dot[aria-selected="true"]{background:var(--blue);color:#fff}
.pcar__time{position:absolute;left:1.15rem;right:1.15rem;bottom:.3rem;height:2px;border-radius:2px;background:rgba(255,255,255,.9);transform:scaleX(0);transform-origin:left;opacity:0}
.pcar__dot[aria-selected="true"] .pcar__time{opacity:1}

/* the hover every clickable card shares */
.ncard,.report{transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s,background .35s}
.ncard:hover{transform:translateY(-6px) scale(1.012);box-shadow:var(--lift);background:#fff}
@media (max-width:960px),(hover:none){.report:hover{transform:translateY(-6px);box-shadow:var(--lift)}}

/* ═══ §10 the bases: the globe, then the two yards ════════════════════ */
/* the stage: the map, and the two base boxes over it. Its height is a
   container, so a box can grow to exactly the map's size */
.gstage{position:relative;margin-top:2rem;height:clamp(440px,calc(100svh - var(--hdr) - 11rem),720px);container-type:size}
.globe{position:absolute;inset:0;border-radius:var(--r-panel);
  background:linear-gradient(180deg,#FFFFFF 0%,#F3F7FB 55%,#E6EEF6 100%);overflow:hidden;isolation:isolate;cursor:grab;touch-action:pan-y;user-select:none;-webkit-user-select:none}
.globe.is-dragging{cursor:grabbing}
.globe::before{content:"";position:absolute;inset:0;z-index:-1;background-image:linear-gradient(rgba(27,54,93,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(27,54,93,.06) 1px,transparent 1px);background-size:48px 48px;background-position:center;
  -webkit-mask-image:linear-gradient(180deg,#000,transparent 60%);mask-image:linear-gradient(180deg,#000,transparent 60%)}
.globe canvas{position:absolute;inset:0}
.globe__labels{position:absolute;inset:0;pointer-events:none}
.glab{position:absolute;left:0;top:0;transform:translate(-9999px,-9999px);white-space:nowrap;font-size:.75rem;line-height:1;color:var(--ink-2);opacity:0;transition:opacity .3s;will-change:transform}
.glab span{display:block;transform:translateY(-50%);text-shadow:0 0 3px #fff,0 0 3px #fff,0 0 6px #fff}
.glab em{display:none}
.glab--hq,.glab--yard{color:var(--ink);font-weight:500}
.glab.is-left span{transform:translate(-100%,-50%)}
.glab.is-hot{color:var(--red)}
.globe__tip{position:absolute;left:0;top:0;z-index:2;pointer-events:none;background:#fff;color:var(--ink);border:1px solid var(--line);border-radius:.75rem;
  box-shadow:0 12px 32px rgba(22,32,46,.12);padding:.8rem 1rem;min-width:11rem;max-width:16rem;font-size:var(--fs-cap);line-height:1.45}
.globe__tip b{display:block;font-size:var(--fs-ui);font-weight:500}
.globe__tip i{display:block;font-style:normal;color:var(--red);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;margin-top:.15rem}
.globe__tip span{display:block;color:var(--ink-3)}
.globe__tip p{margin-top:.4rem;color:var(--ink-2)}
.globe__tip em{display:none}
.globe__tip small{display:block;margin-top:.5rem;color:var(--ink-3);font-size:.7rem}
.globe__tip [hidden]{display:none}
.globe__bar{position:absolute;left:1.25rem;right:1.25rem;bottom:1.1rem;display:flex;justify-content:space-between;align-items:center;gap:1rem;pointer-events:none}
.globe__cap{font-size:var(--fs-cap);color:var(--ink-2);transition:opacity .3s}
.globe__steps{display:flex;gap:.4rem;pointer-events:auto}
.globe__step{font-size:.7rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;padding:.5rem .85rem;border:1px solid var(--line);border-radius:var(--r-pill);
  background:rgba(255,255,255,.85);color:var(--ink-2);transition:background .2s,color .2s,border-color .2s,transform .15s}
html[lang="zh-Hans"] .globe__step{letter-spacing:.08em;font-size:.75rem}
.globe__step:hover{border-color:var(--ink-3);color:var(--ink)}
.globe__step:active{transform:scale(.96)}
.globe__step.is-on{background:var(--ink);color:#fff;border-color:var(--ink)}
.globe[data-still] .globe__steps{display:none}

/* the base boxes: hidden until the estuary, then a leader line joins each
   to its marker (drawn by globe.js). Nantong left, Qidong right. */
.gbases{position:absolute;inset:0;pointer-events:none;z-index:3}
.gbase{position:absolute;top:1.25rem;width:29cqw;height:calc(29cqw * 9 / 16 + 5.25rem);background:#fff;border-radius:var(--r-card);overflow:hidden;
  box-shadow:0 18px 44px -14px rgba(22,32,46,.32),0 2px 8px rgba(22,32,46,.08);opacity:0;transform:translateY(10px);
  transition:opacity .5s,transform .5s,top .75s cubic-bezier(.2,.8,.2,1),left .75s cubic-bezier(.2,.8,.2,1),right .75s cubic-bezier(.2,.8,.2,1),width .75s cubic-bezier(.2,.8,.2,1),height .75s cubic-bezier(.2,.8,.2,1),border-radius .75s,box-shadow .3s}
.gbase--l{left:1.25rem}.gbase--r{right:1.25rem}
.gstage.is-bases .gbase{opacity:1;transform:none;pointer-events:auto}
.gbase.is-hot{box-shadow:0 0 0 2px var(--red),0 18px 44px -14px rgba(22,32,46,.32)}
.gbase__media{position:relative;display:block;width:100%;height:calc(29cqw * 9 / 16);background:var(--ink);transition:height .75s cubic-bezier(.2,.8,.2,1)}
.gbase__media video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.gbase__play{position:absolute;right:.75rem;bottom:.75rem;width:2.25rem;height:2.25rem;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.92);color:var(--blue);transition:transform .25s,opacity .3s}
.gbase__play svg{width:1rem;height:1rem}
.gbase__media:hover .gbase__play{transform:scale(1.1)}
.gbase__cap{padding:.8rem 1.1rem 1rem;display:grid;gap:.2rem}
.gbase__name{font-size:var(--fs-ui);font-weight:500;color:var(--ink)}
.gbase__role{font-size:var(--fs-cap);line-height:1.45;color:var(--ink-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.gbase__x{position:absolute;top:1rem;right:1rem;width:2.5rem;height:2.5rem;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.92);color:var(--ink);opacity:0;pointer-events:none;transition:opacity .3s}
.gbase__x svg{width:1rem;height:1rem}
/* grown: the box takes the whole map; the words sit on the film */
.gbase.is-full{top:0;width:100cqw;height:100cqh;border-radius:var(--r-panel);z-index:2}
.gbase--l.is-full{left:0}.gbase--r.is-full{right:0}
.gbase.is-full .gbase__media{height:100cqh}
.gbase.is-full .gbase__play{opacity:0}
.gbase.is-full .gbase__x{opacity:1;pointer-events:auto}
.gbase.is-full .gbase__cap{position:absolute;left:0;right:0;bottom:0;padding:5rem 2.25rem 2rem;background:linear-gradient(180deg,transparent,rgba(6,16,30,.6));gap:.4rem}
.gbase.is-full .gbase__name{font-size:var(--fs-h3);font-weight:var(--w-h3);color:#fff}
.gbase.is-full .gbase__role{font-size:var(--fs-lead);color:rgba(255,255,255,.9);-webkit-line-clamp:3}
.gstage.has-full .globe__bar{opacity:0}
.globe__bar{transition:opacity .3s}

/* ═══ §11 sustainability — three pillars, then the report ═══════════
   (client review 2026-09-29) no E/S/G letters; the pillar's name leads; the
   figure lines of the three sit on one level; hover shows More, which opens
   that pillar's own page. The report card widens to the left on hover. */
.esg{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1.25rem;margin-top:2.25rem}
.esg__item{position:relative;background:var(--paper);color:var(--ink);border-radius:var(--r-panel);padding:clamp(1.5rem,2.4vw,2.25rem);display:flex;flex-direction:column;gap:.6rem;
  transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s}
.esg__top{display:flex;justify-content:space-between;align-items:center;min-height:2.75rem;margin-bottom:.5rem}
.esg__top img{width:2.75rem;height:2.75rem;object-fit:contain}
.esg__more{opacity:0;transform:translateX(-6px);transition:opacity .3s,transform .3s,background .25s,color .25s}
.esg__item .h3{color:var(--ink)}
.esg__item > p{color:var(--ink-2)}
.esg__fig{margin-top:auto;padding-top:1rem;border-top:1px solid var(--line);display:grid;gap:.15rem}
.esg__item > p:not(.esg__fig){margin-bottom:.75rem}
.esg__fig b{font-size:var(--fs-h3);font-weight:400;color:var(--blue);font-variant-numeric:tabular-nums}
.esg__fig span{font-size:var(--fs-cap);color:var(--ink-3);min-height:3em}
.esg__item:hover{transform:translateY(-6px);box-shadow:var(--lift)}
.esg__item:hover .esg__more,.esg__item:focus-visible .esg__more{opacity:1;transform:none;background:var(--blue);color:#fff}
@media (hover:none){.esg__more{opacity:1;transform:none;background:var(--paper-2)}}
.report{display:flex;flex-direction:column;background:var(--blue);color:#fff;border-radius:var(--r-panel);overflow:hidden}
.report__img{aspect-ratio:16/10;overflow:hidden;background:var(--ink)}
.report__img img{object-position:50% 38%;transition:transform .6s cubic-bezier(.2,.8,.2,1)}
.report__txt{display:grid;gap:.4rem;justify-items:start;padding:1.25rem 1.5rem .75rem}
.report__txt .eyebrow{color:rgba(255,255,255,.7)}
.report__txt .h3{color:#fff;font-size:1.25rem;line-height:1.3}
.report__txt p:last-child{display:none}
.report__btn{pointer-events:none;margin:auto 1.5rem 1.5rem;align-self:start;flex:none}
.report:hover{background:var(--blue)}
.report:hover .report__btn{background:var(--red);color:#fff}
.report__btn svg{width:1.1em;height:1.1em}
/* wide screens with a mouse: the card is pinned to its cell's right edge and,
   hovered, grows leftwards over the Governance tile, a little larger, the
   cover taking the room */
@media (min-width:961px) and (hover:hover){
  .esg__rep{position:relative}
  .esg__rep .report{position:absolute;top:0;right:0;bottom:0;width:100%;z-index:1;transform-origin:100% 50%;
    transition:width .55s cubic-bezier(.2,.8,.2,1),transform .55s cubic-bezier(.2,.8,.2,1),box-shadow .4s}
  .esg__rep .report__img{flex:1 1 auto;min-height:0;aspect-ratio:auto}
  .esg__rep .report:hover{width:calc(200% + 1.25rem);transform:scale(1.035);box-shadow:0 30px 70px -16px rgba(0,0,0,.55);z-index:3}
  .esg__rep .report:hover .report__img img{transform:scale(1.04)}
  .esg__rep .report:hover .report__txt p:last-child{display:block;color:rgba(255,255,255,.75);font-size:var(--fs-cap);max-width:44ch}
}
/* the closing row of a product page: a heading, then the two buttons */
.endrow{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1.5rem 3rem}

/* ═══ §12 news — a slider; the media slot takes a still or a film ════ */
.ncard{display:flex;flex-direction:column;background:var(--paper-2);border-radius:var(--r-panel);overflow:hidden}
.ncard__media{position:relative;aspect-ratio:16/10;background:var(--line)}
.ncard__media img,.ncard__media video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ncard__film{position:absolute;left:1rem;bottom:1rem;width:2.25rem;height:2.25rem;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.92);color:var(--blue)}
.ncard__film svg{width:1rem;height:1rem}
.ncard__cap{padding:1.5rem 1.75rem 1.75rem;display:grid;gap:.6rem;align-content:start;flex:1}
.ncard .cap{display:flex;gap:.75rem;flex-wrap:wrap}
.ncard .cap span{color:var(--red);font-weight:500}
.ncard .h3{font-size:1.25rem;line-height:1.35;font-weight:var(--w-h3);text-wrap:pretty}
.ncard .more{margin-top:auto;padding-top:.5rem}

/* ═══ §13 footer ══════════════════════════════════════════════════════ */
.ftr{border-top:1px solid var(--line);padding:4rem 0 2rem;font-size:var(--fs-ui)}
.ftr__grid{display:grid;grid-template-columns:1.5fr repeat(3,1fr);gap:2.5rem 3rem}
.ftr__brand{display:grid;gap:1rem;justify-items:start;align-content:start}
.ftr__brand img{height:2rem;width:auto}
.ftr__tag{font-size:var(--fs-lead);line-height:var(--lh-lead)}
.ftr__addr{color:var(--ink-2);font-size:var(--fs-cap);line-height:1.6}
.ftr__col h4{font-size:var(--fs-cap);font-weight:500;letter-spacing:var(--track-cap);text-transform:uppercase;color:var(--ink);margin-bottom:1rem}
.ftr__col ul{list-style:none;margin:0;padding:0}
.ftr__col a{display:block;padding:.3rem 0;color:var(--ink-2)}
.ftr__col a:hover{color:var(--ink)}
.ftr__base{margin-top:3rem;padding-top:1.5rem;border-top:1px solid var(--line);display:flex;justify-content:space-between;flex-wrap:wrap;gap:.75rem 2rem;font-size:var(--fs-cap);color:var(--ink-3)}
.ftr__legal{display:flex;gap:1.5rem;align-items:center}
.ftr__legal a:hover{color:var(--ink)}
.ftr__dir{display:inline-flex;align-items:center;gap:.3rem;color:var(--ink-3)}
.ftr__dir svg{width:1em;height:1em}

/* ═══ §14 sliders — native scroll-snap, arrows follow ════════════════ */
.slider{margin-top:2rem;margin-left:-.75rem;margin-right:calc((100% - 100vw) / 2)}
.slider__track{display:flex;gap:1.25rem;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding:.75rem .75rem 1.5rem;scroll-padding-inline:.75rem;overscroll-behavior-x:contain;cursor:grab}
.slider__track::-webkit-scrollbar{display:none}
.slider__track.is-drag{cursor:grabbing;scroll-snap-type:none}
.slider__track.is-drag a{pointer-events:none}
.slider__track > *{flex:0 0 calc((100% - 1.5rem - 2 * 1.25rem) / 3);scroll-snap-align:start}
.slider{position:relative}
.slider__track{touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch}
.slider__edge{display:none}

/* ═══ §15 motion — a fade-up once, and nothing else ═══════════════════ */
.reveal{opacity:0;transform:translateY(12px);transition:opacity .5s ease,transform .5s ease}
.reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .reveal{opacity:1;transform:none;transition:none}
  .hero__cue svg{animation:none}
  .ncard,.report,.btn,.gbase,.fcard,.fbar{transition:none}
}

/* ═══ §16 responsive ══════════════════════════════════════════════════ */
@media (max-width:1100px){
  .hdr__nav ul{gap:1.25rem}
}
@media (max-width:960px){
  .hdr__nav{display:none}
  .hdr__end{margin-left:auto}
  .hdr__menu{display:block}
  .stats{grid-template-columns:1fr 1fr}
  .pcard{grid-template-columns:1fr;padding:1.25rem}
  /* width stated: Safari shrinks an aspect-ratio grid item whose only children are absolute */
  .pcard__media{min-height:0;width:100%;height:auto;aspect-ratio:16/10;justify-self:stretch;align-self:start}
  .pcard{align-content:start}
  .pcar__edge--prev{left:.5rem}.pcar__edge--next{right:.5rem}
  .ftr__grid{grid-template-columns:1fr 1fr}
  .esg{grid-template-columns:1fr 1fr}
  .advs{grid-template-columns:repeat(3,1fr)}
  .slider__track > *{flex-basis:calc((100% - 1.5rem - 1.25rem) / 2)}
  .fbar__meta{display:none}
  .stage__panel{height:clamp(260px,42vh,460px)}
}
@media (max-width:640px){
  :root{--band:3.5rem}
  .hero{padding-bottom:4.5rem}
  .hero__media::after{background:radial-gradient(95% 34% at 50% 52%,rgba(0,0,0,.42),rgba(0,0,0,.14) 60%,transparent 85%),linear-gradient(180deg,rgba(0,0,0,.14),transparent 20%,transparent 75%,rgba(0,0,0,.2))}
  .hero__pause{bottom:5.25rem;right:1rem}
  .ftr__grid{grid-template-columns:1fr}
  .stats{grid-template-columns:1fr 1fr;gap:2rem 0;padding:1.75rem 1.25rem}
  .stat{padding-left:1.25rem}
  .stat:nth-child(3){border-left:0;padding-left:0}
  /* the card is stacked here: the arrows ride the film at its foot, clear of the words */
  .pcar__edge{top:auto;margin-top:0;width:2.75rem;height:2.75rem;bottom:calc(1.25rem + (100vw - 2 * var(--gut) - 2.5rem) * .3125 - 1.375rem)}
  .pcar__edge--prev{left:1.75rem}.pcar__edge--next{right:1.75rem}
  .pcar__dots{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;max-width:100%;margin-inline:0}
  .pcar__dot{flex:none;padding:.55rem .9rem;font-size:var(--fs-cap)}
  .fbar{left:.75rem;right:.75rem;translate:none;width:auto;max-width:none;bottom:1rem}
  .fbar__kind{display:none}
  .fbar__in{padding-left:.75rem;gap:.6rem}
  .fcard{left:.75rem;right:.75rem;width:auto;translate:none;bottom:1rem}
  .fcard__item{grid-template-columns:1fr;min-height:0}
  .fcard__media{aspect-ratio:16/7}
  .fcard__txt{padding:1.25rem 1.25rem 3.5rem}
  .hero.has-card .hero__in{transform:translateY(-22vh)}
  .btn{min-width:0;padding:0 1.25rem}
  .bhead--row{flex-direction:column;align-items:start}
  .bhead__end{width:100%;justify-content:space-between}
  .band--screen{min-height:0}
  /* the map square, the two bases under it, side by side, playing in place */
  .gstage{height:auto;container-type:normal}
  .globe{position:relative;inset:auto;aspect-ratio:1}
  .gbases{position:static;display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin-top:.75rem;pointer-events:auto}
  .gbase{position:relative;inset:auto;width:auto;height:auto;opacity:1;transform:none;top:auto}
  .gbase--l,.gbase--r{left:auto;right:auto}
  .gbase__media{height:auto;aspect-ratio:16/9}
  .gbase__play{display:none}
  .gbase__cap{padding:.7rem .8rem .8rem}
  .globe__cap{display:none}
  .globe__bar{justify-content:center}
  .esg{grid-template-columns:1fr}
  .advs{grid-template-columns:1fr 1fr}
  .slider__track > *{flex-basis:84%}
  /* phones: swipe the cards; big round arrows sit on the card photos, not up by the heading */
  #news .bhead__end .snav{display:none}
  .slider__edge{display:grid;position:absolute;z-index:2;top:calc(.75rem + (100vw - 2 * var(--gut)) * .84 * .3125 - 1.375rem);width:2.75rem;height:2.75rem;border-radius:50%;place-items:center;
    background:#fff;color:var(--blue);box-shadow:0 10px 28px -8px rgba(22,32,46,.35),0 2px 6px rgba(22,32,46,.08);transition:opacity .25s}
  .slider__edge svg{width:1.1rem;height:1.1rem}
  .slider__edge--prev{left:1.5rem}.slider__edge--prev svg{transform:rotate(180deg)}
  .slider__edge--next{right:1.5rem}
  .slider__edge:disabled{opacity:0;pointer-events:none}
  .stage__cap{padding:3rem 1.25rem 1.25rem}
  .ncard__cap{padding:1.25rem}
  .endrow{flex-direction:column;align-items:start}
  .ftr__base{flex-direction:column}
}

/* ═══ §17 product subpage ═════════════════════════════════════════════
   Same tokens, same header, same left-aligned heads. The one new thing is
   the scroll sequence: a pinned full-window frame that the scroll scrubs. */
.hero--sub{min-height:min(100svh,820px);place-items:start;text-align:start;padding:calc(var(--hdr) + clamp(2rem,6vh,4rem)) 0 6.5rem}
/* the words take the empty sky at top-left; the photograph is set a little
   larger from its top-left corner, so the ship moves right and down, out
   from under them (Winton, 2026-09-25: as little overlap as possible) */
.hero--sub .hero__still{transform:scale(var(--bs,1.14));transform-origin:0 0}
.hero--sub .hero__media::after{background:radial-gradient(70% 75% at 0% 0%,rgba(6,16,30,.62),rgba(6,16,30,.2) 60%,transparent),linear-gradient(180deg,rgba(0,0,0,.25),transparent 25%,transparent 75%,rgba(0,0,0,.3))}
.hero__in--start{justify-items:start;gap:1.25rem}
/* the full name sits tight under the acronym, as its caption */
.hero__full{margin-top:-.75rem;font-size:var(--fs-h3);line-height:var(--lh-h3);font-weight:300;color:#fff}
html[lang="zh-Hans"] .hero__full{font-weight:400}
.hero--sub .btns{justify-content:flex-start}
.crumb{display:flex;gap:.6rem;align-items:center;font-size:var(--fs-cap);letter-spacing:.06em;color:rgba(255,255,255,.8)}
.crumb a:hover{color:#fff;text-decoration:underline;text-underline-offset:.25em}
.crumb span:last-child{color:#fff}
.hero__hint{position:absolute;left:50%;bottom:1.5rem;translate:-50% 0;display:grid;justify-items:center;gap:.2rem;font-size:var(--fs-cap);letter-spacing:var(--track-cap);text-transform:uppercase;color:rgba(255,255,255,.85)}
.hero__hint svg{width:1.5rem;height:1.5rem;animation:cue 2.2s ease-in-out infinite}
@keyframes cue{0%,100%{transform:translateY(0)}50%{transform:translateY(5px)}}

.seq{position:relative;height:520vh;background:var(--paper-2)}
.seq__stick{position:sticky;top:0;height:100svh;overflow:hidden;isolation:isolate}
.seq__canvas{position:absolute;inset:0;width:100%;height:100%;z-index:-2;background:var(--paper-2) center/cover no-repeat}
/* the film's loading bar, top right of the pinned frame, gone once loaded */
.seq__load{position:absolute;right:var(--gut);top:calc(var(--hdr) + 1.5rem);z-index:2;display:grid;gap:.45rem;justify-items:end;
  font-size:var(--fs-cap);letter-spacing:.06em;color:var(--ink-2);background:rgba(255,255,255,.85);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  padding:.6rem .9rem .7rem;border-radius:var(--r-card);transition:opacity .5s .3s}
.seq__load b{font-weight:500;color:var(--blue);font-variant-numeric:tabular-nums}
.seq__loadbar{display:block;width:9rem;height:3px;border-radius:3px;background:rgba(22,32,46,.12);overflow:hidden}
.seq__loadbar i{display:block;height:100%;background:var(--red);transform:scaleX(0);transform-origin:left;transition:transform .2s}
.seq__load.is-done{opacity:0;pointer-events:none}
.seq[data-still] .seq__load{display:none}
/* the stand-in where a product has no assembly film: four photographs, one
   per chapter, cross-fading, each easing in slowly with the scroll */
.seq__stills{position:absolute;inset:0;z-index:-2;background:var(--paper-2);overflow:hidden}
.seq__still{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:60% 50%;opacity:0;transition:opacity .8s ease;will-change:transform,opacity}
.seq__still.is-on{opacity:1}
/* the frames are bright studio renders: a white wash on the left carries ink text */
.seq__shade{position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(255,255,255,.94) 0%,rgba(255,255,255,.80) 28%,rgba(255,255,255,.25) 52%,rgba(255,255,255,0) 70%),linear-gradient(0deg,rgba(255,255,255,.9),rgba(255,255,255,0) 22%)}
.seq__in{height:100%;display:grid;grid-template-rows:auto 1fr auto;padding-block:calc(var(--hdr) + 2.5rem) 2rem}
.seq__head{display:grid;gap:.75rem;justify-items:start;max-width:34rem}
.seq__chs{list-style:none;margin:0;padding:0;position:relative;align-self:center;max-width:26rem;min-height:11rem}
.seq__ch{position:absolute;inset:0 auto auto 0;display:grid;gap:.6rem;opacity:0;transform:translateY(16px);transition:opacity .5s,transform .5s;pointer-events:none}
.seq__ch.is-on{opacity:1;transform:none}
.seq__no{font-size:var(--fs-cap);font-weight:500;letter-spacing:var(--track-cap);color:var(--red)}
.seq__ch .h3{color:var(--ink);font-size:var(--fs-h2);font-weight:var(--w-display);line-height:var(--lh-h2)}
.seq__ch p{font-size:var(--fs-lead);line-height:var(--lh-lead);color:var(--ink-2)}
.seq__foot{display:grid;gap:.9rem}
.seq__bar{height:2px;background:rgba(22,32,46,.14);border-radius:2px;overflow:hidden}
.seq__bar i{display:block;height:100%;background:var(--red);transform:scaleX(0);transform-origin:left}
.seq__ticks{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}
.seq__tick{display:flex;align-items:center;gap:.5rem;text-align:start;font-size:var(--fs-ui);color:var(--ink-3);transition:color .3s}
.seq__tick i{width:.4rem;height:.4rem;border-radius:50%;background:currentColor;opacity:.5;flex:none;transition:background .3s,opacity .3s}
.seq__tick:hover{color:var(--ink)}
.seq__tick.is-on{color:var(--blue);font-weight:500}
.seq__tick.is-on i{background:var(--red);opacity:1}
/* without motion: no pinning, the last frame as a still, all four chapters listed */
.seq[data-still]{height:auto}
.seq[data-still] .seq__stick{position:relative;height:auto;padding-bottom:var(--band)}
.seq[data-still] .seq__chs{display:grid;gap:2rem;max-width:40rem;min-height:0;margin-block:2rem}
.seq[data-still] .seq__ch{position:static;opacity:1;transform:none}
.seq[data-still] .seq__foot{display:none}

.specs{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem;margin-top:2.5rem}
.spec{background:var(--paper-2);border-radius:var(--r-panel);padding:clamp(1.5rem,2.6vw,2.5rem)}
.spec dl{margin:1rem 0 0}
.spec dl > div{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;padding:1rem 0;border-top:1px solid var(--line)}
.spec dt{color:var(--ink-2)}
.spec dd{margin:0;display:flex;align-items:baseline;gap:.4rem;white-space:nowrap}
.spec dd b{font-size:var(--fs-h3);font-weight:400;color:var(--blue);font-variant-numeric:tabular-nums}
.spec dd span{font-size:var(--fs-cap);color:var(--ink-3);letter-spacing:.06em}
.bens{list-style:none;margin:2.5rem 0 0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:1.25rem}
.ben{background:var(--paper);border-radius:var(--r-panel);padding:clamp(1.5rem,2.2vw,2rem);display:grid;gap:.6rem;align-content:start}
.ben__no{font-size:var(--fs-cap);font-weight:500;letter-spacing:var(--track-cap);color:var(--red)}
.ben .h3{font-size:1.25rem;line-height:1.3;color:var(--ink)}
.ben p{color:var(--ink-2)}
.chips{list-style:none;margin:2.5rem 0 0;padding:0;display:flex;flex-wrap:wrap;gap:.6rem}
.chips li{padding:.7rem 1.2rem;border-radius:var(--r-pill);background:var(--paper-2);color:var(--blue);font-size:var(--fs-ui)}
.wide{margin:2rem 0 0;border-radius:var(--r-panel);overflow:hidden;background:var(--paper-2);aspect-ratio:16/4.6}
.wide img{width:100%;height:100%;object-fit:cover}
.wide--solo{margin-top:0;aspect-ratio:16/6}
/* R5 (brief 2026-10-15) ─ the brochure menu: FLNG has two brochures, so the
   button opens a choice of both, each with its size */
.dl{position:relative;display:inline-flex}
.dl__chev{width:1rem;height:1rem;transition:rotate .25s}
.dl [aria-expanded="true"] .dl__chev{rotate:180deg}
.dl__menu{position:absolute;top:calc(100% + .5rem);left:0;z-index:30;min-width:max(100%,20rem);list-style:none;margin:0;padding:.4rem;
  background:#fff;border-radius:var(--r-card);box-shadow:0 24px 60px -18px rgba(6,16,30,.45)}
.dl__menu[hidden]{display:none}
.endrow .dl__menu{left:auto;right:0}
.dl__menu a{display:flex;gap:.8rem;align-items:center;padding:.75rem .9rem;border-radius:.6rem;color:var(--ink);font-size:var(--fs-ui);transition:background .2s,color .2s}
.dl__menu a:hover,.dl__menu a:focus-visible{background:var(--paper-2);color:var(--blue)}
.dl__menu svg{width:1.15rem;height:1.15rem;flex:none;color:var(--blue)}
.dl__menu span{display:grid;gap:.1rem}
.dl__menu small{font-size:var(--fs-cap);color:var(--ink-3);letter-spacing:.04em}
/* a technology chip that downloads its document */
.chips li:has(.chip--dl){padding:0;background:none}
.chip--dl{display:inline-flex;align-items:center;gap:.45rem;padding:.7rem 1.2rem;border-radius:var(--r-pill);background:var(--paper-2);color:var(--blue);
  box-shadow:inset 0 0 0 1px rgba(27,54,93,.25);transition:background .2s,color .2s}
.chip--dl:hover{background:var(--blue);color:#fff}
.chip--dl svg{width:1rem;height:1rem}
.spec__more{margin-top:1.5rem}
.spec__more svg{width:1rem;height:1rem}
/* five figure cards (Floating Wind): three across, then two */
.specs--5{grid-template-columns:repeat(6,1fr)}
.specs--5 > :nth-child(-n+3){grid-column:span 2}
.specs--5 > :nth-child(n+4){grid-column:span 3}
/* FLNG's two technology routes and their standard train sizes */
.routes{margin-top:1.25rem;background:var(--paper-2);border-radius:var(--r-panel);padding:clamp(1.5rem,2.6vw,2.5rem);display:grid;gap:1.5rem}
.route{display:grid;grid-template-columns:minmax(15rem,1fr) 2.4fr;gap:1.5rem 2.5rem;align-items:center;padding-top:1.5rem;border-top:1px solid var(--line)}
.route__head{display:grid;gap:.35rem}
.route__head .h3{color:var(--ink)}
.route__name{color:var(--blue);font-weight:500}
.route__head p:last-child{color:var(--ink-2);font-size:var(--fs-ui)}
.route__trains{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,1fr);gap:.75rem}
.route__trains li{background:#fff;border-radius:var(--r-card);padding:1rem 1.1rem;display:grid;grid-template-columns:auto 1fr;align-items:baseline;gap:.15rem .35rem}
.route__trains b{font-size:var(--fs-h3);font-weight:400;color:var(--blue);font-variant-numeric:tabular-nums}
.route__trains span{font-size:var(--fs-cap);color:var(--ink-3);letter-spacing:.06em}
.route__trains small{grid-column:1/-1;margin-top:.35rem;font-size:var(--fs-cap);color:var(--ink-2)}
.routes__note{font-size:var(--fs-cap);color:var(--ink-3)}
/* the project page: milestones five across, photographs two by two */
.bhead .lead{margin-top:.25rem}
.bens--ms{grid-template-columns:repeat(5,1fr)}
.gallery{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem}
.gallery figure{margin:0;border-radius:var(--r-panel);overflow:hidden;aspect-ratio:3/2;background:var(--paper-2)}
.gallery img{width:100%;height:100%;object-fit:cover}
@media (max-width:1100px){
  .bens--ms{grid-template-columns:repeat(3,1fr)}
  .route{grid-template-columns:1fr}
}
@media (max-width:960px){
  .specs{grid-template-columns:1fr}
  .specs--5 > *{grid-column:auto !important}
  .bens{grid-template-columns:1fr 1fr}
  .seq{height:420vh}
  /* a portrait window would blow the frame up past its resolution: the film
     becomes a 16:9 plate under the words instead of the whole window */
  .seq__stick{background:var(--paper)}
  .seq__canvas,.seq__stills{inset:auto 0 auto 0;top:48%;height:auto;aspect-ratio:16/9;z-index:0;border-radius:0}
  .seq__shade{display:none}
  .seq__chs{align-self:start;margin-top:1.25rem;min-height:9rem}
  .seq__ticks{grid-template-columns:1fr 1fr}
}
@media (max-width:640px){
  /* portrait: the subject sits low, the words on a shaded sky above it */
  .hero--sub .hero__still{transform:scale(1.08);transform-origin:50% 100%;object-position:62% 100%}
  .hero--sub .hero__media::after{background:linear-gradient(180deg,rgba(6,16,30,.7),rgba(6,16,30,.35) 45%,transparent 70%,rgba(0,0,0,.3))}
  .bens{grid-template-columns:1fr}
  .wide{aspect-ratio:16/8}
  .route__trains{grid-template-columns:1fr 1fr}
  /* a worded value (Nguya's location) wraps on a phone instead of widening the card */
  .specs{grid-template-columns:minmax(0,1fr)}
  .spec dd{white-space:normal;justify-content:flex-end;text-align:end;min-width:0}
  .gallery{grid-template-columns:1fr}
  .dl__menu{min-width:min(20rem,calc(100vw - 2rem))}
  .endrow .dl__menu{left:0;right:auto}
  .seq__ch .h3{font-size:var(--fs-h3)}
}

/* ═══ §18 the meeting / enquiry form (restored from R3) ═══════════════
   One window for the site. Two tabs, Register and Enquiry, as a segmented
   control like the product pills; the fields are quiet tinted boxes. */
.cform{border:0;padding:0;margin:auto;width:min(36rem,calc(100% - 2rem));max-height:calc(100svh - 2rem);overflow:auto;
  border-radius:var(--r-panel);background:#fff;color:var(--ink);box-shadow:0 40px 90px -20px rgba(6,16,30,.5)}
.cform::backdrop{background:rgba(6,16,30,.45);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.cform[open]{animation:cform-in .35s cubic-bezier(.2,.8,.2,1)}
@keyframes cform-in{from{opacity:0;transform:translateY(14px) scale(.98)}}
.cform__head{position:sticky;top:0;z-index:1;display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1rem 0 1.5rem;background:#fff}
.cform__tabs{display:flex;gap:.3rem;padding:.3rem;border-radius:var(--r-pill);box-shadow:0 0 0 1px #D5DEE9}
.cform__tab{padding:.55rem 1.1rem;border-radius:var(--r-pill);font-size:var(--fs-ui);font-weight:500;color:var(--ink-2);transition:background .25s,color .25s}
.cform__tab:hover{color:var(--blue)}
.cform__tab[aria-selected="true"]{background:var(--blue);color:#fff}
.cform__x{width:2.5rem;height:2.5rem;border-radius:50%;display:grid;place-items:center;background:var(--paper-2);color:var(--ink-2);transition:background .2s,color .2s}
.cform__x:hover{background:var(--blue);color:#fff}
.cform__x svg{width:1rem;height:1rem}
.cform__panel{padding:1.5rem 1.5rem 1.75rem}
.cform__h{font-size:var(--fs-h3);line-height:var(--lh-h3);font-weight:var(--w-h3);color:var(--ink)}
.cform__note{margin-top:.35rem;color:var(--ink-2);font-size:var(--fs-ui)}
.cform__ctx{display:inline-block;margin-top:1rem;padding:.4rem .8rem;border-radius:var(--r-pill);background:var(--paper-2);font-size:var(--fs-cap);color:var(--blue);font-weight:500}
.cform__grid{display:grid;grid-template-columns:1fr 1fr;gap:.9rem;margin-top:1.25rem}
.cform__l{display:grid;gap:.35rem;font-size:var(--fs-cap);color:var(--ink-2)}
.cform__l--wide{grid-column:1/-1}
.cform__f{width:100%;font:inherit;font-size:var(--fs-body);color:var(--ink);background:var(--paper-2);border:1px solid transparent;border-radius:.75rem;padding:.8rem .95rem;transition:border-color .2s,background .2s}
select.cform__f{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231B365D' stroke-width='1.8'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .8rem center;background-size:1rem;padding-right:2.4rem}
textarea.cform__f{resize:vertical;min-height:6rem}
.cform__f:focus{outline:none;border-color:var(--blue);background:#fff}
.cform__f.is-bad{border-color:var(--red)}
.btn--blue{background:var(--blue);color:#fff}
.btn--blue:hover{background:var(--red);color:#fff}
.cform__submit{margin-top:1.25rem;width:100%}
.cform__priv{margin-top:.75rem;font-size:var(--fs-cap);color:var(--ink-3);text-align:center}
.cform__ok{display:grid;justify-items:center;gap:1rem;text-align:center;padding:2.5rem 1rem 1rem}
.cform__ok[hidden]{display:none}
.cform__ok p{font-size:var(--fs-lead);color:var(--ink)}
.cform__tick{width:3.5rem;height:3.5rem;border-radius:50%;display:grid;place-items:center;background:var(--blue);color:#fff}
.cform__tick svg{width:1.6rem;height:1.6rem}
html:has(.cform[open]){overflow:hidden}
@media (max-width:640px){
  .cform{width:100%;max-width:none;margin:auto 0 0;border-radius:var(--r-panel) var(--r-panel) 0 0;max-height:92svh}
  .cform__grid{grid-template-columns:1fr}
  .cform__tab{padding:.5rem .8rem}
}

/* TEMPORARY (client test, 2026-10-20): the "What we do" title in brand blue
   #1B365D, to judge the colour on a title. Delete this rule to undo. */
.is-home #main .h2{color:var(--blue)}
