/* ============================================================
 * AI演示生成（#view-ppt）轻量 UI 美化 —— 2026-09-23
 * ------------------------------------------------------------
 * 约束：不改 HTML 结构、不改业务逻辑，只做视觉层；全部规则限定在 #view-ppt 内，
 *       因此不会影响首页 / 馆藏深读 / 知识大厅等其它页面。
 * 风格：保持白色简洁，加入现代 AI 产品的科技感（浅蓝描边、轻阴影、微交互）。
 * 层级：#view-ppt 前缀 = 1 个 id，特异度高于原来的单类规则 → 稳定生效。
 * ========================================================== */

/* ---------- 1. 页面节奏：顶部标题 / 表单 / 上传之间更紧凑 ---------- */
#view-ppt .pane-scroll{padding-top:4px}
#view-ppt .mc-head{padding-bottom:14px;border-bottom:1px solid rgba(43,89,214,.09);margin-bottom:4px}
#view-ppt .sect{margin:16px 0 11px}
#view-ppt .sect:first-child{margin-top:2px}
#view-ppt .pp-actions{margin-top:14px;gap:12px}
#view-ppt .pp-hint{line-height:1.7;color:#8296b8;font-size:12px;max-width:62ch}

/* ---------- 2. 标题权重与文字层级 ---------- */
#view-ppt .mc-head h2{
  font-size:27px;font-weight:800;letter-spacing:.2px;
  background:linear-gradient(120deg,#0b2a66 0%,#1a49c8 55%,#2f7bff 100%);
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:#1a49c8;   /* 兜底颜色 */
}
#view-ppt .mc-head .mc-sub{color:#8296b8;font-size:12.5px;margin-top:6px;letter-spacing:.2px}
#view-ppt .pp-count{color:#a3b2cc}
#view-ppt .pp-filenote{color:#8296b8}
#view-ppt .pp-hint{color:#8296b8}

/* ---------- 3. 输入框 / 下拉框：圆角 + 浅蓝细边 + 轻阴影 + 悬停 ---------- */
#view-ppt .ta,
#view-ppt .ipt,
#view-ppt .sel{
  border-radius:12px;
  border:1px solid rgba(43,89,214,.16);
  background:rgba(255,255,255,.96);
  box-shadow:0 1px 2px rgba(23,58,130,.04), 0 6px 18px rgba(23,58,130,.045);
  transition:border-color .18s, box-shadow .18s, background .18s;
}
#view-ppt .ta:hover,
#view-ppt .ipt:hover,
#view-ppt .sel:hover{
  border-color:rgba(47,123,255,.34);
  background:#fff;
}
#view-ppt .ta:focus,
#view-ppt .ipt:focus,
#view-ppt .sel:focus{
  border-color:rgba(47,123,255,.55);
  box-shadow:0 0 0 3px rgba(47,123,255,.13), 0 6px 18px rgba(23,58,130,.06);
  outline:none;
}

/* ---------- 4. 卡片（面板）：更轻的边、悬停微交互 ---------- */
#view-ppt .pp-panel{
  border-radius:14px;
  border:1px solid rgba(43,89,214,.13);
  background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(248,251,255,.98));
  box-shadow:0 1px 2px rgba(23,58,130,.035), 0 10px 26px rgba(23,58,130,.05);
  transition:border-color .2s, box-shadow .2s, transform .2s;
}
#view-ppt .pp-panel:hover{
  border-color:rgba(47,123,255,.26);
  box-shadow:0 2px 4px rgba(23,58,130,.05), 0 14px 34px rgba(23,58,130,.075);
}
#view-ppt .pp-panel h5{gap:9px}

/* ---------- 5. 主操作按钮：科技蓝、更醒目 ---------- */
#view-ppt .btn-main{
  border-radius:12px;
  background:linear-gradient(135deg,#2f7bff,#1a49c8);
  box-shadow:0 6px 18px rgba(31,86,214,.26);
  transition:transform .18s, box-shadow .18s, filter .18s;
}
#view-ppt .btn-main:hover{
  filter:brightness(1.06);
  transform:translateY(-1px);
  box-shadow:0 10px 26px rgba(31,86,214,.32);
}
#view-ppt .btn-main:active{transform:translateY(0);box-shadow:0 4px 14px rgba(31,86,214,.28)}
#view-ppt #pp-gen{
  padding:14px 38px;
  font-size:15.5px;
  font-weight:700;
  letter-spacing:.5px;
  border-radius:13px;
  box-shadow:0 8px 24px rgba(31,86,214,.3);
}
#view-ppt #pp-gen:hover{box-shadow:0 12px 30px rgba(31,86,214,.36)}

