/* ============================================================
   slides.css —— 各类幻灯片的版面样式
   依赖 base.css（令牌）、layout.css（幻灯片骨架）、components.css（通用件）
   所有尺寸按 1600x900 设计稿写死，不要用 vh/vw。
   ============================================================ */

/* ============ 封面 ============ */
.cover{
  position:absolute;inset:0;
  background:
    radial-gradient(1200px 600px at 78% 12%, rgba(226,38,46,.42), transparent 62%),
    radial-gradient(900px 520px at 12% 92%, rgba(122,0,7,.55), transparent 60%),
    linear-gradient(135deg, #8d0008 0%, var(--red-dd) 42%, #4c0004 100%);
  display:flex;flex-direction:column;justify-content:center;
  padding:0 var(--pad-x);
  overflow:hidden;
}
.cover::after{
  content:"";position:absolute;right:-160px;top:-120px;
  width:620px;height:620px;border-radius:50%;
  border:1px solid rgba(255,255,255,.10);
  box-shadow:0 0 0 70px rgba(255,255,255,.028), 0 0 0 140px rgba(255,255,255,.018);
}
.cover .cv-inner{position:relative;z-index:2;max-width:1080px}
.cover .cv-logo{display:flex;align-items:center;gap:14px;margin-bottom:52px}
.cover .cv-logo img{width:44px;height:44px}
/* 封面徽标：直接用安诚红色圆徽原图（透明底），不做任何滤镜，保持品牌真实观感 */
.cover .cv-signet{
  width:44px;height:44px;border-radius:50%;
  background:#fff;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 4px 16px rgba(0,0,0,.28);
  flex:0 0 auto;position:relative;overflow:hidden;
}
.cover .cv-signet img{width:44px;height:44px;filter:none;opacity:1;display:block}
.cover .cv-lg{color:#fff;font-size:17px;font-weight:700;letter-spacing:.06em;line-height:1.3}
.cover .cv-lg small{
  display:block;font-size:10.5px;font-weight:600;
  letter-spacing:.22em;color:rgba(255,255,255,.62);margin-top:3px;
}
.cover .cv-sub{
  font-size:20px;font-weight:700;line-height:1.5;
  color:rgba(255,255,255,.86);margin-bottom:16px;
  letter-spacing:.02em;
}
.cover h1{
  font-size:70px;font-weight:800;line-height:1.14;
  color:#fff;letter-spacing:-.01em;
}
.cover h1 em{font-style:normal;color:#ffd9db}
.cover .cv-desc{
  margin-top:26px;font-size:17px;line-height:1.85;
  color:rgba(255,255,255,.72);max-width:860px;
}
.cover .cv-meta{
  margin-top:52px;display:flex;align-items:center;gap:26px;
  font-size:13.5px;color:rgba(255,255,255,.6);
  padding-top:24px;border-top:1px solid rgba(255,255,255,.16);
  max-width:860px;
}
.cover .cv-meta b{color:#fff;font-weight:700}
.cover .cv-badge{
  position:absolute;right:var(--pad-x);bottom:var(--pad-y);
  z-index:2;
  display:flex;align-items:center;gap:10px;
  background:rgba(255,255,255,.10);
  border:1px solid rgba(255,255,255,.22);
  border-radius:var(--r-sm);
  padding:10px 18px;
  font-size:13px;font-weight:700;color:#fff;
  backdrop-filter:blur(6px);
}
.cover .cv-badge i{
  display:block;width:7px;height:7px;border-radius:50%;
  background:#4ade80;box-shadow:0 0 0 4px rgba(74,222,128,.22);
}

/* ============ 目录 ============ */
.toc{display:grid;grid-template-columns:1fr 1fr;gap:22px 28px;margin-top:26px;flex:1 1 auto;align-content:stretch}
.toc-item{
  display:flex;align-items:center;gap:22px;
  background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);padding:16px 20px;
  cursor:pointer;transition:border-color .2s,box-shadow .2s,transform .2s;
  box-shadow:var(--sh-sm);
}
.toc-item:hover{border-color:rgba(199,0,11,.34);box-shadow:var(--sh);transform:translateY(-2px)}
.toc-item .ti-n{
  flex:0 0 auto;width:52px;height:52px;border-radius:14px;
  background:var(--red-soft);color:var(--red);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-num);font-size:19px;font-weight:800;
}
.toc-item .ti-t{font-size:19px;font-weight:800;line-height:1.4}
.toc-item .ti-s{font-size:14px;color:var(--gray);margin-top:7px;line-height:1.6}

/* ============ 问题卡 (prob) ============ */
.prob{display:flex;flex-direction:column;justify-content:center;gap:14px;flex:1;margin-top:10px}
.prob .card{display:flex;gap:20px;align-items:center;padding:20px 26px}
.prob .card .card-t{font-size:17px}
.prob .card .card-s{font-size:13.5px;line-height:1.6;margin-top:6px}

/* ============ 核心判断 (judge) ============ */
.judge{display:flex;flex-direction:column;gap:22px;align-items:center;justify-content:center;text-align:center;flex:1}
.judge .jg-q{font-size:22px;font-weight:700;color:var(--gray);line-height:1.5}
.judge .jg-a{
  display:inline-block;text-align:center;
  background:linear-gradient(135deg,var(--red),var(--red-d));
  color:#fff;border-radius:14px;
  padding:24px 56px;
  font-size:34px;font-weight:800;line-height:1.25;
  box-shadow:0 18px 48px rgba(199,0,11,.28);
}
.judge .jg-a .jg-sub{
  display:block;margin-top:8px;
  font-size:20px;font-weight:700;line-height:1.4;
  color:rgba(255,255,255,.88);letter-spacing:.02em;
}
.judge .jg-line{
  width:120px;height:3px;border-radius:2px;
  background:linear-gradient(90deg,transparent,var(--red),transparent);
}

/* ============ 三个硬性逻辑 (logic) ============ */
.logic{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:8px}
.logic-item{
  background:var(--card);border:1px solid var(--line);
  border-radius:var(--r-md);padding:24px 22px;
  box-shadow:var(--sh-sm);
  display:flex;flex-direction:column;gap:12px;
  position:relative;overflow:hidden;
}
.logic-item::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:4px;
  background:var(--red);
}
.logic-item .lnum{
  font-family:var(--font-num);font-size:32px;font-weight:800;
  color:var(--red-soft2);line-height:1;
}
.logic-item .lt{font-size:18px;font-weight:800;line-height:1.35}
.logic-item .ls{font-size:13.5px;color:var(--gray);line-height:1.7}

/* ============ 链路 (chain) ============ */
.chain{display:flex;align-items:stretch;gap:0;width:100%;margin-top:6px}
.chain-node{
  flex:1;min-width:0;
  background:var(--card);border:1px solid var(--line);
  border-radius:var(--r-md);
  padding:22px 20px;
  box-shadow:var(--sh-sm);
  display:flex;flex-direction:column;gap:10px;
  transition:transform .2s,box-shadow .2s;
}
.chain-node:hover{transform:translateY(-3px);box-shadow:var(--sh)}
.chain-node.hot{
  background:linear-gradient(160deg,var(--red),var(--red-d));
  border-color:var(--red-d);
  box-shadow:0 16px 40px rgba(199,0,11,.26);
}
.chain-node .cn-c{display:flex;align-items:baseline;gap:10px}
.chain-node .cn-n{
  font-family:var(--font-num);font-size:12px;font-weight:800;
  letter-spacing:.14em;color:var(--dim);
}
.chain-node .cn-i{font-size:24px;font-weight:800;line-height:1;color:var(--red)}
.chain-node .cn-t{font-size:19px;font-weight:800;line-height:1.3}
.chain-node .cn-s{font-size:13px;color:var(--gray);line-height:1.65}
/* 反向链：02 服务节点为红底，字符需白字 */
.chain-node.hot .cn-c .cn-n{color:rgba(255,255,255,.68)}
.chain-node.hot .cn-c .cn-i{color:#fff;font-size:24px;font-weight:800;line-height:1}
.chain-node.hot .cn-t{color:#fff}
.chain-node.hot .cn-s{color:rgba(255,255,255,.8)}
.chain-arr{
  flex:0 0 44px;display:flex;align-items:center;justify-content:center;
  color:var(--dim);font-size:20px;font-weight:800;
}

/* ============ 四阶段卡片 (stg) ============ */
.stg{
  background:var(--card);border:1px solid var(--line);
  border-radius:var(--r-md);overflow:hidden;
  box-shadow:var(--sh-sm);
  display:flex;flex-direction:column;
  transition:transform .2s,box-shadow .2s;
}
.stg:hover{transform:translateY(-2px);box-shadow:var(--sh)}
.stg .stg-h{padding:20px 20px 0}
.stg .sh-top{display:flex;align-items:baseline;gap:10px;margin-bottom:12px}
.stg .sh-no{font-family:var(--font-num);font-size:13px;font-weight:800;letter-spacing:.1em}
.stg .sh-time{margin-left:auto;font-family:var(--font-num);font-size:12px;color:var(--dim);font-weight:700}
.stg .sh-t{font-size:20px;font-weight:800;line-height:1.3}
.stg .sh-s{font-size:13px;color:var(--gray);line-height:1.6;margin-top:8px;min-height:42px}
.stg .stg-b{
  padding:14px 20px;margin-top:14px;
  display:flex;flex-direction:column;gap:9px;
  flex:1;
}
.stg .sb-row{display:flex;gap:9px;align-items:flex-start;font-size:13px;line-height:1.5;color:var(--ink-2)}
.stg .sb-row i{
  flex:0 0 auto;width:6px;height:6px;border-radius:50%;
  background:var(--red);margin-top:6px;
}
.stg .stg-f{
  padding:13px 20px;
  background:var(--line-2);border-top:1px solid var(--line);
  font-size:12px;color:var(--ink-2);line-height:1.5;
}
.stg .stg-f b{color:var(--ink);font-weight:800}
/* 阶段主色 */
.stg { border-top:3px solid var(--line) }
.stg.st1{border-top-color:var(--st1)}
.stg.st1 .sh-no{color:var(--st1)}
.stg.st1 .stg-b .sb-row i{background:var(--st1)}
.stg.st2{border-top-color:var(--st2)}
.stg.st2 .sh-no{color:var(--st2)}
.stg.st2 .stg-b .sb-row i{background:var(--st2)}
.stg.st3{border-top-color:var(--st3)}
.stg.st3 .sh-no{color:var(--st3)}
.stg.st3 .stg-b .sb-row i{background:var(--st3)}
.stg.st4{border-top-color:var(--st4)}
.stg.st4 .sh-no{color:var(--st4)}
.stg.st4 .stg-b .sb-row i{background:var(--st4)}

/* ============ 甘特流程规划图 (gantt) —— 重点页 ============ */
.gantt{display:flex;flex-direction:column;flex:1;min-height:0;margin-top:4px}
.gantt-axis{
  display:grid;grid-template-columns:138px 1fr;
  align-items:center;height:34px;margin-bottom:6px;
}
.gantt-axis .ga-l{font-size:12px;font-weight:800;letter-spacing:.1em;color:var(--dim);line-height:1.3}
.gantt-axis .ga-body{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;height:100%}
.gantt-axis .ga-q{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;
  background:var(--line-2);border-radius:var(--r-sm);
}
.gantt-axis .ga-q b{
  display:flex;align-items:center;justify-content:center;gap:6px;
  font-family:var(--font-num);font-size:13px;font-weight:800;color:var(--ink);
}
.gantt-axis .ga-q span{font-size:11px;color:var(--gray);font-weight:700}
.lane{
  display:grid;grid-template-columns:138px 1fr;
  align-items:stretch;
  border-top:1px dashed var(--line);
  padding:7px 0;
  flex:1;min-height:0;max-height:64px;
}
.lane:last-of-type{border-bottom:1px dashed var(--line)}
.lane-l{
  display:flex;align-items:center;
  font-size:13px;font-weight:800;color:var(--ink-2);
  line-height:1.3;padding-right:10px;
}
.lane-b{position:relative;display:grid;grid-template-columns:repeat(4,1fr);gap:8px;align-items:center}
.gb{
  height:28px;border-radius:7px;
  display:flex;align-items:center;justify-content:center;
  font-size:11.5px;font-weight:800;color:#fff;
  padding:0 8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;
  box-shadow:0 3px 10px rgba(0,0,0,.10);
}
.gb.s1{background:var(--st1)}
.gb.s2{background:var(--st2)}
.gb.s3{background:var(--st3)}
.gb.s4{background:var(--st4)}
.gb.mix{background:linear-gradient(90deg,var(--st1),var(--st2))}
.gb.light{color:var(--ink);background:var(--line-2);box-shadow:none;border:1px dashed var(--line)}
/* 验收节点轨道 */
.gate-track{display:grid;grid-template-columns:138px 1fr;padding-top:6px;padding-bottom:30px}
.gate-track .gt-l{display:flex;align-items:center;font-size:12px;font-weight:800;color:var(--red);letter-spacing:.06em;line-height:1.3}
.gate-track .gt-b{position:relative;display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.gate{display:flex;justify-content:center;position:relative;padding-top:2px}
.gate .g-dia{
  width:16px;height:16px;border-radius:3px;
  background:var(--red);transform:rotate(45deg);
  box-shadow:0 4px 12px rgba(199,0,11,.32);
}
.gate .g-txt{
  position:absolute;top:26px;left:50%;transform:translateX(-50%);
  white-space:nowrap;text-align:center;
  font-size:10.5px;line-height:1.35;color:var(--red);
}
.gate .g-txt b{display:block;font-weight:800;font-size:11.5px}
.gate .g-txt span{color:var(--dim);font-weight:700}
.legend{display:flex;align-items:center;gap:20px;margin-top:8px;font-size:12px;color:var(--gray)}
.legend i{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.legend i.s1{background:var(--st1)}
.legend i.s2{background:var(--st2)}
.legend i.s3{background:var(--st3)}
.legend i.s4{background:var(--st4)}
.legend i.dia{background:var(--red);transform:rotate(45deg);border-radius:2px}

/* ============ 四阶段详情 (stg-detail) ============ */
.stg-detail{
  display:flex;
  gap:22px;
  /* 不用 grid：grid 轨道按内容撑高会多出 3-4px，导出 PDF 时压到页脚。
     .stg-detail 作为 .body 的 flex 子项拿定高度，左右两栏再各自 flex */
  flex:1;
  min-height:0;
}
.sd-side{
  flex:0 0 264px;min-width:0;
  background:var(--card);
  border:1px solid var(--line);
  border-radius:var(--r-md);
  padding:24px;
  box-shadow:var(--sh-sm);
  display:flex;flex-direction:column;
}
.sd-side .ss-no{
  font-family:var(--font-num);font-size:12px;font-weight:800;
  letter-spacing:.16em;color:var(--red);margin-bottom:12px;
}
.sd-side .ss-t{font-size:25px;font-weight:800;line-height:1.28;margin-bottom:10px}
.sd-side .ss-time{
  font-size:13px;font-weight:700;color:var(--gray);
  font-family:var(--font-num);
  padding:6px 12px;background:var(--line-2);border-radius:var(--r-sm);
  display:inline-block;margin-bottom:20px;align-self:flex-start;
}
.sd-side .ss-goal{font-size:13.5px;line-height:1.72;color:var(--ink-2)}
.sd-side .ss-goal b{
  display:block;font-size:11.5px;letter-spacing:.12em;
  color:var(--dim);font-weight:800;margin-bottom:8px;
}
.sd-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:14px;min-height:0}
/* 动作卡 */
.act{
  background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);padding:9px 14px;
  box-shadow:var(--sh-sm);
  display:flex;gap:12px;align-items:flex-start;
  transition:border-color .2s,box-shadow .2s;
  position:relative;padding-right:96px;
}
.act:hover{border-color:rgba(199,0,11,.24);box-shadow:var(--sh)}
.act .a-n{
  flex:0 0 auto;width:24px;height:24px;border-radius:7px;
  background:var(--red-soft);color:var(--red);
  display:flex;align-items:center;justify-content:center;
  font-size:12px;font-weight:800;font-family:var(--font-num);
}
.act .a-c{flex:1;min-width:0}
.act .a-t{
  font-size:14.5px;font-weight:800;line-height:1.3;
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
}
.act .a-s{font-size:12.5px;color:var(--gray);line-height:1.5;margin-top:2px}
.act .a-tags{display:flex;gap:6px;flex-wrap:wrap;position:absolute;right:14px;top:9px}
.act .a-tags .tag{font-size:11px;padding:2px 9px}
/* 交付物条 */
.deliv{display:flex;gap:10px;flex-wrap:wrap;margin-top:auto;padding-top:6px}
.deliv .dv{
  font-size:12px;font-weight:700;
  padding:7px 13px;border-radius:var(--r-sm);
  background:var(--card);border:1px solid var(--line);
  color:var(--ink-2);box-shadow:var(--sh-sm);
}
.deliv .dv::before{content:"◆ ";color:var(--red);font-size:9px}

/* ============ 服务体系即营销载体 (svc-mk) ============ */
.svc-mk{display:grid;grid-template-columns:1fr 52px 1fr;align-items:stretch;margin-top:4px}
.svc-col{
  background:var(--card);border:1px solid var(--line);
  border-radius:var(--r-md);padding:18px 22px;box-shadow:var(--sh-sm);
}
.svc-col.svc-hl{border-color:rgba(22,104,220,.3);background:linear-gradient(180deg,#f7faff,#fff)}
.svc-col .sc-h{font-size:15px;font-weight:800;margin-bottom:10px;display:flex;align-items:center;gap:9px}
.svc-col .ico.sm{width:30px;height:30px;font-size:15px;border-radius:9px}
.svc-mid{
  display:flex;align-items:center;justify-content:center;
  color:var(--dim);font-size:22px;font-weight:800;
}
.svc-row{
  padding:8px 0;border-top:1px dashed var(--line);
  font-size:12.5px;line-height:1.5;
}
.svc-row:first-of-type{border-top:none;padding-top:0}
.svc-row b{display:block;color:var(--ink);font-weight:800;font-size:13px;margin-bottom:2px}
.svc-row b.sr-k-blue{color:var(--st2)}
.svc-row .sr-v{color:var(--gray)}
.svc-row .sr-arr{color:var(--red);font-weight:800;margin-right:5px}

/* ============ 90 天续保 SOP —— 11 节点双列 ============ */
.sop{
  display:grid;grid-template-columns:1fr 1fr;
  column-gap:34px;row-gap:0;
  flex:1;min-height:0;align-content:center;
}
.sop-node{
  display:grid;grid-template-columns:112px 1fr;
  gap:14px;align-items:start;
  padding:9px 0;
  border-top:1px dashed var(--line);
}
.sop-node .sn-mark{
  display:flex;align-items:center;justify-content:center;
  height:28px;
  font-family:var(--font-num);font-size:11px;font-weight:800;
  color:#fff;background:var(--red);
  border-radius:var(--r-sm);
  box-shadow:0 3px 10px rgba(199,0,11,.2);
  white-space:nowrap;
}
.sop-node .sn-t{font-size:13.5px;font-weight:800;line-height:1.35}
.sop-node .sn-s{font-size:12px;color:var(--gray);line-height:1.5;margin-top:3px}
/* 60 天前不做续保提醒的特殊节点 */
.sop-node.warn .sn-mark{background:var(--amber)}
.sop-node.warn .sn-t{color:#b45309}
.sop-node.dim2{opacity:.6}
.sop-node.dim2 .sn-mark{background:var(--dim);box-shadow:none}

/* ============ 客户旅程（生命周期） ============ */
.journey{
  position:relative;display:flex;align-items:flex-start;
  flex:0 0 auto;padding:0 0 4px;
}
.journey .jr-line{
  position:absolute;left:7%;right:7%;top:22px;height:2px;
  background:linear-gradient(90deg,var(--red-soft2),var(--red),var(--red-soft2));
}
.jr-node{
  flex:1;min-width:0;position:relative;
  display:flex;flex-direction:column;align-items:center;
}
.jr-node .jn-c{
  width:14px;height:14px;border-radius:50%;
  background:#fff;border:3px solid var(--red);
  position:relative;z-index:2;margin-top:14px;
}
.jr-node.hot .jn-c{background:var(--red);box-shadow:0 0 0 6px rgba(199,0,11,.14)}
.jr-node .jn-t{
  margin-top:12px;font-size:12.5px;font-weight:800;line-height:1.35;
  text-align:center;padding:0 5px;
}
.jr-node .jn-s{
  margin-top:5px;font-size:11.5px;color:var(--gray);line-height:1.5;
  text-align:center;padding:0 7px;
}

/* ============ 架构图 (arch) —— 横向承载，纵向五层 ============ */
.arch{display:flex;flex-direction:column;gap:10px;flex:1;min-height:0;justify-content:center;margin-top:4px}
.arch-layer{display:grid;grid-template-columns:96px 1fr;gap:14px;align-items:stretch}
.arch-layer .al-k{
  display:flex;align-items:center;justify-content:flex-end;
  font-size:12.5px;font-weight:800;color:var(--dim);
  letter-spacing:.06em;text-align:right;line-height:1.3;
}
.arch-layer .al-b{display:grid;gap:8px;align-items:stretch}
.arch-cell{
  background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);padding:10px 12px;
  box-shadow:var(--sh-sm);
  display:flex;align-items:center;justify-content:center;
  font-size:13px;font-weight:800;text-align:center;line-height:1.3;
}
.arch-cell.red{background:linear-gradient(160deg,var(--red),var(--red-d));border-color:var(--red-d);color:#fff}
.arch-cell.blue{background:#f4f9ff;border-color:rgba(22,104,220,.24);color:var(--st2)}
.arch-cell.green{background:#f3fcf7;border-color:rgba(7,163,90,.24);color:var(--st3)}
.arch-cell.purple{background:#f9f5ff;border-color:rgba(114,46,209,.22);color:var(--st4)}
.arch-cell.dashed{border-style:dashed;background:transparent;box-shadow:none;color:var(--gray)}
/* 各层列数由模板 inline 设定，这里兜底 */
.arch-layer .al-b{grid-auto-flow:column;grid-auto-columns:1fr}

/* ============ 手机示意 (mock) ============ */
.mock-row{display:flex;gap:22px;align-items:flex-end;justify-content:center}
/* C 端载体页：左侧文字 + 右侧手机 */
.cem{display:flex;gap:40px;align-items:flex-start;margin-top:8px}
.cem-l{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center;gap:14px}
.cem-l .cl-i{display:flex;gap:14px;align-items:flex-start}
.cem-l .cl-i .idx{width:30px;height:30px;font-size:14px}
.cem-l .cl-t{font-size:16px;font-weight:800;line-height:1.35}
.cem-l .cl-s{font-size:13px;color:var(--gray);line-height:1.55;margin-top:3px}
.cem-l .quote{margin-top:2px;font-size:12px;padding:10px 14px;line-height:1.55}
.mock{
  width:214px;flex:0 0 auto;
  background:#1d2125;
  border-radius:22px;
  padding:8px;
  box-shadow:var(--sh-lg);
  position:relative;
}
.mock .mk-scr{
  background:#fff;border-radius:16px;overflow:hidden;
  height:566px;position:relative;
}
/* 必须写在 .mock .mk-scr 之后，同优先级后出现者生效 */
.cem .mock{width:202px}
.cem .mk-scr{height:500px}
.mock .mk-bar{
  height:26px;background:var(--red);
  display:flex;align-items:center;justify-content:space-between;
  padding:0 12px;color:#fff;font-size:9px;font-weight:700;
}
.mock .mk-nav{background:var(--red);color:#fff;padding:8px 12px 14px;font-size:13px;font-weight:800}
.mock .mk-body{padding:11px 12px;display:flex;flex-direction:column;gap:9px}
.mock .mk-card{border-radius:9px;padding:10px 11px;background:#f7f8f9;font-size:9.5px;line-height:1.5}
.mock .mk-card.big{background:linear-gradient(135deg,var(--red),var(--red-d));color:#fff}
.mock .mk-card .mck-t{font-size:10.5px;font-weight:800;margin-bottom:4px}
.mock .mk-card .mck-v{font-size:17px;font-weight:800;font-family:var(--font-num)}
.mock .mk-card .mck-s{opacity:.8;margin-top:3px}
.mock .mk-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.mock .mk-grid i{
  height:38px;border-radius:7px;background:#f2f3f5;
  display:flex;align-items:center;justify-content:center;
  font-size:9.5px;font-style:normal;color:var(--red);font-weight:700;
}
.mock .mk-tag{
  font-size:8px;padding:2px 6px;border-radius:3px;
  background:var(--red-soft);color:var(--red);font-weight:700;
  display:inline-block;margin-top:4px;
}
.mock-cap{text-align:center;font-size:12px;color:var(--gray);margin-top:10px;font-weight:600}
.mock-wrap{display:flex;flex-direction:column;align-items:center;justify-content:center}

/* ============ 对照同业补齐 (gap-row) ============ */
.gap-row{
  display:grid;grid-template-columns:170px 1fr 1fr 130px;
  align-items:center;
  background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);padding:9px 18px;
  font-size:13.5px;box-shadow:var(--sh-sm);
}
.gap-row .gr-a{font-weight:800;line-height:1.35}
.gap-row .gr-b,.gap-row .gr-c{color:var(--gray);line-height:1.5;padding-right:14px}
.gap-row .gr-d{text-align:left;font-weight:800;color:var(--ink)}
.gap-row.ours{border-color:rgba(199,0,11,.3);background:linear-gradient(90deg,var(--red-soft),#fff)}

/* ============ 指标口径 (kpi) ============ */
.kpi{
  background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);padding:13px 15px;
  box-shadow:var(--sh-sm);
}
.kpi .kp-t{font-size:13.5px;font-weight:800;line-height:1.3;margin-bottom:4px}
.kpi .kp-d{font-size:12px;color:var(--gray);line-height:1.55}

/* ============ 结尾页 ============ */
.end-slide{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:22px;flex:1}
.end-slide h2{font-size:48px;font-weight:800;line-height:1.2}
.end-slide .en-sub{font-size:17px;color:var(--gray);line-height:1.6}
.end-slide .en-list{
  display:grid;grid-template-columns:repeat(3,1fr);gap:16px;
  width:100%;max-width:1100px;margin-top:6px;
}
.end-slide .en-item{
  background:var(--card);border:1px solid var(--line);
  border-radius:var(--r-md);padding:20px 18px;
  box-shadow:var(--sh-sm);text-align:left;
}
.end-slide .en-item .ei-t{font-size:15px;font-weight:800;line-height:1.35;margin-bottom:6px}
.end-slide .en-item .ei-s{font-size:12.5px;color:var(--gray);line-height:1.6}

/* ============ 版式微调 ============ */
.body.top > .ttl{margin-bottom:24px}
.body > .grid + .grid{margin-top:16px}

/* distribute：内容较少的页（三变化 / 现状诊断 / 反证 / 品类特征 / 三逻辑 / 配合事项）
   模板在 .ttl 之后加一层 .bd-main 包裹内容块（layout.css 定义），
   这里只负责标题与内容之间的基准间距，避免与 layout.css 打架。 */
.body.distribute > .ttl{margin-bottom:30px}

/* 内容较少的页面里，卡片纵向撑满，减少底部大片留白 */
.body.distribute .bd-main{flex:1 1 auto;min-height:0}
.body.distribute .bd-main > .grid{flex:1 1 auto;min-height:0;align-items:stretch}
.body.distribute .grid{margin-bottom:0!important}
.body.distribute .grid > .prob{
  display:flex;flex-direction:column;justify-content:center;gap:14px;
  padding:26px 28px;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r-md);box-shadow:var(--sh-sm);position:relative;
}
.body.distribute .grid > .prob::before{
  content:"";position:absolute;left:0;top:22px;bottom:22px;width:3px;
  border-radius:3px;background:var(--red);
}
.body.distribute .grid > .prob .prob-h{font-size:18px;font-weight:800;color:var(--ink)}
.body.distribute .grid > .prob .prob-gap{
  padding-top:12px;border-top:1px dashed var(--line);font-size:13.5px;color:var(--ink-2);
}
.body.distribute .grid > .prob > .list{flex:0 0 auto}
/* 卡片纵向撑满后，内容与底部拉开：说明文字居中，结论贴底 */
.body.distribute .grid > .card{
  display:flex;flex-direction:column;justify-content:center;gap:14px;padding:28px 30px;
}
.body.distribute .grid > .card > .card-t{flex:0 0 auto;font-size:20px}
.body.distribute .grid > .card > .card-s{flex:0 0 auto;margin-top:0;font-size:16px;line-height:1.9}
.body.distribute .grid > .card > .card-t{margin-bottom:10px}
.body.distribute .grid > .card > .card-x li{padding:12px 0 12px 15px}
.body.distribute .grid > .card > div[style*="margin-top:auto"]{flex:0 0 auto}
.body.distribute .grid > .card > .card-s + .card-x{margin-top:6px !important}
.body.distribute .grid > .card > .card-x{
  list-style:none;display:flex;flex-direction:column;justify-content:space-evenly;gap:0;margin:0;flex:1 1 auto;
  font-size:14.5px;line-height:1.9;
}
.body.distribute .grid > .card > .card-x li{
  padding:9px 0 9px 15px;border-bottom:1px dashed rgba(0,0,0,.07);
}
.body.distribute .grid > .card > .card-x li:last-child{border-bottom:0}
.body.distribute .grid > .card.red > .card-x li{border-bottom-color:rgba(255,255,255,.18)}
.body.distribute .grid > .card > .card-x li{position:relative;padding-left:15px;color:var(--gray)}
.body.distribute .grid > .card > .card-x li::before{
  content:"";position:absolute;left:0;top:.75em;width:5px;height:5px;border-radius:50%;background:var(--red);opacity:.45;
}
.body.distribute .grid > .card.red > .card-x li{color:rgba(255,255,255,.78)}
.body.distribute .grid > .card.red > .card-x li::before{background:#fff;opacity:.6}



/* 配合事项页：留白平均分给「块与块之间」，不集中在页底 */
.body.distribute.even > .bd-main{justify-content:space-evenly;gap:14px}
.body.distribute.even .grid{margin-bottom:0!important}

/* ===== bd-cols：纵向平均分布的若干内容块 =====
   .bd-cols 占满 .bd-main 的剩余高度；内部每个 .bd-block 平均分配这份高度，
   块与块之间的留白相等，避免出现「内容挤在上半页、下半页大片空白」。
   块内容用 --gap 控制行距，整体在块内垂直居中。 */
.body.distribute .bd-cols{
  flex:1 1 auto;min-height:0;
  display:grid;
  grid-auto-rows:1fr;   /* 必须用 1fr 而不是 minmax(0,1fr)：后者在含 min-height:0 的卡片上会被内容高度顶住 */
  align-content:stretch;
  gap:14px;
}
.body.distribute .bd-cols > .prob,
.body.distribute .bd-cols > .card{
  display:flex;flex-direction:column;justify-content:flex-start;gap:14px;
  padding:26px 28px;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r-md);box-shadow:var(--sh-sm);position:relative;
}
.body.distribute .bd-cols > .prob::before{
  content:"";position:absolute;left:0;top:22px;bottom:22px;width:3px;
  border-radius:3px;background:var(--red);
}
.body.distribute .bd-cols > .prob .prob-h{font-size:19px;font-weight:800;color:var(--ink)}
.body.distribute .bd-cols > .prob .prob-gap{
  margin-top:auto;padding-top:14px;border-top:1px dashed var(--line);
  font-size:15px;font-weight:700;color:var(--ink);
}
.body.distribute .bd-cols > .prob > .list{flex:0 0 auto}
.body.distribute .bd-cols > .prob > .prob-more{margin-top:14px}
.body.distribute .bd-cols > .prob > .prob-gap{margin-top:0}
.body.distribute .bd-cols > .prob .list li{font-size:15px;line-height:1.9}
.body.distribute .bd-cols > .prob .prob-more{
  list-style:none;display:flex;flex-direction:column;justify-content:space-evenly;flex:1 1 auto;gap:8px;
  font-size:14px;line-height:1.8;color:var(--gray);
  margin-top:14px;padding-left:0;
}
.body.distribute .bd-cols > .prob .prob-more li{position:relative;padding-left:14px}
.body.distribute .bd-cols > .prob .prob-more li::before{
  content:"";position:absolute;left:0;top:.72em;width:5px;height:5px;
  border-radius:50%;background:var(--line-3);
}
.body.distribute .bd-col2{
  flex:0 0 auto;
  display:grid;grid-template-columns:1fr 1fr;gap:14px;
}
.body.distribute .bd-block{
  display:flex;flex-direction:column;justify-content:center;gap:var(--gap,10px);
  min-height:0;font-size:14.5px;line-height:1.9;
}
.body.distribute .bd-block .bk{
  font-size:13px;font-weight:800;color:var(--red);letter-spacing:.04em;
}
.body.distribute .bd-block .bk b{
  font-size:17px;color:var(--ink);margin-left:12px;letter-spacing:0;
}
.body.distribute .bd-block .bk b::before{
  content:"·";color:var(--dim);margin-right:12px;font-weight:400;
}
.body.distribute .bd-block.warn{background:var(--amber-soft);border-left-color:var(--amber)}
.body.distribute .bd-block.warn .bk{color:var(--amber)}

/* 三逻辑页：三张逻辑卡纵向撑满，内容居中 */
.body.distribute > .bd-main .quote{display:block}
.body.distribute .logic{flex:1 1 auto;align-items:stretch}
.body.distribute .logic-item{
  display:flex;flex-direction:column;justify-content:flex-start;gap:12px;
  padding:28px 26px;
}
.body.distribute .logic-item .lnum{font-size:40px;line-height:1;margin-bottom:2px}
.body.distribute .logic-item .lq{font-size:15px;line-height:1.5}
.body.distribute .logic-item .lt{font-size:23px;line-height:1.45}
.body.distribute .logic-item .ls{font-size:18px;line-height:2.05;margin-top:0;color:var(--ink-2)}

/* p03 四列卡片：标题+补充要点撑开，结论贴底 */
.body.distribute .bd-cols > .card > .card-t{flex:0 0 auto;margin-bottom:2px}
.body.distribute .bd-cols > .card > .card-x{flex:1 1 auto;justify-content:flex-start;gap:0;margin-top:12px}
.body.distribute .bd-cols > .card > .card-x{display:flex;flex-direction:column;justify-content:space-evenly;list-style:none;padding-left:0}
.body.distribute .bd-cols > .card > .card-x li{position:relative;padding:11px 0 11px 16px;border-bottom:1px dashed rgba(0,0,0,.07);font-size:14.5px;line-height:1.85}
.body.distribute .bd-cols > .card > .card-x li:last-child{border-bottom:0}
.body.distribute .bd-cols > .card.red > .card-x li{border-bottom-color:rgba(255,255,255,.18)}
.body.distribute .bd-cols > .card > .card-x li::before{content:"";position:absolute;left:0;top:23px;width:5px;height:5px;border-radius:50%;background:var(--red)}
.body.distribute .bd-cols > .card.red > .card-x li::before{background:rgba(255,255,255,.7)}

/* ===== p07 反证表格页 ===== */
.slide .body.distribute table.tbl{margin:0 !important;width:100%;flex:0 0 auto;table-layout:fixed}
.body.distribute > .bd-main{justify-content:center}
.slide .body.distribute .bd-main > table.tbl thead th{padding-top:26px;padding-bottom:26px}
.slide .body.distribute table.tbl th{padding:22px 20px;font-size:15.5px}
.slide .body.distribute table.tbl td{padding:0 20px;height:auto;font-size:16.5px;line-height:1.7;vertical-align:middle}
.slide .body.distribute table.tbl tbody tr{height:108px}
.slide .body.distribute table.tbl tbody tr:nth-child(even) td{background:rgba(0,0,0,.02)}

/* p19 生命周期页：撑满竖向空间 */
.body.top .journey{margin-top:10px}
.body.top .journey .jn-t{font-size:15px}
.body.top .journey .jn-s{font-size:12.5px}
.body.top .journey .jn-c{width:15px;height:15px}
.body.top .journey .jr-line{top:27px;height:3px}
.body.top .grid.g3{margin-top:6px}
.life-stage{flex:1 1 auto;display:flex;flex-direction:column;justify-content:space-evenly;gap:18px;margin-top:14px;min-height:0}
.life-stage .journey{flex:0 0 auto;margin-top:0!important}
.life-stage .grid{margin-top:0!important;flex:0 0 auto}
.life-stage .card{padding:28px 30px}
.life-stage .card-t{font-size:20px}
.life-stage .card-s{font-size:16px;line-height:1.9}
.life-note{flex:0 0 auto;display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.life-stage .life-cap{flex:0 0 auto;font-size:16px;line-height:1.9;color:var(--gray);background:var(--red-soft);border-left:3px solid var(--red);border-radius:0 var(--r-sm) var(--r-sm) 0;padding:14px 20px}
.life-stage .journey{padding:8px 0}
.life-stage .jr-node .jn-t{font-size:16px}
.life-stage .jr-node .jn-s{font-size:13px;line-height:1.7}
.life-stage .grid > .card{padding:26px 30px}
.life-stage .grid > .card .card-s{font-size:16.5px;line-height:1.95}

/* p23 对标表：整列对齐 + 8 行撑满 */
.body.top .gap-row{display:grid;grid-template-columns:1.25fr 1.5fr 1.5fr .95fr;column-gap:20px;align-items:center;padding:12px 20px;box-sizing:border-box;flex-direction:row!important}
.body.top .gap-row .gr-d{font-size:15px;font-weight:800;color:var(--ink);line-height:1.6}
.body.top .gap-row > div:nth-child(2),
.body.top .gap-row > div:nth-child(3){font-size:14.5px;line-height:1.6;color:var(--ink-2)}
.body.top .gap-row > div:nth-child(4){text-align:right}
.gap-stack{flex:1 1 auto;display:flex;flex-direction:column;gap:9px;min-height:0;margin-top:12px}
.gap-stack .gap-row{flex:1 1 0;min-height:0;padding:6px 20px;height:auto!important;box-sizing:border-box!important}
.body.top .gap-note{margin-top:10px;flex:0 0 auto}

/* p24 风险表：撑满版面 */
.body.top > table.tbl{margin-top:14px}
.body.top > table.tbl td{padding:12px 18px;font-size:15.5px;line-height:1.75;vertical-align:middle}
.body.top > table.tbl th{padding:15px 18px;font-size:14.5px}
.body.top > table.tbl tbody tr{height:80px}

/* p22 指标口径页：三列撑满竖向空间 */
.body.top .kpi-grid{flex:1 1 auto;min-height:0;align-items:stretch;margin-top:14px}
.body.top .kpi-col{display:flex;flex-direction:column;gap:12px;min-height:0}
.body.top .kpi-col > .kpi{flex:1 1 0;min-height:0;display:flex;flex-direction:column;justify-content:center;padding:20px 24px}
.body.top .kpi-col .kp-t{font-size:17.5px;font-weight:800;margin-bottom:8px}
.body.top .kpi-col .kp-d{font-size:15.5px;line-height:1.85;color:var(--gray)}
.body.top .kpi-col .kp-d b{color:var(--ink-2)}
.body.top .kpi-note{margin-top:14px;flex:0 0 auto}
