/* ============================================================
   中畅源官网 · 统一设计规范
   融合两套参考：
   1) OKF 知识包图：白底卡片、功能色分类（蓝/绿/橙/红）、充足留白
   2) ruanjiankaifa.com：Tailwind B2B（gray-50 底、blue-600 CTA、
      Hero 135° 蓝渐变、圆角 8–16px、分类色图标砖）
   ============================================================ */

/* ---------- Design Tokens ---------- */
:root{
  /* 品牌蓝（取自 ruanjiankaifa.com 实测 CSS 变量） */
  --c-primary:#155dfc;          /* blue-600 · 按钮 / 链接 */
  --c-primary-500:#3080ff;      /* blue-500 · 接近 OKF 主蓝 #1890FF */
  --c-primary-600:#155dfc;
  --c-primary-700:#1447e6;      /* 悬停 */
  --c-primary-800:#193cb8;
  --c-primary-50:#eff6ff;
  --c-primary-100:#dbeafe;
  --c-hero-from:#1e40af;        /* Hero 起点 · 实测 hero-gradient */
  --c-hero-to:#3b82f6;          /* Hero 终点 */

  /* OKF 功能色 · 分类点缀（卡片/Agent 色带） */
  --c-green:#00c758;
  --c-green-600:#00a544;
  --c-green-50:#f0fdf4;
  --c-orange:#fe6e00;
  --c-orange-50:#fff7ed;
  --c-purple:#9810fa;
  --c-purple-50:#faf5ff;
  --c-red:#fb2c36;
  --c-red-50:#fef2f2;
  --c-accent:#00c758;           /* 辅助强调：绿（硬件 / 成功） */
  --c-violet:#9810fa;

  --grad-brand:linear-gradient(135deg,#3080ff 0%,#155dfc 100%);
  --grad-hero:linear-gradient(135deg,#1e40af 0%,#3b82f6 100%);
  --grad-brand-2:linear-gradient(135deg,#ac4bff 0%,#155dfc 100%);
  --grad-green:linear-gradient(135deg,#00c758,#00a544);
  --grad-orange:linear-gradient(135deg,#ff8b1a,#fe6e00);
  --grad-purple:linear-gradient(135deg,#ac4bff,#9810fa);

  /* 中性色（ruanjiankaifa gray / OKF 白底） */
  --bg:#ffffff;
  --bg-soft:#f9fafb;            /* gray-50 · 页面交替底 */
  --surface:#ffffff;
  --surface-2:#f3f4f6;          /* gray-100 */
  --text:#101828;               /* gray-900 */
  --text-soft:#364153;          /* gray-700 */
  --muted:#6a7282;              /* gray-500 */
  --border:#e5e7eb;             /* gray-200 */
  --border-strong:#d1d5dc;      /* gray-300 */
  --border-soft:#f3f4f6;        /* gray-100 */

  /* 页脚 / 深色带 */
  --dark-bg:#101828;
  --dark-surface:#1e2939;
  --dark-surface-2:#364153;
  --dark-text:#f9fafb;
  --dark-muted:#99a1af;
  --dark-border:#364153;

  /* 语义色 */
  --ok:#00c758; --warn:#f99c00; --err:#fb2c36;

  /* 字体 */
  --font:"PingFang SC","Microsoft YaHei","Segoe UI",system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;
  --fs-xs:12px; --fs-sm:14px; --fs-base:16px; --fs-lg:18px;
  --fs-xl:20px; --fs-2xl:26px; --fs-3xl:34px; --fs-4xl:46px; --fs-5xl:60px;

  /* 间距栅格（4px 基准） */
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:20px;
  --s6:24px; --s8:32px; --s10:40px; --s12:48px; --s14:56px;
  --s16:64px; --s20:80px; --s24:96px;

  /* 圆角：按钮 8px（软件开发网 rounded-lg），卡片 16px（rounded-2xl） */
  --r-sm:8px; --r-md:12px; --r-lg:16px; --r-xl:20px; --r-full:999px;

  /* 阴影（软件开发网 shadow-sm / shadow-lg / card-hover） */
  --sh-sm:0 1px 2px rgba(16,24,40,.05);
  --sh-md:0 4px 12px rgba(16,24,40,.08);
  --sh-lg:0 20px 25px -5px rgba(0,0,0,.10),0 10px 10px -5px rgba(0,0,0,.04);
  --sh-glow:0 10px 15px -3px rgba(21,93,252,.28);

  --nav-h:64px;
  --maxw:1200px;
}

/* ---------- A11y / SEO ---------- */
.skip-link{
  position:absolute;left:16px;top:-48px;z-index:2000;
  background:var(--c-primary);color:#fff;padding:8px 14px;border-radius:var(--r-sm);
  font-weight:700;font-size:var(--fs-sm);
}
.skip-link:focus{top:12px}

.faq-list{max-width:800px;margin:0 auto;display:flex;flex-direction:column;gap:12px;text-align:left}
.faq-item{
  background:#fff;border:1px solid var(--border-soft);border-radius:var(--r-md);
  padding:0;box-shadow:var(--sh-sm);
}
.faq-item summary{
  cursor:pointer;font-weight:700;padding:18px 22px;color:var(--text);
  list-style:none;position:relative;padding-right:48px;
}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{
  content:"+";position:absolute;right:20px;top:50%;transform:translateY(-50%);
  color:var(--c-primary);font-size:20px;font-weight:700;
}
.faq-item[open] summary::after{content:"–"}
.faq-item p{padding:0 22px 18px;color:var(--muted);margin:0;line-height:1.75}

/* ---------- Reset / Base ---------- */
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
html.is-locating{scroll-behavior:auto}
html.is-locating body{opacity:0}
html.is-located body{opacity:1;transition:opacity .4s ease}
body{
  font-family:var(--font);
  font-size:var(--fs-base);
  line-height:1.7;
  color:var(--text-soft);
  background:var(--bg-soft);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
a{color:inherit;text-decoration:none}
img,svg{display:block;max-width:100%}
ul{list-style:none}
h1,h2,h3,h4{line-height:1.25;font-weight:800;letter-spacing:-.02em;color:var(--text)}
section{position:relative}

/* ---------- Layout ---------- */
.container{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 var(--s6)}
.section{padding:var(--s20) 0;background:var(--bg)}
.section.alt,.section.dark{background:var(--bg-soft);color:var(--text)}
.section.dark h1,.section.dark h2,.section.dark h3{color:var(--text)}
.section.dark .section-desc{color:var(--muted)}
.grid{display:grid;gap:var(--s6)}
.grid-2{grid-template-columns:repeat(2,1fr)}
.grid-3{grid-template-columns:repeat(3,1fr)}
.grid-4{grid-template-columns:repeat(4,1fr)}
@media(max-width:1024px){.grid-4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:768px){
  .grid-2,.grid-3,.grid-4{grid-template-columns:1fr}
  .section{padding:var(--s16) 0}
  .container{padding:0 var(--s5)}
}

/* ---------- 区块标题（软件开发网 section-title 下划线） ---------- */
.section-head{max-width:720px;margin:0 auto var(--s12);text-align:center}
.section-head.left{margin-left:0;text-align:left}
.section-eyebrow{
  display:inline-block;font-size:var(--fs-xs);font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;color:var(--c-primary);
  padding:4px 12px;border-radius:var(--r-full);
  background:var(--c-primary-50);margin-bottom:var(--s4);
}
.section.dark .section-eyebrow{background:var(--c-primary-50);color:var(--c-primary)}
.section-title{font-size:var(--fs-3xl);margin-bottom:var(--s4);position:relative}
.section-head .section-title::after{
  content:"";display:block;width:60px;height:4px;border-radius:2px;margin:16px auto 0;
  background:linear-gradient(90deg,var(--c-hero-from),var(--c-hero-to));
}
.section-head.left .section-title::after{margin-left:0}
.section-desc{font-size:var(--fs-lg);color:var(--muted);line-height:1.7}

/* ---------- Buttons（软件开发网：rounded-lg 实心蓝，非胶囊） ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);
  font-weight:600;font-size:var(--fs-base);cursor:pointer;border:none;
  padding:12px 24px;border-radius:var(--r-sm);transition:.2s ease;
  font-family:inherit;line-height:1;
}
.btn-primary{background:var(--c-primary);color:#fff;box-shadow:var(--sh-sm)}
.btn-primary:hover{background:var(--c-primary-700);transform:translateY(-2px);box-shadow:var(--sh-glow)}
.btn-ghost{background:transparent;color:var(--c-primary);border:1.5px solid var(--border)}
.btn-ghost:hover{border-color:var(--c-primary);background:var(--c-primary-50)}
.btn-ghost-light{background:transparent;color:#fff;border:1.5px solid rgba(255,255,255,.45)}
.btn-ghost-light:hover{background:rgba(255,255,255,.12);border-color:#fff}
.btn-light{background:#fff;color:var(--c-primary-700);box-shadow:var(--sh-sm)}
.btn-light:hover{transform:translateY(-2px);box-shadow:var(--sh-md)}
.btn-block{display:flex;width:100%}
.btn-lg{padding:16px 32px;font-size:var(--fs-lg)}

/* ---------- Navbar ---------- */
.navbar{
  position:sticky;top:0;z-index:1000;height:var(--nav-h);
  background:#fff;border-bottom:1px solid var(--border-soft);
  box-shadow:var(--sh-sm);transition:.3s ease;
}
.navbar.scrolled{box-shadow:var(--sh-md)}
.nav-inner{height:100%;display:flex;align-items:center;justify-content:space-between;max-width:var(--maxw);margin:0 auto;padding:0 var(--s6)}
.brand{display:flex;align-items:center;gap:var(--s3);font-weight:800;font-size:var(--fs-xl);color:var(--text)}
.brand img{width:40px;height:40px;object-fit:contain}
.brand small{display:block;font-size:var(--fs-xs);font-weight:600;color:var(--muted);letter-spacing:.04em}
.nav-links{display:flex;align-items:center;gap:var(--s2)}
.nav-link{
  padding:8px 14px;border-radius:var(--r-sm);font-weight:500;color:var(--text-soft);
  transition:.2s ease;position:relative;
}
.nav-link:hover{color:var(--c-primary)}
.nav-link.active{color:var(--c-primary);font-weight:600}
.nav-link.active::after{
  content:"";position:absolute;left:14px;right:14px;bottom:2px;height:2px;
  background:var(--c-primary);border-radius:2px;
}
.nav-cta{margin-left:var(--s3)}
.nav-item{position:relative}
.nav-item.has-sub{display:flex;align-items:center;height:var(--nav-h)}
.nav-sub{
  position:absolute;top:calc(100% - 2px);left:50%;width:220px;z-index:30;
  background:#fff;border:1px solid var(--border);border-radius:14px;
  box-shadow:var(--sh-md);padding:10px;text-align:center;white-space:nowrap;
  opacity:0;visibility:hidden;pointer-events:none;
  transform:translateX(-50%) translateY(8px);transition:.18s ease;
}
.nav-item.has-sub:hover .nav-sub,
.nav-item.has-sub:focus-within .nav-sub{
  opacity:1;visibility:visible;pointer-events:auto;transform:translateX(-50%);
}
.nav-sub a{
  display:block;padding:12px 18px;border-radius:10px;
  color:var(--text-soft);font-weight:600;font-size:15px;
}
.nav-sub a:hover,.nav-sub a.active{background:var(--c-primary-50);color:var(--c-primary)}
.nav-toggle{
  display:none;flex-direction:column;gap:5px;background:none;border:none;cursor:pointer;padding:8px;
}
.nav-toggle span{width:24px;height:2.5px;background:var(--text);border-radius:2px;transition:.3s}
@media(max-width:880px){
  .nav-toggle{display:flex}
  .nav-links{
    position:absolute;top:var(--nav-h);left:0;right:0;
    flex-direction:column;align-items:stretch;gap:0;
    background:#fff;border-bottom:1px solid var(--border);
    padding:var(--s3) var(--s5) var(--s5);
    box-shadow:var(--sh-lg);
    transform:translateY(-12px);opacity:0;pointer-events:none;transition:.25s ease;
  }
  .nav-links.open{transform:none;opacity:1;pointer-events:auto}
  .nav-link{padding:14px 8px;border-radius:0;border-bottom:1px solid var(--border-soft)}
  .nav-link.active::after{display:none}
  .nav-cta{margin:var(--s3) 0 0}
  .nav-cta .btn{width:100%}
  .nav-item.has-sub{display:block;height:auto;border-bottom:1px solid var(--border-soft)}
  .nav-sub{
    position:static;opacity:1;visibility:visible;pointer-events:auto;transform:none;
    box-shadow:none;border:0;padding:0 0 8px 18px;background:transparent;width:auto;text-align:left;
  }
  .nav-sub a{padding:10px 8px}
}

/* ---------- Breadcrumb ---------- */
.breadcrumb{
  font-size:var(--fs-sm);color:var(--muted);padding:var(--s4) 0;
  border-bottom:1px solid var(--border-soft);background:#fff;
}
.breadcrumb .container{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap}
.breadcrumb a:hover{color:var(--c-primary)}
.breadcrumb .sep{opacity:.5}
.breadcrumb .cur{color:var(--text);font-weight:600}

/* ---------- Hero（软件开发网 hero-gradient） ---------- */
.hero{
  position:relative;overflow:hidden;background:var(--grad-hero);color:#fff;
  padding:calc(var(--s20) + 8px) 0 var(--s20);
}
.hero::before{
  content:"";position:absolute;inset:0;
  background-image:linear-gradient(rgba(255,255,255,.08) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(255,255,255,.08) 1px,transparent 1px);
  background-size:52px 52px;mask-image:radial-gradient(circle at 50% 30%,#000,transparent 78%);
}
.hero-glow{position:absolute;width:480px;height:480px;border-radius:50%;filter:blur(90px);opacity:.28;pointer-events:none}
.hero-glow.a{background:#90c5ff;top:-160px;right:-120px}
.hero-glow.b{background:#54a2ff;bottom:-200px;left:-120px;opacity:.22}
.hero-inner{position:relative;display:grid;grid-template-columns:1.05fr .95fr;gap:var(--s12);align-items:center}
.hero-badge{
  display:inline-flex;align-items:center;gap:var(--s2);font-size:var(--fs-sm);font-weight:600;
  padding:6px 14px;border-radius:var(--r-full);background:rgba(255,255,255,.14);
  border:1px solid rgba(255,255,255,.28);color:#fff;margin-bottom:var(--s5);
}
.hero-badge .dot{width:8px;height:8px;border-radius:50%;background:#7bf1a8;box-shadow:0 0 10px #7bf1a8}
.hero-title{font-size:var(--fs-5xl);font-weight:900;line-height:1.12;margin-bottom:var(--s5);color:#fff}
.hero-title .grad{color:#dbeafe}
.hero-sub{font-size:var(--fs-lg);color:rgba(255,255,255,.86);max-width:540px;margin-bottom:var(--s8)}
.hero-actions{display:flex;gap:var(--s4);flex-wrap:wrap}
.hero-art img{width:100%;animation:float 6s ease-in-out infinite}
.hero-mini{display:flex;gap:var(--s6);margin-top:var(--s10);flex-wrap:wrap}
.hero-mini .m{font-size:var(--fs-sm);color:rgba(255,255,255,.78)}
.hero-mini .m b{display:block;font-size:var(--fs-2xl);color:#fff;font-weight:800}
@media(max-width:880px){
  .hero-inner{grid-template-columns:1fr;gap:var(--s10)}
  .hero-title{font-size:var(--fs-4xl)}
  .hero-art{order:-1;max-width:420px;margin:0 auto}
}

/* ---------- 内页页头 ---------- */
.page-hero{
  background:var(--grad-hero);color:#fff;padding:var(--s8) 0 var(--s6);
}
.page-hero .section-eyebrow{background:rgba(255,255,255,.16);color:#fff}
.page-hero h1{color:#fff;font-size:var(--fs-3xl);margin:0 0 var(--s3)}
.page-hero p{color:rgba(255,255,255,.86);font-size:var(--fs-lg);max-width:640px;margin:0}
.page-hero .hero-actions{margin-top:var(--s6)}

/* ---------- Card（OKF 白卡 + 软件开发网分类色图标砖） ---------- */
.card{
  background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--r-lg);
  padding:var(--s8);box-shadow:var(--sh-sm);transition:.3s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden;
}
.card:hover{transform:translateY(-8px);box-shadow:var(--sh-lg);border-color:var(--border)}
.card-icon{
  width:56px;height:56px;border-radius:var(--r-lg);display:grid;place-items:center;
  background:var(--grad-brand);margin-bottom:var(--s5);
  box-shadow:0 10px 15px -3px rgba(21,93,252,.28);
}
.card-icon.svg-green,.card-icon.ico-green{background:var(--grad-green);box-shadow:0 10px 15px -3px rgba(0,199,88,.28)}
.card-icon.ico-orange{background:var(--grad-orange);box-shadow:0 10px 15px -3px rgba(254,110,0,.28)}
.card-icon.ico-purple{background:var(--grad-purple);box-shadow:0 10px 15px -3px rgba(152,16,250,.28)}
.card-icon svg{width:26px;height:26px;stroke:#fff}
.card-title{font-size:var(--fs-xl);margin-bottom:var(--s3)}
.card-text{color:var(--muted);font-size:var(--fs-base)}
.card-link{display:inline-flex;align-items:center;gap:6px;margin-top:var(--s5);font-weight:700;color:var(--c-primary)}
.card-link .arr{transition:.25s}
.card:hover .card-link .arr{transform:translateX(5px)}

/* ---------- Pill / Tag ---------- */
.pill{display:inline-block;font-size:var(--fs-xs);font-weight:700;padding:4px 12px;border-radius:var(--r-full);
  background:var(--c-primary-50);color:var(--c-primary-700);margin:0 6px 6px 0}
.pill.hot{background:var(--c-green-50);color:#016630}

/* ---------- Stats ---------- */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s6);margin-top:var(--s12)}
.stat{
  text-align:center;padding:var(--s8) var(--s5);border-radius:var(--r-lg);
  background:#fff;border:1px solid var(--border-soft);box-shadow:var(--sh-sm);
}
.stat-num{font-size:var(--fs-4xl);font-weight:900;color:var(--c-primary);letter-spacing:-.03em}
.stat-label{color:var(--muted);font-size:var(--fs-sm);margin-top:var(--s2)}
@media(max-width:768px){.stats{grid-template-columns:repeat(2,1fr)}}

/* ---------- Product Card ---------- */
.product-card{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border-soft);
  border-radius:var(--r-lg);overflow:hidden;transition:.3s cubic-bezier(.4,0,.2,1);box-shadow:var(--sh-sm);color:inherit}
.product-card:hover{transform:translateY(-8px);box-shadow:var(--sh-lg)}
.product-thumb{height:150px;background:var(--grad-brand);position:relative;display:grid;place-items:center;overflow:hidden}
.product-thumb.alt{background:var(--grad-brand-2)}
.product-thumb.green{background:var(--grad-green)}
.product-thumb svg{width:64px;height:64px;stroke:#fff;opacity:.92}
.product-thumb .tag{position:absolute;top:14px;left:14px;font-size:var(--fs-xs);font-weight:700;
  background:rgba(255,255,255,.22);color:#fff;padding:5px 12px;border-radius:var(--r-full);backdrop-filter:blur(4px)}
.product-body{padding:var(--s6);display:flex;flex-direction:column;flex:1}
.product-title{font-size:var(--fs-xl);margin-bottom:var(--s3)}
.product-desc{color:var(--muted);font-size:var(--fs-sm);flex:1;margin-bottom:var(--s4)}
.product-list{font-size:var(--fs-sm);color:var(--text-soft);margin-bottom:var(--s5)}
.product-list li{display:flex;gap:8px;padding:4px 0}
.product-list li::before{content:"✓";color:var(--ok);font-weight:800}

/* ---------- 首页产品速览（场景切换 · 主推 + 配套） ---------- */
#products-preview{scroll-margin-top:calc(var(--nav-h) + 12px)}
.pv-board{
  background:#fff;border:1px solid var(--border-soft);border-radius:20px;
  padding:var(--s8) var(--s8) var(--s6);box-shadow:var(--sh-md);
}
.pv-switch{
  display:flex;flex-wrap:wrap;gap:8px;margin:0 0 var(--s8);
  padding:6px;background:var(--bg-soft);border-radius:16px;width:fit-content;max-width:100%;
}
.pv-tab{
  border:0;background:transparent;cursor:pointer;font:inherit;font-weight:700;font-size:var(--fs-sm);
  color:var(--muted);padding:10px 18px;border-radius:var(--r-full);transition:.2s;
}
.pv-tab:hover{color:var(--c-primary)}
.pv-tab.is-on{background:#fff;color:var(--c-primary);box-shadow:var(--sh-sm)}
.pv-hero{
  display:grid;grid-template-columns:.92fr 1.08fr;gap:var(--s10);align-items:center;
  padding:0 0 var(--s8);border-bottom:1px solid var(--border-soft);
}
.pv-visual{
  background:linear-gradient(165deg,#eff6ff 0%,#f8fafc 100%);
  border:1px solid #dbeafe;border-radius:16px;padding:22px 18px;min-height:220px;
  display:grid;place-items:center;
}
.pv-visual svg{width:100%;max-width:340px;height:auto}
.pv-kicker{
  display:inline-flex;align-items:center;gap:8px;font-size:var(--fs-xs);font-weight:800;
  letter-spacing:.08em;color:var(--c-primary);margin-bottom:var(--s3);
}
.pv-kicker i{
  width:28px;height:28px;border-radius:8px;background:var(--c-primary-50);
  display:grid;place-items:center;
}
.pv-kicker svg{width:16px;height:16px;stroke:var(--c-primary)}
.pv-copy h3{font-size:var(--fs-2xl);margin:0 0 var(--s3)}
.pv-copy p{color:var(--muted);margin:0 0 var(--s5);max-width:460px}
.pv-chips{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 var(--s5)}
.pv-chips span{
  font-size:var(--fs-xs);font-weight:700;color:var(--c-primary-700);
  background:var(--c-primary-50);padding:4px 10px;border-radius:var(--r-full);
}
.pv-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s6);
  padding:var(--s8) 0 0;
}
.pv-item{display:block;text-decoration:none;color:inherit;padding:8px 4px;border-radius:12px;transition:.2s}
.pv-item:hover{background:var(--c-primary-50)}
.pv-item h4{font-size:var(--fs-base);margin:0 0 6px}
.pv-item p{font-size:var(--fs-sm);color:var(--muted);margin:0;line-height:1.6}
.pv-more{text-align:center;margin-top:var(--s8)}
@media(max-width:880px){
  .pv-board{padding:var(--s6)}
  .pv-switch{width:100%;display:grid;grid-template-columns:1fr 1fr}
  .pv-tab{text-align:center}
  .pv-hero{grid-template-columns:1fr;gap:var(--s6)}
  .pv-visual{order:-1;min-height:180px}
  .pv-grid{grid-template-columns:1fr}
}

/* ---------- 首页方案卡（补齐缺失样式 · OKF 分类色左边条） ---------- */
.solution-card{
  background:#fff;border:1px solid var(--border-soft);border-radius:var(--r-lg);
  padding:var(--s8);box-shadow:var(--sh-sm);position:relative;overflow:hidden;
  transition:.3s cubic-bezier(.4,0,.2,1);
}
.solution-card::before{
  content:"";position:absolute;left:0;top:0;width:4px;height:100%;
  background:var(--c-primary);
}
.solution-card:nth-child(2)::before{background:var(--c-green)}
.solution-card:hover{transform:translateY(-8px);box-shadow:var(--sh-lg)}
.solution-no{
  font-size:var(--fs-xs);font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  color:var(--c-primary);background:var(--c-primary-50);
  display:inline-block;padding:4px 12px;border-radius:var(--r-full);margin-bottom:var(--s4);
}
.solution-card:nth-child(2) .solution-no{color:#016630;background:var(--c-green-50)}
.solution-card h3{font-size:var(--fs-xl);margin-bottom:var(--s3)}
.solution-card p{color:var(--muted);margin-bottom:var(--s5)}

/* ---------- 产品分类分组 ---------- */
.category-nav{
  display:flex;flex-wrap:wrap;align-items:center;gap:var(--s3);
  margin:0 0 var(--s12);padding:var(--s4) var(--s5);
  background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--r-lg);
  box-shadow:var(--sh-sm);
}
.category-nav .cat-label{font-size:var(--fs-sm);font-weight:700;color:var(--muted);margin-right:var(--s2)}
.cat-chip{
  display:inline-flex;align-items:center;gap:8px;
  padding:9px 18px;border-radius:var(--r-full);
  font-size:var(--fs-sm);font-weight:700;color:var(--text-soft);
  background:var(--bg-soft);border:1.5px solid var(--border);transition:.22s ease;
}
.cat-chip:hover{color:#fff;background:var(--c-primary);border-color:transparent;transform:translateY(-2px);box-shadow:var(--sh-glow)}
.cat-chip .n{font-size:var(--fs-xs);font-weight:800;color:var(--c-primary);
  background:#fff;border:1px solid var(--border);border-radius:var(--r-full);min-width:22px;height:22px;display:grid;place-items:center;padding:0 5px}
.cat-chip:hover .n{color:#fff;background:rgba(255,255,255,.22);border-color:transparent}

.product-group{margin-bottom:var(--s16);scroll-margin-top:calc(var(--nav-h) + 20px)}
.product-group:last-of-type{margin-bottom:0}
.product-group-head{margin:0 0 var(--s8)}
.group-eyebrow{
  display:inline-block;font-size:var(--fs-sm);font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:var(--c-primary);padding:5px 13px;border-radius:var(--r-full);background:var(--c-primary-50);margin-bottom:var(--s3);
}
.product-group-head h3{font-size:var(--fs-2xl);margin-bottom:var(--s2);display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--s3)}
.g-count{font-size:var(--fs-sm);font-weight:700;color:var(--c-green)}

/* ---------- Solutions（OKF 多色卡片）---------- */
.sol-index,
.sol-group,
.sol-list,
.sol-grid{
  --sb:#155dfc;--sb-l:#eff6ff;--sg:#00c758;--sg-l:#f0fdf4;
  --so:#fe6e00;--so-l:#fff7ed;--sv:#9810fa;--sv-l:#faf5ff;
  --st:#101828;--sd:#364153;--sm:#6a7282;--sbg:#f9fafb;
  --sc:#e5e7eb;--sch:#d1d5dc;
  --ss:0 1px 2px rgba(16,24,40,.05);
  --ssh:0 20px 25px -5px rgba(0,0,0,.10),0 10px 10px -5px rgba(0,0,0,.04);
}

.sol-index{
  position:sticky;top:var(--nav-h);z-index:90;
  display:flex;align-items:center;gap:var(--s4);flex-wrap:wrap;
  padding:var(--s5) var(--s6);margin:0 0 var(--s12);
  background:rgba(255,255,255,.96);backdrop-filter:blur(12px);
  border:1px solid var(--sc);border-radius:var(--r-lg);box-shadow:var(--ss)}
.sol-index-label{font-size:var(--fs-sm);font-weight:700;color:var(--sm);flex:none}
.sol-index-chips{display:flex;flex-wrap:wrap;gap:var(--s3)}
.sol-chip{
  display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-sm);font-weight:600;
  color:var(--sd);background:#fff;border:1px solid var(--sc);
  padding:8px 14px;border-radius:var(--r-full);transition:.22s ease}
.sol-chip:hover{color:#fff;background:var(--sb);border-color:transparent;
  transform:translateY(-2px);box-shadow:0 4px 14px rgba(21,93,252,.25)}
.sol-chip.is-on{background:var(--sb);color:#fff;border-color:var(--sb)}
.sol-chip.is-on:hover{background:#0d47d9;color:#fff;border-color:#0d47d9}

.sol-group{margin-bottom:var(--s16);scroll-margin-top:calc(var(--nav-h) + 108px)}
.sol-group:last-of-type{margin-bottom:0}
.sol-group-head{margin:0 0 var(--s8);display:flex;align-items:baseline;gap:var(--s4);flex-wrap:wrap}
.sol-group-eyebrow{
  display:inline-block;font-size:var(--fs-xs);font-weight:700;letter-spacing:.10em;
  color:var(--sb);background:var(--sb-l);
  padding:5px 13px;border-radius:var(--r-full)}
.sol-group-title{font-size:var(--fs-2xl);font-weight:800;color:var(--st)}

.sol-list{display:flex;flex-direction:column;gap:var(--s10)}
.sol-row{
  display:grid;grid-template-columns:minmax(280px,.9fr) minmax(0,1.1fr);
  grid-template-areas:"visual body";
  min-height:340px;background:#0f172a;border-radius:28px;overflow:hidden;
  box-shadow:0 18px 40px -16px rgba(15,23,42,.45);
  scroll-margin-top:calc(var(--nav-h) + 108px);
  transition:box-shadow .35s ease}
.sol-row:nth-child(even){
  grid-template-columns:minmax(0,1.1fr) minmax(280px,.9fr);
  grid-template-areas:"body visual"}
.sol-row:hover{box-shadow:0 28px 56px -18px rgba(15,23,42,.55)}
.sol-row:target{
  outline:3px solid rgba(21,93,252,.35);outline-offset:4px}

.sol-visual{grid-area:visual;position:relative;min-height:280px;overflow:hidden}
.sol-visual img{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;
  transform:scale(1.01);transition:transform .7s ease}
.sol-row:hover .sol-visual img{transform:scale(1.06)}
.sol-visual::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(15,23,42,.08) 0%,rgba(15,23,42,.55) 100%)}
.sol-num{
  position:absolute;left:22px;bottom:10px;z-index:1;
  font-size:clamp(56px,8vw,92px);font-weight:800;line-height:.85;letter-spacing:-.06em;
  color:#fff;text-shadow:0 10px 28px rgba(0,0,0,.35);pointer-events:none}

.sol-body{
  grid-area:body;background:#fff;padding:36px 40px;
  display:flex;flex-direction:column;min-width:0}
.sol-row .sol-cat{
  align-self:flex-start;font-size:var(--fs-xs);font-weight:700;letter-spacing:.08em;
  color:var(--sb);background:var(--sb-l);
  padding:5px 12px;border-radius:var(--r-full);margin-bottom:var(--s4)}
.sol-row .sol-name{font-size:var(--fs-2xl);font-weight:800;color:var(--st);margin:0 0 var(--s3)}
.sol-for{font-size:var(--fs-sm);color:var(--sm);font-weight:600;margin:0 0 var(--s3)}
.sol-desc{font-size:var(--fs-sm);color:var(--sd);line-height:1.75;margin:0 0 var(--s5)}

.sol-row .sol-scenes{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 var(--s5)}
.sol-row .sol-scenes .scene{
  font-size:var(--fs-xs);font-weight:600;
  background:var(--sbg);color:var(--sd);border:1px solid var(--sc);
  padding:4px 11px;border-radius:6px}

.sol-row .sol-caps{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;
  margin:0 0 var(--s6);padding:0}
.sol-row .sol-caps li{
  margin:0;padding:12px 12px 12px 14px;font-size:var(--fs-sm);color:var(--sd);line-height:1.45;
  background:var(--sbg);border-radius:12px;border-left:3px solid var(--sb)}

.sol-row .sol-link{
  margin-top:auto;align-self:flex-start;
  display:inline-flex;align-items:center;gap:8px;
  font-weight:700;font-size:var(--fs-sm);color:#fff;
  background:var(--sb);padding:11px 18px;border-radius:999px;
  box-shadow:0 8px 18px rgba(21,93,252,.22);transition:.22s}
.sol-row .sol-link:hover{transform:translateY(-1px);opacity:1;filter:brightness(1.06)}
.sol-row .sol-link .arr{transition:.25s}
.sol-row:hover .sol-link .arr{transform:translateX(5px)}

#grp-public{--sb:var(--sg);--sb-l:var(--sg-l)}
#grp-public .sol-link{box-shadow:0 8px 18px rgba(0,199,88,.22)}
#grp-ai{--sb:var(--sv);--sb-l:var(--sv-l)}
#grp-ai .sol-link{box-shadow:0 8px 18px rgba(152,16,250,.22)}

@media(max-width:880px){
  .sol-row,
  .sol-row:nth-child(even){
    grid-template-columns:1fr;grid-template-areas:"visual" "body";min-height:0}
  .sol-visual{min-height:220px;aspect-ratio:16/9}
  .sol-body{padding:24px 22px}
  .sol-row .sol-caps{grid-template-columns:1fr}
  .sol-num{font-size:64px;left:16px;bottom:6px}
}

.sol-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--s6)}
.sol-grid.is-3{grid-template-columns:repeat(3,1fr)}
@media(max-width:1100px){.sol-grid.is-3{grid-template-columns:1fr}}
@media(max-width:880px){.sol-grid{grid-template-columns:1fr}}

.sol-card{
  position:relative;background:#fff;border:1px solid var(--sc);
  border-radius:16px;padding:var(--s8);box-shadow:var(--ss);
  transition:.30s cubic-bezier(.4,0,.2,1);overflow:hidden;
  display:flex;flex-direction:column}
.sol-card::before{content:"";position:absolute;left:0;top:0;width:3px;height:100%;
  background:var(--sb);opacity:0;transition:.30s ease}
.sol-card:hover{transform:translateY(-5px);box-shadow:var(--ssh);
  border-color:var(--sch)}
.sol-card:hover::before{opacity:1}

.sol-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--s5)}
.sol-ico{
  width:48px;height:48px;border-radius:14px;
  background:var(--sb-l);
  display:grid;place-items:center;
  box-shadow:0 2px 8px rgba(21,93,252,.08)}
.sol-ico svg{width:24px;height:24px;stroke:var(--sb)}
.sol-card .sol-cat{
  font-size:var(--fs-xs);font-weight:700;
  color:var(--sb);background:var(--sb-l);
  padding:5px 12px;border-radius:var(--r-full)}
.sol-card .sol-name{font-size:var(--fs-xl);font-weight:800;color:var(--st);margin:0 0 var(--s2)}

.sol-card .sol-scenes{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 var(--s5)}
.sol-card .sol-scenes .scene{
  font-size:var(--fs-xs);font-weight:600;
  background:var(--sb-l);color:var(--sb);
  padding:4px 11px;border-radius:var(--r-full);transition:.20s}
.sol-card .sol-scenes .scene:hover{background:var(--sb);color:#fff}

.sol-card .sol-caps{margin:0 0 var(--s6);padding:0;display:block}
.sol-card .sol-caps li{
  position:relative;padding-left:22px;font-size:var(--fs-sm);
  color:var(--sd);margin:6px 0;line-height:1.6;
  background:transparent;border:0;border-radius:0}
.sol-card .sol-caps li::before{
  content:"✓";position:absolute;left:0;top:2px;
  width:16px;height:16px;border-radius:50%;
  background:var(--sg-l);color:var(--sg);
  font-size:10px;font-weight:800;display:grid;place-items:center}

.sol-card .sol-link{
  margin-top:auto;display:inline-flex;align-items:center;gap:6px;
  font-weight:700;color:var(--sb);font-size:var(--fs-sm);
  background:transparent;padding:0;border-radius:0;box-shadow:none;
  transition:.22s}
.sol-card .sol-link:hover{opacity:.75;transform:none;filter:none}
.sol-card .sol-link .arr{transition:.25s}
.sol-card:hover .sol-link .arr{transform:translateX(5px)}

/* ---------- Timeline (About) ---------- */
.timeline{position:relative;margin-top:var(--s8);padding-left:var(--s8)}
.timeline::before{content:"";position:absolute;left:9px;top:6px;bottom:6px;width:2px;background:var(--border)}
.tl-item{position:relative;padding:0 0 var(--s8) var(--s6)}
.tl-item::before{content:"";position:absolute;left:-var(--s8);top:4px;width:20px;height:20px;border-radius:50%;
  background:var(--grad-brand);box-shadow:0 0 0 4px var(--c-primary-50)}
.tl-year{font-weight:800;color:var(--c-primary);font-size:var(--fs-lg)}
.tl-item h4{font-size:var(--fs-base);margin:4px 0}
.tl-item p{color:var(--muted);font-size:var(--fs-sm)}

/* ---------- Values ---------- */
.value-card{text-align:center;padding:var(--s8) var(--s6);background:#fff;border:1px solid var(--border-soft);border-radius:var(--r-lg);box-shadow:var(--sh-sm);transition:.25s}
.value-card:hover{transform:translateY(-4px);box-shadow:var(--sh-md);border-color:var(--border)}
.value-card .vc-ico{width:56px;height:56px;border-radius:16px;background:var(--grad-brand);display:grid;place-items:center;margin:0 auto var(--s4);box-shadow:0 8px 16px rgba(21,93,252,.22)}
.value-card .vc-ico svg{width:26px;height:26px;stroke:#fff}
.value-card h3{font-size:var(--fs-lg);margin-bottom:var(--s2);color:var(--text)}
.value-card p{color:var(--muted);font-size:var(--fs-sm);line-height:1.6}

.sp-id-field{margin-top:var(--s10);background:#fff;border:1px solid var(--border-soft);border-radius:var(--r-lg);padding:var(--s8);box-shadow:var(--sh-sm)}
.sp-id-head{display:flex;align-items:center;gap:var(--s4);flex-wrap:wrap;margin-bottom:var(--s5)}
.sp-id-label{font-size:var(--fs-xl);font-weight:800;color:var(--text)}
.sp-id-tag{font-size:var(--fs-sm);color:var(--c-primary-700);background:var(--c-primary-50);border:1px solid var(--c-primary-100);padding:4px 12px;border-radius:999px;font-weight:600}
.sp-id-types{display:flex;gap:var(--s4);flex-wrap:wrap;align-items:center}
.sp-logo{
  height:56px;width:auto;max-width:240px;object-fit:contain;display:block;
  background:#fff;border:1px solid var(--border-soft);border-radius:var(--r-sm);padding:6px 10px;
}
.sp-id-note{margin-top:var(--s5);color:var(--muted);font-size:var(--fs-sm);max-width:680px;line-height:1.85}

/* ---------- CTA band ---------- */
.cta-band{background:var(--grad-hero);color:#fff;border-radius:var(--r-lg);padding:var(--s12);text-align:center;margin:0 auto;max-width:var(--maxw)}
.cta-band h2,.section.dark .cta-band h2{color:#fff;font-size:var(--fs-3xl);margin-bottom:var(--s4)}
.cta-band p,.section.dark .cta-band p{color:rgba(255,255,255,.9);margin-bottom:var(--s6);font-size:var(--fs-lg)}

/* ---------- Contact ---------- */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s12);align-items:stretch}
@media(max-width:880px){.contact-grid{grid-template-columns:1fr;gap:var(--s10)}}
.contact-info{
  background:#fff;
  border:1px solid var(--border-soft);border-radius:var(--r-lg);
  padding:var(--s10) var(--s8);box-shadow:var(--sh-md);
  display:flex;flex-direction:column;
}
.ci-head{margin-bottom:var(--s6)}
.ci-eyebrow{display:inline-block;font-size:var(--fs-xs);font-weight:700;letter-spacing:.08em;color:var(--c-primary);background:var(--c-primary-50);padding:4px 14px;border-radius:999px;margin-bottom:var(--s3)}
.ci-title{font-size:var(--fs-xl);font-weight:800;color:var(--text);margin:0 0 var(--s2)}
.ci-sub{font-size:var(--fs-sm);color:var(--muted);margin:0;line-height:1.6}
.ci-list{display:flex;flex-direction:column}
.ci-list .ci{display:flex;gap:var(--s4);padding:var(--s5) 0;border-bottom:1px solid var(--border-soft)}
.ci-list .ci:first-child{padding-top:0}
.ci-list .ci:last-child{border-bottom:none}
.ci-list .ci:has(.ci-hit){padding:0}
.ci-list .ci-hit{
  display:flex;gap:var(--s4);align-items:flex-start;width:100%;
  padding:var(--s5) 0;
  text-decoration:none;color:inherit;cursor:pointer;
}
.ci-list .ci .ico{width:46px;height:46px;flex:none;border-radius:var(--r-sm);background:var(--c-primary-50);display:grid;place-items:center;transition:.25s}
.ci-list .ci:hover .ico{background:var(--c-primary)}
.ci-list .ci:hover .ico svg{stroke:#fff}
.ci-list .ci .ico svg{width:23px;height:23px;stroke:var(--c-primary);transition:.25s}
.ci-list .ci b{display:block;color:var(--text);font-size:var(--fs-base)}
.ci-list .ci span,.ci-list .ci address{color:var(--muted);font-size:var(--fs-sm);font-style:normal;margin:0}
.ci-service{display:flex;align-items:center;gap:var(--s4);margin:var(--s6) 0;padding:var(--s5) var(--s5);border-radius:var(--r-sm);background:var(--c-primary-50);border-left:4px solid var(--c-primary)}
.ci-service .sv-ico{width:44px;height:44px;flex:none;border-radius:var(--r-sm);background:#fff;display:grid;place-items:center;box-shadow:var(--sh-sm)}
.ci-service .sv-ico svg{width:23px;height:23px;stroke:var(--c-primary)}
.ci-service b{display:block;color:var(--text);font-size:var(--fs-base)}
.ci-service span{color:var(--text-soft);font-size:var(--fs-sm)}
.ci-actions{display:flex;gap:var(--s3);margin-top:auto;padding-top:var(--s6)}
.ci-actions .btn{flex:1}
.contact-wx{background:#fff;border:1px solid var(--border-soft);border-radius:var(--r-lg);padding:var(--s10) var(--s8);box-shadow:var(--sh-md);display:flex;align-items:center;justify-content:center}
.wx-card{text-align:center;width:100%;max-width:340px}
.wx-eyebrow{display:inline-block;font-size:var(--fs-xs);font-weight:700;letter-spacing:.08em;color:var(--c-primary);background:var(--c-primary-50);padding:4px 14px;border-radius:999px;margin-bottom:var(--s4)}
.wx-title{font-size:var(--fs-lg);font-weight:800;color:var(--text);margin:0 0 var(--s5)}
.wx-qr-wrap{padding:14px;background:#fff;border-radius:var(--r-md);border:1px solid var(--border);box-shadow:var(--sh-sm);display:inline-block;margin:0 auto}
.wx-qr{width:200px;height:200px;border-radius:10px;display:block}
.wx-cap{margin-top:var(--s5);font-size:var(--fs-sm);color:var(--text-soft);font-weight:600}
.wx-tips{list-style:none;margin:var(--s6) auto 0;padding:0;text-align:left;display:inline-block}
.wx-tips li{position:relative;padding-left:24px;margin:10px 0;font-size:var(--fs-sm);color:var(--muted);line-height:1.5}
.wx-tips li::before{content:"✓";position:absolute;left:0;top:1px;width:16px;height:16px;border-radius:50%;background:var(--c-primary-50);color:var(--c-primary);font-size:11px;font-weight:800;display:grid;place-items:center}

/* ---------- Footer ---------- */
.footer{background:var(--dark-bg);color:var(--dark-muted);padding:var(--s20) 0 var(--s8)}
.footer-top{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:var(--s10)}
@media(max-width:880px){.footer-top{grid-template-columns:1fr 1fr;gap:var(--s8)}}
@media(max-width:560px){.footer-top{grid-template-columns:1fr}}
.footer .brand{color:#fff;margin-bottom:var(--s4)}
.footer .brand:hover{color:#fff}
.footer-about{font-size:var(--fs-sm);max-width:320px;line-height:1.8}
.footer-col h4{color:#fff;font-size:var(--fs-base);margin-bottom:var(--s4)}
.footer-links li{padding:7px 0}
.footer-links a{font-size:var(--fs-sm);color:var(--dark-muted);transition:.2s}
.footer-links a:hover{color:#90c5ff;padding-left:4px}
.footer-bottom{border-top:1px solid var(--dark-border);margin-top:var(--s12);padding-top:var(--s6);
  display:flex;justify-content:space-between;flex-wrap:wrap;gap:var(--s3);font-size:var(--fs-xs)}
.beian-link{color:#99a1af;text-decoration:none;transition:color .2s}
.beian-link:hover{color:#90c5ff;text-decoration:underline}
.footer-social{display:flex;gap:var(--s3)}
.footer-social a{width:36px;height:36px;border-radius:50%;background:var(--dark-surface);display:grid;place-items:center;transition:.25s}
.footer-social a:hover{background:var(--c-primary);transform:translateY(-3px)}
.footer-social svg{width:18px;height:18px;stroke:#cbd5e1}
.footer-social a:hover svg{stroke:#fff}

/* ---------- Reveal animation ---------- */
.reveal{opacity:0;transform:translateY(28px);transition:.7s cubic-bezier(.2,.7,.2,1)}
.reveal.is-visible{opacity:1;transform:none}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-14px)}}
@media(prefers-reduced-motion:reduce){
  .reveal{opacity:1;transform:none;transition:none}
  .hero-art img{animation:none}
  html{scroll-behavior:auto}
  html.is-located body{transition:none}
}

.prod-catalog{
  position:fixed;z-index:9990;top:50%;transform:translateY(-50%);
  left:max(12px, calc(50% - var(--maxw) / 2 - 56px));
  display:flex;flex-direction:column;align-items:center;gap:10px;
}
.prod-catalog-btn{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;
  border:1px solid var(--border);background:#fff;color:var(--text);
  font-size:13px;font-weight:700;padding:14px 10px 16px;border-radius:999px;cursor:pointer;
  box-shadow:var(--sh-md);transition:.22s ease;
}
.prod-catalog-ico{width:20px;height:20px;flex:none}
#prod-toc-label{writing-mode:vertical-rl;letter-spacing:.18em;line-height:1}
.prod-catalog-btn:hover{border-color:var(--c-primary);color:var(--c-primary)}
.prod-catalog-btn[aria-expanded="true"]{
  background:var(--c-primary);color:#fff;border-color:var(--c-primary);
}
.prod-catalog-back{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  border:1px solid var(--border);background:#fff;color:var(--text);
  font-size:13px;font-weight:700;padding:12px 10px 14px;border-radius:999px;
  box-shadow:var(--sh-md);text-decoration:none;transition:.22s ease;
}
.prod-catalog-back[hidden]{display:none !important}
.prod-catalog-back svg{width:18px;height:18px;flex:none}
.prod-catalog-back span{writing-mode:vertical-rl;letter-spacing:.18em;line-height:1}
.prod-catalog-back:hover{border-color:var(--c-primary);color:var(--c-primary);background:var(--c-primary-50)}
.prod-catalog-panel{
  position:absolute;left:calc(100% + 12px);top:50%;transform:translateY(-50%);
  width:min(980px, calc(100vw - 88px));
  background:#fff;border:1px solid var(--border);border-radius:var(--r-lg);
  box-shadow:var(--sh-lg);padding:18px 20px 20px;
}
.prod-catalog-head{
  margin:0 0 14px;font-size:13px;font-weight:800;color:var(--text);letter-spacing:.04em;
}
.prod-toc-nav{
  display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:16px 20px;
}
.prod-toc-group{
  min-width:0;padding:12px;border:1px solid var(--border-soft);border-radius:12px;background:var(--bg-soft);
}
.prod-toc-scene{
  margin:0 0 8px;padding-bottom:8px;border-bottom:1px solid var(--border);
  font-size:12px;font-weight:800;color:var(--c-primary);letter-spacing:.04em;
}
.prod-toc-nav a{
  display:block;padding:6px 0;color:var(--text-soft);
  font-size:13px;font-weight:600;line-height:1.4;text-decoration:none;transition:.18s ease;
}
.prod-toc-nav a:hover,.prod-toc-nav a.is-on{color:var(--c-primary)}
.prod-toc-nav a.is-off,.prod-toc-group.is-off{display:none}
@media(max-width:1100px){
  .prod-catalog{left:10px}
  .prod-toc-nav{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:760px){
  .prod-catalog{
    left:12px;right:auto;top:auto;bottom:18px;transform:none;
    flex-direction:row;
  }
  .prod-catalog-btn{
    flex-direction:row;gap:6px;padding:10px 14px;
  }
  #prod-toc-label{writing-mode:horizontal-tb;letter-spacing:.04em}
  .prod-catalog-back{
    flex-direction:row;gap:4px;padding:10px 14px;
  }
  .prod-catalog-back span{writing-mode:horizontal-tb;letter-spacing:.04em}
  .prod-catalog-panel{
    left:0;top:auto;bottom:calc(100% + 10px);transform:none;
    width:min(420px, calc(100vw - 24px));
  }
  .prod-toc-nav{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
}

/* ---------- Products (software + hardware) ---------- */
#software,#hardware{scroll-margin-top:calc(var(--nav-h) + 96px)}

.products-body{padding-top:var(--s6)}
.products-body #software .board-head,
.products-body #hardware .board-head{margin-top:0}

.scene-bar{
  position:sticky;top:var(--nav-h);z-index:90;
  display:flex;align-items:center;justify-content:space-between;gap:var(--s5);flex-wrap:wrap;
  background:rgba(255,255,255,.96);backdrop-filter:blur(12px);
  border:1px solid var(--border);border-radius:var(--r-lg);
  padding:var(--s5) var(--s6);margin:0 0 var(--s8);
  box-shadow:var(--sh-sm);
}
.scene-bar-main{display:flex;align-items:center;gap:var(--s4);flex-wrap:wrap;min-width:0}
.scene-bar-label{font-size:var(--fs-sm);font-weight:700;color:var(--muted);flex:none}
.scene-chips{display:flex;flex-wrap:wrap;gap:var(--s3)}
.scene-chip{
  border:1px solid var(--border);background:#fff;color:var(--text-soft);
  font-size:var(--fs-sm);font-weight:600;line-height:1.2;padding:10px 16px;border-radius:var(--r-full);cursor:pointer;
  transition:.22s ease;
}
.scene-chip:hover{border-color:transparent;color:#fff;background:var(--c-primary);transform:translateY(-2px);
  box-shadow:0 4px 14px rgba(21,93,252,.25)}
.scene-chip.is-on{background:var(--c-primary);color:#fff;border-color:var(--c-primary)}
.scene-chip.is-on:hover{background:var(--c-primary-700);color:#fff;border-color:var(--c-primary-700)}
.scene-search{
  display:flex;align-items:center;gap:8px;flex:1;min-width:200px;max-width:280px;
  background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--r-full);padding:10px 16px;color:var(--muted);
}
.scene-search svg{width:18px;height:18px;flex:none}
.scene-search input{border:0;background:transparent;width:100%;outline:none;font:inherit;font-size:var(--fs-sm);color:var(--text)}
@media(max-width:760px){
  .scene-search{max-width:none;flex-basis:100%}
}
.scene-empty{margin:0 0 var(--s8);padding:18px;border:1px dashed var(--border);border-radius:12px;color:var(--muted);text-align:center;background:var(--bg-soft)}
.prod.is-off,.pgroup.is-off,#software.is-off,#hardware.is-off{display:none !important}

.board-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--s4);
  margin:var(--s14) 0 var(--s5);padding-bottom:var(--s4);border-bottom:2px solid var(--border-soft)}
.board-head h3{font-size:var(--fs-2xl);color:var(--text)}
.board-head .bh-sub{font-size:var(--fs-sm);color:var(--muted);white-space:nowrap}
.board-note{font-size:var(--fs-sm);color:var(--muted);background:var(--c-primary-50);
  border:1px dashed var(--c-primary-100);border-radius:var(--r-md);padding:var(--s4) var(--s5);margin-bottom:var(--s6);line-height:1.7}

.pgroup{scroll-margin-top:calc(var(--nav-h) + 96px)}
.pgroup-head{margin:var(--s10) 0 var(--s5)}
.pgroup-head h4{font-size:var(--fs-xl);color:var(--text);margin:var(--s2) 0 var(--s2)}
.pgroup-head p{font-size:var(--fs-sm);color:var(--muted);max-width:720px;line-height:1.6}

.prod-grid{display:flex;flex-direction:column;gap:var(--s10)}
.prod{
  display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);grid-template-areas:"shot copy";
  gap:var(--s8);align-items:center;background:#fff;border:1px solid var(--border-soft);
  border-radius:20px;padding:var(--s6);box-shadow:var(--sh-sm);transition:.28s;position:relative;overflow:hidden;
}
.prod:nth-child(even),.prod.is-flip{grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);grid-template-areas:"copy shot"}
.prod.is-plain{grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);grid-template-areas:"shot copy"}
.prod{scroll-margin-top:calc(var(--nav-h) + 96px)}
.prod:target,.prod.is-flash{
  border-color:#155dfc;
  box-shadow:0 0 0 3px rgba(21,93,252,.16),var(--sh-lg);
  transition:box-shadow .45s ease,border-color .45s ease,transform .3s ease;
}
.prod-shot{grid-area:shot}
.prod-copy{grid-area:copy;min-width:0}
.prod:hover{box-shadow:var(--sh-lg);border-color:#bedbff}
.prod-top{display:flex;align-items:center;gap:var(--s3);margin-bottom:var(--s4)}
.prod-ico{width:42px;height:42px;flex:none;border-radius:var(--r-sm);background:var(--c-primary-50);display:grid;place-items:center}
.prod-ico svg{width:22px;height:22px;stroke:var(--c-primary)}
.prod-name{font-size:var(--fs-lg);font-weight:700;color:var(--text);line-height:1.3}
.prod-cat{margin-left:auto;font-size:var(--fs-xs);font-weight:700;color:var(--c-primary);
  background:var(--c-primary-50);padding:4px 10px;border-radius:999px;white-space:nowrap}
.prod.hw .prod-cat{color:#016630;background:var(--c-green-50)}
.prod.hw .prod-ico{background:var(--c-green-50)}
.prod.hw .prod-ico svg{stroke:var(--c-green)}
.prod.hw .prod-shot{background:linear-gradient(165deg,#ecfdf5,#f8fafc);border-color:#bbf7d0}

.prod-shot{
  background:linear-gradient(165deg,#eff6ff,#f8fafc);border:1px solid #dbeafe;
  border-radius:16px;padding:16px;min-height:320px;aspect-ratio:4/3;
  display:grid;place-items:center;overflow:hidden;
}
.prod-shot img{width:100%;height:100%;object-fit:cover;display:block}
.ui-win{width:100%;height:100%;min-height:0;background:#fff;border:1px solid #e5e7eb;border-radius:12px;box-shadow:var(--sh-md);overflow:hidden;display:flex;flex-direction:column}
.ui-top{display:flex;align-items:center;gap:6px;padding:10px 14px;background:#f8fafc;border-bottom:1px solid #e5e7eb;font-size:12px;font-weight:700;color:#364153}
.ui-top i{width:8px;height:8px;border-radius:50%;background:#fb2c36}
.ui-top i:nth-child(2){background:#f99c00}
.ui-top i:nth-child(3){background:#00c758}
.ui-top b{margin-left:8px;font-size:12px;font-weight:700;color:#101828;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ui-canvas{padding:18px;min-height:240px;flex:1}
.ui-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:14px}
.ui-kpis span{height:56px;border-radius:8px;background:#eff6ff;display:block}
.ui-bars{display:flex;align-items:flex-end;gap:8px;height:120px;padding:0 4px}
.ui-bars i{flex:1;border-radius:6px 6px 2px 2px;background:#3080ff;opacity:.85}
.ui-list{display:flex;flex-direction:column;gap:8px}
.ui-list span{height:12px;border-radius:6px;background:#e5e7eb;display:block}
.ui-list span:nth-child(2){width:78%}
.ui-list span:nth-child(3){width:62%}
.ui-phone{width:140px;height:248px;margin:0 auto;border:8px solid #101828;border-radius:22px;background:#fff;padding:12px 10px;box-shadow:var(--sh-md)}
.ui-phone .notch{width:42px;height:6px;border-radius:4px;background:#334155;margin:0 auto 10px}
.ui-table{display:grid;gap:6px}
.ui-table b{display:grid;grid-template-columns:1.2fr .8fr .6fr;gap:6px}
.ui-table b i{height:10px;border-radius:4px;background:#dbeafe;display:block}
.ui-dev{width:180px;height:220px;margin:0 auto;border-radius:18px;background:#fff;border:1px solid #bbf7d0;box-shadow:var(--sh-md);padding:14px}
.ui-dev .screen{height:118px;border-radius:10px;background:linear-gradient(180deg,#d1fae5,#ecfdf5);margin-bottom:12px}
.ui-dev .keys{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.ui-dev .keys i{height:16px;border-radius:4px;background:#e2e8f0;display:block}

.theme-ai .ui-kpis span{background:#f5f3ff}
.theme-ai .ui-bars i{background:#9810fa}
.theme-member .ui-kpis span{background:#ffe4e6}
.theme-member .ui-bars i{background:#fb2c36}
.theme-pos .ui-bars i{background:#155dfc}
.theme-search .ui-kpis span{background:#dbeafe}
.theme-ads .ui-kpis span{background:#ffedd5}
.theme-ads .ui-bars i{background:#fe6e00}
.theme-cafe .ui-kpis span{background:#fef3c6}
.theme-cafe .ui-bars i{background:#f99c00}
.theme-wx .ui-kpis span{background:#dcfce7}
.theme-wx .ui-bars i{background:#00c758}
.theme-flash .ui-kpis span{background:#fff7ed}
.theme-flash .ui-bars i{background:#fe6e00}
.theme-b2g .ui-kpis span{background:#ecfdf5}
.theme-b2g .ui-bars i{background:#00c758}

.prod-fields{display:flex;flex-direction:column}
.prod-field{display:grid;grid-template-columns:84px 1fr;gap:var(--s3);padding:var(--s3) 0;border-top:1px dashed var(--border)}
.prod-field:first-child{border-top:none}
.prod-field .k{font-size:var(--fs-xs);font-weight:800;color:var(--muted);padding-top:2px;line-height:1.4}
.prod-field .v{font-size:var(--fs-sm);color:var(--text-soft);line-height:1.65}
.prod-field .v b{color:var(--text);font-weight:700}
@media(max-width:880px){
  .prod,.prod:nth-child(even),.prod.is-flip,.prod.is-plain{grid-template-columns:1fr;grid-template-areas:"shot" "copy"}
  .prod-shot{min-height:280px;padding:16px}
}
@media(max-width:420px){.prod-field{grid-template-columns:1fr;gap:4px}.prod-field .k{color:var(--c-primary)}}

.prod-tags{display:flex;flex-wrap:wrap;gap:var(--s2);margin-top:var(--s4);padding-top:var(--s4);border-top:1px solid var(--border-soft)}
.prod-tag{font-size:var(--fs-xs);font-weight:600;color:var(--c-primary);background:var(--c-primary-50);padding:4px 10px;border-radius:999px}
.prod.hw .prod-tag{color:#016630;background:var(--c-green-50)}

/* 硬件：图墙，只看图和名称，不跟软件卡左右交错 */
#hardware .prod-grid{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s6);
}
#hardware .prod.hw,
#hardware .prod.hw.is-flip,
#hardware .prod.hw.is-plain,
#hardware .prod.hw:nth-child(even){
  display:flex;flex-direction:column;align-items:stretch;gap:0;padding:0;
  border-radius:16px;
}
#hardware .prod.hw .prod-shot{
  grid-area:auto;width:100%;min-height:0;aspect-ratio:4/3;padding:18px;
  border:0;border-radius:0;background:#f4f7fb;
  display:flex;align-items:center;justify-content:center;
}
#hardware .prod.hw .prod-shot img{
  width:auto;height:auto;max-width:100%;max-height:100%;
  object-fit:contain;object-position:center;
}
#hardware .prod.hw .prod-copy{
  grid-area:auto;padding:14px 16px 16px;
  display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;
}
#hardware .prod.hw .prod-name{flex:1 1 100%;font-size:var(--fs-base);margin:0}
#hardware .prod.hw .prod-cat{margin-left:0}
#hardware .prod.hw .hw-kind{font-size:var(--fs-xs);font-weight:600;color:var(--muted)}
#hardware .prod.hw .hw-tag{
  font-size:var(--fs-xs);font-weight:600;color:#475569;background:#f1f5f9;
  padding:3px 8px;border-radius:999px;line-height:1.3;
}
#hardware .pgroup:first-child .pgroup-head{margin-top:0}
#hardware .prod.hw .prod-ico,
#hardware .prod.hw .prod-fields,
#hardware .prod.hw .prod-tags,
#hardware .prod.hw .hw-specs,
#hardware .prod.hw .hw-extra{display:none}
@media(max-width:960px){
  #hardware .prod-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:560px){
  #hardware .prod-grid{grid-template-columns:1fr}
}
#hardware .prod.hw .prod-shot{
  cursor:zoom-in;position:relative;
}
#hardware .prod.hw .prod-shot::after{
  content:"";position:absolute;right:12px;bottom:12px;width:32px;height:32px;border-radius:8px;
  background:rgba(16,24,40,.55) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' fill='none' stroke='%23fff' stroke-width='2'%3E%3Ccircle cx='8' cy='8' r='5'/%3E%3Cpath d='M12 12l4 4M8 6v4M6 8h4'/%3E%3C/svg%3E") center/18px no-repeat;
  opacity:0;transition:opacity .2s;
  pointer-events:none;
}
#hardware .prod.hw .prod-shot:hover::after,
#hardware .prod.hw .prod-shot:focus-visible::after{opacity:1}

.hw-lightbox{
  position:fixed;inset:0;z-index:240;display:flex;align-items:center;justify-content:center;
  padding:32px 64px;background:rgba(15,23,42,.78);backdrop-filter:blur(8px);
}
.hw-lightbox[hidden]{display:none}
.hw-lightbox-frame{position:relative;width:min(1040px,100%)}
.hw-lightbox-panel{
  position:relative;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(260px,.85fr);
  width:100%;height:min(600px,calc(100vh - 72px));max-height:calc(100vh - 64px);
  background:#fff;border-radius:16px;overflow:hidden;box-shadow:0 24px 64px rgba(0,0,0,.35);
}
.hw-lightbox-media{
  background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:20px 20px 16px;min-height:0;gap:12px;min-width:0;height:100%;
}
.hw-lightbox-stage{
  position:relative;width:100%;aspect-ratio:4/3;flex:1 1 auto;min-height:0;
  display:grid;place-items:center;overflow:hidden;
  background:#f4f7fb;border:1px solid #d7dee8;border-radius:12px;
}
.hw-lightbox-img{
  display:block;width:auto;height:auto;max-width:100%;max-height:100%;
  object-fit:contain;object-position:center;justify-self:center;align-self:center;
}
.hw-lightbox-thumbs{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;width:100%;flex:none}
.hw-lightbox-thumbs[hidden]{display:none}
.hw-lightbox-thumb{
  width:68px;height:52px;padding:0;border:2px solid transparent;border-radius:8px;
  overflow:hidden;background:#fff;cursor:pointer;box-shadow:0 0 0 1px #e5e7eb;
}
.hw-lightbox-thumb.is-on{border-color:#155dfc;box-shadow:0 0 0 1px #155dfc}
.hw-lightbox-thumb img{width:100%;height:100%;object-fit:contain;display:block;background:#f4f7fb}
.hw-lightbox-info{padding:24px 24px 52px;overflow:auto;min-width:0;height:100%;max-height:none}
.hw-lightbox-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px}
.hw-lightbox-cat,
.hw-lightbox-scene,
.hw-lightbox-tag{
  margin:0;font-size:var(--fs-xs);font-weight:700;display:inline-block;padding:4px 10px;border-radius:999px;
}
.hw-lightbox-cat{color:#016630;background:var(--c-green-50)}
.hw-lightbox-scene{color:var(--c-primary);background:var(--c-primary-50)}
.hw-lightbox-tag{color:#475569;background:#f1f5f9;font-weight:600}
.hw-lightbox-scene[hidden],
.hw-lightbox-tag[hidden]{display:none}
.hw-lightbox-title{margin:0 0 6px;font-size:var(--fs-xl);color:var(--text);line-height:1.3}
.hw-lightbox-kind{margin:0 0 12px;font-size:var(--fs-sm);color:var(--muted)}
.hw-lightbox-h{margin:0 0 8px;font-size:var(--fs-sm);font-weight:800;color:var(--text)}
.hw-lightbox-specs{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px}
.hw-lightbox-specs li{
  position:relative;padding:0 0 0 14px;font-size:13px;color:var(--text-soft);line-height:1.5;
}
.hw-lightbox-specs li::before{
  content:"";position:absolute;left:0;top:.55em;width:6px;height:6px;border-radius:50%;background:var(--c-primary);
}
.hw-lightbox-idx{
  position:absolute;right:16px;bottom:14px;z-index:3;margin:0;
  padding:6px 12px;border-radius:999px;
  background:#0f172a;color:#fff;
  font-size:13px;font-weight:700;letter-spacing:.04em;line-height:1.2;
}
.hw-lightbox-idx[hidden]{display:none}
.hw-lightbox-close,
.hw-lightbox-prev,
.hw-lightbox-next{
  position:absolute;z-index:2;width:40px;height:40px;border:0;border-radius:999px;cursor:pointer;
  background-repeat:no-repeat;background-position:center;
}
.hw-lightbox-close{
  top:12px;right:12px;
  background-color:rgba(16,24,40,.55);box-shadow:0 4px 12px rgba(0,0,0,.18);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' fill='none' stroke='%23fff' stroke-width='2'%3E%3Cpath d='M4 4l10 10M14 4L4 14'/%3E%3C/svg%3E");
}
.hw-lightbox-close:hover{background-color:rgba(16,24,40,.78)}
.hw-lightbox-prev,
.hw-lightbox-next{
  top:50%;transform:translateY(-50%);
  background-color:rgba(255,255,255,.18);
}
.hw-lightbox-prev{
  left:-52px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' fill='none' stroke='%23fff' stroke-width='2'%3E%3Cpath d='M11 4L5 9l6 5'/%3E%3C/svg%3E");
}
.hw-lightbox-next{
  right:-52px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' fill='none' stroke='%23fff' stroke-width='2'%3E%3Cpath d='M7 4l6 5-6 5'/%3E%3C/svg%3E");
}
.hw-lightbox-prev:hover,
.hw-lightbox-next:hover{background-color:rgba(255,255,255,.32)}
.hw-lightbox-prev[hidden],
.hw-lightbox-next[hidden]{display:none}
@media(max-width:880px){
  .hw-lightbox{padding:16px 52px}
  .hw-lightbox-panel{grid-template-columns:1fr;height:min(92vh,calc(100vh - 32px));max-height:calc(100vh - 32px);overflow:auto}
  .hw-lightbox-stage{flex:none;max-height:36vh;aspect-ratio:4/3}
  .hw-lightbox-img{width:auto;height:auto;max-width:100%;max-height:100%}
  .hw-lightbox-prev{left:-46px}
  .hw-lightbox-next{right:-46px}
}
