/* ============================================
   甘肃立方电子技术服务有限公司 - 主样式表
   2026-09-15 UI 优化版
   - 引入设计令牌(CSS 变量),统一色彩/圆角/阴影/间距
   - 修复失效的悬停态、返回顶部可点但不可见、表格无边框等问题
   - 新增键盘焦点样式、减弱动效、打印样式、长文阅读进度
   - 全站 12k 页面共用本文件,类名保持向后兼容
   ============================================ */

/* ---------- 设计令牌 ---------- */
:root {
  /* 品牌色: 取自主 logo 深蓝 #184890，交互色沿用站点既有 #0071e3 */
  --brand: #0b4f9e;
  --accent: #0071e3;
  --accent-dark: #0058b0;
  --accent-soft: #e8f1fd;
  --ink: #1d1d1f;
  --ink-2: #3a3a3c;
  --muted: #6e6e73;
  --muted-2: #86868b;
  --line: #e5e5ea;
  --line-2: #d2d2d7;
  --bg: #fff;
  --bg-soft: #f5f5f7;
  --ok: #34c759;
  --danger: #ff3b30;
  --radius-sm: 6px;
  --radius: 8px;
  --radius-lg: 12px;
  --radius-pill: 999px;
  --shadow-sm: 0 2px 8px rgba(10,31,60,.06);
  --shadow: 0 8px 24px rgba(10,31,60,.10);
  --shadow-lg: 0 14px 32px rgba(0,113,227,.15);
  --nav-h: 76px;
  --ease: cubic-bezier(.4,0,.2,1);
  --dur: .25s;
  --font: -apple-system, BlinkMacSystemFont, "Segoe UI", "source han sans cn",
          "source han sans sc", "noto sans cjk sc", "PingFang SC",
          "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
}

