/* ==========================================================================
   金石控股 King's Stone Holdings Group Limited (01943.HK)
   官网静态站 · 共享样式（与首页原型同一设计系统）
   ========================================================================== */

:root{
  --ink:#0f172a; --ink2:#334155; --ink3:#64748b; --ink4:#94a3b8;
  --line:#e2e8f0; --line2:#eef2f7;
  --bg:#ffffff; --bg2:#f8fafc; --bg3:#f1f5f9;
  --pri:#2450d8; --pri-d:#1a3aab; --pri-l:#eff3ff;
  --semi:#2563eb; --green:#0e9f6e; --ai:#7c3aed; --tok:#ea580c;
  --dark:#0b1220; --dark2:#101a2e;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{margin:0; background:var(--bg); color:var(--ink);
  font-family:"PingFang SC","Microsoft YaHei","Hiragino Sans GB","Source Han Sans SC",-apple-system,"Segoe UI",sans-serif;
  font-size:15px; line-height:1.75; -webkit-font-smoothing:antialiased;}
a{color:inherit; text-decoration:none;}
img{max-width:100%;}
.wrap{max-width:1200px; margin:0 auto; padding:0 32px;}

/* ================= header ================= */
header.site{position:sticky; top:0; z-index:60; background:rgba(255,255,255,.94);
  backdrop-filter:blur(12px); border-bottom:1px solid var(--line);}