/* ---------- 6. 步骤条：圆形底 + 已完成用主题色 + 连接线 ---------- */
#view-ppt .step .n{
  width:30px;height:30px;border-radius:50%;
  border:1px solid rgba(43,89,214,.2);
  background:#fff;color:#8296b8;
  box-shadow:0 1px 3px rgba(23,58,130,.06);
  transition:background .25s, color .25s, border-color .25s, box-shadow .25s;
}
#view-ppt .step .lb{font-size:13px;color:#8296b8}
#view-ppt .step.active .n{
  background:linear-gradient(135deg,#2f7bff,#1a49c8);
  color:#fff;border-color:transparent;
  box-shadow:0 0 0 4px rgba(47,123,255,.14), 0 6px 16px rgba(31,86,214,.28);
}
#view-ppt .step.active .lb{color:#1a49c8;font-weight:700}
#view-ppt .step.done .n{
  background:rgba(47,123,255,.1);color:#1a49c8;border-color:rgba(47,123,255,.34);
}
#view-ppt .step.done .lb{color:#1a49c8}
#view-ppt .step-line{
  height:2px;border-radius:2px;
  background:linear-gradient(90deg,rgba(47,123,255,.36),rgba(47,123,255,.1));
}
#view-ppt .steps{margin:14px 0 16px}

/* ---------- 7. 上传区：虚线色调 + 上传图标 + 悬停动画 ---------- */
#view-ppt .pp-dz{
  border-radius:14px;
  border:1.6px dashed rgba(47,123,255,.34);
  background:linear-gradient(180deg,rgba(247,251,255,.96),rgba(240,247,255,.9));
  padding:26px 16px;
  transition:border-color .2s, background .2s, box-shadow .2s, transform .2s;
}
#view-ppt .pp-dz::before{
  content:"⬆";
  display:grid;place-items:center;
  width:42px;height:42px;margin:0 auto 10px;
  border-radius:12px;font-size:19px;line-height:1;
  color:#1a49c8;
  background:linear-gradient(135deg,rgba(47,123,255,.16),rgba(47,123,255,.06));
  box-shadow:0 6px 16px rgba(31,86,214,.12);
  border:1px solid rgba(47,123,255,.22);
}
#view-ppt .pp-dz:hover,
#view-ppt .pp-dz.over{
  border-color:rgba(47,123,255,.62);
  background:linear-gradient(180deg,rgba(243,249,255,.98),rgba(233,243,255,.96));
  box-shadow:0 10px 28px rgba(31,86,214,.12);
  transform:translateY(-2px);
}
#view-ppt .pp-dz:hover::before,
#view-ppt .pp-dz.over::before{
  color:#fff;
  background:linear-gradient(135deg,#2f7bff,#1a49c8);
  border-color:transparent;
  box-shadow:0 8px 20px rgba(31,86,214,.28);
}
#view-ppt .pp-dz b{font-size:13.5px;letter-spacing:.2px}
#view-ppt .pp-dz small{color:#8296b8}

/* ---------- 8. 大纲区与工具行的细节统一 ---------- */
#view-ppt .pp-outbar{row-gap:10px}
#view-ppt .pp-outline{border-radius:12px}
#view-ppt .tpl-btn{border-radius:10px;transition:border-color .18s, box-shadow .18s, color .18s}
#view-ppt .tpl-btn:hover{
  border-color:rgba(47,123,255,.4);
  box-shadow:0 6px 16px rgba(31,86,214,.1);
}

/* ============================================================
 * 第二轮：表单分组与间距 / 输入框统一 / 上传卡片 / 按钮下说明（2026-09-23）
 * 仍全部限定在 #view-ppt 内；只改样式，不动结构。
 * ========================================================== */

/* ---------- 1. 「0/200」作为输入框辅助信息，与下方表单明确分开 ---------- */
#view-ppt .pp-count{
  margin-top:6px;
  padding:2px 2px 0;
  font-size:11.5px;
  color:#a3b2cc;
  letter-spacing:.3px;
}
/* ---------- 2. 目标页数 / 汇报场合：各自独立成块、纵向排列、间距 20px ---------- */
#view-ppt .pp-opts{
  display:block;          /* 取消两列网格 → 每个表单项独占一行 */
  margin-top:20px;        /* 与上方「0/200」明显分开 */
  padding-top:2px;
}
#view-ppt .pp-opts label{
  display:block;          /* 标签与输入框各自成行，不再并排 */
  padding-left:0;         /* 上一轮为对齐加的缩进在这里不需要了 */
  margin:0;
  font-size:15.5px;
  font-weight:700;
  color:#0e2a5e;
  letter-spacing:.2px;
}
#view-ppt .pp-opts label + label{margin-top:20px}   /* 两个字段之间 20px */
#view-ppt .pp-opts label .sel{
  display:block;
  width:100%;
  margin-top:10px;        /* 标签与输入框之间 10px */
}

/* ---------- 3. 输入框：统一高度、收窄高度、上下 padding 更舒展 ---------- */
#view-ppt .ta{
  min-height:112px;
  padding:11px 13px;
  line-height:1.7;
}
#view-ppt .sel{
  height:42px;
  padding-top:0;
  padding-bottom:0;
  padding-left:13px;
  line-height:42px;
}
#view-ppt .ipt{height:42px;padding:0 13px}

