/* ==========================================================================
   中核集团 · 在线客服系统（企业级）
   客户端 + 客服端统一设计
   ========================================================================== */
:root{
  --cnnc-navy:#16335b;
  --cnnc-navy-2:#0f2544;
  --cnnc-navy-soft:#1e4a7a;
  --cnnc-gold:#b49663;
  --cnnc-gold-2:#c7ac77;
  --cnnc-gold-bg:#f6efe2;
  --cnnc-bg:#eef1f5;
  --cnnc-card:#ffffff;
  --cnnc-text:#1f2d3d;
  --cnnc-text-2:#5b6b7b;
  --cnnc-text-3:#8a95a3;
  --cnnc-border:#dfe5ec;
  --cnnc-bubble-own:#e7eff9;
  --cnnc-bubble-other:#ffffff;
  --cnnc-danger:#c6534d;
  --cnnc-success:#3a8a6d;
  --cnnc-shadow:0 2px 10px rgba(22,51,91,.06);
  --cnnc-radius:10px;
}

/* ---------- 浮动客服入口 ---------- */
.cs-float{
  position:fixed;z-index:90;right:max(22px,env(safe-area-inset-right));
  bottom:calc(92px + env(safe-area-inset-bottom));
  display:grid;place-items:center;box-sizing:border-box;
  width:56px;height:56px;min-width:56px;min-height:56px;padding:0;
  border-radius:50%;border:none;color:#fff!important;
  background:linear-gradient(135deg,#1e4a7a,#16335b);
  box-shadow:0 6px 18px rgba(22,51,91,.28);
  text-decoration:none;transition:transform .18s ease,box-shadow .18s ease;
}
.cs-float svg{display:block;width:26px;height:26px;pointer-events:none}
.cs-float:focus-visible{outline:3px solid #b49663;outline-offset:3px}
@media(hover:hover) and (pointer:fine){.cs-float:hover{transform:translateY(-2px);box-shadow:0 9px 24px rgba(22,51,91,.34)}}
@media(prefers-reduced-motion:reduce){.cs-float{transition:none}}
body:has(.cs-conversation)>.cs-float{display:none}
body.cs-page>.cs-float{display:none}

/* ---------- 顶部栏 ---------- */
.cs-top{
  display:flex;align-items:center;justify-content:space-between;
  padding:16px 26px;gap:18px;
  background:linear-gradient(120deg,#16335b,#1e4a7a 60%,#16335b);
  color:#fff;
}
.cs-top h1{font-size:21px;margin:0;font-weight:700;letter-spacing:.5px}
.cs-top a{color:#d8e3f0;text-decoration:none;font-size:14px;transition:color .15s}
.cs-top a:hover{color:#fff}
.cs-top>span{font-size:13px;color:#a8bcd6}

/* ---------- 客服工作台 ---------- */
.cs-console{
  background:var(--cnnc-bg);min-height:100vh;
  font:14px/1.65 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",system-ui,sans-serif;
  color:var(--cnnc-text);
}
.cs-layout{
  display:grid;grid-template-columns:280px minmax(340px,1fr) 280px;
  max-width:1720px;margin:0 auto;
  height:calc(100dvh - 72px);gap:14px;padding:14px;
  background:var(--cnnc-bg);box-sizing:border-box;
}

/* ---------- 会话列表 ---------- */
.cs-inbox{
  background:var(--cnnc-card);border-radius:var(--cnnc-radius);
  box-shadow:var(--cnnc-shadow);overflow:auto;display:flex;flex-direction:column;
}
.cs-search{padding:18px 16px;border-bottom:1px solid var(--cnnc-border);background:#fff;position:sticky;top:0;z-index:1}
.cs-search h2,.cs-info h2{font-size:16px;margin:0 0 12px;color:var(--cnnc-text);font-weight:700}
.cs-search form{display:flex;gap:6px}
.cs-search input{
  min-width:0;width:100%;padding:9px 12px;
  border:1px solid var(--cnnc-border);border-radius:8px;font-size:13px;
  background:#f7f9fb;color:var(--cnnc-text);outline:none;transition:border-color .15s,background .15s;
}
.cs-search input:focus{border-color:var(--cnnc-navy-soft);background:#fff}
.cs-search button{white-space:nowrap;border:none;border-radius:8px;background:var(--cnnc-navy);color:#fff;padding:9px 14px;font-size:13px;cursor:pointer}
.cs-search button:hover{background:var(--cnnc-navy-2)}
#csThreadList{flex:1;overflow:auto}
.cs-thread{
  display:block;width:100%;padding:14px 16px!important;
  border:0!important;border-bottom:1px solid #f0f2f6!important;border-radius:0!important;
  text-align:left!important;box-sizing:border-box;background:#fff!important;cursor:pointer;
  transition:background .14s;
}
.cs-thread:hover{background:#f7f9fb!important}
.cs-thread.active{background:var(--cnnc-gold-bg)!important;border-left:3px solid var(--cnnc-gold)!important}
.cs-thread span{display:flex;justify-content:space-between;gap:6px;align-items:center}
.cs-thread b{font-size:13px;color:var(--cnnc-text);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cs-thread i{
  background:var(--cnnc-gold);color:#fff;min-width:18px;height:18px;border-radius:9px;
  text-align:center;font:600 11px/18px system-ui;flex:none;padding:0 5px;box-sizing:border-box;
}
.cs-thread small{display:block;margin-top:5px;color:var(--cnnc-text-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}
.cs-thread time{font-size:10px;color:#b0b8c2}
.cs-pages{display:flex;justify-content:space-between;gap:8px;padding:12px;border-top:1px solid var(--cnnc-border)}
.cs-pages button{border:none;background:#f0f3f7;color:var(--cnnc-text);padding:8px 14px;border-radius:7px;cursor:pointer;font-size:12px}
.cs-pages button:disabled{opacity:.4;cursor:default}

/* ---------- 聊天区 ---------- */
.cs-conversation{display:flex;flex-direction:column;background:#fff;border-radius:var(--cnnc-radius);box-shadow:var(--cnnc-shadow);min-height:0;min-width:0;overflow:hidden}
.cs-conversation-head{
  display:flex;align-items:center;justify-content:space-between;
  padding:16px 22px;border-bottom:1px solid var(--cnnc-border);background:#fff;gap:12px;
}
.cs-conversation-head strong{display:block;color:var(--cnnc-text);font-size:16px;font-weight:700}
.cs-conversation-head small{display:block;font-size:12px;color:var(--cnnc-text-3);margin-top:3px}
.cs-conversation-head small.is-error{color:var(--cnnc-danger)}
.cs-conversation-head button,.cs-inbox button,.cs-info button{
  cursor:pointer;border:1px solid var(--cnnc-border);border-radius:8px;
  padding:7px 12px;background:#fff;color:var(--cnnc-text-2);font-size:13px;transition:background .15s;
}
.cs-conversation-head button:hover,.cs-inbox button:hover,.cs-info button:hover{background:#f4f7fa}
.cs-conversation button:disabled{opacity:.5;cursor:default}

.cs-messages{
  flex:1;overflow:auto;padding:22px;overscroll-behavior:contain;
  scrollbar-width:thin;min-height:150px;background:#fbfcfd;
}
.cs-empty{color:var(--cnnc-text-3);text-align:center;padding:70px 20px;font-size:14px}

/* 消息气泡 */
.cs-message{margin:0 0 16px;max-width:78%;width:fit-content;overflow-wrap:anywhere;animation:csIn .18s ease}
@keyframes csIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
.cs-message.is-own{margin-left:auto}
.cs-message-meta{font-size:11px;color:var(--cnnc-text-3);margin:0 4px 5px}
.cs-message.is-own .cs-message-meta{text-align:right}
.cs-bubble{
  padding:11px 15px;border-radius:4px 14px 14px 14px;
  background:var(--cnnc-bubble-other);border:1px solid var(--cnnc-border);
  color:var(--cnnc-text);line-height:1.7;font-size:14px;white-space:normal;box-shadow:0 1px 2px rgba(22,51,91,.03);
}
.cs-message.is-own .cs-bubble{
  background:var(--cnnc-bubble-own);border-color:#c9dcf0;
  border-radius:14px 4px 14px 14px;color:#1f3449;
}
.cs-message-actions{display:flex;align-items:center;gap:10px;justify-content:flex-end;margin-top:4px;font-size:11px;color:var(--cnnc-text-3)}
.cs-message-actions button{border:0!important;background:transparent!important;padding:0 4px!important;font-size:11px!important;color:var(--cnnc-gold)!important;cursor:pointer}
.cs-receipt.is-read{color:var(--cnnc-success)}
.cs-image{display:block;max-height:280px;max-width:100%;border-radius:8px;width:auto;box-shadow:0 1px 4px rgba(22,51,91,.08)}
.cs-video{display:block;max-width:100%;max-height:300px;width:380px;border-radius:8px;background:#18212b}
.cs-file{display:block;margin-top:6px;color:var(--cnnc-navy-soft);font-size:13px;overflow-wrap:anywhere;text-decoration:none}
.cs-file:hover{text-decoration:underline}
.cs-file small{color:var(--cnnc-text-3);font-size:11px}
.cs-message.is-retracted{opacity:.5}

/* ---------- 输入区 ---------- */
.cs-compose{padding:12px 18px 14px;background:#fff;border-top:1px solid var(--cnnc-border)}
.cs-compose.is-dragging{outline:3px dashed var(--cnnc-gold);outline-offset:-5px;background:var(--cnnc-gold-bg)}
.cs-tools{display:flex;flex-wrap:wrap;gap:7px;align-items:center;margin-bottom:8px}
.cs-tools button{border:1px solid var(--cnnc-border);background:#f7f9fb;border-radius:7px;padding:6px 10px;font-size:12px;color:var(--cnnc-text-2);cursor:pointer}
.cs-tools button:hover{background:#eef2f7}
.cs-tools select{max-width:160px;border:1px solid var(--cnnc-border);border-radius:7px;padding:6px 8px;font-size:12px;color:var(--cnnc-text)}
.cs-compose textarea{
  width:100%;box-sizing:border-box;border:1px solid var(--cnnc-border);border-radius:9px;
  resize:vertical;min-height:62px;max-height:160px;background:#fbfcfd;color:var(--cnnc-text);
  outline:none;font:14px/1.6 system-ui;padding:11px 13px;transition:border-color .15s,background .15s;
}
.cs-compose textarea:focus{border-color:var(--cnnc-navy-soft);background:#fff}
.cs-sendbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:8px}
.cs-sendbar small{font-size:11px;color:var(--cnnc-text-3)}
.cs-primary{background:var(--cnnc-navy)!important;color:#fff!important;border-color:var(--cnnc-navy)!important;font-weight:600}
.cs-primary:hover{background:var(--cnnc-navy-2)!important}
.cs-sendbar .cs-primary{padding:10px 30px;border-radius:8px}
.cs-emojis{display:flex;flex-wrap:wrap;gap:3px;padding:9px;background:#fafbfd;border:1px solid var(--cnnc-border);border-radius:8px}
.cs-emojis[hidden]{display:none}
.cs-emojis button{font-size:21px;border:0;background:transparent;padding:4px;cursor:pointer;border-radius:5px}
.cs-emojis button:hover{background:#eef2f7}
.cs-upload{font-size:12px;color:var(--cnnc-navy-soft);background:#f0f5fb;padding:6px 10px;margin-bottom:5px;overflow-wrap:anywhere;border-radius:6px}
#csUploads{max-height:92px;overflow:auto}

/* ---------- 客户信息面板 ---------- */
.cs-info{padding:20px 18px;background:#fff;border-radius:var(--cnnc-radius);box-shadow:var(--cnnc-shadow);overflow:auto;font-size:13px}
.cs-info dl{margin:0 0 18px}
.cs-info dt{color:var(--cnnc-text-3);font-size:11px;margin-top:14px;font-weight:600;letter-spacing:.3px}
.cs-info dd{margin:3px 0 0;color:var(--cnnc-text);word-break:break-all;font-size:13px}
.cs-info label{display:block;color:var(--cnnc-text-2);font-size:12px;margin-top:14px;font-weight:600}
.cs-info textarea,.cs-info input,.cs-info select{
  display:block;width:100%;box-sizing:border-box;border:1px solid var(--cnnc-border);border-radius:8px;
  padding:10px;margin:7px 0 10px;font:13px/1.6 system-ui;color:var(--cnnc-text);background:#fbfcfd;outline:none;
}
.cs-info textarea:focus,.cs-info input:focus,.cs-info select:focus{border-color:var(--cnnc-navy-soft);background:#fff}
.cs-info textarea{resize:vertical}
.cs-info .cs-help{font-size:11px;color:var(--cnnc-text-3);margin-top:24px;line-height:1.8}
.cs-quick-manager{border-top:1px solid var(--cnnc-border);margin-top:20px;padding-top:18px}
.cs-quick-manager summary{cursor:pointer;color:var(--cnnc-gold);font-weight:600}
#csNoteStatus{font-size:12px;color:var(--cnnc-success)}

/* ---------- 客户端 ---------- */
.cs-customer{
  max-width:860px;margin:0 auto;width:100%;
  height:var(--cs-viewport-height,100dvh);min-height:0;
  display:flex;flex-direction:column;padding:0 0 calc(64px + env(safe-area-inset-bottom));
  box-sizing:border-box;
}
.cs-customer>.cs-conversation{height:auto;min-height:0;flex:1;overflow:hidden;border-radius:0;box-shadow:none}
.cs-customer .cs-top h1{font-size:19px}
.cs-customer .cs-top{padding:15px 20px}
.cs-customer .cs-messages{padding:22px}
.cs-customer .cs-message{max-width:80%}
.cs-customer #csStatus{font-size:11px}
.cs-customer .cs-compose{padding-bottom:16px}
.cs-top-spacer{display:block!important;width:48px;flex:none}
.cs-customer .cs-top>a{width:48px;flex:none}
.cs-customer .cs-top h1{flex:1;text-align:center}

/* ---------- 移动端 tabs ---------- */
.cs-mobile-tabs{display:none}
.cs-admin-entry{display:block;margin:8px 16px;padding:12px 15px;border-radius:8px;background:#fff;color:var(--cnnc-navy);font-weight:600;text-decoration:none}

body.cs-page{overflow:hidden}
.cs-messages{min-height:0;overflow-x:hidden}

/* ---------- 响应式 ---------- */
@media(max-width:1150px){
  .cs-layout{grid-template-columns:230px minmax(300px,1fr) 240px;gap:10px;padding:10px}
  .cs-info{padding:16px}
}
@media(max-width:900px){
  .cs-layout{display:block;height:auto;padding:0;gap:0}
  .cs-mobile-tabs{
    display:flex;flex:none;background:#fff;border-bottom:1px solid var(--cnnc-border);
    padding:0 12px;gap:8px;
  }
  .cs-mobile-tabs button{
    flex:1;padding:12px 5px;border:0;border-bottom:2px solid transparent;border-radius:0;
    background:#fff;color:var(--cnnc-text-2);font-size:13px;cursor:pointer;
  }
  .cs-mobile-tabs button[aria-pressed="true"]{color:var(--cnnc-navy);border-bottom-color:var(--cnnc-gold);font-weight:700}
  .cs-console .cs-layout>.cs-inbox,.cs-console .cs-layout>.cs-conversation,.cs-console .cs-layout>.cs-info{display:none;height:100%;max-height:100%;overflow:auto;border-radius:0}
  .cs-console[data-view="inbox"] .cs-inbox,.cs-console[data-view="info"] .cs-info{display:flex;flex-direction:column}
  .cs-console[data-view="chat"] .cs-conversation{display:flex;overflow:hidden}
  .cs-console .cs-search h2{display:block}
  .cs-console .cs-search{padding:16px}
  .cs-console .cs-pages{padding:14px}
  .cs-console .cs-top{padding:14px 16px}
  .cs-console .cs-top h1{font-size:19px}
  .cs-info .cs-quick-manager{margin-top:20px}
}
@media(max-width:640px){
  .cs-customer{padding-bottom:calc(70px + env(safe-area-inset-bottom))}
  .cs-customer>.cs-top{padding:12px 14px}
  .cs-customer .cs-top h1{font-size:17px}
  .cs-customer .cs-conversation-head{padding:11px 14px}
  .cs-customer .cs-conversation-head strong{font-size:15px}
  .cs-customer .cs-compose{padding:8px 12px 12px}
  .cs-compose textarea{height:56px;min-height:44px;max-height:110px;resize:none;font-size:16px}
  .cs-sendbar{gap:7px}
  .cs-sendbar small{font-size:10px}
  .cs-sendbar .cs-primary{padding:9px 22px;min-height:36px}
  .cs-tools{gap:5px}
  .cs-tools button{min-height:33px;font-size:11px}
  .cs-message{max-width:90%!important}
  .cs-bubble{padding:10px 12px}
  .cs-image,.cs-video{max-height:220px}
  .cs-float{right:max(14px,env(safe-area-inset-right));width:50px;height:50px;min-width:50px;min-height:50px}
  .cs-float svg{width:23px;height:23px}
}
@media(max-height:520px) and (max-width:900px){
  .cs-customer>.cs-top{padding:6px 14px}
  .cs-customer .cs-conversation-head{padding:5px 12px}
  .cs-customer .cs-conversation-head small{display:none}
  .cs-compose textarea{height:44px;min-height:36px}
  .cs-compose{padding:5px 10px!important}
  .cs-emojis{max-height:60px}
}

/* ---------- 通用细节 ---------- */
.cs-console,.cs-customer{color-scheme:light}
.cs-console input,.cs-console textarea,.cs-console select,.cs-customer input,.cs-customer textarea,.cs-customer select{background:#fbfcfd;color:var(--cnnc-text)}
.cs-console select,.cs-customer select{border:1px solid var(--cnnc-border);padding:7px;border-radius:8px}
.cs-console input::placeholder,.cs-console textarea::placeholder{color:#a7b0bb}
.cs-layout{min-width:0}
.cs-info,.cs-inbox{min-width:0}

.cs-quick-manager{max-width:620px;min-width:0}.cs-quick-manager label{display:grid;gap:7px;margin:16px 0}.cs-quick-manager input,.cs-quick-manager textarea,.cs-quick-manager select{width:100%;box-sizing:border-box;padding:12px;border:1px solid #bcc9d4;border-radius:8px;background:#fff;color:#172b3d}.cs-quick-manager p,.cs-quick-manager small{color:#526579;line-height:1.7}.cs-quick-actions{display:flex;gap:10px;flex-wrap:wrap}.cs-quick-actions button{padding:10px 16px;border-radius:8px}.cs-top [data-cs="quick-manager"]{white-space:nowrap;margin-left:auto;padding:9px 12px;border-radius:8px;border:1px solid #bfccd8;background:#fff;color:#194368}

body.client-mode #modal .cs-quick-manager p,body.client-mode #modal .cs-quick-manager small{color:#bdd5e6}