header.site.scrolled{box-shadow:0 6px 22px rgba(15,23,42,.06);}
.nav{display:flex; align-items:center; gap:28px; height:72px;}
.logo{display:flex; align-items:center; gap:11px; flex-shrink:0;}
.logo .mark{width:38px; height:38px; border-radius:9px; background:linear-gradient(140deg,#2450d8,#5b7ff0);
  color:#fff; font-weight:800; font-size:19px; display:flex; align-items:center; justify-content:center; flex-shrink:0;}
.logo .mark svg{width:23px; height:23px; display:block;}
.logo .txt{line-height:1.15;}
.logo .cn{font-size:16.5px; font-weight:800; letter-spacing:.02em;}
.logo .en{font-size:9.5px; color:var(--ink4); letter-spacing:.09em; text-transform:uppercase; white-space:nowrap;}
nav.menu{display:flex; gap:18px; margin-left:auto; font-size:14.5px; color:var(--ink2);}
nav.menu a{padding:6px 0; border-bottom:2px solid transparent; transition:.18s; white-space:nowrap;}
nav.menu a:hover{color:var(--pri);}
nav.menu a.on{color:var(--pri); font-weight:600; border-bottom-color:var(--pri);}
nav.menu a.ext{display:inline-flex; align-items:center; gap:4px;}
nav.menu a.ext svg{width:11px; height:11px; opacity:.5; flex-shrink:0;}
nav.menu a.ext:hover svg{opacity:.9;}
.nav-right{display:flex; align-items:center; gap:12px; flex-shrink:0;}
.lang{font-size:13px; color:var(--ink3); border:1px solid var(--line); border-radius:7px; padding:6px 11px; transition:.18s;}
.lang:hover{border-color:var(--pri); color:var(--pri);}
.mob-tg{display:none; width:42px; height:42px; border:1px solid var(--line); border-radius:10px; background:#fff;
  align-items:center; justify-content:center; cursor:pointer; flex-shrink:0;}
.mob-tg svg{width:20px; height:20px;}
.btn{display:inline-flex; align-items:center; gap:7px; border-radius:9px; padding:10px 20px; font-size:14px;
  font-weight:600; cursor:pointer; border:1px solid transparent; transition:.18s; white-space:nowrap; font-family:inherit;}
.btn-pri{background:var(--pri); color:#fff;}
.btn-pri:hover{background:var(--pri-d);}
.btn-ghost{background:transparent; color:#fff; border-color:rgba(255,255,255,.34);}
.btn-ghost:hover{background:rgba(255,255,255,.12);}
.btn-line{background:#fff; color:var(--ink); border-color:var(--line);}
.btn-line:hover{border-color:var(--pri); color:var(--pri);}
.btn-sm{padding:8px 16px; font-size:13px;}

/* ================= hero (浅色定稿) ================= */
.hero2{position:relative; background:#eef2f7; color:#0d1b2e; overflow:hidden;}
.hero2 .bgimg{position:absolute; top:0; right:0; bottom:0; left:38%; z-index:0;}
.hero2 .bgimg:after{content:""; position:absolute; inset:0; left:0; width:180px;
  background:linear-gradient(90deg,#eef2f7,rgba(238,242,247,0));}
.hero2 .bgimg img{width:100%; height:100%; object-fit:cover; object-position:50% 50%; display:block;}
.hero2 .scrim{position:absolute; inset:0; z-index:1; pointer-events:none;
  background:
    linear-gradient(90deg,rgba(238,242,247,.99) 0%,rgba(238,242,247,.97) 17%,rgba(238,242,247,.8) 33%,rgba(238,242,247,.28) 53%,rgba(238,242,247,.04) 72%,rgba(238,242,247,.4) 100%),
    linear-gradient(180deg,rgba(238,242,247,.55) 0%,rgba(238,242,247,0) 24%,rgba(238,242,247,0) 70%,rgba(238,242,247,.8) 100%);}
.hero2 .netlines{position:absolute; inset:0; z-index:1; opacity:.5; pointer-events:none;
  background-image:linear-gradient(rgba(36,80,216,.06) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(36,80,216,.06) 1px,transparent 1px);
  background-size:76px 76px;}
.hero2-in{position:relative; z-index:3; padding:80px 0 32px; min-height:620px; display:flex; flex-direction:column;}
.hero2-copy{max-width:492px; padding-top:14px;}
.pill{display:inline-flex; align-items:center; gap:8px; font-size:12.5px; color:#1e40af;
  background:rgba(36,80,216,.09); border:1px solid rgba(36,80,216,.24); border-radius:999px; padding:5px 14px;}
.pill i{width:6px; height:6px; border-radius:50%; background:#059669; display:block; animation:bpulse 2s infinite;}
@keyframes bpulse{0%,100%{opacity:1}50%{opacity:.35}}
h1{font-size:48px; line-height:1.2; margin:20px 0 0; letter-spacing:-.018em; font-weight:800;
  word-break:keep-all; overflow-wrap:normal;}
h1 .g{background:linear-gradient(100deg,#1d4ed8,#0e7490 55%,#047857); -webkit-background-clip:text;
  background-clip:text; color:transparent;}
h1 .h1s{display:block; font-size:30px; line-height:1.5; font-weight:700; letter-spacing:0; margin-top:6px;}
.hero2 p.sub{font-size:15.5px; color:#48586f; margin:18px 0 0; max-width:560px; line-height:1.85;}
.hero-btns{display:flex; gap:12px; margin-top:28px; flex-wrap:wrap;}
.hero2 .btn-ghost{color:#1e3a8a; border-color:rgba(30,58,138,.32);}
.hero2 .btn-ghost:hover{background:rgba(30,58,138,.07);}
.hero-map{display:flex; align-items:center; gap:9px; margin-top:auto; padding-top:22px;
  border-top:1px solid rgba(15,23,42,.13); flex-wrap:wrap;}
.hero-map .cap{font-size:11.5px; color:#64748b; letter-spacing:.1em; margin-right:4px; text-transform:uppercase;}
.hero-map .nd{display:inline-flex; align-items:center; gap:7px; font-size:12.5px; color:#1e3a8a;
  background:rgba(255,255,255,.82); border:1px solid rgba(30,58,138,.16); border-radius:999px;
  padding:6px 14px; backdrop-filter:blur(6px);}
.hero-map .nd i{width:6px; height:6px; border-radius:50%; display:block;}
.hero-map .ar{color:#94a3b8; font-size:13px;}
.pin{position:absolute; z-index:4; display:flex; align-items:center; gap:9px;}
.pin .dt{position:relative; width:11px; height:11px; border-radius:50%; background:#10b981; flex-shrink:0;
  box-shadow:0 0 0 3px rgba(16,185,129,.22);}
.pin .dt:after{content:""; position:absolute; inset:-8px; border-radius:50%;
  border:1px solid rgba(16,185,129,.55); animation:pulse 2.8s infinite;}
@keyframes pulse{0%{transform:scale(.55);opacity:.9}100%{transform:scale(1.45);opacity:0}}
.pin .tx{font-size:12.5px; color:#0f172a; background:rgba(255,255,255,.9);
  border:1px solid rgba(30,58,138,.18); border-radius:8px; padding:5px 11px;
  box-shadow:0 4px 14px rgba(15,23,42,.08); white-space:nowrap; line-height:1.35;}
.pin .tx em{display:block; font-style:normal; font-size:10.5px; color:#64748b; margin-top:1px;}
.pin.rev{flex-direction:row-reverse;}
.pin.b .dt{background:#2563eb; box-shadow:0 0 0 3px rgba(37,99,235,.22);}
.pin.b .dt:after{border-color:rgba(37,99,235,.55);}
.pin.p .dt{background:#7c3aed; box-shadow:0 0 0 3px rgba(124,58,237,.22);}
.pin.p .dt:after{border-color:rgba(124,58,237,.55);}
.pin.o .dt{background:#ea580c; box-shadow:0 0 0 3px rgba(234,88,12,.22);}
.pin.o .dt:after{border-color:rgba(234,88,12,.55);}
.pin .tx:hover{border-color:#2563eb;}

/* ================= 能力底座 ================= */
.kf{background:var(--bg2); border-bottom:1px solid var(--line); padding:36px 0 42px;}
.kf.solo{padding:32px 0 38px;}
.qual-hd{display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-bottom:14px;}
.qual-hd .tag{font-size:11px; font-weight:800; letter-spacing:.1em; color:var(--ink2);
  background:#e8edf5; border-radius:5px; padding:3px 10px;}
.qual-hd .t{font-size:15px; font-weight:700;}
.qual-hd .n{margin-left:auto; font-size:12px; color:var(--ink4);}
.kf.solo .qual-hd .tag{color:#fff; background:var(--pri);}
.kf.solo .qual-hd .t{font-size:17px;}
.qual-row{display:grid; grid-template-columns:repeat(3,1fr); gap:14px;}
.qc{background:#fff; border:1px solid var(--line); border-left:3px solid var(--pri);
  border-radius:10px; padding:16px 18px; display:flex; gap:15px; align-items:flex-start;}
.qc .num{font-size:25px; font-weight:800; color:var(--ink); font-variant-numeric:tabular-nums;
  line-height:1.05; flex-shrink:0;}
.qc .num small{font-size:12px; font-weight:700; color:var(--ink3); margin-left:1px;}
.qc .bd .t{font-size:13.5px; font-weight:700; line-height:1.5;}
.qc .bd .d{font-size:11.5px; color:var(--ink3); margin-top:4px; line-height:1.6;}
.qc.g{border-left-color:var(--green);}
.qc.v{border-left-color:var(--ai);}

/* ================= section shell ================= */
section{padding:74px 0;}
.sec-head{text-align:center; max-width:760px; margin:0 auto 44px;}
.sec-head .kicker{display:inline-block; font-size:12px; font-weight:700; letter-spacing:.14em; color:var(--pri);
  text-transform:uppercase; margin-bottom:12px;}
.sec-head h2{font-size:33px; margin:0; letter-spacing:-.01em; font-weight:800;}
.sec-head p{color:var(--ink3); margin:12px 0 0; font-size:15px;}
.sec-alt{background:var(--bg2);}

/* inner page hero */
.pagehero{background:linear-gradient(160deg,#f4f6ff 0%,#ffffff 60%,#f6fbf9 100%);
  border-bottom:1px solid var(--line); padding:44px 0 40px;}
.pagehero .kicker{font-size:12px; font-weight:700; letter-spacing:.14em; color:var(--pri); text-transform:uppercase;}
.pagehero h1{font-size:34px; margin:10px 0 0; font-weight:800; letter-spacing:-.01em; word-break:keep-all;}
.pagehero p{color:var(--ink3); margin:12px 0 0; max-width:760px; font-size:15px;}
.crumb{font-size:12.5px; color:var(--ink4); margin-bottom:14px; display:flex; gap:8px; flex-wrap:wrap;}
.crumb a:hover{color:var(--pri);}
.crumb span{color:var(--ink4);}

/* strategy blocks */
.three{display:grid; grid-template-columns:repeat(3,1fr); gap:22px;}
.blk{border:1px solid var(--line); border-radius:14px; padding:26px 24px; background:#fff; transition:.2s;}
.blk:hover{border-color:#c7d2fe; box-shadow:0 12px 30px rgba(36,80,216,.09); transform:translateY(-3px);}
.blk .ico{width:52px; height:52px; border-radius:13px; display:flex; align-items:center; justify-content:center; margin-bottom:16px; overflow:hidden;}
.blk .ico svg{width:24px; height:24px;}
.blk .ico img{width:100%; height:100%; object-fit:contain; display:block; mix-blend-mode:multiply;}
.blk.b1 .ico{background:#eff6ff; color:var(--semi);}
.blk.b2 .ico{background:#ecfdf5; color:var(--green);}
.blk.b3 .ico{background:#f5f3ff; color:var(--ai);}
.blk h3{font-size:18px; margin:0 0 4px;}
.blk .tagline{font-size:12.5px; color:var(--ink3); margin-bottom:12px;}
.blk p{font-size:14px; color:var(--ink2); margin:0; line-height:1.8;}
.blk .mini{margin-top:16px; padding-top:14px; border-top:1px dashed var(--line); display:flex; flex-wrap:wrap; gap:8px;}
.chip{font-size:11.5px; padding:3px 10px; border-radius:6px; background:var(--bg3); color:var(--ink2);}

/* loop diagram */
.loop{margin-top:34px; border:1px solid var(--line); border-radius:14px; background:#fff; padding:30px 26px;}
.loop-t{text-align:center; font-size:13.5px; color:var(--ink3); margin-bottom:24px;}
.loop-flow{display:flex; align-items:stretch; justify-content:center; gap:0; flex-wrap:wrap;}
.lf{flex:1; min-width:158px; border-radius:12px; padding:16px 15px; border:1px solid var(--line); background:var(--bg2);}
.lf .h{font-size:14.5px; font-weight:700; margin-bottom:5px; display:flex; align-items:center; gap:8px;}
.lf .h svg{width:18px; height:18px; flex-shrink:0;}
.lf .d{font-size:12px; color:var(--ink3); line-height:1.6;}
.lf.c1 .h{color:var(--semi);} .lf.c2 .h{color:var(--green);}
.lf.c3 .h{color:var(--ai);}   .lf.c4 .h{color:var(--tok);}
.lfa{display:flex; align-items:center; padding:0 10px; color:#cbd5e1; font-size:19px; font-weight:700;}
.loop-cap{margin-top:22px; padding-top:18px; border-top:1px dashed var(--line);
  font-size:13.5px; color:var(--ink2); text-align:center; line-height:1.85;}

/* solutions tabs */
.tabs{display:flex; justify-content:center; gap:9px; flex-wrap:wrap; margin-bottom:30px;}
.tab{font-size:14px; padding:9px 22px; border-radius:999px; border:1px solid var(--line);
  background:#fff; color:var(--ink2); cursor:pointer; transition:.18s; font-weight:500; font-family:inherit;}
.tab:hover{border-color:#c7d2fe; color:var(--pri);}
.tab.on{background:var(--pri); color:#fff; border-color:var(--pri); font-weight:600;}
.grid3{display:grid; grid-template-columns:repeat(3,1fr); gap:20px;}
.card{border:1px solid var(--line); border-radius:13px; padding:24px 22px; background:#fff;
  display:flex; flex-direction:column; transition:.2s;}
.card:hover{border-color:#c7d2fe; box-shadow:0 14px 34px rgba(36,80,216,.1); transform:translateY(-3px);}
.card .k{font-size:11.5px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; margin-bottom:12px;}
.card.c1 .k{color:var(--semi);} .card.c2 .k{color:var(--green);} .card.c3 .k{color:var(--ai);}
.card h4{font-size:16.5px; margin:0 0 9px; line-height:1.5;}
.card p{font-size:13.5px; color:var(--ink2); margin:0; line-height:1.8; flex:1;}
.card .spec{margin-top:15px; padding-top:14px; border-top:1px dashed var(--line);
  font-size:12.5px; color:var(--ink3); font-variant-numeric:tabular-nums;}
.card .spec b{color:var(--ink); font-weight:700;}
.card .more{margin-top:14px; font-size:13px; color:var(--pri); font-weight:600;}
.card .more:after{content:" →";}
.pane{display:none;}
.pane.on{display:grid;}

/* partners + cases */
.logos{display:grid; grid-template-columns:repeat(4,1fr); gap:14px;}
.logobox{height:104px; border:1px solid var(--line); border-radius:11px; background:#fff;
  display:flex; align-items:center; justify-content:center; padding:0 20px; transition:.2s;}
.logobox:hover{border-color:#c7d2fe; box-shadow:0 8px 20px rgba(36,80,216,.07);}
.logobox img{max-width:78%; max-height:40px; object-fit:contain; display:block; opacity:.92; transition:.22s;}
.logobox:hover img{opacity:1;}
.logogroup{margin-bottom:30px;}
.lg-hd{display:flex; align-items:baseline; gap:12px; flex-wrap:wrap; margin-bottom:13px;}
.lg-hd .lg-t{font-size:14px; font-weight:800;}
.lg-hd .lg-n{font-size:12px; color:var(--ink3);}
.licbox{display:flex; align-items:center; gap:26px; border:1px solid var(--line); border-radius:12px;
  background:#fff; padding:20px 24px;}
.licbox .lic-logo{flex-shrink:0; width:196px; display:flex; align-items:center; justify-content:center;
  padding-right:26px; border-right:1px solid var(--line);}
.licbox .lic-logo img{max-width:172px; max-height:44px; object-fit:contain; display:block;}
.licbox .lic-tx{flex:1; min-width:0;}
.licbox .lic-t{font-size:15px; font-weight:700; margin-bottom:5px;}
.licbox .lic-d{font-size:12.5px; color:var(--ink3); line-height:1.7;}
.licbox .lic-badge{flex-shrink:0; font-size:11.5px; font-weight:700; color:var(--pri);
  background:var(--pri-l); border:1px solid #dbe4ff; border-radius:7px; padding:7px 13px; white-space:nowrap;}
.cases{display:grid; grid-template-columns:repeat(3,1fr); gap:20px;}
.case{border:1px solid var(--line); border-radius:13px; overflow:hidden; background:#fff; transition:.2s; display:flex; flex-direction:column;}
.case:hover{border-color:#c7d2fe; box-shadow:0 14px 34px rgba(36,80,216,.1); transform:translateY(-3px);}
.case .top{height:126px; position:relative; display:flex; align-items:flex-end; padding:14px;
  color:#fff; font-size:12px; font-weight:600; letter-spacing:.03em; overflow:hidden;}
.case .top:after{content:""; position:absolute; inset:0; background:linear-gradient(transparent 30%,rgba(0,0,0,.5));}
.case .top span{position:relative; z-index:2;}
.case .top.a{background-color:#1e3a8a; background-image:linear-gradient(150deg,rgba(23,42,105,.62),rgba(59,130,246,.22)),url('cards/case-storage.jpg'); background-size:cover; background-position:center;}
.case .top.b{background-color:#065f46; background-image:linear-gradient(150deg,rgba(5,72,54,.60),rgba(16,185,129,.22)),url('cards/case-hcy.jpg'); background-size:cover; background-position:center;}
.case .top.c{background-color:#4c1d95; background-image:linear-gradient(150deg,rgba(58,22,116,.62),rgba(139,92,246,.22)),url('cards/case-invest.jpg'); background-size:cover; background-position:center;}
.case .top.d{background-color:#9a3412; background-image:linear-gradient(150deg,rgba(120,40,14,.60),rgba(245,158,11,.22)),url('cards/case-bonded.jpg'); background-size:cover; background-position:center;}
.case .bd{padding:18px 20px 20px; display:flex; flex-direction:column; flex:1;}
.case h4{font-size:15.5px; margin:0 0 8px; line-height:1.5;}
.case p{font-size:13px; color:var(--ink2); margin:0; line-height:1.75; flex:1;}
.case .kv{margin-top:13px; display:flex; gap:16px; flex-wrap:wrap;}
.case .kv div{font-size:12px; color:var(--ink3);}
.case .kv b{display:block; font-size:15px; color:var(--pri); font-weight:800; font-variant-numeric:tabular-nums;}

/* news */
.news2{display:grid; grid-template-columns:1fr 1fr; gap:44px;}
.news-col h3{font-size:17px; margin:0 0 6px; display:flex; align-items:center; gap:9px;}
.news-col h3 .bar{width:3px; height:17px; background:var(--pri); border-radius:2px;}
.news-col .more-all{font-size:12.5px; color:var(--ink3); margin-bottom:14px;}
.nitem{display:flex; gap:15px; padding:15px 0; border-bottom:1px solid var(--line2); align-items:flex-start;}
.nitem .thumb{width:92px; height:64px; border-radius:8px; flex-shrink:0; overflow:hidden;
  background:linear-gradient(135deg,#e0e7ff,#f1f5f9); border:1px solid var(--line);}
.nitem .thumb img{width:100%; height:100%; object-fit:cover; display:block; transition:transform .4s;}
.nitem:hover .thumb img{transform:scale(1.06);}
.nitem .tx .meta{font-size:11.5px; color:var(--ink4); margin-bottom:5px; display:flex; gap:9px; align-items:center; flex-wrap:wrap;}
.ntag{font-size:10.5px; padding:1px 7px; border-radius:4px; background:var(--pri-l); color:var(--pri); font-weight:600;}
.ntag.biz{background:#ecfdf5; color:var(--green);}
.ntag.ind{background:#fff7ed; color:var(--tok);}
.nitem .tx h4{font-size:14px; margin:0; line-height:1.55; color:var(--ink); font-weight:600;}
.nitem:hover .tx h4{color:var(--pri);}

/* about + timeline */
.about3{display:grid; grid-template-columns:repeat(3,1fr); gap:20px; margin-bottom:48px;}
.acard{border:1px solid var(--line); border-radius:13px; padding:24px 22px; background:#fff;}
.acard h4{font-size:16px; margin:0 0 14px; display:flex; align-items:center; gap:9px;}
.acard h4 .ico{width:34px; height:34px; border-radius:9px; background:var(--pri-l); color:var(--pri);
  display:flex; align-items:center; justify-content:center; flex-shrink:0;}
.acard h4 .ico svg{width:18px; height:18px;}
.acard dl{margin:0; font-size:13px;}
.acard dl div{display:flex; gap:10px; padding:6px 0; border-bottom:1px dashed var(--line2);}
.acard dl div:last-child{border-bottom:none;}
.acard dt{color:var(--ink3); width:74px; flex-shrink:0;}
.acard dd{margin:0; color:var(--ink2); font-weight:500;}
.acard p{font-size:13.5px; color:var(--ink2); margin:0; line-height:1.85;}
.tl{position:relative; padding-left:0;}
.tl:before{content:""; position:absolute; left:50%; top:8px; bottom:8px; width:2px;
  background:linear-gradient(180deg,#c7d2fe,#e2e8f0); transform:translateX(-50%);}
.tl-item{position:relative; width:50%; padding:0 46px 30px 0;}
.tl-item:nth-child(even){margin-left:50%; padding:0 0 30px 46px; text-align:left;}
.tl-item:nth-child(odd){text-align:right;}
.tl-item .dot{position:absolute; top:6px; width:13px; height:13px; border-radius:50%;
  background:#fff; border:3px solid var(--pri); z-index:2;}
.tl-item:nth-child(odd) .dot{right:-6.5px;}
.tl-item:nth-child(even) .dot{left:-6.5px;}
.tl-item .yr{font-size:20px; font-weight:800; color:var(--pri); font-variant-numeric:tabular-nums;}
.tl-item .tt{font-size:15px; font-weight:700; margin:3px 0 6px;}
.tl-item .dd{font-size:13px; color:var(--ink3); line-height:1.75;}
.tl-item .hd{display:inline-block; border:1px solid var(--line); background:#fff; border-radius:12px;
  padding:16px 20px; max-width:400px; text-align:left;}

/* cta + contact */
.cta{background:linear-gradient(150deg,#0b1220,#16233d); color:#fff; text-align:center; padding:66px 0;}
.cta h2{font-size:31px; margin:0 0 12px; font-weight:800;}
.cta p{color:#b6c4da; margin:0 0 26px;}
.contact{display:grid; grid-template-columns:1.35fr .9fr; gap:44px;}
.form{display:grid; grid-template-columns:1fr 1fr; gap:16px;}
.fld{display:flex; flex-direction:column; gap:7px;}
.fld.full{grid-column:1/-1;}
.fld label{font-size:12.5px; color:var(--ink2); font-weight:600;}
.fld label i{color:#dc2626; font-style:normal;}
.fld input,.fld select,.fld textarea{border:1px solid var(--line); border-radius:9px; padding:11px 13px;
  font-size:14px; font-family:inherit; color:var(--ink); background:#fff;}
.fld input:focus,.fld select:focus,.fld textarea:focus{outline:none; border-color:var(--pri); box-shadow:0 0 0 3px rgba(36,80,216,.12);}
.fld.bad input,.fld.bad select,.fld.bad textarea{border-color:#dc2626;}
.fld .err{font-size:11.5px; color:#dc2626; display:none;}
.fld.bad .err{display:block;}
.fld textarea{min-height:96px; resize:vertical;}
.form-msg{grid-column:1/-1; font-size:13.5px; border-radius:9px; padding:12px 14px; display:none;}
.form-msg.ok{display:block; background:#ecfdf5; color:#0a7050; border:1px solid #c7ecdd;}
.form-msg.no{display:block; background:#fef3f2; color:#b42318; border:1px solid #fad4d0;}
.ccard{border:1px solid var(--line); border-radius:12px; padding:20px; margin-bottom:14px; background:#fff;}
.ccard .h{font-size:13.5px; font-weight:700; display:flex; align-items:center; gap:9px; margin-bottom:7px;}
.ccard .h .ico{width:32px; height:32px; border-radius:8px; background:var(--pri-l); color:var(--pri);
  display:flex; align-items:center; justify-content:center; flex-shrink:0;}
.ccard .h .ico svg{width:17px; height:17px;}
.ccard .v{font-size:13px; color:var(--ink2); line-height:1.7; padding-left:41px;}
.ccard .v a{color:inherit; word-break:break-all;}
.ccard .v a:hover{color:var(--pri);}

/* footer */
footer.site{background:#0b1220; color:#94a3b8; padding:52px 0 0; font-size:13px;}
.fgrid{display:grid; grid-template-columns:1.55fr .85fr .95fr 1.55fr; gap:40px; padding-bottom:38px;}
.fgrid h5{color:#fff; font-size:13.5px; margin:0 0 16px; font-weight:700;}
.fgrid ul{list-style:none; margin:0; padding:0;}
.fgrid li{margin:9px 0; color:#8996ab;}
.fgrid li .fi{display:inline-block; width:14px; height:14px; vertical-align:-2px; margin-right:8px; color:#5c7099;}
.fgrid li .fi svg{width:14px; height:14px; display:block;}
.fgrid li a{color:inherit; word-break:break-word; overflow-wrap:anywhere;}
.fgrid li a:hover{color:#fff;}
.fbrand .logo .cn{color:#fff;} .fbrand .logo .en{color:#7c8ba1;}
.fbrand p{margin:16px 0 0; line-height:1.85; color:#8996ab; font-size:12.5px;}
.fbot{border-top:1px solid rgba(255,255,255,.09); padding:20px 0 26px; display:flex;
  justify-content:space-between; gap:20px; flex-wrap:wrap; font-size:12px; color:#6b7a91;}
.fbot .left{display:flex; gap:18px; flex-wrap:wrap;}
.fbot a:hover{color:#fff;}

/* ================= article / detail layout ================= */
.art{display:grid; grid-template-columns:1fr 296px; gap:52px; align-items:start;}
.art-main{min-width:0;}
.art-main h2{font-size:21px; margin:38px 0 12px; padding-top:6px; font-weight:800; letter-spacing:-.01em;}
.art-main h2:first-child{margin-top:0;}
.art-main h3{font-size:16.5px; margin:24px 0 8px;}
.art-main p{color:var(--ink2); margin:12px 0; line-height:1.9;}
.art-main ul{margin:12px 0; padding-left:20px; color:var(--ink2);}
.art-main li{margin:7px 0; line-height:1.8;}
.art-main strong{color:var(--ink);}
.art-main .lead{font-size:15.5px; color:var(--ink2);}
.side{position:sticky; top:92px;}
.side .box{border:1px solid var(--line); border-radius:12px; background:#fff; padding:20px; margin-bottom:16px;}
.side .box h5{font-size:13px; margin:0 0 12px; color:var(--ink); font-weight:700;}
.side ul{list-style:none; margin:0; padding:0; font-size:13px;}
.side li{margin:9px 0;}
.side li a{color:var(--ink2);}
.side li a:hover{color:var(--pri);}
.side li.on a{color:var(--pri); font-weight:700;}
.side .cta-mini{background:var(--pri-l); border-color:#dbe4ff;}
.side .cta-mini p{font-size:12.5px; color:var(--ink2); margin:0 0 12px; line-height:1.7;}

/* 参数表 */
.spec-tbl{width:100%; border-collapse:collapse; margin:16px 0; font-size:13.5px;}
.spec-tbl th,.spec-tbl td{text-align:left; padding:11px 14px; border-bottom:1px solid var(--line); vertical-align:top;}
.spec-tbl th{width:150px; background:var(--bg2); color:var(--ink); font-weight:700; white-space:nowrap;}
.spec-tbl td{color:var(--ink2);}
.spec-tbl tr:last-child th,.spec-tbl tr:last-child td{border-bottom:none;}
.spec-tbl td b{color:var(--ink);}

/* 特征块（capabilities） */
.feat{display:grid; grid-template-columns:1fr 1fr; gap:16px; margin:18px 0;}
.feat .f{border:1px solid var(--line); border-left:3px solid var(--pri); border-radius:10px; padding:16px 18px; background:#fff;}
.feat .f .t{font-size:14px; font-weight:700; margin-bottom:6px; display:flex; align-items:center; gap:8px;}
.feat .f .t .n{font-size:11px; font-weight:800; color:#fff; background:var(--pri); border-radius:5px; padding:1px 7px;}
.feat .f p{font-size:13px; color:var(--ink2); margin:0; line-height:1.8;}
.feat.g .f{border-left-color:var(--green);} .feat.g .f .t .n{background:var(--green);}
.feat.v .f{border-left-color:var(--ai);}    .feat.v .f .t .n{background:var(--ai);}
.pips{display:flex; flex-wrap:wrap; gap:8px; margin:14px 0;}
.note{font-size:12.5px; color:var(--ink3); background:var(--bg2); border:1px solid var(--line);
  border-radius:9px; padding:12px 14px; margin:16px 0; line-height:1.75;}

/* 新闻列表页 / 正文 */
.newslist .nitem{padding:20px 0;}
.newslist .nitem .thumb{width:150px; height:100px;}
.newslist .nitem .tx h4{font-size:16px;}
.newslist .nitem .tx p{font-size:13px; color:var(--ink3); margin:6px 0 0; line-height:1.7;}
.article{max-width:820px; margin:0 auto;}
.article h1{font-size:29px; margin:0 0 14px; font-weight:800; line-height:1.4; word-break:keep-all;}
.article .ameta{font-size:12.5px; color:var(--ink4); display:flex; gap:14px; flex-wrap:wrap;
  padding-bottom:18px; border-bottom:1px solid var(--line); margin-bottom:26px;}
.article p{color:var(--ink2); margin:14px 0; line-height:1.95;}
.article h2{font-size:19px; margin:32px 0 10px;}
.article ul{padding-left:20px; color:var(--ink2);}
.article .disclaimer{margin-top:34px; padding-top:18px; border-top:1px solid var(--line);
  font-size:12.5px; color:var(--ink3); line-height:1.8;}
.artimg{margin:0 0 26px; border-radius:13px; overflow:hidden; border:1px solid var(--line); background:#eef2f7;}
.artimg img{width:100%; height:auto; display:block;}
footer.site .ext{display:inline-flex; align-items:center; gap:4px;}
footer.site .ext svg{width:10px; height:10px; opacity:.5; flex-shrink:0;}

/* 分页 / 返回 */
.pager{display:flex; gap:10px; justify-content:center; margin-top:38px;}
.pager a,.pager span{font-size:13.5px; border:1px solid var(--line); border-radius:8px; padding:8px 14px; color:var(--ink2);}
.pager a:hover{border-color:var(--pri); color:var(--pri);}
.pager .cur{background:var(--pri); color:#fff; border-color:var(--pri); font-weight:700;}
.backlink{display:inline-flex; align-items:center; gap:7px; font-size:13.5px; color:var(--pri); margin-top:30px; font-weight:600;}

/* 返回顶部 */
.to-top{position:fixed; right:26px; bottom:26px; z-index:70; width:44px; height:44px; border-radius:12px;
  background:#fff; border:1px solid var(--line); box-shadow:0 8px 22px rgba(15,23,42,.12);
  display:flex; align-items:center; justify-content:center; cursor:pointer; opacity:0; visibility:hidden;
  transition:.25s; color:var(--ink2);}
.to-top.show{opacity:1; visibility:visible;}
.to-top:hover{border-color:var(--pri); color:var(--pri);}
.to-top svg{width:20px; height:20px;}

/* 数字滚动 */
.num[data-count]{font-variant-numeric:tabular-nums;}

/* ================= responsive ================= */
/* 导航 8 项：窄桌面先转「紧凑横排」（隐藏英文副名、收紧间距），更窄才收进汉堡菜单 */
@media (max-width:1200px){
  header.site .logo .en{display:none;}
  header.site .wrap{gap:20px;}
  nav.menu{gap:13px; font-size:13.5px;}
  .nav-right{gap:9px;}
  .nav-right .lang{padding:0 9px;}
  header.site .btn.btn-sm{padding:8px 13px; font-size:13px;}
}
@media (max-width:980px){
  nav.menu{display:none;}
  .mob-tg{display:flex; margin-left:auto;}
  nav.menu.open{display:flex; position:absolute; top:72px; left:0; right:0; background:#fff;
    flex-direction:column; gap:0; padding:8px 32px 18px; border-bottom:1px solid var(--line);
    box-shadow:0 14px 30px rgba(15,23,42,.08); margin:0;}
  nav.menu.open a{padding:13px 0; border-bottom:1px solid var(--line2);}
  nav.menu.open a.on{border-bottom-color:var(--line2);}
  nav.menu.open a.ext{justify-content:flex-start;}
  header.site{position:sticky;}
}
@media (max-width:1080px){
  .contact,.news2,.art{grid-template-columns:1fr;}
  .three,.grid3,.cases,.about3{grid-template-columns:1fr 1fr;}
  .qual-row{grid-template-columns:1fr;}
  .logos{grid-template-columns:repeat(3,1fr);}
  .fgrid{grid-template-columns:1fr 1fr;}
  h1{font-size:34px;}
  h1 .h1s{font-size:22px;}
  .hero2 .bgimg{left:0; right:0; width:auto; opacity:.85;}
  .hero2 .scrim{background:linear-gradient(90deg,rgba(238,242,247,.99) 0%,rgba(238,242,247,.94) 44%,rgba(238,242,247,.72) 100%),
    linear-gradient(180deg,rgba(238,242,247,.55) 0%,rgba(238,242,247,0) 40%,rgba(238,242,247,.82) 100%);}
  .hero2-in{min-height:0; padding:56px 0 30px;}
  .pin{display:none;}
  .tl:before{left:7px;}
  .tl-item,.tl-item:nth-child(even){width:100%; margin-left:0; padding:0 0 26px 32px; text-align:left;}
  .tl-item:nth-child(odd) .dot,.tl-item:nth-child(even) .dot{left:1px; right:auto;}
  .side{position:static;}
  .pagehero h1{font-size:27px;}
}
@media (max-width:700px){
  .wrap{padding:0 18px;}
  .three,.grid3,.cases,.about3,.logos,.feat{grid-template-columns:1fr;}
  .logo .en{display:none;}
  .licbox{flex-direction:column; align-items:flex-start; gap:14px;}
  .licbox .lic-logo{width:100%; border-right:none; padding-right:0; padding-bottom:14px;
    border-bottom:1px solid var(--line); justify-content:flex-start;}
  h1{font-size:28px;}
  h1 .h1s{font-size:18px;}
  .sec-head h2{font-size:25px;}
  .newslist .nitem{flex-direction:column;}
  .newslist .nitem .thumb{width:100%; height:150px;}
  .article h1{font-size:23px;}
}
@media print{
  header.site,.to-top,.cta,.mob-tg{display:none;}
}
/* 首页 #biz / #build 卡片：等高 + chip 行贴底对齐 */
#biz .blk, #build .blk{display:flex; flex-direction:column;}
#biz .blk .mini, #build .blk .mini{margin-top:auto;}

/* ===== 导航：关于我们 下拉子菜单 ===== */
.menu{align-items:center; align-self:stretch;}
.menu .has-sub{position:relative; display:flex; align-items:center; align-self:stretch;}
.menu .has-sub > a{display:inline-flex; align-items:center; gap:4px;}
.menu .has-sub > a .caret{width:11px; height:11px; flex-shrink:0; opacity:.5; transition:transform .2s, opacity .2s;}
.menu .has-sub:hover > a .caret,.menu .has-sub:focus-within > a .caret{transform:rotate(180deg); opacity:.9;}
.menu .has-sub .sub{position:absolute; top:100%; left:50%; transform:translate(-50%,8px);
  min-width:186px; padding:8px; background:#fff; border:1px solid var(--line); border-radius:12px;
  box-shadow:0 18px 42px rgba(15,23,42,.13); display:flex; flex-direction:column; gap:2px;
  opacity:0; visibility:hidden; pointer-events:none;
  transition:opacity .18s, transform .18s, visibility .18s; z-index:70;}
.menu .has-sub:hover .sub,.menu .has-sub:focus-within .sub{opacity:1; visibility:visible; pointer-events:auto; transform:translate(-50%,0);}
.menu .has-sub .sub a{display:flex; align-items:center; gap:6px; padding:9px 12px; border-bottom:0;
  border-radius:8px; font-size:13.5px; color:var(--ink2); white-space:nowrap; transition:.16s;}
.menu .has-sub .sub a:hover{background:var(--pri-l); color:var(--pri);}
.menu .has-sub .sub a.on{color:var(--pri); font-weight:600; background:var(--pri-l);}
.menu .has-sub .sub a.ext svg{width:10px; height:10px; opacity:.5; flex-shrink:0;}

/* ===== 页脚：新增“业务与方案”一列（共 5 列） ===== */
.fgrid{grid-template-columns:1.45fr .8fr .9fr .9fr 1.35fr; gap:30px;}

@media (max-width:1080px){
  .fgrid{grid-template-columns:1fr 1fr; gap:32px;}
  .fgrid .fbrand{grid-column:1 / -1;}
}
@media (max-width:980px){
  nav.menu.open{align-items:stretch; align-self:auto;}
  .menu.open .has-sub{display:block; align-self:auto;}
  .menu.open .has-sub > a{display:flex; justify-content:space-between; width:100%;}
  .menu.open .has-sub > a .caret{transform:none; opacity:.55;}
  .menu.open .has-sub .sub{position:static; opacity:1; visibility:visible; pointer-events:auto;
    transform:none; box-shadow:none; border:0; border-radius:0; background:transparent;
    padding:0 0 4px 14px; min-width:0; gap:0;}
  .menu.open .has-sub .sub a{padding:10px 0; border-bottom:1px solid var(--line2); border-radius:0;
    font-size:13px; color:var(--ink3);}
  .menu.open .has-sub .sub a:hover,.menu.open .has-sub .sub a.on{background:transparent;}
  .menu.open .has-sub .sub a.ext{justify-content:flex-start;}
}
/* ===== v55 视觉改版 ===== */

/* 1) 留白与章节标题：居中 → 左对齐 + 通栏细线，节奏更像杂志而非模板 */
section{padding:92px 0;}
.sec-head{text-align:left; max-width:none; margin:0 0 46px; padding-top:26px; border-top:1px solid var(--line);}
.sec-head .kicker{margin-bottom:10px;}
.sec-head h2{font-size:36px; font-weight:700; letter-spacing:-.022em; line-height:1.25;}
.sec-head p{margin-top:14px; font-size:15.5px; line-height:1.85; max-width:780px;}
.pagehero h1{font-weight:700;}

/* 2) 卡片：去掉蓝色发光与上浮，只留细边框与极轻背景反馈 */
.card,.blk,.acard,.ccard,.case,.logobox{border-radius:12px;}
.card:hover,.blk:hover,.acard:hover,.case:hover{background:#fcfdff; border-color:#c3d0e4; box-shadow:none; transform:none;}
.logobox:hover{box-shadow:none; border-color:#c3d0e4;}
.tl-item .hd,.side .box,.loop{box-shadow:none;}

/* 3) 按钮：胶囊形；主按钮改深墨色，蓝色只留作强调 */
.btn{border-radius:999px; padding:11px 22px; letter-spacing:.01em;}
.btn-sm{padding:9px 16px; font-size:13px;}
.btn-pri{background:#0b1220; color:#fff;}
.btn-pri:hover{background:#20304d;}
.btn-line{background:transparent; border-color:#cbd5e1;}
.btn-line:hover{border-color:#0b1220; color:#0b1220;}
.cta .btn-pri{background:#fff; color:#0b1220;}
.cta .btn-pri:hover{background:#e3e9f2;}
.lang,.mob-tg,.to-top{border-radius:999px;}
.hero2 .btn-ghost{color:#0b1220; border-color:rgba(11,18,32,.3);}
.hero2 .btn-ghost:hover{background:rgba(11,18,32,.06);}

/* 4) 去装饰性小图标（HTML 已删，这里兜底） */
.blk .ico svg,.acard h4 .ico,.ccard .h .ico,.lf .h svg,.fgrid li .fi{display:none;}
.ccard .v{padding-left:0;}
.acard h4,.ccard .h{gap:0;}

/* 5) 闭环流程条：去盒子，改彩色顶部细线 */
.loop{margin-top:46px; border:0; border-radius:0; background:transparent; padding:32px 0 0;
  border-top:1px solid var(--line);}
.lf{background:transparent; border:0; border-top:2px solid var(--line); border-radius:0; padding:15px 18px 0 0;}
.lf.c1{border-top-color:var(--semi);} .lf.c2{border-top-color:var(--green);}
.lf.c3{border-top-color:var(--ai);}   .lf.c4{border-top-color:var(--tok);}
.lfa{padding:0 12px; color:#cbd5e1; font-size:16px;}
.loop-cap{border-top:0; margin-top:24px; padding-top:0;}

/* 6) 标签 chip：实心底 → 描边胶囊 */
.chip{background:transparent; border:1px solid var(--line); border-radius:999px; padding:4px 12px; color:var(--ink3);}

/* 7) 业务卡跳转：整卡可点 + 底部文字链 */
.blk{position:relative;}
.blk .stretch{position:absolute; inset:0; z-index:3; border-radius:12px;}
.blk .more{display:inline-block; margin-top:14px; font-size:13.5px; font-weight:600; color:var(--pri);}
.blk .more:after{content:" →";}
.blk:hover .more{text-decoration:underline; text-underline-offset:3px;}

@media (max-width:700px){
  section{padding:64px 0;}
  .sec-head{margin-bottom:34px; padding-top:22px;}
  .loop{margin-top:34px; padding-top:24px;}
}
/* ===== v56 视觉改版：底—面分层 · 深色锚点 · 字号层级 ===== */

/* 1) 纸面：纯白 → 冷灰。白卡因此"浮起来"，不再靠描边分层次。
      换掉 --bg / --bg2 / --bg3 / --line 四个变量即可全站生效。 */
:root{
  --bg:#f1f3f7;
  --bg2:#e6eaf1;
  --bg3:#ecf0f5;
  --line:#dbe1ea;
  --line2:#e7ebf2;
}
body{background:var(--bg);}
section{background:transparent;}
.sec-alt{background:#fff;}
#cases{background:#fff;}
.pagehero{background:linear-gradient(160deg,#e7edfb 0%,#f1f3f7 56%,#e8f1ee 100%);}
.pagehero h1{font-size:40px; letter-spacing:-.025em;}
.kf{background:linear-gradient(120deg,#e7efff 0%,#edf1f8 46%,#e6f4ed 100%);}

/* 2) 深色锚点：三大赛道段。整页只有这一处深色，节奏立刻出来 */
.sec-ink{background:linear-gradient(180deg,#0a1020 0%,#0f1c33 100%); color:#c3cfe3;}
.sec-ink .sec-head{border-top-color:rgba(255,255,255,.13);}
.sec-ink .sec-head .kicker{color:#7ea6ff;}
.sec-ink .sec-head .kicker:before{background:#7ea6ff;}
.sec-ink .sec-head h2{color:#fff;}
.sec-ink .sec-head p{color:#8fa2bf;}
.sec-ink .blk{background:rgba(255,255,255,.045); border-color:rgba(255,255,255,.1); box-shadow:none;}
.sec-ink .blk:hover{background:rgba(255,255,255,.08); border-color:rgba(255,255,255,.26); box-shadow:none;}
.sec-ink .blk h3{color:#fff;}
.sec-ink .blk .tagline{color:#8194b1;}
.sec-ink .blk p{color:#a5b5cd;}
.sec-ink .blk .mini{border-top-color:rgba(255,255,255,.11);}
.sec-ink .blk .more{color:#8fb0ff;}
.sec-ink .chip{background:transparent; border-color:rgba(255,255,255,.22); color:#a5b5cd;}
.sec-ink .loop{border-top-color:rgba(255,255,255,.13);}
.sec-ink .loop-t,.sec-ink .lf .d{color:#8194b1;}
.sec-ink .lfa{color:rgba(255,255,255,.26);}
.sec-ink .loop-cap{color:#a5b5cd;}
.sec-ink .lf.c1 .h{color:#6ea8ff;} .sec-ink .lf.c2 .h{color:#3ddba4;}
.sec-ink .lf.c3 .h{color:#b18cfb;} .sec-ink .lf.c4 .h{color:#ffa24d;}
.sec-ink .btn-pri{background:#fff; color:#0b1220;}
.sec-ink .btn-pri:hover{background:#dbe4f4;}
.sec-ink .btn-line{background:transparent; border-color:rgba(255,255,255,.32); color:#e6ecf6;}
.sec-ink .btn-line:hover{border-color:#fff; color:#fff; background:rgba(255,255,255,.08);}

/* 3) 章节标题：左边一条短横线 + 字号显著放大，制造层级对比 */
.sec-head{padding-top:30px; margin:0 0 54px;}
.sec-head .kicker{position:relative; padding-left:26px; font-size:11.5px; letter-spacing:.2em;}
.sec-head .kicker:before{content:""; position:absolute; left:0; top:50%; width:16px; height:2px;
  margin-top:-1px; background:var(--pri); border-radius:2px;}
.sec-head h2{font-size:44px; line-height:1.16; letter-spacing:-.03em;}
.sec-head p{font-size:16px; line-height:1.9; max-width:800px;}

/* 4) 卡片：撤掉描边，改"白面 + 极轻投影"的浮起关系 */
.card,.blk,.acard,.ccard,.case,.logobox,.licbox,.side .box{
  border-color:transparent;
  box-shadow:0 1px 2px rgba(15,23,42,.04), 0 14px 30px -20px rgba(15,23,42,.30);
}
.card:hover,.acard:hover,.case:hover,.logobox:hover,.licbox:hover{
  transform:translateY(-3px);
  box-shadow:0 2px 6px rgba(15,23,42,.05), 0 24px 46px -22px rgba(15,23,42,.34);
}
.blk:hover{transform:translateY(-3px);}

/* 5) 业务卡顶部彩条：把三个赛道重新"上色"（蓝 / 绿 / 紫） */
.blk{position:relative; overflow:hidden; padding-top:30px;}
.blk:before{content:""; position:absolute; left:0; right:0; top:0; height:3px; background:var(--pri);}
.blk.b2:before{background:var(--green);}
.blk.b3:before{background:var(--ai);}
.blk .ico{width:60px; height:60px; border-radius:14px;}

/* 6) 能力底座：白卡 + 大号数字 + 顶部彩条 */
.kf.solo{padding:40px 0 46px;}
.qc{flex-direction:column; gap:13px; border-left:0; border-top:3px solid var(--pri);
  border-radius:11px; padding:20px 20px 18px;}
.qc.g{border-top-color:var(--green);}
.qc.v{border-top-color:var(--ai);}
.qc .num{font-size:40px; letter-spacing:-.04em;}
.qc .num small{font-size:14px; font-weight:700;}
.lf .h{font-size:15px;}

/* 7) CTA：补一层光晕，避免大色块死平 */
.cta{background:linear-gradient(150deg,#0a1020 0%,#132038 55%,#0d2130 100%);
  position:relative; overflow:hidden;}
.cta:before{content:""; position:absolute; left:50%; top:-40%; width:900px; height:520px;
  margin-left:-450px; pointer-events:none;
  background:radial-gradient(closest-side,rgba(80,140,255,.22),transparent);}
.cta .wrap{position:relative; z-index:2;}

/* 8) 响应式跟随 */
@media (max-width:1080px){
  .sec-head h2{font-size:33px;}
  .pagehero h1{font-size:31px;}
  .qc .num{font-size:34px;}
}
@media (max-width:700px){
  .sec-head{margin-bottom:38px; padding-top:22px;}
  .sec-head h2{font-size:26px;}
  .pagehero h1{font-size:26px;}
  .qc .num{font-size:30px;}
  .blk{padding-top:26px;}
}
/* ===== v56b：编辑式行列 + 内页标题 ===== */

/* 1) #build：三张同款卡 → 细线分隔的编辑式行列，把"卡片墙"的重复感打散 */
#build .three{grid-template-columns:1fr; gap:0;}
#build .blk{display:grid; grid-template-columns:minmax(150px,.8fr) minmax(0,1.6fr);
  column-gap:56px; row-gap:8px; align-items:start;
  border:0; border-radius:0; box-shadow:none; background:transparent; overflow:visible;
  padding:30px 0 30px 28px; border-top:1px solid var(--line);}
#build .blk:first-child{border-top:0; padding-top:6px;}
#build .blk:before{left:0; right:auto; top:30px; bottom:30px; width:3px; height:auto;}
#build .blk:first-child:before{top:6px;}
#build .blk:hover{transform:none; box-shadow:none; background:transparent;}
#build .blk h3{grid-column:1; grid-row:1; margin:0; font-size:22px; letter-spacing:-.012em;}
#build .blk .tagline{grid-column:1; grid-row:2; margin:0;}
#build .blk p{grid-column:2; grid-row:1 / span 2; margin:0; font-size:14.5px;}
#build .blk .mini{grid-column:2; grid-row:3; margin-top:2px; padding-top:0; border-top:0;}

/* 2) 时间轴盒子并入"白面 + 轻投影" */
.tl-item .hd{border-color:transparent;
  box-shadow:0 1px 2px rgba(15,23,42,.04), 0 14px 30px -20px rgba(15,23,42,.30);}

/* 3) 内页正文标题放大，与首页 44px 章标题拉开层级 */
.art-main h2{font-size:25px; letter-spacing:-.02em;}

@media (max-width:880px){
  #build .blk{grid-template-columns:1fr; row-gap:2px; padding:24px 0 24px 22px;}
  #build .blk h3,#build .blk .tagline,#build .blk p,#build .blk .mini{grid-column:1; grid-row:auto;}
  #build .blk p{margin-top:10px;}
  #build .blk .mini{margin-top:4px;}
  #build .blk:before{top:24px; bottom:24px;}
  #build .blk:first-child:before{top:6px;}
}
/* ===== v56c：收尾微调 ===== */

/* 1) 侧栏高亮盒保留彩色描边（不跟随全站"去描边"） */
.side .cta-mini{border-color:#dbe4ff; box-shadow:none;}

/* 2) 表单控件：白面 + 极轻描边，聚焦时才亮起来 */
.fld input,.fld select,.fld textarea{border-color:rgba(15,23,42,.07);
  box-shadow:0 1px 2px rgba(15,23,42,.04);}
.fld input:focus,.fld select:focus,.fld textarea:focus{border-color:var(--pri);
  box-shadow:0 0 0 3px rgba(36,80,216,.14);}

/* 3) 新闻列表：缩略图放大，二维列表不再显空 */
#news .nitem{padding:18px 0; gap:18px;}
#news .nitem .thumb{width:112px; height:78px; border-radius:10px;}
#news .nitem .tx h4{font-size:14.5px;}

/* 4) 参数表表头随页面底色走 */
.spec-tbl th{background:#eef1f6;}
/* ===== v57：渐变纸面 · 动态光效 · 零图标（OpenRouter 式静默版式） ===== */

/* ---------- 0) 卡片去图标后的排版（HTML 里的 .ico 已删，这里兜底隐藏） ---------- */
.blk .ico{display:none;}
.blk{padding:34px 26px 30px;}
.blk h3{font-size:21px; letter-spacing:-.015em; margin:0 0 7px;}
.blk .tagline{font-size:13px; margin-bottom:14px;}
.blk p{font-size:14.5px; line-height:1.85;}

/* ---------- 1) 纸面：静态底 + 一层 fixed 缓慢漂移的彩色网格光晕 ---------- */
html{background:#e9edf5;}
body{background:transparent;}
body:before{
  content:""; position:fixed; inset:-12% -8%; z-index:-1; pointer-events:none;
  background:
    radial-gradient(50% 40% at 8% 0%, rgba(37,99,235,.20), rgba(255,255,255,0) 68%),
    radial-gradient(44% 36% at 97% 6%, rgba(14,159,110,.17), rgba(255,255,255,0) 66%),
    radial-gradient(50% 44% at 88% 100%, rgba(124,58,237,.16), rgba(255,255,255,0) 68%),
    radial-gradient(38% 32% at 20% 58%, rgba(36,80,216,.08), rgba(255,255,255,0) 68%);
  animation:meshDrift 32s ease-in-out infinite alternate;
}
@keyframes meshDrift{
  from{transform:translate3d(0,0,0) scale(1);}
  to{transform:translate3d(-2.4%,2%,0) scale(1.10);}
}

/* ---------- 2) 白面：不再是死白，改成「上白下灰 + 两处极淡色彩」 ---------- */
.sec-alt{isolation:isolate; position:relative;
  background:linear-gradient(180deg,rgba(255,255,255,.965) 0%,rgba(250,252,255,.90) 48%,rgba(244,248,253,.94) 100%);}
.sec-alt:before{content:""; position:absolute; inset:0; z-index:-1; pointer-events:none;
  background:
    radial-gradient(56% 38% at 88% 0%, rgba(37,99,235,.10), rgba(255,255,255,0) 70%),
    radial-gradient(48% 34% at 2% 100%, rgba(14,159,110,.09), rgba(255,255,255,0) 70%);}
#cases{background:linear-gradient(180deg,rgba(246,249,253,.94) 0%,rgba(255,255,255,.94) 34%,rgba(250,252,255,.96) 100%);}

/* ---------- 3) 内页页头：极光 + 细网纹，两处都在缓慢移动 ---------- */
.pagehero{position:relative; isolation:isolate; overflow:hidden; border-bottom-color:transparent;
  background:linear-gradient(155deg,#e2eafb 0%,#eef2f8 44%,#e2f1ea 100%);}
.pagehero:before{content:""; position:absolute; inset:-55% -12% auto -12%; height:190%; z-index:-1;
  pointer-events:none; filter:blur(8px);
  background:
    radial-gradient(36% 44% at 16% 34%, rgba(37,99,235,.34), rgba(255,255,255,0) 64%),
    radial-gradient(32% 40% at 80% 22%, rgba(14,159,110,.28), rgba(255,255,255,0) 64%),
    radial-gradient(30% 38% at 52% 90%, rgba(124,58,237,.20), rgba(255,255,255,0) 64%);
  animation:aurora 24s ease-in-out infinite alternate;}
.pagehero:after{content:""; position:absolute; inset:0; z-index:-1; pointer-events:none; opacity:.55;
  background-image:linear-gradient(rgba(15,23,42,.055) 1px,rgba(0,0,0,0) 1px),
                   linear-gradient(90deg,rgba(15,23,42,.055) 1px,rgba(0,0,0,0) 1px);
  background-size:48px 48px;
  -webkit-mask-image:linear-gradient(180deg,#000,rgba(0,0,0,0) 86%);
          mask-image:linear-gradient(180deg,#000,rgba(0,0,0,0) 86%);
  animation:gridSlide 30s linear infinite;}
@keyframes aurora{
  0%{transform:translate3d(-3%,0,0) scale(1.02);}
  50%{transform:translate3d(4%,-2%,0) scale(1.12);}
  100%{transform:translate3d(-2%,2%,0) scale(1.05);}
}
@keyframes gridSlide{from{background-position:0 0,0 0;} to{background-position:48px 48px,48px 48px;}}

/* ---------- 4) 深墨锚点段：呼吸光 + 噪点，让深色不再是一块死黑 ---------- */
.sec-ink{position:relative; isolation:isolate; overflow:hidden;
  background:linear-gradient(170deg,#080e1c 0%,#0e1c34 52%,#0a1526 100%);}
.sec-ink:before{content:""; position:absolute; inset:-40% -10% auto -10%; height:180%; z-index:-1;
  pointer-events:none;
  background:
    radial-gradient(32% 42% at 12% 24%, rgba(59,130,246,.42), rgba(0,0,0,0) 66%),
    radial-gradient(28% 38% at 88% 30%, rgba(16,185,129,.30), rgba(0,0,0,0) 64%),
    radial-gradient(30% 40% at 58% 96%, rgba(139,92,246,.32), rgba(0,0,0,0) 66%);
  animation:aurora 28s ease-in-out infinite alternate-reverse;}
.sec-ink:after{content:""; position:absolute; inset:0; z-index:-1; pointer-events:none; opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");}

/* ---------- 5) 首屏：底图缓推 + 网线呼吸 + 指针光晕 + 标注点浮动 + 主标题流光 ---------- */
.hero2 .bgimg img{animation:heroPan 36s ease-in-out infinite alternate;}
@keyframes heroPan{
  from{transform:scale(1.02) translate3d(0,0,0);}
  to{transform:scale(1.10) translate3d(-1.6%,-1.3%,0);}
}
.hero2 .netlines{animation:netPulse 9s ease-in-out infinite;}
@keyframes netPulse{0%,100%{opacity:.30;} 50%{opacity:.62;}}
.hero2:after{content:""; position:absolute; inset:0; z-index:2; pointer-events:none; opacity:0;
  transition:opacity .5s ease;
  background:radial-gradient(460px 460px at var(--mx,52%) var(--my,44%), rgba(56,120,255,.22), rgba(255,255,255,0) 70%);}
.hero2:hover:after{opacity:1;}
.pin{animation:floatY 8s ease-in-out infinite;}
.hero2 > .pin:nth-of-type(4){animation-delay:-.9s;}
.hero2 > .pin:nth-of-type(5){animation-delay:-2.1s;}
.hero2 > .pin:nth-of-type(6){animation-delay:-3.3s;}
.hero2 > .pin:nth-of-type(7){animation-delay:-4.5s;}
.hero2 > .pin:nth-of-type(8){animation-delay:-5.7s;}
.hero2 > .pin:nth-of-type(9){animation-delay:-6.9s;}
@keyframes floatY{0%,100%{transform:translateY(0);} 50%{transform:translateY(-8px);}}
h1 .g{background-size:230% 100%; animation:sheen 9s ease-in-out infinite;}
@keyframes sheen{0%,100%{background-position:0% 50%;} 50%{background-position:100% 50%;}}

/* ---------- 6) 卡片：白面渐变 + 按赛道着色的投影；深墨卡改用淡数字做锚点 ---------- */
.card,.blk,.acard,.ccard,.case,.logobox,.licbox,.side .box,.tl-item .hd{
  background-image:linear-gradient(180deg,#ffffff 0%,#fafcff 100%); border-radius:16px;}
.sec-ink .blk{background-image:linear-gradient(180deg,rgba(255,255,255,.085),rgba(255,255,255,.028));}
.blk:hover{box-shadow:0 2px 8px rgba(15,23,42,.06), 0 30px 54px -24px rgba(36,80,216,.42);}
.blk.b2:hover{box-shadow:0 2px 8px rgba(15,23,42,.06), 0 30px 54px -24px rgba(14,159,110,.42);}
.blk.b3:hover{box-shadow:0 2px 8px rgba(15,23,42,.06), 0 30px 54px -24px rgba(124,58,237,.42);}
.sec-ink .blk:hover{box-shadow:0 0 0 1px rgba(255,255,255,.14), 0 26px 60px -26px rgba(56,120,255,.60);}
.sec-ink .three > .blk:after{content:"01"; position:absolute; right:22px; top:14px; pointer-events:none;
  font-size:64px; font-weight:800; line-height:1; letter-spacing:-.05em;
  color:rgba(255,255,255,.055); font-variant-numeric:tabular-nums; transition:.4s;}
.sec-ink .three > .blk.b2:after{content:"02";}
.sec-ink .three > .blk.b3:after{content:"03";}
.sec-ink .three > .blk:hover:after{color:rgba(255,255,255,.12);}
.logobox{position:relative; overflow:hidden;}
.logobox:after{content:""; position:absolute; top:-30%; left:-140%; width:60%; height:160%;
  background:linear-gradient(100deg,rgba(255,255,255,0),rgba(120,160,255,.16),rgba(255,255,255,0));
  transform:skewX(-18deg); transition:left .7s cubic-bezier(.4,0,.2,1); pointer-events:none;}
.logobox:hover:after{left:140%;}
.logobox img{filter:saturate(1); transition:.3s;}
.logobox:hover img{filter:saturate(1.06) contrast(1.04);}

/* ---------- 7) 章节标题：渐层墨色 + 彩色短横线 ---------- */
.sec-head h2{font-size:46px; letter-spacing:-.032em;}
.sec-head .kicker:before{background:linear-gradient(90deg,var(--pri),var(--green) 60%,var(--ai));}
@supports ((-webkit-background-clip:text) or (background-clip:text)){
  .sec-head h2{background:linear-gradient(176deg,#070d1a 0%,#1b2b47 62%,#33507f 100%);
    -webkit-background-clip:text; background-clip:text; color:transparent;}
  .sec-ink .sec-head h2{background:linear-gradient(176deg,#ffffff 0%,#dbe6fb 62%,#9fbcf0 100%);
    -webkit-background-clip:text; background-clip:text; color:transparent;}
  .pagehero h1{background:linear-gradient(102deg,#070d1a 0%,#1b3f92 58%,#0a6b52 100%);
    -webkit-background-clip:text; background-clip:text; color:transparent;}
}

/* ---------- 8) 按钮与分段控件：流光扫过 ---------- */
.btn{position:relative; overflow:hidden;}
.btn:after{content:""; position:absolute; top:-25%; left:-135%; width:55%; height:150%; pointer-events:none;
  background:linear-gradient(100deg,rgba(255,255,255,0),rgba(255,255,255,.44),rgba(255,255,255,0));
  transform:skewX(-18deg); transition:left .62s cubic-bezier(.4,0,.2,1);}
.btn:hover:after{left:135%;}
.tab.on{background:linear-gradient(135deg,#2450d8,#4a74ee); border-color:transparent;
  box-shadow:0 8px 20px -8px rgba(36,80,216,.75);}
.btn-pri{background:linear-gradient(150deg,#0d1730,#182a4c);}
.btn-pri:hover{background:linear-gradient(150deg,#182a4c,#26406e);}
.cta .btn-pri{background:linear-gradient(150deg,#ffffff,#e6ecf7);}
.cta .btn-pri:hover{background:linear-gradient(150deg,#eef2fa,#dbe4f4);}

/* ---------- 9) 闭环流程条：箭头呼吸 + 卡片底渐变 ---------- */
.lfa{animation:arrowFlow 2.8s ease-in-out infinite;}
@keyframes arrowFlow{0%,100%{transform:translateX(0); opacity:.5;} 50%{transform:translateX(6px); opacity:1;}}
.lf{background:linear-gradient(180deg,#ffffff,rgba(247,250,253,.6));}
.sec-ink .lf{background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,.01));}
.sec-ink .lf.c1 .h{text-shadow:0 0 22px rgba(110,168,255,.55);}
.sec-ink .lf.c2 .h{text-shadow:0 0 22px rgba(61,219,164,.55);}
.sec-ink .lf.c3 .h{text-shadow:0 0 22px rgba(177,140,251,.55);}
.sec-ink .lf.c4 .h{text-shadow:0 0 22px rgba(255,162,77,.55);}

/* ---------- 10) 能力底座数据带 ---------- */
.qc{background-image:linear-gradient(180deg,#ffffff,#f8fbff);}
.qc .num{background:linear-gradient(170deg,#0b1220,#25395e);
  -webkit-background-clip:text; background-clip:text; color:transparent;}
.kf.solo{background:linear-gradient(120deg,#e6eeff 0%,#eef2f8 44%,#e3f3ec 100%);}

/* ---------- 11) CTA 与页脚：深色里的旋转光晕 ---------- */
.cta{position:relative; isolation:isolate; overflow:hidden;
  background:linear-gradient(150deg,#070d1b 0%,#122036 52%,#0b2033 100%);}
.cta:after{content:""; position:absolute; inset:-70% -25%; z-index:-1; pointer-events:none; opacity:.55;
  filter:blur(34px);
  background:conic-gradient(from 0deg,rgba(59,130,246,.34),rgba(0,0,0,0) 28%,
    rgba(16,185,129,.26) 56%,rgba(0,0,0,0) 82%,rgba(59,130,246,.34));
  animation:spin 46s linear infinite;}
@keyframes spin{to{transform:rotate(360deg);}}
footer.site{position:relative; isolation:isolate; overflow:hidden;
  background:linear-gradient(180deg,#080e1c 0%,#0d1a2f 58%,#0a1226 100%);}
footer.site:before{content:""; position:absolute; inset:auto -12% -55% -12%; height:150%; z-index:-1;
  pointer-events:none;
  background:
    radial-gradient(36% 54% at 22% 100%, rgba(37,99,235,.38), rgba(0,0,0,0) 68%),
    radial-gradient(32% 50% at 78% 100%, rgba(14,159,110,.28), rgba(0,0,0,0) 68%);
  animation:aurora 30s ease-in-out infinite alternate;}

/* ---------- 12) 顶部滚动进度条（site.js 注入） ---------- */
.scrollbar-top{position:fixed; left:0; top:0; height:2px; width:100%; z-index:70;
  transform:scaleX(0); transform-origin:0 50%; pointer-events:none;
  background:linear-gradient(90deg,#2450d8,#0e9f6e 52%,#7c3aed);
  box-shadow:0 0 12px rgba(56,120,255,.55);}

/* ---------- 13) 滚动进场（无 JS 时不会有 .rv-on，内容照常可见） ---------- */
html.rv-on .rv{opacity:0;}
html.rv-on .rv.in{opacity:1; animation:rvUp .72s cubic-bezier(.22,.61,.36,1) backwards;}
@keyframes rvUp{from{opacity:0; transform:translateY(24px);} to{opacity:1; transform:translateY(0);}}

/* ---------- 14) 响应式跟随 ---------- */
@media (max-width:1080px){
  .sec-head h2{font-size:34px;}
  .sec-ink .three > .blk:after{font-size:54px;}
}
@media (max-width:700px){
  section{padding:68px 0;}
  body:before{inset:-6% -4%;}
  .blk{padding:28px 22px 24px;}
  .blk h3{font-size:19px;}
  .sec-head h2{font-size:27px;}
  .hero2 .bgimg img{animation:none;}
  .hero2 .pin{animation:none;}
  .hero2:after{display:none;}
  .sec-ink:after{display:none;}
  .sec-ink .three > .blk:after{font-size:46px; right:16px; top:12px;}
  .lfa{animation:none;}
  .cta:after{animation-duration:80s;}
  footer.site:before{animation-duration:60s;}
}

/* ---------- 15) 尊重系统"减少动效" ---------- */
@media (prefers-reduced-motion:reduce){
  *,*:before,*:after{animation:none !important; transition:none !important;}
  html.rv-on .rv{opacity:1 !important;}
  .hero2:after{display:none;}
}
/* ===== v57b：把底色差与"光"再拉开一档 ===== */

/* 1) 纸面网格光晕加深 */
body:before{
  background:
    radial-gradient(50% 40% at 8% 0%, rgba(37,99,235,.26), rgba(255,255,255,0) 68%),
    radial-gradient(44% 36% at 97% 6%, rgba(14,159,110,.22), rgba(255,255,255,0) 66%),
    radial-gradient(50% 44% at 88% 100%, rgba(124,58,237,.21), rgba(255,255,255,0) 68%),
    radial-gradient(38% 32% at 20% 58%, rgba(36,80,216,.10), rgba(255,255,255,0) 68%);
}

/* 2) 首屏：暖冷对置的渐变 + 缓慢呼吸的背景光 */
.hero2{background:linear-gradient(118deg,#dde8fb 0%,#eef2f8 46%,#e4f1ea 100%);}
.hero2:before{content:""; position:absolute; top:-30%; left:-14%; width:70%; height:150%; z-index:1;
  pointer-events:none; filter:blur(28px); opacity:.72;
  background:radial-gradient(closest-side,rgba(118,168,255,.36),rgba(255,255,255,0) 72%);
  animation:heroGlow 20s ease-in-out infinite alternate;}
@keyframes heroGlow{
  from{transform:translate3d(0,0,0) scale(1);}
  to{transform:translate3d(7%,-4%,0) scale(1.15);}
}

/* 3) 新闻段单独一档冷色 */
#news{background:linear-gradient(180deg,rgba(237,243,252,.97) 0%,rgba(250,252,255,.93) 52%,rgba(241,246,253,.96) 100%);}

/* 4) 三大赛道卡 hover：彩条加粗并发光 */
.sec-ink .three > .blk:before{transition:height .25s ease, box-shadow .25s ease;}
.sec-ink .three > .blk:hover:before{height:5px;}
.sec-ink .three > .blk.b1:hover:before{box-shadow:0 0 20px rgba(37,99,235,.70);}
.sec-ink .three > .blk.b2:hover:before{box-shadow:0 0 20px rgba(14,159,110,.70);}
.sec-ink .three > .blk.b3:hover:before{box-shadow:0 0 20px rgba(124,58,237,.70);}

/* 5) 章节标题下一条渐隐细线 */
.sec-head:after{content:""; display:block; width:100%; height:1px; margin-top:28px;
  background:linear-gradient(90deg,rgba(36,80,216,.34),rgba(14,159,110,.20) 34%,rgba(0,0,0,0) 82%);}
.sec-ink .sec-head:after{background:linear-gradient(90deg,rgba(140,180,255,.50),rgba(60,220,170,.28) 34%,rgba(0,0,0,0) 82%);}
.pagehero .kicker:after{content:"";}

@media (max-width:700px){
  .sec-head:after{margin-top:20px;}
  .hero2:before{opacity:.5;}
}

/* ===== v58：首屏滚动视差 —— 底图 / 网线 / 标注点 / 文案分层错开 =====
   --py-* 由 site.js 追加层写入 .hero2 的行内样式；无 JS 或减少动效时回落到 0px，
   即"视差关闭但版式不变"。整段删除即可完全回退到 v57。 */

.hero2 .bgimg{
  transform:translate3d(0,var(--py-bg,0px),0) scale(var(--pz-bg,1));
  transform-origin:50% 42%;
  will-change:transform;
}
.hero2 .netlines{
  transform:translate3d(0,var(--py-net,0px),0);
  will-change:transform;
}

/* 标注点：用独立的 translate 属性叠加位移，不动 floatY 的 transform */
.hero2 > .pin{
  translate:0 calc(var(--py-pin,0px) * var(--pr,.12));
  will-change:translate;
}
.hero2 > .pin:nth-of-type(4){--pr:.22;}
.hero2 > .pin:nth-of-type(5){--pr:.19;}
.hero2 > .pin:nth-of-type(6){--pr:.17;}
.hero2 > .pin:nth-of-type(7){--pr:.15;}
.hero2 > .pin:nth-of-type(8){--pr:.13;}
.hero2 > .pin:nth-of-type(9){--pr:.11;}

.hero2-copy{will-change:transform,opacity;}
.hero-map{will-change:transform;}

/* 低动效偏好：连静态的 scale 一并撤掉，回到原始版位 */
@media (prefers-reduced-motion:reduce){
  .hero2 .bgimg{transform:none;}
  .hero2 .netlines{transform:none;}
  .hero2 > .pin{translate:none;}
}

/* ===== v59：指针光层 —— 有惯性的自然光（重做 v57 的手电筒式蓝色圆斑） =====
   改的原因：旧 .hero2:after 的位置 = 指针原始坐标、逐帧硬跟（零延迟），
   看起来像"贴在指针上的贴纸"；而且每个 mousemove 都做一次 getBoundingClientRect。
   新做法四件事：
     1) 位移交给"临界阻尼弹簧"（每层时间常数不同：内核 0.10s / 环境晕 0.20s / 弥散光 0.30s），
        有质量、会追、会停；层与层之间的拖尾差就是体积感；
        停下后残余不足 0.5px 时直接对齐收尾，动画干净结束、不留"永远差一点点"的尾巴；
     2) 只提亮、不染色：浅纸面用"白核 + 冷晕"，实景图上再叠一层暖色聚光，
        深墨段才用蓝色辉光 —— 暗处才是光的家；
     3) 光斑由 site.js 注入（定尺寸圆 + 预栅格化径向渐变），每帧只改 transform，
        走合成器，不重绘、不重排；指针停下即收敛停表；
     4) 首屏另加指针视差：底图 5px / 网线 9px / 标注点 14px，反向且比光更慢，
        让指针与"空间"发生关系，而不是与屏幕发生关系。
   无 JS / 粗指针 / prefers-reduced-motion：site.js 不注入 .ptr，版式与 v58 逐像素一致。
   回退：删除本段 + site.js 末尾 v59 段，并恢复 .pre59/site.js。 */

/* 0) 关掉 v57 的旧光斑：只覆盖效果，原规则留着，便于整段回退 */
.hero2:after{display:none;}

/* 1) 光层容器（注入）：只吃指针事件，不参与布局、不挡交互 */
.ptr{position:absolute; inset:0; pointer-events:none;
  opacity:0; transition:opacity .62s cubic-bezier(.22,.61,.36,1);}
.ptr.on{opacity:1; transition-duration:.24s;}
.ptr > i{position:absolute; left:0; top:0; display:block; border-radius:50%;
  transform:translate3d(-4000px,-4000px,0);}
/* 把合成层推迟到"灯亮时"才提升：静止态页面不因为多出 7 个层而改变光栅抖动，
   于是"没有指针进来"时与 v58 逐像素一致；亮着时位移照样走合成器。 */
.ptr.on > i{will-change:transform;}

/* 2) 首屏（浅纸面 + 实景图）
      a = 高光核（白，负责"提亮"）  b = 环境晕（冷蓝，负责"体积"）  c = 弥散光（最慢最淡，负责"纵深"） */
.hero2 > .ptr{z-index:2;}
.hero2 > .ptr > i.a{width:440px; height:440px; margin:-220px 0 0 -220px;
  background:radial-gradient(closest-side,rgba(255,255,255,.58),rgba(255,255,255,.22) 44%,rgba(255,255,255,0) 76%);}
.hero2 > .ptr > i.b{width:940px; height:940px; margin:-470px 0 0 -470px;
  background:radial-gradient(closest-side,rgba(70,124,255,.13),rgba(70,124,255,0) 72%);}
.hero2 > .ptr > i.c{width:1240px; height:1240px; margin:-620px 0 0 -620px;
  background:radial-gradient(closest-side,rgba(34,116,236,.09),rgba(34,116,236,0) 78%);}

/* 2b) 实景图上的聚光：容器在 .bgimg 内部，天然被图片区域裁掉，光真的"照到东西" */
.hero2 .bgimg > .ptr{z-index:0;}
.hero2 .bgimg > .ptr > i.a{width:520px; height:520px; margin:-260px 0 0 -260px;
  background:radial-gradient(closest-side,rgba(255,255,255,.34),rgba(255,255,255,0) 74%);}
.hero2 .bgimg > .ptr > i.b{width:900px; height:900px; margin:-450px 0 0 -450px;
  background:radial-gradient(closest-side,rgba(255,236,200,.16),rgba(255,236,200,0) 76%);}

/* 3) 内页页头（26 页）：一白核 + 一冷晕，很淡，不抢标题 */
.pagehero > .ptr{z-index:-1;}
.pagehero > .ptr > i.a{width:420px; height:420px; margin:-210px 0 0 -210px;
  background:radial-gradient(closest-side,rgba(255,255,255,.42),rgba(255,255,255,0) 74%);}
.pagehero > .ptr > i.b{width:960px; height:960px; margin:-480px 0 0 -480px;
  background:radial-gradient(closest-side,rgba(56,120,255,.10),rgba(56,120,255,0) 74%);}

/* 4) 深墨锚点段（index / business / en）：暗处才是光的家，这一档给足 */
.sec-ink > .ptr{z-index:-1;}
.sec-ink > .ptr > i.a{width:600px; height:600px; margin:-300px 0 0 -300px;
  background:radial-gradient(closest-side,rgba(152,196,255,.20),rgba(152,196,255,0) 74%);}
.sec-ink > .ptr > i.b{width:1280px; height:1280px; margin:-640px 0 0 -640px;
  background:radial-gradient(closest-side,rgba(92,148,255,.13),rgba(92,148,255,0) 76%);}

/* 5) 首屏指针视差：与 v58 的滚动视差共用同一条 transform，两套变量各走各的 */
.hero2 .bgimg{overflow:hidden;
  transform:translate3d(var(--pbx,0px),calc(var(--py-bg,0px) + var(--pby,0px)),0) scale(var(--pz-bg,1));}
.hero2 .netlines{
  transform:translate3d(var(--pnx,0px),calc(var(--py-net,0px) + var(--pny,0px)),0);}
.hero2 > .pin{
  translate:var(--ppx,0px) calc(var(--py-pin,0px) * var(--pr,.12) + var(--ppy,0px));}

/* 6) 粗指针 / 没有 hover 的设备：光层不显示（JS 本来也不会注入） */
@media (hover:none),(pointer:coarse){
  .ptr{display:none;}
}

/* 7) 低动效偏好：撤掉光层与指针视差。
      重述 v58 的复位 —— 本段在 v58 之后，必须自己再兜一次，否则上面的 transform 会覆盖它。 */
@media (prefers-reduced-motion:reduce){
  .ptr{display:none;}
  .hero2 .bgimg{transform:none;}
  .hero2 .netlines{transform:none;}
  .hero2 > .pin{translate:none;}
}

/* ===== v60 font: Poppins + 繁简英分栈 ===== */
@font-face{font-family:"Poppins";src:url("fonts/poppins-400.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Poppins";src:url("fonts/poppins-500.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Poppins";src:url("fonts/poppins-600.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"Poppins";src:url("fonts/poppins-700.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Poppins";src:url("fonts/poppins-800.woff2") format("woff2");font-weight:800;font-style:normal;font-display:swap}
body{font-family:"Poppins","PingFang SC","Microsoft YaHei","Hiragino Sans GB","Source Han Sans SC","Noto Sans SC",-apple-system,"Segoe UI",sans-serif}
html[lang="zh-HK"] body{font-family:"Poppins","PingFang TC","Microsoft JhengHei","Noto Sans TC","Source Han Sans TC",-apple-system,"Segoe UI",sans-serif}
html[lang="en"] body{font-family:"Poppins",-apple-system,"Segoe UI","Helvetica Neue",Arial,sans-serif}

/* ===== v60b 英文版排版微调 ===== */
html[lang="en"] .logo .cn{display:none}
html[lang="en"] .logo .en{display:block; font-size:13px; font-weight:700; letter-spacing:.04em; text-transform:none; color:var(--ink);}
html[lang="en"] h1{font-size:42px; letter-spacing:-.022em;}
html[lang="en"] h1 .h1s{font-size:26px; line-height:1.45;}
@media (max-width:1080px){
  html[lang="en"] h1{font-size:32px;}
  html[lang="en"] h1 .h1s{font-size:21px;}
}
@media (max-width:700px){
  html[lang="en"] .logo .en{font-size:12px;}
  html[lang="en"] h1{font-size:26px;}
  html[lang="en"] h1 .h1s{font-size:17px;}
}

/* v60c 英文数字卡对齐 */
html[lang="en"] .qc .num{display:flex; align-items:baseline; flex-wrap:wrap; gap:0 6px; max-width:100%;}
html[lang="en"] .qc .num small{margin-left:0; white-space:nowrap;}

/* ===== v61 投资者关系（公告列表） ===== */
.irsec{padding:64px 0 86px;}
.irbar{display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin:0 0 26px;}
.irbar .lb{font-size:11px; font-weight:800; letter-spacing:.14em; color:var(--ink4); text-transform:uppercase; margin-right:4px;}
.irbar .cnt{margin-left:auto; font-size:12.5px; color:var(--ink4); letter-spacing:.02em;}
.iryr{font:inherit; font-size:13px; color:var(--ink2); background:#fff; border:1px solid var(--line);
  border-radius:8px; padding:7px 14px; cursor:pointer; transition:.16s; font-variant-numeric:tabular-nums;}
.iryr:hover{border-color:var(--ink3); color:var(--ink);}
.iryr.on{background:var(--ink); border-color:var(--ink); color:#fff; font-weight:600;}
.irtable{border-top:1.5px solid var(--ink);}
.irtr,.irlist a{display:grid; grid-template-columns:108px minmax(0,1fr) 50px; gap:22px; align-items:center;}
.irth{border-bottom:1px solid var(--line); padding:11px 2px; font-size:10.5px; font-weight:800;
  letter-spacing:.14em; color:var(--ink4); text-transform:uppercase;}
.irlist{list-style:none; margin:0; padding:0;}
.irlist li{border-bottom:1px solid var(--line2);}
.irlist a{padding:16px 2px; transition:background .16s, color .16s;}
.irlist a:hover{background:#f7f9fc;}
.irlist .d{font-size:12.5px; color:var(--ink4); font-variant-numeric:tabular-nums; letter-spacing:.03em;}
.irlist .t{font-size:15px; color:var(--ink); line-height:1.65;}
.irlist a:hover .t{color:var(--pri);}
.irlist .f{font-size:10px; font-weight:800; letter-spacing:.1em; color:var(--ink4);
  border:1px solid var(--line); border-radius:5px; padding:3px 0; text-align:center;}
.irlist a:hover .f{border-color:var(--pri); color:var(--pri);}
.irpage{display:flex; gap:6px; flex-wrap:wrap; align-items:center; margin:30px 0 0;}
.irpn{font:inherit; font-size:13px; min-width:37px; height:37px; color:var(--ink2); background:#fff;
  border:1px solid var(--line); border-radius:8px; cursor:pointer; transition:.16s; font-variant-numeric:tabular-nums;}
.irpn:hover{border-color:var(--ink3); color:var(--ink);}
.irpn.on{background:var(--pri); border-color:var(--pri); color:#fff; font-weight:600;}
.irnote{margin:28px 0 0; font-size:12.5px; color:var(--ink4); line-height:1.85;}
html[lang="en"] .irtable .t{font-size:14.5px;}
@media (max-width:760px){
  .irsec{padding:44px 0 66px;}
  .irth{display:none;}
  .irlist a{grid-template-columns:minmax(0,1fr) 50px; gap:6px 14px; padding:14px 2px;}
  .irlist .d{grid-column:1; grid-row:1; font-size:11.5px;}
  .irlist .t{grid-column:1; grid-row:2; font-size:14px;}
  .irlist .f{grid-column:2; grid-row:1 / span 2;}
}

/* ===== v62 动态公告列表 / 新闻 / 两列栅格 ===== */
.grid2{display:grid; grid-template-columns:repeat(2,1fr); gap:20px;}
.ntag.pin{background:#fff7ed; color:var(--tok);}
.news-empty{font-size:13.5px; color:var(--ink4); padding:24px 0; margin:0;}
.irtable .irtr{grid-template-columns:136px minmax(0,1fr) 112px;}
.irlist .irrowgrid{
  display:grid; grid-template-columns:136px minmax(0,1fr) 112px; gap:22px;
  align-items:center; padding:16px 2px; transition:background .16s;
}
.irlist .irrow:hover .irrowgrid{background:#f7f9fc;}
.irlist .irrowgrid a{
  display:inline; min-width:0; padding:0; background:none; border:0; border-radius:0;
  transition:color .16s;
}
.irlist .irrowgrid a:hover{background:none;}
.irlist .irrowgrid .d{
  font-size:12.5px; color:var(--ink4); font-variant-numeric:tabular-nums; letter-spacing:.03em;
}
.irlist .irrowgrid .t{
  display:flex; flex-direction:column; align-items:flex-start; gap:3px;
  font-size:15px; color:var(--ink); line-height:1.65; min-width:0;
}
.irlist .irrowgrid .ir-title{font-size:15px; color:var(--ink); line-height:1.65;}
.irlist .irrowgrid .ir-title:hover{color:var(--pri);}
.ir-cat{font-size:11.5px; color:var(--ink4); line-height:1.5;}
.irpin{
  display:inline-block; font-size:10px; font-weight:700; color:var(--pri);
  background:var(--pri-l); border-radius:4px; padding:1px 6px;
}
.irlist .irrowgrid .f{
  display:flex; flex-direction:column; gap:4px; align-items:stretch;
  border:0; padding:0; text-align:center; font-size:inherit;
}
.irlist .irrowgrid .f a{
  display:block; font-size:10px; font-weight:800; letter-spacing:.1em; color:var(--ink4);
  border:1px solid var(--line); border-radius:5px; padding:3px 0; text-align:center;
}
.irlist .irrowgrid .f a:hover{border-color:var(--pri); color:var(--pri);}
.ir-empty{color:var(--ink4); font-size:14px; padding:24px 0;}
@media (max-width:760px){
  .irlist .irrowgrid{grid-template-columns:minmax(0,1fr) 70px; gap:6px 14px; padding:14px 2px;}
  .irlist .irrowgrid .d{grid-column:1; grid-row:1; font-size:11.5px;}
  .irlist .irrowgrid .t{grid-column:1; grid-row:2; font-size:14px;}
  .irlist .irrowgrid .f{grid-column:2; grid-row:1 / span 2;}
  .irlist .irrowgrid .ir-title{font-size:14px;}
}
@media (max-width:460px){
  .grid2{grid-template-columns:1fr;}
  .irlist .irrowgrid{grid-template-columns:minmax(0,1fr) 64px;}
}
.qual-row.two{grid-template-columns:repeat(2,1fr);}
@media (max-width:760px){.qual-row.two{grid-template-columns:1fr;}}
.pagehero p a{color:var(--pri); font-weight:600; text-decoration:underline; text-underline-offset:3px;}
.pagehero p a:hover{color:var(--ink2);}