/* ---------- 4. 上传区：卡片感（白底 / 轻阴影 / 16px 圆角 / 内容垂直居中） ---------- */
#view-ppt .pp-pair .pp-panel + .pp-panel{gap:15px}   /* 回退：不支持 :has() 时也有间距 */
#view-ppt .pp-panel:has(.pp-dz){margin-top:26px}     /* 支持 :has() 时：上传卡片与左列表单明显分开 */
#view-ppt .pp-dz{
  margin-top:2px;
  border-radius:16px;
  background:#fff;
  box-shadow:0 1px 2px rgba(23,58,130,.04), 0 10px 26px rgba(23,58,130,.06);
  padding:30px 18px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center;
}
#view-ppt .pp-dz:hover,
#view-ppt .pp-dz.over{
  background:#fff;
  box-shadow:0 2px 4px rgba(23,58,130,.05), 0 14px 34px rgba(31,86,214,.12);
}
#view-ppt .pp-dz b{font-size:14px;font-weight:700}
#view-ppt .pp-dz small{color:#8296b8;margin-top:4px}

/* ---------- 5. 底部：按钮下新增说明文字（竖向排列，浅灰小字） ---------- */
#view-ppt .pp-actions{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:10px;
  margin-top:18px;
}
#view-ppt .pp-hint{
  max-width:70ch;
  font-size:12px;
  line-height:1.75;
  color:#94a3b8;
}

/* ============================================================
 * 第三轮：三个字段的标题 / 间距 / 输入框参数完全统一（2026-09-23）
 * 只调样式参数；仍全部限定在 #view-ppt 内。
 * ========================================================== */

/* ---------- 1. 「关键词 / 主题」标题与「目标页数」「汇报场合」完全同款 ----------
   原来 .pp-panel h5 是 13.5px/700 + 22px 蓝色图标块，看起来像"特殊标题"；
   这里统一成：15.5px / 600 / 深色 #0e2a5e / 左对齐，并去掉图标底色与多余间距。 */
#view-ppt .pp-panel h5{
  display:block;
  margin:0 0 11px;          /* 标题↔输入框 = 11px（与下面下拉的 10px 同档） */
  font-size:15.5px;
  font-weight:600;
  color:#0e2a5e;
  letter-spacing:.2px;
  line-height:1.5;
}
#view-ppt .pp-panel h5 span{
  display:none;             /* 去掉标题前的蓝色小图标块，避免"特殊标题"观感 */
}

/* ---------- 2. 垂直间距节奏：三段留白一致 ---------- */
/* 节奏（自上而下）：标题 11px → 输入框 → 8px → 0/200 → 20px → 目标页数标题
                     → 10px → 下拉 → 20px → 汇报场合标题 → 10px → 下拉 */
#view-ppt .ta{margin-bottom:0}
#view-ppt .pp-count{margin-top:8px;padding:0 2px}
#view-ppt .pp-opts{margin-top:20px}
#view-ppt .pp-opts label + label{margin-top:20px}
#view-ppt .pp-opts label{margin-bottom:0}

/* ---------- 3. 三个表单组件参数完全一致 ---------- */
/* 统一：宽度 100% / 圆角 12px / 边框 rgba(43,89,214,.16) / 高度 42px /
        内边距 12px 13px / 字号 13.5px / 同一套悬停与聚焦反馈 */
#view-ppt .ta,
#view-ppt .sel,
#view-ppt .ipt{
  width:100%;
  box-sizing:border-box;
  border-radius:12px;
  border:1px solid rgba(43,89,214,.16);
  background:rgba(255,255,255,.96);
  font-size:13.5px;
  font-family:inherit;
  color:#0e2a5e;
  box-shadow:0 1px 2px rgba(23,58,130,.04), 0 6px 18px rgba(23,58,130,.045);
  transition:border-color .18s, box-shadow .18s, background .18s;
}
#view-ppt .ta{height:auto;min-height:112px;padding:12px 13px;line-height:1.7}
#view-ppt .sel{height:42px;padding:0 34px 0 13px;line-height:40px}
#view-ppt .ipt{height:42px;padding:0 13px;line-height:40px}
#view-ppt .ta:hover,
#view-ppt .sel:hover,
#view-ppt .ipt:hover{border-color:rgba(47,123,255,.34);background:#fff}
#view-ppt .ta:focus,
#view-ppt .sel:focus,
#view-ppt .ipt:focus{
  border-color:rgba(47,123,255,.55);
  box-shadow:0 0 0 3px rgba(47,123,255,.13), 0 6px 18px rgba(23,58,130,.06);
  outline:none;
}

/* ---------- 标签与「关键词 / 主题」完全同款（字重按用户要求统一为 600） ---------- */
#view-ppt .pp-opts label{font-size:15.5px;font-weight:600;color:#0e2a5e}

/* ============================================================
 * 第四轮：AI 大纲编辑区（第三步）—— 卡片式大纲 + 文档式编辑 + 横向工具栏
 * 2026-09-23  只改样式；不改结构、不改交互与数据逻辑，全部限定在 #view-ppt 内。
 * 结构（已存在）：#pp-outlineBox > .sect + .pp-outbar(>#pp-outmeta + .pp-outbtns) + #pp-outline
 *                #pp-outline > .pp-oitem(> .pp-ono + .pp-omain(> .pp-orow1 + 各字段) + .pp-oacts)
 * ========================================================== */

/* ---------- 1. 内容区：限宽居中，提高利用率 ---------- */
#view-ppt #pp-outlineBox{margin-top:20px}

