/* 碳排放计算自学站 · 亮色苹果风（金属浮雕质感 + 真实立体投影） */
:root{
  /* 苹果亮色色板 */
  --bg1:#fbfbfd;             /* 顶部近白 */
  --bg2:#f0f0f3;             /* 底部苹果灰 */
  --surface:#ffffff;
  --ink:#1d1d1f;             /* 苹果近黑 */
  --ink-2:#6e6e73;           /* 次级灰 */
  --ink-3:#6e6e73;           /* 辅助灰｜2026-09-12 由 #86868b 调深：原值对白底仅 3.62:1（低于 WCAG AA 4.5:1），却用于 11–12px 注释小字。现与 --ink-2 同值 = 三级灰刻意收敛为两级，再浅一档在 #f5f5f7 浅灰底上会跌回 4.15:1。 */
  --line:rgba(0,0,0,.08);
  --line-soft:rgba(0,0,0,.05);
  --brand:#34c759;           /* 苹果绿 */
  --brand-d:#248a3d;
  --brand-soft:rgba(52,199,89,.12);
  --blue:#0071e3;            /* 苹果蓝 */
  --blue-d:#0058b0;
  --blue-soft:rgba(0,113,227,.10);
  --warn:#ff9f0a;
  --warn-soft:rgba(255,159,10,.12);
  --ok:#34c759;
  --bad:#ff3b30;
  --chip:#f5f5f7;
  --radius:22px;
  --radius-sm:13px;
  /* 立体投影：环境光 + 主投影 + 远投影（浮起感） */
  --shadow:0 1px 2px rgba(0,0,0,.05), 0 8px 20px rgba(0,0,0,.07), 0 28px 56px rgba(0,0,0,.10);
  --shadow-hover:0 2px 5px rgba(0,0,0,.06), 0 16px 34px rgba(0,0,0,.11), 0 44px 82px rgba(0,0,0,.14);
  --shadow-sm:0 1px 2px rgba(0,0,0,.05), 0 4px 12px rgba(0,0,0,.05);
  /* 金属浮雕高光：顶部内描边 */
  --bevel:inset 0 1px 0 rgba(255,255,255,.95), inset 0 0 0 1px rgba(0,0,0,.04);
  --font:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text","Helvetica Neue","PingFang SC","Microsoft YaHei",sans-serif;
  --ink-1:#1d1d1f;            /* 报告正文/强调文字（report.js 用，原缺失会导致颜色退化） */
  /* ── 2026-09-12 设计债收口：原散落的复现值统一命名化（等值或近似等价，视觉基本不变） ── */
  --line-2:#e3e8f0;          /* 碳资产/报告区卡片描边（原 #e3e8f0 裸值 15+ 处） */
  --surface-2:#f7f9fc;       /* 次级卡底 / 浅槽 */
  --chip-soft:#f5f5f7;       /* 导出栏等浅槽底 */
  --bright:rgba(0,0,0,.03);  /* 极浅叠加底 */
  --brand-l:#44d76a;         /* 绿色渐变·亮端 */
  --brand-d2:#2bb14e;        /* 绿色渐变·暗端（按钮/进度/徽章） */
  --brand-2:#30d158;         /* 苹果系统绿（渐变层次用，勿并入 --brand） */
  --blue-2:#0a84ff;          /* 苹果系统蓝（渐变层次用，勿并入 --blue） */
  --green-d:#1a8a3c;         /* 深绿·文字 */
  --green-dd:#21a345;        /* 深绿·点缀 */
  --warn-d:#b06a00;          /* 深橙·文字（警示说明） */
  --line-g:#e8f0ea;          /* 双碳驾驶舱描边 */
  --bg-g:#fbfdfb;            /* 双碳驾驶舱卡底 */
  --bar-track:#ececf0;       /* 条形图轨道 */
  --sys-yellow:#ffd60a;      /* 系统黄（徽章） */
  --white:#fff;              /* 纯白（品牌色上的文字/图标） */
  --surface-3:#f2f2f5;       /* 浅槽底·深一档 */
  --surface-4:#f3f5f8;       /* 表头底 */
  --card2:#f4f7fb;           /* 结果抬头底 */
  --line-3:#ccc;             /* 中性描边 */
  --warn-d2:#c47d00;         /* 深橙·文字（B 线标签） */
  --bad-d:#c0392b;           /* 深红·文字（门禁提示） */
  --gold-d:#9a7b00;          /* 金·深文字（徽章） */
  --brand-hl:#4fe277;        /* 绿·hover 亮端 */
  --brand-hd:#2fbf55;        /* 绿·hover 暗端 */
  --blue-dd:#16489b;         /* 蓝·深文字（特性徽章） */
  --teal:#0a7d6b;            /* 会员/台账主题青绿 */
  --gold-d2:#8a6d00;         /* 金褐·警示文字 */
  --orange-d:#a15c00;        /* 橙褐·提示文字 */
  --ok-d:#1a7f37;            /* 成功·深绿文字 */
  --bad-d2:#a8071a;          /* 失败·深红文字 */
  --ink-4:#5f6672;           /* 中性灰文字 */
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:var(--font);
  color:var(--ink); font-size:15px; line-height:1.62;
  -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale;
  letter-spacing:.1px;
  background-color:var(--bg2);
  background-image:
    radial-gradient(120% 60% at 50% -10%, rgba(52,199,89,.10), transparent 55%),
    radial-gradient(90% 50% at 90% 0%, rgba(0,113,227,.08), transparent 50%),
    linear-gradient(180deg, var(--bg1) 0%, var(--bg2) 55%, var(--bg2) 100%);
  background-attachment:fixed;
  min-height:100vh;
}
a{color:var(--blue); text-decoration:none}
a:hover{text-decoration:underline}
.wrap{max-width:1080px; margin:0 auto; padding:0 22px}

/* 顶栏 · 亮色毛玻璃（悬浮） */
.topbar{
  background:rgba(251,251,253,.72); backdrop-filter:saturate(180%) blur(20px); -webkit-backdrop-filter:saturate(180%) blur(20px);
  border-bottom:1px solid rgba(0,0,0,.07);
  box-shadow:0 1px 0 rgba(255,255,255,.6), 0 4px 20px rgba(0,0,0,.04);
  position:sticky; top:0; z-index:30;
}
.topbar .wrap{display:flex; align-items:center; height:64px; justify-content:space-between}
.logo{display:flex; align-items:center; gap:11px; font-weight:600; font-size:19px; color:var(--ink); letter-spacing:-.2px}
.logo .dot{
  width:30px; height:30px; border-radius:9px;
  background:linear-gradient(150deg, var(--surface) 0%, #e8e8ed 45%, #b9b9be 75%, var(--surface-3) 100%);
  display:inline-flex; align-items:center; justify-content:center;
  color:var(--ink); font-size:15px; font-weight:800;
  box-shadow:0 2px 6px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.9), inset 0 -1px 2px rgba(0,0,0,.12);
}
.nav{display:flex; gap:16px; align-items:center; flex-wrap:wrap}
.nav-sep{width:1px; height:18px; background:rgba(0,0,0,.12); margin:0 2px}
.nav-search{display:flex; align-items:center; margin-left:2px}
.nav-search input{
  width:172px; height:34px; box-sizing:border-box;
  border:1px solid rgba(0,0,0,.12); border-radius:18px;
  padding:0 14px; font-size:13.5px; background:rgba(255,255,255,.7);
  color:var(--ink); font-family:inherit;
}
.nav-search input:focus{outline:none; border-color:var(--brand); background:var(--white); box-shadow:0 0 0 4px var(--brand-soft)}
.nav-search input::placeholder{color:rgba(0,0,0,.35)}
.nav a{color:var(--ink-2); font-size:13.5px; font-weight:400}
.nav a:hover{color:var(--ink); text-decoration:none}

/* 按钮 · 金属浮雕 + 苹果绿 */
.btn{
  border:none; background:var(--white); color:var(--ink);
  padding:10px 22px; border-radius:980px; font-size:13.5px; font-weight:500; cursor:pointer;
  transition:.22s cubic-bezier(.3,.7,.4,1);
  box-shadow:0 1px 2px rgba(0,0,0,.06), 0 3px 10px rgba(0,0,0,.06), inset 0 1px 0 rgba(255,255,255,.9), inset 0 0 0 1px rgba(0,0,0,.05);
}
.btn:hover{transform:translateY(-1px); box-shadow:0 2px 4px rgba(0,0,0,.07), 0 8px 18px rgba(0,0,0,.09), inset 0 1px 0 rgba(255,255,255,.95)}
.btn:active{transform:translateY(0) scale(.97); box-shadow:inset 0 2px 5px rgba(0,0,0,.12)}   /* 2026-09-12 合并：原 L415 重复定义并入 */
.btn.solid{
  background:linear-gradient(180deg, var(--brand-l) 0%, var(--brand-d2) 100%);
  color:var(--white); font-weight:600;
  box-shadow:0 2px 6px rgba(52,199,89,.4), 0 8px 20px rgba(52,199,89,.28), inset 0 1px 0 rgba(255,255,255,.45);
}
.btn.solid:hover{background:linear-gradient(180deg, var(--brand-hl) 0%, var(--brand-hd) 100%); box-shadow:0 3px 8px rgba(52,199,89,.45), 0 12px 26px rgba(52,199,89,.34), inset 0 1px 0 rgba(255,255,255,.5)}
.btn:disabled{opacity:.4; cursor:not-allowed; transform:none; box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}
.btn.ghost{background:transparent; color:var(--ink-2); box-shadow:inset 0 0 0 1px rgba(0,0,0,.10)}
.btn.ghost:hover{background:rgba(0,0,0,.03); color:var(--ink)}

