
  *{box-sizing:border-box}

  html,body{margin:0; padding:0}

  html{-webkit-text-size-adjust:100%; text-size-adjust:100%}

  body{background:var(--bg-0); color:var(--ink); font-family:var(--font); -webkit-font-smoothing:antialiased}

  #map{display:block; width:100%; height:100%}

  .ov > *{pointer-events:auto}

  .eyebrow i{width:6px;height:6px;border-radius:50%;background:var(--cyan); box-shadow:0 0 10px var(--cyan); animation:blink 2s infinite}

  @keyframes blink{0%,100%{opacity:1}50%{opacity:.25}}

  h1 em{font-style:normal; color:var(--gold)}

  .legend div{display:flex; align-items:center; gap:7px}

  .legend i{width:9px;height:9px;border-radius:50%;display:inline-block}

  .lg-c{background:var(--gold); box-shadow:0 0 10px var(--gold)}

  .lg-n{background:var(--cyan); box-shadow:0 0 10px var(--cyan)}

  .lg-l{width:22px;height:2px;border-radius:2px;background:linear-gradient(90deg,var(--gold),var(--cyan))}

  .tip b{color:var(--muted); font-weight:600}


  /* 侧边装饰线 */
  .vline{position:absolute; left:5.5vw; top:calc(50% - 120px); width:2px; height:44px;
    background:linear-gradient(180deg,transparent,var(--cyan)); opacity:.6}

  @media (prefers-reduced-motion:reduce){
    .eyebrow i{animation:none}
  }

*{box-sizing:border-box}

html{scroll-behavior:smooth}

body{margin:0;font-family:"PingFang SC","Microsoft YaHei",system-ui,-apple-system,Segoe UI,sans-serif;
  background:var(--bg);color:var(--txt);-webkit-font-smoothing:antialiased;line-height:1.62}

a{color:inherit;text-decoration:none}

.hero{padding-top:54px}
            /* 让首屏内容避开固定导航 */
.hero{scroll-margin-top:52px}


/* NAV */
.nav{position:fixed;inset:0 0 auto 0;z-index:60;display:flex;align-items:center;gap:16px;
  padding:11px 26px;background:transparent}

.nav .brand{display:flex;align-items:center;gap:10px;font-weight:800;letter-spacing:.4px}