/* ---------- 2. 顶部工具栏：横向、右对齐、统一高度与圆角 ---------- */
#view-ppt .pp-outbar{
  display:flex;
  flex-direction:row;          /* 明确横向（原本即为 row，这里显式声明） */
  align-items:center;
  justify-content:space-between;
  gap:14px;
  flex-wrap:wrap;
  padding:12px 16px;
  margin-bottom:16px;
  border-radius:14px;
  border:1px solid rgba(43,89,214,.13);
  background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(247,251,255,.98));
  box-shadow:0 1px 2px rgba(23,58,130,.035), 0 8px 22px rgba(23,58,130,.05);
}
#view-ppt #pp-outmeta{
  font-size:12.5px;
  color:#5a6f95;
  line-height:1.6;
  letter-spacing:.2px;
}
#view-ppt #pp-outmeta b{color:#1a49c8;font-weight:700}
#view-ppt .pp-outbtns{
  margin-left:auto;            /* 按钮组整体靠右 */
  display:flex;
  align-items:center;
  gap:9px;
  flex-wrap:wrap;
}
/* 次级按钮（撤销 / 恢复 / 添加一页 / 收藏大纲）：浅色小按钮 */
#view-ppt .pp-outbtns .btn-ghost{
  height:34px;
  padding:0 14px;
  border-radius:10px;
  border:1px solid rgba(43,89,214,.18);
  background:#fff;
  color:#31527f;
  font-size:12.5px;
  font-weight:600;
  display:inline-flex;
  align-items:center;
  gap:6px;
  box-shadow:0 1px 2px rgba(23,58,130,.04);
  transition:border-color .18s, box-shadow .18s, color .18s, background .18s, transform .18s;
}
#view-ppt .pp-outbtns .btn-ghost:hover{
  border-color:rgba(47,123,255,.45);
  color:#1a49c8;
  background:#f7fbff;
  box-shadow:0 6px 16px rgba(31,86,214,.12);
  transform:translateY(-1px);
}
#view-ppt .pp-outbtns .btn-ghost:disabled{
  opacity:.45;
  color:#8296b8;
  cursor:not-allowed;
  box-shadow:none;
  transform:none;
}
/* 主操作按钮：重新生成大纲（蓝色突出） */
#view-ppt .pp-outbtns .btn-ghost:last-child{
  height:34px;
  padding:0 16px;
  border:none;
  border-radius:10px;
  color:#fff;
  font-weight:700;
  background:linear-gradient(135deg,#2f7bff,#1a49c8);
  box-shadow:0 6px 16px rgba(31,86,214,.26);
}
#view-ppt .pp-outbtns .btn-ghost:last-child:hover{
  color:#fff;
  filter:brightness(1.06);
  box-shadow:0 10px 24px rgba(31,86,214,.32);
}

/* ---------- 3. 每页 = 独立卡片 ---------- */
#view-ppt .pp-outline{gap:18px}                 /* 卡片之间明显间距 */
#view-ppt .pp-oitem{
  display:grid;
  grid-template-columns:46px minmax(0,1fr) 40px;
  gap:14px;
  align-items:start;
  padding:16px 18px;
  border-radius:14px;
  border:1px solid rgba(43,89,214,.12);
  background:linear-gradient(180deg,#ffffff,#fbfdff);
  box-shadow:0 1px 2px rgba(23,58,130,.035), 0 10px 26px rgba(23,58,130,.05);
  transition:border-color .2s, box-shadow .2s, transform .2s;
}
#view-ppt .pp-oitem:hover{
  border-color:rgba(47,123,255,.28);
  box-shadow:0 2px 4px rgba(23,58,130,.05), 0 14px 34px rgba(23,58,130,.08);
  transform:translateY(-1px);
}

/* ---------- 4. 文字层级：大页码 + 加粗标题 + 正文行距 ---------- */
#view-ppt .pp-ono{
  width:46px;height:46px;
  border-radius:12px;
  font-size:18px;font-weight:700;letter-spacing:.5px;
  background:rgba(47,123,255,.1);
  color:#1a49c8;
  border:1px solid rgba(47,123,255,.18);
}
#view-ppt .pp-omain{gap:10px}
#view-ppt .pp-orow1{gap:10px;align-items:center}

