/* 01-base.css —— 基础 · 骨架/分栏/头像/顶栏
   从 web/index.html 拆出（yourcopy v3 · 2026-10-06）。
   拆分原则：**严格保持原始行序**。CSS 后写的赢，重排会悄悄改掉视觉，
   所以这里的规则顺序跟原文件里一模一样，不要按功能重排。

   文件序号 01/02/… 就是加载顺序（index.html 里 link 的顺序）。
   想合并相邻文件：把内容按序号顺序拼起来即可，不会变样。

   ⚠️ 改样式前先知道两件事：
      1) 同一个类名可能出现在多个文件里 —— 那是按"这条规则在原文件的位置"
         切出来的，不是漏了。要改某个类，用浏览器 F12 选中元素，
         看命中的规则在哪个文件（会标出行号）。
      2) 整体换配色：**只改下面 :root 里的变量值**，全站立刻变。
         （2026-10-06 起已变量化 —— 此前是 #c41e3a 硬编码 74 处，换色要改 74 个地方。）
*/

/* ============================================================
   主题变量 —— 换配色只改这一段，勿去各文件里改散落的硬编码。
   2026-10-06 定为绿色系（老板不喜欢红色）。
   ============================================================ */
:root{
  /* 品牌绿：主按钮、选中态、进度、强调 */
  --brand:       #1D7A5F;
  --brand-hover: #155F4A;
  --brand-2:     #268C6C;
  --brand-soft:  #EFF7F3;   /* 浅底：聚焦背景、提示条 */
  --brand-line:  #CFE3DA;   /* 浅边框 */
  --brand-mute:  #9BB5AC;   /* 禁用态 */

  /* 分身标识色（与品牌色区分）—— 暗金，比原来的橙沉稳 */
  --clone:        #B8862B;
  --clone-hover:  #A6741F;
  --clone-soft:   #9E6F1E;

  /* 中性色 */
  --ink:      #1f2c3a;   /* 主文字 */
  --ink-2:    #5a6b78;   /* 次文字 */
  --ink-3:    #7a8794;   /* 弱文字 */
  --line:     #e6e8ea;   /* 分隔线 */
  --bg:       #eef0f2;   /* 页面底 */
  --card:     #ffffff;   /* 卡片 */
  --field:    #fafbfc;   /* 输入框底 */

  /* 语义色 —— 这些不该跟着品牌色走 */
  --danger:   #c0392b;   /* 出错 */
  --warn:     #d68910;   /* 警告 */
  --rec:      #ff4d5a;   /* 录音中 */
  --ok:       #1D9E75;   /* 成功 */
}

/**
*{margin:0;padding:0;box-sizing:border-box}
body{background:#eef0f2;font-family:"Segoe UI","Microsoft YaHei",-apple-system,sans-serif;
  display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;padding:24px;gap:16px}
.app{width:1180px;height:720px;background:#ffffff;border-radius:12px;overflow:hidden;display:flex;
  border:1px solid #e6e8ea;box-shadow:0 24px 64px rgba(0,0,0,.5);position:relative}
.side{width:340px;background:#ffffff;border-right:1px solid #e6e8ea;display:flex;flex-direction:column;position:relative;overflow:hidden}
.main{flex:1;display:flex;flex-direction:column;background:#ffffff;position:relative;overflow:hidden}
.av{border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:500;
  flex:none;background-size:cover;background-position:center}
.view{position:absolute;inset:0;display:flex;flex-direction:column;opacity:0;pointer-events:none;transition:opacity .16s}
.view.on{opacity:1;pointer-events:auto}

.owrap{padding:14px 16px;border-bottom:1px solid #e6e8ea;display:flex;align-items:center;gap:12px}
.owner{width:48px;height:48px;background:var(--brand);font-size:17px;cursor:pointer;transition:transform .12s}
.owner:hover{transform:scale(1.05)}
.oinfo{flex:1;min-width:0}
.oname{font-size:14px;color:#1f2c3a;font-weight:500}
.ocode{font-size:11px;color:#6b7783;font-family:Consolas,monospace;letter-spacing:.4px;margin-top:3px}
.oact{display:flex;gap:6px;color:#6b7783;font-size:14px}
.oact span{padding:3px 5px;border-radius:5px;cursor:pointer}
.oact span:hover{background:#e9eaec;color:#1f2c3a}

.clones{padding:12px 16px 15px;border-bottom:1px solid #e6e8ea}
.clabel{font-size:11px;color:#6b7783;letter-spacing:.6px;margin-bottom:11px;display:flex}
.clabel em{margin-left:auto;font-style:normal;font-size:10px;color:#7a8794}
.crow{display:flex;gap:12px;align-items:flex-start;flex-wrap:wrap}
.citem{width:66px;text-align:center;position:relative}
.cav{width:32px;height:32px;font-size:13px;margin:0 auto;position:relative;overflow:hidden;cursor:pointer;transition:transform .12s}
.cav:hover{transform:scale(1.08)}
.cname{font-size:10.5px;margin-top:6px;line-height:1.3;white-space:nowrap;color:var(--clone);
  cursor:pointer;padding:2px 0;border-radius:4px;overflow:hidden;text-overflow:ellipsis}
.cname:hover{background:#e9eaec}
.ctag{font-size:9px;line-height:1.2;margin-top:2px;letter-spacing:.3px;white-space:nowrap;color:#7a8794}
.ctag b{color:#5f6b76;font-weight:400}
.badge{position:absolute;top:-3px;right:-4px;min-width:16px;height:16px;border-radius:8px;
  background:var(--brand);color:#fff;font-size:9.5px;display:flex;align-items:center;justify-content:center;
  padding:0 4px;border:2px solid #ffffff;font-weight:500;z-index:3}
.pulse{animation:pulse 1.6s ease-in-out infinite}
@keyframes pulse{0%,100%{transform:scale(1);box-shadow:0 0 0 0 rgba(196,30,58,.6)}
  50%{transform:scale(1.14);box-shadow:0 0 0 6px rgba(196,30,58,0)}}
.carousel{position:absolute;inset:0;display:flex;width:300%;animation:slide 3.6s ease-in-out infinite}
.carousel>div{width:33.3333%;height:100%;flex:none;display:flex;align-items:center;justify-content:center;font-size:14px;color:#fff}
.pav{background:#185FA5}
.pmail{background:var(--brand);font-size:15px}
@keyframes slide{0%{transform:translateX(0)}26%{transform:translateX(0)}
  38%{transform:translateX(-33.3333%)}64%{transform:translateX(-33.3333%)}
  76%{transform:translateX(-66.6667%)}100%{transform:translateX(-66.6667%)}}
@keyframes namecycle{0%{color:var(--clone)}33%{color:#C9A24A}66%{color:#97C459}100%{color:var(--clone)}}
.reply .cname{animation:namecycle 2.6s ease-in-out infinite;font-weight:500}
.cadd{width:32px;height:32px;margin:0 auto;border-radius:50%;border:1px dashed #d8dadc;color:#6b7783;
  display:flex;align-items:center;justify-content:center;font-size:16px;cursor:pointer}
.cadd:hover{border-color:var(--brand);color:var(--brand)}

/* ---------- 挂起区：分身遇事抛给你，但不等 ----------
   放在会话列表上方，是因为这些事有倒计时、且卡着别人的等待。
   藏在菜单里等于没做 —— 你不会主动去看。 */
