:root{--bg:#F8F7F4;--card:#FFFFFF;--ink:#22271F;--muted:#6B7063;--line:#E4E1D8;--accent:#3E6B4F;--accent-ink:#FFFFFF;--amber:#B07E24;--amber-bg:#F7EEDC;--bad:#A23B2E;--bridge:#EAF1EC;--mine:#1E3358;--mine-line:#4A6FA5}
@media(prefers-color-scheme:dark){:root{--bg:#181B16;--card:#20241E;--ink:#EAE8DF;--muted:#9BA091;--line:#343A30;--accent:#82B394;--accent-ink:#12160F;--amber:#DCAF5A;--amber-bg:#2E2A1D;--bad:#E08A7E;--bridge:#222B24;--mine:#D3E2F7;--mine-line:#8FB0DC}}
*{box-sizing:border-box}
html,body{margin:0;height:100%;height:100dvh;background:var(--bg);color:var(--ink);font:13px/1.45 -apple-system,BlinkMacSystemFont,"PingFang SC","Noto Sans SC",sans-serif;overflow:hidden;overscroll-behavior:none;max-width:100vw;touch-action:pan-y;-webkit-text-size-adjust:100%;text-size-adjust:100%}
/* 根容器固定在可视视口上：键盘弹出时高度跟 visualViewport 走、位置跟 offsetTop 走，整页不被 iOS 往上推 */
#app{position:fixed;left:0;right:0;top:var(--vvt,0px);height:100vh;height:var(--vvh,100dvh);display:flex;flex-direction:column;overflow:hidden}
a{color:var(--accent)}
button,input,textarea,select{font:inherit;color:inherit}
button{cursor:pointer;border:1px solid var(--line);background:var(--card);border-radius:8px;padding:6px 12px}
button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
button.rec{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
button:disabled{opacity:.5;cursor:default}
input,textarea,select{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:8px 10px;width:100%}
svg.ic{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}
.top{display:flex;align-items:center;gap:8px;padding:2px 12px;padding-top:calc(2px + env(safe-area-inset-top));padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right));min-height:38px;border-bottom:1px solid var(--line);background:var(--card);flex:none}
.top .sp{flex:1}
.pill{font-size:11px;padding:2px 8px;border-radius:99px;border:1px solid var(--line);color:var(--muted);white-space:nowrap}
.pill.on{color:var(--accent);border-color:var(--accent)}
.pill.busy{color:var(--amber);border-color:var(--amber);background:var(--amber-bg)}
.pill.off{color:var(--bad);border-color:var(--bad)}
.nav{display:flex;gap:4px}
.nav a{display:flex;align-items:center;gap:6px;padding:6px 10px;border-radius:8px;color:var(--ink);text-decoration:none;position:relative}
.nav a.cur{background:var(--bridge);color:var(--accent);font-weight:600}
.badge{background:var(--amber);color:#fff;border-radius:99px;font-size:10px;padding:0 6px;min-width:18px;text-align:center}
.main{flex:1;min-height:0;display:flex}
.page{flex:1;min-width:0;overflow-y:auto;padding:16px}
.page.narrow{max-width:900px;margin:0 auto;width:100%}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:10px}
.muted{color:var(--muted);font-size:12px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}
h2{font-size:15px;margin:0 0 12px}
/* chat */
.chat{display:flex;flex:1;min-width:0;min-height:0}
.threads{width:230px;flex:none;border-right:1px solid var(--line);overflow-y:auto;padding:8px;background:var(--card)}
.threads .th{display:flex;justify-content:space-between;gap:6px;padding:8px 10px;border-radius:8px;cursor:pointer;text-decoration:none;color:var(--ink)}
.threads .th.cur{background:var(--bridge);font-weight:600}
.threads .th span.t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.conv{flex:1;min-width:0;display:flex;flex-direction:column}
.conv-head{display:flex;align-items:center;gap:8px;padding:8px 16px;border-bottom:1px solid var(--line)}
.conv-head .tt{flex:1;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.thtoggle{display:none}
.msgs{flex:1;overflow-y:auto;padding:12px 16px}
.msg{max-width:760px;margin:0 0 10px;padding:8px 12px;border-radius:12px;background:var(--card);border:1px solid var(--line);overflow-wrap:anywhere}
.msg.mine{margin-left:auto;background:var(--bridge)}
.msg.bridge{background:var(--bridge);border-color:var(--accent)}
.msg.status{border-style:dashed;font-size:12px;color:var(--muted)}
.msg.system{text-align:center;color:var(--muted);font-size:12px;border:none;background:none}
.msg .who{font-size:11px;color:var(--muted);margin-bottom:2px;display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.role{font-size:10px;padding:0 6px;border-radius:99px;border:1px solid var(--line)}
.role.owner{color:var(--amber);border-color:var(--amber)}
.role.bridge{color:var(--accent);border-color:var(--accent)}
.files a{display:inline-flex;gap:4px;align-items:center;margin:4px 8px 0 0;font-size:12px}
.md p{margin:4px 0}.md h1,.md h2,.md h3,.md h4{margin:8px 0 4px;font-size:1.05em}
.md pre{background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:8px;overflow-x:auto;margin:6px 0}
.md code{background:var(--bg);padding:0 4px;border-radius:4px;font-family:ui-monospace,Menlo,monospace;font-size:.92em}
.md pre code{background:none;padding:0}
.md ul,.md ol{margin:4px 0;padding-left:22px}
.composer{border-top:1px solid var(--line);padding:6px 12px max(6px,env(safe-area-inset-bottom));background:var(--card)}
body.kb .composer{padding-bottom:6px} /* 键盘弹出时没有 Home 条，不留安全区 */
.cbtn{width:40px;height:40px;flex:none;border-radius:50%;border:1px solid var(--line);background:var(--card);display:inline-flex;align-items:center;justify-content:center;padding:0;cursor:pointer;color:var(--ink)}
/* T-0261：iOS 上 display:none 的文件框经 label 触发不可靠 → 改成盖在按钮上的透明 input，直接点它 */
.cbtn{position:relative;overflow:hidden}
.cbtn input{position:absolute;inset:0;width:100%;height:100%;opacity:0;font-size:16px;cursor:pointer}
.cbtn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.composer .row{display:flex;gap:8px;align-items:flex-end}
.composer .row>*{margin:0}
.composer textarea{resize:none;height:40px;min-height:40px;line-height:20px;padding:9px 14px;border-radius:20px;overflow-y:hidden;flex:1;min-width:0;width:auto}
/* T-0316：contenteditable 输入框，外观对齐原 textarea */
.composer .ta{background:var(--card);border:1px solid var(--line);height:40px;min-height:40px;box-sizing:border-box;line-height:20px;padding:9px 14px;border-radius:20px;overflow-y:hidden;flex:1;min-width:0;width:auto;white-space:pre-wrap;word-break:break-word;outline:none;-webkit-user-select:text;user-select:text;-webkit-appearance:none;font-size:16px}
.composer .ta:focus{border-color:var(--accent)}
.composer .ta:empty::before{content:attr(data-placeholder);color:var(--muted);pointer-events:none}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:6px}
.chip{font-size:11px;border:1px solid var(--line);border-radius:99px;padding:2px 8px}
.filebtn{display:inline-flex;align-items:center;padding:8px 10px}
.filebtn input{display:none}
.qbtn{border:none;background:none;color:var(--muted);font-size:11px;padding:0 6px;margin:-8px 0 -8px auto;min-height:32px;min-width:44px;border-radius:6px}
.qbtn:hover{color:var(--accent)}
.qbox{border-left:3px solid var(--accent);background:var(--bg);padding:4px 8px;border-radius:6px;margin:4px 0;font-size:12px;color:var(--muted);cursor:pointer;overflow-wrap:anywhere}
.qbox strong{color:var(--ink)}
.qbox .qt{display:inline}
.qbox:not(.open){white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qbox:not(.open) .qjump{display:none}
.qbox.open .qjump{display:block;margin-top:2px;color:var(--accent)}
.msg.hl{outline:2px solid var(--amber);outline-offset:1px}
.qbar{display:flex;align-items:center;gap:8px;border-left:3px solid var(--accent);background:var(--bg);padding:6px 8px;border-radius:6px;margin-bottom:6px;font-size:12px;color:var(--muted)}
.qbar .qtxt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qbar .qtxt strong{color:var(--ink)}
.thumb{display:block;max-width:240px;max-height:200px;border-radius:8px;border:1px solid var(--line);margin-top:6px}
.imgchip{position:relative;padding:2px;border-radius:8px}
.imgchip img{display:block;height:56px;max-width:96px;object-fit:cover;border-radius:6px}
.chiprm{border:1px solid var(--line);background:var(--card);color:var(--bad);border-radius:99px;padding:1px 8px;margin-left:6px;font-size:11px;cursor:pointer}
.imgchip{flex-direction:column;align-items:flex-start;gap:3px;padding:4px 8px}
.imgchip .chiprm{margin-left:0}
.chipmeta{font-size:11px;word-break:break-all}
.chipnote{flex-basis:100%;font-size:12px;color:var(--accent);font-weight:600}
.chipx{border:none;background:var(--ink);color:var(--bg);border-radius:99px;width:18px;height:18px;line-height:16px;padding:0;margin-left:6px;font-size:12px}
.imgchip .chipx{position:absolute;top:-6px;right:-6px;margin:0}
.chip{display:inline-flex;align-items:center}
.composer.drop{outline:2px dashed var(--accent);outline-offset:-4px}
.pastebtn{display:inline-flex;align-items:center;gap:4px;padding:8px 10px;white-space:nowrap}
.offer{display:flex;align-items:center;gap:10px;border:1px dashed var(--accent);border-radius:10px;padding:6px 10px;margin-bottom:6px;cursor:pointer;position:relative;background:var(--bridge)}
.offer img{height:48px;max-width:96px;object-fit:cover;border-radius:6px;border:1px solid var(--line)}
.offer-t strong{display:inline-flex;align-items:center;gap:4px}
.offer .chipx{margin-left:auto;flex:none}
@media(max-width:480px){.pastebtn .lb2{display:none}}
/* lines */
.state{display:inline-block;font-size:11px;padding:1px 8px;border-radius:99px;border:1px solid var(--line)}
.state.s-working{color:var(--accent);border-color:var(--accent)}
.state.s-waiting_owner{color:var(--amber);border-color:var(--amber);background:var(--amber-bg)}
.state.s-handover{color:var(--muted)}
.state.s-stale{color:var(--muted);border-color:var(--muted);background:var(--bg)}
.card.stale{opacity:.6}
.ctx{font-size:12px;margin-bottom:2px;color:var(--muted)}
.ctx.amber{color:var(--amber);font-weight:600}
.ctx.red{color:var(--bad);font-weight:700}
.lgrid{grid-template-columns:repeat(auto-fill,minmax(270px,1fr))}
.lcard{margin-bottom:0;display:flex;flex-direction:column;gap:8px;min-width:0}
.lhead{display:flex;align-items:center;justify-content:space-between;gap:8px}
.lrow{display:flex;flex-direction:column;gap:2px;min-width:0}
.llab{font-size:11px;color:var(--muted);letter-spacing:.04em}
.lval{overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.lval a{font-weight:600}
.lfoot{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-top:auto;padding-top:6px;border-top:1px solid var(--line)}
.lines-wrap{display:flex;gap:16px;align-items:flex-start}
.lines-main{flex:1;min-width:0}
.lines-side{width:260px;flex:none}
.uw{margin-bottom:12px}
.uw-h{display:flex;justify-content:space-between;margin-bottom:4px}
.bar{height:8px;border-radius:99px;background:var(--line);overflow:hidden}
.bar .fill{height:100%;background:var(--accent);border-radius:99px}
.bar .fill.warn{background:var(--bad)}
@media(max-width:700px){.lines-wrap{flex-direction:column-reverse;align-items:stretch}.lines-side{width:auto}}
/* decisions */
.opts{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}
.ops{font-size:12px;color:var(--muted);margin-top:4px}
.tabs{display:flex;gap:8px;margin-bottom:12px}
.tabs button.cur{background:var(--bridge);border-color:var(--accent);color:var(--accent)}
/* docs */
.doc.unread .dt{color:var(--amber);font-weight:700}
.pagehead{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:10px}
.pagehead h2{margin:0}
.pagehead .tabs{margin:0}
.docwrap{position:relative}
.docwrap .card{margin-bottom:0;height:100%;box-sizing:border-box;padding-right:46px}
.favbtn{position:absolute;top:2px;right:2px;width:40px;height:40px;min-width:32px;min-height:32px;padding:0;display:flex;align-items:center;justify-content:center;background:transparent;border:0;border-radius:8px;color:var(--muted);cursor:pointer}
.favbtn .ic{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.favbtn.on{color:var(--amber)}
.favbtn.on .ic{fill:currentColor}
.doc{cursor:pointer;text-decoration:none;color:var(--ink);display:block}
.docframe{width:100%;height:70vh;border:1px solid var(--line);border-radius:8px;background:#fff}
/* tables */
table{width:100%;border-collapse:collapse;font-size:12px}
th,td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--line);overflow-wrap:anywhere}
.tablewrap{overflow-x:auto}
.tleft{position:relative;min-width:0;display:flex;align-items:center}
.ttl{font-weight:700;font-size:14px}
.ttbtn,.menubtn{border:none;background:none;display:inline-flex;align-items:center;gap:4px;min-height:36px;padding:0 8px;border-radius:8px;position:relative}
.ttbtn{font-weight:700;font-size:14px;max-width:62vw}
.ttbtn .tt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ttbtn:hover,.menubtn:hover{background:var(--bridge)}
.menubtn .badge{position:absolute;top:0;right:0}
.dot{width:10px;height:10px;border-radius:50%;background:var(--muted);flex:none}
.dot.on{background:#3E9B5F}.dot.busy{background:var(--amber)}.dot.off{background:var(--bad)}.dot.net{background:var(--muted)}
.pop{position:absolute;left:0;top:38px;z-index:20;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:6px;min-width:220px;max-width:86vw;max-height:60vh;overflow-y:auto;box-shadow:0 4px 16px rgba(0,0,0,.18)}
.pop .th{display:flex;justify-content:space-between;gap:6px;padding:10px;border-radius:8px;text-decoration:none;color:var(--ink);min-height:40px;align-items:center}
.pop .th.cur{background:var(--bridge);font-weight:600}
.pop .th span.t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mnav{display:none}
.uwrap{position:relative}
.uwrap .pill{background:var(--card)}
.umenu{position:absolute;right:0;top:38px;max-width:86vw;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:6px;z-index:8;display:flex;flex-direction:column;gap:6px;min-width:110px}
/* login */
.login{max-width:360px;margin:12vh auto;padding:0 16px;width:100%}
.remember{display:flex;align-items:center;gap:6px;margin:10px 0;color:var(--muted);cursor:pointer}
.err{color:var(--bad);margin:8px 0}
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:76px;background:var(--ink);color:var(--bg);padding:8px 14px;border-radius:8px;z-index:9;max-width:90vw}
@media(max-width:700px){
  input,textarea,select{font-size:16px} /* <16px 时 iOS Safari 聚焦会自动放大且收键盘后不缩回 */
  body.kb .nav{display:none}
  body.kb #app{padding-bottom:0}
  .nav{display:none}
  .mnav{display:flex;flex-direction:column;gap:2px;margin-bottom:4px;border-bottom:1px solid var(--line);padding-bottom:6px}
  .mnav a{display:flex;align-items:center;gap:8px;padding:10px 8px;border-radius:8px;color:var(--ink);text-decoration:none;position:relative;min-height:40px}
  .mnav a.cur{background:var(--bridge);color:var(--accent);font-weight:600}
  .menubtn .uname{display:none}
  .page{padding:12px}
  .msgs,.composer{padding-left:12px;padding-right:12px}
  .toast{bottom:80px}
}

/* 手机固定宽度：不缩放、不被内容撑宽 */
img,video,iframe,pre,table,.card,.msg,.md,.page,.pop,.umenu{max-width:100%}
.md,.md a,.card,.qbox,.qbar .qtxt,.ops,td,th{overflow-wrap:anywhere}
.md pre,pre{overflow-x:auto;touch-action:pan-x pan-y}
.tablewrap{overflow-x:auto;touch-action:pan-x pan-y}
.md code{overflow-wrap:anywhere}
a,button,label,select,summary,[role=button],input[type=checkbox],input[type=file]{touch-action:manipulation}
.umenu{min-width:170px}
.mnav a{white-space:nowrap}

/* 顶栏用量小字 */
.uchipwrap{position:relative;min-width:0;flex:none}
.uchip{border:none;background:none;font-size:11px;color:var(--muted);white-space:nowrap;padding:0 6px;min-height:32px;border-radius:8px}
.uchip b{color:var(--ink);font-weight:700}
.uchip b.warn{color:var(--bad)}
.uchip .usep{margin:0 4px}
.upop{left:0;top:38px;min-width:240px;padding:12px}
@media(max-width:700px){.ttbtn{max-width:36vw}}

.ackb{display:flex;align-items:center;gap:4px;margin-top:4px;font-size:11px;color:var(--muted)}
.ackb svg.ic{width:12px;height:12px;stroke-width:2.5}

.alertbar{flex:none;background:var(--bad);color:#fff;padding:6px 12px;font-size:13px;text-align:center;line-height:1.35}
.newver{position:fixed;left:12px;right:12px;top:calc(8px + env(safe-area-inset-top));z-index:30;background:var(--ink);color:var(--bg);padding:10px 14px;border-radius:10px;text-align:center;cursor:pointer;font-size:13px}

/* 任务台 */
.tgroup{margin-bottom:18px}
.tgroup h3{margin:0 0 8px;font-size:14px}
.trow{display:block;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:8px 12px;margin-bottom:6px;text-decoration:none;color:var(--ink)}
.trow-h{display:flex;gap:8px;align-items:baseline}
.trow-m{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:4px}
.tcode{font-family:ui-monospace,Menlo,monospace;font-size:12px;color:var(--muted);flex:none}
.ttitle{font-weight:600;overflow-wrap:anywhere}
.tstat,.tprio{font-size:11px;padding:1px 8px;border-radius:99px;border:1px solid var(--line);white-space:nowrap}
.tstat.t-doing{color:var(--accent);border-color:var(--accent)}
.tstat.t-review{color:var(--amber);border-color:var(--amber);background:var(--amber-bg)}
.tstat.t-blocked{color:var(--bad);border-color:var(--bad)}
.tstat.t-held{color:#8A4FB3;border-color:#8A4FB3;background:rgba(138,79,179,.10);font-weight:600}
@media(prefers-color-scheme:dark){.tstat.t-held{color:#C9A2E6;border-color:#C9A2E6;background:rgba(201,162,230,.12)}}
.heldcard{border-color:#8A4FB3}
.tstat.t-done{color:var(--muted)}
.tstat.t-cancelled{color:var(--muted);text-decoration:line-through}
.tprio.p-urgent{color:var(--bad);border-color:var(--bad)}
.tprio.p-low{color:var(--muted)}
.tact{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
.tact select{width:auto}
.ctask{margin:4px 0;font-size:12px;overflow-wrap:anywhere}
details summary{cursor:pointer;margin:4px 0}
.tlog div{padding:2px 0}

.homebtn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:8px;color:var(--muted);flex:none}
.homebtn:hover{background:var(--bridge);color:var(--accent)}
.homebtn svg.ic{width:17px;height:17px}

.decpanel:empty{display:none}
.decpanel{max-height:45vh;overflow:auto;padding:6px 10px;border-top:1px solid var(--line)}
.deccard{border-color:var(--accent);margin-bottom:6px}
.decother{display:flex;gap:6px;margin:4px 0}
.decother input{flex:1;min-width:0}
.donebox{max-height:60vh;overflow:auto;border:1px solid var(--line);border-radius:12px;padding:4px 8px}
.toptask{margin-bottom:10px}
.toptask .ttitle{font-weight:600;color:var(--ink);text-decoration:none}
.tprog{font-size:12px;color:var(--accent)}
.tmeta{margin-top:4px;font-size:12px}
.steps{margin-top:8px;border-top:1px solid var(--line);padding-top:6px}
.stepl{font-size:13px;margin:2px 0;display:flex;align-items:center;gap:4px;flex-wrap:wrap}

/* T-0092 聊天紧凑「终端日志」式：去卡片边框，左侧色条区分角色，同人连发合并抬头，引用按钮悬停才显 */
.msgs{padding:6px 12px 8px}
.msg{max-width:none;margin:0;padding:2px 0 2px 10px;border:none;border-left:2px solid var(--line);border-radius:0;background:none;font-size:13.5px;line-height:1.45;position:relative}
.msg + .msg{margin-top:5px}
.msg.mine{margin-left:0;background:none;border-left-color:var(--accent)}
.msg.bridge{background:none;border-left-color:var(--ink)}
.msg.status{border-left-style:dashed;font-size:12px;color:var(--muted);background:none;border-top:none;border-right:none;border-bottom:none}
.msg.system{text-align:left;font-size:11.5px;border-left-color:transparent}
.msg .who{font-size:11px;margin:0 0 1px;gap:8px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:var(--muted)}
.msg .who strong{color:var(--ink);font-weight:700}
/* T-0906/0909：自己发的话只比回复的墨色字偏一点点蓝（深蓝黑字、无底色），左边线换成蓝；浅色/深色各一套变量 */
.msg.mine{border-left-width:3px;border-left-color:var(--mine-line);background:none;color:var(--mine)}
.msg.mine .who strong{color:var(--mine)}
.msg.mine a{color:var(--mine)}
.msg .who .qbtn{margin-left:auto;opacity:0;transition:opacity .12s;border:none;background:none;color:var(--muted);padding:0 2px;font-size:11px}
.msg:hover .who .qbtn,.msg:focus-within .who .qbtn{opacity:1}
@media (hover:none){.msg .who .qbtn{opacity:.55}}
.msg.cont{margin-top:1px}
.msg.cont .who{display:none;position:absolute;right:2px;top:0;margin:0;background:var(--bg);padding:0 4px;border-radius:4px}
.msg.cont:hover .who{display:flex}
.msg p{margin:1px 0}
.msg ul,.msg ol{margin:2px 0;padding-left:20px}
.msg li{margin:0}
.msg pre{margin:3px 0;padding:5px 8px;font-size:12px;border-radius:6px}
.msg .thumb{max-height:150px;border-radius:6px}
.msg .ackb{font-size:11px;margin-top:1px}
.msg .qbox{margin:1px 0 2px;padding:1px 8px;font-size:12px}
.msg.hl{outline-offset:0}
@media (max-width:640px){.msgs{padding:4px 8px 6px}.msg{font-size:14px}}

/* 邮件页（T-0115） */
.mail{display:flex;flex-direction:column;flex:1;min-width:0;min-height:0;height:100%}
.mhead{padding:8px 12px;border-bottom:1px solid var(--line)}
.mbar{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:6px}
.mbar button{font-size:12.5px;padding:3px 9px}
.mbar .sp{flex:1}
.chip2{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:99px}
.chip2.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.msearch{width:100%;box-sizing:border-box}
.mbody{display:flex;flex:1;min-height:0}
.mlist{width:340px;flex:none;overflow-y:auto;border-right:1px solid var(--line)}
.mdet{flex:1;min-width:0;overflow-y:auto;padding:0 0 20px}
.mrow{padding:7px 12px;border-bottom:1px solid var(--line);cursor:pointer}
.mrow.cur{background:var(--bridge)}
.mrow .l1{display:flex;gap:6px;align-items:baseline;font-size:12.5px}
.mrow .who{font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mrow.unread .who,.mrow.unread .l2{font-weight:800}
.mrow.unread::before{content:"";float:left;width:7px;height:7px;border-radius:50%;background:var(--accent);margin:6px 6px 0 -8px}
.mrow .tm,.mmsg .tm{font-size:11px;color:var(--muted);margin-left:auto}
.mrow .l2{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mrow .l3{font-size:11.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lb{font-size:10.5px;border-radius:99px;padding:0 7px;border:1px solid var(--line)}
.lb-user{color:var(--accent)}.lb-talent{color:var(--amber)}.lb-aftersales{color:var(--amber)}.lb-media{color:var(--accent)}.lb-other{color:var(--muted)}.lb-biz{color:var(--accent)}.lb-supplier{color:var(--accent)}.lb-platform{color:var(--muted)}.lb-finance{color:var(--amber)}.lb-legal{color:var(--amber)}.lb-hiring{color:var(--muted)}.lb-promo{color:var(--amber)}.lb-junk{color:var(--muted)}
.td-todo{color:var(--card);background:var(--bad);border-color:var(--bad)}.td-optional{color:var(--bad);border-color:var(--bad)}.td-done{color:var(--muted)}
.mrow .tdnote{color:var(--ink)}
.mail.sumview .mlist{display:none}.mail.sumview .mdet{display:block}
.shead{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:8px 12px;border-bottom:1px solid var(--line)}.shead input[type=date]{max-width:150px}
.sgrp{padding:6px 12px 2px;border-bottom:1px solid var(--line)}.sgh{font-weight:700;font-size:14px;margin:2px 0 4px}
.sdg{font-size:12.5px;background:var(--bridge);border-radius:8px;padding:6px 9px;margin:0 0 6px}.sdg.bad{color:var(--bad)}.sdg div{margin:1px 0}
.sp1{padding:5px 0;border-top:1px dashed var(--line);cursor:pointer}.sp1 .l1{display:flex;gap:6px;align-items:baseline;font-size:12.5px}
.sp1 .who{font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sp1 .l3{font-size:12px;color:var(--ink)}.sp1 .tm{font-size:11px;color:var(--muted)}
.tdbox{margin:8px 12px;padding:7px 10px;border:1px solid var(--line);border-radius:8px;font-size:12.5px}.tdbox.td-todo,.tdbox.td-optional{background:transparent;color:inherit;border-color:var(--bad)}
.dhead{position:sticky;top:0;background:var(--bg);padding:8px 12px;border-bottom:1px solid var(--line);z-index:2}
.dhead .subj{font-weight:700;font-size:14.5px;margin:2px 0 6px;overflow-wrap:anywhere}
.dhead .acts{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.dhead .acts button,.dhead .acts select{font-size:12.5px;padding:3px 9px}
.dhead .back{display:none;border:none;background:none;color:var(--accent);padding:0 0 4px;font-size:13px}
.danger{color:var(--bad)!important}
.mmsg{padding:8px 12px;border-bottom:1px solid var(--line)}
.mmsg.out{background:var(--bridge)}
.mmsg .mh{display:flex;gap:8px;align-items:baseline;font-size:12.5px}
.mbodytxt{white-space:pre-wrap;overflow-wrap:anywhere;font-size:13.5px;line-height:1.5;margin-top:4px}
.matts{margin-top:6px;font-size:12.5px;display:flex;flex-direction:column;gap:2px}
.aibox{background:var(--amber-bg);border-radius:8px;padding:6px 9px;margin:6px 0;font-size:12.5px}
.aibox .aihd{font-size:11px;color:var(--amber);font-weight:700;margin-bottom:2px}
.aibox ul{margin:3px 0;padding-left:18px}
.movl{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:50;display:flex;align-items:center;justify-content:center;padding:12px}
.mcomp{max-width:640px;width:100%;max-height:92vh;overflow:auto}
tr.clk{cursor:pointer}
@media (max-width:700px){
  .mlist{width:100%;border-right:none}
  .mdet{display:none}
  .mail.has-cur .mlist{display:none}
  .mail.has-cur .mdet{display:block}
  .mail.has-cur .mhead{display:none}
  .dhead .back{display:inline-block}
}

.nav a{white-space:nowrap}
@media(min-width:701px) and (max-width:1180px){.nav a .lb{display:none}.nav a{padding:6px 8px}}

.nav a .lb,.mnav a .lb{font-size:inherit;border:0;border-radius:0;padding:0}

/* 烧录页：工厂助手式外壳（T-0130） */
/* T-0255 工厂助手：ERP 式——紧凑、方角、表格线、信息密度高 */
.fa-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;background:var(--card);border:1px solid var(--line);border-left:4px solid var(--accent);padding:8px 12px;margin-bottom:8px}
.fa-head h2{font-size:17px}
.fa-tabs{display:flex;gap:0;border:1px solid var(--line)}
.fa-tab{border-radius:0;border:0;border-right:1px solid var(--line);padding:6px 20px;font-size:14px;background:var(--bg)}.fa-tab:last-child{border-right:0}
.fa-tab.on{background:var(--accent);color:var(--accent-ink)}
.fa-card{background:var(--card);border:1px solid var(--line);border-radius:3px;padding:0;margin-bottom:8px}
.fa-card>h3{margin:0;font-size:13px;font-weight:700;background:var(--bg);border-bottom:1px solid var(--line);border-left:3px solid var(--accent);padding:5px 10px}
.fa-card>:not(h3){margin-left:10px;margin-right:10px}.fa-card>:nth-child(2){margin-top:8px}.fa-card>:last-child{margin-bottom:10px}
.fa-env{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));border:1px solid var(--line);border-radius:0;background:var(--card)}
.fa-cell{padding:5px 10px;border-right:1px solid var(--line);font-size:12.5px}.fa-cell:last-child{border-right:0}
.fa-cell .muted{font-size:11.5px}
.fa-v{font-weight:600;word-break:break-all}
.fa-ops{display:flex;align-items:center;gap:6px 14px;flex-wrap:wrap}
.fa-ops .btn{border-radius:3px;padding:6px 14px;font-size:13px}
.fa-ops .btn.go{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-size:15px;padding:8px 26px;font-weight:700}
.fa-ops select{width:auto;border-radius:3px;padding:5px 6px;font-size:13px}.fa-ops label{font-size:13px;display:flex;align-items:center;gap:4px;white-space:nowrap}
.fa-steps{display:grid;grid-template-columns:repeat(8,1fr);border:1px solid var(--line);margin-bottom:8px}
.fa-step{display:flex;align-items:center;justify-content:center;gap:5px;font-size:12px;padding:4px 2px;color:var(--muted);border-right:1px solid var(--line);background:var(--bg)}.fa-step:last-child{border-right:0}
.fa-n{width:18px;height:18px;border-radius:2px;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;background:var(--card);font-size:11px}
.fa-step.fa-doing{color:var(--accent);font-weight:700}.fa-step.fa-doing .fa-n{border-color:var(--accent);color:var(--accent)}.fa-step.fa-ok{color:var(--fg,inherit)}.fa-step.fa-ok .fa-n{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.fa-step.fa-bad .fa-n{background:var(--bad);color:#fff;border-color:var(--bad)}
.fa-two{display:grid;grid-template-columns:1.6fr 1fr;gap:8px}
.fa-row{padding:3px 6px;border-bottom:1px solid var(--line);font-size:12.5px}
.fa-dot{display:inline-block;width:9px;height:9px;border-radius:2px;border:1px solid var(--line);margin-right:6px;vertical-align:middle}
.fa-row.fa-doing .fa-dot{border-color:var(--accent)}.fa-row.fa-ok .fa-dot{background:var(--accent);border-color:var(--accent)}.fa-row.fa-bad .fa-dot{background:var(--bad);border-color:var(--bad)}
.fa-files{width:100%;border-collapse:collapse;font-size:12px;margin-bottom:6px}.fa-files th,.fa-files td{border:1px solid var(--line);padding:2px 6px;text-align:left}.fa-files th{background:var(--bg)}
@media(max-width:760px){.fa-two{grid-template-columns:1fr}.fa-steps{grid-template-columns:repeat(4,1fr)}}

/* ===== T-0380 终端风格（类 Claude CLI）：只作用在 .chat.term 内，页头「终端」开关可关；变量整体覆盖，内部组件自动跟色 ===== */
.chat.term{--bg:#1b1a19;--card:#262421;--ink:#e6e1d8;--muted:#9a958a;--line:#38342f;--accent:#d97757;--accent-ink:#1b1a19;--amber:#e0b050;--amber-bg:#2f2a1e;--bad:#e5786d;--bridge:#2b2926;
  --t-user:#6cc4c4;--t-me:#d97757;--t-ok:#86c796;
  background:var(--bg);color:var(--ink);font-family:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,"PingFang SC",monospace}
.chat.term .conv{background:var(--bg)}
.chat.term .msgs{padding:10px 14px 12px;background:var(--bg)}
.chat.term .msg{position:relative;max-width:none;margin:0;padding:5px 10px 5px 30px;border:none;border-left:none;border-radius:6px;background:none;font-size:13px;line-height:1.5;color:var(--ink)}
.chat.term .msg + .msg{margin-top:8px}
.chat.term .msg::before{position:absolute;left:10px;top:5px;font-weight:700;color:var(--muted)}
/* 人说话：像终端里敲的「> 提示行」，浅底块＋彩色 > ；自己橙、别人青 */
.chat.term .msg:not(.bridge):not(.status):not(.system){background:#262421;border:1px solid var(--line)}
.chat.term .msg:not(.bridge):not(.status):not(.system)::before{content:">";color:var(--t-user)}
.chat.term .msg.mine::before{color:var(--t-me)!important}
.chat.term .msg.mine{border-color:#4a3a33!important;background:#2a2522!important}
/* 指挥台/各线回复：像 Claude 的 ● 段落，无底色，文字亮 */
.chat.term .msg.bridge{padding-top:2px;padding-bottom:2px}
.chat.term .msg.bridge::before{content:"●";top:3px;color:var(--ink);font-size:12px}
/* 进展：⎿ 淡色小字，像工具输出 */
.chat.term .msg.status{padding-left:30px;font-size:12px;color:var(--muted);border:none!important;background:none!important}
.chat.term .msg.status::before{content:"⎿";color:var(--muted);left:12px}
.chat.term .msg.system{font-size:11.5px;color:var(--muted);padding-left:30px}
.chat.term .msg.system::before{content:"—";left:11px}
.chat.term .msg .who{color:var(--muted);font-size:11px}
.chat.term .msg .who strong{font-weight:700;color:var(--t-user)}
.chat.term .msg.mine .who strong{color:var(--t-me)}
.chat.term .msg.bridge .who strong{color:var(--ink)}
.chat.term .msg.status .who strong{color:var(--muted)}
.chat.term .role{border-color:var(--line);color:var(--muted)}.chat.term .role.bridge{color:var(--t-ok);border-color:var(--t-ok)}
.chat.term .msg.cont{margin-top:2px}.chat.term .msg.cont::before{content:""}
.chat.term .msg.cont .who{background:var(--bg)}
.chat.term .md code,.chat.term .msg code{background:#33302b;color:#f0c987;font-family:inherit}
.chat.term .md pre,.chat.term .msg pre{background:#141312;border:1px solid var(--line);color:#d8d3c8;border-radius:6px}
.chat.term .md pre code,.chat.term .msg pre code{background:none;color:inherit}
.chat.term .md a,.chat.term .msg a{color:#8ec1ea}
.chat.term .md blockquote{border-left:2px solid var(--accent);margin:4px 0;padding-left:8px;color:var(--muted)}
.chat.term .qbox{background:#201e1c;border-left:2px solid var(--accent);color:var(--muted)}
.chat.term .msg.hl{outline-color:var(--amber)}
.chat.term .thumb{border:1px solid var(--line)}
.chat.term .ackb{color:var(--t-ok)}
/* 输入区：终端提示符一样的深色条，聚焦橙边，光标橙 */
.chat.term .composer{background:var(--bg);border-top:1px solid var(--line)}
.chat.term .composer .ta{background:#232120;border:1px solid var(--line);border-radius:6px;color:var(--ink);caret-color:var(--accent);font-family:inherit}
.chat.term .composer .ta:focus{border-color:var(--accent)}
.chat.term .composer .ta:empty::before{color:#6f6a61}
.chat.term .cbtn{background:#262421;border:1px solid var(--line);color:var(--muted);border-radius:6px}
.chat.term .cbtn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.chat.term .chip,.chat.term .chipnote{color:var(--muted);border-color:var(--line)}
.chat.term .decpanel{background:var(--bg);border-top:1px solid var(--line)}
.chat.term .offer{background:#262421;border-color:var(--accent)}
.termbtn{margin-left:6px;font-size:11px;padding:1px 8px;border-radius:6px;border:1px solid var(--line);background:var(--card);color:var(--muted);cursor:pointer}
.termbtn.on{color:#d97757;border-color:#d97757}
.chat.term .msg.system .who strong{color:var(--muted)}
/* 页头跟着变深（:has 不支持的老浏览器保持原样，不影响功能） */
body:has(.chat.term) .top{background:#1b1a19;border-bottom-color:#38342f;color:#e6e1d8;--ink:#e6e1d8;--muted:#9a958a;--line:#38342f;--card:#262421;--bridge:#2f2c29}
body:has(.chat.term) .top .ttbtn,body:has(.chat.term) .top button{color:#e6e1d8}
body:has(.chat.term) .top .pop{background:#262421;border-color:#38342f;color:#e6e1d8}

/* T-0429：烧录页(.flashpage)直接挂在 .main 下，.main/#app 都不滚动，超出视口的下半部分被裁掉且没有滚动条。
   让 .flashpage 自己成为滚动容器（桌面与手机都能滚到底），底部留出安全区。 */
.main>.flashpage{flex:1 1 0;min-width:0;min-height:0;width:100%;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding-bottom:max(24px,env(safe-area-inset-bottom))!important}

/* T-0454：聊天输入框里输入英文/数字时字号调小（中文不变）。
   🔴 不能直接把输入框 font-size 改小：<16px 时 iOS Safari 聚焦会自动放大页面。所以用 @font-face 的 size-adjust＋unicode-range，
   只把 ASCII/拉丁字形缩到 88%（输入框计算字号仍是 16px，iOS 不触发放大）。Safari 17+/Chrome 92+ 生效，老浏览器忽略＝保持原大小，不影响输入。 */
@font-face{font-family:"zk-latin-sm";src:local("Helvetica Neue"),local("HelveticaNeue"),local("Arial"),local("Roboto"),local("Segoe UI");size-adjust:88%;unicode-range:U+0020-007E,U+00A0-024F}
@font-face{font-family:"zk-latin-sm-mono";src:local("SF Mono"),local("SFMono-Regular"),local("Menlo Regular"),local("Menlo-Regular"),local("Menlo"),local("Consolas"),local("Roboto Mono");size-adjust:88%;unicode-range:U+0020-007E,U+00A0-024F}
.composer .ta{font-family:"zk-latin-sm",-apple-system,BlinkMacSystemFont,"PingFang SC","Noto Sans SC",sans-serif}
.chat.term .composer .ta{font-family:"zk-latin-sm-mono",ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,"PingFang SC",monospace}


/* ===== T-0460 发言人标签：桥发的话按「真实说话的人」上色，一眼分清是小B／小A／哪条线（--wc＝该发言人的颜色；浅/深/终端三套都留够对比度）===== */
:root{--w-cmd:var(--ink);--w-b:#2563b8;--w-a:#7b4fc2;--w-app:#18794e;--w-fw:#a85a00;--w-be:#b03a5b;--w-voice:#0f7490;--w-test:#5f7a16}
@media(prefers-color-scheme:dark){:root{--w-cmd:var(--ink);--w-b:#7db4ff;--w-a:#c4a1ff;--w-app:#6fd6a0;--w-fw:#f0b46a;--w-be:#ff9db8;--w-voice:#6fd0ea;--w-test:#c2dc6e}}
.chat.term{--w-cmd:#e6e1d8;--w-b:#7db4ff;--w-a:#c4a1ff;--w-app:#6fd6a0;--w-fw:#f0b46a;--w-be:#ff9db8;--w-voice:#6fd0ea;--w-test:#c2dc6e}
.msg[data-who="指挥台"]{--wc:var(--w-cmd)}.msg[data-who="前台小B"]{--wc:var(--w-b)}.msg[data-who="小A"]{--wc:var(--w-a)}
.msg[data-who="线一App"]{--wc:var(--w-app)}.msg[data-who="线二固件"]{--wc:var(--w-fw)}.msg[data-who="后台"]{--wc:var(--w-be)}
.msg[data-who="语音平面线"]{--wc:var(--w-voice)}.msg[data-who="测试线"]{--wc:var(--w-test)}
.msg.bridge[data-who] .who strong{color:var(--wc,var(--ink));font-weight:700}
.msg.bridge[data-who]:not([data-who="指挥台"]) .who strong::before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--wc);margin-right:5px;vertical-align:0}
.msg.bridge[data-who]{border-left-color:var(--wc,var(--ink))}
.chat.term .msg.bridge[data-who]::before{color:var(--wc,var(--ink))}
.chat.term .msg.bridge[data-who] .who strong{color:var(--wc,var(--ink))}

/* T-0494：消息旁的任务状态小标签（进行中/等你/已完成），点开跳任务台 */
.ttags{display:inline-flex;gap:4px;align-items:center}
.ttag{font-size:10px;line-height:1;padding:2px 6px;border-radius:9px;border:1px solid var(--line);color:var(--muted);text-decoration:none;white-space:nowrap}
.ttag.run{color:#d6a548;border-color:#d6a548}
.ttag.wait{color:#e0705f;border-color:#e0705f}
.ttag.done{color:var(--t-ok,#86c796);border-color:var(--t-ok,#86c796)}
.ttag:hover{background:rgba(255,255,255,.06)}

.audioatt{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:4px}.audioatt audio{max-width:100%;height:36px}

/* T-0913 回复助手 */
.pbar{padding:2px 12px;font-size:12.5px}.prow{padding:8px 4px;border-bottom:1px solid var(--line);cursor:pointer}
.asst{margin:8px 12px}.asst pre{white-space:pre-wrap;word-break:break-word;margin:4px 0;font:inherit;font-size:13px}
.asg .sg{border:1px solid var(--line);border-radius:8px;padding:8px;margin:8px 0}
.a3g{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:8px 0}
.a3 .col{border:1px solid var(--line);border-radius:8px;padding:8px;min-width:0}.a3 .colh{font-weight:700;font-size:12.5px;margin-bottom:4px}
.a3 textarea{width:100%;box-sizing:border-box;font:inherit;font-size:13px;margin-bottom:6px}
.warnline{color:var(--bad);font-size:12.5px;margin:4px 0}.chk{display:block;margin:6px 0}
@media(max-width:760px){.a3g{grid-template-columns:1fr}}

/* T-1165 聊天里的文件卡 */
.fcwrap{display:inline-flex;align-items:center;gap:8px;margin:4px 8px 0 0;max-width:100%}
a.filecard{display:inline-flex;gap:6px;align-items:center;margin:4px 8px 0 0;padding:6px 10px;border:1px solid var(--line);border-radius:8px;background:var(--card);max-width:100%;font-size:13px}
.fcwrap a.filecard{margin:0}
a.filecard .fcn{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-break:break-all}
.fcprev{font-size:12px}

/* T-1431 项目树 */
.tree{--tr-done:#3E8A5A;--tr-doing:#3B78C4;--tr-wait:#D39B2A;--tr-void:#A6A39A;--tr-forgot:#D0503E;--tr-ref:#7FB7B0;--tr-sky:#EEF3EA;--tr-soil:#D9CDB4;--tr-bark:#7A6445;--tr-bark2:#A08862}
@media(prefers-color-scheme:dark){.tree{--tr-done:#5FB57C;--tr-doing:#6AA3E8;--tr-wait:#E6B550;--tr-void:#7C7A72;--tr-forgot:#E8715F;--tr-ref:#6FA8A1;--tr-sky:#1D221B;--tr-soil:#3A3528;--tr-bark:#9C8660;--tr-bark2:#B89F74}}
.tree .card{margin-bottom:10px}.tree h3{font-size:14px;margin:0}
.tree .tr-what div{margin:2px 0}.tree .tr-what b{color:var(--accent)}
.tree .tr-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}.tree .tr-chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;border:1px solid var(--line);border-radius:99px;padding:1px 9px;background:var(--card)}
.tree .tr-dot{width:9px;height:9px;border-radius:50%;display:inline-block}
.tree .tr-box{background:var(--tr-sky);border:1px solid var(--line);border-radius:12px;overflow:hidden}.tree .tr-svg{display:block;width:100%;height:auto;max-height:78vh}
.tree .tr-bg{cursor:pointer;transition:opacity .15s}.tree .tr-bg.dim{opacity:.28}
.tree .tr-hd{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap}
.tree .tr-bar{display:flex;height:8px;border-radius:99px;overflow:hidden;margin:6px 0;background:var(--line)}.tree .tr-bar i{display:block;height:100%}
.tree .tr-out{margin:4px 0;overflow-wrap:anywhere}
.tree .tr-br{border-top:1px solid var(--line);padding:6px 0}.tree .tr-br summary{cursor:pointer}.tree .tr-br ol{margin:4px 0 0;padding-left:20px}
.tree .tr-pill{display:inline-block;color:#fff;font-size:10px;border-radius:99px;padding:0 7px;line-height:16px;vertical-align:middle}
.tree .tr-lst{margin:2px 0 6px;padding-left:18px}.tree .tr-nl div{margin:3px 0;overflow-wrap:anywhere}
.tree .tr-notes{overflow-wrap:anywhere}

/* T-1433/1435 资料页：知识树标签＋搜索 */
.docbar{display:flex;align-items:center;gap:8px;margin:0 0 10px;min-width:0}
.docbar .tabs{flex:none}
.docbar .docsearch{flex:1;min-width:0;width:100%;height:32px;border:1px solid var(--line);border-radius:16px;padding:0 12px;background:var(--card);color:var(--ink);font:inherit;-webkit-appearance:none;appearance:none}
.tr-topics{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 10px}
.tr-topic{display:flex;flex-direction:column;align-items:flex-start;gap:0;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:10px;padding:4px 10px;font:inherit;text-align:left;cursor:pointer}
.tr-topic.cur{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.tr-topic .muted{font-size:11px}
.tr-pills{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.tr-all{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:99px;padding:2px 12px;font:inherit;cursor:pointer}
.tr-hd{display:flex;justify-content:space-between;align-items:center;gap:8px}

/* T-1538 对话列表：宽屏左栏常驻，手机点标题弹出底部列表 */
.rail{display:none}
.th{position:relative}
.th .thl{display:flex;flex-wrap:wrap;gap:2px 6px;align-items:center;flex:1;min-width:0;text-decoration:none;color:inherit}
.th .thl .t{flex:1;min-width:0}
.th .snip{flex-basis:100%;font-size:12px;font-weight:400;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.th .tacts{display:none;gap:4px;flex:none;align-items:center}
.th.cur .tacts,.th:hover .tacts{display:flex}
.tact{border:1px solid var(--line);background:var(--card);color:var(--muted);font-size:11px;border-radius:6px;min-height:28px;padding:0 6px}
.newth{width:100%;margin-bottom:6px;min-height:40px}
.archfold{width:100%;text-align:left;border:none;background:none;color:var(--muted);font-size:12px;min-height:36px;padding:0 10px;margin-top:6px}
.backhall{font-size:13px;color:var(--muted);text-decoration:none;white-space:nowrap;padding:0 6px;min-height:36px;display:inline-flex;align-items:center}
.tnotes{flex:none;padding:6px 14px;font-size:12px;color:var(--muted);border-bottom:1px solid var(--line);background:var(--card);max-height:84px;overflow-y:auto;white-space:pre-wrap}
@media(min-width:700px){
  .rail{display:block;width:250px;flex:none;border-right:1px solid var(--line);overflow-y:auto;padding:8px;background:var(--card)}
  .ttbtn svg.ic,.ttbtn .badge{display:none}
  .top .pop{display:none!important}
}
@media(max-width:699px){
  .top .pop{position:fixed;left:0;right:0;top:auto;bottom:0;max-width:none;max-height:70vh;border-radius:16px 16px 0 0;padding:10px 10px calc(10px + env(safe-area-inset-bottom));box-shadow:0 -6px 24px rgba(0,0,0,.28)}
  .pop .th{min-height:48px}
  .th .tacts{display:flex}
}
.chat.term .rail{background:#262421;border-color:#38342f;color:#e6e1d8}
.chat.term .tnotes{background:#262421;border-color:#38342f}
.chat.term .tact{background:#262421;border-color:#38342f}
.chat.term .th.cur{background:#2b2926}
.termbtn{white-space:nowrap}
@media(max-width:420px){.backhall{padding:0 2px;font-size:12px}.top .ttbtn{max-width:30vw}}
.rail .th{display:flex;justify-content:space-between;gap:6px;padding:10px;border-radius:8px;color:var(--ink);min-height:40px;align-items:center}
.rail .th.cur{background:var(--bridge);font-weight:600}
.rail .th:hover{background:var(--bridge)}
.rail .th .t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* T-1545 左栏收窄＋排版：去预览小字，字号/间距统一 */
.th .snip{display:none}
.newth{font-size:13px;font-weight:600;min-height:34px;margin-bottom:8px;letter-spacing:.02em}
.archfold{font-size:11.5px;letter-spacing:.06em;margin-top:8px;min-height:30px}
.rail .th,.pop .th{font-size:13.5px;font-weight:500;min-height:36px;padding:7px 10px;line-height:1.3}
.rail .th.cur,.pop .th.cur{font-weight:650}
.rail .th .t,.pop .th .t{letter-spacing:.01em}
.th .badge{font-size:10.5px;min-width:18px;text-align:center}
@media(min-width:700px){
  .rail{width:168px;padding:8px 6px}
  .rail .th .tacts{position:absolute;right:4px;top:50%;transform:translateY(-50%);background:var(--bridge);padding-left:4px}
  .tact{min-height:24px;font-size:10.5px;padding:0 5px}
}
@media(max-width:699px){.pop .th{min-height:44px;font-size:14.5px}}
@media(min-width:700px){.rail .th.cur .tacts{display:none}.rail .th:hover .tacts{display:flex}}
/* T-1556／T-1564 窗口内容（只读镜像）：左栏各线＋右侧滚动窗口，排版贴近 Claude App 对话窗口 */
.mx{flex:1;min-width:0;min-height:0;display:flex;position:relative}
.mxside{width:216px;flex:none;border-right:1px solid var(--line);overflow-y:auto;padding:10px 8px;background:var(--bg)}
.mxback{display:block;padding:6px 8px;margin-bottom:6px;color:var(--muted);text-decoration:none;font-size:12px}
.mxitem{display:flex;gap:8px;align-items:flex-start;padding:8px;border-radius:8px;color:var(--ink);text-decoration:none;margin-bottom:2px}
.mxitem:hover{background:var(--bridge)}
.mxitem.cur{background:var(--bridge);box-shadow:inset 3px 0 0 var(--accent)}
.mxitem.off{opacity:.5}
.mxn{font-weight:600;font-size:13px}
.mxdot{width:8px;height:8px;border-radius:50%;background:var(--line);margin-top:6px;flex:none}
.mxdot.on{background:var(--accent)}
.mxmain{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column}
.mxhead{display:none}
.mxwarn{font-size:11.5px;color:#a0642a}
.mxrow{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.mname{font-size:15px}
.mstat{margin-left:auto;font-size:12px}
.mxsw{display:none}
.mctx{margin:6px 0 4px}
.mctxl{font-size:12px}
.mctxbar{height:5px;border-radius:3px;background:var(--line);margin-top:3px;overflow:hidden}
.mctxbar i{display:block;height:100%;background:var(--accent)}
.mctxbar i.amber{background:var(--amber)}.mctxbar i.red{background:var(--bad)}
.mnote{font-size:11.5px;margin-top:4px}
.mfind{display:flex;gap:6px;margin-top:6px}
.mfind .mq{flex:1;min-width:0}
.mxscroll{flex:1;min-height:0;overflow-y:auto;padding:14px 16px 20px;position:relative}
.mxscroll .mlist{width:100%;max-width:760px;margin:0 auto;border-right:none;overflow:visible}
.mmore{display:block;margin:0 auto 10px}
.mlist{display:flex;flex-direction:column;gap:14px;min-width:0}
.mev{min-width:0;overflow-wrap:anywhere}
.mev.m-user{align-self:stretch;background:var(--card);border-radius:6px;padding:8px 12px 8px 30px;position:relative}
.mev.m-user::before{content:'>';position:absolute;left:12px;top:8px;color:var(--muted);font:600 14px/1.7 ui-monospace,Menlo,monospace}
.mev.m-user .mtx.mu{font-size:15px;line-height:1.7}
.mev.m-assistant{padding:0 2px}
.mev.m-assistant .mtx{font-size:15px;line-height:1.75}
.mev.m-tool,.mev.m-res{margin:-11px 0 0 0;padding:0}
.mev.m-summary,.mev.m-bgout{border-left:3px solid var(--amber);padding-left:10px}
.mev.mbound{text-align:center;color:var(--muted);font-size:12px;border-top:1px dashed var(--line);padding-top:8px;margin-top:6px}
.mev.mhid{background:var(--amber-bg);color:var(--muted);border:1px dashed var(--line);border-radius:10px;padding:6px 10px;font-size:12px}
.mst{text-align:right;margin-bottom:2px}
.mtime{font-size:11px;color:var(--muted)}
.mtx{white-space:pre-wrap;word-break:break-word}
.mtx .md{white-space:normal}
.mtx .md p{margin:0 0 .85em}.mtx .md p:last-child{margin-bottom:0}
.mthb{font-size:12.5px;color:var(--muted)}
.mtr{font-size:11px;margin-top:2px}
.mev details{margin:2px 0}
.mev summary{cursor:pointer;font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;list-style:none;padding:2px 0}
.mev .mcli,.mev .msys{font-family:ui-monospace,Menlo,'SF Mono',monospace}
.mev .mcli summary{font-size:12.5px;line-height:1.6;color:var(--ink)}
.mev .mcli summary{display:flex;align-items:baseline}
.mev .mcli .mgl{flex:none;width:1.7em;color:var(--muted);font-size:12px}
.mev .mcli .mgl.mdt::before{content:'';display:block;width:7px;height:7px;margin:4px 0 0 2px;border-radius:50%;background:var(--accent)}
.mev .mtt{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mev details[open]>summary .mtt{white-space:normal}
.mev .mre>summary{padding-left:1.7em}
.mev .mus .mn{font-weight:700}
.mev .mus .mclip{color:var(--muted);font-weight:400}
.mev .mre summary{color:var(--muted)}
.mev .mre .mpre,.mev .mus .mpre,.mev .mth .mthb{margin-left:1.7em}
.mev .mth summary{color:var(--muted)}
.mev .msys summary{font-size:11.5px;color:var(--muted);opacity:.8}
.mev .msys .mgl{display:inline-block;width:1.2em}
.mev summary::-webkit-details-marker{display:none}
.mev details[open]>summary{white-space:normal}
.mgl{display:inline-block;width:1.4em;color:var(--muted)}
.mev .mn{font-weight:600;color:var(--ink);margin-right:4px}
.mev .mclip{color:var(--muted)}
.mev .er summary{color:var(--bad)}
.mpre{margin:4px 0 6px;padding:8px 10px;background:var(--card);border:0;border-radius:6px;max-height:420px;overflow:auto;white-space:pre-wrap;word-break:break-word;font:12px/1.45 ui-monospace,Menlo,monospace}
.mnew{position:sticky;bottom:10px;display:block;margin:10px auto 0;background:var(--accent);color:var(--accent-ink);border:0;border-radius:16px;padding:6px 14px;box-shadow:0 2px 8px rgba(0,0,0,.25)}
@media(max-width:699px){
  .mxside{display:none;position:absolute;z-index:5;left:0;top:0;bottom:0;width:78%;max-width:280px;box-shadow:2px 0 12px rgba(0,0,0,.3)}
  .mxside.open{display:block}
  .mxsw{display:inline-block}
  .mxhead{display:block;flex:none;padding:8px 12px 6px;border-bottom:1px solid var(--line);background:var(--bg)}.mxscroll{padding:10px 12px 16px}
  .mev.m-user{max-width:96%}
}
.umenu-extra{display:flex;flex-direction:column;gap:6px}.umenu-extra:empty{display:none}

.mxbody{min-width:0;flex:1}.mxn{display:flex;align-items:center;gap:6px}
.mxst{margin-left:auto;font-size:11px;font-weight:600;padding:0 7px;border-radius:9px;line-height:17px;border:1px solid var(--line);color:var(--muted);flex:none}
.mxst.st-busy{color:#fff;background:var(--accent);border-color:var(--accent)}
.mxst.st-idle{color:var(--accent);border-color:var(--accent)}
.mxst.st-off{color:var(--muted);opacity:.8}
.mxst.st-unk{color:#a0642a;border-color:#a0642a}
