:root{
  --brand:#0e6b52; --brand2:#12a06f; --brand3:#0a4d3a;
  --accent:#e8a33d; --ink:#182622; --sub:#64756f; --line:#e3eae6;
  --bg:#f2f6f4; --card:#ffffff; --red:#c0392b; --amber:#ae7a12; --blue:#2b5d8a;
  --shadow:0 1px 2px rgba(16,44,34,.05),0 8px 24px rgba(16,44,34,.06);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);
  font-family:"Microsoft YaHei","PingFang SC","Noto Sans CJK SC",system-ui,-apple-system,sans-serif;
  -webkit-font-smoothing:antialiased}
.wrap{max-width:1000px;margin:0 auto;padding:18px 16px 40px}

header{position:relative;background:linear-gradient(135deg,#0b4a38,#0e6b52 55%,#17a06f);
  color:#fff;border-radius:20px;padding:22px 24px;margin-bottom:20px;overflow:hidden;box-shadow:var(--shadow)}
header::before{content:"";position:absolute;inset:0;background:
  radial-gradient(400px circle at 85% -20%,rgba(255,255,255,.16),transparent 60%),
  radial-gradient(300px circle at -10% 120%,rgba(232,163,61,.18),transparent 55%)}
.hero-brand{position:relative;display:flex;align-items:center;gap:14px}
.logo{width:54px;height:54px;border-radius:14px;background:rgba(255,255,255,.16);
  border:1px solid rgba(255,255,255,.3);display:flex;align-items:center;justify-content:center;font-size:30px}
/* 页头/登录页品牌图标（用官方 logo，按容器等比缩放） */
.logo-img{width:54px;height:54px;border-radius:14px;background:#fff;padding:3px;
  box-shadow:0 2px 10px rgba(0,0,0,.18);object-fit:contain;flex:none}
.hero-title{font-size:23px;font-weight:800;letter-spacing:.5px}
.hero-sub{font-size:13px;opacity:.94;margin-top:3px}
.hero-chips{position:relative;margin-top:14px;display:flex;gap:8px;flex-wrap:wrap;align-items:center;font-size:12px}
.hero-chip{background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.28);border-radius:16px;
  padding:4px 11px;font-weight:600}
.hero-chip.dot::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;
  background:#7CF9C2;margin-right:6px;box-shadow:0 0 6px #7CF9C2}
.hero-token{margin-left:auto;display:flex;align-items:center;gap:6px;color:rgba(255,255,255,.9)}
.hero-token input{width:130px;padding:5px 9px;border:1px solid rgba(255,255,255,.4);border-radius:8px;
  background:rgba(255,255,255,.14);color:#fff;font-size:12px}
.hero-token input::placeholder{color:rgba(255,255,255,.55)}

.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px 20px;
  margin-bottom:18px;box-shadow:var(--shadow)}
.card h2{margin:0 0 12px;font-size:17px;font-weight:800;color:var(--brand);display:flex;align-items:center;gap:8px}
.card h2::before{content:"";width:4px;height:18px;background:linear-gradient(var(--brand),var(--brand2));border-radius:3px}
.lbl{font-size:13px;color:var(--sub);font-weight:600;margin:12px 0 7px}
.lbl:first-of-type{margin-top:2px}

textarea,select,input[type=number]{border:1px solid var(--line);border-radius:10px;padding:10px 12px;
  font-size:14px;font-family:inherit;background:#fbfdfc;color:var(--ink)}
textarea{width:100%;min-height:96px;line-height:1.6;resize:vertical}
textarea:focus,select:focus,input:focus{outline:none;border-color:var(--brand2);box-shadow:0 0 0 3px rgba(18,160,111,.12)}

.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{border:1px solid var(--line);background:#fff;border-radius:20px;padding:7px 13px;font-size:13px;
  cursor:pointer;user-select:none;color:var(--sub);transition:all .15s}
.chip:hover{border-color:var(--brand2);color:var(--brand)}
.chip.on{background:var(--brand);color:#fff;border-color:var(--brand);font-weight:600}

.btn{display:inline-block;background:linear-gradient(135deg,var(--brand),var(--brand2));color:#fff;border:none;
  border-radius:12px;padding:12px 22px;font-size:15px;font-weight:700;cursor:pointer;margin-top:8px;
  box-shadow:0 4px 12px rgba(18,160,111,.25);transition:transform .12s,box-shadow .12s}
.btn:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(18,160,111,.3)}
.btn:active{transform:translateY(0)}
/* ★ 2026-09-12 用户要求（全站）：**点下去必须看得出来**——所有可点元素按下时变浅色 + 轻微下沉，
   不能"点了和没点一个颜色"。这里用统一规则兜底，各组件不用逐个补。 */
button:active:not(:disabled), .btn:active, .chip:active, .sub-tab:active, .mode-btn:active,
.chat-tool:active, .chat-cta:active, .chat-mini:active, .find-row:active, .learn-item:active,
.res-tag:active, .sub-tab:active, .board-card:active, .pair-card:active, .ring-row button:active,
.pay-tier:active, .qa-ex:active, .ai-ask:active{
  filter:brightness(1.18) saturate(.9) !important;
  transform:translateY(1px) !important;
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.55) !important;
  transition:filter .06s,transform .06s}
/* 深色按钮（挂断/危险操作）按下也变浅，但保持红色语义 */
.call-btn.hang:active i, .ci-btn.reject:active, .btn.danger:active{filter:brightness(1.25) !important}
/* 「已选中」状态统一：淡色底 + 描边，一眼看出当前选中项 */
.is-selected, .btn.small.is-selected{background:#e8f3ff !important;color:#1a5f92 !important;
  border:1px solid #9ec6e5 !important;box-shadow:none !important;font-weight:700}
.btn.ghost{background:#fff;color:var(--brand);border:1px solid var(--brand)}
.btn.small{font-size:13px;padding:8px 14px;margin-top:0;box-shadow:none}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}

.alert{background:#fdf1ef;border:1px solid #f1c7c0;color:var(--red);border-radius:12px;padding:12px 14px;
  font-size:14px;margin:10px 0;line-height:1.6}
.alert.warn{background:#fdf8ec;border-color:#eddfb4;color:var(--amber)}

.res-item{border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin-bottom:12px;background:#fff}
.res-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;flex-wrap:wrap}
.res-name{font-size:16px;font-weight:800}
.res-tag{font-size:11px;font-weight:600;background:#e8f5ef;color:var(--brand);border-radius:10px;padding:3px 8px;margin-left:6px}
.res-tag.fad{background:#fde9e7;color:var(--red)}
.conf{height:8px;background:#eef2f0;border-radius:6px;margin:9px 0;overflow:hidden}
.conf>i{display:block;height:100%;background:linear-gradient(90deg,var(--brand2),var(--brand));border-radius:6px}
.meta{font-size:13px;color:var(--sub)}
.seg{font-size:14px;margin:8px 0;line-height:1.6}
.seg b{color:var(--ink)}
.seg b::after{content:" "}
.toggle{font-size:13px;color:var(--blue);cursor:pointer;margin-top:6px;display:inline-block;font-weight:600}
.detail{display:none;margin-top:10px;border-top:1px dashed var(--line);padding-top:10px}
.detail.show{display:block}
.matchkeys{font-size:12px;color:var(--brand)}
.search-hit{background:#fafdfb;border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:8px 0;
  font-size:13px;line-height:1.55}
.search-hit b{color:var(--brand)}

.photo-zone{border:2px dashed #c4d6ce;border-radius:14px;padding:26px;text-align:center;color:var(--sub);
  font-size:14px;cursor:pointer;background:#fafdfc;transition:all .15s}
.photo-zone.over{border-color:var(--brand2);background:#edf8f3}
.preview{max-width:190px;max-height:150px;border-radius:10px;margin-top:10px;border:1px solid var(--line);
  object-fit:cover}
.note{font-size:12px;color:var(--sub);margin-top:6px;line-height:1.5}
.footer{font-size:12px;color:var(--sub);text-align:center;padding:18px;line-height:1.8}
.spin{display:inline-block;width:16px;height:16px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;
  border-radius:50%;animation:sp 1s linear infinite;vertical-align:middle;margin-right:6px}
@keyframes sp{to{transform:rotate(360deg)}}

.modes{display:flex;gap:8px;margin-bottom:16px;background:#fff;border:1px solid var(--line);border-radius:16px;
  padding:6px;box-shadow:var(--shadow)}
.mode-btn{flex:1;border:none;background:#fff;border-radius:12px;padding:12px;font-size:15px;font-weight:700;
  color:var(--sub);cursor:pointer;transition:all .15s}
.mode-btn.on{background:linear-gradient(135deg,var(--brand),var(--brand2));color:#fff}
.learn-item{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:10px;cursor:pointer;
  background:#fff;transition:all .12s}
.learn-item:hover{border-color:var(--brand2);box-shadow:0 2px 8px rgba(18,160,111,.12);transform:translateY(-1px)}
.figrow{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin:8px 0}
.figimg{width:100%;height:150px;object-fit:cover;border:1px solid var(--line);border-radius:10px;background:#f4f7f6}
.figimg:hover{transform:scale(1.02);box-shadow:0 4px 12px rgba(0,0,0,.15)}

/* ---------- 猪病学习：分节 Tab + 维度图库 ---------- */
.ln-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 12px;padding-bottom:10px;
  border-bottom:1px solid var(--line)}
.ln-tab{font-size:13px;font-weight:600;color:var(--sub);background:#f4f7f6;border:1px solid var(--line);
  border-radius:20px;padding:6px 14px;cursor:pointer;transition:.16s;white-space:nowrap}
.ln-tab:hover{color:var(--brand);border-color:var(--brand2)}
.ln-tab.on{background:linear-gradient(135deg,var(--brand),var(--brand2));color:#fff;border-color:transparent;
  box-shadow:0 3px 10px rgba(14,107,82,.24)}
.ln-tab b{display:inline-block;margin-left:4px;background:rgba(255,255,255,.28);border-radius:9px;
  padding:0 6px;font-size:11px}
.ln-tab:not(.on) b{background:#e3eae6;color:var(--sub)}
.ln-body{font-size:14px;line-height:1.85;color:var(--ink)}
.ln-sec p{margin:8px 0}
.ln-sec h4{margin:16px 0 8px;font-size:14.5px;color:var(--brand);font-weight:800;
  padding-left:9px;border-left:3px solid var(--brand2)}
.ln-sec ul{margin:8px 0;padding-left:20px}
.ln-sec li{margin:4px 0}
.ln-sec blockquote{margin:10px 0;padding:9px 13px;background:#f4f7f6;border-left:3px solid var(--brand2);
  border-radius:0 8px 8px 0;color:var(--sub);font-size:13px}
.ln-sec code{background:#eef4f1;border:1px solid var(--line);border-radius:5px;padding:1px 5px;
  font-family:Consolas,Monaco,monospace;font-size:12.5px;color:var(--brand3)}
.md-t{width:100%;border-collapse:collapse;margin:10px 0;font-size:13px}
.md-t th{background:#eef4f1;color:var(--brand3);font-weight:700;text-align:left}
.md-t th,.md-t td{border:1px solid var(--line);padding:7px 10px;vertical-align:top}
.md-t tbody tr:nth-child(even){background:#fafcfb}
.ln-ghint{font-size:12.5px;color:var(--sub);margin:2px 0 14px}
.ln-dim{margin-bottom:20px}
.ln-dimhead{display:flex;align-items:center;gap:9px;margin-bottom:10px}
.ln-dimname{font-size:14px;font-weight:800;color:var(--brand3);
  padding-left:9px;border-left:3px solid var(--brand2)}
.ln-dimcount{font-size:11.5px;color:var(--sub);background:#eef4f1;border-radius:10px;padding:2px 9px}
.ln-figs{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
.ln-figcard{margin:0;background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden;
  box-shadow:var(--shadow);transition:.18s}
.ln-figcard:hover{transform:translateY(-2px);box-shadow:0 6px 18px rgba(16,44,34,.14)}
.ln-fig{width:100%;height:180px;object-fit:cover;background:#f4f7f6;cursor:zoom-in;display:block}
.ln-figcard figcaption{padding:9px 11px 11px}
.ln-cap{font-size:12.5px;line-height:1.6;color:var(--ink);font-weight:600}
.ln-src{margin-top:5px;font-size:11px;color:var(--sub);word-break:break-all}

/* ---------- 你问我答：检索来源展示 ---------- */
.qa-src{margin:10px 0 12px;padding:11px 13px;background:#f4f7f6;border:1px solid var(--line);
  border-radius:12px;border-left:3px solid var(--brand2)}
.qa-src-title{font-size:12px;font-weight:700;color:var(--brand3);margin-bottom:8px}
.qa-src-list{display:flex;flex-wrap:wrap;gap:7px}
.qa-src-item{font-size:11.5px;color:var(--ink);background:#fff;border:1px solid var(--line);
  border-radius:14px;padding:3px 10px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qa-src-item b{color:var(--brand);margin-right:5px;font-weight:700}

/* ---------- 鉴别诊断展示（三板块统一视觉） ---------- */
.diff-box{margin:12px 0;padding:12px 14px;background:#fdf8ee;border:1px solid #f0e0c0;
  border-left:3px solid var(--accent);border-radius:12px}
.diff-title{font-size:13px;font-weight:800;color:var(--amber);margin-bottom:8px}
.diff-primary{font-size:13px;font-weight:700;color:var(--brand3);margin-bottom:8px}
.diff-tbl{width:100%;border-collapse:collapse;font-size:12.5px;margin-bottom:8px}
.diff-tbl th{background:#faf1e0;color:var(--amber);font-weight:700;text-align:left}
.diff-tbl th,.diff-tbl td{border:1px solid #f0e0c0;padding:6px 9px;vertical-align:top}
.diff-note{font-size:12px;color:var(--sub);line-height:1.7;margin-top:4px}

/* ---------- 我的病例库 ---------- */
.case-savebar{background:linear-gradient(180deg,#fffaf0,#fff)}
.case-savebar input{border:1px solid var(--line);border-radius:9px;padding:8px 10px;font-size:13px}
#caseList .learn-item{border-left:3px solid var(--accent)}
#caseDetail .card{margin-top:16px}
#caseDetail h1{font-size:17px;color:var(--brand3);margin:6px 0 10px}
#caseDetail h2{font-size:15px;color:var(--brand);margin:14px 0 6px;
  padding-left:8px;border-left:3px solid var(--brand2)}
#caseDetail table{width:100%;border-collapse:collapse;font-size:12.5px;margin:8px 0}
#caseDetail th{background:#eef4f1;color:var(--brand3);text-align:left}
#caseDetail th,#caseDetail td{border:1px solid var(--line);padding:6px 9px;vertical-align:top}
#caseDetail img{max-width:100%;border-radius:8px;margin:6px 0;border:1px solid var(--line)}
@media (max-width:640px){
  .ln-figs{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
  .ln-fig{height:130px}
  .ln-tab{font-size:12.5px;padding:5px 11px}
}
.tbl-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px;margin-top:6px}
table.cmp{border-collapse:collapse;width:100%;font-size:12.5px;line-height:1.5}
table.cmp th{background:#eef6f2;color:var(--brand3);text-align:left;padding:9px 10px;font-weight:700;
  border-bottom:2px solid var(--brand);white-space:nowrap;position:sticky;top:0}
table.cmp td{padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:top;min-width:120px}
table.cmp tr:nth-child(even) td{background:#fbfdfc}
table.cmp tr:hover td{background:#eef8f3}
table.cmp td.cname{font-weight:700;color:var(--brand);white-space:nowrap}

.lightbox{position:fixed;inset:0;background:rgba(10,14,13,.92);z-index:999;display:flex;
  align-items:center;justify-content:center;user-select:none}
.lb-img{max-width:92vw;max-height:90vh;object-fit:contain;border-radius:8px;background:#111;
  box-shadow:0 12px 40px rgba(0,0,0,.5);cursor:zoom-in;transition:transform .2s}
.lb-img.zoomed{transform:scale(1.9);cursor:zoom-out}
.lb-btn{position:absolute;background:rgba(255,255,255,.14);color:#fff;border:none;border-radius:12px;
  width:52px;height:52px;font-size:26px;cursor:pointer;z-index:1000}
.lb-btn:hover{background:rgba(255,255,255,.3)}
.lb-close{top:18px;right:20px;font-size:22px}
.lb-prev{left:18px;top:50%;transform:translateY(-50%)}
.lb-next{right:18px;top:50%;transform:translateY(-50%)}
.lb-cap{position:absolute;bottom:18px;left:0;right:0;text-align:center;color:#fff;font-size:14px;
  text-shadow:0 1px 4px #000;padding:0 60px}
@media(max-width:600px){.lb-btn{width:44px;height:44px;font-size:22px}.lb-img{max-width:96vw;max-height:84vh}}

.login-wrap{position:fixed;inset:0;z-index:2000;background:rgba(10,20,17,.55);backdrop-filter:blur(3px);
  display:flex;align-items:center;justify-content:center;padding:20px}
.login-card{position:relative;width:100%;max-width:400px;background:#fff;border-radius:20px;padding:26px 24px;
  box-shadow:0 20px 60px rgba(0,0,0,.35)}
/* 手机端：所有弹层（登录/设置密码/安装/分享…）必须完整可见、可滚动，不超屏、不裁切
   （用户 2026-09-13 截图反馈：手机上「设置登录密码」被裁切、要点到屏幕外才能看全） */
@media (max-width:640px){
  .login-wrap{align-items:flex-start;padding:10px 8px}
  .login-card{max-width:none !important;width:100% !important;border-radius:14px;padding:16px 14px;
    max-height:calc(100vh - 20px);overflow:auto;-webkit-overflow-scrolling:touch}
  .login-card h3{font-size:16px;line-height:1.35;white-space:normal}
  .login-card .row{flex-wrap:wrap}
  .login-card .row > input{min-width:0 !important;width:100% !important;flex:1 1 100%}
  .login-card .row > button{flex:1 1 45%}
}
/* 关闭按钮：允许"先浏览、稍后再注册"（用户 2026-09-11 要求） */
.login-close{position:absolute;right:12px;top:10px;width:34px;height:34px;border:none;background:#f2f5f3;
  color:#7b8a84;font-size:16px;line-height:1;border-radius:50%;cursor:pointer}
.login-close:hover{background:#e6ece9;color:#3d4a45}
.login-skip{cursor:pointer;color:var(--brand);font-weight:600}
.login-skip:hover{text-decoration:underline}
.login-entry{color:var(--brand);font-weight:700}
/* QQ 式等级：图标串（一排，突出显示）+ 等级号 */
.qq-level{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:6px 0 4px}
.qq-icons{font-size:22px;letter-spacing:1px;line-height:1.1}
.qq-lv{font-weight:700;color:var(--brand3);font-size:13px}
.badge.rare{border-color:#e0b64a;background:#fffaf0}
.badge.epic{border-color:#c88ae0;background:#fbf5fd}

/* ==================== 💬 站内消息（QQ / 微信式对话） ==================== */
.chat-fab{position:fixed;right:18px;bottom:86px;z-index:1800;width:52px;height:52px;border-radius:50%;
  background:linear-gradient(160deg,var(--brand2),var(--brand));color:#fff;font-size:24px;line-height:52px;
  text-align:center;cursor:pointer;box-shadow:0 8px 24px rgba(10,70,52,.35)}
.chat-fab:hover{transform:translateY(-2px)}
.chat-badge{position:absolute;top:-4px;right:-4px;min-width:20px;height:20px;border-radius:10px;background:#e5484d;
  color:#fff;font-size:11px;line-height:20px;text-align:center;padding:0 5px;font-weight:700}
.chat-panel{position:fixed;right:18px;bottom:150px;z-index:1900;width:720px;max-width:calc(100vw - 24px);
  height:min(560px,calc(100vh - 180px));background:#fff;border:1px solid var(--line);border-radius:16px;
  box-shadow:0 24px 60px rgba(0,0,0,.28);display:flex;flex-direction:column;overflow:hidden}
.chat-head{display:flex;align-items:center;gap:8px;padding:10px 12px;background:linear-gradient(160deg,var(--brand2),var(--brand));color:#fff}
.chat-head .meta{color:rgba(255,255,255,.9);font-size:12px}
.chat-x{margin-left:auto;cursor:pointer;font-size:16px;opacity:.9}
.chat-body{flex:1;display:flex;min-height:0}
.chat-list{width:232px;border-right:1px solid var(--line);display:flex;flex-direction:column;background:#f8fbf9}
.chat-search{display:flex;gap:6px;padding:8px}
.chat-search input{flex:1;min-width:0}
#chatThreads{flex:1;overflow:auto;padding:4px 6px 10px}
.chat-item{display:flex;gap:8px;align-items:center;padding:8px;border-radius:10px;cursor:pointer}
.chat-item:hover{background:#eef7f2}
.chat-item.on{background:#e3f3ea}
.chat-item .nm{font-weight:600;font-size:13px}
.chat-item .tg{font-size:11px;color:var(--sub)}
.chat-item .un{margin-left:auto;background:#e5484d;color:#fff;border-radius:9px;font-size:11px;padding:1px 6px}
.chat-main{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0}
.chat-peer{padding:8px 12px;border-bottom:1px solid var(--line);font-size:12px;color:var(--sub);background:#fff}
.chat-peer b{color:var(--brand3)}
/* ★ 2026-09-12 用户要求：聊天窗默认就是"两个人的对话"，不再把"所有聊过的人"摆在一个界面里。
   进入对话态（.m-conv）后隐藏左侧联系人列表；电脑端与手机端同一套规则。
   想换人时点对话窗左上角的「← 联系人」。 */
.chat-panel.m-conv .chat-list{display:none !important}
.chat-panel.m-conv .chat-main{display:flex !important}
.chat-panel.m-conv .m-back{display:inline-flex !important;align-items:center;justify-content:center;
  height:28px;padding:0 10px;border-radius:14px;background:rgba(255,255,255,.30);cursor:pointer;
  margin-right:6px;white-space:nowrap;font-size:12.5px}
.chat-panel.m-conv .m-back:hover{background:rgba(255,255,255,.5)}
/* min-height:0 是关键：否则长回答会把消息区撑高、把输入框挤出面板（用户反馈"回复一句后没法继续问"的根因） */
.chat-msgs{flex:1;min-height:0;overflow:auto;padding:12px;background:#f4f7f5;overscroll-behavior:contain}
.chat-empty{margin:auto;color:var(--sub);font-size:13px;text-align:center;padding:20px}
.msg-row{display:flex;margin:8px 0}
.msg-row.mine{justify-content:flex-end}
.msg-card{max-width:76%}
.msg-who{font-size:11px;color:var(--sub);margin:0 0 3px 2px}
/* ★ 2026-09-12 QQ 式私聊窗：
   ① 只把最近 N 条留在窗口里（更早的点「查看更早」按需展开），不再把所有记录堆在一个界面；
   ② 每条消息带头像（对方在左、我在右，像 QQ 那样一眼看出是谁说的）；
   ③ 顶部一条「对话双方」信息条，明确显示这两个人的身份。 */
.msg-row.mine{flex-direction:row-reverse}
.msg-av{width:30px;height:30px;flex:0 0 auto;margin:0 6px}
.msg-av img{width:30px;height:30px;border-radius:7px;border:1px solid #d9e8f5;background:#e8f2fa;display:block}
.msg-av .msg-av-emoji{width:30px;height:30px;border-radius:7px;border:1px solid #d9e8f5;background:#e8f2fa;
  display:flex;align-items:center;justify-content:center;font-size:16px}
.chat-more{text-align:center;margin:4px 0 10px}
.chat-more button{border:1px solid #cfe0ee;background:#f7fbff;color:#2c5f86;border-radius:14px;
  padding:4px 12px;font-size:12px;cursor:pointer}
.chat-more button:hover{background:#e9f4ff}
.chat-pair{display:flex;gap:8px;padding:6px 10px;background:#f2f8fd;border-bottom:1px solid #dbe9f5}
.chat-pair .pair-card{flex:1 1 0;min-width:0;display:flex;align-items:center;gap:6px;
  background:#fff;border:1px solid #d9e8f5;border-radius:8px;padding:5px 7px;cursor:pointer}
.chat-pair .pair-card.me{background:#f0fbf5;border-color:#cbe9d9}
.chat-pair .pair-card:hover{filter:brightness(.98)}
.chat-pair .pair-av{width:26px;height:26px;border-radius:6px;flex:0 0 auto;background:#e8f2fa}
.chat-pair .pair-txt{min-width:0;line-height:1.25}
.chat-pair .pair-nm{font-size:12.5px;font-weight:700;color:#16324a;white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis;display:flex;align-items:center;gap:3px}
.chat-pair .pair-tg{font-size:11px;color:#5b7b93;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.msg-bubble{background:#fff;border:1px solid var(--line);border-radius:12px 12px 12px 4px;padding:8px 10px;
  font-size:13.5px;line-height:1.6;white-space:pre-wrap;word-break:break-word}
.msg-row.mine .msg-bubble{background:#d9f2e5;border-color:#bfe6d3;border-radius:12px 12px 4px 12px}
.msg-at{font-size:10.5px;color:#9aa8a2;margin-top:3px;text-align:right}
.chat-foot{display:flex;gap:8px;padding:10px 12px;border-top:1px solid var(--line);background:#fff}
.chat-foot input{flex:1}
.chat-typing{padding:4px 12px;font-size:12px;color:var(--brand3);background:#f0f7f3}
.chat-foot{flex-direction:column;gap:6px}
.chat-tools{display:flex;gap:6px;flex-wrap:wrap}
.chat-tool{border:1px solid var(--line);background:#f8fbf9;color:#37564a;border-radius:8px;padding:4px 10px;font-size:13px;cursor:pointer;line-height:1.4}
.chat-tool:hover{background:#eef7f2}
.chat-tool.rec{background:#ffe9e6;border-color:#f3b6ad;color:#c0392b}
.chat-inputrow{display:flex;gap:8px}
.chat-inputrow input{flex:1}
.chat-rec{display:flex;align-items:center;gap:8px;font-size:12px;color:#c0392b}
.chat-rec .meta{color:var(--sub)}
.rec-dot{width:9px;height:9px;border-radius:50%;background:#e5484d;display:inline-block;animation:recblink 1s infinite}
@keyframes recblink{0%,100%{opacity:1}50%{opacity:.2}}
.msg-img{max-width:210px;max-height:210px;border-radius:10px;display:block}
.msg-video{max-width:250px;max-height:210px;border-radius:10px;display:block;background:#000}
.msg-bubble audio{width:210px;max-width:100%}
.msg-cap{font-size:11.5px;color:#4b6157;margin-top:4px;line-height:1.5;word-break:break-word}
.msg-cap[data-text]{cursor:pointer;text-decoration:underline dotted}
.file-bubble .file-link{display:flex;gap:8px;align-items:center;text-decoration:none;color:#274a3c}
.file-bubble .file-ico{font-size:22px}
.gift-bubble{text-align:center;background:#fff8ee;border-color:#f2dcbb}
.gift-big{font-size:34px;display:block;line-height:1.2}
.gift-name{font-size:12.5px;font-weight:600;color:#9a6b18;margin-top:2px}
.gift-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:4px 6px}
.gift-btn{display:flex;flex-direction:column;align-items:center;gap:1px;border:1px solid var(--line);background:#fff;border-radius:10px;padding:8px 4px;cursor:pointer;font-size:19px}
.gift-btn b{font-size:12px;color:#274a3c;font-weight:600}
.gift-btn span{font-size:11px;color:var(--sub)}
.gift-btn:hover{background:#f2faf5;border-color:#bfe6d3}
.gift-btn.no{opacity:.45;cursor:not-allowed}
.card-bubble{cursor:pointer;border-left:3px solid var(--brand);background:#f7fbf9}
.card-kicker{font-size:11px;color:var(--brand3);margin-bottom:2px}
.card-title{font-size:13.5px;font-weight:600;color:#1e4034;line-height:1.5}
.card-thumb{max-width:190px;border-radius:8px;margin-top:5px;display:block}
.music-bubble{display:flex;gap:8px;align-items:flex-start;background:#f6f4ff;border-color:#ddd6f5;min-width:170px}
.music-bubble .mus-ico{font-size:22px}
.music-bubble .mus-audio{width:100%;max-width:250px;margin-top:5px;height:34px}
.mus-badge{font-size:10.5px;color:#1a5f92;background:#e7f1fa;border:1px solid #bcd9ef;border-radius:8px;padding:0 5px}
.mus-links{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.mus-links button{font-size:12px;border:1px solid #bcd9ef;background:#f2f8fe;color:#1a5f92;
  border-radius:12px;padding:2px 10px;cursor:pointer}
.mus-links button:hover{background:#e0effc}
.chat-msg-actions{font-size:11px;margin-top:2px;color:var(--sub)}
.chat-tool.locked{opacity:.5;position:relative}
.chat-tool.locked::after{content:"🔒";position:absolute;top:-5px;right:-4px;font-size:10px}
.chat-mytier{color:#1e6b4c;font-weight:600}
.tier-card{background:#fff;border:1px solid var(--line);border-radius:10px;margin:6px;padding:8px 10px}
.tier-me{font-size:14px;color:#1e4034;margin-bottom:4px}
.tier-sec{margin:8px 0 4px;font-size:12px;font-weight:700;color:var(--brand3);border-bottom:1px dashed var(--line);padding-bottom:2px}
.tier-row{display:flex;align-items:center;gap:6px;padding:4px 2px;border-bottom:1px dashed #eef2f0}
.tier-row .tier-ico{width:20px;text-align:center}
.tier-row .tier-nm{flex:1;font-size:12.5px;color:#274a3c}
.tier-row .tier-tag{font-size:11px;color:#1e6b4c}
.tier-row.locked .tier-nm{color:#8a9891}
.tier-row.locked .tier-tag{color:#a4761f}
.chat-mode{margin-left:8px;display:inline-flex;border:1px solid rgba(255,255,255,.45);border-radius:8px;overflow:hidden}
.chat-mode span{padding:1px 10px;font-size:12px;cursor:pointer;color:rgba(255,255,255,.85)}
.chat-mode span.on{background:rgba(255,255,255,.92);color:var(--brand3);font-weight:700}
.chat-sec{font-size:11.5px;font-weight:700;color:var(--brand3);padding:6px 8px 2px;border-bottom:1px dashed var(--line);margin:2px 4px 4px}
.chat-item .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-item .tg{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-mini{display:inline-flex;align-items:center;justify-content:center;margin-left:4px;
  width:18px;height:18px;border-radius:50%;background:linear-gradient(160deg,#5ac8f5,#1a8fd0);
  color:#fff;font-size:11px;line-height:1;cursor:pointer;vertical-align:middle;
  box-shadow:0 1px 2px rgba(0,0,0,.18);transition:transform .12s}
.chat-mini:hover{transform:scale(1.18);box-shadow:0 2px 6px rgba(26,143,208,.5)}
/* 验证码按钮倒计时态（浅色 + 不可点 + 显示秒数） */
.btn.cooldown,.btn.cooldown:disabled{background:#e9efea !important;border-color:#d6e0d9 !important;
  color:#8a9a92 !important;cursor:not-allowed !important;box-shadow:none !important;opacity:.85;font-weight:400}
.btn.cooldown:hover{transform:none !important}
/* 个人中心：右上角头像 + 弹出面板 */
.hero-avatar{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;
  background:linear-gradient(160deg,#ffe6a8,#e8b545);color:#6b4a06;font-size:15px;cursor:pointer;
  box-shadow:0 2px 6px rgba(0,0,0,.28);border:1px solid rgba(255,255,255,.65);vertical-align:middle}
.hero-avatar:hover{transform:scale(1.08)}
.me-panel{position:fixed;inset:0;z-index:2600;background:rgba(8,26,20,.45);display:flex;
  align-items:flex-start;justify-content:center;padding:56px 14px 20px;overflow:auto}
.me-card{width:min(860px,100%);background:#fff;border-radius:14px;box-shadow:0 18px 50px rgba(0,0,0,.4);
  overflow:hidden;border:1px solid var(--line)}
.me-head{display:flex;gap:10px;align-items:center;padding:12px 16px;color:#fff;
  background:linear-gradient(160deg,var(--brand2),var(--brand))}
.me-head .meta{color:rgba(255,255,255,.9)}
.me-avatar{width:40px;height:40px;border-radius:50%;background:linear-gradient(160deg,#ffe6a8,#e8b545);
  color:#6b4a06;display:inline-flex;align-items:center;justify-content:center;font-size:22px}
.me-body{padding:12px 16px 18px;max-height:calc(100vh - 160px);overflow:auto}
.me-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:4px 0 10px}
.me-stat{border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:#f8fbf9}
.me-stat span{display:block;font-size:11.5px;color:var(--sub)}
.me-stat b{font-size:15px;color:#1e4034}
.kc-row{display:flex;gap:10px;align-items:flex-start;border:1px solid #e5d9b8;background:#fffdf6;
  border-radius:12px;padding:10px;margin-bottom:10px}
.kc-img{width:86px;height:108px;border-radius:8px;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.18)}
.kc-img:hover{transform:scale(1.03)}
.kc-txt b{font-size:13.5px;color:#6b4a06}
.kc-txt .meta{color:#7a6a44}
/* 通话浮层（不自建媒体服务器：浏览器 WebRTC 点对点，服务器只中继信令）
   2026-09-13 重排（用户反馈"聊天信息有点乱"）：改为微信/QQ 三明治结构——
   ① 顶栏一行（类型图标 + 昵称 + 状态/时长，右侧小按钮）；② 中部画面（语音通话时显示大头像）；
   ③ 底部一排圆形按钮（挂断=红色），隐私提示压成单行小字不再竖排换行。 */
.call-panel{position:fixed;right:18px;bottom:110px;z-index:2600;width:min(680px,calc(100vw - 24px));
  display:flex;flex-direction:column;
  background:#0d1522;border:1px solid #2c4a6b;border-radius:14px;box-shadow:0 18px 46px rgba(0,0,0,.55);overflow:hidden}
.call-head{display:flex;align-items:center;gap:8px;padding:8px 12px;color:#fff;min-width:0;
  background:linear-gradient(180deg,#2f6ea8,#17456f)}
.call-head .call-kind{font-size:18px;line-height:1;flex:0 0 auto}
.call-head-txt{display:flex;flex-direction:column;min-width:0;flex:1 1 auto;line-height:1.25;text-align:left}
.call-head-txt b{font-size:15px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.call-head-txt .call-sub{font-size:12px;color:#cfe6ff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.call-stage{display:flex;flex-direction:column;flex:1 1 auto;min-height:0}
.call-videos{position:relative;background:#000;height:min(56vh,420px);flex:1 1 auto;min-height:180px}
/* ★ 2026-09-12 修复「手机端视频通话只显示一半、下面一大片黑」：
   主画面改成绝对定位铺满容器（此前 height:100% 落在 height:auto 的父层里会退化成视频原始高度，
   于是画面只占上面一条、下面留黑——实测手机端容器 388×698、视频元素却只有 388×279）。
   缩略图再用 left/top:auto + right/bottom 覆盖成角上小窗；互换时两者角色对调。 */
.call-videos video{position:absolute;left:0;top:0;width:100%;height:100%;object-fit:cover;background:#000;display:block}
#callLocal{left:auto;top:auto;right:10px;bottom:10px;width:26%;height:auto;max-height:40%;object-fit:cover;
  border:2px solid rgba(255,255,255,.7);border-radius:10px;background:#111;z-index:3}
#callRemote,#callLocal{cursor:pointer}
/* 纯语音通话：隐藏视频，显示大头像 + 「语音通话中」+ 时长（微信语音通话观感） */
.call-audio-face{display:none;position:absolute;inset:0;flex-direction:column;align-items:center;
  justify-content:center;gap:10px;color:#eaf4ff}
.call-panel.audio-mode .call-videos video{display:none !important}
.call-panel.audio-mode .call-videos{background:radial-gradient(circle at 50% 32%,#1d4970,#0a1522 72%)}
.call-panel.audio-mode .call-audio-face{display:flex}
.call-panel.audio-mode #ctlCam,.call-panel.audio-mode #ctlSwitch{display:none}
.caf-ring{width:112px;height:112px;border-radius:50%;background:#1f3d5c;display:flex;align-items:center;
  justify-content:center;font-size:52px;animation:cipulse 1.8s infinite}
.caf-name{font-size:17px;font-weight:700}
.caf-tip{color:#9fbbd6;font-size:12px}
/* 底部一排圆形按钮（挂断红色 / 接听绿色 / 关闭态红色） */
.call-btns{display:flex;align-items:flex-start;justify-content:center;gap:16px;padding:10px 12px 8px;
  background:#132132;flex-wrap:wrap}
.call-btn{border:0;background:transparent;color:#dceaf7;cursor:pointer;display:flex;flex-direction:column;
  align-items:center;gap:3px;font-size:11px;min-width:54px;padding:0}
.call-btn i{width:46px;height:46px;border-radius:50%;background:#24506f;display:flex;align-items:center;
  justify-content:center;font-size:20px;font-style:normal;transition:filter .15s,transform .1s}
.call-btn:hover i{filter:brightness(1.15)}
.call-btn:active i{transform:scale(.94)}
.call-btn.off i{background:#c0392b}
.call-btn.hang i{background:#e2574f}
.call-btn.ok i{background:#2eb573}
.call-btn span{white-space:nowrap}
.call-tip{padding:0 12px 9px;background:#132132;color:#8fb0cc;font-size:11px;text-align:center;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 通话：全屏 / 大小画面互换 / 拖拽改尺寸（对齐 QQ、微信的通话窗体验） */
.call-panel.call-full{left:0;top:0;right:0;bottom:0;width:auto;max-width:none;height:auto;
  border-radius:0;border:0;z-index:3300}
.call-panel.call-full .call-videos{height:auto;min-height:0}
.call-panel.call-full .call-head{padding:10px 16px}
.call-panel.call-full .call-btns{padding:12px 16px 10px;gap:22px}
.call-panel.call-swapped #callRemote{left:auto;top:auto;right:10px;bottom:10px;width:26%;height:auto;max-height:40%;
  border:2px solid rgba(255,255,255,.75);border-radius:10px;z-index:4}
.call-panel.call-swapped #callLocal{left:0;top:0;right:auto;bottom:auto;width:100%;height:100%;
  max-height:none;border:0;border-radius:0;z-index:2}   /* max-height:none 必须写，否则被缩略图的 40% 上限卡住 */
.call-resize{position:absolute;right:0;bottom:0;width:20px;height:20px;z-index:6;cursor:nwse-resize;
  background:linear-gradient(135deg,rgba(0,0,0,0) 46%,#6fa9d6 46%,#9fd0ff 100%);
  border-bottom-right-radius:12px}
.call-resize:hover{filter:brightness(1.2)}
/* 全屏来电卡片（移动端友好，QQ/微信风格） */
.call-incoming{position:fixed;inset:0;z-index:3500;color:#fff;text-align:center;padding:26px 20px;
  background:linear-gradient(160deg,#14304d 0%,#0a1522 60%,#07101a 100%);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px}
.ci-avatar{width:104px;height:104px;border-radius:50%;background:#1f3d5c;display:flex;align-items:center;
  justify-content:center;font-size:48px;animation:cipulse 1.5s infinite}
@keyframes cipulse{0%{box-shadow:0 0 0 0 rgba(120,200,255,.55)}70%{box-shadow:0 0 0 22px rgba(120,200,255,0)}100%{box-shadow:0 0 0 0 rgba(120,200,255,0)}}
.ci-name{font-size:22px;font-weight:700;margin-top:8px}
.ci-sub{color:#9fbbd6;font-size:13px}
.ci-btns{display:flex;gap:36px;margin-top:22px}
.ci-btn{border:0;border-radius:50%;width:78px;height:78px;color:#fff;cursor:pointer;font-size:24px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  box-shadow:0 10px 24px rgba(0,0,0,.4)}
.ci-btn span{font-size:12px}
.ci-btn.accept{background:linear-gradient(180deg,#2eb573,#1d8c58)}
.ci-btn.reject{background:linear-gradient(180deg,#e2574f,#c0392b)}
.ci-btn:hover{filter:brightness(1.08)}
.ci-tip{color:#7d93a5;font-size:12px;margin-top:16px;max-width:420px;line-height:1.6}
/* 铃音选择（QQ 经典「滴滴」等）：可试听、设为默认、静音 */
.ring-box{position:fixed;inset:0;z-index:3600;background:rgba(8,16,26,.55);display:flex;
  align-items:center;justify-content:center;padding:16px}
.ring-card{width:min(430px,100%);max-height:86vh;display:flex;flex-direction:column;
  background:#fff;border-radius:14px;overflow:hidden;box-shadow:0 20px 50px rgba(0,0,0,.4)}
.ring-head{display:flex;align-items:center;gap:8px;padding:11px 14px;color:#fff;
  background:linear-gradient(180deg,#2f6ea8,#17456f)}
.ring-body{flex:1 1 auto;min-height:0;overflow:auto;padding:10px 12px}
.ring-foot{padding:9px 12px;border-top:1px solid #e8eef4;display:flex;gap:10px;align-items:center}
.ring-foot .meta{flex:1;color:#5b7b93;font-size:12px}
.ring-row{display:flex;align-items:center;gap:10px;padding:9px 10px;border:1px solid #e3edf5;
  border-radius:10px;margin-bottom:7px;background:#fff}
.ring-row.on{border-color:#3f8fd0;background:#f2f9ff}
.ring-nm{flex:1;font-size:13.5px;font-weight:600;color:#16324a}
.ring-nm .meta{font-weight:400;color:#6b8aa3;font-size:12px}
/* 通话中控制按钮 */
.call-ctl{border:1px solid #3b6a97;background:#17314a;color:#dceaf7;border-radius:8px;
  padding:4px 10px;font-size:12px;cursor:pointer;white-space:nowrap}
.call-ctl:hover{background:#1f4266}
.call-ctl.off{background:#c0392b;border-color:#e2574f;color:#fff}
/* 窗口通用：标题栏可拖、置顶高亮、最小化只留标题条 */
.win-head{cursor:move;user-select:none;-webkit-user-select:none;touch-action:none}
.win-head input,.win-head textarea,.win-head button,.win-head .chat-mode span{cursor:auto}
.win-btns{margin-left:6px;display:inline-flex;gap:4px;align-items:center}
.win-btn{width:20px;height:20px;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;
  font-size:12px;line-height:1;background:rgba(255,255,255,.28);cursor:pointer;color:#fff}
.win-btn:hover{background:rgba(255,255,255,.55)}
.win-dragging{opacity:.94}
.win-pinned{box-shadow:0 0 0 2px #ffd166, 0 18px 46px rgba(0,0,0,.5) !important}
.win-min{height:auto !important;min-height:0 !important;max-height:none !important;
  width:auto !important;min-width:200px;max-width:calc(100vw - 20px)}
.win-min .chat-body,.win-min .chat-main,.win-min .chat-foot,
.win-min .call-stage,.win-min .call-tip,.win-min .call-resize,.win-min .me-body{display:none !important}
.win-min .chat-head,.win-min .call-head,.win-min .me-head{border-radius:6px}
/* 一键焚毁：范围选择条 + 勾选态 */
.burn-bar{background:#fff5f4;border-bottom:1px solid #f0c9c4;padding:6px 10px;font-size:12px;color:#7a2b23}
.burn-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:2px 0}
.burn-row label{display:inline-flex;gap:3px;align-items:center;cursor:pointer}
.burn-bar input[type=date]{border:1px solid #e3b9b4;border-radius:4px;padding:1px 4px;font-size:12px}
.burn-bar .btn.small{padding:2px 10px}
.burn-row .meta{color:#9a6b64}
.burn-picking .msg-row{position:relative;padding-left:24px}
.burn-picking .msg-row::before{content:"";position:absolute;left:6px;top:50%;transform:translateY(-50%);
  width:13px;height:13px;border:1.5px solid #c0392b;border-radius:3px;background:#fff;cursor:pointer}
.burn-picking .msg-row.burn-sel::before{background:#c0392b;box-shadow:inset 0 0 0 2px #fff}
.burn-picking .msg-row.burn-sel .msg-bubble{border-color:#c0392b !important;
  box-shadow:0 0 0 2px rgba(192,57,43,.25)}
.burn-picking .msg-row{cursor:pointer}
/* 单条消息「⋯」菜单 + 撤回系统提示 + 菜单浮层 */
/* 「⋯」操作按钮：常显（手机上也要看得见），点消息本身也能弹菜单 */
.msg-op{float:right;margin-left:6px;padding:0 5px;border-radius:4px;color:#5b7b93;cursor:pointer;
  font-size:14px;line-height:1.1;opacity:.9;border:1px solid #dbe7f0;background:#f4f9fd}
.msg-op:hover{background:#e6eef5;color:#1a5f92;opacity:1}
.chat-tool.danger{color:#c0392b;border-color:#f0c2bc;background:#fff5f4}
.chat-tool.danger:hover{background:#ffe9e6}
.qq-toolbar span[onclick="burnOpen()"]{color:#c0392b;font-weight:700}
.msg-sys{justify-content:center;margin:6px 0}
.msg-sys-text{font-size:11.5px;color:#8b9aa5;background:#f0f3f5;border-radius:10px;padding:2px 10px}
.msg-menu{position:fixed;z-index:3200;background:#fff;border:1px solid #b9d6ec;border-radius:8px;
  box-shadow:0 8px 24px rgba(0,0,0,.22);padding:4px;min-width:186px}
.msg-menu button{display:block;width:100%;text-align:left;border:0;background:none;cursor:pointer;
  font-size:12.5px;padding:6px 10px;border-radius:6px;color:#20486b}
.msg-menu button:hover{background:#eaf3fb}
/* kc 身份小标（挂在昵称前，像 QQ 那样） */
.kc-chip{width:14px;height:14px;border-radius:3px;vertical-align:-2px;margin-right:3px;
  box-shadow:0 1px 2px rgba(0,0,0,.2)}
/* 猪小智：AI 门控提示条（未达等级时显示，说明只用知识库、后续可付费开通） */
.ai-gate{background:#fff8e6;border:1px solid #f0dca8;color:#8a6a1f;border-radius:8px;
  padding:8px 10px;margin:6px 4px 10px;font-size:12px;line-height:1.7}
/* 猪小智：AI 额度条（免费次数 / 余额 / 充值）+ 单次消耗提示 */
.ai-billbar{padding:0 8px}
.ai-bill{display:flex;gap:8px;align-items:center;flex-wrap:wrap;background:#f2f8fe;
  border:1px solid #bcd9ef;border-radius:8px;padding:6px 10px;margin:6px 0;font-size:12px;color:#20486b}
.ai-bill b{color:#1a5f92}
.ai-bill .meta{margin-left:auto;color:#c0392b}
.ai-bill-note{font-size:11.5px;color:#1a7a4a;background:#eefaf3;border:1px solid #bfe6d3;
  border-radius:6px;padding:2px 6px;margin-bottom:4px;display:inline-block}
/* 猪小智充值面板（阶梯 + 收款 + 密保卡） */
.pay-panel{position:fixed;inset:0;z-index:3400;background:rgba(8,26,20,.5);display:flex;
  align-items:flex-start;justify-content:center;padding:48px 14px 20px;overflow:auto}
.pay-card{width:min(660px,100%);background:#fff;border-radius:14px;overflow:hidden;
  box-shadow:0 18px 50px rgba(0,0,0,.42);border:1px solid var(--line)}
.pay-head{display:flex;align-items:center;gap:8px;padding:12px 16px;color:#fff;
  background:linear-gradient(160deg,#f0a92a,#d9822b)}
.pay-body{padding:12px 16px 18px;max-height:calc(100vh - 150px);overflow:auto}
.pay-tiers{display:flex;flex-direction:column;gap:4px;margin:6px 0}
.pay-tier{display:flex;gap:10px;align-items:center;border:1px solid #e7eef4;border-radius:8px;
  padding:5px 10px;font-size:12.5px;background:#f8fbfe}
.pay-tier.hot{border-color:#f0c987;background:#fffaf0}
.pay-tier span{flex:0 0 auto}
.pay-tier .bonus{color:#c0392b;font-weight:700;min-width:52px}
.pay-tier .meta{margin-left:auto;color:#7d93a5;font-size:11.5px}
.pay-body input{border:1px solid #cfdde8;border-radius:8px;padding:7px 10px;font-size:13px}
#genOut textarea{margin-top:6px;font-family:Consolas,Menlo,monospace;font-size:12.5px;
  border:1px solid #cfdde8;border-radius:8px;padding:6px}
/* 站长发卡：面额按钮（¥5 / ¥10 / ¥30 / ¥50 / ¥100 …） */
.pay-amounts{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0}
.pay-amt{display:flex;flex-direction:column;align-items:center;gap:1px;min-width:74px;
  border:1px solid #cfdde8;background:#f8fbfe;border-radius:8px;padding:5px 8px;cursor:pointer;
  font-size:13px;font-weight:700;color:#20486b}
.pay-amt span{font-size:10.5px;font-weight:400;color:#5b7b93}
.pay-amt:hover{border-color:#8fc0e6;background:#eef7fd}
.pay-amt.on{border-color:#f0a92a;background:#fff8ec;box-shadow:0 0 0 2px rgba(240,169,42,.25)}

/* ==================== 手机端布局（≤820px）：面板全屏 + 列表/会话二选一 + 触摸友好 ==================== */
@media (max-width: 820px) {
  /* 对话窗 & 猪小智：全屏铺满，不再被挤出屏幕 */
  .chat-panel, .ai-panel{left:0 !important; right:0 !important; top:0 !important; bottom:0 !important;
    width:auto !important; max-width:none !important; height:auto !important; max-height:none !important;
    border-radius:0 !important}
  /* ★ 2026-09-12 修复"聊天界面下面显示不齐全"：
     手机上浏览器底部工具条会盖住 100vh 的底部，导致输入框/发送/工具条被挡住。
     改用「动态视口高度 dvh」+ 底部安全区留白，并保证输入区不被压缩。 */
  .chat-panel, .ai-panel{
    height:100vh; height:100dvh; max-height:100dvh;
    padding-bottom:env(safe-area-inset-bottom, 0px)}
  /* 病例中心浮窗：手机上全屏，内容内部滚动 */
  .case-panel{left:0 !important;right:0 !important;top:0 !important;bottom:0 !important;
    width:auto !important;height:100vh;height:100dvh;max-height:100dvh;border-radius:0 !important;
    padding-bottom:env(safe-area-inset-bottom, 0px)}
  .case-body{padding:8px 10px}
  .chat-body{flex:1 1 auto; min-height:0}
  .chat-foot{flex:0 0 auto; padding-bottom:max(8px, env(safe-area-inset-bottom, 0px))}
  /* 头部太长会把内容顶下去（用户截图：站内消息/我：称号/防广告提示换行成一大块）→ 手机上压缩成一行 */
  .chat-head{padding:6px 8px; gap:5px; flex-wrap:nowrap; overflow:hidden}
  .chat-head b{font-size:13px; white-space:nowrap}
  /* #chatMeTag 就是"我：ID · 等级 · 称号"那段（手机上很长，会换行成一大块）→ 手机端隐藏，
     需要看自己身份时点右上角头像进个人中心即可。 */
  .chat-head .chat-myinfo, .chat-head .meta, .chat-head .chat-mytier,
  .chat-head #chatMeTag{display:none !important}
  #chatHead{padding:6px 8px; font-size:11.5px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
  #chatHead .meta{display:none !important}
  #chatHead b, #chatHead .kc-chip{vertical-align:middle}
  /* 工具条：18 个按钮在手机上排成一大片会挤掉输入框 → 改成单行横向滑动 */
  .chat-tools{flex-wrap:nowrap; overflow-x:auto; -webkit-overflow-scrolling:touch; padding-bottom:2px}
  .chat-tool{flex:0 0 auto}
  /* 左列表：手机上默认占满宽度；选中会话后自动隐藏，让消息区拿到全部宽度 */
  .chat-list{width:100% !important; border-right:0 !important}
  #chatThreads{max-height:none}
  .chat-main{display:none}
  .chat-panel.m-conv .chat-list{display:none !important}
  .chat-panel.m-conv .chat-main{display:flex !important}
  /* 消息区与气泡：给足宽度，长表格可横向滚动 */
  .chat-msgs{padding:8px}
  .msg-card{max-width:88%}
  .msg-av{width:26px;height:26px;margin:0 4px}
  .msg-av img,.msg-av .msg-av-emoji{width:26px;height:26px;font-size:14px}
  .chat-pair{padding:5px 8px;gap:6px}
  .chat-pair .pair-card{padding:4px 6px;gap:5px}
  .chat-pair .pair-av{width:22px;height:22px}
  .chat-pair .pair-tg{font-size:10px}
  .ai-t{display:block; overflow-x:auto}
  /* 底部工具条：按钮更大、可换行，触摸友好 */
  .chat-tools{gap:5px}
  .chat-tool{padding:7px 11px; font-size:13px; min-height:34px; display:inline-flex; align-items:center}
  .chat-foot{padding:8px 10px; gap:6px}
  .chat-inputrow input{min-height:36px; font-size:15px}
  .chat-inputrow .btn{min-height:36px; padding:0 14px}
  /* 手机上的「返回会话列表」按钮 */
  .m-back{display:inline-flex !important; align-items:center; justify-content:center;
    width:28px;height:28px;border-radius:50%;background:rgba(255,255,255,.28);cursor:pointer;margin-right:6px}
  /* 弹层：充值/个人中心 全屏可滚动 */
  .pay-panel, .me-panel{padding:10px 8px !important; align-items:flex-start !important}
  /* 卡片不超过一屏，内容在内部滚动（手机上也能看到全部选项，不会溢出屏幕） */
  .pay-card, .me-card{width:100% !important; max-width:none !important;
    max-height:calc(100vh - 20px) !important; display:flex; flex-direction:column}
  .pay-body, .me-body{flex:1 1 auto; min-height:0; overflow:auto;
    max-height:none !important; -webkit-overflow-scrolling:touch}
  .pay-tiers .pay-tier{flex-wrap:wrap; gap:6px}
  .pay-tier .meta{margin-left:0}
  /* 通话：全屏（画面占满，按钮一排贴在底部，像微信/QQ 那样；铃音等按钮不换行竖排） */
  .call-panel{left:0 !important; right:0 !important; top:0 !important; bottom:0 !important;
    width:auto !important; height:auto !important; border-radius:0 !important}
  .call-videos{flex:1 1 auto; height:auto !important; min-height:0}   /* 画面区吃满剩余高度（配合绝对定位的主画面） */
  .call-head{padding:7px 10px}
  .call-head-txt b{font-size:14px}
  .call-btns{gap:0; padding:8px 4px 6px; flex-wrap:nowrap; justify-content:space-around}
  .call-btn{flex:1 1 0; min-width:0; font-size:10px}
  .call-btn i{width:42px;height:42px;font-size:18px}
  .call-tip{font-size:10px; padding:0 8px 7px}
  .caf-ring{width:96px;height:96px;font-size:44px}
  /* 论坛/表格等在手机上可横向滑动，避免"显示不齐全" */
  .card, .board-grid, .md-t, .seg{max-width:100%}
  .md-t{display:block; overflow-x:auto; -webkit-overflow-scrolling:touch}
  .fp-body img, .msg-img, .card-thumb{max-width:100% !important; height:auto}
  /* 右下角泡泡：手机上稍微靠内，避免贴边难点 */
  .ai-fab{right:12px !important; bottom:76px !important}
}
/* 电脑版视图（手机上强制桌面布局时使用）：面板按桌面尺寸显示 */
html.force-desktop .m-back{display:none !important}
.m-back{display:none}
/* 「搜 ID 找人」入口与结果行
   ★ 2026-09-13 用户要求：页头这两个按钮不再用与深绿页头冲突的浅蓝底，
     改为"同色系玻璃"——搜 ID 找人＝品牌辅助色琥珀暖玻璃（与相邻白玻璃、绿玻璃都不同），
     我的病例＝与周围一致的白玻璃（见 .case-chip）。文字统一纯白，保证在深绿底上对比度达标。 */
.find-chip{cursor:pointer;color:#fff;background:linear-gradient(160deg,rgba(232,163,61,.34),rgba(232,163,61,.20));
  border-color:rgba(240,196,124,.62);box-shadow:0 1px 0 rgba(255,255,255,.10) inset}
.find-chip:hover{background:rgba(232,163,61,.44);border-color:rgba(245,208,150,.78)}
.find-chip:active{background:rgba(232,163,61,.52)}
.find-row{display:flex;gap:8px;align-items:center;padding:8px;border:1px solid #e3edf5;
  border-radius:10px;background:#fff;margin-bottom:6px}
.find-row:hover{background:#f4fafe;border-color:#bcd9ef}
.find-av{width:34px;height:34px;border-radius:8px;background:linear-gradient(160deg,#dff0ff,#a9d3f2);
  display:flex;align-items:center;justify-content:center;font-size:16px}
.find-nm{font-weight:700;font-size:13.5px;color:#16324a;display:flex;align-items:center;gap:2px}
.find-tg{font-size:11.5px;color:#5b7b93;margin-top:1px}
/* 在线状态小圆点（像微信那样：登录后自动在线，退出页面后仍保留 30 分钟在线） */
/* ★ 2026-09-12 病例中心改为「按钮 + 浮窗」：诊断页不再平铺"我的病例/学习墙/动态/账号"，
   点首页「📁 我的病例」按钮打开这个浮窗（可拖动/最小化/置顶/关闭，手机全屏）。 */
.case-panel{position:fixed;right:18px;bottom:150px;z-index:2100;width:min(860px,calc(100vw - 24px));
  height:min(640px,calc(100vh - 180px));display:flex;flex-direction:column;
  background:#fff;border:1px solid var(--line);border-radius:16px;
  box-shadow:0 24px 60px rgba(0,0,0,.28);overflow:hidden}
.case-head{display:flex;align-items:center;gap:6px;padding:10px 12px;color:#fff;min-width:0;
  background:linear-gradient(160deg,var(--brand2),var(--brand))}
.case-head b{font-size:14px;white-space:nowrap}
.case-body{flex:1;min-height:0;overflow:auto;padding:10px 12px;-webkit-overflow-scrolling:touch}
.case-chip{color:#fff;background:rgba(255,255,255,.17);border-color:rgba(255,255,255,.40);cursor:pointer}
.case-chip:hover{background:rgba(255,255,255,.26);border-color:rgba(255,255,255,.55)}
.case-chip:active{background:rgba(255,255,255,.32)}
.win-min .case-body{display:none !important}
.on-dot,.off-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:4px;
  vertical-align:middle;background:#c6d2da}
.on-dot{background:#22c55e;box-shadow:0 0 0 2px rgba(34,197,94,.18)}
.off-dot{background:#c6d2da}
.chat-item .on-dot{width:8px;height:8px}

/* ==================== 经典皮肤：2006 版 QQ 风格对话窗（怀旧） ==================== */
.qq-skin .chat-head{background:linear-gradient(180deg,#5eb2ea 0%,#2f8bd0 46%,#1f78bb 100%);
  border-bottom:1px solid #14588a;text-shadow:0 1px 0 rgba(0,0,0,.25)}
.qq-skin .chat-head b{font-size:14px}
.qq-skin{border:1px solid #1c6fae;border-radius:6px;box-shadow:0 10px 30px rgba(0,0,0,.35)}
.qq-skin .chat-list{width:212px;background:#f0f6fb;border-right:1px solid #b9d6ec}
.qq-skin .chat-search input{border:1px solid #9dc4e4;border-radius:2px;background:#fff}
.qq-skin .chat-search .btn{border-radius:2px}
.qq-skin #chatThreads{padding:4px 5px 10px}
.qq-skin .chat-item{border-radius:2px;padding:6px 7px;border:1px solid transparent}
.qq-skin .chat-item:hover{background:#e2f0fc;border-color:#c3ddf3}
.qq-skin .chat-item.on{background:#cfe7fb;border-color:#8fc0e6}
.qq-skin .chat-sec{color:#1a5f92;border-bottom:1px solid #c3ddf3}
.qq-skin .chat-main{background:#eef4fa}
.qq-skin .chat-peer{background:#e7f1fa;border-bottom:1px solid #b9d6ec;color:#20486b;
  box-shadow:inset 0 1px 0 #fff}
.qq-skin .chat-msgs{background:#eef4fa;padding:10px}
.qq-skin .msg-row{margin:7px 0}
.qq-skin .msg-bubble{background:#fff;border:1px solid #9ec6e5;border-radius:3px;
  box-shadow:1px 1px 0 rgba(0,0,0,.05);color:#1b2a36;font-size:13px;line-height:1.65}
.qq-skin .msg-row.mine .msg-bubble{background:#d8ecff;border-color:#7fb4dd;border-radius:3px}
.qq-skin .msg-who{color:#1a5f92;font-weight:600}
.qq-skin .msg-at{color:#7d93a5}
.qq-skin .chat-typing{background:#e7f1fa;color:#1a5f92;border-bottom:1px solid #c3ddf3}
.qq-skin .chat-foot{background:#f2f7fc;border-top:1px solid #b9d6ec;gap:7px}
.qq-skin .chat-tools{gap:4px}
.qq-skin .chat-tool{background:linear-gradient(180deg,#ffffff 0%,#e6eff8 52%,#d7e6f4 100%);
  border:1px solid #9dc4e4;border-radius:3px;color:#20486b;padding:3px 9px;font-size:12px}
.qq-skin .chat-tool:hover{background:linear-gradient(180deg,#ffffff 0%,#dcebfa 52%,#c9def2 100%);border-color:#6fa9d6}
.qq-skin .chat-tool.rec{background:#ffe9e6;border-color:#f3b6ad;color:#c0392b}
.qq-skin .chat-inputrow input{border:1px solid #9dc4e4;border-radius:2px;background:#fff;
  font-size:13px;box-shadow:inset 0 1px 2px rgba(0,0,0,.06)}
.qq-skin .chat-inputrow input:focus{outline:none;border-color:#1c6fae;box-shadow:0 0 0 2px rgba(28,111,174,.16)}
.qq-skin .chat-inputrow .btn{background:linear-gradient(180deg,#5eb2ea,#1f78bb);border:1px solid #14588a;
  color:#fff;border-radius:3px;padding:6px 16px;text-shadow:0 1px 0 rgba(0,0,0,.25)}
.qq-skin .chat-inputrow .btn:hover{background:linear-gradient(180deg,#6fbdf0,#2684ca)}
.qq-skin .chat-mode span{border:0;padding:1px 12px}
.qq-skin .chat-mode{border-color:rgba(255,255,255,.55);border-radius:3px}
.qq-skin .chat-mode span.on{background:#fff;color:#1a5f92;border-radius:2px}
.qq-skin .card-bubble{background:#f4faff;border-left:3px solid #2f8bd0}
.qq-skin .gift-bubble{background:#fffaf0;border-color:#ecd9b4}
.qq-skin .music-bubble{background:#f6f4ff;border-color:#d9d2f2}
.qq-skin .chat-empty,.qq-skin .note{color:#5b7b93}
.qq-lite{background:#cb2020 !important;
  background:linear-gradient(180deg,#ef5350,#cb2020) !important}
/* 泡泡上的名字标签：默认不显示，鼠标移上去才出现。
   ⚠️ 必须用 .chat-fab .met 精确命中：此前误用旧类名 .qq-lite，导致标签继承了按钮的
   font-size:26px 与 line-height:52px，被撑成一大块（用户反馈"猪小智三个字太大"）。 */
.chat-fab .met,.qq-lite .met{position:absolute;left:50%;bottom:-16px;transform:translateX(-50%);
  font-size:10px;line-height:1.3;font-weight:400;color:#fff;background:rgba(0,0,0,.55);
  border-radius:8px;padding:1px 6px;white-space:nowrap;display:none;pointer-events:none;z-index:5}
.chat-fab:hover .met,.chat-fab:active .met,.qq-lite:hover .met{display:inline-block}
/* 右下角：🐷 猪小智（主） + 💬 站内消息（次） */
.ai-fab{width:56px;height:56px;background:linear-gradient(160deg,#ffd166,#f4a62a) !important;font-size:26px;
  box-shadow:0 6px 18px rgba(244,166,42,.45)}
.ai-fab .met{bottom:-18px}
.dm-entry{position:relative;margin-left:auto;padding:2px 10px;width:auto;height:22px;border-radius:11px;
  font-size:12px;color:#fff;cursor:pointer;display:inline-flex;align-items:center;gap:2px}
.dm-entry:hover{background:rgba(255,255,255,.45)}
.dm-entry .chat-badge{position:absolute;top:-6px;right:-8px}
.ai-panel{width:720px;max-width:calc(100vw - 36px);bottom:118px;height:min(70vh,560px);z-index:1890}
@media(max-width:820px){ .ai-panel{right:6px;left:6px;bottom:96px;width:auto;height:min(74vh,600px)} }
.ai-panel .chat-msgs{overflow-x:hidden}
.ai-bubble{max-width:100%;word-break:break-word}
/* 猪小智：输入区固定在面板底部，永不被长回答挤出可视区 */
.ai-panel .chat-foot{flex:0 0 auto}
.ai-panel .chat-main{min-height:0}
/* 快捷追问：回答下方一键继续对话 */
.ai-ask{display:flex;gap:5px;flex-wrap:wrap;margin-top:6px}
.ai-ask button{font-size:11.5px;border:1px solid #bcd9ef;background:#f2f8fe;color:#1a5f92;
  border-radius:10px;padding:1px 8px;cursor:pointer}
.ai-ask button:hover{background:#e2f0fc}
.ai-bubble p{margin:4px 0}
.ai-bubble .ai-h{font-weight:700;color:#15507d;margin:7px 0 3px;font-size:13.5px}
.ai-bubble .ai-h1{font-size:14.5px}
.ai-bubble .ai-li{margin:2px 0 2px 2px}
.ai-t{border-collapse:collapse;width:100%;margin:6px 0;font-size:12.5px;background:#fff}
.ai-t th{background:#e7f1fa;border:1px solid #b9d6ec;padding:4px 6px;color:#20486b}
.ai-t td{border:1px solid #cfe0ee;padding:4px 6px}
.ai-src{font-size:11px;color:#5b7b93;border-top:1px dashed #c3ddf3;margin-top:6px;padding-top:4px}
.ai-ver{font-size:11px;color:#a4761f;margin-top:3px}
.ai-thinking .spin{margin-left:6px}
.ai-mini{cursor:pointer;margin-left:4px}
.ai-mini:hover{color:#1a5f92}
/* 2006 版 QQ：主窗工具行 + 底部按钮行 */
.qq-toolbar{display:flex;gap:10px;align-items:center;padding:4px 10px;background:#f4f9fd;
  border-bottom:1px solid #b9d6ec;font-size:12px;color:#20486b}
.qq-toolbar span{cursor:pointer;display:inline-flex;gap:3px;align-items:center}
.qq-toolbar span:hover{color:#1a5f92;text-decoration:underline}
.qq-foot{cursor:pointer;display:inline-flex;gap:4px;align-items:center}
.qq-foot:hover{color:#1a5f92;text-decoration:underline}
/* 左侧「会话 / 资料」页签 + 资料面板（显示对话双方信息，群聊显示成员） */
.chat-ltabs{display:flex;border-bottom:1px solid var(--line);background:#eaf3fb}
.chat-ltabs span{flex:1;text-align:center;font-size:12px;padding:5px 0;cursor:pointer;color:#20486b}
.chat-ltabs span.on{background:#fff;font-weight:700;color:#1a5f92;border-bottom:2px solid #2f8bd0}
.chat-infopane{flex:1;overflow:auto;padding:8px;background:#f7fbff}
.info-card{border:1px solid #cfe1f2;border-radius:6px;background:#fff;padding:8px 10px;margin-bottom:8px}
.info-top{display:flex;gap:8px;align-items:center}
.info-avatar{width:40px;height:40px;border-radius:8px;background:linear-gradient(160deg,#dff0ff,#a9d3f2);
  display:flex;align-items:center;justify-content:center;font-size:20px;color:#1a5f92;border:1px solid #bcd9ef}
.info-name{font-weight:700;color:#16324a;font-size:13.5px;line-height:1.4}
.info-line{font-size:11.5px;color:#4a6a82;line-height:1.7;word-break:break-word}
.info-line b{color:#16324a}
.info-badge{display:inline-block;font-size:11px;background:#e7f1fa;border:1px solid #bcd9ef;border-radius:8px;
  padding:0 6px;margin:1px 3px 1px 0;color:#20486b}
.info-sec{font-size:11.5px;font-weight:700;color:#1a5f92;margin:6px 0 3px;border-bottom:1px dashed #cfe1f2;padding-bottom:2px}
.info-mem{display:flex;gap:6px;align-items:center;padding:4px 2px;border-bottom:1px dashed #eaf2f9;cursor:pointer}
.info-mem:hover{background:#eef7fd}
.info-mem .nm{font-size:12px;color:#16324a}
.info-mem .tg{font-size:10.5px;color:#5b7b93}
@media (max-width:760px){
  .chat-panel{right:8px;left:8px;width:auto;bottom:120px;height:min(70vh,540px)}
  .chat-list{width:112px}
}
.login-entry:hover{text-decoration:underline}
/* 全站内容使用声明（仅限内部学习交流、禁止营利性使用） */
.usage-notice{margin:10px 0 8px;padding:10px 12px;border:1px solid var(--line);border-left:4px solid var(--brand2,#2e8b57);
  border-radius:8px;background:#f7fbf8;color:#3d4a45;font-size:12.5px;line-height:1.7;text-align:left}
.login-sub{color:var(--sub)}
.loginGo{width:100%}

.concl h3{margin:0 0 6px;font-size:16px;color:var(--brand)}

/* ==================== V2.4：病例中心 / 数字ID / 积分成长 ==================== */
.sub-tabs{display:flex;gap:8px;flex-wrap:wrap;border-bottom:1px solid var(--line);padding-bottom:8px}
.sub-tab{padding:7px 13px;border-radius:999px;background:#f3f7f5;border:1px solid var(--line);
  font-size:13px;font-weight:600;color:var(--brand3);cursor:pointer;transition:.16s}
.sub-tab:hover{background:#e8f2ed}
.sub-tab.on{background:var(--brand);border-color:var(--brand);color:#fff}
.res-tag.pub{background:#e7f6ee;color:var(--brand);border:1px solid #bfe5d2}
.vis-pick{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
.vis-opt{flex:1;min-width:240px;display:flex;gap:9px;align-items:flex-start;padding:10px 12px;
  border:1px solid var(--line);border-radius:12px;cursor:pointer;background:#fbfdfc;transition:.16s}
.vis-opt:hover{border-color:var(--brand2)}
.vis-opt.on{border-color:var(--brand);background:#eef8f3;box-shadow:0 0 0 2px rgba(18,160,111,.12)}
.vis-opt input{margin-top:3px}
.vis-opt b{display:block;font-size:14px;color:var(--brand3)}
.vis-opt .meta{display:block;margin-top:2px;line-height:1.5}
.toast-box{position:fixed;left:50%;bottom:34px;transform:translateX(-50%);z-index:3000;
  display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
.toast{background:rgba(12,46,35,.94);color:#fff;padding:10px 18px;border-radius:12px;font-size:13.5px;
  box-shadow:0 8px 26px rgba(0,0,0,.28);opacity:1;transition:.35s}
.toast.out{opacity:0;transform:translateY(8px)}
.badge{display:inline-block;background:#f2f7f4;border:1px solid var(--line);border-radius:999px;
  padding:4px 10px;font-size:12px;margin:3px 6px 3px 0;color:var(--brand3);font-weight:600}
.badge-row{margin-top:6px}
.progress{height:9px;background:#eaf1ed;border-radius:999px;overflow:hidden;margin:8px 0 6px}
.progress>i{display:block;height:100%;background:linear-gradient(90deg,#12a06f,#e8a33d);border-radius:999px}
.pt-list{margin-top:6px;max-height:220px;overflow:auto}
.pt-line{display:flex;gap:10px;align-items:center;font-size:12.5px;padding:5px 0;border-bottom:1px dashed var(--line)}
.pt-line>span:first-child{color:var(--sub);min-width:118px}
.pt-line>span:nth-child(2){flex:1}
.pt-line>b{color:var(--accent);font-weight:800}
.feed-line{display:flex;gap:10px;align-items:flex-start;padding:9px 4px;border-bottom:1px dashed var(--line);font-size:13.5px}
.feed-ic{font-size:16px;line-height:1.3}
.feed-line>span:nth-child(2){flex:1;line-height:1.6}
.feed-line .meta{white-space:nowrap;font-size:12px}
.seg input[type=password],.seg input[type=text],.seg input:not([type]){padding:8px 10px;border:1px solid var(--line);
  border-radius:9px;font-size:13.5px;font-family:inherit}
.seg input[type=password]:focus,.seg input[type=text]:focus{outline:none;border-color:var(--brand2)}

/* 双向核实：机器核实状态条 */
.vf-box{margin-top:10px;border:1px solid var(--line);border-left:4px solid var(--brand2);
  border-radius:10px;background:#fbfdfc;padding:8px 10px;font-size:12.5px}
.vf-ok{border-left-color:#12a06f;background:#f4fbf7}
.vf-warn{border-left-color:var(--accent);background:#fffaf1}
.vf-bad{border-left-color:var(--red);background:#fdf5f4}
.vf-head{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.vf-head b{color:var(--brand3)}
.vf-link{color:var(--brand);font-weight:600;cursor:pointer;white-space:nowrap}
.vf-report{color:var(--red)}
.vf-detail{display:none;margin-top:6px;border-top:1px dashed var(--line);padding-top:6px}
.vf-box.open .vf-detail{display:block}
.vf-line{margin:3px 0;line-height:1.6}
.vf-line b{color:var(--brand3)}

/* 你问我答：结果复制条 */
.side-qr{position:fixed;right:16px;top:120px;width:172px;background:#fff;border:1px solid var(--line);
  border-radius:14px;padding:10px;box-shadow:var(--shadow);z-index:900;text-align:center}
.side-qr img{width:100%;border-radius:8px;cursor:zoom-in;border:1px solid #eef2f0}
.sq-title{font-size:13px;font-weight:700;color:var(--brand3);margin-bottom:6px}
.sq-tip{font-size:11.5px;color:var(--sub);line-height:1.55;margin:6px 0 8px}
.sq-btn{width:100%;margin-top:6px;font-size:12px}
.sq-close{position:absolute;right:6px;top:4px;border:none;background:transparent;color:#9aa8a2;
  font-size:13px;cursor:pointer}
.qr-fab{display:none;position:fixed;left:14px;bottom:14px;z-index:900;background:var(--brand);color:#fff;
  border-radius:999px;padding:9px 14px;font-size:13px;font-weight:600;box-shadow:var(--shadow);cursor:pointer}
@media(max-width:1080px){ .side-qr{display:none} .qr-fab{display:block} }
.copy-bar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:4px 0 10px;
  padding:8px 10px;background:#f3f8f5;border:1px dashed var(--brand2);border-radius:10px}
.copy-bar .copy-tip{font-size:12.5px;color:var(--brand3);font-weight:600}
.copy-bar .btn{width:auto}

/* ==================== 养猪论坛 ==================== */
/* 论坛头部：主标题醒目，后面的"养猪人自己的论坛"小一号做副标题（用户 2026-09-11 要求） */
.forum-head h2{margin:0 0 6px;font-size:19px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.forum-sub{font-size:12.5px;font-weight:500;color:var(--sub);letter-spacing:.3px}
.forum-desc{font-size:12.5px;line-height:1.7;margin-bottom:8px}
.board-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px;margin-top:8px}
.board-card{display:flex;gap:10px;padding:12px;border:1px solid var(--line);border-radius:12px;
  background:#fbfdfc;cursor:pointer;transition:.16s}
.board-card:hover{border-color:var(--brand2);background:#f1f9f5;transform:translateY(-1px)}
.bc-ic{font-size:24px;line-height:1.1}
.bc-body{flex:1;min-width:0}
.bc-body b{color:var(--brand3);font-size:14.5px}
.thread-row{display:flex;gap:8px;align-items:center;padding:10px 6px;border-bottom:1px dashed var(--line);cursor:pointer}
.thread-row:hover{background:#f6fbf8}
.tr-main{flex:1;min-width:0}
.tr-title{font-size:14px;font-weight:600;color:var(--ink);line-height:1.5;word-break:break-word}
.tr-stat{text-align:center;min-width:52px;color:var(--sub);font-size:11px}
.tr-stat b{display:block;color:var(--brand3);font-size:14px}
.tr-tag{display:inline-block;font-size:11px;padding:1px 6px;border-radius:6px;margin-right:5px;
  background:#eef4f1;color:var(--brand3);border:1px solid var(--line)}
.tr-tag.pin{background:#fdf1e0;border-color:#f0d4a8;color:#9a6412}
.tr-tag.ess{background:#fdeaea;border-color:#f3c9c9;color:#a33}
.tr-tag.lock{background:#eef1f5;border-color:#d8dee7;color:#5a6779}
.fp-body{margin-top:10px;line-height:1.85;font-size:14.5px;white-space:pre-wrap}
.fp-imgs{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.fp-img{max-width:190px;max-height:150px;border-radius:8px;border:1px solid var(--line);cursor:zoom-in;object-fit:cover}
.fp-reply{padding:9px 0;border-bottom:1px dashed var(--line)}
.fp-reply-body{margin-top:4px;line-height:1.75;font-size:14px;white-space:pre-wrap}
select#fpBoard{padding:9px 10px}
#mode-forum textarea{min-height:110px}
@media(max-width:600px){
  header h1{font-size:19px}.btn{width:100%}.wrap{padding:12px}
  .card{padding:15px 14px}
  .sub-tab{font-size:12px;padding:6px 10px}
  .feed-line .meta{display:none}
}

/* ===== 专业信息：图表与解读「就近成对」版式（2026-09-13）=====
   版式约定：每张图/表后面紧接它自己的中文解读（.figread），
   解读块用浅底 + 左侧色条与图/表视觉绑定，读起来"图在上、解读在下"一气呵成。 */
.post-body figure, .fp-body figure, .card figure{margin:18px 0 0}
.post-body figure img, .fp-body figure img, .card figure img{display:block;width:100%;height:auto}
.figread{margin:8px 0 22px;padding:10px 12px;background:#f6faf8;border-left:3px solid var(--brand);
  border-radius:0 8px 8px 0;line-height:1.85;font-size:14px}
.figread b{color:var(--brand3)}
.tbl-index{margin:6px 0 18px;font-size:12.5px}
.tbl-index th{background:#f2f7f4}
@media(max-width:600px){
  .figread{padding:9px 10px;margin:8px 0 18px;font-size:13.5px;line-height:1.8}
}
