/* ==========================================================
   匠星科技 · 悬浮联系 + 智能客服
   类名统一 jx- 前缀，避免与全站 main.css 冲突
   ========================================================== */

:root{
  --jx-brand:#1A5CFF;
  --jx-brand-d:#0B3DC7;
  --jx-ink:#0E1726;
  --jx-ink-2:#475467;
  --jx-ink-3:#98A2B3;
  --jx-line:#E7EBF3;
  --jx-soft:#F5F8FF;
}

/* ---------- 悬浮按钮组 ---------- */
.jx-dock{
  position:fixed;right:22px;bottom:26px;z-index:9000;
  display:flex;flex-direction:column;gap:10px;align-items:flex-end;
}
.jx-item{position:relative;display:flex;align-items:center;}

.jx-btn{
  width:50px;height:50px;border-radius:50%;
  display:grid;place-items:center;
  background:#fff;color:#0B3DC7;
  border:1px solid var(--jx-line);
  box-shadow:0 8px 24px rgba(16,24,40,.13);
  cursor:pointer;text-decoration:none;
  transition:transform .28s cubic-bezier(.22,1,.36,1),box-shadow .28s,color .2s,border-color .2s;
}
.jx-btn:hover{
  transform:translateY(-3px);
  color:var(--jx-brand);border-color:#BFD4FF;
  box-shadow:0 14px 32px rgba(26,92,255,.22);
}
.jx-btn svg{display:block}