/* Hero · 立体大标题 + 极淡舞台光 */
.hero{position:relative; padding:84px 0 44px; text-align:center; overflow:hidden; --d:0s}
.hero::before{
  content:""; position:absolute; top:-160px; left:50%; transform:translateX(-50%);
  width:560px; height:380px;
  background:radial-gradient(closest-side, rgba(52,199,89,.16), rgba(0,113,227,.08), transparent 70%);
  filter:blur(10px); z-index:0; pointer-events:none;
}
.hero > *{position:relative; z-index:1}
.hero h1{
  font-size:46px; font-weight:800; margin:0 0 12px; letter-spacing:-1.2px; line-height:1.08;
  color:var(--ink);
  text-shadow:0 1px 0 rgba(255,255,255,.8), 0 2px 14px rgba(0,0,0,.04);
}
.hero .sub{color:var(--ink-2); font-size:17px; margin:0 auto 32px; max-width:680px; line-height:1.6}

/* 计算器卡片 · 白浮玻璃 + 浮雕边 */
.calc{
  background:var(--surface); border-radius:var(--radius);
  box-shadow:var(--shadow), var(--bevel);
  max-width:800px; margin:0 auto; padding:32px 32px 28px; text-align:left;
  transition:.3s; --d:.08s
}
.calc:hover{box-shadow:var(--shadow-hover), var(--bevel)}
.calc h2{font-size:19px; margin:0 0 4px; display:flex; align-items:center; gap:9px; font-weight:700}
.calc .tag{font-size:12px; color:var(--white); background:linear-gradient(180deg,var(--brand-l),var(--brand-d2)); padding:3px 11px; border-radius:980px; font-weight:700; letter-spacing:.3px; box-shadow:inset 0 1px 0 rgba(255,255,255,.4)}
.calc .hint{color:var(--ink-2); font-size:13.5px; margin:0 0 20px; line-height:1.55}
.grid2{display:grid; grid-template-columns:1fr 1fr; gap:14px 18px}
.field label{display:block; font-size:13.5px; color:var(--ink-2); margin-bottom:6px; font-weight:500}
.field input,.field select{
  width:100%; padding:12px 14px; border:1px solid rgba(0,0,0,.10);
  border-radius:var(--radius-sm); font-size:15px; background:var(--white);
  outline:none; transition:.2s; font-family:var(--font); color:var(--ink);
  box-shadow:inset 0 1px 2px rgba(0,0,0,.04);
}
.field input:focus,.field select:focus{border-color:var(--brand); box-shadow:0 0 0 4px var(--brand-soft), inset 0 1px 2px rgba(0,0,0,.03)}
.row-actions{display:flex; gap:10px; margin-top:22px; align-items:center}
.result{margin-top:22px; border-top:1px solid var(--line-soft); padding-top:20px}
.result .grid3{display:grid; grid-template-columns:repeat(3,1fr); gap:12px}
.metric{
  background:var(--white); border-radius:15px; padding:16px;
  box-shadow:var(--shadow-sm), var(--bevel);
}
.metric .k{font-size:12px; color:var(--ink-2); font-weight:500}
.metric .v{font-size:27px; font-weight:700; margin-top:5px; letter-spacing:-.4px; font-variant-numeric:tabular-nums}
.metric .v small{font-size:12px; color:var(--ink-2); font-weight:500}
.benefit{margin-top:14px; display:grid; grid-template-columns:1fr 1fr; gap:12px}
.benefit .b{background:var(--white); border-radius:15px; padding:13px; text-align:center; box-shadow:var(--shadow-sm), var(--bevel)}   /* 2026-09-12 合并：原 L336 重复定义并入（padding 13px / 居中 后者胜） */
.benefit .b .k{font-size:12px; color:var(--ink-2); font-weight:500}
.benefit .b .v{font-size:21px; font-weight:700; color:var(--ink); margin-top:4px; font-variant-numeric:tabular-nums}   /* 2026-09-12 合并原 L338 + 强层级提字重 */
.note{font-size:12px; color:var(--ink-3); margin-top:12px; line-height:1.55}

/* 分类卡片 · 白浮玻璃 + 顶部横幅图标区（覆盖上方约1/5） */
.cats{display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin:56px 0 10px; --d:.16s}   /* 2026-09-12 留白分级：36→56 */
.cat{
  display:flex; flex-direction:column; align-items:flex-start;
  background:var(--surface); border-radius:var(--radius); padding:22px 20px;
  box-shadow:var(--shadow), var(--bevel);
  transition:.28s cubic-bezier(.3,.7,.4,1); cursor:pointer;
  overflow:hidden;
}
.cat:hover{
  transform:translateY(-6px);
  box-shadow:var(--shadow-hover), var(--bevel);
  text-decoration:none;
}
.cat:hover .ic img{transform:scale(1.08)}
.cat .ic{
  width:calc(100% + 40px); height:84px; display:flex; align-items:center; justify-content:flex-start;
  background:
    url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='nf'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23nf)' opacity='0.10'/%3E%3C/svg%3E"),
    linear-gradient(180deg, rgba(247,248,250,.94), rgba(238,240,243,.94));
  border-radius:22px 22px 0 0; margin:-22px -20px 14px; padding:8px 8px 8px 22px;
  box-shadow:0 4px 10px rgba(0,0,0,.06), inset 0 1px 0 rgba(255,255,255,.9), inset 0 -1px 0 rgba(0,0,0,.04);
  backdrop-filter: blur(12px) saturate(145%);
  -webkit-backdrop-filter: blur(12px) saturate(145%);
  transition:background .3s cubic-bezier(.3,.7,.4,1);
}
.cat .ic img{width:66px; height:66px; object-fit:contain; display:block; border-radius:10px; transition:transform .3s cubic-bezier(.3,.7,.4,1)}
.cat .t{font-size:17px; font-weight:700; margin:0 0 5px; color:var(--ink); letter-spacing:-.2px}
.cat .d{font-size:12px; color:var(--ink-2); line-height:1.5}
.cat .go{margin-top:14px; font-size:13.5px; color:var(--brand); font-weight:600}

/* 二级页 */
.page-head{padding:32px 0 8px}
.page-head h1{font-size:27px; margin:0 0 5px; font-weight:700; letter-spacing:-.5px}
.page-head .sub{color:var(--ink-2); font-size:13.5px; margin:0}
.panel{
  background:var(--surface); border-radius:var(--radius); box-shadow:var(--shadow), var(--bevel);
  padding:24px; margin:18px 0; --d:.1s
}
.panel h3{margin:0 0 14px; font-size:17px; display:flex; align-items:center; gap:8px; font-weight:700}
.list{display:flex; flex-direction:column; gap:10px}
.item{
  display:flex; align-items:center; justify-content:space-between;
  background:var(--white); border:1px solid var(--line-soft);
  border-radius:15px; padding:13px 16px;
  box-shadow:var(--shadow-sm), inset 0 1px 0 rgba(255,255,255,.9);
}
.item .nm{font-weight:600}
.item .ds{font-size:12px; color:var(--ink-2)}
.badge{font-size:12px; padding:3px 11px; border-radius:980px; background:var(--chip); color:var(--ink-2); font-weight:500}
.badge.ok{background:var(--brand-soft); color:var(--brand-d); font-weight:600}
.badge.no{background:rgba(255,59,48,.12); color:var(--bad); font-weight:600}

/* 上传区 */
.drop{
  border:1.5px dashed rgba(0,0,0,.18); border-radius:16px; padding:28px;
  text-align:center; color:var(--ink-2); cursor:pointer; transition:.2s;
  background:linear-gradient(180deg,var(--chip-soft),var(--surface-3));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.8);
}
.drop:hover{border-color:var(--brand); color:var(--brand-d); background:var(--brand-soft)}
.drop.drag{border-color:var(--brand); background:var(--brand-soft)}
.up-list{margin-top:12px; display:flex; flex-direction:column; gap:8px}
.up{display:flex; align-items:center; justify-content:space-between; background:var(--white); border-radius:12px; padding:10px 14px; font-size:13.5px; box-shadow:var(--shadow-sm), inset 0 1px 0 rgba(255,255,255,.9)}
.up .x{cursor:pointer; color:var(--bad)}

/* 生成 / 报告 */
.genbar{display:flex; align-items:center; gap:14px; margin-top:8px}
.genbar .state{font-size:13.5px; color:var(--ink-2)}
.progress{height:6px; background:rgba(0,0,0,.07); border-radius:980px; overflow:hidden; margin-top:10px}
.progress i{display:block; height:100%; width:0; background:linear-gradient(90deg,var(--brand-l),var(--brand-d2)); border-radius:980px; transition:.4s; box-shadow:0 0 8px rgba(52,199,89,.4)}

/* 报告视图 */
.report{
  background:var(--surface); border-radius:var(--radius); padding:36px 42px; margin:18px 0;
  box-shadow:var(--shadow), var(--bevel); --d:.08s
}
.report h1{font-size:27px; border-bottom:2px solid var(--brand); padding-bottom:12px; font-weight:800; letter-spacing:-.3px}
.report h2{position:relative; font-size:19px; margin:24px 0 10px; color:var(--brand-d); font-weight:700; padding-left:14px; border-left:4px solid var(--brand); border-radius:2px}   /* 2026-09-12 强层级：19px/700（×1.27）；合并原 L260 重复定义 */
.report table{width:100%; border-collapse:collapse; margin:8px 0; font-size:13.5px; border-radius:12px; overflow:hidden; box-shadow:var(--shadow-sm)}
.report th,.report td{border:1px solid var(--line-soft); padding:9px 12px; text-align:left}
.report th{background:var(--chip); font-weight:600}
.report .kv{display:grid; grid-template-columns:180px 1fr; gap:4px 14px; font-size:13.5px}
.report .kv b{color:var(--ink-2); font-weight:600}
.pay-mask{filter:blur(6px); user-select:none; pointer-events:none}

