/* v156ui */
/* ===== v1.56 UI：三栏导航骨架（聊天 / 功能 / 设置） ===== */
:root{ --nav-h:66px; }
/* 底部导航 */
#tabBar{position:fixed;left:0;right:0;bottom:0;z-index:26;display:flex;align-items:stretch;
  height:var(--nav-h);padding-bottom:env(safe-area-inset-bottom,0px);
  background:rgba(20,27,36,.97);border-top:1px solid var(--line);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);
  transition:transform .18s ease;}
#tabBar.hide{transform:translateY(120%)}
#tabBar .nitem{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  background:none;border:0;padding:0;color:#67737f;font-size:10.5px;font-weight:600;letter-spacing:.2px;
  position:relative;transition:color .15s;-webkit-tap-highlight-color:transparent;cursor:pointer}
#tabBar .nitem svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.9;
  stroke-linecap:round;stroke-linejoin:round;transition:transform .12s ease-out}
#tabBar .nitem.on{color:var(--acc)}
#tabBar .nitem.on svg{stroke-width:2.15}
#tabBar .nitem.on::before{content:"";position:absolute;top:0;left:50%;margin-left:-13px;width:26px;height:3px;
  border-radius:0 0 4px 4px;background:var(--acc);box-shadow:0 0 14px rgba(124,196,255,.75)}
#tabBar .nitem.press svg{transform:scale(.9)}
#tabBar .nitem.press{color:#cfe6ff}
#tabBar .nitem.press::after{content:"";position:absolute;left:50%;top:50%;width:52px;height:52px;
  margin:-26px 0 0 -26px;border-radius:50%;pointer-events:none;
  background:radial-gradient(circle,rgba(124,196,255,.28),rgba(124,196,255,0) 70%);
  animation:navRip .32s ease-out forwards}
@keyframes navRip{from{transform:scale(.6);opacity:1}to{transform:scale(1.15);opacity:0}}
#tabBar .nb{position:absolute;top:9px;left:50%;margin-left:8px;min-width:16px;height:16px;padding:0 4px;
  border-radius:8px;background:#e5484d;color:#fff;font-size:10px;line-height:16px;text-align:center;
  font-weight:700;box-shadow:0 0 0 2px rgba(20,27,36,.97)}