/* 客服按钮：品牌渐变 + 在线小绿点 */
.jx-btn.jx-kf{
  background:linear-gradient(135deg,#1246DA,#1A5CFF);
  color:#fff;border:none;position:relative;
  box-shadow:0 10px 26px rgba(26,92,255,.34);
}
.jx-btn.jx-kf:hover{color:#fff;box-shadow:0 16px 36px rgba(26,92,255,.44)}
.jx-btn.jx-kf::after{
  content:"";position:absolute;top:1px;right:1px;width:10px;height:10px;
  border-radius:50%;background:#12B76A;border:2px solid #fff;
}

/* 微信二维码弹层 */
.jx-qr{
  position:absolute;right:62px;bottom:-8px;
  width:186px;padding:14px;background:#fff;border-radius:16px;
  border:1px solid var(--jx-line);box-shadow:0 20px 48px rgba(16,24,40,.18);
  opacity:0;visibility:hidden;transform:translateY(8px) scale(.96);
  transition:all .26s cubic-bezier(.22,1,.36,1);z-index:2;
}
.jx-qr.on{opacity:1;visibility:visible;transform:none}
.jx-qr img{width:100%;border-radius:10px;display:block;background:var(--jx-soft)}
.jx-qr p{margin:10px 0 0;font-size:12px;color:var(--jx-ink-2);text-align:center;line-height:1.5}
.jx-qr .jx-qr-ph{
  width:100%;aspect-ratio:1;border-radius:10px;background:var(--jx-soft);
  display:grid;place-items:center;font-size:11.5px;color:var(--jx-ink-3);text-align:center;padding:10px;
}

/* 文字提示 */
.jx-tip{
  position:absolute;right:60px;top:50%;transform:translateY(-50%) translateX(6px);
  padding:7px 12px;border-radius:9px;background:var(--jx-ink);color:#fff;
  font-size:12.5px;white-space:nowrap;opacity:0;pointer-events:none;
  transition:all .26s cubic-bezier(.22,1,.36,1);
}
.jx-item:hover .jx-tip{opacity:1;transform:translateY(-50%) translateX(0)}

/* ---------- 客服面板 ---------- */
.jx-panel{
  position:fixed;right:22px;bottom:88px;z-index:9001;
  width:376px;max-height:min(620px,calc(100vh - 130px));
  display:flex;flex-direction:column;overflow:hidden;
  background:#fff;border-radius:20px;
  border:1px solid var(--jx-line);
  box-shadow:0 28px 70px rgba(16,24,40,.20);
  opacity:0;visibility:hidden;transform:translateY(14px) scale(.97);
  transform-origin:bottom right;
  transition:all .3s cubic-bezier(.22,1,.36,1);
}
.jx-panel.on{opacity:1;visibility:visible;transform:none}

.jx-ph{
  display:flex;align-items:center;gap:10px;
  padding:14px 16px;color:#fff;
  background:linear-gradient(120deg,#0B3DC7,#1A5CFF 62%,#3D7BFF);
  flex-shrink:0;
}
.jx-ph .jx-av{
  width:34px;height:34px;border-radius:11px;background:rgba(255,255,255,.18);
  display:grid;place-items:center;flex-shrink:0;
}
.jx-ph h4{margin:0;font-size:14.5px;font-weight:700;letter-spacing:.01em}
.jx-ph span{display:block;margin-top:2px;font-size:11px;opacity:.82}
.jx-ph .jx-x{
  margin-left:auto;width:28px;height:28px;border-radius:8px;
  display:grid;place-items:center;cursor:pointer;opacity:.8;
  transition:background .2s,opacity .2s;background:transparent;border:none;color:#fff;
}
.jx-ph .jx-x:hover{background:rgba(255,255,255,.16);opacity:1}

.jx-body{
  flex:1;overflow-y:auto;padding:16px 14px;
  background:linear-gradient(180deg,#FBFCFE,#F6F9FF);
  display:flex;flex-direction:column;gap:12px;
}
.jx-body::-webkit-scrollbar{width:5px}
.jx-body::-webkit-scrollbar-thumb{background:#D8E0EE;border-radius:3px}

.jx-msg{display:flex;gap:8px;max-width:92%}
.jx-msg .jx-b{
  padding:11px 14px;border-radius:14px;font-size:13.5px;line-height:1.78;
  word-break:break-word;
}
/* AI 回复保留模型输出的换行，避免挤成一坨 */
.jx-msg.bot .jx-b{white-space:pre-wrap}
.jx-msg.bot .jx-b b{color:#0E1726;font-weight:700}
.jx-msg.bot .jx-b{background:#fff;border:1px solid var(--jx-line);color:#344054;border-bottom-left-radius:4px;box-shadow:0 2px 6px rgba(16,24,40,.04)}
.jx-msg.me{align-self:flex-end}
.jx-msg.me .jx-b{background:linear-gradient(120deg,#1246DA,#1A5CFF);color:#fff;border-bottom-right-radius:4px}

.jx-typing{display:flex;gap:4px;padding:12px 14px}
.jx-typing i{width:6px;height:6px;border-radius:50%;background:#C2CCDE;animation:jxDot 1.3s infinite}
.jx-typing i:nth-child(2){animation-delay:.18s}
.jx-typing i:nth-child(3){animation-delay:.36s}
@keyframes jxDot{0%,60%,100%{opacity:.35;transform:translateY(0)}30%{opacity:1;transform:translateY(-4px)}}

/* 快捷问题 */
.jx-quick{display:flex;flex-wrap:wrap;gap:7px;padding:0 14px 10px;background:#F6F9FF}
.jx-quick button{
  padding:6px 12px;border-radius:100px;background:#fff;border:1px solid var(--jx-line);
  color:var(--jx-ink-2);font-size:12px;cursor:pointer;
  transition:all .2s;font-family:inherit;
}
.jx-quick button:hover{border-color:#BFD4FF;color:var(--jx-brand);background:#F2F6FF}

/* 输入区 */
.jx-in{
  display:flex;align-items:flex-end;gap:8px;padding:11px 12px;
  border-top:1px solid var(--jx-line);background:#fff;flex-shrink:0;
}
.jx-in textarea{
  flex:1;border:1px solid var(--jx-line);border-radius:12px;padding:9px 12px;
  font-size:13.5px;font-family:inherit;color:var(--jx-ink);resize:none;
  max-height:88px;line-height:1.5;outline:none;transition:border-color .2s;
}
.jx-in textarea:focus{border-color:#8AB0FF}
.jx-send{
  width:38px;height:38px;border-radius:11px;flex-shrink:0;
  background:linear-gradient(135deg,#1246DA,#1A5CFF);color:#fff;
  display:grid;place-items:center;border:none;cursor:pointer;
  transition:opacity .2s,transform .2s;
}
.jx-send:disabled{opacity:.45;cursor:not-allowed}
.jx-send:not(:disabled):hover{transform:translateY(-1px)}

.jx-foot{
  padding:7px 14px;background:#fff;border-top:1px solid #F2F5FA;
  font-size:10.5px;color:#B0B9CC;text-align:center;flex-shrink:0;
}

/* ---------- 移动端 ---------- */
@media (max-width:860px){
  .jx-dock{right:10px;bottom:14px;gap:8px}
  .jx-btn{width:42px;height:42px}
  .jx-btn svg{width:17px;height:17px}
  .jx-tip{display:none}
  .jx-panel{
    right:8px;left:8px;bottom:70px;width:auto;
    max-height:calc(100vh - 110px);border-radius:18px;
  }
  .jx-qr{right:52px;width:168px}
}

/* ---------- 电话联系卡片 ---------- */
.jx-telcard{
  position:fixed;right:96px;bottom:96px;z-index:9002;
  width:252px;padding:20px 20px 18px;border-radius:16px;
  background:#fff;border:1px solid #E6EDF8;
  box-shadow:0 26px 64px rgba(16,24,40,.20);
  opacity:0;transform:translateY(10px) scale(.97);
  pointer-events:none;
  transition:opacity .24s cubic-bezier(.22,1,.36,1), transform .24s cubic-bezier(.22,1,.36,1);
}
.jx-telcard.on{opacity:1;transform:none;pointer-events:auto}

.jx-tc-eyebrow{
  font-size:11.5px;font-weight:700;letter-spacing:.12em;
  color:#94A2B6;margin-bottom:10px;
}
.jx-tc-num{
  display:block;font-size:21px;font-weight:700;letter-spacing:.01em;
  color:#0B1220;text-decoration:none;line-height:1.2;
  font-variant-numeric:tabular-nums;
  transition:color .2s;
}
.jx-tc-num:hover{color:#1A5CFF}

.jx-tc-acts{display:flex;gap:8px;margin-top:16px}
.jx-tc-copy{
  flex:1;height:36px;border-radius:9px;border:0;
  background:#0B1220;color:#fff;font-size:12.5px;font-weight:600;
  cursor:pointer;font-family:inherit;
  transition:background .2s;
}
.jx-tc-copy:hover{background:#1A5CFF}
.jx-tc-copy.done{background:#0E9F6E}

.jx-tc-set{
  flex:none;
  height:36px;padding:0 16px;border-radius:9px;
  background:#F4F7FC;border:1px solid #E6EDF8;color:#5A6683;
  font-size:12.5px;font-weight:600;cursor:pointer;font-family:inherit;
  transition:background .2s,border-color .2s;
}
.jx-tc-set:hover{background:#EDF2FA;border-color:#D8E3F2}

.jx-tc-note{
  margin:12px 0 0;font-size:11px;line-height:1.55;color:#9AA8BC;
  white-space:nowrap;
}

@media (max-width:768px){
  .jx-telcard{right:64px;bottom:84px;width:calc(100vw - 100px);max-width:252px}
}

/* 移动端拨号兜底提示 */
.jx-calltip{
  position:fixed;left:50%;bottom:96px;z-index:2147483647;
  transform:translate(-50%,12px);
  padding:14px 18px;border-radius:14px;
  background:rgba(11,26,48,.96);
  color:#fff;font-size:13px;line-height:1.5;
  text-align:center;
  box-shadow:0 18px 44px rgba(0,0,0,.30);
  opacity:0;transition:opacity .3s ease, transform .3s cubic-bezier(.22,1,.36,1);
  pointer-events:none;max-width:calc(100vw - 48px);
}
.jx-calltip.on{opacity:1;transform:translate(-50%,0)}
.jx-calltip b{font-size:16px;letter-spacing:.04em;display:inline-block;margin:0 2px}
.jx-calltip span{display:block;margin-top:6px;font-size:11.5px;color:rgba(255,255,255,.62)}
