/* ===== 舞台与幻灯片容器 ===== */

#stage{
  position:fixed;
  inset:0;
  /* 不能用 flex 居中：flex 会把 #deck 压到 805 高。
     用 overflow hidden + JS 绝对定位居中 */
  overflow:hidden;
}

/* 幻灯片按 1600x900 设计，等比缩放适配任意屏幕
   注意：#deck 必须写死 1600x900。若用 flex 居中，浏览器会把 flex 子项
   压到容器尺寸（805 高），而 .slide 的 absolute+height:900 会溢出，
   用 transform 缩放时溢出部分被裁掉、内部布局计算也跟着错 */
#deck{
  position:absolute;
  left:50%;
  top:50%;
  width:var(--slide-w);
  height:var(--slide-h);
  transform-origin:center center;
  transform:translate(-50%,-50%) scale(1);
  will-change:transform;
}

.slide{
  position:absolute;
  /* 四边定位 + 显式尺寸：flex 子项才能拿到确定的高度做压缩 */
  left:0;top:0;right:0;bottom:0;
  width:var(--slide-w);
  height:var(--slide-h);
  background:var(--bg);
  overflow:visible;
  display:flex;
  flex-direction:column;
  padding:var(--pad-y) var(--pad-x) 56px;
  opacity:0;
  visibility:hidden;
  transform:translateX(60px) scale(.985);
  transition:opacity .5s cubic-bezier(.4,0,.2,1),
             transform .55s cubic-bezier(.2,.8,.3,1),
             visibility 0s linear .55s;
}
/* 只切换可见性，不改 display —— 改 display 会导致布局坍缩、实测尺寸失真 */
.slide[aria-hidden="true"]{
  display:flex;
  pointer-events:none;
}
.slide.active{
  opacity:1;
  visibility:visible;
  transform:none;
  transition:opacity .5s cubic-bezier(.4,0,.2,1),
             transform .55s cubic-bezier(.2,.8,.3,1),
             visibility 0s;
}
.slide.prev{transform:translateX(-60px) scale(.985)}

/* 页面级装饰：右下角几何水印 */
.slide::after{
  content:"";
  position:absolute;
  right:-200px; bottom:-220px;
  width:680px; height:680px;
  z-index:0;
  pointer-events:none;
  background:radial-gradient(circle,rgba(199,0,11,.035) 0%,transparent 62%);
  clip-path:polygon(32% 0,100% 22%,78% 100%,0 78%);
}

/* ===== 页头 ===== */
.hd{
  display:flex;
  align-items:center;
  gap:18px;
  position:relative;
  z-index:2;
  flex:0 0 auto;
  padding-top:6px;
}
.hd .logo{
  display:flex;
  align-items:center;
  gap:10px;
  flex:0 0 auto;
}
.hd .logo img{width:32px;height:32px}
.hd .logo .lg-txt{
  display:flex;
  flex-direction:column;
  justify-content:center;
  font-size:0;
  line-height:0;
}
.hd .logo .lg-txt small{font-size:0;line-height:0;margin:0}
.hd .logo .lg-name{
  display:block;
  font-size:16px;
  font-weight:800;
  color:var(--ink);
  letter-spacing:.04em;
  line-height:1.15;
}
.hd .logo .lg-name em{
  font-style:normal;
  font-size:10px;
  font-weight:600;
  color:var(--dim);
  letter-spacing:.16em;
  margin-left:8px;
  vertical-align:2px;
}
.hd .hline{
  flex:1;
  height:2px;
  background:linear-gradient(90deg,var(--red) 0%,var(--red) 160px,rgba(199,0,11,.14) 160px,rgba(199,0,11,.14) 100%);
  border-radius:2px;
}
.hd .redtab{
  flex:0 0 auto;
  background:var(--red);
  color:#fff;
  font-size:14px;
  font-weight:700;
  padding:9px 20px;
  border-radius:var(--r-sm);
  letter-spacing:.06em;
  box-shadow:0 4px 14px rgba(199,0,11,.24);
}
.hd .stage-tag{
  flex:0 0 auto;
  display:flex;
  align-items:center;
  gap:8px;
  font-size:12px;
  font-weight:700;
  padding:7px 14px;
  border-radius:999px;
  letter-spacing:.04em;
}
.hd .stage-tag i{
  width:8px;height:8px;border-radius:50%;
  display:inline-block;
}

