/* ===== 右侧悬浮联系条 =====
   外观 1:1 复刻老站 .client-2 / .my-kefu-*（反馈 No.60）。 */
.pwfc{position:fixed;right:0;top:50%;transform:translateY(-50%);z-index:100;width:55px;}
.pwfc .pwfc-item{position:relative;display:block;width:55px;height:55px;color:#fff;
  background:#0066c3;margin:0 0 1px;text-decoration:none;border:0;border-radius:0;}
.pwfc .pwfc-item:last-child{margin-bottom:0;}
.pwfc .pwfc-item:hover{background:#0079e0;}
/* 图标盒子 30x27，水平居中、距顶 14px —— 与老站 li i{margin:0 auto;padding-top:16px} 等效 */
.pwfc .pwfc-ico{position:absolute;left:50%;top:14px;width:30px;height:27px;
  margin-left:-15px;background:url(/static/cms/img/float-sprite.png) no-repeat;
  cursor:pointer;}
/* sprite 60x90（2 列 3 行，每格 30x30），坐标照抄老站 resetcommon.css： */
.pwfc .pwfc-ico-wx{background-position:-34px 4px;}      /* 二维码 → 加微信 */
.pwfc .pwfc-ico-tel{background-position:0 -25px;}       /* 电话 + TEL */
.pwfc .pwfc-ico-trial{background-position:4px -53px;}   /* 对话气泡 → 预约演示 */
.pwfc .pwfc-ico-top{width:33px;height:35px;margin-left:-16px;top:10px;
  background-position:-27px -51px;}                     /* 房子 + TOP */
.pwfc .pwfc-ico-sq{width:28px;height:28px;margin-left:-14px;top:13px;
  background:url(/static/cms/img/float-chat.png) no-repeat 0 0;}
/* 弹层：老站 my-kefu-weixin-pic 是蓝底白字、无圆角，这里照做（只是挪到左侧滑出） */
.pwfc .pwfc-pop{position:absolute;right:55px;bottom:0;width:150px;background:#0066c3;
  color:#fff;padding:10px;text-align:center;font-size:14px;line-height:30px;
  opacity:0;visibility:hidden;transition:opacity .2s;pointer-events:none;z-index:1;}
.pwfc .pwfc-item:hover .pwfc-pop,.pwfc .pwfc-item:focus-within .pwfc-pop,
.pwfc .pwfc-item.open .pwfc-pop{opacity:1;visibility:visible;pointer-events:auto;}
.pwfc .pwfc-pop-t{font-size:14px;font-weight:400;color:#fff;margin:0 0 8px;line-height:22px;}
.pwfc .pwfc-pop img{display:block;margin:0 auto;width:120px;height:120px;background:#fff;}
.pwfc .pwfc-wxid{font-size:13px;color:#fff;margin:6px 0 0;line-height:1.6;word-break:break-all;}
.pwfc .pwfc-tel{display:block;font-size:17px;font-weight:700;color:#fff;letter-spacing:.5px;
  word-break:break-all;}
.pwfc .pwfc-note{font-size:12px;color:#cfe6f8;line-height:1.6;margin:6px 0 0;}
.pwfc .pwfc-go{display:block;margin-top:8px;padding:6px 0;background:#fff;color:#0066c3;
  font-size:13px;line-height:20px;text-decoration:none;}
.pwfc .pwfc-go:hover{background:#e6f2fb;}
@media (max-width:767px){
  /* 手机上不再垂直居中（会压住正文/表单），改成右下角一列 */
  .pwfc{top:auto;bottom:88px;right:0;transform:none;}
  .pwfc .pwfc-item{width:48px;height:48px;}
  .pwfc .pwfc-ico{top:11px;}
  .pwfc .pwfc-ico-top{top:7px;}
  .pwfc .pwfc-pop{right:48px;width:140px;padding:9px;}
  .pwfc .pwfc-tel{font-size:15px;}
}
/* ===== 控件库「悬浮咨询条」兜底（第 67 条）=====
   它是 online_services 的 else 分支 —— 只有在「在线客服」一个启用的
   分组/账号都没有时才会被渲染。以前它**连样式都没有**（全站搜不到
   .ops-float-consult），真顶上时就是一串没排版的裸链接，运营在前端
   看到只会更困惑。这里按老站浮条同一套外观补上：55 宽、#0066c3、1px 缝。
   ★ 注意：CSS 注释里**绝不能**出现成对的 Django 模板标签写法（哪怕只是想
     引用一下）—— 这一段在 <style> 里而不是 comment 块里，写进去会被真的
     解析成模板语法、报 TemplateSyntaxError 或缺 endif。要引用就写成纯文字。 */
.ops-float-consult{position:fixed;right:0;top:50%;transform:translateY(-50%);
  z-index:99;width:55px;}
.ops-float-consult a{display:block;width:55px;height:55px;background:#0066c3;color:#fff;
  font-size:13px;line-height:55px;text-align:center;text-decoration:none;
  margin-bottom:1px;letter-spacing:-1px;}
.ops-float-consult a:hover{background:#0079e0;color:#fff;}
@media (max-width:767px){
  .ops-float-consult{top:auto;bottom:88px;transform:none;}
  .ops-float-consult a{width:48px;height:48px;line-height:48px;font-size:12px;}
}
/* ===== 「扫码」弹窗（测试反馈 No.74 / No.76）=====
   任意元素加 data-wx-open 属性即可触发：
     data-wx-open            或  data-wx-open="wechat"  → 「加微信」二维码
     data-wx-open="service"                             → 「关注服务号」二维码
   二维码内容取自「站点设置 › 二维码与右侧悬浮联系条」里的两张图，
   没上传时回落到随包发的 static/cms/img/qr-*.png，不会出现空框。
   两处入口共用这一个弹窗：
     · 右侧浮条的「加微信」「服务号」两项（No.74「鼠标单击后能弹出加微信的功能」）
     · 全站「立即咨询」按钮（No.76「点击后自动弹出加微信二维码图片」）
   配色沿用老站浮条的 #0066c3，与 .pwfc 一套色系。 */
.wx-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;
  display:flex;align-items:center;justify-content:center;padding:20px;}
.wx-modal[hidden]{display:none;}
.wx-modal-mask{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(15,23,42,.62);}
.wx-modal-box{position:relative;z-index:1;width:100%;max-width:340px;background:#fff;
  border-radius:14px;padding:26px 22px 20px;text-align:center;
  box-shadow:0 20px 50px rgba(2,6,23,.35);}
.wx-modal-close{position:absolute;top:8px;right:10px;width:30px;height:30px;border:0;
  background:transparent;color:#94a3b8;font-size:24px;line-height:1;cursor:pointer;
  border-radius:50%;padding:0;}
.wx-modal-close:hover{background:#f1f5f9;color:#334155;}
.wx-modal-head{font-size:19px;font-weight:800;color:#0066c3;}
.wx-modal-sub{font-size:12.5px;color:#64748b;margin-top:4px;}
.wx-modal-qr{display:inline-block;margin:16px auto 10px;line-height:0;
  border-radius:10px;overflow:hidden;}
.wx-modal-qr img{width:220px;height:220px;display:block;border-radius:10px;}
.wx-modal-tip{font-size:12.5px;color:#0066c3;background:#e8f2fc;border-radius:8px;
  padding:8px 10px;line-height:1.55;margin:0 0 10px;}
.wx-modal-id{font-size:13.5px;color:#111827;margin:0 0 8px;}
.wx-modal-id b{color:#0066c3;font-weight:700;}
.wx-copy{margin-left:8px;border:1px solid #0066c3;background:#fff;color:#0066c3;
  font-size:12px;padding:2px 10px;border-radius:12px;cursor:pointer;}
.wx-copy:hover{background:#e8f2fc;}
.wx-modal-foot{font-size:12.5px;color:#64748b;margin:0;padding-top:8px;
  border-top:1px solid #f1f5f9;}
.wx-modal-foot a{color:#0066c3;font-weight:700;}
.wx-modal-empty{margin:16px 0;padding:26px 12px;border:1px dashed #cbd5e1;
  border-radius:12px;background:#f8fafc;color:#64748b;font-size:13.5px;line-height:1.7;}
.wx-modal-empty span{display:block;font-size:11.5px;margin-top:6px;color:#94a3b8;}
@media (max-width:767px){
  .wx-modal-box{padding:22px 16px 16px;}
  .wx-modal-qr img{width:190px;height:190px;}
}