* { margin:0; padding:0; box-sizing:border-box; }
html { -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
body {
  font-family:var(--font);
  color:var(--ink);
  font-size:16px;
  background:var(--bg);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
a { color:var(--ink); text-decoration:none; transition:color var(--dur) var(--ease); }
ul,li { list-style:none; }
img { border:0; display:block; max-width:100%; }
.w { width:1200px; margin:0 auto; }
.clearfix:after { content:""; display:block; clear:both; }
::selection { background:var(--accent); color:#fff; }

/* 键盘可达性：仅在键盘导航时显示焦点环 */
a:focus-visible, button:focus-visible, input:focus-visible,
textarea:focus-visible, [tabindex]:focus-visible {
  outline:2px solid var(--accent);
  outline-offset:2px;
  border-radius:2px;
}
.skip-link {
  position:absolute; left:-9999px; top:0; z-index:999;
  background:var(--accent); color:#fff; padding:10px 18px; border-radius:0 0 var(--radius) 0;
}
.skip-link:focus { left:0; }

/* 主内容锚点：跳过导航时不被吸顶导航遮挡 */
#main { display:block; scroll-margin-top:calc(var(--nav-h) + 10px); }
#main:focus { outline:none; }

/* ---------- 顶部信息栏 ---------- */
.topbar { background:var(--ink); color:rgba(255,255,255,.85); font-size:13px; height:36px; line-height:36px; }
.topbar .w { display:flex; justify-content:space-between; }
.topbar-r a { color:rgba(255,255,255,.85); margin-left:18px; }
.topbar-r a:hover { color:#0a84ff; }
.topbar .hotline { color:#0a84ff; font-weight:bold; }

/* ---------- 主导航 ---------- */
.main-nav { background:#fff; box-shadow:0 2px 12px rgba(10,31,60,.08); position:sticky; top:0; z-index:100; }
.main-nav .w { display:flex; align-items:center; justify-content:space-between; height:var(--nav-h); }
.logo { display:flex; align-items:center; height:60px; flex:0 0 auto; }
.logo .logo-img { height:60px; width:auto; }
.nav-list { display:flex; }
.nav-list > li { position:relative; }
.nav-list > li > a { display:block; padding:0 16px; line-height:var(--nav-h); font-size:16px; color:var(--ink); font-weight:500; white-space:nowrap; transition:color var(--dur) var(--ease); }
.nav-list > li > a:hover, .nav-list > li.active > a { color:var(--accent); }
.nav-list > li.active > a { font-weight:700; }
.nav-list > li > a:after { content:""; position:absolute; left:16px; right:16px; bottom:18px; height:2px; background:var(--accent); transform:scaleX(0); transition:transform var(--dur) var(--ease); }
/* 桌面导航 993-1240px 收紧：2 列布局下 8 个栏目 + logo 会挤到折行，
   折行后链接高度翻倍(152px)并遮住下拉子菜单。 */
@media (min-width:993px) and (max-width:1240px) {
  .logo { height:44px; }
  .logo .logo-img { height:44px; }
  .nav-list > li > a { font-size:15px; padding:0 12px; }
  .nav-list > li > a:after { left:12px; right:12px; }
}
.nav-list > li:hover > a:after, .nav-list > li.active > a:after { transform:scaleX(1); }
.nav-list > li:focus-within > a:after { transform:scaleX(1); }
.sub-menu { position:absolute; top:var(--nav-h); left:50%; transform:translateX(-50%); background:var(--ink); min-width:170px; padding:6px 0; display:none; box-shadow:0 8px 24px rgba(10,31,60,.25); border-radius:0 0 var(--radius-sm) var(--radius-sm); }
.nav-list > li:hover .sub-menu, .nav-list > li:focus-within .sub-menu { display:block; }
.sub-menu a { display:block; color:rgba(255,255,255,.85); font-size:14px; padding:10px 22px; white-space:nowrap; transition:background var(--dur) var(--ease); }
.sub-menu a:hover { background:var(--accent); color:#fff; }

/* ---------- banner ---------- */
.banner { position:relative; height:480px; overflow:hidden; }
.banner-slide { position:absolute; inset:0; opacity:0; transition:opacity .8s; display:flex; align-items:center; }
.banner-slide.active { opacity:1; }
.banner-text { max-width:760px; color:#fff; }
.banner-text .tag { display:inline-block; background:rgba(255,255,255,.15); border:1px solid rgba(255,255,255,.35); padding:5px 18px; border-radius:var(--radius-pill); font-size:14px; margin-bottom:22px; letter-spacing:2px; }
.banner-text h1, .banner-text .banner-h { font-size:46px; font-weight:700; letter-spacing:2px; line-height:1.25; text-shadow:0 2px 12px rgba(0,0,0,.25); text-wrap:balance; }
.banner-text p { font-size:18px; margin:18px 0 34px; color:rgba(255,255,255,.9); letter-spacing:1px; line-height:1.7; }
.btn { display:inline-block; padding:13px 38px; border-radius:4px; font-size:16px; transition:all var(--dur) var(--ease); letter-spacing:1px; cursor:pointer; }
.btn-light { background:#fff; color:var(--accent); }
.btn-light:hover { background:var(--accent-soft); transform:translateY(-2px); }
.btn-primary { background:var(--accent); color:#fff; }
.btn-primary:hover { background:var(--accent-dark); transform:translateY(-2px); }
.btn-outline { border:1px solid var(--accent); color:var(--accent); }
.btn-outline:hover { background:var(--accent); color:#fff; }
.banner-dots { position:absolute; bottom:22px; left:50%; transform:translateX(-50%); display:flex; gap:10px; z-index:5; }
.banner-dots span { width:34px; height:4px; background:rgba(255,255,255,.4); border-radius:2px; cursor:pointer; transition:background .3s; }
.banner-dots span.active { background:#fff; }
.banner-arrow { position:absolute; top:50%; transform:translateY(-50%); width:48px; height:48px; background:rgba(0,0,0,.25); color:#fff; text-align:center; line-height:44px; font-size:26px; border:0; border-radius:50%; z-index:5; cursor:pointer; user-select:none; transition:background var(--dur) var(--ease); }
.banner-arrow:hover { background:rgba(11,79,158,.85); }
.banner-prev { left:24px; } .banner-next { right:24px; }

/* ---------- 通用 section ---------- */
.section { padding:70px 0; }
.section-head { text-align:center; margin-bottom:46px; }
.section-head h2 { font-size:32px; color:var(--ink); letter-spacing:2px; position:relative; display:inline-block; padding-bottom:16px; text-wrap:balance; }
.section-head h2:after { content:""; position:absolute; bottom:0; left:50%; transform:translateX(-50%); width:56px; height:3px; background:linear-gradient(90deg,var(--accent),#0a84ff); border-radius:2px; }
.section-head p { color:var(--muted); font-size:15px; margin-top:14px; letter-spacing:1px; }
.section-more { text-align:center; margin-top:38px; }

/* ---------- 系统方案卡片 ---------- */
.idx-solutions { background:var(--bg-soft); }
.solution-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
.solution-card { background:#fff; border-radius:var(--radius); padding:34px 28px; transition:all .3s var(--ease); border:1px solid var(--bg-soft); position:relative; overflow:hidden; display:block; }
.solution-card:before { content:""; position:absolute; top:0; left:0; width:100%; height:3px; background:linear-gradient(90deg,var(--accent),#0a84ff); transform:scaleX(0); transform-origin:left; transition:transform .3s var(--ease); }
.solution-card:hover { transform:translateY(-6px); box-shadow:var(--shadow-lg); }
.solution-card:hover:before { transform:scaleX(1); }
.solution-icon { width:58px; height:58px; border-radius:var(--radius-lg); background:linear-gradient(135deg,var(--accent),#0a84ff); color:#fff; display:flex; align-items:center; justify-content:center; font-size:26px; margin-bottom:20px; }
.solution-card h3 { font-size:19px; color:var(--ink); margin-bottom:12px; }
.solution-card p { font-size:14px; color:var(--muted); line-height:1.7; height:66px; overflow:hidden; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; }
.solution-card .more { display:inline-block; margin-top:16px; font-size:14px; color:var(--accent); }

/* ---------- 公司实力数据 ---------- */
.idx-stats { background:linear-gradient(120deg,var(--ink) 0%,var(--ink) 60%,var(--brand) 100%); color:#fff; }
.idx-stats .section-head h2 { color:#fff; }
.idx-stats .section-head h2:after { background:linear-gradient(90deg,#0a84ff,#0a84ff); }
.idx-stats .section-head p { color:rgba(255,255,255,.65); }
.stats-grid { display:grid; grid-template-columns:repeat(5,1fr); gap:20px; text-align:center; }
.stat-item { padding:26px 10px; border-radius:var(--radius); background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.12); }
.stat-num { font-size:44px; font-weight:800; color:#fff; line-height:1; }
.stat-unit { display:inline-block; font-size:16px; color:#0a84ff; margin-left:4px; }
.stat-label { margin-top:12px; font-size:14px; color:rgba(255,255,255,.75); letter-spacing:1px; }

/* ---------- 成功案例 ---------- */
.case-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
.case-card { border-radius:var(--radius); overflow:hidden; background:#fff; border:1px solid var(--bg-soft); transition:all .3s var(--ease); display:block; }
.case-card:hover { transform:translateY(-6px); box-shadow:var(--shadow-lg); }
.case-img { height:190px; position:relative; overflow:hidden; background:var(--bg-soft); }
.case-img .ph { width:100%; height:100%; display:flex; align-items:center; justify-content:center; font-size:52px; color:rgba(255,255,255,.9); object-fit:cover; }
.case-img img { transition:transform .5s var(--ease); }
.case-card:hover .case-img img { transform:scale(1.04); }
.case-info { padding:22px; }
.case-info h3 { font-size:17px; color:var(--ink); line-height:1.5; height:52px; overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.case-info p { font-size:13px; color:var(--muted); line-height:1.7; margin-top:10px; height:44px; overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.case-info .case-more { display:inline-block; margin-top:12px; font-size:13px; color:var(--accent); }

/* ---------- 新闻资讯 ---------- */
.idx-news { background:var(--bg-soft); }
.news-layout { display:grid; grid-template-columns:420px 1fr; gap:36px; }
.news-top { display:block; background:#fff; border-radius:var(--radius); overflow:hidden; border:1px solid var(--bg-soft); transition:all .3s var(--ease); }
.news-top:hover { box-shadow:var(--shadow-lg); transform:translateY(-4px); }
.news-top-img { height:220px; overflow:hidden; background:var(--bg-soft); }
.news-top-img .ph { width:100%; height:100%; display:flex; align-items:center; justify-content:center; font-size:56px; color:rgba(255,255,255,.9); object-fit:cover; }
.news-top-body { padding:22px; }
.news-top h3 { font-size:18px; color:var(--ink); line-height:1.5; height:54px; overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.news-top p { font-size:13px; color:var(--muted); line-height:1.7; margin-top:10px; height:44px; overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.news-date { display:inline-block; margin-top:12px; font-size:13px; color:var(--accent); }
.news-list li { border-bottom:1px dashed var(--line-2); }
.news-list li:last-child { border-bottom:0; }
.news-list li a { display:flex; justify-content:space-between; align-items:center; padding:16px 4px; transition:color var(--dur) var(--ease); }
.news-list li a:hover .news-title { color:var(--accent); }
.news-title { font-size:15px; color:var(--ink); flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; padding-right:16px; }
.news-list .news-date { margin:0; color:var(--muted); }
.news-date-ico { color:var(--accent); margin-right:6px; }

/* ---------- 页脚 ---------- */
.footer { background:var(--ink); color:rgba(255,255,255,.7); margin-top:0; }
.footer-cols { display:grid; grid-template-columns:2fr 1fr 1fr 1.4fr; gap:40px; padding:60px 0 46px; }
.footer-col-brand .footer-logo { margin-bottom:18px; display:flex; align-items:center; gap:10px; }
.footer-col-brand .footer-logo-img { height:42px; width:auto; }
.footer-col-brand .footer-logo img { height:42px; width:auto; }
/* 无图时的文字标识（KB 生成页早期版本用到） */
.logo-mark { display:inline-flex; align-items:center; justify-content:center; width:42px; height:42px;
  border-radius:var(--radius-sm); background:linear-gradient(135deg,var(--accent),var(--brand));
  color:#fff; font-weight:800; font-size:16px; letter-spacing:1px; }
.footer-col-brand .footer-logo b { color:#fff; font-size:17px; }
.footer-col-brand > p { font-size:13px; line-height:1.9; color:rgba(255,255,255,.55); }
.footer-col h4 { color:#fff; font-size:16px; margin-bottom:20px; letter-spacing:1px; }
.footer-col a { display:block; font-size:13px; color:rgba(255,255,255,.6); padding:6px 0; transition:all var(--dur) var(--ease); }
.footer-col a:hover { color:#0a84ff; padding-left:4px; }
.footer-contact p { font-size:13px; padding:6px 0; color:rgba(255,255,255,.7); }
.footer-contact i { font-style:normal; color:rgba(255,255,255,.45); margin-right:6px; }
.footer-bottom { border-top:1px solid rgba(255,255,255,.1); padding:20px 0; text-align:center; font-size:13px; color:rgba(255,255,255,.45); }

/* ---------- 返回顶部（未显示时不可聚焦、不可点击） ---------- */
.back-top { position:fixed; right:26px; bottom:40px; width:46px; height:46px; background:var(--accent); color:#fff; border-radius:var(--radius-sm); text-align:center; line-height:46px; font-size:18px; cursor:pointer; opacity:0; visibility:hidden; pointer-events:none; transition:opacity .3s var(--ease), visibility .3s; z-index:99; box-shadow:0 4px 16px rgba(11,79,158,.4); }
.back-top.show { opacity:1; visibility:visible; pointer-events:auto; }
.back-top:hover { background:var(--accent-dark); }

/* ---------- 内页 banner ---------- */
.page-banner { height:280px; display:flex; align-items:center; justify-content:center; flex-direction:column; color:#fff; background:linear-gradient(120deg,var(--ink) 0%,var(--ink) 60%,var(--brand) 100%); padding:0 20px; text-align:center; }
.page-banner h1, .page-banner .pb-title { font-size:36px; letter-spacing:3px; text-wrap:balance; }
.page-banner p { margin-top:12px; font-size:14px; color:rgba(255,255,255,.65); letter-spacing:2px; }
.breadcrumb { background:var(--bg-soft); border-bottom:1px solid var(--bg-soft); }
.breadcrumb .w { font-size:13px; color:var(--muted); line-height:48px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.breadcrumb a { color:var(--muted); }
.breadcrumb a:hover { color:var(--accent); }

/* ---------- 列表页 ---------- */
.list-wrap { padding:56px 0; min-height:420px; }
.list-item { display:flex; gap:26px; padding:28px 0; border-bottom:1px solid var(--bg-soft); transition:background .2s var(--ease); }
.list-item:hover { background:var(--bg-soft); }
.list-item .li-img { width:230px; height:150px; flex-shrink:0; border-radius:var(--radius-sm); overflow:hidden; background:var(--bg-soft); }
.list-item .li-img .ph { width:100%; height:100%; display:flex; align-items:center; justify-content:center; font-size:42px; color:rgba(255,255,255,.9); object-fit:cover; }
.list-item .li-body { flex:1; }
.list-item h3 { font-size:19px; color:var(--ink); }
.list-item h3 a:hover { color:var(--accent); }
.list-item .li-desc { font-size:14px; color:var(--muted); line-height:1.8; margin-top:12px; height:50px; overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.list-item .li-meta { margin-top:14px; font-size:13px; color:var(--muted); display:flex; gap:20px; }
.list-item .li-meta .more { color:var(--accent); }

/* ---------- 详情页 ---------- */
.detail-wrap { padding:56px 0; }
.detail-box { max-width:900px; margin:0 auto; }
.detail-box h1 { font-size:28px; color:var(--ink); text-align:center; line-height:1.5; text-wrap:balance; }
.detail-meta { text-align:center; margin:20px 0 34px; padding-bottom:24px; border-bottom:1px solid var(--bg-soft); font-size:14px; color:var(--muted); }
.detail-meta span { margin:0 12px; }
.detail-content { font-size:16px; color:var(--ink); line-height:2; }
.detail-content h2 { font-size:21px; color:var(--ink); margin:30px 0 14px; padding-left:14px; border-left:4px solid var(--accent); scroll-margin-top:calc(var(--nav-h) + 16px); }
.detail-content h3 { font-size:17px; color:var(--accent); margin:22px 0 10px; scroll-margin-top:calc(var(--nav-h) + 16px); }
.detail-content p { margin-bottom:14px; text-indent:0; }
.detail-content ul, .detail-content ol { margin:0 0 16px 22px; }
.detail-content li { list-style:disc; margin:8px 0; line-height:1.95; }
.detail-content ol li { list-style:decimal; }
.detail-content strong, .detail-content b { color:var(--ink); font-weight:600; }
.detail-content img { border-radius:var(--radius); margin:16px 0; }
.detail-prenext { margin-top:44px; padding-top:24px; border-top:1px solid var(--bg-soft); font-size:14px; color:var(--ink); }
.detail-prenext p { margin:8px 0; }
.detail-prenext a { color:var(--accent); }

/* ---------- 正文表格（KB 技术文章大量使用） ---------- */
.detail-content table, .kb-table {
  width:100%; border-collapse:collapse; font-size:14.5px; margin:16px 0;
}
.detail-content .table-wrap, .kb-table-wrap { overflow-x:auto; margin:16px 0; -webkit-overflow-scrolling:touch; }
.detail-content th, .kb-table th {
  background:var(--bg-soft); font-weight:600; text-align:left;
  border:1px solid var(--line); padding:10px 12px; vertical-align:top; color:var(--ink);
}
.detail-content td, .kb-table td {
  border:1px solid var(--line); padding:10px 12px; vertical-align:top; color:var(--ink-2); line-height:1.75;
}
.detail-content tbody tr:nth-child(even) td, .kb-table tbody tr:nth-child(even) td { background:#fafafb; }
.detail-content tbody tr:hover td, .kb-table tbody tr:hover td { background:var(--accent-soft); }

/* ---------- 单页（关于/联系） ---------- */
.page-content { font-size:16px; color:var(--ink); line-height:2; max-width:960px; margin:0 auto; }
.page-content h2 { font-size:22px; color:var(--ink); margin:32px 0 16px; padding-left:14px; border-left:4px solid var(--accent); }
.page-content h3 { font-size:17px; color:var(--accent); margin:20px 0 10px; }
.page-content p { margin-bottom:12px; }
.contact-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:22px; margin:30px 0; }
.contact-card { background:var(--bg-soft); border:1px solid var(--bg-soft); border-radius:var(--radius); padding:28px; transition:all var(--dur) var(--ease); }
.contact-card:hover { background:#fff; border-color:var(--accent); box-shadow:var(--shadow-sm); }
.contact-card b { display:block; font-size:17px; color:var(--ink); margin-bottom:10px; }
.contact-card span { font-size:15px; color:var(--accent); font-weight:600; }

/* ---------- 方案子页 ---------- */
.sol-intro { display:grid; grid-template-columns:1fr 380px; gap:40px; align-items:start; }
.sol-side { background:var(--bg-soft); border:1px solid var(--bg-soft); border-radius:var(--radius); padding:26px; }
.sol-side h4 { font-size:16px; color:var(--ink); margin-bottom:16px; padding-bottom:12px; border-bottom:1px solid var(--line-2); }
.sol-side a { display:block; padding:10px 12px; font-size:14px; color:var(--ink); border-radius:4px; transition:all var(--dur) var(--ease); }
.sol-side a:hover, .sol-side a.active { background:var(--accent); color:#fff; }

/* ---------- 加载与空态 ---------- */
.loading, .empty { text-align:center; color:var(--muted); padding:40px 0; font-size:14px; }
.loading:before { content:""; display:inline-block; width:14px; height:14px; margin-right:8px; vertical-align:-2px;
  border:2px solid var(--line-2); border-top-color:var(--accent); border-radius:50%; animation:lf-spin .7s linear infinite; }
@keyframes lf-spin { to { transform:rotate(360deg); } }

/* ---------- 图片淡入（JS 渐进增强；无 JS 时立即可见） ---------- */
.img-fade { opacity:0; transition:opacity .45s var(--ease); }
.img-fade.img-in { opacity:1; }
@media (prefers-reduced-motion: reduce) { .img-fade { opacity:1; transition:none; } }

/* ============================================
   技术知识库（/kb/）
   ============================================ */
.kb-layout { display:grid; grid-template-columns:minmax(0,1fr) 250px; gap:44px; align-items:start; }
.kb-side { position:sticky; top:calc(var(--nav-h) + 20px); }
.kb-side h4 { font-size:14px; color:var(--ink); margin-bottom:12px; padding-bottom:10px; border-bottom:1px solid var(--line); letter-spacing:1px; }
.kb-toc-list { max-height:calc(100vh - 260px); overflow-y:auto; }
.kb-toc-list a { display:block; font-size:13.5px; color:var(--muted); line-height:1.6; padding:7px 10px; border-left:2px solid transparent; border-radius:0 4px 4px 0; }
.kb-toc-list a:hover { color:var(--accent); background:var(--bg-soft); }
.kb-toc-list a.active { color:var(--accent); border-left-color:var(--accent); background:var(--accent-soft); font-weight:600; }
.kb-toc-list a.lv3 { padding-left:22px; font-size:13px; }

.kb-meta { display:flex; flex-wrap:wrap; gap:8px 18px; font-size:13px; color:var(--muted); margin:0 0 26px; padding-bottom:18px; border-bottom:1px solid var(--bg-soft); }
.kb-meta b { color:var(--accent); font-weight:600; }
.kb-lead { font-size:15.5px; color:var(--ink-2); background:var(--bg-soft); border-left:4px solid var(--accent); border-radius:0 var(--radius) var(--radius) 0; padding:16px 20px; margin:0 0 24px; line-height:1.9; }

.kb-article { font-size:16px; color:var(--ink-2); line-height:2; }
.kb-article p { margin:13px 0; }
.kb-article h2 { font-size:20px; color:var(--ink); margin:34px 0 12px; padding-left:12px; border-left:4px solid var(--accent); line-height:1.5; scroll-margin-top:calc(var(--nav-h) + 16px); text-wrap:balance; }
.kb-article h3 { font-size:17px; color:var(--ink); margin:24px 0 10px; scroll-margin-top:calc(var(--nav-h) + 16px); }
.kb-article ul, .kb-article ol { margin:12px 0 14px 22px; }
.kb-article li { list-style:disc; margin:7px 0; line-height:1.95; }
.kb-article ol li { list-style:decimal; }
.kb-article strong, .kb-article b { color:var(--ink); font-weight:600; }
.kb-article blockquote { margin:16px 0; padding:14px 18px; background:#fafafb; border-left:3px solid var(--line-2); border-radius:0 var(--radius-sm) var(--radius-sm) 0; color:var(--muted); }
.kb-article code { background:var(--bg-soft); padding:2px 6px; border-radius:4px; font-size:.92em; font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; }
.kb-article pre { background:#1d1d1f; color:#f5f5f7; padding:16px 18px; border-radius:var(--radius); overflow-x:auto; margin:16px 0; font-size:13.5px; line-height:1.7; }

/* 常见问题 */
.kb-faq { margin-top:34px; }
.kb-faq h2 { font-size:20px; color:var(--ink); margin:0 0 14px; padding-left:12px; border-left:4px solid var(--accent); }
.kb-faq-item { margin:14px 0; padding:16px 18px; background:#fafafb; border:1px solid var(--line); border-radius:var(--radius); }
.kb-faq-q { margin:0 0 10px; font-weight:600; color:var(--ink); font-size:15.5px; display:flex; gap:8px; }
.kb-faq-q:before { content:"Q"; color:var(--accent); font-weight:800; flex-shrink:0; }
.kb-faq-a { margin:0; line-height:1.95; color:var(--ink-2); font-size:15px; }

/* 相关内容 / CTA */
.kb-related { margin:34px 0 0; padding:22px 24px; background:var(--bg-soft); border-radius:var(--radius-lg); border-left:4px solid var(--accent); }
.kb-related h3 { margin:0 0 14px; font-size:16px; color:var(--ink); }
.kb-related ul { margin:0; padding:0; display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:10px; }
.kb-related li { list-style:none; margin:0; }
.kb-related li a { display:block; padding:11px 14px; background:#fff; color:var(--accent); border:1px solid var(--line); border-radius:var(--radius-sm); font-size:14px; line-height:1.6; transition:all .2s var(--ease); }
.kb-related li a:hover { background:var(--accent); color:#fff; border-color:var(--accent); }
.kb-cta { margin:30px 0 0; padding:20px 24px; border:1px solid var(--line); border-left:4px solid var(--accent); border-radius:var(--radius-lg); line-height:1.95; color:var(--ink-2); background:#fff; }
.kb-cta b { color:var(--ink); }
.kb-cta a { color:var(--accent); font-weight:600; }

/* 知识库首页/分类页卡片 */
.kb-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); gap:16px; }
.kb-card { display:block; padding:22px; background:#fff; border:1px solid var(--line); border-radius:var(--radius-lg); transition:all var(--dur) var(--ease); }
.kb-card:hover { border-color:var(--accent); transform:translateY(-3px); box-shadow:var(--shadow); }
.kb-card h3 { margin:0 0 8px; font-size:17px; color:var(--accent); }
.kb-card p { margin:0; color:var(--muted); font-size:14px; line-height:1.8; min-height:50px; }
.kb-card .kb-num { display:inline-block; margin-top:12px; color:var(--ink); font-size:13px; }
.kb-card:hover .kb-num { color:var(--accent); }

.kb-list { list-style:none; padding:0; }
.kb-list li { margin:14px 0; padding:18px; background:#fafafb; border:1px solid var(--line); border-radius:var(--radius); transition:all var(--dur) var(--ease); }
.kb-list li:hover { background:#fff; border-color:var(--accent); box-shadow:var(--shadow-sm); }
.kb-list a.kb-title { font-weight:600; color:var(--ink); font-size:16px; }
.kb-list a.kb-title:hover { color:var(--accent); }
.kb-list p { margin:6px 0 0; color:var(--muted); font-size:14px; line-height:1.75; }
.kb-cats { display:flex; flex-wrap:wrap; gap:8px; margin:22px 0 0; }
.kb-cats a { display:inline-block; padding:8px 16px; background:var(--bg-soft); border-radius:var(--radius-pill); color:var(--accent); font-size:14px; }
.kb-cats a:hover, .kb-cats a.active { background:var(--accent); color:#fff; }

/* 阅读进度条 */
.read-progress { position:fixed; top:0; left:0; height:3px; width:100%; background:linear-gradient(90deg,var(--accent),#0a84ff); transform:scaleX(0); transform-origin:0 50%; z-index:120; transition:transform .1s linear; }

/* ---------- 联系页留言表单 ---------- */
.contact-form-wrap { max-width:760px; margin:40px auto 10px; background:#fff; border:1px solid var(--line-2); border-radius:var(--radius-lg); padding:32px; }
.contact-form-head { text-align:center; margin-bottom:24px; }
.contact-form-head h2 { font-size:22px; color:var(--ink); margin-bottom:6px; }
.contact-form-head p { color:var(--muted); font-size:14px; }
.contact-form .form-row { display:flex; align-items:flex-start; margin-bottom:16px; }
.contact-form .form-row label { width:90px; flex-shrink:0; line-height:42px; font-size:14px; color:var(--ink); text-align:right; padding-right:14px; }
.contact-form .form-row label i { color:var(--danger); font-style:normal; }
.contact-form .form-row input,
.contact-form .form-row textarea { flex:1; border:1px solid var(--line-2); border-radius:var(--radius-sm); padding:10px 12px; font-size:14px; font-family:inherit; color:var(--ink); background:var(--bg-soft); outline:none; transition:border-color .2s var(--ease), box-shadow .2s var(--ease), background .2s var(--ease); box-sizing:border-box; }
.contact-form .form-row input:focus,
.contact-form .form-row textarea:focus { border-color:var(--accent); background:#fff; box-shadow:0 0 0 3px rgba(0,113,227,.10); }
.contact-form .form-row textarea { resize:vertical; min-height:96px; }
.contact-form .form-row-btn { padding-left:90px; }
.contact-form .form-row-btn button { background:var(--accent); color:#fff; border:none; border-radius:var(--radius-sm); padding:11px 40px; font-size:15px; cursor:pointer; transition:background .2s var(--ease), transform .2s var(--ease); }
.contact-form .form-row-btn button:hover { background:var(--accent-dark); transform:translateY(-1px); }
.contact-form .form-row-btn button:disabled { background:var(--muted-2); cursor:not-allowed; transform:none; }
.form-tip { margin-left:14px; line-height:42px; font-size:13px; color:var(--muted); }
.form-tip.ok { color:var(--ok); }
.form-tip.err { color:var(--danger); }

/* ---------- 产品中心分类 tab ---------- */
.prod-cats { display:flex; flex-wrap:wrap; gap:10px; margin-bottom:26px; justify-content:center; }
.cat-btn { border:1px solid var(--line-2); background:#fff; color:var(--muted); border-radius:var(--radius-pill); padding:8px 22px; font-size:14px; cursor:pointer; transition:all .2s var(--ease); }
.cat-btn:hover { border-color:var(--accent); color:var(--accent); }
.cat-btn.active { background:var(--accent); border-color:var(--accent); color:#fff; }

/* ---------- 产品详情配图 ---------- */
.detail-pic { text-align:center; margin:0 0 24px; }
.detail-pic img { max-width:100%; max-height:420px; border-radius:var(--radius); box-shadow:0 6px 20px rgba(13,71,161,.1); }

/* 相关方案与产品内链块 */
.rel-block { margin:32px 0 0; padding:22px 24px; background:var(--bg-soft); border-radius:var(--radius-lg); border-left:4px solid var(--accent); }
.rel-block h3 { font-size:16px; color:var(--ink); margin:0 0 12px; font-weight:600; }
.rel-block ul { list-style:none; margin:0 0 12px; padding:0; display:flex; flex-wrap:wrap; gap:10px; }
.rel-block ul li { margin:0; }
.rel-block ul li a { display:inline-block; padding:8px 16px; background:#fff; color:var(--accent); border:1px solid var(--line-2); border-radius:var(--radius-pill); font-size:14px; transition:all .2s var(--ease); }
.rel-block ul li a:hover { background:var(--accent); color:#fff; border-color:var(--accent); }
.rel-block p { margin:0; font-size:13px; color:var(--muted); line-height:1.7; }


/* ---------- 首页分区块背景节奏（灰-深-灰-白-灰 交替） ---------- */
.idx-cases { background:var(--bg-soft); }
.idx-kb { background:#fff; }
.idx-kb .section-head h2:after { background:linear-gradient(90deg,var(--accent),#0a84ff); }
.kb-toc-list a.lv2 { font-weight:500; }


/* ============================================
   骨架屏 / 图片占位（渐进增强）
   - 仅由 JS 启用：无 JS 或脚本失败时完全不介入，内容照常立即显示
   - 只在"确实还没到"时才出现（元素已 complete 则跳过，不产生闪跳）
   - 不改变任何元素尺寸，CLS 为 0
   ============================================ */
.sk { position:relative; }
.sk:after {
  content:""; position:absolute; inset:0; z-index:2; pointer-events:none;
  background:linear-gradient(90deg, #ececf1 25%, #f7f7f9 37%, #ececf1 63%);
  background-size:400% 100%;
  animation:sk-sweep 1.4s ease-in-out infinite;
}
@keyframes sk-sweep { 0% { background-position:100% 50%; } 100% { background-position:0 50%; } }

/* banner 骨架层：位于幻灯片之下，正文文字始终可见 */
.banner-slide { z-index:1; }

/* ---------- banner 响应式图片（<picture> 替代 CSS 背景图） ----------
   原实现用 background:url(...) center/cover：浏览器要等 CSS 解析完才发现图片，
   且无法按视口/DPR 选择尺寸——手机也照收 1600px 宽的原图（仅需 12% 的像素）。
   改为 <picture> 后可自动选最合适的尺寸，并优先用 AVIF/WebP。 */
.banner-media { position:absolute; inset:0; z-index:0; display:block; }
.banner-media img { width:100%; height:100%; object-fit:cover; display:block; }
/* 深色遮罩：保证白色标题压在任何一张底图上都可读（原先写在背景图渐变里） */
.banner-slide:after { content:""; position:absolute; inset:0; z-index:1; pointer-events:none;
  background:linear-gradient(rgba(13,16,22,.35),rgba(13,16,22,.10)); }
.banner-slide .banner-text { position:relative; z-index:2; }
/* banner 骨架：刻意用深色。实拍图整体偏暗（均值约 100），
   若用浅灰占位，加载期间白色大标题会失去对比度；深色底可保证文案始终清晰。 */
.banner-sk { position:absolute; inset:0; z-index:0; overflow:hidden;
  background:linear-gradient(120deg, #4e5666 0%, #5e6676 45%, #4e5666 100%); }
.banner-sk:after {
  content:""; position:absolute; inset:0;
  background:linear-gradient(90deg, rgba(255,255,255,0) 0%, rgba(255,255,255,.10) 50%, rgba(255,255,255,0) 100%);
  transform:translateX(-100%);
  animation:sk-sweep-x 1.6s ease-in-out infinite;
}
@keyframes sk-sweep-x { 100% { transform:translateX(100%); } }

/* 内容就位后的淡入 */
.banner-ready { animation:banner-in .5s var(--ease) both; }
@keyframes banner-in { from { opacity:.4; } to { opacity:1; } }

/* 降低动效偏好：只保留静态占位，不做扫光动画 */
@media (prefers-reduced-motion: reduce) {
  .sk:after { animation:none; background:#ececf1; }
  .banner-sk:after { animation:none; background:none; }
  .banner-ready { animation:none; }
}

/* 容器宽度自适应：原先只有 .w{width:1200px}，视口窄于 1200px 时
   页面会横向溢出、右对齐的导航被推出可视区。1226 处断点还原自旧版样式。 */
@media (max-width:1240px) { .w { width:94%; } }

/* 移动端才显示的子菜单加减号，默认必须隐藏，否则桌面导航会出现多余的「+」 */
.sub-caret { display:none; }

/* ============================================
   移动端适配(汉堡导航 + 断点优化)
   ============================================ */
.nav-toggle { display:none; }
@media (max-width:992px) {
  .nav-toggle { display:block; width:44px; height:44px; border:1px solid var(--line-2); border-radius:var(--radius-sm); background:#fff; cursor:pointer; position:relative; z-index:200; padding:0; }
  .nav-toggle span { display:block; width:20px; height:2px; background:var(--ink); margin:5px auto; border-radius:2px; transition:transform .3s var(--ease), opacity .3s var(--ease); }
  .nav-toggle.open span:nth-child(1) { transform:translateY(7px) rotate(45deg); }
  .nav-toggle.open span:nth-child(2) { opacity:0; }
  .nav-toggle.open span:nth-child(3) { transform:translateY(-7px) rotate(-45deg); }
  .nav-list { position:fixed; top:0; right:0; width:280px; height:100%; background:var(--ink); flex-direction:column; padding:70px 0 40px; overflow-y:auto; z-index:150; box-shadow:-8px 0 30px rgba(0,0,0,.2); transform:translateX(100%); transition:transform .3s var(--ease); visibility:hidden; }
  .nav-list.open { transform:translateX(0); visibility:visible; }
  .nav-list > li > a { color:rgba(255,255,255,.9); line-height:52px; padding:0 24px; font-size:15px; border-bottom:1px solid rgba(255,255,255,.06); }
  .nav-list > li.active > a { color:#0a84ff; }
  .nav-list > li > a:after { display:none; }
  .sub-menu { position:static; transform:none; display:none; background:rgba(255,255,255,.06); min-width:0; box-shadow:none; border-radius:0; }
  .nav-list > li.open .sub-menu { display:block; }
  .sub-menu a { padding:12px 36px; color:rgba(255,255,255,.7); font-size:14px; }
  .nav-mask { display:none; position:fixed; inset:0; background:rgba(0,0,0,.45); z-index:140; }
  .nav-mask.show { display:block; }
  .sub-caret { display:inline; }
  .nav-list > li > a { display:flex; justify-content:space-between; align-items:center; }
}
.sub-caret { font-style:normal; float:right; font-size:16px; color:rgba(255,255,255,.6); }

/* 平板竖屏 & 手机通用优化 */
@media (max-width:992px) {
  :root { --nav-h:62px; }
  .section { padding:46px 0; }
  .section-head { margin-bottom:32px; }
  .section-head h2 { font-size:26px; }
  .banner { height:420px; }
  .page-banner { height:210px; }
  .page-banner h1, .page-banner .pb-title { font-size:28px; }
  .news-layout { grid-template-columns:minmax(0,1fr); }
  .footer-cols { grid-template-columns:1fr 1fr; gap:28px; padding:44px 0 34px; }
  .main-nav .w { height:var(--nav-h); }
  .logo { height:42px; }
  .logo .logo-img { height:42px; }
  .contact-form-wrap { padding:24px 20px; }
  .detail-box h1 { font-size:23px; }
  .detail-meta span { display:inline-block; margin:4px 8px; }
  .kb-layout { grid-template-columns:1fr; gap:0; }
  .kb-side { display:none; }
  .solution-grid, .case-grid { grid-template-columns:repeat(2,1fr); }
  .stats-grid { grid-template-columns:repeat(3,1fr); }
  .sol-intro { grid-template-columns:1fr; }
}
@media (max-width:640px) {
  .solution-grid, .case-grid, .stats-grid, .contact-grid, .footer-cols { grid-template-columns:1fr; }
  .topbar { height:auto; line-height:1.4; padding:6px 0; }
  .topbar .w { justify-content:center; }
  .topbar-l { font-size:12px; text-align:center; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; max-width:100%; }
  .topbar-r { display:none; }
  .banner { height:340px; }
  .banner-text h1, .banner-text .banner-h { font-size:23px; letter-spacing:1px; }
  .banner-text p { font-size:15px; }
  .banner-text .tag { font-size:12px; padding:4px 14px; }
  .btn { padding:11px 28px; font-size:15px; }
  .banner-arrow { width:36px; height:36px; line-height:32px; font-size:20px; }
  .banner-prev { left:10px; } .banner-next { right:10px; }
  .section-head h2 { font-size:23px; }
  .stat-num { font-size:34px; }
  .list-item { flex-direction:column; }
  .list-item .li-img { width:100%; }
  .list-item .li-meta { flex-wrap:wrap; gap:8px 16px; }
  .page-banner h1, .page-banner .pb-title { font-size:23px; }
  .page-banner p { font-size:12px; }
  .news-title { font-size:14px; }
  .footer-bottom { font-size:12px; padding:16px 10px; line-height:1.6; }
  .back-top { right:14px; bottom:24px; width:40px; height:40px; line-height:40px; }
  .contact-card { padding:20px; }
  .detail-content, .kb-article { font-size:15px; }
  .detail-content img { height:auto !important; }
  .kb-article h2 { font-size:18px; }
  .kb-article h3 { font-size:16px; }
  .kb-faq-item, .kb-related, .kb-cta { padding:16px; }
  .kb-related ul { grid-template-columns:1fr; }
  .contact-form .form-row { flex-direction:column; }
  .contact-form .form-row label { width:100%; text-align:left; line-height:1.6; margin-bottom:6px; padding-right:0; }
  .contact-form .form-row input, .contact-form .form-row textarea { width:100%; }
  .contact-form .form-row-btn { padding-left:0; }
  .contact-form .form-row-btn button { width:100%; }
  .form-tip { margin-left:0; line-height:1.6; display:block; margin-top:8px; }
}
@media (max-width:480px) {
  .kb-grid { grid-template-columns:1fr; }
  .nav-list { width:84%; }
}

/* 移动端底部悬浮条 */
.m-bar { display:none; position:fixed; left:0; right:0; bottom:0; z-index:200; box-shadow:0 -2px 10px rgba(10,31,60,.12); }
.m-bar a { flex:1; display:flex; align-items:center; justify-content:center; gap:6px; height:52px; font-size:16px; font-weight:600; text-decoration:none; -webkit-tap-highlight-color:transparent; }
.m-bar .mb-call { background:var(--accent); color:#fff; }
.m-bar .mb-call:active { background:var(--accent-dark); }
.m-bar .mb-wx { background:#fff; color:var(--accent); border-top:1px solid var(--line-2); }
@media (max-width:768px) { .m-bar { display:flex; } body { padding-bottom:56px; } }

/* ---------- 减弱动效偏好 ---------- */
@media (prefers-reduced-motion: reduce) {
  *, *:before, *:after { animation-duration:.01ms !important; animation-iteration-count:1 !important;
    transition-duration:.01ms !important; scroll-behavior:auto !important; }
  .banner-slide { transition:none; }
}

/* ---------- 打印（技术资料打印存档） ---------- */
@media print {
  .topbar, .main-nav, .footer, .back-top, .m-bar, .read-progress,
  .kb-side, .breadcrumb, .kb-cta, .page-banner { display:none !important; }
  body { font-size:12pt; color:#000; padding:0; line-height:1.7; }
  .w, .detail-box, .kb-layout { width:auto; max-width:none; margin:0; }
  .section, .detail-wrap { padding:0; }
  .kb-article h2, .kb-article h3, .detail-content h2, .detail-content h3 { color:#000; border-left:0; padding-left:0; page-break-after:avoid; }
  .kb-article h2 { border-bottom:1px solid #000; padding-bottom:4px; }
  table { page-break-inside:avoid; }
  a { color:#000; text-decoration:underline; }
  .kb-faq-item, .kb-related { border:1px solid #999; background:none; page-break-inside:avoid; }
  .kb-article a[href^="http"]:after { content:" (" attr(href) ")"; font-size:.85em; color:#555; }
}