/* ===== 主体 ===== */
.body{
  flex:1;
  display:flex;
  flex-direction:column;
  justify-content:center;
  position:relative;
  z-index:2;
  /* 关键：flex 子项的 min-height:auto 会按内容撑高，导致 900 高幻灯片里溢出；
     显式给 min-height:0 才能让内部内容压缩/收拢 */
  min-height:0;
  padding-top:26px;
}
/* top 对齐时从顶部开始排，多出来的空间留在底部 */
.body.top{justify-content:flex-start}
/* balanced：顶部对齐但纵向撑满，内容块之间自动拉开，避免底部大片留白 */
.body.top.balanced{justify-content:space-between;padding-bottom:18px}
/* gap-lg：标题与内容块之间留出更大的呼吸空间（用于内容较少的页） */
.body.top.gap-lg .ttl{margin-bottom:48px}
/* distribute：内容较少的页（三变化 / 现状诊断 / 反证 / 品类特征 / 三逻辑 / 配合事项）
   模板在 .ttl 后加一层 .bd-main 包裹内容；这里固定标题与内容的间距，
   让内容块紧贴标题下方，剩余空间留在页脚前，不再出现「标题与内容之间一大片空白」。 */
.body.distribute{padding-bottom:0}
.body.distribute > .ttl{margin-bottom:30px}
.body .bd-main{
  flex:0 0 auto;min-height:0;
  display:flex;flex-direction:column;
}
.body .grow{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center}

/* 标题区 */
.ttl{margin-bottom:26px;flex:0 0 auto}
.ttl h1{
  font-size:46px;
  font-weight:800;
  line-height:1.22;
  letter-spacing:-.01em;
  color:var(--ink);
}
.ttl h2{
  font-size:38px;
  font-weight:800;
  line-height:1.25;
  letter-spacing:-.01em;
  color:var(--ink);
}
.ttl .sub{
  margin-top:12px;
  font-size:17px;
  color:var(--gray);
  line-height:1.65;
  max-width:1180px;
  font-weight:400;
}
.ttl .eyebrow{
  display:inline-flex;
  align-items:center;
  gap:8px;
  font-size:12px;
  font-weight:800;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--red);
  margin-bottom:12px;
}
.ttl .eyebrow::before{
  content:"";
  width:22px;height:2px;background:var(--red);
}
/* 关键词高亮 */
.ttl em,.hl{
  font-style:normal;
  color:var(--red);
  position:relative;
}
.ttl em::after{
  content:"";
  position:absolute;
  left:0;right:0;bottom:2px;
  height:8px;
  background:var(--red-soft2);
  z-index:-1;
  border-radius:2px;
}

/* ===== 页脚 ===== */
.ft{
  position:absolute;
  left:var(--pad-x);
  right:var(--pad-x);
  bottom:26px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  font-size:12px;
  color:var(--dim);
  letter-spacing:.04em;
  z-index:3;
}
.ft .ft-l{display:flex;align-items:center;gap:10px}
.ft .ft-l .dotline{width:26px;height:1px;background:var(--line)}
.page-no{
  position:absolute;
  right:var(--pad-x);
  bottom:26px;
  font-size:12px;
  color:var(--dim);
  letter-spacing:.14em;
  z-index:3;
  font-family:var(--font-num);
}

/* ===== 入场动画 ===== */
.anim{opacity:0;transform:translateY(22px);transition:opacity .6s ease,transform .6s cubic-bezier(.2,.8,.3,1)}
.slide.active .anim{opacity:1;transform:none}
.d1{transition-delay:.06s}.d2{transition-delay:.14s}.d3{transition-delay:.22s}
.d4{transition-delay:.30s}.d5{transition-delay:.38s}.d6{transition-delay:.46s}
.d7{transition-delay:.54s}.d8{transition-delay:.62s}.d9{transition-delay:.70s}

@media (prefers-reduced-motion:reduce){
  .anim{transition:none;opacity:1;transform:none}
  .slide{transition:opacity .12s linear,visibility 0s}
}