.nav .brand .dot{width:26px;height:26px;border-radius:8px;background:var(--grad);
  display:grid;place-items:center;color:#04101f;font-size:14px;font-weight:900}

.nav .brand b{font-size:16px}

.nav .brand span{color:var(--cyan);font-size:12px;font-weight:600;margin-left:2px}

.nav .links{margin-left:auto;display:flex;gap:4px;flex-wrap:wrap}

.nav .links a:hover{color:#fff;background:rgba(53,214,255,.12)}

/* 「联系我们」与其它导航项保持一致：无底色、同一文字色（2026-09-17 去掉 cta 渐变底） */

@media(max-width:780px){.nav .brand span{display:none}}


/* SECTIONS */
section.block{max-width:1180px;margin:0 auto;padding:80px 22px}

.sec-head{margin-bottom:32px}

.sec-head .k{color:var(--cyan);font-size:15px;letter-spacing:2px;font-weight:700}

.sec-head h2{font-size:40px;margin:8px 0 6px;font-weight:800}

.sec-head p{color:var(--muted);max-width:700px;margin:0;font-size:17px;line-height:1.8}

.grid{display:grid;gap:18px}

.g3{grid-template-columns:repeat(3,1fr)}

.g2{grid-template-columns:repeat(2,1fr)}

@media(max-width:900px){.g3,.g2{grid-template-columns:1fr 1fr}}

@media(max-width:620px){.g3,.g2{grid-template-columns:1fr}}

/* 卡片跨列修饰符：宽屏占 2 列；单列断点下必须还原 auto —— 否则 span 2 会在 1 列栅格中
   创建隐式列，把栅格撕成两列、首列被压成几十像素（资质页 AAA 卡片曾踩到） */
.span2{grid-column:span 2}
@media(max-width:620px){.span2{grid-column:auto}}

.card{background:var(--panel);border:1px solid var(--bd);border-radius:16px;padding:22px;
  transition:.25s;position:relative;overflow:hidden}

.card:hover{border-color:rgba(53,214,255,.5);transform:translateY(-3px)}

.card h3{margin:0 0 8px;font-size:21px}

.card p{margin:0;color:var(--muted);font-size:16px}

.card .ic{width:42px;height:42px;border-radius:11px;display:grid;place-items:center;
  background:rgba(53,214,255,.12);color:var(--cyan);font-size:19px;margin-bottom:13px}

.tagrow{display:flex;flex-wrap:wrap;gap:7px;margin-top:13px}

.tag{font-size:12px;padding:4px 10px;border-radius:20px;background:rgba(53,214,255,.1);
  color:var(--cyan);border:1px solid rgba(53,214,255,.2)}

.note{font-size:12px;color:#ffb86b;background:rgba(255,176,32,.08);
  border:1px dashed rgba(255,176,32,.35);padding:7px 11px;border-radius:8px;display:inline-block;margin-top:10px}


/* 合作项目 */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:28px}

.stats .s{background:var(--panel);border:1px solid var(--bd);border-radius:14px;padding:20px;text-align:center}

.stats .s b{display:block;font-size:30px;color:var(--cyan);font-weight:800;line-height:1.1}

.stats .s span{color:var(--muted);font-size:13px}

@media(max-width:620px){.stats{grid-template-columns:1fr 1fr}}

.tbl td.amt{color:var(--gold);font-weight:600}

.pill{padding:3px 9px;border-radius:20px;font-size:12px;display:inline-block}

.pill.gov{background:rgba(123,108,255,.15);color:#b3a8ff}

.pill.biz{background:rgba(255,176,32,.15);color:var(--gold)}


/* 企业形象占位 */
.shots{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:22px}

@media(max-width:780px){.shots{grid-template-columns:1fr 1fr}}

@media(max-width:480px){.shots{grid-template-columns:1fr}}

.shot b{color:var(--cyan);display:block;font-size:14px;margin-bottom:4px}


/* FOOTER */
footer{background:var(--bg2);border-top:1px solid var(--bd);padding:46px 22px 30px;margin-top:30px}

.foot{max-width:1180px;margin:0 auto;display:flex;flex-wrap:nowrap;justify-content:space-between;align-items:center;gap:clamp(24px,3vw,44px)}
.foot .col:not(.intro):not(.qr-col){flex:0 1 auto;min-width:0}

.foot .col a:hover{color:#fff}

/* 页脚品牌介绍区：LOGO 固定 64px（不再随右侧文字高度缩放，杜绝加载期尺寸跳动）+ 文字块（右），横向排列 */
.foot .intro{flex:0 1 440px; max-width:440px; min-width:0; display:flex; flex-direction:row; align-items:center; gap:16px}
.foot .intro .emblem{flex:0 0 64px; width:64px; height:64px; display:flex; align-items:center; justify-content:center}
.foot .intro .emblem img{width:64px; height:64px; max-width:64px; max-height:64px; aspect-ratio:1/1; display:block; object-fit:contain}
.foot .intro .txt{flex:1 1 auto; min-width:0}
.foot .intro .name{display:block; font-weight:800; font-size:17px; letter-spacing:.02em; margin:0 0 6px}
.foot .col.intro p{display:block; margin:0; line-height:1.7}

@media (max-width:780px){
  .foot .intro{gap:14px}
  .foot .intro .name{font-size:16px}
  .foot .col.intro p{display:block; margin:0}
}

/* 版权栏：整条水平居中，桌面/手机均居中，窄屏自动换行仍居中，不影响上方三栏布局 */
/* ⚠️ 选择器必须写 footer .bot：.bot 是 .foot 的兄弟节点（不在 .foot 内），旧写法 .foot .bot 永不匹配 → 版权栏一直未居中（2026-09-28 修复） */
footer .bot{width:100%;border-top:1px solid var(--bd);margin-top:26px;padding-top:16px;color:var(--muted);
  font-size:13px;display:flex;justify-content:center;align-items:center;flex-wrap:wrap;
  text-align:center;gap:4px 18px;line-height:1.9}

/* 页脚二维码列：与「网站介绍」「联系方式」同栏水平排布；二维码与文字说明在所在区域内水平+垂直居中；无投影
 * 说明：选择器带 .qr-col 提高特异性，压掉首页 hero 内联 `.qr-item img{box-shadow:...}` /
 *      `.qr-item{align-items:flex-start}` 泄漏到页脚的样式（两处同名 class 复用所致）。 */
.foot .qr-col{min-width:0; display:flex; align-items:center; justify-content:center}
.foot .qr-row{display:flex; gap:16px; align-items:flex-start; justify-content:center}
.foot .qr-col .qr-item{margin:0; min-width:0; display:flex; flex-direction:column; align-items:center; gap:0; text-align:center}
.foot .qr-col .qr-item img{width:92px; height:92px; border-radius:10px; background:#fff; border:1px solid #e4ebf4; display:block; box-shadow:none}
.foot .qr-col .qr-item figcaption{margin-top:8px; font-size:12.5px; line-height:1.4; color:var(--muted); text-align:center; white-space:normal}
@media (max-width:960px){ .foot{flex-direction:column; align-items:stretch; gap:24px} .foot .intro{flex:0 0 auto; max-width:none} .foot .qr-col{justify-content:flex-start} }
@media (max-width:480px){ .foot .qr-col .qr-item img{width:78px; height:78px} .foot .qr-row{gap:14px} }

  /* 子页首块避开固定导航 */
  body.subpage .block:first-of-type{padding-top:92px}


  /* 首页地图整屏：去掉导航占位 padding，画布绝对铺满 */
  .hero{padding-top:0}

  #map{position:absolute; inset:0; width:100%; height:100%}



/* 全站介绍性文字两端对齐（首行左起、整行两端撑齐、末行左对齐；标题/导航/KPI/按钮等单行元素不受影响） */
p,li,.note,.tip,.article p{text-align:justify;text-align-last:left;text-justify:inter-ideograph}


/* ==================================================================
   响应式优化（跨设备适配）2026-09-09
   1) 移动导航：汉堡按钮 + 右侧抽屉（替换原"直接隐藏导航项"的做法）
   2) 触控目标 ≥44px、间距/字号随视口缩放、防横向溢出与长词换行
   ================================================================== */
:root{--nav-h:58px}

html{-webkit-text-size-adjust:100%; text-size-adjust:100%}

img,svg,video,canvas,iframe{max-width:100%}
/* 图片已统一补 width/height 属性（消除 CLS）；此处兜底保证无显式高度的图仍按比例缩放 */
img{height:auto}

h1,h2,h3,h4,p,li,td,th,a,figcaption{overflow-wrap:anywhere}

[id]{scroll-margin-top:calc(var(--nav-h) + 14px)}
   /* 锚点跳转避开固定导航 */
.tbl-wrap{-webkit-overflow-scrolling:touch; overscroll-behavior-x:contain}

.scroll-hint{display:none}


/* --- 汉堡按钮（仅小屏显示） --- */
.nav-toggle{display:none; margin-left:auto; width:44px; height:44px; flex:0 0 auto;
  border:1px solid var(--bd); border-radius:12px; background:rgba(255,255,255,.08);
  cursor:pointer; padding:0; align-items:center; justify-content:center;
  flex-direction:column; gap:5px; -webkit-tap-highlight-color:transparent}

.nav-toggle span{display:block; width:20px; height:2px; border-radius:2px; background:var(--txt); transition:.25s}

.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}

.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}

.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

.nav-mask{position:fixed; inset:0; z-index:50; background:rgba(2,10,24,.55);
  opacity:0; visibility:hidden; transition:opacity .25s, visibility .25s}

.nav-mask.show{opacity:1; visibility:visible}

body.nav-open{overflow:hidden}


@media (max-width:900px){
  .nav{padding:8px 16px; gap:10px}
  .nav-toggle{display:flex}
  .nav .links{
    position:fixed; top:0; right:0; bottom:0; width:min(300px,84vw); height:100dvh;
    margin:0; padding:74px 16px 24px; z-index:5;
    display:flex; flex-direction:column; align-items:stretch; gap:6px;
    overflow-y:auto; -webkit-overflow-scrolling:touch;
    transform:translateX(102%); visibility:hidden; transition:transform .28s ease, visibility .28s;
    background:#041228; border-left:1px solid var(--bd);
    box-shadow:-12px 0 40px rgba(0,0,0,.45)}
  .nav .links.open{transform:none; visibility:visible}
  .nav .links a{min-height:46px; display:flex; align-items:center;
    font-size:17px; padding:12px 14px; border-radius:10px}
  body.subpage .nav .links{background:#fff; border-left-color:#dde6f1;
    box-shadow:-12px 0 40px rgba(23,43,77,.16)}
  body.subpage .nav-toggle{border-color:#dde6f1; background:#fff}
  body.subpage .nav-toggle span{background:#16273e}
}


/* --- 通用断点：平板 --- */
@media (max-width:900px){
  .stats{grid-template-columns:repeat(2,1fr)}
  .sec-head h2{font-size:clamp(26px,6.2vw,40px)}
  .sec-head p{font-size:16.5px}
}

/* --- 通用断点：手机 --- */
/* 触控基线：全站链接点击高度 ≥32px（桌面鼠标操作亦更易点中） */

.more-link a{display:inline-flex; align-items:center; min-height:32px; padding:4px 2px}

/* 触控友好：≤1024px（平板 / 触屏设备）点击区域 ≥44px */
@media (max-width:1024px){
  .foot .col p{min-height:34px; display:flex; align-items:center; margin:2px 0}
  .more-link a{display:inline-flex; align-items:center; min-height:44px; padding:8px 2px}
  .nav .links a{min-height:44px; display:flex; align-items:center}
}

@media (max-width:780px){
  section.block{padding:52px 18px}
  .sec-head{margin-bottom:24px}
  .card{padding:18px}
  .grid{gap:14px}
  .shots{gap:12px}
  .foot{flex-direction:column; gap:22px}
  .foot .col{max-width:none !important}
  .foot .col p{min-height:34px; display:flex; align-items:center; margin:2px 0}
  footer .bot{flex-direction:column; gap:6px; align-items:center; text-align:center}
  .more-link{text-align:left; margin-top:20px}
  .more-link a{display:inline-flex; align-items:center; min-height:44px; padding:8px 2px}
  .note{font-size:12.5px; line-height:1.75}
  .scroll-hint{display:block; margin:0 0 8px; font-size:12.5px; color:var(--muted)}
  .tbl{font-size:14px}
  .tbl th,.tbl td{padding:10px 12px}
  .gallery{gap:12px}
  figure.eq img{height:clamp(150px,42vw,200px)}
  .stats{gap:12px}
}

@media (max-width:620px){
  .kpis{gap:20px}
  .cert-grid{gap:16px}
}

@media (max-width:400px){
  .stats{grid-template-columns:1fr}
  .kpis{gap:16px}
  section.block{padding:44px 15px}
}

@media (prefers-reduced-motion:reduce){
  .nav .links,.nav-toggle span{transition:none}
}

/* ===== 联系我们 浮动卡片（modal） ===== */
.contact-modal{position:fixed; inset:0; z-index:200; display:flex; align-items:center; justify-content:center; padding:20px}
.contact-modal[hidden]{display:none}
.contact-modal .cm-backdrop{position:absolute; inset:0; background:rgba(2,12,30,.5); backdrop-filter:blur(4px); -webkit-backdrop-filter:blur(4px); cursor:pointer}
.contact-modal .cm-card{position:relative; width:min(380px,100%); max-height:90vh; overflow:auto;
  background:rgba(255,255,255,.62); color:#0c1a33; border:1px solid rgba(255,255,255,.72); border-radius:20px;
  backdrop-filter:blur(22px) saturate(165%); -webkit-backdrop-filter:blur(22px) saturate(165%);
  padding:26px 24px 22px; box-shadow:0 22px 60px rgba(2,12,30,.30),0 3px 12px rgba(2,12,30,.14)}
/* 开合动画：用 class 触发 + 强制 reflow 重放，避免 display 切换吞掉首帧 */
.contact-modal.cm-open .cm-card{animation:cmIn .25s cubic-bezier(.22,.61,.36,1) both}
.contact-modal.cm-open .cm-backdrop{animation:cmFadeIn .25s ease both}
.contact-modal.cm-closing .cm-card{animation:cmOut .26s cubic-bezier(.4,0,.2,1) both}
.contact-modal.cm-closing .cm-backdrop{animation:cmFadeOut .26s ease both}
@keyframes cmIn{from{opacity:0; transform:translateY(18px)} to{opacity:1; transform:translateY(0)}}
@keyframes cmFadeIn{from{opacity:0} to{opacity:1}}
@keyframes cmOut{from{opacity:1; transform:translateY(0)} to{opacity:0; transform:translateY(18px)}}
@keyframes cmFadeOut{from{opacity:1} to{opacity:0}}
@media (prefers-reduced-motion:reduce){
  .contact-modal.cm-open .cm-card,.contact-modal.cm-open .cm-backdrop,
  .contact-modal.cm-closing .cm-card,.contact-modal.cm-closing .cm-backdrop{animation:none}
}
.contact-modal .cm-close{position:absolute; top:10px; right:12px; width:36px; height:36px; border:0;
  border-radius:10px; background:transparent; color:#5b6b82; font-size:26px; line-height:1; cursor:pointer; transition:.18s}
.contact-modal .cm-close:hover{background:rgba(12,26,51,.08); color:#0c1a33}
.contact-modal .cm-title{margin:0 0 18px; font-size:21px; font-weight:800; letter-spacing:.02em; color:#0c1a33}
.contact-modal .cm-list{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:16px}
.contact-modal .cm-list li{display:flex; align-items:flex-start; gap:12px}
.contact-modal .cm-ic{flex:0 0 auto; width:38px; height:38px; display:grid; place-items:center;
  border-radius:11px; background:rgba(53,214,255,.14); font-size:19px}
.contact-modal .cm-kv{display:flex; flex-direction:row; align-items:baseline; flex-wrap:wrap; gap:8px; min-width:0}
.contact-modal .cm-kv b{font-size:13.5px; font-weight:700; color:#5b6b82; letter-spacing:.02em}
.contact-modal .cm-kv span{font-size:15.5px; line-height:1.55; color:#0c1a33; word-break:break-word}
.contact-modal .cm-qr{margin-top:20px; padding-top:18px; border-top:1px solid #e2e8f0;
  display:flex; flex-direction:column; align-items:center; gap:9px}
.contact-modal .cm-qr-box{width:164px; height:164px; padding:8px; box-sizing:border-box; border-radius:12px; overflow:hidden; border:1px solid #e2e8f0; background:#fff}
.contact-modal .cm-qr-box img{width:100%; height:100%; display:block; object-fit:contain}
.contact-modal .cm-qr-cap{margin:0; font-size:12.5px; color:#5b6b82; text-align:center}
@media (max-width:480px){
  .contact-modal{padding:14px}
.contact-modal .cm-card{width:100%; padding:24px 18px 20px; border-radius:16px}
.contact-modal .cm-title{font-size:19px}
.contact-modal .cm-ic{width:34px; height:34px; font-size:17px}
.contact-modal .cm-kv span{font-size:15px}
}

/* 联系方式可点击链接：QQ / 邮箱 */
.contact-modal .cm-list a,
.foot .col a{
  color:#0a6bd0;
  text-decoration:none;
  white-space:nowrap;
  transition:color .15s
}
.contact-modal .cm-list a:hover,
.foot .col a:hover{ color:#08529f }

/* ===== 2026-09-18 代码审查修复 ===== */
/* 2) 键盘焦点可见指示：修复前全站无 :focus 样式，深色背景下浏览器默认焦点环不明显 */
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,
[tabindex]:focus-visible{outline:2px solid var(--cyan,#35d6ff);outline-offset:3px;border-radius:6px}
/* 3) 跳转到主内容链接 + 屏幕阅读器专用文本 */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
.skip-link{position:absolute;left:-9999px;top:0;z-index:200;background:var(--cyan,#35d6ff);
  color:#04101f;font-weight:700;padding:10px 16px;border-radius:0 0 10px 0;text-decoration:none}
.skip-link:focus{left:0}
/* 4) 打印样式：隐藏导航/遮罩/弹窗等交互元素 */
@media print{.nav,.nav-mask,.skip-link,.contact-modal{display:none}}

/* ===== 2026-09-20 首页页脚恢复白底版式（与旧版 / 内页视觉统一） =====
 * 首页 footer 位于 <main class="below"> 之外，导致原有的 .below footer{background:#fff}
 * 未命中而回退到深色 --bg2；此处以 body:not(.subpage) 精确命中首页并锁定白底。
 * 另将 30px 顶部间隙改由 main.below 的 padding-bottom 承担，
 * 避免 footer 的上外边距露出 body 深色底、形成深色横带。 */
body:not(.subpage) main.below{padding-bottom:30px}
body:not(.subpage) footer{background:#fff;border-top:1px solid #dde6f1;margin-top:0;color:#16273e}
body:not(.subpage) footer .foot .col h4{color:#0a7ea4}
body:not(.subpage) footer .foot .col p{color:#5a6b82}
body:not(.subpage) footer .foot .qr-item figcaption{color:#5a6b82}
body:not(.subpage) footer .foot .intro .name{color:#16273e}
body:not(.subpage) footer .bot{color:#16273e}

/* ===== 2026-09-20 首页区块垂直间距收紧（减半）=====
 * 原因：section.block 上下内边距各 80px，相邻两区块叠加后间距达 160px，
 *      「查看全部合作伙伴 →」到「合作项目」之间出现过大的空白（截图为证）。
 * 处理：首页 body:not(.subpage) 的 section.block 上下内边距收紧
 *      80→16 / 52→14 / 44→12（桌面 / 平板 / 小屏），左右内边距沿用原规则不变。
 * 范围：仅首页生效，内页 subpage 保持原间距，LOGO 墙 / 页脚 / hero 均不受影响。 */
body:not(.subpage) section.block{padding-top:16px; padding-bottom:16px}
@media (max-width:780px){body:not(.subpage) section.block{padding-top:14px; padding-bottom:14px}}
@media (max-width:400px){body:not(.subpage) section.block{padding-top:12px; padding-bottom:12px}}

/* ===== 「查看全部 ××」类链接右对齐（2026-09-20 建立 / 2026-09-21 扩展到内页）=====
 * 现象：只写 text-align:right 时，无头实测 textAlign 计算值确为 right，
 *      但 <a> 的 left 仍等于 <p> 的 left（贴左），渲染截图也为左对齐。
 * 根因：L185 `p,li,.note,.tip,.article p{text-align:justify; text-align-last:left}`，
 *      其中 text-align-last:left 强制「最后一行」左对齐；.more-link 是单行 <p>，
 *      该行既是首行也是末行 → 被 text-align-last 拉回左边，只写 text-align 无效。
 * 处理：同时覆盖 text-align-last:right；规则由首页 body:not(.subpage) 放宽到全站 .more-link。
 * 范围：首页 5 处「查看全部 ××」+ 主营产品页 1 处「看看合作单位与服务案例 →」，
 *      桌面 / 平板 / 小屏三档均右对齐。经核查全站仅上述 6 处使用 .more-link，
 *      后续正文段落若需左对齐请改用其它类名，勿复用 .more-link。
 * 特异性 (0,1,0) 且位于 site.css 末尾，可覆盖 L282 断点规则 @media(max-width:780px){.more-link{text-align:left}}。 */
.more-link{text-align:right; text-align-last:right}


/* ===== 2026-09-20 首页「合作伙伴」LOGO 墙：五条并行无缝水平滚动 =====
 * 结构：.logo-marquee(纵向五轨容器, overflow 裁切 + 两端渐隐) > .logo-track ×5(各为一条横排轨道)
 *       > .logo-cell(瓦片单元) > .logo-ph(浅色瓦片：每格一张真实单位 LOGO，无文字瓦片、无空占位格)
 * 无缝原理：site.js 把「每条轨道的单份 LOGO 集」各自克隆成足够多份（≥2 且单份宽≥视口），
 *          动画把轨道平移「单份宽度」即 100/copies%，到头瞬间与开头逐像素一致 → 无缝循环。
 * 速度/方向：奇数条正向、偶数条 .track-rev 反向；site.js 按「单份宽度 / 恒定像素速度」归一化每条动画时长，
 *          使五条视觉滚动速度一致（与条数/屏宽无关），五条独立互不干扰。
 * 交互：悬停某条轨道仅暂停该条（其余继续）；悬停具体 LOGO 时该单元放大 + 青色高亮 + 阴影 + 置顶；移出恢复。
 * 兼容：无 JS 时 --loop 默认 0%（静止不滚动、不露空白）；触摸端无 hover 则持续滚动；prefers-reduced-motion 关闭动画。 */
.logo-marquee{position:relative; overflow:hidden; margin:8px 0 4px; padding:20px 0;
  display:flex; flex-direction:column; gap:14px;            /* 五条轨道纵向并列 */
  border:1px solid rgba(86,150,230,.16); border-radius:16px; background:transparent;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);
          mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}
.logo-track{display:flex; gap:20px; width:max-content; will-change:transform}
/* 横向滚动由 site.js 用 Web Animations API 驱动（规避 @keyframes 内 var(--loop) 在 Safari/旧 Firefox 解析失败→静止的兼容坑） */
/* 反向轨道(.track-rev)与悬停暂停由 site.js 用 WAAPI 的 direction 与 pause()/play() 实现 */
.logo-cell{position:relative; flex:0 0 auto; width:170px; height:96px;
  transition:transform .25s ease, filter .25s ease}
/* 2026-09-23 19:2x 瓦片底改为**完全透明**：框内不显示任何背景色/填充色，只留 LOGO 图像 + 边框。
 * 首页区块底为 #f5f8fc 浅色，LOGO 主体近黑且透明 → 直接落在浅底上依然清晰，无需瓦片再着色。
 * 原 12 色柔和底 phc0..phc11 色板留档备查（如需恢复浅色底，把色值填回并给 .logo-ph 加回默认色即可）：
 *   phc0 #e8f1fb  phc1 #e9f7ee  phc2 #fbf1e3  phc3 #fbeaf1  phc4 #efeafb  phc5 #e2f4f2
 *   phc6 #fbede3  phc7 #edf3e2  phc8 #f0eafb  phc9 #e6f1f8  phc10 #fbefe6  phc11 #e4f5ec */
.logo-ph{position:relative; width:100%; height:100%; display:grid; place-items:center;
  background:transparent; border:1px solid #dfe6ef; border-radius:10px;
  transition:background .25s ease, border-color .25s ease, box-shadow .25s ease}
/* 真实 LOGO：<img alt="单位名"> 铺满瓦片；box-sizing:border-box 让内边距计入尺寸 → contain 保比例、不裁切、不越界 */
.logo-ph img{position:absolute; inset:0; width:100%; height:100%; box-sizing:border-box;
  object-fit:contain; padding:10px; display:block}
/* 悬停突出：放大 + 青色高亮描边 + 投影 + 置顶 */
.logo-cell:hover{transform:scale(1.12); z-index:5}
.logo-cell:hover .logo-ph{background:transparent; border-color:var(--cyan,#35d6ff);
  box-shadow:0 0 0 2px rgba(53,214,255,.35), 0 14px 34px rgba(0,0,0,.45)}
/* 版权声明：LOGO 墙右下角低调标注（靠右对齐，与右下角「查看全部合作伙伴」入口同侧）*/
.logo-note{margin:6px 2px 0; text-align:right; text-align-last:right;
  font-size:12.5px; line-height:1.6; color:var(--muted,#7c8a9e); letter-spacing:.02em}

@media (max-width:620px){.logo-cell{width:132px; height:76px} .logo-track{gap:14px} .logo-marquee{padding:14px 0; gap:12px}
  .logo-ph img{padding:7px}}
/* LOGO 墙的「减少动态效果」尊重改由 site.js 检测 matchMedia('prefers-reduced-motion: reduce') 处理 */

/* ===== 无障碍增强（阶段一） ===== */
.skip-link{position:absolute;left:-9999px;top:0;z-index:9999;background:#fff;color:#2e6da4;padding:10px 16px;border-radius:0 0 10px 0;font-weight:700}
.skip-link:focus{left:0}
a:focus-visible,button:focus-visible,input:focus-visible{outline:3px solid #2e6da4;outline-offset:2px}
@media (prefers-reduced-motion: reduce){
  *{scroll-behavior:auto!important}
  .kpi-num,.map-pin{transition:none!important}
}

             /* 首页合作项目卡（grid 卡片） */