/* ---------- 5. 文档式编辑：默认像正文，悬停/聚焦才出现编辑感 ---------- */
/* 标题：字号更大更粗 */
#view-ppt .pp-omain .pp-otitle{
  font-size:15.5px;
  font-weight:600;
  color:#0b2a66;
  letter-spacing:.2px;
}
/* 全部字段：去掉输入框边框与阴影，做成"点开才编辑"的文档文本 */
#view-ppt .pp-omain .ipt,
#view-ppt .pp-omain .ta{
  width:100%;
  border:1px solid transparent;
  background:transparent;
  box-shadow:none;
  border-radius:9px;
  padding:7px 10px;
  font-size:13.5px;
  line-height:1.85;
  color:#12306a;
  transition:background .18s, border-color .18s, box-shadow .18s;
}
#view-ppt .pp-omain .ta{min-height:70px;resize:vertical}
#view-ppt .pp-omain .ipt:hover,
#view-ppt .pp-omain .ta:hover{
  background:rgba(47,123,255,.05);
  border-color:rgba(47,123,255,.16);
}
#view-ppt .pp-omain .ipt:focus,
#view-ppt .pp-omain .ta:focus{
  background:#fff;
  border-color:rgba(47,123,255,.5);
  box-shadow:0 0 0 3px rgba(47,123,255,.12);
  outline:none;
}
/* 要点区（每行一条）→ 视觉上当成列表：左侧淡蓝竖线 + 提示符号 */
#view-ppt .pp-omain textarea.ta{
  border-left:3px solid rgba(47,123,255,.26);
  padding-left:14px;
}
#view-ppt .pp-omain textarea.ta:focus{border-left-color:rgba(47,123,255,.6)}
/* 占位提示降灰，避免"表单感" */
#view-ppt .pp-omain .ipt::placeholder,
#view-ppt .pp-omain .ta::placeholder{color:#b6c2d6}

/* ---------- 6. 布局方式下拉 + 字数提示：轻量、右对齐、不抢视线 ---------- */
#view-ppt .pp-osel{
  width:auto;
  min-width:118px;
  height:30px;
  padding:0 28px 0 10px;
  border-radius:9px;
  font-size:12px;
  font-weight:600;
  color:#31527f;
  background-color:rgba(247,251,255,.9);
  border:1px solid rgba(43,89,214,.16);
  line-height:28px;
}
#view-ppt .pp-orow1 > span{
  margin-left:auto;            /* 字数/条数提示靠右 */
  font-size:11.5px;
  color:#a3b2cc;
  white-space:nowrap;
}

/* ---------- 7. 行内操作按钮（↑ ↓ ＋ ✕）与两栏布局 ---------- */
#view-ppt .pp-oacts{gap:6px}
#view-ppt .pp-oacts .pp-iconb{
  width:30px;height:30px;
  border-radius:9px;
  border:1px solid rgba(43,89,214,.14);
  background:#fff;
  color:#5a6f95;
  font-size:13px;
  line-height:1;
  transition:border-color .18s, color .18s, box-shadow .18s, background .18s;
}
#view-ppt .pp-oacts .pp-iconb:hover{
  border-color:rgba(47,123,255,.45);
  color:#1a49c8;
  background:#f7fbff;
  box-shadow:0 4px 12px rgba(31,86,214,.12);
}
#view-ppt .pp-oacts .pp-iconb.del:hover{
  border-color:rgba(214,69,69,.5);
  color:#d64545;
  background:#fff7f6;
}
#view-ppt .pp-ocols{gap:14px}
#view-ppt .pp-ocol{gap:8px}
#view-ppt .pp-onumrow{gap:10px}

/* ============================================================
 * 第五轮：页码居中 + 每页工具栏（布局/编辑/复制/删除）+ 布局菜单 + 三栏/图文
 * 2026-09-23  结构由 js/ppt.js 的 pptOutRow 生成；这里只负责视觉。
 * ========================================================== */

/* ---------- 1. 页码：64×64 固定尺寸，flex 完全居中，蓝色渐变 ---------- */
#view-ppt .pp-oitem{
  grid-template-columns:64px minmax(0,1fr);   /* 右列已并入工具栏，不再需要第三列 */
  gap:16px;
  align-items:start;
}
#view-ppt .pp-ono{
  width:64px;height:64px;
  display:flex;align-items:center;justify-content:center;   /* 水平+垂直居中 */
  padding:0;
  font-size:24px;font-weight:700;letter-spacing:.5px;
  line-height:1;
  border:none;
  border-radius:14px;
  color:#fff;
  background:linear-gradient(135deg,#2f7bff,#1a49c8);
  box-shadow:0 6px 18px rgba(31,86,214,.26);
  align-self:start;                                          /* 与卡片顶部对齐 */
  font-variant-numeric:tabular-nums;
}

/* ---------- 2. 每页工具栏：布局 / 编辑 / 复制 / 删除 + 移动 + 字数 ---------- */
#view-ppt .pp-otools{
  position:relative;
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  padding:8px 10px;
  margin-bottom:10px;
  border-radius:12px;
  border:1px solid rgba(43,89,214,.1);
  background:rgba(247,251,255,.72);
}
#view-ppt .pp-tbtn{
  display:inline-flex;align-items:center;gap:6px;
  height:30px;padding:0 11px;
  border-radius:9px;
  border:1px solid rgba(43,89,214,.16);
  background:#fff;color:#31527f;
  font-size:12.5px;font-weight:600;font-family:inherit;
  cursor:pointer;white-space:nowrap;
  box-shadow:0 1px 2px rgba(23,58,130,.04);
  transition:border-color .18s,color .18s,box-shadow .18s,background .18s;
}
#view-ppt .pp-tbtn:hover{
  border-color:rgba(47,123,255,.45);color:#1a49c8;background:#f7fbff;
  box-shadow:0 4px 12px rgba(31,86,214,.12);
}
#view-ppt .pp-tbtn b{font-weight:700;color:#1a49c8}
#view-ppt .pp-tbtn i{font-style:normal;font-size:10px;color:#8296b8;transform:translateY(1px)}
#view-ppt .pp-tbtn.del:hover{
  border-color:rgba(214,69,69,.5);color:#d64545;background:#fff7f6;
}
#view-ppt .pp-tsep{width:1px;height:18px;background:rgba(43,89,214,.16);margin:0 2px}
#view-ppt .pp-tnote{margin-left:auto;font-size:11.5px;color:#a3b2cc;white-space:nowrap}
#view-ppt .pp-tmove{display:inline-flex;gap:6px}
#view-ppt .pp-tmove .pp-iconb{
  width:30px;height:30px;border-radius:9px;
  border:1px solid rgba(43,89,214,.14);background:#fff;color:#5a6f95;
  font-size:13px;line-height:1;cursor:pointer;
  transition:border-color .18s,color .18s,box-shadow .18s,background .18s;
}
#view-ppt .pp-tmove .pp-iconb:hover{
  border-color:rgba(47,123,255,.45);color:#1a49c8;background:#f7fbff;
  box-shadow:0 4px 12px rgba(31,86,214,.12);
}
#view-ppt .pp-tmove .pp-iconb:disabled{opacity:.42;cursor:not-allowed;box-shadow:none}

