/* ============================================================
   tob.css — 机构终端（ToB）专属样式
   命名空间 .tob；token 复用 app.css / 页面 :root
   ============================================================ */
.tob{height:100vh;display:flex;overflow:hidden;background:var(--bg);color:var(--t1);}

/* ============ 可折叠左侧栏 ============ */
.tob-side{width:236px;flex-shrink:0;background:var(--card);border-right:1px solid var(--line2);
  display:flex;flex-direction:column;transition:width .18s ease;overflow:hidden;position:relative;}
.tob.collapsed .tob-side{width:68px;}

.tob-brand{height:60px;flex-shrink:0;display:flex;align-items:center;gap:10px;padding:0 18px;border-bottom:1px solid var(--line);}
.tob-logo{font-weight:800;font-size:23px;letter-spacing:-1px;color:var(--t1);white-space:nowrap;text-decoration:none;}
.tob-logo,.logo-txt,.agw-logo,.cc-logo,.set-about-logo,.am-brand{user-select:none;-webkit-user-select:none;-webkit-user-drag:none;-webkit-touch-callout:none;}
.tob-card-plain{background:transparent;border:none;padding:16px 0 0;}
.tob-logo i{font-style:normal;color:var(--blue);}
.tob-logo b{font-weight:800;}
/* 设置·关于:logo 形态词标 */
.set-about-logo{font-weight:800;font-size:22px;letter-spacing:-1px;color:var(--t1);}
.set-about-logo i{font-style:normal;color:var(--blue);}
.tob-logo .tob-logo-mini{display:none;}
.tob.collapsed .tob-logo{display:none;}
.tob.collapsed .tob-brand{justify-content:center;padding:0;}
.tob-collapse{margin-left:auto;width:28px;height:28px;border-radius:8px;display:grid;place-items:center;color:var(--t3);transition:.13s;flex-shrink:0;}
.tob-collapse:hover{background:var(--line);color:var(--t1);}
.tob-collapse svg{width:17px;height:17px;transition:transform .18s;}
.tob.collapsed .tob-collapse{margin:0;}
.tob.collapsed .tob-collapse svg{transform:rotate(180deg);}

/* 账户/基金切换 */
.tob-fund{margin:14px 12px 6px;border:1px solid var(--line2);border-radius:11px;padding:10px 12px;background:var(--surface-sunken);cursor:pointer;transition:.13s;}
.tob-fund:hover{border-color:rgba(58,109,240,.4);}
.tob-fund-row{display:flex;align-items:center;gap:9px;}
.tob-fund-badge{width:30px;height:30px;flex-shrink:0;border-radius:9px;background:var(--blue);color:#fff;display:grid;place-items:center;font-size:13px;font-weight:800;}
.tob-fund-meta{min-width:0;display:flex;flex-direction:column;gap:1px;}
.tob-fund-name{font-size:13px;font-weight:700;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tob-fund-sub{font-size:10.5px;color:var(--t3);white-space:nowrap;}
.tob-fund-chev{margin-left:auto;color:var(--t3);flex-shrink:0;}
.tob-fund-chev svg{width:15px;height:15px;}
.tob.collapsed .tob-fund{margin:14px 14px 6px;padding:0;border:none;background:none;}
.tob.collapsed .tob-fund-meta,.tob.collapsed .tob-fund-chev{display:none;}

/* 导航 */
.tob-nav{flex:none;overflow-y:auto;padding:10px 12px;display:flex;flex-direction:column;gap:3px;}
.tob-nav-label{font-size:10px;font-weight:800;letter-spacing:.7px;color:var(--t3);padding:8px 10px 5px;}
.tob.collapsed .tob-nav-label{opacity:0;height:0;padding:0;overflow:hidden;}
.tob-navitem{display:flex;align-items:center;gap:12px;height:36px;padding:0 11px;border-radius:10px;color:var(--t1b);font-size:13.5px;font-weight:600;transition:.12s;position:relative;white-space:nowrap;}
.tob-navitem:hover{background:var(--surface-hover);color:var(--t1);}
.tob-navitem.on{background:var(--blue-soft);color:var(--blue);font-weight:700;}
.tob-navitem-ic{width:22px;height:22px;flex-shrink:0;display:grid;place-items:center;}
.tob-navitem-ic svg{width:19px;height:19px;}
.tob-navitem .tob-navitem-badge{margin-left:auto;font-size:10px;font-weight:800;color:#fff;background:var(--up);border-radius:8px;min-width:17px;height:17px;display:inline-flex;align-items:center;justify-content:center;padding:0 5px;}
.tob.collapsed .tob-navitem{justify-content:center;padding:0;}
.tob.collapsed .tob-navitem-label,.tob.collapsed .tob-navitem-badge{display:none;}
.tob.collapsed .tob-navitem.on::before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--blue);}

/* 侧栏底部(仿 Claude:无框体,顶部一条贯通细线分隔) */
.tob-side-foot{flex-shrink:0;border-top:1px solid var(--line);padding:6px 12px 10px;display:flex;flex-direction:column;gap:4px;}
.tob-agententry{display:flex;align-items:center;gap:11px;height:40px;padding:0 11px;border-radius:10px;background:linear-gradient(120deg,#eef2fe,#e8eeff);color:var(--blue);font-size:13px;font-weight:700;transition:.13s;white-space:nowrap;text-decoration:none;}
.tob-agententry:hover{filter:brightness(.98);}
.tob-agententry svg{width:18px;height:18px;flex-shrink:0;}
/* AI 智能体：移至顶部（导航之上） */
.tob-agententry-top{margin:14px 12px 4px;}
.tob.collapsed .tob-agententry-top{margin:14px 14px 4px;}
.tob.collapsed .tob-agententry{justify-content:center;padding:0;}
.tob.collapsed .tob-agententry span{display:none;}
/* 底部账户切换：无边框无底色的扁平行,悬停才给淡底 */
.tob-acct{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:11px;border:none;background:transparent;cursor:pointer;transition:.13s;}
.tob-acct:hover{background:var(--surface-hover,#f4f6f8);}
.tob-acct-meta{min-width:0;display:flex;flex-direction:column;gap:1px;}
.tob-acct-fund{font-size:13px;font-weight:700;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tob-acct-mgr{font-size:10.5px;color:var(--t3);white-space:nowrap;}
.tob.collapsed .tob-acct{padding:0;justify-content:center;}
.tob.collapsed .tob-acct-meta,.tob.collapsed .tob-acct .tob-fund-chev{display:none;}

/* 多账户切换菜单（向上弹出） */
.tob-side-foot{position:relative;}
/* —— 侧栏 AI 助手触发 + 浅色面板 —— */
.tob-assist-trigger{position:relative;display:flex;align-items:center;gap:10px;width:100%;padding:9px 11px;margin-bottom:10px;border:1px solid var(--line2);border-radius:12px;background:var(--card);color:var(--t1);font-size:13px;font-weight:700;cursor:pointer;transition:.13s;font-family:inherit;}
.tob-assist-trigger:hover,.tob-assist-trigger.on{border-color:var(--blue);background:var(--blue-soft);color:var(--blue);}
.tob-assist-ic{width:26px;height:26px;flex-shrink:0;border-radius:8px;background:var(--blue-soft);color:var(--blue);display:grid;place-items:center;}
.tob-assist-trigger.on .tob-assist-ic{background:var(--card);}
.tob-assist-label{flex:1;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tob-assist-badge{flex-shrink:0;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--blue);color:#fff;font-size:10px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;font-family:var(--mono,monospace);}
.tob.collapsed .tob-assist-trigger{justify-content:center;padding:9px 0;gap:0;}
.tob.collapsed .tob-assist-label{display:none;}
.tob.collapsed .tob-assist-badge{position:absolute;top:2px;right:6px;}
.tob-assist-panel{z-index:320;width:320px;max-height:min(60vh,460px);background:var(--card);border:1px solid var(--line2);border-radius:14px;box-shadow:0 18px 48px rgba(20,25,35,.2);overflow:hidden;display:flex;flex-direction:column;animation:acctPop .14s ease;}
.tob-assist-h{display:flex;align-items:center;justify-content:space-between;padding:11px 13px;border-bottom:1px solid var(--line);flex-shrink:0;}
.tob-assist-empty{padding:30px 0;text-align:center;font-size:12px;color:var(--t3);}
.tob-acctmenu-scrim{position:fixed;inset:0;z-index:300;background:rgba(20,25,35,.34);animation:pop .14s ease;}
.tob-acctmenu{position:fixed;left:14px;bottom:82px;width:300px;z-index:301;background:var(--card);border:1px solid var(--line2);border-radius:14px;box-shadow:0 18px 48px rgba(20,25,35,.22);padding:7px;animation:acctPop .14s ease;max-height:calc(100vh - 100px);overflow-y:auto;}
@keyframes acctPop{from{transform:translateY(6px);}to{transform:none;}}
.tob-acctmenu-h{font-size:10.5px;font-weight:700;color:var(--t3);letter-spacing:.2px;padding:6px 8px 7px;}
.tob-acctmenu-div{height:1px;background:var(--line);margin:6px 4px;}
.tob-acctmenu-all,.tob-acctmenu-pick{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:8px 9px;border-radius:10px;transition:.12s;}
.tob-acctmenu-all:hover,.tob-acctmenu-pick:hover{background:var(--surface-hover);}
.tob-acctmenu-all.on,.tob-acctmenu-row.on{background:var(--blue-soft);}
.tob-acctmenu-all.on:hover,.tob-acctmenu-row.on .tob-acctmenu-pick:hover{background:var(--blue-hover);}
.tob-acctmenu-allic{width:30px;height:30px;flex-shrink:0;border-radius:9px;background:#1a1d21;color:#fff;display:grid;place-items:center;}
.tob-acctmenu-row{display:flex;align-items:center;border-radius:10px;}
.tob-acctmenu-row .tob-acctmenu-pick{flex:1;min-width:0;}
.tob-acctmenu-meta{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.tob-acctmenu-meta b{font-size:13px;font-weight:700;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tob-acctmenu-meta i{font-size:10.5px;font-style:normal;color:var(--t3);display:block;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tob-acctmenu-on{margin-left:auto;color:var(--blue);flex-shrink:0;display:grid;place-items:center;}
.tob-api-dot{display:flex;align-items:center;gap:5px;min-width:0;}
.tob-led{width:6px;height:6px;border-radius:50%;flex:none;}
.tob-led-tx{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;}
.tob-api-dot.ok{color:var(--down);} .tob-api-dot.ok .tob-led{background:var(--down);}
.tob-api-dot.off{color:#e8852b;} .tob-api-dot.off .tob-led{background:#e8852b;}
.tob-acctmenu-gear{width:32px;height:32px;flex-shrink:0;margin-right:4px;border-radius:9px;color:var(--t3);display:grid;place-items:center;transition:.12s;}
.tob-acctmenu-gear:hover{background:var(--card);color:var(--blue);box-shadow:0 1px 4px rgba(20,24,30,.1);}
.tob-acctmenu-gear.warn{color:#e8852b;}
.tob-acctmenu-add{display:flex;align-items:center;gap:7px;width:100%;padding:8px 10px;border-radius:10px;font-size:12px;font-weight:700;color:var(--blue);transition:.12s;}
.tob-acctmenu-add:hover{background:var(--blue-soft);}

/* 合并菜单（账户切换 + 设置 + 退出，仿 Claude） */
.tob-mainmenu{width:280px;max-height:min(82vh,560px);overflow-y:auto;}
.tob-mm-email{font-size:11.5px;color:var(--t3);padding:6px 9px 8px;font-weight:600;}
.tob-mm-item{display:flex;align-items:center;gap:11px;width:100%;padding:9px 10px;border-radius:10px;font-size:13px;font-weight:600;color:var(--t1);text-align:left;transition:.1s;}
.tob-mm-sec{font-size:11px;font-weight:700;color:var(--t3);padding:6px 10px 3px;letter-spacing:.02em;}

/* —— 设置面板（左侧 tabs + 右侧内容）—— */
.set-dialog{position:relative;width:min(760px,94vw);height:min(540px,88vh);display:flex;overflow:hidden;background:var(--card);border-radius:16px;box-shadow:0 24px 64px rgba(20,25,35,.32);}
.set-nav{width:186px;flex-shrink:0;background:var(--bg);border-right:1px solid var(--line);padding:16px 10px;display:flex;flex-direction:column;gap:2px;}
.set-nav-h{font-size:16px;font-weight:800;color:var(--t1);padding:4px 10px 14px;}
.set-nav-item{display:flex;align-items:center;gap:10px;width:100%;padding:9px 11px;border-radius:9px;font-size:13px;font-weight:700;color:var(--t2);cursor:pointer;text-align:left;transition:.12s;font-family:inherit;background:transparent;border:none;}
.set-nav-item:hover{background:var(--line);color:var(--t1);}
.set-nav-item.on{background:var(--blue-soft);color:var(--blue);}
.set-nav-ic{width:18px;display:grid;place-items:center;flex-shrink:0;}
.set-body{flex:1;min-width:0;overflow-y:auto;padding:24px 28px;position:relative;}
.set-x{position:absolute;top:16px;right:18px;width:28px;height:28px;border-radius:8px;display:grid;place-items:center;font-size:20px;color:var(--t3);cursor:pointer;transition:.12s;border:none;background:transparent;line-height:1;}
.set-x:hover{background:var(--surface-muted);color:var(--t1);}
.set-sec-t{font-size:17px;font-weight:800;color:var(--t1);margin-bottom:4px;}
.set-sec-d{font-size:12.5px;color:var(--t3);line-height:1.5;margin-bottom:18px;}
.set-user{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--bg);border-radius:12px;margin-bottom:18px;}
.set-user-meta{display:flex;flex-direction:column;gap:2px;min-width:0;}
.set-user-meta b{font-size:14px;font-weight:800;color:var(--t1);}
.set-user-meta i{font-style:normal;font-size:12px;color:var(--t3);}
.set-list-h{font-size:11.5px;font-weight:700;color:var(--t3);margin-bottom:2px;}
.set-row{display:flex;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid var(--line);}
.set-row-main{flex:1;min-width:0;}
.set-row-t{font-size:13.5px;font-weight:700;color:var(--t1);}
.set-row-d{font-size:11.5px;color:var(--t3);margin-top:3px;line-height:1.5;}
.set-scanner-list{display:flex;flex-direction:column;border:1px solid var(--line2);border-radius:12px;overflow:hidden;margin-bottom:8px;}
.set-scanner-row{display:flex;align-items:center;gap:10px;padding:11px 12px;border-bottom:1px solid var(--line);}
.set-scanner-row:last-child{border-bottom:0;}
.set-scanner-dot{width:8px;height:8px;border-radius:50%;background:var(--t3);flex:none;}
.set-scanner-dot.ok{background:var(--down);box-shadow:0 0 0 4px color-mix(in srgb,var(--down) 12%,transparent);}
.set-scanner-dot.bad{background:var(--up);box-shadow:0 0 0 4px color-mix(in srgb,var(--up) 10%,transparent);}
.set-scanner-state{padding:3px 8px;border-radius:999px;background:var(--surface-sunken);font-size:10.5px;font-weight:700;color:var(--t2);}
.set-scanner-state.ok{background:color-mix(in srgb,var(--down) 10%,transparent);color:var(--down);}
.set-scanner-state.bad{background:color-mix(in srgb,var(--up) 9%,transparent);color:var(--up);}
.set-scanner-empty{padding:18px;text-align:center;font-size:11.5px;color:var(--t3);}
.set-scanner-providers{display:flex;align-items:center;gap:7px;margin-bottom:8px;font-size:10.5px;color:var(--t3);}
.system-task-overlay{position:fixed;inset:0;z-index:10000;display:flex;align-items:flex-start;justify-content:center;padding:48px 16px;overflow:auto;background:rgba(10,16,30,.5);backdrop-filter:blur(3px);}
.system-task-dialog{width:min(780px,96vw);max-height:calc(100vh - 96px);display:flex;flex-direction:column;overflow:hidden;background:var(--card);border-radius:16px;box-shadow:0 24px 70px rgba(8,14,28,.34);}
.system-task-head{display:flex;align-items:center;gap:11px;padding:16px 18px;background:#0f1117;color:#e8edf5;}
.system-task-head-icon{width:34px;height:34px;display:grid;place-items:center;flex:none;border-radius:10px;background:rgba(255,255,255,.09);color:#bcd0ff;}
.system-task-head>div{display:flex;flex:1;min-width:0;flex-direction:column;gap:2px;}
.system-task-head b{font-size:15px;font-weight:800;}
.system-task-head span{font-size:11.5px;color:#9aa6b6;}
.system-task-refresh,.system-task-close{width:30px;height:30px;display:grid;place-items:center;flex:none;border:0;border-radius:8px;background:rgba(255,255,255,.08);color:#cbd5e1;cursor:pointer;font-size:16px;}
.system-task-refresh:hover,.system-task-close:hover{background:rgba(255,255,255,.16);color:#fff;}
.system-task-refresh:disabled{opacity:.5;cursor:default;}
.system-task-body{padding:20px;overflow-y:auto;}
.system-task-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;margin-bottom:10px;}
.system-task-section-head>div{display:flex;min-width:0;flex-direction:column;gap:3px;}
.system-task-section-head b{font-size:13.5px;color:var(--t1);}
.system-task-section-head span,.system-task-section-head time{font-size:11px;color:var(--t3);font-style:normal;}
.system-task-section-head time{flex:none;font-family:var(--mono);}
.system-task-error{display:flex;align-items:center;gap:12px;margin-bottom:10px;padding:10px 12px;border-radius:10px;background:var(--red-soft,#fff0f0);color:var(--up,#c33);font-size:11.5px;}
.system-task-error span{flex:1;}
.managed-task-list{display:flex;flex-direction:column;margin-bottom:22px;border:1px solid var(--line);border-radius:12px;overflow:hidden;}
.managed-task-row{display:flex;align-items:center;gap:10px;padding:13px 12px;background:var(--card);border-bottom:1px solid var(--line);}
.managed-task-row:last-child{border-bottom:0;}
.managed-task-actions{display:flex;align-items:flex-end;flex:none;flex-direction:column;gap:7px;}
.managed-task-link{font-size:11px;font-weight:700;color:var(--blue);text-decoration:none;}
.managed-task-link:hover{text-decoration:underline;}
.system-methodology-dialog{width:min(860px,96vw);}
.system-methodology-intro{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px;padding:12px 14px;border:1px solid var(--line);border-radius:11px;background:var(--surface-sunken);}
.system-methodology-intro>div{display:flex;min-width:0;flex-direction:column;gap:4px;}
.system-methodology-intro b{font-size:12.5px;color:var(--t1);}
.system-methodology-intro span,.system-methodology-intro time{font-size:11px;line-height:1.55;color:var(--t3);font-style:normal;}
.system-methodology-intro time{flex:none;font-family:var(--mono);}
.system-methodology-list{display:flex;flex-direction:column;gap:11px;}
.system-methodology-item{padding:15px 16px;border:1px solid var(--line2);border-radius:12px;background:var(--card);}
.system-methodology-item.expanded{border-color:color-mix(in srgb,var(--blue) 35%,var(--line2));}
.system-methodology-summary{width:100%;display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin:0 0 11px;padding:0;border:0;background:none;text-align:left;cursor:pointer;font-family:inherit;}
.system-methodology-summary>div{display:flex;min-width:0;flex-direction:column;gap:5px;}
.system-methodology-summary b{font-size:13.5px;line-height:1.45;color:var(--t1);}
.system-methodology-summary code{font-family:var(--mono);font-size:10.5px;color:var(--blue);overflow-wrap:anywhere;}
.system-methodology-summary>span{flex:none;font-family:var(--mono);font-size:10.5px;font-weight:700;color:var(--blue);}
.system-methodology-body{white-space:pre-wrap;font-size:12px;line-height:1.75;color:var(--t2);}
.system-methodology-logic{display:flex;flex-direction:column;gap:9px;margin-top:14px;padding-top:13px;border-top:1px solid var(--line);}
.system-methodology-logic>b{font-size:12px;color:var(--t1);}
.system-methodology-update{padding:11px 12px;border-radius:10px;background:var(--surface-sunken);}
.system-methodology-update-head{display:flex;align-items:center;justify-content:space-between;gap:12px;}
.system-methodology-update-head b{font-size:11.5px;color:var(--t1);}
.system-methodology-update-head time{font-family:var(--mono);font-size:10px;color:var(--t3);}
.system-methodology-update p{margin:7px 0;font-size:11.5px;line-height:1.65;color:var(--t2);}
.system-methodology-dedupe{font-size:10.5px;line-height:1.55;color:var(--t3);overflow-wrap:anywhere;}
.system-methodology-triggers{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:9px;}
.system-methodology-triggers>span{margin-right:2px;font-size:10.5px;font-weight:700;color:var(--t2);}
.system-methodology-triggers a{padding:4px 8px;border-radius:7px;background:var(--blue-soft);font-size:10.5px;font-weight:700;color:var(--blue);text-decoration:none;}
.system-methodology-triggers a:hover{text-decoration:underline;}
.system-methodology-triggers em,.system-methodology-logic-empty{font-size:10.5px;line-height:1.55;color:var(--t3);font-style:normal;}
@media (max-width:620px){
  .system-task-overlay{padding:12px;}
  .system-task-dialog{max-height:calc(100vh - 24px);}
  .system-task-head{padding:14px;}
  .system-task-body{padding:16px 14px;}
  .system-task-section-head{align-items:flex-start;flex-direction:column;gap:5px;}
  .set-scanner-row{align-items:flex-start;}
  .managed-task-row{align-items:flex-start;}
  .system-methodology-intro{flex-direction:column;}
  .system-methodology-item{padding:13px;}
}
.set-btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;height:36px;box-sizing:border-box;border:1px solid var(--line2);background:var(--card);font-size:12.5px;font-weight:700;color:var(--t1);padding:0 15px;border-radius:9px;cursor:pointer;transition:.12s;font-family:inherit;white-space:nowrap;}
.set-btn:hover{background:var(--surface-hover);}
.set-btn.primary{background:var(--blue);color:#fff;border-color:transparent;}
.set-btn.primary:hover{filter:brightness(1.06);background:var(--blue);}
.set-seg{display:inline-flex;background:var(--line);border-radius:9px;padding:3px;gap:2px;flex-shrink:0;}
.set-seg button{border:none;background:transparent;font-size:12px;font-weight:700;color:var(--t2);padding:6px 13px;border-radius:7px;cursor:pointer;font-family:inherit;transition:.12s;}
.set-seg button.on{background:var(--card);color:var(--t1);box-shadow:0 1px 3px rgba(20,25,35,.14);}
.set-input{width:150px;height:36px;box-sizing:border-box;border:1px solid var(--line2);border-radius:8px;padding:0 11px;font-size:12.5px;color:var(--t1);font-family:var(--sans);outline:none;transition:.12s;}
.set-input:focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft);}
.set-val{font-size:12.5px;font-weight:600;color:var(--t2);flex-shrink:0;white-space:nowrap;}
.set-usage-chart{border:1px solid var(--line);border-radius:14px;padding:14px 14px 12px;margin-bottom:18px;background:var(--card);}
.set-usage-chart-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:13px;}
.set-usage-chart-head>div:first-child{display:flex;flex-direction:column;gap:3px;min-width:0;}
.set-usage-chart-head b{font-size:13px;color:var(--t1);}
.set-usage-chart-head span{font-size:10.5px;color:var(--t3);}
.set-usage-chart-head .set-seg button{padding:4px 9px;font-size:10.5px;}
.set-usage-chart-plot{height:142px;display:flex;gap:8px;min-width:0;}
.set-usage-chart-axis{width:42px;flex:none;display:flex;flex-direction:column;justify-content:space-between;
  padding:1px 0 21px;text-align:right;font-family:var(--mono);font-size:9.5px;color:var(--t3);}
.set-usage-bars{flex:1;min-width:0;display:grid;gap:3px;border-bottom:1px solid var(--line);position:relative;}
.set-usage-bar-item{min-width:0;height:142px;display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch;}
.set-usage-bar-track{height:116px;display:flex;align-items:flex-end;border-radius:4px 4px 0 0;overflow:hidden;
  background:linear-gradient(to bottom,transparent 49.5%,var(--surface-sunken) 50%,transparent 50.5%);}
.set-usage-bar-track i{display:block;width:100%;min-height:0;border-radius:4px 4px 1px 1px;background:var(--blue);
  box-shadow:0 2px 8px color-mix(in srgb,var(--blue) 22%,transparent);transition:height .25s ease;}
.set-usage-bar-item>span{height:20px;padding-top:5px;text-align:center;font-size:9px;color:var(--t3);
  white-space:nowrap;overflow:visible;font-variant-numeric:tabular-nums;}
.set-usage-chart-empty{position:absolute;inset:0;display:grid;place-items:center;font-size:11px;color:var(--t3);}
@media(max-width:620px){
  .set-usage-chart-head{align-items:stretch;flex-direction:column;}
  .set-usage-chart-head .set-seg{align-self:flex-start;}
  .set-usage-chart-axis{width:34px;}
  .set-usage-bars{gap:2px;}
}
.tob-mm-item:hover{background:var(--surface-hover);}
.tob-mm-ic{flex-shrink:0;width:18px;display:grid;place-items:center;color:var(--t2);}
.tob-mm-kbd{margin-left:auto;font-size:11px;color:var(--t3);font-family:var(--mono);letter-spacing:1px;}
.tob-mm-badge{margin-left:auto;font-size:10.5px;font-weight:800;color:#fff;background:var(--up);border-radius:7px;min-width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;padding:0 5px;}
.tob-mm-item.danger{color:var(--up);}
.tob-mm-item.danger .tob-mm-ic{color:var(--up);}
.tob-mm-item.danger:hover{background:var(--danger-soft);}

/* 操作者身份 / 账户设置（侧栏底部，区别于基金账户切换） */
.tob-foot-div{height:1px;background:var(--line);margin:8px 2px;flex-shrink:0;}
.tob.collapsed .tob-foot-div{margin:8px 14px;}
.tob-usermenu{position:fixed;left:14px;bottom:150px;width:252px;z-index:81;background:var(--card);border:1px solid var(--line2);border-radius:14px;box-shadow:0 18px 48px rgba(20,25,35,.22);padding:7px;animation:acctPop .14s;}
.tob-um-head{display:flex;align-items:center;gap:10px;padding:8px 8px 9px;}
.tob-um-meta{min-width:0;display:flex;flex-direction:column;gap:2px;}
.tob-um-meta b{font-size:13px;font-weight:700;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tob-um-meta i{font-style:normal;font-size:11px;color:var(--t3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tob-um-item{display:flex;align-items:center;gap:10px;width:100%;padding:8px 9px;border-radius:10px;text-align:left;transition:.12s;}
.tob-um-item:hover{background:var(--surface-hover);}
.tob-um-ic{width:30px;height:30px;flex-shrink:0;border-radius:9px;display:grid;place-items:center;background:var(--surface-muted);color:var(--t2);}
.tob-um-tx{display:flex;flex-direction:column;gap:1px;min-width:0;}
.tob-um-tx b{font-size:12.5px;font-weight:600;color:var(--t1);}
.tob-um-tx i{font-style:normal;font-size:10.5px;color:var(--t3);}
.tob-um-item.danger:hover{background:var(--danger-soft);}
.tob-um-item.danger .tob-um-ic{background:var(--danger-soft);color:var(--up);}
.tob-um-item.danger .tob-um-tx b{color:var(--up);}
.tob-um-signin{padding:14px 12px 12px;display:flex;flex-direction:column;align-items:flex-start;gap:8px;}
.tob-um-signin-t{font-size:13.5px;font-weight:800;color:var(--t1);}
.tob-um-signin p{font-size:11.5px;color:var(--t2);line-height:1.55;margin:0 0 2px;}

/* ============ 侧栏「目录」文件夹系统 ============ */
.tob-lib{flex:1;min-height:0;display:flex;flex-direction:column;border-top:1px solid var(--line);}
/* 收起态：目录区保留三个文件夹 icon + 顶部分隔线，其余（标题/文字/子项）隐藏 */
.tob.collapsed .tob-lib{display:flex;flex:0 0 auto;}
.tob.collapsed .tob-lib-head{display:none;}
.tob.collapsed .tob-lib-tree{overflow:hidden;padding:7px 6px;}
.tob.collapsed .lib-row{justify-content:center;padding:0;}
.tob.collapsed .lib-caret,.tob.collapsed .lib-name,.tob.collapsed .lib-ro,.tob.collapsed .lib-mine,.tob.collapsed .lib-dots,.tob.collapsed .lib-channel-add{display:none;}
.tob.collapsed .lib-folder>*:not(.lib-row){display:none;}
/* 收起态下「目录」隐藏（它原本是 flex:1 撑开把底部顶下去的占位）——补一个 margin-top:auto，让用户按钮仍固定在底部 */
.tob.collapsed .tob-side-foot{margin-top:auto;}
.tob-lib-head{flex-shrink:0;padding:11px 16px 9px;border-bottom:1px solid var(--line);}
.tob-lib-head-row{display:flex;align-items:center;gap:8px;}
.tob-lib-head b{font-size:14px;font-weight:800;letter-spacing:-.2px;color:var(--t1);}
.tob-lib-new{margin-left:auto;display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700;color:var(--blue);background:var(--blue-soft);padding:4px 9px;border-radius:8px;transition:.12s;}
.tob-lib-new:hover{background:var(--blue-tint);}
.tob-lib-new svg{margin-top:-1px;}
.tob-lib-head b{font-size:14px;font-weight:800;letter-spacing:-.2px;color:var(--t1);}
.tob-lib-head p{font-size:10.5px;line-height:1.5;color:var(--t3);margin-top:5px;text-wrap:pretty;}
.tob-lib-tree{flex:1;min-height:0;overflow-y:auto;padding:7px 12px 12px;display:flex;flex-direction:column;gap:3px;scrollbar-width:none;}
/* 树级滚动只是表头总高超屏的兜底,不显示滚动条 → 展开/收起时行宽恒定,不被经典滚动条挤窄 */
.tob-lib-tree::-webkit-scrollbar{width:0;height:0;}
/* 智能手风琴:一级文件夹表头常驻,展开的那个占满余高、children 内部独立滚动;行必须 flex:0 0 auto 防滚动 flex 列压扁。
   开合动画:basis 固定为表头高 36px、只过渡 flex-grow 0↔1(可插值),children 常驻渲染由 overflow:hidden 裁剪,配合透明度淡入淡出 */
.lib-folder{flex:0 1 36px;min-height:36px;display:flex;flex-direction:column;overflow:hidden;transition:flex-grow .32s cubic-bezier(.25,.7,.25,1);}
.lib-folder.is-open{flex-grow:1;}
/* 历史区固定只展示最近 10 条 +「查看全部」；按内容收紧，避免按钮下方占满整栏的空白。 */
.lib-folder-history.is-open{flex:0 0 auto;}
.lib-folder-history.is-open .lib-children{flex:0 0 auto;overflow:visible;}
.lib-folder .lib-children{opacity:1;transition:opacity .2s ease .1s;}
.lib-folder:not(.is-open) .lib-children{opacity:0;transition:opacity .12s ease;}
.tob.collapsed .lib-folder{flex:0 0 auto;transition:none;}
/* 目录一级行：左侧与主导航同网格;展开箭头紧跟文件夹名(不再飘在最右),右侧只留一列悬停 ⋮ ——
   所有层级的 ⋮ 都在同一列,纵向对齐;层级由缩进+导线表达 */
.lib-row{display:flex;align-items:center;gap:12px;height:36px;min-height:36px;flex:0 0 auto;padding:0 32px 0 11px;border-radius:10px;cursor:pointer;transition:background .12s;position:relative;}   /* 高度与主导航 .tob-navitem 一致 */
.lib-row:hover{background:var(--surface-hover);}
.lib-caret{flex-shrink:0;width:14px;display:grid;place-items:center;color:var(--t3);}
/* 展开箭头:行内紧跟名称(非绝对定位) */
.lib-caret-end{position:static;width:14px;margin-left:-5px;display:inline-flex;align-items:center;justify-content:center;color:var(--t3);opacity:.55;transition:.12s;flex-shrink:0;}
.lib-row:hover .lib-caret-end,.lib-item:hover .lib-caret-end{opacity:1;}
.lib-fic{flex-shrink:0;width:22px;height:22px;display:grid;place-items:center;}
.lib-name{flex:0 1 auto;min-width:0;font-size:13.5px;font-weight:600;color:var(--t1b);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.lib-row:hover .lib-name{color:var(--t1);}
.lib-ro{flex-shrink:0;font-size:10px;font-weight:700;color:var(--t3);background:var(--line);padding:2px 7px;border-radius:6px;}
.lib-ro.lib-mine{color:var(--blue);background:var(--blue-soft);}
.lib-dots{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:24px;height:24px;border-radius:7px;display:grid;place-items:center;color:var(--t3);opacity:0;transition:.12s;}
.lib-row:hover .lib-dots,.lib-item:hover .lib-dots{opacity:1;}
.lib-dots:hover{background:var(--line2);color:var(--t1);}
/* 菜单开着时:锚点行保持悬停底色,⋮ 保持可见并呈按下态(通行规范:触发器在菜单关闭前不消失) */
.lib-row.menu-open,.lib-item.menu-open{background:var(--surface-hover);}
.lib-row.menu-open .lib-dots,.lib-item.menu-open .lib-dots{opacity:1;background:var(--line2);color:var(--t1);}
.lib-row.menu-open .lib-caret-end,.lib-item.menu-open .lib-caret-end{opacity:1;}
.lib-item.menu-open .lib-curbadge,.lib-item.menu-open .lib-runbadge{opacity:0;}
.lib-children{margin-left:21px;border-left:1px solid var(--line);padding:2px 0 4px 8px;display:flex;flex-direction:column;gap:1px;flex:1 1 auto;min-height:0;overflow-y:auto;scrollbar-width:thin;scrollbar-color:transparent transparent;}
.lib-children:hover{scrollbar-color:var(--line3,#d7dbe2) transparent;}
.lib-children::-webkit-scrollbar{width:9px;}
.lib-children::-webkit-scrollbar-track{background:transparent;}
.lib-children::-webkit-scrollbar-thumb{background:transparent;border-radius:8px;border:3.5px solid transparent;background-clip:content-box;}
.lib-children:hover::-webkit-scrollbar-thumb{background:var(--line3,#d7dbe2);border:3.5px solid transparent;background-clip:content-box;}
.lib-children:hover::-webkit-scrollbar-thumb:hover{background:var(--t4,#b9bfc9);border:3.5px solid transparent;background-clip:content-box;}
.lib-item{display:flex;align-items:center;gap:8px;height:29px;flex:0 0 auto;padding:0 32px 0 8px;border-radius:8px;cursor:pointer;transition:background .12s;position:relative;}
.lib-item:hover{background:var(--surface-hover);}
/* 对话历史：当前会话高亮 + 进行中脉冲(整个目录区唯一的强调点) */
.lib-item.cur{background:var(--surface-muted);}
.lib-item.cur:hover{background:var(--surface-muted);}
.lib-item.cur .lib-iname{color:var(--t1);font-weight:700;}
/* 进行中 = 仅一颗脉动绿点(不占标题宽);行右侧留小字预留位避免碰标题。「当前」徒标已去除，靠灰底+粗体表达 */
.lib-item.is-run{padding-right:24px;}
.lib-runbadge{position:absolute;right:9px;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;transition:opacity .12s;}
.lib-runbadge i{width:6px;height:6px;border-radius:50%;background:#15a35a;animation:libRunPulse 1.1s ease-in-out infinite;}
@keyframes libRunPulse{0%,100%{opacity:1;transform:scale(1);}50%{opacity:.35;transform:scale(.72);}}
.lib-curbadge{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-size:10px;font-weight:700;color:var(--t3);background:var(--line2);padding:1px 5px;border-radius:5px;transition:opacity .12s;}
/* 悬停时当前/进行中徽标淡出,同位置显示 ⋮(徽标与操作共用右缘一列,不悬空) */
.lib-item:hover .lib-curbadge,.lib-item:hover .lib-runbadge{opacity:0;}
/* 开新对话补全：完整锚在 composer 上沿之外，不再以“背后抽屉”形态压住输入区。 */
.tob-newchat-fly{position:absolute;left:6px;right:6px;bottom:calc(100% + 8px);z-index:8;display:flex;align-items:center;gap:10px;min-height:42px;padding:8px 10px 8px 12px;background:var(--card);border:1px solid var(--line2);border-radius:12px;box-shadow:0 -8px 24px rgba(23,32,52,.10);animation:tobCompletionUp .16s ease;}
@keyframes tobCompletionUp{from{transform:translateY(8px);opacity:0;}to{transform:translateY(0);opacity:1;}}
/* 「回到最新」胶囊:默认贴输入框上方;开新对话抽屉条弹出时自动上移规避,不再叠压 */
.tob-jump-latest{bottom:calc(100% + 12px);}
.tob-chat-inputwrap:has(.tob-newchat-fly) .tob-jump-latest{bottom:calc(100% + 62px);}
.tob-newchat-tx{flex:1;min-width:0;display:flex;align-items:baseline;gap:8px;white-space:nowrap;overflow:hidden;}
.tob-newchat-tx b{flex-shrink:0;font-size:12px;font-weight:700;color:var(--t2);}
.tob-newchat-tx em{font-style:normal;font-size:11.5px;color:var(--t3);overflow:hidden;text-overflow:ellipsis;}
.tob-newchat-go{flex-shrink:0;display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 9px;border-radius:7px;background:transparent;color:var(--blue);font-size:12px;font-weight:700;transition:.13s;}
.tob-newchat-go:hover{background:rgba(58,109,240,.09);}
.tob-newchat-ret{font-size:10.5px;opacity:.7;font-weight:600;}
.lib-iic{flex-shrink:0;display:grid;place-items:center;}
.lib-iname{font-size:12.5px;color:var(--t2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;}
.lib-edit{flex:1;min-width:0;font-size:12.5px;color:var(--t1);border:1px solid var(--blue);border-radius:6px;padding:2px 6px;outline:none;background:var(--card);}
.lib-empty{font-size:11.5px;color:var(--t3);padding:5px 8px;}
.lib-history-all{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:30px;padding:0 9px;border-radius:8px;color:var(--blue);font-size:11.5px;font-weight:700;text-align:left;}
.lib-history-all:hover{background:var(--blue-soft);}
.lib-history-mask{position:fixed;inset:0;z-index:1100;display:grid;place-items:center;padding:20px;background:rgba(15,20,28,.35);backdrop-filter:blur(2px);}
.lib-history-picker{display:flex;width:min(540px,calc(100vw - 32px));max-height:min(680px,calc(100vh - 40px));flex-direction:column;gap:14px;padding:18px;border:1px solid var(--line2);border-radius:18px;background:var(--card);box-shadow:0 24px 70px rgba(15,20,28,.25);}
.lib-history-head{display:flex;align-items:center;justify-content:space-between;gap:12px;}
.lib-history-head>div{display:flex;align-items:baseline;gap:9px;min-width:0;}.lib-history-head b{font-size:16px;letter-spacing:-.2px;}.lib-history-head span{color:var(--t3);font-size:11px;}
.lib-history-head>button{width:28px;height:28px;border-radius:8px;color:var(--t3);font-size:20px;line-height:1;}.lib-history-head>button:hover{background:var(--surface-hover);color:var(--t1);}
.lib-history-search{display:flex;align-items:center;gap:8px;height:42px;padding:0 9px 0 12px;border:1px solid var(--line2);border-radius:11px;background:var(--surface-sunken);transition:border-color .14s,box-shadow .14s,background .14s;}
.lib-history-search:focus-within{border-color:var(--blue);background:var(--card);box-shadow:0 0 0 3px rgba(58,109,240,.09);}
.lib-history-search-icon{display:grid;place-items:center;flex:0 0 auto;width:17px;height:17px;color:var(--t3);}
.lib-history-search-icon svg{width:17px;height:17px;}
.lib-history-search>input{min-width:0;flex:1;height:100%;padding:0;border:0;outline:0;background:transparent;color:var(--t1);font-size:13px;}
.lib-history-search>input::placeholder{color:var(--t3);}
.lib-history-search-clear{display:grid;place-items:center;flex:0 0 auto;width:22px;height:22px;border-radius:7px;color:var(--t3);font-size:16px;line-height:1;}
.lib-history-search-clear:hover{background:var(--line2);color:var(--t1);}
.lib-history-search-count{flex:0 0 auto;padding:3px 7px;border-radius:7px;background:var(--line);color:var(--t3);font-size:10.5px;font-variant-numeric:tabular-nums;white-space:nowrap;}
.lib-history-list{display:flex;min-height:120px;flex-direction:column;gap:2px;padding-right:2px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--line2) transparent;}
.lib-history-list.is-loading{opacity:.48;pointer-events:none;}
.lib-history-pick{display:flex;min-height:42px;align-items:center;gap:8px;width:100%;padding:7px 10px;border-radius:10px;color:var(--t1);font-size:12.5px;text-align:left;transition:background .12s;}
.lib-history-pick:hover{background:var(--surface-hover);}.lib-history-pick.cur{background:var(--surface-muted);font-weight:700;}
.lib-history-pick-name{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.lib-history-pick-meta{display:flex;flex:0 0 auto;align-items:center;justify-content:flex-end;gap:7px;min-width:82px;color:var(--t3);font-size:10.5px;font-weight:500;font-variant-numeric:tabular-nums;white-space:nowrap;}
.lib-history-live{display:inline-flex;align-items:center;justify-content:center;width:8px;height:8px;}
.lib-history-live i{width:6px;height:6px;border-radius:50%;background:#15a35a;animation:libRunPulse 1.1s ease-in-out infinite;}
.lib-history-branch{flex-shrink:0;color:var(--t3);}
.lib-history-empty{padding:30px 10px;color:var(--t3);font-size:12px;text-align:center;}
.lib-history-pager{display:grid;grid-template-columns:76px 1fr 76px;align-items:center;gap:10px;padding-top:2px;border-top:1px solid var(--line);}
.lib-history-pager button{height:32px;border-radius:9px;color:var(--t2);font-size:11.5px;font-weight:700;}
.lib-history-pager button:hover:not(:disabled){background:var(--surface-hover);color:var(--t1);}
.lib-history-pager button:disabled{color:var(--t4);cursor:not-allowed;}
.lib-history-pager span{text-align:center;color:var(--t3);font-size:11px;font-variant-numeric:tabular-nums;}
.lib-history-pager span b{color:var(--t1);font-size:12px;}
/* 右键 / ⋮ 菜单 */
.lib-menu-scrim{position:fixed;inset:0;z-index:1000;}
.lib-menu{position:fixed;z-index:1001;min-width:148px;background:var(--card);border:1px solid var(--line2);border-radius:11px;box-shadow:0 14px 40px rgba(20,25,35,.2);padding:6px;animation:acctPop .12s;}
.lib-menu-item{display:block;width:100%;text-align:left;font-size:12.5px;font-weight:600;color:var(--t1);padding:8px 11px;border-radius:8px;transition:.1s;white-space:nowrap;}
.lib-menu-item:hover{background:var(--surface-hover);}
.lib-menu-item.strong{color:var(--blue);}
.lib-menu-item.strong:hover{background:var(--blue-soft);}
.lib-menu-item.danger{color:var(--up);}
.lib-menu-item.danger:hover{background:var(--danger-soft);}

/* API 接入弹层 */
.tob-api-hint{display:flex;gap:9px;align-items:flex-start;padding:11px 13px;border-radius:11px;background:var(--blue-soft);color:var(--t1);font-size:12px;line-height:1.55;margin-bottom:16px;}
.tob-api-hint svg{flex-shrink:0;color:var(--blue);margin-top:1px;}
.tob-api-hint b{font-weight:800;}
.tob-api-perm{display:flex;align-items:center;gap:10px;padding:11px 12px;border:1px solid var(--line2);border-radius:11px;background:var(--surface-sunken);text-align:left;transition:.13s;}
.tob-api-perm:hover{border-color:rgba(58,109,240,.4);}
.tob-api-perm.on{border-color:var(--blue);background:var(--blue-soft);}
.tob-api-perm-ic{width:32px;height:32px;flex-shrink:0;border-radius:9px;display:grid;place-items:center;background:var(--card);color:var(--t2);border:1px solid var(--line2);}
.tob-api-perm.on .tob-api-perm-ic{background:var(--blue);color:#fff;border-color:var(--blue);}
.tob-api-perm-tx{display:flex;flex-direction:column;gap:1px;min-width:0;}
.tob-api-perm-tx b{font-size:12.5px;font-weight:700;color:var(--t1);}
.tob-api-perm-tx i{font-size:10.5px;font-style:normal;color:var(--t3);}
.tob-api-check{margin-left:auto;width:18px;height:18px;flex-shrink:0;border-radius:6px;display:grid;place-items:center;color:#fff;}
.tob-api-perm.on .tob-api-check{background:var(--blue);}
.tob-api-test{display:flex;align-items:center;gap:12px;padding-top:4px;}
.tob-api-upload{display:flex;align-items:center;gap:8px;width:100%;padding:11px 13px;border:1px dashed var(--line2);border-radius:11px;background:var(--surface-sunken);color:var(--t2);font-size:12.5px;font-weight:600;cursor:pointer;transition:.13s;margin-bottom:14px;}
.tob-api-upload:hover{border-color:rgba(58,109,240,.5);color:var(--blue);background:var(--blue-soft);}
.tob-api-upload svg{flex-shrink:0;color:var(--blue);}
.tob-api-upload b{color:var(--t1);font-weight:700;}
.tob-api-upload .tob-api-upok{margin-left:auto;color:var(--down);display:inline-flex;align-items:center;gap:4px;font-weight:700;}

/* 新增账户向导 */
.tob-api-dot.imp{color:var(--blue);} .tob-api-dot.imp .tob-led{background:var(--blue);}
.aw-back{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;color:var(--t3);margin-right:-2px;}
.aw-back:hover{background:var(--line);color:var(--t1);}
.aw-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
.aw-card{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:11px;padding:18px 16px;border:1px solid var(--line2);border-radius:14px;background:var(--surface-sunken);text-align:left;transition:.14s;width:100%;}
.aw-card:hover{border-color:rgba(58,109,240,.45);background:var(--card);box-shadow:0 4px 16px rgba(20,24,30,.06);transform:translateY(-2px);}
.aw-card.on{border-color:var(--blue);background:var(--card);box-shadow:0 0 0 3px var(--blue-soft);}
.aw-card.soon{cursor:not-allowed;opacity:.62;background:var(--surface-sunken);}
.aw-card.soon:hover{border-color:var(--line2);background:var(--surface-sunken);box-shadow:none;transform:none;}
.aw-card.soon .aw-card-ic{background:var(--line2);color:var(--t3);}
.aw-card-soon{margin-top:2px;font-size:10.5px;font-weight:800;letter-spacing:.2px;color:var(--t3);background:var(--line2);border-radius:6px;padding:2px 7px;}
.aw-card-tick{position:absolute;top:12px;right:12px;width:20px;height:20px;border-radius:50%;background:var(--blue);color:#fff;display:grid;place-items:center;}
.aw-card-ic{width:44px;height:44px;flex-shrink:0;border-radius:12px;display:grid;place-items:center;background:var(--blue-soft);color:var(--blue);}
.aw-card-top{display:flex;flex-direction:column;align-items:flex-start;gap:7px;}
.aw-card-top b{font-size:13.5px;font-weight:800;color:var(--t1);line-height:1.35;}
.aw-card-d{font-size:11.5px;font-style:normal;color:var(--t2);line-height:1.55;}
.aw-tag{font-size:10px;font-weight:800;letter-spacing:.3px;padding:2px 7px;border-radius:6px;background:var(--blue);color:#fff;}
.aw-tag.soft{background:var(--blue-soft);color:var(--blue);}
.aw-tag.beta{background:var(--violet-soft);color:#8b5cf6;}
.aw-tag.rec{background:var(--ok-soft);color:#15a35a;}
.aw-switch{display:flex;gap:3px;background:var(--line);border-radius:10px;padding:3px;margin-bottom:15px;}
.aw-switch button{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:12px;font-weight:700;color:var(--t2);padding:7px 8px;border-radius:8px;transition:.12s;}
.aw-switch button svg{width:14px;height:14px;}
.aw-switch button.on{background:var(--card);color:var(--blue);box-shadow:0 1px 4px rgba(20,24,30,.1);}
.aw-paste{width:100%;min-height:128px;resize:vertical;border:1px solid var(--line2);border-radius:11px;background:var(--surface-hover);padding:13px 15px;font-size:13px;line-height:1.8;font-family:var(--mono);color:var(--t1);outline:none;transition:.13s;}
.aw-io{display:grid;grid-template-columns:1.7fr 1fr;gap:10px;align-items:stretch;}
.aw-io .aw-paste{min-height:118px;}
.aw-drop{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:5px;border:1px dashed var(--line2);border-radius:11px;background:var(--surface-sunken);color:var(--t2);cursor:pointer;padding:12px;transition:.13s;}
.aw-drop:hover,.aw-drop.over{border-color:rgba(58,109,240,.55);background:var(--blue-soft);color:var(--blue);}
.aw-drop svg{color:var(--blue);}
.aw-drop b{font-size:12px;font-weight:700;color:var(--t1);}
.aw-drop i{font-size:10.5px;font-style:normal;color:var(--t3);}
.aw-drop-ocr{display:inline-flex;align-items:center;gap:5px;margin-top:9px;padding:5px 11px;border-radius:8px;font-size:11.5px;font-weight:700;color:var(--blue);background:var(--card);border:1px solid var(--line2);transition:.13s;}
.aw-drop-ocr:hover{border-color:rgba(58,109,240,.5);background:var(--blue-soft);}
.aw-paste:focus{background:var(--card);border-color:rgba(58,109,240,.5);box-shadow:0 0 0 3px var(--blue-soft);}
.aw-paste::placeholder{color:var(--t3);font-family:var(--sans);}
.aw-tools{display:flex;align-items:center;gap:9px;margin-top:9px;flex-wrap:wrap;}
.aw-link{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;color:var(--blue);}
.aw-link:hover{text-decoration:underline;}
.aw-empty{padding:26px 16px;margin:12px 0;text-align:center;border:1px dashed var(--line2);border-radius:12px;color:var(--t3);font-size:12px;background:var(--surface-sunken);}
/* 持仓预览表 */
.aw-tbl{border:1px solid var(--line);border-radius:12px;overflow:visible;}
.aw-tbl-h,.aw-tbl-r{display:grid;grid-template-columns:1.7fr .7fr 1fr 1fr 30px;align-items:center;gap:8px;padding:9px 12px;}
.aw-tbl.rev .aw-tbl-h,.aw-tbl.rev .aw-tbl-r{grid-template-columns:minmax(0,1.6fr) 70px .9fr .95fr 116px 28px;}
.aw-tbl-h{background:var(--surface-hover);font-size:10.5px;font-weight:800;letter-spacing:.3px;color:var(--t3);text-transform:uppercase;border-radius:12px 12px 0 0;}
.aw-tbl-r{border-top:1px solid var(--line);font-size:12.5px;position:relative;}
.aw-tbl-r:hover{background:var(--surface-sunken);}
.aw-tbl-r.warn{background:var(--warn-soft);box-shadow:inset 3px 0 0 #e8852b;}
.aw-tbl-r.warn:hover{background:var(--warn-soft);}
.aw-tk{display:flex;align-items:center;gap:7px;min-width:0;flex-wrap:wrap;position:relative;}
.aw-tk b{font-size:12.5px;font-weight:700;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.aw-tk .tob-mk{flex-shrink:0;}
.aw-tkname{display:inline-flex;align-items:center;gap:3px;min-width:0;border-radius:6px;padding:1px 3px;color:var(--t1);}
.aw-tkname svg{color:var(--t3);flex-shrink:0;}
.aw-tkname:hover{background:var(--line);}
.aw-tkname.amb{box-shadow:inset 0 -1.5px 0 #e8852b;}
.aw-rowflags{display:inline-flex;gap:4px;flex-wrap:wrap;}
.aw-rowflags i{font-style:normal;font-size:9.5px;font-weight:800;letter-spacing:.2px;color:#b5651d;background:var(--warn-soft);border-radius:5px;padding:1.5px 5px;}
.aw-repick-veil{position:fixed;inset:0;z-index:300;}
.aw-repick{position:fixed;z-index:301;width:300px;max-width:calc(100vw - 24px);background:var(--card);border:1px solid var(--line2);border-radius:11px;box-shadow:0 16px 40px rgba(20,25,35,.24);padding:8px;}
.aw-dir{display:inline-flex;gap:2px;background:var(--line);border-radius:7px;padding:2px;}
.aw-dir button{flex:1;font-size:11px;font-weight:800;color:var(--t3);padding:3px 0;border-radius:5px;transition:.1s;}
.aw-dir button.on.long{background:var(--up);color:#fff;}
.aw-dir button.on.short{background:var(--down);color:#fff;}
.aw-cell-in{width:100%;height:30px;border:1px solid transparent;border-radius:7px;background:transparent;padding:0 7px;font-size:12px;font-family:var(--mono);color:var(--t1);outline:none;text-align:right;font-variant-numeric:tabular-nums;transition:.12s;}
.aw-cell-in:hover{background:var(--surface-muted);}
.aw-cell-in:focus{background:var(--card);border-color:rgba(58,109,240,.5);box-shadow:0 0 0 2px var(--blue-soft);}
.aw-cell-in.miss{background:var(--warn-soft);color:#b5651d;}
.aw-cell-in.miss::placeholder{color:#c98a3e;}
.aw-cell-in.date{text-align:left;font-size:11px;padding:0 5px;color:var(--t2);}
.aw-del{width:26px;height:26px;border-radius:7px;display:grid;place-items:center;color:var(--t3);justify-self:center;}
.aw-del:hover{background:var(--danger-soft);color:var(--up);}
.aw-review{display:flex;align-items:flex-start;gap:9px;padding:10px 13px;margin-bottom:11px;border-radius:11px;background:var(--warn-soft);border:1px solid var(--warn-line);font-size:12px;line-height:1.55;color:#92591a;}
.aw-review svg{color:#e8852b;flex-shrink:0;margin-top:1px;}
.aw-review b{font-weight:800;}
.aw-cashrow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 13px;margin-top:11px;border:1px solid var(--line2);border-radius:11px;background:var(--surface-sunken);}
.aw-cashrow label{font-size:12px;font-weight:700;color:var(--t1);white-space:nowrap;}
.aw-cash-in{display:flex;align-items:center;gap:6px;flex:1;max-width:320px;height:34px;padding:0 12px;border:1px solid var(--line2);border-radius:9px;background:var(--card);}
.aw-cash-in:focus-within{border-color:rgba(58,109,240,.5);box-shadow:0 0 0 3px var(--blue-soft);}
.aw-cash-in span{color:var(--t3);font-size:13px;font-weight:700;}
.aw-cash-in input{flex:1;border:none;outline:none;background:transparent;font-size:13px;font-family:var(--mono);color:var(--t1);text-align:right;}
.aw-sum{display:flex;align-items:center;justify-content:space-between;padding:11px 13px;margin-top:11px;border-radius:11px;background:var(--surface-hover);font-size:12px;}
.aw-sum b{font-size:14px;font-variant-numeric:tabular-nums;}
/* —— Add-Lot 逐笔加仓 —— */
.aw-cashtop{display:flex;flex-direction:column;gap:7px;margin-bottom:18px;}
.aw-cashtop label{font-size:12px;font-weight:700;color:var(--t1);}
.aw-cash-box{display:flex;align-items:center;gap:8px;height:46px;max-width:340px;padding:0 14px;border:1px solid var(--line2);border-radius:11px;background:var(--card);transition:.13s;}
.aw-cash-box:focus-within{border-color:rgba(58,109,240,.5);box-shadow:0 0 0 3px var(--blue-soft);}
.aw-cash-box .cur{font-size:16px;font-weight:700;color:var(--t2);}
.aw-cash-box input{flex:1;border:none;outline:none;background:transparent;font-size:16px;font-family:var(--mono);color:var(--t1);}
.aw-cash-box .ccy{font-size:12.5px;font-weight:700;color:var(--t3);}
.aw-ccy{position:relative;display:inline-flex;align-items:center;}
.aw-ccy select{appearance:none;-webkit-appearance:none;border:none;background:transparent;font-size:12.5px;font-weight:700;color:var(--t2);padding:4px 18px 4px 8px;border-radius:7px;cursor:pointer;outline:none;font-family:var(--sans);}
.aw-ccy select:hover{background:var(--surface-muted);color:var(--t1);}
.aw-ccy svg{position:absolute;right:4px;color:var(--t3);pointer-events:none;}
.aw-ccy.compact{border:1px solid var(--line2);border-radius:9px;background:var(--card);height:34px;}
.aw-cash-fx{font-size:11px;color:var(--t3);font-variant-numeric:tabular-nums;}
/* —— 分组多笔编辑 —— */
.aw-lots-h{display:grid;grid-template-columns:206px 1fr;gap:14px;padding:0 2px 8px;border-bottom:1px solid var(--line);font-size:11.5px;font-weight:700;color:var(--t2);}
.aw-lotcols{display:grid;grid-template-columns:.95fr 1.1fr 1.15fr 76px;gap:10px;}
.aw-grps{display:flex;flex-direction:column;}
.aw-grp{display:grid;grid-template-columns:206px 1fr;gap:14px;padding:13px 0;border-bottom:1px solid var(--line);align-items:start;}
.aw-grp-tk{display:flex;align-items:flex-start;gap:6px;min-width:0;position:relative;padding-top:4px;}
.aw-grp-del{width:24px;height:24px;flex-shrink:0;border-radius:7px;display:grid;place-items:center;color:var(--t3);}
.aw-grp-del:hover{background:var(--danger-soft);color:var(--up);}
.aw-grp-id{display:flex;flex-direction:column;gap:4px;min-width:0;}
.aw-grp-id .aw-tkname{display:inline-flex;align-items:center;gap:5px;min-width:0;border-radius:6px;padding:1px 3px;color:var(--t1);align-self:flex-start;}
.aw-grp-id .aw-tkname b{font-size:13px;font-weight:800;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.aw-grp-id .aw-tkname svg{color:var(--t3);flex-shrink:0;}
.aw-grp-id .aw-tkname:hover{background:var(--line);}
.aw-grp-id .aw-tkname.amb{box-shadow:inset 0 -1.5px 0 #e8852b;}
.aw-grp-meta{display:flex;align-items:center;gap:7px;padding-left:3px;}
.aw-grp-meta .mono{font-size:11px;color:var(--t3);}
.aw-grp-side{font-size:10.5px;font-weight:800;padding:1px 8px;border-radius:6px;background:var(--line);color:var(--t2);}
.aw-grp-side.long{background:var(--up-soft);color:var(--up);}   /* 跟随涨跌语义(红涨绿跌/绿涨开关),不再写死绿底配红字 */
.aw-grp-side.short{background:var(--down-soft);color:var(--down);}
.aw-grp-lots{display:flex;flex-direction:column;gap:8px;min-width:0;}
.aw-lotrow{display:grid;grid-template-columns:.95fr 1.1fr 1.15fr 76px;gap:10px;align-items:center;}
.aw-lot-in{height:38px;border:1px solid var(--line2);border-radius:10px;background:var(--card);padding:0 12px;font-size:13px;font-family:var(--mono);color:var(--t1);outline:none;transition:.13s;width:100%;}
.aw-lot-in:focus{border-color:rgba(58,109,240,.5);box-shadow:0 0 0 3px var(--blue-soft);}
.aw-lot-in.date{font-family:var(--sans);font-size:12px;color:var(--t2);}
.aw-lot-cost{display:flex;align-items:center;height:38px;border:1px solid var(--line2);border-radius:10px;background:var(--card);overflow:hidden;transition:.13s;}
.aw-lot-cost:focus-within{border-color:rgba(58,109,240,.5);box-shadow:0 0 0 3px var(--blue-soft);}
.aw-lot-cost.miss{border-color:var(--warn-line);background:var(--warn-soft);}
.aw-lot-cost span{padding:0 9px;align-self:stretch;display:flex;align-items:center;font-size:11.5px;font-weight:700;color:var(--t3);background:var(--surface-hover);border-right:1px solid var(--line2);}
.aw-lot-cost input{flex:1;min-width:0;border:none;outline:none;background:transparent;padding:0 10px;font-size:13px;font-family:var(--mono);color:var(--t1);}
.aw-lot-act{display:inline-flex;align-items:center;justify-content:center;gap:4px;height:38px;border-radius:9px;font-size:12px;font-weight:700;transition:.12s;}
.aw-lot-act.add{color:var(--blue);background:var(--blue-soft);}
.aw-lot-act.add:hover{background:var(--blue);color:#fff;}
.aw-lot-act.del{color:var(--t3);width:34px;justify-self:start;}
.aw-lot-act.del:hover{background:var(--danger-soft);color:var(--up);}
.aw-addticker{display:inline-flex;align-items:center;gap:6px;margin-top:12px;padding:9px 14px;border:1px dashed var(--line2);border-radius:10px;font-size:12.5px;font-weight:700;color:var(--blue);transition:.13s;}
.aw-addticker:hover{border-color:rgba(58,109,240,.5);background:var(--blue-soft);}
.aw-addpop{position:fixed;z-index:301;background:var(--card);border:1px solid var(--line2);border-radius:12px;box-shadow:0 16px 40px rgba(20,25,35,.24);padding:8px;max-width:calc(100vw - 16px);}
.aw-addpop .aw-search-in{border:1px solid var(--line2);}
.aw-sugg.static{position:static;border:none;box-shadow:none;margin-top:6px;max-height:240px;overflow-y:auto;}
.aw-addtk{display:flex;align-items:flex-start;gap:10px;margin-top:12px;}
.aw-addtk .aw-link{padding-top:10px;}
.aw-batch{margin-top:16px;border-top:1px solid var(--line);padding-top:12px;}
.aw-batch-toggle{display:flex;align-items:center;gap:7px;width:100%;font-size:12px;font-weight:700;color:var(--t2);}
.aw-batch-toggle svg{color:var(--t3);}
.aw-batch-toggle:hover{color:var(--t1);}
.aw-batch-toggle .sp{flex:1;}
.aw-batch-body{margin-top:12px;}
/* 添加标的搜索 */
.aw-search{position:relative;margin-top:9px;}
.aw-search-in{display:flex;align-items:center;gap:8px;height:38px;padding:0 12px;border:1px solid var(--line2);border-radius:10px;background:var(--card);}
.aw-search-in:focus-within{border-color:rgba(58,109,240,.5);box-shadow:0 0 0 3px var(--blue-soft);}
.aw-search-in input{flex:1;border:none;outline:none;background:transparent;font-size:12.5px;color:var(--t1);font-family:var(--sans);}
.aw-search-in svg{color:var(--t3);flex-shrink:0;}
.aw-sugg{position:absolute;left:0;right:0;top:42px;z-index:5;background:var(--card);border:1px solid var(--line2);border-radius:11px;box-shadow:0 12px 30px rgba(20,25,35,.16);overflow:hidden;max-height:210px;overflow-y:auto;}
.aw-sugg button{display:flex;align-items:center;gap:8px;width:100%;padding:9px 12px;text-align:left;font-size:12.5px;transition:.1s;}
.aw-sugg button:hover{background:var(--blue-soft);}
.aw-sugg b{font-weight:700;}
.aw-sugg .mono{margin-left:auto;color:var(--t3);font-size:11.5px;}
/* AI 对话 */
.aw-ai-step{display:flex;flex-direction:column;min-height:100%;}
.aw-ai-step .aw-chat{flex:1;min-height:0;}
.aw-ai-step .aw-chat-log{max-height:none;}
.aw-chat{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:13px;overflow:hidden;background:var(--surface-sunken);}
.aw-chat-log{flex:1;min-height:280px;max-height:420px;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:13px;}
.aw-msg{display:flex;gap:9px;max-width:90%;animation:msgIn .22s ease;}
.aw-msg.me{align-self:flex-end;flex-direction:row-reverse;}
.aw-msg-av{width:28px;height:28px;flex-shrink:0;border-radius:9px;display:grid;place-items:center;color:#fff;background:linear-gradient(135deg,#3a6df0,#6f8cf5);}
.aw-msg.me .aw-msg-av{background:var(--t1);}
.aw-bubble{padding:9px 12px;border-radius:12px;font-size:12.5px;line-height:1.62;color:var(--t1);background:var(--card);border:1px solid var(--line);}
.aw-msg.me .aw-bubble{background:var(--blue);color:#fff;border-color:var(--blue);}
.aw-found{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;}
.aw-found-chip{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;border-radius:7px;background:var(--blue-soft);color:var(--blue);font-size:11px;font-weight:700;}
.aw-typing{display:inline-flex;gap:3px;padding:3px 2px;}
.aw-typing i{width:5px;height:5px;border-radius:50%;background:var(--t3);animation:awdot 1s infinite;}
.aw-typing i:nth-child(2){animation-delay:.15s;} .aw-typing i:nth-child(3){animation-delay:.3s;}
@keyframes awdot{0%,60%,100%{opacity:.3;transform:translateY(0);}30%{opacity:1;transform:translateY(-3px);}}
.aw-chips{display:flex;flex-wrap:wrap;gap:7px;padding:0 14px 12px;}
.aw-chip{font-size:11.5px;font-weight:600;color:var(--t2);padding:6px 11px;border:1px solid var(--line2);border-radius:999px;background:var(--card);transition:.12s;}
.aw-chip:hover{border-color:rgba(58,109,240,.45);color:var(--blue);background:var(--blue-soft);}
/* 向导 AI 对话：完全复用主对话（tob-discover）的消息视觉——用户灰气泡、Agent 蓝底方形 spark 头像 + 无气泡正文；窄容器按右栏对话规格微调 */
.aw-chat .aw-chat-log{gap:18px;}
.aw-chat .tob-msg{flex-shrink:0;}
.aw-chat .tob-bubble{font-size:13px;padding:9px 13px;max-width:86%;}
.aw-chat .tob-ai-text{font-size:13px;line-height:1.65;}
.aw-chat .tob-msg-ai{gap:9px;}
.aw-chat .tob-ai-avatar{width:26px;height:26px;border-radius:8px;}
.aw-chat-in{padding:10px;border-top:1px solid var(--line);}
.aw-chat-in .tob-chat-inputwrap{flex-direction:row;align-items:flex-end;gap:6px;padding:5px;border-color:var(--line2);box-shadow:0 4px 14px rgba(23,32,52,.06);}
.aw-chat-in .tob-chat-inputwrap textarea{flex:1;font-size:13px;line-height:1.55;padding:8px 10px 6px;max-height:96px;overflow-y:auto;}
.aw-chat-in .tob-dsend{width:34px;height:34px;margin-bottom:1px;}

/* 数据 Channel 接入 */
.tob-ch-sec-t{font-size:11.5px;font-weight:800;color:var(--t2);margin-bottom:10px;display:flex;align-items:center;gap:9px;letter-spacing:.2px;}
.tob-ch-sec-t::after{content:"";flex:1;height:1px;background:var(--line);}
@keyframes pop{from{opacity:0;transform:translateY(4px);}to{opacity:1;transform:none;}}
.tob-ch-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:18px;}
.tob-ch-card{display:flex;align-items:center;gap:10px;min-width:0;padding:10px 11px;border:1px solid var(--line2);border-radius:11px;background:var(--surface-sunken);text-align:left;transition:.13s;}
.tob-ch-card:hover{border-color:rgba(58,109,240,.4);}
.tob-ch-card.on{border-color:var(--blue);background:var(--blue-soft);box-shadow:0 0 0 3px var(--blue-soft);}
.tob-ch-logo{width:34px;height:34px;flex-shrink:0;border-radius:9px;display:grid;place-items:center;color:#fff;font-size:13px;font-weight:800;letter-spacing:-.4px;}
.tob-ch-tx{display:flex;flex-direction:column;gap:2px;min-width:0;}
.tob-ch-tx b{font-size:12.5px;font-weight:800;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tob-ch-tx i{font-size:10px;font-style:normal;color:var(--t3);line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tob-ch-pick{margin-left:auto;flex-shrink:0;width:18px;height:18px;border-radius:50%;border:1.5px solid var(--line2);display:grid;place-items:center;color:#fff;}
.tob-ch-card.on .tob-ch-pick{background:var(--blue);border-color:var(--blue);}
/* 开发中：卡片禁选、降饱和，右侧「开发中」标签 */
.tob-ch-card.soon{cursor:not-allowed;background:var(--bg);}
.tob-ch-card.soon:hover{border-color:var(--line2);}
.tob-ch-card.soon .tob-ch-logo{filter:grayscale(.5);opacity:.75;}
.tob-ch-card.soon .tob-ch-tx b{color:var(--t2);}
.tob-ch-soon{margin-left:auto;flex-shrink:0;font-size:10px;font-weight:800;color:var(--t3);background:var(--line);padding:2px 7px;border-radius:6px;white-space:nowrap;}
/* 侧栏 channel 文件夹徽标 */
.lib-ch-badge{flex-shrink:0;display:inline-flex;align-items:center;gap:4px;font-size:10px;font-weight:800;color:var(--down);background:rgba(21,163,90,.1);padding:2px 7px;border-radius:6px;}
.lib-ch-badge i{width:6px;height:6px;border-radius:50%;background:var(--down);}
/* 侧栏「新增数据 Channel」：钉在目录区底部、用户栏上方——与底部账户行同款:无框体扁平行,顶部细线分隔,悬停淡底 */
.lib-channel-add{flex-shrink:0;display:flex;align-items:center;gap:9px;margin:0;height:42px;padding:0 22px;border:none;border-top:1px solid var(--line);border-radius:0;background:transparent;color:var(--t1b);font-weight:600;transition:.13s;}
.lib-channel-add:hover{color:var(--blue);background:var(--surface-hover,#f4f6f8);}
.lib-channel-ic{flex-shrink:0;display:grid;place-items:center;color:var(--t3);transition:.13s;}
.lib-channel-add:hover .lib-channel-ic{color:var(--blue);}
.lib-channel-tx{flex:1;text-align:left;font-size:12.5px;font-weight:600;}
.lib-channel-plus{flex-shrink:0;width:20px;height:20px;border-radius:6px;display:grid;place-items:center;color:var(--t3);opacity:0;transition:.12s;}
.lib-channel-add:hover .lib-channel-plus{opacity:1;color:var(--blue);}
.lib-channel-plus{flex-shrink:0;width:20px;height:20px;border-radius:6px;display:grid;place-items:center;color:var(--t3);opacity:0;transition:.12s;}
.lib-channel-add:hover .lib-channel-plus{opacity:1;}

/* ============ 主区 ============ */
.tob-main{flex:1;display:flex;flex-direction:column;min-width:0;}
.tob-top{height:60px;flex-shrink:0;display:flex;align-items:center;gap:16px;padding:0 24px;
  background:rgba(246,247,249,.86);backdrop-filter:blur(12px);border-bottom:1px solid var(--line2);z-index:10;}
.tob-top-title{font-size:17px;font-weight:800;letter-spacing:-.4px;}
.tob-top-sub{font-size:12px;color:var(--t2);font-weight:500;}
.tob-top-spacer{flex:1;}
.tob-top-stat{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--t2);font-weight:600;padding-right:16px;border-right:1px solid var(--line2);}
.tob-top-stat:last-of-type{border-right:none;}
.tob-top-stat b{font-weight:800;color:var(--t1);font-variant-numeric:tabular-nums;font-family:var(--mono);}
.tob-live{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;color:var(--t2);}
.tob-live .dot{width:7px;height:7px;border-radius:50%;background:var(--down);position:relative;}
.tob-live .dot::after{content:"";position:absolute;inset:0;border-radius:50%;background:var(--down);animation:pulse 2s infinite;}
.tob-top-btn{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 13px;border-radius:9px;font-size:12.5px;font-weight:700;color:var(--t1);background:var(--card);border:1px solid var(--line2);transition:.13s;}
.tob-top-btn:hover{border-color:rgba(58,109,240,.4);color:var(--blue);}
.tob-top-btn.primary{background:var(--blue);color:#fff;border-color:var(--blue);box-shadow:0 2px 10px rgba(58,109,240,.28);}
.tob-top-btn.primary:hover{filter:brightness(1.05);color:#fff;}
.tob-top-btn svg{width:15px;height:15px;}

.tob-view{flex:1;overflow-y:auto;padding:22px 24px 60px;}
.tob-view-inner{max-width:1320px;margin:0 auto;}
/* 发现新机会内嵌智能体工作台（全屏铺满，抵消 .tob-view 内边距） */
.tob-agent-embed{margin:-22px -24px -60px;height:calc(100% + 82px);display:flex;flex-direction:column;min-height:0;background:var(--bg);}
.tob-agent-bar{flex-shrink:0;display:flex;align-items:center;gap:12px;padding:9px 18px;border-bottom:1px solid var(--line2);background:var(--card);}
.tob-agent-back{display:inline-flex;align-items:center;gap:4px;font-size:13px;font-weight:700;color:var(--t2);padding:6px 12px;border-radius:16px;border:none;background:var(--card);box-shadow:0 1px 3px rgba(20,25,35,.1),0 1px 2px rgba(20,25,35,.05);transition:.13s;}
.tob-agent-back:hover{color:var(--blue);box-shadow:0 4px 12px rgba(20,25,35,.15);transform:scale(1.06);}
.tob-agent-back svg{width:15px;height:15px;}
.tob-agent-bar-t{font-size:13px;font-weight:700;color:var(--t1);}
.tob-agent-host{flex:1;min-height:0;position:relative;}
/* 股票跟踪：整页锁定视口高度，卡片内部滚动 */
.tob-track-page{height:100%;display:flex;flex-direction:column;overflow:hidden;}
.tob-track-page>.tob-row{flex:1;min-height:0;}
.tob-track-page .tk-left{min-height:0;}
.tob-track-page .tk-kline{flex-shrink:0;}
.tob-track-page .tk-bottom{flex:1;min-height:0;}
.tob-track-page .tk-bottom>.tob-card{min-height:0;display:flex;flex-direction:column;}
.tob-track-page .tk-bottom .tob-feed{flex:1;min-height:0;max-height:none;}
.tob-track-page .tk-cal-list{flex:1;min-height:0;overflow-y:auto;}
.tob-track-page .tk-board{align-self:stretch;min-height:0;display:flex;flex-direction:column;}
.tob-track-page .tk-board-scroll{flex:1;min-height:0;overflow-y:auto;}
.tob-view:has(.tob-track-page){padding-bottom:22px;}
/* 品种面板：全屏铺满，取消 tob-view 内边距 */
.tob-view:has(.tob-panel-page){padding:0;overflow:hidden;}
/* .hv-pane 覆盖层(HTML 查看器 / 分享只读回放 / 品种面板)激活时:.tob-view 停外层滚动 + 去内边距,
   否则底层 View(如 discover 主页)在流内把 .tob-view 撑高、absolute inset:0 的 .hv-pane 只盖住视口一屏,
   滚外层就滑过覆盖层露出背后主页(分享页「拉到底漏出主页」即此)。覆盖层自带 overflow:auto 处理内部滚动。 */
.tob-view:has(.hv-pane){padding:0;overflow:hidden;}

/* ============ 通用卡片 / 网格 ============ */
.tob-card{background:var(--card);border:1px solid var(--line2);border-radius:14px;padding:16px 17px;}
/* 「为你推荐」等以白卡网格填充的区块:外层不再套白底,让卡片直接落在灰底上(与「热门研究」一致),避免一整块突兀的白 */
.tob-card-plain{background:transparent;border:none;padding:16px 0 0;}
.tob-card-h{display:flex;align-items:center;gap:9px;margin-bottom:13px;}
.tob-card-title{font-size:14px;font-weight:800;letter-spacing:-.3px;}
.tob-card-sub{font-size:11.5px;color:var(--t2);}
.tob-card-h .sp{flex:1;}
.tob-kicker{font-size:10.5px;font-weight:800;letter-spacing:.5px;color:var(--blue);text-transform:uppercase;}
.tob-grid{display:grid;gap:16px;}
.tob-row{display:flex;gap:16px;align-items:flex-start;}
.tob-row>*{min-width:0;}

/* KPI 数字块 */
.tob-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px;}
.tob-kpi{background:var(--card);border:1px solid var(--line2);border-radius:13px;padding:14px 15px;display:flex;flex-direction:column;gap:6px;}
.tob-kpi-k{font-size:11.5px;color:var(--t2);font-weight:600;display:flex;align-items:center;gap:6px;}
.tob-kpi-v{font-size:25px;font-weight:800;letter-spacing:-.8px;font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--t1);}
.tob-kpi-sub{font-size:11.5px;color:var(--t3);font-weight:600;display:flex;align-items:center;gap:7px;}
.tob-kpi-sub b{font-family:var(--mono);font-weight:700;}

/* 表格 */
.tob-table{width:100%;border-collapse:collapse;font-size:12.5px;}
.tob-table th{text-align:right;font-size:10.5px;font-weight:700;color:var(--t3);padding:0 10px 9px 0;border-bottom:1px solid var(--line2);white-space:nowrap;letter-spacing:.2px;}
.tob-table th:first-child{text-align:left;}
.tob-table td{text-align:right;padding:10px 10px 10px 0;border-bottom:1px solid var(--line);white-space:nowrap;}
.tob-table td:first-child{text-align:left;}
.tob-table tr:last-child td{border-bottom:none;}
.tob-table tbody tr{transition:.1s;}
.tob-table tbody tr:hover{background:var(--surface-sunken);}
.tob-table .mono{font-family:var(--mono);font-variant-numeric:tabular-nums;}
.tob-tname{display:flex;flex-direction:column;gap:1px;}
.tob-tname b{font-size:13px;font-weight:700;color:var(--t1);}
.tob-tname span{font-size:10.5px;color:var(--t3);font-family:var(--mono);}

/* 市场标记 —— 全站唯一标准:短码文本(A/US/HK/Crypto/CMDTY)+ 固定配色;.lg 为头部尺寸(样式同源不另起系统) */
.tob-mk{display:inline-block;font-size:9.5px;font-weight:800;padding:1px 5px;border-radius:4px;letter-spacing:.3px;vertical-align:1px;margin-left:6px;}
.tob-mk.lg{font-size:11px;font-weight:700;padding:2px 7px;border-radius:6px;vertical-align:baseline;margin-left:0;}
.tob-mk.A{color:var(--danger);background:#d6453d14;}
.tob-mk.US{color:#2563eb;background:#2563eb14;}
.tob-mk.HK{color:#0d9488;background:#0d948814;}
.tob-mk.KR{color:#8b5cf6;background:#8b5cf614;}
.tob-mk.JP{color:#e8852b;background:#e8852b14;}
.tob-mk.CMDTY{color:#b08d57;background:#b08d5714;}
.tob-mk.Crypto{color:#f7931a;background:#f7931a14;}
.tob-mk.FX{color:#64748b;background:#64748b14;}
.tob-mk.IDX{color:#475569;background:#47556914;}

/* chip / 标签 */
.tob-chip{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;border-radius:7px;padding:3px 9px;}
.tob-chip.blue{color:var(--blue);background:var(--blue-soft);}
.tob-chip.orange{color:#e8852b;background:#e8852b16;}
.tob-chip.green{color:var(--down);background:#15a35a14;}
.tob-chip.red{color:var(--up);background:#f0353b14;}
.tob-chip.gray{color:var(--t2);background:var(--surface-muted);}
.tob-chip.purple{color:#8b5cf6;background:#8b5cf614;}

.tob-pillrow{display:flex;flex-wrap:wrap;gap:7px;}

/* 进度/权重条 */
.tob-bar{height:7px;border-radius:4px;background:var(--line);overflow:hidden;}
.tob-bar i{display:block;height:100%;border-radius:4px;}

/* 分段控件 */
.tob-seg{display:inline-flex;gap:2px;background:var(--line);border-radius:9px;padding:3px;}
.tob-seg button{font-size:12px;font-weight:600;color:var(--t2);padding:5px 12px;border-radius:7px;transition:.12s;}
.tob-seg button.on{background:var(--card);color:var(--t1);font-weight:700;box-shadow:0 1px 4px rgba(20,24,30,.08);}

/* 状态点 */
.tob-state{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;}
.tob-state i{width:8px;height:8px;border-radius:50%;}
.tob-state.ok i{background:var(--down);} .tob-state.ok{color:var(--down);}
.tob-state.watch i{background:#e8852b;} .tob-state.watch{color:#e8852b;}
.tob-state.broken i{background:var(--up);} .tob-state.broken{color:var(--up);}

/* 按钮 */
.tob-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:12.5px;font-weight:700;border-radius:9px;padding:8px 14px;transition:.13s;white-space:nowrap;}
.tob-btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:none;}
.tob-btn:disabled:hover{filter:none;}
.tob-btn.primary{background:var(--blue);color:#fff;box-shadow:0 2px 10px rgba(58,109,240,.26);}
.tob-btn.primary:hover{filter:brightness(1.05);}
.tob-btn.soft{background:var(--blue-soft);color:var(--blue);}
.tob-btn.soft:hover{background:var(--blue-hover);}
.tob-btn.ghost{background:var(--card);color:var(--t1);border:1px solid var(--line2);}
.tob-btn.ghost:hover{border-color:rgba(58,109,240,.4);color:var(--blue);}
.tob-btn.danger{background:var(--card);color:var(--up);border:1px solid var(--danger-line);}
.tob-btn.danger:hover{background:var(--danger-soft);}
.tob-btn svg{width:14px;height:14px;}
.tob-btn.sm{padding:5px 10px;font-size:11.5px;}

/* 真实图表盒（复用 CandleChart） */
.tob-chart-host{height:340px;width:100%;border:1px solid var(--line);border-radius:11px;overflow:hidden;position:relative;background:var(--card);}
.tob-chart-host .cc-canvas{width:100%;height:100%;display:block;}

/* fade-in（仅做轻微上移，绝不动 opacity，避免后台 iframe 暂停在 from 帧） */
.tob-fade{animation:tobFade .3s ease;}
@keyframes tobFade{from{transform:translateY(6px);}to{transform:none;}}

/* ============ 发现新机会 ============ */
/* 智能体入口 hero（顶部对话式发现，与发现新机会合并） */
.tob-dhero{max-width:760px;margin:104px auto 30px;display:flex;flex-direction:column;align-items:center;text-align:center;padding-top:14px;}
.tob-dhero-ic{width:48px;height:48px;border-radius:15px;background:linear-gradient(135deg,#6a90f7,#3a6df0);display:grid;place-items:center;color:#fff;margin-bottom:16px;box-shadow:0 8px 22px rgba(58,109,240,.28);}
.tob-dhero h1{font-size:30px;font-weight:800;letter-spacing:-1px;color:var(--t1);}
/* hero 打字机广告语 */
.tob-dhero-type{min-height:56px;margin:16px 0 10px;display:flex;align-items:center;justify-content:center;font-size:40px;font-weight:800;letter-spacing:-.5px;color:var(--t1);white-space:nowrap;}
.tob-dhero-caret{display:inline-block;width:3px;height:1em;margin-left:6px;border-radius:2px;background:#3a6df0;animation:tob-caret-blink 1s steps(1) infinite;}
.tob-dhero-hl{color:#7a5af8;}
@keyframes tob-caret-blink{0%,60%{opacity:1;}61%,100%{opacity:0;}}
@media (prefers-reduced-motion: reduce){.tob-dhero-caret{animation:none;}}
.tob-dhero p{font-size:14px;color:var(--t2);margin-top:12px;max-width:570px;line-height:1.7;text-wrap:pretty;}
.tob-dcomposer{width:100%;margin-top:24px;background:var(--card);border:1px solid var(--line2);border-radius:20px;box-shadow:0 8px 30px rgba(20,25,35,.07);padding:6px;transition:.18s;position:relative;container:composer/inline-size;;}
.tob-dcomposer:focus-within{border-color:rgba(58,109,240,.5);box-shadow:0 10px 34px rgba(58,109,240,.13);}
.tob-dcomposer textarea{width:100%;border:none;outline:none;resize:none;background:transparent;font-family:var(--sans);font-size:15px;line-height:1.6;color:var(--t1);padding:14px 14px 4px;max-height:160px;transition:height .16s ease;overflow-y:hidden;}
@media (prefers-reduced-motion: reduce){.tob-dcomposer textarea{transition:none;}}
.tob-dcomposer textarea::placeholder{color:var(--t3);}
.tob-dcomposer-input{position:relative;overflow:hidden;}
.tob-dcomposer-input textarea{position:relative;z-index:1;}
.tob-dcomposer-input textarea.tob-composer-rich-input{color:transparent;caret-color:var(--t1);-webkit-text-fill-color:transparent;}
.tob-dcomposer-input textarea.tob-composer-rich-input::placeholder{color:var(--t3);-webkit-text-fill-color:var(--t3);}
.tob-composer-mirror{position:absolute;z-index:0;inset:0;overflow:hidden;padding:2px 2px 4px;font-family:var(--sans);font-size:15px;line-height:26px;color:var(--t1);text-align:left;white-space:pre-wrap;overflow-wrap:break-word;pointer-events:none;}
.tob-composer-mirror-in{will-change:transform;}
.tob-composer-token{color:var(--blue);font-weight:inherit;}
.tob-composer-placeholder{color:var(--t3);font-weight:400;}
.tob-inline-rich-input{color:transparent!important;caret-color:var(--t1);-webkit-text-fill-color:transparent!important;}
.tob-inline-rich-input::placeholder{color:var(--t3)!important;-webkit-text-fill-color:var(--t3)!important;}
/* chip 行伸展动画:grid 0fr→1fr 高度过渡,附加技能/文件时不硬切 */
.tob-chiprow{display:grid;grid-template-rows:0fr;transition:grid-template-rows .18s ease;}
.tob-chiprow.has{grid-template-rows:1fr;}
.tob-chiprow-in{overflow:hidden;min-height:0;display:flex;flex-wrap:wrap;gap:6px;padding-bottom:0;transition:padding-bottom .18s ease;}
.tob-chiprow.has .tob-chiprow-in{padding-bottom:8px;}
@media (prefers-reduced-motion: reduce){.tob-chiprow,.tob-chiprow-in{transition:none;}}
/* 输入框动态例句(占位层):文字层不拦截点击(透传给 textarea),个股 token 可点,换股下拉复用个股页 th-switch 样式 */
.tob-askhint{position:absolute;top:14px;left:14px;right:16px;font-size:15px;line-height:26px;color:var(--t3);pointer-events:none;text-align:left;max-height:52px;overflow:visible;z-index:2;}
.tob-askhint-tip{font-size:12px;color:var(--t3);margin-left:10px;opacity:.7;}
.tob-askhint-tip b{color:var(--blue);font-weight:700;}
.tob-ment{position:absolute;left:-1px;right:-1px;top:100%;z-index:60;text-align:left;background:var(--card);border:1px solid var(--line2);border-top:1px solid var(--line);border-radius:0 0 20px 20px;box-shadow:0 14px 34px rgba(20,25,35,.10);padding:6px;overflow:hidden;animation:tobSugIn .13s ease;}
.tob-ment.up{top:auto;bottom:100%;border-top:1px solid var(--line2);border-bottom:1px solid var(--line);border-radius:16px 16px 0 0;box-shadow:0 -12px 30px rgba(20,25,35,.10);}
.tob-chat-slash-menu{max-height:min(420px,calc(100vh - 180px));overflow-y:auto;overscroll-behavior:contain;}
.tob-ment-tabs{display:flex;align-items:center;gap:4px;margin:1px 4px 5px;padding:3px;border-radius:10px;background:var(--surface-muted);}
.tob-ment-tabs button{display:flex;align-items:center;justify-content:center;gap:6px;flex:1;height:30px;border-radius:8px;font-size:12px;font-weight:700;color:var(--t3);transition:background .12s,color .12s,box-shadow .12s;}
.tob-ment-tabs button.on{background:var(--card);color:var(--t1);box-shadow:0 1px 4px rgba(20,25,35,.08);}
.tob-ment-tabs button span{min-width:17px;padding:1px 5px;border-radius:9px;background:var(--line2);font-size:10px;line-height:14px;color:var(--t3);}
.tob-ment-tabs button.on span{background:var(--blue-soft);color:var(--blue);}
.tob-ment-tabs i{width:1px;height:14px;background:var(--line2);}
.tob-ment-asof{padding:1px 11px 5px;font-size:10.5px;color:var(--t3);}
.tob-ment-row{display:flex;align-items:center;border-radius:10px;transition:background .1s;}
.tob-ment-row.on,.tob-ment-row:hover{background:var(--surface-hover,#f4f6f8);}
.tob-ment-pick{display:flex;align-items:center;gap:10px;min-width:0;flex:1;padding:6px 5px 6px 11px;text-align:left;}
.tob-ment-jump{display:inline-flex;align-items:center;gap:5px;flex-shrink:0;margin-right:7px;padding:5px 8px;border-radius:8px;font-size:11.5px;font-weight:700;color:var(--blue);background:rgba(58,109,240,.09);opacity:0;transition:opacity .12s,background .12s;}
.tob-ment-row.on .tob-ment-jump,.tob-ment-row:hover .tob-ment-jump,.tob-ment-jump:focus-visible{opacity:1;}
.tob-ment-jump:hover{background:rgba(58,109,240,.16);}
.tob-ment-empty{padding:17px 11px 19px;text-align:center;font-size:12.5px;color:var(--t3);}
.tob-ment-empty button{margin-left:8px;color:var(--blue);font-weight:700;}
.tob-ment-empty button:hover{text-decoration:underline;}
.tob-dctools{display:flex;align-items:center;gap:8px;padding:4px 6px 6px;}
/* 主页输入框快捷技能栏(常用技能外挂在工具条上) */
.tob-dskills{display:flex;align-items:center;flex-wrap:wrap;gap:2px;min-width:0;flex:0 1 auto;}
.tob-dskills-div{width:1px;height:18px;background:var(--line2);margin:0 6px 0 2px;flex-shrink:0;}
.tob-dskill{display:flex;align-items:center;gap:6px;height:32px;padding:0 10px;border-radius:9px;font-size:13.5px;font-weight:500;color:var(--t2);white-space:nowrap;flex-shrink:0;transition:.13s;}
.tob-dskill:hover{background:var(--surface-hover);color:var(--t1);}
.tob-dskill.on{background:color-mix(in srgb,var(--blue) 11%,transparent);color:var(--blue);}
.tob-dskill svg{opacity:.72;flex-shrink:0;}
.tob-dskill.on svg{opacity:1;}
@media (max-width:1180px){.tob-dskill{font-size:13px;padding:0 8px;gap:5px;}}
/* 输入框变窄时整颗减胶囊(4→3→2),不换行不裁切 */
@container composer (max-width:700px){.tob-dskills .tob-dskill:nth-child(n+4){display:none;}}
@container composer (max-width:560px){.tob-dskills .tob-dskill:nth-child(n+3){display:none;}}
.tob-dtool{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;color:var(--t2);background:var(--surface-hover);transition:.13s;}
.tob-dtool:hover{background:var(--line);color:var(--t1);}
.tob-dsend{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:var(--blue);color:#fff;transition:.15s;}
.tob-dsend:disabled{background:var(--line2);cursor:default;}
/* 搜索直达个股建议下拉(Workspace 输入框) */
.tob-sug{position:absolute;left:-1px;right:-1px;top:100%;z-index:60;text-align:left;background:var(--card);border:1px solid var(--line2);border-top:1px solid var(--line);border-radius:0 0 20px 20px;box-shadow:0 14px 34px rgba(20,25,35,.10);padding:6px;overflow:hidden;animation:tobSugIn .13s ease;}
/* 开启建议时，输入框与下拉合为一体：去掉输入框底部圆角与底边，两者共用一块边框/阴影 */
.tob-dcomposer:has(.tob-sug){border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-color:transparent;}
.tob-dcomposer:focus-within .tob-sug{border-left-color:rgba(58,109,240,.5);border-right-color:rgba(58,109,240,.5);border-bottom-color:rgba(58,109,240,.5);}
/* 对话页输入框上方弹出的建议面板(同款样式,方向朝上) */
.tob-sug.up{top:auto;bottom:calc(100% + 8px);border:1px solid var(--line2);border-radius:16px;box-shadow:0 -10px 32px rgba(23,32,52,.12);padding:6px;}
@keyframes tobSugIn{from{opacity:0;transform:translateY(-2px);}to{opacity:1;transform:none;}}
.tob-sug-head{display:flex;align-items:center;gap:6px;padding:6px 10px 8px;color:var(--t3);}
/* 问智能体 —— 主操作行 */
.tob-sug-ai{display:flex;align-items:center;gap:10px;width:100%;padding:9px 11px;border-radius:11px;text-align:left;transition:background .1s;}
.tob-sug-ai.on{background:var(--surface-hover,#f4f6f8);}
.tob-sug-ai-ic{flex-shrink:0;width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:rgba(58,109,240,.1);color:var(--blue);}
.tob-sug-ai-main{display:flex;align-items:baseline;gap:8px;min-width:0;flex:1;}
.tob-sug-ai-t{font-size:13.5px;font-weight:700;color:var(--t1);flex-shrink:0;}
.tob-sug-ai-q{font-size:12.5px;color:var(--t3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tob-sug-kbd{flex-shrink:0;font-size:12px;color:var(--t3);border:1px solid var(--line2);border-radius:6px;padding:0 7px;line-height:18px;opacity:0;transition:opacity .12s;}
.tob-sug-ai.on .tob-sug-kbd,.tob-sug-ask.on .tob-sug-kbd{opacity:1;}
/* 问智能体套路提问行 */
.tob-sug-ask{display:flex;align-items:center;gap:10px;width:100%;padding:7px 11px;border-radius:10px;text-align:left;transition:background .1s;}
.tob-sug-ask.on{background:var(--surface-hover,#f4f6f8);}
/* 共用前导图标盒(个股行 + 预设行左边对齐、同一视觉) */
.tob-sug-ic{flex-shrink:0;width:24px;height:24px;border-radius:7px;display:grid;place-items:center;background:rgba(58,109,240,.08);color:var(--blue);}
.tob-sug-ask-t{flex:1;min-width:0;font-size:13px;font-weight:500;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
/* 直达个股分区(与主操作间一条细分隔线) */
.tob-sug-sec{margin-top:6px;}
.tob-sug-lbl{display:flex;align-items:center;gap:6px;font-size:11.5px;font-weight:800;color:var(--t2);letter-spacing:.4px;padding:9px 11px 5px;}
.tob-sug-lbl svg{color:var(--blue);}
.tob-sug-head svg{color:var(--blue);}
.tob-sug-head b{font-size:11.5px;font-weight:800;color:var(--t2);letter-spacing:.2px;}
.tob-sug-row{display:flex;align-items:center;gap:10px;width:100%;padding:6px 11px;border-radius:10px;text-align:left;transition:background .1s;position:relative;}
.tob-sug-row.on{background:var(--surface-hover,#f4f6f8);}
.tob-sug-main{display:flex;align-items:center;gap:8px;min-width:0;flex:1;}
.tob-sug-nm{font-size:13px;font-weight:600;color:var(--t1);display:flex;align-items:center;gap:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;}
.tob-sug-code{font-size:11px;color:var(--t3);letter-spacing:.3px;flex-shrink:0;}
.tob-sug-px{display:flex;align-items:baseline;gap:8px;flex-shrink:0;transition:opacity .12s;}
.tob-sug-row.on .tob-sug-px,.tob-sug-row:hover .tob-sug-px{opacity:0;}
.tob-sug-price{font-size:13px;font-weight:700;color:var(--t1);}
.tob-sug-chg{font-size:11px;font-weight:700;}
.tob-sug-go{position:absolute;right:11px;top:50%;transform:translateY(-50%);width:26px;height:26px;border-radius:8px;display:grid;place-items:center;color:var(--blue);background:rgba(58,109,240,.1);opacity:0;transition:opacity .12s;}
.tob-sug-row.on .tob-sug-go,.tob-sug-row:hover .tob-sug-go{opacity:1;}
/* 为您推荐（继承自智能体的建议卡片） */
.tob-dreco{width:100%;margin-top:24px;text-align:left;}
.tob-dreco-head{display:flex;align-items:center;margin-bottom:12px;}
.tob-dreco-head b{font-size:13px;font-weight:700;color:var(--t1);display:inline-flex;align-items:center;gap:7px;}
.tob-dreco-skbadge{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:700;color:var(--blue);background:var(--blue-soft);border-radius:999px;padding:2px 9px;}
.tob-dreco-refresh{margin-left:auto;display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;color:var(--t2);transition:.13s;}
.tob-dreco-refresh:hover{color:var(--blue);}
.tob-dreco-refresh svg{width:14px;height:14px;}
.tob-dreco-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px;align-items:stretch;}
.tob-dreco-card{text-align:left;background:var(--card);border:1px solid var(--line2);border-radius:13px;padding:15px 16px 13px;display:flex;flex-direction:column;justify-content:space-between;gap:12px;transition:.16s;min-height:96px;overflow:hidden;}
.tob-dreco-card:hover{border-color:rgba(58,109,240,.4);box-shadow:0 8px 22px rgba(20,25,35,.08);transform:translateY(-2px);}
.tob-dreco-ft{display:flex;align-items:center;gap:6px;min-width:0;}
.tob-dreco-ft svg{width:13px;height:13px;flex-shrink:0;}
.tob-dreco-ftt{font-style:normal;font-family:var(--mono);font-size:10.5px;letter-spacing:.2px;line-height:1.4;font-weight:600;color:var(--t3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:.16s;}
.tob-dreco-card:hover .tob-dreco-ftt{color:var(--t2);}
.tob-dreco-t{font-size:13.5px;line-height:1.4;color:var(--t1);font-weight:700;letter-spacing:-.2px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.tob-dreco-d{font-size:11px;line-height:1.5;color:var(--t2);text-wrap:pretty;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
@media(max-width:920px){.tob-dreco-grid{grid-template-columns:repeat(2,1fr);}}

.tob-dpills{display:flex;flex-wrap:wrap;justify-content:center;gap:9px;margin-top:20px;}
.tob-dpill{display:inline-flex;align-items:center;gap:7px;height:36px;padding:0 15px;border-radius:19px;font-size:12.5px;font-weight:600;color:var(--t1);background:var(--card);border:1px solid var(--line2);transition:.14s;}
.tob-dpill:hover{border-color:rgba(58,109,240,.45);color:var(--blue);background:var(--blue-soft);}
.tob-dpill svg{width:14px;height:14px;color:var(--t2);}
.tob-dpill:hover svg{color:var(--blue);}
.tob-dhint{display:inline-flex;align-items:center;gap:6px;margin-top:26px;font-size:11.5px;font-weight:600;color:var(--t3);}
.tob-dhint svg{width:14px;height:14px;animation:tobBob 1.8s ease-in-out infinite;}
@keyframes tobBob{0%,100%{transform:translateY(0);}50%{transform:translateY(3px);}}

.tob-opp{display:flex;gap:13px;padding:14px 4px;border-bottom:1px solid var(--line);transition:.12s;cursor:pointer;}
.tob-opp:hover{background:var(--surface-sunken);}
.tob-opp:last-child{border-bottom:none;}
.tob-opp-score{flex-shrink:0;width:50px;height:50px;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;color:#fff;}
.tob-opp-score b{font-size:19px;font-weight:800;font-family:var(--mono);line-height:1;}
.tob-opp-score span{font-size:8.5px;font-weight:700;opacity:.85;letter-spacing:.5px;}
.tob-opp-body{flex:1;min-width:0;}
.tob-opp-top{display:flex;align-items:center;gap:8px;margin-bottom:3px;flex-wrap:wrap;}
.tob-opp-name{font-size:14px;font-weight:800;color:var(--t1);}
.tob-opp-px{font-size:12px;font-family:var(--mono);font-weight:700;color:var(--t2);}
.tob-opp-signal{font-size:12px;font-weight:700;color:var(--blue);margin-bottom:5px;}
.tob-opp-reason{font-size:12px;line-height:1.6;color:var(--t2);text-wrap:pretty;margin-bottom:7px;}
.tob-opp-act{flex-shrink:0;display:flex;flex-direction:column;gap:7px;align-items:flex-end;justify-content:center;}
.tob-opp-go{display:inline-flex;align-items:center;gap:3px;font-size:11.5px;font-weight:700;color:var(--blue);opacity:0;transform:translateX(-4px);transition:.14s;}
.tob-opp:hover .tob-opp-go{opacity:1;transform:none;}

/* 机会清单：信息流卡片网格（复用 .card + covers.jsx 的 Cover 封面） */
.tob-oppgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;}
/* 为你推荐：1~5 列响应式 masonry。列数由容器 ResizeObserver 决定，卡片轮询稳定分配。 */
.tob-feed-masonry{display:flex;gap:16px;align-items:flex-start;}
.tob-feed-mcol{flex:1;min-width:0;display:flex;flex-direction:column;gap:16px;}
.tob-feed-masonry > *{min-width:0;margin:0;}
.tob-reco-head{flex-wrap:wrap;}
.tob-reco-search{width:220px;height:32px;display:flex;align-items:center;gap:7px;padding:0 8px 0 10px;border:1px solid var(--line2);border-radius:9px;background:var(--card);color:var(--t3);transition:.13s;}
.tob-reco-search:focus-within{border-color:rgba(58,109,240,.5);box-shadow:0 0 0 3px var(--blue-soft);}
.tob-reco-search svg{flex:none;}
.tob-reco-search input{flex:1;min-width:0;border:0;outline:0;background:transparent;color:var(--t1);font:12px var(--sans);}
.tob-reco-search input::placeholder{color:var(--t3);}
.tob-reco-search button{width:20px;height:20px;display:grid;place-items:center;border-radius:6px;color:var(--t3);font-size:16px;line-height:1;}
.tob-reco-search button:hover{background:var(--surface-hover);color:var(--t1);}
.tob-reco-count{font-size:11px;color:var(--t3);white-space:nowrap;}
.tob-feed-more{min-height:64px;display:flex;align-items:center;justify-content:center;gap:8px;color:var(--t3);font-size:12px;}
.tob-feed-more i{width:14px;height:14px;border:2px solid var(--line2);border-top-color:var(--blue);border-radius:50%;opacity:.55;}
.tob-feed-more i.spinning{opacity:1;animation:tobFeedSpin .7s linear infinite;}
@keyframes tobFeedSpin{to{transform:rotate(360deg);}}
.tob-feed-end{min-height:64px;display:flex;align-items:center;justify-content:center;gap:10px;color:var(--t3);font-size:12px;}
.tob-feed-end::before,.tob-feed-end::after{content:"";width:min(92px,14vw);height:1px;background:var(--line);}
.tob-feed-end.error{color:var(--t2);}
.tob-feed-end.error button{border:0;background:none;color:var(--blue);font:inherit;font-weight:700;cursor:pointer;padding:4px 2px;}
.tob-feed-end.error button:disabled{opacity:.55;cursor:default;}
/* 为你推荐空态:无扫描到的机会时给出说明,不留大片空白 */
.tob-feed-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:40px 16px;text-align:center;color:var(--t3);}
.tob-feed-empty p{margin:2px 0 0;font-size:14px;font-weight:600;color:var(--t2);}
.tob-feed-empty span{font-size:12px;color:var(--t3);}
@media(max-width:900px){
  .tob-reco-head .sp{display:none;}
  .tob-reco-search{flex:1;width:auto;min-width:180px;}
  .tob-feed-masonry{gap:10px;}
}
.tob-oppcard{display:flex;flex-direction:column;border:1px solid var(--line);}
.tob-oppcard-cover{position:relative;}
.tob-oppcard-badges{position:absolute;top:10px;right:10px;z-index:3;display:flex;gap:6px;}
.tob-oppcard-badges .tob-chip{box-shadow:0 2px 8px rgba(20,25,35,.12);}
.tob-oppcard-body{padding:13px 14px 14px;display:flex;flex-direction:column;gap:6px;flex:1;}
.tob-oppcard-top{display:flex;align-items:center;gap:6px;}

/* 交易工作台详情页（复用 trading.jsx）：预判板入场动画在离屏渲染时可能停在首帧（opacity:0），确保始终可见 */
.trade-layer .ac-picker{animation:none;opacity:1;}
/* 详情页唤醒后不遮挡左侧栏：覆盖层从侧栏右缘开始，侧栏保持唤醒前状态（含折叠态自适应） */
.tob .trade-layer{left:236px;transition:left .18s ease;}
.tob.collapsed .trade-layer{left:68px;}

/* ============ 个股整合详情页：K线行情 / 产业链上下游 / 未来推演 三视图切换（一个整体页面） ============ */
/* watchlist 页预览未入清单标的：顶栏「未加入」标注（点击加入） */
.stkd-notin{display:inline-flex;align-items:center;height:26px;padding:0 11px;margin-left:-2px;border-radius:999px;border:1px dashed rgba(58,109,240,.45);color:var(--blue);background:var(--blue-soft);font-size:12px;font-weight:700;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:.13s;}
.stkd-notin:hover{border-style:solid;background:var(--blue);color:#fff;}
/* 已关注:刻意不起眼(灰字无底),hover 才现边界;点一下进入「确认移除?」警示态,3s 未确认回退 */
.stkd-inwl{display:inline-flex;align-items:center;gap:4px;height:26px;padding:0 9px;margin-left:-2px;border-radius:999px;border:1px solid var(--line2);color:var(--t3);font-size:11.5px;font-weight:600;background:transparent;transition:.12s;}
.stkd-inwl:hover{border-color:var(--line3,#c6ccd8);color:var(--t2);}
.stkd-inwl .stkd-inwl-ck{display:inline-flex;align-items:center;color:var(--t3);}
.stkd-inwl .stkd-inwl-x{display:none;font-size:13px;line-height:1;opacity:.7;}
.stkd-inwl:hover .stkd-inwl-ck{display:none;}
.stkd-inwl:hover .stkd-inwl-x{display:inline;}
.stkd-inwl.ask{border-color:rgba(240,53,59,.45);color:var(--danger,#f0353b);background:rgba(240,53,59,.06);font-weight:700;}
.stkd-layer{display:flex;flex-direction:column;}
.stkd-bar{flex-shrink:0;display:flex;align-items:center;gap:14px;padding:9px 18px;background:var(--card);border-bottom:1px solid var(--line2);position:relative;z-index:40;}
.stkd-back{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;flex-shrink:0;width:34px;height:34px;font-size:0;color:var(--t2);padding:0;border-radius:9px;border:none;background:transparent;cursor:pointer;}
.stkd-back svg{width:22px;height:22px;}
.stkd-back:hover{color:var(--blue);background:var(--surface-hover);}
.stkd-tabs{position:relative;display:inline-flex;gap:10px;background:transparent;border-radius:0;padding:0;flex-shrink:0;margin-left:auto;}
.stkd-tab{position:relative;z-index:1;display:inline-flex;align-items:center;font-size:13px;font-weight:600;color:var(--t2);padding:7px 6px;border-radius:0;transition:color .18s ease;white-space:nowrap;border:none;background:transparent;cursor:pointer;font-family:inherit;}
.stkd-tab:hover{color:var(--t1);background:transparent;}
.stkd-tab.on{color:var(--t1);font-weight:800;background:transparent;}
.stkd-tab-ind{display:block;position:absolute;top:auto;bottom:-6px;left:0;height:3px;background:transparent;border-radius:0;box-shadow:none;z-index:0;pointer-events:none;transition:transform .28s cubic-bezier(.4,0,.2,1),width .28s cubic-bezier(.4,0,.2,1);}
.stkd-tab-ind::after{content:"";position:absolute;left:50%;transform:translateX(-50%);top:0;width:26px;height:3px;border-radius:2px;background:var(--t1);}
.stkd-onlytab{font-size:14px;font-weight:800;letter-spacing:-.3px;color:var(--t1);}
.stkd-crumbwrap{flex:1;min-width:0;display:flex;align-items:center;overflow-x:auto;scrollbar-width:none;}
.stkd-crumbwrap::-webkit-scrollbar{display:none;}
.stkd-bar .crumbs{display:flex;align-items:center;flex-wrap:nowrap;min-width:0;margin:0;}
.stkd-bar .crumb,.stkd-bar .crumb-wrap{white-space:nowrap;flex-shrink:0;}
/* 面包屑占位级（产业/环节暂未归类） */
.crumb.crumb-ph{color:var(--t4);cursor:default;border:1px dashed var(--line2);background:transparent;}
.crumb.crumb-ph:hover{color:var(--t4);background:transparent;}
.crumb.crumb-ph em{color:#d4d8dd;}
.stkd-tabsbar{flex-shrink:0;display:flex;align-items:center;padding:8px 18px;background:var(--card);border-bottom:1px solid var(--line2);}
.stkd-stage{flex:1;min-height:0;position:relative;display:flex;flex-direction:column;}
.stkd-stage .trade{height:100%;}
.stkd-stage .cc-app{height:100%;min-height:0;}
/* 顶部合并为一行：返回 + 个股身份/价格/图标 + 视图标签（同一行） */
.stkd-bar .th{height:auto;padding:0;border:0;background:transparent;gap:12px;flex-shrink:1;min-width:0;}
.stkd-bar .th-name,.stkd-bar .th-asset,.stkd-bar .th-price{white-space:nowrap;flex-shrink:0;}
.stkd-bar .th-back{display:none!important;}
.stkd-stage .th{display:none!important;}
.stkd-stage .th-back,.stkd-stage .cc-back{display:none!important;}
.stkd-stage .crumbs{display:none!important;}

/* 个股级：左主内容 + 常驻右栏（决策卡 + Agent 对话，切 tab 不变、跟随标的） */
.stkd-body{flex:1;min-height:0;display:flex;}
.stkd-main{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;position:relative;overflow:hidden;}
.stkd-main .trade{height:100%;}
.stkd-main .trade-main{flex:1;min-height:0;}
.stkd-side{flex-shrink:0;}
@media(max-width:1100px){ .stkd-side{width:360px;} }

/* 舆情分析视图 */
.snt{flex:1;min-height:0;display:flex;flex-direction:column;background:var(--bg);}
.snt-scroll{flex:1;min-height:0;overflow-y:auto;padding:18px 20px 32px;}
.snt-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;}
.snt-card{background:var(--card);border:1px solid var(--line2);border-radius:14px;padding:16px 17px;box-shadow:0 1px 3px rgba(20,25,35,.05);}
.snt-card-h{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:14px;}
.snt-card-t{font-size:14px;font-weight:800;color:var(--t1);}
.snt-card-sub{font-size:11.5px;color:var(--t3);font-weight:600;}
.snt-tl-card{margin-top:16px;}
/* 仪表 */
.snt-gauge{position:relative;display:flex;justify-content:center;}
.snt-gauge-c{position:absolute;bottom:2px;left:0;right:0;display:flex;flex-direction:column;align-items:center;gap:1px;}
.snt-gauge-n{font-size:34px;font-weight:800;line-height:1;}
.snt-gauge-l{font-size:12.5px;font-weight:800;}
.snt-gauge-foot{display:flex;align-items:center;justify-content:space-between;margin-top:10px;font-size:12px;color:var(--t2);}
.snt-gauge-scale{display:flex;gap:12px;}
.snt-gauge-scale i{font-style:normal;font-size:10px;color:var(--t3);}
/* 多空声量 */
.snt-bb-bar{display:flex;height:30px;border-radius:8px;overflow:hidden;gap:2px;}
.snt-bb-seg{display:grid;place-items:center;font-size:11.5px;font-weight:800;color:#fff;white-space:nowrap;transition:width .3s;}
.snt-bb-legend{display:flex;gap:16px;margin-top:11px;}
.snt-bb-legend span{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--t2);font-weight:600;}
.snt-bb-legend i{width:9px;height:9px;border-radius:3px;}
.snt-note{margin-top:11px;font-size:12px;line-height:1.6;color:var(--t2);text-wrap:pretty;}
/* 评级分布 */
.snt-rat{display:flex;flex-direction:column;gap:8px;}
.snt-rat-row{display:flex;align-items:center;gap:10px;}
.snt-rat-k{flex-shrink:0;width:30px;font-size:12px;font-weight:700;color:var(--t2);}
.snt-rat-track{flex:1;height:9px;border-radius:5px;background:var(--surface-muted);overflow:hidden;}
.snt-rat-track i{display:block;height:100%;border-radius:5px;transition:width .3s;}
.snt-rat-v{flex-shrink:0;width:20px;text-align:right;font-size:12px;font-weight:700;color:var(--t1);}
.snt-rat-foot{display:flex;gap:10px;margin-top:13px;padding-top:13px;border-top:1px solid var(--line2);}
.snt-rat-foot div{flex:1;display:flex;flex-direction:column;gap:3px;}
.snt-rat-foot span{font-size:11px;color:var(--t3);font-weight:600;}
.snt-rat-foot b{font-size:17px;font-weight:800;}
/* 声量趋势 + 来源 */
.snt-spark{display:flex;align-items:flex-end;gap:3px;height:58px;}
.snt-spark i{flex:1;border-radius:3px 3px 0 0;min-height:3px;transition:height .3s;}
.snt-spark-x{display:flex;justify-content:space-between;margin:6px 0 13px;font-size:10.5px;color:var(--t3);}
.snt-src{display:flex;flex-direction:column;gap:8px;padding-top:13px;border-top:1px solid var(--line2);}
.snt-src-row{display:flex;align-items:center;gap:10px;}
.snt-src-k{flex-shrink:0;width:78px;font-size:11.5px;font-weight:600;color:var(--t2);}
.snt-src-track{flex:1;height:8px;border-radius:4px;background:var(--surface-muted);overflow:hidden;}
.snt-src-track i{display:block;height:100%;border-radius:4px;background:var(--blue);transition:width .3s;}
.snt-src-v{flex-shrink:0;width:18px;text-align:right;font-size:12px;font-weight:700;color:var(--t1);}
/* 舆情时间线 */
.snt-tl{display:flex;flex-direction:column;}
.snt-tl-row{display:flex;gap:12px;}
.snt-tl-date{flex-shrink:0;width:44px;font-size:11px;color:var(--t3);padding-top:1px;text-align:right;}
.snt-tl-rail{flex-shrink:0;width:14px;display:flex;flex-direction:column;align-items:center;}
.snt-tl-rail i{width:9px;height:9px;border-radius:50%;margin-top:4px;z-index:1;}
.snt-tl-rail::after{content:"";flex:1;width:2px;background:var(--line2);margin-top:-3px;}
.snt-tl-row:last-child .snt-tl-rail::after{display:none;}
.snt-tl-body{flex:1;min-width:0;padding-bottom:16px;}
.snt-tl-t{font-size:13px;font-weight:700;color:var(--t1);line-height:1.5;text-wrap:pretty;}
.snt-tl-tag{display:inline-block;font-size:10px;font-weight:800;padding:1px 6px;border-radius:5px;margin-right:7px;vertical-align:1px;}
.snt-tl-d{margin-top:4px;font-size:12px;line-height:1.55;color:var(--t2);text-wrap:pretty;}
.snt-tl-src{display:inline-block;margin-top:5px;font-size:10.5px;color:var(--t3);font-weight:600;}
@media(max-width:1240px){ .snt-grid{grid-template-columns:1fr;} }

/* 一页纸：内嵌到中间核心区域（替代原侧边滑出面板） */
.op1-embed-wrap{flex:1;min-height:0;overflow-y:auto;background:var(--bg);padding:24px 24px 40px;display:flex;justify-content:center;align-items:flex-start;}
.op1-embed{width:100%;max-width:680px;height:max-content;background:var(--card);border:1px solid var(--line2);border-radius:14px;box-shadow:0 1px 3px rgba(20,25,35,.08);animation:cardIn .28s;}
.op1-embed .op1-body{flex:none;overflow:visible;}
.op1-embed .op1-head{padding:20px 24px 0;}
.op1-embed .op1-metrics{grid-template-columns:repeat(3,1fr);}
.stkd-geo .th-row-crumbs{display:none!important;}
.stkd-stage .th-center{display:none!important;}
.stkd-stage .th-name,.stkd-stage .cid-name,.stkd-stage .th-asset{white-space:nowrap;}
/* 个股头部操作组：图标按钮，紧跟在涨跌幅之后 */
.th .th-rgt{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.th .th-rgt .th-1pager,.th .th-rgt .th-watch,.th .th-rgt .th-actions{margin-left:0;}
.th .th-rgt .th-paper{display:inline-flex;align-items:center;gap:6px;}
.th .th-rgt .th-1pager-ic{padding:8px;gap:0;width:34px;height:34px;justify-content:center;border:none;border-radius:9px;color:var(--t2);background:transparent;}
.th .th-rgt .th-1pager-ic:hover{border:none;color:var(--blue);background:var(--blue-soft);}
.th .th-rgt .th-1pager-ic.on{color:#e8852b;background:rgba(232,133,43,.12);}
.th .th-rgt .th-1pager-ic.on:hover{color:#e8852b;background:rgba(232,133,43,.2);}
/* 决策卡：交易按钮与「加入选股单」等大（单行、等宽） */
.dc-act .dc-btn-agent{flex:1;}
/* 视图存在但暂无数据时的占位（入口一致性） */
.stkd-empty{flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px 24px;gap:11px;background:var(--bg);animation:pop .2s ease;}
.stkd-empty-ic{width:64px;height:64px;border-radius:16px;display:flex;align-items:center;justify-content:center;color:var(--t3);background:var(--card);border:1px solid var(--line2);box-shadow:0 1px 4px rgba(20,24,30,.05);}
.stkd-empty-t{font-size:17px;font-weight:800;color:var(--t1);letter-spacing:-.3px;}
.stkd-empty-d{font-size:13px;line-height:1.6;color:var(--t2);max-width:380px;text-wrap:pretty;}
.stkd-empty-badge{margin-top:4px;font-size:11px;font-weight:700;color:var(--t2);background:var(--line);border-radius:20px;padding:5px 12px;letter-spacing:.3px;}

/* ============ 对话式发现（Claude 式聊天 + 内联信息流卡片） ============ */
.tob-chat{margin:-22px -24px -60px;height:calc(100% + 82px);display:flex;flex-direction:row;min-height:0;background:var(--bg);}
.tob-chat-main{flex:1;min-width:0;display:flex;flex-direction:column;min-height:0;position:relative;}
/* ===== 对话页右栏「今日市场」：安静侧栏,纯看+引用 ===== */
.tob-mrail{flex-shrink:0;width:360px;display:flex;flex-direction:column;min-height:0;background:var(--bg);position:relative;padding:10px;}
@media (max-width:1460px){.tob-mrail{width:320px;}}
/* 只含行情的栏更窄(紧凑行情行不需要 360);仍可拖拽 grip 覆盖 */
.tob-mrail.rail-narrow{width:288px;}
@media (max-width:1460px){.tob-mrail.rail-narrow{width:264px;}}
/* 栏宽拖拽 grip:贴在栏与对话交界处,悬停显蓝线 */
.tob-mrail-wgrip{position:absolute;top:0;bottom:0;right:-3px;width:7px;cursor:col-resize;z-index:12;}
.tob-mrail-wgrip.left{right:auto;left:-3px;}
.tob-mrail-wgrip::after{content:"";position:absolute;top:0;bottom:0;left:3px;width:1px;background:transparent;transition:.12s;}
.tob-mrail-wgrip:hover::after,.tob-mrail-wgrip:active::after{width:3px;left:2px;border-radius:2px;background:rgba(58,109,240,.45);}
/* —— 模块自由停靠:左栏(order:-1 排到对话最左) + 整块拖拽 + 落点提示 —— */
.tob-lrail{order:-1;}
/* 行情 / 快讯 → 两张独立卡片(灰底栏 + 白卡片+细边+轻投影),边界清晰 */
.tob-mrail-watch,.tob-mrail-flashwrap,.tob-mrail-calwrap,.tob-mrail-signalwrap,.tob-mrail-forkwrap{position:relative;border:1px solid var(--line2);border-radius:14px;background:var(--card);box-shadow:0 1px 3px rgba(20,25,35,.05);overflow:hidden;}
.tob-mwl-head,.tob-mrail-gtflash,.tob-mrail-calwrap .tob-mrail-gt,.tob-mrail-gtsignal,.tob-mrail-gtfork{cursor:grab;}
/* 拖拽中的模块:整块跟手(transform 由 JS rAF 直写),抬起、加影、不吃指针 */
.mrail-sec-dragging{z-index:40;opacity:.92;box-shadow:0 18px 44px rgba(20,25,35,.22);border-radius:12px;background:var(--card);pointer-events:none;will-change:transform;}
/* 拖拽落点提示:虚线蓝框铺在预留槽位(无文字),槽位变化时平滑移动 */
.mrail-drophint{position:fixed;z-index:35;border:2px dashed rgba(58,109,240,.55);background:rgba(58,109,240,.07);border-radius:14px;pointer-events:none;box-sizing:border-box;transition:left .18s ease,top .18s ease,width .18s ease,height .18s ease;animation:mrailHintIn .16s ease;}
@keyframes mrailHintIn{from{opacity:0;}to{opacity:1;}}
body.mrail-dragging{user-select:none;}
body.mrail-dragging *{cursor:grabbing!important;}
/* 换栏落位后的轻淡入(重挂载触发);拖拽期间禁掉,避免实时重排时闪烁 */
.tob-mrail-watch,.tob-mrail-flashwrap,.tob-mrail-calwrap,.tob-mrail-signalwrap,.tob-mrail-forkwrap{animation:mrailSecIn .22s ease;}
body.mrail-dragging .tob-mrail-watch,body.mrail-dragging .tob-mrail-flashwrap,body.mrail-dragging .tob-mrail-calwrap,body.mrail-dragging .tob-mrail-signalwrap,body.mrail-dragging .tob-mrail-forkwrap{animation:none;}
@keyframes mrailSecIn{from{opacity:.35;transform:scale(.985);}to{opacity:1;transform:none;}}
.tob-mrail-head{flex-shrink:0;display:flex;align-items:baseline;gap:7px;padding:13px 14px 9px;}
.tob-mrail-head b{font-size:13px;font-weight:800;color:var(--t1);}
.tob-mrail-head em{flex:1;font-style:normal;font-size:10.5px;color:var(--t3);}
.tob-mrail-x{flex-shrink:0;width:22px;height:22px;border-radius:6px;display:grid;place-items:center;color:var(--t3);align-self:center;transition:.12s;}
.tob-mrail-x:hover{background:var(--surface-hover);color:var(--t1);}
.tob-mrail-scroll{flex:1;min-height:0;overflow-y:auto;padding:0 10px 16px;}
/* 右栏上半:轻量自选(留半屏),下半快讯各自滚动 */
.tob-mrail-watch{flex:0 0 40%;display:flex;flex-direction:column;min-height:0;padding:0 10px 4px;}
.tob-mrail-watch.full{flex:1;}
/* 行情/快讯拖拽分割线:两卡片间的间隙,悬停才现蓝把手(提示可拖高) */
.tob-mrail-splitter{flex-shrink:0;height:10px;cursor:row-resize;position:relative;}
.tob-mrail-splitter::after{content:"";position:absolute;left:20px;right:20px;top:4px;height:2px;background:transparent;border-radius:2px;transition:.12s;}
.tob-mrail-splitter:hover::after,.tob-mrail-splitter:active::after{background:rgba(58,109,240,.5);}
.tob-mrail-splitter.static{cursor:default;height:7px;}
.tob-mrail-splitter.static::after{display:none;}
/* 右栏内容设置:⋯ 内嵌在当前栏第一张卡的标题行里(不占独立行、不悬浮遮挡),按卡片类型微调对齐 */
.tob-mrail-cfgbtn{flex-shrink:0;width:24px;height:20px;border-radius:6px;display:grid;place-items:center;color:var(--t3);transition:.12s;}
.tob-mwl-head .tob-mrail-cfgbtn{align-self:center;}
.tob-mrail-gtflash .tob-mrail-cfgbtn{margin-left:auto;}
.tob-mrail-gtcal .tob-cal-hr{margin-left:auto;}
.tob-mrail-gtcal .tob-mrail-cfgbtn{order:3;}
.tob-mrail-cfgbtn:hover{background:var(--surface-hover);color:var(--t1);}
.tob-mrail-cfgscrim{position:fixed;inset:0;z-index:9;}
.tob-mrail-cfgmenu{position:absolute;top:44px;right:14px;z-index:10;min-width:150px;background:var(--card);border:1px solid var(--line2);border-radius:11px;box-shadow:0 14px 40px rgba(20,25,35,.16);padding:5px;animation:mrailPillIn .12s ease;}
.tob-mrail-cfgmenu button{display:flex;align-items:center;gap:7px;width:100%;text-align:left;font-size:12.5px;font-weight:600;color:var(--t1);padding:7px 10px;border-radius:8px;transition:.1s;}
.tob-mrail-cfgmenu button:hover{background:var(--surface-hover);}
.tob-mrail-cfgmenu .ck{flex-shrink:0;width:14px;color:var(--blue);font-weight:800;}
.tob-mrail-cfghr{height:1px;background:var(--line);margin:4px 6px;}
/* 快讯条目右键菜单(引用 / 详细),固定在光标处 */
.tob-mrail-ctxmenu{position:fixed;z-index:60;min-width:132px;background:var(--card);border:1px solid var(--line2);border-radius:11px;box-shadow:0 14px 40px rgba(20,25,35,.18);padding:5px;display:flex;flex-direction:column;gap:1px;animation:ctxPop .12s ease;transform-origin:top left;}
@keyframes ctxPop{from{opacity:0;transform:scale(.96);}to{opacity:1;transform:none;}}
.tob-mrail-ctxmenu button{display:flex;align-items:center;gap:9px;width:100%;text-align:left;font-size:13px;font-weight:600;color:var(--t1);padding:8px 11px;border-radius:8px;transition:.1s;background:transparent;border:none;cursor:pointer;}
.tob-mrail-ctxmenu button:hover{background:var(--surface-hover);}
.tob-mrail-ctxmenu button svg{flex-shrink:0;color:var(--t3);}
.tob-mrail-ctxmenu button:hover svg{color:var(--blue);}
.tob-mrail-gt.tob-mwl-head{display:flex;align-items:baseline;justify-content:space-between;flex-shrink:0;}   /* ⋯ 已移出卡片,无需再留 26px */
.tob-mwl-list{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding:2px 3px 4px 2px;}
/* 行情行对齐 Watchlist 卡片样式(复用 .wl-row):窄栏里略收内距,行不可收缩 */
.tob-mwl-row2{flex-shrink:0;padding:8px 11px;}
.tob-mwl-row2 .wl-row-meta.mono{font-weight:500;color:var(--t3);letter-spacing:.2px;}
.tob-mwl-cap{font-size:10.5px;font-weight:800;letter-spacing:.4px;color:var(--t3);padding:7px 4px 3px;}
/* 行情栏 持仓/关注 分段:复刻 .tob-seg 视觉 + 滑块动画(滑块为 React 受控元素,不向流式子树注入 DOM,避免 removeChild 崩溃) */
.tob-mwl-seg{position:relative;display:flex;gap:2px;background:var(--line);border-radius:9px;padding:3px;margin:2px 2px 8px;}
.tob-mwl-seg-ind{position:absolute;top:3px;bottom:3px;left:3px;width:calc(50% - 4px);border-radius:7px;background:var(--card);box-shadow:0 1px 4px rgba(20,24,30,.08);transition:transform .2s cubic-bezier(.4,0,.2,1);pointer-events:none;}
.tob-mwl-seg button{position:relative;z-index:1;flex:1;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:var(--t2);padding:5px 12px;border-radius:7px;transition:color .16s;}
.tob-mwl-seg button.on{color:var(--t1);font-weight:700;}
.tob-mwl-seg button:not(.on):hover{color:var(--t1);}
/* 行情内筛选框——对齐 Watchlist .wl-add:白底+细边+圆角,聚焦蓝描边+光晕 */
.tob-mwl-search{position:relative;display:flex;align-items:center;gap:6px;height:34px;margin:0 2px 8px;padding:0 9px 0 11px;border-radius:9px;border:1px solid var(--line2);background:var(--card);color:var(--t3);transition:.13s;flex-shrink:0;}
.tob-mwl-search:focus-within{border-color:rgba(58,109,240,.5);box-shadow:0 0 0 3px var(--blue-soft);}
.tob-mwl-search svg{flex-shrink:0;}
.tob-mwl-search input{flex:1;min-width:0;border:none;background:none;outline:none;font-size:12.5px;font-weight:400;color:var(--t1);font-family:var(--sans);}
.tob-mwl-search input::placeholder{color:var(--t3);font-weight:400;}
.tob-mwl-clr{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:5px;color:var(--t3);transition:.12s;}
.tob-mwl-clr:hover{background:var(--line2);color:var(--t1);}
.tob-mwl-tabempty{padding:26px 8px;text-align:center;font-size:12px;color:var(--t3);}
.tob-mwl-row{display:flex;align-items:center;justify-content:space-between;gap:10px;height:34px;min-height:34px;flex-shrink:0;padding:0 6px;border-radius:8px;text-align:left;transition:background .1s;}
.tob-mwl-row:hover{background:var(--surface-hover);}
.tob-mwl-main{display:flex;align-items:baseline;gap:7px;min-width:0;}
.tob-mwl-main b{font-size:13.5px;font-weight:700;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tob-mwl-main span{font-size:11.5px;color:var(--t3);letter-spacing:.3px;flex-shrink:0;}
.tob-mwl-px{display:flex;align-items:baseline;gap:8px;flex-shrink:0;}
.tob-mwl-price{font-size:13.5px;font-weight:700;color:var(--t1);}
.tob-mwl-chg{font-size:12.5px;font-weight:700;min-width:52px;text-align:right;}
.tob-mwl-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:18px 0 14px;font-size:12px;color:var(--t3);}
.tob-mwl-empty button{font-size:12px;font-weight:700;color:var(--blue);padding:5px 12px;border-radius:8px;background:var(--blue-soft);transition:.12s;}
.tob-mwl-empty button:hover{background:rgba(58,109,240,.16);}
.tob-mrail-gt{font-size:16px;font-weight:800;letter-spacing:-.2px;color:var(--t1);padding:14px 4px 8px;}
/* AI 信号：与行情 / 快讯 / 日历 / 快捷方式同级；数据层可由快照或实时事件刷新。 */
.tob-mrail-signalwrap{display:flex;min-height:0;flex-direction:column;}
.tob-mrail-signalwrap>.tob-mrail-scroll{padding-bottom:10px;}
.tob-mrail-gtsignal{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-right:4px;}
.tob-mrail-gtsignal{cursor:grab;user-select:none;}
.tob-mrail-gtsignal:active{cursor:grabbing;}
.tob-mrail-gtsignal>span{display:flex;align-items:center;gap:7px;}
.tob-mrail-gtsignal>span>svg{color:var(--blue);}
.tob-mrail-gtsignal>button{display:grid;width:24px;height:24px;flex:none;place-items:center;border-radius:7px;color:var(--t3);cursor:pointer;transition:.12s;}
.tob-mrail-gtsignal>button:hover{color:var(--blue);background:var(--blue-soft);}
.tob-mrail-gtsignal>button.refreshing{color:var(--blue);}
.tob-mrail-gtsignal>button.refreshing svg{animation:tobSignalRefresh .7s linear infinite;}
@keyframes tobSignalRefresh{to{transform:rotate(360deg);}}
.tob-mrail-signal-symbol{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:9px;padding:0 4px 8px;border-bottom:1px solid var(--line);}
.tob-mrail-signal-symbol>span{display:flex;min-width:0;align-items:baseline;gap:7px;}
.tob-mrail-signal-symbol b{overflow:hidden;color:var(--t1);font-size:12.5px;text-overflow:ellipsis;white-space:nowrap;}
.tob-mrail-signal-symbol code{flex:none;color:var(--t3);font:9.5px/1.4 var(--mono);}
.tob-mrail-signal-symbol em{overflow:hidden;flex:none;max-width:34%;color:var(--blue);font-size:10px;font-style:normal;font-weight:750;text-overflow:ellipsis;white-space:nowrap;}
.tob-mrail-signal-groups{display:flex;flex-direction:column;gap:10px;padding:8px 0 2px;}
.tob-mrail-signal-group{display:flex;min-width:0;flex-direction:column;gap:6px;}
.tob-mrail-signal-grouphead{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:8px;padding:0 2px;}
.tob-mrail-signal-grouptoggle{display:flex;min-width:0;align-items:center;gap:5px;color:var(--t1);cursor:pointer;text-align:left;}
.tob-mrail-signal-grouptoggle>span{display:grid;width:13px;height:13px;flex:none;place-items:center;color:var(--t3);font-size:16px;line-height:1;transform:rotate(90deg);transition:transform .12s;}
.tob-mrail-signal-group.is-collapsed .tob-mrail-signal-grouptoggle>span{transform:rotate(0deg);}
.tob-mrail-signal-grouptoggle>strong{overflow:hidden;font-size:11.5px;font-weight:800;text-overflow:ellipsis;white-space:nowrap;}
.tob-mrail-signal-grouptoggle>small{display:grid;min-width:17px;height:17px;padding:0 5px;place-items:center;border-radius:999px;background:var(--surface-sunken);color:var(--t3);font:9px/1 var(--mono);}
.tob-mrail-signal-groupmore{flex:none;padding:3px 5px;border-radius:6px;color:var(--blue);font-size:9.5px;font-weight:750;cursor:pointer;}
.tob-mrail-signal-groupmore:hover{background:var(--blue-soft);}
.tob-mrail-signal-list{display:flex;flex-direction:column;gap:7px;}
.tob-mrail-signal-card{display:block;min-width:0;border:1px solid var(--line2);border-radius:10px;background:var(--card);transition:border-color .12s,background .12s;user-select:text;}
.tob-mrail-signal-card:hover{border-color:color-mix(in srgb,var(--blue) 38%,var(--line2));background:var(--surface-sunken);}
.tob-mrail-signal-summary{display:flex;min-width:0;flex-direction:column;gap:2px;padding:10px;cursor:pointer;list-style:none;}
.tob-mrail-signal-summary::-webkit-details-marker{display:none;}
.tob-mrail-signal-summary>strong{min-width:0;color:var(--t1);font-size:12.5px;line-height:1.4;}
.tob-mrail-signal-summary>small{display:-webkit-box;overflow:hidden;color:var(--t2);font-size:10px;line-height:1.4;-webkit-box-orient:vertical;-webkit-line-clamp:1;}
.tob-mrail-signal-cardbody{padding:0 10px 10px;}
.tob-mrail-signal-card[open]>.tob-mrail-signal-summary{padding-bottom:8px;}
.tob-mrail-signal-card[open]>.tob-mrail-signal-summary>small{display:none;}
.tob-mrail-signal-cardtop{display:flex;min-width:0;align-items:center;gap:6px;margin-bottom:6px;}
.tob-mrail-signal-cardtop span{max-width:45%;overflow:hidden;padding:2px 6px;border-radius:999px;background:var(--blue-soft);color:var(--blue);font-size:9px;font-weight:800;text-overflow:ellipsis;white-space:nowrap;}
.tob-mrail-signal-cardtop .tob-mrail-signal-type{max-width:none;flex:none;}
.tob-mrail-signal-cardtop .tob-mrail-signal-type.signal{background:color-mix(in srgb,var(--up) 13%,transparent);color:var(--up);}
.tob-mrail-signal-cardtop .tob-mrail-signal-type.preset{background:var(--blue-soft);color:var(--blue);}
.tob-mrail-signal-cardtop .tob-mrail-signal-type.risk{background:color-mix(in srgb,var(--amber) 15%,transparent);color:var(--amber);}
.tob-mrail-signal-cardtop i{flex:none;color:var(--blue);font-size:9px;font-style:normal;font-weight:750;white-space:nowrap;}
.tob-mrail-signal-cardtop em{min-width:0;overflow:hidden;color:var(--t3);font-size:9.5px;font-style:normal;text-overflow:ellipsis;white-space:nowrap;}
.tob-mrail-signal-cardbody>p{display:-webkit-box;overflow:hidden;margin-top:4px;color:var(--t2);font-size:10.5px;line-height:1.5;-webkit-box-orient:vertical;-webkit-line-clamp:2;}
.tob-mrail-signal-brief{display:grid;gap:4px;margin-top:7px;}
.tob-mrail-signal-brief p{display:grid;grid-template-columns:44px minmax(0,1fr);gap:6px;margin:0;color:var(--t2);font-size:10px;line-height:1.45;}
.tob-mrail-signal-brief b{color:var(--t3);font-size:9px;font-weight:800;}
.tob-mrail-signal-brief span{min-width:0;overflow-wrap:anywhere;}
.tob-mrail-signal-stockrow a{min-width:0;overflow:hidden;color:var(--blue);font-weight:750;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;}
.tob-mrail-signal-stockrow a:hover{text-decoration:underline;}
.tob-mrail-signal-eventrow{display:grid;grid-template-columns:44px minmax(0,1fr);gap:6px;color:var(--t2);font-size:10px;line-height:1.45;}
.tob-mrail-signal-eventtext{min-width:0;overflow-wrap:anywhere;}
.tob-mrail-signal-eventtext>a,.tob-mrail-signal-eventtext>span{display:block;}
.tob-mrail-signal-refs{display:inline;min-width:0;margin-left:4px;}
.tob-mrail-signal-refs>summary{display:inline;cursor:pointer;color:var(--blue);font-weight:750;list-style:none;white-space:nowrap;}
.tob-mrail-signal-refs>summary::-webkit-details-marker{display:none;}
.tob-mrail-signal-refs>div{display:grid;gap:3px;padding-top:4px;}
.tob-mrail-signal-refs a{color:var(--blue);text-decoration:none;}
.tob-mrail-signal-refs a:hover{text-decoration:underline;}
.tob-mrail-signal-cardfoot{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-top:8px;}
.tob-mrail-signal-cardfoot button{flex:none;padding:5px 10px;border-radius:7px;background:var(--blue);color:#fff;font-size:10px;font-weight:800;}
.tob-mrail-signal-cardfoot button:hover{filter:brightness(.96);}
.tob-mrail-signal-cardfoot button:disabled{cursor:default;opacity:.55;}
.tob-mrail-signal-loading,.tob-mrail-signal-empty{display:flex;min-height:104px;align-items:center;justify-content:center;flex-direction:column;gap:7px;padding:18px 8px;text-align:center;color:var(--t3);font-size:10.5px;line-height:1.55;}
.tob-mrail-signal-loading{flex-direction:row;}
.tob-mrail-signal-empty svg{color:var(--blue);}
.tob-mrail-signal-empty strong{color:var(--t1);font-size:12px;}
.tob-mrail-signal-note{display:block;padding:7px 4px 0;color:var(--t3);font-size:9px;line-height:1.5;}
/* 快捷方式：与行情 / 快讯 / 财经日历同级的可停靠模块 */
.tob-mrail-forkwrap{display:flex;flex-direction:column;min-height:0;position:relative;overflow:visible;}
.tob-mrail-forkwrap>.tob-mrail-scroll{padding-bottom:10px;}
.tob-mrail-gtfork{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-right:4px;}
.tob-mrail-gtfork>button{display:grid;flex-shrink:0;width:24px;height:24px;place-items:center;border-radius:7px;color:var(--t3);cursor:pointer;transition:.12s;}
.tob-mrail-gtfork>button:hover{background:var(--surface-hover);color:var(--t1);}
.tob-mrail-forklist{display:flex;flex-direction:column;gap:3px;padding:1px 0 3px;}
.tob-mrail-forklist>button{display:flex;width:100%;min-width:0;align-items:center;gap:8px;padding:8px 7px;border-radius:9px;text-align:left;cursor:pointer;transition:background .12s;}
.tob-mrail-forklist>button:hover{background:var(--blue-soft);}
.tob-mrail-forklist>button>span:nth-child(2){display:flex;min-width:0;flex:1;flex-direction:column;gap:2px;}
.tob-mrail-forklist b{overflow:hidden;color:var(--t1);font-size:12px;font-weight:750;line-height:1.35;text-overflow:ellipsis;white-space:nowrap;}
.tob-mrail-forklist em{display:-webkit-box;overflow:hidden;color:var(--t3);font-size:10.5px;font-style:normal;line-height:1.35;-webkit-box-orient:vertical;-webkit-line-clamp:1;}
.tob-mrail-forklist em i{margin-right:5px;color:var(--blue);font-size:9.5px;font-style:normal;font-weight:750;}
.tob-mrail-forklist>button>svg{flex-shrink:0;color:var(--t3);}
.tob-mrail-forklist>button:hover>svg{color:var(--blue);}
.tob-mrail-forkic{display:grid;flex-shrink:0;width:24px;height:24px;place-items:center;border-radius:7px;background:var(--blue-soft);color:var(--blue);font-size:14px;font-weight:800;}
.tob-mrail-forkic.save{background:rgba(217,119,6,.1);color:#d97706;}
/* 快讯：金十式即时消息流——左侧时间戳+逐条消息,重要条目红标加粗,整条可点引用 */
.tob-mrail-gtflash{display:flex;align-items:center;gap:8px;}
.tob-mrail-live{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;font-style:normal;color:#15a35a;}
.tob-mrail-live u{width:6px;height:6px;border-radius:50%;background:#15a35a;text-decoration:none;animation:mrailLive 1.6s ease-in-out infinite;}
@keyframes mrailLive{0%,100%{opacity:1;}50%{opacity:.25;}}
.tob-mrail-flashes{display:flex;flex-direction:column;}
.tob-mrail-flash{position:relative;display:flex;flex-direction:column;gap:3px;padding:8px 6px;border-radius:8px;cursor:pointer;transition:.12s;min-width:0;}
.tob-mrail-flash:hover{background:var(--bg);}
.tob-mrail-flash::after{content:"";position:absolute;left:6px;right:6px;bottom:0;border-bottom:1px solid var(--line2);}
.tob-mrail-flash:last-child::after{display:none;}
/* 头行:时间 · 分类 · 相关度刻度(靠右)——与调试页 v2 同构,正文通栏满宽 */
.tob-mrail-fhead{display:flex;align-items:center;gap:8px;}
.tob-mrail-ftime{flex-shrink:0;font-size:12px;font-weight:650;font-style:normal;color:var(--t3);font-variant-numeric:tabular-nums;line-height:1.55;}
.tob-mrail-fbody{flex:1;min-width:0;}
/* 标题分级只跟 relevance 体系:普通=深色;满格(5/5)=红。important 是另一套体系(源头突发标记),只给红 tag 不动标题 */
.tob-mrail-ftitle{display:block;font-size:14px;font-weight:800;color:var(--t1);line-height:1.5;text-wrap:pretty;}
/* 标题后的「展开全文」箭头:默认朝下,展开后翻转朝上 */
.tob-mrail-fmore{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;width:19px;height:19px;margin-left:5px;border-radius:6px;color:var(--t3);transition:.14s;transform:translateY(-1px);}
.tob-mrail-fmore:hover{background:var(--surface-hover);color:var(--t1);}
.tob-mrail-fmore.open{transform:translateY(-1px) rotate(180deg);}
/* 正文展开/收起高度过渡(grid 0fr↔1fr) */
.tob-mrail-ftextwrap{display:grid;grid-template-rows:0fr;transition:grid-template-rows .22s ease;}
.tob-mrail-ftextwrap.open{grid-template-rows:1fr;}
.tob-mrail-ftextwrap > .tob-mrail-ftext{overflow:hidden;min-height:0;margin:0;padding-top:3px;color:var(--t2);}
.tob-mrail-flash.r5 .tob-mrail-ftitle{color:var(--danger);}
.tob-mrail-flash.r5 .tob-mrail-frel u.on{background:var(--danger);}
.tob-mrail-ftext{margin:0;font-size:12px;color:var(--t1);line-height:1.55;text-wrap:pretty;}
.tob-mrail-ftitle+.tob-mrail-ftext{margin-top:3px;color:var(--t2);}
/* 高相关(relevance≥4、非重要)条目:不再加左缘蓝条(视觉太重),相关度刻度已足够表达 */
/* 头行右侧的相关度刻度(1~5) */
.tob-mrail-frel{display:inline-flex;gap:2px;margin-left:auto;align-items:center;}
.tob-mrail-frel u{width:5px;height:8px;border-radius:1.5px;background:var(--line2);text-decoration:none;}
.tob-mrail-frel u.on{background:var(--blue);}
/* 个股影响 chips:只标方向(▲/▼),理由进自定义深色 tooltip */
.tob-mrail-fstocks{position:relative;display:flex;flex-wrap:wrap;gap:4px;margin-top:6px;}
.tob-fstock{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:600;padding:1.5px 7px;border-radius:999px;background:var(--surface-muted);border:none;color:var(--t2);cursor:pointer;transition:.12s;}
.tob-fstock:hover{background:var(--blue-soft);color:var(--blue);}
.tob-fstock i{font-style:normal;font-size:8px;color:var(--t3);}
.tob-fstock i.up{color:var(--up);}
.tob-fstock i.down{color:var(--down);}
/* tooltip 锚到 chips 行(非单个 chip):满宽铺开,永远不会被窄栏滚动容器左右缘裁切 */
.tob-fstock-tip{position:fixed;left:0;top:0;width:max-content;max-width:min(280px,72vw);z-index:200;background:#1c1917;color:#fafaf9;border-radius:8px;padding:8px 11px;font-size:12px;font-weight:400;line-height:1.55;text-wrap:pretty;box-shadow:0 6px 20px rgba(0,0,0,.25);opacity:0;transform:translateY(-100%);pointer-events:none;transition:opacity .12s ease;}
.tob-fstock-tip b{display:flex;align-items:baseline;gap:6px;margin-bottom:3px;font-weight:700;font-size:12px;color:#fafaf9;}
.tob-fstock-tip b code{font-family:var(--mono);font-weight:400;font-size:10.5px;color:#a8a29e;}
.tob-fstock-tip .tx{display:block;color:#d6d3d1;}
.tob-fstock:hover .tob-fstock-tip{opacity:1;}
/* 分类筛选 chips：粘顶且满幅铺白(负边距盖住滚动容器左右 padding),滚动时内容不会从缝隙露出 */
.tob-mrail-fcats{position:sticky;top:0;z-index:3;display:flex;gap:6px;overflow-x:auto;margin:0 -10px;padding:8px 12px 10px;background:var(--card);scrollbar-width:none;}
.tob-mrail-fcats::-webkit-scrollbar{display:none;}
.tob-mrail-fchip{flex-shrink:0;padding:5px 13px;border-radius:999px;font-size:13px;font-weight:600;color:var(--t2);background:var(--surface-muted);transition:.12s;cursor:pointer;}
.tob-mrail-fchip:hover{background:var(--line2);color:var(--t1);}
.tob-mrail-fchip.on{background:var(--blue);color:#fff;}
/* 头行里的重要标记 + 分类小标：无底无框、与时间同字号同调，不额外着色，只用文本区分于个股胶囊 */
.tob-mrail-fimp,.tob-mrail-fcat{flex-shrink:0;font-style:normal;font-size:12px;font-weight:650;color:var(--t3);background:transparent;border:0;border-radius:0;padding:0;line-height:1.55;letter-spacing:0;}
/* 新快讯：顶部直接高亮滑入 */
.tob-mrail-flash.fresh{background:var(--blue-soft);animation:mrailFlashIn .45s ease;}
@keyframes mrailFlashIn{from{opacity:0;transform:translateY(-10px);}to{opacity:1;transform:none;}}
/* 已下滚时到达的新快讯 → 顶部层叠预览卡:直接露出最新一条内容;多条时卡下方用真实元素露 1~2 层纸边(iOS 通知栏式) */
/* 快讯半区包裹:新快讯悬浮卡相对它定位,不再盖到上半自选区 */
.tob-mrail-flashwrap{flex:1;min-height:0;display:flex;flex-direction:column;position:relative;}
.tob-mrail-nswrap{position:absolute;top:44px;left:10px;right:10px;z-index:6;cursor:pointer;animation:mrailPillIn .3s ease;filter:drop-shadow(0 10px 22px rgba(20,25,35,.15));}
.tob-mrail-newstack{position:relative;background:var(--blue-soft);border:1px solid rgba(58,109,240,.28);border-radius:12px;padding:8px 11px 10px;transition:.12s;}
.tob-mrail-nswrap:hover .tob-mrail-newstack{background:var(--blue-tint);}
.tob-mrail-ns-under{height:7px;margin:0 10px;background:var(--blue-tint);border:1px solid rgba(58,109,240,.20);border-top:none;border-radius:0 0 10px 10px;}
.tob-mrail-ns-under+.tob-mrail-ns-under{margin:0 20px;background:#cddcfa;}
.tob-mrail-newstack-h{display:flex;align-items:center;gap:6px;margin-bottom:4px;}
.tob-mrail-newstack-h b{font-size:12px;font-weight:800;color:#e64545;}
.tob-mrail-newstack-x{margin-left:auto;width:20px;height:20px;border-radius:6px;display:grid;place-items:center;color:var(--t3);cursor:pointer;transition:.12s;}
.tob-mrail-newstack-x:hover{background:rgba(58,109,240,.12);color:var(--t1);}
.tob-mrail-newstack-b{display:flex;gap:8px;align-items:flex-start;}
.tob-mrail-newstack-b i{flex-shrink:0;font-style:normal;font-size:12px;font-weight:650;color:var(--blue);font-variant-numeric:tabular-nums;line-height:1.5;padding-top:1px;}
.tob-mrail-newstack-b span{flex:1;min-width:0;font-size:13px;font-weight:600;color:var(--t1);line-height:1.55;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.tob-mrail-newstack-b span.imp{color:var(--danger);font-weight:800;}
@keyframes mrailPillIn{from{opacity:0;transform:translateY(-6px);}to{opacity:1;transform:none;}}
.tob-mrail-fempty{padding:26px 6px;font-size:13px;color:var(--t3);text-align:center;}
/* 大事日历:与「快讯」列表同构的静音风,分类只用灰字;仅「重要」给克制的红字 */
.tob-mrail-calwrap{display:flex;flex-direction:column;min-height:0;}
.tob-mrail-calwrap .tob-cal-imp{color:var(--danger);}
/* 标题行内 股票/宏观 分段(缩小版 .tob-seg;阻断卡片拖拽) */
.tob-mrail-gtcal{display:flex;align-items:center;justify-content:space-between;gap:8px;white-space:nowrap;}
.tob-cal-tabs{display:inline-flex;gap:2px;background:var(--line);border-radius:8px;padding:2px;cursor:default;min-width:0;}
.tob-cal-tabs button{font-size:11px;font-weight:600;color:var(--t2);padding:3px 10px;border-radius:6px;transition:.12s;max-width:76px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tob-cal-tabs button.on{background:var(--card);color:var(--t1);font-weight:700;box-shadow:0 1px 3px rgba(20,24,30,.08);}
.tob-mrail-calwrap .tob-mrail-scroll{overflow-anchor:none;}
/* 股票/宏观互切:即时切换,不做淡入(从 opacity:0 起步会被感知为闪动) */
.tob-cal-pane{animation:none;}
/* 宏观 tab 周条选期:粘顶满幅铺白;选中日蓝圆,无事件日淡灰 */
.tob-cal-week{position:sticky;top:0;z-index:3;display:flex;align-items:center;gap:1px;margin:0 -10px;padding:6px 4px 8px;background:var(--card);}
.tob-cal-week .wk-arr,.tob-cal-mnav .wk-arr{flex-shrink:0;width:20px;height:30px;color:var(--t3);font-size:16px;line-height:1;border-radius:6px;transition:.12s;}
.tob-cal-week .wk-arr:hover,.tob-cal-mnav .wk-arr:hover{color:var(--t1);background:var(--line);}
.tob-cal-week .wk-day{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:3px;padding:1px 0;}
.tob-cal-week .wk-day i{font-style:normal;font-size:10.5px;color:var(--t3);}
.tob-cal-week .wk-day b{width:26px;height:26px;line-height:26px;border-radius:50%;text-align:center;font-size:13px;font-weight:600;color:var(--t1);font-family:var(--mono);transition:.12s;}
.tob-cal-week .wk-day.dim b{color:var(--t3);font-weight:500;}
.tob-cal-week .wk-day:hover b{background:var(--line);}
.tob-cal-week .wk-day.on b,.tob-cal-week .wk-day.on:hover b{background:var(--blue);color:#fff;font-weight:700;}
/* 月历视图(默认首屏):整月网格,有事件日带点标(重要=首点红);点任意日展开为列表;标题行图标互切 */
.tob-cal-hr{display:inline-flex;align-items:center;gap:6px;min-width:0;}
.tob-cal-vtog{flex-shrink:0;width:24px;height:24px;border-radius:7px;display:grid;place-items:center;color:var(--t3);cursor:pointer;transition:.12s;}
.tob-cal-vtog:hover{background:var(--line);color:var(--t1);}
.tob-cal-mnav{display:flex;align-items:center;justify-content:space-between;padding:8px 2px 0;}
.tob-cal-mnav b{font-size:12.5px;font-weight:800;color:var(--t1);letter-spacing:.3px;font-variant-numeric:tabular-nums;}
.tob-cal-mgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;padding:8px 0 2px;}
.tob-cal-mgrid>i{font-style:normal;font-size:10.5px;color:var(--t3);text-align:center;padding:2px 0 5px;}
.tob-cal-day{display:flex;flex-direction:column;align-items:stretch;gap:2px;padding:3px 1px 4px;min-height:56px;border-radius:8px;cursor:pointer;transition:.12s;overflow:hidden;}
.tob-cal-day:hover{background:var(--line);}
.tob-cal-day b{align-self:center;width:20px;height:20px;line-height:20px;border-radius:50%;text-align:center;font-size:11.5px;font-weight:600;color:var(--t1);font-family:var(--mono);}
.tob-cal-day.out b{color:var(--t3);opacity:.45;font-weight:500;}
.tob-cal-day.has b{font-weight:800;}
.tob-cal-day.today b{background:var(--blue);color:#fff;font-weight:700;}
/* 单元格内迷你事件条:单行气泡(不换行),内边距/国旗/字号全部压到最小,配 ≤3 字短名单行全露;重要=红;最多 3 条,余下汇总 */
.tob-cal-evt{display:flex;align-items:center;gap:1px;font-size:9px;line-height:1.6;padding:0 2px;border-radius:3px;background:var(--blue-soft);color:var(--blue);font-weight:650;min-width:0;}
.tob-cal-evt .tob-cal-flag{flex-shrink:0;width:9px;height:6.5px;border-radius:1px;object-fit:cover;margin-right:1px;box-shadow:0 0 0 .5px rgba(20,25,35,.12);}
/* 月历格:只显示当天去重国家旗 + 事件总数(截断标题不可读,故弃 chip) */
.tob-cal-flags{display:grid;grid-template-columns:repeat(2,14px);justify-content:center;align-content:start;gap:2px;margin-top:2px;width:100%;}
.tob-cal-flags .tob-cal-flag{width:14px;height:10px;border-radius:2px;object-fit:cover;box-shadow:0 0 0 .5px rgba(20,25,35,.14);}
.tob-cal-cnt{display:flex;align-items:center;justify-content:center;width:14px;height:10px;font-style:normal;font-size:7.5px;font-weight:700;color:var(--t3);font-family:var(--mono,ui-monospace,monospace);letter-spacing:-.3px;white-space:nowrap;}
.tob-cal-evt i{font-style:normal;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;letter-spacing:-.2px;}
.tob-cal-evt.imp{background:rgba(230,69,69,.1);color:var(--danger);}
.tob-cal-more{font-size:9px;line-height:1.3;color:var(--t3);text-align:left;padding:0 1px;white-space:nowrap;}
.tob-cal-mhint{padding:9px 4px 12px;font-size:11.5px;color:var(--t3);text-align:center;}
/* 月历↔列表互切编排:进列表=点击的周行 FLIP 飞成顶部周条+主体从下方展开;回月历=真实列表原地淡出(两拍制,switchView 先加 cal-exiting 再切状态)+月历轻微拉远淡入 */
.tob-cal-swap{position:relative;}
.tob-cal-swap.cal-exiting{animation:none;pointer-events:none;}
.tob-cal-enter.en-expand .tob-cal-macro,.tob-cal-enter.en-expand .tob-mrail-flashes{animation:calBodyIn .32s cubic-bezier(.22,.85,.3,1) .04s both;}
.tob-cal-enter.en-zoomout{animation:calEnBack .24s ease both;}
.tob-cal-enter .tob-cal-pane{animation:none;}
@keyframes calEnBack{from{transform:scale(1.008);}to{transform:none;}}
@keyframes calBodyIn{from{transform:translateY(-8px);}to{transform:none;}}
/* 宏观 tab:经济数据日历行(时间 | 标题 / 前值·预测值·公布值 / 星级+国家) */
.tob-cal-macro{padding:0 2px 8px;}
.tob-cal-mdate{font-size:11.5px;font-weight:800;color:var(--t1);padding:9px 4px 3px;letter-spacing:.3px;}
.tob-cal-mrow{display:flex;gap:10px;padding:8px 4px 9px;border-bottom:1px solid var(--line2);cursor:pointer;}
.tob-cal-mrow:hover{background:rgba(20,25,35,.03);}
.tob-cal-mrow:last-child{border-bottom:none;}
.tob-cal-mtime{flex-shrink:0;font-size:11.5px;color:var(--t3);font-style:normal;padding-top:1px;}
.tob-cal-mmain{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px;}
.tob-cal-mtitle{font-size:12.5px;font-weight:600;color:var(--t1);line-height:1.4;}
.tob-cal-mflag{width:16px;height:11px;border-radius:2px;object-fit:cover;vertical-align:-1px;margin-right:6px;box-shadow:0 0 0 1px rgba(20,25,35,.08);}
.tob-cal-mvals{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:11.5px;color:var(--t2);font-family:var(--mono,ui-monospace,monospace);}
.tob-cal-mvals span{white-space:nowrap;}
.tob-cal-mvals em{font-style:normal;color:var(--t3);margin-right:4px;font-family:var(--font,inherit);}
.tob-cal-mvals .act{color:var(--t1);font-weight:700;}
/* 收起态由顶栏按钮控制,不再渲染占位元素 */
@media (max-width:1180px){.tob-mrail{display:none;}}
.tob-chat-bar{flex-shrink:0;position:relative;display:flex;align-items:center;gap:10px;padding:12px 18px;background:transparent;}
/* 运行中状态条:居中,常驻顶栏——让用户随时看到 Agent 在后台跑、离开/新开对话都不中断 */
.tob-run-banner{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:0;max-width:56%;}
.tob-run-banner b{font-size:12.5px;font-weight:800;color:#15a35a;white-space:nowrap;}
.tob-run-banner em{font-size:11.5px;font-style:normal;font-weight:600;color:var(--t3);white-space:nowrap;padding-left:9px;border-left:1px solid var(--line2);}
/* 轮动小 tip:淡入切换;关闭按钮悬停可见 */
.tob-run-banner .tob-run-tip{padding-left:0;border-left:none;animation:tobTipIn .35s ease;}
@keyframes tobTipIn{from{opacity:0;transform:translateY(3px);}to{opacity:1;transform:none;}}
.tob-run-x{flex-shrink:0;width:18px;height:18px;border:none;border-radius:6px;background:transparent;color:var(--t3);cursor:pointer;display:grid;place-items:center;padding:0;opacity:.55;}
.tob-run-x:hover{opacity:1;background:var(--surface-hover,#eef0f3);}
.tob-run-dot{flex-shrink:0;width:7px;height:7px;border-radius:50%;background:#15a35a;box-shadow:0 0 0 0 rgba(21,163,90,.5);animation:tobRunRing 1.5s ease-out infinite;}
@keyframes tobRunRing{0%{box-shadow:0 0 0 0 rgba(21,163,90,.5);}70%{box-shadow:0 0 0 7px rgba(21,163,90,0);}100%{box-shadow:0 0 0 0 rgba(21,163,90,0);}}
@media (max-width:900px){.tob-run-banner em{display:none;}}
.tob-chat-scroll{flex:1;min-height:0;overflow-y:auto;}
.tob-chat-thread{max-width:760px;margin:0 auto;padding:28px 24px 170px;display:flex;flex-direction:column;gap:26px;}
.tob-msg{display:flex;}
.tob-msg-user{justify-content:flex-end;align-items:flex-start;gap:10px;flex-direction:row;}
.tob-user-content{display:flex;flex-direction:column;align-items:flex-end;min-width:0;width:100%;max-width:100%;}
.tob-user-msg-body{display:flex;flex-direction:column;align-items:flex-end;min-width:0;max-width:78%;}
.tob-user-avatar{flex:0 0 auto;order:1;margin-top:2px;}
.tob-msg-user .tob-user-msg-body{order:2;}
.tob-msg-user .tob-bubble{background:#e9ecf1;color:var(--t1);padding:11px 16px;border-radius:16px 16px 4px 16px;font-size:14.5px;line-height:1.6;max-width:78%;box-shadow:none;}
.tob-msg-user .tob-user-content>.tob-bubble{max-width:100%;}
.tob-msg-user .tob-user-msg-body>.tob-bubble{max-width:100%;}
.tob-msg-refs{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:5px;max-width:100%;margin:0 8px 6px 0;}
.tob-msg-ref{display:inline-flex;align-items:center;min-width:0;max-width:320px;height:25px;padding:0 9px 0 7px;
  border:1px solid var(--line2);border-radius:8px;background:var(--card);color:var(--t2);
  box-shadow:0 1px 2px rgba(20,25,35,.035);font-size:11.5px;line-height:1;white-space:nowrap;}
.tob-msg-ref-kind{flex:none;margin-right:7px;padding-right:7px;border-right:1px solid var(--line2);
  color:var(--blue);font-size:10px;font-weight:750;letter-spacing:.04em;}
.tob-msg-ref-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;}
.tob-msg-ai{gap:12px;align-items:flex-start;}
.tob-artifact-job-row .tob-ai-body{width:min(100%,620px);}
.tob-artifact-job{display:flex;align-items:center;gap:11px;width:100%;padding:12px 13px;border:1px solid var(--line2);border-radius:12px;background:var(--card);box-shadow:0 5px 18px rgba(24,31,45,.045);}
.tob-artifact-job.active{border-color:rgba(58,109,240,.24);background:linear-gradient(135deg,var(--card),rgba(58,109,240,.035));}
.tob-artifact-job.done{border-color:rgba(30,142,90,.26);}
.tob-artifact-job.failed{border-color:rgba(205,76,76,.24);}
.tob-artifact-job-icon{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;flex:0 0 30px;border-radius:9px;color:var(--blue);background:var(--blue-soft);}
.tob-artifact-job.done .tob-artifact-job-icon{color:#1e8e5a;background:rgba(30,142,90,.09);}
.tob-artifact-job.failed .tob-artifact-job-icon{color:#c94b4b;background:rgba(201,75,75,.08);}
.tob-artifact-job-copy{display:flex;flex:1;min-width:0;flex-direction:column;gap:2px;}
.tob-artifact-job-copy b{font-size:13px;line-height:1.35;color:var(--t1);}
.tob-artifact-job-copy em{font-style:normal;font-size:11.5px;line-height:1.45;color:var(--t3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tob-artifact-job-status{display:inline-flex;align-items:center;gap:6px;flex:none;font-size:11px;font-weight:700;color:var(--t2);}
.tob-artifact-job-status .tob-live-spin{width:11px;height:11px;margin:0;}
.tob-artifact-job button{display:inline-flex;align-items:center;gap:4px;flex:none;height:28px;padding:0 9px;border:1px solid rgba(30,142,90,.28);border-radius:8px;color:#1e8e5a;background:rgba(30,142,90,.06);font-size:11px;font-weight:700;cursor:pointer;}
.tob-artifact-job button:hover{background:rgba(30,142,90,.11);}
@media(max-width:640px){.tob-artifact-job{align-items:flex-start;flex-wrap:wrap}.tob-artifact-job-copy{min-width:calc(100% - 45px)}.tob-artifact-job-status{margin-left:41px}.tob-artifact-job button{margin-left:auto}}
.tob-ai-avatar{flex-shrink:0;width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:var(--blue-soft);color:var(--blue);margin-top:2px;}
.tob-ai-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:14px;}
/* 个股页右栏对话区复用主对话同一套气泡视觉,仅收窄内边距适配 360px 窄列(转场落地态=起飞态,内容直接平移) */
.tob-chat-thread-side{max-width:none;width:100%;margin:0;padding:14px 14px 20px;gap:18px;}   /* margin:0 覆盖主线程的 margin:auto——flex 纵列里 auto 边距会让短对话收缩居中(间距 bug) */
.tob-chat-thread-side .tob-user-content{max-width:86%;}
.tob-chat-thread-side .tob-bubble{font-size:13px;padding:9px 13px;max-width:86%;}
.tob-chat-thread-side .tob-user-content>.tob-bubble{max-width:100%;}
.tob-chat-thread-side .tob-msg-ref{max-width:240px;}
.tob-chat-thread-side .tob-ai-text,.tob-chat-thread-side .tob-md-raw{font-size:13px;line-height:1.65;}
.tob-chat-thread-side .tob-ai-body{font-size:13px;gap:10px;}
.tob-chat-thread-side .md-body{font-size:13px;line-height:1.65;}
.tob-chat-thread-side .md-body h1.md-h{font-size:14.5px;}
.tob-chat-thread-side .md-body h2.md-h{font-size:14px;}
.tob-chat-thread-side .md-body h3.md-h,.tob-chat-thread-side .md-body h4.md-h{font-size:13.5px;}
.tob-chat-thread-side .tob-msg-ai{gap:9px;}
.tob-chat-thread-side .tob-ai-avatar{width:26px;height:26px;border-radius:8px;}
/* 转场编排:飞行期间右栏真身从首帧起隐身(避免 pick 态/未就绪态闪现),由幽灵代飞 */
.batx-morphing .tob-panel-side{visibility:hidden;}
/* 交易票据补位:转场落地后播一次性滑入动画把内容往下挤;播完移除类名回常态,不留持久 max-height(会剪断票据) */
.dc-ticket-enter{overflow:hidden;animation:dcTicketIn .55s cubic-bezier(.22,.85,.3,1) both;}
@keyframes dcTicketIn{from{max-height:0;opacity:0;transform:translateY(-14px);}to{max-height:720px;opacity:1;transform:none;}}
.tob-ai-text{font-size:14.5px;line-height:1.72;color:var(--t1);text-wrap:pretty;}
.tob-chat-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;}
.tob-chat-cards > *{min-width:0;}
.tob-typing{display:inline-flex;gap:5px;padding:6px 2px;}
.tob-typing i{width:7px;height:7px;border-radius:50%;background:var(--t3);animation:tobBlink 1.2s infinite ease-in-out;}
.tob-typing i:nth-child(2){animation-delay:.18s;} .tob-typing i:nth-child(3){animation-delay:.36s;}
@keyframes tobBlink{0%,80%,100%{opacity:.25;transform:translateY(0);}40%{opacity:1;transform:translateY(-3px);}}
/* 实时事实核实流(替代思考三点):单行,刚登记的 claim 淡入滚替 + 计数 */
.tob-live-fc{display:flex;align-items:center;gap:6px;padding:5px 2px;font-size:12.5px;color:var(--t3);line-height:1.4;flex-wrap:wrap;}
.tob-live-pulse{font-size:9px;animation:tobFcPulse 1.15s infinite ease-in-out;flex-shrink:0;}
@keyframes tobFcPulse{0%,100%{opacity:.35;}50%{opacity:1;}}
.tob-live-lbl{color:var(--t3);font-weight:600;flex-shrink:0;}
.tob-live-claim{color:var(--t1);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;animation:tobFcIn .32s ease;}
.tob-live-claim b{font-family:var(--mono);font-weight:700;font-size:11px;}
.tob-live-cnt{color:var(--t3);font-variant-numeric:tabular-nums;flex-shrink:0;}
@keyframes tobFcIn{from{opacity:0;transform:translateY(3px);}to{opacity:1;transform:translateY(0);}}
/* 悬浮输入框(对标 ChatGPT/Claude)：正文从背后滚过，用柔和渐变淡出代替硬边界；容器本身不拦点击，只有输入框可交互 */
.tob-chat-composer{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(180deg,rgba(246,247,249,0) 0%,var(--bg) 46%);padding:30px 24px 18px;pointer-events:none;}
.tob-chat-composer .tob-chat-inputwrap{pointer-events:auto;}
.tob-chat-inputwrap{position:relative;max-width:760px;margin:0 auto;display:flex;flex-direction:column;background:var(--card);border:1px solid transparent;border-radius:20px;padding:6px;box-shadow:0 8px 30px rgba(20,25,35,.07);transition:.18s;}
.tob-chat-inputwrap:focus-within{border-color:rgba(58,109,240,.5);box-shadow:0 10px 34px rgba(58,109,240,.13);}
.tob-chat-inputwrap textarea{width:100%;border:none;outline:none;resize:none;font-size:14.5px;line-height:1.55;color:var(--t1);background:transparent;overflow-y:hidden;padding:10px 12px 4px;transition:height .16s ease;}
.tob-chat-rich-input{position:relative;overflow:hidden;}
.tob-chat-rich-input textarea{position:relative;z-index:1;display:block;}
.tob-chat-rich-input textarea.tob-composer-rich-input{color:transparent;caret-color:var(--t1);-webkit-text-fill-color:transparent;}
.tob-chat-composer-mirror{padding:10px 12px 4px;font-size:14.5px;line-height:1.55;}
@media (prefers-reduced-motion: reduce){.tob-chat-inputwrap textarea{transition:none;}}
/* 引用块：独立于正文,挂在输入框上方,左侧竖条引号语义 */
.tob-cc-quotes{display:flex;flex-direction:column;gap:4px;padding:8px 10px 0;}
.tob-quote{display:flex;align-items:center;gap:8px;padding:6px 8px;background:var(--surface-hover);border-radius:9px;min-width:0;}
.tob-quote-bar{flex-shrink:0;width:3px;height:16px;border-radius:2px;background:var(--blue);}
.tob-quote-t{flex:1;min-width:0;font-size:12px;color:var(--t2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tob-quote button{flex-shrink:0;width:18px;height:18px;border-radius:5px;display:grid;place-items:center;color:var(--t3);transition:.12s;}
.tob-quote button:hover{background:var(--line2);color:var(--t1);}
.tob-chat-inputwrap .tob-dsend{flex-shrink:0;}
.tob-cc-chips{display:flex;flex-wrap:wrap;gap:6px;padding:8px 10px 0;}
.tob-cc-tools{display:flex;align-items:center;gap:8px;padding:4px 6px 4px 6px;}
/* 落地页→对话页转场:输入框幽灵飞行 + 对话区淡入 */
.tob-ghost-composer{position:fixed;z-index:999;background:var(--card);border:1px solid var(--line2);box-shadow:0 8px 30px rgba(20,25,35,.1);pointer-events:none;transition:top .48s cubic-bezier(.22,.9,.26,1),left .48s cubic-bezier(.22,.9,.26,1),width .48s cubic-bezier(.22,.9,.26,1),height .48s cubic-bezier(.22,.9,.26,1),border-radius .48s cubic-bezier(.22,.9,.26,1),opacity .2s ease;}
.tob-chat-enter{animation:tobChatIn .45s ease both;}
@keyframes tobChatIn{from{opacity:0;}to{opacity:1;}}
@media (prefers-reduced-motion: reduce){.tob-ghost-composer{display:none;}.tob-chat-enter{animation:none;}}
/* 对话栏(chat 右侧,默认收起):并行会话列表 + 运行中状态 */
.tob-chat-rail{width:230px;flex-shrink:0;display:flex;flex-direction:column;background:var(--card);border-left:1px solid var(--line2);min-height:0;transition:width .25s ease,opacity .2s ease;overflow:hidden;}
.tob-chat-rail.closed{width:0;opacity:0;border-left:none;}
.tob-rail-head{display:flex;align-items:center;gap:8px;padding:12px 10px 8px 16px;font-size:12.5px;font-weight:700;color:var(--t2);}
.tob-rail-head b{flex:1;}
.tob-rail-collapse{border:none;background:transparent;color:var(--t2);padding:3px;border-radius:6px;cursor:pointer;display:inline-flex;}
.tob-rail-collapse:hover{background:var(--bg);color:var(--t1);}
.tob-rail-new{display:flex;align-items:center;gap:7px;margin:0 10px 8px;padding:7px 10px;border:1px dashed rgba(58,109,240,.45);background:var(--blue-soft);border-radius:9px;font-size:13px;font-weight:600;color:var(--blue);cursor:pointer;white-space:nowrap;}
.tob-rail-new:hover{background:var(--blue-hover);}
.tob-rail-list{flex:1;min-height:0;overflow-y:auto;padding:0 8px 12px;display:flex;flex-direction:column;gap:2px;}
.tob-rail-empty{padding:18px 8px;font-size:12px;color:var(--t2);text-align:center;}
.tob-rail-item{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:8px;font-size:13px;color:var(--t1);cursor:pointer;}
.tob-rail-item:hover{background:var(--bg);}
.tob-rail-item.cur{background:var(--blue-soft);}
.tob-rail-dot{flex-shrink:0;width:7px;height:7px;border-radius:50%;background:var(--line3);}
.tob-rail-item.run .tob-rail-dot{background:var(--blue);animation:tobRailPulse 1.1s ease-in-out infinite;}
@keyframes tobRailPulse{0%,100%{opacity:1;transform:scale(1);}50%{opacity:.35;transform:scale(.7);}}
.tob-rail-t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tob-rail-run{flex-shrink:0;font-size:10px;font-weight:700;color:var(--blue);}
.tob-rail-del{flex-shrink:0;display:none;align-items:center;border:none;background:transparent;color:var(--t2);padding:2px;border-radius:5px;cursor:pointer;}
.tob-rail-item:hover .tob-rail-del{display:inline-flex;}
.tob-rail-del:hover{color:var(--up);background:rgba(240,53,59,.08);}
.tob-chat-blank{padding:96px 20px 0;display:flex;flex-direction:column;align-items:center;text-align:center;}
.tob-chat-blank-h{font-size:26px;font-weight:800;letter-spacing:-.6px;color:var(--t1);}
.tob-chat-blank-h em{font-style:normal;color:var(--violet,#7c5cff);}
.tob-chat-blank-p{font-size:13px;color:var(--t2);line-height:1.7;max-width:460px;margin-top:10px;}
.tob-chat-blank-list{display:flex;flex-direction:column;gap:8px;width:100%;max-width:520px;margin-top:22px;}
.tob-chat-blank-list button{display:flex;align-items:center;gap:9px;font-size:12.5px;color:var(--t1);background:var(--surface-sunken,var(--bg));border:1px solid var(--line2);border-radius:10px;padding:10px 12px;cursor:pointer;text-align:left;line-height:1.5;}
.tob-chat-blank-list button:hover{border-color:rgba(58,109,240,.4);background:var(--blue-soft);}
.tob-chat-blank-list button svg:first-child{color:var(--violet,#7c5cff);flex-shrink:0;}
.tob-chat-blank-list button span{flex:1;}
.tob-chat-blank-list button svg:last-child{color:#b9bec6;flex-shrink:0;}
.tob-chat-cwrap{max-width:760px;margin:0 auto;}
.tob-chat-inputwrap .tob-att{align-self:flex-end;}

/* ===== Workspace 对话框附加（文件 / 技能） ===== */
.tob-att{position:relative;display:inline-flex;gap:8px;}
.tob-att-btn{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 13px;border-radius:10px;font-size:12.5px;font-weight:700;color:var(--t2);background:var(--surface-hover);transition:.13s;}
.tob-att-btn:hover{background:var(--line);color:var(--t1);}
.tob-att-btn.on{background:var(--blue-soft);color:var(--blue);}
/* 附加入口：无背景幽灵圆钮（＋ 附加文件、layers 附加技能），已选技能数角标 */
.tob-att-plus{position:relative;flex-shrink:0;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;color:var(--t2);background:transparent;transition:.13s;}
.tob-att-plus:hover{background:var(--surface-hover);color:var(--t1);}
.tob-att-plus.on,.tob-att-plus.picked{color:var(--blue);}
.tob-att-plus.on{background:var(--blue-soft);}
.tob-att-dot{position:absolute;top:1px;right:-1px;width:14px;height:14px;padding:0;border-radius:50%;display:grid;place-items:center;background:var(--blue);color:#fff;font-size:9.5px;font-weight:800;font-style:normal;line-height:1;}
/* ===== 技能选择器 v2（图二范式：添加/管理入口 + 平铺列表 + 底部搜索） ===== */
.tob-att-skills.sk2{width:344px;max-height:460px;overflow:visible;}   /* \u5ef6\u4f38\u4fa7\u9762\u677f\u9700\u8981\u6ea2\u51fa */
.sk2-top{flex-shrink:0;padding:6px;border-bottom:1px solid var(--line);}
.sk2-row{display:flex;align-items:center;gap:9px;width:100%;padding:8px 9px;border-radius:10px;transition:.12s;color:var(--t3);}
.sk2-row:hover,.sk2-row.on{background:var(--surface-hover);color:var(--t2);}
.sk2-row b{flex:1;text-align:left;font-size:13px;font-weight:700;color:var(--t1);}
.sk2-rowic{flex-shrink:0;width:22px;height:22px;display:grid;place-items:center;color:var(--t2);}
/* 「添加技能」延伸侧面板：悬停即弹,贴在该行右侧;padding-left 作 hover 过桥 */
.sk2-addwrap{position:relative;}
.sk2-fly{position:absolute;left:100%;top:-6px;z-index:60;padding-left:9px;}
.tob-att-skills.up .sk2-fly{top:-6px;}
.sk2-flyin{width:216px;padding:6px;background:var(--card);border:1px solid var(--line2);border-radius:14px;box-shadow:0 16px 44px rgba(20,25,35,.2);animation:tobModelIn .14s ease;}
.sk2-flyin button{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:9px 10px;border-radius:10px;font-size:13px;font-weight:600;color:var(--t1);transition:.12s;}
.sk2-flyin button:hover{background:var(--surface-hover);}
.sk2-flyin button svg{color:var(--t2);flex-shrink:0;}
.sk2-list{flex:1;overflow-y:auto;padding:6px;}
.sk2-item{display:flex;align-items:flex-start;gap:10px;width:100%;text-align:left;padding:8px 9px;border-radius:10px;transition:.12s;}
.sk2-item:hover{background:var(--surface-hover);}
.sk2-item.on{background:var(--blue-soft);}
.sk2-ic{flex-shrink:0;width:30px;height:30px;border-radius:8px;display:grid;place-items:center;background:var(--surface-muted);color:var(--t2);transition:.12s;}
.sk2-item.on .sk2-ic{background:var(--blue);color:#fff;}
.sk2-tx{flex:1;min-width:0;}
.sk2-nm{display:flex;align-items:center;gap:6px;}
.sk2-nm b{font-size:13px;font-weight:700;color:var(--t1);}
.sk2-badge{flex-shrink:0;font-size:10px;font-weight:700;font-style:normal;color:var(--t3);background:var(--surface-muted);border-radius:5px;padding:1.5px 5px;line-height:1.3;}
.sk2-tx em{display:block;font-size:11px;font-style:normal;color:var(--t3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px;}
.sk2-ck{flex-shrink:0;color:var(--blue);margin-top:7px;}
.sk2-empty{padding:22px 12px;text-align:center;font-size:12px;color:var(--t3);}
.sk2-search{flex-shrink:0;display:flex;align-items:center;gap:8px;padding:9px 12px;border-top:1px solid var(--line);color:var(--t3);}
.sk2-search input{flex:1;border:none;outline:none;background:transparent;font-size:13px;color:var(--t1);}
/* 搜索行入驻顶部菜单(紧跟管理技能),不再单独底栏;观感与其他菜单行完全一致 */
.sk2-searchrow{cursor:text;}
.sk2-searchrow input{flex:1;min-width:0;border:none;outline:none;background:transparent;font-size:13px;font-weight:700;color:var(--t1);font-family:inherit;padding:0;}
/* 默认占位「搜索技能」当标签用(与其他行同款);hover/聚焦时换成浅色引导文案 */
.sk2-searchrow input::placeholder{color:var(--t1);font-weight:700;opacity:1;}
.sk2-searchrow:hover input::placeholder,.sk2-searchrow input:focus::placeholder{color:var(--t3);font-weight:500;}
/* ===== 设置 · 技能管理（图一范式：搜索 + 浏览/创建 + 卡片网格 + 启停开关） ===== */
.skx-bar{display:flex;align-items:center;gap:8px;margin:14px 0 4px;}
.skx-search{flex:1;display:flex;align-items:center;gap:7px;height:34px;padding:0 11px;border-radius:10px;background:var(--surface-hover);color:var(--t3);}
.skx-search input{flex:1;min-width:0;border:none;outline:none;background:transparent;font-size:13px;color:var(--t1);}
.skx-create{position:relative;}
.skx-menu{position:absolute;top:calc(100% + 8px);right:0;z-index:50;width:216px;padding:5px;background:var(--card);border:1px solid var(--line2);border-radius:12px;box-shadow:0 12px 36px rgba(20,25,35,.18);}
.skx-menu button{display:flex;align-items:center;gap:9px;width:100%;text-align:left;padding:8px 10px;border-radius:9px;font-size:12.5px;font-weight:600;color:var(--t1);transition:.12s;}
.skx-menu button:hover{background:var(--surface-hover);}
.skx-menu button svg{color:var(--t2);flex-shrink:0;}
.skx-gt{font-size:11px;font-weight:800;letter-spacing:.4px;color:var(--t3);margin:16px 0 8px;}
.skx-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
.skx-card{display:flex;align-items:flex-start;gap:10px;padding:12px;border:1px solid var(--line);border-radius:13px;background:var(--card);transition:.13s;}
.skx-card:hover{border-color:var(--line2);box-shadow:0 4px 14px rgba(20,25,35,.06);}
.skx-card.off .skx-ic,.skx-card.off .skx-nm,.skx-card.off .skx-ds{opacity:.55;}
.skx-ic{flex-shrink:0;width:38px;height:38px;border-radius:10px;display:grid;place-items:center;background:var(--surface-muted);color:var(--t1);}
.skx-tx{flex:1;min-width:0;}
.skx-nm{display:flex;align-items:center;gap:5px;font-size:13.5px;font-weight:700;color:var(--t1);}
.skx-shield{color:var(--t3);display:inline-flex;}
.skx-ds{font-size:11.5px;color:var(--t3);line-height:1.45;margin-top:2px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.skx-sw{position:relative;flex-shrink:0;width:36px;height:21px;border-radius:11px;background:var(--line3);transition:.16s;margin-top:2px;}
.skx-sw::after{content:"";position:absolute;top:2.5px;left:2.5px;width:16px;height:16px;border-radius:50%;background:var(--card);box-shadow:0 1px 2px rgba(0,0,0,.22);transition:.16s;}
.skx-sw.on{background:var(--blue);}
.skx-sw.on::after{left:17.5px;}
.skx-empty{padding:30px 0;text-align:center;font-size:12.5px;color:var(--t3);}
.tob-att-scrim{position:fixed;inset:0;z-index:40;}
.tob-att-menu,.tob-att-skills{position:absolute;top:calc(100% + 10px);left:0;z-index:50;background:var(--card);border:1px solid var(--line2);border-radius:14px;box-shadow:0 16px 44px rgba(20,25,35,.2);animation:pop .14s;}
.tob-att-skills.up{top:auto;bottom:calc(100% + 10px);}
.tob-att-menu.up{top:auto;bottom:calc(100% + 10px);}
.tob-att-menu{width:252px;padding:6px;}
.tob-att-menu button{display:flex;align-items:center;gap:11px;width:100%;text-align:left;padding:9px 10px;border-radius:11px;transition:.12s;}
.tob-att-menu button:hover{background:var(--surface-hover);}
.tob-att-mic{flex-shrink:0;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--blue-soft);color:var(--blue);}
.tob-att-mtx{display:flex;flex-direction:column;gap:2px;min-width:0;}
.tob-att-mtx b{font-size:13.5px;font-weight:700;color:var(--t1);}
.tob-att-mtx em{font-size:11px;font-style:normal;color:var(--t3);}
.tob-att-skills{width:328px;max-height:392px;display:flex;flex-direction:column;overflow:hidden;}
.tob-att-sh{flex-shrink:0;display:flex;align-items:center;gap:8px;padding:9px 10px 9px 8px;border-bottom:1px solid var(--line);}
.tob-att-sh b{flex:1;font-size:13.5px;font-weight:800;color:var(--t1);}
.tob-att-sh button{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;color:var(--t2);transition:.12s;}
.tob-att-sh button:hover{background:var(--surface-hover);color:var(--t1);}
.tob-att-slist{flex:1;overflow-y:auto;padding:6px;}
.tob-att-sg{margin-bottom:2px;}
.tob-att-sgt{font-size:10.5px;font-weight:800;letter-spacing:.5px;color:var(--t3);padding:9px 8px 4px;}
.tob-att-srow{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:8px 9px;border-radius:10px;transition:.12s;}
.tob-att-srow:hover{background:var(--surface-hover);}
.tob-att-srow.on{background:var(--blue-soft);}
.tob-att-sic{flex-shrink:0;width:28px;height:28px;border-radius:8px;display:grid;place-items:center;background:var(--line);color:var(--t2);transition:.12s;}
.tob-att-srow.on .tob-att-sic{background:var(--blue);color:#fff;}
.tob-att-stx{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;}
.tob-att-stx b{font-size:13px;font-weight:700;color:var(--t1);}
.tob-att-stx em{font-size:11px;font-style:normal;color:var(--t3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tob-att-sck{flex-shrink:0;color:var(--t3);}
.tob-att-srow.on .tob-att-sck{color:var(--blue);}
/* 已附加小标签 */
.tob-chips{display:flex;flex-wrap:wrap;gap:6px;padding:10px 10px 2px;}
.tob-chip{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 7px 0 10px;border-radius:9px;font-size:12px;font-weight:600;}
.tob-chip-skill{background:var(--blue-soft);color:var(--blue);}
.tob-chip-file{background:var(--line);color:var(--t2);}
.tob-chip-reference{background:rgba(13,148,136,.11);color:#0d7f75;}
/* contenteditable 输入(原生支持 inline @ 标签 span) */
.tob-ta-wrap{position:relative;}
.tob-ce-input{position:relative;z-index:2;width:100%;border:none;outline:none;background:transparent;font-family:var(--sans);font-size:15px;line-height:1.6;color:var(--t1);padding:14px 14px 4px;max-height:160px;overflow-y:auto;text-align:left;vertical-align:top;}
.tob-ce-input:empty:before{content:attr(data-ph);color:var(--t3);pointer-events:none;}
.tob-at-tag{color:#6b8dd6;font-weight:500;cursor:default;}
.tob-at-tag-dim{color:#6b8dd6;font-weight:500;}
.tob-at-tag:focus{outline:none;}
.tob-chip-t{max-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tob-chip button{width:18px;height:18px;border-radius:6px;display:grid;place-items:center;opacity:.65;transition:.12s;}
.tob-chip button:hover{opacity:1;background:rgba(0,0,0,.09);}
.tob-chip[tabindex]{outline:none;}
.tob-chip[tabindex]:focus-visible,.tob-chip[tabindex]:focus{box-shadow:0 0 0 2px var(--blue);}
.tob-bubble-att{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px;}
.tob-bubble-att .tob-chip{height:26px;background:rgba(255,255,255,.2);color:#fff;}

/* 实时机会流 */
.tob-flow{display:flex;flex-direction:column;gap:0;}
.tob-flowitem{display:flex;gap:11px;padding:11px 2px;border-bottom:1px dashed var(--line);animation:msgIn .3s ease;}
.tob-flowitem:last-child{border-bottom:none;}
.tob-flow-dot{flex-shrink:0;width:9px;height:9px;border-radius:50%;margin-top:5px;}
.tob-flow-body{flex:1;min-width:0;}
.tob-flow-t{display:flex;align-items:baseline;gap:8px;}
.tob-flow-name{font-size:12.5px;font-weight:800;color:var(--t1);}
.tob-flow-time{font-size:10.5px;color:var(--t3);font-family:var(--mono);margin-left:auto;}
.tob-flow-txt{font-size:11.5px;line-height:1.55;color:var(--t2);margin-top:2px;text-wrap:pretty;}

/* 轮动地图 */
.tob-rot{display:grid;grid-template-columns:repeat(2,1fr);gap:11px;}
.tob-rotcell{border:1px solid var(--line2);border-radius:12px;padding:13px 14px;transition:.13s;cursor:pointer;position:relative;overflow:hidden;}
.tob-rotcell:hover{border-color:rgba(58,109,240,.4);box-shadow:0 6px 16px rgba(20,25,35,.06);}
.tob-rotcell-h{display:flex;align-items:center;gap:8px;margin-bottom:11px;}
.tob-rotcell-name{font-size:13.5px;font-weight:800;}
.tob-rotcell-boom{margin-left:auto;font-size:18px;font-weight:800;font-family:var(--mono);}
.tob-rotcell-dims{display:flex;gap:14px;}
.tob-rotcell-dim{display:flex;flex-direction:column;gap:2px;}
.tob-rotcell-dim span{font-size:10px;color:var(--t3);font-weight:600;}
.tob-rotcell-dim b{font-size:12.5px;font-weight:700;font-family:var(--mono);}
.tob-rotcell-note{font-size:11px;color:var(--t2);margin-top:9px;line-height:1.5;}

/* ============ 仓位 · 行业暴露条 ============ */
.tob-expo{display:flex;flex-direction:column;}
.tob-expo-row{flex:1;display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--line);}
.tob-expo-row:last-child{border-bottom:none;}
.tob-expo-name{width:94px;flex-shrink:0;font-size:13.5px;font-weight:600;color:var(--t1);}
.tob-expo-bar{flex:1;}
.tob-expo-bar .tob-bar{height:9px;}
.tob-expo-pct{width:58px;text-align:right;flex-shrink:0;font-size:15px;font-weight:700;font-family:var(--mono);}

/* 盯盘 · 交易级数据条 */
.tob-trade-strip{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px;}
.tob-trade-strip>div{flex:1;min-width:86px;background:var(--surface-hover);border-radius:9px;padding:8px 10px;display:flex;flex-direction:column;gap:3px;}
.tob-trade-strip span{font-size:10px;color:var(--t3);font-weight:600;}
.tob-trade-strip b{font-size:13.5px;font-weight:700;font-family:var(--mono);font-variant-numeric:tabular-nums;}
/* 盯盘 · 交易剧本（复用主站 decision 逻辑） */
.tob-dec{border:1px solid var(--line2);border-radius:12px;padding:13px 14px;display:flex;flex-direction:column;gap:11px;background:var(--card);}
.tob-dec-top{display:flex;align-items:center;gap:9px;}
.tob-dec-bias{font-size:12.5px;font-weight:800;color:#fff;border-radius:7px;padding:4px 11px;}
.tob-dec-bias.做多{background:var(--up);}
.tob-dec-bias.做空,.tob-dec-bias.减仓,.tob-dec-bias.减持{background:var(--down);}
.tob-dec-note{font-size:11.5px;color:var(--t2);font-weight:600;}
.tob-dec-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:11px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);}
.tob-dec-cell{display:flex;flex-direction:column;gap:5px;}
.tob-dec-cell>span{font-size:11px;color:var(--t3);font-weight:600;display:flex;align-items:center;gap:6px;}
.tob-dec-pill{font-style:normal;font-size:9.5px;font-weight:700;color:var(--blue);background:var(--blue-soft);border-radius:5px;padding:1px 6px;}
.tob-dec-cell b{font-size:16px;font-weight:800;letter-spacing:-.3px;}
.tob-dec-sec{display:flex;flex-direction:column;gap:7px;}
.tob-dec-th{font-size:11px;font-weight:800;letter-spacing:.4px;color:var(--t3);}
.tob-dec-row{display:flex;align-items:center;gap:8px;font-size:12px;}
.tob-dec-row>span{color:var(--t2);white-space:nowrap;}
.tob-dec-row em{font-style:normal;font-size:10px;font-weight:700;color:#e8852b;background:#e8852b16;border-radius:5px;padding:1px 6px;white-space:nowrap;}
.tob-dec-row b{margin-left:auto;font-weight:700;white-space:nowrap;}
.tob-dec-check{display:flex;align-items:center;gap:7px;font-size:11px;color:var(--t2);background:var(--surface-hover);border-radius:8px;padding:8px 10px;}
.tob-dec-check svg{width:13px;height:13px;color:var(--blue);flex-shrink:0;}

/* ============ 交易台 · 下单 Ticket ============ */
.tob-ticket{position:sticky;top:0;}
.tob-tk-acct{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;color:var(--blue);background:var(--blue-soft);border-radius:7px;padding:4px 9px;}
.tob-tk-lab{display:block;font-size:11px;font-weight:700;color:var(--t3);margin:13px 0 6px;}
.tob-tk-symwrap{display:flex;align-items:center;gap:10px;}
.tob-tk-sym{flex:1;min-width:0;height:42px;border:1px solid var(--line2);border-radius:11px;background:var(--surface-hover);padding:0 12px;font-size:14px;font-weight:700;color:var(--t1);outline:none;cursor:pointer;}
.tob-tk-sym:focus{border-color:rgba(58,109,240,.45);background:var(--card);}
.tob-tk-sympx{display:flex;flex-direction:column;align-items:flex-end;flex-shrink:0;}
.tob-tk-sympx b{font-size:16px;font-weight:800;letter-spacing:-.3px;}
.tob-tk-sympx em{font-style:normal;font-size:12px;font-weight:700;}
.tob-tk-types{width:100%;}
.tob-tk-types button{flex:1;}
.tob-tk-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.tob-tk-grid .tob-input{width:100%;height:42px;}
.tob-tk-qtybtns{display:flex;align-items:center;gap:7px;margin-top:9px;}
.tob-tk-qtybtns button{font-size:12px;font-weight:700;color:var(--t2);background:var(--surface-muted);border-radius:8px;padding:6px 12px;transition:.12s;}
.tob-tk-qtybtns button:hover{color:var(--blue);background:var(--blue-soft);}
.tob-tk-max{margin-left:auto;font-size:11px;color:var(--t3);font-family:var(--mono);}
.tob-tk-sum{display:flex;flex-direction:column;gap:8px;margin:14px 0;padding:13px 14px;border-radius:11px;background:var(--surface-hover);}
.tob-tk-sum>div{display:flex;align-items:center;justify-content:space-between;}
.tob-tk-sum span{font-size:12px;color:var(--t2);}
.tob-tk-sum b{font-size:15px;font-weight:800;}
.tob-tk-submit{width:100%;height:50px;display:flex;align-items:center;justify-content:center;gap:9px;font-size:16px;font-weight:800;letter-spacing:.5px;color:#fff;border-radius:13px;transition:.14s;}
.tob-tk-submit.buy{background:var(--up);box-shadow:0 4px 16px rgba(240,53,59,.32);}
.tob-tk-submit.sell{background:var(--down);box-shadow:0 4px 16px rgba(21,163,90,.32);}
.tob-tk-submit:hover{filter:brightness(1.06);transform:translateY(-1px);}
.tob-tk-submit:active{transform:none;}
.tob-tk-foot{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:10px;font-size:10.5px;color:var(--t3);}
.tob-empty-mini{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:48px 20px;color:var(--t3);}
.tob-empty-mini svg{color:var(--down);}
.tob-empty-mini p{font-size:12.5px;}
/* 发现页 · 新闻 + 相关个股形态 */
.tob-news{display:flex;flex-direction:column;}
.tob-newsitem{padding:13px 2px;border-bottom:1px solid var(--line);}
.tob-newsitem:last-child{border-bottom:none;}
.tob-news-top{display:flex;align-items:center;gap:8px;margin-bottom:6px;}
.tob-news-cat{font-size:10.5px;font-weight:700;border-radius:6px;padding:2px 8px;}
.tob-news-time{font-size:11px;color:var(--t3);}
.tob-news-t{font-size:13px;font-weight:700;line-height:1.55;color:var(--t1);text-wrap:pretty;margin-bottom:9px;}
.tob-news-stocks{display:flex;flex-wrap:wrap;gap:7px;}
.tob-news-stock{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line2);border-radius:9px;padding:5px 10px;transition:.12s;background:var(--card);}
.tob-news-stock:hover{border-color:rgba(58,109,240,.45);background:var(--blue-soft);}
.tob-news-stock b{font-size:12.5px;font-weight:700;color:var(--t1);}
.tob-news-stock>span{font-size:11.5px;font-weight:700;}
.tob-news-stock em{font-style:normal;font-size:10.5px;font-weight:600;border-radius:5px;padding:1px 6px;}
.tob-news-stock em.up{color:var(--up);background:#f0353b14;}
.tob-news-stock em.down{color:var(--down);background:#15a35a14;}
.tob-logic{position:relative;display:inline-flex;}
.tob-logic.has-tip{cursor:help;}
.tob-logic-tip{position:absolute;bottom:calc(100% + 8px);right:-8px;left:auto;width:230px;max-width:60vw;white-space:normal;text-align:left;background:#1a1d21;color:#fff;border-radius:10px;padding:10px 12px;opacity:0;visibility:hidden;transform:translateY(4px);transition:.16s;z-index:40;box-shadow:0 10px 28px rgba(20,25,35,.28);pointer-events:none;}
.tob-logic-tip::after{content:"";position:absolute;top:100%;right:24px;border:6px solid transparent;border-top-color:#1a1d21;}
.tob-logic.has-tip:hover .tob-logic-tip{opacity:1;visibility:visible;transform:translateY(0);}
.tob-logic-tip b{display:block;font-size:12px;font-weight:800;margin-bottom:4px;}
.tob-logic-tip.broken b{color:#ff8a8f;} .tob-logic-tip.watch b{color:#ffcf8a;} .tob-logic-tip.ok b{color:#7fe0ad;}
.tob-logic-tip span{font-size:11.5px;line-height:1.6;color:#d4d8dd;}
.tob-feed{display:flex;flex-direction:column;max-height:calc(100vh - 520px);min-height:220px;overflow-y:auto;margin:0 -4px;padding:0 4px;}
.tob-feeditem{display:flex;align-items:stretch;gap:12px;padding:11px 8px;border-radius:10px;cursor:pointer;transition:background .12s;position:relative;}
.tob-feeditem:hover{background:var(--surface-sunken);}
.tob-feed-time{flex-shrink:0;width:40px;font-size:10.5px;color:var(--t3);padding-top:3px;}
.tob-feed-rail{flex-shrink:0;width:10px;display:flex;justify-content:center;position:relative;}
.tob-feed-rail::before{content:"";position:absolute;top:0;bottom:-11px;width:1.5px;background:var(--line);}
.tob-feeditem:last-child .tob-feed-rail::before{display:none;}
.tob-feed-rail i{width:9px;height:9px;border-radius:50%;margin-top:4px;z-index:1;box-shadow:0 0 0 3px #fff;}
.tob-feed-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px;}
.tob-feed-head{display:flex;align-items:center;gap:6px;flex-wrap:nowrap;}
.tob-feed-tag{flex-shrink:0;display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:700;border-radius:6px;padding:2px 7px;}
.tob-feed-name{font-size:13.5px;font-weight:800;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tob-feed-px{font-size:11.5px;font-weight:700;margin-left:auto;}
.tob-feed-text{font-size:12.5px;line-height:1.5;color:var(--t2);text-wrap:pretty;}
.tob-feed-dir{flex-shrink:0;font-size:12px;align-self:center;}
.tob-feed-dir.up{color:var(--up);} .tob-feed-dir.down{color:var(--down);} .tob-feed-dir.flat{color:var(--t3);}
@keyframes feedIn{0%{opacity:0;transform:translateY(-10px);background:var(--blue-soft);}60%{background:var(--blue-soft);}100%{opacity:1;transform:none;background:transparent;}}
.tob-feeditem.fresh{animation:feedIn 1s ease;}
/* 发现更多机会 卡片 */
.tob-evts{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;}
.tob-evt{text-align:left;background:var(--card);border:1px solid var(--line2);border-radius:13px;padding:14px;display:flex;flex-direction:column;gap:11px;transition:.14s;min-height:116px;}
.tob-evt:hover{border-color:rgba(58,109,240,.4);box-shadow:0 6px 16px rgba(20,25,35,.06);transform:translateY(-2px);}
.tob-evt-top{display:flex;align-items:center;gap:8px;}
.tob-evt-cat{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;border-radius:7px;padding:3px 9px;}
.tob-evt-cat i{width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0;}
.tob-evt-date{font-size:11px;color:var(--t3);}
.tob-evt-star{margin-left:auto;color:var(--t3);display:grid;place-items:center;transition:.12s;}
.tob-evt-star:hover{color:#e8852b;}
.tob-evt-star.on{color:#e8852b;}
.tob-evt-star.on svg{fill:#e8852b;}
.tob-evt-title{font-size:13.5px;font-weight:700;line-height:1.5;color:var(--t1);text-wrap:pretty;}
@media(max-width:1100px){.tob-evts{grid-template-columns:repeat(2,1fr);}}

/* 甜甜圈占位 / 堆叠条 */
.tob-stackbar{display:flex;height:18px;border-radius:6px;overflow:hidden;margin-bottom:12px;}
.tob-stackbar i{height:100%;}
.tob-legend{display:flex;flex-wrap:wrap;gap:10px 16px;}
.tob-legend span{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:var(--t1);font-weight:600;}
.tob-legend i{width:10px;height:10px;border-radius:3px;flex-shrink:0;}
.tob-legend b{font-family:var(--mono);color:var(--t2);font-weight:700;margin-left:2px;}

/* 相关性矩阵 */
.tob-corr{overflow-x:auto;}
.tob-corr table{border-collapse:separate;border-spacing:3px;font-size:10.5px;}
.tob-corr th{padding:4px 6px;font-weight:700;color:var(--t2);font-family:var(--mono);}
.tob-corr th.col{writing-mode:vertical-rl;text-orientation:mixed;height:54px;white-space:nowrap;}
.tob-corr td{width:38px;height:34px;text-align:center;font-family:var(--mono);font-weight:700;border-radius:6px;font-size:10.5px;letter-spacing:-.3px;}
.tob-corr td.self{color:#9aa1a8;background:var(--line2)!important;font-weight:800;}

/* 调仓建议 */
.tob-reb{display:flex;align-items:center;gap:13px;padding:13px 2px;border-bottom:1px solid var(--line);}
.tob-reb:last-child{border-bottom:none;}
.tob-reb-tag{flex-shrink:0;width:46px;text-align:center;font-size:11.5px;font-weight:800;padding:5px 0;border-radius:8px;}
.tob-reb-tag.增持,.tob-reb-tag.新建{color:var(--up);background:#f0353b12;}
.tob-reb-tag.减持,.tob-reb-tag.减仓,.tob-reb-tag.止损{color:var(--down);background:#15a35a12;}
.tob-reb-body{flex:1;min-width:0;}
.tob-reb-name{font-size:13px;font-weight:700;}
.tob-reb-reason{font-size:11.5px;line-height:1.55;color:var(--t2);margin-top:3px;text-wrap:pretty;}
.tob-reb-move{flex-shrink:0;display:flex;align-items:center;gap:7px;font-size:12px;font-family:var(--mono);font-weight:700;color:var(--t2);}
.tob-reb-move .to{color:var(--blue);}
.tob-reb-move svg{width:14px;height:14px;color:var(--t3);}

/* ============ 交易执行 · 托管策略卡 ============ */
.tob-strat{border:1px solid var(--line2);border-radius:13px;padding:14px 15px;background:var(--card);display:flex;flex-direction:column;gap:11px;}
.tob-strat-h{display:flex;align-items:center;gap:9px;}
.tob-strat-bias{font-size:11.5px;font-weight:800;color:#fff;border-radius:7px;padding:3px 9px;}
.tob-strat-bias.做多{background:var(--up);} .tob-strat-bias.减仓,.tob-strat-bias.减持{background:var(--down);}
.tob-strat-name{font-size:14px;font-weight:800;}
.tob-strat-status{margin-left:auto;font-size:11px;font-weight:700;}
.tob-strat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:11px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);}
.tob-strat-cell{display:flex;flex-direction:column;gap:3px;}
.tob-strat-cell span{font-size:10.5px;color:var(--t3);font-weight:600;}
.tob-strat-cell b{font-size:14px;font-weight:800;font-family:var(--mono);}
.tob-strat-prog{display:flex;align-items:center;gap:9px;}
.tob-strat-prog .tob-bar{flex:1;}
.tob-strat-prog span{font-size:11px;font-family:var(--mono);font-weight:700;color:var(--t2);}
.tob-strat-acts{display:flex;gap:8px;}

/* 成交明细行 side 着色 */
.tob-side-buy{color:var(--up);font-weight:700;}
.tob-side-sell{color:var(--down);font-weight:700;}
.tob-status-pill{font-size:10.5px;font-weight:700;border-radius:6px;padding:2px 8px;}
.tob-status-pill.done{color:var(--down);background:#15a35a14;}
.tob-status-pill.part{color:#e8852b;background:#e8852b16;}
.tob-status-pill.wait{color:var(--t2);background:var(--surface-muted);}

/* 空态 */
.tob-empty{padding:50px 24px;text-align:center;color:var(--t3);display:flex;flex-direction:column;align-items:center;gap:10px;}
.tob-empty svg{width:40px;height:40px;opacity:.4;}

/* 弹层 */
.tob-modal-bg{position:fixed;inset:0;z-index:80;background:rgba(20,25,35,.16);display:flex;align-items:center;justify-content:center;padding:32px;animation:pop .15s ease;}
.tob-modal{width:560px;max-width:100%;max-height:86vh;display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line2);border-radius:16px;box-shadow:0 24px 60px rgba(20,25,35,.22);overflow:hidden;}
.tob-modal-h{display:flex;align-items:center;gap:10px;padding:16px 18px;border-bottom:1px solid var(--line);}
.tob-modal-h b{font-size:15px;font-weight:800;}
.tob-modal-h .sp{flex:1;}
.tob-modal-h button{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;color:var(--t3);}
.tob-modal-h button:hover{background:var(--line);color:var(--t1);}
.tob-modal-h svg{width:16px;height:16px;}
.tob-modal-body{padding:18px;overflow-y:auto;overflow-x:hidden;flex:1 1 auto;min-height:0;}
.tob-modal-foot{padding:14px 18px;border-top:1px solid var(--line);display:flex;gap:10px;justify-content:flex-end;}

/* 下单表单 */
.tob-form-row{display:flex;flex-direction:column;gap:6px;margin-bottom:14px;}
.tob-form-row label{font-size:11.5px;font-weight:700;color:var(--t2);}
.tob-input{height:42px;border:1px solid var(--line2);border-radius:10px;background:var(--surface-hover);padding:0 14px;font-size:14px;font-family:var(--mono);color:var(--t1);outline:none;transition:.13s;width:100%;}
.tob-input:focus{background:var(--card);border-color:rgba(58,109,240,.5);box-shadow:0 0 0 3px var(--blue-soft);}
.tob-sidetoggle{display:flex;gap:8px;}
.tob-sidebtn{flex:1;height:42px;border-radius:10px;font-size:13.5px;font-weight:800;border:1px solid var(--line2);background:var(--card);color:var(--t2);transition:.13s;}
.tob-sidebtn.buy.on{background:var(--up);color:#fff;border-color:var(--up);}
.tob-sidebtn.sell.on{background:var(--down);color:#fff;border-color:var(--down);}

/* toast */
/* toast — 右上角堆叠,进退场丝滑,浅色卡片更显眼 */
.tob-toasts{position:fixed;top:18px;right:18px;z-index:9999;display:flex;flex-direction:column;align-items:flex-end;gap:10px;pointer-events:none;}
.tob-toast{display:flex;align-items:center;gap:10px;max-width:360px;min-width:210px;background:var(--card);color:var(--t1);font-size:13px;font-weight:600;line-height:1.45;padding:12px 15px;border-radius:12px;border:1px solid var(--line2);box-shadow:0 12px 32px rgba(20,25,35,.16);pointer-events:auto;overflow:hidden;animation:toastIn .32s cubic-bezier(.16,.9,.3,1) both;transition:max-height .3s ease .12s,margin .3s ease .12s,padding .3s ease .12s,opacity .16s ease,transform .22s cubic-bezier(.4,0,1,1),border-color .16s ease,box-shadow .16s ease;max-height:120px;}
.tob-toast.leaving{opacity:0;transform:translateX(26px) scale(.97);max-height:0;padding-top:0;padding-bottom:0;margin-top:-10px;box-shadow:none;border-color:transparent;}
.tob-toast-ic{width:24px;height:24px;flex-shrink:0;border-radius:50%;background:var(--blue-soft);color:var(--blue);display:grid;place-items:center;}
.tob-toast-ic svg{width:14px;height:14px;}
@keyframes toastIn{from{opacity:0;transform:translateX(30px) scale(.94);}to{opacity:1;transform:none;}}

/* ============ Watchlist · 我的 Agent 团队 ============ */
.wl-page{height:100%;display:flex;flex-direction:column;overflow:hidden;max-width:none;}
.tob-view:has(.wl-page){padding:18px 20px 18px 10px;}
.wl-head{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap;flex-shrink:0;}
.wl-head-sub{font-size:12px;color:var(--t2);font-weight:600;}
.wl-cands{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 11px;border-radius:9px;font-size:12px;font-weight:700;color:var(--blue);background:var(--blue-soft);border:1px solid rgba(58,109,240,.2);transition:.13s;}
.wl-cands:hover{background:var(--blue-tint);}
.wl-cands b{font-variant-numeric:tabular-nums;}
.wl-add{display:flex;align-items:center;gap:6px;height:34px;padding:0 6px 0 11px;border:1px solid var(--line2);border-radius:9px;background:var(--card);transition:.13s;width:260px;}
.wl-add:focus-within{border-color:rgba(58,109,240,.5);box-shadow:0 0 0 3px var(--blue-soft);}
.wl-add>svg{color:var(--t3);flex-shrink:0;}
.wl-add input{flex:1;min-width:0;border:none;outline:none;background:transparent;font-size:12.5px;color:var(--t1);font-family:var(--sans);}
.wl-add input::placeholder{color:var(--t3);}
.wl-add button{width:26px;height:26px;flex-shrink:0;border-radius:7px;display:grid;place-items:center;color:#fff;background:var(--blue);transition:.13s;}
.wl-add button:hover{filter:brightness(1.06);}
/* 清除搜索（中性，区别于蓝色添加）*/
.wl-add button.wl-add-clear{width:22px;height:22px;border-radius:6px;color:var(--t3);background:transparent;}
.wl-add button.wl-add-clear:hover{filter:none;background:var(--surface-hover);color:var(--t1);}
/* 添加新标的：与列表检索分流的独立操作条（仅当输入解析到不在清单的新标的时出现）*/
.wl-addnew{flex-shrink:0;display:flex;align-items:center;gap:9px;width:100%;padding:8px 10px;border:1px solid rgba(58,109,240,.32);border-radius:10px;background:var(--blue-soft);transition:.12s;text-align:left;}
.wl-addnew:hover{background:var(--blue-tint);border-color:var(--blue);}
.wl-addnew-ic{width:24px;height:24px;flex-shrink:0;display:grid;place-items:center;border-radius:7px;background:var(--blue);color:#fff;align-self:flex-start;margin-top:1px;}
.wl-addnew-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.wl-addnew-nm{display:flex;align-items:center;gap:5px;flex-wrap:wrap;font-size:12.5px;font-weight:800;color:var(--t1);line-height:1.3;}
.wl-addnew-code{font-size:11px;font-weight:600;color:var(--t2);letter-spacing:.2px;word-break:break-all;}
.wl-addnew-go{flex-shrink:0;display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:800;color:var(--blue);align-self:center;white-space:nowrap;}
/* 全局标的搜索面板（居中模态）：唯一新增入口；侧栏搜索只过滤已有清单 */
.gs-scrim{position:fixed;inset:0;z-index:220;background:rgba(15,18,25,.42);display:flex;align-items:flex-start;justify-content:center;padding-top:13vh;}
.gs-panel{width:min(560px,92vw);background:var(--card);border-radius:14px;box-shadow:0 24px 64px rgba(15,20,30,.28);display:flex;flex-direction:column;overflow:hidden;}
.gs-input{display:flex;align-items:center;gap:9px;padding:13px 16px;border-bottom:1px solid var(--line2);}
.gs-input>svg{color:var(--t3);flex-shrink:0;}
.gs-input input{flex:1;min-width:0;border:none;outline:none;background:transparent;font-size:14px;color:var(--t1);font-family:var(--sans);}
.gs-input input::placeholder{color:var(--t3);}
.gs-close{width:26px;height:26px;flex-shrink:0;border-radius:7px;display:grid;place-items:center;color:var(--t3);}
.gs-close:hover{background:var(--surface-hover);color:var(--t1);}
.gs-results{max-height:min(52vh,460px);overflow-y:auto;overscroll-behavior:none;padding:6px;display:flex;flex-direction:column;gap:1px;}
.gs-empty{padding:30px 16px;text-align:center;font-size:12.5px;font-weight:600;color:var(--t3);}
/* 逻辑核对折叠条：有未核对项时计数转警示色徽标——不靠占面积靠状态色要注意力 */
.usd-kds-n.todo{color:#8a6d1a;background:var(--warn-soft);border-radius:6px;padding:1px 7px;}
/* 侧栏过滤空结果：紧凑卡片 + 一键跳全局搜索（不再 flex:1 垂直居中占满整列） */
.wl-empty-go{flex:none;display:flex;flex-direction:column;align-items:center;gap:7px;width:100%;padding:20px 12px;margin-top:4px;color:var(--t3);border:1px dashed var(--line2);border-radius:12px;background:transparent;cursor:pointer;transition:.12s;text-align:center;}
.wl-empty-go:hover{border-color:rgba(58,109,240,.5);background:var(--blue-soft);}
.wl-empty-go p{font-size:12px;font-weight:600;}
.wl-empty-go em{font-style:normal;font-size:12px;font-weight:800;color:var(--blue);}
.wl-empty-go svg{color:var(--t3);}
/* 侧栏搜索行：过滤输入框 + 全局搜索入口（+） */
.wl-search{display:flex;align-items:center;gap:8px;}
.wl-search .wl-add{flex:1;min-width:0;}
.wl-gs-open{width:34px;height:34px;flex-shrink:0;border-radius:9px;border:1px solid var(--line2);background:var(--card);color:var(--blue);display:grid;place-items:center;transition:.13s;}
.wl-gs-open:hover{background:var(--blue-soft);border-color:rgba(58,109,240,.5);}
/* 搜索：结果是输入框的无缝延伸（与主页输入框同逻辑：一体面板，不分体） */
.wl-search{position:relative;width:100%;z-index:25;}
.wl-search:has(.wl-sr,.wl-sr-empty) .wl-add{border-bottom-left-radius:0;border-bottom-right-radius:0;border-color:var(--line2);border-bottom-color:var(--line);box-shadow:0 14px 36px rgba(20,25,35,.18);}
.wl-sr{position:absolute;left:0;right:0;top:100%;z-index:40;background:var(--card);border:1px solid var(--line2);border-top:none;border-radius:0 0 11px 11px;box-shadow:0 14px 36px rgba(20,25,35,.18);padding:5px;max-height:min(58vh,420px);overflow-y:auto;overscroll-behavior:none;display:flex;flex-direction:column;gap:1px;}
.wl-sr-row{display:flex;align-items:center;gap:9px;width:100%;padding:8px 9px;border-radius:8px;text-align:left;transition:.1s;cursor:pointer;background:transparent;border:none;font-family:inherit;}
.wl-sr-row:hover{background:var(--surface-hover,var(--surface-hover));}
.wl-sr-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.wl-sr-nm{display:flex;align-items:center;gap:5px;min-width:0;font-size:12.5px;font-weight:700;color:var(--t1);line-height:1.25;}
.wl-sr-nmtx{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.wl-sr-nm .tob-mk{flex-shrink:0;margin-left:0;}
.wl-sr-code{font-size:10.5px;font-weight:600;color:var(--t3);letter-spacing:.2px;}
.wl-sr-px{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex-shrink:0;min-width:62px;}
.wl-sr-price{font-size:12.5px;font-weight:700;color:var(--t1);}
.wl-sr-chg{font-size:11px;font-weight:700;}
/* 行尾动作：平时隐形，悬停行才浮现添加提示；已在清单 = 常显素色对勾（不再整排蓝块） */
.wl-sr-act{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;color:var(--t3);background:transparent;border-radius:6px;opacity:0;transition:.12s;}
.wl-sr-row:hover .wl-sr-act{opacity:1;color:var(--blue);background:var(--blue-soft);}
.wl-sr-act.in{opacity:1;color:var(--t3);background:transparent;}
.wl-sr-row:hover .wl-sr-act.in{color:var(--t3);background:transparent;}
/* 关注行悬停右上角「移出关注」小叉（不再依赖右键菜单） */
.wl-row-rm{position:absolute;top:-6px;right:-6px;width:20px;height:20px;display:none;align-items:center;justify-content:center;border-radius:50%;background:var(--card);border:1px solid var(--line2);color:var(--t3);box-shadow:0 2px 8px rgba(20,25,35,.12);cursor:pointer;z-index:2;}
.wl-row:hover .wl-row-rm{display:inline-flex;}
.wl-row-rm:hover{color:#fff;background:var(--down);border-color:var(--down);}
/* 顶栏 watchlist 书签：紧贴涨跌幅，产品蓝；未加入=蓝描边+常显文字，已加入=蓝实心纯图标 */
.stkd-watch-add{display:inline-flex;align-items:center;gap:5px;height:30px;padding:0 10px;margin-left:-10px;border-radius:8px;border:none;color:var(--blue);background:transparent;font-size:12.5px;font-weight:700;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:.13s;}
.stkd-watch-add:hover{background:var(--blue-soft);}
.stkd-watch-add.on{width:32px;height:32px;padding:0;justify-content:center;gap:0;}
.stkd-watch-add.on:hover{background:var(--blue-soft);}
.wl-sr-empty{position:absolute;left:0;right:0;top:100%;z-index:40;display:flex;align-items:center;justify-content:center;gap:7px;background:var(--card);border:1px solid var(--line2);border-top:none;border-radius:0 0 11px 11px;box-shadow:0 14px 36px rgba(20,25,35,.18);padding:18px;font-size:12px;font-weight:600;color:var(--t3);}
.wl-sr-empty svg{color:var(--t3);}
/* 搜索命中在另一个 Tab（持仓/关注）时的跳转提示 */
.wl-jumphint{display:flex;align-items:center;gap:8px;width:100%;padding:12px 11px;border:1px dashed var(--line2);border-radius:11px;background:var(--surface-sunken);transition:.12s;text-align:left;}
.wl-jumphint:hover{border-color:rgba(58,109,240,.4);}
.wl-jumphint>svg{color:var(--t3);flex-shrink:0;}
.wl-jumphint span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:600;color:var(--t2);}
.wl-jumphint em{flex-shrink:0;font-style:normal;font-size:11.5px;font-weight:800;color:var(--blue);}

.wl-body{flex:1;min-height:0;display:flex;gap:16px;}

/* —— Agent 头像 —— */
.wl-av{position:relative;display:inline-grid;place-items:center;flex-shrink:0;}
.wl-av-pulse{position:absolute;inset:-3px;border-radius:50%;opacity:.5;animation:wlPulse 2.4s ease-out infinite;}
@keyframes wlPulse{0%{transform:scale(.7);opacity:.45;}70%{transform:scale(1.25);opacity:0;}100%{opacity:0;}}

/* —— 左：Agent 团队（待办收件箱） —— */
.wl-list{display:flex;flex-direction:column;gap:12px;min-height:0;}
.wl-ltabs{flex-shrink:0;}
.wl-ltabs button{flex:1;display:inline-flex;align-items:center;justify-content:center;}
.wl-todo{flex-shrink:0;background:var(--card);border:1px solid var(--line2);border-radius:12px;padding:11px 13px;}
.wl-todo-top{display:flex;align-items:center;gap:8px;margin-bottom:9px;}
.wl-todo-cap{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:800;letter-spacing:-.2px;}
.wl-todo-cap svg{color:var(--blue);}
.wl-todo-none{font-size:11px;color:var(--t3);font-weight:600;}
.wl-markall{flex-shrink:0;font-size:11px;font-weight:700;color:var(--blue);background:var(--blue-soft);border-radius:7px;padding:4px 9px;white-space:nowrap;transition:.12s;}
.wl-markall:hover{background:var(--blue-tint);}
.wl-alldone{flex-shrink:0;display:flex;align-items:center;gap:3px;font-size:11px;font-weight:700;color:var(--down);white-space:nowrap;}
.wl-todo-bar{height:6px;border-radius:4px;background:var(--line);overflow:hidden;}
.wl-todo-bar span{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,#3a6df0,#6a90f7);transition:width .35s ease;}
.wl-todo-meta{display:flex;align-items:center;gap:10px;margin-top:8px;font-size:11.5px;color:var(--t2);}
.wl-todo-meta b{font-variant-numeric:tabular-nums;color:var(--t1);}
.wl-todo-meta b.warn{color:var(--blue);}
.wl-todo-filter{margin-left:auto;display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700;color:var(--t2);border:1px solid var(--line2);border-radius:7px;padding:3px 8px;transition:.12s;}
.wl-todo-filter:hover:not(:disabled){border-color:rgba(58,109,240,.4);color:var(--blue);}
.wl-todo-filter.on{background:var(--blue-soft);color:var(--blue);border-color:transparent;}
.wl-todo-filter:disabled{opacity:.45;cursor:default;}

.wl-rows{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;gap:8px;padding-right:3px;}
.wl-row{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:var(--card);border:1px solid var(--line2);border-radius:12px;padding:10px 12px;transition:.13s;position:relative;}
.wl-row:hover{border-color:rgba(58,109,240,.4);box-shadow:0 4px 14px rgba(20,25,35,.05);}
.wl-row.on{border-color:var(--blue);box-shadow:0 0 0 2px var(--blue-soft);}
.wl-row.todo{box-shadow:inset 3px 0 0 var(--blue);}
.wl-row.todo.on{box-shadow:inset 3px 0 0 var(--blue),0 0 0 2px var(--blue-soft);}
.wl-row-mid{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;}
.wl-row-l1{display:flex;align-items:center;gap:5px;min-width:0;}
.wl-row-l1 b{font-size:13.5px;font-weight:800;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
/* 超长名称单向循环滚动（跑马灯）：文本+副本无缝衔接，--mq/--mqd 由组件按文本宽度写入；短名不滚不出副本 */
.tob-marq{min-width:0;overflow:hidden;text-overflow:clip;}
.tob-marq-in{display:inline-flex;gap:42px;white-space:nowrap;}
.tob-marq-dup{display:none;}
.tob-marq.roll .tob-marq-dup{display:inline;}
.tob-marq.roll .tob-marq-in{animation:tobMarq var(--mqd,12s) linear .6s infinite;}
@keyframes tobMarq{from{transform:translateX(0);}to{transform:translateX(var(--mq,0px));}}
.wl-row-spark{margin-left:auto;flex-shrink:0;opacity:.85;}
.wl-row-l2{display:flex;align-items:center;gap:7px;}
.wl-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;}
.wl-row-verdict{font-size:11px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.wl-row-chg{font-size:11px;font-weight:700;margin-left:auto;flex-shrink:0;}
.wl-row-r{display:flex;flex-direction:column;align-items:flex-end;gap:5px;flex-shrink:0;}
.wl-row-new{font-size:10.5px;font-weight:800;color:#fff;background:var(--blue);border-radius:7px;padding:3px 8px;white-space:nowrap;}
.wl-row.todo .wl-row-new{animation:none;}
.wl-row-done{display:inline-flex;align-items:center;gap:3px;font-size:10.5px;font-weight:700;color:var(--t3);white-space:nowrap;}
.wl-row-track{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:700;color:var(--t2);white-space:nowrap;}
.wl-row-sent{display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:700;color:var(--blue);}
.wl-live-dot{width:6px;height:6px;border-radius:50%;background:var(--down);position:relative;flex-shrink:0;}
.wl-live-dot::after{content:"";position:absolute;inset:0;border-radius:50%;background:var(--down);animation:pulse 2s infinite;}

/* —— 普通股票行（不再绑定 Agent；价格/盈亏跳动） —— */
.wl-row-plain{gap:9px;}
.wl-row-plain .wl-row-l2{gap:6px;}
.wl-row-meta{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;color:var(--t2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.wl-row-px{font-size:13.5px;font-weight:800;color:var(--t1);font-variant-numeric:tabular-nums;border-radius:4px;padding:0 3px;}
.wl-row-plain .wl-row-chg{margin-left:0;border-radius:4px;padding:0 3px;}
@keyframes wlTickUp{0%{background:rgba(240,53,59,.22);transform:translateY(-2px);}100%{background:transparent;transform:none;}}
@keyframes wlTickDown{0%{background:rgba(21,163,90,.22);transform:translateY(-2px);}100%{background:transparent;transform:none;}}
.wl-row-px.tick-up,.wl-row-chg.tick-up{animation:wlTickUp .5s ease-out;}
.wl-row-px.tick-down,.wl-row-chg.tick-down{animation:wlTickDown .5s ease-out;}

.wl-hiddenbar{flex-shrink:0;display:flex;align-items:center;gap:8px;padding-top:6px;font-size:11.5px;color:var(--t3);}
.wl-hiddenbar button{margin-left:auto;font-size:11px;font-weight:700;color:var(--blue);}
.wl-hiddenbar button:hover{text-decoration:underline;}

/* —— 右：Agent 研判报告 —— */
.wl-side{flex:1;min-width:470px;min-height:0;display:flex;}
.wl-agent{flex:1;display:flex;flex-direction:column;min-width:0;}

/* 左侧详情：实时 K 线卡（参考详情页左侧区域）—— 撑满列高，图表自适应；overflow 可见以容纳下拉/弹层 */
.wl-chart-card{border:1px solid var(--line2);border-radius:14px;display:flex;flex-direction:column;min-height:0;}
.wl-chart-h{display:flex;align-items:center;gap:11px;padding:11px 13px;border-bottom:1px solid var(--line);flex-shrink:0;border-radius:14px 14px 0 0;background:var(--card);position:relative;z-index:3;}
/* 图表头部 · Agent 下拉选择器（左上方） */
.wl-chart-picker{position:relative;}
.wl-chart-trigger{display:flex;align-items:center;gap:11px;text-align:left;padding:4px 9px 4px 4px;margin:-3px 0;border-radius:10px;transition:.13s;}
.wl-chart-trigger:hover,.wl-chart-trigger.open{background:var(--surface-hover);}
.wl-chart-id .wl-ag-name>svg{color:var(--t3);margin-left:1px;}
.wl-chart-picker .wl-ap-dropdown{left:0;right:auto;width:362px;top:calc(100% + 6px);border-radius:14px;}
.wl-chart-id{min-width:0;}
.wl-chart-card .tob-chart-host{border:none;border-radius:0;flex:1 1 auto;height:auto;min-height:160px;}
/* 技术指标叠加条（图表下方） */
.wl-indbar{display:flex;align-items:center;flex-wrap:wrap;gap:8px 9px;padding:10px 13px;border-top:1px solid var(--line);flex-shrink:0;border-radius:0 0 14px 14px;background:var(--card);}
.wl-ind-kicker{font-size:12px;font-weight:800;color:var(--blue);letter-spacing:.3px;flex:none;}
.wl-ind-chip{display:flex;align-items:center;gap:6px;padding:5px 10px;border-radius:9px;border:1px solid var(--line2);background:var(--card);transition:.13s;}
.wl-ind-chip:hover{border-color:rgba(58,109,240,.5);background:var(--surface-sunken);}
.wl-ind-chip.on{border-color:var(--blue);background:var(--blue-soft);}
.wl-ind-dots{display:flex;gap:2px;flex:none;}
.wl-ind-dots i{width:6px;height:6px;border-radius:50%;display:block;}
.wl-ind-lab{font-size:12px;font-weight:700;color:var(--t1);}
.wl-ind-chip.on .wl-ind-lab{color:var(--blue);}
.wl-ind-sub{font-size:10px;color:var(--t3);}
/* 自定义指标 chip + 添加弹层 */
.wl-ind-chip-custom .wl-ind-rm{font-size:13px;font-weight:800;color:var(--t3);margin-left:1px;line-height:1;}
.wl-ind-chip-custom:hover{border-color:var(--down);background:var(--danger-soft);}
.wl-ind-chip-custom:hover .wl-ind-rm,.wl-ind-chip-custom:hover .wl-ind-lab{color:var(--down);}
.wl-ind-add-wrap{position:relative;}
.wl-ind-add{display:inline-flex;align-items:center;gap:4px;padding:5px 11px;border-radius:9px;border:1px dashed var(--line2);background:var(--card);font-size:12px;font-weight:700;color:var(--blue);transition:.13s;}
.wl-ind-add:hover,.wl-ind-add.on{border-color:var(--blue);background:var(--blue-soft);border-style:solid;}
.wl-ind-pop{position:absolute;bottom:calc(100% + 8px);right:0;left:auto;z-index:60;width:224px;background:var(--card);border:1px solid var(--line2);border-radius:12px;box-shadow:0 10px 32px rgba(20,30,50,.18);padding:13px;}
.wl-ind-pop-title{font-size:12px;font-weight:800;color:var(--t1);margin-bottom:10px;}
.wl-ind-pop-seg{display:flex;gap:5px;margin-bottom:11px;}
.wl-ind-pop-seg button{flex:1;font-size:12px;font-weight:700;color:var(--t2);border:1px solid var(--line2);border-radius:8px;padding:7px 4px;transition:.12s;}
.wl-ind-pop-seg button.on{color:var(--blue);background:var(--blue-soft);border-color:transparent;}
.wl-ind-pop-period{display:flex;align-items:center;gap:8px;margin-bottom:10px;}
.wl-ind-pop-period>span{font-size:12px;color:var(--t2);}
.wl-ind-pop-period input{flex:1;width:100%;border:1px solid var(--line2);border-radius:8px;padding:7px 10px;font-size:14px;font-weight:800;color:var(--t1);font-family:var(--mono);outline:none;}
.wl-ind-pop-period input:focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft);}
.wl-ind-pop-quick{display:flex;gap:5px;margin-bottom:12px;}
.wl-ind-pop-quick button{flex:1;font-size:11.5px;font-weight:700;color:var(--t2);border:1px solid var(--line2);border-radius:7px;padding:5px 0;font-family:var(--mono);transition:.12s;}
.wl-ind-pop-quick button:hover{border-color:var(--blue);color:var(--blue);}
.wl-ind-pop-quick button.on{color:var(--blue);background:var(--blue-soft);border-color:transparent;}
.wl-ind-pop-add{width:100%;font-size:12.5px;font-weight:800;color:#fff;background:var(--blue);border-radius:9px;padding:9px 0;transition:.13s;}
.wl-ind-pop-add:hover{filter:brightness(1.06);}

/* 右侧 Agent 区面板（团队 / 对话 / 报警） */
.wl-apanel{width:392px;flex-shrink:0;min-height:0;display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line2);border-radius:14px;overflow:hidden;}
.wl-ap-head{flex-shrink:0;display:flex;align-items:center;gap:11px;padding:13px 15px;border-bottom:1px solid var(--line);}
/* Agent 下拉选择器（原身份头 → 触发） */
.wl-ap-picker{position:relative;flex-shrink:0;}
.wl-ap-trigger{display:flex;align-items:center;gap:11px;width:100%;text-align:left;padding:13px 15px;border-bottom:1px solid var(--line);transition:.13s;}
.wl-ap-trigger:hover,.wl-ap-trigger.open{background:var(--surface-sunken);}
.wl-ap-trigger>svg{color:var(--t3);flex-shrink:0;}
.wl-ap-dropdown{position:absolute;top:calc(100% - 1px);left:8px;right:8px;z-index:50;background:var(--card);border:1px solid var(--line2);border-radius:0 0 14px 14px;box-shadow:0 16px 36px rgba(20,30,50,.18);padding:11px;display:flex;flex-direction:column;gap:10px;max-height:min(560px,72vh);overflow-y:auto;animation:pop .12s ease;}
.wl-ap-dropdown .wl-rows{max-height:300px;overflow-y:auto;}
/* 对话区里的报警切换 */
.wl-chat-alarm{flex-shrink:0;display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700;color:var(--blue);background:var(--card);border:1px solid var(--line2);border-radius:7px;padding:4px 9px;transition:.12s;}
.wl-chat-alarm:hover{border-color:var(--blue);background:var(--card);}
.wl-chat-alarm.on{background:var(--blue);color:#fff;border-color:transparent;}
.wl-alarm-wrap{flex:1;min-height:0;display:flex;flex-direction:column;padding:12px 13px;overflow:hidden;}
.wl-ap-id{min-width:0;}
.wl-ap-id b{display:flex;align-items:center;gap:6px;font-size:14.5px;font-weight:800;letter-spacing:-.3px;white-space:nowrap;overflow:hidden;}
.wl-ap-id i{display:flex;align-items:center;gap:5px;font-style:normal;font-size:11px;font-weight:600;color:var(--t2);margin-top:3px;}
.wl-ap-tabs{flex-shrink:0;margin:11px 13px 0;}
/* 团队 tab 顶部：添加标的 + 交易台候选（由原页头迁入） */
.wl-team-top{display:flex;flex-direction:column;gap:8px;flex-shrink:0;}
.wl-team-top .wl-add{width:100%;}
.wl-team-top .wl-cands{width:100%;justify-content:center;}
/* 判断② 决策卡 */
.wl-ap-decide{flex-shrink:0;padding:11px 13px;border-bottom:1px solid var(--line);background:var(--surface-sunken);}
.wl-ap-rec{display:flex;align-items:flex-start;gap:8px;margin-bottom:9px;}
.wl-ap-rec-pill{flex-shrink:0;display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:800;color:#fff;border-radius:7px;padding:4px 9px;white-space:nowrap;}
.wl-ap-rec p{flex:1;min-width:0;font-size:11.5px;line-height:1.5;color:var(--t2);text-wrap:pretty;margin-top:1px;}
.wl-ap-ack{flex-shrink:0;display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:700;color:var(--t2);border:1px solid var(--line2);border-radius:7px;padding:3px 8px;transition:.12s;white-space:nowrap;align-self:flex-start;}
.wl-ap-ack:hover{border-color:rgba(58,109,240,.4);color:var(--blue);}
.wl-ap-act{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.wl-ap-act .wl-decide-side{display:inline-flex;gap:2px;background:var(--line);border-radius:9px;padding:3px;}
.wl-ap-act .wl-decide-side button{font-size:12px;font-weight:700;color:var(--t2);padding:6px 11px;border-radius:7px;transition:.12s;white-space:nowrap;}
.wl-ap-act .wl-decide-side button.on{background:var(--card);box-shadow:0 1px 4px rgba(20,24,30,.1);}
.wl-ap-act .wl-decide-side button.on.buy{color:var(--up);}
.wl-ap-act .wl-decide-side button.on.sell{color:var(--down);}
.wl-ap-act .tob-btn{flex:1;justify-content:center;white-space:nowrap;}
.wl-ap-tabs button{flex:1;display:inline-flex;align-items:center;justify-content:center;position:relative;}
.wl-ap-on{width:6px;height:6px;border-radius:50%;background:var(--blue);margin-left:5px;}
.wl-ap-body{flex:1;min-height:0;display:flex;flex-direction:column;gap:10px;padding:12px 13px;}
.wl-ap-body.chat-mode{padding:0;gap:0;}
.wl-ap-body .wl-ltabs,.wl-ap-body .wl-todo{flex-shrink:0;}

/* 对话 tab */
.wl-chat-to{flex-shrink:0;display:flex;align-items:center;gap:7px;padding:9px 13px;background:var(--blue-soft);font-size:11.5px;color:var(--t2);line-height:1.4;}
.wl-chat-to svg{color:var(--blue);flex-shrink:0;}
.wl-chat-to b{color:var(--blue);font-weight:800;}
.wl-chat-host{flex:1;min-height:0;display:flex;flex-direction:column;}
.wl-chat-host>.chat,.wl-chat-host>.chat.ac{flex:1;min-height:0;height:auto;background:var(--card);}

/* 报警 tab */
.wl-alarm{flex:1;min-height:0;display:flex;flex-direction:column;}
.wl-alarm-scroll{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding-right:2px;}
.wl-al-sec{font-size:10.5px;font-weight:800;letter-spacing:.4px;color:var(--t3);text-transform:uppercase;margin-top:6px;}
.wl-al-sec:first-child{margin-top:0;}
.wl-al-row{display:flex;align-items:flex-start;gap:10px;padding:10px 11px;border:1px solid var(--line2);border-radius:11px;transition:.13s;}
.wl-al-row.on{border-color:rgba(58,109,240,.32);background:var(--surface-sunken);}
.wl-al-ic{flex-shrink:0;width:28px;height:28px;border-radius:8px;display:grid;place-items:center;}
.wl-al-tx{flex:1;min-width:0;}
.wl-al-tx b{display:block;font-size:12.5px;font-weight:800;color:var(--t1);}
.wl-al-tx i{display:block;font-style:normal;font-size:11px;color:var(--t2);line-height:1.45;margin-top:2px;text-wrap:pretty;}
.wl-al-extra{margin-top:8px;}
.wl-al-inp{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line2);border-radius:8px;padding:5px 9px;background:var(--card);}
.wl-al-inp span{font-size:11px;color:var(--t3);font-weight:700;}
.wl-al-inp input{width:88px;border:none;outline:none;background:transparent;font-size:13px;font-weight:800;color:var(--t1);}
.wl-al-chs{display:flex;gap:8px;}
.wl-al-ch{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:4px;font-size:12px;font-weight:700;color:var(--t2);border:1px solid var(--line2);border-radius:9px;padding:8px 6px;transition:.12s;}
.wl-al-ch:hover{border-color:rgba(58,109,240,.4);}
.wl-al-ch.on{color:var(--blue);background:var(--blue-soft);border-color:transparent;}
.wl-alarm-foot{flex-shrink:0;display:flex;align-items:center;gap:10px;margin-top:11px;padding-top:11px;border-top:1px solid var(--line);}
.wl-alarm-cnt{font-size:11.5px;color:var(--t2);}
.wl-alarm-cnt b{color:var(--blue);font-weight:800;}
.wl-alarm-foot .tob-btn{margin-left:auto;}
/* 开关 */
.wl-sw{flex-shrink:0;width:38px;height:22px;border-radius:11px;background:var(--line3);position:relative;transition:.16s;margin-top:2px;}
.wl-sw.on{background:var(--blue);}
.wl-sw span{position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:var(--card);box-shadow:0 1px 3px rgba(0,0,0,.25);transition:.16s;}
.wl-sw.on span{left:18px;}
.wl-ag-head{flex-shrink:0;display:flex;align-items:center;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line);}
.wl-ag-id{min-width:0;}
.wl-ag-name{display:flex;align-items:center;gap:6px;font-size:16px;font-weight:800;letter-spacing:-.3px;}
.wl-ag-tag{font-size:10px;font-weight:800;color:var(--blue);background:var(--blue-soft);border-radius:6px;padding:2px 7px;letter-spacing:.2px;}
.wl-ag-meta{display:flex;align-items:center;gap:11px;margin-top:4px;font-size:12px;}
.wl-ag-px{font-weight:800;}
.wl-live{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;color:var(--t2);}

.wl-ag-scroll{flex:1;min-height:0;overflow:hidden;padding:0;display:flex;flex-direction:column;gap:12px;}
.wl-chart-card{flex:1 1 auto;background:var(--card);}
.wl-card{flex:0 0 auto;background:var(--card);border:1px solid var(--line2);border-radius:14px;padding:12px 14px;}

.wl-verdict{display:flex;align-items:flex-start;gap:12px;border:1px solid;border-radius:12px;padding:13px 15px;}
.wl-verdict-pill{flex-shrink:0;display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:800;color:#fff;border-radius:8px;padding:6px 11px;}
.wl-verdict-txt{font-size:13.5px;line-height:1.6;color:var(--t1);font-weight:600;text-wrap:pretty;margin-top:1px;}

.wl-block{display:flex;flex-direction:column;}
.wl-block-h{display:flex;align-items:center;gap:8px;margin-bottom:9px;flex-wrap:wrap;}
.wl-block-h b{font-size:14px;font-weight:800;letter-spacing:-.3px;}
.wl-block-n{font-size:10px;font-weight:800;letter-spacing:.4px;color:#fff;background:var(--t1);border-radius:6px;padding:3px 7px;flex-shrink:0;}

/* 走势 vs 预期 */
.wl-vs{display:flex;align-items:stretch;gap:0;border:1px solid var(--line2);border-radius:12px;overflow:hidden;}
.wl-vs-col{flex:1;min-width:0;padding:13px 14px;display:flex;flex-direction:column;gap:8px;}
.wl-vs-col:first-child{background:var(--surface-sunken);}
.wl-vs-cap{font-size:10.5px;font-weight:800;letter-spacing:.4px;color:var(--t3);text-transform:uppercase;}
.wl-vs-kv{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-size:12px;}
.wl-vs-kv>span{color:var(--t2);flex-shrink:0;}
.wl-vs-kv>b{font-weight:800;text-align:right;}
.wl-vs-kv em{font-style:normal;font-weight:700;margin-left:4px;}
.wl-vs-thesis{font-size:12px;line-height:1.6;color:var(--t2);text-wrap:pretty;margin-top:2px;}
.wl-vs-arrow{flex-shrink:0;display:grid;place-items:center;width:34px;color:var(--t3);background:var(--card);border-left:1px solid var(--line);border-right:1px solid var(--line);}

/* 价位轨道 */
.wl-track{margin-top:16px;padding:0 8px;}
.wl-track-line{position:relative;height:6px;border-radius:4px;background:linear-gradient(90deg,#15a35a22,#e8e8e8 50%,#f0353b22);margin:26px 0 0;}
.wl-track-band{position:absolute;top:-3px;height:12px;border-radius:4px;background:rgba(58,109,240,.16);border:1px solid rgba(58,109,240,.3);}
.wl-track-tick{position:absolute;top:-4px;width:2px;height:14px;border-radius:2px;transform:translateX(-1px);}
.wl-track-tick.stop{background:var(--down);}
.wl-track-tick.cost{background:var(--t2);}
.wl-track-tick.take{background:var(--up);}
.wl-track-now{position:absolute;top:-7px;transform:translateX(-50%);z-index:2;}
.wl-track-now i{display:block;width:14px;height:14px;border-radius:50%;background:var(--blue);border:3px solid var(--card);box-shadow:0 1px 5px rgba(58,109,240,.5);}
.wl-track-labs{position:relative;height:34px;margin-top:7px;}
.wl-track-lab{position:absolute;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:1px;white-space:nowrap;}
.wl-track-lab b{font-size:10px;font-weight:700;color:var(--t3);}
.wl-track-lab em{font-style:normal;font-size:11px;font-weight:800;color:var(--t2);}
.wl-track-lab.stop em{color:var(--down);} .wl-track-lab.take em{color:var(--up);}
.wl-track-lab.now b{color:var(--blue);} .wl-track-lab.now em{color:var(--blue);font-size:12px;}

/* 健康度时间线 */
.wl-tl{margin-top:18px;}
.wl-tl-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;}
.wl-tl-cap{font-size:11px;font-weight:800;color:var(--t2);}
.wl-tl-ends{display:flex;gap:0;}
.wl-tl-ends i{font-style:normal;font-size:10px;color:var(--t3);}
.wl-tl-ends i:first-child::after{content:"";}
.wl-tl-ends i:last-child{margin-left:8px;}
.wl-tl-bar{display:flex;height:8px;border-radius:5px;overflow:hidden;gap:1px;}
.wl-tl-bar span{display:block;}
.wl-tl-note{display:flex;align-items:flex-start;gap:6px;margin-top:7px;font-size:11.5px;line-height:1.5;text-wrap:pretty;}
.wl-tl-note.ok{color:var(--t3);}
.wl-tl-note.ok svg{color:var(--down);flex-shrink:0;margin-top:1px;}
.wl-tl-note.dev{color:#c4711a;}
.wl-tl-note.dev svg{color:#e8852b;flex-shrink:0;margin-top:1px;}

/* 结论流 */
.wl-filterbar{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:6px 11px;background:var(--surface-hover);border-radius:9px;font-size:11.5px;color:var(--t2);}
.wl-filterbar b{font-weight:800;color:var(--t1);font-variant-numeric:tabular-nums;}
.wl-filterbar i{width:1px;height:11px;background:var(--line2);}
.wl-filterbar .imp{display:inline-flex;align-items:center;gap:3px;color:var(--danger);}
.wl-filterbar .imp b{color:var(--danger);}
.wl-filterbar .imp svg{color:#e8a33d;}
.wl-filterbar .filt{color:var(--t3);}
.wl-cons{display:flex;flex-direction:column;gap:8px;}
/* —— 未来高影响事件（Agent 标记 + 倒计时） —— */
.wl-cat{margin-bottom:10px;border:1px solid var(--line2);border-radius:12px;background:var(--surface-sunken);padding:9px 11px;}
.wl-cat-h{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:800;color:var(--t1);margin-bottom:7px;}
.wl-cat-h svg{color:var(--blue);}
.wl-cat-hint{font-size:10.5px;font-weight:600;color:var(--t3);margin-left:2px;}
.wl-cat-list{display:flex;gap:8px;flex-wrap:wrap;}
.wl-cat-item{flex:1;min-width:150px;display:flex;align-items:center;gap:9px;border:1px solid var(--line2);border-radius:10px;padding:8px 10px;background:var(--card);border-left-width:3px;}
.wl-cat-item.blue{border-left-color:#3a6df0;}
.wl-cat-item.warn{border-left-color:#e8852b;}
.wl-cat-item.soon{box-shadow:0 2px 10px rgba(232,133,43,.12);}
.wl-cat-kind{flex-shrink:0;font-size:10.5px;font-weight:800;color:var(--t2);background:var(--surface-muted);border-radius:6px;padding:3px 7px;}
.wl-cat-item.warn .wl-cat-kind{color:#b5651a;background:rgba(232,133,43,.13);}
.wl-cat-item.blue .wl-cat-kind{color:var(--blue);background:var(--blue-soft);}
.wl-cat-mid{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;}
.wl-cat-label{font-size:12px;font-weight:700;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.wl-cat-date{font-size:10.5px;color:var(--t3);font-variant-numeric:tabular-nums;}
.wl-cat-cd{flex-shrink:0;font-size:15px;font-weight:800;color:var(--t1);font-variant-numeric:tabular-nums;letter-spacing:-.3px;}
.wl-cat-cd em{font-size:10px;font-weight:700;font-style:normal;color:var(--t3);margin-left:2px;}
.wl-cat-item.soon .wl-cat-cd{color:#e8852b;}
.wl-cons-row{flex-direction:row;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;gap:9px;padding-bottom:6px;scroll-snap-type:x proximity;overscroll-behavior-x:contain;}
.wl-cons-row::-webkit-scrollbar{height:7px;}
.wl-cons-row::-webkit-scrollbar-thumb{background:#d4d8dd;border-radius:6px;border:2px solid var(--card);}
.wl-cons-row::-webkit-scrollbar-thumb:hover{background:var(--line3);}
.wl-cons-row::-webkit-scrollbar-track{background:transparent;}
/* 消息卡片样式（对齐详情页「发现更多机会」evchip） */
.wl-con{flex:none;width:218px;display:flex;flex-direction:column;gap:6px;position:relative;border:1px solid var(--line2);border-left-width:3px;border-radius:10px;padding:8px 10px;background:var(--card);transition:.15s;scroll-snap-align:start;}
.wl-con:hover{box-shadow:0 2px 10px rgba(20,25,35,.06);}
.wl-con.imp{background:var(--warn-soft);box-shadow:0 2px 10px rgba(232,133,43,.12);}
.wl-con-fav{position:absolute;top:6px;right:6px;width:20px;height:20px;display:grid;place-items:center;color:var(--t4);border-radius:6px;transition:.13s;z-index:2;}
.wl-con-fav:hover{background:var(--surface-muted);color:#e8a33d;}
.wl-con-fav.on{color:#e8a33d;}
.wl-con-top{display:flex;align-items:center;gap:6px;padding-right:22px;}
.wl-con-cat{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:700;padding:2px 7px;border-radius:6px;}
.wl-con-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;}
.wl-con-new{font-size:9px;font-weight:800;color:#fff;background:var(--up);border-radius:4px;padding:1px 5px;letter-spacing:.4px;flex-shrink:0;}
.wl-con-date{font-size:10.5px;color:var(--t3);margin-left:auto;font-variant-numeric:tabular-nums;}
.wl-con-title{font-size:12.5px;font-weight:600;line-height:1.4;color:var(--t1);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-wrap:pretty;}
.wl-noise-toggle{display:flex;align-items:center;gap:6px;margin-top:8px;font-size:11.5px;font-weight:600;color:var(--t3);transition:.12s;}
.wl-noise-toggle:hover{color:var(--blue);}
.wl-noise{margin-top:9px;border:1px dashed var(--line2);border-radius:11px;padding:11px 13px;display:flex;flex-direction:column;gap:8px;background:var(--surface-sunken);}
.wl-noise-grp{display:flex;gap:10px;font-size:11px;line-height:1.5;}
.wl-noise-cat{flex-shrink:0;font-weight:800;width:64px;}
.wl-noise-list{color:var(--t3);text-wrap:pretty;}

/* 判断② 决策栏 */
.wl-decide{flex-shrink:0;display:flex;align-items:center;gap:12px;padding:12px 18px;border-top:1px solid var(--line2);background:var(--surface-sunken);flex-wrap:wrap;}
.wl-decide-q{display:flex;align-items:center;gap:8px;}
.wl-decide-q b{font-size:13px;font-weight:800;letter-spacing:-.2px;}
.wl-decide-side{display:inline-flex;gap:2px;background:var(--line);border-radius:9px;padding:3px;}
.wl-decide-side button{font-size:12px;font-weight:700;color:var(--t2);padding:6px 13px;border-radius:7px;transition:.12s;white-space:nowrap;}
.wl-decide-side button.on{background:var(--card);box-shadow:0 1px 4px rgba(20,24,30,.1);}
.wl-decide-side button.on.buy{color:var(--up);}
.wl-decide-side button.on.sell{color:var(--down);}
.wl-decide .tob-btn{flex-shrink:0;}

.wl-entry{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;border-radius:7px;padding:3px 9px;}
.wl-entry.in{color:var(--blue);background:var(--blue-soft);}
.wl-entry.above{color:var(--t2);background:var(--surface-muted);}
.wl-entry.below{color:#e8852b;background:#e8852b16;}

.wl-tabdot{font-style:normal;display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;margin-left:5px;border-radius:8px;background:var(--blue);color:#fff;font-size:10px;font-weight:800;}
.wl-embed-loading{flex:1;display:grid;place-items:center;color:var(--t3);font-size:12px;}

/* 右键菜单 */
.wl-menu{position:fixed;z-index:9999;min-width:168px;background:var(--card);border:1px solid var(--line2);border-radius:10px;box-shadow:0 8px 28px rgba(20,30,50,.16);padding:5px;animation:pop .1s ease;}
.wl-menu-h{font-size:11px;font-weight:700;color:var(--t3);padding:5px 9px 6px;border-bottom:1px solid var(--line);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.wl-menu button{display:flex;align-items:center;gap:8px;width:100%;text-align:left;font-size:12.5px;font-weight:600;color:var(--t1);padding:8px 9px;border-radius:7px;transition:.1s;}
.wl-menu button:hover{background:var(--blue-soft);color:var(--blue);}
.wl-menu button.danger:hover{background:var(--danger-soft);color:var(--up);}

@media(max-width:1240px){.wl-page{height:auto;overflow:visible;}.wl-body{flex-direction:column;overflow:visible;}.wl-side{min-width:0;}.wl-ag-scroll{overflow:visible;}.wl-apanel{width:auto;}.wl-rows{max-height:420px;}.wl-chat-host{height:520px;}}

.up{color:var(--up);} .down{color:var(--down);}
@media(max-width:1100px){.tob-kpis{grid-template-columns:repeat(2,1fr);}.tob-row{flex-direction:column;}.tob-row>*{width:100%;}}

/* ============ Watchlist · Key Driven 改版 ============ */
/* 三列布局：列表（窄）· K线+证据（中）· Key Driven 核对（右） */
.wl-body-kd{gap:14px;}
.wl-listcol{width:224px;flex-shrink:0;min-height:0;display:flex;flex-direction:column;gap:10px;}
.wl-listcol .wl-add{width:100%;}
.wl-listcol .wl-cands{width:100%;justify-content:center;}
.wl-listcol .wl-ltabs,.wl-listcol .wl-todo{flex-shrink:0;}
.wl-body-kd .wl-side{flex:1;min-width:340px;}
.tob-empty-mini{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--t3);padding:30px 0;}
.tob-empty-mini p{font-size:12px;font-weight:600;}

/* 中列图表头：身份 + 实时判定 */
.wl-chart-id{min-width:0;}
.wl-chart-verdict{flex-shrink:0;display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:800;border-radius:8px;padding:5px 10px;white-space:nowrap;}

/* 右列：Key Driven 面板（略窄，沿用 .wl-apanel 的边框+全局圆角） */
.wl-kd-panel{width:372px;}
.wl-kd-head{flex-shrink:0;display:flex;flex-direction:column;gap:9px;padding:13px 14px;border-bottom:1px solid var(--line);background:var(--surface-sunken);}
.wl-kd-head-t{display:flex;flex-direction:column;gap:3px;}
.wl-kd-kicker{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;font-weight:800;letter-spacing:-.3px;color:var(--t1);}
.wl-kd-kicker svg{color:var(--blue);}
.wl-kd-sub{font-size:11.5px;color:var(--t2);line-height:1.45;text-wrap:pretty;}
.wl-kd-sumrow{display:flex;flex-wrap:wrap;gap:6px;}
.wl-kd-sum{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;color:var(--t1);background:var(--card);border:1px solid var(--line2);border-radius:7px;padding:3px 8px;font-variant-numeric:tabular-nums;}
.wl-kd-sum i{width:7px;height:7px;border-radius:50%;}
.wl-kd-prog{display:flex;align-items:center;gap:10px;}
.wl-kd-prog-bar{flex:1;height:6px;border-radius:4px;background:var(--line);overflow:hidden;}
.wl-kd-prog-bar span{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,#3a6df0,#6a90f7);transition:width .35s ease;}
.wl-kd-prog-n{font-size:11px;color:var(--t2);white-space:nowrap;}
.wl-kd-prog-n b{color:var(--t1);font-weight:800;font-variant-numeric:tabular-nums;}
.wl-kd-prog-ok{display:inline-flex;align-items:center;gap:3px;font-style:normal;font-weight:700;color:var(--down);margin-left:7px;}

.wl-kd-list{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:10px;padding:12px 13px;}
.wl-kd-card{border:1px solid var(--line2);border-radius:12px;padding:11px 12px;display:flex;flex-direction:column;gap:8px;background:var(--card);transition:.14s;position:relative;}
.wl-kd-card.checked{background:var(--surface-sunken);}
.wl-kd-card.v-still{box-shadow:inset 3px 0 0 #15a35a;}
.wl-kd-card.v-shaky{box-shadow:inset 3px 0 0 #e8852b;}
.wl-kd-card.v-gone{box-shadow:inset 3px 0 0 #f0353b;}
.wl-kd-top{display:flex;align-items:center;gap:7px;}
.wl-kd-type{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:800;border-radius:6px;padding:3px 8px;}
.wl-kd-st{margin-left:auto;display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:700;border-radius:6px;padding:3px 8px;}
.wl-kd-st.self{color:var(--t3);background:var(--surface-muted);}
.wl-kd-st-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;}
.wl-kd-rm{margin-left:2px;width:20px;height:20px;flex-shrink:0;display:grid;place-items:center;color:var(--t3);border-radius:6px;transition:.12s;}
.wl-kd-rm:hover{background:var(--danger-soft);color:var(--up);}
.wl-kd-title{font-size:13.5px;font-weight:800;color:var(--t1);line-height:1.4;text-wrap:pretty;letter-spacing:-.2px;}
.wl-kd-take{display:flex;gap:7px;font-size:11.5px;line-height:1.55;color:var(--t2);text-wrap:pretty;}
.wl-kd-take .wl-av{margin-top:1px;flex-shrink:0;}
.wl-kd-ago{font-style:normal;color:var(--t3);margin-left:6px;font-size:10.5px;white-space:nowrap;}
.wl-kd-check{display:flex;align-items:center;gap:8px;border-top:1px dashed var(--line);padding-top:8px;flex-wrap:wrap;}
.wl-kd-check-q{font-size:11px;font-weight:700;color:var(--t3);white-space:nowrap;}
.wl-kd-check-btns{display:flex;gap:5px;margin-left:auto;}
.wl-kd-vb{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:700;border:1px solid var(--line2);border-radius:7px;padding:4px 8px;transition:.12s;background:var(--card);white-space:nowrap;}
.wl-kd-vb:hover{filter:brightness(.97);border-color:currentColor;}

.wl-kd-add{display:flex;align-items:center;justify-content:center;gap:6px;font-size:12px;font-weight:700;color:var(--blue);border:1px dashed var(--line2);border-radius:11px;padding:11px;transition:.13s;}
.wl-kd-add:hover{border-color:var(--blue);background:var(--blue-soft);}
.wl-kd-addform{border:1px solid rgba(58,109,240,.32);border-radius:12px;padding:11px;display:flex;flex-direction:column;gap:9px;background:var(--surface-sunken);}
.wl-kd-addtypes{display:flex;flex-wrap:wrap;gap:5px;}
.wl-kd-tychip{display:inline-flex;align-items:center;gap:3px;font-size:10.5px;font-weight:700;border:1px solid var(--line2);border-radius:7px;padding:4px 8px;transition:.12s;background:var(--card);}
.wl-kd-addinput{width:100%;border:1px solid var(--line2);border-radius:8px;padding:8px 10px;font-size:12.5px;color:var(--t1);font-family:var(--sans);outline:none;}
.wl-kd-addinput:focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft);}
.wl-kd-addacts{display:flex;gap:8px;justify-content:flex-end;}
.wl-kd-addcancel{font-size:12px;font-weight:700;color:var(--t2);padding:6px 12px;border-radius:8px;}
.wl-kd-addcancel:hover{color:var(--t1);}
.wl-kd-addok{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:800;color:#fff;background:var(--blue);border-radius:8px;padding:7px 13px;transition:.12s;}
.wl-kd-addok:disabled{opacity:.45;cursor:default;}
.wl-kd-addok:not(:disabled):hover{filter:brightness(1.05);}

.wl-kd-decide{flex-shrink:0;border-top:1px solid var(--line);background:var(--surface-sunken);padding:12px 13px;display:flex;flex-direction:column;gap:9px;}
.wl-kd-rec{display:flex;align-items:flex-start;gap:8px;}
.wl-kd-rec-pill{flex-shrink:0;display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:800;color:#fff;border-radius:7px;padding:4px 9px;white-space:nowrap;}
.wl-kd-rec p{flex:1;min-width:0;font-size:11.5px;line-height:1.5;color:var(--t2);text-wrap:pretty;margin-top:1px;}
.wl-kd-decide-q{font-size:11px;font-weight:800;color:var(--t3);letter-spacing:.2px;}
.wl-kd-sides{display:flex;gap:6px;}
.wl-kd-side{flex:1;font-size:13px;font-weight:800;color:var(--t2);border:1px solid var(--line2);border-radius:9px;padding:9px 0;transition:.13s;background:var(--card);}
.wl-kd-side:hover{border-color:var(--line3);}
.wl-kd-side.on.buy{color:#fff;background:var(--up);border-color:var(--up);}
.wl-kd-side.on.sell{color:#fff;background:var(--down);border-color:var(--down);}
.wl-kd-side.on.flat{color:#fff;background:#6b7480;border-color:#6b7480;}
.wl-kd-submit{display:flex;align-items:center;justify-content:center;gap:6px;font-size:13.5px;font-weight:800;color:#fff;background:var(--blue);border-radius:10px;padding:11px 0;transition:.13s;box-shadow:0 2px 10px rgba(58,109,240,.26);}
.wl-kd-submit:hover{filter:brightness(1.05);}
.wl-kd-submit.ready{box-shadow:0 4px 16px rgba(58,109,240,.4);}
.wl-kd-hint{font-size:10.5px;color:var(--t3);text-align:center;}

@media(max-width:1240px){.wl-listcol{width:auto;}.wl-body-kd{flex-direction:column;}.wl-kd-panel{width:auto;}.wl-kd-list{max-height:520px;}}

/* ============ Watchlist · Key Driven 上半 + Brainstorm 下半 ============ */
/* 保留 .wl-apanel 的边框与全局圆角（--radius），仅去内边距，交由内部各块自管 */
.wl-kd-split{padding:0;}
/* 上半：贴合内容、不滚动；超过上限才滚动（默认 3 条 Key Driven 全可见） */
.wl-kd-top{flex:0 0 auto;min-height:0;display:flex;flex-direction:column;align-items:stretch;border-bottom:6px solid var(--line);}
.wl-bs{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;background:var(--surface-sunken);position:relative;}
.wl-bs.dragover{outline:2px dashed var(--blue);outline-offset:-6px;}
.wl-bs-drop{position:absolute;inset:6px;z-index:20;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;border-radius:12px;background:rgba(238,242,254,.92);color:var(--blue);font-size:13px;font-weight:800;pointer-events:none;}

/* —— 紧凑表头：单行 + 细进度条 —— */
.wl-kd-split .wl-kd-head{padding:9px 12px 8px;gap:6px;}
.wl-kd-headrow{display:flex;align-items:center;gap:8px;}
.wl-kd-headrow .wl-kd-kicker{font-size:12.5px;}
.wl-kd-headrow .wl-kd-prog-n{font-size:11px;color:var(--t2);white-space:nowrap;}
.wl-kd-headrow .wl-kd-prog-n b{color:var(--t1);font-weight:800;}
.wl-kd-headrow .wl-kd-prog-ok{display:inline-flex;color:var(--down);margin-left:4px;}
.wl-kd-split .wl-kd-prog-bar{height:4px;border-radius:3px;}

/* —— 紧凑卡片：标题行 + 核对行，去掉 Agent 描述/时间 —— */
.wl-kd-split .wl-kd-list{flex:0 1 auto;padding:8px 6px 6px;gap:5px;overflow-y:auto;max-height:320px;}
.wl-kd-split .wl-kd-card{padding:7px 9px;gap:6px;border-radius:9px;}
.wl-kd-row1{display:flex;align-items:center;gap:7px;min-width:0;}
.wl-kd-split .wl-kd-type{flex-shrink:0;display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:800;border-radius:6px;padding:3px 6px;}
.wl-kd-title{flex:1;min-width:0;font-size:12px;font-weight:700;color:var(--t1);line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:-.2px;}
.wl-kd-split .wl-kd-st{flex-shrink:0;display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:700;}
.wl-kd-split .wl-kd-st.self{color:var(--t3);}
.wl-kd-split .wl-kd-rm{margin-left:0;width:18px;height:18px;}
.wl-kd-vbs{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line2);border-radius:8px;overflow:hidden;}
.wl-kd-vbs .wl-kd-vb{display:inline-flex;align-items:center;justify-content:center;gap:4px;font-size:11.5px;font-weight:700;border:none;border-left:1px solid var(--line2);border-radius:0;padding:5px 0;background:var(--card);transition:.12s;white-space:nowrap;}
.wl-kd-vbs .wl-kd-vb:first-child{border-left:none;}
.wl-kd-vbs .wl-kd-vb:hover{background:var(--surface-hover);}

.wl-kd-split .wl-kd-add{padding:6px;font-size:11px;border-radius:9px;}

/* —— KD 核对行 v3：分割线列表 + 收起式裁决（点「核对」才展开三选；静息态几乎无色） —— */
.usd-kds-list, .wl-kd-split .wl-kd-list{gap:0;scrollbar-width:none;}
.usd-kds-list::-webkit-scrollbar, .wl-kd-split .wl-kd-list::-webkit-scrollbar{width:0;height:0;display:none;}
.kdr{position:relative;display:flex;align-items:center;gap:8px;padding:8px 2px;border-bottom:1px solid var(--line);}
.kdr:last-of-type{border-bottom:none;}
.kdr-typecol{flex-shrink:0;width:48px;display:flex;}
.kdr-type{font-size:10.5px;font-weight:700;color:var(--t2);background:var(--surface-muted);border-radius:6px;padding:2px 7px;white-space:nowrap;}
.kdr-title{flex:1;min-width:0;font-size:12.5px;font-weight:700;color:var(--t1);line-height:1.4;letter-spacing:-.2px;text-wrap:pretty;}
.kdr-title.can-open{cursor:pointer;}
.kdr-title.can-open:hover{color:var(--blue);}
.kdr-ctl{flex-shrink:0;width:104px;min-height:28px;display:flex;align-items:center;justify-content:flex-end;gap:8px;}
.kdr-st{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:600;color:var(--t3);white-space:nowrap;}
.kdr-st i{width:6px;height:6px;border-radius:50%;flex-shrink:0;}
.kdr-check{flex-shrink:0;font-size:11px;font-weight:700;color:var(--t2);background:var(--card);border:1px solid var(--line2);border-radius:7px;padding:4px 10px;cursor:pointer;transition:color .16s,background .16s,border-color .16s;}
.kdr-check:hover{color:var(--blue);border-color:var(--blue-line);background:var(--blue-soft);}
.kdr-seg{display:flex;gap:4px;transform-origin:right center;animation:kdrpop .17s cubic-bezier(.2,.7,.3,1);}
.kdr-vb{width:30px;height:26px;display:inline-flex;align-items:center;justify-content:center;border-radius:7px;cursor:pointer;color:var(--t2);background:var(--card);border:1px solid var(--line2);transition:color .16s,background .16s,border-color .16s;}
.kdr-vb.v-still:hover{color:#15a35a;border-color:#bfe3cf;background:#eaf6ef;}
.kdr-vb.v-shaky:hover{color:#e8852b;border-color:#f5deba;background:#fff7ec;}
.kdr-vb.v-gone:hover{color:#f0353b;border-color:#f3c6c2;background:#fdecec;}
.kdr-chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:800;border-radius:7px;padding:4px 10px;cursor:pointer;transform-origin:right center;animation:kdrpop .17s cubic-bezier(.2,.7,.3,1);transition:filter .16s;}
.kdr-chip:hover{filter:brightness(.98);}
.kdr-chip i{width:6px;height:6px;border-radius:50%;flex-shrink:0;}
.kdr-chip.v-still{color:#15a35a;background:#eaf6ef;border:1px solid #bfe3cf;}
.kdr-chip.v-shaky{color:#e8852b;background:#fff7ec;border:1px solid #f5deba;}
.kdr-chip.v-gone{color:#f0353b;background:#fdecec;border:1px solid #f3c6c2;}
@keyframes kdrpop{from{opacity:0;transform:scale(.9);}to{opacity:1;transform:none;}}
.kdr-menu-mask{position:fixed;inset:0;z-index:120;}
.kdr-menu{position:fixed;z-index:121;background:var(--card);border:1px solid var(--line2);border-radius:10px;box-shadow:var(--sh-pop);padding:5px;min-width:172px;}
.kdr-menu button{display:flex;align-items:center;gap:9px;width:100%;box-sizing:border-box;font-size:12.5px;font-weight:700;color:var(--danger);background:none;border:none;border-radius:7px;padding:9px 10px;cursor:pointer;text-align:left;transition:background .12s;}
.kdr-menu button:hover{background:var(--danger-soft);}
/* 添加入口:1b 的极简左对齐文字按钮(替代整宽虚线大按钮) */
.kd-track .wl-kd-add, .wl-kd-list .wl-kd-add, .usd-kds-list .wl-kd-add{justify-content:flex-start;align-self:flex-start;width:auto;border:none;background:none;color:var(--t3);font-size:11px;font-weight:600;padding:6px 4px;border-radius:7px;margin-top:2px;box-shadow:none;}
.kd-track .wl-kd-add:hover, .wl-kd-list .wl-kd-add:hover, .usd-kds-list .wl-kd-add:hover{color:var(--blue);background:var(--blue-soft);border:none;}
/* KD 卡:头部贴合 + 列表定高内滚 + 底部固定「添加」栏,整卡高度恒定 */
.kd-track .usd-kds-body.usd-kds-inline{padding:0 12px;border-top:none;max-height:none;}
.kd-track .wl-kd-split.usd-kds-body{flex:0 0 auto;}
.kd-track .usd-kds-list{height:224px;max-height:none;flex:0 0 auto;padding:0;}
.kd-track .kdr:first-of-type{padding-top:6px;}
.kd-track-foot{flex:0 0 auto;display:flex;padding:6px 10px 10px;border-top:1px solid var(--line);}
.kd-add-btn{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;color:var(--t3);background:none;border:none;border-radius:7px;padding:6px 8px;box-shadow:none;transition:color .14s,background .14s;}
.kd-add-btn:hover{color:var(--blue);background:var(--blue-soft);}
/* 头部计数徽标:去掉盒边框,改柔和蓝底,视觉更干净 */
.kd-track .usd-kds-n, .kd-track .usd-kds-n.todo{border:none;background:var(--blue-soft);color:var(--blue);border-radius:7px;padding:2px 9px;}
/* 常驻「逻辑核对」开关 chip:展开态高亮,收起态常态 */
/* 逻辑核对开关:不做高亮激活态——KD 卡是否出现本身即状态,胶囊全程保持默认中性样式 */
.dc-src-cap.kd-cap.on{color:var(--t1);background:var(--card);border-color:var(--line2);box-shadow:none;font-weight:700;}
.dc-src-cap.kd-cap.on svg{color:var(--t1);}
/* KD 头部关闭键与交易置顶坞 X 对齐(同尺寸 22px、末位) */
.kd-close{width:22px;height:22px;}
/* KD 卡:常驻挂载,展开/收起走高度+透明度动画;固定在对话区顶部不随消息滚动 */
.dc-kd-mid.dc-kd-collapsible{background:var(--card);animation:kdcardin .26s var(--ease);}
@keyframes kdcardin{from{opacity:0;transform:translateY(-8px);}to{opacity:1;transform:none;}}
/* 折叠态:一条 Key Driven 摘要 bar,点击展开为完整卡片 */
.dc-kd-barwrap{margin:10px 12px 2px;animation:kdcardin .2s var(--ease);}
.dc-kd-barwrap-pick{margin:0 0 10px;}
.kd-bar{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box;padding:9px 12px;border:1px solid var(--line2);border-radius:12px;background:var(--card);cursor:pointer;transition:border-color .14s,background .14s;}
.kd-bar:hover{border-color:var(--blue-line);background:var(--blue-soft);}
.kd-bar-ic{width:22px;height:22px;border-radius:7px;background:var(--blue);color:#fff;display:grid;place-items:center;flex-shrink:0;}
.kd-bar-t{font-size:13px;font-weight:800;letter-spacing:-.3px;color:var(--t1);white-space:nowrap;}
.kd-bar-n{font-size:11px;font-weight:800;font-family:var(--mono);color:var(--blue);background:var(--blue-soft);border-radius:6px;padding:1px 7px;flex-shrink:0;}
.kd-bar-con{font-style:normal;font-size:11.5px;font-weight:600;color:var(--t3);white-space:nowrap;}
.kd-bar-con.risk{color:var(--danger);}
.kd-bar>svg:last-child{color:var(--t3);flex-shrink:0;}
/* 交易折叠条:与 kd-bar 完全同款,仅把蓝色换成红色(买卖动作色) */
.kd-bar-trade .kd-bar-ic{background:var(--danger,#f0353b);}
.kd-bar-trade:hover{border-color:rgba(240,53,59,.4);background:rgba(240,53,59,.06);}
/* 卡片头部收起按钮(chevd 旋 180° 朝上) */
.kd-collapse{width:24px;height:24px;flex-shrink:0;display:grid;place-items:center;border-radius:7px;color:var(--t3);transition:.12s;}
.kd-collapse svg{transform:rotate(180deg);}
.kd-collapse:hover{background:var(--surface-hover);color:var(--t1);}
/* 历史对话条:对话容器内置顶,不随消息滚动 */
.dc-histbar{position:sticky;top:0;z-index:6;}
/* 抬升态:贴在输入框上方(chips 行内独占一行,类似主输入框提示) */
.dc-histbar.dc-histbar-lift{position:static;margin:0 14px;box-sizing:border-box;}

/* —— 紧凑决策栏：选项分段控件 + 小确认按钮，合并一行 —— */
.wl-kd-split .wl-kd-decide{padding:7px 6px 9px;gap:6px;}
.wl-kd-decbar{display:flex;gap:7px;align-items:stretch;}
.wl-kd-split .wl-kd-sides{flex:1;display:flex;border:1px solid var(--line2);border-radius:8px;overflow:hidden;background:var(--card);}
.wl-kd-split .wl-kd-side{flex:1;display:inline-flex;align-items:center;justify-content:center;padding:7px 0;font-size:12px;white-space:nowrap;border:none;border-left:1px solid var(--line2);border-radius:0;color:var(--t2);background:var(--card);}
.wl-kd-split .wl-kd-side:first-child{border-left:none;}
/* 选中项左右两侧的分隔线并入其色块,消除白缝 */
.wl-kd-split .wl-kd-side.on{border-left-color:transparent;}
.wl-kd-split .wl-kd-side.on + .wl-kd-side{border-left-color:transparent;}
.wl-kd-recbadge{margin-left:4px;font-style:normal;font-size:8.5px;font-weight:800;padding:1px 4px;border-radius:4px;background:rgba(0,0,0,.07);color:var(--t2);}
.wl-kd-side.on .wl-kd-recbadge{background:rgba(255,255,255,.28);color:#fff;}
.wl-kd-split .wl-kd-submit{flex:0 0 auto;width:auto;min-width:122px;padding:0 22px;font-size:13px;font-weight:800;border-radius:8px;box-shadow:0 2px 10px rgba(58,109,240,.26);}

/* —— Brainstorm —— */
.wl-bs-head{flex-shrink:0;display:flex;align-items:center;gap:9px;padding:9px 12px;border-bottom:1px solid var(--line);background:var(--card);}
.wl-bs-ic{width:26px;height:26px;flex-shrink:0;display:grid;place-items:center;border-radius:8px;background:var(--blue-soft);color:var(--blue);}
.wl-bs-title{font-size:12.5px;font-weight:800;letter-spacing:-.2px;color:var(--t1);}
.wl-bs-sub{font-size:10.5px;color:var(--t3);line-height:1.3;}
.wl-bs-msgs{flex:1;min-height:0;overflow-y:auto;padding:11px 12px;display:flex;flex-direction:column;gap:9px;}

.wl-bs-empty{display:flex;flex-direction:column;gap:11px;padding:6px 2px;}
.wl-bs-sources{padding:12px 2px 2px;}
.wl-bs-msg+.wl-bs-sources{margin-top:3px;border-top:1px solid var(--line);}
.wl-bs-srcgroups{display:flex;flex-direction:column;gap:11px;}
/* 开场面板分栏(问一问/调数据):吸在源区顶部,与下方 chip 组拉开层级 */
.wl-bs-srctabs{align-self:flex-start;margin-bottom:2px;}
.wl-bs-srctabs button{padding:5px 14px;font-size:11.5px;}
.wl-bs-empty-t{font-size:11.5px;line-height:1.6;color:var(--t2);text-wrap:pretty;}
.wl-bs-quick{display:flex;flex-wrap:wrap;gap:6px;}

.wl-bs-srcchip{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;border:1px solid var(--line2);border-radius:8px;padding:5px 9px;background:var(--card);transition:.12s;}
.wl-bs-srcchip:hover{filter:brightness(.98);background:var(--surface-sunken);border-color:currentColor;}
.wl-bs-srcchip.disabled,.wl-bs-srcchip:disabled{color:var(--t3)!important;border-color:var(--line2)!important;background:var(--surface-muted);opacity:.55;cursor:not-allowed;}
.wl-bs-srcchip.disabled:hover,.wl-bs-srcchip:disabled:hover{filter:none;background:var(--surface-muted);border-color:var(--line2);}
/* 个股事件/股东 真实数据视图 */
.wl-intel{padding:4px 2px;}
.wl-intel-row{display:flex;gap:12px;padding:11px 12px;border:1px solid var(--line2);border-radius:10px;margin-bottom:8px;align-items:flex-start;}
.wl-intel-date{font-size:12px;color:var(--t2);white-space:nowrap;padding-top:1px;}
.wl-intel-main b{font-size:13px;color:var(--t1);}
.wl-intel-sub{font-size:12px;color:var(--t2);margin-top:3px;line-height:1.5;}
.wl-intel-card{border:1px solid var(--line2);border-radius:10px;padding:12px 14px;margin-bottom:10px;}
.wl-intel-sec{font-size:12px;font-weight:700;color:var(--t2);margin-bottom:8px;}
.wl-intel-foot{font-size:10.5px;color:var(--t3);text-align:center;margin-top:4px;}

.wl-bs-msg{display:flex;gap:7px;max-width:100%;}
.wl-bs-msg.user{justify-content:flex-end;}
.wl-bs-av{width:22px;height:22px;flex-shrink:0;display:grid;place-items:center;border-radius:7px;background:var(--blue-soft);color:var(--blue);margin-top:1px;}
.wl-bs-agent-body{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:8px;font-size:12px;line-height:1.55;color:var(--t1);}
.wl-bs-agent-body>span{display:block;max-width:92%;box-sizing:border-box;background:var(--card);border:1px solid var(--line2);border-radius:11px;padding:8px 11px;text-wrap:pretty;}
.wl-bs-agent-body>.chat-component-slot{align-self:stretch;max-width:100%;}
.wl-bs-agent-body>.tob-live-fc{padding-left:2px;}
.wl-bs-agent-body .md-body{font-size:12px;line-height:1.55;}
.wl-bs-agent-body .md-body>:last-child{margin-bottom:0;}
.wl-bs-bubble{font-size:12px;line-height:1.55;color:var(--t1);background:var(--card);border:1px solid var(--line2);border-radius:11px;padding:8px 11px;text-wrap:pretty;max-width:84%;}
.wl-bs-bubble.user{background:var(--blue);color:#fff;border-color:var(--blue);}
.wl-bs-summon-chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;border:1px solid var(--line2);border-radius:8px;padding:5px 9px;background:var(--card);}
.wl-bs-usermsg{display:flex;flex-direction:column;align-items:flex-end;gap:5px;max-width:88%;}
.wl-bs-msgrefs{display:flex;flex-wrap:wrap;gap:5px;justify-content:flex-end;margin-bottom:5px;}
.wl-bs-msgref{display:inline-flex;align-items:center;gap:4px;max-width:200px;padding:2px 8px;border-radius:7px;background:var(--blue-soft);color:var(--blue);font-size:11.5px;font-weight:600;}
.wl-bs-msgref>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

.wl-bs-brief{flex:1;min-width:0;border:1px solid var(--line2);border-radius:11px;background:var(--card);padding:9px 11px;display:flex;flex-direction:column;gap:7px;max-width:88%;}
.wl-bs-brief-h{display:flex;align-items:center;gap:7px;}
.wl-bs-brief-ic{width:22px;height:22px;flex-shrink:0;display:grid;place-items:center;border-radius:7px;}
.wl-bs-brief-h b{font-size:12px;font-weight:800;color:var(--t1);}
.wl-bs-brief-tag{margin-left:auto;font-size:10px;font-weight:700;border-radius:6px;padding:2px 7px;}
.wl-bs-brief-lines{list-style:none;display:flex;flex-direction:column;gap:5px;margin:0;padding:0;}
.wl-bs-brief-lines li{position:relative;font-size:11.5px;line-height:1.5;color:var(--t2);padding-left:13px;text-wrap:pretty;}
.wl-bs-brief-lines li::before{content:"";position:absolute;left:2px;top:7px;width:4px;height:4px;border-radius:50%;background:var(--line3);}

.wl-bs-composer{flex-shrink:0;border-top:1px solid var(--line);padding:9px 10px;display:flex;flex-direction:column;gap:7px;background:var(--card);position:relative;}
.wl-bs-refquotes{padding:0;}
.wl-bs-ctxrow{display:flex;flex-wrap:wrap;gap:5px;}
.wl-bs-ctx{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:700;border:1px solid var(--line2);border-radius:7px;padding:3px 4px 3px 7px;background:var(--card);}
.wl-bs-ctx button{display:grid;place-items:center;width:15px;height:15px;border-radius:5px;color:inherit;opacity:.7;}
.wl-bs-ctx button:hover{opacity:1;background:rgba(0,0,0,.06);}
.wl-bs-inputrow{display:flex;align-items:center;gap:8px;}
.wl-bs-richbox{position:relative;flex:1;min-width:0;overflow:hidden;border-radius:11px;}
.wl-bs-richbox .wl-bs-input{position:relative;z-index:1;width:100%;background:transparent;}
.wl-bs-richbox .tob-composer-mirror{padding:10px 14px;font-size:13px;line-height:1.4;border:1px solid transparent;}
/* 原生选区属于透明 textarea；拖选时切回真实文字，避免选中不可见副本。 */
.wl-bs-richbox.is-selecting .tob-composer-mirror{visibility:hidden;}
.wl-bs-richbox.is-selecting .wl-bs-input{color:var(--t1)!important;-webkit-text-fill-color:var(--t1)!important;}
.wl-bs-btns{display:flex;align-items:flex-end;gap:6px;flex-shrink:0;}
.wl-bs-summon{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;gap:4px;width:40px;height:40px;font-size:12px;font-weight:700;color:var(--blue);border:1px solid var(--line2);border-radius:11px;background:var(--card);transition:.12s;white-space:nowrap;}
.wl-bs-summon:hover,.wl-bs-summon.on{border-color:var(--blue);background:var(--blue-soft);}
.wl-bs-attach{padding:0;gap:0;overflow:hidden;max-height:380px;}
.wl-bs-menu-close{width:24px;height:24px;flex-shrink:0;display:grid;place-items:center;color:var(--t3);border-radius:7px;transition:.12s;}
.wl-bs-menu-close:hover{background:var(--surface-muted);color:var(--t1);}
.wl-bs-attach-body{padding:11px 12px;display:flex;flex-direction:column;gap:13px;max-height:340px;overflow-y:auto;}
.wl-bs-cap-row{display:flex;align-items:center;justify-content:space-between;}
.wl-bs-attach .wl-bs-menu-grp{gap:8px;}
.wl-bs-attach .wl-bs-menu-items{align-items:center;}
.wl-bs-uphint{font-size:10.5px;color:var(--t3);font-weight:600;}
.wl-bs-input{flex:1;min-width:0;resize:none;border:1px solid var(--line2);border-radius:11px;padding:10px 14px;font-size:13px;line-height:1.4;color:var(--t1);font-family:var(--sans);outline:none;min-height:40px;max-height:96px;}
.wl-bs-input:focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft);}
.wl-bs-send{flex-shrink:0;width:40px;height:40px;display:grid;place-items:center;border-radius:11px;color:#fff;background:var(--blue);transition:.12s;}
.wl-bs-send:hover:not(:disabled){filter:brightness(1.06);}
.wl-bs-send:disabled{opacity:.4;cursor:default;}

.wl-bs-menu{position:absolute;bottom:calc(100% + 7px);left:10px;right:10px;background:var(--card);border:1px solid var(--line2);border-radius:13px;box-shadow:0 14px 40px rgba(20,30,50,.2);padding:11px;display:flex;flex-direction:column;gap:11px;max-height:330px;overflow-y:auto;z-index:40;}
.wl-bs-menu-grp{display:flex;flex-direction:column;gap:7px;}
.wl-bs-menu-cap{font-size:10.5px;font-weight:800;letter-spacing:.3px;color:var(--t3);}
.wl-bs-menu-items{display:flex;flex-wrap:wrap;gap:6px;}
.wl-bs-menu-files{display:flex;flex-direction:column;gap:3px;}
.wl-bs-fileitem{display:flex;align-items:center;gap:7px;width:100%;text-align:left;font-size:11.5px;font-weight:600;color:var(--t1);border-radius:8px;padding:6px 8px;transition:.1s;}
.wl-bs-fileitem svg{color:var(--t3);flex-shrink:0;}
.wl-bs-fileitem span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.wl-bs-fileitem:hover{background:var(--blue-soft);color:var(--blue);}
.wl-bs-fileitem:hover svg{color:var(--blue);}
.wl-bs-menu-empty{font-size:11px;color:var(--t3);padding:4px 2px;}
.wl-bs-menu-tree{display:flex;flex-direction:column;gap:1px;max-height:210px;overflow-y:auto;}
.wl-bs-folderrow{display:flex;align-items:center;gap:6px;width:100%;text-align:left;font-size:11.5px;font-weight:700;color:var(--t1);padding:6px 8px;border-radius:7px;transition:.1s;}
.wl-bs-folderrow:hover{background:var(--blue-soft);}
/* 输入框内嵌「+」附加按钮(个股页右栏对话):无独立边框,悬停/展开时浅蓝底 */
.tob-plus-in{position:absolute;left:8px;top:50%;transform:translateY(-50%);z-index:2;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;color:var(--blue);transition:.12s;}
.tob-plus-in:hover,.tob-plus-in.on{background:var(--blue-soft);}
/* 右栏开场简化:无 tabs 无分组,每批 4 条场景化问题 + 换一批 */
.ac-pick-lite{display:flex;flex-direction:column;gap:9px;padding:2px 2px 0;}
.ac-pick-lite-h{display:flex;align-items:center;justify-content:center;gap:7px;min-height:24px;margin-bottom:12px;}
.ac-pick-lite-t{font-size:17px;font-weight:800;letter-spacing:-.4px;color:var(--t1);}
.ac-pick-lite .ac-pq-flow{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;}
.ac-pick-shuffle{width:22px;height:22px;display:grid;place-items:center;color:var(--t3);border-radius:7px;padding:0;transition:.12s;}
.ac-pick-shuffle:hover{background:var(--blue-soft);color:var(--blue);}
.ac-pick-shuffle:hover{background:var(--blue-soft);}
/* 可以这样问：横排小 chips（手风琴改版：把空间让给对话，不再一人一行大卡） */
.ac-pick-lite .ac-pq-flow{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;}
.ac-pick-lite .ac-pq{width:auto;flex:0 0 auto;max-width:100%;padding:8px 14px;border-radius:999px;font-size:13px;white-space:nowrap;}
.ac-pick-lite .ac-pq-chart{gap:5px;}
.ac-pick-lite .ac-pq-chart svg{flex-shrink:0;color:var(--t3);}
.wl-bs-folderrow>svg{flex-shrink:0;color:var(--t3);}
.wl-bs-folderic{display:inline-flex;flex-shrink:0;}
.wl-bs-foldernm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.wl-bs-folderrow em{font-style:normal;font-size:10px;color:var(--t3);font-weight:700;}

@media(max-width:1240px){.wl-kd-top{flex:none;}.wl-bs{flex:none;min-height:460px;}}

/* ============ Watchlist · 中间显示区（Brainstorm 唤醒切换） ============ */
.wl-disp{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line2);border-radius:14px;overflow:hidden;}
.wl-disp.wl-disp-bare{border:none;border-radius:0;background:transparent;} /* 嵌在已有卡片里(hideHead 嵌入态)：不再自带一层边框,消除双重边框 */
.wl-disp-head{flex-shrink:0;display:flex;align-items:center;gap:10px;padding:11px 14px;border-bottom:1px solid var(--line);background:var(--surface-sunken);}
.wl-disp-ic{width:30px;height:30px;flex-shrink:0;display:grid;place-items:center;border-radius:9px;}
.wl-disp-title{font-size:14px;font-weight:800;letter-spacing:-.3px;color:var(--t1);}
.wl-disp-sub{font-size:11px;color:var(--t3);margin-top:1px;}
.wl-disp-back{flex-shrink:0;display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:700;color:var(--t2);border:1px solid var(--line2);border-radius:8px;padding:6px 11px;transition:.12s;}
.wl-disp-back:hover{color:var(--blue);border-color:rgba(58,109,240,.42);}
.wl-disp-body{flex:1;min-height:0;overflow-y:auto;padding:14px;}
.wl-disp-body.embed{padding:0;overflow:auto;display:flex;flex-direction:column;}
.wl-disp-body.embed>*{flex:1;min-height:0;width:100%;display:flex;flex-direction:column;}
/* 一页纸(OnePager)嵌入：其滚动容器本是横向布局(水平居中 + 顶对齐、自身纵向滚动)，
   须盖过上面 >* 的 column，否则会垂直居中导致顶部裁切、且变成左对齐不居中 */
.wl-disp-body.embed>.op1-embed-wrap{flex-direction:row;justify-content:center;align-items:flex-start;}
/* 内嵌的详情页组件：填满显示区、内部自行滚动 */
.wl-disp-embed .trade-layer,.wl-disp-embed .trade,.wl-disp-embed .cc-app,.wl-disp-embed .chain-wrap,.wl-disp-embed .fc-wrap{height:100%;min-height:0;}
.wl-disp-sec-t{font-size:11px;font-weight:800;letter-spacing:.3px;color:var(--t3);margin:14px 0 8px;}
.wl-disp-sec-t:first-child{margin-top:0;}
.wl-disp-empty{padding:30px 0;text-align:center;color:var(--t3);font-size:13px;}
.wl-disp-lines{list-style:none;display:flex;flex-direction:column;gap:9px;margin:0;padding:0;}
.wl-disp-lines li{position:relative;font-size:13px;line-height:1.6;color:var(--t1);padding-left:16px;text-wrap:pretty;}
.wl-disp-lines li::before{content:"";position:absolute;left:3px;top:8px;width:5px;height:5px;border-radius:50%;background:var(--blue);}
.wl-disp-lines.big li{font-size:13.5px;}

/* 研究报告 */
.wl-disp-reports{display:flex;flex-direction:column;gap:11px;}
.wl-disp-rep{border:1px solid var(--line2);border-radius:11px;padding:12px 13px;display:flex;flex-direction:column;gap:7px;}
.wl-disp-rep-h{display:flex;align-items:center;gap:8px;}
.wl-disp-rep-org{font-size:12.5px;font-weight:800;color:var(--t1);}
.wl-disp-rep-rating{font-size:11px;font-weight:800;border-radius:6px;padding:2px 8px;}
.wl-disp-rep-rating.buy{color:var(--up);background:rgba(240,53,59,.1);}
.wl-disp-rep-rating.neu{color:var(--t2);background:var(--surface-muted);}
.wl-disp-rep-tgt{font-size:11.5px;font-weight:700;color:var(--blue);font-variant-numeric:tabular-nums;}
.wl-disp-rep-new{font-size:9.5px;font-weight:800;color:#fff;background:var(--blue);border-radius:5px;padding:2px 5px;}
.wl-disp-rep-time{font-size:11px;color:var(--t3);}
.wl-disp-rep-title{font-size:13.5px;font-weight:700;color:var(--t1);line-height:1.4;text-wrap:pretty;}
.wl-disp-rep-sum{font-size:12px;line-height:1.6;color:var(--t2);text-wrap:pretty;}
.wl-disp-rep-foot{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;color:var(--t3);}

/* 财务 */
.wl-disp-fin-hl{display:flex;gap:10px;padding:11px 12px;border-radius:11px;background:var(--blue-soft);margin-bottom:6px;}
.wl-disp-fin-hl-tag{flex-shrink:0;align-self:flex-start;font-size:10.5px;font-weight:800;color:#fff;background:#2563eb;border-radius:6px;padding:3px 7px;}
.wl-disp-fin-hl b{font-size:12.5px;font-weight:800;color:var(--t1);}
.wl-disp-fin-hl p{font-size:11.5px;line-height:1.55;color:var(--t2);margin-top:3px;text-wrap:pretty;}
.wl-disp-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;}
.wl-disp-metric{background:var(--surface-hover);border-radius:9px;padding:9px 10px;display:flex;flex-direction:column;gap:3px;}
.wl-disp-metric-k{font-size:10.5px;color:var(--t3);font-weight:600;}
.wl-disp-metric-v{font-size:14px;font-weight:800;color:var(--t1);}
.wl-disp-tbl{border:1px solid var(--line2);border-radius:10px;overflow:hidden;}
.wl-disp-tr{display:grid;grid-template-columns:1.3fr 1fr 1fr;}
.wl-disp-tr>span{padding:9px 12px;font-size:12.5px;color:var(--t1);border-top:1px solid var(--line);}
.wl-disp-tr:first-child>span{border-top:none;}
.wl-disp-tr.head>span{font-size:11px;font-weight:800;color:var(--t3);background:var(--surface-sunken);}
.wl-disp-summary{margin-top:12px;font-size:12.5px;line-height:1.7;color:var(--t2);text-wrap:pretty;}
.chain-ref-menu{position:fixed;z-index:12000;width:232px;padding:6px;background:var(--card);border:1px solid var(--line2);border-radius:11px;box-shadow:0 14px 38px rgba(15,23,42,.2);}
.chain-ref-menu-label{padding:6px 9px 7px;color:var(--t3);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-bottom:1px solid var(--line);}
.chain-ref-menu button{width:100%;display:flex;align-items:center;gap:8px;margin-top:4px;padding:8px 9px;border:none;border-radius:8px;background:transparent;color:var(--t1);font-size:13px;font-weight:650;text-align:left;cursor:pointer;}
.chain-ref-menu button:hover,.chain-ref-menu button:focus-visible{background:rgba(13,148,136,.1);color:#0d7f75;outline:none;}

/* 宏观 */
.wl-disp-macro-hero{display:flex;align-items:baseline;gap:14px;padding:6px 0 12px;border-bottom:1px solid var(--line);}
.wl-disp-macro-val{font-size:38px;font-weight:800;color:var(--t1);letter-spacing:-1px;line-height:1;}
.wl-disp-macro-val em{font-size:16px;font-weight:700;color:var(--t3);font-style:normal;margin-left:3px;}
.wl-disp-macro-meta{display:flex;flex-direction:column;gap:4px;}
.wl-disp-macro-chg{font-size:13px;font-weight:800;}
.wl-disp-macro-chg.up{color:var(--up);}.wl-disp-macro-chg.down{color:var(--down);}
.wl-disp-macro-trend{font-size:12px;font-weight:600;color:var(--t2);}
.wl-disp-macro .wl-disp-lines{margin-top:12px;}
.wl-disp-macro-mini{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;}
.wl-disp-macro-minicard{border:1px solid var(--line2);border-radius:9px;padding:9px 11px;display:flex;flex-direction:column;gap:4px;}
.wl-disp-macro-minilab{font-size:11px;color:var(--t2);font-weight:600;}
.wl-disp-macro-minival{font-size:14px;font-weight:800;color:var(--t1);display:flex;align-items:center;gap:5px;}
.wl-disp-macro-minival i{font-size:10px;font-style:normal;}
.wl-disp-macro-minival i.up{color:var(--up);}.wl-disp-macro-minival i.down{color:var(--down);}

/* 舆情 */
.wl-disp-sent-bars{display:flex;flex-direction:column;gap:10px;}
.wl-disp-sent-bar{display:flex;align-items:center;gap:10px;}
.wl-disp-sent-bar .lab{flex-shrink:0;width:34px;font-size:12px;font-weight:700;color:var(--t2);}
.wl-disp-sent-bar .track{flex:1;height:9px;border-radius:5px;background:var(--line);overflow:hidden;}
.wl-disp-sent-bar .track span{display:block;height:100%;border-radius:5px;transition:width .4s ease;}
.wl-disp-sent-bar .v{flex-shrink:0;width:40px;text-align:right;font-size:12.5px;font-weight:800;color:var(--t1);font-variant-numeric:tabular-nums;}
.wl-disp-ops{display:flex;flex-direction:column;gap:8px;}
.wl-disp-op{display:flex;gap:9px;align-items:flex-start;border:1px solid var(--line2);border-radius:9px;padding:9px 11px;}
.wl-disp-op-lean{flex-shrink:0;font-size:10.5px;font-weight:800;border-radius:6px;padding:2px 7px;}
.wl-disp-op-lean.bull{color:var(--up);background:rgba(240,53,59,.1);}
.wl-disp-op-lean.bear{color:var(--down);background:rgba(21,163,90,.1);}
.wl-disp-op-lean.neutral{color:var(--t2);background:var(--surface-muted);}
.wl-disp-op-txt{font-size:12.5px;line-height:1.55;color:var(--t1);text-wrap:pretty;}

/* 新闻 */
.wl-disp-news{display:flex;flex-direction:column;}
.wl-disp-newsitem{display:flex;gap:10px;align-items:flex-start;padding:11px 2px;border-top:1px solid var(--line);}
.wl-disp-newsitem:first-child{border-top:none;}
.wl-disp-news-cat{flex-shrink:0;font-size:10.5px;font-weight:800;border-radius:6px;padding:3px 8px;}
.wl-disp-news-body{flex:1;min-width:0;}
.wl-disp-news-title{font-size:12.5px;font-weight:700;color:var(--t1);line-height:1.45;text-wrap:pretty;}
.wl-disp-news-desc{font-size:11.5px;line-height:1.55;color:var(--t2);margin-top:3px;text-wrap:pretty;}
.wl-disp-news-date{flex-shrink:0;font-size:11px;color:var(--t3);white-space:nowrap;}

/* —— 交易/组合页导入：可点提示 + 无滚动条工具 —— */
.tob-noscroll{scrollbar-width:none;-ms-overflow-style:none;}
.tob-noscroll::-webkit-scrollbar{display:none;width:0;height:0;}
.tob-clk{position:relative;display:inline-grid;place-items:center;color:var(--t3);cursor:help;}
.tob-clk:hover{color:var(--blue);}
.tob-clk-tip{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%) translateY(3px);background:#1f2530;color:#fff;font-size:11px;font-weight:600;line-height:1.4;padding:6px 10px;border-radius:7px;white-space:nowrap;opacity:0;visibility:hidden;transition:opacity .14s,transform .14s;z-index:60;pointer-events:none;box-shadow:0 6px 18px rgba(15,20,30,.22);}
.tob-clk-tip::after{content:"";position:absolute;top:100%;left:50%;transform:translateX(-50%);border:5px solid transparent;border-top-color:#1f2530;}
.tob-clk:hover .tob-clk-tip{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0);}

/* ── admin1: brainstorm 保存 / 错误提示 / 重试(并入,保留)── */
.tob-err-notice{display:flex;align-items:center;gap:10px;font-size:12.5px;color:#e8852b;background:rgba(232,133,43,.10);border-radius:6px;padding:5px 10px;margin-top:2px;}
.tob-retry-btn{flex-shrink:0;font-size:12px;font-weight:600;color:#3a6df0;background:var(--blue-soft);border:none;border-radius:6px;padding:3px 10px;cursor:pointer;transition:.13s;}
.tob-retry-btn:hover{background:#3a6df0;color:#fff;}
.tob-savenote-btn{font-size:12px;color:#6b7280;background:none;border:1px solid var(--line2);border-radius:6px;padding:2px 9px;cursor:pointer;margin-top:4px;display:inline-block;transition:.13s;}
.tob-savenote-btn:hover{border-color:#3a6df0;color:#3a6df0;}
.tob-savenote-row{display:inline-flex;align-items:center;gap:6px;margin-top:4px;}
.tob-savenote-input{font-size:12px;border:1px solid var(--line3);border-radius:6px;padding:2px 8px;outline:none;width:160px;}
.tob-savenote-input:focus{border-color:#3a6df0;}
.tob-savenote-cancel{font-size:12px;color:#9ca3af;background:none;border:none;cursor:pointer;padding:2px 4px;}
.tob-savenote-ok{font-size:12px;color:#15a35a;margin-top:4px;display:inline-block;}
.tob-savenote-row{display:flex;align-items:center;gap:6px;margin-top:8px;padding:0 2px;}


/* ── geeshare 定制样式(v2 tob.css 换版漏带,补回:模型选择器/聊天 md/工具块/侧栏子目录/消息meta)── */
.lib-sub{display:flex;flex-direction:column;gap:1px;flex:0 0 auto;}
.lib-subhead .lib-iname{color:var(--t1);font-weight:600;flex:0 1 auto;}
.lib-subn{position:absolute;right:32px;top:50%;transform:translateY(-50%);font-size:11px;color:var(--t3);font-weight:600;text-align:right;}
.lib-subchild{padding-left:8px;}   /* 子文件夹内的文件与文件夹行同缩进,层级不再后退 */
.lib-sessionlink{color:inherit;text-decoration:none;}
.lib-sessionlink .lib-linkmark{position:absolute;right:9px;color:var(--t3);font-size:11px;opacity:.65;}
.lib-sessionlink:hover .lib-linkmark{color:var(--blue);opacity:1;}
/* 对话历史:子任务会话嵌套行(缩进 + 弱化;└ 连接符)——main f288109e,design v6 合并保留 */
.lib-item.lib-childsess{padding-left:16px;font-size:12px;}
.lib-item.lib-childsess .lib-iname{color:var(--t2);}
.lib-item.lib-childsess.cur .lib-iname{color:var(--t1);}
.lib-childmark{flex-shrink:0;margin-right:5px;font-size:10px;color:var(--t3);line-height:1;}
.tob-model{position:relative;display:inline-flex;}
.tob-model-btn{display:inline-flex;align-items:center;gap:5px;height:34px;padding:0 9px;border-radius:10px;font-size:12.5px;font-weight:600;color:var(--t2);background:transparent;transition:.13s;white-space:nowrap;}
.tob-model-btn:hover,.tob-model-btn.open{color:var(--blue);background:rgba(58,109,240,.1);}
.tob-model-caret{font-size:9px;opacity:.7;transition:transform .15s;}
.tob-model-btn.open .tob-model-caret{transform:rotate(180deg);}
.tob-model-menu{position:absolute;top:calc(100% + 8px);right:0;min-width:196px;background:var(--card);border:1px solid var(--line2);border-radius:12px;box-shadow:0 10px 34px rgba(20,25,35,.16);padding:6px;z-index:60;animation:tobModelIn .15s ease;}
.tob-model-menu.up{top:auto;bottom:calc(100% + 8px);}
@keyframes tobModelIn{from{opacity:0;transform:translateY(4px);}to{opacity:1;transform:translateY(0);}}
.tob-model-opt{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:9px;cursor:pointer;transition:.1s;text-align:left;}
.tob-model-opt:hover{background:var(--surface-hover);}
.tob-model-opt.sel{background:rgba(58,109,240,.1);}
.tob-model-check{display:none;}
.tob-model-text{display:flex;flex-direction:column;gap:1px;min-width:0;text-align:left;}
.tob-model-label{font-size:13px;font-weight:600;color:var(--t1);line-height:1.25;}
.tob-model-opt.sel .tob-model-label{color:var(--blue);}
.tob-model-desc{font-size:11px;color:var(--t3);line-height:1.25;}
.tob-tool-blk{border:1px solid var(--line2);border-radius:10px;overflow:hidden;margin:4px 0;}
.tob-tool-hd{display:flex;align-items:center;gap:7px;padding:8px 12px;background:var(--bg2);cursor:pointer;user-select:none;font-size:12.5px;}
.tob-tool-lbl{font-weight:700;color:var(--t2);}
.tob-tool-tog{margin-left:auto;color:var(--t3);font-size:11px;}
.tob-tool-code{font-family:var(--mono);font-size:11.5px;line-height:1.6;padding:10px 14px;background:#1a1d21;color:#d0d5dd;overflow-x:auto;white-space:pre;border-top:1px solid var(--line2);}
.tob-tool-out{padding:10px 14px;background:var(--card);border-top:1px solid var(--line2);}
.tob-tool-txt{font-family:var(--mono);font-size:11.5px;line-height:1.6;color:var(--t2);white-space:pre-wrap;word-break:break-all;max-height:220px;overflow-y:auto;}
.tob-tool-tbl{width:100%;border-collapse:collapse;font-size:11.5px;}
.tob-tool-tbl th{background:var(--bg2);color:var(--t2);font-weight:600;padding:4px 8px;text-align:left;border-bottom:1px solid var(--line);}
.tob-tool-tbl td{padding:3px 8px;border-bottom:1px solid var(--line);color:var(--t1);}
.tob-tool-tbl tr:last-child td{border-bottom:none;}
.tob-caret{display:inline-block;width:6px;color:var(--blue);font-weight:700;animation:tobBk 1s steps(2) infinite;margin-left:1px;}
.tob-msg-meta{font-size:10.5px;color:var(--t3);margin-top:5px;font-family:var(--mono);display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
/* 单条 AI 回复操作条:复制 / 重新生成 / 赞 / 踩 / 分享 —— 位于 meta 行下方 */
.tob-msg-acts{display:flex;gap:1px;align-items:center;margin-left:-4px;}
.tob-msg-act{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;border:none;border-radius:7px;background:transparent;color:var(--t3);cursor:pointer;transition:background .14s,color .14s;}
.tob-msg-act:hover{background:var(--surface-muted,rgba(120,130,145,.12));color:var(--t1);}
.tob-msg-act.on{color:#3a6df0;}
.tob-msg-act.on svg{fill:rgba(58,109,240,.14);}
.tob-msg-act.tob-msg-fork{position:relative;}
.tob-msg-act.tob-msg-fork::after{content:attr(data-tooltip);position:absolute;left:50%;bottom:31px;z-index:48;max-width:180px;padding:5px 8px;border-radius:6px;background:#20242b;color:#fff;font-family:var(--font);font-size:10.5px;font-weight:600;line-height:1.2;white-space:nowrap;pointer-events:none;opacity:0;visibility:hidden;transform:translate(-50%,2px);transition:opacity .06s ease,transform .06s ease,visibility 0s linear .06s;box-shadow:0 5px 16px rgba(15,20,28,.22);}
.tob-msg-act.tob-msg-fork:hover::after,.tob-msg-act.tob-msg-fork:focus-visible::after{opacity:1;visibility:visible;transform:translate(-50%,0);transition-delay:0s;}
.tob-fork-menu{position:absolute;left:0;bottom:34px;z-index:45;width:min(390px,calc(100vw - 32px));padding:10px;border:1px solid var(--line2);border-radius:14px;background:var(--card);box-shadow:0 18px 50px rgba(20,28,45,.2);color:var(--t1);}
.tob-fork-rail-editor{left:auto;right:8px;top:auto;bottom:8px;z-index:55;}
.tob-fork-menu-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:2px 3px 9px;}
.tob-fork-menu-head>div{display:flex;min-width:0;flex-direction:column;gap:2px;text-align:left;}
.tob-fork-menu-head b{font-size:13px;font-weight:800;}
.tob-fork-menu-head span{font-size:10.5px;line-height:1.35;color:var(--t3);}
.tob-fork-menu-head>button{flex-shrink:0;width:22px;height:22px;border-radius:6px;color:var(--t3);font-size:17px;line-height:1;}
.tob-fork-menu-head>button:hover{background:var(--line);color:var(--t1);}
.tob-fork-add{width:100%;margin-top:5px;padding:7px;border-top:1px solid var(--line2);color:var(--blue);font-size:11.5px;font-weight:700;text-align:center;}
.tob-fork-add:hover{background:var(--blue-soft);border-radius:8px;}
.tob-fork-editor-list{display:flex;max-height:390px;flex-direction:column;gap:8px;overflow:auto;padding:1px 2px 3px;}
.tob-fork-editor-row{display:flex;flex-direction:column;gap:5px;padding:8px;border:1px solid var(--line2);border-radius:10px;background:var(--bg);}
.tob-fork-editor-title{display:flex;align-items:center;gap:7px;}
.tob-fork-editor-title input{min-width:0;flex:1;border:1px solid var(--line2);border-radius:7px;background:var(--card);padding:6px 8px;color:var(--t1);font-size:11.5px;font-weight:700;outline:none;}
.tob-fork-editor-title button{flex-shrink:0;color:var(--danger);font-size:10.5px;}
.tob-fork-clone-title{width:100%;border:1px solid var(--line2);border-radius:7px;background:var(--card);padding:6px 8px;color:var(--t1);font-size:10.5px;font-weight:650;outline:none;}
.tob-fork-editor-row textarea{min-height:66px;resize:vertical;border:1px solid var(--line2);border-radius:7px;background:var(--card);padding:7px 8px;color:var(--t2);font-size:10.5px;line-height:1.45;outline:none;}
.tob-fork-editor-action{display:flex;align-items:center;gap:8px;}
.tob-fork-editor-action label{display:flex;min-width:0;flex:1;align-items:center;gap:6px;color:var(--t3);font-size:10.5px;}
.tob-fork-editor-action label>span{flex-shrink:0;}
.tob-fork-editor-action select{min-width:0;flex:1;border:1px solid var(--line2);border-radius:7px;background:var(--card);padding:5px 24px 5px 7px;color:var(--t1);font-size:10.5px;outline:none;}
.tob-fork-savehint{padding:7px 8px;border-radius:7px;background:rgba(217,119,6,.08);color:#b56506;font-size:10.5px;line-height:1.45;}
.tob-fork-titlehint{overflow:hidden;padding:0 2px;color:var(--t3);font-size:9.5px;line-height:1.35;text-overflow:ellipsis;white-space:nowrap;}
.tob-fork-editor-title input:focus,.tob-fork-clone-title:focus,.tob-fork-editor-row textarea:focus,.tob-fork-editor-action select:focus{border-color:rgba(58,109,240,.6);box-shadow:0 0 0 2px rgba(58,109,240,.08);}
.tob-fork-add:disabled{opacity:.45;cursor:not-allowed;}
.tob-fork-editor-actions{display:flex;justify-content:flex-end;gap:7px;margin-top:7px;}
.tob-fork-editor-actions button{min-width:58px;padding:6px 10px;border:1px solid var(--line2);border-radius:7px;color:var(--t2);font-size:11.5px;font-weight:700;}
.tob-fork-editor-actions button.primary{border-color:var(--blue);background:var(--blue);color:#fff;}
.tob-msg-act:disabled{opacity:.32;cursor:default;}
.tob-msg-act:disabled:hover{background:transparent;color:var(--t3);}
.tob-msg-act.sm{width:20px;height:20px;font-size:16px;line-height:1;}
.tob-msg-vers{display:inline-flex;align-items:center;gap:1px;margin-right:2px;}
.tob-msg-vnum{font-size:11px;color:var(--t3);font-family:var(--mono);min-width:24px;text-align:center;font-variant-numeric:tabular-nums;}
.tob-tools-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:999px;border:1px solid rgba(58,109,240,.25);background:rgba(58,109,240,.06);font-size:10.5px;color:#3a6df0;font-family:var(--mono);cursor:pointer;transition:background .15s;}
.tob-tools-chip::before{content:"⚙";font-size:10px;opacity:.7;}
.tob-tools-chip:hover{background:rgba(58,109,240,.14);}
.tob-credict-detail{position:relative;font-family:var(--font);}
.tob-credict-detail>summary{display:inline-flex;align-items:center;padding:2px 9px;border:1px solid rgba(36,154,109,.25);border-radius:999px;background:rgba(36,154,109,.07);color:#16835d;font-family:var(--mono);font-size:10.5px;font-weight:700;cursor:pointer;list-style:none;}
.tob-credict-detail>summary::-webkit-details-marker{display:none;}
.tob-credict-detail[open]>summary{background:rgba(36,154,109,.14);}
.tob-credict-pop{position:absolute;left:0;bottom:calc(100% + 7px);z-index:52;width:270px;padding:12px;border:1px solid var(--line2);border-radius:12px;background:var(--card);box-shadow:0 14px 40px rgba(20,28,45,.18);color:var(--t1);}
.tob-credict-title{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:12px;}
.tob-credict-title strong{color:#16835d;font-family:var(--mono);font-size:12px;}
.tob-credict-kind{margin-top:3px;color:var(--t3);font-size:10px;}
.tob-credict-grid{display:grid;grid-template-columns:1fr auto;gap:5px 12px;margin-top:10px;padding-top:9px;border-top:1px solid var(--line2);font-size:10.5px;}
.tob-credict-grid span{color:var(--t2);}.tob-credict-grid b{font-family:var(--mono);font-weight:650;text-align:right;}
.tob-credict-tokens{margin-top:9px;padding-top:8px;border-top:1px solid var(--line2);color:var(--t3);font-family:var(--mono);font-size:9.5px;line-height:1.5;}
.tob-credict-actions{display:flex;flex-wrap:wrap;gap:4px 7px;margin-top:6px;color:var(--t2);font-size:9.5px;}
.tob-credict-actions span{white-space:nowrap;}
.tob-tools-body{counter-reset:tool-step;}
.tob-tools-body .tob-tool-blk{margin:0;border:none;border-radius:0;border-bottom:1px solid var(--line);counter-increment:tool-step;}
.tob-tools-body .tob-tool-blk:last-child{border-bottom:none;}
.tob-tools-body .tob-tool-hd{background:var(--surface-sunken);border-bottom:none;padding:12px 20px;gap:10px;}
.tob-tools-body .tob-tool-hd::before{content:counter(tool-step);display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:var(--blue-soft);color:#2563eb;font-size:10px;font-weight:800;font-family:var(--mono);flex-shrink:0;}
.tob-tools-body .tob-tool-lbl{font-size:13px;font-weight:700;color:var(--t1);}
.tob-tools-body .tob-tool-code{border-radius:0;border-top:1px solid #222;padding:14px 20px;max-height:200px;}
.tob-tools-body .tob-tool-out{background:var(--surface-sunken);border-top:1px dashed var(--line);padding:12px 20px;}
.tob-msg-meta.live{color:var(--blue);}
.tob-tok-pulse{animation:tobPulse 1.2s ease-in-out infinite;}
.tob-md-raw{white-space:pre-wrap;font-size:14.5px;line-height:1.65;}
.tob-md-body{font-size:14.5px;line-height:1.7;}
.tob-md-p{margin:0 0 10px;}
.tob-md-br{height:6px;}
.tob-md-pre{background:#1a1d21;color:#e8eaf0;padding:10px 14px;border-radius:8px;overflow-x:auto;font-size:12.5px;line-height:1.6;margin:8px 0;}
.tob-md-code{}
.tob-md-ic{font-family:var(--mono);font-size:12.5px;background:var(--surface-muted);padding:1px 4px;border-radius:3px;color:var(--t1);}
.tob-md-h{font-weight:700;color:var(--t1);line-height:1.4;}
.tob-md-h1{font-size:17px;margin:14px 0 7px;}
.tob-md-h2{font-size:15px;margin:12px 0 6px;}
.tob-md-h3{font-size:13.5px;margin:10px 0 5px;}
.tob-md-ul,.tob-md-ol{padding-left:18px;margin:4px 0 10px;}
.tob-md-ul li,.tob-md-ol li{margin-bottom:3px;}
.tob-md-hr{border:none;border-top:1px solid var(--line2);margin:12px 0;}
.tob-md-a{color:var(--blue);text-decoration:none;}.tob-md-a:hover{text-decoration:underline;}

/* 登录/注册弹窗(auth-modal.jsx) */
.auth-reason{font-size:12.5px;color:var(--t2);background:var(--blue-soft,var(--blue-soft));border-radius:8px;padding:8px 10px;margin-bottom:12px;}
.auth-tabs{display:flex;gap:18px;margin-bottom:14px;border-bottom:1px solid var(--line2);}
.auth-tabs button{padding:6px 2px;font-size:14px;font-weight:600;color:var(--t3);background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer;}
.auth-tabs button.on{color:var(--blue);border-bottom-color:var(--blue);}
.auth-seg{display:flex;gap:6px;background:var(--line,var(--surface-muted));border-radius:9px;padding:3px;margin-bottom:12px;}
.auth-seg button{flex:1;padding:6px 0;font-size:12.5px;color:var(--t2);background:none;border:none;border-radius:7px;cursor:pointer;}
.auth-seg button.on{background:var(--card);color:var(--blue);font-weight:600;box-shadow:0 1px 3px rgba(0,0,0,.08);}
.auth-code-row{display:flex;gap:8px;}
.auth-code-row .tob-input{flex:1;}
.auth-sendbtn{flex:0 0 auto;padding:0 12px;font-size:12.5px;color:var(--blue);background:var(--blue-soft,var(--blue-soft));border:1px solid transparent;border-radius:8px;cursor:pointer;white-space:nowrap;}
.auth-sendbtn:disabled{color:var(--t3);background:var(--line,var(--surface-muted));cursor:not-allowed;}
.auth-err,.am-err{font-size:12.5px;color:var(--up,#f0353b);background:rgba(240,53,59,.1);border-radius:8px;padding:8px 10px;margin-top:10px;}
.am-err{margin:0 0 12px;}
.auth-labelrow{display:flex;align-items:baseline;justify-content:space-between;}
.auth-link{font-size:12.5px;color:var(--blue);background:none;border:none;padding:0;cursor:pointer;font-weight:600;}
.auth-link:hover{text-decoration:underline;}
.auth-switch{margin-top:14px;text-align:center;font-size:12.5px;color:var(--t3);}

/* 完全登录墙(未登录全屏门,tob-app) */
.tob-authwall{position:fixed;inset:0;display:grid;place-items:center;background:rgba(245,246,248,.42);backdrop-filter:blur(10px) saturate(1.05);-webkit-backdrop-filter:blur(10px) saturate(1.05);z-index:50;}
.tob-authwall.solid{background:var(--bg,#f5f6f8);backdrop-filter:none;-webkit-backdrop-filter:none;}
/* 登录墙后面真实渲染演示工作台(模糊透出真实比例的界面样式);遮罩层吹掉全部交互 */
.tob-locked > *:not(.tob-authwall){pointer-events:none;user-select:none;}
.tob-authwall-card{position:relative;z-index:1;width:340px;max-width:88vw;background:var(--card);border:1px solid var(--line2);border-radius:16px;box-shadow:0 12px 48px rgba(20,25,35,.16);padding:36px 28px;text-align:center;}
.tob-authwall-brand{font-size:26px;font-weight:800;color:var(--t1);margin-bottom:18px;letter-spacing:-.3px;}
.tob-authwall-brand span{color:var(--blue);}
.tob-authwall-t{font-size:16px;font-weight:700;color:var(--t1);margin-bottom:8px;}
.tob-authwall-sub{font-size:13px;color:var(--t3);margin-bottom:22px;line-height:1.6;}

/* 第三方登录(Google)*/
.auth-or{display:flex;align-items:center;gap:10px;margin:14px 0 10px;color:var(--t3);font-size:12px;}
.auth-or::before,.auth-or::after{content:"";flex:1;height:1px;background:var(--line2);}
.auth-oauth{width:100%;display:flex;align-items:center;justify-content:center;gap:8px;
  border:1px solid var(--line2);background:var(--card);color:var(--t1b);font-size:14px;font-weight:600;
  padding:10px 12px;border-radius:10px;cursor:pointer;transition:background .14s,border-color .14s;}
.auth-oauth:hover{background:var(--surface-sunken);border-color:var(--line3);}
.auth-oauth .g-mark{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;
  border-radius:50%;background:var(--card);border:1px solid var(--line2);color:#4285f4;font-weight:800;font-size:12px;
  font-family:Arial,system-ui;line-height:1;}

/* 管理控制台(tob-admin.jsx)*/
.adm-overlay{position:fixed;inset:0;background:rgba(10,16,30,.5);backdrop-filter:blur(3px);z-index:10000;display:flex;align-items:flex-start;justify-content:center;padding:48px 16px;overflow:auto;}
.adm-panel{width:min(980px,96vw);background:var(--card);border-radius:16px;box-shadow:0 24px 70px rgba(8,14,28,.34);overflow:hidden;position:relative;}
.adm-head{display:flex;align-items:center;gap:10px;padding:16px 20px;background:#0f1117;color:#e8edf5;}
.adm-head b{font-size:15px;font-weight:700;}
.adm-head .adm-sub{font-size:12px;color:#9aa6b6;}
.adm-refresh{margin-left:auto;background:rgba(255,255,255,.08);border:none;color:#cbd5e1;width:30px;height:30px;border-radius:8px;cursor:pointer;font-size:15px;}
.adm-refresh:hover{background:rgba(255,255,255,.16);color:#fff;}
.adm-close{background:rgba(255,255,255,.08);border:none;color:#cbd5e1;width:30px;height:30px;border-radius:8px;cursor:pointer;font-size:14px;}
.adm-close:hover{background:rgba(255,255,255,.16);color:#fff;}
.adm-tabs{display:flex;gap:4px;padding:8px 20px 0;border-bottom:1px solid var(--line);background:var(--card);}
.adm-tabs button{position:relative;padding:9px 13px 11px;border:none;background:transparent;color:var(--t3);font-size:12.5px;font-weight:700;cursor:pointer;}
.adm-tabs button:hover{color:var(--t1);}
.adm-tabs button.on{color:var(--blue);}
.adm-tabs button.on::after{content:"";position:absolute;left:10px;right:10px;bottom:-1px;height:2px;border-radius:2px 2px 0 0;background:var(--blue);}
.adm-body{padding:18px 20px 22px;}
.adm-stats{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:18px;}
.adm-stat{background:var(--blue-soft);border:1px solid var(--line);border-radius:12px;padding:12px 10px;text-align:center;}
.adm-stat-n{display:block;font-family:var(--mono);font-size:22px;font-weight:800;color:var(--t1);line-height:1.1;}
.adm-stat-l{display:block;font-size:11.5px;color:var(--t3);margin-top:4px;}
.adm-table-wrap{border:1px solid var(--line);border-radius:12px;overflow:hidden;}
.adm-table{width:100%;border-collapse:collapse;font-size:13px;}
.adm-table th{background:var(--surface-hover);text-align:left;padding:9px 12px;font-weight:700;color:var(--t2);font-size:12px;border-bottom:1px solid var(--line);}
.adm-table td{padding:9px 12px;border-bottom:1px solid var(--line);color:var(--t1);}
.adm-table tr:last-child td{border-bottom:none;}
.adm-table tr:hover td{background:var(--surface-sunken);}
.adm-acct{font-family:var(--mono);}
.adm-uid{font-family:var(--mono);font-size:11px;color:var(--t3);}
.adm-when{font-family:var(--mono);font-size:11.5px;color:var(--t2);white-space:nowrap;}
.adm-empty{text-align:center;color:var(--t3);padding:24px 12px;}
.adm-select{border:1px solid var(--line);border-radius:8px;padding:5px 8px;font-size:12.5px;color:var(--t1);background:var(--card);cursor:pointer;outline:none;}
.adm-select:focus{border-color:#93b4f5;box-shadow:0 0 0 3px rgba(37,99,235,.1);}
.adm-note{margin-top:14px;font-size:11.5px;color:var(--t3);line-height:1.6;}
.adm-credit-stats{grid-template-columns:repeat(3,1fr);}
.adm-credit-table-wrap{overflow-x:auto;}
.adm-credit-table{min-width:880px;}
.adm-credit{font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:right;color:var(--t2);}
.adm-credit-30{font-weight:800;color:var(--t1);}
.adm-error{margin-bottom:12px;padding:9px 11px;border-radius:9px;background:var(--red-soft,#fff0f0);color:var(--down,#c33);font-size:12px;}
.adm-toast{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);background:#0f1117;color:#fff;font-size:12.5px;padding:8px 16px;border-radius:999px;box-shadow:0 8px 24px rgba(0,0,0,.25);}
@media (max-width:620px){ .adm-stats,.adm-credit-stats{grid-template-columns:repeat(2,1fr);} }
.auth-hint{font-size:11.5px;color:var(--t3);margin-top:2px;line-height:1.5;}

/* 一体化登录弹窗(auth-modal.jsx · 主流登录页结构) */
.auth-card{width:400px;max-width:100%;position:relative;display:block;padding:32px 32px 24px;overflow-y:auto;}
.auth-close{position:absolute;top:14px;right:14px;width:28px;height:28px;border-radius:8px;display:grid;place-items:center;color:var(--t3);background:none;border:none;cursor:pointer;}
.auth-close:hover{background:var(--line);color:var(--t1);}
.am-brand{font-size:26px;font-weight:800;color:var(--t1,var(--t1));letter-spacing:-1.2px;text-align:center;}
.am-brand b{font-weight:800;color:var(--t1);}
.am-brand i{font-style:normal;color:var(--blue,#3a6df0);}
.am-sub{font-size:12.5px;color:var(--t3);text-align:center;margin:4px 0 20px;}
.am-field{margin-bottom:12px;}
/* 统一输入框容器:区号选择器 / 获取验证码 内嵌在同一个框内(主流登录页样式) */
.auth-inwrap{display:flex;align-items:center;height:44px;border:1px solid var(--line2);border-radius:10px;background:var(--surface-hover);transition:.13s;}
.auth-inwrap:focus-within{background:var(--card);border-color:var(--blue,#3a6df0);}
.auth-in{flex:1;min-width:0;height:100%;border:none;outline:none;background:transparent;padding:0 14px;font-size:14px;color:var(--t1);border-radius:10px;}
.auth-in.mono{font-family:var(--mono);}
.auth-cc-wrap{position:relative;flex:0 0 auto;align-self:stretch;display:flex;}
.auth-cc{display:flex;align-items:center;gap:6px;padding:0 10px 0 14px;font-size:13.5px;font-weight:600;color:var(--t1);background:none;border:none;border-radius:10px 0 0 10px;cursor:pointer;}
.auth-cc:hover{color:var(--blue);}
.auth-cc svg{color:var(--t3);}
.auth-cc:hover svg{color:var(--blue);}
.auth-divline{flex:0 0 auto;width:1px;height:18px;background:var(--line2);}
.auth-sendlink{flex:0 0 auto;align-self:stretch;border:none;background:none;color:var(--blue,#3a6df0);font-size:13px;font-weight:600;padding:0 14px;cursor:pointer;white-space:nowrap;border-radius:0 10px 10px 0;}
.auth-sendlink:hover:not(:disabled){opacity:.8;}
.auth-sendlink:disabled{color:var(--t3);cursor:default;}
.auth-cc-drop{position:absolute;top:47px;left:0;z-index:5;width:196px;max-height:264px;overflow-y:auto;background:var(--card);border:1px solid var(--line2);border-radius:10px;box-shadow:0 12px 32px rgba(20,25,35,.14);padding:4px;}
.auth-cc-item{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;font-size:13px;color:var(--t1);background:none;border:none;border-radius:7px;cursor:pointer;text-align:left;}
.auth-cc-item:hover{background:var(--surface-hover);}
.auth-cc-item.on{color:var(--blue);font-weight:700;}
.auth-cc-item .mono{color:var(--t3);font-size:12.5px;}
.auth-cc-item.on .mono{color:var(--blue);}
/* 弹窗内输入框聚焦:单层蓝边,去外圈光晕(避免双重选框观感) */
.auth-card .tob-input:focus{background:var(--card);border-color:var(--blue,#3a6df0);box-shadow:none;outline:none;}
.auth-card .g-mark{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border:none;background:none;}
.auth-mainbtn{width:100%;justify-content:center;height:40px;font-size:14.5px;margin-top:4px;}
.auth-toggle-row{margin-top:12px;display:flex;justify-content:center;gap:18px;}
.auth-invite-tag{flex:0 0 auto;align-self:center;margin-right:12px;font-size:11px;color:var(--t3);background:rgba(58,109,240,.08);padding:2px 8px;border-radius:999px;white-space:nowrap;}
.auth-wait{margin-top:12px;padding:9px 12px;border:1px dashed var(--line2);border-radius:10px;text-align:center;font-size:12px;color:var(--t2);line-height:1.6;}
.auth-wait .auth-link{font-size:12px;}
.auth-wait-ok{color:var(--green,#15a35a);}
.auth-waitbtn{width:100%;display:flex;align-items:center;justify-content:center;height:40px;font-size:14px;font-weight:600;margin-top:10px;background:rgba(58,109,240,.06);border:1px solid var(--blue,#3a6df0);color:var(--blue,#3a6df0);border-radius:10px;cursor:pointer;}
.auth-waitbtn:hover:not(:disabled){background:rgba(58,109,240,.12);}
.auth-waitbtn:disabled{opacity:.6;cursor:default;}
.am-step{animation:amStepIn .28s cubic-bezier(.4,0,.2,1);}
@keyframes amStepIn{from{opacity:0;transform:translateX(26px);}to{opacity:1;transform:none;}}
.am-invite-title{margin-top:6px;text-align:center;font-size:16px;font-weight:700;color:var(--t1);}
.am-invite-desc{margin:6px 0 16px;text-align:center;font-size:12.5px;color:var(--t2);line-height:1.7;word-break:break-all;}
.auth-agree{margin-top:18px;text-align:center;font-size:11.5px;color:var(--t3);line-height:1.7;}
.auth-a{font-size:11.5px;color:var(--t2);background:none;border:none;padding:0;cursor:pointer;}
.auth-a:hover{color:var(--blue);}
.auth-oauth.off{color:#9aa3b2;}
.auth-oauth.off .g-mark{color:#9aa3b2;filter:grayscale(1);}
.tob-skill-chip{display:inline-flex;align-items:center;gap:3px;font-size:11px;color:#7c4dff;background:var(--violet-soft);border:1px solid #e3d8ff;border-radius:999px;padding:1px 8px;font-weight:600;}

/* ── 应用内 HTML 查看器(html-viewer.jsx):覆盖主内容区(左导航不隐藏;底层 View 不卸载,返回即恢复)── */
.tob-view { position: relative; }
.hv-pane { position: absolute; inset: 0; z-index: 50; display: flex; flex-direction: column; min-height: 0; background: var(--card); }
.hv-top { display: flex; align-items: center; gap: 10px; padding: 8px 14px; border-bottom: 1px solid var(--line2); flex-shrink: 0; }
.hv-back { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; font-weight: 600; color: var(--t1);
           padding: 5px 11px; border: 1px solid var(--line2); border-radius: 8px; background: var(--card); cursor: pointer; }
.hv-back:hover { background: var(--surface-hover); }
.hv-title { flex: 1; min-width: 0; font-size: 13px; font-weight: 600; color: var(--t1); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.hv-newtab { font-size: 11px; color: var(--t2); text-decoration: none; padding: 4px 9px; border: 1px solid var(--line2); border-radius: 6px; }
.hv-newtab:hover { color: #3a6df0; border-color: var(--blue-line); }
.hv-frame { flex: 1; width: 100%; border: none; background: var(--card); }
/* 私有内容页(跨用户访问他人私有会话产物)*/
.hv-private { align-items: center; justify-content: center; background: var(--bg); }
.hv-private-card { max-width: 420px; width: min(420px, 88vw); text-align: center; padding: 40px 34px;
  background: var(--card); border: 1px solid var(--line2); border-radius: 18px; box-shadow: 0 10px 34px rgba(0,0,0,.06); }
.hv-private-lock { width: 60px; height: 60px; margin: 0 auto 18px; border-radius: 50%; display: flex; align-items: center; justify-content: center;
  color: var(--t2); background: var(--surface-sunken, #f2f5f9); }
.hv-private-title { font-size: 19px; font-weight: 700; color: var(--t1); margin-bottom: 10px; }
.hv-private-desc { font-size: 13.5px; line-height: 1.7; color: var(--t2); margin-bottom: 22px; }
.hv-private-desc code { font-family: var(--mono, ui-monospace, Menlo, Consolas, monospace); font-size: 12px; background: var(--surface-sunken, #f2f5f9); padding: 1px 6px; border-radius: 5px; }
.hv-private-actions { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }
.hv-private-btn { font-size: 13px; font-weight: 600; padding: 8px 18px; border-radius: 9px; cursor: pointer;
  border: 1px solid var(--line2); background: var(--card); color: var(--t1); }
.hv-private-btn:hover { border-color: var(--blue-line); color: var(--blue, #3a6df0); }
.hv-private-primary { background: var(--blue, #3a6df0); border-color: var(--blue, #3a6df0); color: #fff; }
.hv-private-primary:hover { color: #fff; opacity: .92; }
/* 导出/分享浮动操作丸(html-viewer.jsx DocExportBar;替代旧 hv-foot 通栏,悬浮内容右下角) */
.hv-fab { position: absolute; right: 18px; bottom: 18px; z-index: 60; display: flex; align-items: center; gap: 2px;
          padding: 3px; border-radius: 999px; background: var(--card); border: 1px solid var(--line2);
          box-shadow: 0 6px 24px rgba(15, 20, 30, .14); }
.hv-fab-btn { display: inline-flex; align-items: center; gap: 6px; border: none; background: none; font: inherit;
              font-size: 12px; font-weight: 600; color: var(--t2); padding: 7px 13px; border-radius: 999px;
              cursor: pointer; white-space: nowrap; line-height: 1; }
.hv-fab-btn:hover { background: var(--surface-hover); color: var(--t1); }
.hv-fab-btn:disabled { opacity: .55; cursor: default; }
.hv-fab-sep { width: 1px; height: 15px; background: var(--line2); flex-shrink: 0; }
.hv-fab-inline { position: relative; right: auto; bottom: auto; z-index: auto; padding: 0; border: 0; box-shadow: none; background: transparent; }
.hv-fab-inline .hv-fab-btn { height: 27px; padding: 0 10px; border: 1px solid var(--line2); background: var(--card); color: var(--t2); border-radius: 7px; }
.hv-fab-inline .hv-fab-btn:hover { border-color: var(--blue-line); color: var(--blue); background: var(--card); }

/* 生成中 spinner（GeneratePane / PatternPane 共用；主题色经 --spin-color 覆盖）
   用法：<div className="wl-spin" style={{ "--spin-color": "#0ea5e9" }} /> */
.wl-spin { width: 34px; height: 34px; border: 3px solid var(--line2); border-top-color: var(--spin-color, #3a6df0);
           border-radius: 50%; animation: wlovspin .8s linear infinite; }
@keyframes wlovspin { to { transform: rotate(360deg); } }

/* panel 个股详情页：无圆角边框，高度覆盖 */
.panel-kline .tob-chart-host { height: 470px; border: none; border-radius: 0; }
/* fill 模式（watchlist 中列嵌入）：图表填满 flex 高度，自适应屏幕、不出滚动条 */
.panel-kline-fill { height: 100%; }
.panel-kline-fill .tob-chart-host { height: 100%; }
/* 指标条贴合卡片底部 · 单行不换行：胶囊超出横向滚动（隐藏滚动条），+指标/展开按钮固定右侧；统一 27px 胶囊高度与间距 */
.indbar{margin-top:0 !important;border:none !important;border-radius:0 0 14px 14px !important;background:var(--card) !important;flex-wrap:nowrap !important;gap:8px !important;padding:7px 14px 9px !important;}
.indbar .ind-track{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none;gap:7px;}
.indbar .ind-track::-webkit-scrollbar{display:none;width:0;height:0;}
.indbar .ind-chip{height:27px;align-items:center;border-width:1px;border-color:var(--line2);box-shadow:none;}
.indbar .ind-chip:hover{border-color:var(--t3);}
.indbar .ind-chip.off{border-style:dashed;}
.indbar .ind-chip-hit{height:100%;padding:0 2px 0 10px;gap:6px;}
.indbar .ind-x{padding:0 8px 0 3px;font-size:12px;}
.indbar .ind-dots i{width:6px;height:6px;}
.indbar .ind-dots,.ind-float .ind-dots{gap:0;}
.indbar .ind-dots i,.ind-float .ind-dots i{width:9px;height:9px;box-shadow:0 0 0 1.5px var(--card);}
.indbar .ind-dots i+i,.ind-float .ind-dots i+i{margin-left:-4px;}
/* 指标库面板卡片的颜色点同款叠合样式，并整卡垂直居中对齐（原 flex-start + padding-top 目测补偿） */
.indlib-card{align-items:center;min-width:0;}
/* 两列严格等宽：1fr 的隐含 min-width:auto 会被某张卡的不换行长描述撑开，导致各分类列宽参差 */
.indlib-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);}
.indlib-tabbed .indlib-grid{grid-template-columns:repeat(3,minmax(0,1fr));}
.indlib-dots{gap:0;padding-top:0;}
.indlib-dots i{width:10px;height:10px;box-shadow:0 0 0 1.5px var(--card);}
.indlib-dots i+i{margin-left:-4.5px;}
/* 指标库面板体验修缮：①卡片恒定高度——描述单行省略、操作区固定宽度，选中/取消不再引起换行长高；②整卡可点；③侧栏选中态明确；④进场动画 */
.indtv .indlib-card{align-items:center;min-height:66px;transition:border-color .13s,background .13s,transform .08s;}
.indtv .indlib-card:active{transform:scale(.99);}
.indtv .indlib-card-desc{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.indtv .indlib-card-top .indlib-card-name{white-space:nowrap;}
.indtv .indlib-card-acts{width:60px;justify-content:flex-end;flex:none;}
.indlib-card-acts{align-self:center;}
.indlib-card-state{padding-top:0;align-self:center;}
.indtv .indlib-card-na .indlib-card-acts{width:auto;}
.indtv .indlib-dots{padding-top:0;}
@keyframes indpop{from{transform:scale(.6);opacity:0;}to{transform:scale(1);opacity:1;}}
.indtv .indlib-card-check.on{animation:indpop .16s ease;}
.indtv-side-it{position:relative;transition:background .12s,color .12s;}
.indtv-side-it.on{background:var(--blue-soft);color:var(--blue);font-weight:700;}
.indtv-side-it.on::before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:0 2px 2px 0;background:var(--blue);}
@keyframes indfade{from{opacity:0;}}
@keyframes indrise{from{transform:translateY(10px) scale(.985);opacity:0;}to{transform:none;opacity:1;}}
.indlib-backdrop{animation:indfade .14s ease;}
.indlib-backdrop .indtv,.indlib-backdrop .indlib{animation:indrise .18s cubic-bezier(.2,.8,.3,1);}
.indbar .ind-lab{font-size:12px;line-height:1;}
.indbar .ind-add{height:27px;padding:0 12px;font-size:12px;align-items:center;}
.indbar .ind-exp{width:27px;height:27px;}


/* ============================================================
   新版技术指标条 + 技术指标库（wl-indicator-bar.jsx 专属样式,自 batx 标准版引入）
   ============================================================ */
/* 指标块悬停 tooltip（数据放这里，省横向空间） */
.ind-tip{position:fixed;transform:translate(-50%,-100%);z-index:4000;background:#1f2733;color:#fff;font-size:11.5px;font-weight:600;line-height:1.4;padding:6px 10px;border-radius:7px;box-shadow:0 6px 20px rgba(20,30,50,.28);white-space:nowrap;pointer-events:none;}
.ind-tip::after{content:"";position:absolute;left:50%;top:100%;transform:translateX(-50%);border:5px solid transparent;border-top-color:#1f2733;}
/* 技术指标库 · 大面板（trading + watchlist 共用 indlib-*） */
.indlib-backdrop{position:fixed;inset:0;z-index:3000;background:rgba(20,28,40,.34);display:flex;align-items:center;justify-content:center;padding:24px;}
.indlib{width:680px;max-width:calc(100vw - 40px);max-height:calc(100vh - 70px);background:var(--card);border-radius:16px;box-shadow:0 24px 70px rgba(20,30,50,.32);display:flex;flex-direction:column;overflow:hidden;}
.indlib-head{padding:18px 22px 14px;border-bottom:1px solid var(--line);position:relative;flex:none;}
.indlib-title{font-size:17px;font-weight:800;color:var(--t1);}
.indlib-sub{font-size:12px;color:var(--t3);margin-top:3px;padding-right:34px;}
.indlib-x{position:absolute;top:15px;right:15px;width:30px;height:30px;border-radius:8px;font-size:20px;line-height:1;color:var(--t3);cursor:pointer;transition:.12s;}
.indlib-x:hover{background:var(--surface-muted);color:var(--t1);}
.indlib-body{padding:4px 22px 18px;overflow-y:auto;}
.indlib-cat{margin-top:16px;}
.indlib-cat-h{font-size:11.5px;font-weight:800;color:var(--t3);letter-spacing:.4px;margin-bottom:9px;}
.indlib-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.indlib-card{display:flex;align-items:flex-start;gap:11px;padding:12px 13px;border:1px solid var(--line2);border-radius:11px;background:var(--card);text-align:left;cursor:pointer;transition:.13s;}
.indlib-card:hover{border-color:var(--blue);background:var(--surface-sunken);}
.indlib-card.on{border-color:var(--blue);background:var(--blue-soft);}
.indlib-dots{display:flex;gap:3px;flex:none;padding-top:3px;}
.indlib-dots i{width:8px;height:8px;border-radius:50%;display:block;}
.indlib-card-main{flex:1;min-width:0;}
.indlib-card-top{display:flex;align-items:center;gap:8px;}
.indlib-card-name{font-size:13.5px;font-weight:700;color:var(--t1);}
.indlib-card-pane{font-size:10px;font-weight:700;color:var(--t3);background:var(--surface-muted);padding:1px 6px;border-radius:5px;flex:none;}
.indlib-card-desc{font-size:11.5px;color:var(--t3);line-height:1.45;margin-top:3px;}
.indlib-card-state{flex:none;font-size:11.5px;font-weight:800;color:var(--blue);padding-top:2px;white-space:nowrap;}
.indlib-custom{display:flex;flex-wrap:wrap;align-items:center;gap:9px;padding:12px 13px;border:1px dashed var(--line2);border-radius:11px;}
.indlib-seg{display:flex;gap:5px;}
.indlib-seg button{font-size:12px;font-weight:700;color:var(--t2);border:1px solid var(--line2);border-radius:8px;padding:6px 11px;cursor:pointer;transition:.12s;}
.indlib-seg button.on{color:var(--blue);background:var(--blue-soft);border-color:transparent;}
.indlib-period{display:flex;align-items:center;gap:7px;}
.indlib-period>span{font-size:12px;color:var(--t2);}
.indlib-period input{width:72px;border:1px solid var(--line2);border-radius:8px;padding:6px 9px;font-size:13px;font-weight:800;color:var(--t1);font-family:var(--mono);outline:none;text-align:right;}
.indlib-period input:focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft);}
.indlib-quick{display:flex;gap:5px;}
.indlib-quick button{font-size:11.5px;font-weight:700;color:var(--t2);border:1px solid var(--line2);border-radius:7px;padding:5px 9px;font-family:var(--mono);cursor:pointer;transition:.12s;}
.indlib-quick button:hover{border-color:var(--blue);color:var(--blue);}
.indlib-quick button.on{color:var(--blue);background:var(--blue-soft);border-color:transparent;}
.indlib-addbtn{margin-left:auto;font-size:12.5px;font-weight:800;color:#fff;background:var(--blue);border-radius:9px;padding:8px 14px;cursor:pointer;transition:.12s;}
.indlib-addbtn:hover{filter:brightness(1.06);}
.indlib-foot{flex:none;display:flex;align-items:center;justify-content:space-between;padding:13px 22px;border-top:1px solid var(--line);background:var(--surface-sunken);}
.indlib-foot-n{font-size:12px;color:var(--t3);font-weight:600;}
.indlib-done{font-size:13px;font-weight:800;color:#fff;background:var(--blue);border-radius:9px;padding:9px 22px;cursor:pointer;transition:.12s;}
.indlib-done:hover{filter:brightness(1.06);}
/* 库内已添加项：调参 / 状态 */
.indlib-card-acts{display:flex;align-items:center;gap:7px;flex:none;}
.indlib-edit{font-size:11px;font-weight:800;color:var(--blue);background:var(--card);border:1px solid var(--blue);border-radius:7px;padding:3px 8px;cursor:pointer;transition:.12s;}
.indlib-edit:hover{background:var(--blue-soft);}
.indlib-card-state.on{color:var(--blue);}
button.indlib-card-state{cursor:pointer;}
/* 卡片：勾选按钮 + 齿轮（无框线，统一样式） */
.indlib-card-check{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:6px;font-size:15px;font-weight:800;line-height:1;color:var(--t3);background:transparent;border:none;cursor:pointer;transition:.12s;flex:none;padding:0;}
.indlib-card-check:hover{background:var(--blue-soft);color:var(--blue);}
.indlib-card-check.on{color:var(--blue);}
.indlib-card-check.on:hover{background:var(--danger-soft);color:var(--danger);}
.indlib-gear{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:6px;color:var(--t3);background:transparent;border:none;cursor:pointer;transition:.12s;flex:none;padding:0;}
.indlib-gear:hover{color:var(--blue);background:var(--blue-soft);}
.indlib-gear svg{display:block;}
/* 自定义均线入口卡（详情移入二级面板） */
.indlib-customcard{display:flex;align-items:center;gap:12px;width:100%;margin-top:11px;padding:11px 14px;border:1px dashed var(--line2);border-radius:11px;background:var(--card);cursor:pointer;text-align:left;transition:.13s;}
.indlib-customcard:hover{border-color:var(--blue);background:var(--surface-sunken);}
.indlib-cc-ic{flex:none;width:26px;height:26px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:700;color:var(--blue);background:var(--blue-soft);}
.indlib-cc-main{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0;}
.indlib-cc-t{font-size:13px;font-weight:700;color:var(--t1);}
.indlib-cc-s{font-size:11px;color:var(--t3);}
.indlib-cc-chev{flex:none;font-size:18px;color:var(--t3);line-height:1;}
.indsub-head .indlib-x{position:static;width:28px;height:28px;}
.indsub-body .indlib-custom{border:none;padding:0;}
/* 自定义均线 · 已添加列表 */
.indlib-clist{display:flex;flex-direction:column;gap:6px;margin-top:10px;}
.indlib-cline{display:flex;align-items:center;gap:9px;padding:7px 11px;border:1px solid var(--line2);border-radius:9px;}
.indlib-cdot{width:9px;height:9px;border-radius:50%;flex:none;}
.indlib-cname{font-size:12.5px;font-weight:800;color:var(--t1);font-family:var(--mono);flex:1;}
.indlib-cedit{font-size:11px;font-weight:800;color:var(--blue);background:var(--blue-soft);border-radius:7px;padding:4px 10px;cursor:pointer;transition:.12s;}
.indlib-cedit:hover{filter:brightness(.97);}
.indlib-cdel{font-size:11px;font-weight:800;color:var(--danger);background:var(--danger-soft);border-radius:7px;padding:4px 10px;cursor:pointer;transition:.12s;}
.indlib-cdel:hover{background:var(--danger);color:#fff;}
/* 参数编辑 · 居中小对话框 */
.indedit{width:300px;max-width:calc(100vw - 40px);background:var(--card);border-radius:14px;box-shadow:0 22px 60px rgba(20,30,50,.3);padding:18px 18px 16px;}
.indedit-title{font-size:14px;font-weight:800;color:var(--t1);margin-bottom:13px;}
/* ===== 技术指标库 · 顶部 Tab（常用 / 智能） ===== */
.indlib-tabbed{width:960px;}
.indlib-head{display:flex;flex-direction:column;}
.indlib-tabbed .indlib-head{padding:15px 22px 12px;}
/* 常用指标：紧凑单行卡片，尽量一屏不滚动 */
.indlib-tabbed .indlib-body{padding-top:2px;}
.indlib-tabbed .indlib-cat{margin-top:11px;}
.indlib-tabbed .indlib-cat-h{margin-bottom:6px;}
.indlib-tabbed .indlib-grid{grid-template-columns:repeat(3,1fr);gap:8px;}
.indlib-tabbed .indlib-card{align-items:center;padding:9px 11px;border-radius:9px;gap:8px;}
.indlib-tabbed .indlib-dots{padding-top:0;}
.indlib-tabbed .indlib-card-desc{display:none;}
.indlib-tabbed .indlib-card-pane{display:none;}
.indlib-tabbed .indlib-card-main{display:flex;align-items:center;min-width:0;}
.indlib-tabbed .indlib-card-top{flex:1;min-width:0;gap:7px;}
.indlib-tabbed .indlib-card-name{font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.indlib-tabbed .indlib-card-acts{gap:5px;}
.indlib-tabbed .indlib-edit{padding:3px 6px;}
.indlib-tabbed .indlib-custom{padding:10px 12px;gap:8px;}
.indlib-tabbed .indlib-clist{margin-top:8px;}
.indlib-tabs{display:flex;gap:6px;margin-top:12px;}
.indlib-tabs button{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:var(--t2);background:var(--surface-hover);border-radius:9px;padding:7px 15px;cursor:pointer;transition:.14s;}
.indlib-tabs button:hover{color:var(--t1);}
.indlib-tabs button.on{color:#fff;background:var(--t1);}
.indlib-tab-badge{font-size:9px;font-weight:800;letter-spacing:.5px;padding:1px 5px;border-radius:5px;background:linear-gradient(120deg,#7c3aed,#2563eb);color:#fff;}
.indlib-tabs button.on .indlib-tab-badge{background:var(--card);color:#7c3aed;}
.wl-ind-track{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:8px;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;padding:1px 0;}
.wl-ind-track::-webkit-scrollbar{height:5px;}
.wl-ind-track::-webkit-scrollbar-thumb{background:var(--line2);border-radius:3px;}
.wl-indbar .wl-ind-chip{flex:none;white-space:nowrap;cursor:pointer;}
/* 详情页左列滚动容器:不显示滚动条(贴卡片的图表 iframe 无法与滚动条和平共处,索性隐藏,滚轮/触控板照常滚) */
.panel-scroll{scrollbar-width:none;-ms-overflow-style:none;}
.panel-scroll::-webkit-scrollbar{display:none;width:0;height:0;}
/* 详情页 K线分析:压缩技术指标条与 Agent 事件流的纵向空间,图表吸收剩余高度,整页尽量不滚动 */
.panel-scroll .wl-indbar{padding:4px 13px;gap:6px 8px;}
.panel-scroll .wl-ind-chip{padding:2px 8px;border-radius:7px;}
.panel-scroll .wl-ind-add{padding:3px 10px;}
.panel-scroll .indbar{padding:5px 12px 7px !important;gap:8px !important;border:none;background:transparent;box-shadow:none;}
/* Agent 事件流卡固定高:进页/拉取数据/空态/有数据高度一致,图表高度不再跳动;内容超高时卡内滚动 */
.panel-scroll .kx-feed{height:184px;display:flex;flex-direction:column;overflow:hidden;}
.panel-scroll .kx-feed>.kx-strip{flex:1;min-height:0;overflow-y:auto;scrollbar-width:none;}
.panel-scroll .kx-feed>.kx-strip::-webkit-scrollbar{display:none;}
.panel-scroll .kx-feed-empty{flex:1;display:flex;align-items:center;justify-content:center;padding:0 20px;}
.panel-scroll .kx-feed-h{padding:8px 16px 0;border-bottom:none;flex-shrink:0;}
.panel-scroll .kx-feed-h .kx-feed-ai{display:none;}
.panel-scroll .kx-strip{padding:0 14px 8px;}
.panel-scroll .kx-strip .evstrip-row{padding-top:8px;padding-bottom:4px;}
.panel-scroll .evchip{padding:9px 12px;}
.panel-scroll .kx-chip-stats{margin-top:8px;padding-top:7px;}
.panel-scroll .kx-feed-empty{padding:14px;}
.wl-indbar .wl-ind-add{flex:none;}
.wl-ind-empty{font-size:11.5px;color:var(--t3);white-space:nowrap;}
.wl-ind-chip-hit{display:flex;align-items:center;gap:6px;padding:5px 3px 5px 10px;cursor:pointer;}
.wl-ind-x{display:flex;align-items:center;padding:0 8px 0 4px;font-size:12px;font-weight:700;color:var(--t3);opacity:.5;cursor:pointer;line-height:1;transition:.12s;}
.wl-ind-x:hover{color:var(--danger);opacity:1;}
.wl-ind-chip.off{opacity:1;border:1px dashed var(--line3);background:var(--surface-sunken);box-shadow:none;}
.wl-ind-chip.off .wl-ind-chip-hit{opacity:.5;}
.wl-ind-chip.off .wl-ind-lab{color:var(--t3);font-weight:500;}
.wl-ind-chip.off .wl-ind-dots i{filter:grayscale(1);opacity:.6;}
.wl-ind-chev{display:block;width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;margin-top:-2px;}
.wl-ind-exp{flex:none;display:flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;font-size:12px;line-height:1;color:var(--t2);border:1px solid var(--line2);border-radius:999px;background:var(--card);cursor:pointer;transition:.12s;}
.wl-ind-exp:hover{border-color:var(--t3);color:var(--t1);background:var(--surface-hover);}
.wl-ind-exp.on{color:var(--blue);border-color:var(--blue);background:var(--blue-soft);}
/* 展开 = 锚定浮层，压在其他内容上，不撑高指标条 */
.wl-ind-float-back{position:fixed;inset:0;z-index:2500;}
.wl-ind-float{position:fixed;display:flex;flex-direction:column;gap:8px;padding:10px 14px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 14px 46px rgba(20,30,50,.24);max-width:calc(100vw - 24px);}
.wl-ind-float-head{display:flex;align-items:center;gap:8px;}
.wl-ind-float-track{display:flex;flex-wrap:wrap;gap:6px;}
/* 自定义指标 chip + 添加弹层 */
.wl-ind-chip-custom{cursor:pointer;}
.wl-ind-chip-ai{border-color:#c8c2f3;background:linear-gradient(180deg,#fcfbff,#f6f4ff);}
.wl-ind-chip-ai:hover{border-color:#9a8cf0;}
.wl-ind-ai-glyph{font-size:11px;flex:none;line-height:1;}
.wl-ind-chip-ai .wl-ind-lab{max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.wl-ind-pop-set{width:100%;font-size:12px;font-weight:700;color:var(--blue);background:var(--blue-soft);border-radius:8px;padding:8px 0;margin-bottom:10px;cursor:pointer;transition:.12s;}
.wl-ind-pop-set:hover{filter:brightness(.97);}
/* 指标添加菜单 + 参数编辑器（真增删改） */
.wl-ind-menu{display:flex;flex-direction:column;gap:3px;}
.wl-ind-menu-row{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:8px;border:1px solid transparent;background:var(--card);transition:.12s;width:100%;text-align:left;cursor:pointer;}
.wl-ind-menu-row:hover{background:var(--blue-soft);}
.wl-ind-menu-lab{font-size:12.5px;font-weight:700;color:var(--t1);}
.wl-ind-menu-row .wl-ind-sub{margin-left:1px;}
.wl-ind-menu-plus{margin-left:auto;font-size:15px;font-weight:800;color:var(--blue);line-height:1;}
.wl-ind-note{font-size:11.5px;color:var(--t3);line-height:1.55;padding:2px 0 4px;}
.wl-ind-pop-div{height:1px;background:var(--line);margin:11px 0;}
.wl-ind-pop-sub{font-size:11px;font-weight:800;color:var(--t3);margin-bottom:9px;letter-spacing:.3px;}
.wl-ind-fld{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px;}
.wl-ind-fld>span{font-size:12px;color:var(--t2);flex:none;}
.wl-ind-fld input{width:92px;border:1px solid var(--line2);border-radius:8px;padding:6px 9px;font-size:13px;font-weight:800;color:var(--t1);font-family:var(--mono);outline:none;text-align:right;}
.wl-ind-fld input[type=text]{flex:1;width:auto;text-align:left;}
.wl-ind-fld input:focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft);}
.wl-ind-sw{display:flex;gap:6px;margin:2px 0 11px;}
.wl-ind-sw button{width:22px;height:22px;border-radius:6px;border:2px solid transparent;cursor:pointer;transition:.12s;}
.wl-ind-sw button.on{border-color:var(--t1);box-shadow:0 0 0 2px #fff inset;}
.wl-ind-pop-actions{display:flex;gap:8px;align-items:center;}
.wl-ind-pop-actions .wl-ind-pop-add{flex:1;width:auto;}
.wl-ind-del{flex:none;font-size:12px;font-weight:800;color:var(--danger);background:var(--danger-soft);border-radius:9px;padding:9px 14px;cursor:pointer;transition:.12s;}
.wl-ind-del:hover{background:var(--danger);color:#fff;}


/* ============================================================
   技术指标条 · 二级面板(indsub) + 智能指标(AI 因子 aif-*)——自 batx 标准版
   ============================================================ */
/* 二级面板：调参 / 自定义均线（叠在技术指标面板之上，主面板不关闭） */
.indsub-backdrop{position:fixed;inset:0;z-index:3200;background:rgba(20,28,40,.28);display:flex;align-items:center;justify-content:center;padding:24px;}
.indsub{width:380px;max-width:calc(100vw - 40px);max-height:calc(100vh - 80px);background:var(--card);border-radius:14px;box-shadow:0 26px 70px rgba(20,30,50,.34);display:flex;flex-direction:column;overflow:hidden;animation:pop .16s ease;}
.indsub-sm{width:300px;}
.indsub-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 11px;border-bottom:1px solid var(--line);flex:none;}
.indsub-title{font-size:14px;font-weight:800;color:var(--t1);}
.indsub-body{padding:14px 16px;overflow-y:auto;}
.indsub .ind-pop-actions{padding:2px 16px 14px;}
.indsub-empty{font-size:12px;color:var(--t3);line-height:1.6;padding:12px 2px 4px;text-align:center;}
/* 生成指标 · 独立二级面板 */
.indsub-gen{width:440px;}
.indsub-gen .aif-result{margin-top:0;box-shadow:none;}
.indsub-gen .aif-steps{margin-top:0;border:none;padding:0;background:transparent;}
.aif-genrun{padding:4px 2px;}
.aif-genrun-top{display:flex;align-items:center;gap:10px;font-size:13.5px;font-weight:800;color:var(--t1);margin-bottom:14px;}
.aif-spin-lg{width:18px;height:18px;border-width:2.5px;border-color:rgba(124,58,237,.28);border-top-color:#7c3aed;}
.aif-genfoot{font-size:13.5px;font-weight:800;color:#fff;background:linear-gradient(120deg,#7c3aed,#2563eb);border-radius:10px;padding:11px 22px;cursor:pointer;transition:.14s;box-shadow:0 4px 14px rgba(80,60,220,.26);}
.aif-genfoot:hover{filter:brightness(1.05);}
.aif-genfoot.dis{background:var(--line2);color:var(--t3);box-shadow:none;cursor:not-allowed;}
.aif-genfoot .aif-gen-run{display:inline-flex;align-items:center;gap:9px;}
/* ===== 智能指标 Tab ===== */
.aif{padding-top:6px;}
.aif-mine{margin-top:12px;border:1px solid var(--line2);border-radius:12px;padding:11px 13px;background:var(--surface-sunken);}
.aif-mine-h{font-size:11.5px;font-weight:800;color:var(--t3);letter-spacing:.3px;margin-bottom:9px;}
.aif-mine-row{display:flex;align-items:center;gap:9px;padding:6px 0;}
.aif-mine-row+.aif-mine-row{border-top:1px solid var(--line);}
.aif-mine-dot{width:20px;height:20px;border-radius:7px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:11px;flex:none;}
.aif-mine-name{font-size:13px;font-weight:700;color:var(--t1);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.aif-mine-meta{font-size:11px;color:var(--t3);font-weight:600;flex:none;}
.aif-mine-del{flex:none;font-size:11px;font-weight:700;color:var(--danger);background:var(--danger-soft);border-radius:7px;padding:4px 10px;cursor:pointer;transition:.12s;}
.aif-mine-del:hover{background:var(--danger);color:#fff;}
.aif-lead{display:flex;gap:11px;margin-top:12px;padding:10px 13px;border-radius:11px;background:linear-gradient(115deg,#f1f0fe,#eef3fe);border:1px solid #e3e6fb;}
.aif-spark{flex:none;width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:15px;color:#fff;background:linear-gradient(125deg,#7c3aed,#2563eb);box-shadow:0 4px 12px rgba(80,60,220,.3);}
.aif-lead-t{font-size:13.5px;font-weight:800;color:var(--t1);}
.aif-lead-s{font-size:11.5px;color:var(--t2);line-height:1.55;margin-top:3px;}
.aif-sec{margin-top:13px;}
.aif-sec-h{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:800;color:var(--t1);margin-bottom:8px;}
.aif-sec-h em{font-style:normal;font-size:10.5px;font-weight:700;color:var(--t3);background:var(--surface-muted);padding:1px 7px;border-radius:5px;}
.aif-intent{width:100%;border:1px solid var(--line2);border-radius:10px;padding:9px 12px;font-size:13px;line-height:1.45;color:var(--t1);outline:none;resize:none;transition:.12s;}
.aif-intent::placeholder{color:var(--t3);}
.aif-intent:focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft);}
.aif-egs{display:flex;flex-wrap:wrap;gap:7px;margin-top:8px;}
.aif-egs button{font-size:11px;font-weight:600;color:var(--t2);background:var(--surface-hover);border-radius:999px;padding:5px 11px;cursor:pointer;transition:.12s;}
.aif-egs button:hover{color:var(--blue);background:var(--blue-soft);}
.aif-egs button.on{color:var(--blue);background:var(--blue-soft);box-shadow:inset 0 0 0 1px var(--blue);}
.aif-cat{display:flex;align-items:flex-start;gap:11px;padding:7px 0;}
.aif-cat+.aif-cat{border-top:1px solid var(--line);}
.aif-cat-n{flex:none;width:44px;font-size:11.5px;font-weight:800;color:var(--t2);padding-top:6px;}
.aif-fchip{position:relative;font-size:12px;font-weight:700;color:var(--t1);background:var(--card);border:1.5px solid var(--line2);border-radius:8px;padding:6px 12px 6px 19px;cursor:pointer;transition:.13s;}
.aif-fchip:hover{border-color:var(--t3);}
.aif-fchip::before{content:"";position:absolute;left:8px;top:50%;transform:translateY(-50%);width:5px;height:5px;border-radius:50%;background:var(--line3);opacity:1;transition:.12s;}
.aif-fchip.on{color:#fff;border-color:transparent;}
.aif-fchip.on::before{background:color-mix(in srgb, var(--card) 92%, transparent);}
.aif-st-value.on{background:#2563eb;}
.aif-st-growth.on{background:#0d9488;}
.aif-st-quality.on{background:#7c3aed;}
.aif-st-momentum.on{background:#e8852b;}
.aif-chips{flex:1;display:flex;flex-wrap:wrap;gap:7px;}
.aif-clearlink{margin-left:auto;font-size:11px;font-weight:700;color:var(--t3);background:none;cursor:pointer;transition:.12s;}
.aif-clearlink:hover{color:var(--danger);}
/* 已选因子条（替代手调权重——权重全部交给 AI） */
.aif-pickbar{display:flex;align-items:center;gap:10px;margin-top:14px;padding:10px 13px;border-radius:11px;background:var(--surface-sunken);border:1px solid var(--line2);}
.aif-pickn{flex:none;font-size:12px;font-weight:800;color:var(--t1);}
.aif-picktags{flex:1;min-width:0;display:flex;flex-wrap:wrap;gap:6px;}
.aif-picktags em{font-style:normal;font-size:11px;font-weight:700;color:#fff;padding:2px 8px;border-radius:6px;}
.aif-picktags em.aif-st-value{background:#2563eb;}
.aif-picktags em.aif-st-growth{background:#0d9488;}
.aif-picktags em.aif-st-quality{background:#7c3aed;}
.aif-picktags em.aif-st-momentum{background:#e8852b;}
.aif-pickclear{flex:none;font-size:11px;font-weight:700;color:var(--t3);background:var(--surface-muted);border-radius:7px;padding:4px 10px;cursor:pointer;transition:.12s;}
.aif-pickclear:hover{color:var(--danger);background:var(--danger-soft);}
.aif-basket{display:flex;flex-direction:column;gap:7px;}
.aif-brow{display:flex;align-items:center;gap:10px;padding:8px 11px;border:1px solid var(--line2);border-radius:9px;background:var(--card);}
.aif-bdot{width:9px;height:9px;border-radius:50%;flex:none;}
.aif-st-value.aif-bdot{background:#2563eb;}
.aif-st-growth.aif-bdot{background:#0d9488;}
.aif-st-quality.aif-bdot{background:#7c3aed;}
.aif-st-momentum.aif-bdot{background:#e8852b;}
.aif-bname{font-size:12.5px;font-weight:700;color:var(--t1);}
.aif-bcat{font-size:10px;font-weight:700;color:var(--t3);background:var(--surface-muted);padding:1px 6px;border-radius:5px;}
.aif-wstep{margin-left:auto;display:flex;align-items:center;gap:2px;background:var(--surface-hover);border-radius:8px;padding:2px;}
.aif-wstep button{width:24px;height:22px;border-radius:6px;font-size:14px;font-weight:800;color:var(--t2);line-height:1;cursor:pointer;transition:.12s;}
.aif-wstep button:hover{background:var(--card);color:var(--blue);}
.aif-wstep b{min-width:18px;text-align:center;font-size:12.5px;font-weight:800;color:var(--t1);font-family:var(--mono);}
.aif-brm{flex:none;font-size:14px;font-weight:700;color:var(--t3);opacity:.6;cursor:pointer;line-height:1;padding:0 2px;transition:.12s;}
.aif-brm:hover{color:var(--danger);opacity:1;}
.aif-gen{width:100%;margin-top:18px;font-size:13.5px;font-weight:800;color:#fff;background:linear-gradient(120deg,#7c3aed,#2563eb);border-radius:11px;padding:13px 0;cursor:pointer;transition:.14s;box-shadow:0 6px 18px rgba(80,60,220,.26);}
.aif-gen:hover{filter:brightness(1.05);}
.aif-gen.dis{background:var(--line2);color:var(--t3);box-shadow:none;cursor:not-allowed;}
.aif-gen-run{display:inline-flex;align-items:center;gap:9px;}
.aif-spin{width:14px;height:14px;border-radius:50%;border:2px solid rgba(255,255,255,.4);border-top-color:var(--card);display:inline-block;animation:aspin .7s linear infinite;}
.aif-steps{margin-top:12px;display:flex;flex-direction:column;gap:8px;padding:12px 14px;border:1px solid var(--line2);border-radius:11px;background:var(--surface-sunken);}
.aif-step{display:flex;align-items:center;gap:9px;font-size:12px;font-weight:600;color:var(--t3);transition:.2s;}
.aif-step-dot{width:8px;height:8px;border-radius:50%;background:var(--line3);flex:none;transition:.2s;}
.aif-step.cur{color:var(--t1);font-weight:800;}
.aif-step.cur .aif-step-dot{background:#2563eb;box-shadow:0 0 0 4px rgba(37,99,235,.16);}
.aif-step.done{color:var(--t2);}
.aif-step.done .aif-step-dot{background:#15a35a;}
.aif-result{margin-top:12px;border:1.5px solid;border-radius:13px;padding:14px 16px;background:var(--card);box-shadow:0 8px 24px rgba(20,30,50,.1);animation:pop .25s ease;}
.aif-res-top{display:flex;align-items:center;gap:11px;}
.aif-res-glyph{flex:none;width:32px;height:32px;border-radius:9px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:16px;}
.aif-res-id{flex:1;min-width:0;}
.aif-res-name{font-size:15px;font-weight:800;color:var(--t1);}
.aif-res-sub{font-size:11px;color:var(--t3);font-weight:600;margin-top:2px;}
.aif-res-score{flex:none;text-align:right;}
.aif-res-score b{font-size:24px;font-weight:800;font-family:var(--mono);line-height:1;}
.aif-res-score span{font-size:11px;font-weight:700;color:var(--t3);margin-left:2px;}
.aif-res-score.up b{color:var(--up);}
.aif-res-score.down b{color:var(--down);}
.aif-res-score.mid b{color:var(--t1);}
.aif-res-rat{font-size:12px;color:var(--t2);line-height:1.6;margin-top:11px;padding-top:11px;border-top:1px dashed var(--line2);}
.aif-res-weights{display:flex;flex-direction:column;gap:7px;margin-top:12px;}
.aif-wrow{display:flex;align-items:center;gap:10px;}
.aif-wlab{flex:none;width:84px;font-size:11.5px;font-weight:700;color:var(--t1);}
.aif-wbar{flex:1;height:7px;background:var(--surface-muted);border-radius:4px;overflow:hidden;}
.aif-wbar i{display:block;height:100%;border-radius:4px;transition:width .4s ease;}
.aif-wpct{flex:none;width:34px;text-align:right;font-size:11px;font-weight:800;color:var(--t2);font-family:var(--mono);}
.aif-res-acts{display:flex;gap:9px;margin-top:15px;}
.aif-regen{flex:none;font-size:12.5px;font-weight:700;color:var(--t2);background:var(--surface-hover);border-radius:9px;padding:10px 16px;cursor:pointer;transition:.12s;}
.aif-regen:hover{color:var(--t1);background:var(--line2);}
.aif-add{flex:1;font-size:13px;font-weight:800;color:#fff;border-radius:9px;padding:10px 0;cursor:pointer;transition:.14s;}
.aif-add:hover{filter:brightness(1.06);}

/* ===== K线分析标题栏（kx-cap · 同步自原版母体 K线形态分析-plugins.html） ===== */
.kx-cap{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line);flex-wrap:wrap;}
.kx-cap-name{font-size:17px;font-weight:800;letter-spacing:-.3px;}
.kx-cap-code{font-size:12px;font-weight:700;color:var(--t3);}
.kx-cap-pat{font-size:12.5px;font-weight:700;color:var(--blue);background:var(--blue-soft);padding:3px 10px;border-radius:7px;}
.kx-cap-live{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;color:var(--up);user-select:none;}
.kx-freq{display:flex;gap:2px;background:var(--surface-muted);border-radius:9px;padding:2px;flex-shrink:0;}
.kx-freq button{border:none;background:transparent;font-size:12px;font-weight:700;color:var(--t2);padding:5px 13px;border-radius:7px;cursor:pointer;transition:.14s;font-family:inherit;}
.kx-freq button.on{background:var(--card);color:var(--t1);box-shadow:0 1px 3px rgba(20,25,35,.13);}
.kx-freq button:hover:not(.on){color:var(--t1);}
.kx-mm{position:relative;}
.kx-mm-tag{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line2);background:var(--bg);color:var(--t2);font-size:11.5px;font-weight:700;padding:3px 8px;border-radius:14px;cursor:pointer;transition:.13s;font-family:inherit;}
.kx-mm-tag:hover{background:var(--line);}
.kx-mm-tag.on{background:var(--blue-soft);border-color:transparent;color:var(--blue);}
.kx-mm-tag b{font-weight:800;}
.kx-mm-pop{position:absolute;top:calc(100% + 6px);left:0;z-index:20;display:flex;flex-direction:column;gap:2px;background:var(--card);padding:4px;border-radius:10px;box-shadow:0 4px 16px rgba(20,25,35,.16),0 0 0 1px var(--line);min-width:96px;}
.kx-mm-opt{text-align:left;border:none;background:none;font-size:12.5px;font-weight:700;color:var(--t1);padding:6px 10px;border-radius:7px;cursor:pointer;font-family:inherit;}
.kx-mm-opt:hover{background:var(--surface-muted);}
.kx-mm-opt.on{background:var(--t1);color:#fff;}
.kx-dot{width:6px;height:6px;border-radius:50%;background:var(--up);position:relative;}
.kx-dot::after{content:"";position:absolute;inset:0;border-radius:50%;background:var(--up);animation:pulse 2s infinite;}
.kx-dot.off{background:var(--t3);}
.kx-dot.off::after{display:none;}

/* ===== 信号右键菜单 + 详情弹层（kx-menu / kx-dt · 同步自原版母体） ===== */
.kx-menu{position:fixed;z-index:200;min-width:150px;background:var(--card);border:1px solid var(--line);border-radius:11px;box-shadow:0 12px 34px rgba(20,28,40,.18);padding:5px;font-size:12.5px;}
.kx-menu-it{display:flex;align-items:center;gap:9px;padding:8px 11px;border-radius:7px;cursor:pointer;color:var(--t1);font-weight:700;white-space:nowrap;}
.kx-menu-it:hover{background:var(--blue-soft);color:var(--blue);}
.kx-menu-sep{height:1px;background:var(--line);margin:4px 6px;}
.kx-menu-ico{width:15px;height:15px;flex:none;opacity:.75;}
.kx-cluster-report-modal{width:min(820px,calc(100vw - 40px));max-height:calc(100vh - 56px);background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:0 24px 70px rgba(20,28,40,.24);overflow:hidden;display:flex;flex-direction:column;}
.kx-cluster-report-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--line);font-size:15px;}
.kx-cluster-report-head button{border:0;background:transparent;color:var(--t2);font-size:24px;cursor:pointer;}
.kx-cluster-report-body{padding:20px 24px;overflow:auto;line-height:1.75;color:var(--t1);white-space:normal;}
.kx-cluster-report-body h1{font-size:22px;margin:0 0 18px}.kx-cluster-report-body h2{font-size:16px;margin:24px 0 8px}.kx-cluster-report-body h3{font-size:14px;margin:18px 0 6px}.kx-cluster-report-body p{margin:0 0 12px;}
.kx-cluster-report-frame{display:block;width:100%;height:min(760px,calc(100vh - 118px));border:0;background:#f7f8fa;}
.kx-ov{position:fixed;inset:0;z-index:210;background:rgba(20,26,36,.42);display:flex;align-items:center;justify-content:center;padding:24px;}
.kx-dt{width:560px;max-width:100%;max-height:88vh;overflow-y:auto;background:var(--card);border-radius:18px;box-shadow:0 26px 70px rgba(15,22,34,.3);}
.kx-dt-hd{display:flex;align-items:flex-start;gap:12px;padding:20px 22px 16px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--card);border-radius:18px 18px 0 0;}
.kx-dt-tt{font-size:18px;font-weight:850;color:var(--t1);line-height:1.25;}
.kx-dt-sub{font-size:12px;color:var(--t3);margin-top:3px;font-family:var(--mono);}
.kx-dt-x{margin-left:auto;width:30px;height:30px;border:none;background:var(--surface-muted);border-radius:9px;font-size:17px;color:var(--t2);cursor:pointer;flex:none;line-height:1;}
.kx-dt-x:hover{background:var(--line2);}
.kx-dt-tag{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:800;padding:3px 9px;border-radius:999px;}
.kx-dt-sec{padding:16px 22px;}
.kx-dt-sec + .kx-dt-sec{border-top:1px solid var(--line);}
.kx-dt-lb{font-size:10.5px;font-weight:850;letter-spacing:.6px;color:var(--t3);text-transform:uppercase;margin-bottom:11px;}
.kx-dt-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:11px;}
.kx-dt-m{background:var(--surface-sunken);border-radius:11px;padding:11px 13px;}
.kx-dt-mv{font-size:19px;font-weight:850;font-family:var(--mono);line-height:1;}
.kx-dt-ml{font-size:11px;color:var(--t3);margin-top:6px;font-weight:600;}
.kx-dt-kp{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px dashed var(--line);}
.kx-dt-kp:last-child{border-bottom:none;}
.kx-dt-kp-b{font-size:11px;font-weight:800;padding:2px 8px;border-radius:6px;flex:none;}
.kx-dt-fm{font-size:12.5px;color:var(--t2);line-height:1.55;background:var(--surface-sunken);border-radius:10px;padding:11px 13px;}
.kx-dt-fm code{font-family:var(--mono);color:var(--t1);font-weight:700;}

/* ===== 推理演绎卡（reasoning card · rc-*）：四段推理故事 = 当前事件→类比证据→演绎/验证→涨跌结论 ===== */
/* 状态标 已兑现/前瞻：蓝灰(避开红涨绿跌，绿会误读成跌) */
.rc-status{display:inline-flex;align-items:center;font-size:11px;font-weight:800;padding:2px 8px;border-radius:6px;background:#eaf0f7;color:#3b6ea5;flex:none;}
.rc-status.pending{background:var(--surface-sunken);color:var(--t3);}
.rc-status.inline{margin-left:8px;font-size:10px;padding:1px 7px;vertical-align:middle;}
/* ① 当前事件 */
.rc-ev-top{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:7px;}
.rc-ev-tag{background:var(--up-soft);color:var(--up);font-size:11px;font-weight:800;padding:2px 9px;border-radius:6px;flex:none;}
.rc-ev-title{font-size:15.5px;font-weight:800;color:var(--t1);}
.rc-ev-sum{font-size:13px;line-height:1.65;color:var(--t2);}
/* ② 类比K线证据 */
.rc-evi{display:flex;gap:12px;align-items:center;padding:9px 0;border-bottom:1px dashed var(--line);cursor:pointer;transition:background .12s;}
.rc-evi:last-child{border-bottom:none;}
.rc-evi:hover{background:var(--surface-sunken);}
.rc-evi-k{width:80px;height:48px;flex:none;background:var(--surface-sunken);border-radius:6px;overflow:hidden;position:relative;}
.rc-evi-k .kx-dt-mk{width:100%;height:100%;min-height:0;margin:0;}
.rc-evi-k .kx-dt-mk-t0{display:none;}
.rc-evi-body{flex:1;min-width:0;}
.rc-evi-h{font-size:13px;font-weight:800;color:var(--t1);}
.rc-evi-h .sub{font-size:11px;font-weight:400;color:var(--t3);margin-left:6px;}
/* A 配额制身份标 chip: 自身历史(灰)/同行业(蓝,赵总要的同类标的高亮)/全池最像(琥珀) */
.rc-evi-cat{display:inline-block;font-size:10px;font-weight:800;padding:1px 6px;border-radius:5px;margin-left:7px;vertical-align:1px;}
.rc-evi-cat.cat-self{background:var(--surface-muted);color:var(--t2);}
.rc-evi-cat.cat-peer{background:var(--blue-soft);color:var(--blue);}
.rc-evi-cat.cat-sim{background:var(--amber-soft);color:var(--amber);}
.rc-evi-ev{font-size:12px;color:var(--t3);margin:2px 0;}
.rc-evi-out{font-size:12.5px;font-weight:700;}
.rc-evi-out.up{color:var(--up);} .rc-evi-out.dn{color:var(--down);}
/* 幻影证据：卡是生成时的池快照，池变动后该条样本可能已不在当前池 → 灰化+明示过期(标注不隐藏) */
.rc-evi.stale{opacity:.45;}
.rc-evi.stale .rc-evi-out{color:var(--t3) !important;}
.rc-evi-stale{display:inline-block;font-size:10px;font-weight:800;padding:1px 6px;border-radius:5px;background:var(--warn-soft);color:#a8791f;margin-left:7px;white-space:nowrap;}
/* 池数据缺失=无从校验证据 → 区级一条横幅诚实告知(不逐条刷)，杜绝"静默放行=看起来已校验" */
.rc-evi-unverified{font-size:11.5px;font-weight:700;color:#a8791f;background:var(--warn-soft);border:1px solid var(--warn-line);border-radius:8px;padding:7px 10px;margin-bottom:11px;}
/* 叙事陈旧（stale_narrative）：卡级弱化提示——内容不隐藏、只诚实告知文案口径旧于统计栏 */
.rc-stale-narr{font-size:11.5px;font-weight:600;color:#a8791f;background:var(--warn-soft);border-bottom:1px solid var(--warn-line);padding:8px 22px;line-height:1.5;}
/* anchor_unverifiable：故事本身可能讲的是另一个事件（比"数字旧了"严重）→ 用 danger 色阶，别和"数字口径旧"同权 */
.rc-stale-narr.anchor{color:var(--danger-deep);background:var(--danger-soft);border-bottom-color:var(--danger-line);font-weight:700;}
/* 中性档（stats_recomputed）：**不用警示色** —— 它不是缺陷，是我们主动把算法升级成确定性的。
   若用黄/红，今晚之后数千张卡会同时"告警"，787 张真 danger 会被淹没 ⇒ 警示贬值成噪音。
   用蓝灰信息色 + 无 ⚠ 图标：它是【说明】，不是【警告】。(PM 2026-07-14 裁定 C 案) */
.rc-stale-narr.info{color:#3b6ea5;background:var(--blue-soft);border-bottom-color:var(--blue-line);font-weight:600;}
/* ③ 推理演绎：演绎段 + 验证段 */
.rc-seg-lb{font-size:10px;font-weight:800;letter-spacing:.5px;color:var(--t3);margin-bottom:10px;}
.rc-ded{display:flex;gap:10px;font-size:13px;line-height:1.62;color:var(--t2);margin-bottom:9px;}
.rc-ded:last-child{margin-bottom:0;}
.rc-ded-n{width:19px;height:19px;flex:none;border-radius:50%;background:var(--surface-sunken);color:var(--t3);font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center;margin-top:1px;}
.rc-ded-t{flex:1;}
.rc-valid{background:#f0f4f9;border:1px solid #d3e0ee;border-radius:10px;padding:11px 13px;margin-top:13px;}
.rc-valid-hd{font-size:11.5px;font-weight:800;color:#3b6ea5;margin-bottom:5px;display:flex;align-items:center;gap:7px;}
.rc-valid-hd .rc-chk{background:#3b6ea5;color:#fff;border-radius:5px;padding:1px 6px;font-size:10px;}
.rc-valid-body{font-size:12.5px;color:var(--t2);line-height:1.6;}
/* ④ 涨跌结论 */
.rc-vd{display:flex;align-items:center;gap:14px;}
.rc-vd-badge{color:#fff;border-radius:11px;padding:11px 16px;text-align:center;flex:none;box-shadow:0 3px 12px rgba(20,26,36,.18);}
.rc-vd-arrow{font-size:13px;line-height:1;}
.rc-vd-dir{font-size:19px;font-weight:850;line-height:1.1;}
.rc-vd-mid{flex:1;min-width:0;}
.rc-vd-main{font-size:22px;font-weight:850;font-family:var(--mono);line-height:1.15;}
.rc-vd-main .u{font-size:12px;font-weight:600;color:var(--t3);margin-left:5px;font-family:var(--sans);}
.rc-vd-band{font-size:12px;color:var(--t3);margin-top:4px;}
.rc-vd-band b.up{color:var(--up);} .rc-vd-band b.dn{color:var(--down);}
.rc-vd-meta{text-align:right;flex:none;font-size:12px;color:var(--t3);}
.rc-vd-dots{margin-top:4px;}
.rc-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-left:3px;background:var(--line2);}
.rc-vd-fac{font-size:10.5px;color:var(--t3);margin-top:4px;font-family:var(--mono);}
.rc-vd-note{font-size:11px;color:var(--t3);margin-top:12px;line-height:1.5;}

/* ===== 叠加对比选中条（kx-ovbar · 同步自原版母体） ===== */
.kx-ovbar{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:8px 16px;border-bottom:1px solid var(--line);background:var(--surface-sunken);}
.kx-ovbar-lb{font-size:11px;font-weight:800;color:var(--t2);margin-right:2px;}
.kx-ov-chip{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;color:var(--t1);background:var(--card);border:1px solid var(--line2);border-radius:14px;padding:3px 6px 3px 9px;}
.kx-ov-chip i{width:8px;height:8px;border-radius:50%;flex-shrink:0;}
.kx-ov-chip button{border:none;background:transparent;color:var(--t3);font-size:14px;line-height:1;cursor:pointer;padding:0 2px;font-family:inherit;}
.kx-ov-chip button:hover{color:var(--down);}
.kx-ov-empty{font-size:11.5px;font-weight:600;color:var(--t3);}
.kx-ov-x{margin-left:auto;font-size:11px;font-weight:700;color:var(--t3);cursor:pointer;}
.evchip.kx-ov-on{border-color:var(--blue);box-shadow:0 0 0 1.5px var(--blue);}


/* 我的文件行刷新图标转圈(本地 12:20,合并保留)*/
.lib-spin{animation:libspin .9s linear infinite;}
@keyframes libspin{to{transform:rotate(360deg);}}

/* ===== 新手引导:导入持仓分步向导(AccountWizard 改版) ===== */
.aw-ob-body{overflow-x:hidden;display:flex;flex-direction:column;}
.aw-step-anim{flex:1;min-height:0;display:flex;flex-direction:column;animation:awStepIn .3s cubic-bezier(.22,.85,.3,1);}
.aw-step-anim > .aw-ai-step{flex:1;min-height:0;}
.aw-step-anim.back{animation:awStepBack .3s cubic-bezier(.22,.85,.3,1);}
@keyframes awStepIn{from{opacity:0;transform:translateX(26px);}to{opacity:1;transform:none;}}
@keyframes awStepBack{from{opacity:0;transform:translateX(-26px);}to{opacity:1;transform:none;}}
/* 顶部步骤指示器(居中、纯文字 + 连线) */
.aw-ob-h{position:relative;min-height:58px;}
.aw-ob-steps{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;align-items:center;gap:12px;margin:0;}
.aw-ob-step{font-size:13px;font-weight:700;color:var(--t3);white-space:nowrap;transition:color .3s cubic-bezier(.4,0,.2,1);}
.aw-ob-step.cur{color:var(--blue);}
.aw-ob-step.done{color:var(--blue);}
.aw-ob-line{width:30px;height:2px;border-radius:1px;background:var(--line2);position:relative;overflow:hidden;flex-shrink:0;}
.aw-ob-line::after{content:"";position:absolute;inset:0;background:var(--blue);transform:scaleX(0);transform-origin:left;transition:transform .35s cubic-bezier(.4,0,.2,1);}
.aw-ob-line.done::after{transform:scaleX(1);}
/* 第一步:欢迎 + 方式卡(点卡即进下一步) */
/* 第一步:欢迎 + 方式卡——纵向节奏:hero(48顶距) →34→ 名称行 →48→ 方式卡,相邻间距递增、同组更紧 */
.aw-ob-hero{text-align:center;padding:48px 12px 0;}
.aw-ob-hero h2{margin:0 0 14px;font-size:26px;font-weight:800;letter-spacing:-.6px;color:var(--t1);}
.aw-ob-hero p{margin:0 auto;font-size:14px;color:var(--t2);line-height:1.85;max-width:580px;text-wrap:pretty;}
.aw-ob-cards{max-width:740px;margin:0 auto;gap:14px;}
.aw-ob-cards .aw-card{position:relative;align-items:center;text-align:center;gap:13px;padding:28px 16px 26px;}
.aw-ob-cards .aw-card-top{align-items:center;gap:7px;}
.aw-ob-cards .aw-card-top b{font-size:14.5px;}
.aw-ob-cards .aw-card-d{text-align:center;max-width:210px;margin:0 auto;font-size:12px;}
.aw-ob-name{display:flex;align-items:center;gap:14px;justify-content:center;margin:34px 0 48px;}
.aw-ob-name label{font-size:15px;font-weight:600;color:var(--t2);}
.aw-ob-name .tob-input{width:400px;height:48px;font-size:15.5px;}
.aw-ob-name span{font-size:11.5px;color:var(--t3);}
/* 第三步:完成 */
/* 第二步「我在关注」：搜索 + 常见关注组合 + 已加入 chips(可跳过) */
.aw-watch-step{max-width:640px;width:100%;margin:26px auto 0;padding-bottom:34px;}
/* 搜索居中在顶；下方两栏：左=组合卡，右=「已加入关注」篮子(表头与面板高度均对齐)。 */
.aw-watch-wide{max-width:860px;}
.aw-watch-wide .aw-watch-search{max-width:560px;margin:0 auto;}
.aw-watch-cols{display:grid;grid-template-columns:1fr 236px;gap:0 22px;align-items:stretch;}
.aw-watch-col{display:flex;flex-direction:column;}
.aw-basket-h{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.aw-basket-wrap{flex:1;position:relative;min-height:180px;}
.aw-watch-basket{position:absolute;inset:0;border:1px solid var(--line2);border-radius:12px;background:var(--surface-sunken);padding:10px;display:flex;flex-direction:column;min-height:0;}
.aw-basket-clear{font-size:11px;font-weight:700;color:var(--t3);padding:2px 6px;border-radius:6px;transition:.12s;}
.aw-basket-clear:hover{background:var(--line);color:var(--t1);}
.aw-basket-list{display:flex;flex-direction:column;gap:6px;flex:1;min-height:0;overflow-y:auto;}
.aw-basket-row{display:flex;align-items:center;gap:7px;padding:6px 7px;border:1px solid var(--line2);border-radius:9px;background:var(--card);font-size:12px;flex-shrink:0;animation:awChipIn .18s ease;}
.aw-basket-row b{font-weight:700;color:var(--t1);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.aw-basket-row button{display:inline-grid;place-items:center;width:17px;height:17px;border-radius:5px;color:var(--t3);flex-shrink:0;transition:.12s;}
.aw-basket-row button:hover{background:var(--line);color:var(--t1);}
.aw-basket-empty{font-size:12px;color:var(--t3);line-height:1.7;padding:4px 3px;}
@media (max-width:860px){.aw-watch-cols{grid-template-columns:1fr;}.aw-basket-wrap{flex:none;min-height:0;}.aw-watch-basket{position:static;max-height:300px;}}
.aw-watch-search{position:relative;}
.aw-watch-search .aw-sugg button[disabled]{opacity:.55;cursor:default;}
.aw-watch-packs-h{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11px;font-weight:800;letter-spacing:.4px;color:var(--t3);margin:22px 2px 8px;}
.aw-packs-refresh{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700;letter-spacing:0;color:var(--blue);padding:2px 7px;border-radius:6px;transition:.12s;}
.aw-packs-refresh:hover{background:var(--blue-soft);}
.aw-packs-refresh svg{transition:transform .35s ease;}
.aw-packs-refresh:hover svg{transform:rotate(180deg);}
.aw-watch-packs{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;align-items:stretch;}
.aw-watch-pack{display:flex;flex-direction:column;align-items:stretch;gap:5px;padding:12px 13px;border:1px solid var(--line2);border-radius:11px;background:var(--card);text-align:left;transition:border-color .15s,background .15s,box-shadow .15s;}
.aw-watch-pack:hover{border-color:rgba(58,109,240,.45);box-shadow:0 2px 10px rgba(20,25,35,.06);}
.aw-watch-pack.on{border-color:rgba(58,109,240,.55);background:var(--blue-soft);}
.aw-watch-pack-t{display:flex;align-items:center;justify-content:space-between;font-size:13px;font-weight:800;color:var(--t1);}
.aw-watch-pack-t svg{color:var(--t3);flex-shrink:0;transition:color .15s;}
.aw-watch-pack.on .aw-watch-pack-t svg,.aw-watch-pack.on .aw-watch-pack-t b{color:var(--blue);}
.aw-watch-pack i{font-style:normal;font-size:11px;color:var(--t3);line-height:1.55;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:34px;}
.aw-watch-added{display:flex;flex-wrap:wrap;gap:8px;}
.aw-watch-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 7px 6px 7px;border:1px solid var(--line2);border-radius:9px;background:var(--card);font-size:12px;font-weight:700;color:var(--t1);animation:awChipIn .18s ease;}
@keyframes awChipIn{from{transform:scale(.85);opacity:0;}to{transform:scale(1);opacity:1;}}
.aw-watch-chip button{display:inline-grid;place-items:center;width:17px;height:17px;border-radius:5px;color:var(--t3);transition:.12s;}
.aw-watch-chip button:hover{background:var(--line);color:var(--t1);}
.aw-done{display:flex;flex-direction:column;align-items:center;text-align:center;padding:38px 16px 8px;}
.aw-wl-in{margin-left:8px;font-size:10.5px;font-weight:700;color:var(--t3);flex-shrink:0;}
.aw-done-watch-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;}
.aw-done-watch-chips .aw-found-chip button{display:inline-grid;place-items:center;width:16px;height:16px;border-radius:5px;color:inherit;opacity:.7;}
.aw-done-watch-chips .aw-found-chip button:hover{opacity:1;background:rgba(0,0,0,.08);}
.aw-done-check{width:64px;height:64px;border-radius:50%;background:var(--ok-soft);color:#15a35a;display:grid;place-items:center;animation:awDonePop .5s cubic-bezier(.34,1.56,.64,1);}
@keyframes awDonePop{from{transform:scale(.4);opacity:0;}to{transform:scale(1);opacity:1;}}
.aw-done h2{margin:16px 0 8px;font-size:22px;font-weight:800;letter-spacing:-.4px;color:var(--t1);}
.aw-done p{margin:0 0 26px;font-size:13.5px;color:var(--t2);}
.aw-done p b{color:var(--t1);}
.aw-done-next{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;width:100%;max-width:640px;}
.aw-done-card{display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px 12px;border:1px solid var(--line2);border-radius:12px;background:var(--surface-sunken,var(--surface-sunken));animation:awStepIn .4s cubic-bezier(.22,.85,.3,1) both;}
.aw-done-card:nth-child(2){animation-delay:.07s;}
.aw-done-card:nth-child(3){animation-delay:.14s;}
.aw-done-ic{width:32px;height:32px;border-radius:10px;background:var(--blue-soft);color:var(--blue);display:grid;place-items:center;}
.aw-done-card b{font-size:13px;font-weight:700;color:var(--t1);}
.aw-done-card i{font-style:normal;font-size:11.5px;color:var(--t3);line-height:1.5;}

/* 账户级设置弹层(账户菜单齿轮) */
.acs-rows{display:flex;flex-direction:column;margin-top:6px;}
.acs-row{display:flex;align-items:center;gap:12px;padding:14px 2px;border-top:1px solid var(--line);}
.acs-row-m{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;}
.acs-row-m b{font-size:13px;font-weight:700;color:var(--t1);}
.acs-row-m i{font-style:normal;font-size:11.5px;color:var(--t3);line-height:1.5;}
.acs-row .tob-btn.sm{padding:6px 12px;font-size:12px;flex-shrink:0;}
.acs-row .tob-btn.ghost{border:1px solid var(--line2);}
.acs-row.acs-del{flex-direction:column;align-items:stretch;}
.acs-del-confirm{margin-top:10px;padding:12px;border:1px solid rgba(214,69,61,.28);background:var(--danger-soft);border-radius:10px;display:flex;flex-direction:column;gap:9px;animation:awStepIn .22s ease;}
.acs-del-tip{font-size:12px;color:var(--t2);}
.acs-del-tip b{color:var(--danger);font-weight:800;}

/* —— 事件详情弹窗（design v4 误删，赵总令外科恢复；EventMiniK 升级为真蜡烛 SVG）—— */
.kx-dt-tabs{display:flex;gap:6px;padding:10px 22px 0;}
.kx-dt-tab{font-size:12.5px;font-weight:700;padding:6px 14px;border-radius:8px 8px 0 0;border:none;background:none;color:var(--t2);cursor:pointer;font-family:inherit;}
.kx-dt-tab:hover{color:var(--t1);}
.kx-dt-tab.on{color:var(--blue);background:var(--blue-soft);}
.kx-dt-explain{font-size:13px;line-height:1.72;color:var(--t1);}
.kx-dt-explain .ex-what{font-weight:700;margin-bottom:5px;}
.kx-dt-explain .ex-why{color:var(--t2);}
.kx-dt-mk{position:relative;height:96px;padding:6px 0 20px;}   /* 真蜡烛 SVG 容器（替旧 DOM 剪影柱）*/
.kx-dt-mk svg{display:block;width:100%;height:100%;overflow:visible;}
.kx-dt-mk-t0{position:absolute;bottom:2px;transform:translateX(-50%);font-size:8px;color:var(--blue);white-space:nowrap;pointer-events:none;}
.kx-dt-kcap{font-size:10.5px;color:var(--t3);text-align:center;margin-top:2px;}
.kx-dt-anchor{display:flex;align-items:center;gap:9px;padding:8px 0;border-bottom:1px solid var(--line);font-size:12px;cursor:pointer;}
.kx-dt-anchor:last-child{border-bottom:none;}
.kx-dt-anchor:hover{background:var(--surface-sunken);}
.kx-dt-anchor .an-nm{font-weight:650;min-width:70px;}
.kx-dt-anchor .an-self{font-size:8.5px;color:var(--blue);margin-left:3px;}
.kx-dt-anchor .an-sym{font-family:var(--mono);font-size:10px;color:var(--t3);min-width:64px;}
.kx-dt-anchor .an-dt{font-family:var(--mono);font-size:11px;color:var(--t2);min-width:72px;}
.kx-dt-anchor .an-fwd{margin-left:auto;font-family:var(--mono);font-weight:750;}
.kx-dt-anchor .an-fwd.up{color:var(--up);}
.kx-dt-anchor .an-fwd.dn{color:var(--down);}
.kx-dt-dist{display:flex;gap:6px;align-items:flex-end;height:58px;margin-top:4px;}
.kx-dt-dist .dc{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;}
.kx-dt-dist .dc .db{width:100%;border-radius:2px 2px 0 0;min-height:2px;}
.kx-dt-dist .dc .dl{font-size:8.5px;color:var(--t3);}
.kx-dt-dist .dc .dn{font-size:10px;font-family:var(--mono);font-weight:700;}

/* ============ 统一个股页面(usd-*):PanelView 骨架 + 左列/右栏插拔件 ============ */
/* Watchlist 入口:铺满 .tob-view(去内边距,全高) */
.tob-view:has(.usd-page){padding:0;overflow:hidden;}
.usd-page{height:100%;display:flex;flex-direction:column;min-height:0;max-width:none;background:var(--bg);}
.usd-page>.tob-panel-page{flex:1;min-height:0;}
/* 顶栏报价溢出防护:报价元素可收缩+裁剪(只在真被挤压时生效),不加常驻渐隐 mask——mask 会把正常态的涨跌幅尾字符也淡掉 */
.stkd-bar .th{min-width:0;}
.stkd-bar .th-price{flex-shrink:1;min-width:0;overflow:hidden;}
/* 左列:v5 卡片(与内容卡/右栏同制),内部沿用 wl-listcol 组件样式(双 class 提优先级,避免被 1240 媒体查询打回) */
.usd-listcol.wl-listcol{width:242px;flex-shrink:0;display:flex;flex-direction:column;gap:10px;padding:12px 10px 10px;background:var(--card);border:0;border-radius:var(--radius);box-shadow:var(--sh-card);overflow:hidden;}
.usd-listcol.wl-listcol .wl-rows{flex:1;min-height:0;overflow-y:auto;padding-right:1px;}
@media(max-width:1240px){.usd-listcol.wl-listcol{width:206px;}}
/* KD 依据条(持仓/关注态,交易票据上方):一行折叠条,默认收起;交易票据永远是主体 */
.usd-ticket-wrap{display:flex;flex-direction:column;}
.usd-kd-strip{position:relative;margin:8px 10px 0;border:1px solid var(--line2);border-radius:10px;background:var(--surface-sunken);}
.usd-kd-strip.open{background:var(--card);}
.usd-kds-head{display:flex;align-items:center;gap:6px;padding:6px 8px;}
.usd-kds-toggle{flex:1;min-width:0;display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;color:var(--t2);text-align:left;border-radius:7px;padding:3px 4px;}
.usd-kds-toggle:hover{color:var(--t1);}
.usd-kds-toggle b{color:var(--t1);font-variant-numeric:tabular-nums;}
.usd-kds-okn{font-style:normal;font-size:10px;font-weight:800;color:#15a35a;background:rgba(21,163,90,.1);border-radius:5px;padding:1px 5px;margin-left:5px;}
.usd-kds-chev{width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid var(--t3);transition:transform .15s;margin-left:2px;}
.usd-kds-chev.up{transform:rotate(180deg);}
.usd-kds-adopt{flex-shrink:0;font-size:11px;font-weight:800;color:#fff;border-radius:7px;padding:5px 10px;white-space:nowrap;}
.usd-kds-adopt.buy{background:var(--blue);}
.usd-kds-adopt.sell{background:#d9480f;}
.usd-kds-adopt:hover{filter:brightness(1.06);}
.usd-kds-done{flex-shrink:0;display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700;color:var(--t3);border:1px solid var(--line2);border-radius:7px;padding:4px 8px;background:var(--card);white-space:nowrap;}
.usd-kds-done:hover{color:var(--t1);}
.usd-kds-done.on{color:#15a35a;border-color:rgba(21,163,90,.4);background:rgba(21,163,90,.08);}
.usd-kds-body{border-top:1px solid var(--line);}
/* 核对清单悬浮层：头+清单是同一块卡片(盖住原位头部行)，同色、无分隔线 */
.usd-kds-veil{position:fixed;inset:0;z-index:59;}
.usd-kds-pop{position:fixed;z-index:60;background:var(--card);border:1px solid var(--line2);border-radius:10px;box-shadow:0 18px 44px rgba(20,25,35,.16);overflow:hidden;}
.usd-kds-pop .usd-kds-body{border-top:none;}
.usd-kds-pop .usd-kds-list{max-height:min(340px,48vh);overflow-y:auto;padding-top:2px;}
.usd-kds-list{max-height:250px;}
/* 自建 Key Driven:类型下拉 + 描述输入同行,不再铺 chip */
.wl-kd-addrow{display:flex;gap:6px;align-items:stretch;}
.wl-kd-addrow .wl-kd-addinput{flex:1;min-width:0;}
.wl-kd-typesel{flex-shrink:0;font-size:12px;font-weight:700;color:var(--t1);border:1px solid var(--line2);border-radius:8px;padding:0 9px;background:var(--card);outline:none;cursor:pointer;}
.wl-kd-typesel:focus{border-color:var(--blue);}
/* 预判区分栏(问一问/调数据):与预判分组同宽居左,拉开与 chip 的层级 */
.ac-pick-tabs{align-self:flex-start;margin:4px 0 12px;}
.ac-pick-tabs button{padding:5px 16px;font-size:11.5px;}
/* 「调数据」唤醒 chip:与预判问题(ac-pq)同一制式,仅加图标与禁用态 */
.usd-srcpq{display:inline-flex;align-items:center;gap:6px;}
.usd-srcpq:disabled{opacity:.42;cursor:default;}
.usd-srcpq:disabled:hover{background:var(--card);border-color:var(--line2);}
/* 预判区重新收编「调数据」唤醒:紧凑彩色胶囊 chip,自动换行(参考 Brainstorm 菜单 chip 制式) */
.ac-pick-src{display:flex;flex-direction:column;gap:16px;margin-top:20px;padding-top:16px;border-top:1px dashed var(--line2);}
.ac-pick-src .ac-pcat-h{margin-bottom:8px;}
.ac-pick-src .ac-pq-list{display:flex;flex-direction:row;flex-wrap:wrap;gap:7px;}
.ac-pick-src .usd-srcpq{width:auto;flex:none;border-radius:999px;padding:6px 13px;font-size:12px;font-weight:700;background:var(--card);
  border:1.5px solid color-mix(in srgb,currentColor 34%,transparent);}
.ac-pick-src .usd-srcpq:hover{background:color-mix(in srgb,currentColor 7%,var(--card));border-color:color-mix(in srgb,currentColor 55%,transparent);}
.ac-pick-src .usd-srcpq:disabled{color:var(--t3);border-color:var(--line2);background:var(--card);}
/* 输入框上方的数据唤醒胶囊 + 弹层：单行横滑不折行，胶囊加大加高 */
.dc-src-caps{display:flex;gap:8px;padding:10px 14px 0;overflow-x:auto;scrollbar-width:none;overscroll-behavior-x:contain;}
.dc-src-caps::-webkit-scrollbar{height:0;display:none;}
.dc-src-cap{display:inline-flex;align-items:center;gap:5px;height:32px;padding:0 11px;border-radius:11px;font-size:12.5px;font-weight:700;color:var(--t1);
  background:var(--card);border:1px solid var(--line2);transition:.12s;} /* 豆包式胶囊:白底浅描边、大圆角矩形、深色粗字与深色图标 */
.dc-src-cap svg{color:var(--t1);width:14px;height:14px;}
.dc-src-cap:hover{color:var(--t1);border-color:var(--line3);}
.dc-src-cap.on{color:var(--blue);border-color:var(--blue);background:var(--blue-soft);}
.dc-src-cap .tx-caret{font-style:normal;font-size:9px;opacity:.7;}
.dc-src-pop{max-height:min(430px,60vh);overflow-y:auto;z-index:50;}
.dc-src-pop-body{margin-top:0;padding:14px;border-top:none;}
/* 中间显示区(Brainstorm 唤醒的个股数据/宏观等):v5 卡片内留边距 */
.usd-disp{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;padding:12px;overflow:hidden;background:var(--card);border-radius:var(--radius);box-shadow:var(--sh-card);}
.usd-disp .wl-disp{flex:1;}

/* ===== 委托票据视觉减负(功能不变,只降噪;覆盖 app.css 同名规则) =====
   原则:一屏内蓝色只留两处——主 CTA「交易」与滑杆填充;其余提示性元素全部退为安静灰,hover 才显交互 */
/* 行分隔虚线减淡 */
.dc-grid-order .dc-cell{border-top-color:var(--line);}
/* 「现价 / 建议」由蓝底 chip 改为点状下划线的安静文字,hover 变蓝 */
.dc-grid-order .tx-sugg{background:transparent;padding:1px 2px;font-weight:700;color:var(--t3);text-decoration:underline dotted var(--line3);text-underline-offset:3px;}
.dc-grid-order .tx-sugg:hover{background:transparent;filter:none;color:var(--blue);text-decoration-color:var(--blue);}
/* 输入框:静息态下划线退为浅灰细线,聚焦才变蓝 */
.dc-grid-order .tx-cin{border-bottom:1px solid var(--line2);}
.dc-grid-order .tx-cin:focus{border-bottom-color:var(--blue);background:none;}
/* 持仓比例:数值回归正文色;滑杆更细、更小的滑钮;刻度按钮弱化 */
.dc-grid-order .tx-pos-val{color:var(--t1);font-size:13px;}
.dc-grid-order .tx-pos-range{height:4px;}
.dc-grid-order .tx-pos-range::-webkit-slider-thumb{width:14px;height:14px;border-width:2.5px;box-shadow:0 1px 3px rgba(0,0,0,.14);}
.dc-grid-order .tx-pos-range::-moz-range-thumb{width:14px;height:14px;border-width:2.5px;}
.dc-grid-order .tx-pos-ticks button{font-size:10px;padding:1px 5px;opacity:.85;}
/* 有效期等迷你分段:由三个描边盒改为一条 muted 轨道 + 白色滑块,选中不再整块实心蓝 */
.dc-grid-order .tx-mini-seg{gap:0;background:var(--surface-muted);border-radius:8px;padding:2px;}
.dc-grid-order .tx-mini-seg button,.dc-grid-order .tx-tline .tx-mini-seg button{border:none;background:transparent;height:24px;border-radius:6px;font-weight:700;}
.dc-grid-order .tx-mini-seg button:hover{color:var(--t1);}
.dc-grid-order .tx-mini-seg button.on{background:var(--card);color:var(--blue);box-shadow:0 1px 3px rgba(20,25,35,.1);}


/* ── AI 录入持仓 输入框(4173d3e3 修复;v7 合并被 design 侧旧 tob.css 覆盖删除,2026-07-13 补回——用法在 tob-app.jsx aw-compose,勿删)── */
.aw-compose{display:flex;gap:8px;padding:10px 12px;border-top:1px solid var(--line);background:var(--surface-sunken);}
.aw-compose textarea{flex:1;resize:none;border:1px solid var(--line2);border-radius:10px;background:var(--card);padding:10px 14px;font-size:14px;font-family:var(--sans);color:var(--t1);outline:none;transition:.13s;max-height:120px;line-height:1.5;}
.aw-compose textarea:focus{border-color:rgba(58,109,240,.5);box-shadow:0 0 0 3px var(--blue-soft);}
.aw-compose textarea::placeholder{color:var(--t3);}
.aw-send{flex-shrink:0;width:38px;height:38px;border-radius:10px;background:var(--blue);color:#fff;display:grid;place-items:center;cursor:pointer;border:none;transition:.13s;}
.aw-send:hover:not(:disabled){filter:brightness(1.08);}
.aw-send:disabled{opacity:.4;cursor:not-allowed;}

/* ── .banner:skill 产物信息流卡片(1200×628 固定画布;类名与 skill banner.html 一致,零页面冲突) ── */
.banner{width:1200px;height:628px;position:relative;overflow:hidden;
  background:linear-gradient(135deg,#eef2fe 0%,#f0f4ff 40%,#f6f8fb 100%);
  color:#1a1d21;}
.banner .inner{padding:50px 60px;height:100%;box-sizing:border-box;display:flex;flex-direction:column;}
.banner .chip{display:inline-block;padding:4px 14px;border-radius:16px;font-size:13px;font-weight:700;
  background:#1d4ed8;color:#fff;margin-bottom:20px;align-self:flex-start;}
.banner h1{font-size:44px;font-weight:900;line-height:1.2;margin:0 0 16px;max-width:900px;}
.banner .sub{font-size:20px;color:#878d94;margin:0 0 24px;max-width:800px;line-height:1.5;}
.banner .strip{display:flex;gap:20px;margin-bottom:auto;align-items:flex-end;flex-wrap:wrap;}
.banner .kv{text-align:center;}
.banner .kv .v{font-size:36px;font-weight:900;color:#1d4ed8;font-variant-numeric:tabular-nums;}
.banner .kv .v.up{color:#f0353b;}
.banner .kv .v.down{color:#15a35a;}
.banner .kv .l{font-size:13px;color:#878d94;margin-top:2px;}
.banner .score-strip{display:flex;gap:8px;align-items:flex-end;}
.banner .score-strip .big{font-size:64px;font-weight:900;color:#2563eb;line-height:1;}
.banner .score-strip .unit{font-size:22px;color:#878d94;margin-left:2px;}
.banner .footer{font-size:11px;color:#878d94;margin-top:12px;border-top:1px solid rgba(0,0,0,0.08);padding-top:10px;}
.banner .bars{display:flex;height:8px;border-radius:4px;overflow:hidden;margin-bottom:12px;max-width:500px;}
.banner .bars > span{display:block;height:100%;}
.banner .bars .b-up{background:#f0353b;}
.banner .bars .b-neutral{background:#878d94;}
.banner .bars .b-down{background:#15a35a;}

/* ===== KD 清单 2c 化(置于文件末尾保证盖过上方基础规则)：每条 = 一行「类型·逻辑文本 ——— 图标裁决钮」 ===== */
.dc-kd-mid .usd-kds-list{display:flex;flex-direction:column;gap:0;}
.dc-kd-mid .wl-kd-card{display:flex;flex-direction:row;align-items:center;gap:10px;border:none;background:transparent;border-radius:0;padding:9px 0;margin:0;border-bottom:1px solid var(--line);box-shadow:none;}
.dc-kd-mid .wl-kd-card:last-of-type{border-bottom:none;}
.dc-kd-mid .wl-kd-row1{flex:1;min-width:0;display:flex;align-items:center;gap:7px;margin:0;padding:0;}
.dc-kd-mid .wl-kd-row1 b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.dc-kd-mid .wl-kd-vbs{flex-shrink:0;display:flex;flex-direction:row;gap:5px;margin:0;padding:0;border:none;}
.dc-kd-mid .wl-kd-vb{font-size:0;line-height:0;gap:0;width:26px;height:26px;min-width:26px;padding:0;border-radius:8px;display:grid;place-items:center;}
.dc-kd-mid .wl-kd-vb svg{width:13px;height:13px;display:block;}
.dc-kd-mid .wl-kd-add{font-size:12px;padding:7px 0;border:none;background:transparent;}
/* KD 跟踪卡:清理核对行——恢复卡片壳(两行:标题行 + 整条三段裁决控件),终结「× ✓ ⚠ ✗ 散钮+红方块」的混乱 */
.dc-kd-mid .kd-track .usd-kds-list{gap:0;}
.dc-kd-mid .kd-track .wl-kd-card{flex-direction:column;align-items:stretch;gap:9px;border:none;background:transparent;border-radius:0;padding:11px 2px;margin:0;box-shadow:none;border-top:1px solid var(--line);}
.dc-kd-mid .kd-track .wl-kd-card:first-of-type{border-top:none;padding-top:2px;}
.dc-kd-mid .kd-track .wl-kd-card.checked{background:transparent;}
.dc-kd-mid .kd-track .wl-kd-row1{width:100%;gap:8px;}
.dc-kd-mid .kd-track .wl-kd-title{flex:1;min-width:0;font-size:13px;font-weight:700;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.dc-kd-mid .kd-track .wl-kd-st.self{flex-shrink:0;font-size:10px;padding:2px 7px;}
.dc-kd-mid .kd-track .wl-kd-rm{flex-shrink:0;}
.dc-kd-mid .kd-track .wl-kd-vbs{display:grid;grid-template-columns:repeat(3,1fr);gap:0;width:100%;border:1px solid var(--line2);border-radius:9px;overflow:hidden;}
.dc-kd-mid .kd-track .wl-kd-vb{width:auto;min-width:0;height:34px;border:none;border-left:1px solid var(--line2);border-radius:0;font-size:11.5px;line-height:1;gap:5px;padding:0;font-weight:700;}
.dc-kd-mid .kd-track .wl-kd-vb:first-child{border-left:none;}
.dc-kd-mid .kd-track .wl-kd-vb svg{width:13px;height:13px;}
.trace-phase{display:inline-flex;align-items:center;padding:2px 7px;border-radius:6px;font-size:10.5px;font-weight:800;white-space:nowrap;background:var(--surface-muted);color:var(--t2);}
.trace-phase.answer{background:var(--surface-muted);color:var(--t1);}
.trace-phase.explore{background:var(--blue-soft);color:var(--blue);}
.trace-phase.verify{background:var(--amber-soft);color:var(--amber);}
.trace-phase.summarize{background:var(--violet-soft);color:var(--violet);}
.trace-phase.legacy{background:var(--surface-muted);color:var(--t3);}
.trace-steer{display:inline-flex;margin-left:5px;font-size:10px;font-weight:700;color:var(--amber);}
.trace-plan{font-weight:800;background:var(--blue-soft);color:var(--blue);}
.trace-plan.chat{background:var(--surface-muted);color:var(--t1);}
.trace-plan.draft{background:var(--violet-soft);color:var(--violet);}
.trace-plan.deep_research{background:var(--amber-soft);color:var(--amber);}
.trace-plan-fallback{background:var(--amber-soft);color:var(--amber);font-weight:700;}
.trace-context-warn{color:var(--dn);}
.trace-child-title{font-size:13px;}
.trace-status.wait{background:var(--amber-soft);color:var(--amber);}
.trace-child-link{color:var(--blue);text-decoration:none;font-size:11px;font-weight:700;}
.trace-child-link:hover{text-decoration:underline;}
.trace-child-wait{font-size:11.5px;color:var(--t3);padding:4px 2px;}
.trace-summary{background:var(--card);font-weight:700;color:var(--t1);}

/* 已打开 SPA 的版本更新提示：只提示刷新，不自动打断输入或运行中的任务。 */
.batx-version-notice{position:fixed;right:20px;bottom:20px;z-index:3600;display:flex;align-items:center;gap:12px;max-width:calc(100vw - 32px);padding:12px 13px 12px 15px;border:1px solid var(--line2);border-radius:13px;background:var(--card);color:var(--t1);box-shadow:0 12px 34px rgba(20,28,42,.16);animation:batxVersionIn .22s ease-out;}
.batx-version-copy{display:flex;flex-direction:column;min-width:0;line-height:1.35;}
.batx-version-copy b{font-size:13px;}
.batx-version-copy span{font-size:11.5px;color:var(--t3);white-space:nowrap;}
.batx-version-refresh{flex-shrink:0;padding:6px 11px;border:0;border-radius:8px;background:var(--blue);color:#fff;font-size:12px;font-weight:700;cursor:pointer;}
.batx-version-refresh:hover{filter:brightness(.96);}
.batx-version-close{flex-shrink:0;width:25px;height:25px;border:0;border-radius:7px;background:transparent;color:var(--t3);font-size:19px;line-height:1;cursor:pointer;}
.batx-version-close:hover{background:var(--surface-hover);color:var(--t1);}
@keyframes batxVersionIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(max-width:560px){.batx-version-notice{left:12px;right:12px;bottom:12px}.batx-version-copy{flex:1}.batx-version-copy span{white-space:normal}}

/* 监控详情：主页原地真弹窗，正文直接复用 KeyDrivenBody，不嵌套 workspace/iframe。 */
.tob-monitor-mask{position:fixed;inset:0;z-index:5000;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(15,23,42,.42);backdrop-filter:blur(2px);}
.tob-monitor-modal{display:flex;flex-direction:column;width:min(920px,calc(100vw - 48px));max-height:min(90vh,860px);overflow:hidden;border:1px solid var(--line2);border-radius:16px;background:var(--card);box-shadow:0 24px 72px rgba(15,23,42,.28);animation:pop .16s ease-out;}
.tob-monitor-head{display:flex;flex:none;align-items:center;justify-content:space-between;gap:16px;padding:13px 16px;border-bottom:1px solid var(--line);}
.tob-monitor-head>div{display:flex;min-width:0;align-items:baseline;gap:10px;}
.tob-monitor-head b{font-size:15px;color:var(--t1);}
.tob-monitor-head span{overflow:hidden;color:var(--t3);font-size:11.5px;text-overflow:ellipsis;white-space:nowrap;}
.tob-monitor-head button{flex:none;width:30px;height:30px;border-radius:8px;color:var(--t2);font-size:22px;line-height:1;}
.tob-monitor-head button:hover{background:var(--surface-hover);color:var(--t1);}
.tob-monitor-body{flex:1;min-height:0;overflow:auto;padding:16px 18px 18px;}
.tob-monitor-loading{padding:50px 12px;text-align:center;color:var(--t3);font-size:13px;}
.tob-monitor-body .key-resource-detail{width:100%;}
.tob-monitor-body .todo-card.key-resource-card{width:100%;max-width:none;margin:0;box-shadow:none;}
.tob-monitor-body .todo-card.key-card-split-mode{width:100%;max-width:none;}
.tob-monitor-body .key-card-pages{min-height:210px;}
.key-resource-title{font-size:14px;font-weight:700;color:var(--t1);}
.key-resource-description{margin-top:6px;color:var(--t2);font-size:12.5px;line-height:1.65;}
.key-resource-location{margin-top:8px;color:var(--t3);font-size:11.5px;}
.key-resource-error{padding:5px 15px;color:var(--up,#f0353b);font-size:12px;}
.tob-monitor-body .key-resource-notifications{margin-top:0;padding-top:0;border-top:0;}
.tob-monitor-body .key-research-poster-frame{height:520px;}
.key-resource-notifications{margin-top:18px;padding-top:4px;border-top:1px solid var(--line);}
.key-resource-channel-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;}
.key-resource-channel{display:grid;grid-template-columns:20px 1fr;gap:2px 7px;align-items:center;padding:10px;border:1px solid var(--line2);border-radius:10px;background:var(--card);color:var(--t1);text-align:left;}
.key-resource-channel>span{grid-row:1/3;width:18px;height:18px;border:1px solid var(--line2);border-radius:5px;text-align:center;line-height:16px;color:#fff;}
.key-resource-channel>b{font-size:12px}.key-resource-channel>small{overflow:hidden;color:var(--t3);font-size:10.5px;text-overflow:ellipsis;white-space:nowrap;}
.key-resource-channel.on{border-color:color-mix(in srgb,var(--blue) 45%,var(--line2));background:var(--blue-soft);}
.key-resource-channel.on>span{border-color:var(--blue);background:var(--blue)}.key-resource-channel:disabled{opacity:.55;cursor:not-allowed;}
.key-resource-action{display:flex;flex-direction:column;gap:8px;margin-top:10px;padding:10px;border:1px solid var(--line2);border-radius:10px;font-size:12px;font-weight:700;}
.key-resource-action>span{display:flex;align-items:center;gap:7px}.key-resource-action-copy{display:flex;flex-direction:column;gap:2px;}
.key-resource-action-copy small,.key-resource-action-status{color:var(--t3);font-size:10px;font-weight:400;line-height:1.45;}
.key-resource-action textarea{resize:vertical;padding:8px 9px;border:1px solid var(--line2);border-radius:8px;background:var(--card);color:var(--t1);font:12px/1.5 var(--sans);}
.key-resource-notification-foot{display:flex;align-items:center;gap:10px;margin-top:10px;}
.key-resource-notification-foot button{padding:7px 12px;border:0;border-radius:8px;background:var(--blue);color:#fff;font-size:11.5px;font-weight:700;}
.key-resource-notification-foot span{font-size:11px;color:var(--down)}.key-resource-notification-foot small{margin-left:auto;color:var(--t3);font-size:10.5px;}
.key-resource-notification-error{margin-top:8px;color:var(--up);font-size:11px;}
.key-history{min-height:210px}.key-history-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:2px 1px 10px;}
.key-history-head>div{display:flex;min-width:0;flex-direction:column;gap:3px}.key-history-head b{color:var(--t1);font-size:13px}.key-history-head div span{color:var(--t3);font-size:10.5px;line-height:1.45}.key-history-head>span{flex:none;color:var(--t2);font-size:11px;}
.key-history-list{overflow:hidden;border:1px solid var(--line2);border-radius:10px;background:var(--card)}.key-history-row{display:grid;grid-template-columns:142px minmax(0,1fr) 92px;gap:12px;align-items:center;padding:10px 11px;border-bottom:1px solid var(--line)}.key-history-row:last-child{border-bottom:0;}
.key-history-time{color:var(--t3);font-size:10.5px;white-space:nowrap}.key-history-values{display:flex;min-width:0;flex-wrap:wrap;gap:6px}.key-history-value{display:inline-flex;max-width:100%;align-items:baseline;gap:5px;padding:4px 7px;border-radius:7px;background:var(--surface)}.key-history-value small{overflow:hidden;max-width:180px;color:var(--t3);font-size:9.5px;text-overflow:ellipsis;white-space:nowrap}.key-history-value b{overflow-wrap:anywhere;color:var(--t1);font-size:10.5px}.key-history-no-value{color:var(--t3);font-size:10.5px;}
.key-history-result{display:flex;align-items:flex-end;flex-direction:column;gap:3px}.key-history-result>span{padding:3px 7px;border-radius:999px;background:var(--surface);color:var(--t2);font-size:10.5px;font-weight:700}.key-history-result>span.active{background:color-mix(in srgb,var(--down) 10%,transparent);color:var(--down)}.key-history-result small{color:var(--t3);font-size:9.5px;white-space:nowrap;}
.key-history-empty,.key-history-error{padding:42px 12px;text-align:center;color:var(--t3);font-size:11px}.key-history-error{padding:12px;color:var(--up)}.key-history-more{display:block;margin:10px auto 0;padding:7px 14px;border:1px solid var(--line2);border-radius:8px;background:var(--card);color:var(--blue);font-size:11px;font-weight:700;}
@media(max-width:700px){.tob-monitor-mask{align-items:flex-end;padding:0}.tob-monitor-modal{width:100vw;max-height:92vh;border-radius:16px 16px 0 0}.tob-monitor-body{padding:12px}.key-resource-channel-grid{grid-template-columns:1fr}.key-history-row{grid-template-columns:1fr;gap:7px}.key-history-result{align-items:flex-start;flex-direction:row}}

/* ===== auth v3:入口分流 + 两步注册 + 等待名单(auth-modal.jsx) ===== */
.am-step.am-tall{min-height:396px;display:flex;flex-direction:column;}
.am-mid{margin:auto 0;}
.am-foot2{margin-top:auto;padding-top:12px;}
.am-step .auth-agree.am-foot{margin-top:auto;padding-top:14px;}
.am-step .auth-link{font-size:13px;font-weight:600;padding:4px 12px;}
.am-gate{margin:auto 0;display:flex;flex-direction:column;gap:10px;}
.am-gate-card{width:100%;display:flex;align-items:center;gap:12px;padding:13px 16px;text-align:left;background:var(--card);border:1.5px solid var(--line2);border-radius:12px;cursor:pointer;font:inherit;transition:border-color .15s,background .15s;}
.am-gate-card:hover{border-color:var(--blue,#3a6df0);background:rgba(58,109,240,.05);}
.am-gate-ic{flex:none;width:36px;height:36px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;}
.am-gate-ic.pri{background:var(--blue,#3a6df0);color:#fff;}
.am-gate-ic.sec{background:rgba(58,109,240,.1);color:var(--blue,#3a6df0);}
.am-gate-ic.ter{background:var(--surface-hover,#f1f3f5);color:var(--t2);}
.am-gate-tx{flex:1;min-width:0;display:flex;flex-direction:column;}
.am-gate-tt{font-size:14px;font-weight:700;color:var(--t1);}
.am-gate-dd{font-size:11.5px;color:var(--t3);margin-top:2px;}
.am-gate-arr{flex:none;color:var(--t3);font-size:16px;}
.am-dots{display:flex;align-items:center;justify-content:center;gap:7px;margin:2px 0 4px;}
.am-dot{flex:none;width:18px;height:18px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:10.5px;font-weight:800;background:var(--surface-hover,#f1f3f5);color:var(--t3);}
.am-dot.on{background:var(--blue,#3a6df0);color:#fff;}
.am-dot-lb{font-size:11.5px;color:var(--t2);}
.am-dot-ln{width:22px;height:1px;background:var(--line2);}
.am-big-title{text-align:center;font-size:19px;font-weight:800;color:var(--t1);}
.am-alt{margin-top:14px;text-align:center;font-size:12.5px;color:var(--t2);}
.auth-a.on{color:var(--blue,#3a6df0);font-weight:600;}
.am-iv-note{display:flex;align-items:center;gap:7px;background:rgba(21,163,90,.08);border:1px solid rgba(21,163,90,.28);border-radius:9px;padding:7px 11px;font-size:12px;color:var(--green,#15a35a);margin:2px 0 12px;}
.am-iv-note .mono{font-weight:700;}
.am-iv-edit{margin-left:auto;flex:none;font-size:11px;color:var(--t3);background:none;border:none;cursor:pointer;padding:0;}
.am-iv-edit:hover{color:var(--t1);}
.am-hintline{margin-top:6px;font-size:11.5px;color:var(--blue,#3a6df0);}
.am-wait-legal{margin-top:10px;font-size:11px;color:var(--t3);line-height:1.7;text-align:left;}
.am-wait-done{text-align:center;padding:8px 0 2px;}
.am-wait-okc{width:42px;height:42px;border-radius:50%;background:var(--green,#15a35a);color:#fff;font-size:19px;font-weight:800;display:flex;align-items:center;justify-content:center;margin:0 auto 10px;}
.am-wait-tt{font-size:14.5px;font-weight:700;color:var(--t1);}
.am-wait-dd{font-size:12.5px;color:var(--t2);line-height:1.7;margin-top:5px;word-break:break-all;}