/* 报告深化：执行摘要 / 改进建议 / 章节色条 / 对标条形图图例 */
.report h2:first-of-type{margin-top:8px}
.exec-sum{background:linear-gradient(180deg,rgba(48,209,88,.10),rgba(48,209,88,.04)); border:1px solid rgba(48,209,88,.22); border-radius:14px; padding:14px 18px; margin:10px 0 4px}
.exec-sum ul{margin:0; padding-left:20px}
.exec-sum li{margin:7px 0; line-height:1.6; font-size:13.5px; color:var(--ink-1)}
.advice{background:var(--surface-2); border:1px solid var(--line-soft); border-radius:14px; padding:12px 18px; margin:10px 0 4px}
.advice ul{margin:0; padding-left:20px; list-style:none}
.advice li{margin:9px 0; line-height:1.62; font-size:13.5px; color:var(--ink-1); display:flex; gap:10px; align-items:flex-start}
.advice .advice-p{flex:none; font-size:11px; font-weight:700; color:var(--white); padding:2px 9px; border-radius:980px; white-space:nowrap; box-shadow:inset 0 1px 0 rgba(255,255,255,.4)}
.advice .p-高{background:linear-gradient(180deg,#ff6b5e,var(--bad))}
.advice .p-中{background:linear-gradient(180deg,#ffb340,var(--warn))}
.advice .p-低{background:linear-gradient(180deg,#5ac8fa,var(--blue-2))}
/* ESG 报告：E/S/G 披露对照表 */
.esg-ch{display:flex; align-items:center; gap:10px; margin-top:22px; padding:9px 0 9px 14px; border-left:5px solid var(--brand);
  background:linear-gradient(90deg,rgba(10,132,255,.08),transparent); border-radius:0 10px 10px 0; font-size:17px; font-weight:700}
.esg-letter{flex:none; width:30px; height:30px; border-radius:9px; background:linear-gradient(180deg,var(--blue-2),var(--blue)); color:var(--white);
  font-weight:800; display:inline-flex; align-items:center; justify-content:center; font-size:15px}
.esg-sec{font-size:15px; color:var(--ink-1); margin:14px 0 7px; font-weight:700}
.esg-sec .std{font-weight:400; font-size:12px}
.esg-g{font-size:13.5px; color:var(--brand); margin:16px 0 8px; font-weight:700; letter-spacing:.5px}
.esg-tbl{width:100%; border-collapse:collapse; margin:4px 0 6px; font-size:13.5px; border:1px solid var(--line-soft); border-radius:12px; overflow:hidden}
.esg-tbl th{background:var(--surface-4); color:var(--ink-2); font-weight:700; text-align:left; padding:8px 10px; border-bottom:1px solid var(--line-soft)}
.esg-tbl td{padding:8px 10px; border-bottom:1px solid var(--line-soft); vertical-align:top; line-height:1.5}
.esg-tbl tr:last-child td{border-bottom:0}
.esg-tbl .std{font-size:11px; color:var(--ink-3); white-space:nowrap}
.esg-tbl .val{font-weight:700; color:var(--ink-1); min-width:96px}
.esg-tbl .bench{background:rgba(255,159,10,.06); color:var(--ink-2); font-size:12px}
.esg-tbl tr:hover td{background:rgba(10,132,255,.03)}
/* bench 条形图图例 */
.bars .bar-row .bl{font-weight:600}
.bars .bar-row .bv{font-weight:700}

/* 弹窗 */
.modal-bg{position:fixed; inset:0; background:rgba(0,0,0,.35); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px); display:none; align-items:center; justify-content:center; z-index:50}
.modal-bg.show{display:flex}
.modal{background:var(--white); border-radius:24px; padding:30px; width:420px; max-width:92vw; box-shadow:0 24px 70px rgba(0,0,0,.28), inset 0 1px 0 rgba(255,255,255,.9)}
.modal h3{margin:0 0 10px; font-size:21px; font-weight:700; letter-spacing:-.3px}
.modal .pay-amt{font-size:34px; font-weight:700; color:var(--brand-d); text-align:center; margin:14px 0; font-variant-numeric:tabular-nums; text-shadow:0 1px 0 rgba(255,255,255,.7)}
.modal .row{display:flex; gap:10px; margin-top:18px}
.modal .row .btn{flex:1; text-align:center}
.modal.disc{width:480px}
.modal.disc h3{display:flex; align-items:center; gap:8px}
.disc-body{font-size:13.5px; line-height:1.7; color:var(--ink-2); max-height:46vh; overflow:auto; margin:4px 0}
.disc-body p{margin:0 0 8px}
.disc-body ul{margin:0; padding-left:18px}
.disc-body li{margin:5px 0}
.disc-body b{color:var(--ink-1)}

/* 表单通用 */
.form-card{max-width:440px; margin:34px auto; --d:.1s}
.form-card .f{margin-bottom:14px}
.form-card label{display:block; font-size:13.5px; color:var(--ink-2); margin-bottom:6px; font-weight:500}
.form-card input,.form-card select{width:100%; padding:12px 14px; border:1px solid rgba(0,0,0,.10); border-radius:var(--radius-sm); font-size:15px; outline:none; transition:.2s; font-family:var(--font); background:var(--white); color:var(--ink); box-shadow:inset 0 1px 2px rgba(0,0,0,.04)}
.form-card input:focus,.form-card select:focus{border-color:var(--brand); box-shadow:0 0 0 4px var(--brand-soft)}
.tabs{display:flex; gap:8px; margin:10px 0 20px}
.tabs .t{padding:9px 18px; border:1px solid rgba(0,0,0,.10); border-radius:980px; cursor:pointer; font-size:13.5px; color:var(--ink-2); transition:.2s; background:var(--white); box-shadow:inset 0 1px 0 rgba(255,255,255,.9)}
.tabs .t.on{background:linear-gradient(180deg,var(--brand-l),var(--brand-d2)); color:var(--white); border-color:transparent; font-weight:600; box-shadow:0 3px 10px rgba(52,199,89,.3), inset 0 1px 0 rgba(255,255,255,.4)}
.msg{font-size:13.5px; margin-top:8px}
.msg.err{color:var(--bad)}
.msg.ok{color:var(--ok)}
.muted{color:var(--ink-2); font-size:13.5px}
.center{text-align:center}

/* 计算结果区 */
.rs-title{font-size:19px; font-weight:700; margin:22px 0 10px; padding-bottom:7px; border-bottom:1px solid var(--line-soft); letter-spacing:-.2px; color:var(--ink)}   /* 2026-09-12 强层级：15px/600(×1.00，与正文同大) → 19px/700(×1.27)，结果区是最核心输出，标题必须立住 */
.rs-title .rs-sub{font-size:12px; font-weight:400; color:var(--ink-2); margin-left:8px}
.rs-a{color:var(--blue); border-color:rgba(0,113,227,.2)}
.rs-b{color:var(--warn-d2); border-color:rgba(255,159,10,.25)}
.rs-c{color:var(--brand-d); border-color:rgba(52,199,89,.25)}

/* 合规状态标签 */
.tag-ok{font-size:11px; color:var(--white); background:var(--brand); padding:2px 9px; border-radius:980px; font-weight:700; box-shadow:inset 0 1px 0 rgba(255,255,255,.4)}
.tag-warn{font-size:11px; color:var(--white); background:var(--warn); padding:2px 9px; border-radius:980px; font-weight:700; box-shadow:inset 0 1px 0 rgba(255,255,255,.4)}

/* 三栏收益行 */
.benefit-row{display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:10px; margin:8px 0}
.benefit .b .v small{font-size:11px; font-weight:500}

/* A线（蓝）*/
.b-a{background:var(--blue-soft) !important; border-color:rgba(0,113,227,.2) !important}
.b-a .k{color:var(--blue)}
.b-a .v{color:var(--blue)}
.b-a.highlight{background:linear-gradient(180deg, #2c8bff, var(--blue-d)) !important; border-color:transparent !important; box-shadow:0 6px 20px rgba(0,113,227,.32), inset 0 1px 0 rgba(255,255,255,.35)}
.b-a.highlight .k,.b-a.highlight .v{color:var(--white)}

/* B线（橙）*/
.b-b{background:var(--warn-soft) !important; border-color:rgba(255,159,10,.22) !important}
.b-b .k{color:var(--warn-d2)}
.b-b .v{color:var(--warn-d2)}
.b-b.highlight{background:linear-gradient(180deg, #ffb24d, #f08a00) !important; border-color:transparent !important; box-shadow:0 6px 20px rgba(255,159,10,.32), inset 0 1px 0 rgba(255,255,255,.35)}
.b-b.highlight .k,.b-b.highlight .v{color:var(--white)}

/* C线（绿）*/
.b-c{background:var(--brand-soft) !important; border-color:rgba(52,199,89,.2) !important}
.b-c .k{color:var(--brand-d)}
.b-c .v{color:var(--brand-d)}
.b-c.highlight{background:linear-gradient(180deg, var(--brand-l), var(--brand-d)) !important; border-color:transparent !important; box-shadow:0 6px 22px rgba(52,199,89,.36), inset 0 1px 0 rgba(255,255,255,.4)}
.b-c.highlight .k,.b-c.highlight .v{color:var(--white)}

.b-note{font-size:12px; color:var(--ink-3); margin:6px 0 16px; line-height:1.55; padding-left:10px; border-left:3px solid rgba(0,0,0,.08)}
.cbam-compare{font-size:13.5px; color:var(--brand-d); background:rgba(52,199,89,.08); border:1px solid rgba(52,199,89,.3); border-radius:8px; padding:10px 14px; margin:4px 0 16px; line-height:1.6}

/* 分项小标题 / 分项合计 / 合计拆分 */
.sub-h{font-size:13.5px; font-weight:700; color:var(--ink); margin:16px 0 5px; padding-left:10px; border-left:3px solid var(--brand)}
.sub-total{font-size:13.5px; font-weight:600; color:var(--brand-d); text-align:right; margin:8px 0 4px; padding:10px 14px; background:var(--brand-soft); border-radius:12px; border:1px solid rgba(52,199,89,.18)}
.sub-total span{color:var(--green-dd)}
.grand-break{font-size:12px; color:var(--ink-2); margin:6px 0 0; text-align:right}

/* 合计 · 苹果绿浮起卡 */
.grand-total{
  display:flex; align-items:center; justify-content:space-between;
  background:linear-gradient(135deg, var(--brand-l), var(--brand-d2));
  color:var(--white); border-radius:18px; padding:20px 26px; margin:20px 0 8px;
  box-shadow:0 8px 26px rgba(52,199,89,.32), inset 0 1px 0 rgba(255,255,255,.4);
}
.grand-total .k{font-size:17px; font-weight:700; letter-spacing:.2px}
.grand-total .v{font-size:34px; font-weight:800; font-variant-numeric:tabular-nums; letter-spacing:-.5px}

/* 页脚 */
footer{border-top:1px solid var(--line-soft); margin-top:48px; padding:22px 0; color:var(--ink-2); font-size:12px; text-align:center; background:transparent}

/* ===== 会员档位徽章 / 高阶权益 CTA ===== */
.tierbadge{
  display:inline-block; font-size:15px; font-weight:800; letter-spacing:.2px;
  background:linear-gradient(135deg,var(--blue),var(--blue-2)); color:var(--white);
  padding:6px 14px; border-radius:999px; margin-bottom:12px;
  box-shadow:0 4px 14px rgba(0,113,227,.28), inset 0 1px 0 rgba(255,255,255,.4);
}
.cta-wrap{display:grid; grid-template-columns:1fr 1fr; gap:14px; margin:18px 0 8px}
.cta{background:linear-gradient(160deg,var(--chip-soft),#eef1f5); border:1px solid var(--line-soft); border-radius:18px; padding:18px 20px; box-shadow:var(--shadow)}
.cta .cta-t{font-size:17px; font-weight:800; margin-bottom:6px}
.cta .cta-d{font-size:13.5px; color:var(--ink-2); line-height:1.6; margin-bottom:12px}
.cta-gold{background:linear-gradient(160deg,#fff7e8,#ffe9bf); border-color:#f4d79a}
.cta-gold .cta-t{color:#9a6a00}
@media(max-width:760px){ .cta-wrap{grid-template-columns:1fr} }

/* ===== 苹果式入场动画 · 淡入上浮（错峰） ===== */
@keyframes fadeUp{from{opacity:0; transform:translateY(20px)} to{opacity:1; transform:none}}
.hero,.calc,.cats{animation:fadeUp .7s var(--d,0s) cubic-bezier(.2,.7,.3,1) both}   /* 2026-09-12 合并动画层：延迟由各规则 --d 控制，消除重复选择器 */
.panel,.form-card,.report{animation:fadeUp .6s var(--d,0s) cubic-bezier(.2,.7,.3,1) both}
.cats .cat{animation:fadeUp .6s both}
.cats .cat:nth-child(1){animation-delay:.20s}
.cats .cat:nth-child(2){animation-delay:.28s}
.cats .cat:nth-child(3){animation-delay:.36s}
.cats .cat:nth-child(4){animation-delay:.44s}
.cats .cat:nth-child(5){animation-delay:.52s}
.cats .cat:nth-child(6){animation-delay:.60s}
/* 按钮点击细腻反馈 */
/* 全局平滑过渡基线 */
a,.metric,.benefit .b,.item{transition:.22s cubic-bezier(.3,.7,.4,1)}
@media (prefers-reduced-motion: reduce){
  *{animation:none !important; transition:none !important}
}

/* ===== 导出工具栏 ===== */
.export-bar{display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:18px 0 4px; padding:12px 14px; background:var(--chip-soft,var(--chip)); border-radius:14px; border:1px solid var(--line-soft); box-shadow:var(--shadow-sm), inset 0 1px 0 rgba(255,255,255,.9)}
.eb-label{font-size:13.5px; font-weight:600; color:var(--ink-2); margin-right:2px}
.btn.sm{font-size:12px; padding:7px 14px; border-radius:980px; box-shadow:var(--shadow-sm), inset 0 1px 0 rgba(255,255,255,.9)}
.btn.sm:active{transform:scale(.96)}

/* ===== 移动端底部导航 ===== */
.botbar{display:none}
@media(max-width:760px){
  .botbar{
    position:fixed; left:0; right:0; bottom:0; z-index:60; display:flex;
    background:rgba(255,255,255,.82); -webkit-backdrop-filter:saturate(180%) blur(20px); backdrop-filter:saturate(180%) blur(20px);
    border-top:1px solid var(--line-soft); box-shadow:0 -6px 20px rgba(0,0,0,.06);
    padding:6px 0 calc(6px + env(safe-area-inset-bottom));
  }
  .botbar a{flex:1; display:flex; flex-direction:column; align-items:center; gap:2px; font-size:11px; color:var(--ink-2); text-decoration:none; padding:4px 0; transition:.2s}
  .botbar a .bi{font-size:21px; line-height:1}
  .botbar a.active{color:var(--brand)}
  .botbar a:active{transform:scale(.94)}
  body{padding-bottom:62px}
  main.wrap{padding-bottom:10px}
}

/* ===== 打印：仅输出自查结果 / 报告 ===== */
@media print{
  body *{visibility:hidden}
  #c_result, #c_result *, #reportDoc, #reportDoc *{visibility:visible}
  #c_result, #reportDoc{position:absolute; left:0; top:0; width:100%; box-shadow:none; border:0; background:var(--white)}
  .export-bar, .row-actions, .genbar{display:none !important}
  /* 保留报告内彩色条形/徽章底色 */
  #reportDoc *{ -webkit-print-color-adjust:exact; print-color-adjust:exact; }
  #reportDoc .report{box-shadow:none}
  #reportDoc .exec-sum, #reportDoc .advice{break-inside:avoid}
  #reportDoc table, #reportDoc .bar-row, #reportDoc .kv{break-inside:avoid}
}

/* 报告内条形图（排放范围构成） */
.bars{margin:10px 0 4px; display:grid; gap:10px}
.bar-row{display:grid; grid-template-columns:64px 1fr 116px; align-items:center; gap:10px; font-size:13.5px}
.bar-row .bl{color:var(--ink-2); font-weight:500}
.bar-row .bt{height:12px; background:var(--bar-track); border-radius:980px; overflow:hidden; box-shadow:inset 0 1px 2px rgba(0,0,0,.08)}
.bar-row .bt i{display:block; height:100%; border-radius:980px; transition:width .9s cubic-bezier(.2,.7,.3,1)}
.bar-row .bv{text-align:right; font-variant-numeric:tabular-nums; color:var(--ink-1); font-weight:600}

/* ===== 顶层政策依据条（首页 / 关于） ===== */
.policy-strip{margin:6px 0 4px; padding:16px 18px; background:linear-gradient(180deg,var(--bg1),#f1f1f4); border:1px solid var(--line-soft); border-radius:18px; box-shadow:var(--shadow-sm), inset 0 1px 0 rgba(255,255,255,.9)}
.pol-chip{display:inline-flex; align-items:center; gap:5px; margin:4px 7px 4px 0; padding:6px 14px; font-size:12px; font-weight:700; color:var(--green-d);
  background:linear-gradient(180deg,#f6fff8 0%,#e3f8e8 100%);
  border:1px solid rgba(42,168,82,.35); border-bottom-color:rgba(25,135,56,.45); border-radius:980px;
  box-shadow:0 3px 6px rgba(25,135,56,.12), 0 1px 0 rgba(255,255,255,.8) inset, 0 -1px 0 rgba(25,135,56,.12) inset;
  text-shadow:0 1px 0 rgba(255,255,255,.7); transition:transform .15s ease, box-shadow .15s ease}
.pol-chip::before{content:""; width:7px; height:7px; border-radius:50%; background:linear-gradient(180deg,var(--brand),var(--green-dd));
  box-shadow:0 1px 2px rgba(33,163,69,.35), inset 0 1px 0 rgba(255,255,255,.5)}
.pol-chip:hover{transform:translateY(-1px); box-shadow:0 5px 10px rgba(25,135,56,.18), 0 1px 0 rgba(255,255,255,.8) inset, 0 -1px 0 rgba(25,135,56,.12) inset}
.pol-chip:active{transform:translateY(0); box-shadow:0 2px 4px rgba(25,135,56,.12), 0 1px 0 rgba(255,255,255,.8) inset}
.pol-details{margin-top:10px}
.pol-details summary{cursor:pointer; font-size:13.5px; font-weight:600; color:var(--ink-2)}
.pol-details summary:hover{color:var(--brand)}
.pol-full{margin-top:12px; display:grid; gap:12px}
.pol-item{padding:12px 14px; background:var(--white); border:1px solid var(--line-soft); border-radius:14px; box-shadow:var(--shadow-sm), inset 0 1px 0 rgba(255,255,255,.9)}
.pol-head{display:flex; align-items:center; gap:10px; flex-wrap:wrap}
.pol-head b{font-size:15px; color:var(--ink-1); font-weight:700}
.pol-tier{font-size:11px; font-weight:700; color:var(--white); background:linear-gradient(180deg,var(--warn),#ff8800); padding:3px 10px; border-radius:980px; box-shadow:inset 0 1px 0 rgba(255,255,255,.4)}
.pol-doc{font-size:11px; color:var(--ink-3); margin-left:auto}
.pol-meta{font-size:12px; color:var(--ink-3); margin:4px 0 6px}
.pol-rules{margin:0; padding-left:18px; font-size:12px; color:var(--ink-2); line-height:1.7}

/* ===== 零碳园区指标面板 ===== */
.chk{display:flex; align-items:center; gap:8px; font-size:13.5px; color:var(--ink-2); padding:6px 0}
.chk input{width:16px; height:16px; accent-color:var(--brand)}
.zc-core{margin:12px 0; padding:14px 16px; border-radius:14px; border:1px solid var(--line-soft); box-shadow:var(--shadow-sm), inset 0 1px 0 rgba(255,255,255,.9); background:var(--white)}
.zc-core.fail{border-color:var(--bad); background:linear-gradient(180deg,var(--white),#fff5f4)}
.zc-core.core-ok,.zc-core.core-pending{border-color:var(--brand-2); background:linear-gradient(180deg,var(--white),#f3fcf5)}
.zc-core-line{display:flex; align-items:center; gap:10px; padding:5px 0; font-size:13.5px; color:var(--ink-2)}
.zc-core-line b{color:var(--ink-1); font-variant-numeric:tabular-nums}
.zc-core-line .muted{margin-left:auto; font-size:12px}
.zc-concl{margin-top:8px; font-size:13.5px; font-weight:600; line-height:1.55}
.zc-inds{display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:10px; margin-top:6px}
.zc-ind{display:flex; flex-direction:column; gap:4px; padding:10px 12px; border-radius:12px; border:1px solid var(--line-soft); background:var(--white); box-shadow:var(--shadow-sm), inset 0 1px 0 rgba(255,255,255,.9)}
.zc-ind b{font-size:12px; color:var(--ink-1)}
.zc-ind.ok{border-color:rgba(48,209,88,.5)}
.zc-ind.no{border-color:rgba(255,159,10,.55); background:linear-gradient(180deg,var(--white),#fffaf0)}
.zc-ind i{font-size:12px; font-style:normal}

/* ===== 地方碳普惠标准标注 ===== */
.ph-label{margin:10px 0 4px; padding:10px 14px; font-size:12px; line-height:1.6; color:var(--ink-2); background:rgba(0,113,227,.06); border:1px solid rgba(0,113,227,.18); border-radius:12px}

/* ===== 免责弹窗内"核算依据"块 ===== */
.disc-note{margin-top:12px; padding:12px 14px; font-size:12px; line-height:1.62; color:var(--ink-2); background:rgba(0,0,0,.03); border:1px solid rgba(0,0,0,.06); border-left:3px solid var(--brand-d2); border-radius:12px}
.disc-note b{color:var(--ink-1)}

/* ===== 碳价实时条（国内·北京绿交所 / 国际·EU ETS） ===== */
.cp-strip{margin:18px 0 2px}
.cp-cards{display:grid; grid-template-columns:1fr 1fr; gap:14px}
/* 紧凑模式：首屏一行碳价小胶囊（约为原卡片一半高度） */
.cp-strip.compact{display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:10px; margin:14px auto 0}
.cp-label{font-size:12px; font-weight:700; color:var(--ink-2); padding:4px 11px; background:var(--chip); border-radius:980px}
.cp-pill{display:inline-flex; align-items:baseline; gap:6px; padding:6px 14px; border-radius:980px; background:var(--white); border:1px solid var(--line-soft); box-shadow:var(--shadow-sm); font-variant-numeric:tabular-nums}
.cp-pill.snap{border-left:3px solid var(--brand)}
.cp-pill.live{border-left:3px solid var(--blue-2)}
.cp-pill-tag{font-size:11px; color:var(--ink-2); font-weight:600}
.cp-pill-price{font-size:17px; font-weight:700; color:var(--ink-1)}
.cp-pill-price small{font-size:11px; font-weight:500; color:var(--ink-2); margin-left:2px}
.cp-updated{font-size:11px; color:var(--ink-2)}
.cp-card{padding:16px 18px; border-radius:16px; background:var(--white); box-shadow:var(--shadow-sm), inset 0 1px 0 rgba(255,255,255,.9); border:1px solid var(--line-soft); position:relative; overflow:hidden}
.cp-card::before{content:""; position:absolute; left:0; top:0; bottom:0; width:4px}
.cp-card.snap::before{background:linear-gradient(180deg,var(--brand),var(--brand-2))}
.cp-card.live::before{background:linear-gradient(180deg,var(--blue-2),var(--blue))}
.cp-tag{font-size:12px; font-weight:600; color:var(--ink-2); letter-spacing:.2px}
.cp-price{margin:6px 0 2px; font-size:34px; font-weight:700; color:var(--ink-1); font-variant-numeric:tabular-nums; line-height:1.1}
.cp-unit{font-size:13.5px; font-weight:500; color:var(--ink-2); margin-left:4px}
.cp-chg{font-size:13.5px; font-weight:600; margin-left:8px}
.cp-chg.up{color:var(--brand)}
.cp-chg.down{color:var(--bad)}
.cp-range{font-size:12px; color:var(--ink-2)}
.cp-src{margin-top:6px; font-size:11px; color:var(--ink-2); line-height:1.5}
.cp-foot{margin-top:8px}
.cp-badge{display:inline-block; font-size:11px; font-weight:600; padding:2px 8px; border-radius:999px}
.cp-badge.snap{color:#8a6d00; background:rgba(255,196,0,.16)}
.cp-badge.live{color:#1a7f37; background:rgba(52,199,89,.16)}
.cp-note{margin:12px 2px 0; font-size:11px; color:var(--ink-2); line-height:1.6}
.cp-note code{background:rgba(0,0,0,.05); padding:1px 5px; border-radius:5px; font-size:11px}

/* ===== 折叠计算器（最显眼引流入口：宽幅渐变标题栏） ===== */
.calc-details{margin:18px 0; border:1px solid var(--line-soft); border-radius:16px; background:var(--white); box-shadow:var(--shadow-sm), inset 0 1px 0 rgba(255,255,255,.9); overflow:hidden}
.calc-details>summary{list-style:none; cursor:pointer; padding:16px 20px; font-size:15px; font-weight:700; color:var(--ink-1); display:flex; align-items:center; gap:10px; user-select:none}
.calc-details>summary::-webkit-details-marker{display:none}
.calc-details>summary::-moz-list-bullet{display:none}
.calc-details>summary:hover{background:var(--chip-soft)}
.calc-details[open]>summary{border-bottom:1px solid var(--line-soft)}
.calc-details>summary .tag{background:linear-gradient(150deg,var(--brand-2),var(--brand-d2)); color:var(--white); font-size:11px; font-weight:600; padding:2px 8px; border-radius:999px}

/* 主页引流版：宽幅醒目标题栏 */
.calc-hero{margin:16px 0; border:1px solid rgba(0,0,0,.07); border-radius:18px; background:var(--white); box-shadow:var(--shadow-sm), inset 0 1px 0 rgba(255,255,255,.9)}
.calc-hero>summary{list-style:none; cursor:pointer; padding:18px 22px; display:flex; align-items:center; gap:14px; user-select:none;
  background:linear-gradient(180deg,var(--bg1) 0%,#f1f2f5 100%); color:var(--ink-1); border-radius:18px; transition:.2s cubic-bezier(.3,.7,.4,1)}
.calc-hero>summary::-webkit-details-marker{display:none}
.calc-hero>summary:hover{background:linear-gradient(180deg,#f4f4f7 0%,#e9eaee 100%); box-shadow:0 2px 10px rgba(0,0,0,.06), inset 0 1px 0 rgba(255,255,255,.9)}
.calc-hero>summary:active{background:linear-gradient(180deg,#eeeff2 0%,#e3e5ea 100%)}
.calc-hero .ch-ic{font-size:27px; line-height:1; filter:drop-shadow(0 1px 2px rgba(0,0,0,.18)); background:linear-gradient(150deg,#eef6f0,#e3f1e7); width:46px; height:46px; display:flex; align-items:center; justify-content:center; border-radius:13px; box-shadow:inset 0 1px 0 rgba(255,255,255,.8), inset 0 0 0 1px rgba(0,0,0,.04); padding:5px}
.calc-hero .ch-ic img{width:100%; height:100%; object-fit:contain; display:block; border-radius:8px}
.calc-hero .ch-tx{flex:1; display:flex; flex-direction:column; gap:2px; min-width:0}
.calc-hero .ch-tx b{font-size:21px; font-weight:800; letter-spacing:-.3px; color:var(--ink-1)}
.calc-hero .ch-tx small{font-size:12px; color:var(--ink-2)}
.calc-hero .ch-cta{font-size:15px; font-weight:700; padding:10px 20px; border-radius:980px; background:linear-gradient(180deg,var(--brand-l) 0%,var(--brand-d2) 100%); color:var(--white); box-shadow:0 2px 6px rgba(52,199,89,.4), 0 8px 20px rgba(52,199,89,.28), inset 0 1px 0 rgba(255,255,255,.45); white-space:nowrap; transition:.2s cubic-bezier(.3,.7,.4,1)}
.calc-hero .ch-cta:hover{background:linear-gradient(180deg,var(--brand-hl) 0%,var(--brand-hd) 100%); transform:translateY(-1px); box-shadow:0 3px 8px rgba(52,199,89,.45), 0 12px 26px rgba(52,199,89,.34), inset 0 1px 0 rgba(255,255,255,.5)}
.calc-hero .ch-cta:active{transform:translateY(0); box-shadow:inset 0 2px 5px rgba(0,0,0,.12)}
.calc-hero[open]>summary{border-radius:18px 18px 0 0; border-bottom:1px solid rgba(0,0,0,.06)}
.calc-hero .calc{margin:0; padding:20px 22px; background:var(--white); border:none; border-radius:0; box-shadow:none}
.calc-top{display:flex; align-items:center; justify-content:space-between; margin-bottom:4px}
.calc-top h2{margin:0}
.disc-link{font-size:13.5px; color:var(--brand); cursor:pointer; text-decoration:none; font-weight:500}
.disc-link:hover{text-decoration:underline}

/* ===================== 移动端适配（响应式，统一管理） ===================== */
@media (max-width: 760px){
  body{ font-size:14px; }
  .wrap{ padding:12px 10px; }
  .cats{ grid-template-columns:1fr 1fr; }
  .hero{ padding:18px 16px; border-radius:16px; }
  .hero h1{ font-size:21px; }
  .hero p{ font-size:13.5px; }
  /* 移动端隐藏顶部导航链接与搜索框，导航交给底部 botbar；保留登录态 #memBox */
  .topbar .nav a, .topbar .nav-sep, .topbar .nav-search{ display:none !important; }
  .nav{ gap:8px; }
  .nav-search{order:6; flex:1 1 100%; margin-left:0}
  .nav-search input{width:100%}
  .panel{ padding:16px 14px; border-radius:14px; }
  .grid2,.grid3{ grid-template-columns:1fr; gap:10px; }
  .field{ margin-bottom:10px; }
  .field label{ font-size:12px; }
  .field input,.field select,.field textarea{ font-size:16px; padding:11px 12px; }

  /* 碳资产开发面板移动端 */
  .ca-types{ padding:12px; }
  .ca-type-card{ padding:10px 12px; border-radius:12px; }
  .ca-type-ic{ font-size:19px; }
  .ca-sec{ padding:12px 14px; margin:12px 0; }
  .ca-chk{ font-size:12px; padding:8px; gap:8px; }
  .ca-dash{ padding:14px; gap:12px; }
  .ca-card{ padding:12px; }
  .ca-card-v{ font-size:17px; }
  .ca-rbar-l{ flex:0 0 110px; font-size:12px; }
  .ca-rbar-v{ font-size:13.5px; }

  /* 报告视图 */
  .report{ padding:16px 14px; }
  .report h1{ font-size:21px; line-height:1.3; }
  .report h2{ font-size:17px; margin:18px 0 8px; }
  .report h3{ font-size:15px; }
  .report p,.report li{ font-size:13.5px; line-height:1.7; }
  .report-toc{ position:static; width:auto; margin:0 0 14px; box-shadow:var(--shadow-sm); }
  .report-toc ul{ columns:1; }

  /* 表格横向滚动，避免溢出 */
  .esg-tbl,.report table{ display:block; width:100%; overflow-x:auto; -webkit-overflow-scrolling:touch; font-size:12px; }
  .esg-tbl th,.esg-tbl td,.report table th,.report table td{ white-space:nowrap; padding:8px 10px; }
  .bars{ gap:6px; }
  .bar-row{ font-size:12px; }

  /* 计算条 / 碳价卡 / 零碳指标 */
  .calc-hero>summary{ flex-wrap:wrap; gap:10px; padding:14px 16px; border-radius:14px; }
  .calc-hero .ch-tx b{ font-size:17px; }
  .calc-hero .ch-cta{ width:100%; text-align:center; }
  .cp-cards{ grid-template-columns:1fr; }
  .cp-strip.compact{ gap:8px; }
  .zc-inds{ grid-template-columns:1fr 1fr; gap:8px; }
  .zc-core{ padding:12px; }

  /* 下载/操作按钮栏换行 */
  .genbar,.dlbar{ display:flex; flex-wrap:wrap; gap:8px; }
  .genbar .btn,.dlbar .btn{ flex:1 1 calc(50% - 8px); min-width:120px; }
  .demobar{ flex-direction:column; align-items:stretch; gap:6px; }
  .demobar .muted{ font-size:12px; }

  /* 弹窗 */
  .modal{ padding:10px; }
}
@media (max-width: 420px){
  .genbar .btn,.dlbar .btn{ flex:1 1 100%; }
  .zc-inds{ grid-template-columns:1fr; }
}

/* 计算器结果可视化（ECharts 本地渲染） */
.viz-block{ margin:24px 0 10px; padding:18px 18px 8px; border:1px solid #e1efe8; border-radius:14px; background:linear-gradient(180deg,#f7fbf9,#eef7f2); }
.viz-block .rs-title{ margin:0 0 4px; }
.viz-sub{ font-size:12px; color:var(--ink-2); margin:0 0 12px; }
.viz-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.viz-card{ border:1px solid #e7eef3; border-radius:12px; padding:12px 12px 6px; background:var(--white); box-shadow:0 2px 10px rgba(20,80,60,.05); }
.viz-h{ font-size:13.5px; font-weight:600; color:var(--ink); margin:0 0 6px; line-height:1.4; }
.echart{ width:100%; height:260px; }
@media (max-width:760px){ .viz-grid{ grid-template-columns:1fr; } }

/* 测算结果抬头：企业名称 + 生成时间 */
.rs-head{ display:flex; flex-wrap:wrap; gap:8px 18px; align-items:baseline; justify-content:space-between;
  padding:10px 14px; margin-bottom:14px; background:var(--card2); border:1px solid var(--bd,var(--line-2)); border-radius:10px; }
.rs-ent{ font-weight:700; color:var(--ink,var(--ink)); font-size:15px; }
.rs-ts{ font-size:12px; color:var(--muted,var(--ink-2)); }

/* ===== 通用工具类（原内联样式提取，design.md 纪律：展示样式一律归 class） ===== */
.section-h{font-size:19px; font-weight:700; margin:10px 0 4px; display:flex; align-items:center; gap:8px; letter-spacing:-.2px}
.section-h img{width:28px; height:28px; vertical-align:middle; filter:drop-shadow(0 2px 4px rgba(0,120,80,.18))}
.policy-strip .section-h{margin-top:18px}
.page-title{font-size:27px; font-weight:800; margin:8px 0 4px; letter-spacing:-.5px}
.field-note{font-size:12px; margin-top:4px}
.note-block{font-size:12px; line-height:1.7; margin-top:10px}
.tip-box{display:none; margin:0 0 14px; padding:10px 12px; border-radius:10px; font-size:13.5px; line-height:1.6}
.ta-note{width:100%; padding:10px 12px; border:1px solid var(--line-soft); border-radius:10px; font-size:13.5px; font-family:inherit; resize:vertical}
.fb-row{display:flex; justify-content:space-between; padding:6px 0; gap:10px}
.fb-tag{font-weight:600}

/* ===== 会员门禁通用面板（Gate 组件） ===== */
.gate-panel{ max-width:520px; margin:46px auto; text-align:center; padding:30px 24px;
  border:1px solid var(--line-soft); border-radius:16px; background:var(--chip); box-shadow:var(--shadow-sm); }
.gate-panel .lock{ font-size:34px; line-height:1; }
.gate-panel h2{ margin:12px 0 6px; font-size:21px; color:var(--ink-1); }
.gate-panel p{ color:var(--ink-2); font-size:13.5px; line-height:1.75; margin:0 0 4px; }
.gate-panel .btn{ margin-top:16px; display:inline-block; }

/* ===== 会员服务分级（member.js 渲染） ===== */
.tier-list{ display:grid; gap:10px; margin-top:6px; }
.tier-row{ display:flex; align-items:baseline; gap:10px; flex-wrap:wrap;
  border:1px solid var(--line-soft); border-radius:11px; padding:11px 14px; background:var(--surface); }
.tier-row b{ font-size:15px; color:var(--ink-1); }
.tier-row .tier-desc{ font-size:13.5px; color:var(--ink-2); flex:1 1 200px; }
.tier-row .tier-price{ font-size:13.5px; color:var(--brand-d); font-weight:600; }

/* ===== 会员「可用功能」（个人/企业分流） ===== */
.feat-list{ display:flex; flex-wrap:wrap; gap:8px; }
.feat{ display:inline-block; padding:5px 12px; border-radius:20px; font-size:13.5px; font-weight:600;
  background:#e6f0ff; color:var(--blue-dd); border:1px solid #cfe0ff; }

/* ===== 表格水印（由 lib/site.js 注入叠加层，此处仅兜底） ===== */
.wm-target{ position:relative; }
.wm-target .wm-overlay{ position:absolute; inset:0; pointer-events:none; z-index:5; overflow:hidden;
  background-image:repeating-linear-gradient(-28deg, transparent 0 70px, rgba(15,44,76,.55) 70px 71px); opacity:.5; }
.wm-target .wm-text{ position:absolute; inset:-20%; display:flex; flex-wrap:wrap; align-content:center;
  justify-content:center; gap:46px; transform:rotate(-28deg); font-size:27px; font-weight:700;
  color:rgba(15,44,76,.10); user-select:none; pointer-events:none; z-index:6; overflow:hidden; line-height:2; }
.wm-text span{ padding:0 22px; white-space:nowrap; }

/* ===== 碳资产收益驾驶舱 ===== */
.ca-dash{ display:flex; flex-wrap:wrap; gap:18px; align-items:center; background:var(--white); border:1px solid var(--line-2); border-radius:16px; padding:18px; margin:12px 0; }
.ca-dash-donut{ flex:none; text-align:center; }
.ca-donut{ max-width:100%; }
.ca-legend{ display:flex; flex-direction:column; gap:4px; margin-top:8px; font-size:12px; color:var(--ink-2); }
.ca-legend span{ display:flex; align-items:center; gap:6px; }
.ca-legend i{ width:11px; height:11px; border-radius:3px; display:inline-block; }
.ca-cards{ flex:1 1 320px; display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:12px; }
.ca-card{ border-radius:14px; padding:14px; background:var(--surface-2); border:1px solid var(--line-2); border-top:4px solid var(--line-3); }
.ca-card.c-ccer{ border-top-color:var(--brand-2); background:rgba(48,209,88,.07); }
.ca-card.c-ph{ border-top-color:var(--blue-2); background:rgba(10,132,255,.07); }
.ca-card.c-gep{ border-top-color:var(--warn); background:rgba(255,159,10,.07); }
.ca-card-h{ font-size:15px; font-weight:700; color:var(--ink); }
.ca-card-code{ font-size:12px; color:var(--ink-2); margin:2px 0 10px; }
.ca-card-rows{ display:flex; flex-direction:column; gap:6px; }
.ca-row{ display:flex; justify-content:space-between; align-items:baseline; font-size:13.5px; color:var(--ink-2); }
.ca-row b{ font-size:15px; color:var(--ink); font-variant-numeric:tabular-nums; }
.ca-row.total{ border-top:1px dashed #d0d7e2; padding-top:6px; margin-top:2px; }
.ca-row.total b{ color:var(--brand-d); font-size:17px; }
.ca-card-note{ margin-top:10px; font-size:12px; line-height:1.5; color:var(--warn-d); background:rgba(255,159,10,.12); border-radius:8px; padding:7px 9px; }

/* ── 合规门禁提示 + 禁用按钮 ── */
.ca-gate-hint{ display:flex; align-items:center; gap:6px; margin:8px 0 0; padding:9px 12px; border-radius:10px; background:rgba(255,59,48,.08); border:1px solid rgba(255,59,48,.25); color:var(--bad-d); font-size:13.5px; font-weight:500; line-height:1.5; }
.ca-gate-hint b{ color:var(--bad-d); }
.btn.disabled, .btn:disabled{ opacity:.5; cursor:not-allowed; filter:grayscale(.3); pointer-events:none; }

/* ── 三类收益对比条 ── */
.ca-revbars{ margin:14px 0 4px; background:var(--white); border:1px solid var(--line-2); border-radius:14px; padding:14px 16px; }
.ca-revbars-h{ font-size:13.5px; font-weight:700; color:var(--ink); margin-bottom:10px; }
.ca-rbar{ display:flex; align-items:center; gap:10px; margin:8px 0; }
.ca-rbar-l{ flex:0 0 132px; font-size:12px; color:var(--ink-2); }
.ca-rbar-t{ flex:1 1 auto; height:18px; background:#f0f3f8; border-radius:9px; overflow:hidden; }
.ca-rbar-t i{ display:block; height:100%; border-radius:9px; min-width:2px; }
.ca-rbar-v{ flex:0 0 auto; font-size:13.5px; font-weight:700; color:var(--ink); font-variant-numeric:tabular-nums; }

/* ── 统一报告驾驶舱（复用碳资产配色，全板块统一风格） ── */
.rep-dash{ display:flex; flex-wrap:wrap; gap:18px; align-items:center; background:var(--white); border:1px solid var(--line-2); border-radius:16px; padding:18px; margin:12px 0; }
.rep-dash-donut{ flex:none; text-align:center; }
.rep-donut{ max-width:100%; }
.rep-legend{ display:flex; flex-direction:column; gap:4px; margin-top:8px; font-size:12px; color:var(--ink-2); }
.rep-legend span{ display:flex; align-items:center; gap:6px; }
.rep-legend i{ width:11px; height:11px; border-radius:3px; display:inline-block; }
.rep-cards{ flex:1 1 320px; display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:12px; }
.rep-card{ border-radius:14px; padding:14px; background:var(--surface-2); border:1px solid var(--line-2); border-top:4px solid var(--line-3); }
.rep-card.c-1{ border-top-color:var(--warn); background:rgba(255,159,10,.07); }
.rep-card.c-2{ border-top-color:var(--blue-2); background:rgba(10,132,255,.07); }
.rep-card.c-3{ border-top-color:var(--brand-2); background:rgba(48,209,88,.07); }
.rep-card.c-4{ border-top-color:#bf5af2; background:rgba(191,90,242,.07); }
.rep-card.c-5{ border-top-color:var(--bad); background:rgba(255,69,58,.07); }
.rep-card-h{ font-size:15px; font-weight:700; color:var(--ink); }
.rep-card-code{ font-size:12px; color:var(--ink-2); margin:2px 0 10px; }
.rep-card-rows{ display:flex; flex-direction:column; gap:6px; }
.rep-row{ display:flex; justify-content:space-between; gap:10px; font-size:13.5px; color:var(--ink-2); }
.rep-row span{ color:var(--ink-2); }
.rep-row b{ color:var(--ink); }
.rep-row.total{ border-top:1px dashed #d4dae4; padding-top:6px; margin-top:2px; font-weight:700; }
.rep-card-note{ margin-top:10px; font-size:12px; line-height:1.5; color:var(--warn-d); background:rgba(255,159,10,.12); border-radius:8px; padding:7px 9px; }

/* ── 碳资产 · 合规与资格必选核验 ── */
.req{ color:var(--bad); font-weight:700; font-size:12px; }
.ca-elig{ margin-top:6px; padding:12px 14px; background:var(--white); border:1px solid var(--line-2); border-radius:10px; }
.ca-elig-bar{ font-size:13.5px; margin-bottom:10px; padding:8px 10px; background:rgba(10,132,255,.06); border-left:3px solid var(--blue-2); border-radius:6px; }
.ca-elig-tbl{ margin-top:4px; }
.ca-elig-tbl th.ca-elig-ck, .ca-elig-tbl td.ca-elig-ck{ width:88px; white-space:nowrap; text-align:center; }
.tag-no{font-size:11px; color:var(--white); background:var(--bad); padding:2px 9px; border-radius:980px; font-weight:700; box-shadow:inset 0 1px 0 rgba(255,255,255,.4)}
.tag-pen{font-size:11px; color:var(--ink); background:var(--sys-yellow); padding:2px 9px; border-radius:980px; font-weight:700}
.ca-scope{ margin-top:6px; padding:12px 14px; background:var(--white); border:1px solid var(--line-2); border-radius:10px; }
.ca-scope-bar{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:10px; }
.ca-scope-bar span{ font-size:12px; padding:6px 10px; border-radius:8px; font-weight:700; }
.ca-scope-bar .tag-ok{ background:rgba(48,209,88,.14); color:var(--green-d); }
.ca-scope-bar .tag-pen{ background:rgba(255,214,10,.20); color:var(--gold-d); }
.ca-scope-bar .tag-no{ background:rgba(255,69,58,.12); color:var(--bad-d); }
.ca-scope-tbl{ margin-top:4px; }
.ca-scope-tbl th, .ca-scope-tbl td{ font-size:12px; vertical-align:top; }
.ca-scope-tbl .ca-num{ text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.ca-scope-tbl .ca-reason{ color:var(--ink-2); line-height:1.5; }
.ca-ck-ok{ color:var(--green-d); font-weight:700; white-space:nowrap; }
.ca-ck-pen{ color:var(--gold-d); font-weight:700; white-space:nowrap; }
.ca-ck-no{ color:var(--bad-d); font-weight:700; white-space:nowrap; }

/* ===== 碳资产 · 三栏布局 / 资源图标卡 / 分组卡（对齐主页苹果风设计令牌） ===== */
.ca-layout{ display:grid; grid-template-columns:212px minmax(0,1fr) minmax(0,332px); gap:16px; align-items:start; margin-top:4px; }
.ca-types{ background:var(--surface); border-radius:var(--radius-sm); padding:14px; box-shadow:var(--shadow-sm),var(--bevel); position:sticky; top:14px; }
.ca-types-h{ font-size:13.5px; font-weight:700; color:var(--ink-2); margin-bottom:10px; letter-spacing:.3px; }
.ca-type-list{ display:flex; flex-direction:column; gap:8px; }
.ca-type-card{ display:flex; align-items:center; gap:10px; width:100%; text-align:left; padding:11px 12px; border-radius:14px; border:1px solid var(--line); background:var(--white); cursor:pointer; font-family:var(--font); font-size:13.5px; color:var(--ink); transition:.18s; box-shadow:inset 0 1px 0 rgba(255,255,255,.9); }
.ca-type-card:hover{ border-color:var(--brand); transform:translateY(-1px); box-shadow:var(--shadow-sm),var(--bevel); }
.ca-type-card.active{ border-color:var(--brand); background:var(--brand-soft); box-shadow:0 0 0 3px var(--brand-soft), var(--shadow-sm); }
.ca-type-ic{ font-size:21px; line-height:1; width:24px; text-align:center; }
.ca-type-name{ font-weight:600; }
.ca-main{ min-width:0; }
.ca-sec{ background:var(--surface); border-radius:var(--radius-sm); padding:13px 15px; margin:11px 0; box-shadow:var(--shadow-sm),var(--bevel); }
.ca-side{ position:sticky; top:14px; }
.ca-prev{ background:var(--surface); border-radius:var(--radius-sm); padding:14px 16px; box-shadow:var(--shadow-sm),var(--bevel); }
.ca-prev:empty{ display:none; }
/* 保险：预览为空时连同右侧栏一起隐藏（兼容 :empty 不命中场景，杜绝右侧留白） */
.ca-side:has(.ca-prev:empty){ display:none; }
.ca-card-v{ font-size:21px; font-weight:800; color:var(--ink); font-variant-numeric:tabular-nums; margin:2px 0; }
.ca-card-u{ font-size:12px; color:var(--ink-3); }
.ca-card.c-total{ border-top-color:var(--brand-d); background:rgba(52,199,89,.10); }
.ca-detail{ margin-top:10px; }
.ca-detail-tbl td{ border:none; padding:4px 6px; }
.ca-detail-tbl td:first-child{ color:var(--ink-2); }
.ca-method{ margin-top:8px; font-size:13.5px; }
.ca-method ul{ margin:4px 0 0 18px; }
@media (max-width:1100px){
  .ca-layout{ grid-template-columns:1fr; gap:14px; }
  .ca-types,.ca-side{ position:static; }
  .ca-type-list{ flex-direction:row; flex-wrap:wrap; gap:8px; }
  .ca-type-card{ flex:1 1 calc(50% - 6px); min-width:140px; width:auto; }
  .ca-type-name{ font-size:13.5px; }
}
@media (max-width:480px){
  .ca-type-card{ flex:1 1 100%; }
}

/* ── 双碳驾驶舱（esg_tool 增强）── */
.dash .dl-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:14px; margin-top:10px; }
.dash .dl-card{ background:var(--bg-g); border:1px solid var(--line-g); border-radius:14px; padding:14px; }
.dash .dl-card h4{ margin:0 0 10px; font-size:13.5px; color:var(--ink); }
.dl-donut{ width:140px; height:140px; float:left; margin-right:10px; }
.dl-donut-t{ font-size:15px; font-weight:700; fill:var(--ink); }
.dl-donut-s{ font-size:11px; fill:var(--ink-2); }
.dl-legend{ font-size:12px; overflow:hidden; }
.dl-lgi{ display:flex; align-items:center; gap:6px; padding:3px 0; }
.dl-lgi i{ width:10px; height:10px; border-radius:3px; display:inline-block; flex:0 0 auto; }
.dl-kpis{ display:flex; flex-wrap:wrap; gap:10px; }
.dl-kpi{ flex:1; min-width:120px; background:var(--chip); border-radius:12px; padding:12px; text-align:center; }
.dl-kpi-v{ font-size:17px; font-weight:700; color:var(--brand); }
.dl-kpi-l{ font-size:12px; color:var(--ink-2); margin-top:2px; }
.dl-bar{ display:grid; grid-template-columns:140px 1fr 130px; gap:8px; align-items:center; margin:9px 0; font-size:12px; }
.dl-bar-l{ color:var(--ink); }
.dl-bar-track{ position:relative; height:14px; background:#eef0ee; border-radius:8px; overflow:hidden; }
.dl-bar-now{ height:100%; border-radius:8px; transition:width .3s; }
.dl-bar-tgt{ position:absolute; top:-3px; width:2px; height:20px; background:#ff375f; }
.dl-bar-v{ color:var(--ink-2); text-align:right; }
@media (max-width:760px){
  .dl-bar{ grid-template-columns:92px 1fr 92px; }
  .dl-donut{ float:none; display:block; margin:0 auto; }
  .dl-legend{ text-align:center; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   能碳侠 AI 助手入口（2026-09-13 野比授权施工 · 方案 A + C）
   定位：夹在「免费能碳计算器」与「付费核心档」之间的售前顾问层
        —— 给判断（量级/口径/自查清单/路径），不给交付物（分档表/溯源报告）
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── A · 全站右下角悬浮胶囊 ───────────────────────────────────────────────── */
.ncx-fab{
  position:fixed; right:22px; bottom:22px; z-index:55;
  display:inline-flex; align-items:center; gap:9px;
  padding:10px 18px 10px 13px; border-radius:980px;
  text-decoration:none; font-family:var(--font); font-size:13.5px; font-weight:600;
  color:var(--white);
  background:linear-gradient(160deg, var(--brand-l) 0%, var(--brand-d2) 100%);
  box-shadow:0 2px 6px rgba(36,138,61,.32), 0 10px 24px rgba(36,138,61,.24), inset 0 1px 0 rgba(255,255,255,.32);
  transition:.24s cubic-bezier(.3,.7,.4,1);
}
.ncx-fab:hover{
  transform:translateY(-2px); text-decoration:none; color:var(--white);
  box-shadow:0 4px 10px rgba(36,138,61,.36), 0 16px 34px rgba(36,138,61,.30), inset 0 1px 0 rgba(255,255,255,.32);
}
.ncx-fab:active{transform:translateY(0) scale(.97)}
.ncx-fab-ic{width:24px; height:24px; border-radius:50%; display:block; flex:0 0 24px}

/* ── C · 首页主区白卡（插在能碳计算器主 CTA 之后）───────────────────────── */
.ncx-card{
  display:grid; grid-template-columns:auto 1fr auto; gap:18px; align-items:center;
  margin:26px 0 2px; padding:20px 24px; border-radius:var(--radius);
  background:var(--surface); border:1px solid var(--line);
  box-shadow:var(--shadow); --d:.14s;
  animation:fadeUp .7s var(--d,0s) cubic-bezier(.2,.7,.3,1) both;
}
.ncx-card-ic{
  width:56px; height:56px; border-radius:16px; display:grid; place-items:center;
  background:linear-gradient(160deg, rgba(52,199,89,.15) 0%, rgba(52,199,89,.05) 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9), inset 0 0 0 1px rgba(52,199,89,.14);
}
.ncx-card-ic img{width:38px; height:38px; border-radius:50%; display:block}
.ncx-card-tx h3{margin:0 0 4px; font-size:17px; font-weight:700; letter-spacing:-.2px}
.ncx-card-tx p{margin:0; font-size:13.5px; line-height:1.7; color:var(--ink-2)}
.ncx-card-cta{white-space:nowrap}

/* 小屏：单列堆叠；悬浮胶囊抬到 botbar（约 62px）之上，避免遮挡 */
@media (max-width:760px){
  .ncx-card{grid-template-columns:auto 1fr; gap:14px; padding:18px}
  .ncx-card-cta{grid-column:1 / -1; display:block; text-align:center}
  .ncx-fab{right:14px; bottom:74px; padding:9px 15px 9px 11px; font-size:13px}
  .ncx-fab-ic{width:22px; height:22px; flex:0 0 22px}
}
/* 极窄屏：悬浮胶囊只留圆形图标，省出屏幕空间 */
@media (max-width:420px){
  .ncx-fab{padding:10px; gap:0}
  .ncx-fab-tx{display:none}
}

/* ── A2 · 加微信入口（2026-09-14 野比要求：让访客从胶囊直达商务微信）──────────
   右侧竖向堆叠，三个元素各自 fixed 贴右下角；bottom 值互相推导（改一个要连带改下面的）：
     .ncx-fab  问 AI 助手（绿实心·主 CTA）   bottom:22px   高约 44px
     .ncx-wx   加微信（白底描边·次级）        bottom:80px   = 22 + 44 + 14(间距)
     .ncx-qr   二维码卡片（点上方按钮展开）    bottom:138px  = 80 + 38 + 20(间距)
   小屏（≤760px）整体上移，避开底部导航条 .botbar（约 62px）。 */
.ncx-wx{
  position:fixed; right:22px; bottom:80px; z-index:55;
  display:inline-flex; align-items:center; gap:8px;
  padding:9px 15px; border-radius:980px; cursor:pointer;
  border:1px solid rgba(36,138,61,.30);
  background:var(--surface); color:var(--brand-d2);
  font-family:var(--font); font-size:13px; font-weight:600;
  box-shadow:0 2px 6px rgba(16,42,29,.10), 0 10px 22px rgba(16,42,29,.10);
  transition:.24s cubic-bezier(.3,.7,.4,1);
}
.ncx-wx:hover{
  transform:translateY(-2px); color:var(--brand-d2);
  border-color:rgba(36,138,61,.5);
  box-shadow:0 4px 10px rgba(16,42,29,.12), 0 14px 28px rgba(16,42,29,.14);
}
.ncx-wx:active{transform:translateY(0) scale(.97)}
.ncx-wx-ic{width:20px; height:20px; flex:0 0 20px; display:block}

/* 二维码卡片：默认 hidden，点「加微信」就地展开（不跳转、不遮屏、不打断阅读） */
.ncx-qr{
  position:fixed; right:22px; bottom:138px; z-index:56;
  width:206px; padding:14px 14px 12px; border-radius:16px;
  background:var(--surface); border:1px solid var(--line);
  box-shadow:0 2px 6px rgba(16,42,29,.08), 0 14px 34px rgba(16,42,29,.18);
  text-align:center;
  animation:ncxPop .22s cubic-bezier(.2,.8,.3,1) both;
}
.ncx-qr[hidden]{display:none}
@keyframes ncxPop{from{opacity:0; transform:translateY(8px) scale(.96)} to{opacity:1; transform:none}}
.ncx-qr-img{width:168px; height:168px; display:block; margin:0 auto; border-radius:12px; background:#fff}
.ncx-qr-nm{margin-top:9px; font-size:13px; font-weight:700; color:var(--brand-d2); letter-spacing:-.1px}
.ncx-qr-hint{margin-top:2px; font-size:11.5px; color:var(--ink-2)}
.ncx-qr-x{
  position:absolute; top:6px; right:7px; width:22px; height:22px; padding:0;
  border:0; border-radius:50%; background:transparent; color:#9aa3ad;
  font-size:13px; line-height:22px; cursor:pointer; transition:.18s;
}
.ncx-qr-x:hover{background:#f0f2f4; color:#4b5563}

@media (max-width:760px){
  .ncx-wx{right:14px; bottom:126px; padding:9px 14px 9px 12px; font-size:12.5px}
  .ncx-qr{right:14px; bottom:180px; width:196px}
  .ncx-qr-img{width:158px; height:158px}
}
@media (max-width:420px){
  .ncx-wx{padding:10px; gap:0}
  .ncx-wx-tx{display:none}
}