/* ---------- 3. 布局选择菜单（类似 PowerPoint / Canva 的版式选择） ---------- */
#view-ppt .pp-lay-menu{
  position:absolute;left:0;top:calc(100% + 6px);z-index:40;
  min-width:250px;
  display:flex;flex-direction:column;gap:4px;
  padding:8px;
  border-radius:12px;
  border:1px solid rgba(43,89,214,.16);
  background:#fff;
  box-shadow:0 12px 32px rgba(23,58,130,.16);
}
#view-ppt .pp-lay-it{
  display:grid;grid-template-columns:14px 76px minmax(0,1fr);
  align-items:center;gap:8px;
  width:100%;padding:8px 10px;
  border:none;border-radius:9px;background:transparent;
  font-family:inherit;font-size:12.5px;color:#31527f;
  text-align:left;cursor:pointer;
  transition:background .16s,color .16s;
}
#view-ppt .pp-lay-it:hover{background:rgba(47,123,255,.07);color:#1a49c8}
#view-ppt .pp-lay-it.on{background:rgba(47,123,255,.11);color:#1a49c8;font-weight:700}
#view-ppt .pp-lay-it i{
  width:12px;height:12px;border-radius:50%;
  border:1.6px solid rgba(43,89,214,.4);
  position:relative;
}
#view-ppt .pp-lay-it.on i{border-color:#1a49c8;background:#1a49c8;box-shadow:inset 0 0 0 2.5px #fff}
#view-ppt .pp-lay-it b{font-weight:600}
#view-ppt .pp-lay-it small{font-size:11px;color:#8296b8;font-weight:400}
#view-ppt .pp-lay-it.dis{opacity:.45;cursor:not-allowed}
#view-ppt .pp-lay-it.dis:hover{background:transparent;color:#31527f}

/* ---------- 4. 三栏 / 图片+文字 版式 ---------- */
#view-ppt .pp-ocols.c3{grid-template-columns:repeat(3,minmax(0,1fr))}
#view-ppt .pp-ocols.c-img{grid-template-columns:minmax(0,1fr) minmax(0,1.4fr)}
#view-ppt .pp-imgslot{
  gap:10px;
  padding:12px;
  border-radius:12px;
  border:1.6px dashed rgba(47,123,255,.3);
  background:linear-gradient(180deg,rgba(247,251,255,.9),rgba(240,247,255,.7));
}
#view-ppt .pp-imgph{
  display:flex;align-items:center;justify-content:center;
  min-height:118px;
  border-radius:9px;
  font-size:12.5px;color:#7d92b5;
  background:rgba(255,255,255,.75);
  border:1px solid rgba(43,89,214,.1);
}
@media (max-width:1100px){
  #view-ppt .pp-ocols.c3{grid-template-columns:1fr}
}
@media (max-width:900px){
  #view-ppt .pp-ocols.c-img{grid-template-columns:1fr}
}

/* 新工具栏里的移动/插入按钮：补齐 del 悬停与禁用态（与旧 .pp-oacts 规则同款） */
#view-ppt .pp-tmove .pp-iconb.del:hover{
  border-color:rgba(214,69,69,.5);color:#d64545;background:#fff7f6;
}

/* ---------- 第六轮：两个下拉（页面类型 / 布局方式）的样式统一 ---------- */
/* 两个下拉按钮同高同圆角同字体（都走 .pp-tbtn，这里只强化可读性） */
#view-ppt .pp-otools .pp-tbtn b{font-weight:700;color:#1a49c8}
#view-ppt .pp-otools .pp-tbtn:nth-child(2) b{color:#1a49c8}
/* 下拉标题 */
#view-ppt .pp-lay-hd{
  padding:6px 10px 8px;
  font-size:11px;font-weight:700;letter-spacing:.6px;
  color:#8296b8;text-transform:none;
  border-bottom:1px solid rgba(43,89,214,.1);
  margin-bottom:4px;
}
/* 第一个下拉（页面类型）贴着按钮；第二个（布局方式）错开，避免两个菜单重叠 */
#view-ppt .pp-lay-menu{left:0}
#view-ppt .pp-otools > .pp-lay-menu:nth-of-type(2){left:auto;right:0}
/* 页面类型菜单更宽一点（带图标与推荐说明） */
#view-ppt .pp-lay-menu .pp-lay-it small{white-space:nowrap}

