/*
Theme Name: GainVector
Description: GainVector procurement website, editorial dossier system.
Version: 4.69.10
Requires at least: 6.6
Requires PHP: 8.0
Author: GainVector
Text Domain: gainvector

/* v4.0.0 paper: warm beige/cream banned — cool white #FFFFFF + FAQ #F5F7FA */
*/
/* v3.9.14：后三张板块图换成透明底 v2（calls / trust / questions） */
/* v3.9.16：首屏去掉假档案 dossier，只留文案+CTA */
/* v3.9.16：Trust/FAQ 拉开色阶，减轻首页连片发灰 */

/* v3.7.2: font-display optional eliminates the font-swap flash on navigation; cached fonts render instantly */
@font-face{font-family:Space;src:url('assets/space-grotesk.woff2') format('woff2');font-weight:400;font-display:swap;size-adjust:98%;ascent-override:95%;descent-override:22%}
@font-face{font-family:Space;src:url('assets/space-grotesk-500.woff2') format('woff2');font-weight:500;font-display:swap;size-adjust:98%;ascent-override:95%;descent-override:22%}
@font-face{font-family:Space;src:url('assets/space-grotesk-700.woff2') format('woff2');font-weight:700;font-display:swap;size-adjust:98%;ascent-override:95%;descent-override:22%}
@font-face{font-family:Inter;src:url('assets/inter.woff2') format('woff2');font-weight:400;font-display:swap;size-adjust:100%;ascent-override:98%;descent-override:24%}
@font-face{font-family:Inter;src:url('assets/inter-600.woff2') format('woff2');font-weight:600;font-display:swap;size-adjust:100%;ascent-override:98%;descent-override:24%}
:root{--ink:#0A1B2E;--blue:#0655BD;--blue-deep:#001D53;--blue-bright:#0589FA;--teal:#0A7C74;--teal-bright:#11B8AE;--paper:#FFFFFF;--line:#D8E1E7;--soft:#EFF4F8;--white:#FFF;--grad:linear-gradient(90deg,#0655BD,#0E9E95)}
*{box-sizing:border-box}html{scroll-behavior:auto}body{margin:0;background:var(--paper);color:var(--ink);font-family:Inter,system-ui,sans-serif;font-size:16px;line-height:1.65}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:Space,system-ui,sans-serif;letter-spacing:-.045em;line-height:1.08;font-weight:500}a{color:inherit;text-decoration-thickness:1px;text-underline-offset:4px}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #0655bd;outline-offset:4px}button,input,textarea,select{font:inherit}img,svg{max-width:100%}.wp-site-blocks>*{margin-block:0!important}.wrap{max-width:clamp(1320px,92vw,1800px);margin-inline:auto;padding-inline:clamp(22px,5vw,76px)}.eyebrow{font:600 11px/1.4 Inter,sans-serif;letter-spacing:.16em;text-transform:uppercase}.section{padding-block:clamp(74px,9vw,138px)}.button-link{display:inline-flex;align-items:center;justify-content:center;gap:20px;background:var(--blue);color:#fff;text-decoration:none;padding:16px 21px;min-height:52px;font-weight:600;font-size:14px;border:1px solid var(--blue);transition:background .2s}.button-link:hover{background:#06459e}.text-link{font-weight:600;text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:4px}.site-header{border-bottom:1px solid var(--line);background:var(--paper)}.site-header-inner{min-height:84px;display:flex;align-items:center;justify-content:space-between;gap:24px}.site-brand{font:600 28px/1 Space,sans-serif;letter-spacing:-.06em;text-decoration:none}.site-brand span{color:var(--blue)}.site-nav{display:flex;align-items:center;margin-left:auto;flex-wrap:nowrap;gap:clamp(18px,2vw,28px);font-size:15px;font-weight:600}.site-nav a:not(.button-link){text-decoration:none}.site-nav a:not(.button-link):hover{text-decoration:underline}.site-nav .button-link{padding:12px 17px;min-height:44px}.hero{position:relative;overflow:hidden}.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;min-height:650px;align-items:center;gap:3vw}.hero-copy{padding-block:70px 80px;position:relative;z-index:1}.hero-copy .eyebrow{color:var(--blue);margin-bottom:32px}.hero h1{font-size:clamp(48px,5.7vw,78px);max-width:760px}.hero h1 em{font-style:normal;color:var(--blue)}.hero-lead{font-size:clamp(17px,1.4vw,19px);line-height:1.7;max-width:540px;margin-top:28px;color:#4a5a6b}.hero-actions{display:flex;align-items:center;gap:28px;flex-wrap:wrap;margin-top:36px}.hero-art{min-height:500px;position:relative;background:url('assets/route.svg') center/contain no-repeat}.hero-art-label{position:absolute;top:17%;right:0;font:600 11px/1.5 Inter,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#4a5a6b}.hero-art-caption{position:absolute;bottom:16%;left:10%;font:500 12px/1.5 Inter,sans-serif;color:#4a5a6b}.proof-strip{display:grid;grid-template-columns:1fr 1fr 1fr;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.proof-strip p{padding:23px 24px;border-right:1px solid var(--line);font-size:13px}.proof-strip p:first-child{padding-left:0}.proof-strip p:last-child{border:0}.proof-strip strong{display:block;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--blue);margin-bottom:4px}.intro-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:8vw}.section-label{color:var(--blue);margin-bottom:24px}.section-title{font-size:clamp(38px,4.8vw,64px);max-width:700px}.section-copy{font-size:17px;color:#4a5a6b;max-width:610px;margin-top:24px}.service-rows{margin-top:65px;border-top:1px solid var(--ink)}.service-row{display:grid;grid-template-columns:80px 1fr 1fr;gap:24px;padding:30px 0;border-bottom:1px solid var(--line);align-items:start}.service-number{font:500 13px Space,sans-serif;color:var(--blue)}.service-row h3{font-size:clamp(25px,2.8vw,37px)}.service-row p{color:#4a5a6b;max-width:470px}.service-more{margin-top:36px}.dark-section{background:var(--ink);color:#fff}.dark-section .section-label{color:#7de0ce}.dark-section .section-copy{color:#d8e1e7}.route-steps{display:grid;grid-template-columns:repeat(5,1fr);margin-top:70px;position:relative}.route-steps:before{content:'';position:absolute;top:8px;left:0;right:0;height:1px;background:#6b87a8}.route-step{position:relative;padding:34px 25px 0 0}.route-step:before{content:'';position:absolute;top:3px;left:0;width:11px;height:11px;border:2px solid #7de0ce;border-radius:50%;background:var(--ink)}.route-step h3{font-size:22px;letter-spacing:-.02em;margin-bottom:10px}.route-step p{font-size:14px;line-height:1.6;color:#d8e1e7}.sample-section{background:#eff4f8}.sample-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:7vw;align-items:center}.sample-paper{background:#fff;padding:clamp(24px,4vw,50px);box-shadow:0 25px 65px rgba(21,36,58,.08);transform:rotate(1deg)}.sample-top{display:flex;justify-content:space-between;gap:15px;padding-bottom:25px;border-bottom:2px solid var(--ink)}.sample-top strong{font:500 24px Space,sans-serif}.sample-top span{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--blue)}.sample-row{display:grid;grid-template-columns:120px 1fr;gap:15px;padding:16px 0;border-bottom:1px solid var(--line);font-size:13px}.sample-row strong{font-size:11px;text-transform:uppercase;letter-spacing:.08em}.faq-grid{display:grid;grid-template-columns:.75fr 1.25fr;gap:8vw}.faq-list{border-top:1px solid var(--ink)}.faq-item{padding:22px 0;border-bottom:1px solid var(--line)}.faq-item h3{font:600 17px/1.4 Inter,sans-serif;letter-spacing:0;margin-bottom:9px}.faq-item p{font-size:15px;color:#4a5a6b}.closing{background:var(--blue);color:#fff}.closing .wrap{display:flex;justify-content:space-between;align-items:end;gap:30px}.closing h2{font-size:clamp(40px,5vw,70px);max-width:650px}.closing p{margin-top:20px;color:#e3edfb}.closing .button-link{background:#fff;color:var(--ink);border-color:#fff;white-space:nowrap}.site-footer{background:#001d53;color:#fff;padding:65px 0 32px}.footer-grid{display:flex;justify-content:space-between;gap:40px;flex-wrap:wrap}.footer-statement{font:500 clamp(26px,3vw,39px)/1.15 Space,sans-serif;letter-spacing:-.04em;max-width:400px}.footer-links{display:flex;gap:22px;flex-direction:column;font-size:14px}.footer-bottom{border-top:1px solid #4a5a6b;margin-top:65px;padding-top:25px;display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;color:#a7b5c2;font-size:12px}.page-hero{padding-block:clamp(70px,9vw,130px);border-bottom:1px solid var(--line)}.page-hero h1{font-size:clamp(48px,6vw,82px);max-width:900px}.page-hero .eyebrow{color:var(--blue);margin-bottom:26px}.page-hero > .wrap > p:not(.eyebrow){max-width:650px;margin-top:24px;font-size:18px;color:#4a5a6b}.content-grid{display:grid;grid-template-columns:.75fr 1.25fr;gap:8vw}.content-grid h2{font-size:clamp(34px,4vw,52px)}.prose{max-width:730px}.prose p{margin-bottom:18px;color:#4a5a6b}.prose h3{font-size:25px;margin:36px 0 12px}.prose ul{padding-left:20px}.rule-section{border-bottom:1px solid var(--line)}.contact-layout{display:grid;grid-template-columns:.8fr 1.2fr;gap:8vw}.contact-layout h2{font-size:clamp(35px,4vw,54px)}.contact-layout p{margin-top:20px;color:#4a5a6b}.gv-form{background:#fff;padding:clamp(24px,4vw,50px);box-shadow:0 25px 65px rgba(21,36,58,.08)}.gv-form h2{font-size:30px;margin-bottom:12px}.gv-form .form-intro{font-size:14px;margin:0 0 28px}.gv-field{margin:0 0 20px}.gv-field label{display:block;font-size:13px;font-weight:600;margin-bottom:7px}.gv-field input,.gv-field textarea,.gv-field select{width:100%;border:1px solid #a7b5c2;border-radius:2px;padding:12px;color:var(--ink);background:#fff}.gv-field textarea{resize:vertical}.gv-field small{font-weight:400;color:#4a5a6b}.gv-form button{cursor:pointer}.gv-status{font-size:14px;min-height:24px}.gv-result[hidden]{display:none}.gv-result textarea{width:100%;min-height:170px}.gv-notice{font-size:13px;color:#4a5a6b}.gv-contact-links{margin-top:28px}.gv-contact-links a{display:inline-block;margin-right:18px}.wp-block-post-content{margin:0!important}
@media(max-width:900px){.hero-grid{grid-template-columns:1fr;gap:0}.hero-copy{padding-bottom:20px}.hero-art{min-height:370px;max-width:650px;width:100%;margin:auto}.hero-art-label{top:12%}.hero-art-caption{bottom:10%}.route-steps{grid-template-columns:1fr;gap:0;margin-top:45px}.route-steps:before{top:0;bottom:0;left:5px;right:auto;width:1px;height:auto}.route-step{padding:0 0 30px 35px}.route-step:before{top:5px}.sample-grid,.faq-grid,.content-grid,.contact-layout{grid-template-columns:1fr;gap:40px}.intro-grid{grid-template-columns:1fr;gap:10px}.closing .wrap{align-items:start;flex-direction:column}.site-nav{gap:18px}.site-nav .button-link{display:none}}
@media(max-width:600px){.site-header-inner{align-items:flex-start;flex-direction:column;padding-block:18px;gap:14px}.site-nav{width:100%;justify-content:space-between;gap:12px;font-size:12px}.hero-grid{min-height:0}.hero-copy{padding-top:60px}.hero h1{font-size:clamp(43px,11vw,58px)}.hero-art{min-height:290px}.proof-strip{grid-template-columns:1fr}.proof-strip p,.proof-strip p:first-child{padding:14px 0;border-right:0;border-bottom:1px solid var(--line)}.proof-strip p:last-child{border:0}.service-row{grid-template-columns:40px 1fr;gap:12px}.service-row p{grid-column:2}.sample-paper{transform:none}.sample-row{grid-template-columns:1fr;gap:5px}.footer-bottom{flex-direction:column}.hero-actions{gap:20px}.section{padding-block:75px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}
/* v3.7.1: keep in-page anchor smooth scrolling scoped to content containers, not cross-page navigation */
@media(prefers-reduced-motion:no-preference){.faq-list,.route-steps{scroll-behavior:smooth}}
.site-nav a:not(.button-link){display:inline-flex;align-items:center;min-height:44px}
.site-brand{display:inline-flex;align-items:center;gap:10px;white-space:nowrap}.site-brand:before{content:'';display:block;flex:none;width:45px;height:36px;background-image:url('assets/gainvector-mark-v2.1.2.svg');background-size:contain;background-position:center;background-repeat:no-repeat}.footer-brand{color:#fff;margin-bottom:28px}.footer-brand span{color:#5cd9c6}.footer-brand:before{background-color:#ffffff;border-radius:5px;background-origin:content-box;padding:3px}
.site-brand .brand-word{color:inherit}.site-brand .brand-accent{color:var(--blue)}.footer-brand .brand-word{color:#fff}.footer-brand .brand-accent{color:#5cd9c6}
/* The retained For Agents page remains editable in its original blocks. */
.tv-section{max-width:clamp(1320px,92vw,1800px);margin-inline:auto;padding:80px clamp(22px,5vw,76px)}.tv-section h1{font-size:clamp(45px,6vw,max(72px,3.8vw));max-width:850px}.tv-section h2{font-size:clamp(32px,4vw,max(50px,2.6vw))}.tv-section h3{font-size:24px}.tv-section p{margin:16px 0;max-width:720px}.tv-section .tv-eyebrow,.tv-step-index,.tv-status-kicker{font-size:11px;letter-spacing:.14em;color:#0655bd;font-weight:700}.tv-integration-status{background:#eff4f8;padding:28px;margin:35px 0}.tv-agent-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:25px;margin-top:30px}.tv-agent-card{padding:24px 0;border-top:1px solid #d8e1e7}.tv-section .wp-block-button__link{background:#0655bd;color:white;border-radius:0;padding:14px 20px}.tv-section .is-style-outline .wp-block-button__link{color:#0a1b2e;background:transparent;border:1px solid #0a1b2e}.tv-agents-human{background:#eff4f8}.tv-agents-human .wp-block-column h3{margin-top:25px}.tv-section .wp-block-buttons{margin-top:25px}@media(max-width:600px){.tv-agent-grid{grid-template-columns:1fr}}

/* Brand palette: blue for actions, dark teal for readable accents. */
:root{--ink:#0a1b2e;--blue:#0655bd;--teal:#0a7c74;--paper:#ffffff;--line:#d8e1e7;--soft:#eff4f8}.hero h1 em{color:var(--teal)}.section-label,.proof-strip strong,.service-number,.site-brand .brand-accent{color:var(--teal)}.footer-brand .brand-accent{color:#7de0ce}.closing{background:linear-gradient(115deg,#0655bd,#0a7c74)}.dark-section .section-label{color:#7de0ce}.route-step:before{border-color:#6edfc7}.route-steps:before{background:#2e7f88}.site-header{background:#ffffff}.sample-section{background:#eff4f8}.sample-top span{color:#0a7c74}.gv-form button:focus-visible{outline-color:#0a7c74}

/* v2.3.0 视觉密度：把 logo 的蓝→青带进版面，用细节代替装饰图（v3.7 收敛：页眉渐变底条已随 v2.8 暗色页眉一并废弃） */
:root{--grad:linear-gradient(90deg,#0655bd,#0e9e95)}
.eyebrow.section-label{position:relative;padding-left:34px}
.eyebrow.section-label:before{content:'';position:absolute;left:0;top:-16px;width:26px;height:2px;background:var(--grad)}
.hero h1 em{background:linear-gradient(90deg,#0655bd,#0e9e95);background-size:100% 4px;background-repeat:no-repeat;background-position:0 96%;color:var(--teal)}
.hero-art{position:relative}
.hero-art:before{content:'';position:absolute;inset:-2% -4%;background-image:radial-gradient(circle at 1px 1px,#c3d3e0 1px,transparent 0);background-size:26px 26px;opacity:.3;pointer-events:none;-webkit-mask-image:radial-gradient(circle at 52% 46%,#000 0%,#000 38%,transparent 72%);mask-image:radial-gradient(circle at 52% 46%,#000 0%,#000 38%,transparent 72%)}
.service-number{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:700}
.proof-strip{border-top:2px solid transparent;border-image:var(--grad) 1}
.dark-section{position:relative}
.dark-section:before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:var(--grad)}
.route-steps:before{background:linear-gradient(90deg,#0655bd,#12b6ac)}
.sample-paper{border-top:3px solid transparent;border-image:var(--grad) 1}
/* v2.3.1 再补一层密度：编号放大成幽灵数字，证据带加底色 */
.service-number{background:none;-webkit-text-fill-color:currentColor;color:rgba(6,85,189,.20);font-family:Space,system-ui,sans-serif;font-weight:500;font-size:34px;line-height:1;letter-spacing:-.03em}
.proof-strip{background:#f7f9fb}
.faq-item{border-top:1px solid var(--line)}
/* v2.4.0–v2.6.0 的深色首屏、雾层、地面透视与颗粒叠层已随 v3.0 编辑式改版废弃，v3.7 清理移除。
   仅保留仍生效的样张说明文字定位与配色。 */
.section{position:relative}
.section:before{content:'';position:absolute;left:0;right:0;top:0;height:140px;pointer-events:none;
  background:linear-gradient(180deg,rgba(230,240,247,.85),rgba(230,240,247,0))}
.closing{position:relative;overflow:hidden}
.hero-art-label,.hero-art-caption{color:#A8CBE4;opacity:.9;text-shadow:0 2px 12px rgba(0,10,25,.75)}
.hero-art-label{top:4%;right:2%}
.hero-art-caption{bottom:2%;left:0;letter-spacing:.08em}

/* v2.7.0 表头带：从「三列表格」改成一条有节奏的说明带 */
.proof-strip{
  display:grid;grid-template-columns:repeat(3,1fr);gap:0;border:0;
  background-image:linear-gradient(90deg,#0655bd,#0e9e95),linear-gradient(180deg,#F3F9FD 0%,#FFFFFF 100%);
  background-size:100% 2px,100% 100%;background-repeat:no-repeat;background-position:top left,0 0;
  margin-top:2px}
.proof-strip p{
  position:relative;margin:0;padding:28px 30px 30px 30px;border:0;
  font-size:14px;line-height:1.55;color:#2F4459;transition:background .25s ease}
.proof-strip p:first-child{padding-left:0}
.proof-strip p:last-child{padding-right:0}
.proof-strip p:after{content:'';position:absolute;right:0;top:24px;bottom:24px;width:1px;
  background:linear-gradient(180deg,rgba(6,85,189,0),rgba(6,85,189,.28) 30%,rgba(17,184,174,.28) 70%,rgba(17,184,174,0))}
.proof-strip p:last-child:after{display:none}
.proof-strip p:hover{background:linear-gradient(180deg,rgba(6,85,189,.05),rgba(17,184,174,.03))}
.proof-strip strong{
  display:flex;align-items:center;gap:9px;font-size:11px;letter-spacing:.2em;text-transform:uppercase;
  color:#0A6FD4;margin-bottom:8px;font-weight:700}
.proof-strip strong:before{content:'';flex:none;width:7px;height:7px;border-radius:1px;
  background:linear-gradient(135deg,#0655bd,#0e9e95);box-shadow:0 0 0 3px rgba(6,85,189,.08)}

/* v2.8.0 的暗色页眉已随 v3.0/v3.5/v3.6 浅色页眉覆盖，v3.7 清理移除。 */

/* v3.0: editorial procurement dossier, scoped to the homepage */
body.home .site-header{background:#ffffff;border-bottom:1px solid #d7e0e3}
body.home .site-header .site-brand{color:#102437}
body.home .site-header .site-brand .brand-accent{color:#087b76}
body.home .site-nav a:not(.button-link){color:#263e50}
body.home .site-nav a:not(.button-link):hover{color:#0655bd}
body.home .hero{background:var(--paper);box-shadow:none;overflow:hidden}
body.home .hero:before,body.home .hero:after{display:none}
body.home .hero-grid{min-height:0;grid-template-columns:1fr;gap:0;align-items:start;max-width:760px}
body.home .hero-copy{padding-block:38px 64px}
body.home .hero .eyebrow{color:#08766f;letter-spacing:.15em;margin-bottom:24px}
body.home .hero h1{font-size:clamp(54px,5vw,max(70px,4.4vw));line-height:1.26;color:#102437;text-shadow:none;letter-spacing:-.045em}
body.home .hero h1 em{color:#087d77;background:none;text-shadow:none}
body.home .hero-lead{color:#4c5d68;max-width:none;font-size:17px}
body.home .hero .button-link{background:#0758be;border-color:#0758be;box-shadow:none}
body.home .hero .button-link:hover{background:#06459e}
body.home .hero .text-link{color:#163346;border-color:#69818b}
body.home .hero-art{min-height:0;width:100%;max-width:clamp(510px,27vw,680px);justify-self:end;align-self:center;position:relative;transform:none;mask-image:none;-webkit-mask-image:none;background:none;border-radius:0;box-shadow:none;padding:0 0 32px 24px}
body.home .hero-art:before{content:'';inset:9px -60px 72px 62px;background:#dce8e6;filter:none;opacity:1;mask-image:none;-webkit-mask-image:none;z-index:-1}
body.home .hero-art:after{display:none}
.dossier{background:#fffefa;color:#122b3b;box-shadow:0 18px 60px rgba(32,61,74,.12);border:1px solid #dce4e2;padding:28px 32px 23px}
.dossier p{margin:0}
.dossier-head{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid #cddbd9;padding-bottom:18px}
.dossier-kicker,.dossier-caption,.dossier-label,.dossier-index,.dossier-side{font:700 11px/1.4 Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase}
.dossier-kicker{color:#174b51}.dossier-caption{color:#5b6c73;text-align:right}
.dossier-title{display:flex;justify-content:space-between;align-items:end;padding:26px 0 24px;border-bottom:1px solid #142f3d}
.dossier-heading{font:500 30px/1.12 Space,sans-serif;letter-spacing:-.04em}.dossier-index{color:#61736f}
.dossier-section{padding:18px 0;border-bottom:1px solid #dce6e3}.dossier-label{color:#087d77;margin-bottom:8px!important}.dossier-body{font:500 15px/1.55 Inter,sans-serif}
.dossier-columns{display:grid;grid-template-columns:1fr 1fr;gap:15px;font-size:11px;line-height:1.5;color:#5b6c73}.dossier-columns strong{font-size:11px;letter-spacing:.08em;color:#203c4b}
.dossier-foot{display:flex;justify-content:space-between;align-items:center;padding-top:20px;gap:12px}.dossier-foot .dossier-label{margin:0!important}.dossier-next{font-size:12px;font-weight:600}.dossier-next span{color:#087d77;margin-left:5px}
.dossier-side{color:#627e80;margin-top:18px!important;text-align:right}
body.home .proof-strip{background:#ffffff;background-image:none;border-bottom:1px solid #dce4e2;margin-top:0}
body.home .proof-strip p{padding-top:21px;padding-bottom:21px}
body.home .proof-strip strong{color:#087d77}
body.home .proof-strip strong:before{box-shadow:none;background:#087d77}
body.home .section:before,body.home .dark-section:after,body.home .closing:after{display:none}
body.home .section{padding-block:clamp(75px,7vw,88px)}
body.home .intro-grid{grid-template-columns:.62fr 1.38fr;gap:6vw}
body.home .section-title{font-size:clamp(38px,4vw,max(58px,3vw))}
body.home .service-rows{margin-top:56px}
body.home .service-row{grid-template-columns:80px 1fr 1fr;padding:25px 0}
body.home .service-number{font-size:24px;color:#078079}
body.home .dark-section{background:#102c3b}
body.home .sample-section{background:#e8f0ee}
body.home .sample-paper{transform:none;border:1px solid #cfdedb;border-top:3px solid #078079;box-shadow:0 22px 50px rgba(18,50,57,.08)}
body.home .closing{background:#0755a8}
@media(max-width:900px){body.home .hero-grid{grid-template-columns:1fr;gap:0}body.home .hero-copy{padding-block:34px 20px}body.home .hero-lead{max-width:560px}body.home .hero-art{justify-self:start;margin:0 auto 35px}body.home .intro-grid{grid-template-columns:1fr}}
@media(max-width:600px){body.home .hero h1{font-size:clamp(43px,11vw,58px)}body.home .hero-art{padding-left:10px} .dossier{padding:22px} .dossier-heading{font-size:25px}body.home .section{padding-block:75px}body.home .service-row{grid-template-columns:40px 1fr}body.home .proof-strip p,body.home .proof-strip p:first-child{padding:15px 0}}

/* v3.1: carry the brand blues and teal through the whole homepage */
body.home .hero-art:before{background:linear-gradient(145deg,#c3dde5,#b9dcd4)}
body.home .dossier{border-top:4px solid #1766af}
body.home .dossier-title{border-bottom-color:#236b9d}
body.home .dossier-label{color:#08786f}
body.home .dossier-side{color:#295a71}
body.home .proof-strip{background:#e9f1f4;border-top:1px solid #d3e3e9;border-bottom:1px solid #d3e3e9}
body.home .proof-strip strong{color:#075a9f}
body.home .proof-strip strong:before{background:#07877e}
body.home .service-rows{border-top-color:#176aa2}
body.home .service-number{color:#087c91}
body.home .service-row:nth-child(2) .service-number{color:#0960ac}
body.home .service-row:nth-child(3) .service-number{color:#087e70}
body.home .dark-section{background:linear-gradient(112deg,#082b50 0%,#0b3a55 62%,#0c514f 100%)}
body.home .dark-section .section-label{color:#92eadb}
body.home .route-steps:before{background:linear-gradient(90deg,#4e9de7,#78dbc8)}
body.home .route-step:before{background:#0b3852;border-color:#91ead9}
body.home .sample-section{background:linear-gradient(115deg,#e7f1f2,#e1efea)}
body.home .sample-paper{border-top-color:#087e83}
body.home .closing{background:linear-gradient(110deg,#103e67 0%,#105775 58%,#0d716d 100%)}
body.home .closing .button-link{background:#fffefa;color:#103f62;border-color:#fffefa}
body.home .closing .button-link:hover{background:#e4f4f1;border-color:#e4f4f1}
body.home .site-footer{background:#092b46}
body.home .footer-bottom{border-top-color:#537486}

/* v3.2: continuous surfaces and measured spacing between homepage sections */
body.home .proof-strip{
  max-width:none;
  padding-inline:max(clamp(22px,5vw,76px),calc((100% - clamp(1320px,92vw,1800px))/2 + clamp(22px,5vw,76px)));
  background:var(--soft);
  border:0;
}
body.home .proof-strip + .section{
  background:var(--soft);
  padding-top:clamp(75px,7vw,96px);
}
body.home .dark-section{
  background:linear-gradient(to top,#174757 0%,rgba(23,71,87,0) 90px),linear-gradient(112deg,#082b50 0%,#0b3a55 62%,#0c514f 100%);
}
body.home .sample-section{
  background:var(--soft);
  padding-top:clamp(115px,9vw,135px);
}
body.home .sample-section + .section{
  background:var(--paper);
}
@media(max-width:600px){
  body.home .proof-strip{padding-inline:22px}
  body.home .proof-strip + .section{padding-top:75px}
  body.home .sample-section{padding-top:110px}
}
/* The example sheet bridges the two sections, so the change in surface has a visual anchor. */
@media(min-width:901px){
  body.home .sample-section{padding-top:90px}
  body.home .sample-paper{position:relative;z-index:1;transform:translateY(-120px);margin-bottom:-120px}
}

/* v4.0.0: process band is the ink flip band (spec §3.4), not a light wash. */
body.home .dark-section{
  color:#fff;
  background:var(--ink);
}
body.home .dark-section .section-label{color:#7DE0CE}
body.home .dark-section .section-copy,
body.home .dark-section .route-step p{color:#D8E1E7}
body.home .dark-section .route-step h3{color:#FFF}
body.home .dark-section .route-steps:before{background:#6B87A8}
body.home .dark-section .route-step:before{background:var(--ink);border-color:#7DE0CE}
body.home .sample-section{background:var(--soft);padding-top:90px}
body.home .sample-paper{transform:none;margin-bottom:0}
body.home .sample-section + .section{background:var(--paper)}
/* v3.7.9: keep body copy dark enough on the blue-tinted mid sections */
body.home .section-copy,
body.home .service-row p,
body.home .sample-row p,
body.home .faq-item p,
body.home .sample-section .section-copy,
body.home .proof-strip + .section .section-copy{color:#183244}
body.home .service-row h3,
body.home .faq-item h3{color:#102d3c}
body.home .dark-section .section-label,
body.home .sample-section .section-label,
body.home .proof-strip + .section .section-label{color:#0b5a7a}
@media(max-width:600px){body.home .sample-section{padding-top:75px}}

/* v3.4: keep the blue-green CTA as an inset surface within the page. */
body.home .section.closing{
  background:linear-gradient(180deg,#6f92b3 0%,#4a6e94 55%,#0a2d4e 100%);
  padding:0 clamp(22px,5vw,76px) clamp(70px,7vw,100px);
  margin-top:clamp(-48px,-3.5vw,-24px);
}
body.home .closing .wrap{
  width:100%;max-width:clamp(1168px,80vw,1620px);
  padding:clamp(38px,5vw,70px);
  border-radius:12px;
  background:linear-gradient(110deg,#103e67 0%,#105775 58%,#0d716d 100%);
  color:#fff;
}
body.home .closing .wrap > p{color:#e3f1f1}
body.home .closing .wrap .button-link{color:#103f62}
body.home .site-footer{background:#0a2d4e;color:#dbe7f2;padding-top:68px}
body.home .footer-brand .brand-word{color:#ffffff}
body.home .footer-brand .brand-accent{color:#7de0ce}
body.home .footer-brand:before{background-color:transparent;padding:0}
body.home .site-footer .footer-links{color:#b9cfe0}
body.home .footer-bottom{border-top-color:#33556f;color:#93a9bc}
@media(max-width:600px){body.home .closing .wrap{padding:38px 26px}body.home .site-footer{padding-top:55px}}

/* v3.5: continue the hero background through the home navigation. */
body.home .site-header,
body.home .hero{background:var(--paper)}
body.home .site-header{border-bottom:0}

/* v3.5: primary navigation with highlighted Get A Quote button. */
.site-nav{flex-wrap:wrap;justify-content:flex-end;row-gap:6px}
.site-nav .nav-quote,body.home .site-nav .nav-quote{display:inline-flex;background:var(--blue);color:#fff;border:1px solid var(--blue);border-radius:999px;padding:10px 20px;min-height:42px;font-weight:700;box-shadow:0 6px 18px rgba(6,85,189,.25);white-space:nowrap}
.site-nav .nav-quote:hover{background:#06459e;color:#fff}
@media(max-width:900px){.site-nav .nav-quote{display:inline-flex}}
@media(max-width:600px){.site-nav{justify-content:flex-start;gap:4px 16px}.site-nav .nav-quote{padding:8px 16px;min-height:38px}}
/* v3.6: extend the homepage editorial system to the supporting pages. */
body:not(.home) .site-header{background:linear-gradient(160deg,#c4dcd4 0%,#a9cec4 50%,#8fc0b5 100%);border-bottom:0}
body:not(.home) .site-header .site-brand{color:#102437}
body:not(.home) .site-header .site-brand .brand-accent{color:#087b76}
body:not(.home) .site-nav a:not(.button-link){color:#263e50}
body:not(.home) .site-nav a:not(.button-link):hover{color:#0655bd}
body:not(.home) .page-hero{background:linear-gradient(160deg,#c4dcd4 0%,#a9cec4 50%,#8fc0b5 100%);border:0;padding-block:clamp(56px,6vw,84px) clamp(64px,7vw,96px)}
body:not(.home) .page-hero h1{font-size:clamp(45px,5.1vw,max(76px,4vw));line-height:1.28;letter-spacing:-.045em;color:#102437;max-width:max(900px,48vw)}
body:not(.home) .page-hero .eyebrow,body:not(.home) .section-label{color:#08766f}
body:not(.home) .page-hero > .wrap > p:not(.eyebrow){color:#4c5d68;line-height:1.7}
body:not(.home) .section:not(.closing){padding-block:clamp(75px,7vw,105px)}
body:not(.home) .rule-section{border-color:#d3e1e1}
body:not(.home) .rule-section:nth-of-type(odd){background:#edf4f2}
body:not(.home) .content-grid h2,body:not(.home) .contact-layout h2{color:#102d3c}
body:not(.home) .prose h3{color:#103d50;border-top:1px solid #a9c9c9;padding-top:24px}
body:not(.home) .prose h3:first-child{margin-top:0;border-top:2px solid #147e89}
body:not(.home) .prose p,body:not(.home) .contact-layout p{color:#405c67}
body:not(.home) .section.closing{background:linear-gradient(180deg,rgba(251,250,246,0) 0%,#8fabc8 35%,#3f648c 68%,#0a2d4e 100%);color:#fff;padding:0 clamp(22px,5vw,76px) clamp(70px,7vw,100px);margin-top:clamp(-48px,-3.5vw,-24px)}
body:not(.home) .section.closing:before{display:none}
body:not(.home) .closing .wrap{width:100%;max-width:clamp(1168px,80vw,1620px);background:linear-gradient(110deg,#103e67 0%,#105775 58%,#0d716d 100%);padding:clamp(36px,5vw,72px);align-items:start;flex-wrap:wrap;border-radius:12px}
body:not(.home) .closing .wrap > p{color:#e3f1f1}
body:not(.home) .closing .button-link{color:#103f62;background:#fffefa;border-color:#fffefa}
body:not(.home) .site-footer{background:#0a2d4e;color:#dbe7f2;padding-top:68px}
body:not(.home) .footer-brand .brand-word{color:#ffffff}
body:not(.home) .footer-brand .brand-accent{color:#7de0ce}
body:not(.home) .footer-brand:before{background-color:transparent;padding:0}
body:not(.home) .site-footer .footer-links{color:#b9cfe0}
body:not(.home) .footer-bottom{border-top-color:#33556f;color:#93a9bc}
body:not(.home) .gv-form{border:1px solid #cfdedb;border-top:4px solid #087e83;box-shadow:0 22px 50px rgba(18,50,57,.08)}
body:not(.home) .gv-field input,body:not(.home) .gv-field textarea,body:not(.home) .gv-field select,body:not(.home) .gv-result textarea{border:1px solid #a9c1c4;background:#fbfdfc;border-radius:2px}
body:not(.home) .gv-form .gv-notice{font-size:13px;line-height:1.6;margin:8px 0 22px}
body:not(.home) .gv-result{margin-top:22px}
body:not(.home) .gv-result label{display:block;font-weight:600}
body:not(.home) .gv-select{margin-top:10px;padding:10px 14px;background:#fff;border:1px solid #087e83;color:#075c59;cursor:pointer}
body:not(.home) .tv-section{color:#102d3c}
body:not(.home) .tv-agents-hero{max-width:none;background:linear-gradient(160deg,#c4dcd4,#a9cec4 50%,#8fc0b5);padding-inline:max(clamp(22px,5vw,76px),calc((100vw - 1168px)/2))}
body:not(.home) .tv-agents-hero h1{font-size:clamp(45px,5.1vw,max(76px,4vw));line-height:1.28;letter-spacing:-.045em}
body:not(.home) .tv-section p{color:#405c67}
body:not(.home) .tv-section .tv-eyebrow,body:not(.home) .tv-step-index,body:not(.home) .tv-status-kicker{color:#08766f}
body:not(.home) .tv-integration-status{background:#fffefa;border:1px solid #cfdedb;border-top:4px solid #087e83;box-shadow:0 22px 50px rgba(18,50,57,.06);max-width:850px}
body:not(.home) .tv-integration-status h2{font-size:clamp(27px,3vw,40px)}
body:not(.home) .tv-agent-card{border-top:2px solid #8cbab8}
body:not(.home) .tv-agents-human{background:#eaf3f0}
body:not(.home) .tv-section .wp-block-button__link{border-radius:0;background:#0758be}
body:not(.home) .tv-section .is-style-outline .wp-block-button__link{background:transparent;color:#103d50;border-color:#678c94}
body:not(.home) .pending-panel{border-top:3px solid #087e83;background:#fffefa;padding:clamp(28px,4vw,48px);box-shadow:0 22px 50px rgba(18,50,57,.07)}
body:not(.home) .pending-panel h2{font-size:clamp(28px,3vw,40px);color:#102d3c}
body:not(.home) .pending-panel p{margin-top:18px;color:#405c67}
body:not(.home) .pending-panel .text-link{display:inline-block;margin-top:24px;color:#075a9f}
@media(max-width:600px){body:not(.home) .page-hero h1{font-size:clamp(40px,10vw,54px)}body:not(.home) .closing .wrap{padding:38px 26px}body:not(.home) .site-footer{padding-top:55px}body:not(.home) .tv-agents-hero{padding-inline:22px}}

/* v3.7.0: inquiry form delivery — honeypot off-screen, disabled button state */
.gv-hp{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}
.gv-form button[disabled]{opacity:.6;cursor:wait}

/* v3.8.1: 无 closing 面板的内页，页脚前补米白→深蓝渐变，衔接页脚 */
body:not(.home) main:not(:has(.section.closing))::after{
  content:'';display:block;height:clamp(150px,15vw,220px);
  background:linear-gradient(180deg,#ffffff 0%,#7d9cbd 48%,#0a2d4e 100%);
}

/*
   v3.8.0 (2026-11-03): 板块无缝衔接 + 宽屏流动构图
   1) 渐变端点链条化：信息带起点 #bcd4cc→#b2cdcc（接首屏终点）、流程区起点 #a9c3cd→#a2bfcb（接服务区终点）、
      样例区改恒定 #8ba9c4（承接流程区终点，不再以更浅色重开渐变）——消除相邻区块交界处的横向接缝。
   2) 宽屏自适应：.wrap/.tv-section max-width 1320→clamp(1320px,92vw,1800px)；标题 clamp 上限改为
      max(原上限, grow*vw)，≤1500px 渲染与 v3.7.11 完全一致，更宽窗口时列宽与字号继续按比例增长，
      不再出现「内容列固定 1320px、两侧大片空白」的静止构图。信息带内边距与 closing 面板同步跟随。
   3) v3.8.1：首页 closing 面板上移（顶部内边距归零 + margin-top 负值上浮 24–48px，下方深潜空间 70→100px）；
      服务页 closing 改为首页同款深潜面板；无 closing 的内页在页脚前补一条米白→深蓝渐变过渡，
      消除配套页面「米白硬切深蓝页脚」的断层（:has 排除已有 closing 的页面，避免深潜后再现浅带）。
*/

/* ============================================================
   v3.7.0 execution block — SPEC-GainVector-v3.7.md (2026-11-03)
   A1 mobile service rows · A2 mobile proof strip · A6 aria-current
   B2 collapsed menu ≤1000px · C1 coverage route · C4 closing rows
   C6 sticky mobile CTA
   ============================================================ */

/* A1: 390px 服务行——编号固定首列，标题与正文各占右列，不再重叠 */
@media(max-width:600px){
  body.home .service-row{grid-template-columns:44px 1fr;gap:6px 14px}
  body.home .service-row .service-number{grid-column:1;grid-row:1;font-size:18px;margin:0}
  body.home .service-row h3{grid-column:2;grid-row:1;font-size:26px}
  body.home .service-row > p:not(.service-number){grid-column:2;grid-row:2}
}

/* A2: 390px FOR/WHERE/HOW 信息带恢复单列 */
@media(max-width:600px){
  body.home .proof-strip{grid-template-columns:1fr;padding-block:6px}
  body.home .proof-strip p,
  body.home .proof-strip p:first-child{padding:16px 0;border-bottom:1px solid #d3e3e9}
  body.home .proof-strip p:last-child{border-bottom:0}
  body.home .proof-strip p:after{display:none}
}

/* A6: 当前位置在导航中的视觉标识（aria-current 由 functions.php 写入） */
.site-nav a[aria-current="page"]:not(.button-link),
.nav-toggle-panel a[aria-current="page"]{color:#0758be;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:6px}

/* B2: ≤1100px 收成「品牌 + 折叠 Menu + 固定 CTA」，原生 details/summary，零 JS */
.nav-toggle{display:none}
.header-cta{margin:0;margin-left:clamp(14px,1.5vw,24px);display:inline-flex}
/* v3.7.2: CTA 胶囊样式抽到断点外，全宽度生效，避免 ≤1100px 退化成文字链接 */
.header-cta .nav-quote{
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--blue);color:#fff;border:1px solid var(--blue);
  border-radius:999px;padding:0 18px;min-height:44px;
  font-weight:700;font-size:15px;line-height:1;
  box-shadow:0 6px 18px rgba(6,85,189,.25);white-space:nowrap;text-decoration:none
}
.header-cta .nav-quote:hover{background:#06459e}
@media(max-width:1100px){
  .site-nav-desktop{display:none}
  .nav-toggle{display:block;position:relative}
  .nav-toggle summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 18px;border:1px solid #cfdedb;background:#fffefa;font:600 14px/1 Inter,sans-serif;color:#102437}
  .nav-toggle summary::-webkit-details-marker{display:none}
  .nav-toggle summary:after{content:'';width:8px;height:8px;border-right:2px solid #102437;border-bottom:2px solid #102437;transform:rotate(45deg) translateY(-2px);margin-left:6px}
  .nav-toggle[open] summary:after{transform:rotate(-135deg) translateY(-2px)}
  .nav-toggle[open] summary{background:#eef3f2}
  .nav-toggle-panel{position:absolute;right:0;top:calc(100% + 8px);z-index:60;display:flex;flex-direction:column;min-width:232px;background:#fffefa;border:1px solid #cfdedb;box-shadow:0 22px 50px rgba(18,50,57,.16);padding:8px 0}
  .nav-toggle-panel a{display:flex;align-items:center;min-height:44px;padding:10px 18px;color:#102437;text-decoration:none;font:600 15px/1.2 Inter,sans-serif}
  .nav-toggle-panel a:hover{background:#eef3f2;color:#0758be}
  .nav-toggle-panel .nav-quote{margin:8px 12px 4px;justify-content:center;background:#0758be;border:1px solid #0758be;color:#fff}
  .nav-toggle-panel .nav-quote:hover{background:#06459e;color:#fff}
}
@media(max-width:600px){
  /* 覆盖旧版 600px 页眉纵向堆叠：折叠后保持单行 */
  .site-header-inner{flex-direction:row;align-items:center;padding-block:12px;gap:8px}
  .site-brand{font-size:17px}
  .site-brand:before{width:30px;height:24px}
  .header-cta .nav-quote{min-height:40px;padding:0 11px;font-size:13px;box-shadow:none}
  .nav-toggle summary{padding:0 11px;font-size:13px;min-height:40px}
}
/* v3.7.2: ≤380px 极窄屏，CTA 文案缩短为 "Get a quote"（纯 CSS 换字，不改 HTML） */
@media(max-width:380px){
  .site-header-inner{gap:4px}
  .site-brand{font-size:15px}
  .site-brand:before{width:24px;height:19px}
  .header-cta .nav-quote{font-size:0;padding:0 10px}
  .header-cta .nav-quote:after{content:'Get a quote';font-size:12px;line-height:1}
  .nav-toggle summary{font-size:0;padding:0 9px}
  .nav-toggle summary > span{font-size:12px}
}

/* C1: 覆盖区块——节点式路线图（延续「路径」母题，不用地图底图，不暗示实时物流） */
.coverage-route{display:flex;flex-wrap:wrap;margin:30px 0 18px;align-items:stretch}
.coverage-node{flex:1 1 210px;border-top:2px solid #0d716d;padding:20px 26px 0 0;position:relative}
.coverage-node+.coverage-node{padding-left:26px}
.coverage-node:before{content:'';position:absolute;top:-6px;left:0;width:10px;height:10px;border-radius:50%;background:#087d77;box-shadow:0 0 0 4px rgba(8,125,119,.14)}
.coverage-index{font:700 11px/1.4 Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:#087d77}
.coverage-node strong{display:block;font:500 21px/1.2 Space,sans-serif;letter-spacing:-.02em;color:#102437;margin-top:6px}
.coverage-node em{display:block;font-style:normal;font-size:14px;line-height:1.5;color:#405c67;margin-top:6px}
.coverage-note{font-size:13px;line-height:1.6;color:#5b6c73}
@media(max-width:600px){.coverage-node{flex:1 1 100%;padding:18px 0 0}}

/* C4: 行动区两行结构——标题独占一行，正文与按钮同行 */
.closing .wrap{display:flex;flex-wrap:wrap;align-items:center;column-gap:30px;row-gap:16px}
.closing .wrap h2{flex:1 1 100%}
.closing .wrap p{margin-top:0}
.closing .wrap p:not(:last-child){flex:1 1 320px;max-width:560px}
.closing .wrap p:last-child{flex:0 0 auto}

/* C6: 移动端底部固定「Get A Quote」粘性 CTA */
.mobile-cta{display:none}
body.page-id-23 .mobile-cta{display:none!important}
@media(max-width:600px){
  .mobile-cta{display:block;position:fixed;left:0;right:0;bottom:0;z-index:90;background:#0758be;border-top:1px solid #06459e}
  .mobile-cta a{display:flex;align-items:center;justify-content:center;min-height:52px;color:#fff;text-decoration:none;font:600 15px/1 Inter,sans-serif}
  .mobile-cta a:hover{background:#06459e}
  body{padding-bottom:52px}
}

/* ============================================================
   v3.9.0 · 首页内容架构（SPEC-homepage-v3.6.md）
   段落顺序：Hero → 01 风险 → 02 职责 → 03 流程 → 04 信任 → 05 FAQ → CTA
   背景链条：hero #b2cdcc → gap #b2cdcc→#a2bfcb → solution #a2bfcb→#8ba9c4
            → process #8ba9c4 → trust #8ba9c4→#6f92b3 → faq #6f92b3 → closing
   ============================================================ */
body.home .hero-sub{margin-top:20px;font:500 clamp(20px,2.1vw,28px)/1.35 Space,sans-serif;letter-spacing:-.03em;color:#16343f}
body.home .hero-lead{margin-top:16px;color:#3f5561}
/* v3.9.5：首屏口号回退到 500 常规字重（700 太抢），字号补偿性放大，见下方 h1 尺寸 */
body.home .hero h1{font-weight:500}
body.home .section.gap-section{background:#eaf1f4;padding-top:clamp(80px,7.5vw,104px)}
body.home .section.solution-section{background:var(--paper)}
.section.process-section{background:var(--ink);color:#fff;scroll-margin-top:84px}
body.home .section.trust-section{background:var(--paper)}
body.home .section.faq-section{background:#F5F7FA}
/* 段落标签在蓝绿中调面上改为深墨色，保证 11px 小字仍可读 */
body.home .section-label{color:#0a2233}
/* FAQ 段是 #6f92b3 的平涂底，正文需再深一档才过 4.5:1 */
body.home .faq-section .faq-item p{color:#0d2233}

/* 问题清单：两列编号行，与下方「职责」的宽行列表形成区分 */
.gap-rows{display:grid;grid-template-columns:1fr 1fr;column-gap:clamp(28px,5vw,72px);margin-top:clamp(36px,4vw,58px);border-top:1px solid rgba(9,45,68,.4)}
.gap-row{display:grid;grid-template-columns:40px 1fr;column-gap:16px;align-items:start;padding:clamp(20px,2.3vw,30px) 0;border-bottom:1px solid rgba(9,45,68,.22)}
.gap-index{font:500 13px/1.5 Space,sans-serif;color:#0b4a5c;padding-top:7px}
.gap-row h3{font-size:clamp(20px,2vw,26px);line-height:1.2;letter-spacing:-.02em;color:#102d3c}
.gap-row > p:not(.gap-index){grid-column:2;margin-top:6px;font-size:15px;line-height:1.65;color:#183244;max-width:430px}

/* 信任带 v3.9.3：一句导语 + 四条可核事实（v3.9.2 前的单句说明与 Ask for references 链接已撤） */
body.home .trust-band{border-top:1px solid rgba(9,45,68,.35);padding-top:clamp(28px,3vw,44px)}
body.home .trust-title{font-size:clamp(30px,3.6vw,46px);line-height:1.08}
body.home .trust-note{margin-top:16px;font-size:16px;line-height:1.7;color:#16303f;max-width:620px}
body.home .trust-list{display:grid;grid-template-columns:1fr 1fr;gap:clamp(18px,2.2vw,30px) clamp(28px,4vw,56px);margin-top:clamp(26px,2.8vw,38px);max-width:920px}
body.home .trust-list > .wp-block-paragraph{border-top:1px solid rgba(9,45,68,.28);padding-top:14px;font-size:15px;line-height:1.65;color:#16303f}
body.home .trust-list strong{font-weight:600;color:#0d2233}

/* v3.9.11：图版去掉白底，用 multiply 直接印在区块渐变上 */
body.home .section-rail{display:flex;flex-direction:column;height:100%}
body.home .section-rail .section-label{margin-bottom:0}
.section-plate{margin:clamp(20px,2.4vw,32px) 0 0;position:relative;flex:1 1 auto;min-height:240px;display:flex;align-items:center;justify-content:center;background:none;padding:0;border-radius:0}
.section-plate img{width:100%;height:100%;object-fit:contain;display:block}

/* 图版所在的左列放宽 */
body.home .gap-section .intro-grid{grid-template-columns:.9fr 1.1fr}
body.home .gap-section .section-plate{max-height:380px}
body.home .trust-section .intro-grid{grid-template-columns:.9fr 1.1fr}
body.home .faq-section .faq-grid{grid-template-columns:.9fr 1.1fr}
.process-head{display:grid;grid-template-columns:minmax(0,.92fr) minmax(300px,1.08fr);gap:clamp(32px,6vw,88px)}
.process-head .section-plate{margin-top:0;height:340px;min-height:0}
/* v3.9.9：结尾 CTA 放大、圆角，和面板的 12px 圆角呼应 */
.closing .button-link{padding:20px 30px;min-height:60px;font-size:15px;gap:24px;border-radius:10px}

/* v3.9.8：结尾面板 CTA 移到右列，标题独占左列 */
body:not(.home) .closing .wrap{display:grid;grid-template-columns:minmax(0,1.32fr) minmax(260px,.68fr);grid-template-rows:auto 1fr;column-gap:clamp(40px,5vw,84px);row-gap:clamp(16px,2vw,26px);align-items:start}
body:not(.home) .closing .wrap h2{grid-column:1;grid-row:1 / span 2}
body:not(.home) .closing .wrap > p:not(:last-child){grid-column:2;grid-row:1;max-width:410px;margin-top:6px}
body:not(.home) .closing .wrap > p:last-child{grid-column:2;grid-row:2;align-self:end;justify-self:center;margin-top:0}
@media(max-width:900px){body:not(.home) .closing .wrap{grid-template-columns:1fr;row-gap:16px}body:not(.home) .closing .wrap h2,body:not(.home) .closing .wrap > p:not(:last-child),body:not(.home) .closing .wrap > p:last-child{grid-column:1;grid-row:auto;justify-self:start}body:not(.home) .closing .wrap > p:last-child{align-self:start;margin-top:6px}}

body.home .closing .wrap{display:grid;grid-template-columns:minmax(0,1.32fr) minmax(260px,.68fr);grid-template-rows:auto 1fr;column-gap:clamp(40px,5vw,84px);row-gap:clamp(16px,2vw,26px);align-items:start}
body.home .closing .wrap h2{grid-column:1;grid-row:1 / span 2}
body.home .closing .wrap > p:not(:last-child){grid-column:2;grid-row:1;max-width:410px;margin-top:6px}
body.home .closing .wrap > p:last-child{grid-column:2;grid-row:2;align-self:end;justify-self:center;margin-top:0}

@media(max-width:900px){
  .gap-rows{grid-template-columns:1fr}
  body.home .trust-list{grid-template-columns:1fr}
  body.home .section-rail{height:auto}
  .section-plate{flex:none;aspect-ratio:16/10;min-height:0}
  .process-head{grid-template-columns:1fr;gap:24px}
  .process-head .section-plate{height:auto;aspect-ratio:16/9;min-height:0}
  body.home .trust-band{padding-top:26px}
  /* C4 的两行结构在 ≤900px 变成纵向 flex 后，320px 的 flex-basis 会变成高度，留下大片空白 */
  body.home .closing .wrap{grid-template-columns:1fr;align-items:flex-start;row-gap:18px}
  body.home .closing .wrap h2,body.home .closing .wrap > p:not(:last-child),body.home .closing .wrap > p:last-child{grid-column:1;grid-row:auto;justify-self:start}
  body.home .closing .wrap > *{flex:0 0 auto;max-width:100%}
}
@media(max-width:600px){
  body.home .section.gap-section{padding-top:75px}
  /* 500 字重更窄：390px 下退到 10.2vw，320px 仍两行 */
  body.home .hero h1{font-size:clamp(32px,10.2vw,56px)}
  .gap-row{grid-template-columns:32px 1fr;column-gap:12px}
  .gap-row > p:not(.gap-index){grid-column:2;font-size:14px}
  body.home .trust-note{font-size:15px}
  body.home .trust-list > .wp-block-paragraph{font-size:14px}
}
/* v3.9.16 section contrast */
body.home .trust-section .section-label{color:var(--teal)}
body.home .trust-section .trust-title,
body.home .trust-section .section-title{color:var(--ink)}
body.home .trust-section .trust-note,
body.home .trust-section .trust-list p,
body.home .trust-section .section-copy{color:#4A5A6B}
body.home .faq-section .section-label{color:#0a5c56}
body.home .faq-section .section-title{color:#102437}
body.home .faq-section .faq-item p{color:#1c3342}
body.home .faq-section .faq-item{border-color:rgba(16,36,55,.12)}


/* v4.0.0: trust band on paper — dark type (was light type on a dark blue band) */
body.home .trust-section .section-label{color:var(--teal)}
body.home .trust-section .trust-title,
body.home .trust-section .section-title{color:var(--ink)}
body.home .trust-section .trust-note,
body.home .trust-section .trust-list p,
body.home .trust-section .trust-list > .wp-block-paragraph,
body.home .trust-section .section-copy{color:#4A5A6B}
body.home .trust-section .trust-list strong{color:var(--ink)}
body.home .trust-section .trust-band{border-top-color:rgba(10,27,46,.18)}
body.home .trust-section .trust-list > .wp-block-paragraph{border-top-color:rgba(10,27,46,.14)}
body.home .section.faq-section{background:#F5F7FA}
body.home .faq-section .section-label{color:#0a5c56}
body.home .faq-section .section-title{color:#102437}
body.home .faq-section .faq-item h3{color:#102437}
body.home .faq-section .faq-item p{color:#1c3342}
body.home .faq-section .faq-item{border-color:rgba(16,36,55,.12)}
body.home .faq-section .faq-list{border-top-color:rgba(16,36,55,.35)}

/* ===== v4.0.0 KPI strip (spec §4.4) ===== */
body.home .kpi-strip{background:#fff;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding-block:48px}
body.home .kpi-strip-inner{max-width:clamp(1320px,92vw,1800px);margin-inline:auto;padding-inline:clamp(22px,5vw,76px)}
body.home .kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:0}
body.home .kpi-item{padding:24px 32px;text-align:left;position:relative}
body.home .kpi-item:not(:last-child):after{content:"";position:absolute;right:0;top:24px;bottom:24px;width:1px;background:var(--line)}
body.home .kpi-value{font-family:Space,system-ui,sans-serif;font-weight:500;font-size:clamp(48px,5vw,72px);line-height:1;letter-spacing:-.04em;color:var(--ink);font-variant-numeric:tabular-nums}
body.home .kpi-label{margin-top:14px;font:600 17px/1.4 Inter,sans-serif;color:#33424f;letter-spacing:.01em}
.screen-reader-text{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:768px){
  body.home .kpi-grid{grid-template-columns:1fr 1fr}
  body.home .kpi-item:nth-child(2):after{display:none}
}
@media(max-width:480px){
  body.home .kpi-grid{grid-template-columns:1fr}
  body.home .kpi-item:after{display:none}
  body.home .kpi-item{border-bottom:1px solid var(--line)}
  body.home .kpi-item:last-child{border-bottom:0}
}

/* v4.0.5 — 导航 24px、首屏按钮放大、KPI 说明字号上调 */
.site-nav{font-size:24px;gap:20px}
@media(min-width:1101px){.header-cta{margin-left:clamp(18px,1.6vw,30px)}}
.header-cta .nav-quote{padding:0 24px;font-size:18px;min-height:54px}
@media(max-width:1279px){.site-nav{font-size:20px;gap:18px}}
@media(max-width:1160px){.site-nav{font-size:18px;gap:16px}}
@media(max-width:600px){.site-nav{font-size:12px}}
@media(max-width:380px){
  .header-cta{display:none}
}

@media(min-width:1101px){
  body.home .hero{background-image:none}
  body.home .hero-grid{max-width:none}
  body.home .hero-copy{
    display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);
    column-gap:clamp(40px,4.4vw,76px);align-items:start
  }
  body.home .hero-copy > .eyebrow{grid-column:1;grid-row:1}
  body.home .hero-copy > h1{grid-column:1;grid-row:2}
  body.home .hero-copy > .hero-sub{grid-column:1;grid-row:3;margin-left:0}
  body.home .hero-copy > .hero-lead{grid-column:2;grid-row:2;margin:0;align-self:start;line-height:1.75}
  body.home .hero-copy > .hero-actions{grid-column:2;grid-row:3;margin:20px 0 0;align-self:start;gap:14px}
  body.home .hero .button-link{font-size:22px;padding:24px 32px;min-height:86px;border-radius:10px}
  body.home .hero .text-link{font-size:20px}
  @media(max-width:1279px){
    body.home .hero-copy > .hero-actions{gap:16px}
    body.home .hero .button-link{font-size:17px;padding:22px 34px;min-height:74px}
    body.home .hero .text-link{font-size:17px}
  }
}
@media(max-width:1100px){
  body.home .hero-sub,body.home .hero-lead,body.home .hero-actions{margin-left:0}
  body.home .hero-actions{margin-top:26px}
  body.home .hero h1{max-width:566px}
  body.home .hero-lead{max-width:600px}
  .header-cta{margin-left:auto}
}

/* ===== v4.1.0 hero photo — Ningbo-Zhoushan port (Chuanshan), teal grade ===== */
body.home .hero{
  background-color:#08222d;
  background-image:
    linear-gradient(100deg,rgba(2,10,17,.76) 0%,rgba(2,10,17,.46) 36%,rgba(2,10,17,.14) 70%,rgba(2,10,17,.04) 100%),
    radial-gradient(125% 95% at 76% 50%,rgba(2,10,17,.55) 0%,rgba(2,10,17,.24) 44%,rgba(2,10,17,0) 74%),
    url("assets/hero-port.webp");
  background-position:0 0,0 0,center 42%;
  background-size:100% 100%,100% 100%,cover;
  background-repeat:no-repeat,no-repeat,no-repeat;
  min-height:clamp(560px,44vw,720px);
  display:flex;
  align-items:center;
}
body.home .hero .wrap{width:100%}
body.home .hero .eyebrow{color:#9ceadf}
body.home .hero h1{color:#fff}
body.home .hero h1 em{color:#7de0ce}
body.home .hero-sub{color:#f2f8f8}
body.home .hero-lead{color:#dbe8eb}
body.home .hero .text-link{color:#f2f8f8;border-color:#a8bfc4}
body.home .hero .button-link{background:#fbfaf6;border-color:#fbfaf6;color:#08202e}
body.home .hero .button-link:hover{background:#fff;border-color:#fff;color:#0655bd}

@media(max-width:900px){
  body.home .hero{
    min-height:0;
    padding:64px 0 56px;
    background-image:
      linear-gradient(180deg,rgba(2,10,17,.60) 0%,rgba(2,10,17,.82) 100%),
      url("assets/hero-port.webp");
    background-position:0 0,58% 36%;
    background-size:100% 100%,cover;
  }
}

/* photo credit line in footer */
.footer-version{font:500 11px/1.4 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.06em;color:rgba(219,231,242,.58);white-space:nowrap;font-variant-numeric:tabular-nums}

/* narrow phones: keep the header on one line (320–430) — CTA + Menu were overflowing */
@media(max-width:430px){
  .site-header-inner{gap:4px}
  .site-brand{font-size:15px}
  .site-brand:before{width:24px;height:19px}
  .header-cta{margin-left:auto}
  .header-cta .nav-quote{font-size:0;padding:0 10px;min-height:40px}
  .header-cta .nav-quote:after{content:'Get a quote';font-size:12px;line-height:1}
  .nav-toggle summary{font-size:0;padding:0 9px;min-height:40px}
  .nav-toggle summary > span{font-size:12px}
}

/* <=900: the 3-class section grids were overriding the single-column breakpoint */
@media(max-width:900px){
  body.home .gap-section .intro-grid,
  body.home .trust-section .intro-grid,
  body.home .faq-section .faq-grid{grid-template-columns:1fr;gap:28px}
}

/* keep hero copy readable where the photo has bright masts / lamp posts */
body.home .hero h1,
body.home .hero .hero-sub,
body.home .hero .hero-lead,
body.home .hero .eyebrow{text-shadow:0 1px 3px rgba(2,10,17,.55),0 0 14px rgba(2,10,17,.35)}
body.home .hero .text-link{text-shadow:0 1px 4px rgba(2,10,17,.65)}

/* ============================================================
   v4.2.0 · 页眉：墨色底 + 滚动冻结
   颜色取首屏实景图最深处 #07202b，页眉与首屏连成一块；
   粘性定位挂在 header.wp-block-template-part 上（.site-header 的
   父级只有 84px 高，直接 sticky 会在父级内滚走）。
   ============================================================ */
header.wp-block-template-part{position:sticky;top:0;z-index:120}
.admin-bar header.wp-block-template-part{top:32px}
@media(max-width:782px){.admin-bar header.wp-block-template-part{top:46px}}

.site-header,
body.home .site-header,
body:not(.home) .site-header{
  background:#07202b;
  border-bottom:1px solid rgba(255,255,255,.13);
  transition:background-color .22s ease,box-shadow .22s ease;
}
.site-header.is-stuck{background:#051922;box-shadow:0 12px 30px rgba(2,12,18,.26)}

.site-header .site-brand,
body.home .site-header .site-brand,
body:not(.home) .site-header .site-brand{color:#f3f8f8}
.site-header .site-brand .brand-accent,
body.home .site-header .site-brand .brand-accent,
body:not(.home) .site-header .site-brand .brand-accent{color:#7de0ce}
.site-header .site-brand:before{background-image:url('assets/gainvector-mark-on-dark.svg')}

.site-header .site-nav a:not(.button-link),
body.home .site-header .site-nav a:not(.button-link),
body:not(.home) .site-header .site-nav a:not(.button-link){color:#dbe7e9}
.site-header .site-nav a:not(.button-link):hover,
body.home .site-header .site-nav a:not(.button-link):hover,
body:not(.home) .site-header .site-nav a:not(.button-link):hover{color:#7de0ce}
.site-header .site-nav a[aria-current="page"]:not(.button-link){color:#7de0ce}

/* 折叠菜单在深底上改成描边按钮，展开面板仍用浅色 */
.site-header .nav-toggle summary{border-color:rgba(255,255,255,.28);background:transparent;color:#e8f2f2}
.site-header .nav-toggle summary:after{border-color:#e8f2f2}
.site-header .nav-toggle[open] summary{background:rgba(255,255,255,.10)}

/* 锚点落在粘性页眉下方，留 16px 呼吸 */
.section.process-section{scroll-margin-top:100px}

/* v4.2.0 · 结尾带接到墨色章节：首页 03 现在是最后一段正文，
   closing 外层从 #0a1b2e（03 的平涂底）下潜到 #0a2d4e（页脚同色），
   面板本身不动。 */
body.home .section.closing{background:linear-gradient(180deg,#0a1b2e 0%,#0e3247 45%,#0a2d4e 100%)}

/* ============================================================
   v4.2.0 · 内页承接首页移出的两段
   04 TRUST → /about/ · 05 GOOD QUESTIONS → /resources/
   内页没有 body.home 前缀，这里用独立 class 重建同样版式。
   ============================================================ */
.gv-trust{background:#f5f7fa;border-top:1px solid var(--line)}
.gv-trust-head{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(240px,.6fr);gap:clamp(32px,5vw,72px);align-items:center}
.gv-trust-head .section-label{color:var(--teal);margin-bottom:20px}
.gv-trust-head .section-title{max-width:620px;color:var(--ink)}
.gv-trust-head .section-copy{margin-top:18px;max-width:560px;color:#4a5a6b}
.gv-trust-plate{margin:0;display:flex;justify-content:flex-end;align-items:flex-end}
.gv-trust-plate img{display:block;width:100%;max-width:340px;height:auto}
.gv-facts{display:grid;grid-template-columns:1fr 1fr;gap:clamp(20px,2.4vw,32px) clamp(32px,4vw,56px);margin-top:clamp(36px,4vw,56px);max-width:1000px}
.gv-facts p{border-top:1px solid rgba(10,27,46,.16);padding-top:16px;font-size:15px;line-height:1.65;color:#4a5a6b}
.gv-facts strong{color:var(--ink);font-weight:600}

.gv-faq{background:var(--paper)}
.gv-faq-grid{display:grid;grid-template-columns:minmax(0,.44fr) minmax(0,1fr);gap:clamp(40px,6vw,96px);align-items:start}
.gv-faq-rail .section-label{color:var(--teal);margin-bottom:20px}
.gv-faq-note{font-size:15px;line-height:1.7;color:#4a5a6b;max-width:300px}
.gv-faq-rail .text-link{display:inline-block;margin-top:24px;font-size:15px;color:var(--ink)}
.gv-faq-list{border-top:1px solid var(--ink)}
.gv-faq-item{display:grid;grid-template-columns:56px minmax(0,1fr);column-gap:18px;padding:clamp(24px,2.6vw,34px) 0;border-bottom:1px solid rgba(10,27,46,.14)}
.gv-faq-index{font:500 13px/1.6 Space,sans-serif;color:var(--teal);padding-top:7px}
.gv-faq-item :is(h2,h3){grid-column:2;font-size:clamp(20px,2vw,26px);line-height:1.25;letter-spacing:-.02em;color:var(--ink)}
.gv-faq-item p:not(.gv-faq-index){grid-column:2;margin-top:8px;font-size:15.5px;line-height:1.7;color:#4a5a6b;max-width:660px}
@media(max-width:900px){
  .gv-trust-head{grid-template-columns:1fr;gap:24px;align-items:start}
  .gv-trust-plate{justify-content:flex-start}
  .gv-trust-plate img{max-width:320px}
  .gv-facts{grid-template-columns:1fr}
  .gv-faq-grid{grid-template-columns:1fr;gap:32px}
}

/* ============================================================
   v4.2.0 · 首页 01–03 版式：一条左准线
   01 / 02 / 03 的标签与标题全部回到容器左缘（1440 下 x=130），
   和首屏、KPI、结尾面板同一条竖线；图版统一放到右栏。
   ============================================================ */
@media(min-width:901px){
  body.home .gap-section .intro-grid{
    grid-template-columns:minmax(0,1.06fr) minmax(0,.94fr);
    gap:clamp(40px,5vw,80px);
    align-items:start;
  }
}
body.home .gap-section .section-rail{height:auto;justify-content:flex-start}
body.home .gap-section .section-plate{margin-top:0;max-height:380px}
body.home .gap-section .section-plate img{max-height:380px}
body.home .gap-section .section-title{max-width:720px}
body.home .gap-section .section-copy{max-width:560px}
body.home .gap-section .gap-index{font-size:15px;color:#0a5c56}

/* 02：标题与引言同列，不再单独占右半栏 */
body.home .solution-section .intro-grid{display:block}
body.home .solution-section .section-title{max-width:760px}
body.home .solution-section .section-copy{margin-top:22px;max-width:520px}

/* 03：五个步骤加序号，时间轴靠近标题 */
.process-section .route-steps{margin-top:clamp(44px,4vw,58px)}
body.home .route-index{font:500 11px/1.4 Space,sans-serif;letter-spacing:.14em;color:#7de0ce;margin-bottom:9px}

/* 深底上的报价按钮改白底方角，和首屏、结尾面板的按钮同一规格 */
body.home .header-cta .nav-quote,
body:not(.home) .header-cta .nav-quote{
  background:#fbfaf6;border-color:#fbfaf6;color:#08202e;
  border-radius:10px;box-shadow:none;
}
body.home .header-cta .nav-quote:hover,
body:not(.home) .header-cta .nav-quote:hover{background:#fff;border-color:#fff;color:#0655bd}

/* ============================================================
   v4.2.1 · 首屏眉标放大，右栏正文上移
   眉标 11 → 14px：字距 .15em → .13em、行距收到 1.35，
   1440 下仍是一行（原约 344px 宽，现约 430px，左栏 643px）。
   右栏正文 17 → 18.5px，并上移到与眉标同一条顶线：用负上边距
   抵消「眉标行高 + 下边距」（14×1.35 + 20 ≈ 39px），不改栅格
   行高，h1、副标题与按钮的位置都不动。
   ============================================================ */
body.home .hero .eyebrow{font-size:14px;line-height:1.35;letter-spacing:.13em;margin-bottom:20px}
body.home .hero-copy .hero-lead{font-size:18.5px;line-height:1.65}
@media(min-width:1101px){
  body.home .hero-copy > .hero-lead{margin-top:-38.9px}
}
@media(max-width:1100px){
  body.home .hero-copy .hero-lead{font-size:17.5px;line-height:1.72}
}
@media(max-width:900px){
  body.home .hero .eyebrow{font-size:13px;letter-spacing:.12em;margin-bottom:18px}
}
@media(max-width:600px){
  body.home .hero .eyebrow{font-size:12px;letter-spacing:.1em;margin-bottom:16px}
  body.home .hero-copy .hero-lead{font-size:17px}
}

/* ============================================================
   v4.2.2 · 页眉按 80% 缩放：v4.0.5 把导航放到 24px 后整体偏大，
   现在整组按 0.8 收：导航 24→19px、报价按钮 18→15px/54→44px、
   品牌 28→23px（标记 45×36→37×30）、页眉带 84→72px。
   与浏览器 80% 缩放看到的比例一致，只是首屏字号不再跟着缩。
   ≤600 的折叠菜单保持原尺寸（0.8 倍后不足 10px）。
   ============================================================ */
@media(min-width:601px){
  .site-header-inner{min-height:72px}
  .site-brand{font-size:28px;gap:10px}
  .site-brand:before{width:48px;height:39px}
  .site-nav{font-size:17px;gap:15px}
  .header-cta .nav-quote{font-size:15px;min-height:44px;padding:0 20px}
}
@media(min-width:601px) and (max-width:1100px){
  .site-nav{font-size:16px;gap:13px}
  .site-brand{font-size:25px}
  .site-brand:before{width:42px;height:34px}
  .header-cta .nav-quote{font-size:14px;min-height:42px;padding:0 17px}
}

/* ============================================================
   v4.3.0 · 首屏右栏上移 + 02 板块并轨 + 03 去序号
   1) 首屏：正文与按钮整组再上移 24px（position 位移，不参与
      栅格行高计算，左栏与 h1 不动）。
   2) 02：原来是一张 80/526/526 的三栏表，标题 37px，序号 24px
      幽灵字，夹在 01（26px 行标题 / 15px 序号 / 2×2 栅格）和
      03（22px 行标题）中间像另一套系统。现在改成与 01 完全同构
      的四宫格：40px 序号列 + 标题描述同列，序号回 15px 墨绿，
      行标题 26px，分隔线与 01 同一支灰。
   3) 03：步骤序号已从内容里删除，行高与节奏同步收紧。
   ============================================================ */
@media(min-width:1101px){
  body.home .hero-copy > .hero-lead,
  body.home .hero-copy > .hero-actions{position:relative;top:-24px}
}

/* 02 · 与 01 同构的列表 */
body.home .solution-section .service-rows{
  display:grid;grid-template-columns:1fr 1fr;
  column-gap:clamp(40px,5vw,72px);
  border-top:1px solid rgba(9,45,68,.4);
}
body.home .solution-section .service-row{
  grid-template-columns:40px minmax(0,1fr);column-gap:16px;row-gap:0;
  padding:30px 0;border-bottom:1px solid rgba(9,45,68,.22);
}
body.home .solution-section .service-number{
  font-size:15px;line-height:1.4;color:#0a5c56;padding-top:7px;
  letter-spacing:0;background:none;
}
body.home .solution-section .service-row h3{
  font-size:26px;line-height:1.2;letter-spacing:-.03em;max-width:none;
}
body.home .solution-section .service-row > p:not(.service-number){
  grid-column:2;margin-top:7px;font-size:15px;line-height:1.6;
  color:#3f5561;max-width:none;
}
body.home .solution-section .service-more{margin-top:24px}
@media(max-width:900px){
  body.home .solution-section .service-rows{grid-template-columns:1fr;column-gap:0}
}

/* 03 · 去掉序号后，标题贴着时间轴，留白重新分配 */
.process-section .route-step{padding-top:28px}
.process-section .route-step h3{margin-bottom:10px}

/* ============================================================
   v4.3.1 · 02 底色换掉纯白 + 页脚联系方式
   1) 02 原来是一整条白，夹在 01 的冷灰蓝和 03 的墨色中间像被抽空。
      改成 #E4EBF0：白 → #EFF4F8（01）→ #E4EBF0（02）→ 墨色（03），
      一路压深，进 03 不再有断层。
   2) 页脚联系方式：四列（Email / WhatsApp / Phone / Instagram），
      标签小字大写、值带下划线；联系页复用同一段输出，走默认的
      竖排两列。
   ============================================================ */
body.home .section.solution-section{background:#E4EBF0}
/* 底色一深，.section:before 那道浅色顶光就会在 02 顶上留一条亮带，去掉 */
body.home .section.solution-section:before{display:none}

/* 01 标题：给「the gaps are predictable.」留够一行（约 620px），
   配合内容里的 &nbsp;，1440 下从 5 行回到 4 行 */
@media(min-width:901px){
  body.home .gap-section .intro-grid{grid-template-columns:minmax(0,1.16fr) minmax(0,.84fr)}
}

.gv-contact-links{margin:22px 0 0}
.gv-contact-company{margin:0 0 6px;font-weight:600}
.gv-contact-details{margin:0 0 12px;font-size:14px;line-height:1.6}
.gv-contact-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;margin:0 0 10px}
.gv-contact-label{font:600 10px/1.6 Inter,sans-serif;letter-spacing:.16em;text-transform:uppercase;color:#6b8494;min-width:86px}
.gv-contact-value{font-size:14px;font-weight:500;color:inherit;text-decoration:none;border-bottom:1px solid rgba(10,27,46,.35);padding-bottom:1px}
.gv-contact-value:hover{border-color:currentColor}
.gv-contact-pending{margin:0;font-size:14px}

.site-footer .gv-contact-links{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
  gap:20px 32px;margin-top:46px;
}
.site-footer .gv-contact-row{flex-direction:column;gap:7px;margin:0}
.site-footer .gv-contact-label{color:#7f9bb0;min-width:0}
.site-footer .gv-contact-value{color:#eaf3f7;font-size:15px;border-color:rgba(255,255,255,.45)}
.site-footer .gv-contact-value:hover{border-color:#7de0ce}
@media(max-width:900px){
  .site-footer .gv-contact-links{grid-template-columns:1fr 1fr;gap:18px 24px;margin-top:34px}
}
@media(max-width:520px){
  .site-footer .gv-contact-links{grid-template-columns:1fr}
}

/* ============================================================
   v4.3.2 · 页脚三栏 + 页眉语言切换器
   页脚：左 logo+slogan / 中联系方式 / 右整组导航，和页眉同一份链接。
   页眉：CTA 左边加语言下拉，选项用本地语言名（français / português）。
   ============================================================ */
.site-footer .footer-grid{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr) auto;
  gap:44px;align-items:start;
}
.site-footer .footer-brand{font-size:30px}
.site-footer .footer-brand:before{width:46px;height:37px}
.site-footer .footer-statement{margin-top:20px}
.site-footer .footer-contacts .gv-contact-links{display:block;margin:0}
.site-footer .footer-contacts .gv-contact-row{flex-direction:row;align-items:baseline;gap:14px;margin:0 0 13px}
.site-footer .footer-contacts .gv-contact-label{min-width:86px}
.site-footer .footer-links{gap:13px}
.site-footer .footer-bottom{margin-top:46px}
@media(max-width:1100px){
  .site-footer .footer-grid{grid-template-columns:1fr 1fr;gap:36px}
  .site-footer .footer-links{grid-column:2;grid-row:1}
}
@media(max-width:640px){
  .site-footer .footer-grid{grid-template-columns:1fr;gap:30px}
  .site-footer .footer-links{grid-column:auto;grid-row:auto}
}

/* 语言切换器 */
.lang-switcher{position:relative;flex:none}
.lang-switcher summary{
  list-style:none;cursor:pointer;display:flex;align-items:center;gap:8px;
  font:600 13px/1 Inter,sans-serif;color:#dbe7e9;white-space:nowrap;
  border:1px solid rgba(255,255,255,.24);border-radius:8px;
  padding:0 12px;min-height:44px;user-select:none;
}
.lang-switcher summary::-webkit-details-marker{display:none}
.lang-switcher summary:after{
  content:'';width:7px;height:7px;flex:none;
  border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;
  transform:rotate(45deg) translateY(-2px);
}
.lang-switcher[open] summary{background:rgba(255,255,255,.08)}
.lang-switcher summary:hover{color:#7de0ce;border-color:rgba(125,224,206,.5)}
.lang-switcher-panel{
  position:absolute;top:calc(100% + 10px);right:0;min-width:158px;
  background:#fff;border:1px solid #d8e1e7;border-radius:10px;
  box-shadow:0 16px 40px rgba(2,12,18,.22);padding:6px;z-index:200;
}
.lang-switcher-panel a{
  display:block;padding:10px 12px;font-size:14px;font-weight:500;
  color:#0a1b2e;text-decoration:none;border-radius:6px;
}
.lang-switcher-panel a:hover{background:#eff4f8;color:#0655bd}
.lang-switcher-panel a[aria-current]{color:#0a7c74;font-weight:600}
@media(min-width:1101px) and (max-width:1279px){
  .site-header-inner{gap:16px}
  .site-nav{font-size:16px;gap:12px}
  .lang-switcher summary{font-size:12px;padding:0 10px;min-height:42px}
}

/* ≤600：页眉一行放不下四个元素，语言按钮收成代码（FR/EN/PT），
   下拉里仍是完整的本地语言名 */
.lang-switcher .lang-code{display:none}
@media(max-width:600px){
  .lang-switcher .lang-full{display:none}
  .lang-switcher .lang-code{display:inline}
  .lang-switcher summary{min-height:40px;padding:0 10px;font-size:12px;gap:6px}
}

/* ============================================================
   v4.4.0 · 全站统一：内页接回首页的照片首屏与冷灰蓝体系

   之前内页还是 v3.6 那套绿色渐变（#c4dcd4→#8fc0b5）+ 绿调底
   （#edf4f2），首页早在 v4.1.0 就换成了港口照片 + 墨色 / 冷灰蓝。
   两边并排看像两个网站，这一层把内页收回来：

   1) 首屏：同一张 hero-port.webp、同一道左深右浅遮罩、同一套字阶，
      标题反白；≥1001px 左标题右导语，和首页首屏同一构图。
   2) 底色：绿调全部去掉，回到 --soft #EFF4F8 / --line #D8E1E7。
   3) 字阶：内页 h2 52 → 首页 section-title 的 clamp，正文 16 → 17。
   4) 卡片 / 表单 / 待发布面板：绿边改墨边或青边，白底冷阴影。
   5) 没有 closing 的页面补同款 CTA（内容层），并关掉那条
      白→蓝的空渐变带。
   ============================================================ */

/* ---------- 1. 内页首屏：墨色底 + 网点，不重复首页照片 ---------- */
/* 首页用实景照片立住；内页七张再用同一张会变成墙纸。
   这里换成同一套墨色，但用「网点 + 两团冷光」做质感：
   右上青绿微光、左下品牌蓝微光，网点 24px 一格，边缘收在一条发丝线上。 */
body:not(.home) .page-hero{
  position:relative;
  overflow:hidden;
  display:flex;
  align-items:center;
  min-height:clamp(420px,34vw,520px);
  padding-block:clamp(60px,5.8vw,88px);
  border:0;
  color:#fff;
  background-color:#0a1b2e;
  background-image:
    radial-gradient(85% 130% at 88% 10%,rgba(125,224,206,.17) 0%,rgba(125,224,206,0) 58%),
    radial-gradient(70% 100% at 4% 98%,rgba(6,85,189,.26) 0%,rgba(6,85,189,0) 62%),
    radial-gradient(rgba(255,255,255,.075) 1px,transparent 1.3px);
  background-size:auto,auto,24px 24px;
  background-repeat:no-repeat,no-repeat,repeat;
  box-shadow:inset 0 -1px 0 rgba(255,255,255,.1);
}
body:not(.home) .page-hero .wrap{width:100%}
body:not(.home) .page-hero .eyebrow{
  color:#9ceadf;
  font-size:13px;
  letter-spacing:.14em;
  margin-bottom:22px;
}
body:not(.home) .page-hero h1{
  color:#fff;
  font-size:clamp(40px,calc(4.4vw + 12px),62px);
  line-height:1.18;
  letter-spacing:-.045em;
  max-width:840px;
  text-shadow:0 1px 3px rgba(2,10,17,.35);
}
body:not(.home) .page-hero > .wrap > p:not(.eyebrow){
  color:#c9d9e3;
  font-size:18px;
  line-height:1.72;
  max-width:430px;
}
@media(min-width:1001px){
  body:not(.home) .page-hero .wrap{
    display:grid;
    grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);
    column-gap:clamp(48px,6vw,110px);
    align-items:start;
  }
  body:not(.home) .page-hero .eyebrow{grid-column:1;grid-row:1}
  body:not(.home) .page-hero h1{grid-column:1;grid-row:2}
  body:not(.home) .page-hero > .wrap > p:not(.eyebrow){grid-column:2;grid-row:1 / span 2;margin:4px 0 0}
}
@media(max-width:1000px){
  body:not(.home) .page-hero{min-height:0}
  body:not(.home) .page-hero h1{font-size:clamp(40px,calc(4.4vw + 12px),62px)}
  body:not(.home) .page-hero > .wrap > p:not(.eyebrow){margin-top:26px;max-width:620px}
}

/* /for-agents/ 的首屏是自定义 div，同一套墨色网点 */
body:not(.home) .tv-agents-hero{
  max-width:none;
  color:#fff;
  background-color:#0a1b2e;
  background-image:
    radial-gradient(85% 130% at 88% 10%,rgba(125,224,206,.17) 0%,rgba(125,224,206,0) 58%),
    radial-gradient(70% 100% at 4% 98%,rgba(6,85,189,.26) 0%,rgba(6,85,189,0) 62%),
    radial-gradient(rgba(255,255,255,.075) 1px,transparent 1.3px);
  background-size:auto,auto,24px 24px;
  background-repeat:no-repeat,no-repeat,repeat;
  box-shadow:inset 0 -1px 0 rgba(255,255,255,.1);
  padding-block:clamp(64px,6vw,92px);
}
body:not(.home) .tv-agents-hero h1{
  color:#fff;
  font-size:clamp(40px,calc(4.4vw + 12px),62px);
  line-height:1.18;
  max-width:880px;
  text-shadow:0 1px 3px rgba(2,10,17,.35);
}
body:not(.home) .tv-agents-hero .tv-eyebrow{color:#9ceadf}
body:not(.home) .tv-agents-hero .tv-agents-intro{
  color:#c9d9e3;font-size:18px;line-height:1.72;max-width:660px;
}
body:not(.home) .tv-agents-hero .tv-integration-status{
  background:#fff;
  border:1px solid #d8e1e7;
  border-top:4px solid #0a7c74;
  box-shadow:0 22px 50px rgba(2,12,18,.28);
}
body:not(.home) .tv-agents-hero .tv-integration-status h2{color:#0a1b2e}
body:not(.home) .tv-agents-hero .tv-integration-status p{color:#4a5a6b;text-shadow:none}
body:not(.home) .tv-agents-hero .tv-status-kicker{color:#0a7c74}
body:not(.home) .tv-agents-hero .wp-block-button__link{
  background:#fbfaf6;border:1px solid #fbfaf6;color:#08202e;
}
body:not(.home) .tv-agents-hero .wp-block-button__link:hover{background:#fff;border-color:#fff;color:#0655bd}
body:not(.home) .tv-agents-hero .is-style-outline .wp-block-button__link{
  background:transparent;border:1px solid rgba(255,255,255,.6);color:#f2f8f8;
}
body:not(.home) .tv-agents-hero .is-style-outline .wp-block-button__link:hover{
  border-color:#7de0ce;color:#7de0ce;
}

/* ---------- 2. 底色与字阶 = 首页 ---------- */
body:not(.home) .section:not(.closing){padding-block:clamp(74px,8vw,126px)}
body:not(.home) .rule-section{border-color:#d8e1e7}
body:not(.home) .rule-section:nth-of-type(odd){background:#eff4f8}
body:not(.home) .content-grid h2,
body:not(.home) .contact-layout h2{
  color:#0a1b2e;
  font-size:clamp(38px,4.4vw,60px);
}
body:not(.home) .prose{max-width:760px}
body:not(.home) .prose p,
body:not(.home) .contact-layout p{color:#4a5a6b;font-size:17px}
body:not(.home) .prose h3{color:#0a1b2e;border-top-color:#cdd9e2}
body:not(.home) .prose h3:first-child{border-top-color:#0a1b2e;border-top-width:1px}
body:not(.home) .section-label{color:#08766f}

/* ---------- 3. 卡片 / 表单 / 待发布面板 ---------- */
body:not(.home) .pending-panel{
  background:#fff;
  border:1px solid #d8e1e7;
  border-top:3px solid #0a7c74;
  box-shadow:0 22px 50px rgba(10,27,46,.07);
}
body:not(.home) .pending-panel h2{color:#0a1b2e}
body:not(.home) .pending-panel p{color:#4a5a6b}
body:not(.home) .gv-form{
  border:1px solid #d8e1e7;
  border-top:4px solid #0a7c74;
  box-shadow:0 22px 50px rgba(10,27,46,.08);
}
body:not(.home) .gv-field input,
body:not(.home) .gv-field textarea,
body:not(.home) .gv-field select,
body:not(.home) .gv-result textarea{
  border-color:#a7b5c2;
  background:#fff;
}
body:not(.home) .tv-install-status,
body:not(.home) .tv-integration-status{border-color:#d8e1e7}
body:not(.home) .tv-agents-human{background:#eff4f8}
body:not(.home) .tv-section p{color:#4a5a6b}
body:not(.home) .tv-agent-card{border-top-color:#cdd9e2}
body:not(.home) .tv-section:not(.tv-agents-hero) .tv-eyebrow,
body:not(.home) .tv-step-index,
body:not(.home) .tv-status-kicker{color:#08766f}

/* ---------- 4. 收尾：与首页同一个 CTA 带 ---------- */
body:not(.home) .section.closing{
  background:linear-gradient(180deg,rgba(255,255,255,0) 0%,#7f9dbb 34%,#3c6285 66%,#0a2d4e 100%);
}
/* 没有 closing 的页面（for-agents）不再用那条空渐变带收尾 */
body:not(.home) main:not(:has(.section.closing))::after{display:none}
body:not(.home) .tv-agents-cta{padding-bottom:clamp(90px,10vw,140px)}

/* ---------- 5. 02 WHAT WE DO：中间调石板 + 蓝图网格 ---------- */
/* 01 是冷灰纸、03 是墨色，02 再浅一档蓝灰就会糊成一片。
   这版把 02 压成一块中间调石板（#33566e → #234154），叠 72px 的
   蓝图网格与右上青绿微光：明 → 中调 → 暗，三级台阶更清楚，
   也不再是「比 01 深一点的同一块灰」。 */
body.home .section.solution-section{
  position:relative;
  color:#fff;
  background-color:#2a4a60;
  background-image:
    radial-gradient(90% 120% at 92% 6%,rgba(125,224,206,.14) 0%,rgba(125,224,206,0) 56%),
    repeating-linear-gradient(0deg,rgba(255,255,255,.045) 0 1px,transparent 1px 72px),
    repeating-linear-gradient(90deg,rgba(255,255,255,.03) 0 1px,transparent 1px 72px),
    linear-gradient(158deg,#33566e 0%,#2a4a60 52%,#234154 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.12);
}
body.home .solution-section .section-label{color:#9ceadf}
body.home .solution-section .section-title{color:#fff}
body.home .solution-section .section-copy{color:#d3e0e8}
body.home .solution-section .service-rows{border-top-color:rgba(255,255,255,.42)}
body.home .solution-section .service-row{border-bottom-color:rgba(255,255,255,.18)}
body.home .solution-section .service-row h3{color:#fff}
body.home .solution-section .service-row > p:not(.service-number){color:#d3e0e8}
body.home .solution-section .service-number{color:#9ceadf}
body.home .solution-section .service-row:nth-child(2) .service-number{color:#a9d4ff}
body.home .solution-section .service-row:nth-child(3) .service-number{color:#9ceadf}
body.home .solution-section .service-row:nth-child(4) .service-number{color:#a9d4ff}
body.home .solution-section .service-more .text-link{color:#fff;border-color:rgba(255,255,255,.55)}
body.home .solution-section .service-more .text-link:hover{color:#9ceadf;border-color:#9ceadf}

/* ============================================================
   03 YOUR CALLS · 时间轴交互
   悬停 / 聚焦某个圆点或它下方的文字：
   - 该点放大 1.85 倍、由空心变实心，并向外扩散一圈光环；
   - 该组标题放大 1.055、上移 3px，正文提亮；
   - 进度线从起点推到该点，其余四组淡到 46%。
   没有 JS 时 :hover 仍生效；触屏点按激活到下一组。
   ============================================================ */
.process-section .route-steps{--route-fill:5.5px}
.process-section .route-steps:after{
  content:'';
  position:absolute;top:8px;left:0;height:1px;
  width:var(--route-fill);
  background:linear-gradient(90deg,#4e9de7,#7de0ce);
  opacity:0;
  transition:width .5s cubic-bezier(.22,.7,.2,1),opacity .28s ease;
  pointer-events:none;
}
.process-section .route-steps.is-live:after{opacity:1}

.process-section .route-step{transition:opacity .3s ease;z-index:1}
.process-section .route-step:before{
  transition:transform .34s cubic-bezier(.2,.8,.2,1),background-color .28s,border-color .28s,box-shadow .34s;
}
.process-section .route-step:after{
  content:'';
  position:absolute;top:3px;left:0;
  width:11px;height:11px;border-radius:50%;
  border:1px solid rgba(125,224,206,.65);
  opacity:0;pointer-events:none;
}
.process-section .route-step h3,
.process-section .route-step p{
  transform-origin:0 0;
  transition:transform .34s cubic-bezier(.2,.8,.2,1),color .28s,opacity .28s;
}

.process-section .route-step.is-active:before{
  transform:scale(1.85);
  background:#7de0ce;
  border-color:#e8fff9;
  box-shadow:0 0 0 5px rgba(125,224,206,.16),0 0 22px rgba(125,224,206,.55);
}
.process-section .route-step.is-active:after{
  animation:gv-route-ring .75s cubic-bezier(.2,.7,.3,1) 1;
}
@keyframes gv-route-ring{
  0%{opacity:.85;transform:scale(1)}
  100%{opacity:0;transform:scale(4.4)}
}
.process-section .route-step.is-active h3{transform:translateY(-3px) scale(1.055);color:#fff}
.process-section .route-step.is-active p{transform:translateY(-1px);color:#f2f8f8}
.process-section .route-steps.has-active .route-step{opacity:.46}
.process-section .route-steps.has-active .route-step.is-active{opacity:1}

/* 不用 JS 也成立：hover 同一套效果 */
@media(hover:hover){
  .process-section .route-step:hover:before{
    transform:scale(1.85);
    background:#7de0ce;
    border-color:#e8fff9;
    box-shadow:0 0 0 5px rgba(125,224,206,.16),0 0 22px rgba(125,224,206,.55);
  }
  .process-section .route-step:hover h3{transform:translateY(-3px) scale(1.055);color:#fff}
  .process-section .route-step:hover p{transform:translateY(-1px);color:#f2f8f8}
  .process-section .route-steps:hover .route-step:not(:hover){opacity:.46}
  .process-section .route-step:focus-visible{outline:2px solid #7de0ce;outline-offset:10px}
}

/* 竖排时间轴（≤900）：进度线无意义，保留点与字的放大 */
@media(max-width:900px){
  .process-section .route-steps:after{display:none}
  .process-section .route-step.is-active:before{transform:scale(1.6)}
}

@media(prefers-reduced-motion:reduce){
  .process-section .route-step,
  .process-section .route-step:before,
  .process-section .route-step:after,
  .process-section .route-step h3,
  .process-section .route-step p,
  .process-section .route-steps:after{
    transition:none!important;animation:none!important;
  }
  .process-section .route-step.is-active:before{transform:none}
  .process-section .route-step.is-active h3,
  .process-section .route-step.is-active p{transform:none}
}

/* ============================================================
   v4.4.1 · 首屏「See how it works」悬停反馈
   原来这条文字链没有任何 hover 状态，鼠标放上去像张静态标签。
   现在：文字与下划线转青绿，箭头右移 5px；键盘 focus 同样生效。
   ============================================================ */
body.home .hero .text-link{transition:color .22s ease,border-color .22s ease}
body.home .hero .text-link span{display:inline-block;transition:transform .22s cubic-bezier(.2,.8,.2,1)}
body.home .hero .text-link:hover,
body.home .hero .text-link:focus-visible{color:#7de0ce;border-color:#7de0ce}
body.home .hero .text-link:hover span,
body.home .hero .text-link:focus-visible span{transform:translateX(5px)}

/* 内页首屏右下的航线水印：不是照片，但把「运输」这条线索接上品牌 */
body:not(.home) .page-hero .wrap{position:relative;z-index:1}
body:not(.home) .page-hero:after{
  content:'';
  position:absolute;
  right:clamp(-80px,-4vw,0px);
  bottom:-44px;
  width:clamp(300px,32vw,520px);
  height:clamp(280px,32vw,520px);
  background:url('assets/route.svg') center/contain no-repeat;
  opacity:.2;
  pointer-events:none;
}
@media(max-width:900px){
  body:not(.home) .page-hero:after{width:260px;height:260px;right:-70px;bottom:-60px;opacity:.14}
}

/* ============================================================
   v4.5.0 · 问询页：文案与表单抬进首屏
   之前首屏只有「What are you sourcing?」一句，真正要人填的东西
   在下面一整段白底区块里，打开页面先看到空标题、再滚一屏。
   现在合成一个墨色首屏：左边眉标 + 标题 + 说明 + 联系方式，
   右边白底表单卡。底色、网点、冷光、航线水印沿用内页首屏，
   只换容器与字色，不重做背景。
   ============================================================ */

/* 1. 容器：首屏里不再跑「左标题右导语」的两列网格 */
body:not(.home) .contact-hero{
  padding-block:clamp(40px,4vw,52px);
  align-items:center;
  min-height:calc(100svh - 73px);
}
@media(min-width:1001px){
  body:not(.home) .contact-hero .wrap{display:block}
}
body:not(.home) .contact-hero .contact-layout{
  display:grid;
  grid-template-columns:minmax(0,.84fr) minmax(0,1.16fr);
  gap:clamp(36px,5vw,84px);
  align-items:start;
}

/* 2. 左栏：深底上的文字，与白卡同一条顶线 */
body:not(.home) .contact-hero .contact-brief{padding-top:4px}
body:not(.home) .contact-hero .eyebrow.section-label{
  color:#9ceadf;
  margin-bottom:20px;
}
body:not(.home) .contact-hero h1{
  color:#fff;
  font-size:clamp(38px,3.7vw,54px);
  line-height:1.14;
  letter-spacing:-.045em;
  max-width:13ch;
  text-wrap:balance;
  text-shadow:0 1px 3px rgba(2,10,17,.35);
}
body:not(.home) .contact-hero .contact-brief p:not(.eyebrow){
  color:#c9d9e3;
  font-size:17px;
  line-height:1.7;
  max-width:46ch;
  margin-top:20px;
}
body:not(.home) .contact-hero .gv-contact-links{
  margin-top:30px;
  padding-top:22px;
  border-top:1px solid rgba(255,255,255,.16);
}
body:not(.home) .contact-hero .gv-contact-row{margin-bottom:9px}
body:not(.home) .contact-hero .gv-contact-label{color:#8fa8bd}
body:not(.home) .contact-hero .gv-contact-value{
  color:#eaf3f7;
  border-bottom-color:rgba(255,255,255,.4);
}
body:not(.home) .contact-hero .gv-contact-value:hover{
  color:#7de0ce;
  border-bottom-color:#7de0ce;
}

/* 3. 右栏：白卡落在墨底上，压深阴影把卡托起来 */
/* 首屏把整页字色改成了白，卡里的文字要逐层收回墨色，
   否则表单标签和说明会白底白字。 */
body:not(.home) .contact-hero .gv-form{
  color:#0a1b2e;
  padding:clamp(22px,2.4vw,32px);
  border:1px solid rgba(255,255,255,.16);
  border-top:4px solid #7de0ce;
  box-shadow:0 30px 80px rgba(2,10,17,.45),0 0 0 1px rgba(2,10,17,.25);
}
body:not(.home) .contact-hero .gv-form h2{
  color:#0a1b2e;
  font-size:clamp(23px,1.85vw,27px);
  line-height:1.15;
  margin-bottom:6px;
}
body:not(.home) .contact-hero .gv-form p{
  max-width:none;
  margin:0;
  color:#4a5a6b;
  font-size:13px;
  line-height:1.55;
}
body:not(.home) .contact-hero .gv-form .form-intro{margin:0 0 16px}
body:not(.home) .contact-hero .gv-form label{color:#0a1b2e}
body:not(.home) .contact-hero .gv-form label small{color:#5b6f7f}
body:not(.home) .contact-hero .gv-field{margin-bottom:11px}
body:not(.home) .contact-hero .gv-field label{
  font-size:12.5px;
  margin-bottom:5px;
}
body:not(.home) .contact-hero .gv-field input,
body:not(.home) .contact-hero .gv-field textarea{
  height:40px;
  padding:8px 11px;
  font-size:13.5px;
}
body:not(.home) .contact-hero .gv-field textarea{height:62px}
body:not(.home) .contact-hero .gv-row{
  display:grid;
  grid-template-columns:1fr 1fr;
  column-gap:16px;
}
body:not(.home) .contact-hero .gv-notice{
  margin:4px 0 12px;
  font-size:12.5px;
  line-height:1.5;
  color:#5b6f7f;
}
body:not(.home) .contact-hero .gv-form .button-link{
  padding:11px 18px;
  min-height:44px;
  font-size:13.5px;
}
body:not(.home) .contact-hero .gv-status{
  min-height:0;
  margin:8px 0 0;
  font-size:12.5px;
}

/* 4. 窄屏：单列，文案在上、表单在下 */
@media(max-width:1000px){
  body:not(.home) .contact-hero{min-height:0}
  body:not(.home) .contact-hero .contact-layout{
    grid-template-columns:1fr;
    gap:34px;
  }
  body:not(.home) .contact-hero h1{
    max-width:100%;
    font-size:clamp(40px,5.4vw,52px);
  }
  body:not(.home) .contact-hero .contact-brief p:not(.eyebrow){max-width:62ch}
  body:not(.home) .contact-hero .gv-form{box-shadow:0 22px 50px rgba(2,10,17,.38)}
}
@media(max-width:600px){
  body:not(.home) .contact-hero{padding-block:44px 56px}
  body:not(.home) .contact-hero .contact-layout{gap:26px}
  body:not(.home) .contact-hero .gv-form{padding:22px 18px}
  body:not(.home) .contact-hero .gv-field input{height:auto;min-height:46px}
  body:not(.home) .contact-hero .gv-field textarea{height:auto;min-height:78px}
  body:not(.home) .contact-hero .gv-row{grid-template-columns:1fr;column-gap:0}
}

/* ============================================================
   v4.6.3 · 问询表单收成「直角纸面」
   去掉投影与圆角（原来是浮在深底上的白卡），输入框从盒子改下划线，
   标签降成栏名，提交变通栏墨色条——形式更接近一张待填的单据，
   但仍是表单，不做装饰性编号。
   ============================================================ */
body:not(.home) .contact-hero .gv-form{
  background:#fff;
  border:1px solid #d8e1e7;
  border-radius:0;
  box-shadow:none;
  padding:clamp(22px,2.4vw,30px);
}
body:not(.home) .contact-hero .gv-form h2{font-size:clamp(22px,2vw,26px);letter-spacing:-.03em}
body:not(.home) .contact-hero .gv-form .form-intro{
  margin:6px 0 18px;
  padding-bottom:16px;
  border-bottom:1px solid #d8e1e7;
  font-size:13px;
  line-height:1.6;
  color:#5b6572;
}
body:not(.home) .contact-hero .gv-field label{
  font:500 11px/1.4 Inter,sans-serif;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:#5b6572;
  margin-bottom:4px;
}
body:not(.home) .contact-hero .gv-field label small{
  font:400 11px/1.4 Inter,sans-serif;
  letter-spacing:.02em;
  text-transform:none;
  color:#9aa7b1;
}
body:not(.home) .contact-hero .gv-field input,
body:not(.home) .contact-hero .gv-field textarea{
  border:0;
  border-bottom:1px solid #c9d4dc;
  border-radius:0;
  background:transparent;
  padding:7px 0;
  height:auto;
  min-height:34px;
  font-size:14px;
}
body:not(.home) .contact-hero .gv-field{margin-bottom:10px}
body:not(.home) .contact-hero .gv-field textarea{height:56px;min-height:0}
body:not(.home) .contact-hero #gv-brief{height:80px}
body:not(.home) .contact-hero .gv-field input::placeholder,
body:not(.home) .contact-hero .gv-field textarea::placeholder{color:#9aa7b1}
body:not(.home) .contact-hero .gv-field textarea{resize:none}
body:not(.home) .contact-hero .gv-field input:focus,
body:not(.home) .contact-hero .gv-field textarea:focus{
  border-bottom:2px solid #08766f;
  background:#f6fafa;
}
body:not(.home) .contact-hero .gv-field input:focus-visible,
body:not(.home) .contact-hero .gv-field textarea:focus-visible{
  outline:2px solid #08766f;
  outline-offset:3px;
}
body:not(.home) .contact-hero .gv-status[data-state="error"]{color:#a3483e}
body:not(.home) .contact-hero .gv-form .button-link{
  width:100%;
  justify-content:space-between;
  background:#0a1b2e;
  border-color:#0a1b2e;
  color:#fff;
  padding:14px 18px;
  min-height:50px;
  font-size:13.5px;
  letter-spacing:.01em;
}
body:not(.home) .contact-hero .gv-form .button-link:hover{background:#0f2b47;border-color:#0f2b47}
body:not(.home) .contact-hero .gv-form .button-link:focus-visible{outline:3px solid #08766f;outline-offset:3px}
@media(max-width:600px){
  body:not(.home) .contact-hero .gv-field input{min-height:44px}
  body:not(.home) .contact-hero .gv-field textarea{height:auto;min-height:72px}
  body:not(.home) .contact-hero #gv-brief{height:auto;min-height:96px}
}

/* ============================================================
   v4.6.0 · GOOD QUESTIONS 落到 /solutions/ 第 06 段
   原来是 /resources/ 的独立版式（rail + list）。搬进 solutions 后
   改用这条页面统一的 content-grid：左栏标签 + 标题 + 说明 + 链接，
   右栏是带编号的问答题列表。列表沿用 gv-faq-* 的描线与序号，
   列宽与 .prose 对齐（760px），和上面五段的正文同一条右缘。
   ============================================================ */
body:not(.home) .content-grid > .gv-faq-list{max-width:760px}
body:not(.home) .content-grid .section-copy + p{margin-top:22px}
body:not(.home) .gv-faq-list{border-top-color:#0a1b2e}
body:not(.home) .gv-faq-index{color:#08766f}
body:not(.home) .gv-faq-item:last-child{border-bottom-color:#0a1b2e}
body:not(.home) .gv-faq-item p:not(.gv-faq-index){color:#405c67;font-size:16px}
@media(max-width:900px){
  body:not(.home) .gv-faq-item{grid-template-columns:38px minmax(0,1fr);column-gap:14px}
  body:not(.home) .gv-faq-item p:not(.gv-faq-index){font-size:15.5px}
}

/* ============================================================
   v4.7.0 · Resources 改成「行业笔记」
   /resources/ 是索引：最新一篇放大，其余按日期排成日志行；
   文章页是一列 720px 的阅读版式，头带沿用内页的墨色首屏。
   领英只发梗概 + 原文链接，所以文末的分享条比装饰重要。
   ============================================================ */

/* ---------- 1. 索引 ---------- */
.gv-notes-head{display:flex;align-items:baseline;justify-content:space-between;gap:20px;border-bottom:1px solid #0a1b2e;padding-bottom:14px}
body:not(.home) .gv-notes-head .section-label{margin-bottom:0}
.gv-notes-feed{margin:0}
.gv-notes-feed .text-link{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:#08766f;border-color:#08766f}

.gv-note-lead{padding-block:clamp(28px,3.2vw,42px) clamp(30px,3.4vw,44px);border-bottom:1px solid #d8e1e7}
.gv-note-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 16px;font:600 11px/1.4 Inter,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#5b6f7f}
.gv-note-cat{color:#08766f;text-decoration:none;border-bottom:1px solid transparent;padding-bottom:1px}
.gv-note-cat:hover{border-bottom-color:#08766f}
.gv-note-sep{color:#a7b5c2}
.gv-note-read{color:#5b6f7f}
.gv-note-lead-title{font-size:clamp(30px,3.4vw,46px);line-height:1.14;letter-spacing:-.038em;max-width:900px}
.gv-note-lead-title a{text-decoration:none}
.gv-note-lead-title a:hover{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:7px}
.gv-note-lead-excerpt{margin-top:18px;font-size:17.5px;line-height:1.64;color:#405c67;max-width:700px}
.gv-note-lead-more{margin-top:22px}

.gv-note-row{display:grid;grid-template-columns:160px minmax(0,1fr) 32px;column-gap:clamp(20px,3vw,44px);align-items:start;padding-block:clamp(20px,2.3vw,28px);border-bottom:1px solid #d8e1e7}
.gv-note-row-meta{grid-column:1;grid-row:1 / span 2;display:flex;flex-direction:column;gap:5px;margin:0;padding-top:4px;font:600 11px/1.4 Inter,sans-serif;letter-spacing:.13em;text-transform:uppercase;color:#5b6f7f}
.gv-note-row-meta time{color:#5b6f7f;font-variant-numeric:tabular-nums;letter-spacing:.1em}
.gv-note-row-title{grid-column:2;grid-row:1;font-size:clamp(20px,1.9vw,25px);line-height:1.24;letter-spacing:-.026em}
.gv-note-row-title a{text-decoration:none}
.gv-note-row-title a:hover{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:5px}
.gv-note-row-excerpt{grid-column:2;grid-row:2;margin:8px 0 0;font-size:15.5px;line-height:1.6;color:#5b6f7f;max-width:640px}
.gv-note-row-arrow{grid-column:3;grid-row:1 / span 2;padding-top:2px;text-align:right;font-size:18px;line-height:1;color:#08766f;transition:transform .22s ease}
.gv-note-row:hover .gv-note-row-arrow{transform:translateX(4px)}
.gv-note-row a:focus-visible{outline-offset:4px}

.gv-notes-empty{padding-block:clamp(34px,4vw,52px);border-bottom:1px solid #d8e1e7}
body:not(.home) .gv-notes-empty .section-label{margin-bottom:16px}
.gv-notes-empty h2{font-size:clamp(26px,2.4vw,34px);letter-spacing:-.03em}
.gv-notes-empty p{margin-top:14px;font-size:16.5px;line-height:1.65;color:#405c67;max-width:560px}

.gv-notes-more{display:flex;justify-content:space-between;gap:20px;padding-top:26px}

/* ---------- 2. 文章页：头带 ---------- */
body:not(.home) .gv-note-hero{min-height:0;padding-block:clamp(52px,5.2vw,78px) clamp(54px,5.4vw,84px)}
body:not(.home) .gv-note-hero .gv-note-meta{gap:9px;margin-bottom:20px;font-size:12px;letter-spacing:.13em;color:#c9d9e3}
body:not(.home) .gv-note-hero .gv-note-meta .gv-note-cat{color:#9ceadf;border-bottom-color:rgba(156,234,223,.45)}
body:not(.home) .gv-note-hero .gv-note-meta .gv-note-cat:hover{color:#e8fff9;border-bottom-color:#e8fff9}
body:not(.home) .gv-note-hero .gv-note-read{color:#a8c2d2}
body:not(.home) .gv-note-hero .wp-block-post-excerpt{margin:0}
body:not(.home) .gv-note-hero .wp-block-post-excerpt p{margin:0;font-size:18.5px;line-height:1.66;color:#c9d9e3;max-width:520px}
@media(min-width:1001px){
  body:not(.home) .gv-note-hero .wp-block-post-excerpt{grid-column:2;grid-row:1 / span 2;margin-top:2px}
}

/* ---------- 3. 文章页：正文 ---------- */
body:not(.home) .gv-note-body{padding-block:clamp(44px,4.6vw,68px) clamp(40px,4.4vw,64px)}
body:not(.home) .gv-note-content{max-width:720px;margin-inline:auto;font-size:18.5px;line-height:1.78;color:#33475a}
body:not(.home) .gv-note-content > *{max-width:100%}
body:not(.home) .gv-note-content p{margin:0 0 22px;font-size:18.5px;line-height:1.78;color:#33475a}
body:not(.home) .gv-note-content h2{font-size:clamp(26px,2.3vw,32px);line-height:1.24;letter-spacing:-.03em;margin:52px 0 14px;color:#0a1b2e}
body:not(.home) .gv-note-content h3{font-size:clamp(21px,1.7vw,24px);line-height:1.3;margin:34px 0 10px;color:#0a1b2e;border:0;padding-top:0}
body:not(.home) .gv-note-content ul,
body:not(.home) .gv-note-content ol{margin:0 0 24px;padding-left:22px}
body:not(.home) .gv-note-content li{margin-bottom:9px;line-height:1.72;color:#33475a}
body:not(.home) .gv-note-content li::marker{color:#08766f}
body:not(.home) .gv-note-content a{color:#0655bd;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
body:not(.home) .gv-note-content a:hover{color:#0a1b2e}
body:not(.home) .gv-note-content blockquote{margin:36px 0;padding:2px 0 2px 22px;border-left:3px solid #0a7c74}
body:not(.home) .gv-note-content blockquote p{margin:0;font-size:21px;line-height:1.5;color:#102d3c}
body:not(.home) .gv-note-content img{width:100%;height:auto;display:block}
body:not(.home) .gv-note-content figure{margin:30px 0}
body:not(.home) .gv-note-content figcaption{margin-top:8px;font-size:13px;line-height:1.55;color:#5b6f7f}
body:not(.home) .gv-note-content hr{border:0;border-top:1px solid #d8e1e7;margin:44px 0}
body:not(.home) .gv-note-content table{width:100%;border-collapse:collapse;margin:0 0 26px;font-size:15px;line-height:1.5}
body:not(.home) .gv-note-content th,
body:not(.home) .gv-note-content td{padding:10px 12px;text-align:left;vertical-align:top;border-bottom:1px solid #d8e1e7}
body:not(.home) .gv-note-content th{font:600 12px/1.4 Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:#08766f;border-bottom:1px solid #0a1b2e}
body:not(.home) .gv-note-content em{font-style:italic}
body:not(.home) .gv-note-content code{padding:1px 5px;background:#eff4f8;font:14px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}

/* ---------- 4. 文章页：分享 / 梗概 / 上下篇 ---------- */
body:not(.home) .gv-note-end{padding-bottom:clamp(44px,5vw,66px)}
.gv-share{max-width:720px;margin:0 auto;border-top:1px solid #d8e1e7;padding-top:24px;display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.gv-share-label{margin:0 6px 0 0;font:600 11px/1.4 Inter,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#08766f}
.gv-share-actions{display:flex;flex-wrap:wrap;gap:10px}
.gv-share-btn{display:inline-flex;align-items:center;gap:8px;padding:9px 15px;border:1px solid #c3d0da;background:transparent;color:#0a1b2e;font:600 13px/1 Inter,sans-serif;text-decoration:none;cursor:pointer;transition:border-color .18s,background .18s}
.gv-share-btn:hover{border-color:#0a1b2e;background:#f2f7fa}
.gv-copy-status{margin:0;font-size:12.5px;line-height:1.2;color:#08766f}
.gv-note-follow{max-width:720px;margin:22px auto 0;font-size:14px;line-height:1.6;color:#5b6f7f}
.gv-note-follow .text-link{font-size:14px;color:#0a1b2e}

.gv-teaser{max-width:720px;margin:26px auto 0;padding:14px 16px;border:1px dashed #c3d0da;background:#f7fafc}
.gv-teaser summary{cursor:pointer;font:600 13px/1.4 Inter,sans-serif;color:#0a1b2e}
.gv-teaser p{margin:10px 0;font-size:13.5px;line-height:1.55;color:#5b6f7f}
.gv-teaser-text{width:100%;margin-bottom:10px;padding:10px;border:1px solid #c3d0da;background:#fff;font:13px/1.6 ui-monospace,SFMono-Regular,Menlo,monospace;color:#0a1b2e;resize:vertical}

.gv-note-nav{max-width:720px;margin:34px auto 0;padding-top:22px;border-top:1px solid #d8e1e7;display:grid;grid-template-columns:1fr 1fr;gap:20px}
.gv-note-nav-item{display:flex;flex-direction:column;gap:6px;text-decoration:none}
.gv-note-nav-item span{font:600 11px/1.4 Inter,sans-serif;letter-spacing:.13em;text-transform:uppercase;color:#5b6f7f}
.gv-note-nav-item strong{font-family:Space,system-ui,sans-serif;font-weight:500;font-size:17px;line-height:1.3;letter-spacing:-.02em;color:#0a1b2e}
.gv-note-nav-item:hover strong{text-decoration:underline;text-underline-offset:4px}
.gv-note-nav-next{align-items:flex-end;text-align:right}

/* ---------- 5. 窄屏 ---------- */
@media(max-width:900px){
  .gv-note-row{grid-template-columns:minmax(0,1fr) 24px;row-gap:6px}
  .gv-note-row-meta{grid-column:1;grid-row:1;flex-direction:row;gap:10px;padding-top:0}
  .gv-note-row-title{grid-column:1;grid-row:2}
  .gv-note-row-excerpt{grid-column:1;grid-row:3}
  .gv-note-row-arrow{grid-column:2;grid-row:1 / span 3;align-self:center;padding-top:0}
  .gv-note-nav{grid-template-columns:1fr;gap:18px}
  .gv-note-nav-next{align-items:flex-start;text-align:left}
}
@media(max-width:600px){
  body:not(.home) .gv-note-content,
  body:not(.home) .gv-note-content p{font-size:17px;line-height:1.75}
  body:not(.home) .gv-note-content blockquote p{font-size:19px}
  .gv-share{flex-direction:column;align-items:flex-start}
}

/* v4.7.0 修正：.wp-block-post-content 有 margin:0!important，
   正文列不能用 margin-inline:auto 居中；改成收窄外层 wrap。 */
body:not(.home) .gv-note-body .wrap{max-width:calc(720px + 2 * clamp(22px,5vw,76px));margin-inline:auto}

/* v4.7.0 修正 2：文章页首屏改成与正文同一条 720 竖列。
   内页的 page-hero 是「左标题右导语」的横幅，用在长文上会和正文
   的 720 列错开半个屏；这里收成单列居中：眉标 / 标题 / 导语一层层下来，
   和下面的正文、分享条同一条左边线。 */
body:not(.home) .gv-note-hero .wrap{
  display:block;
  max-width:calc(720px + 2 * clamp(22px,5vw,76px));
  margin-inline:auto;
}
body:not(.home) .gv-note-hero h1{
  font-size:clamp(34px,3.5vw,50px);
  line-height:1.14;
  max-width:100%;
  margin:0;
}
body:not(.home) .gv-note-hero .wp-block-post-excerpt{margin:20px 0 0;max-width:100%}
body:not(.home) .gv-note-hero .wp-block-post-excerpt p{font-size:18px;line-height:1.65;color:#c9d9e3;max-width:100%}
body:not(.home) .gv-note-hero{padding-block:clamp(48px,4.8vw,72px) clamp(48px,5vw,76px)}

/* ============================================================
   v4.9.0 · case studies
   一个案例 = 一个决定。索引是卡片（空态是四类在办 + 写法说明），
   单篇是「墨色头带 / 结果条 / 740 正文列 / 引语与来源 / 上下篇」。
   结果条与右侧事实栏的字段全部可空：空字段整块不渲染，不留空标签。
   ============================================================ */

/* ---------- 1. 索引：卡片 ---------- */
.gv-case-index{padding-block:clamp(40px,4.6vw,64px) clamp(48px,5vw,74px)}
.gv-case-grid{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid #0a1b2e}
.gv-case-card{display:flex;flex-direction:column;gap:10px;padding:clamp(20px,2.1vw,28px) clamp(22px,2.6vw,34px);border-bottom:1px solid #d8e1e7;text-decoration:none;color:inherit;transition:background .18s ease}
.gv-case-card:nth-child(odd){border-right:1px solid #d8e1e7}
.gv-case-card:last-child:nth-child(odd){grid-column:1 / -1;border-right:0}
.gv-case-card:last-child:nth-child(odd) .gv-case-card-title{max-width:820px}
.gv-case-card:last-child:nth-child(odd) .gv-case-card-more{margin-left:auto}
/* v4.9.1：整张卡是一个链接；右下角一行 READ THE CASE → 是明示的落点。 */
.gv-case-card:hover{background:#f4f7f9}
.gv-case-card-more{color:#0655bd;white-space:nowrap;margin-left:auto}
.gv-case-card:hover .gv-case-card-more{text-decoration:underline;text-underline-offset:4px}
.gv-case-card:hover .gv-case-card-more span{display:inline-block;transform:translateX(3px)}
.gv-case-card:hover .gv-case-card-title{text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:6px}
.gv-case-card:focus-visible{outline-offset:-4px}
.gv-case-card-meta{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:0;font:600 11px/1.4 Inter,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#08766f}
.gv-case-card-no{color:#5b6f7f}
.gv-case-card-title{font-size:clamp(24px,2.2vw,31px);line-height:1.18;letter-spacing:-.03em;color:#0a1b2e}
.gv-case-card-client{margin:0;font-size:15.5px;line-height:1.55;color:#405c67}
.gv-case-card-foot{margin:auto 0 0;padding-top:12px;display:flex;justify-content:space-between;gap:16px;font:600 11px/1.4 Inter,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:#5b6f7f}

/* ---------- 2. 索引：空态 ---------- */
.gv-case-empty{padding-block:clamp(30px,3.4vw,46px) 0;border-bottom:1px solid #d8e1e7}
body:not(.home) .gv-case-empty .section-label{margin-bottom:18px}
.gv-case-empty h2{font-size:clamp(28px,2.6vw,38px);line-height:1.18;letter-spacing:-.03em;max-width:660px;color:#0a1b2e}
.gv-case-empty-copy{margin-top:16px;max-width:560px;font-size:16.5px;line-height:1.65;color:#405c67}
.gv-case-empty-link{margin:0;padding-block:clamp(22px,2.4vw,30px) 0}

/* ---------- 4. 单篇：头带 ---------- */
body:not(.home) .gv-case-hero{min-height:0;padding-block:clamp(52px,5.2vw,78px) clamp(48px,5vw,72px)}
body:not(.home) .gv-case-hero .wrap{display:block;max-width:calc(820px + 2 * clamp(22px,5vw,76px));margin-inline:auto}
.gv-case-meta{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin:0 0 18px;font-size:12px;letter-spacing:.13em;color:#c9d9e3}
@media(max-width:600px){.gv-case-meta{font-size:11px;letter-spacing:.08em;gap:8px;row-gap:2px}.gv-case-meta .gv-case-sep{display:none}}
.gv-case-meta .gv-case-no{color:#e8fff9}
.gv-case-meta .gv-case-area{color:#9ceadf}
.gv-case-meta .gv-case-sep{color:#6b87a8}
body:not(.home) .gv-case-hero h1{font-size:clamp(34px,3.6vw,50px);line-height:1.15;letter-spacing:-.04em;max-width:100%;margin:0}
body:not(.home) .gv-case-hero .wp-block-post-excerpt{margin:20px 0 0;max-width:100%}
body:not(.home) .gv-case-hero .wp-block-post-excerpt p{font-size:18px;line-height:1.65;color:#c9d9e3;max-width:100%}

/* ---------- 5. 单篇：结果条与事实 ---------- */
.gv-case-band{background:#f4f7f9;border-bottom:1px solid #d8e1e7}
.gv-case-band .wrap{padding-block:clamp(26px,3vw,40px)}
.gv-case-band-inner{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:clamp(26px,4vw,64px);align-items:start}
.gv-case-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:clamp(16px,2vw,28px)}
.gv-case-metric-value{display:block;font-family:Space,system-ui,sans-serif;font-weight:500;font-size:clamp(30px,3vw,40px);line-height:1;letter-spacing:-.04em;color:#0a1b2e}
.gv-case-metric-label{display:block;margin-top:9px;font:600 11px/1.4 Inter,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:#5b6f7f}
.gv-case-facts{display:grid;grid-template-columns:1fr 1fr;gap:16px clamp(20px,2.6vw,36px);margin:0}
.gv-case-facts div{min-width:0}
.gv-case-facts dt{font:600 10.5px/1.4 Inter,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#08766f;margin-bottom:4px}
.gv-case-facts dd{margin:0;font-size:15px;line-height:1.45;color:#0a1b2e}

/* ---------- 6. 单篇：正文 ---------- */
body:not(.home) .gv-case-body{padding-block:clamp(44px,4.6vw,68px)}
body:not(.home) .gv-case-body .wrap{max-width:calc(740px + 2 * clamp(22px,5vw,76px));margin-inline:auto}
body:not(.home) .gv-case-content{font-size:18.5px;line-height:1.78;color:#33475a}
body:not(.home) .gv-case-content p{margin:0 0 22px;font-size:18.5px;line-height:1.78;color:#33475a}
body:not(.home) .gv-case-content h2{font-size:clamp(26px,2.3vw,32px);line-height:1.24;letter-spacing:-.03em;margin:52px 0 14px;color:#0a1b2e}
body:not(.home) .gv-case-content h3{font-size:clamp(21px,1.7vw,24px);line-height:1.3;margin:34px 0 10px;color:#0a1b2e}
body:not(.home) .gv-case-content ul,
body:not(.home) .gv-case-content ol{margin:0 0 24px;padding-left:22px}
body:not(.home) .gv-case-content li{margin-bottom:9px;line-height:1.72;color:#33475a}
body:not(.home) .gv-case-content li::marker{color:#08766f}
body:not(.home) .gv-case-content a{color:#0655bd;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
body:not(.home) .gv-case-content a:hover{color:#0a1b2e}
body:not(.home) .gv-case-content blockquote{margin:36px 0;padding:2px 0 2px 22px;border-left:3px solid #0a7c74}
body:not(.home) .gv-case-content blockquote p{margin:0;font-size:21px;line-height:1.5;color:#102d3c}
body:not(.home) .gv-case-content img{width:100%;height:auto;display:block}
body:not(.home) .gv-case-content figure{margin:30px 0}
body:not(.home) .gv-case-content figcaption{margin-top:8px;font-size:13px;line-height:1.55;color:#5b6f7f}
body:not(.home) .gv-case-content hr{border:0;border-top:1px solid #d8e1e7;margin:44px 0}
body:not(.home) .gv-case-content table{width:100%;border-collapse:collapse;margin:0 0 26px;font-size:15px;line-height:1.5}
body:not(.home) .gv-case-content th,
body:not(.home) .gv-case-content td{padding:10px 12px;text-align:left;vertical-align:top;border-bottom:1px solid #d8e1e7}
body:not(.home) .gv-case-content th{font:600 12px/1.4 Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:#08766f;border-bottom:1px solid #0a1b2e}

/* ---------- 7. 单篇：引语、来源、上下篇 ---------- */
.gv-case-end{padding-bottom:clamp(44px,5vw,66px)}
.gv-case-end-inner{max-width:calc(740px + 2 * clamp(22px,5vw,76px));margin-inline:auto}
.gv-case-quote{margin:0 0 clamp(26px,3vw,38px);padding-top:clamp(22px,2.6vw,30px);border-top:1px solid #d8e1e7}
.gv-case-quote blockquote{margin:0;padding-left:22px;border-left:3px solid #0a7c74}
.gv-case-quote p{margin:0;font-size:clamp(21px,2vw,26px);line-height:1.45;letter-spacing:-.01em;color:#102d3c}
.gv-case-quote figcaption{margin-top:14px;padding-left:25px;font-size:13px;line-height:1.5;color:#5b6f7f}
.gv-case-note{margin:0;padding-top:18px;border-top:1px solid #d8e1e7;font-size:13px;line-height:1.6;color:#5b6f7f;max-width:600px}
.gv-case-nav{margin-top:clamp(26px,3vw,38px)}

/* ---------- 8. 窄屏 ---------- */
@media(max-width:1000px){
  .gv-case-band-inner{grid-template-columns:1fr}
}
@media(max-width:900px){
  .gv-case-grid{grid-template-columns:1fr}
  .gv-case-card:nth-child(odd){border-right:0}
  .gv-case-nav{grid-template-columns:1fr;gap:18px}
}
@media(max-width:600px){
  .gv-case-facts{grid-template-columns:1fr}
  .gv-case-metric-value{font-size:28px}
  .gv-case-metric:last-child:nth-child(odd){grid-column:1 / -1}
  body:not(.home) .gv-case-content,
  body:not(.home) .gv-case-content p{font-size:17px;line-height:1.75}
  .gv-case-card-foot{flex-direction:column;gap:6px}
}

/* ============================================================
   v4.34.0 · case studies：产品板块（v4.35.0 起改作筛选，见文件末尾）
   ============================================================ */

/* ============================================================
   v4.11.0 · About 页：公司档案（团队 / 结构 / 历程）
   首屏右侧三个数字（2019 / 100+ / 3），正文五段：是谁、怎么长
   起来的、团队六个职能、集团三块、四条规矩。v4.10.0 的
   「地点 + 自查」两段整段撤掉，只留集团与规矩两块。
   ============================================================ */

/* ---------- 1. 首屏 ---------- */
body:not(.home) .page-hero.gv-about-hero{min-height:0}
@media(min-width:1001px){
  body:not(.home) .gv-about-hero .wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,420px);gap:clamp(40px,5vw,96px);align-items:start}
  body:not(.home) .gv-about-hero .gv-ab-head{grid-column:1;grid-row:1;min-width:0}
  body:not(.home) .gv-about-hero .gv-stats{grid-column:2;grid-row:1}
}
.gv-ab-lead{margin:26px 0 0;max-width:520px}
.gv-stats{margin:0;width:100%;padding-top:2px}
.gv-stat{display:grid;grid-template-columns:clamp(96px,8vw,120px) minmax(0,1fr);gap:20px;align-items:baseline;padding:18px 0;border-top:1px solid rgba(255,255,255,.16)}
.gv-stat:last-child{border-bottom:1px solid rgba(255,255,255,.16)}
.gv-stat-num{font:500 clamp(30px,3vw,40px)/1 Space,sans-serif;letter-spacing:-.045em;color:#fff}
.gv-stat-label{font-size:13.5px;line-height:1.5;color:#c9d9e3}

/* ---------- 2. 01 WHO WE ARE ---------- */
.gv-ab-who{background:#fff}

/* ---------- 3. 02 HOW WE GREW ---------- */
.gv-ab-grow{background:#edf4f2}
.gv-ab-grow .section-title{max-width:760px}
.gv-timeline{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(26px,3.4vw,52px);margin-top:clamp(40px,4.4vw,62px);border-top:1px solid #0a1b2e;padding-top:30px}
.gv-tl-item{position:relative}
.gv-tl-item:before{content:'';position:absolute;top:-34px;left:0;width:7px;height:7px;border-radius:50%;background:#0a7c74}
.gv-tl-year{display:block;font-family:Space,system-ui,sans-serif;font-size:clamp(26px,2.6vw,34px);line-height:1;letter-spacing:-.04em;color:#0a1b2e}
.gv-tl-tag{display:block;margin:12px 0 12px;font:600 10.5px/1.3 Inter,sans-serif;letter-spacing:.16em;text-transform:uppercase;color:#08766f}
.gv-tl-item p{margin:0;font-size:14.5px;line-height:1.65;color:#4a5a6b;max-width:340px}

/* ---------- 4. 03 THE TEAM ---------- */
.gv-ab-team{background:#fff}
.gv-team-head{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:clamp(32px,5vw,72px);align-items:end}
.gv-team-note{margin:0 0 4px;font-size:15px;line-height:1.7;color:#4a5a6b;max-width:430px}
.gv-team{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(28px,3.4vw,44px) clamp(28px,4vw,56px);margin-top:clamp(40px,4.4vw,60px)}
.gv-team-item{border-top:1px solid rgba(10,27,46,.18);padding-top:20px}
.gv-team-no{display:block;font:500 11px/1 Space,sans-serif;letter-spacing:.14em;color:#0a7c74;margin-bottom:14px}
.gv-team-item h3{font-family:Space,system-ui,sans-serif;font-size:clamp(20px,1.8vw,24px);line-height:1.25;letter-spacing:-.02em;margin:0 0 8px;color:#0a1b2e}
.gv-team-item p{margin:0;font-size:14.5px;line-height:1.6;color:#4a5a6b;max-width:300px}

/* ---------- 5. 04 THE GROUP ---------- */
.gv-ab-group{background:#f5f7fa}
.gv-group{margin-top:clamp(38px,4.2vw,58px)}
.gv-group-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid #0a1b2e}
.gv-group-item{padding:24px clamp(16px,2vw,32px) 28px;border-right:1px solid #d8e1e7}
.gv-group-item:first-child{padding-left:0}
.gv-group-item:last-child{border-right:0}
.gv-group-no{display:block;font:600 10px/1 Inter,sans-serif;letter-spacing:.16em;color:#0a7c74;margin-bottom:14px}
.gv-group-item h3{font-family:Space,system-ui,sans-serif;font-size:clamp(20px,1.9vw,25px);line-height:1.25;letter-spacing:-.03em;margin:0 0 10px;color:#0a1b2e}
.gv-group-item p{margin:0;font-size:14.5px;line-height:1.6;color:#4a5a6b;max-width:280px}
.gv-group-join{display:block;width:100%;height:44px}
.gv-group-desk{display:flex;align-items:center;justify-content:space-between;gap:16px 32px;flex-wrap:wrap;background:#0a1b2e;padding:clamp(20px,2.2vw,28px) clamp(22px,3vw,40px)}
.gv-group-kicker{font:600 10.5px/1 Inter,sans-serif;letter-spacing:.18em;text-transform:uppercase;color:#7de0ce}
.gv-group-line{font-family:Space,system-ui,sans-serif;font-size:clamp(18px,1.7vw,23px);letter-spacing:-.025em;color:#fff}

/* ---------- 6. 05 HOW WE WORK ---------- */
.gv-ab-work{background:#fff}
.gv-work-head{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(240px,.6fr);gap:clamp(32px,5vw,72px);align-items:center}
.gv-work-head .section-label{color:#0a7c74;margin-bottom:20px}
.gv-work-head .section-title{max-width:620px;color:#0a1b2e}
.gv-work-head .section-copy{margin-top:18px;max-width:560px;color:#4a5a6b}
.gv-rules{display:grid;grid-template-columns:1fr 1fr;gap:0 clamp(32px,4vw,64px);margin-top:clamp(26px,3vw,40px);max-width:1000px}
.gv-rule{display:grid;grid-template-columns:40px minmax(0,1fr);gap:16px;padding:22px 0 24px;border-top:1px solid rgba(10,27,46,.16)}
.gv-rule-no{font:500 13px/1.7 Space,sans-serif;color:#0a7c74}
.gv-rule h3{font-family:Space,system-ui,sans-serif;font-size:clamp(19px,1.7vw,22px);line-height:1.3;letter-spacing:-.02em;margin:0 0 8px;color:#0a1b2e}
.gv-rule p{margin:0;font-size:14.5px;line-height:1.65;color:#4a5a6b}

/* ---------- 7. 窄屏 ---------- */
@media(max-width:1000px){
  body:not(.home) .page-hero .gv-stats{margin-top:32px;max-width:520px}
}
@media(max-width:900px){
  .gv-timeline{grid-template-columns:1fr;gap:0;border-top:0;padding-top:0}
  .gv-tl-item{border-top:1px solid #0a1b2e;padding:24px 0 0;margin-top:24px}
  .gv-tl-item:first-child{border-top:0;padding-top:0;margin-top:0}
  .gv-tl-item:before{display:none}
  .gv-team-head,.gv-work-head{grid-template-columns:1fr;gap:22px;align-items:start}
  .gv-team{grid-template-columns:1fr 1fr}
  .gv-work-head .gv-trust-plate{justify-content:flex-start}
  .gv-work-head .gv-trust-plate img{max-width:300px}
  .gv-group-row{grid-template-columns:1fr;border-top:1px solid #0a1b2e}
  .gv-group-item{border-right:0;border-bottom:1px solid #d8e1e7;padding:20px 0}
  .gv-group-item:first-child{padding-left:0}
  .gv-group-item:last-child{border-bottom:0;padding-bottom:24px}
  .gv-group-join{display:none}
  .gv-group-desk{margin-top:20px;flex-direction:column;align-items:flex-start;gap:10px}
  .gv-rules{grid-template-columns:1fr}
}
@media(max-width:600px){
  .gv-team{grid-template-columns:1fr}
  .gv-stat{grid-template-columns:88px minmax(0,1fr);gap:16px;padding:16px 0}
  .gv-rule{grid-template-columns:32px minmax(0,1fr);gap:12px}
}

/* ===== v4.13.0 home 01 map plate (generated, do not edit here) ===== */
/* 01 THE RISK: the sourcing-network map becomes a background plate instead of
   a white card. Real geodata (1240x1092, transparent PNG), pinned to the
   viewport edge, sized to the intro band, faded out on every edge. */
body.home .section.gap-section{position:relative;isolation:isolate;overflow:clip}
body.home .section.gap-section > .wrap{position:relative;z-index:1}
body.home .gap-section .intro-grid{position:relative}
body.home .gap-section .section-rail{height:auto;min-height:0}

body.home .gap-section .plate-risk{
  position:absolute;z-index:-1;
  top:calc(-1 * clamp(40px,7.5vw,104px));
  bottom:calc(-1 * clamp(20px,3.6vw,52px));
  right:calc(-1 * clamp(22px,5vw,76px));
  width:min(660px,48vw);
  height:auto;max-height:none;
  margin:0;padding:0;display:block;
  pointer-events:none;
}
body.home .gap-section .plate-risk img{
  width:100%;height:100%;max-height:none;object-fit:contain;object-position:right center;
  opacity:.84;
  -webkit-mask-image:linear-gradient(180deg,transparent 0,#000 15%,#000 82%,transparent 100%),
                     linear-gradient(90deg,transparent 0,#000 12%,#000 86%,transparent 100%);
  -webkit-mask-composite:source-in;
  mask-image:linear-gradient(180deg,transparent 0,#000 15%,#000 82%,transparent 100%),
             linear-gradient(90deg,transparent 0,#000 12%,#000 86%,transparent 100%);
  mask-composite:intersect;
}

@media(max-width:1280px) and (min-width:901px){
  body.home .gap-section .plate-risk{width:min(560px,44vw)}
  body.home .gap-section .plate-risk img{
    -webkit-mask-image:linear-gradient(180deg,transparent 0,#000 15%,#000 82%,transparent 100%),
                       linear-gradient(90deg,transparent 0,#000 24%,#000 86%,transparent 100%);
    mask-image:linear-gradient(180deg,transparent 0,#000 15%,#000 82%,transparent 100%),
               linear-gradient(90deg,transparent 0,#000 24%,#000 86%,transparent 100%);
  }
}

@media(max-width:900px){
  body.home .gap-section .plate-risk{
    position:relative;top:auto;right:auto;
    width:calc(100% + 2 * clamp(22px,5vw,76px));
    margin:clamp(8px,2vw,16px) 0 0 calc(-1 * clamp(22px,5vw,76px));
    height:auto;aspect-ratio:1240/1092;
  }
  body.home .gap-section .plate-risk img{
    -webkit-mask-image:linear-gradient(180deg,transparent 0,#000 7%,#000 92%,transparent 100%);
    -webkit-mask-composite:source-in;
    mask-image:linear-gradient(180deg,transparent 0,#000 7%,#000 92%,transparent 100%);
    mask-composite:intersect;
  }
}
/* ===== /v4.13.0 home 01 map plate ===== */

/* ============================================================
   v4.14.0 · About 页动效
   只在 <html class="gv-anim"> 下生效——该 class 由 wp_head 的内联
   脚本加上；没有 JS 或 prefers-reduced-motion 时不隐藏任何内容。
   动效语言：整页像一份档案被摊开——块一次性浮起，时间线的线从左
   划出、节点依次落下，集团的连线自己画出来。首页那套（数字滚动、
   悬停进度线）不用。
   ============================================================ */

/* 首屏用关键帧：随首帧就播，不等 JS，避免标题先空一拍 */
@keyframes gv-rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
.gv-anim .gv-ab-head > *{animation:gv-rise .7s cubic-bezier(.2,.7,.25,1) both}
.gv-anim .gv-ab-head > *:nth-child(2){animation-delay:.08s}
.gv-anim .gv-ab-head > *:nth-child(3){animation-delay:.16s}
.gv-anim .gv-stat{animation:gv-rise .7s cubic-bezier(.2,.7,.25,1) both}
.gv-anim .gv-stat:nth-child(1){animation-delay:.24s}
.gv-anim .gv-stat:nth-child(2){animation-delay:.32s}
.gv-anim .gv-stat:nth-child(3){animation-delay:.4s}

.gv-reveal{transition:opacity .62s cubic-bezier(.2,.7,.25,1),transform .62s cubic-bezier(.2,.7,.25,1);transition-delay:var(--d,0ms)}
.gv-anim .gv-reveal{opacity:0;transform:translateY(16px)}
.gv-anim .gv-reveal.is-in{opacity:1;transform:none}

/* 02 时间线：线划出，节点落下 */
.gv-timeline{position:relative}
.gv-anim .gv-timeline{border-top-color:transparent}
.gv-anim .gv-timeline:before{content:'';position:absolute;top:-1px;left:0;width:100%;height:1px;background:#0a1b2e;transform-origin:left;transform:scaleX(0)}
.gv-anim .gv-timeline.is-in:before{transform:scaleX(1);transition:transform .95s cubic-bezier(.2,.7,.25,1)}
.gv-anim .gv-tl-item:before{transform:scale(0);transform-origin:center}
.gv-anim .gv-tl-item.is-in:before{transform:scale(1);transition:transform .45s cubic-bezier(.34,1.3,.64,1) .22s}

/* 04 集团：连接线按路径画出 */
/* 用 clip-path 从左往右揭，而不是 dash 描边：SVG 是 preserveAspectRatio=none
   拉伸的，dash 在这里会被拉成断线 */
.gv-anim .gv-group-join{clip-path:inset(0 100% 0 0)}
.gv-anim .gv-group.is-in .gv-group-join{clip-path:inset(0 0 0 0);transition:clip-path 1.05s cubic-bezier(.2,.7,.25,1) .16s}

/* 悬停：标题与数字轻微换色，不做位移 */
/* 段落眉标前的小渐变线：进入时划出 */
.gv-anim .section-label:before{transform:scaleX(0);transform-origin:left;transition:transform .55s cubic-bezier(.2,.7,.25,1) .12s}
.gv-anim .section-label.is-in:before{transform:scaleX(1)}

.gv-team-item h3,.gv-tl-year,.gv-stat-label{transition:color .28s ease}
.gv-team-item:hover h3,.gv-tl-item:hover .gv-tl-year{color:#0a7c74}
.gv-stat:hover .gv-stat-label{color:#fff}
.gv-group-item h3{transition:color .28s ease}
.gv-group-item:hover h3{color:#0a7c74}

/* 窄屏时间线是堆叠的，横线只属于桌面版 */
@media(max-width:900px){
  .gv-timeline:before{display:none}
}

/* ============================================================
   v4.17.0 · About 页悬停：一盏灯 + 把纸抬起来
   悬停不做线：鼠标在区块里走，一束冷光跟着走；指到哪一条，那条
   像被从档案里抽出来——白纸、软影、分隔线化掉、字轻轻抬起。
   首页那套（进度线填到节点、其余淡出、节点放大）一概不用。
   ============================================================ */

/* 光：v4.69.2 起改为全页一层（见文件末尾 .gv-lamp-cursor）。
   原来按区块插入的 .gv-lamp 已不再创建，所以旧的 --mx/--my 规则一并撤掉。 */

@media(hover:hover) and (pointer:fine){
  .gv-tl-year,.gv-tl-tag,.gv-tl-item p{transition:transform .38s cubic-bezier(.2,.7,.25,1),color .28s ease}
  .gv-tl-item:hover .gv-tl-year,
  .gv-tl-item:hover .gv-tl-tag,
  .gv-tl-item:hover p{transform:translateY(-2px)}
  .gv-tl-item:hover .gv-tl-year{color:#0a7c74}

  /* 03 团队 / 05 规矩：一整条被抽出来——白纸、软影、原分隔线让位 */
  .gv-team-item,.gv-rule{position:relative;isolation:isolate;transition:border-top-color .3s ease}
  .gv-team-item:before,.gv-rule:before{
    content:'';position:absolute;inset:-16px -18px -18px;z-index:-1;
    background:#fff;
    box-shadow:0 14px 32px rgba(10,27,46,.10),0 0 0 1px rgba(10,27,46,.03);
    opacity:0;transform:translateY(7px);
    transition:opacity .26s ease,transform .36s cubic-bezier(.2,.7,.25,1);
  }
  .gv-team-item:hover,.gv-rule:hover{border-top-color:transparent}
  .gv-team-item:hover:before,.gv-rule:hover:before{opacity:1;transform:none}
  .gv-team-item:hover .gv-team-no{color:#0a1b2e}

  /* 04 集团：同一套纸片，右边那条竖分隔线同样让位 */
  .gv-group-item{position:relative;isolation:isolate;transition:border-right-color .3s ease}
  .gv-group-item:before{
    content:'';position:absolute;inset:-16px -14px -18px -18px;z-index:-1;
    background:#fff;
    box-shadow:0 14px 32px rgba(10,27,46,.10),0 0 0 1px rgba(10,27,46,.03);
    opacity:0;transform:translateY(7px);
    transition:opacity .26s ease,transform .36s cubic-bezier(.2,.7,.25,1);
  }
  .gv-group-item:hover{border-right-color:transparent}
  .gv-group-item:hover:before{opacity:1;transform:none}

  /* 首屏数字：数字轻微抬起，标签转白 */
  .gv-stat-num{transition:transform .38s cubic-bezier(.2,.7,.25,1),color .28s ease}
  .gv-stat:hover .gv-stat-num{transform:translateY(-2px)}
  .gv-stat:hover .gv-stat-label{color:#fff}
}


/* ============================================================
   v4.18.0 · 全站：光标聚光灯 + 纸卡抬升 + 时间线吊牌
   1) 灯：每个 section 一层跟着指针的冷光（assets/spotlight.js）
   2) 纸卡：指到哪一条，哪一条浮起一张纸（首页问题行、笔记行、
      About 的团队/规矩/集团）
   3) 时间线：纸卡挂在横线上，跟着指针轻轻倾斜
   ============================================================ */

/* ---------- 1. 聚光灯：v4.69.2 起是全页一层，见文件末尾 ---------- */

@media(hover:hover) and (pointer:fine){
  /* ---------- 2. 纸卡抬升 ---------- */
  .gap-row,.gv-note-row,.gv-team-item,.gv-rule,.gv-group-item{
    position:relative;
    isolation:isolate;
    transition:border-top-color .3s ease,border-bottom-color .3s ease,border-right-color .3s ease;
  }
  .gap-row:before,.gv-note-row:before,.gv-team-item:before,.gv-rule:before,.gv-group-item:before{
    content:'';position:absolute;inset:-16px -18px -18px;z-index:-1;
    background:#fff;
    box-shadow:0 14px 32px rgba(10,27,46,.10),0 0 0 1px rgba(10,27,46,.03);
    opacity:0;transform:translateY(7px);
    transition:opacity .26s ease,transform .36s cubic-bezier(.2,.7,.25,1);
  }
  .gap-row:hover:before,.gv-note-row:hover:before,
  .gv-team-item:hover:before,.gv-rule:hover:before,.gv-group-item:hover:before{
    opacity:1;transform:none;
  }
  .gap-row:hover,.gv-note-row:hover,
  .gv-team-item:hover,.gv-rule:hover{border-top-color:transparent;border-bottom-color:transparent}
  .gv-group-item:hover{border-right-color:transparent}

  /* ---------- 3. 时间线吊牌：从横线上取下来，跟着指针倾 ---------- */
  .gv-tl-sheet{
    position:relative;
    margin:-30px -20px -20px;
    padding:30px 20px 20px;
    transform-origin:50% 0;
    transition:transform .55s cubic-bezier(.2,.7,.25,1),background-color .28s ease,box-shadow .28s ease;
  }
  .gv-tl-item:hover .gv-tl-sheet{
    background:#fff;
    box-shadow:inset 0 1px 0 #0a1b2e,0 18px 36px rgba(10,27,46,.12);
    transition:transform .12s ease-out,background-color .25s ease,box-shadow .25s ease;
  }
}

/* ============================================================
   v4.21.0 · 02 历程：三张竖图卡
   原来的文字时间线换成三张竖幅实景图，年份与说明压在图里；
   图先占位，之后换成加工厂 / 物流 / 仓库的实拍或视频。
   ============================================================ */

.gv-tl-deck{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
  gap:clamp(14px,1.8vw,26px);
  margin-top:clamp(34px,3.6vw,52px);
}
.gv-tl-card{
  position:relative;isolation:isolate;margin:0;overflow:hidden;
  aspect-ratio:3/4;background:#0a1b2e;
}
.gv-tl-card-img{
  position:absolute;inset:0;z-index:0;width:100%;height:100%;
  object-fit:cover;transform:scale(1);filter:saturate(.88);
  transition:transform 6s cubic-bezier(.2,.7,.25,1),filter .8s ease;
}
.gv-tl-card:after{
  content:'';position:absolute;inset:0;z-index:1;
  background:linear-gradient(180deg,rgba(6,18,30,.5) 0%,rgba(6,18,30,.1) 40%,rgba(6,18,30,.88) 100%);
}
.gv-tl-card-body{
  position:relative;z-index:2;height:100%;
  display:flex;flex-direction:column;justify-content:space-between;
  padding:clamp(18px,1.9vw,28px);color:#fff;
}
.gv-tl-card-year{display:block;font:500 clamp(30px,2.6vw,40px)/1 Space,sans-serif;letter-spacing:-.04em;color:#fff}
.gv-tl-card-tag{display:block;margin-top:10px;font:600 10.5px/1.4 Inter,sans-serif;letter-spacing:.16em;text-transform:uppercase;color:#7de0ce}
.gv-tl-card p{margin:0;font-size:15px;line-height:1.6;color:rgba(255,255,255,.92);max-width:34ch}

@media(hover:hover) and (pointer:fine){
  .gv-tl-card:hover .gv-tl-card-img{transform:scale(1.045);filter:saturate(1) brightness(1.05)}
}

@media(max-width:900px){
  .gv-tl-deck{grid-template-columns:1fr;gap:14px}
  .gv-tl-card{aspect-ratio:16/10}
  .gv-tl-card p{max-width:none}
}

/* ============================================================
   v4.23.0 · 02 历程：通栏三连图 + 一条时间线
   图与图之间不留缝，左右贴到视口边；横线压在图上沿、贯穿整幅，
   三个圆点各对准一张图的中线。文字用页面准线对齐（首尾两块）。
   ============================================================ */

.gv-ab-grow{
  --gv-gutter:calc(max(0px,(100vw - 1320px) / 2) + clamp(22px,5vw,76px));
  overflow:hidden;
}

/* 时间线：横线 + 三个圆点，线从左划出、点依次落下 */
.gv-tl-rail{position:relative;height:9px;margin-top:clamp(28px,3vw,46px)}
.gv-tl-rail:before{content:'';position:absolute;left:0;right:0;top:4px;height:1px;background:#0a1b2e;transform-origin:left}
.gv-tl-rail span{position:absolute;top:1px;width:7px;height:7px;border-radius:50%;background:#0a7c74;transform:translateX(-50%)}
.gv-tl-rail span:nth-child(1){left:16.6667%}
.gv-tl-rail span:nth-child(2){left:50%}
.gv-tl-rail span:nth-child(3){left:83.3333%}
.gv-anim .gv-tl-rail:before{transform:scaleX(0);transition:transform .95s cubic-bezier(.2,.7,.25,1)}
.gv-anim .gv-tl-rail.is-in:before{transform:scaleX(1)}
.gv-anim .gv-tl-rail span{transform:translateX(-50%) scale(0);transition:transform .45s cubic-bezier(.34,1.3,.64,1)}
.gv-anim .gv-tl-rail.is-in span{transform:translateX(-50%) scale(1)}
.gv-anim .gv-tl-rail.is-in span:nth-child(2){transition-delay:.22s}
.gv-anim .gv-tl-rail.is-in span:nth-child(3){transition-delay:.44s}

/* 三连图：通栏、无缝 */
.gv-tl-deck{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin-top:0}
.gv-tl-card{
  position:relative;isolation:isolate;margin:0;overflow:hidden;
  aspect-ratio:4/5;background:#0a1b2e;
}
.gv-tl-card-img{
  position:absolute;inset:0;z-index:0;width:100%;height:100%;
  object-fit:cover;transform:scale(1);filter:saturate(.88);
  transition:transform 6s cubic-bezier(.2,.7,.25,1),filter .8s ease;
}
.gv-tl-card:after{
  content:'';position:absolute;inset:0;z-index:1;
  background:linear-gradient(180deg,rgba(6,18,30,.52) 0%,rgba(6,18,30,.08) 42%,rgba(6,18,30,.9) 100%);
}
.gv-tl-card-body{
  position:relative;z-index:2;height:100%;
  display:flex;flex-direction:column;justify-content:space-between;
  padding:clamp(20px,2.4vw,34px);
}
.gv-tl-deck > .gv-tl-card:first-child .gv-tl-card-body{padding-left:var(--gv-gutter)}
.gv-tl-deck > .gv-tl-card:last-child .gv-tl-card-body{padding-right:var(--gv-gutter)}
.gv-tl-card-year{display:block;font:500 clamp(28px,2.4vw,38px)/1 Space,sans-serif;letter-spacing:-.04em;color:#fff}
.gv-tl-card-tag{display:block;margin-top:10px;font:600 10.5px/1.4 Inter,sans-serif;letter-spacing:.16em;text-transform:uppercase;color:#7de0ce}
.gv-tl-card p{margin:0;font-size:15px;line-height:1.6;color:rgba(255,255,255,.92);max-width:32ch}

@media(hover:hover) and (pointer:fine){
  .gv-tl-card:hover .gv-tl-card-img{transform:scale(1.045);filter:saturate(1) brightness(1.05)}
}

@media(max-width:900px){
  .gv-tl-rail{display:none}
  .gv-tl-deck{grid-template-columns:1fr}
  .gv-tl-card{aspect-ratio:4/5}
  .gv-tl-card p{max-width:none}
  .gv-tl-deck > .gv-tl-card:first-child .gv-tl-card-body{padding-left:clamp(20px,5vw,48px)}
  .gv-tl-deck > .gv-tl-card:last-child .gv-tl-card-body{padding-right:clamp(20px,5vw,48px)}
}

/* ============================================================
   v4.24.0 · 02 历程：时间线压在图面上
   横线不再待在图上沿，而是横穿三张图（44% 高度），圆点对准每张
   图的中线；线用半透明白，点在图上带一圈暗底，保证在照片上看得见。
   ============================================================ */

.gv-tl-stage{position:relative;margin-top:clamp(24px,3vw,44px)}
.gv-tl-rail{
  position:absolute;left:0;right:0;top:44%;height:9px;z-index:3;margin:0;
}
.gv-tl-rail:before{content:'';position:absolute;left:0;right:0;top:4px;height:1px;background:rgba(255,255,255,.62)}
.gv-tl-rail span{
  position:absolute;top:1px;width:7px;height:7px;border-radius:50%;
  background:#7de0ce;box-shadow:0 0 0 3px rgba(6,18,30,.45);
  transform:translateX(-50%);
}
.gv-tl-rail span:nth-child(1){left:16.6667%}
.gv-tl-rail span:nth-child(2){left:50%}
.gv-tl-rail span:nth-child(3){left:83.3333%}

@media(max-width:900px){
  .gv-tl-rail{display:none}
}

/* ============================================================
   v4.26.0 · 02 历程：线抬高、加粗，文字全部落在线的下方
   线从 44% 提到 18%，加粗到 2px、接近纯白；年份与说明整体下移到
   线下方，图的上沿只留画面，不放字。
   ============================================================ */

.gv-tl-rail{top:18%}
.gv-tl-rail:before{
  top:3px;height:2px;
  background:rgba(255,255,255,.92);
  box-shadow:0 0 0 1px rgba(6,18,30,.22);
}
.gv-tl-rail span{
  top:0;width:9px;height:9px;
  background:#7de0ce;
  box-shadow:0 0 0 3px rgba(6,18,30,.62);
}

/* 4:5 的卡片：18% 高度 = 22.5% 宽度 */
.gv-tl-card-body{padding-top:calc(22.5% + 18px)}

@media(max-width:900px){
  .gv-tl-card-body{padding-top:clamp(20px,2.4vw,34px)}
}

/* 文字整体下移到线下方后，上半幅再压深一点，保证年份和标签在任何照片上都能读 */
.gv-tl-card:after{
  background:linear-gradient(180deg,
    rgba(6,18,30,.72) 0%,
    rgba(6,18,30,.42) 26%,
    rgba(6,18,30,.14) 52%,
    rgba(6,18,30,.2) 72%,
    rgba(6,18,30,.9) 100%);
}

/* 压在图上的字加一层很轻的投影：亮照片上也不糊 */
.gv-tl-card-year,
.gv-tl-card-tag,
.gv-tl-card p{text-shadow:0 1px 14px rgba(6,18,30,.55)}

/* ============================================================
   v4.28.0 · 02 历程：年份回到线上方，说明留在线下方
   线定在 21% 高度（1024 下约 86px，年份+标签结束在 77px，留 9px 余量）。
   ============================================================ */

.gv-tl-rail{top:21%}

.gv-tl-card-body{padding-top:clamp(20px,2.4vw,34px)}

@media(max-width:900px){
  .gv-tl-card-body{padding-top:clamp(20px,2.4vw,34px)}
}

/* ============================================================
   v4.29.0 · 02 历程：说明文字贴着线下方
   年份与标签在线上，说明紧贴线的下沿开始，不再沉到卡片底部；
   卡片下半部只留画面。
   ============================================================ */

@media(min-width:901px){
  .gv-tl-card-body{justify-content:flex-start}
  .gv-tl-card p{
    position:absolute;
    top:calc(21% + 22px);
    left:clamp(20px,2.4vw,34px);
    right:clamp(20px,2.4vw,34px);
    margin:0;
  }
  .gv-tl-deck > .gv-tl-card:first-child p{left:var(--gv-gutter)}
  .gv-tl-deck > .gv-tl-card:last-child p{right:var(--gv-gutter)}
}

/* 文字不再压底，底部那层深色渐变压浅，让画面透出来 */
.gv-tl-card:after{
  background:linear-gradient(180deg,
    rgba(6,18,30,.72) 0%,
    rgba(6,18,30,.42) 26%,
    rgba(6,18,30,.14) 52%,
    rgba(6,18,30,.2) 74%,
    rgba(6,18,30,.58) 100%);
}

/* ============================================================
   v4.30.0 · 02 历程：换成视频
   每张卡里放一段 4 秒竖幅视频，封面为首帧；悬停才加载并播放，
   离开暂停回到首帧。视频本身带运动，所以不再叠加悬停缩放。
   ============================================================ */

.gv-tl-card-video{
  position:absolute;inset:0;z-index:0;
  width:100%;height:100%;object-fit:cover;
  background:#0a1b2e;
  filter:saturate(.92);
}

/* 说明文字压在照片上，给一层从左淡出的暗底，文字密集的画面也不打架 */
.gv-tl-card p{
  padding:10px 18px;
  margin-left:-18px;
  background:linear-gradient(90deg,rgba(6,18,30,.62) 0%,rgba(6,18,30,.4) 62%,rgba(6,18,30,0) 100%);
}

/* 说明文字：不要色块，靠双层投影压住底下的画面 */
.gv-tl-card p{
  padding:0;
  margin:0;
  background:none;
  text-shadow:0 2px 6px rgba(6,18,30,.9),0 0 26px rgba(6,18,30,.75);
}

/* 说明文字所在这条横带再压一层柔和暗带（两端渐隐，不出硬边） */
.gv-tl-card:after{
  background-image:
    linear-gradient(180deg,
      rgba(6,18,30,0) 14%,
      rgba(6,18,30,.6) 22%,
      rgba(6,18,30,.6) 44%,
      rgba(6,18,30,0) 54%),
    linear-gradient(180deg,
      rgba(6,18,30,.72) 0%,
      rgba(6,18,30,.42) 26%,
      rgba(6,18,30,.14) 52%,
      rgba(6,18,30,.2) 74%,
      rgba(6,18,30,.58) 100%);
}

/* ============================================================
   v4.31.0 · 02 历程：视频下沿直接接上 03 团队
   原先 02 末尾还留着 8vw（1440 下 115px）的空底，视频结束后先是一截
   浅绿空带、再进白底板块。这截空底去掉，三连视频的底边就是 02 的结束线；
   03 顶部那层 140px 浅蓝顶光也一并撤掉，免得视频和白底之间又夹一条色带。
   ============================================================ */

body:not(.home) .section.gv-ab-grow{padding-bottom:0}
body:not(.home) .section.gv-ab-team:before{display:none}

/* ============================================================
   v4.33.0 · 问询页：去掉表单导语下那条横线
   h2 下面那段导语自带 1px 下边线（v4.6.3 的「表单卡里一条分隔」），
   业主圈掉的就是这一条。只去线，下边距与栏名、输入框的下划线都不动。
   ============================================================ */

body:not(.home) .contact-hero .gv-form .form-intro{
  border-bottom:0;
}

/* ============================================================
   v4.33.2 · 问询页：左栏品牌收尾句整句撤掉
   业主看完 v4.33.1 的「贴身 + 压淡」后决定不要这句，左栏停在
   `We look forward to partnering with you.`，品牌句只留给页脚。
   v4.33.1 的 `.contact-signoff` 段距与不透明度规则随元素一起删除，
   没有留下空选择器。
   ============================================================ */

/* ============================================================
   v4.33.6 · 问询表单：Submit 只留一个字
   箭头也去掉（插件 3.3.5 起按钮内只剩 `Submit` 文本）。条带保持
   品牌渐变与 60px 高，标签居中，悬停只提亮并掠过斜光，不再有位移元素。
   ============================================================ */

body:not(.home) .contact-hero .gv-form .button-link{
  position:relative;
  isolation:isolate;
  width:100%;
  min-height:60px;
  padding:0 24px;
  gap:0;
  justify-content:center;
  color:#fff;
  border:1px solid #082a52;
  background:linear-gradient(112deg,#09265c 0%,#0a4f6e 52%,#0a7c74 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 16px 30px rgba(7,42,84,.24);
  font:600 16px/1 Inter,sans-serif;
  letter-spacing:.02em;
  text-shadow:0 1px 2px rgba(4,20,40,.28);
  transition:box-shadow .3s ease,transform .2s ease;
}
/* 悬停淡入：更亮的渐变 + 一道斜光 */
body:not(.home) .contact-hero .gv-form .button-link::before{
  content:'';position:absolute;inset:0;z-index:-1;
  background:
    linear-gradient(105deg,rgba(255,255,255,0) 24%,rgba(255,255,255,.14) 46%,rgba(255,255,255,0) 68%),
    linear-gradient(112deg,#0a2f6b 0%,#0b5c7f 52%,#0b8f84 100%);
  opacity:0;
  transition:opacity .4s ease;
}
@media(hover:hover) and (pointer:fine){
  body:not(.home) .contact-hero .gv-form .button-link:hover::before{opacity:1}
  body:not(.home) .contact-hero .gv-form .button-link:hover{
    transform:translateY(-1px);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.24),0 20px 38px rgba(7,42,84,.3);
  }
}
body:not(.home) .contact-hero .gv-form .button-link:active{
  transform:translateY(0);
  box-shadow:inset 0 2px 8px rgba(0,20,40,.35);
}
body:not(.home) .contact-hero .gv-form .button-link:focus-visible{
  outline:3px solid #08766f;
  outline-offset:3px;
}

/* ============================================================
   v4.35.0 · case studies: the index is a filter, not a spec sheet
   八个板块从「案例下面的一份规格表」搬到「案例上面的一排筛选」：
   板块名常驻在筛选条里，板块详情只在选中时出现。Stage / Compliance 已撤。
   ============================================================ */

/* 1. 筛选条：一排 pill，带已发布案例数 */
.gv-case-filter{margin:0 0 clamp(26px,2.8vw,36px)}
.gv-case-filter ul{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;max-width:1040px}
.gv-case-filter a{display:inline-flex;align-items:baseline;gap:7px;padding:9px 13px;border:1px solid #d8e1e7;border-radius:999px;font:600 11px/1 Inter,sans-serif;letter-spacing:.09em;text-transform:uppercase;color:#405c67;text-decoration:none;white-space:nowrap;transition:background .16s ease,border-color .16s ease,color .16s ease}
.gv-case-filter a:hover{border-color:#0a1b2e;color:#0a1b2e;background:#f4f7f9}
.gv-case-filter a:focus-visible{outline:2px solid #08766f;outline-offset:3px}
.gv-case-filter a[aria-current="page"]{background:#0a1b2e;border-color:#0a1b2e;color:#fff}
.gv-case-filter .n{font:500 11px/1 Space,system-ui,sans-serif;letter-spacing:0;color:#08766f}
.gv-case-filter a[aria-current="page"] .n{color:#9ceadf}
.gv-case-filter a[data-empty="1"]{color:#5b6f7f;border-color:#e4eaee}
.gv-case-filter a[data-empty="1"] .n{color:#5b6f7f}

/* 2. 选中板块时，先给这个板块一句话和品类清单，再给案例 */
.gv-sector-head{margin:0 0 clamp(24px,2.6vw,34px);padding-top:clamp(20px,2.2vw,26px);border-top:1px solid #0a1b2e}
.gv-sector-head-name,.gv-sector-head-note,.gv-sector-head-items{max-width:780px}
.gv-sector-head-name{margin:0;font-size:clamp(25px,2.5vw,33px);line-height:1.16;letter-spacing:-.03em;color:#0a1b2e}
.gv-sector-head-note{margin:10px 0 0;font-size:16.5px;line-height:1.6;color:#405c67}
.gv-sector-head-items{margin:14px 0 0;font-size:13px;line-height:1.7;color:#5b6f7f}
.gv-sector-head-items span{display:inline-block;margin-right:10px;font:600 11px/1.8 Inter,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#08766f}

/* 3. 板块头已经有横线，网格不再重复一条 */
.gv-case-grid.has-head{border-top:0}

/* 4. 只有一张卡时，标题不跟着满宽跑 */
.gv-case-grid.is-single .gv-case-card-title{max-width:820px}

/* 5. 手机：筛选条收成一条可横滑的带，不压成三行 */
@media(max-width:640px){
  .gv-case-filter{margin-inline:calc(-1 * clamp(22px,5vw,76px));padding-inline:clamp(22px,5vw,76px);overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .gv-case-filter::-webkit-scrollbar{display:none}
  .gv-case-filter ul{flex-wrap:nowrap}
  .gv-case-filter li{flex:0 0 auto}
}

/* 6. 整页首屏：标题、筛选、案例同一块墨面（v4.38.0） */
body:not(.home) .page-hero.gv-case-hero .wrap{display:block;max-width:clamp(1320px,92vw,1800px)}
body:not(.home) .page-hero.gv-case-hero{min-height:0;padding-block:clamp(30px,3vw,44px) clamp(64px,6vw,96px)}
body:not(.home) .page-hero.gv-case-hero .eyebrow{margin-bottom:14px}
body:not(.home) .page-hero.gv-case-hero h1{font-size:clamp(28px,3.2vw,42px);line-height:1.16;letter-spacing:-.04em;max-width:760px;margin-bottom:12px}
body:not(.home) .page-hero.gv-case-hero > .wrap > p{font-size:16px;line-height:1.6;max-width:640px}
/* 航线水印挪到标题右上方，别压在卡片底下 */
body:not(.home) .page-hero.gv-case-hero:after{top:-40px;bottom:auto;opacity:.13}

/* 7. 筛选条与案例在墨面上：反色一套 */
body:not(.home) .gv-case-hero .gv-case-filter{margin:clamp(22px,2.2vw,28px) 0 clamp(20px,2vw,26px)}
body:not(.home) .gv-case-hero .gv-case-filter ul{max-width:none}
body:not(.home) .gv-case-hero .gv-case-filter a{border-color:rgba(255,255,255,.24);color:#c9d9e3}
body:not(.home) .gv-case-hero .gv-case-filter a:hover{border-color:#fff;color:#fff;background:rgba(255,255,255,.07)}
body:not(.home) .gv-case-hero .gv-case-filter a[aria-current="page"]{background:#fff;border-color:#fff;color:#0a1b2e}
body:not(.home) .gv-case-hero .gv-case-filter .n{color:#7de0ce}
body:not(.home) .gv-case-hero .gv-case-filter a[aria-current="page"] .n{color:#08766f}
body:not(.home) .gv-case-hero .gv-case-filter a[data-empty="1"]{color:#93a9b6;border-color:rgba(255,255,255,.13)}
body:not(.home) .gv-case-hero .gv-case-filter a[data-empty="1"] .n{color:#93a9b6}

body:not(.home) .gv-case-hero .gv-case-grid{border-top-color:rgba(255,255,255,.2)}
body:not(.home) .gv-case-hero .gv-case-card{border-bottom-color:rgba(255,255,255,.13)}
body:not(.home) .gv-case-hero .gv-case-card:nth-child(odd){border-right-color:rgba(255,255,255,.13)}
body:not(.home) .gv-case-hero .gv-case-card:hover{background:rgba(255,255,255,.05)}
body:not(.home) .gv-case-hero .gv-case-card-title{color:#fff}
body:not(.home) .gv-case-hero .gv-case-card-client{color:#c9d9e3}
body:not(.home) .gv-case-hero .gv-case-card-foot{color:#9fb6c4}
body:not(.home) .gv-case-hero .gv-case-card-no{color:#9fb6c4}
body:not(.home) .gv-case-hero .gv-case-card-area{color:#7de0ce}
body:not(.home) .gv-case-hero .gv-case-card-more{color:#9ceadf}

body:not(.home) .gv-case-hero .gv-sector-head{border-top-color:rgba(255,255,255,.2)}
body:not(.home) .gv-case-hero .gv-sector-head-name{color:#fff}
body:not(.home) .gv-case-hero .gv-sector-head-note{color:#c9d9e3}
body:not(.home) .gv-case-hero .gv-sector-head-items{color:#9fb6c4}
body:not(.home) .gv-case-hero .gv-sector-head-items span{color:#7de0ce}

body:not(.home) .gv-case-hero .gv-case-empty{border-bottom-color:rgba(255,255,255,.13)}
body:not(.home) .gv-case-hero .gv-case-empty h2{color:#fff}
body:not(.home) .gv-case-hero .gv-case-empty-copy{color:#c9d9e3}
body:not(.home) .gv-case-hero .gv-case-empty .text-link{color:#9ceadf}
body:not(.home) .gv-case-hero .gv-case-empty .section-label{color:#7de0ce}

/* ============================================================
   v4.42.0 · About：首屏收成「标题 → 定位 → 来历 → 九板块」
   v4.40.0 把 01 段并进来时，定位句压在标题下面、来历反而排在
   右栏上方，读者先碰到来历。这一版把定位句提到右栏，和标题同
   一排；来历整段下移成第二层，结尾的冒号直接接九个板块；团队
   与规矩两块撤掉（规矩移到 /services/）。首屏仍不放
   2019 / 100+ / 3 那组数字。
   ============================================================ */

body:not(.home) .page-hero.gv-about-hero{
  padding-block:clamp(50px,4.4vw,68px) clamp(50px,4.8vw,76px);
}
body:not(.home) .page-hero.gv-about-hero .gv-ab-lead{
  max-width:520px;
  margin:6px 0 0;
  font-size:18px;
  line-height:1.7;
}
body:not(.home) .page-hero.gv-about-hero .gv-ab-story p{
  margin:0;
  max-width:820px;
  color:#c9d9e3;
  font-size:17px;
  line-height:1.7;
}
.gv-ab-sectors{
  list-style:none;
  margin:clamp(34px,3.8vw,52px) 0 0;
  padding:clamp(18px,1.8vw,24px) 0 0;
  border-top:1px solid rgba(255,255,255,.16);
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:0 clamp(24px,3vw,46px);
}
.gv-ab-sector{
  display:grid;
  grid-template-columns:28px minmax(0,1fr);
  gap:10px;
  align-items:baseline;
  padding:9px 0;
}
.gv-ab-sector-no{font:500 10.5px/1.5 Space,system-ui,sans-serif;letter-spacing:.14em;color:#7de0ce}
.gv-ab-sector-name{font-size:14.5px;line-height:1.45;color:#e6eef4}

@media(min-width:1001px){
  body:not(.home) .page-hero.gv-about-hero .wrap{
    grid-template-columns:minmax(0,1.04fr) minmax(0,.96fr);
    column-gap:clamp(48px,5.4vw,100px);
    row-gap:0;
  }
  body:not(.home) .page-hero.gv-about-hero .gv-ab-head{grid-column:1;grid-row:1}
  body:not(.home) .page-hero.gv-about-hero .gv-ab-lead{grid-column:2;grid-row:1}
  body:not(.home) .page-hero.gv-about-hero .gv-ab-story{
    grid-column:1 / -1;
    grid-row:2;
    margin-top:clamp(34px,3.6vw,50px);
  }
  body:not(.home) .page-hero.gv-about-hero .gv-ab-sectors{grid-column:1 / -1;grid-row:3}
}
@media(max-width:1200px){
  .gv-ab-sectors{column-gap:20px}
  .gv-ab-sector{grid-template-columns:24px minmax(0,1fr);gap:6px}
}
@media(max-width:1000px){
  body:not(.home) .page-hero.gv-about-hero .gv-ab-lead{margin-top:26px;max-width:640px}
  body:not(.home) .page-hero.gv-about-hero .gv-ab-story{margin-top:26px}
  body:not(.home) .page-hero.gv-about-hero .gv-ab-story p{max-width:640px}
  .gv-ab-sectors{grid-template-columns:1fr 1fr;margin-top:34px}
}
@media(max-width:680px){
  .gv-ab-sectors{grid-template-columns:1fr}
  .gv-ab-sector{padding:8px 0}
}

/* 视频底边直接接 02 集团：这一段的顶光会在视频下压出一条浅色带，关掉 */
body:not(.home) .section.gv-ab-group:before{display:none}

/* 入场：定位句、来历与九个板块接着标题浮起 */
.gv-anim .gv-ab-lead{animation:gv-rise .7s cubic-bezier(.2,.7,.25,1) .12s both}
.gv-anim .gv-ab-story{animation:gv-rise .7s cubic-bezier(.2,.7,.25,1) .2s both}
.gv-anim .gv-ab-sector{animation:gv-rise .6s cubic-bezier(.2,.7,.25,1) both;animation-delay:calc(.26s + var(--i,0) * 40ms)}

@media(max-width:640px){
  body:not(.home) .page-hero.gv-case-hero p:not(.eyebrow){font-size:15px;line-height:1.55}
}

/* 不让带连字符的复合词在行尾断开（Custom-er / -specific 那种断法） */
.nv{white-space:nowrap}

/* 首屏是墨面时，结尾 CTA 的渐变要接着墨色起，否则深色一断会露出一条白带 */
body:not(.home) .page-hero.gv-case-hero + .section.closing{
  background:linear-gradient(180deg,#0a1b2e 0%,#0a1b2e 16%,#4a7fa3 46%,#3f648c 72%,#0a2d4e 100%);
}

/* ============================================================
   v4.42.0 · Solutions：HOW WE WORK 从 About 挪来
   不另起一套版式：用页面自己的 content-grid（左眉标 + 标题 +
   说明，右四条规矩），规矩沿用 About 的 .gv-rules / .gv-rule，
   只把上边距归零，让四条和左侧标题同一条顶线。
   ============================================================ */
body:not(.home) .content-grid .gv-rules-sol{margin-top:0;max-width:none}
/* 右栏窄于约 640px 时两列会把标题挤成两行，改成竖排 */
@media(max-width:1399px){
  .gv-rules-sol{grid-template-columns:1fr}
}

/* ============================================================
   v4.43.0 · About：首屏两段收进右栏；01 段接成墨色章节
   定位句与来历上下排进右栏（读序先定位、后来历），首屏右边整
   列有字，左边只留标题；九板块仍通栏。01「From one workshop to
   one chain.」改成墨色标题带，直接接住首屏的墨面，中间不再切
   出一条空白的浅色带；三连图仍从标题带下方通栏起。
   ============================================================ */

body:not(.home) .page-hero.gv-about-hero{box-shadow:none}
/* 首屏底部不再压一层蓝光：01 段要接同一块墨面，底部越平越看不出接缝 */
body:not(.home) .page-hero.gv-about-hero{
  background-image:
    radial-gradient(85% 130% at 88% 10%,rgba(125,224,206,.17) 0%,rgba(125,224,206,0) 58%),
    radial-gradient(rgba(255,255,255,.075) 1px,transparent 1.3px);
  background-size:auto,24px 24px;
  background-repeat:no-repeat,repeat;
}
body:not(.home) .page-hero.gv-about-hero .gv-ab-intro{padding-top:6px}
body:not(.home) .page-hero.gv-about-hero .gv-ab-intro .gv-ab-lead{
  margin:0;
  max-width:none;
  font-size:18px;
  line-height:1.7;
}
body:not(.home) .page-hero.gv-about-hero .gv-ab-intro p + p{
  margin:26px 0 0;
  max-width:none;
  color:#c9d9e3;
  font-size:17px;
  line-height:1.7;
}
@media(min-width:1001px){
  body:not(.home) .page-hero.gv-about-hero .wrap{
    grid-template-columns:minmax(0,1.04fr) minmax(0,.96fr);
    column-gap:clamp(48px,5.4vw,100px);
    row-gap:0;
  }
  body:not(.home) .page-hero.gv-about-hero .gv-ab-head{grid-column:1;grid-row:1}
  body:not(.home) .page-hero.gv-about-hero .gv-ab-intro{grid-column:2;grid-row:1}
  body:not(.home) .page-hero.gv-about-hero .gv-ab-sectors{grid-column:1 / -1;grid-row:2}
}
@media(max-width:1000px){
  body:not(.home) .page-hero.gv-about-hero .gv-ab-intro{padding-top:26px}
}

/* 01 段整块接墨：标题带和首屏之间没有换底；图片紧接标题带 */
body:not(.home) .section.gv-ab-grow{
  background-color:#0a1b2e;
  background-image:radial-gradient(rgba(255,255,255,.075) 1px,transparent 1.3px);
  background-size:24px 24px;
  padding-block:clamp(44px,4.4vw,64px) 0;
  color:#fff;
}
body:not(.home) .section.gv-ab-grow .wrap{padding-bottom:clamp(34px,3.4vw,50px)}
body:not(.home) .section.gv-ab-grow .section-label{color:#7de0ce}
body:not(.home) .section.gv-ab-grow .section-title{color:#fff}
body:not(.home) .section.gv-ab-grow .gv-tl-stage{margin-top:0}
/* 整段已经是墨面，140px 的浅色顶光会在首屏下糊出一块灰 */
body:not(.home) .section.gv-ab-grow:before{display:none}

/* 入场：右栏两段一起浮起 */
.gv-anim .gv-ab-intro{animation:gv-rise .7s cubic-bezier(.2,.7,.25,1) .12s both}

/* ============================================================
   v4.46.0 · 案例正文：先把字读顺
   原行宽约 80 字符（740px / 18.5px），超出 60–75 的舒适区；
   行高 1.78 偏松、段距 22px 偏紧，段落之间反而糊在一起。
   现在行宽 66ch、行高 1.7、段距 1.35em，首段略放大作为入口。
   ============================================================ */

body:not(.home) .gv-case-body{padding-block:clamp(44px,4.6vw,64px) clamp(56px,5.6vw,84px)}
body:not(.home) .gv-case-body .wrap{max-width:calc(640px + 2 * clamp(22px,5vw,76px))}
body:not(.home) .gv-case-content{max-width:640px;text-wrap:pretty}
body:not(.home) .gv-case-content p{margin:0 0 1.35em;line-height:1.7}
body:not(.home) .gv-case-content p:first-child{font-size:1.09em;line-height:1.6;color:#1e3547}
body:not(.home) .gv-case-content p:last-child{margin-bottom:0}

/* 顶部阅读进度：2px，不占布局，减少动效时不动 */
.gv-read-progress{position:fixed;inset:0 0 auto;height:2px;background:transparent;z-index:9999;pointer-events:none}
.gv-read-progress span{display:block;height:100%;width:0;background:linear-gradient(90deg,#7de0ce,#0655bd);transition:width .12s linear}
.gv-read-progress.is-done span{background:#7de0ce}
@media(prefers-reduced-motion:reduce){.gv-read-progress span{transition:none}}
@media print{.gv-read-progress{display:none}}

/* 读完给下一步：回到索引 */
.gv-case-back{margin:0;padding-top:clamp(22px,2.2vw,28px);border-top:1px solid #d8e1e7}
/* 结尾 CTA 有 -48px 上提，这里多留一截，否则返回链接贴着卡片 */
body:not(.home) .gv-case-end{padding-bottom:clamp(76px,7.5vw,104px)}
/* 返回索引：描边按钮，不是一个带下划线的句子 */
.gv-case-back-link{display:inline-flex;align-items:center;gap:11px;min-height:48px;padding:0 20px;border:1px solid #0a1b2e;color:#0a1b2e;text-decoration:none;font:600 13px/1 Inter,sans-serif;letter-spacing:.1em;text-transform:uppercase;transition:background .16s ease,color .16s ease,border-color .16s ease}
.gv-case-back-link span{transition:transform .16s ease}
.gv-case-back-link:hover{background:#0a1b2e;border-color:#0a1b2e;color:#fff}
.gv-case-back-link:hover span{transform:translateX(-4px)}
.gv-case-back-link:focus-visible{outline:2px solid #08766f;outline-offset:3px}
.gv-case-end-inner{max-width:calc(640px + 2 * clamp(22px,5vw,76px))}

@media(max-width:600px){
  body:not(.home) .gv-case-content{max-width:none}
  body:not(.home) .gv-case-content p{line-height:1.66}
  body:not(.home) .gv-case-content p:first-child{font-size:1.02em}
  .gv-case-end-inner{max-width:none}
}

/* ============================================================
   v4.49.0 · About 九板块字号提一档
   9px 数字 + 14.5px 名称在 1440 下偏小，整条带子像脚注；名称提到
   16px、数字提到 11.5px，行高与 3×3 栅格不动。
   ============================================================ */
.gv-ab-sector-name{font-size:16px}
.gv-ab-sector-no{font-size:11.5px}

/* ============================================================
   v4.60.0 · 集团条左标：品牌原样大小写，字号提一档
   条子左边从「THE DESK IN YONGKANG」换成品牌后，大写小字把品牌
   名喊成了 GAINVECTOR；改回 GainVector，并用品牌字（Space）排，
   10.5px → 16px。
   ============================================================ */
.gv-group-kicker{
  font:600 16px/1 Space,system-ui,sans-serif;
  letter-spacing:-.02em;
  text-transform:none;
}

/* ============================================================
   v4.61.0 · 02 底色换深青墨 + 四行悬停
   1) 原来的中间调蓝灰（#2a4a60 + 72px 蓝图网格）夹在 01 的冷
      灰纸和 03 的墨蓝之间，既不够深也不够蓝，读起来像蒙了层灰。
      换成深青墨 #10303a：去掉网格，只留右上一点青绿微光和一
      条顶边发丝线；色相往青绿偏，与 03 的墨蓝 #0a1b2e 分开，
      不再是相邻两块糊在一起的蓝。
   2) 四行加悬停：行底青线从左划出、行底铺一层青雾、序号转亮、
      标题右移 3px、说明提亮。只对细指针生效；减少动效时只留
      颜色变化，不做位移。
   ============================================================ */
body.home .section.solution-section{
  background-color:#0e3944;
  background-image:radial-gradient(88% 118% at 88% 0%,rgba(125,224,206,.10) 0%,rgba(125,224,206,0) 58%);
  box-shadow:inset 0 1px 0 rgba(125,224,206,.28);
  color:#fff;
}
body.home .solution-section .service-rows{border-top-color:rgba(125,224,206,.42)}
body.home .solution-section .service-row{border-bottom-color:rgba(255,255,255,.13)}

@media (hover:hover) and (pointer:fine){
  body.home .solution-section .service-row{position:relative}
  body.home .solution-section .service-row:before{
    content:'';position:absolute;inset:0 -20px;z-index:0;pointer-events:none;
    background:linear-gradient(90deg,rgba(125,224,206,.10) 0%,rgba(125,224,206,.04) 52%,rgba(125,224,206,0) 84%);
    -webkit-mask-image:linear-gradient(180deg,transparent 0%,#000 16%,#000 84%,transparent 100%);
    mask-image:linear-gradient(180deg,transparent 0%,#000 16%,#000 84%,transparent 100%);
    opacity:0;transition:opacity .28s ease;
  }
  body.home .solution-section .service-row:after{
    content:'';position:absolute;left:0;right:0;bottom:-1px;height:1px;z-index:2;pointer-events:none;
    background:linear-gradient(90deg,#7de0ce 0%,rgba(125,224,206,.55) 52%,rgba(125,224,206,0) 100%);
    transform:scaleX(0);transform-origin:0 50%;
    transition:transform .42s cubic-bezier(.22,.7,.2,1);
  }
  body.home .solution-section .service-row > *{position:relative;z-index:1}
  body.home .solution-section .service-row h3,
  body.home .solution-section .service-number,
  body.home .solution-section .service-row > p:not(.service-number){
    transition:color .25s ease,transform .25s ease;
  }
  body.home .solution-section .service-row:hover:before{opacity:1}
  body.home .solution-section .service-row:hover:after{transform:scaleX(1)}
  body.home .solution-section .service-row:hover .service-number{color:#d9fff7}
  body.home .solution-section .service-row:hover h3{transform:translateX(3px)}
  body.home .solution-section .service-row:hover > p:not(.service-number){color:#f0faf8}
}

@media (prefers-reduced-motion:reduce){
  body.home .solution-section .service-row:before,
  body.home .solution-section .service-row:after,
  body.home .solution-section .service-row h3,
  body.home .solution-section .service-number,
  body.home .solution-section .service-row > p:not(.service-number){transition:none}
  body.home .solution-section .service-row:hover h3{transform:none}
}

/* ============================================================
   v4.49.0 · 首页「See the full scope」：字号抬一档，挪到右侧
   原来贴在四步区左下，和 03 那条挤在一条竖线上；右对齐后它成为
   这一段的收尾动作，视线顺着两列读完自然落到右边。
   ============================================================ */
.service-more{margin-top:clamp(30px,3vw,42px);text-align:right}
.service-more .text-link{font-size:18px;padding-bottom:5px;display:inline-block}
.service-more .text-link span{display:inline-block;transition:transform .18s ease}
.service-more .text-link:hover span,.service-more .text-link:focus-visible span{transform:translateX(5px)}
@media(max-width:700px){.service-more .text-link{font-size:17px}}

/* ============================================================
   v4.64.0 · 03 THE SECTORS —— 首页九品类
   1) 原来的 03（YOUR CALLS 五步 + 报价图版）整段搬到 /services/，并入该页
      02 / THE PROCESS；process-section / process-head / section-plate 的样式
      因此从 body.home 上解绑，两页共用一套。
   2) 首页 03 换成九品类，沿用原 03 的墨蓝底（var(--ink)），九格 3×3，
      每格链到 /case-studies/?sector=…（案例页本来就是服务端筛选）。

   v4.64.4 · 两面卡
   02 是「行自己亮起来」。03 不做高亮，做一本品类目录：每格正面是品类与
   货品，悬停时正面向上退场、背面从下面进来，背面写这一类的一句说明和
   去处（View sector →）。格子底色、文字颜色、位置一律不动，动的是卡面。
   ============================================================ */

/* 内页的深色段不要 .section 那道 140px 浅色顶光 */
.section.dark-section:before{display:none}

body.home .section.sectors-section{
  background-color:#08192a;
  background-image:radial-gradient(92% 120% at 86% 0%,rgba(125,224,206,.09) 0%,rgba(125,224,206,0) 60%);
  color:#fff;
  box-shadow:inset 0 1px 0 rgba(125,224,206,.22);
}

.sector-grid{
  list-style:none;
  margin:clamp(38px,4.4vw,60px) 0 0;
  padding:0;
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  border-top:1px solid rgba(255,255,255,.155);
  border-left:1px solid rgba(255,255,255,.155);
}
.sector-cell{
  position:relative;
  border-right:1px solid rgba(255,255,255,.155);
  border-bottom:1px solid rgba(255,255,255,.155);
}
.sector-link{
  position:relative;
  display:block;
  overflow:hidden;
  min-height:clamp(150px,13.2vw,182px);
  text-decoration:none;
  color:inherit;
}
.sector-link:focus-visible{outline:2px solid #7de0ce;outline-offset:-7px}

.sector-face,
.sector-back{
  display:flex;
  flex-direction:column;
  padding:clamp(20px,2.1vw,28px) clamp(18px,2vw,26px) clamp(22px,2.2vw,30px);
}
.sector-face{
  transition:transform .36s cubic-bezier(.3,.8,.3,1),opacity .28s ease;
}
.sector-no{
  display:block;
  font:500 11px/1 Space,system-ui,sans-serif;letter-spacing:.16em;color:#7de0ce;
}
.sector-name{
  margin-top:clamp(10px,1vw,14px);
  font:500 clamp(17px,1.46vw,20px)/1.22 Space,system-ui,sans-serif;
  letter-spacing:-.02em;color:#fff;
}
.sector-items{
  margin-top:9px;
  font-size:13px;line-height:1.55;color:#a4b8c6;max-width:33ch;
}

/* 背面：这一类的说明 + 去处 */
.sector-back{
  position:absolute;
  inset:0;
  transform:translateY(100%);
  transition:transform .36s cubic-bezier(.3,.8,.3,1);
  background:var(--ink);
}
.sector-back .sector-name{font-size:clamp(16px,1.3vw,18px)}
.sector-back-note{
  margin-top:10px;
  font-size:13px;
  line-height:1.5;
  color:#b9c8d2;
  max-width:32ch;
}
.sector-back-go{
  margin-top:auto;
  padding-top:12px;
  font:600 12px/1 Inter,system-ui,sans-serif;
  color:#7de0ce;
}
.sector-back-go span{display:inline-block;transition:transform .2s ease}
.sector-cell:hover .sector-back-go span,
.sector-cell:focus-within .sector-back-go span{transform:translateX(3px)}

.sector-cell:hover .sector-face,
.sector-cell:focus-within .sector-face{transform:translateY(-100%);opacity:0}
.sector-cell:hover .sector-back,
.sector-cell:focus-within .sector-back{transform:translateY(0)}

.sector-note{
  margin-top:clamp(26px,2.8vw,36px);
  font-size:13.5px;line-height:1.65;color:#93a8b7;max-width:760px;
}
.sector-note .text-link{color:#e8f4f2;border-color:rgba(255,255,255,.45)}
.sector-note .text-link:hover,
.sector-note .text-link:focus-visible{color:#7de0ce;border-color:#7de0ce}

/* 02 / THE PROCESS 搬到 Solutions 后补的说明行 */
.process-section .route-note{
  margin-top:clamp(30px,3.2vw,46px);
  padding-top:clamp(16px,1.6vw,20px);
  border-top:1px solid rgba(255,255,255,.14);
  max-width:780px;
  font-size:13.5px;line-height:1.65;color:#9db3c1;
}

/* 深色段里的五步颜色：原来只写在 body.home 下，Solutions 也要 */
.dark-section .route-steps:before{background:#6B87A8}
.dark-section .route-step:before{background:var(--ink);border-color:#7DE0CE}
.dark-section .route-step h3{color:#fff}

@media(max-width:1100px){
  .sector-link{min-height:166px}
  .sector-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sector-cell:nth-child(9){grid-column:1 / -1}
}
@media(max-width:680px){
  .sector-grid{grid-template-columns:1fr}
  .sector-cell:nth-child(9){grid-column:auto}
  .sector-link{min-height:158px}
  .sector-items{max-width:none}
}

/* 触屏没有 hover：背面不启用，免得点按闪一下 */
@media(hover:none){
  .sector-back{display:none}
  .sector-cell:hover .sector-face,
  .sector-cell:focus-within .sector-face{transform:none;opacity:1}
}

@media(prefers-reduced-motion:reduce){
  .sector-face,
  .sector-back{transition:opacity .15s ease}
  .sector-back{transform:none;opacity:0}
  .sector-cell:hover .sector-face,
  .sector-cell:focus-within .sector-face{transform:none;opacity:0}
  .sector-cell:hover .sector-back,
  .sector-cell:focus-within .sector-back{transform:none;opacity:1}
}

/* v4.65.1 · 品类格接入产品图：图铺满格子，左边压暗，白字压在图上；悬停图放大 1.04 */
.sector-cell.has-img{overflow:hidden}
.sector-img{
  position:absolute;inset:0;z-index:0;
  width:100%;height:100%;
  object-fit:cover;object-position:96% 50%;
  transform:scale(1.0);
  transform-origin:88% 50%;
  transition:transform .9s cubic-bezier(.22,.7,.3,1);
}
.sector-cell.has-img:after{
  content:'';position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(180deg,rgba(8,25,42,0) 18%,rgba(8,25,42,.38) 52%,rgba(8,25,42,.78) 78%,rgba(8,25,42,.94) 100%);
}
.sector-cell.has-img .sector-link{display:flex;flex-direction:column}
.sector-cell.has-img .sector-face{position:relative;z-index:2;flex:1 1 auto;justify-content:flex-end;padding-bottom:clamp(14px,1.4vw,18px)}
/* 图格：默认只露编号和品类；悬停时把货品那一行从底下推上来，图同时轻推 */
.sector-cell.has-img .sector-items{
  display:block;
  margin-top:0;
  max-height:0;
  opacity:0;
  overflow:hidden;
  transition:max-height .34s cubic-bezier(.25,.8,.3,1),opacity .22s ease,margin-top .34s cubic-bezier(.25,.8,.3,1);
}
.sector-cell.has-img:hover .sector-items,
.sector-cell.has-img:focus-within .sector-items{
  max-height:3.6em;
  opacity:1;
  margin-top:7px;
}
.sector-cell.has-img .sector-name{font-size:clamp(17px,1.4vw,19px);margin-top:6px}
.sector-cell.has-img:hover .sector-img,
.sector-cell.has-img:focus-within .sector-img{transform:scale(1.07)}
.sector-cell.has-img .sector-back{display:none}
.sector-cell.has-img:hover .sector-face{transform:none;opacity:1}
@media(prefers-reduced-motion:reduce){
  .sector-img{transition:none}
}

/* v4.65.4 · 03 到底部 CTA 的衔接：最后一段从青绿渐变到 CTA 的起始墨蓝，去掉那条硬边 */
body.home .solution-section:after{
  content:'';position:absolute;left:0;right:0;bottom:0;z-index:0;
  height:clamp(120px,15vw,210px);
  pointer-events:none;
  background:linear-gradient(180deg,rgba(10,27,46,0) 0%,rgba(10,27,46,.32) 28%,rgba(10,27,46,.78) 56%,#0a1b2e 74%,#0a1b2e 100%);
}
body.home .solution-section > .wrap{position:relative;z-index:1}

/* v4.67.1 · 隐私政策页 /privacy-policy/ 与页脚入口 */
.prose h2{font-size:clamp(23px,2vw,29px);line-height:1.25;letter-spacing:-.03em;margin:44px 0 12px}
.prose h2:first-child{margin-top:0}
.prose p{font-size:16px;line-height:1.75;max-width:700px}
.prose p:last-child{margin-bottom:0}
.footer-legal{white-space:nowrap}
.footer-legal a{color:#a7b5c2;text-decoration:none;border-bottom:1px solid rgba(167,181,194,.45);padding-bottom:2px}
.footer-legal a:hover,.footer-legal a:focus-visible{color:#fff;border-color:#fff}

/* ============================================================
   v4.68.0 · site-optimization Spec v1.0
   P0-1 hero: one sentence + three facts; right column widened to
   keep the whole block at five lines on a 1440 viewport.
   P0-2 KPI: four verifiable facts, each one a link to its source.
   P1-1 scope comparison: real table on desktop, three stacked
   tier cards at <=640px.
   P1-3 FAQ: native details/summary, answer-first copy.
   P2-1 top notice: one line, dismissible, 30-day cookie.
   ============================================================ */

/* ---------- P0-1 hero ---------- */
body.home .hero-points{margin-top:16px}
body.home .hero-facts{list-style:none;margin:18px 0 0;padding:0;display:grid;gap:8px;max-width:560px}
body.home .hero-facts li{position:relative;padding-left:20px;font:400 15px/1.45 Inter,system-ui,sans-serif;color:#dbe8eb}
body.home .hero-facts li:before{content:'';position:absolute;left:1px;top:.62em;width:7px;height:7px;border-radius:50%;background:#7de0ce}
body.home .hero .hero-lead{font-size:16px;line-height:1.65;max-width:560px;margin:0}
@media(min-width:1101px){
  body.home .hero-copy{grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:clamp(40px,4.2vw,60px)}
  body.home .hero-copy > .hero-points{grid-column:2;grid-row:2;margin-top:-38.9px;align-self:start}
  body.home .hero .hero-lead{font-size:17px}
}
@media(max-width:1100px){
  body.home .hero .hero-lead{font-size:17px;line-height:1.68}
  body.home .hero-facts li{font-size:14.5px}
}
@media(max-width:600px){
  body.home .hero-points{margin-top:14px}
  body.home .hero .hero-lead{font-size:16px;line-height:1.62}
  body.home .hero-facts{margin-top:14px;gap:6px}
  body.home .hero-facts li{font-size:13.5px;line-height:1.45;padding-left:18px}
}

/* ---------- anchors under the sticky header ---------- */
#coverage,#questions{scroll-margin-top:96px}

/* ---------- P1-1 scope comparison ---------- */
.scope-block{margin-top:clamp(40px,4.5vw,64px);border-top:1px solid #d8e1e7;padding-top:clamp(30px,3.4vw,46px)}
.scope-head{display:flex;align-items:end;justify-content:space-between;gap:24px;margin-bottom:20px}
.scope-title{font:500 clamp(26px,2.6vw,36px)/1.15 Space,system-ui,sans-serif;letter-spacing:-.035em;color:#0a1b2e;margin:0}
.scope-table-wrap{overflow-x:auto;outline-offset:5px}
.scope-table-wrap:focus-visible{outline:3px solid #0655bd;outline-offset:5px}
.scope-table{width:100%;border-collapse:collapse;font-size:15px;line-height:1.45;background:#fff;border-top:2px solid #0a1b2e}
.scope-table th,.scope-table td{padding:14px 16px;border-bottom:1px solid #d8e1e7;vertical-align:middle;text-align:left}
.scope-table thead th{font:600 11px/1.4 Inter,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:#5b6f7f;background:#f5f8fa;border-bottom:1px solid #b9c8d4;white-space:nowrap}
.scope-table thead th:not(:first-child){text-align:center}
.scope-table tbody th{font-weight:500;color:#0a1b2e}
.scope-table td{text-align:center;font-weight:600;color:#08766f}
.scope-table td.scope-no{color:#a7b5c2;font-weight:400}
.scope-table td.scope-opt{font:600 10.5px/1.4 Inter,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:#5b6f7f}
.scope-table tbody tr:last-child th,.scope-table tbody tr:last-child td{border-bottom:0}
.scope-table tbody tr:hover{background:#f7fafb}
.scope-note{margin-top:16px;font-size:14px;line-height:1.6;color:#5b6f7f;max-width:720px}
.scope-cards{display:none}
.scope-card{border:1px solid #d8e1e7;border-top:3px solid #08766f;background:#fff;padding:20px 18px}
.scope-card h4{font:500 22px/1.2 Space,system-ui,sans-serif;letter-spacing:-.03em;color:#0a1b2e;margin:0 0 12px}
.scope-card-list{list-style:none;margin:0;padding:0;display:grid;gap:9px}
.scope-card-list li{position:relative;padding-left:22px;font-size:15px;line-height:1.45;color:#33424f}
.scope-card-list li:before{content:'✓';position:absolute;left:0;top:0;color:#08766f;font-weight:700}
.scope-card-note{margin:14px 0 0;padding-top:12px;border-top:1px solid #e3eaee;font-size:13px;line-height:1.55;color:#5b6f7f}
.scope-optional{display:inline-block;margin-left:6px;font:600 10px/1.4 Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:#5b6f7f;border:1px solid #c9d5dd;padding:1px 6px;border-radius:2px}
@media(max-width:640px){
  .scope-table-wrap{display:none}
  .scope-cards{display:grid;gap:14px}
  .scope-note{margin-top:18px}
}

/* ---------- P1-2 evidence records ---------- */
.evidence-block{margin-top:clamp(40px,4.5vw,64px);border-top:1px solid #d8e1e7;padding-top:clamp(30px,3.4vw,46px)}
.evidence-head{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(280px,.95fr);gap:clamp(24px,4vw,56px);align-items:end;margin-bottom:24px}
.evidence-title{font:500 clamp(26px,2.6vw,36px)/1.15 Space,system-ui,sans-serif;letter-spacing:-.035em;color:#0a1b2e;margin:0}
.evidence-note{margin:0;font-size:14px;line-height:1.6;color:#5b6f7f;max-width:520px}
.evidence-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.evidence-card{margin:0}
.evidence-open{display:block;background:#fff;box-shadow:0 0 0 1px #d8e1e7,0 14px 34px rgba(10,27,46,.07);transition:transform .2s ease,box-shadow .2s ease}
.evidence-open:hover,.evidence-open:focus-visible{transform:translateY(-3px);box-shadow:0 0 0 1px #c9d5dd,0 20px 44px rgba(10,27,46,.12)}
.evidence-open img{display:block;width:100%;height:auto}
.evidence-card figcaption{display:flex;justify-content:space-between;gap:14px;margin-top:10px;font-size:13px;line-height:1.45;color:#5b6f7f}
.evidence-card figcaption strong{font-weight:600;color:#0a1b2e}
@media(max-width:1279px){
  .evidence-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .evidence-card:last-child{grid-column:1 / -1;max-width:calc(50% - 10px)}
}
@media(max-width:640px){
  .evidence-head{grid-template-columns:1fr;gap:10px;align-items:start}
  .evidence-grid{grid-template-columns:1fr}
  .evidence-card:last-child{max-width:none}
}

/* ---------- P1-3 FAQ accordion ---------- */
.gv-faq-list{border-top:1px solid #0a1b2e}
.gv-faq-item{display:block;padding:0;border-bottom:1px solid rgba(10,27,46,.14)}
.gv-faq-summary{display:grid;grid-template-columns:56px minmax(0,1fr) 22px;column-gap:18px;align-items:start;padding:clamp(20px,2.2vw,28px) 0;cursor:pointer;list-style:none}
.gv-faq-summary::-webkit-details-marker{display:none}
.gv-faq-summary:after{content:'+';font:400 24px/1 Space,system-ui,sans-serif;color:#08766f;justify-self:end;transition:transform .2s ease}
.gv-faq-item[open] .gv-faq-summary:after{content:'−'}
.gv-faq-question{font:500 clamp(20px,2vw,26px)/1.25 Space,system-ui,sans-serif;letter-spacing:-.02em;color:#0a1b2e;padding-top:1px}
.gv-faq-summary:hover .gv-faq-question{color:#0655bd}
.gv-faq-answer{padding:0 32px 24px 74px}
.gv-faq-list .gv-faq-answer p,
body:not(.home) .gv-faq-list .gv-faq-answer p{grid-column:auto;margin:0;font-size:15.5px;line-height:1.7;color:#405c67;max-width:640px}
@media(max-width:900px){
  .gv-faq-summary{grid-template-columns:38px minmax(0,1fr) 18px;column-gap:14px}
  .gv-faq-answer{padding-left:52px}
}
@media(max-width:600px){
  .gv-faq-answer{padding:0 0 22px 52px}
}

/* ---------- P2-1 top notice ---------- */
.site-notice{position:relative;background:#0a1b2e;color:#dbe8eb;border-bottom:1px solid rgba(255,255,255,.12);padding:9px 54px 9px 20px;text-align:center;font:400 12px/1.5 Inter,system-ui,sans-serif;letter-spacing:.02em}
.site-notice-text{margin:0 auto;max-width:1100px}
.site-notice-close{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:34px;height:34px;border:0;background:transparent;color:#dbe8eb;font-size:22px;line-height:1;cursor:pointer;border-radius:4px}
.site-notice-close:hover{background:rgba(255,255,255,.12);color:#fff}
@media(max-width:600px){
  .site-notice{padding:7px 42px 7px 12px;font-size:10.5px;line-height:1.4;letter-spacing:.01em}
  .site-notice-close{width:30px;height:30px;font-size:19px}
}

/* v4.68.0 · About nine-sector list: one step larger than the v4.49 size */
.gv-ab-sector-name{font-size:18px}
.gv-ab-sector-no{font-size:12px}

/* ============================================================
   v4.69.0 · /about/ — one ink canvas under the whole dark run
   Before: the first screen and the 01 section each painted their
   own #0a1b2e, each with its own 24px dot grid. Same colour, but
   the glow stopped at the first screen's border, the grid phase
   depended on both heights, and the seam showed as a step.
   Now: the canvas is one viewport-sized layer behind both
   sections; only the content scrolls over it. The seam cannot
   exist because nothing is painted on that boundary any more.
   Everything tunable sits in the six variables below. Changing
   a variable repaints once, on load — it never repaints while
   scrolling, which is the point.
   ============================================================ */
body.gv-canvas{
  --gv-canvas:#0a1b2e;
  --gv-grid:24px;
  --gv-grid-dot:rgba(255,255,255,.075);
  --gv-glow:rgba(125,224,206,.17);
  --gv-glow-fade:rgba(125,224,206,0);
  --gv-glow-x:88%;
  --gv-glow-y:10%;
  position:relative;
  isolation:isolate;
}
body.gv-canvas::before{
  content:'';
  position:fixed;
  inset:0;
  z-index:-1;
  pointer-events:none;
  background-color:var(--gv-canvas);
  background-image:
    radial-gradient(85% 130% at var(--gv-glow-x) var(--gv-glow-y),var(--gv-glow) 0%,var(--gv-glow-fade) 58%),
    radial-gradient(var(--gv-grid-dot) 1px,transparent 1.3px);
  background-size:auto,var(--gv-grid) var(--gv-grid);
  background-repeat:no-repeat,repeat;
}

/* The two dark sections hand their paint over to the canvas. */
body.gv-canvas .page-hero.gv-about-hero,
body.gv-canvas .section.gv-ab-grow{
  background:none!important;
  box-shadow:none!important;
}
/* The 140px pale top light belongs to the paper sections; on the canvas
   it would smear a grey band over the ink. */
body.gv-canvas .section.gv-ab-grow:before{display:none}

/* The route watermark is a 520×520 box in the first screen's bottom-right
   corner. On this page it has nothing to sit on — the nine-sector list owns
   that area — and where a browser paints the SVG's box rather than only its
   lines, the box edge reads as a bright rectangle over the canvas. */
body.gv-canvas .page-hero.gv-about-hero:after{display:none}

/* Paper sections keep their own opaque fill and cut the canvas off. */
body.gv-canvas .section.gv-ab-group,
body.gv-canvas .section.closing{position:relative;z-index:1}

/* The closing band starts transparent so it can blend out of the paper
   section above it. Over the canvas that transparency would show ink,
   so the paper colour goes underneath. */
body.gv-canvas .section.closing{background-color:#f5f7fa}

@media print{
  body.gv-canvas::before{display:none}
}
/* ============================================================
   v4.69.2 · cursor light — one layer for the whole page
   The old lamp lived inside each section and measured the pointer
   against that section's box, so it went out at every border and
   the page read as separate panels. Now a single fixed disc
   follows the pointer across sections; moving it only writes a
   transform, so the page never repaints for it.
   On ink the disc is screened over the paint (adds light, leaves
   white text alone); on paper it drops to a low-opacity tint,
   because screen over near-white does nothing.
   ============================================================ */
.gv-lamp-cursor{
  position:fixed;
  top:0;
  left:0;
  width:640px;
  height:640px;
  margin:-320px 0 0 -320px;
  border-radius:50%;
  pointer-events:none;
  z-index:99999;
  background:radial-gradient(circle closest-side,rgba(125,224,206,.13) 0%,rgba(125,224,206,0) 68%);
  mix-blend-mode:screen;
  opacity:0;
  transform:translate3d(-4000px,-4000px,0);
  transition:opacity .28s ease;
  will-change:transform;
}
.gv-lamp-cursor.is-lit{opacity:1}
.gv-lamp-cursor:not(.is-dark){
  mix-blend-mode:normal;
  background:radial-gradient(circle closest-side,rgba(10,124,116,.055) 0%,rgba(10,124,116,0) 62%);
}
@media(hover:none),(pointer:coarse){.gv-lamp-cursor{display:none}}
@media(prefers-reduced-motion:reduce){.gv-lamp-cursor{transition:none}}
/* ============================================================
   v4.69.4 · footer company line
   Legal name / registered office / company number, plus a Terms
   slot. Every bracket is a placeholder until the owner supplies
   the strings; the dashed underline marks it as a draft so it
   cannot ship unnoticed.
   ============================================================ */
.site-footer .footer-company{
  display:flex;
  flex-wrap:wrap;
  gap:4px 22px;
  margin:0;
  padding-top:22px;
  border-top:1px solid rgba(255,255,255,.10);
  font-size:11px;
  line-height:1.6;
  color:rgba(219,231,242,.52);
}
.site-footer .footer-company p{margin:0}
.site-footer .footer-company + .footer-bottom{margin-top:12px}
.gv-placeholder{
  font-style:italic;
  color:rgba(219,231,242,.40);
  border-bottom:1px dashed rgba(219,231,242,.30);
  padding-bottom:1px;
}
@media(max-width:640px){
  .site-footer .footer-company{gap:2px 16px;padding-top:18px;font-size:10.5px}
}
/* ============================================================
   v4.69.5 · footer rebuild (SPEC-GainVector-footer-v1.0 §4)
   The old grid was 490 / 515 / 87: the widest column held one
   line of 39px type, the narrowest held six links. Now it is
   1.25 : 1 : auto — identity, contacts 2×2, links in two
   columns — and the bottom bar is one information strip instead
   of four equal paragraphs.
   ============================================================ */
body.home .site-footer,
body:not(.home) .site-footer{
  background:#0a1b2e;
  border-top:1px solid rgba(255,255,255,.10);
  padding-top:clamp(50px,5vw,64px);
  padding-bottom:28px;
}

.site-footer .footer-grid{
  display:grid;
  grid-template-columns:minmax(0,1.25fr) minmax(0,1fr) auto;
  gap:clamp(30px,4vw,70px);
  align-items:start;
}
.site-footer .footer-brand{font-size:28px;margin-bottom:0}
.site-footer .footer-brand:before{width:42px;height:34px}
.site-footer .footer-statement{margin-top:16px}
.site-footer .footer-statement p{
  font:500 22px/1.35 Space,system-ui,sans-serif;
  letter-spacing:-.02em;
  max-width:32ch;
  color:#dbe7f2;
}

/* contacts: label above value, two by two */
/* Three channels, three rows. A two-column grid left one cell empty, which
   read as a missing item rather than as a layout. */
.site-footer .footer-contacts .gv-contact-links{
  display:block;
  margin:0;
}
.site-footer .footer-contacts .gv-contact-row{
  flex-direction:row;
  align-items:baseline;
  gap:16px;
  margin:0 0 15px;
}
.site-footer .footer-contacts .gv-contact-row:last-child{margin-bottom:0}
.site-footer .footer-contacts .gv-contact-label{min-width:78px;font-size:10px;letter-spacing:.14em}
.site-footer .footer-contacts .gv-contact-value{font-size:14px;line-height:1.4;padding-bottom:2px}

/* links: two columns, 3 + 3 */
.site-footer .footer-links{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px clamp(20px,2.4vw,34px);
  font-size:14px;
  color:#b9cfe0;
}
.site-footer .footer-links p{margin:0}

/* company line, placeholders marked as draft */
.site-footer .footer-company{
  margin:clamp(26px,3vw,40px) 0 0;
  padding-top:18px;
  border-top:1px solid rgba(255,255,255,.10);
  gap:2px 22px;
  font-size:11px;
  color:rgba(219,231,242,.5);
}

/* bottom bar: one strip, no second slogan */
.site-footer .footer-bottom{
  display:flex;
  justify-content:space-between;
  align-items:baseline;
  flex-wrap:wrap;
  gap:8px 24px;
  margin-top:14px;
  padding-top:16px;
  border-top:1px solid rgba(255,255,255,.10);
  border-top-color:rgba(255,255,255,.10);
  font-size:11.5px;
  color:rgba(219,231,242,.55);
}
.site-footer .footer-bottom p{margin:0}
.site-footer .footer-copyright{color:rgba(219,231,242,.62)}
.site-footer .footer-sep{margin:0 .5em;color:rgba(219,231,242,.30)}
.site-footer .footer-version{
  font:500 11px/1.4 ui-monospace,SFMono-Regular,Consolas,monospace;
  letter-spacing:.06em;
  color:rgba(219,231,242,.48);
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
}
.site-footer .footer-legal a{color:rgba(219,231,242,.74)}
.site-footer .footer-legal a:hover,.site-footer .footer-legal a:focus-visible{color:#fff}

@media(max-width:1100px){
  .site-footer .footer-grid{grid-template-columns:1fr 1fr;gap:32px 40px}
  .site-footer .footer-links{
    grid-column:1 / -1;
    grid-row:auto;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:10px 28px;
  }
}
@media(max-width:640px){
  .site-footer .footer-grid{grid-template-columns:1fr;gap:26px}
  .site-footer .footer-links{
    grid-column:auto;
    grid-template-columns:1fr 1fr;
    gap:10px 22px;
  }
  .site-footer .footer-statement p{font-size:20px;max-width:none}
  .site-footer .footer-company{flex-direction:column;gap:3px;padding-top:16px;font-size:10.5px}
  .site-footer .footer-bottom{
    flex-direction:column;
    align-items:flex-start;
    gap:6px;
    margin-top:12px;
    padding-top:14px;
  }
}
/* ============================================================
   v4.69.6 · footer social row
   Brand presence belongs with the logo, not in the contact list.
   An unset network prints a bracketed placeholder, so the gap is
   visible until the handle is filled under Settings → General.
   ============================================================ */
/* Brand and its social icons share the first line; the statement takes the
   second. One icon alone under a sentence looked orphaned. */
.site-footer .footer-identity{
  display:grid;
  grid-template-columns:auto auto minmax(0,1fr);
  align-items:center;
  column-gap:18px;
}
.site-footer .footer-identity > p:first-child{grid-column:1;grid-row:1;margin:0}
.site-footer .footer-identity .gv-social{
  grid-column:2;
  grid-row:1;
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:12px;
  margin:0;
}
.site-footer .footer-identity > .footer-statement{
  grid-column:1 / -1;
  grid-row:2;
  margin-top:16px;
}
.site-footer .gv-social-link{
  display:inline-flex;
  width:22px;
  height:22px;
  color:rgba(219,231,242,.50);
  text-decoration:none;
  transition:color .18s ease;
}
.site-footer .gv-social-link svg{width:22px;height:22px;display:block}
.site-footer .gv-social-link:hover,
.site-footer .gv-social-link:focus-visible{color:#fff}
@media(max-width:640px){
  .site-footer .footer-identity{column-gap:14px}
}

/* ============================================================
   v4.69.7 · KPI band
   The four proof numbers keep the card treatment from the 4.70.0
   homepage refresh: a white plate floating over the hero edge on the
   dark ground, with hairline dividers. The rest of the homepage is the
   4.69.7 build.
   ============================================================ */
body.home .kpi-strip{
  position:relative;z-index:3;margin-top:-56px;
  padding:0 clamp(24px,5vw,80px) 80px;
  background:#071827;border:0;
}
body.home .kpi-strip-inner{
  max-width:1440px;margin-inline:auto;padding:0 24px;
  border:1px solid rgba(255,255,255,.65);border-radius:16px;
  background:#fff;box-shadow:0 24px 60px rgba(0,0,0,.20);overflow:hidden;
}
body.home .kpi-item{padding:28px 24px}
body.home .kpi-item:not(:last-child):after{top:26px;bottom:26px;background:#e0e7ec}
body.home .kpi-value{font-size:clamp(38px,3.6vw,52px);letter-spacing:-.045em;color:#0a1b2e}
body.home .kpi-label{margin-top:10px;font-size:14px;font-weight:500;line-height:1.45;color:#526576;letter-spacing:0}
@media(max-width:900px){
  body.home .kpi-strip{margin-top:-48px;padding-bottom:64px}
}
@media(max-width:768px){
  body.home .kpi-strip{margin-top:-44px;padding:0 20px 60px}
  body.home .kpi-strip-inner{padding:0 8px}
  body.home .kpi-grid{grid-template-columns:1fr 1fr}
  body.home .kpi-item{padding:24px 16px;border-bottom:1px solid #e0e7ec}
  body.home .kpi-item:nth-child(2n){border-left:1px solid #e0e7ec}
  body.home .kpi-item:nth-child(n+3){border-bottom:0}
  body.home .kpi-item:after{display:none}
  body.home .kpi-value{font-size:40px}
  body.home .kpi-label{font-size:13.5px}
}
@media(max-width:480px){
  body.home .kpi-strip{margin-top:-40px;padding:0 16px 56px}
  body.home .kpi-strip-inner{border-radius:14px}
  body.home .kpi-item{padding:22px 12px}
  body.home .kpi-value{font-size:35px}
  body.home .kpi-label{font-size:13px;line-height:1.4}
}

/* ============================================================
   v4.69.7b · KPI 条并入页面表面（只追加，不重写既有规则）
   问题：KPI 条自带一块 #071827 的深色底，与上方 hero 照片、下方九板块
   #08192a 都不一样，左右留白和下方 80px 留白像贴上去的一块色区。
   做法：
   1) 条带不再自己画一块颜色，直接落到九板块那层表面上：同一个 #08192a
      底色 + 同一枚 mint 径向光。这枚光的椭圆圆心放在条带底边、横向半径
      与九板块同为 92%，所以条带底行与九板块顶行的取色完全一致，接缝
      在像素上消失（九板块顶边那道 1px mint 分界线在接缝处也一并去掉）。
   2) 条带靠负 margin 压住 hero 的 56px，改成透明，露出 hero 自己的照片
      底：白卡变成浮在 hero 底边上，两侧不再出现第三套颜色。透明高度
      跟着 -margin-top 走，用 --gv-kpi-overlap 在四个断点各写一次。
   3) 条带与九板块同表面后，九板块顶边原来的 1px mint 内阴影就成了一条
      多余的水平亮线，只在这个接缝处去掉。
   ============================================================ */
body.home .kpi-strip{
  --gv-kpi-overlap:56px;
  background-color:transparent;
  background-image:
    radial-gradient(92% 120% at 86% 100%,rgba(125,224,206,.09) 0%,rgba(125,224,206,0) 60%),
    linear-gradient(to bottom,rgba(8,25,42,0) 0,rgba(8,25,42,0) var(--gv-kpi-overlap),#08192a var(--gv-kpi-overlap),#08192a 100%);
}
@media(max-width:900px){body.home .kpi-strip{--gv-kpi-overlap:48px}}
@media(max-width:768px){body.home .kpi-strip{--gv-kpi-overlap:44px}}
@media(max-width:480px){body.home .kpi-strip{--gv-kpi-overlap:40px}}
/* 与条带同表面后，九板块顶边不再需要那道 1px mint 分界线 */
body.home .kpi-strip + .sectors-section{box-shadow:none;}

/* ============================================================
   v4.69.7c · 深底眉标：可读 + 一个色
   1) 可读性：九板块「01 / THE SECTORS」原来是 #0b5a7a，压在 #08192A
      上只有 2.33:1，11px 小字读不出来。根因是上面那条
      .dark-section / .sample-section / .proof-strip + .section 的合并
      规则，把深底眉标的角色色一起压成了深蓝。内页 Solutions 的
      「02 / THE PROCESS」是同一类：#08766f on #0a1b2e = 3.17:1。
   2) 统一：深底眉标此前两个色 —— #9CEADF（首屏、What we do、各内页
      hero）与 #7DE0CE（九板块、About 01）。统一到 #9CEADF：它本来就是
      眉标这个角色在 8 个表面上的颜色，也是浅一档的那支 mint。
      实测 #9CEADF：九板块 12.89:1、What we do 9.04:1、Solutions 02
      12.6:1、About 01 13.4:1，全部过 AA。
      浅底那几处（Risk、Solutions 01/03–07、About 02）本来就是浅底深字，
      #08766f 不动。
   注：九板块段内 01–09 序号仍是 #7DE0CE —— 那是序号不是眉标，属另一个
   角色；要连序号一起收，等 §6.4 的 token 落地时统一换。
   ============================================================ */
body.home section.dark-section .section-label,
body:not(.home) section.dark-section .section-label,
body:not(.home) .section.gv-ab-grow .section-label{color:#9CEADF}

/* ============================================================
   v4.69.7d · 浅底小字对比度（跨页检查顺手收的两处）
   1) .gv-contact-label：#6b8494 on #fff = 3.92:1（10px），出现在
      /for-agents/ 的联系方式标签；改 #526576 = 6.03:1。深底场合
      （页脚 #7f9bb0、contact hero #8fa8bd）各有自己的覆盖规则，不受影响。
   2) 表单 label small「(optional)」：#9aa7b1 on #fff = 2.46:1（11px），
      在 /contact/ 的问询表单里；改 #5a6b7a = 5.49:1。
   其余浅底眉标（#08766f）实测 4.95–5.48:1，已达标，不动。
   ============================================================ */
.gv-contact-label{color:#526576}
body:not(.home) .contact-hero .gv-field label small{color:#5a6b7a}

/* ============================================================
   v4.69.7g · 页脚社媒图标放大
   22px 挨着 22px 的品牌字太轻，整行读起来像补丁。图标提到 28px，
   间距 12→14px，位置（品牌右侧、与 logo 同行）不变。
   ≤640 时 28px 会把第四个图标挤到下一行、单个 f 孤零零挂在那儿，
   所以手机上把整行单独占一行：品牌 / 四个图标 / 标语 三行。
   ============================================================ */
.site-footer .footer-identity .gv-social{gap:14px}
.site-footer .gv-social-link{width:28px;height:28px}
.site-footer .gv-social-link svg{width:28px;height:28px}
@media(max-width:640px){
  .site-footer .footer-identity .gv-social{grid-column:1 / -1;grid-row:2;margin-top:18px;gap:16px}
  .site-footer .gv-social-link,
  .site-footer .gv-social-link svg{width:26px;height:26px}
  .site-footer .footer-identity > .footer-statement{grid-row:3}
}

/* 图标行比品牌字的视觉中心低 4px（品牌框 34px 含 logo，图标框 28px 居中在行里），
   上提 4px 让两端对齐。手机上图标单独一行，不需要这条。 */
@media(min-width:641px){
  .site-footer .footer-identity .gv-social{transform:translateY(-4px)}
}

/* ============================================================
   v4.69.7f · 页脚公司行填实后的对比度
   占位符换成了真实主体信息（中文名 / 英文名 / 注册地址），这段从
   "草稿"变成对外可读的法律信息，原来的 rgba(...,.52) 在 #0a1b2e 上
   只有约 4.04:1（11px），提到 .62 → 约 5.5:1，过 AA。
   公司注册号不公开（业主 2026-11-13 决定），页脚不再留那一行。
   ============================================================ */
.site-footer .footer-company{color:rgba(219,231,242,.62)}

/* ============================================================
   v4.69.7h · 正文里的行内代码（Cookie 名之类）
   隐私页开始出现 gv_lang / gv_notice_closed 这类字面量，默认的
   <code> 只有等宽字体、没有底色，夹在正文里像打错字。给一个浅底
   小片，字号略收，不加粗。
   ============================================================ */
.prose code{
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:.92em;
  background:rgba(10,27,46,.06);
  padding:.1em .38em;
  border-radius:4px;
}
.prose a code{background:none;padding:0}

/* ============================================================
   v4.69.7 · 收尾 CTA 带的两处接缝
   业主 2026-11-14 00:44 截图：case studies 列表页底部，询价板块
   上下都不接。两件事：
   ① 列表页 hero 与页脚同为 #0a1b2e，收尾段却在 16% 处亮到
      #4a7fa3 —— 卡片两侧悬着一团天蓝雾；而它顶上那条不透明
      的墨把 hero 底部的光切成一条横线。现在和 hero 重叠的那
      48px（clamp 同 margin-top 的反值）用透明墨渐变，正好在
      hero 底边落成实墨，再按首页 CTA 带那条微亮走到页脚色。
   ② v4.69.5 页脚改 #0a1b2e 后，收尾渐变尾色还停在 #0a2d4e，
      每页最下面都留一道横向色阶。尾色统一到页脚色。
   只写 background-image，不碰 background-color：/about/ 的
   closing 还靠后者铺纸色（body.gv-canvas 那条规则）。
   ============================================================ */
body.home .section.closing{
  background-image:linear-gradient(180deg,#0a1b2e 0%,#0e3247 45%,#0a1b2e 100%);
}
body:not(.home) .section.closing{
  background-image:linear-gradient(180deg,rgba(255,255,255,0) 0%,#7f9dbb 34%,#3c6285 66%,#0a1b2e 100%);
}
body:not(.home) .page-hero.gv-case-hero + .section.closing{
  background-image:linear-gradient(180deg,
    rgba(10,27,46,0) 0,
    #0a1b2e clamp(24px,3.5vw,48px),
    #0e3247 62%,
    #0a1b2e 100%);
}


/* ============================================================
   v4.69.10 · 首屏照片底边化进九板块那个面
   业主 2026-11-14 03:4x 截图：「数字板块两侧」生硬 —— 白卡浮在照片
   底边上，照片在卡片左右各自一刀切进 #08192a，接缝是一条笔直的横线，
   首屏和下面那个面之间没有任何过渡。
   做法：hero 内部加一层底部雾，从透明渐变到 #08192a，在照片底边落成
   实色。照片是化进九板块那层表面的，不是压在那条线上；条带前 56px
   本来就是透明的，露出的正是这层雾的实色尾端，所以上下一并接平。
   雾层 z-index 在正文之下（.wrap 提到 2），浅色小字和按钮不会被压暗；
   白卡在条带里（z-index 3），照旧浮在最上面。
   雾高按断点收：桌面留足余量；≤1100 卡片几乎满宽，只覆盖卡片压住的
   那一小段即可，再高就会漫到底部的按钮。
   ============================================================ */
body.home .hero{position:relative;isolation:isolate;--gv-hero-fade:clamp(140px,12vw,190px)}
body.home .hero:after,
body.home .hero::after{
  content:"";display:block;position:absolute;left:0;right:0;bottom:0;
  height:var(--gv-hero-fade);z-index:1;pointer-events:none;
  background:linear-gradient(to bottom,
    rgba(8,25,42,0) 0%,
    rgba(8,25,42,.10) 26%,
    rgba(8,25,42,.38) 55%,
    rgba(8,25,42,.74) 80%,
    #08192a 100%);
}
body.home .hero > .wrap{position:relative;z-index:2}
@media(max-width:1100px){body.home .hero{--gv-hero-fade:96px}}
@media(max-width:768px){body.home .hero{--gv-hero-fade:76px}}
@media(max-width:480px){body.home .hero{--gv-hero-fade:58px}}

/* v3.7.0 · request form: Cloudflare Turnstile slot (managed visible widget) */
.gv-form .gv-turnstile{margin:2px 0 22px;min-height:65px;display:flex;align-items:center}
.gv-form .gv-turnstile iframe{border-radius:4px}
.gv-form .gv-turnstile.is-error{outline:1px solid rgba(180,32,32,.4);outline-offset:8px}
@media (prefers-reduced-motion:no-preference){.gv-form .gv-turnstile{transition:outline-color .2s ease}}