.pend{border-bottom:1px solid #e6e8ea;background:#F5F1E8;max-height:236px;overflow:auto}
.pend .pdtop{padding:10px 16px 6px;display:flex;align-items:center;gap:6px;
  font-size:10.5px;color:var(--clone);letter-spacing:.6px}
.pend .pdtop em{font-style:normal;margin-left:auto;color:#6b7783;letter-spacing:0}
.pdcard{padding:9px 16px;cursor:pointer;border-top:1px solid #e6e8ea}
.pdcard:hover{background:#f6ecdd}
.pdline1{display:flex;align-items:center;gap:7px}
.pdcode{font-family:Consolas,monospace;font-size:10px;background:#f3e7d2;color:var(--clone);
  padding:1px 5px;border-radius:3px;flex:none}
.pdclone{font-size:11.5px;color:#1f2c3a;font-weight:500}
.pdleft{margin-left:auto;font-size:10px;color:#5f6b76;flex:none}
.pdleft.urgent{color:var(--brand);font-weight:500}
.pdreason{font-size:11px;color:#3a4754;margin-top:4px;line-height:1.6}
.pdwho{font-size:10px;color:#6b7783;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 回答弹窗 */
.pdask{background:#ffffff;border:1px solid #e6e8ea;border-radius:7px;padding:10px 12px;
  font-size:11.5px;color:#5f6b76;line-height:1.7;max-height:150px;overflow:auto;
  white-space:pre-wrap;word-break:break-word;margin-bottom:12px}
.pdinput{width:100%;background:#ffffff;border:1px solid #e6e8ea;border-radius:7px;padding:10px 13px;
  font-size:12.5px;color:#1f2c3a;outline:none;resize:vertical;min-height:76px;line-height:1.7;
  font-family:inherit;box-sizing:border-box}
.pdinput:focus{border-color:var(--brand)}
.pdhint{font-size:10.5px;color:#6b7783;margin-top:8px;line-height:1.7}
.memrate{font-size:13px;color:#2b3947;margin-bottom:2px}
.memrate b{color:var(--brand);font-weight:600}
.mempct{display:block;height:4px;border-radius:2px;margin-top:6px}
.memnote{font-size:11.5px;color:#5f6b76;line-height:1.6;margin-bottom:8px}
.memlvbox{border:1px solid #e9eaec;border-radius:6px;padding:6px 9px;margin-bottom:8px}
.memlv{font-size:11.5px;color:#5a6b78;padding:2px 0}
.memlv b{color:#2b3947;font-weight:500}
.memadvbox{margin-top:4px}
.memadv{font-size:11.5px;color:#5f6b76;line-height:1.6;padding:4px 8px;
  border-left:2px solid #dfe1e3;margin-bottom:3px}
.memadv.memok{border-left-color:#1D9E75;color:#2b3947}
.memautobox{margin-top:5px}
.memautoit{border-left:2px solid #dfe1e3;padding:5px 9px;margin-bottom:5px;border-radius:0 6px 6px 0}
.memautoit.on{border-left-color:#1D9E75;background:rgba(29,158,117,.08)}
.memautohead{font-size:11.5px;color:#5a6b78;line-height:1.6}
.memautoit.on .memautohead{color:#2b3947}
.autsnd{font-weight:600;margin-right:4px}
.autsnd.ok{color:#1D9E75}
.autsnd.no{color:var(--clone-soft)}
.memautobody{font-size:12px;color:#2b3947;white-space:pre-wrap;line-height:1.6;
  margin-top:4px;padding:6px 9px;background:#f5f6f8;border-radius:5px;max-height:180px;overflow:auto}
.memautobody.memmuted{color:#6b7783;font-style:italic}
/* ---------- 规则清单 ----------
   老板要的「正方形框」用的是原生 checkbox：方方正正、大小跟字匹配、
   iOS/Android 上都不用自己画 —— 自己画的话三端样子都不一样。
   标签整体做成 <label>，点文字也能切 —— 只点小方框太小，实机上很难点中。 */
.memrule{display:flex;align-items:flex-start;gap:9px;font-size:12.5px;color:#2b3947;
  padding:7px 4px;border-bottom:1px solid #e9eaec;line-height:1.6;cursor:pointer;
  border-radius:4px;margin:0 -4px}
.memrule:hover{background:#fafbfc}
.memrule.off .mrulext{color:#a8b0b8}
/* 停用的不划掉整句：划掉就没法一眼扫过清单了（老板原话是"让每个句子对齐"，
   重点是对齐和可控，不是把字涂掉）。改成弱化颜色 + 框内无勾。 */
.mruleck{width:16px;height:16px;flex:none;margin:1px 0 0;accent-color:var(--brand);cursor:pointer}
.mrulext{flex:1;min-width:0;word-break:break-word}
.memx{margin-left:auto;flex:none;font-size:11px;color:#6b7783;cursor:pointer;
  padding:2px 6px;border-radius:4px;user-select:none}
.memx:hover{color:var(--brand);background:var(--brand-soft)}
.memcand{border:1px solid #e9eaec;border-radius:6px;padding:8px 10px;margin-top:6px}
.memct{display:flex;align-items:center;gap:8px;margin-bottom:5px}
.memkd{font-size:10.5px;padding:1px 6px;border-radius:3px;background:#e9eaec;
  border:1px solid #e4e6e8;color:#5a6b78}
.memcn{font-size:10.5px;color:#6b7783;margin-left:auto}
.memctext{font-size:12px;color:#2b3947;line-height:1.65;margin-bottom:7px}
.memcact{display:flex;gap:6px}
.membtn{font-size:11px;padding:2px 9px;border-radius:4px;background:#e9eaec;
  border:1px solid #e4e6e8;color:#5a6b78;cursor:pointer}
.membtn:hover{border-color:var(--brand);background:var(--brand);color:#fff}
.membtn.ok:hover{background:#0F6E56;border-color:#1D9E75}
/* 会话里的问题卡：橙色左边框 + 橙标题，和普通消息一眼区分 */
.askcard{align-self:stretch;max-width:100%;background:#f9f2e4;border:1px solid var(--clone);
  border-left-width:3px;border-radius:9px;padding:12px 15px}
.akhead{font-size:11.5px;color:var(--clone);font-weight:500;margin-bottom:8px}
/* 系统说明：分身做了什么。灰色细条，不抢注意力，但看得见 */
.notecard{align-self:center;max-width:92%;background:#f5f6f8;border:1px dashed #d8dadc;
  border-radius:7px;padding:7px 13px;font-size:11.5px;color:#5f6b76;line-height:1.7;
  white-space:pre-wrap;word-break:break-word}
.akbody{font-size:12.5px;color:#2b3947;line-height:1.75;white-space:pre-wrap;word-break:break-word;
  background:#f5f6f8;border-radius:6px;padding:10px 12px;margin-bottom:10px}

.list{flex:1;overflow:auto}
.lhead{padding:11px 16px 7px;font-size:11px;color:#6b7783;letter-spacing:.6px;display:flex;align-items:center}
.lhead span{margin-left:auto;cursor:pointer;color:var(--brand)}
.lhead span:hover{text-decoration:underline}
.conv{padding:10px 16px;display:flex;gap:11px;align-items:center;cursor:pointer}
.conv:hover{background:#f3f4f6}
.conv.on{background:#e9eaec}
.cvav{width:42px;height:42px;font-size:14px}
.cvbody{flex:1;min-width:0}
.cvtop{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.cvname{font-size:13px;color:#1f2c3a;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cvname.bot{color:var(--clone)}
.tag-mail{display:inline-block;margin-left:5px;padding:0 4px;border-radius:3px;font-size:9.5px;
  line-height:14px;background:#e6f0f7;color:#185FA5;font-weight:400;vertical-align:middle}
.chip.mail{background:#e6f0f7;color:#185FA5}