/* ============================================================
 * 第七轮：四个表单标题统一 + 标题↔输入框呼吸空间（2026-09-23）
 * 目标：「关键词 / 主题」「目标页数」「汇报场合」「上传参考材料（选填）」
 *       字号/字重/颜色/与输入框的间距完全一致；只加一小段呼吸空间，不做大留白。
 * 只改样式参数，不动结构。
 * ========================================================== */

/* ---------- 1. 一条规则统管四个标题（字号 / 字重 / 颜色 / 间距 全一致） ---------- */
#view-ppt .pp-panel h5,
#view-ppt .pp-opts label{
  font-size:15.5px;
  font-weight:600;
  color:#0e2a5e;
  letter-spacing:.2px;
  line-height:1.5;
  margin:0 0 18px;       /* 标题 ↔ 输入框：11px/10px → 统一 18px */
}
/* 两个下拉之间仍保持各自的段落间距（20px），由 .pp-opts label + label 控制 */
#view-ppt .pp-opts label + label{margin-top:20px}

/* ---------- 2. 主题输入框：内部高度略增（112 → 128px），比例不变 ---------- */
#view-ppt .ta{
  min-height:128px;
  padding:13px 14px;     /* 上下 12 → 13px，更舒展但不空旷 */
  line-height:1.75;
}
/* 上传面板内的文字域（要点/图表等）不跟着变高，避免子页过大 */
#view-ppt .pp-omain .ta{min-height:76px}

/* ---------- 3. 上传区：标题与虚线框之间同距 18px（可由 h5 的 margin 直接满足） ---------- */
#view-ppt .pp-panel:has(.pp-dz){gap:12px}     /* 兜底：不支持 :has 时也有间距 */
#view-ppt .pp-dz{margin-top:0}

/* ---------- 4. 0/200 辅助信息与上方输入框仍贴合，与下方标题保持节奏 ---------- */
#view-ppt .pp-count{margin-top:8px}

/* 标签 ↔ 下拉框：与「标题 ↔ 输入框」统一为 18px（四个标题同距） */
#view-ppt .pp-opts label .sel{margin-top:18px}

/* ============================================================
 * 第八轮：下拉菜单浮层层级修复（2026-09-23）
 * ------------------------------------------------------------
 * 真实原因：并非 overflow 裁剪（.pp-oitem 没有 overflow），而是「层叠顺序」问题 ——
 *   卡片 hover 时带 transform:translateY(-1px)，transform 会创建新的层叠上下文，
 *   鼠标移到菜单上时本卡片仍处 hover，下一张卡片就可能画到菜单之上 → 菜单被遮挡。
 * 修法（现代 SaaS 的做法）：
 *   1) 打开菜单的卡片加 .menu-open：position:relative + 高 z-index，并去掉 hover 位移
 *      （避免 transform 新建层叠上下文把自己降级）；
 *   2) 菜单自身给足 z-index，并用隔离层 isolation 让内部层叠不外溢；
 *   3) 全部后代定位修复 overflow：祖先链（panel-scroll / pane）统一允许纵向溢出可见，
 *      确保菜单不会被滚动容器裁掉。
 * ========================================================== */

/* 1) 打开下拉的卡片提升层级 */
#view-ppt .pp-oitem.menu-open{
  position:relative;
  z-index:60;
  transform:none !important;               /* 去掉 hover 位移，避免 transform 新建层叠上下文 */
  box-shadow:0 10px 30px rgba(23,58,130,.14);
  border-color:rgba(47,123,255,.34);
}
#view-ppt .pp-oitem:hover{z-index:5;position:relative}     /* 普通悬停也略高于相邻卡片 */

/* 2) 菜单浮层：高于所有卡片内容 */
#view-ppt .pp-otools{position:relative;isolation:isolate}
#view-ppt .pp-lay-menu{
  position:absolute;
  left:0;
  top:calc(100% + 7px);                    /* 与按钮保持 7px（6–8px 区间），不贴边 */
  z-index:900;
  min-width:100%;
  isolation:isolate;
  box-shadow:0 18px 44px rgba(23,58,130,.2), 0 2px 6px rgba(23,58,130,.08);
}
#view-ppt .pp-lay-menu.pp-lay-menu-r{left:auto;right:0}
#view-ppt .pp-lay-it{pointer-events:auto}

/* 3) 祖先容器不得裁掉浮层 */
#view-ppt .pp-outline,
#view-ppt .pp-outlineBox,
#view-ppt #pp-outlineBox,
#view-ppt .pp-pair,
#view-ppt .pane-scroll{overflow:visible}
#view-ppt .pane-scroll{overflow-y:auto}    /* 纵向仍需可滚动，横向与浮层可见 */

