:root{
  --ink:#26303A; --muted:#737C86;
  --paper:#FBFCFE; --tint:#EEF0FB; --surface:#F2F4FB; --line:#E6E9F3;
  --teal:#3A8E7A; --peri:#8E9BF0; --mint:#7FD7C4;
  --amber:#C9821F; --amber-fill:#F8ECD6; --amber-ink:#6B3F0E;
  --brick:#B3503A; --brick-fill:#F4E3DD; --brick-ink:#6E2417;
  --gold:#A9821C; --gold-fill:#F7EFD6;
  --rose:#C2487A; --rose-fill:#F7E3EC;
  --serif:'Noto Serif SC',serif;
  --sans:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei',sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
body{background:#DEE2F0;font-family:var(--sans);color:var(--ink);display:flex;justify-content:center;padding:34px 16px;min-height:100vh}
.phone{position:relative;width:360px;background:linear-gradient(180deg,var(--tint),var(--paper) 220px);border-radius:32px;overflow:hidden;border:1px solid var(--line);box-shadow:0 14px 44px rgba(38,48,58,.16);min-height:760px}
.notch{height:30px;display:flex;align-items:center;justify-content:space-between;padding:0 22px;font-size:12px}
.scr{padding:12px 18px 0}
.eyebrow{font-family:var(--serif);font-weight:600;font-size:12px;letter-spacing:.2em;color:var(--teal)}
.title{font-family:var(--serif);font-weight:700;font-size:22px}
.date{font-family:var(--serif);font-weight:700;font-size:46px;line-height:.9;margin-top:2px}
.date small{font-size:20px;font-weight:600;color:var(--muted)}

.av,.coin{flex:none;border-radius:50%;overflow:hidden;background:transparent}
.av{width:42px;height:42px}
.av img,.coin img{width:100%;height:100%;object-fit:cover;object-position:50% 30%}
.coin{position:relative}

.brief,.anhead{display:flex;align-items:center;gap:11px;margin:12px 0 6px;background:#fff;border:1px solid var(--line);border-radius:18px;padding:11px 13px}
.anhead{align-items:flex-start;padding:13px 15px;position:relative}
.anhead .coin{width:48px;height:48px}
.spark{position:absolute;left:50px;top:9px;color:var(--amber);font-size:14px}
.bname,.anname{font-size:11px;color:var(--muted);margin-bottom:2px}
.bname b,.anname b{color:var(--teal);font-weight:600}
.bsay,.ansay{font-size:13.5px;line-height:1.5;margin-top:2px}
.ansay{font-size:14.5px}
.ansay em,.bsay em{font-style:normal;color:var(--teal)}

.strip{display:flex;gap:10px;margin:14px 0 6px}
.stat{flex:1;background:var(--surface);border-radius:16px;padding:12px;text-align:center}
.stat.hot{background:var(--amber-fill)}
.stat .n{font-family:var(--serif);font-weight:700;font-size:24px;line-height:1}
.stat.hot .n{color:var(--amber-ink)}
.stat .l{font-size:11px;color:var(--muted);margin-top:5px}
.stat.hot .l{color:var(--amber-ink)}

.qhead{font-size:11px;letter-spacing:.16em;color:var(--muted);margin:20px 2px 12px}
.glabel{display:flex;align-items:center;gap:7px;font-size:11px;letter-spacing:.06em;color:var(--muted);margin:16px 2px 9px}
.dot{width:8px;height:8px;border-radius:50%}
.queue{position:relative;padding-left:24px}
.rail{position:absolute;left:6px;top:8px;bottom:18px;width:2px;background:var(--line)}
.item{position:relative;margin-bottom:13px}
.node{position:absolute;left:-24px;top:5px;width:14px;height:14px;border-radius:50%;background:var(--paper);border:2px solid var(--line)}
.item.urgent .node{border-color:var(--brick);background:var(--brick)}
.item.watch .node{border-color:var(--teal)}

.card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:13px 14px;margin-bottom:10px}
.row1{display:flex;align-items:center;justify-content:space-between;gap:8px}
.name{font-size:15px;font-weight:600}
.who{font-size:12px;color:var(--muted);margin-top:1px}
.policy{font-size:12px;color:var(--teal);margin-top:6px}
.reason,.from{font-size:12.5px;color:#525B64;margin-top:7px;line-height:1.55}
.pill{display:inline-block;font-size:11px;font-weight:500;padding:3px 10px;border-radius:9px;white-space:nowrap}
.pill.brick{background:var(--brick-fill);color:var(--brick-ink)}
.pill.amber{background:var(--amber-fill);color:var(--amber-ink)}
.pill.gold{background:var(--gold-fill);color:var(--gold)}
.pill.sage{background:var(--surface);color:var(--teal)}
.eval-factor{font-size:11px;color:var(--muted);margin-top:6px;line-height:1.4;padding:6px 8px;background:var(--surface);border-radius:8px;border-left:3px solid var(--teal)}
.pill.ok{background:#EAF3DE;color:#27500A}
.score{display:flex;align-items:baseline;gap:3px;font-family:var(--serif);color:var(--teal)}
.score b{font-size:20px;font-weight:700}.score span{font-size:11px;color:var(--muted)}
.btn{margin-top:11px;background:var(--ink);color:#fff;text-align:center;font-size:13px;font-weight:500;padding:10px;border-radius:12px;cursor:pointer}
.chips{display:flex;gap:6px;margin-top:9px}
.chip{flex:1;text-align:center;font-size:11px;padding:5px 0;border-radius:8px;background:var(--surface);color:var(--muted)}
.chip.on{color:var(--teal);font-weight:600;box-shadow:inset 0 0 0 1px var(--teal)}

.hero .node{left:-26px;top:3px;width:18px;height:18px;border:2px solid var(--amber);background:var(--amber-fill);display:flex;align-items:center;justify-content:center;color:var(--amber);font-size:10px}
.herocard{background:#fff;border:1.5px solid var(--amber);border-radius:20px;overflow:hidden}
.herotop{display:flex;align-items:center;gap:7px;background:var(--amber-fill);color:var(--amber-ink);font-size:11.5px;font-weight:500;padding:8px 15px}
.herobody{padding:13px 15px 14px}
.thread{display:flex;align-items:center;gap:7px;margin-top:11px;font-size:11.5px;color:var(--amber-ink)}
.thread .seg{height:0;border-top:2px dashed var(--amber);flex:1}
.thread .o{width:8px;height:8px;border-radius:50%;border:2px solid var(--amber)}
.send{margin-top:12px;background:var(--ink);color:#fff;text-align:center;font-size:13px;font-weight:500;padding:11px;border-radius:13px;cursor:pointer}

.src{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:500;padding:3px 9px;border-radius:9px}
.src.xhs{background:var(--rose-fill);color:var(--rose)}
.src.pyq{background:#E7F1EA;color:var(--teal)}
.src.dy{background:#ECEEF2;color:#444}
.dlabel{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--teal);font-weight:600}
.dbody{font-size:12.5px;color:#3D454D;line-height:1.6;margin:8px 0 9px;background:var(--surface);border-radius:12px;padding:11px 12px;min-height:88px}
.dbody.is-streaming::after{
  content:'';display:inline-block;width:2px;height:1.05em;margin-left:2px;vertical-align:-.14em;
  background:var(--teal);border-radius:1px;animation:streamCaret .95s step-end infinite
}
@keyframes streamCaret{0%,100%{opacity:1}50%{opacity:0}}
.drow{display:flex;gap:8px;margin-top:10px}
.drow .b{flex:1;text-align:center;font-size:12px;padding:9px;border-radius:11px;cursor:pointer}
.drow .b.disabled{opacity:.42;pointer-events:none}
.b.ghost{border:1px solid var(--line)}
.b.solid{background:var(--ink);color:#fff}
.b.solid.amber{background:var(--amber);color:#fff}
.b.drill-entry{
  margin-top:10px;text-align:center;font-size:12.5px;padding:10px 12px;border-radius:11px;cursor:pointer;
  border:1px solid rgba(58,142,122,.35);background:rgba(58,142,122,.08);color:var(--teal);font-weight:600
}
.b.drill-entry:active{background:rgba(58,142,122,.16)}
.card-action-row .linkrow{text-decoration:none;color:var(--teal)}
.card-action-row{display:flex;flex-direction:column;gap:0;margin-top:2px}
.card-action-row .linkrow{margin-top:8px}
.chan{display:flex;gap:8px;margin-top:8px}
.ch{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;background:var(--surface);border:1px solid var(--line);border-radius:13px;padding:9px 0;font-size:11px;color:var(--muted)}
.ch i{font-size:18px}.ch .s{font-size:10px}.ch.sent{color:var(--teal)}
.note{font-size:11px;color:var(--muted);margin:6px 2px 0;line-height:1.5}

.tab{display:flex;border-top:1px solid var(--line);margin-top:16px;background:var(--paper)}
.tab>a{flex:1;text-align:center;padding:9px 0 12px;font-size:11px;color:#A2A8B4;text-decoration:none;-webkit-tap-highlight-color:transparent}
.tab>a.on{color:var(--ink);font-weight:600}
.tab>a.center{color:#A2A8B4}
.tab>a.center.on{color:var(--teal);font-weight:600}
.tab i{font-size:19px;display:block;margin-bottom:3px}
.tab>a.on i{color:var(--teal)}
.balloon{
  width:50px;height:50px;border-radius:50%;
  background:var(--surface);color:#A2A8B4;
  display:flex;align-items:center;justify-content:center;
  margin:-24px auto 3px;border:1px solid var(--line);
  box-shadow:none;
}
.tab>a.center.on .balloon{
  background:linear-gradient(135deg,#8E9BF0,#7FD7C4);color:#fff;
  border:3px solid var(--paper);
  box-shadow:0 7px 18px rgba(142,155,240,.55);
}
.balloon i{font-size:24px;display:block;margin:0}

.fab{position:absolute;right:18px;bottom:80px;display:flex;flex-direction:column;align-items:center;gap:6px;z-index:5;cursor:pointer}
.fabtip{position:relative;background:var(--ink);color:#fff;font-size:11px;padding:4px 10px;border-radius:11px;white-space:nowrap}
.fabtip:after{content:"";position:absolute;left:50%;margin-left:-5px;bottom:-4px;width:8px;height:8px;background:var(--ink);transform:rotate(45deg)}
.fabwrap{position:relative}
.fbtn{width:56px;height:56px;border-radius:50%;overflow:hidden;background:#fff;border:1px solid var(--line);box-shadow:0 8px 22px rgba(142,155,240,.4);position:relative;z-index:2}
.fbtn img{width:100%;height:100%;object-fit:cover;object-position:50% 30%}
.halo{position:absolute;inset:-7px;border-radius:50%;border:2px solid var(--peri);opacity:.5}

.backdrop{position:absolute;inset:0;background:rgba(30,36,46,.34);opacity:0;pointer-events:none;transition:opacity .25s;z-index:8}
.sheet{position:absolute;left:0;right:0;bottom:0;background:#fff;border-radius:26px 26px 0 0;padding:10px 16px 18px;transform:translateY(110%);transition:transform .3s cubic-bezier(.2,.8,.2,1);z-index:9;box-shadow:0 -10px 40px rgba(38,48,58,.18)}
.open .backdrop{opacity:1;pointer-events:auto}
.open .sheet{transform:translateY(0)}
.grab{width:40px;height:4px;border-radius:2px;background:var(--line);margin:2px auto 12px}
.shead{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.shead .av{width:50px;height:50px}
.stitle{font-size:15px;font-weight:600}.ssub{font-size:12px;color:var(--muted);margin-top:2px}
.sclose{margin-left:auto;color:var(--muted);font-size:20px;cursor:pointer}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.act{display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px;font-size:13px;cursor:pointer}
.act i{font-size:19px;color:var(--teal)}.act.amber i{color:var(--amber)}
.talk{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:12px;border:1px dashed var(--line);border-radius:14px;padding:11px;font-size:12.5px;color:var(--muted);cursor:pointer;user-select:none;-webkit-user-select:none;touch-action:none;transition:background .2s,border-color .2s,color .2s}
.talk.listening{border-color:var(--peri);background:linear-gradient(135deg,#EEF0FB,#F5FBF9);color:var(--ink);box-shadow:0 0 0 3px rgba(142,155,240,.2)}
.talk i{color:var(--peri);font-size:18px}
.fabwrap.voice-active .halo{animation:voice-halo 1.2s ease-in-out infinite;border-color:var(--teal);opacity:.85}
.fabwrap.voice-active .fbtn{box-shadow:0 0 0 4px rgba(127,215,196,.35),0 8px 22px rgba(142,155,240,.45)}
@keyframes voice-halo{0%,100%{transform:scale(1);opacity:.5}50%{transform:scale(1.12);opacity:.95}}
.voice-overlay{display:none;position:absolute;inset:0;z-index:15;align-items:flex-end;justify-content:center;padding:0 12px 72px;pointer-events:none}
.voice-overlay.active{display:flex;pointer-events:auto}
.voice-glow{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 100%,rgba(142,155,240,.35),rgba(127,215,196,.15) 40%,transparent 70%);opacity:0;transition:opacity .35s}
.voice-overlay.active .voice-glow{opacity:1}
.voice-panel{position:relative;width:100%;max-width:320px;background:rgba(255,255,255,.96);backdrop-filter:blur(12px);border:1px solid rgba(142,155,240,.25);border-radius:22px;padding:18px 16px 14px;box-shadow:0 16px 48px rgba(38,48,58,.2);text-align:center;transform:translateY(24px);opacity:0;transition:transform .35s cubic-bezier(.2,.8,.2,1),opacity .35s}
.voice-overlay.active .voice-panel{transform:translateY(0);opacity:1}
.voice-overlay.processing .voice-waves{opacity:.35}
.voice-av{width:48px;height:48px;border-radius:50%;overflow:hidden;margin:0 auto 10px;border:2px solid var(--peri);box-shadow:0 4px 16px rgba(142,155,240,.35)}
.voice-av img{width:100%;height:100%;object-fit:cover}
.voice-status{font-size:14px;font-weight:600;margin-bottom:12px;font-family:var(--serif)}
.voice-waves{display:flex;align-items:flex-end;justify-content:center;gap:4px;height:52px;margin-bottom:10px}
.voice-bar{display:inline-block;width:4px;height:12px;border-radius:4px;background:linear-gradient(180deg,#8E9BF0,#7FD7C4,#3A8E7A);animation:voice-bar 1s ease-in-out infinite;animation-delay:calc(var(--i) * 0.06s)}
.voice-transcript{min-height:20px;font-size:12px;color:var(--ink);line-height:1.5;padding:8px 10px;background:var(--surface);border-radius:10px;margin-bottom:6px}
.voice-hint{font-size:10px;color:var(--muted)}
@keyframes voice-bar{0%,100%{height:8px;opacity:.5;transform:scaleY(.6)}50%{height:38px;opacity:1;transform:scaleY(1)}}
.pill.ai-dispatch{background:linear-gradient(135deg,#F7EFD6,#FFE8B8);color:var(--amber-ink);border:1px solid rgba(201,130,31,.35);margin-left:6px;font-size:11px;font-weight:700;animation:ai-dispatch-pop .5s ease}
.card.ai-dispatched{border-color:rgba(201,130,31,.45);box-shadow:0 6px 20px rgba(201,130,31,.12)}
.card.ai-fly-in{animation:ai-card-fly-in .65s cubic-bezier(.2,.8,.2,1) both}
@keyframes ai-dispatch-pop{from{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}
@keyframes ai-card-fly-in{from{opacity:0;transform:translateY(48px) scale(.96)}to{opacity:1;transform:none}}

.profile{display:flex;align-items:center;gap:13px;margin:14px 0}
.pavatar{width:54px;height:54px;border-radius:50%;background:linear-gradient(135deg,#8E9BF0,#7FD7C4);color:#fff;display:flex;align-items:center;justify-content:center;font-size:21px;font-family:var(--serif);font-weight:700}
.pname{font-size:18px;font-weight:600}
.pmeta{font-size:12px;color:var(--muted);margin-top:3px}
.income{background:linear-gradient(135deg,#2E3A47,#3C5A4E);color:#fff;border-radius:20px;padding:16px 17px;margin-bottom:12px}
.inc-lab{font-size:12px;opacity:.82}
.inc-n{font-family:var(--serif);font-weight:700;font-size:34px;line-height:1.1;margin-top:2px}
.inc-n small{font-size:16px;font-weight:600;opacity:.85}
.inc-delta{font-size:12px;color:#9BE6C4;margin-left:8px}
.inc-sub{display:flex;gap:20px;margin-top:13px;font-size:12px;opacity:.9}
.inc-sub b{font-family:var(--serif);font-size:15px;display:block;font-weight:700;margin-bottom:1px}
.kpi{background:#fff;border:1px solid var(--line);border-radius:20px;padding:15px 16px;margin-bottom:12px}
.kpi-top{display:flex;align-items:center;gap:16px}
.ring{flex:none;position:relative;width:88px;height:88px}
.ring svg{transform:rotate(-90deg)}
.ring .pct{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.ring .pct b{font-family:var(--serif);font-size:22px;line-height:1}
.ring .pct span{font-size:10px;color:var(--muted)}
.ktitle{font-size:13px;font-weight:600}
.kgoal{font-size:12px;color:var(--muted);margin-top:5px;line-height:1.5}
.kgoal b{color:var(--ink);font-family:var(--serif)}
.antip{display:flex;gap:9px;align-items:center;background:var(--amber-fill);color:var(--amber-ink);border-radius:13px;padding:10px 12px;margin-top:13px;font-size:12px;line-height:1.5;text-decoration:none}
.antip .av{width:30px;height:30px}
.kbar{margin-bottom:11px}
.kbar:last-child{margin-bottom:2px}
.kbar .kl{display:flex;justify-content:space-between;font-size:12px;margin-bottom:5px}
.kbar .kl b{font-family:var(--serif)}
.track{height:8px;border-radius:5px;background:var(--surface);overflow:hidden}
.track i{display:block;height:100%;border-radius:5px}
.skpi{font-size:11px;letter-spacing:.12em;color:var(--muted);margin:6px 2px 10px}
.links{background:#fff;border:1px solid var(--line);border-radius:18px;overflow:hidden}
.lk{display:flex;align-items:center;gap:11px;padding:13px 15px;font-size:14px;border-bottom:1px solid var(--line);text-decoration:none;color:var(--ink)}
.lk:last-child{border-bottom:0}
.lk i:first-child{font-size:19px;color:var(--teal)}
.lk .chev{margin-left:auto;color:var(--muted);font-size:16px}
.lk .tagr{margin-left:auto;font-size:12px;color:var(--amber-ink);background:var(--amber-fill);padding:2px 9px;border-radius:8px}

.ladder{display:flex;margin:2px 0 12px}
.rk{flex:1;text-align:center;position:relative;font-size:10.5px;color:var(--muted);line-height:1.3}
.rk .rd{width:14px;height:14px;border-radius:50%;background:var(--surface);border:2px solid var(--line);margin:0 auto 5px}
.rk.done .rd{background:var(--teal);border-color:var(--teal)}
.rk.cur .rd{background:#fff;border-color:var(--peri);box-shadow:0 0 0 3px rgba(142,155,240,.25)}
.rk.cur{color:var(--ink);font-weight:600}
.rk.next .rd{border-color:var(--amber);border-style:dashed}
.rk+.rk:before{content:"";position:absolute;left:-50%;right:50%;top:6px;height:2px;background:var(--line)}
.rk.done+.rk:before,.rk.cur:before{background:var(--teal)}
.nextline{font-size:12px;color:var(--muted);margin:2px 0 9px}
.nextline b{color:var(--ink)}
.crit{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 4px}
.crit span{font-size:11px;padding:3px 9px;border-radius:8px;background:var(--surface);color:#525B64}
.crit span.ok{background:#EAF3DE;color:#27500A}
.crit span.miss{background:var(--amber-fill);color:var(--amber-ink)}
.linkrow{display:flex;align-items:center;justify-content:space-between;margin-top:11px;font-size:12.5px;color:var(--teal);text-decoration:none;font-weight:500}

.back{display:flex;align-items:center;gap:5px;font-size:14px;color:var(--ink);text-decoration:none;margin-bottom:8px}
.ranknow{background:linear-gradient(135deg,#2E3A47,#3C5A4E);color:#fff;border-radius:20px;padding:16px 17px;margin-bottom:14px}
.ranknow .lab{font-size:12px;opacity:.82}
.ranknow .r{font-family:var(--serif);font-weight:700;font-size:26px;margin-top:2px}
.ranknow .nx{font-size:12px;opacity:.92;margin-top:9px;line-height:1.5}
.coach{display:flex;gap:10px;background:var(--amber-fill);color:var(--amber-ink);border-radius:16px;padding:13px;margin-bottom:14px;font-size:12.5px;line-height:1.55}
.coach .av{width:38px;height:38px;flex:none}
.coach .cbtn{display:inline-block;margin-top:8px;background:var(--ink);color:#fff;padding:7px 12px;border-radius:10px;font-size:12px;text-decoration:none}
.vstep{position:relative;padding-left:26px}
.vrail{position:absolute;left:8px;top:8px;bottom:8px;width:2px;background:var(--line)}
.vrk{position:relative;margin-bottom:11px}
.vrk .vd{position:absolute;left:-26px;top:14px;width:14px;height:14px;border-radius:50%;background:var(--surface);border:2px solid var(--line)}
.vrk.done .vd{background:var(--teal);border-color:var(--teal)}
.vrk.cur .vd{background:#fff;border-color:var(--peri);box-shadow:0 0 0 3px rgba(142,155,240,.25)}
.vrk.lock{opacity:.72}
.vcard{background:#fff;border:1px solid var(--line);border-radius:16px;padding:12px 14px}
.vrk.cur .vcard{border:1.5px solid var(--peri)}
.vrname{font-size:15px;font-weight:600;display:flex;justify-content:space-between;align-items:center;gap:8px}
.vrtag{font-size:11px;padding:2px 9px;border-radius:8px;white-space:nowrap}
.vrtag.done{background:#EAF3DE;color:#27500A}
.vrtag.cur{background:#EEF0FB;color:#3A4ABF}
.vrtag.lock{background:var(--surface);color:var(--muted)}
.vmeta{font-size:12px;color:#525B64;margin-top:7px;line-height:1.6}
.vmeta .k{color:var(--muted)}
.badges{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:4px}
.badge{flex:1;min-width:92px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 8px;text-align:center}
.badge i{font-size:23px;color:var(--amber)}
.badge.off i{color:#C8CCD4}
.badge .bt{font-size:12px;font-weight:600;margin-top:6px}
.badge .bs{font-size:10.5px;color:var(--muted);margin-top:2px}

@media (prefers-reduced-motion:no-preference){
  .halo{animation:breathe 2.4s ease-in-out infinite}
  @keyframes breathe{0%,100%{transform:scale(1);opacity:.5}50%{transform:scale(1.18);opacity:0}}
  .reveal{opacity:0;transform:translateY(8px);animation:rise .5s ease forwards}
  .r1{animation-delay:.05s}.r2{animation-delay:.13s}.r3{animation-delay:.22s}.r4{animation-delay:.31s}.r5{animation-delay:.4s}
  @keyframes rise{to{opacity:1;transform:none}}
}

/* ===== RENEWAL SHARED（续保 Hub / 弹窗 / 按钮 — 合并 styles.css 时勿删此段） ===== */
.btn-row{display:flex;flex-direction:column;gap:8px;margin-top:11px}
.btn-row .btn{margin-top:0}
.btn-grid-2x2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.btn-grid-2x2 .btn{margin-top:0;padding:9px 6px;font-size:12px;justify-content:center;text-align:center;line-height:1.3}
.btn-grid-2x2 .btn i{font-size:14px}
.btn-outline{background:#fff;color:var(--ink);border:1.5px solid var(--line)}
.btn-teal{background:var(--teal);color:#fff}
.app-modal{display:none;position:fixed;inset:0;background:rgba(38,48,58,.45);z-index:1000;align-items:center;justify-content:center;padding:20px}
.app-modal-box{background:#fff;border-radius:18px;padding:18px;max-width:340px;width:100%;border:1px solid var(--line);max-height:85vh;overflow-y:auto}
.app-modal-title{font-size:15px;font-weight:600;margin-bottom:10px}
.app-modal-body{font-size:13px;line-height:1.6;color:#525B64}
.app-modal-actions{display:flex;flex-direction:column;gap:8px;margin-top:14px}
.app-modal-actions .btn{margin-top:0}
.app-modal-box.wide{max-width:400px;max-height:90vh}

.sv-list{display:flex;flex-direction:column;gap:12px;max-height:65vh;overflow-y:auto}
.sv-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px}
.sv-card.recommended{border-color:var(--teal);box-shadow:0 0 0 1px rgba(58,142,122,.15)}
.sv-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.sv-rank{width:22px;height:22px;border-radius:50%;background:var(--ink);color:#fff;font-size:11px;display:inline-flex;align-items:center;justify-content:center;flex:none}
.sv-label{font-weight:600;font-size:13px;flex:1}
.sv-rate{display:flex;align-items:baseline;gap:8px;margin-bottom:8px;padding:6px 10px;border-radius:10px;background:#fff}
.sv-rate.high{background:#E8F5F0}
.sv-rate.mid{background:var(--amber-fill)}
.sv-rate.low{background:var(--brick-fill)}
.sv-rate-n{font-size:20px;font-weight:700;color:var(--teal)}
.sv-rate.mid .sv-rate-n{color:var(--amber-ink)}
.sv-rate.low .sv-rate-n{color:var(--brick)}
.sv-rate-l{font-size:11px;color:var(--muted)}
.sv-text{font-size:13px;line-height:1.6;color:#525B64;white-space:pre-wrap;margin-bottom:10px;padding:10px;background:#fff;border-radius:10px;border:1px solid var(--line)}
.sv-analysis{margin-bottom:10px}
.sv-analysis .asst-ul{margin:4px 0 8px}
.sv-analysis li.good{color:var(--teal)}
.sv-analysis li.warn{color:var(--brick)}
.sv-rec{font-size:12px;color:var(--teal);margin-top:6px;line-height:1.5}
.sv-copy{margin-top:4px;font-size:12px;padding:8px}

.asst-hint{font-size:12px;color:var(--muted);line-height:1.5;margin-bottom:10px}
.asst-label{font-size:11px;letter-spacing:.06em;color:var(--muted);margin:10px 0 6px;display:block}
.asst-textarea{width:100%;min-height:100px;border:1px solid var(--line);border-radius:12px;padding:10px;font-size:13px;font-family:inherit;resize:vertical;box-sizing:border-box}
.asst-input{flex:1;border:1px solid var(--line);border-radius:12px;padding:10px 12px;font-size:14px}
.asst-select{width:100%;border:1px solid var(--line);border-radius:12px;padding:10px;font-size:13px;background:#fff}
.asst-summary{background:var(--surface);border-radius:12px;padding:12px;margin-top:10px;border:1px solid var(--line)}
.asst-summary.hidden{display:none}
.asst-summary-title{font-size:12px;font-weight:600;color:var(--teal);margin-bottom:8px}
.asst-pre{font-size:12px;line-height:1.6;white-space:pre-wrap;margin:0;font-family:inherit;color:#525B64}
.asst-text{font-size:13px;line-height:1.6;color:#525B64;white-space:pre-wrap}
.asst-link{font-size:12px;color:var(--teal);margin-top:10px}
.asst-scenarios{margin-top:10px}
.asst-scenario{display:none;border:1px solid var(--line);border-radius:14px;overflow:hidden;margin-bottom:8px}
.asst-scenario.on{display:block}
.asst-scenario-tab{background:var(--surface);padding:10px 12px;font-size:12px;font-weight:600;cursor:pointer;border-bottom:1px solid var(--line)}
.asst-scenario .asst-text{padding:12px}
.asst-rank-list{display:flex;flex-direction:column;gap:10px;max-height:50vh;overflow-y:auto}
.asst-rank-item{display:flex;gap:10px;background:var(--surface);border-radius:14px;padding:10px;border:1px solid var(--line)}
.asst-rank-n{width:28px;height:28px;border-radius:50%;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;flex:none}
.asst-rank-body{flex:1;min-width:0}
.asst-rank-top{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:4px}
.asst-rank-insight{font-size:12px;color:#525B64;line-height:1.5}
.asst-score{font-size:11px;color:var(--muted);margin-left:auto}
.asst-search-row{display:flex;gap:8px;align-items:center}
.asst-search-btn{width:44px;flex:none;padding:10px;display:flex;align-items:center;justify-content:center}
.asst-search-results{margin-top:12px;max-height:45vh;overflow-y:auto;display:flex;flex-direction:column;gap:8px}
.asst-search-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px}
.asst-search-name{font-weight:600;font-size:14px;margin-bottom:4px}
.asst-muted{font-size:12px;color:var(--muted)}
.asst-tag{display:inline-block;font-size:11px;padding:2px 8px;border-radius:8px;background:var(--surface);color:var(--muted);margin-top:6px}
.asst-tag.brick{background:var(--rose-fill);color:var(--brick)}
.asst-plan{max-height:55vh;overflow-y:auto}
.asst-plan-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.asst-plan-section{margin-bottom:12px}
.asst-chip{display:inline-block;font-size:11px;background:var(--amber-fill);color:var(--amber-ink);padding:2px 8px;border-radius:8px;margin:4px 4px 0 0}
.asst-ul{margin:0;padding-left:18px;font-size:13px;line-height:1.6;color:#525B64}
.asst-recruit-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px;margin-bottom:8px}
.asst-recruit-card.hot{border-color:var(--amber)}
.asst-recruit-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}

/* recruit module — mobile shell: fixed head / scroll body / fixed tab（桌面预览） */
body:not(.recruit-app) #recruit-phone,
body:not(.recruit-app) #today-phone{display:flex;flex-direction:column;height:760px;max-height:calc(100vh - 68px);overflow:hidden}
#recruit-phone,#renewal-phone,#today-phone,#huoke-phone,#wode-phone{display:flex;flex-direction:column;overflow:hidden}
#recruit-phone .notch,#renewal-phone .notch,#today-phone .notch,#huoke-phone .notch,#wode-phone .notch{flex:none}
#recruit-phone .recruit-head,#renewal-phone .recruit-head,#today-phone .recruit-head,#huoke-phone .recruit-head,#wode-phone .recruit-head{
  flex:none;padding:12px 18px 14px;
  background:linear-gradient(180deg,var(--tint),var(--paper) 120px);
  border-bottom:1px solid var(--line);
  z-index:2;
}
#recruit-phone .recruit-head .title,#renewal-phone .recruit-head .title,#today-phone .recruit-head .title,#huoke-phone .recruit-head .title,#wode-phone .recruit-head .title{margin-bottom:0}
#recruit-phone .recruit-head .brief,#renewal-phone .recruit-head .brief,#today-phone .recruit-head .brief,#huoke-phone .recruit-head .brief,#wode-phone .recruit-head .brief{margin:12px 0 0}
#recruit-phone .recruit-sort{margin-top:12px;margin-bottom:0}
#recruit-phone .recruit-sort .sort-chip{
  border:1px solid transparent;background:var(--surface);color:var(--muted);
  font-size:11px;padding:6px 0;border-radius:8px;cursor:pointer;font-family:inherit;font-weight:500;
}
#recruit-phone .recruit-sort .sort-chip.on{
  color:var(--teal);background:#fff;border-color:var(--teal);font-weight:500;
  box-shadow:none;
}
#recruit-phone .recruit-scroll,#renewal-phone .recruit-scroll,#today-phone .recruit-scroll,#huoke-phone .recruit-scroll,#wode-phone .recruit-scroll{
  flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;
  -webkit-overflow-scrolling:touch;overscroll-behavior:contain;
  padding:12px 18px 88px;background:var(--paper);
}
#recruit-phone .tab,#renewal-phone .tab,#today-phone .tab,#huoke-phone .tab,#wode-phone .tab{
  position:absolute;left:0;right:0;bottom:0;margin-top:0;z-index:4;
  background:var(--paper);border-top:1px solid var(--line);
  padding-bottom:env(safe-area-inset-bottom,0);
}
#recruit-phone .fab,#renewal-phone .fab,#today-phone .fab,#huoke-phone .fab,#wode-phone .fab{bottom:78px;z-index:5}
#recruit-phone .toast,#huoke-phone .toast{bottom:92px;z-index:14}
.lead-list .card.auto{border:1.5px solid var(--amber)}
.lead-list .card.pulse{animation:cardPulse .9s ease}
@keyframes cardPulse{0%,100%{box-shadow:0 0 0 0 rgba(58,142,122,.0)}50%{box-shadow:0 0 0 6px rgba(58,142,122,.18)}}
.stage-chips{margin-top:10px;flex-wrap:wrap;display:flex;gap:6px}
.stage-chip{
  flex:none;min-width:42px;text-align:center;font-size:10.5px;line-height:1.2;
  padding:5px 8px;border-radius:8px;border:1px solid transparent;
  background:var(--surface);color:var(--muted);cursor:pointer;font-weight:500;
  -webkit-tap-highlight-color:transparent;user-select:none;
}
.stage-chip.on{color:var(--teal);background:#fff;border-color:var(--teal);font-weight:500}
.lead-list .linkrow{cursor:pointer}
.lead-detail-panel{margin-top:8px;padding:10px 11px;background:var(--surface);border-radius:12px;border:1px solid var(--line)}
.lead-cal-head{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--muted);margin-bottom:8px}
.lead-cal-head b{color:var(--ink);font-weight:600}
.lead-cal-week,.lead-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;text-align:center;font-size:10px}
.lead-cal-week{color:var(--muted);margin-bottom:4px}
.lead-cal-grid .d{height:24px;line-height:24px;border-radius:7px;color:#525B64}
.lead-cal-grid .d.blank{visibility:hidden}
.lead-cal-grid .d.hit{background:#EAF3DE;color:#27500A;font-weight:600}
.lead-cal-grid .d.today{box-shadow:inset 0 0 0 1.5px var(--teal);color:var(--teal);font-weight:600}
.lead-timeline{margin-top:10px;padding-top:8px;border-top:1px dashed var(--line)}
.lead-timeline-item{font-size:11.5px;color:#525B64;line-height:1.45;margin-bottom:6px}
.lead-timeline-item:last-child{margin-bottom:0}
.lead-timeline-date{display:inline-block;min-width:42px;font-size:10px;color:var(--muted);margin-right:4px}
.btn:active,.b:active,.act:active{transform:scale(.985);opacity:.92}
.loading-card,.empty-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:28px 14px;text-align:center;color:var(--muted);font-size:13px}
.loading-card:empty{padding:20px 14px}
.loading-card i{display:block;font-size:22px;margin-bottom:8px;color:var(--teal);animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.lead-detail{margin-top:8px;padding-top:8px;border-top:1px dashed var(--line)}
.hist{margin-top:8px}
.hist-item{font-size:11.5px;color:#525B64;line-height:1.5;margin-bottom:6px}
.hist-date{display:inline-block;font-size:10px;color:var(--muted);margin-right:6px}
.dialog-backdrop{position:absolute;inset:0;background:rgba(30,36,46,.42);opacity:0;pointer-events:none;transition:opacity .22s;z-index:12}
.dialog-backdrop.show{opacity:1;pointer-events:auto}
.dialog{position:absolute;left:50%;top:46%;transform:translate(-50%,-50%) scale(.97);width:calc(100% - 34px);max-height:72%;background:#fff;border-radius:22px;padding:15px 15px 16px;opacity:0;pointer-events:none;transition:opacity .22s,transform .22s;z-index:13;box-shadow:0 18px 48px rgba(38,48,58,.22);overflow:auto;display:none}
.dialog.show{display:block;opacity:1;pointer-events:auto;transform:translate(-50%,-50%) scale(1)}
.modal-open .fab{opacity:0;pointer-events:none}
.dialog-head{display:flex;align-items:flex-start;gap:10px;margin-bottom:8px}
.dialog-sub{font-size:12px;color:var(--muted);margin-top:3px}
.dialog-close{margin-left:auto;color:var(--muted);font-size:20px;cursor:pointer}
.dlabel.sub{margin-top:2px;font-weight:500}
.search-input{width:100%;border:1px solid var(--line);border-radius:12px;padding:11px 12px;font-size:14px;margin-bottom:10px;background:var(--surface)}
.search-input:focus{outline:none;border-color:var(--teal);background:#fff}
.search-results{display:flex;flex-direction:column;gap:8px}
.search-item,.search-hint{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px 12px;cursor:pointer}
.search-item:active{background:#fff}
.search-hint{cursor:default;color:var(--muted);font-size:12px}
.l4-item{border:1.5px solid var(--amber);background:#fff}
.overview-stats{display:flex;flex-direction:column;gap:10px;margin-top:4px}
.overview-row{display:grid;grid-template-columns:52px 1fr 28px;align-items:center;gap:8px;font-size:12px}
.overview-label{color:var(--muted)}
.overview-bar{height:8px;border-radius:5px;background:var(--surface);overflow:hidden}
.overview-bar i{display:block;height:100%;border-radius:5px;background:var(--teal);transition:width .25s}
.overview-num{text-align:right;font-family:var(--serif);font-weight:700}
.overview-num.amber{color:var(--amber-ink)}
.overview-num.teal{color:var(--teal)}
.overview-num.ok{color:#27500A}
.toast{position:absolute;left:50%;bottom:96px;transform:translateX(-50%) translateY(12px);background:rgba(38,48,58,.92);color:#fff;font-size:12.5px;padding:9px 14px;border-radius:12px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:14;white-space:nowrap;max-width:90%;text-overflow:ellipsis;overflow:hidden}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.dbody[contenteditable="true"]{outline:2px solid rgba(58,142,122,.25)}

#script-dialog{max-height:88%}
#script-dialog .chan-label{
  margin-top:12px;font-size:11px;letter-spacing:.08em;color:var(--muted);font-weight:600;
}
#script-dialog .script-learn-label{
  margin-top:14px;font-size:11px;letter-spacing:.08em;color:var(--muted);font-weight:600;
}
#script-dialog .script-learn-row{margin-top:8px;margin-bottom:4px}
#script-dialog .script-learn{
  display:flex;align-items:center;justify-content:center;gap:5px;
  text-decoration:none;color:inherit;font-size:12px;padding:10px 6px;
  -webkit-tap-highlight-color:transparent;
}
#script-dialog .script-learn.watch{color:var(--ink)}
#script-dialog .script-learn.drill{
  color:var(--teal);border-color:rgba(58,142,122,.35);background:rgba(58,142,122,.06);
}
#script-dialog .script-learn:active{opacity:.88}
#script-dialog .chan-pick{margin-top:8px;gap:10px}
#script-dialog .chan-pick .ch{
  flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;
  min-height:72px;padding:10px 6px;border-radius:16px;
  border:2px solid var(--line);background:#fff;color:var(--muted);
  font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;
  -webkit-tap-highlight-color:transparent;transition:border-color .15s,background .15s,color .15s;
}
#script-dialog .chan-pick .ch i{font-size:26px;line-height:1}
#script-dialog .chan-pick .ch span{display:block;line-height:1.2}
#script-dialog .chan-pick .ch.sent{
  border-color:var(--teal);background:#EAF6F2;color:var(--teal);
  box-shadow:0 2px 8px rgba(58,142,122,.12);
}
#script-dialog .chan-pick .ch.sent i{color:var(--teal)}
#script-dialog .chan-pick .ch[data-channel="wechat"].sent i{color:#07C160}
#script-dialog .chan-pick .ch[data-channel="sms"].sent i{color:var(--teal)}

/* renewal / xubao — 卡片按钮、弹窗、助理与话术样式（与 common.js / xubao.js 配套） */
.btn-row{display:flex;flex-direction:column;gap:8px;margin-top:11px}
.btn-row .btn{margin-top:0}
.btn-grid-2x2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.btn-grid-2x2 .btn{margin-top:0;padding:9px 6px;font-size:12px;display:flex;align-items:center;justify-content:center;gap:5px;text-align:center;line-height:1.3}
.btn-grid-2x2 .btn i{font-size:14px;flex:none}
.btn-outline{background:#fff;color:var(--ink);border:1.5px solid var(--line)}
.btn-teal{background:var(--teal);color:#fff}
.app-modal{display:none;position:fixed;inset:0;background:rgba(38,48,58,.45);z-index:1000;align-items:center;justify-content:center;padding:20px}
.app-modal-box{background:#fff;border-radius:18px;padding:18px;max-width:340px;width:100%;border:1px solid var(--line);max-height:85vh;overflow-y:auto}
.app-modal-title{font-size:15px;font-weight:600;margin-bottom:10px}
.app-modal-body{font-size:13px;line-height:1.6;color:#525B64}
.app-modal-actions{display:flex;flex-direction:column;gap:8px;margin-top:14px}
.app-modal-actions .btn{margin-top:0}
.app-modal-box.wide{max-width:400px;max-height:90vh}
.sv-list{display:flex;flex-direction:column;gap:12px;max-height:65vh;overflow-y:auto}
.sv-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px}
.sv-card.recommended{border-color:var(--teal);box-shadow:0 0 0 1px rgba(58,142,122,.15)}
.sv-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.sv-rank{width:22px;height:22px;border-radius:50%;background:var(--ink);color:#fff;font-size:11px;display:inline-flex;align-items:center;justify-content:center;flex:none}
.sv-label{font-weight:600;font-size:13px;flex:1}
.sv-rate{display:flex;align-items:baseline;gap:8px;margin-bottom:8px;padding:6px 10px;border-radius:10px;background:#fff}
.sv-rate.high{background:#E8F5F0}
.sv-rate.mid{background:var(--amber-fill)}
.sv-rate.low{background:var(--brick-fill)}
.sv-rate-n{font-size:20px;font-weight:700;color:var(--teal)}
.sv-rate.mid .sv-rate-n{color:var(--amber-ink)}
.sv-rate.low .sv-rate-n{color:var(--brick)}
.sv-rate-l{font-size:11px;color:var(--muted)}
.sv-text{font-size:13px;line-height:1.6;color:#525B64;white-space:pre-wrap;margin-bottom:10px;padding:10px;background:#fff;border-radius:10px;border:1px solid var(--line)}
.sv-analysis{margin-bottom:10px}
.sv-analysis .asst-ul{margin:4px 0 8px}
.sv-analysis li.good{color:var(--teal)}
.sv-analysis li.warn{color:var(--brick)}
.sv-rec{font-size:12px;color:var(--teal);margin-top:6px;line-height:1.5}
.sv-copy{margin-top:4px;font-size:12px;padding:8px}
.asst-hint{font-size:12px;color:var(--muted);line-height:1.5;margin-bottom:10px}
.asst-label{font-size:11px;letter-spacing:.06em;color:var(--muted);margin:10px 0 6px;display:block}
.asst-textarea{width:100%;min-height:100px;border:1px solid var(--line);border-radius:12px;padding:10px;font-size:13px;font-family:inherit;resize:vertical;box-sizing:border-box}
.asst-input{flex:1;border:1px solid var(--line);border-radius:12px;padding:10px 12px;font-size:14px}
.asst-select{width:100%;border:1px solid var(--line);border-radius:12px;padding:10px;font-size:13px;background:#fff}
.asst-summary{background:var(--surface);border-radius:12px;padding:12px;margin-top:10px;border:1px solid var(--line)}
.asst-summary.hidden{display:none}
.asst-summary-title{font-size:12px;font-weight:600;color:var(--teal);margin-bottom:8px}
.asst-pre{font-size:12px;line-height:1.6;white-space:pre-wrap;margin:0;font-family:inherit;color:#525B64}
.asst-text{font-size:13px;line-height:1.6;color:#525B64;white-space:pre-wrap}
.asst-link{font-size:12px;color:var(--teal);margin-top:10px}
.asst-scenarios{margin-top:10px}
.asst-scenario{display:none;border:1px solid var(--line);border-radius:14px;overflow:hidden;margin-bottom:8px}
.asst-scenario.on{display:block}
.asst-scenario-tab{background:var(--surface);padding:10px 12px;font-size:12px;font-weight:600;cursor:pointer;border-bottom:1px solid var(--line)}
.asst-scenario .asst-text{padding:12px}
.asst-rank-list{display:flex;flex-direction:column;gap:10px;max-height:50vh;overflow-y:auto}
.asst-rank-item{display:flex;gap:10px;background:var(--surface);border-radius:14px;padding:10px;border:1px solid var(--line)}
.asst-rank-n{width:28px;height:28px;border-radius:50%;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;flex:none}
.asst-rank-body{flex:1;min-width:0}
.asst-rank-top{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:4px}
.asst-rank-insight{font-size:12px;color:#525B64;line-height:1.5}
.asst-score{font-size:11px;color:var(--muted);margin-left:auto}
.asst-search-row{display:flex;gap:8px;align-items:center}
.asst-search-btn{width:44px;flex:none;padding:10px;display:flex;align-items:center;justify-content:center}
.asst-search-results{margin-top:12px;max-height:45vh;overflow-y:auto;display:flex;flex-direction:column;gap:8px}
.asst-search-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px}
.asst-search-name{font-weight:600;font-size:14px;margin-bottom:4px}
.asst-muted{font-size:12px;color:var(--muted)}
.asst-tag{display:inline-block;font-size:11px;padding:2px 8px;border-radius:8px;background:var(--surface);color:var(--muted);margin-top:6px}
.asst-tag.brick{background:var(--rose-fill);color:var(--brick)}
.asst-plan{max-height:55vh;overflow-y:auto}
.asst-plan-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.asst-plan-section{margin-bottom:12px}
.asst-chip{display:inline-block;font-size:11px;background:var(--amber-fill);color:var(--amber-ink);padding:2px 8px;border-radius:8px;margin:4px 4px 0 0}
.asst-ul{margin:0;padding-left:18px;font-size:13px;line-height:1.6;color:#525B64}
.asst-recruit-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px;margin-bottom:8px}
.asst-recruit-card.hot{border-color:var(--amber)}
.asst-recruit-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}
.view-tabs{display:flex;gap:8px;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:4px}
.view-tab{flex:1;border:0;background:transparent;border-radius:11px;padding:9px 8px;font-size:12px;color:var(--muted);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:5px;font-family:inherit;-webkit-tap-highlight-color:transparent}
.view-tab.on{background:#fff;color:var(--ink);font-weight:600;box-shadow:0 1px 4px rgba(38,48,58,.08)}
.view-tab i{font-size:15px}
.hidden{display:none!important}

.rp-scroll{max-height:60vh;overflow-y:auto}
.rp-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:12px}
.rp-title{font-size:16px;font-weight:600}
.rp-insight{background:var(--surface);border-left:3px solid var(--teal);padding:8px 10px;border-radius:8px;font-size:12px;line-height:1.5;margin-bottom:12px;color:#525B64}
.rp-module{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px;margin-bottom:10px}
.rp-mod-title{font-size:13px;font-weight:600;margin-bottom:8px;display:flex;align-items:center;gap:6px}
.rp-num{width:20px;height:20px;border-radius:50%;background:var(--ink);color:#fff;font-size:11px;display:inline-flex;align-items:center;justify-content:center;flex:none}
.rp-highlight{color:var(--brick)}
.rp-compare{display:flex;gap:8px;align-items:stretch;margin:8px 0}
.rp-col{flex:1;background:#fff;border:1px solid var(--line);border-radius:10px;padding:8px;min-width:0}
.rp-arrow{display:flex;align-items:center;color:var(--muted);flex:none}
.rp-premium-change{font-size:13px;font-weight:600;color:var(--amber-ink);background:var(--amber-fill);padding:6px 10px;border-radius:8px;margin:8px 0}
.rp-li{font-size:12px;line-height:1.5;color:#525B64;margin:4px 0;display:flex;gap:6px;align-items:flex-start}
.rp-li.good{color:var(--teal)}
.rp-li.warn{color:var(--brick)}
.rp-tag{display:inline-block;font-size:11px;padding:3px 8px;border-radius:8px;margin:2px 4px 2px 0;background:#E8F5F0;color:var(--teal)}
.rp-chips{margin-top:6px}
.rp-agent{margin-top:8px;font-size:12px;color:var(--teal);font-weight:600}
.rp-loading{text-align:center;padding:24px 12px;color:var(--muted);font-size:13px}
.rp-loading i{display:block;font-size:28px;margin-bottom:10px;animation:spin 1s linear infinite}
.rp-offline-tag{font-size:11px;color:var(--amber-ink);background:var(--amber-fill);padding:6px 10px;border-radius:8px;margin-bottom:10px}
.hub-box{padding-bottom:12px}
.hub-tabs{display:flex;gap:8px;margin-bottom:8px}
.hub-tab{flex:1;border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:8px 6px;font-size:12px;font-weight:600;color:var(--muted);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:4px}
.hub-tab.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.hub-swipe-hint{font-size:11px;color:var(--muted);text-align:center;margin-bottom:8px}
.hub-slider{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;margin:0 -4px}
.hub-slider::-webkit-scrollbar{display:none}
.hub-slide{flex:0 0 100%;scroll-snap-align:start;max-height:55vh;overflow-y:auto;padding:0 4px;box-sizing:border-box}
.hub-dots{display:flex;justify-content:center;gap:6px;margin:10px 0 4px}
.hub-dots span{width:6px;height:6px;border-radius:50%;background:var(--line);transition:background .2s}
.hub-dots span.on{background:var(--teal);width:16px;border-radius:3px}
.hub-actions{display:flex;flex-direction:row!important;gap:8px;flex-wrap:wrap}
.hub-actions .btn{flex:1;margin-top:0;min-width:0;font-size:12px;padding:10px 8px}
.plan-think{padding:4px 2px 8px}
.plan-think-head{display:flex;align-items:center;gap:10px;margin-bottom:12px;padding:10px 12px;background:linear-gradient(135deg,#EEF0FB,#F8FAFF);border-radius:14px;border:1px solid var(--line)}
.plan-think-av{width:36px;height:36px;border-radius:50%;overflow:hidden;flex:none}
.plan-think-av img{width:100%;height:100%;object-fit:cover}
.plan-think-meta{flex:1;min-width:0}
.plan-think-name{font-size:13px;font-weight:600}
.plan-think-sub{font-size:11px;color:var(--muted);margin-top:2px}
.plan-think-pulse{width:8px;height:8px;border-radius:50%;background:var(--teal);flex:none;animation:plan-pulse 1.2s ease-in-out infinite}
.plan-think-log{max-height:38vh;overflow-y:auto;padding:0 4px}
.plan-think-line{font-size:12px;line-height:1.55;color:#525B64;margin-bottom:8px;padding-left:2px}
.plan-think-line.done{opacity:.92}
.plan-think-done{color:var(--teal);font-weight:600;display:flex;align-items:center;gap:6px}
.plan-think-active{display:flex;align-items:center;padding:0 4px;height:18px}
.plan-think-cursor{color:var(--teal);font-size:14px;animation:plan-blink 1s step-end infinite}
.plan-typewriting::after{content:'▍';color:var(--teal);margin-left:1px;animation:plan-blink 1s step-end infinite}
.plan-reveal{animation:plan-fade-in .35s ease both}
.plan-module-reveal{animation:plan-slide-in .42s ease both}
.rp-stream .rp-module{margin-bottom:10px}
@keyframes plan-pulse{0%,100%{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1)}}
@keyframes plan-blink{50%{opacity:0}}
@keyframes plan-fade-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes plan-slide-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}

#script-dialog .chan-pick .ch.disabled{opacity:.42;pointer-events:none}
#script-dialog .script-learn.disabled{opacity:.42;pointer-events:none}

.l4-actions{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;margin-top:10px}
.l4-actions .b{padding:8px 4px;font-size:11px;justify-content:center}

/* drill page — ChatGPT-style 1:1 thread */
html:not(.recruit-app) #drill-phone{display:flex;flex-direction:column;height:760px;max-height:calc(100vh - 68px);overflow:hidden;background:#fafbfc}
#drill-phone{display:flex;flex-direction:column;overflow:hidden;background:#fafbfc}
#drill-phone .notch{flex:none;background:#fafbfc}
.drill-topbar{
  flex:none;display:grid;grid-template-columns:52px 1fr 52px;align-items:center;
  padding:10px 12px;border-bottom:1px solid var(--line);background:#fff
}
.drill-back{
  width:40px;height:40px;display:flex;align-items:center;justify-content:center;
  color:var(--ink);text-decoration:none;font-size:22px;border-radius:12px;justify-self:start
}
.drill-back:active{background:var(--surface)}
.drill-topbar-main{min-width:0;text-align:center;padding:0 4px}
.drill-topbar-name{font-size:15px;font-weight:600;color:var(--ink);line-height:1.25}
.drill-topbar-meta{font-size:11px;color:var(--muted);margin-top:2px;line-height:1.2}
.drill-finish-link{
  justify-self:end;border:none;background:var(--surface);color:var(--teal);font-size:12px;font-weight:600;
  padding:7px 12px;border-radius:999px;cursor:pointer;font-family:inherit;white-space:nowrap
}
.drill-finish-link.disabled{opacity:.45;pointer-events:none}
.drill-page-scroll{
  flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;
  -webkit-overflow-scrolling:touch;background:#fafbfc
}
.drill-thread{padding:16px 16px 12px;display:flex;flex-direction:column;gap:16px;min-height:120px}
.drill-loading{display:flex;justify-content:center;padding:32px;color:var(--muted);font-size:20px}
.drill-loading i{animation:spin 1s linear infinite}
.drill-msg{display:flex;align-items:flex-end;gap:10px;width:100%}
.drill-msg.customer{justify-content:flex-start;padding-right:36px}
.drill-msg.agent{justify-content:flex-end;padding-left:36px}
.drill-msg-av{
  flex:none;width:30px;height:30px;border-radius:50%;background:#fff;
  border:1px solid var(--line);display:flex;align-items:center;justify-content:center;
  font-size:12px;font-family:var(--serif);font-weight:700;color:var(--teal);margin-bottom:2px
}
.drill-msg-av.me{background:var(--teal);border-color:var(--teal);color:#fff;font-family:var(--sans);font-size:10px;font-weight:600}
.drill-msg-body{max-width:100%;min-width:0;flex:0 1 auto}
.drill-msg-bubble{
  display:inline-block;padding:10px 14px;border-radius:18px;font-size:13px;line-height:1.5;
  word-break:break-word;white-space:pre-wrap;box-shadow:0 1px 2px rgba(38,48,58,.04)
}
.drill-msg.customer .drill-msg-bubble{background:#fff;color:var(--ink);border:1px solid var(--line);border-radius:4px 18px 18px 18px}
.drill-msg.agent .drill-msg-bubble{background:var(--teal);color:#fff;border-radius:18px 18px 4px 18px;border:none}
.drill-status{text-align:center;font-size:11px;color:var(--muted);padding:0 16px 10px}
.drill-status:empty{display:none}
.drill-composer{
  flex:none;padding:12px 16px 16px;border-top:1px solid var(--line);background:#fff
}
.drill-composer-box{
  display:flex;align-items:center;gap:10px;min-height:48px;
  padding:0 6px 0 16px;border:1px solid var(--line);border-radius:24px;background:#fff;
  box-shadow:0 2px 10px rgba(38,48,58,.06)
}
.drill-chat-input{
  flex:1;align-self:center;border:none;outline:none;resize:none;background:transparent;
  font-size:14px;font-family:inherit;color:var(--ink);line-height:20px;min-height:20px;
  max-height:100px;padding:14px 0;margin:0;vertical-align:middle
}
.drill-chat-input::placeholder{color:#a8b0ba;line-height:20px}
.drill-send-btn{
  flex:none;width:34px;height:34px;margin:7px 0;border:none;border-radius:50%;
  background:var(--teal);color:#fff;display:flex;align-items:center;justify-content:center;
  cursor:pointer;font-size:17px;line-height:1;transition:opacity .15s,transform .1s
}
.drill-send-btn:active{transform:scale(.96)}
.drill-send-btn.disabled{opacity:.35;pointer-events:none;background:#c5cad3}
.drill-score-panel{display:none;padding:0 16px 16px}
.drill-score-panel.show{display:block}
.drill-score-card{padding:13px 14px;background:#fff;border-radius:16px;border:1px solid var(--line)}
.drill-score-head{display:flex;align-items:center;gap:12px;padding:12px;border-radius:14px;background:var(--surface);margin-bottom:8px}
.drill-score-head.ok{background:rgba(58,142,122,.1)}
.drill-score-head.warn{background:var(--amber-fill)}
.drill-score-num{font-family:var(--serif);font-size:36px;font-weight:700;line-height:1;color:var(--ink)}
.drill-score-num small{font-size:14px;font-weight:600;margin-left:2px}
.drill-score-pass{font-size:13px;font-weight:600}
.drill-score-engine{font-size:10.5px;color:var(--muted);margin-top:2px}
.drill-feedback{font-size:12px;line-height:1.55;color:#525B64;margin-bottom:8px}
.drill-dims{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}
.drill-dim-row{display:grid;grid-template-columns:56px 1fr 26px;align-items:center;gap:6px;font-size:11px}
.drill-dim-label{color:var(--muted)}
.drill-dim-bar{height:6px;border-radius:4px;background:#E8EDF0;overflow:hidden}
.drill-dim-bar i{display:block;height:100%;background:var(--teal);border-radius:4px}
.drill-dim-num{text-align:right;font-weight:600}
.drill-tips-title{font-size:11.5px;font-weight:600;margin:6px 0 4px;color:var(--ink)}
.drill-tips-title.warn{color:var(--amber-ink)}
.drill-tips{margin:0 0 8px;padding-left:18px;font-size:11.5px;color:#525B64;line-height:1.5}
.drill-tips.warn{color:var(--amber-ink)}
.drill-score-actions{margin-top:12px}
#drill-phone .toast{bottom:80px;z-index:14}

/* demo watch page — 观摩绩优成单回放 */
#demo-phone .toast{bottom:72px;z-index:14}
#demo-phone .drill-page-scroll{
  background:
    radial-gradient(circle at 20% 10%, rgba(142,155,240,.06), transparent 42%),
    radial-gradient(circle at 80% 90%, rgba(58,142,122,.05), transparent 38%),
    #F4F6F8;
}
.demo-hint{
  margin:12px 16px 8px;padding:9px 14px;border-radius:14px;
  background:rgba(255,255,255,.92);color:#5A6BD4;font-size:11px;line-height:1.45;
  display:flex;align-items:center;gap:7px;
  border:1px solid rgba(142,155,240,.18);box-shadow:0 1px 4px rgba(0,0,0,.04)
}
.demo-hint i{font-size:15px;flex:none;color:#8E9BF0}
#demo-messages{padding:4px 14px 12px;display:flex;flex-direction:column;gap:18px}
.demo-msg{display:flex;align-items:flex-end;gap:10px;width:100%}
.demo-msg--customer{justify-content:flex-start;padding-right:28px}
.demo-msg--agent{justify-content:flex-end;padding-left:28px}
.demo-msg-side{
  flex:none;display:flex;flex-direction:column;align-items:center;gap:4px;width:52px
}
.demo-av{
  width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-size:14px;font-weight:600;border:2px solid var(--line);background:#fff;color:var(--muted);
  box-shadow:0 2px 6px rgba(0,0,0,.06)
}
.demo-av--customer{background:#fff;color:#6B7280;border-color:#E5E7EB}
.demo-av--star{
  background:linear-gradient(145deg,#8E9BF0 0%,#6B7FD7 100%);
  border-color:#8E9BF0;color:#fff;font-size:16px;
  box-shadow:0 3px 10px rgba(107,127,215,.35)
}
.demo-role{
  font-size:9px;color:var(--muted);text-align:center;line-height:1.25;
  max-width:52px;word-break:keep-all
}
.demo-role--star{color:#6B7FD7;font-weight:600}
.demo-msg-main{max-width:calc(100% - 62px);min-width:0;flex:0 1 auto}
.demo-bubble{
  display:inline-block;padding:11px 14px;font-size:13.5px;line-height:1.55;
  border-radius:4px 18px 18px 18px;background:#fff;color:var(--ink);
  border:1px solid #E8EAED;box-shadow:0 1px 3px rgba(0,0,0,.05);
  word-break:break-word
}
.demo-bubble--star{
  border-radius:18px 18px 4px 18px;background:linear-gradient(135deg,#3A8E7A 0%,#2F7565 100%);
  color:#fff;border:none;box-shadow:0 2px 8px rgba(58,142,122,.22)
}
.demo-bubble.is-streaming::after{
  content:'';display:inline-block;width:2px;height:1.05em;margin-left:2px;vertical-align:-.14em;
  background:currentColor;border-radius:1px;opacity:.65;animation:streamCaret .95s step-end infinite
}
.demo-bubble--star.is-streaming::after{background:#fff}
.demo-star-av{background:linear-gradient(135deg,#8E9BF0,#6B7FD7)!important;border-color:#8E9BF0!important;color:#fff!important}
.drill-star-bubble{box-shadow:0 1px 3px rgba(142,155,240,.15)}
.demo-watch-bar{
  flex:none;display:flex;align-items:center;justify-content:center;gap:8px;
  padding:14px 16px;padding-bottom:calc(14px + env(safe-area-inset-bottom,0));
  border-top:1px solid var(--line);background:#fff;color:var(--muted);font-size:12px
}
.demo-watch-dot{
  width:7px;height:7px;border-radius:50%;background:var(--teal);
  animation:demoPulse 1.2s ease-in-out infinite
}
@keyframes demoPulse{0%,100%{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1)}}
.demo-success{
  margin:8px 16px 24px;padding:14px 16px;border-radius:16px;
  background:linear-gradient(135deg,#EAF3DE 0%,#E0EFD4 100%);
  border:1px solid #CFE5BC;color:#27500A;
  font-size:13px;line-height:1.5;
  box-shadow:0 2px 8px rgba(39,80,10,.08);
  display:none
}
.demo-success:not([hidden]){
  display:flex;align-items:flex-start;gap:10px
}
.demo-success i{font-size:22px;flex:none;margin-top:1px;color:#4A8F2A}
html.recruit-app #demo-phone{display:flex;flex-direction:column;height:100dvh;max-height:none;overflow:hidden;background:#fafbfc}
html.recruit-app #demo-phone .drill-page-scroll{flex:1;min-height:0}
html.recruit-app #demo-phone .drill-topbar{padding-top:max(10px,env(safe-area-inset-top,0))}
.drill-msg-bubble.is-streaming::after{
  content:'';display:inline-block;width:2px;height:1.05em;margin-left:2px;vertical-align:-.14em;
  background:currentColor;border-radius:1px;opacity:.65;animation:streamCaret .95s step-end infinite
}
.drill-msg.agent .drill-msg-bubble.is-streaming::after{background:#fff}

/* ===== RENEWAL OVERLAY（记忆 / 微信模拟 — 由 common.js 注入，合并时勿删） ===== */
.memory-overlay{display:none;position:fixed;inset:0;z-index:1100}
.memory-overlay.open .memory-backdrop{opacity:1}
.memory-overlay.open .memory-panel{transform:translateX(0)}
.memory-backdrop{position:absolute;inset:0;background:rgba(38,48,58,.42);opacity:0;transition:opacity .3s}
.memory-panel{position:absolute;top:0;right:0;bottom:0;width:min(340px,92vw);background:#fff;box-shadow:-8px 0 32px rgba(38,48,58,.15);transform:translateX(105%);transition:transform .34s cubic-bezier(.22,1,.36,1);display:flex;flex-direction:column;padding:16px 14px 20px;border-left:1px solid var(--line)}
.memory-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:12px}
.memory-head-main{display:flex;gap:10px;align-items:center}
.memory-av{width:40px;height:40px;border-radius:50%;overflow:hidden;flex:none;border:2px solid var(--teal)}
.memory-av img{width:100%;height:100%;object-fit:cover}
.memory-title{font-size:15px;font-weight:700;font-family:var(--serif)}
.memory-sub{font-size:11px;color:var(--muted);margin-top:2px}
.memory-close{border:none;background:var(--surface);width:32px;height:32px;border-radius:50%;cursor:pointer;color:var(--muted)}
.memory-profile{margin-bottom:12px;padding:10px 12px;background:var(--surface);border-radius:12px;font-size:12px;line-height:1.55;color:#525B64}
.memory-offline{display:inline-block;font-size:10px;color:var(--amber-ink);background:var(--amber-fill);padding:2px 8px;border-radius:6px;margin-bottom:6px}
.memory-loading{text-align:center;color:var(--muted);padding:20px;font-size:12px}
.memory-track{flex:1;overflow-y:auto;padding-right:4px}
.memory-node{display:flex;gap:10px;margin-bottom:14px;opacity:0;animation:memory-node-in .45s ease forwards}
.memory-dot{width:28px;height:28px;border-radius:50%;background:var(--surface);border:2px solid var(--line);display:flex;align-items:center;justify-content:center;flex:none;color:var(--muted);font-size:13px;position:relative}
.memory-dot.today{background:var(--teal);border-color:var(--teal);color:#fff;box-shadow:0 0 0 4px rgba(58,142,122,.15)}
.memory-card{flex:1;background:#fff;border:1px solid var(--line);border-radius:14px;padding:10px 12px;min-width:0}
.memory-card.highlight{border-color:var(--teal);background:linear-gradient(135deg,#F5FBF9,#fff)}
.memory-date{font-size:11px;color:var(--teal);font-weight:600;margin-bottom:4px}
.memory-event{font-size:12px;line-height:1.55;color:var(--ink)}
.memory-subtitle{font-size:11px;color:var(--muted);margin-top:4px}
.memory-tags{margin-top:8px;font-size:11px;color:var(--amber-ink);background:var(--amber-fill);padding:6px 8px;border-radius:8px;line-height:1.45}
.memory-tag{display:inline-block;margin-right:6px}
@keyframes memory-node-in{from{opacity:0;transform:translateX(16px)}to{opacity:1;transform:none}}
.wx-overlay{display:none;position:fixed;inset:0;z-index:1200;align-items:center;justify-content:center;padding:16px}
.wx-overlay.open .wx-backdrop{opacity:1}
.wx-overlay.open .wx-shell{transform:translateY(0) scale(1);opacity:1}
.wx-backdrop{position:absolute;inset:0;background:rgba(20,24,28,.55);opacity:0;transition:opacity .28s}
.wx-shell{position:relative;width:min(320px,100%);transform:translateY(20px) scale(.96);opacity:0;transition:transform .32s ease,opacity .32s ease}
.wx-phone{background:#EDEDED;border-radius:28px;overflow:hidden;border:1px solid #D5D5D5;box-shadow:0 18px 48px rgba(0,0,0,.22)}
.wx-status{display:flex;justify-content:space-between;padding:8px 16px 4px;font-size:11px;color:#111;background:#EDEDED}
.wx-nav{display:flex;align-items:center;justify-content:space-between;padding:8px 12px 10px;background:#EDEDED;border-bottom:1px solid #E0E0E0;font-size:14px;font-weight:600}
.wx-nav-center{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:12px}
.wx-nav-av{width:28px;height:28px;border-radius:6px;background:var(--peri);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}
.wx-sim-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 12px 8px;background:linear-gradient(90deg,#E8F5F0,#F0F4FF);border-bottom:1px solid #E0E0E0;font-size:11px}
.wx-sim-badge{display:inline-flex;align-items:center;gap:4px;color:var(--teal);font-weight:600}
#wx-sim-status{color:var(--muted);font-size:10px;text-align:right;flex:1;min-width:0}
.wx-msg-in{animation:wx-msg-in .32s ease both}
@keyframes wx-msg-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.wx-typing-bubble{display:flex;align-items:center;gap:4px;padding:12px 14px!important;min-width:48px}
.wx-dot{width:6px;height:6px;border-radius:50%;background:#999;animation:wx-dot 1.2s infinite ease-in-out}
.wx-dot:nth-child(2){animation-delay:.15s}
.wx-dot:nth-child(3){animation-delay:.3s}
@keyframes wx-dot{0%,60%,100%{opacity:.35;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}
.wx-send-hero:disabled{opacity:.72;cursor:not-allowed;box-shadow:none}
.wx-spin{animation:wx-spin .8s linear infinite}
@keyframes wx-spin{to{transform:rotate(360deg)}}
.wx-chat{min-height:320px;max-height:52vh;overflow-y:auto;padding:12px 10px 16px;background:#EDEDED;scroll-behavior:smooth}
.wx-time{text-align:center;font-size:11px;color:#999;margin:8px 0 12px}
.wx-row{display:flex;align-items:flex-end;gap:8px;margin-bottom:12px}
.wx-row.wx-right{justify-content:flex-end}
.wx-row.wx-fade{opacity:.85}
.wx-av{width:36px;height:36px;border-radius:6px;flex:none;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;overflow:hidden}
.wx-av.peer{background:linear-gradient(135deg,#8E9BF0,#6B7AD6);color:#fff}
.wx-av.agent{background:#fff;border:1px solid #E0E0E0}
.wx-av.agent img{width:100%;height:100%;object-fit:cover}
.wx-bubble{max-width:78%;padding:10px 12px;border-radius:10px;font-size:13px;line-height:1.55;position:relative}
.wx-bubble.white{background:#fff;color:#111;border:1px solid #E8E8E8;border-top-left-radius:2px}
.wx-bubble.green{background:#95EC69;color:#111;border-top-right-radius:2px}
.wx-bubble.green.soft{background:#95EC69;opacity:.92;font-size:12px}
.wx-mini-card{margin-top:10px;background:#fff;border-radius:8px;overflow:hidden;border:1px solid rgba(0,0,0,.06)}
.wx-mini-cover{height:72px;background:linear-gradient(135deg,#3A8E7A,#6B7AD6);display:flex;align-items:center;justify-content:center;color:#fff;font-size:28px}
.wx-mini-body{padding:8px 10px}
.wx-mini-title{font-size:12px;font-weight:600;color:#111}
.wx-mini-sub{font-size:10px;color:#888;margin-top:2px}
.wx-link-hint{margin-top:8px;font-size:10px;color:#2E6B4F;word-break:break-all}
.wx-toolbar{display:flex;align-items:center;gap:8px;padding:8px 10px;background:#F7F7F7;border-top:1px solid #E0E0E0}
.wx-input{flex:1;background:#fff;border:1px solid #E0E0E0;border-radius:6px;padding:6px 10px;font-size:12px;color:#999}
.wx-send-hero{width:100%;margin-top:12px;border:none;border-radius:14px;padding:14px 16px;background:#07C160;color:#fff;font-size:15px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;box-shadow:0 8px 24px rgba(7,193,96,.35)}
.wx-close{position:absolute;top:-8px;right:-8px;width:36px;height:36px;border-radius:50%;border:none;background:#fff;box-shadow:0 4px 12px rgba(0,0,0,.15);cursor:pointer;color:var(--muted)}
.sv-preview{margin-top:8px}

.funnel-health{margin:12px 0 14px;padding:14px;background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:0 4px 16px rgba(38,48,58,.06)}
.fh-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px}
.fh-title{font-size:13px;font-weight:700;font-family:var(--serif);display:flex;align-items:center;gap:6px}
.fh-sub{font-size:11px;color:var(--muted);margin-top:3px}
.risk-toast{position:fixed;left:50%;bottom:88px;transform:translateX(-50%) translateY(20px);background:var(--ink);color:#fff;padding:12px 18px;border-radius:14px;font-size:13px;font-weight:600;z-index:1300;opacity:0;pointer-events:none;transition:opacity .3s,transform .3s;box-shadow:0 10px 30px rgba(38,48,58,.25);white-space:nowrap;display:flex;align-items:center;gap:8px}
.risk-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.risk-xp{color:#7FD7C4;font-size:12px}

/* today — unified module sections */
.today-head-row{display:flex;align-items:flex-end;justify-content:space-between;gap:10px}
.today-date-chip{
  flex:none;font-size:12px;font-weight:600;color:var(--teal);
  background:rgba(58,142,122,.1);padding:5px 10px;border-radius:999px;white-space:nowrap
}
.mod-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:4px}
.mod-tile{
  display:flex;flex-direction:column;align-items:flex-start;gap:4px;
  background:#fff;border:1px solid var(--line);border-radius:16px;padding:12px 13px;
  text-decoration:none;color:var(--ink);transition:transform .15s,box-shadow .15s;
  -webkit-tap-highlight-color:transparent
}
.mod-tile:active{transform:scale(.985);box-shadow:0 2px 8px rgba(38,48,58,.08)}
.mod-tile i{font-size:22px;color:var(--teal)}
.mod-tile span{font-size:13px;font-weight:600}
.mod-tile em{font-style:normal;font-size:11px;color:var(--muted)}
.today-rhythm{padding:4px 0;margin-bottom:4px}
.rhythm-row{
  display:flex;align-items:center;gap:10px;padding:11px 2px;
  border-bottom:1px solid var(--line);text-decoration:none;color:inherit
}
.rhythm-row:last-child{border-bottom:0;padding-bottom:2px}
.rhythm-row.done{opacity:.55}
.rhythm-time{
  flex:none;width:46px;font-size:12px;font-weight:600;color:var(--teal);font-family:var(--serif)
}
.rhythm-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.rhythm-title{font-size:13px;line-height:1.4}
.rhythm-tag{
  align-self:flex-start;font-size:10px;padding:2px 8px;border-radius:8px;
  background:var(--surface);color:var(--muted)
}
.rhythm-chev{color:var(--muted);font-size:16px;flex:none}
.today-done{margin-bottom:16px}
.done-row{
  display:flex;align-items:center;gap:8px;padding:10px 12px;margin-bottom:8px;
  background:#fff;border:1px solid var(--line);border-radius:14px;font-size:12.5px
}
.done-row i{color:var(--teal);font-size:18px;flex:none}
.done-text{flex:1;color:#525B64;line-height:1.45}
.done-time{font-size:11px;color:var(--muted);flex:none}
.today-done-empty{
  padding:14px;text-align:center;font-size:12.5px;color:var(--muted);
  background:var(--surface);border-radius:14px
}
#today-phone .qhead{display:none}

/* wode — unified profile & cards */
.profile-card .profile{margin:0;align-items:flex-start}
.profile-card .profile-rank{margin-left:auto;align-self:flex-start}
.kpi-card{margin-bottom:12px;padding:15px 16px}
.kpi-card .kbar:last-child{margin-bottom:0}
#wode-phone .income{margin-top:0}
#wode-phone .links{margin-bottom:18px}
#wode-phone .toast{
  position:absolute;left:50%;transform:translateX(-50%);
  bottom:calc(86px + env(safe-area-inset-bottom,0));
  background:var(--ink);color:#fff;padding:10px 16px;border-radius:12px;
  font-size:12.5px;opacity:0;pointer-events:none;transition:opacity .25s;z-index:12;white-space:nowrap
}
#wode-phone .toast.show{opacity:1}