/* 让内容给导航让出高度 */
main{padding-bottom:calc(var(--nav-h) + env(safe-area-inset-bottom,0px))!important}
body.compact main{padding-bottom:calc(var(--nav-h) + env(safe-area-inset-bottom,0px))!important}
/* 关键：原始 body.compact main 用了 display:block!important，会盖掉 [hidden] 的 display:none */
main[hidden],body.compact main[hidden]{display:none!important}
/* 输入框要抬到导航之上（键盘弹起时导航收起，再落回底部） */
body.compact .composer{bottom:calc(var(--nav-h) + env(safe-area-inset-bottom,0px))!important}
body.compact.kb-open .composer{bottom:0!important}
/* 旧入口隐藏（已在底部导航里） */
#setBtn,#funChip,#tvChip{display:none!important}
/* 通用页面容器 */
.tabpane{animation:tabIn .18s cubic-bezier(.2,.8,.2,1)}
@keyframes tabIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.tp-hd{display:flex;align-items:center;gap:12px;padding:8px 16px 12px;flex:0 0 auto}
.tp-ttl{flex:1;min-width:0}
.tp-ttl h1{margin:0;font-size:18px;font-weight:700;letter-spacing:.3px}
.tp-sub{margin-top:2px;font-size:11.5px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ibtn{width:36px;height:36px;flex:0 0 auto;border-radius:11px;background:rgba(255,255,255,.04);
  border:1px solid var(--line);display:grid;place-items:center;color:#c3ced9;padding:0;cursor:pointer}
.ibtn svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.tp-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;
  padding:0 16px calc(var(--nav-h) + 24px + env(safe-area-inset-bottom,0px))}
.tp-sec{font-size:11px;color:#5b6874;letter-spacing:1.6px;font-weight:700;margin:18px 2px 9px}
/* 功能页网格 */
#funPane{display:flex;flex-direction:column;min-height:0;flex:1 1 auto}
.fcard-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.fcard{position:relative;overflow:hidden;text-align:left;border-radius:18px;min-height:126px;
  padding:14px;border:1px solid var(--line);background:var(--bg2);color:var(--txt);
  display:flex;flex-direction:column;justify-content:space-between;cursor:pointer;
  transition:transform .09s ease-out,box-shadow .12s;font:inherit;-webkit-tap-highlight-color:transparent}
.fcard.press{transform:scale(.975);box-shadow:0 0 0 2px rgba(124,196,255,.35)}
.fcard .fi{width:38px;height:38px;border-radius:12px;display:grid;place-items:center}
.fcard .fi svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.fcard b{display:block;margin-top:12px;font-size:15px;font-weight:700;letter-spacing:.3px}
.fcard p{margin:3px 0 0;font-size:11.5px;color:var(--dim);line-height:1.5}
.fcard .cnt{position:absolute;right:13px;top:13px;font-size:11px;font-weight:700;color:#5b6874}
.fcard .glow{position:absolute;right:-26px;bottom:-30px;width:96px;height:96px;border-radius:50%;
  filter:blur(18px);opacity:.45;pointer-events:none}
.fcard[data-act="diary"] .fi{background:rgba(255,209,102,.14);color:var(--yellow)}
.fcard[data-act="diary"] .glow{background:rgba(255,209,102,.6)}
.fcard[data-act="moment"] .fi{background:rgba(124,196,255,.14);color:var(--acc)}
.fcard[data-act="moment"] .glow{background:rgba(124,196,255,.6)}
.fcard[data-act="game"] .fi{background:rgba(184,166,255,.14);color:#b8a6ff}
.fcard[data-act="game"] .glow{background:rgba(184,166,255,.6)}
.fcard[data-act="tv"] .fi{background:rgba(255,143,177,.14);color:var(--pink)}
.fcard[data-act="tv"] .glow{background:rgba(255,143,177,.6)}
.mrow-list{display:flex;flex-direction:column;border-radius:16px;overflow:hidden;
  border:1px solid var(--line);background:var(--bg2)}
.mrow{display:flex;align-items:center;gap:11px;padding:13px 14px;background:none;border:0;
  border-bottom:1px solid rgba(38,49,61,.75);color:var(--txt);font:inherit;font-size:14px;
  text-align:left;cursor:pointer;width:100%}
.mrow:last-child{border-bottom:0}
.mrow.press{background:rgba(124,196,255,.08)}
.mrow .mi{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;flex:0 0 auto;
  background:rgba(124,196,255,.1);color:var(--acc)}
.mrow .mi svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.mrow .mt{flex:1;min-width:0}
.mrow .mh{font-size:11.5px;color:#5b6874}
.mrow .mc{width:15px;height:15px;color:#4a5a6b;flex:0 0 auto}
/* 设置页 */
#setPane{display:flex;flex-direction:column;min-height:0;flex:1 1 auto}
.setcard{border-radius:16px;overflow:hidden;border:1px solid var(--line);background:var(--bg2)}
#setHost .setrow{padding:12px 14px;font-size:13.5px;color:#aab6c2}
#setHost .setpage{padding:0 2px}
#setHost .setbody{overflow:visible!important;max-height:none!important;padding:0!important}
#setHost .settabs{display:flex;gap:6px;overflow-x:auto;padding:10px 10px 4px;border-bottom:1px solid var(--line)}
#setHost .settabs .btn{padding:6px 11px;font-size:12px;border-radius:9px;background:rgba(255,255,255,.05);
  color:var(--dim);border:1px solid var(--line);flex:0 0 auto;white-space:nowrap}
#setHost .settabs .btn.on{background:#22303f;color:var(--txt);border-color:#3b6ea5}
.profile{display:flex;align-items:center;gap:13px;padding:14px;border-radius:18px;
  background:linear-gradient(135deg,#1b2a3b,#141d28);border:1px solid #2a3b4d;margin-bottom:4px}
.profile .pav{width:52px;height:52px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;
  background:linear-gradient(150deg,#2a4a6b,#16283a);border:1px solid #3a4c60;
  font-size:20px;font-weight:700;color:#bfe4ff}
.profile .pn{flex:1;min-width:0}
.profile .pn b{font-size:16px;font-weight:700;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.profile .pn span{font-size:11.5px;color:var(--dim)}
.profile .pconn{flex:0 0 auto;font-size:10.5px;font-weight:700;padding:5px 9px;border-radius:999px;
  background:rgba(155,232,155,.12);color:var(--green);border:1px solid rgba(155,232,155,.25)}
.segmini{display:inline-flex;background:#121a24;border:1px solid var(--line);border-radius:10px;padding:3px}
.segmini b{padding:5px 11px;border-radius:8px;font-size:12px;color:var(--dim);font-weight:600;cursor:pointer;white-space:nowrap}
.segmini b.on{background:#22303f;color:var(--txt);box-shadow:0 1px 6px rgba(0,0,0,.35)}
/* 会话列表模式 */
#chatBack{margin-right:-4px}
body.chatlist #convPane{display:flex!important}
#convPane{display:none;flex-direction:column;min-height:0;flex:1 1 auto}
#convList{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;
  padding:0 12px calc(var(--nav-h) + 24px + env(safe-area-inset-bottom,0px))}
.conv-row{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:16px;cursor:pointer;
  border:1px solid transparent}

.conv-row .cav{width:46px;height:46px;border-radius:15px;flex:0 0 auto;display:grid;place-items:center;
  background:linear-gradient(140deg,#22405c,#16283a);border:1px solid #2c4f6e;color:#bfe4ff;font-size:18px}

.conv-row .cmid b{display:block;font-size:14.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.conv-row .cmid p{margin:3px 0 0;font-size:12px;color:#67737f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.conv-row .cdot{width:8px;height:8px;border-radius:50%;background:#3a4653;flex:0 0 auto}
.conv-row .cdot.on{background:var(--green);box-shadow:0 0 8px rgba(155,232,155,.6)}
/* 启动页 */
#bootSplash{position:fixed;inset:0;z-index:9999;display:flex;flex-direction:column;align-items:center;justify-content:center;
  background:radial-gradient(120% 70% at 50% 12%,#16283a 0%,#0d1117 60%,#0a0e13 100%);
  transition:opacity .28s ease}
#bootSplash.gone{opacity:0;pointer-events:none}
#bootSplash .bslogo{width:92px;height:92px;border-radius:26px;display:grid;place-items:center;
  background:linear-gradient(150deg,#2a4a6b,#16283a 70%);border:1px solid #33506f;
  box-shadow:0 18px 44px rgba(60,140,220,.22), inset 0 1px 0 rgba(255,255,255,.09)}
#bootSplash .bslogo svg{width:48px;height:48px;fill:none;stroke:#a9dcff;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
#bootSplash .bsb{margin-top:20px;font-size:23px;font-weight:700;letter-spacing:1px}
#bootSplash .bss{margin-top:7px;font-size:12px;color:#8b98a5;letter-spacing:2.4px}
#bootSplash .bsbar{margin-top:38px;width:140px;height:3px;border-radius:3px;background:#1e2a37;overflow:hidden}
#bootSplash .bsbar i{display:block;height:100%;width:42%;border-radius:3px;
  background:linear-gradient(90deg,transparent,#7cc4ff,transparent);animation:bsSweep 1.15s ease-in-out infinite}
@keyframes bsSweep{0%{transform:translateX(-120%)}100%{transform:translateX(260%)}}
#bootSplash .bsmsg{margin-top:13px;font-size:12px;color:#5b6874}
/* 键盘弹起时收起导航 */
body.kb-open #tabBar{transform:translateY(120%)}
/* o20ui */
/* O20：骨架屏 */
.skel-wrap{display:flex;flex-direction:column;gap:14px;padding:10px 4px}
.skel-row{display:flex;gap:9px;align-items:flex-start}
.sk-av{width:30px;height:30px;border-radius:50%;background:linear-gradient(90deg,#1b2330 25%,#232d3b 37%,#1b2330 63%);background-size:400% 100%;animation:skShimmer 1.4s ease infinite;flex:0 0 auto}
.sk-lines{flex:1;display:flex;flex-direction:column;gap:7px;padding-top:3px}
.sk-l{display:block;height:11px;border-radius:6px;background:linear-gradient(90deg,#1b2330 25%,#232d3b 37%,#1b2330 63%);background-size:400% 100%;animation:skShimmer 1.4s ease infinite}
.sk-l.w1{width:38%}.sk-l.w2{width:64%}
@keyframes skShimmer{0%{background-position:100% 50%}100%{background-position:0 50%}}
/* O20：发送中 / 待重发气泡 */
.msg.pending .bubble{opacity:.62}
.msg.pending .meta::after{content:" · 发送中…";color:#8b949e;font-size:11px}
.msg.queued .bubble{opacity:.75;border-style:dashed}
.msg.queued .meta::after{content:" · 未发出（联网重发）";color:#d29922;font-size:11px}
/* v158ui */
/* ===== v1.58 聊天页精简 ===== */
#callsBtn{display:none!important}
body.compact #appView>header #sideToggle,
body.compact #appView>header #setBtn,
body.compact #appView>header #funChip,
body.compact #appView>header #callsBtn,
body.compact #appView>header #tvChip{display:none!important}
#appView>header{padding:6px 10px 2px!important;gap:8px!important}
#appView>header h1{font-size:17px!important}
#live{font-size:11px!important;padding:2px 8px!important}
/* 频道切换：一行 chip，横向可滑 */
#chanBar{display:flex;align-items:center;gap:8px;padding:2px 10px 8px;overflow-x:auto;overflow-y:hidden;
  scrollbar-width:none;-webkit-overflow-scrolling:touch;flex:0 0 auto}
#chanBar::-webkit-scrollbar{display:none}
#chanBar:empty{display:none}
.chchip{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;max-width:46vw;
  padding:5px 11px 5px 6px;border-radius:999px;border:1px solid var(--line);
  background:#121a24;color:var(--dim);font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;
  transition:background .15s,border-color .15s,color .15s,transform .1s}
.chchip .cav{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;flex:0 0 auto;
  background:linear-gradient(140deg,#22405c,#16283a);border:1px solid #2c4f6e;color:#bfe4ff;
  font-size:11px;overflow:hidden}
.chchip .cav img{width:100%;height:100%;object-fit:cover;display:block}
.chchip .cn{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chchip.on{background:#1d3450;border-color:#3d6b95;color:#dcefff}
.chchip:active{transform:scale(.96)}
.chchip.plus{max-width:none;padding:5px 10px}
body.compact .msgs{padding-top:10px!important}
/* v159prof */
/* v1.59 个人主页（每位家人一个可配置的主页） */
#profPane{position:fixed;inset:0;z-index:62;background:#0b1116;display:none;
  flex-direction:column;color:#e8f1f8;overscroll-behavior:contain}
#profPane.on{display:flex;animation:profIn .22s cubic-bezier(.22,.8,.3,1)}
@keyframes profIn{from{transform:translateX(16px);opacity:.4}to{transform:none;opacity:1}}
body.prof-open #tabBar{display:none}
body.prof-open main{padding-bottom:0!important}

.phd{flex:0 0 auto;display:flex;align-items:center;gap:10px;height:52px;padding:0 12px;
  border-bottom:1px solid #1d2530;background:rgba(13,17,22,.94);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.phd button{background:none;border:0;color:#cfe0ef;display:flex;align-items:center;gap:4px;
  font-size:14px;padding:8px 6px;border-radius:10px}
.phd button:active{background:#1b2431}
.phd b{font-size:15px;font-weight:700;letter-spacing:.2px}

#profBody{flex:1 1 auto;overflow-y:auto;-webkit-overflow-scrolling:touch;
  padding:14px 16px calc(28px + env(safe-area-inset-bottom,0px))}
.pload{padding:40px 8px;text-align:center;color:#7d8b9a;font-size:13.5px}

.phero{display:flex;flex-direction:column;align-items:center;gap:8px;padding:10px 0 18px}
.pav{width:96px;height:96px;border-radius:50%;object-fit:cover;background:#1b2431;
  border:2px solid rgba(124,196,255,.35);box-shadow:0 6px 22px rgba(0,0,0,.45)}
.pav.act:active{transform:scale(.96)}
.pname{font-size:21px;font-weight:800;letter-spacing:.3px}
.ptag{font-size:12px;color:#8fa3b8}
.pbadges{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;margin-top:2px}
.pbadge{font-size:11px;line-height:18px;padding:0 9px;border-radius:999px;
  background:rgba(124,196,255,.12);color:#9fd0ff;border:1px solid rgba(124,196,255,.22)}
.pbadge.on{background:rgba(155,232,155,.12);color:#9be89b;border-color:rgba(155,232,155,.25)}
.pbadge.off{background:rgba(255,255,255,.05);color:#7d8b9a;border-color:#26313e}

.pcard{background:#141a22;border:1px solid #26313e;border-radius:14px;padding:4px 14px;margin-bottom:12px}
.pcard.tight{padding:12px 14px}
.prow{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:12px 0;border-bottom:1px solid #1b2431;font-size:14px}
.prow:last-child{border-bottom:0}
.prow .k{color:#8fa3b8;display:flex;align-items:center;gap:7px;flex:0 0 auto}
.prow .v{color:#e8f1f8;text-align:right;word-break:break-word;flex:1 1 auto}
.prow .v small{color:#7d8b9a;font-size:11.5px;margin-left:6px}
.prow .v.empty{color:#67737f}

.pstat{display:flex;gap:8px;margin-bottom:12px}
.pstat div{flex:1;background:#141a22;border:1px solid #26313e;border-radius:12px;
  padding:10px 12px;text-align:center}
.pstat b{display:block;font-size:18px;font-weight:800;line-height:1.25}
.pstat span{font-size:11.5px;color:#8fa3b8}

.pttl{display:flex;align-items:center;justify-content:space-between;
  font-size:12.5px;color:#8fa3b8;letter-spacing:.4px;margin:16px 2px 8px}
.pmom{background:#141a22;border:1px solid #26313e;border-radius:12px;
  padding:10px 12px;margin-bottom:8px;font-size:14px;line-height:1.6;color:#dbe7f3;
  white-space:pre-wrap;word-break:break-word}
.pmom .pmt{font-size:11px;color:#7d8b9a;margin-top:6px}
.pempty{color:#67737f;font-size:13px;padding:10px 2px 14px}

.pbtn{display:block;width:100%;height:44px;border-radius:12px;border:1px solid rgba(124,196,255,.35);
  background:rgba(124,196,255,.13);color:#9fd0ff;font-size:14.5px;font-weight:700;margin-top:6px}
.pbtn:active{transform:scale(.985)}
.pbtn.ghost{background:none;border-color:#26313e;color:#9aa8b6}
.pbtn[disabled]{opacity:.55}

.pform{display:none;margin-top:12px}
.pform.on{display:block}
.pform label{display:block;font-size:12px;color:#8fa3b8;margin:12px 2px 6px}
.pform input,.pform textarea{width:100%;box-sizing:border-box;background:#10161f;
  border:1px solid #26313e;border-radius:10px;color:#e8f1f8;font-size:14px;padding:11px 12px;
  font-family:inherit;outline:none}
.pform input:focus,.pform textarea:focus{border-color:rgba(124,196,255,.5)}
.pform textarea{min-height:76px;resize:vertical;line-height:1.55}
.pform .tip{font-size:11.5px;color:#67737f;margin-top:6px}

.pfam{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:2px 0 4px}
.pfam .pfitem{background:#141a22;border:1px solid #26313e;border-radius:14px;padding:10px 6px;
  display:flex;flex-direction:column;align-items:center;gap:6px}
.pfam .pfitem:active{transform:scale(.97)}
.pfam .pfitem img{width:44px;height:44px;border-radius:50%;object-fit:cover;background:#1b2431}
.pfam .pfitem b{font-size:12.5px;font-weight:700;color:#dbe7f3}
.pfam .pfitem i{font-style:normal;font-size:10.5px;color:#7d8b9a}
/* o06ui */
#mutePop .mrow{display:flex;align-items:center;gap:10px;padding:7px 2px;border-bottom:1px solid #21262d}
#mutePop .mrow:last-child{border-bottom:0}
#mutePop .mrow .nm{flex:1}
#mutePop .mchip{border:1px solid #30363d;border-radius:999px;padding:3px 12px;background:#0d1117;color:#8b949e;font-size:12px}
#mutePop .mchip.on{background:#1f6feb33;border-color:#1f6feb;color:#79c0ff}
/* o04ui */
#appKeepPop{position:fixed;left:50%;transform:translateX(-50%);top:50%;margin-top:-150px;z-index:86;background:#161b22;border:1px solid #30363d;border-radius:14px;padding:14px;width:300px;box-shadow:0 18px 44px rgba(0,0,0,.6);font-size:13px;color:#e6edf3}
#appKeepPop .rk{display:flex;gap:8px;line-height:1.75}
#appKeepPop .rk .k{color:#8b98a8;min-width:78px}
#appKeepPop .rk .v{flex:1;color:#dfe7f1;word-break:break-all}
#appKeepPop .acts{display:flex;gap:8px;margin-top:12px}
#appKeepPop .acts .btn{flex:1}
#appKeepPop .tip{margin-top:10px;font-size:12px;color:#8b98a8;line-height:1.6}
/* css11 */
#rtcWrap{position:fixed;inset:0;z-index:9998;background:#000;display:none}
#rtcWrap.show{display:block}
#rtcFrame{position:absolute;inset:0;width:100%;height:100%;border:0;background:#000}
#rtcWrapClose{position:absolute;top:10px;right:10px;z-index:3;width:34px;height:34px;border:0;border-radius:50%;background:#0008;color:#fff;font-size:16px;line-height:34px;text-align:center}
#rtcSheet{position:fixed;left:0;right:0;bottom:0;z-index:9999;background:#1a1d24;border-radius:16px 16px 0 0;padding:10px 12px 20px;display:none;box-shadow:0 -8px 24px #0008;max-height:70dvh;overflow:auto}
#rtcSheet.show{display:block}
#rtcSheetHead{display:flex;align-items:center;justify-content:space-between;padding:2px 4px 8px;color:#e8ecf4;font-size:15px;font-weight:700}
#rtcSheetHead button{border:0;background:transparent;color:#8f9bb3;font-size:14px;padding:4px 8px}
.rtcRow{display:flex;align-items:center;gap:8px;padding:9px 4px;border-top:1px solid #23262f}
.rtcWho{flex:1;min-width:0}
.rtcName{color:#e8ecf4;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rtcSub{font-size:11px;color:#8f9bb3;margin-top:2px}
.rtcMini{border:1px solid #3a4a6b;background:#22304a;color:#cfe0ff;border-radius:10px;padding:7px 10px;font-size:13px;white-space:nowrap}
.rtcMini.vid{background:#2a2438;border-color:#6b4a8f;color:#e6d4ff}
.rtcEmpty{color:#8f9bb3;font-size:13px;padding:14px 4px}
#rtcRing{position:fixed;inset:0;z-index:10000;background:#0b0d12f2;display:none;align-items:center;justify-content:center;flex-direction:column;gap:10px;color:#e8ecf4}
#rtcRing.show{display:flex}
#rtcRing .av{font-size:64px;animation:rtcPulse 1.2s ease-in-out infinite}
@keyframes rtcPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}}
#rtcRing .nm{font-size:21px;font-weight:700}
#rtcRing .kb{font-size:13px;color:#9fb0d0}
#rtcRing .acts{display:flex;gap:18px;margin-top:14px}
#rtcRing button{border:0;border-radius:999px;padding:14px 28px;font-size:15px;font-weight:700}
#rtcRing .no{background:#3a2027;color:#ffb4c0}
#rtcRing .yes{background:#1f7a4d;color:#eafff4}
/* ctlui */
#ctlHud{position:fixed;z-index:58;left:10px;top:calc(env(safe-area-inset-top,0px) + 54px);display:none;align-items:center;gap:8px;padding:6px 10px 6px 6px;border-radius:999px;background:rgba(18,20,28,.86);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.12);box-shadow:0 6px 18px rgba(0,0,0,.35);touch-action:none;max-width:78vw}
#ctlHud .av{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:#10121a;flex:0 0 auto}
#ctlHud .tx{display:flex;flex-direction:column;line-height:1.15;min-width:0}
#ctlHud .nm{font-size:12px;font-weight:600;color:#fff;white-space:nowrap}
#ctlHud .ac{font-size:11px;color:#b9c0d0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#ctlHud .tm{font-size:11px;color:#ffd166;font-variant-numeric:tabular-nums;margin-left:2px}
#ctlGlow{position:fixed;inset:0;z-index:57;pointer-events:none;display:none;box-shadow:inset 0 0 0 2px var(--ctl-color,#c792ea),inset 0 0 26px rgba(199,146,234,.30);animation:ctlBreath 2.6s ease-in-out infinite}
@keyframes ctlBreath{0%,100%{opacity:.55}50%{opacity:1}}
#ctlTicket{position:fixed;z-index:57;left:8px;right:8px;bottom:calc(var(--nav-h,56px) + env(safe-area-inset-bottom,0px) + 8px);display:none;align-items:center;gap:8px;padding:7px 10px;border-radius:12px;background:rgba(18,20,28,.92);border:1px solid rgba(255,255,255,.10);font-size:11.5px;color:#dfe3ee}
#ctlTicket .lbl{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#ctlTicket .id{color:#8b93a7;font-size:10.5px}
#ctlTicket button{flex:0 0 auto;border:0;border-radius:9px;padding:6px 10px;font-size:11.5px;font-weight:600;background:#ff5d5d;color:#fff}
#ctlSheet{position:fixed;inset:0;z-index:70;display:none;background:rgba(6,7,12,.62);backdrop-filter:blur(2px)}
#ctlSheet.open{display:block}
#ctlSheet .box{position:absolute;left:0;right:0;bottom:0;max-height:82dvh;overflow:auto;background:#15171f;border-radius:16px 16px 0 0;border-top:1px solid rgba(255,255,255,.10);padding:12px 14px calc(14px + env(safe-area-inset-bottom,0px))}
#ctlSheet h3{margin:2px 0 8px;font-size:14px;color:#fff;display:flex;align-items:center;gap:8px}
#ctlSheet h3 .x{margin-left:auto;color:#8b93a7;font-weight:400;font-size:12px;border:1px solid rgba(255,255,255,.14);border-radius:8px;padding:3px 8px}
#ctlState{font-size:11.5px;color:#9aa3b5;margin:0 0 10px}
#ctlCaps{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:0 0 10px}
#ctlCaps .cap{border:1px solid rgba(255,255,255,.12);border-radius:10px;padding:8px 6px;text-align:center;font-size:12px;color:#cfd5e4;background:rgba(255,255,255,.03)}
#ctlCaps .cap.on{border-color:#7cc4ff;background:rgba(124,196,255,.14);color:#fff}
#ctlCaps .cap small{display:block;font-size:10px;color:#8b93a7;margin-top:2px}
#ctlForm label{display:block;font-size:11px;color:#8b93a7;margin:8px 0 4px}
#ctlForm input,#ctlForm select,#ctlForm textarea{width:100%;box-sizing:border-box;background:#0f1118;border:1px solid rgba(255,255,255,.12);border-radius:9px;color:#e8ebf3;padding:8px 9px;font-size:12.5px;font-family:inherit}
#ctlForm textarea{min-height:56px;resize:vertical}
#ctlRow2{display:flex;gap:8px}
#ctlRow2>div{flex:1}
#ctlBtn{border:0;width:100%;margin-top:12px;border-radius:11px;padding:11px;font-size:13px;font-weight:700;background:#7cc4ff;color:#0b1220}
#ctlBtn:disabled{opacity:.5}
#ctlMsg{font-size:11.5px;color:#ffb86b;margin-top:8px;min-height:14px}
#ctlQ{font-size:11.5px;color:#cfd5e4;margin:10px 0 0}
#ctlQ .q{border:1px solid rgba(255,255,255,.10);border-radius:10px;padding:8px;margin-top:6px;background:rgba(255,255,255,.03)}
#ctlQ .q .m{font-size:11px;color:#9aa3b5;margin-top:3px}
#ctlQ .q .b{display:flex;gap:6px;margin-top:6px}
#ctlQ .q .b button{flex:1;border:0;border-radius:8px;padding:6px;font-size:11.5px;font-weight:600}
#ctlQ .q .b .ok{background:#5ad19a;color:#07231a}
#ctlQ .q .b .tm2{background:#ffd166;color:#2a2003}
#ctlQ .q .b .no{background:#ff6b6b;color:#2a0505}
#ctlStopAll{border:1px solid rgba(255,93,93,.5);background:rgba(255,93,93,.12);color:#ff9c9c;border-radius:10px;padding:8px;font-size:12px;font-weight:600;width:100%;margin-top:10px}
#ctlSet{margin-top:8px}
#ctlSet .r{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 0;border-bottom:1px solid rgba(255,255,255,.06);font-size:12.5px;color:#dfe3ee}
#ctlSet .r:last-child{border-bottom:0}
#ctlSet .chip{font-size:11.5px;border:1px solid rgba(255,255,255,.14);border-radius:8px;padding:4px 9px;color:#cfd5e4}
#ctlSet .chip.on{color:#0b1220;background:#5ad19a;border-color:#5ad19a;font-weight:600}
body.compact #ctlTicket{bottom:calc(var(--nav-h,56px) + env(safe-area-inset-bottom,0px) + 6px)}
/* ctlregionui */
#ctlRegionWrap{position:fixed;inset:0;z-index:9997;display:none;background:transparent}
#ctlRegionWrap.on{display:block}
#ctlRegDim{position:absolute;inset:0;background:rgba(0,0,0,.12)}
#ctlRegBox{position:absolute;border:2px solid #7cc4ff;border-radius:12px;box-shadow:0 0 0 9999px rgba(0,0,0,.52);background:rgba(124,196,255,.08);touch-action:none}
#ctlRegBox .h{position:absolute;width:26px;height:26px;border-radius:8px;background:#7cc4ff;box-shadow:0 2px 8px rgba(0,0,0,.4)}
#ctlRegBox .h.tl{left:-13px;top:-13px}#ctlRegBox .h.tr{right:-13px;top:-13px}
#ctlRegBox .h.bl{left:-13px;bottom:-13px}#ctlRegBox .h.br{right:-13px;bottom:-13px}
#ctlRegBox .lbl{position:absolute;left:0;top:-24px;font-size:11px;color:#cfe8ff;background:rgba(10,20,30,.72);padding:2px 8px;border-radius:8px;white-space:nowrap}
#ctlRegBar{position:absolute;left:10px;right:10px;bottom:calc(env(safe-area-inset-bottom,0px) + 10px);background:rgba(18,22,30,.94);border:1px solid rgba(255,255,255,.12);border-radius:14px;padding:9px 10px;color:#dfe9f5;font-size:12px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
#ctlRegBar .t{opacity:.72;margin-right:2px}
#ctlRegBar button{border:0;border-radius:9px;padding:7px 10px;font-size:12px;background:rgba(124,196,255,.18);color:#cfe8ff}
#ctlRegBar button.on{background:#7cc4ff;color:#08111c;font-weight:700}
#ctlRegBar button.ok{background:#5be3a5;color:#062018;font-weight:700;margin-left:auto}
#ctlRegHint{position:absolute;left:10px;right:10px;top:calc(env(safe-area-inset-top,0px) + 12px);text-align:center;font-size:11px;color:#cfe8ff;background:rgba(10,20,30,.72);padding:6px 10px;border-radius:10px}
/* ctlwxui */
#ctlWxSec{margin-top:10px;border-top:1px solid rgba(255,255,255,.08);padding-top:10px}
#ctlWxSec h4{margin:0 0 8px;font-size:13px;color:#fff;display:flex;align-items:center;gap:6px}
#ctlWxSec h4 .tag{font-size:10.5px;color:#9aa3b2;font-weight:400;border:1px solid rgba(255,255,255,.14);border-radius:7px;padding:1px 6px}
#ctlWxSec .wxstat{font-size:11.5px;color:#9aa3b2;margin-bottom:8px;line-height:1.5}
#ctlWxSec .wxwho{display:flex;gap:6px;margin-bottom:8px}
#ctlWxSec .wxwho button{flex:1;border:1px solid rgba(255,255,255,.14);background:#1b1e28;color:#cfd5e4;border-radius:9px;padding:7px 0;font-size:12.5px}
#ctlWxSec .wxwho button.on{background:#c792ea;border-color:#c792ea;color:#12081c;font-weight:700}
#ctlWxSec textarea{width:100%;box-sizing:border-box;min-height:64px;resize:vertical;border:1px solid rgba(255,255,255,.14);border-radius:10px;background:#0f1117;color:#e8edf7;padding:9px 10px;font-size:13px;line-height:1.5}
#ctlWxSec .wxrow{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:11.5px;color:#9aa3b2}
#ctlWxSec .wxrow .sp{flex:1}
#ctlWxSec button.wx-btn{border:0;border-radius:10px;padding:9px 14px;font-size:12.5px;font-weight:700;background:#c792ea;color:#140a20}
#ctlWxSec button.wx-btn[disabled]{opacity:.45}
#ctlWxSec button.wx-chip{border:1px solid rgba(255,255,255,.14);background:#1b1e28;color:#cfd5e4;border-radius:8px;padding:4px 10px;font-size:11.5px}
#ctlWxSec button.wx-chip.on{background:#5ad19a;border-color:#5ad19a;color:#062018;font-weight:700}
#ctlWxSec .wxmsg{font-size:11.5px;margin-top:8px;color:#ffd479;min-height:16px;line-height:1.5}
#ctlWxList{margin-top:10px;display:flex;flex-direction:column;gap:6px}
#ctlWxList .it{display:flex;gap:8px;align-items:flex-start;background:#12151d;border:1px solid rgba(255,255,255,.06);border-radius:10px;padding:7px 8px}
#ctlWxList .it img{width:34px;height:60px;object-fit:cover;border-radius:6px;flex:0 0 auto;background:#0b0d12}
#ctlWxList .it .bd{flex:1;min-width:0}
#ctlWxList .it .t{font-size:11.5px;color:#cbd3e1;line-height:1.45;word-break:break-all}
#ctlWxList .it .m{font-size:10.5px;color:#7d8698;margin-top:2px}
#ctlWxList .it.bad .t{color:#ffb3b3}
/* ctlschui */
#ctlSched{margin:10px 0 12px;padding:10px 12px;border-radius:14px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.10)}
#ctlSched .schhd{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
#ctlSched .schhd b{font-size:14px;color:#fff}
#ctlSched .schstat{font-size:11px;color:#9fb0c8}
#ctlSched .schbtns{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 8px}
#ctlSched .schbtn{font-size:12px;padding:6px 10px;border-radius:999px;border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.06);color:#dfe7f3;cursor:pointer}
#ctlSched .schbtn.on{background:#2f6f4f;border-color:#3ea06e;color:#fff}
#ctlSched .schttl{font-size:11px;color:#8fa1b8;margin:8px 0 4px;letter-spacing:.5px}
#ctlQList .qrow,#ctlDayRows .drow{display:flex;align-items:baseline;gap:6px;padding:5px 0;border-top:1px solid rgba(255,255,255,.06);font-size:12px;line-height:1.35}
#ctlQList .qrow:first-child,#ctlDayRows .drow:first-child{border-top:0}
#ctlQList .qnm,#ctlDayRows .dnm{color:#fff;min-width:44px}
#ctlQList .qab,#ctlDayRows .dab{color:#9ad0ff}
#ctlQList .qsc{margin-left:auto;color:#ffd27a;font-size:11px}
#ctlQList .qwhy,#ctlDayRows .dwhy{color:#8fa1b8;font-size:11px;width:100%}
#ctlDayRows .dt{color:#9fb0c8;min-width:40px}
#ctlSched .schempty{font-size:12px;color:#8fa1b8;padding:6px 0}
/* u02css */
/* U02 登录页：分段控件 + 输入聚焦态 */
#authView .tabs{position:relative;background:#0e151f;border:1px solid var(--line);border-radius:12px;padding:4px;gap:0;overflow:hidden;margin-bottom:16px}
#authView .tabs button{flex:1;padding:9px 6px;border:0!important;background:transparent!important;color:var(--dim);border-radius:9px;position:relative;z-index:2;font-weight:500;transition:color .18s ease,transform .12s ease}
#authView .tabs button.on{color:var(--txt)!important}
#authView .tabs button:active{transform:scale(.97)}
#authView .tabs .u02seg{position:absolute;z-index:1;top:4px;bottom:4px;left:4px;width:calc(50% - 6px);border-radius:9px;background:linear-gradient(180deg,#26364c,#1a2432);box-shadow:inset 0 1px 0 rgba(255,255,255,.07),0 2px 10px rgba(0,0,0,.4),0 0 0 1px rgba(96,165,250,.22);transition:transform .26s cubic-bezier(.22,.9,.28,1)}
#authView .tabs .u02seg.r{transform:translateX(calc(100% + 6px))}
#authView .field input,#authView .field select{transition:border-color .16s ease,box-shadow .16s ease,background .16s ease}
#authView .field input:focus,#authView .field select:focus{outline:0;border-color:rgba(96,165,250,.7);box-shadow:0 0 0 3px rgba(96,165,250,.15);background:#131c29}
#authView .btn:active{transform:scale(.985)}
#authView .btn{transition:transform .12s ease,filter .16s ease}
/* m40css */
#m40chip{position:fixed;left:12px;bottom:calc(env(safe-area-inset-bottom,0px) + 96px);z-index:24;display:none;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;background:rgba(20,30,44,.92);color:#9fe3b0;font:600 12px/1 var(--font, system-ui);border:1px solid rgba(96,220,150,.35)}
/* v169safe */
:root{--ins-t:0px;--ins-b:0px}
body.compact #appView>header{padding-top:calc(6px + var(--ins-t))!important}
body:not(.compact) #appView>header{padding-top:calc(12px + var(--ins-t))!important}
#authView,body.prof-open header{padding-top:calc(var(--ins-t))!important}
#tabBar{height:calc(var(--nav-h) + var(--ins-b))!important;padding-bottom:var(--ins-b)!important;box-sizing:border-box!important}
main{padding-bottom:calc(var(--nav-h) + var(--ins-b))!important}
body.compact main{padding-bottom:calc(var(--nav-h) + var(--ins-b))!important}
/* v170host */
#ctlHostNote.warn{color:#ff9b9b!important}
/* v171inst */
#ctlInstQuick{margin:6px 0 2px}
#ctlInstQuick .iqTip{font-size:11.5px;color:#9fb3c8;line-height:1.5;margin:2px 0 6px}
#ctlInstQuick .iqRow{display:flex;gap:8px;flex-wrap:wrap}
#ctlInstQuick .iqBtn{flex:0 0 auto;font-size:12px;padding:7px 12px;border-radius:10px;border:1px solid rgba(96,165,250,.45);background:rgba(96,165,250,.12);color:#cfe3ff}
#ctlInstQuick .iqBtn:active{transform:scale(.97)}
/* v171ctlcss */
#ctlToast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(env(safe-area-inset-bottom,0px) + 150px);z-index:9999;max-width:82vw;padding:10px 14px;border-radius:12px;background:rgba(20,30,44,.96);border:1px solid rgba(96,165,250,.45);color:#e6f0ff;font-size:13px;line-height:1.5;box-shadow:0 8px 24px rgba(0,0,0,.4);opacity:0;transition:opacity .2s}
#ctlToast.on{opacity:1}
/* v172ui */
/* v1.72 UI 体检修正：触控尺寸 / 横向溢出 / 底部避让 */
#chanBar{ padding-right:14px!important; }
#chanBar .chchip, #chanBar .chchip.plus{ min-height:40px!important; height:auto!important; padding-top:7px!important; padding-bottom:7px!important; }
#chanBar .chchip .cav{ width:24px!important; height:24px!important; }
#appView > header #moreBtn, #appView > header .btn, #appView > header .iconbtn{ min-width:40px!important; min-height:40px!important; }
#toolbar .iconbtn, #funSearch, #sideClose{ min-width:40px!important; min-height:40px!important; }
#composer button.btn{ min-height:40px!important; }
#setBody .chip, #setBody .setrow .chip, #ctlSheet .chip, .chip.st, .chip.md{ min-height:38px!important; padding-top:7px!important; padding-bottom:7px!important; }
#setBody input, #ctlSheet input, #ctlSheet select{ min-height:40px!important; }
#setBody .setrow{ min-height:54px!important; }
#setBody{ padding-bottom:calc(var(--nav-h) + var(--ins-b) + 28px)!important; }
#ctlSheet button, #ctlSheet .cap, #ctlSheet .wx-chip, #ctlSheet .wx-btn{ min-height:40px!important; }
#ctlWxAuto{ min-width:44px!important; }
#ctlStopAll, #ctlWxSend, #ctlWxArrange{ min-height:42px!important; }
.cap, .fcard, .mrow, .pfitem{ min-height:44px!important; }
main{ padding-bottom:calc(var(--nav-h) + var(--ins-b) + 10px)!important; }
#tabBar button{ min-height:54px!important; }

/* v1.72b：设置页/各弹层按钮与关闭按钮尺寸 */
#setBody .btn, #setBody .btn.ghost, #setBody .btn.sm, #setBody button.btn{ min-height:38px!important; padding-top:8px!important; padding-bottom:8px!important; }
#setBody .setpage .btn{ min-width:72px!important; }
#stkClose, #voiceClose, #metricsClose, #setClose, #sideClose, #morePopClose, .sheet .close{ min-width:36px!important; min-height:36px!important; }
#stkMore, #metricsMore, #voiceReset, #voiceSave, #metricsReset{ min-height:38px!important; }
#houseChip, #petChip, #voiceChip, #avChip, #stkChip, #voicePick{ min-height:40px!important; padding-top:8px!important; padding-bottom:8px!important; }
#ctlSheet .chip, #ctlSheet button.btn{ min-height:40px!important; }
/* v172c */
/* v1.72c：最高优先级触控尺寸兜底（压过 #setBody .chip{min-height:38px} 这类更早的 !important 规则） */
html body #setBody .btn, html body #setBody button.btn, html body #setBody .btn.ghost, html body #setBody .btn.sm{
  min-height:40px!important; height:auto!important; padding-top:9px!important; padding-bottom:9px!important;
}
html body #setBody .tabs .btn{ min-height:40px!important; height:auto!important; }
html body #setBody #houseChip, html body #setBody #petChip, html body #setBody #voiceChip, html body #setBody #avChip,
html body #setBody #stkChip, html body #setBody #voicePick, html body #setBody .chip{
  min-height:40px!important; height:40px!important; padding-top:7px!important; padding-bottom:7px!important;
}
html body #stkClose, html body #voiceClose, html body #metricsClose, html body #setClose,
html body #sideClose, html body #morePopClose, html body .sheet .close{
  min-width:40px!important; min-height:40px!important; width:40px!important; height:40px!important; padding:0!important;
}
html body #stkMore, html body #metricsMore, html body #voiceReset, html body #voiceSave, html body #metricsReset{
  min-height:40px!important; height:auto!important; padding-top:9px!important; padding-bottom:9px!important;
}
html body #ctlSheet button, html body #ctlSheet .cap, html body #ctlSheet .chip, html body #ctlSheet .wx-chip, html body #ctlSheet .wx-btn{
  min-height:40px!important;
}
html body #ctlSheet #ctlStopAll, html body #ctlSheet #ctlWxSend, html body #ctlSheet #ctlWxArrange{
  min-height:44px!important;
}
html body #tabBar button{ min-height:54px!important; }
/* v172d */
/* v1.72d：设置页分组页签（#setPane .settabs .btn，不在 #setBody 内）*/
html body #setPane .settabs .btn{
  min-height:40px!important; height:auto!important;
  padding:10px 12px!important; line-height:20px!important;
}
html body #setPane .settabs{ gap:8px!important; flex-wrap:wrap!important; }
/* 其它零散小目标 */
html body #setHost .setcard .chip, html body #setHost .setcard .chip.sm{ min-height:40px!important; height:auto!important; }
/* v172e */
/* v1.72e：设置页底部避让 + 浮标不挡点击 */
html body #m40chip{ pointer-events:none!important; opacity:.82!important; }
html body #setPane .tp-body{ padding-bottom:calc(var(--nav-h) + var(--ins-b) + 28px)!important; }
html body #setPane .tabpane{ padding-bottom:calc(var(--nav-h) + var(--ins-b) + 20px)!important; }
html body #setPane .setpage.on{ height:auto!important; min-height:0!important; padding-bottom:calc(var(--nav-h) + var(--ins-b) + 16px)!important; }
html body #setPane .setbody{ padding-bottom:calc(var(--nav-h) + var(--ins-b) + 16px)!important; }
/* v174ui */
/* v1.74 UI 收口：工具栏图标 36→42、弹层关闭按钮、触控目标统一 ≥40 */
html body #toolbar .iconbtn,html body #themeBtn,html body #btnMore,html body #micBtn,html body #camBtn,html body #stkBtn,html body #videoBtn{width:42px!important;height:42px!important;min-width:42px!important;min-height:42px!important;font-size:19px!important}
html body #toolbar{gap:10px!important;padding:6px 8px!important}
html body #toolbar .iconbtn svg,html body #toolbar .iconbtn img{width:22px!important;height:22px!important}
html body #appView>header button{min-width:40px;min-height:40px}
html body #rcClose,html body #quoteCancel,html body .sheet .close,html body #morePopClose{min-height:42px!important}
html body #quoteCancel{min-width:88px!important}
html body #muteWhoChip,html body #notifyChip,html body #growthChip,html body #annivChip,html body #metricsChip,html body #houseChip,html body #petChip,html body #voiceChip,html body #avChip,html body #stkChip,html body #voicePick{min-width:56px!important;padding-left:10px!important;padding-right:10px!important}
html body #funPane .tp-body,html body #setPane .tp-body,html body .tp-body{padding-bottom:calc(var(--nav-h) + 96px)!important}
html body #appView{overflow:hidden!important}
/* v178ui */
/* v1.78：设置/系统页零头控件收口 */
html body #ctlSmsSave,html body #ctlLaodaSave{min-width:46px!important;width:46px!important;min-height:42px!important}
html body #ctlAuditExp,html body #ctlSetOpen2,html body #ctlSetStop2{max-width:100%!important;box-sizing:border-box!important}
html body #ctlSheet .setrow,html body #setPane .setrow{max-width:100%!important}
html body #setPane .tp-body,html body #setPane .tabpane{box-sizing:border-box!important}
/* v179ui */
/* v1.79：设置/系统页 .r 行内按钮溢出（317px 宽 + 21px 偏移 = 超出视口 2px）→ 允许换行、按钮吃满整行 */
html body #setPane .r,html body #ctlSheet .r{flex-wrap:wrap!important}
html body #setPane .r>*,html body #ctlSheet .r>*{min-width:0!important}
html body #ctlAuditExp,html body #ctlSetOpen2,html body #ctlSetStop2,html body #ctlRegionSetBtn{width:auto!important;flex:1 1 100%!important;max-width:100%!important;margin-left:0!important}
/* v180ui */
/* v1.80 主题：只用变量，跟随系统 / 自定义配色 */
#themeSheet{height:auto!important;max-height:80dvh!important;display:flex!important;flex-direction:column!important;padding-bottom:env(safe-area-inset-bottom,0px)}
#themeSheet .sheet-card{max-height:80dvh;display:flex;flex-direction:column;min-height:0}
#themeSheet .thead{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line)}
#themeSheet .thead b{flex:1;font-size:15px}
#themeSheet .tbody{overflow:auto;padding:12px 14px 18px}
#themeSheet .tlab{font-size:12px;color:var(--dim);margin:12px 0 8px}
#themeSheet .tlab:first-child{margin-top:0}
#themeSheet .trow{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
#themeSheet .tchip{min-height:42px;min-width:88px;justify-content:center;display:inline-flex;align-items:center;
  background:var(--bg3);color:var(--txt);border:1px solid var(--line);border-radius:12px;font-size:13px}
#themeSheet .tchip.on{background:var(--acc);color:#062033;border-color:var(--acc);font-weight:700}
#themeSheet .tgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
#themeSheet .tpreset{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 6px;
  border:1px solid var(--line);border-radius:14px;background:var(--bg2);color:var(--txt);font-size:12px;min-height:86px;justify-content:center}
#themeSheet .tpreset.on{border-color:var(--acc);box-shadow:0 0 0 1px var(--acc) inset}
#themeSheet .tpreset i{display:block;width:46px;height:46px;border-radius:50%;border:1px solid var(--line)}
#themeSheet .tpreset small{color:var(--dim);font-size:11px}
#themeSheet .tcustomrow{display:none;margin-top:12px;padding:10px;border:1px dashed var(--line);border-radius:12px}
#themeSheet .tcustomrow.on{display:block}
#themeSheet .tc{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 0;font-size:13px;color:var(--txt)}
#themeSheet input[type=color]{width:54px;height:42px;padding:0;border:1px solid var(--line);border-radius:10px;background:transparent}
#themeSheet .thint{font-size:12px;color:var(--dim);line-height:1.6;margin-top:12px}
#themeSheet .tmini{display:inline-flex;gap:8px;flex-wrap:wrap}
#themeSheet .tmini .tchip{min-width:72px}
html[data-theme="light"] .msg .bubble{background:var(--bg2);border-color:var(--line)}
html[data-theme="light"] header{background:var(--bg2)}
html[data-theme="light"] .sheet{background:var(--bg2)}
html[data-theme="light"] #chanBar .chchip{background:var(--bg3);color:var(--txt)}
html,body{background:var(--bg)}
/* v181css */
/* v1.81：⋯ 菜单收敛（只留常用）+ 设置页新增行样式 */
html body #moreMenu .mrow{min-height:46px!important;font-size:15px!important;padding-top:10px!important;padding-bottom:10px!important}
html body #moreMenu .mrow .sp{font-weight:500}
html body #setBody .setpage[data-p="more"] .setrow{min-height:52px}
/* v182light */
/* v1.82 浅色主题统一修正：把仍然写死深色的组件改成跟随主题变量 */

:root{--ok-bg:#e7f4ea;--ok-fg:#1a7f37;--ok-line:#b7dfc2;--warn-bg:#fff5db;--warn-fg:#8a5b00;--warn-line:#f0d68a;--bad-bg:#fdecec;--bad-fg:#b42318;--bad-line:#f3b9b6;--press:#dce6f3}
html[data-theme="light"] #tabBar{background:var(--bg2)!important;border-top:1px solid var(--line)!important;box-shadow:0 -2px 14px rgba(20,40,70,.06)!important}
html[data-theme="light"] #tabBar .nitem{color:var(--dim)!important}
html[data-theme="light"] #tabBar .nitem.on{color:var(--acc)!important}
html[data-theme="light"] #tabBar .nitem.press{color:var(--txt)!important}
html[data-theme="light"] #tabBar .nitem.press::after{background:radial-gradient(circle,rgba(47,127,212,.18),transparent 70%)!important}
html[data-theme="light"] #tabBar .nitem.on::before{box-shadow:0 0 10px rgba(47,127,212,.30)!important}
html[data-theme="light"] #appView>header{background:var(--bg2)!important;border-bottom:1px solid var(--line)!important}
html[data-theme="light"] #setTabs .btn{background:var(--bg3)!important;color:var(--dim)!important;border-color:var(--line)!important}
html[data-theme="light"] #setTabs .btn.on{background:var(--acc)!important;color:#fff!important;border-color:var(--acc)!important}
html[data-theme="light"] .setrow{color:var(--dim)!important}
html[data-theme="light"] .setrow b,html[data-theme="light"] .setrow strong,html[data-theme="light"] .setrow .v{color:var(--txt)!important}
html[data-theme="light"] .chip{background:var(--bg3)!important;color:var(--dim)!important;border-color:var(--line)!important}
html[data-theme="light"] .chip.on{background:var(--ok-bg)!important;color:var(--ok-fg)!important;border-color:var(--ok-line)!important}
html[data-theme="light"] .chip.nfold,html[data-theme="light"] .chip.nlv,html[data-theme="light"] span.chip.nfold{background:var(--ok-bg)!important;color:var(--ok-fg)!important;border-color:var(--ok-line)!important}
html[data-theme="light"] #notifyChip{background:var(--ok-bg)!important;color:var(--ok-fg)!important;border-color:var(--ok-line)!important}
html[data-theme="light"] #appStateChip{background:var(--ok-bg)!important;color:var(--ok-fg)!important;border-color:var(--ok-line)!important}
html[data-theme="light"] #bannerChip{background:var(--ok-bg)!important;color:var(--ok-fg)!important;border-color:var(--ok-line)!important}
html[data-theme="light"] #m40chip{background:var(--bg3)!important;color:var(--ok-fg)!important;border-color:var(--ok-line)!important;opacity:.95!important}
html[data-theme="light"] #metricsChip{color:var(--bad-fg)!important}
html[data-theme="light"] #phoneUiChip{color:var(--dim)!important}
html[data-theme="light"] .mem{background:var(--bg3)!important;color:var(--txt)!important;border-color:var(--line)!important}
html[data-theme="light"] #quietFrom,html[data-theme="light"] #quietTo{background:var(--bg3)!important;color:var(--txt)!important;border-color:var(--line)!important}
html[data-theme="light"] #sideClose,html[data-theme="light"] .sheet .close,html[data-theme="light"] #morePopClose{background:var(--bg3)!important;color:var(--txt)!important}
html[data-theme="light"] .pfitem{background:var(--bg2)!important;color:var(--txt)!important;border-color:var(--line)!important}
html[data-theme="light"] #profPane{background:var(--bg)!important;color:var(--txt)!important}
html[data-theme="light"] #profPane *{color:inherit}
html[data-theme="light"] #profPane .pfName,html[data-theme="light"] #profPane b{color:var(--txt)!important}
html[data-theme="light"] #profPane .dim,html[data-theme="light"] #profPane .pfBio,html[data-theme="light"] #profPane small{color:var(--dim)!important}
html[data-theme="light"] #aiCallCard{color:var(--txt)!important;border-color:var(--line)!important;background:var(--bg2)!important}
html[data-theme="light"] #aiCallCard b,html[data-theme="light"] #aiCallCard .t{color:var(--txt)!important}
html[data-theme="light"] #aiCallCard small,html[data-theme="light"] #aiCallCard .s{color:var(--dim)!important}
html[data-theme="light"] #jiuVal{color:var(--txt)!important}
html[data-theme="light"] #pinBar{background:var(--bg3)!important;color:var(--dim)!important;border-color:var(--line)!important}
html[data-theme="light"] #moreMenu{background:rgba(16,26,40,.28)!important}
html[data-theme="light"] #moreMenu .mi,html[data-theme="light"] #moreMenu button{background:var(--bg2)!important;color:var(--txt)!important;border-color:var(--line)!important}
html[data-theme="light"] .vgroup{color:var(--dim)!important}
html[data-theme="light"] .cnt-on{color:var(--ok-fg)!important}
html[data-theme="light"] .who,html[data-theme="light"] .at{filter:brightness(.62) saturate(1.4)}
html[data-theme="light"] #ctlSheet{background:rgba(16,26,40,.34)!important}
html[data-theme="light"] #ctlSheet .tile,html[data-theme="light"] #ctlSheet .cap,html[data-theme="light"] #ctlSheet button.btn{background:var(--bg2)!important;color:var(--txt)!important;border-color:var(--line)!important}
html[data-theme="light"] #ctlSheet .cap{background:var(--bg3)!important}
html[data-theme="light"] #ctlSt,html[data-theme="light"] #ctlMd,html[data-theme="light"] #ctlNg,html[data-theme="light"] [id^="ctlOn_"],html[data-theme="light"] [id^="ctlCap_"],html[data-theme="light"] [id^="ctlWx"],html[data-theme="light"] #ctlStopAll,html[data-theme="light"] #ctlSetOpen2,html[data-theme="light"] #ctlSetStop2,html[data-theme="light"] #ctlRegionBtn,html[data-theme="light"] #ctlRegionSetBtn{background:var(--bg3)!important;color:var(--txt)!important;border-color:var(--line)!important}
html[data-theme="light"] #ctlNf,html[data-theme="light"] #ctlNt,html[data-theme="light"] #ctlSmsTo,html[data-theme="light"] #ctlLaoda,html[data-theme="light"] #ctlSheet input,html[data-theme="light"] #ctlSheet select,html[data-theme="light"] #ctlSheet textarea{background:var(--bg2)!important;color:var(--txt)!important;border-color:var(--line)!important}
html[data-theme="light"] #ctlTicket{background:var(--bg2)!important;color:var(--txt)!important;border-color:var(--line)!important}
html[data-theme="light"] #ctlToast{background:var(--bg2)!important;color:var(--txt)!important;border-color:var(--line)!important}
html[data-theme="light"] #toast{background:var(--bg2)!important;color:var(--txt)!important;border-color:var(--line)!important}
html[data-theme="light"] #dayView,html[data-theme="light"] #ctlDayRows,html[data-theme="light"] #ctlQList{color:var(--txt)!important}
html[data-theme="light"] #funPane .fcard{background:var(--bg2)!important}
html[data-theme="light"] #funSearch{background:var(--bg3)!important;color:var(--dim)!important;border-color:var(--line)!important}
html[data-theme="light"] #profileSheet,html[data-theme="light"] #memSheet,html[data-theme="light"] #stkSheet,html[data-theme="light"] #voiceSheet,html[data-theme="light"] #metricsSheet,html[data-theme="light"] #notifySheet{background:var(--bg2)!important;color:var(--txt)!important}
html[data-theme="light"] #ctlsheet .cap,html[data-theme="light"] .tape{background:var(--bg3)!important;color:var(--txt)!important}
/* v182light2 */
html[data-theme="light"] #moreMenu .mbox{background:var(--bg2)!important;border-color:var(--line)!important}
html[data-theme="light"] #moreMenu .mrow,html[data-theme="light"] #moreMenu .sp,html[data-theme="light"] #moreMenu .sub,html[data-theme="light"] #mAccel{background:transparent!important;color:var(--dim)!important}
html[data-theme="light"] #chanBar .cav{background:var(--bg3)!important;color:var(--txt)!important}
html[data-theme="light"] #funPane img,html[data-theme="light"] .fcard img{background:var(--bg3)!important}
html[data-theme="light"] #callCard,html[data-theme="light"] #callCard b,html[data-theme="light"] #callWrap b{color:var(--txt)!important}
html[data-theme="light"] #callPick button.btn{color:#fff!important}
html[data-theme="light"] #ctlSheet .hd,html[data-theme="light"] #ctlSheet .sec,html[data-theme="light"] #ctlSheet label,html[data-theme="light"] #ctlSheet span{color:var(--txt)!important}
html[data-theme="light"] #ctlSheet .cap{color:var(--txt)!important}
html[data-theme="light"] .setpage,html[data-theme="light"] .setcard,html[data-theme="light"] .setbody{color:var(--txt)!important}
/* v182light3 */
html[data-theme="light"] .bubble .at,html[data-theme="light"] span.at{color:var(--acc)!important}
html[data-theme="light"] .pfitem b,html[data-theme="light"] #famGrid b{color:var(--txt)!important}
html[data-theme="light"] #ctlSet .r,html[data-theme="light"] #ctlSet .r span,html[data-theme="light"] #ctlSet label{color:var(--txt)!important}
html[data-theme="light"] #metricsSheet,html[data-theme="light"] #metricsSheet span,html[data-theme="light"] #metricsSheet b{color:var(--dim)!important}
html[data-theme="light"] #metricsSheet .k,html[data-theme="light"] #metricsSheet .v{color:var(--txt)!important}
/* v182light4 */
html[data-theme="light"] #toolbar,html[data-theme="light"] #toolbar .iconbtn,html[data-theme="light"] .iconbtn{background:var(--bg3)!important;color:var(--txt)!important;border-color:var(--line)!important}
html[data-theme="light"] #toolbar .iconbtn:active{background:var(--press)!important}
html[data-theme="light"] #composer .iconbtn,html[data-theme="light"] #composer button{color:var(--txt)!important}
/* v182f */
html body .iconbtn{color:var(--txt)!important}
html body #composer button[type=submit]{color:var(--acc-fg)!important}
html body #ctlNsave,html body #ctlSmsSave,html body #ctlLaodaSave,
html body #setSave,html body #voiceSave,html body .btn.primary,
html body button.btn[data-primary]{color:var(--acc-fg)!important}
/* v183chat */
/* v1.83 聊天输入栏：仿微信 [🎤][输入框][＋]，＋ 在最右，展开功能面板 */
html body #composer #btnMore,html body #composer #themeBtn{display:none!important}
html body #composer{position:sticky}
html body #chatPlus{width:42px!important;height:42px!important;min-width:42px;flex:0 0 42px;border:1px solid var(--line);background:var(--bg3);color:var(--txt);border-radius:13px;font-size:22px;line-height:1;display:flex;align-items:center;justify-content:center;transition:transform .18s cubic-bezier(.2,.8,.2,1),background .15s;padding:0}
html body #chatPlus:active{transform:scale(.94);background:var(--press,#dce6f3)}
html body #chatPlus.open{transform:rotate(45deg);background:var(--acc);color:var(--acc-fg,#fff)!important;border-color:transparent;box-shadow:0 2px 10px rgba(0,0,0,.12)}
html body #composer button[type=submit]{display:none}
html body #composer.has-draft button[type=submit]{display:inline-block}
html body #composer.has-draft #chatPlus{display:none!important}

html body #chatPanel{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:12px 12px 14px;border-top:1px solid var(--line);background:var(--bg2);flex:0 0 auto;animation:cpIn .17s cubic-bezier(.2,.8,.2,1)}
@keyframes cpIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
html body #chatPanel[hidden]{display:none!important}
html body #chatPanel:not([hidden]){border-radius:0;border-top:1px solid var(--line);box-shadow:0 -1px 0 rgba(0,0,0,.02)}
html body #chatPanel .cpt{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:76px;padding:8px 2px;border:1px solid var(--line);border-radius:15px;background:var(--bg3);color:var(--txt);cursor:pointer;transition:transform .12s,background .15s}
html body #chatPanel .cpt:active{transform:scale(.95);background:var(--press,#dce6f3)}
html body #chatPanel .cpt .pi{font-size:23px;line-height:1}
html body #chatPanel .cpt .pl{font-size:11.5px;line-height:1;color:var(--dim)}
html body #chatPanel .cpt.hot .pi{filter:none}
/* v186ui */
html body #chatPanel:not([hidden]){border-radius:0 0 18px 18px!important}
body.v186-panel-open #composer{position:static!important;bottom:auto!important;margin-bottom:0!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}
body.v186-panel-open #chatPanel:not([hidden]){border-bottom-left-radius:18px!important;border-bottom-right-radius:18px!important}

html body #composer{position:sticky!important;bottom:0!important;top:auto!important;border-bottom-left-radius:16px!important;border-bottom-right-radius:16px!important}
body:has(#chatPanel:not([hidden])) #composer{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}
html body #chatPanel:not([hidden]){margin:0!important;border-radius:0 0 18px 18px!important;border-top:1px solid var(--line)!important;box-shadow:0 8px 22px rgba(0,0,0,.10)!important}
html body #chatPanel[hidden]{display:none!important}
/* v187pin-css */
html{scroll-behavior:auto}
/* v188css */
#guestSheet{position:fixed;inset:0;z-index:9998;display:none;align-items:flex-end;justify-content:center;background:rgba(0,0,0,.5)}
#guestSheet.open{display:flex}
#guestSheet .gwrap{width:100%;max-width:520px;max-height:78vh;display:flex;flex-direction:column;background:var(--bg2,#151a21);border:1px solid var(--line,#2a3038);border-radius:18px 18px 0 0;padding:14px 14px 10px}
#guestSheet .ghead{display:flex;align-items:center;justify-content:space-between;color:var(--txt,#e6edf3);font-size:16px;padding:2px 4px 10px}
#guestSheet .ghead b{font-weight:600}
#guestSheet .gx{width:36px;height:36px;border-radius:50%;border:1px solid var(--line,#2a3038);background:var(--bg3,#1b232c);color:var(--txt,#e6edf3);font-size:15px;cursor:pointer}
#guestSheet .glist{overflow:auto;flex:1;min-height:80px}
#guestSheet .grow{display:flex;align-items:center;gap:10px;padding:10px 4px;border-bottom:1px solid var(--line,#2a3038)}
#guestSheet .gav{position:relative;width:40px;height:40px;flex:0 0 40px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--bg3,#1b232c);color:var(--txt,#e6edf3);font-size:16px}
#guestSheet .gav i{position:absolute;right:-1px;bottom:-1px;width:10px;height:10px;border-radius:50%;border:2px solid var(--bg2,#151a21)}
#guestSheet .gav i.gon{background:#3ddc84}
#guestSheet .gav i.goff{background:#6b7785}
#guestSheet .gmeta{flex:1;min-width:0;color:var(--txt,#e6edf3)}
#guestSheet .gt{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#guestSheet .gs{font-size:12px;color:var(--dim,#9aa5b1);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#guestSheet .gkick{flex:0 0 auto;height:38px;padding:0 14px;border-radius:10px;border:1px solid rgba(244,99,99,.5);background:rgba(244,99,99,.12);color:#ff8a8a;font-size:14px;cursor:pointer}
#guestSheet .gkick:active{transform:scale(.96)}
#guestSheet .gempty{color:var(--dim,#9aa5b1);font-size:13px;line-height:1.7;text-align:center;padding:24px 10px}
#guestSheet .gfoot{color:var(--dim,#9aa5b1);font-size:12px;padding:8px 4px 2px}
#gToast{position:fixed;left:50%;bottom:96px;transform:translate(-50%,12px);z-index:9999;background:rgba(20,26,33,.96);color:#e6edf3;border:1px solid #2a3038;padding:9px 16px;border-radius:12px;font-size:13px;opacity:0;pointer-events:none;transition:opacity .18s,transform .18s}
#gToast.on{opacity:1;transform:translate(-50%,0)}
/* v189css */
/* P0-2 聊天字号（html body 提升权重，压过 body.compact 的 !important 规则） */
html body.compact .msg{font-size:var(--chat-fs,14px)!important;line-height:var(--chat-lh,1.45)!important}
html body .msgs .msg{font-size:var(--chat-fs,15px);line-height:var(--chat-lh,1.5)}
/* P0-4 发送失败 */
.msg.failed .bubble{opacity:.9;border-color:#e5484d!important;background:rgba(229,72,77,.12)!important}
.msg.failed .meta::after{content:" · 发送失败，点气泡重试";color:#ff8085;font-size:11px}
.msg.failed{cursor:pointer}
/* P0-1 访客选择 */
#v189GuestPick{position:fixed;inset:0;z-index:70;background:rgba(4,8,14,.55);display:flex;align-items:flex-end;
  animation:v189fade .16s ease}
#v189GuestPick .gpc{width:100%;max-height:64vh;display:flex;flex-direction:column;border-radius:18px 18px 0 0;
  background:var(--bg2,#101820);border-top:1px solid var(--line,#232a33);padding:6px 0 calc(10px + env(safe-area-inset-bottom,0px))}
#v189GuestPick .gphd{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--line,#232a33)}
#v189GuestPick .gphd b{flex:1;font-size:15px}
#v189GuestPick .gplist{overflow:auto;padding:4px 8px}
#v189GuestPick .gprow{width:100%;display:flex;align-items:center;gap:10px;padding:12px 8px;background:none;border:0;
  border-radius:12px;color:var(--txt);text-align:left}
#v189GuestPick .gprow:active{background:var(--bg3)}
#v189GuestPick .gprow.on{background:rgba(124,196,255,.10)}
#v189GuestPick .gpav{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:var(--bg3);font-size:14px;font-weight:700;flex:0 0 auto}
#v189GuestPick .gpn{flex:1;font-size:14.5px}
#v189GuestPick .gpgo{color:var(--dim);font-size:18px}
#v189GuestPick .gptip{padding:8px 16px 2px;font-size:11.5px;line-height:1.5;color:var(--dim)}
@keyframes v189fade{from{opacity:0}to{opacity:1}}
/* 字号设置行 */
.fsrow{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.fschip{font-size:12px;padding:5px 11px;border-radius:999px;border:1px solid var(--line);background:var(--bg3);color:var(--dim)}
.fschip.on{background:var(--acc);color:var(--acc-fg);border-color:transparent;font-weight:700}
/* 通话选择卡（下半区） */
#v189CallBack{position:fixed;inset:0;z-index:61;background:rgba(4,8,14,.55);opacity:0;pointer-events:none;transition:opacity .18s}
#v189CallBack.on{opacity:1;pointer-events:auto}
#callWrap.pick{inset:auto 0 0 0;height:auto;max-height:70vh;overflow:auto;border-radius:22px 22px 0 0;
  background:var(--bg2,#101820);border-top:1px solid var(--line,#232a33);
  box-shadow:0 -18px 48px rgba(0,0,0,.6);padding:10px 16px calc(20px + env(safe-area-inset-bottom,0px));
  gap:10px;animation:v189Up .24s cubic-bezier(.22,.9,.28,1)}
@keyframes v189Up{from{transform:translateY(28px);opacity:.5}to{transform:none;opacity:1}}
#callWrap.pick #callFrame{display:none}
#callWrap.pick #callClose{position:static;align-self:flex-end;margin:0;background:var(--bg3);color:var(--txt);
  width:30px;height:30px;border-radius:50%;border:0;font-size:14px;line-height:1}
#callWrap.pick .v189cptt{font-size:16px;font-weight:800;letter-spacing:.3px}
#callWrap.pick .v189cpsub{font-size:12px;color:var(--dim);margin-top:-4px}
#callWrap.pick #callMode,#callWrap.pick #callPick{display:flex;gap:10px;flex-wrap:wrap}
#callWrap.pick #callPick .btn{flex:1 1 30%;min-width:0}
#callWrap.pick #callMode .btn{flex:1 1 40%;min-height:54px;border-radius:16px;
  font-size:15px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:6px}
#callWrap.pick #callMode .btn.on{border-color:var(--acc);box-shadow:0 0 0 2px rgba(124,196,255,.25)}
#callWrap.pick #callPick{opacity:.95}
/* v190css */
#v190Pill{position:fixed;right:14px;bottom:calc(96px + env(safe-area-inset-bottom,0px));z-index:52;
  background:var(--acc);color:var(--acc-fg);border:0;border-radius:999px;padding:9px 15px;font-size:12.5px;
  font-weight:700;box-shadow:0 8px 22px rgba(0,0,0,.35);animation:v190pop .18s ease}
@keyframes v190pop{from{transform:translateY(8px);opacity:0}to{transform:none;opacity:1}}
.v190back{position:fixed;inset:0;z-index:78;background:rgba(4,8,14,.55);display:flex;align-items:flex-end;animation:v190fade .16s}
@keyframes v190fade{from{opacity:0}to{opacity:1}}
.v190sheet{width:100%;max-height:72vh;display:flex;flex-direction:column;background:var(--bg2,#101820);
  border-top:1px solid var(--line,#232a33);border-radius:18px 18px 0 0;padding-bottom:env(safe-area-inset-bottom,0px)}
.v190hd{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--line,#232a33)}
.v190hd b{flex:1;font-size:15px}
.v190body{overflow:auto;padding:8px 14px 14px}
.v190row{display:flex;align-items:center;gap:10px;padding:12px 6px;border-bottom:1px solid var(--line,#1d242c);font-size:14px}
.v190row:last-child{border-bottom:0}
.v190row .k{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.v190row .v{color:var(--dim);font-size:11.5px;flex:0 0 auto}
.v190row .act{flex:0 0 auto;font-size:12px;padding:6px 12px;border-radius:999px;border:1px solid var(--line);
  background:var(--bg3);color:var(--txt)}
.v190act{display:flex;flex-direction:column;gap:2px;padding:4px}
.v190act button{display:flex;align-items:center;gap:10px;width:100%;padding:14px 12px;border:0;border-radius:12px;
  background:none;color:var(--txt);font-size:15px;text-align:left}
.v190act button:active{background:var(--bg3)}
.v190row input{background:var(--bg3);border:1px solid var(--line);color:var(--txt);border-radius:10px;
  padding:9px 10px;font-size:14px;width:100%;box-sizing:border-box}
#v190Img{position:fixed;inset:0;z-index:90;background:rgba(0,0,0,.94);display:flex;align-items:center;
  justify-content:center;overflow:hidden;touch-action:none}
#v190Img img{max-width:100%;max-height:100%;transition:transform .16s ease;will-change:transform}
#v190Img .bar{position:absolute;left:0;right:0;bottom:calc(14px + env(safe-area-inset-bottom,0px));display:flex;
  gap:10px;justify-content:center}
#v190Img .bar button{background:rgba(255,255,255,.12);color:#fff;border:0;border-radius:999px;padding:10px 16px;font-size:13px}
.v190empty{padding:28px 8px;text-align:center;color:var(--dim);font-size:13px;line-height:1.7}
/* v191css */
.v191row{display:flex;align-items:center;gap:10px;padding:10px 2px;border-bottom:1px solid var(--line)}
.v191row:last-child{border-bottom:0}
.v191nm{flex:1;min-width:0}
.v191nm b{display:block;font-size:14px;font-weight:600}
.v191nm small{display:block;font-size:12px;color:var(--dim);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v191badge{font-size:12.5px;padding:3px 9px;border-radius:999px;background:var(--bg3);border:1px solid var(--line);color:var(--txt);white-space:nowrap}
.v191badge.soon{background:rgba(255,209,102,.16);border-color:rgba(255,209,102,.45);color:#ffd166}
.v191bars{display:flex;align-items:flex-end;gap:6px;height:88px;margin:14px 0 6px}
.v191bars i{flex:1;background:var(--acc);opacity:.85;border-radius:6px 6px 2px 2px;min-height:3px;display:block}
.v191days{display:flex;gap:6px;font-size:10.5px;color:var(--dim);text-align:center}
.v191days span{flex:1}
.v191big{font-size:26px;font-weight:700;margin:4px 0 2px}
.v191sub{font-size:12.5px;color:var(--dim);line-height:1.6}
.v191tog{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.v191tog button{font-size:12.5px;padding:5px 10px;border-radius:999px;border:1px solid var(--line);background:var(--bg3);color:var(--dim);cursor:pointer}
.v191tog button.on{background:rgba(155,232,155,.18);border-color:rgba(155,232,155,.45);color:var(--green)}
.v191edit{display:flex;gap:8px;align-items:center;margin-top:8px;flex-wrap:wrap}
.v191edit input{flex:1 1 120px;min-width:0;padding:8px 10px;border-radius:10px;border:1px solid var(--line);background:var(--bg3);color:var(--txt);font-size:13px}
#v191Sheet{position:fixed;inset:0;z-index:88;background:rgba(0,0,0,.55);display:flex;align-items:flex-end}
#v191Sheet .s{width:100%;max-height:78vh;overflow:auto;background:var(--bg2);border-radius:20px 20px 0 0;padding:14px 16px 22px;border-top:1px solid var(--line)}
#v191Sheet .hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
#v191Sheet .hd b{font-size:15px}
.v191empty{font-size:13px;color:var(--dim);padding:14px 0;text-align:center}
.v191banner{display:flex;align-items:center;gap:8px;padding:8px 12px;font-size:13px;background:rgba(255,209,102,.14);border-bottom:1px solid rgba(255,209,102,.35);color:#ffd166}
.v191banner .chip{padding:3px 10px;font-size:12px}
/* v192css */
#v192Sheet{position:fixed;inset:0;z-index:120;background:rgba(0,0,0,.55);display:flex;align-items:flex-end;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}
#v192Sheet .s{width:100%;max-width:560px;max-height:80vh;background:var(--bg2,#141b24);border-radius:20px 20px 0 0;display:flex;flex-direction:column;border-top:1px solid var(--line,rgba(255,255,255,.12))}
#v192Sheet .hd{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 10px;border-bottom:1px solid var(--line,rgba(255,255,255,.1))}
#v192Sheet .hd b{font-size:16px}
#v192Sheet .body{overflow:auto;padding:12px 16px calc(18px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:10px}
#v192Sheet .card{background:var(--bg3,#1b2430);border:1px solid var(--line,rgba(255,255,255,.1));border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:6px}
#v192Sheet .card .t{font-weight:700;font-size:14px}
#v192Sheet .kv{display:flex;justify-content:space-between;gap:10px;font-size:13px;color:var(--dim,#9fb0c3)}
#v192Sheet .kv b{color:var(--txt,#e6edf3);font-weight:600}
#v192Sheet .devrow{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--bg3,#1b2430);border:1px solid var(--line,rgba(255,255,255,.1));border-radius:12px;padding:10px 12px}
#v192Sheet .devrow .l{display:flex;flex-direction:column;gap:3px;min-width:0}
#v192Sheet .devrow .n{font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#v192Sheet .devrow .s{font-size:12px;color:var(--dim,#9fb0c3)}
#v192Sheet .acts{display:flex;gap:8px;flex-wrap:wrap}
#v192Sheet .btn2{border:1px solid var(--line,rgba(255,255,255,.15));background:var(--bg3,#1b2430);color:var(--txt,#e6edf3);border-radius:10px;padding:9px 14px;font-size:13px}
#v192Sheet .btn2.go{background:var(--acc,#3d8bfd);color:var(--acc-fg,#fff);border-color:transparent;font-weight:600}
#v192Sheet .btn2.warn{color:#ff9a9a;border-color:rgba(255,120,120,.35)}
#v192Sheet .note{font-size:12px;color:var(--dim,#8b9bb0);line-height:1.6}
#v192Sheet .empty{font-size:13px;color:var(--dim,#8b9bb0);padding:10px 0}
/* v193css */
#v193Mask{position:fixed;inset:0;z-index:96;background:rgba(0,0,0,.55);display:flex;align-items:flex-end;justify-content:center}
#v193Card{width:100%;max-width:520px;background:var(--bg2,#151b23);color:var(--txt,#e6edf3);border-radius:18px 18px 0 0;padding:18px 16px calc(20px + env(safe-area-inset-bottom,0px));box-shadow:0 -8px 30px rgba(0,0,0,.45);border-top:1px solid var(--line,#2a3441)}
#v193Card h3{margin:0 0 6px;font-size:16.5px;display:flex;align-items:center;gap:8px}
#v193Card p{margin:0 0 12px;font-size:13px;color:var(--dim,#93a4b8);line-height:1.55}
#v193Card input{width:100%;box-sizing:border-box;padding:12px;border-radius:12px;border:1px solid var(--line,#2a3441);background:var(--bg3,#1b232d);color:var(--txt,#e6edf3);font-size:16px}
#v193Err{margin:8px 0 0;font-size:12.5px;color:#ff7b72;min-height:17px}
#v193Row{display:flex;gap:10px;margin-top:14px}
#v193Row button{flex:1;padding:12px;border-radius:12px;border:1px solid var(--line,#2a3441);background:var(--bg3,#1b232d);color:var(--txt,#e6edf3);font-size:15px}
#v193Row button.ok{background:var(--acc,#3fa9f5);color:var(--acc-fg,#0b1116);border-color:transparent;font-weight:600}
#v193Row button:disabled{opacity:.6}
/* v195css */
/* ---- TAB-FIX1: 功能页改成 2 列网格（窄屏）/3 列（宽屏） ---- */
#funPane{overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:calc(var(--nav-h,66px) + 18px)}
#funPane .fcard-grid{gap:10px}
#funPane .fcard{min-height:112px}
#funPane .mrow-list{margin-top:2px}
/* ---- TAB-AVATAR1: 三姐妹头像行 ---- */
#v195Sis{display:flex;gap:8px;margin:0 0 10px}
#v195Sis .s{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 4px 9px;border-radius:16px;background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.06);cursor:pointer;transition:transform .12s ease,background .15s ease}
#v195Sis .s:active{transform:scale(.96);background:rgba(255,255,255,.09)}
#v195Sis img{width:50px;height:50px;border-radius:15px;object-fit:cover;background:#16202b;display:block}
#v195Sis .n{font-size:13px;font-weight:600;line-height:1.15}
#v195Sis .r{font-size:11px;color:var(--dim,#8b9bb0);line-height:1.1;text-align:center}
html[data-theme="light"] #v195Sis .s{background:#fff;border-color:rgba(15,30,50,.08)}
html[data-theme="light"] #v195Sis img{background:#eef3f9}
/* ---- LOADING1 ---- */
#v195Load{position:fixed;inset:0;z-index:210;background:rgba(4,8,12,.35);display:flex;align-items:center;justify-content:center;backdrop-filter:blur(2px)}
#v195Load .sp{width:34px;height:34px;border-radius:50%;border:3px solid rgba(255,255,255,.22);border-top-color:var(--acc,#3d8bfd);animation:v195spin .7s linear infinite}
@keyframes v195spin{to{transform:rotate(360deg)}}
/* ---- HINT1: 空状态 ---- */
#v195Empty{padding:34px 16px;text-align:center;font-size:13px;color:var(--dim,#8b9bb0);line-height:1.9}
#v195Empty b{display:block;font-size:15px;color:var(--txt,#e6edf3);margin-bottom:6px}
/* ---- PSW1: 密码强度 ---- */
.v195psw{font-size:12px;line-height:1.4;margin:6px 0 2px;color:var(--dim,#8b9bb0)}
.v195psw i{font-style:normal;font-weight:600}
.v195psw .bar{display:block;height:4px;border-radius:3px;background:rgba(255,255,255,.12);margin-top:5px;overflow:hidden}
.v195psw .bar u{display:block;height:100%;width:0;border-radius:3px;transition:width .18s ease,background .18s ease}
/* ---- TAB-SYNC1: 有新版本提示 ---- */
#v195upd{position:fixed;left:50%;transform:translateX(-50%);top:calc(var(--ins-t,0px) + 56px);z-index:190;display:none;align-items:center;gap:8px;max-width:92vw;padding:8px 12px;border-radius:999px;background:rgba(61,139,253,.96);color:#fff;font-size:12.5px;box-shadow:0 6px 22px rgba(0,0,0,.35);cursor:pointer}
#v195upd.on{display:flex}
#v195upd b{font-weight:700}
/* ---- BOT-AVATAR1: 抽屉 ---- */
#v195Sheet{position:fixed;inset:0;z-index:220;background:rgba(0,0,0,.55);display:flex;align-items:flex-end;justify-content:center}
#v195Sheet .s{width:100%;max-width:560px;max-height:82vh;overflow:auto;background:var(--bg2,#141b24);border-radius:20px 20px 0 0;padding:14px 16px calc(20px + var(--ins-b,0px));border-top:1px solid rgba(255,255,255,.08)}
#v195Sheet .hd{display:flex;align-items:center;gap:10px;margin-bottom:10px}
#v195Sheet .hd b{font-size:15px;flex:1}
#v195Sheet .r{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid rgba(255,255,255,.07)}
#v195Sheet .r img{width:54px;height:54px;border-radius:16px;object-fit:cover;background:#16202b}
#v195Sheet .r .m{flex:1;min-width:0}
#v195Sheet .r .m .n{font-size:14px;font-weight:600}
#v195Sheet .r .m .t{font-size:12px;color:var(--dim,#8b9bb0);line-height:1.5}
#v195Sheet .note{font-size:12px;color:var(--dim,#8b9bb0);line-height:1.7;margin-top:10px}
#v195Sheet .key{margin-top:8px;padding:10px 12px;border-radius:12px;background:rgba(255,255,255,.06);font-family:ui-monospace,Menlo,monospace;font-size:12.5px;word-break:break-all;user-select:all}
html[data-theme="light"] #v195Sheet .s{background:#fff}
/* v196css */
/* ---------- F-4 界面字号 ---------- */
html body.xfs-msg .msg{font-size:calc(1px * var(--ui-fs,15))!important;line-height:1.5!important}
html body .setrow>span:first-child{font-size:calc(1px * var(--ui-fs-set,15))!important}
html body #tabBar .nitem>span{font-size:calc(1px * var(--ui-fs-nav,11))!important}
html body .chchip{font-size:calc(1px * var(--ui-fs-chip,13))!important}
html body #funPane .fcard b{font-size:calc(1px * var(--ui-fs-card,17))!important}
html body #funPane .fcard small{font-size:calc(1px * var(--ui-fs-card2,12))!important}
html body #funPane .mrow b{font-size:calc(1px * var(--ui-fs-card,15))!important}

/* ---------- F-3 首屏窗口化：载入更早 ---------- */
#v196More{display:block;width:100%;margin:6px 0 10px;padding:8px;border-radius:12px;
  border:1px dashed var(--line,#2a3038);background:transparent;color:var(--dim,#9aa5b1);
  font-size:13px;cursor:pointer}
#v196More:active{transform:scale(.985)}
#v196More[hidden]{display:none}

/* ---------- F-6 未读定位高亮 ---------- */
.v196flash{animation:v196flash 1.6s ease-out}
@keyframes v196flash{0%{box-shadow:0 0 0 2px var(--acc,#7cc4ff) inset;background:rgba(124,196,255,.10)}
  100%{box-shadow:none;background:transparent}}

/* ---------- F-8 断线胶囊 ---------- */
#v196Net{position:fixed;left:50%;transform:translateX(-50%);top:calc(env(safe-area-inset-top) + 58px);
  z-index:80;padding:5px 12px;border-radius:999px;font-size:12px;color:#ffd166;
  background:rgba(12,16,22,.82);border:1px solid rgba(255,209,102,.35);backdrop-filter:blur(6px);
  display:none;pointer-events:none;white-space:nowrap}
#v196Net.on{display:block}
#v196Net.ok{color:#9be89b;border-color:rgba(155,232,155,.35)}

/* ---------- F-11 设置行结构统一 ---------- */
html body #setBody .setrow{display:flex;align-items:center;justify-content:space-between;gap:10px}
html body #setBody .setrow>span:first-child{flex:1 1 auto;min-width:0}
html body #setBody .setrow .chip,html body #setBody .setrow>span:last-child{flex:0 0 auto}
html body #setBody .setrow .chip{white-space:nowrap}

/* ---------- F-2 上传进度条 ---------- */
#v196Up{position:fixed;left:12px;right:12px;bottom:calc(var(--nav-h,66px) + 18px);z-index:85;
  padding:10px 12px;border-radius:14px;background:rgba(12,16,22,.92);border:1px solid var(--line,#2a3038);
  box-shadow:0 10px 30px rgba(0,0,0,.45);display:none}
#v196Up.on{display:block}
#v196Up .t{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--txt,#e6edf3);margin-bottom:6px}
#v196Up .t b{font-weight:600}
#v196Up .t button{border:0;background:rgba(255,255,255,.10);color:var(--dim);border-radius:8px;
  padding:3px 9px;font-size:12px}
#v196Up .bar{height:6px;border-radius:999px;background:rgba(255,255,255,.10);overflow:hidden}
#v196Up .bar i{display:block;height:100%;width:0%;background:var(--acc,#7cc4ff);border-radius:999px;transition:width .18s linear}
/* v197css */
.galbar2{margin-top:-2px}
.galbar2 .galbsep{display:inline-block;width:1px;height:16px;background:var(--line,#2a3038);margin:0 4px;vertical-align:middle;opacity:.7}
#v197Mute{display:flex;flex-direction:column;gap:8px}
#v197Mute .mt{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-radius:12px;background:var(--bg2,#141a22);border:1px solid var(--line,#2a3038)}
#v197Mute .mt .nm{display:flex;flex-direction:column;gap:2px;min-width:0}
#v197Mute .mt b{font-size:14px;font-weight:600;color:var(--txt,#e6edf3)}
#v197Mute .mt small{font-size:11px;color:var(--dim,#9aa5b1)}
#v197Mute .tg{flex:0 0 auto;border:1px solid var(--line,#2a3038);background:transparent;color:var(--dim,#9aa5b1);border-radius:999px;padding:6px 12px;font-size:12px}
#v197Mute .tg.on{background:var(--acc,#7cc4ff);color:var(--acc-fg,#0b1116);border-color:transparent;font-weight:600}