/* ============================================================
 * 第九轮（最终收口）：表单间距与组件规范 —— 唯一权威块 2026-09-23
 * ------------------------------------------------------------
 * 背景：本文件前面 8 轮 + css/style.css 基础样式里，同一批表单元素累计写了
 *   10 多处相互冲突的 margin（标题 10/11/18px 三套、0/200 有 4/6/8px 三套……），
 *   导致「改一次只动了一块，没有真正统一」。
 * 做法：把这一段放在文件最末（层叠最后胜出），用 !important 收口，
 *   从此只有这里定义表单间距与组件参数；前面所有同名声明一律失效，不再互相打架。
 * 规范（唯一定义）：
 *   标题字号 16px / 字重 600 / 深色；标题 ↔ 输入框 8px
 *   输入框：圆角 12px、边框 1px rgba(43,89,214,.16)、高度 42px、内距 12×13px、字号 13.5px
 *   主题框（textarea）：内距 12×13px，行高 1.7，高度按 10–15% 递减
 *   0/200：上距 6px（辅助信息）  ｜  字段之间：20px
 * ========================================================== */

/* ---------- 1. 四个字段标题：唯一定义 ---------- */
#view-ppt .pp-panel h5,
#view-ppt .pp-opts label{
  font-size:16px !important;
  font-weight:600 !important;
  color:#0e2a5e !important;
  letter-spacing:.2px !important;
  line-height:1.5 !important;
  margin:0 0 8px !important;        /* 标题 ↔ 输入框：统一 8px（不贴边框） */
}
#view-ppt .pp-opts label .sel{margin-top:0 !important}   /* 由标题 margin 统一负责 */

/* ---------- 2. 字段之间：20px（只在这里定义） ---------- */
#view-ppt .pp-opts{margin-top:0 !important;margin-bottom:0 !important;padding-top:0 !important}
#view-ppt .pp-opts label + label{margin-top:20px !important}
#view-ppt .pp-actions{margin-top:20px !important}
#view-ppt .pp-filelist{margin-top:0 !important}
#view-ppt .pp-filenote{margin-top:0 !important;padding-top:0 !important}

/* ---------- 3. 主题输入框：高度 134 → 118px（-12%，区间内） ---------- */
#view-ppt .ta{
  height:auto !important;
  min-height:118px !important;
  padding:12px 13px !important;
  line-height:1.7 !important;
  margin-bottom:0 !important;
}
#view-ppt .pp-panel .ta{min-height:118px !important}

/* ---------- 4. 0/200：紧贴输入框的辅助信息（6px） ---------- */
#view-ppt .pp-count{
  margin-top:6px !important;
  padding:0 2px !important;
  font-size:11.5px !important;
  color:#a3b2cc !important;
}

/* ---------- 5. 输入组件参数：唯一定义（题框 / 下拉 完全同款） ---------- */
#view-ppt .ta,
#view-ppt .ipt,
#view-ppt .sel{
  width:100% !important;
  box-sizing:border-box !important;
  border-radius:12px !important;
  border:1px solid rgba(43,89,214,.16) !important;
  background:rgba(255,255,255,.96) !important;
  font-size:13.5px !important;
  font-family:inherit !important;
  color:#0e2a5e !important;
  box-shadow:0 1px 2px rgba(23,58,130,.04), 0 6px 18px rgba(23,58,130,.045) !important;
}
#view-ppt .ipt,
#view-ppt .sel{
  height:42px !important;
  padding:0 13px !important;
  line-height:40px !important;
}
#view-ppt .sel{padding-right:34px !important}      /* 右侧给箭头留位 */
/* 大纲页内的字段仍走"文档式编辑"，不套用上面的白底与高度 */
#view-ppt .pp-omain .ipt,
#view-ppt .pp-omain .ta{
  background:transparent !important;
  border-color:transparent !important;
  box-shadow:none !important;
  border-radius:9px !important;
  padding:7px 10px !important;
  height:auto !important;
}
#view-ppt .pp-omain .ta{min-height:76px !important}
#view-ppt .pp-omain select.sel{height:30px !important;line-height:28px !important}

/* ---------- 6. 上传区：与上方字段 20px，卡片参数不变 ---------- */
#view-ppt .pp-pair .pp-panel + .pp-panel{margin-top:20px !important;gap:12px !important}
#view-ppt .pp-panel:has(.pp-dz){margin-top:20px !important}
#view-ppt .pp-dz{margin-top:0 !important}
#view-ppt .pp-dz small{margin-top:4px !important}

/* ---------- 第十轮：四栏布局（2×2 均分）2026-09-23 ----------
   four 版式在编辑器里以 2×2 呈现四个栏位；导出时前后两两合并进导出的两个栏位，
   因此内容不丢（导出呈现为 2 列）。 */
#view-ppt .pp-ocols.c4{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
#view-ppt .pp-ocols.c4 .pp-ocol{padding:10px 11px;border-radius:11px;
  border:1px solid rgba(43,89,214,.1);background:rgba(247,251,255,.6)}
#view-ppt .pp-ocols.c4 .pp-ocol .ipt,
#view-ppt .pp-ocols.c4 .pp-ocol .ta{background:#fff}
@media (max-width:900px){ #view-ppt .pp-ocols.c4{grid-template-columns:1fr} }
