/* ============================================================
   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:#fff;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:20px;letter-spacing:-1px;color:var(--t1);white-space:nowrap;text-decoration:none;}
.tob-logo i{font-style:normal;color:var(--blue);}
.tob-logo b{font-weight:800;}
.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:#eef0f2;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:#fbfcfd;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:38px;padding:0 11px;border-radius:10px;color:var(--t2);font-size:13.5px;font-weight:600;transition:.12s;position:relative;white-space:nowrap;}
.tob-navitem:hover{background:#f4f6f8;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);}

/* 侧栏底部 */
.tob-side-foot{flex-shrink:0;border-top:1px solid var(--line);padding:10px 12px;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:1px solid var(--line2);background:#fbfcfd;cursor:pointer;transition:.13s;}
.tob-acct:hover{border-color:rgba(58,109,240,.4);}
.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;border:none;background:none;justify-content:center;}
.tob.collapsed .tob-acct-meta,.tob.collapsed .tob-acct .tob-fund-chev{display:none;}

/* 多账户切换菜单（向上弹出） */
.tob-side-foot{position:relative;}
.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:#fff;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:#f4f6f8;}
.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:#e2ebff;}
.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:#fff;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-item:hover{background:#f4f6f8;}
.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:#fdecec;}

/* 操作者身份 / 账户设置（侧栏底部，区别于基金账户切换） */
.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:#fff;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:#f4f6f8;}
.tob-um-ic{width:30px;height:30px;flex-shrink:0;border-radius:9px;display:grid;place-items:center;background:#f1f3f5;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:#fdecec;}
.tob-um-item.danger .tob-um-ic{background:#fdecec;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:#dde7fd;}
.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 8px 12px;}
.lib-row{display:flex;align-items:center;gap:8px;height:34px;padding:0 6px 0 4px;border-radius:9px;cursor:pointer;transition:background .12s;position:relative;}
.lib-row:hover{background:#f4f6f8;}
.lib-caret{flex-shrink:0;width:14px;display:grid;place-items:center;color:var(--t3);}
.lib-fic{flex-shrink:0;display:grid;place-items:center;}
.lib-name{flex:1;min-width:0;font-size:13.5px;font-weight:700;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.lib-ro{flex-shrink:0;font-size:10px;font-weight:700;color:var(--t3);background:#eef0f2;padding:2px 7px;border-radius:6px;}
.lib-ro.lib-mine{color:var(--blue);background:var(--blue-soft);}
.lib-attach{flex-shrink:0;width:22px;height:22px;border-radius:6px;display:grid;place-items:center;color:var(--blue);background:var(--blue-soft);opacity:0;transition:.12s;}
.lib-item:hover .lib-attach{opacity:1;}
.lib-attach:hover{background:var(--blue);color:#fff;}
.lib-dots{flex-shrink:0;width:24px;height:24px;border-radius:7px;display:grid;place-items:center;color:var(--t3);opacity:.55;transition:.12s;}
.lib-row:hover .lib-dots,.lib-item:hover .lib-dots{opacity:1;}
.lib-dots:hover{background:#e7eaee;color:var(--t1);}
.lib-children{padding:2px 0 4px 22px;display:flex;flex-direction:column;gap:1px;}
.lib-item{display:flex;align-items:center;gap:8px;height:30px;padding:0 6px 0 8px;border-radius:8px;cursor:pointer;transition:background .12s;position:relative;}
.lib-item:hover{background:#f4f6f8;}
.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:#fff;}
.lib-empty{font-size:11.5px;color:var(--t3);padding:5px 8px;}
/* 右键 / ⋮ 菜单 */
.lib-menu-scrim{position:fixed;inset:0;z-index:1000;}
.lib-menu{position:fixed;z-index:1001;min-width:148px;background:#fff;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:#f4f6f8;}
.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:#fdecec;}

/* 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:#fbfcfd;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:#fff;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:#fbfcfd;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:#eef0f2;color:var(--t1);}
.aw-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
.aw-card{display:flex;flex-direction:column;align-items:flex-start;gap:11px;padding:18px 16px;border:1px solid var(--line2);border-radius:14px;background:#fbfcfd;text-align:left;transition:.14s;width:100%;}
.aw-card:hover{border-color:rgba(58,109,240,.45);background:#fff;box-shadow:0 4px 16px rgba(20,24,30,.06);transform:translateY(-2px);}
.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:#f3eaff;color:#8b5cf6;}
.aw-switch{display:flex;gap:3px;background:#eef0f2;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:#fff;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:#f4f6f8;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:#fbfcfd;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:#fff;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:#fff;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;text-align:center;border:1px dashed var(--line2);border-radius:12px;color:var(--t3);font-size:12px;background:#fbfcfd;}
/* 持仓预览表 */
.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:#f6f8fa;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:#fafbfc;}
.aw-tbl-r.warn{background:#fffaf0;box-shadow:inset 3px 0 0 #e8852b;}
.aw-tbl-r.warn:hover{background:#fff6e6;}
.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:#eef0f2;}
.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:#fdebd0;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:#fff;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:#eef0f2;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:#f1f3f5;}
.aw-cell-in:focus{background:#fff;border-color:rgba(58,109,240,.5);box-shadow:0 0 0 2px var(--blue-soft);}
.aw-cell-in.miss{background:#fdebd0;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:#fdeceb;color:var(--up);}
.aw-review{display:flex;align-items:flex-start;gap:9px;padding:10px 13px;margin-bottom:11px;border-radius:11px;background:#fff8ee;border:1px solid #f3d8a8;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:#fbfcfd;}
.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:#fff;}
.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:#f6f8fa;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:#fff;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:#f1f3f5;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:#fff;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:#fdeceb;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:#eef0f2;}
.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:#eef0f2;color:var(--t2);}
.aw-grp-side.long{background:rgba(21,163,90,.12);color:var(--up);}
.aw-grp-side.short{background:rgba(214,69,61,.12);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:#fff;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:#fff;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:#f3d8a8;background:#fdf6ea;}
.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:#f4f6f8;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:#fdeceb;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-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:#fff;}
.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:#fff;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-chat{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:13px;overflow:hidden;background:#fbfcfd;}
.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:#fff;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:#fff;transition:.12s;}
.aw-chip:hover{border-color:rgba(58,109,240,.45);color:var(--blue);background:var(--blue-soft);}
.aw-compose{display:flex;align-items:center;gap:8px;padding:10px 12px;border-top:1px solid var(--line);background:#fff;}
.aw-compose textarea{flex:1;border:none;outline:none;resize:none;background:transparent;font-size:13px;line-height:1.5;color:var(--t1);font-family:var(--sans);max-height:96px;padding:6px 0;}
.aw-send{width:34px;height:34px;flex-shrink:0;border-radius:10px;display:grid;place-items:center;color:#fff;background:var(--blue);transition:.13s;}
.aw-send:hover{filter:brightness(1.06);} .aw-send:disabled{background:#c7cdd4;}

/* 数据 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;padding:10px 11px;border:1px solid var(--line2);border-radius:11px;background:#fbfcfd;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);}
/* 侧栏 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{display:flex;align-items:center;gap:8px;width:100%;height:36px;padding:0 8px 0 10px;margin-bottom:7px;border-radius:9px;background:var(--blue-soft);color:var(--blue);transition:.13s;}
.lib-channel-add:hover{background:#e2ebff;}
.lib-channel-ic{flex-shrink:0;display:grid;place-items:center;}
.lib-channel-tx{flex:1;text-align:left;font-size:13px;font-weight:800;letter-spacing:-.1px;}
.lib-channel-plus{flex-shrink:0;width:20px;height:20px;border-radius:6px;display:grid;place-items:center;background:var(--blue);color:#fff;}

/* ============ 主区 ============ */
.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:#fff;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:#fff;}
.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:9px;border:1px solid var(--line2);background:#fff;transition:.13s;}
.tob-agent-back:hover{color:var(--blue);border-color:rgba(58,109,240,.42);}
.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;}

/* ============ 通用卡片 / 网格 ============ */
.tob-card{background:#fff;border:1px solid var(--line2);border-radius:14px;padding:16px 17px;}
.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:#fff;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:#f8fafc;}
.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);}

/* 市场标记 */
.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.A{color:#d6453d;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;}

/* 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:#f1f3f5;}
.tob-chip.purple{color:#8b5cf6;background:#8b5cf614;}

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

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

/* 分段控件 */
.tob-seg{display:inline-flex;gap:2px;background:#eef0f2;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:#fff;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.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:#e2ebff;}
.tob-btn.ghost{background:#fff;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:#fff;color:var(--up);border:1px solid #f3d6d4;}
.tob-btn.danger:hover{background:#fdeceb;}
.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:#fff;}
.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:6px 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);}
.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:#fff;border:1px solid var(--line2);border-radius:20px;box-shadow:0 8px 30px rgba(20,25,35,.07);padding:6px;transition:.18s;}
.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;}
.tob-dcomposer textarea::placeholder{color:var(--t3);}
.tob-dctools{display:flex;align-items:center;gap:8px;padding:4px 6px 6px;}
.tob-dtool{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;color:var(--t2);background:#f4f6f8;transition:.13s;}
.tob-dtool:hover{background:#eef0f2;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:#dfe3e8;cursor:default;}
/* 为您推荐（继承自智能体的建议卡片） */
.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);}
.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,1fr);gap:11px;align-items:stretch;}
.tob-dreco-card{text-align:left;background:#fff;border:1px solid var(--line2);border-radius:13px;padding:13px 13px 14px;display:flex;flex-direction:column;gap:9px;transition:.16s;height:100%;}
.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-ic{width:28px;height:28px;border-radius:9px;display:grid;place-items:center;flex-shrink:0;}
.tob-dreco-ic svg{width:15px;height:15px;}
.tob-dreco-t{font-size:13px;line-height:1.4;color:var(--t1);font-weight:700;letter-spacing:-.2px;}
.tob-dreco-d{font-size:11px;line-height:1.5;color:var(--t2);text-wrap:pretty;display:-webkit-box;-webkit-line-clamp:3;-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:#fff;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:#f8fafc;}
.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;}
/* 为你推荐：完整复用落地页信息流卡片，固定一行三个（等宽栅格） */
.tob-feed-masonry{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:start;}
.tob-feed-masonry > *{min-width:0;margin:0;}
.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线行情 / 产业链上下游 / 未来推演 三视图切换（一个整体页面） ============ */
.stkd-layer{display:flex;flex-direction:column;}
.stkd-bar{flex-shrink:0;display:flex;align-items:center;gap:14px;padding:9px 18px;background:#fff;border-bottom:1px solid var(--line2);position:relative;z-index:40;}
.stkd-back{display:inline-flex;align-items:center;gap:3px;white-space:nowrap;flex-shrink:0;font-size:13px;font-weight:700;color:var(--t2);padding:6px 12px 6px 8px;border-radius:9px;border:1px solid var(--line2);background:#fff;transition:.13s;}
.stkd-back:hover{color:var(--blue);border-color:rgba(58,109,240,.42);}
.stkd-tabs{position:relative;display:inline-flex;gap:3px;background:#eef0f2;border-radius:11px;padding:3px;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 16px;border-radius:8px;transition:color .2s ease;white-space:nowrap;}
.stkd-tab:hover{color:var(--t1);}
.stkd-tab.on{color:var(--blue);font-weight:700;}
.stkd-tab-ind{position:absolute;top:3px;left:0;height:calc(100% - 6px);background:#fff;border-radius:8px;box-shadow:0 1px 5px rgba(20,24,30,.1);z-index:0;pointer-events:none;transition:transform .3s cubic-bezier(.4,0,.2,1),width .3s cubic-bezier(.4,0,.2,1);}
.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:#c2c7cd;cursor:default;border:1px dashed var(--line2);background:transparent;}
.crumb.crumb-ph:hover{color:#c2c7cd;background:transparent;}
.crumb.crumb-ph em{color:#d4d8dd;}
.stkd-tabsbar{flex-shrink:0;display:flex;align-items:center;padding:8px 18px;background:#fff;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:#fff;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:#f0f2f5;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:#f0f2f5;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:#fff;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:#fff;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:#eef0f2;border-radius:20px;padding:5px 12px;letter-spacing:.3px;}

/* ============ 对话式发现（Claude 式聊天 + 内联信息流卡片） ============ */
.tob-chat{margin:-22px -24px -60px;height:calc(100% + 82px);display:flex;flex-direction:column;min-height:0;background:var(--bg);}
.tob-chat-bar{flex-shrink:0;display:flex;align-items:center;gap:12px;padding:9px 18px;border-bottom:1px solid var(--line2);background:#fff;}
.tob-chat-scroll{flex:1;min-height:0;overflow-y:auto;}
.tob-chat-thread{max-width:760px;margin:0 auto;padding:28px 24px 40px;display:flex;flex-direction:column;gap:26px;}
.tob-msg{display:flex;}
.tob-msg-user{justify-content:flex-end;}
.tob-msg-user .tob-bubble{background:var(--blue);color:#fff;padding:11px 16px;border-radius:16px 16px 4px 16px;font-size:14.5px;line-height:1.6;max-width:78%;box-shadow:0 1px 3px rgba(58,109,240,.25);}
.tob-msg-ai{gap:12px;align-items:flex-start;}
.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;}
.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;}
/* 发散探索（brainstorm）：每轮回答后追加的「你可能还想问」想法卡 */
.tob-bs{margin-top:2px;}
.tob-bs-head{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:800;color:#8b5cf6;letter-spacing:.01em;margin-bottom:10px;}
.tob-bs-list{display:flex;flex-direction:column;gap:8px;}
.tob-bs-card{display:flex;align-items:center;gap:11px;width:100%;text-align:left;background:#fbfaff;border:1px solid #ece7fb;border-radius:11px;padding:11px 13px;transition:.14s;}
.tob-bs-card:hover{border-color:rgba(139,92,246,.55);background:#f5f1fe;transform:translateX(2px);box-shadow:0 2px 8px rgba(139,92,246,.1);}
.tob-bs-ic{flex-shrink:0;width:30px;height:30px;border-radius:9px;background:rgba(139,92,246,.1);color:#8b5cf6;display:grid;place-items:center;}
.tob-bs-tx{flex:1;min-width:0;font-size:13.5px;font-weight:600;line-height:1.45;color:var(--t1);text-wrap:pretty;}
.tob-bs-hint{display:block;font-size:10.5px;font-weight:800;font-style:normal;color:#8b5cf6;letter-spacing:.02em;margin-bottom:2px;}
.tob-bs-go{flex-shrink:0;color:var(--t3);display:grid;place-items:center;transition:.14s;}
.tob-bs-card:hover .tob-bs-go{color:#8b5cf6;transform:translateX(3px);}
.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);}}
.tob-chat-composer{flex-shrink:0;border-top:1px solid var(--line2);background:rgba(246,247,249,.9);backdrop-filter:blur(10px);padding:14px 24px 18px;}
.tob-chat-inputwrap{max-width:760px;margin:0 auto;display:flex;align-items:flex-end;gap:10px;background:#fff;border:1px solid var(--line2);border-radius:16px;padding:8px 8px 8px 16px;box-shadow:0 2px 10px rgba(20,25,35,.05);}
.tob-chat-inputwrap textarea{flex:1;border:none;outline:none;resize:none;font-size:14.5px;line-height:1.55;color:var(--t1);background:transparent;max-height:140px;padding:6px 0;}
.tob-chat-inputwrap .tob-dsend{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:#f4f6f8;transition:.13s;}
.tob-att-btn:hover{background:#eef0f2;color:var(--t1);}
.tob-att-btn.on{background:var(--blue-soft);color:var(--blue);}
.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:#fff;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{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:#f4f6f8;}
.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:#f4f6f8;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:#f4f6f8;}
.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:#eef0f2;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:#eef0f2;color:var(--t2);}
.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-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:#f6f8fa;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:#fff;}
.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:#f6f8fa;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:#f6f8fa;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:#fff;}
.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:#f1f3f5;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:#f6f8fa;}
.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:#fff;}
.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:#fafbfc;}
.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:#fff;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:#eceef1!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:#fff;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:#f1f3f5;}

/* 空态 */
.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:#fff;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:#eef0f2;color:var(--t1);}
.tob-modal-h svg{width:16px;height:16px;}
.tob-modal-body{padding:18px;overflow-y:auto;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:#f4f6f8;padding:0 14px;font-size:14px;font-family:var(--mono);color:var(--t1);outline:none;transition:.13s;width:100%;}
.tob-input:focus{background:#fff;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:#fff;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 */
.tob-toast{position:fixed;left:50%;bottom:34px;transform:translateX(-50%);z-index:90;display:inline-flex;align-items:center;gap:8px;background:#1a1d21;color:#fff;font-size:13px;font-weight:600;padding:11px 18px;border-radius:11px;box-shadow:0 10px 30px rgba(20,25,35,.28);animation:pop .18s ease;}
.tob-toast svg{width:15px;height:15px;color:#5fd39a;}

/* ============ 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:#e2eafe;}
.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:#fff;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:#e2eafe;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;}
/* 搜索命中在另一个 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:#fff;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:#e2eafe;}
.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:#eef0f2;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:#fff;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;}
.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:#fff;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:#f3f5f8;}
.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:#fff;}
.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:#fff;transition:.13s;}
.wl-ind-chip:hover{border-color:rgba(58,109,240,.5);background:#fafbff;}
.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:#fdecec;}
.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:#fff;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:#fff;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:#fff;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:#f8fafc;}
.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:#fff;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:#fff;border:1px solid var(--line2);border-radius:7px;padding:4px 9px;transition:.12s;}
.wl-chat-alarm:hover{border-color:var(--blue);background:#fff;}
.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:#fbfcfd;}
.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:#eef0f2;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:#fff;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:#fff;}

/* 报警 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:#fbfcff;}
.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:#fff;}
.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:#d9dde2;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:#fff;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:#fff;}
.wl-card{flex:0 0 auto;background:#fff;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:#f8fafc;}
.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:#fff;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 #fff;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:#f6f8fa;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:#d6453d;}
.wl-filterbar .imp b{color:#d6453d;}
.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:#fbfcfd;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:#fff;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:#f0f2f4;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 #fff;}
.wl-cons-row::-webkit-scrollbar-thumb:hover{background:#c2c7cd;}
.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:#fff;transition:.15s;scroll-snap-align:start;}
.wl-con:hover{box-shadow:0 2px 10px rgba(20,25,35,.06);}
.wl-con.imp{background:#fffdf8;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:#c2c7cd;border-radius:6px;transition:.13s;z-index:2;}
.wl-con-fav:hover{background:#f1f3f5;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:#fafbfc;}
.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:#fbfcfd;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:#eef0f2;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:#fff;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:#f1f3f5;}
.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:#fff;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:#fdecec;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:#fbfcfd;}
.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:#fff;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:#eef0f2;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:#fff;transition:.14s;position:relative;}
.wl-kd-card.checked{background:#fbfcfd;}
.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:#f1f3f5;}
.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:#fdecec;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:#fff;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:#fbfcff;}
.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:#fff;}
.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:#fbfcfd;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:#fff;}
.wl-kd-side:hover{border-color:#c4ccd5;}
.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 #eef0f2;}
.wl-bs{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;background:#fbfcfd;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:#fff;transition:.12s;white-space:nowrap;}
.wl-kd-vbs .wl-kd-vb:first-child{border-left:none;}
.wl-kd-vbs .wl-kd-vb:hover{background:#f6f8fa;}

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

/* —— 紧凑决策栏：选项分段控件 + 小确认按钮，合并一行 —— */
.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:#fff;}
.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:#fff;}
.wl-kd-split .wl-kd-side:first-child{border-left:none;}
.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:#fff;}
.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;}
.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:#fff;transition:.12s;}
.wl-bs-srcchip:hover{filter:brightness(.98);background:#fafbff;border-color:currentColor;}
.wl-bs-srcchip.disabled,.wl-bs-srcchip:disabled{color:var(--t3)!important;border-color:var(--line2)!important;background:#f4f5f7;opacity:.55;cursor:not-allowed;}
.wl-bs-srcchip.disabled:hover,.wl-bs-srcchip:disabled:hover{filter:none;background:#f4f5f7;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-bubble{font-size:12px;line-height:1.55;color:var(--t1);background:#fff;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:#fff;}
.wl-bs-usermsg{display:flex;flex-direction:column;align-items:flex-end;gap:5px;max-width:88%;}
.wl-bs-msgatts{display:flex;flex-wrap:wrap;gap:4px;justify-content:flex-end;}
.wl-bs-msgatt{display:inline-flex;align-items:center;gap:4px;font-size:10px;font-weight:700;border:1px solid var(--line2);border-radius:6px;padding:2px 6px;background:#fff;}

.wl-bs-brief{flex:1;min-width:0;border:1px solid var(--line2);border-radius:11px;background:#fff;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:#c4ccd5;}

.wl-bs-composer{flex-shrink:0;border-top:1px solid var(--line);padding:9px 10px;display:flex;flex-direction:column;gap:7px;background:#fff;position:relative;}
.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:#fff;}
.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:flex-end;gap:7px;}
.wl-bs-summon{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;gap:4px;width:36px;height:36px;font-size:12px;font-weight:700;color:var(--blue);border:1px solid var(--line2);border-radius:9px;background:#fff;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:#f1f3f5;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:9px;padding:8px 11px;font-size:12.5px;line-height:1.4;color:var(--t1);font-family:var(--sans);outline:none;max-height:84px;}
.wl-bs-input:focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft);}
.wl-bs-send{flex-shrink:0;width:36px;height:36px;display:grid;place-items:center;border-radius:9px;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:#fff;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:#eef2fe;}
.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:#fff;border:1px solid var(--line2);border-radius:14px;overflow:hidden;}
.wl-disp-head{flex-shrink:0;display:flex;align-items:center;gap:10px;padding:11px 14px;border-bottom:1px solid var(--line);background:#fbfcfd;}
.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:#f0f2f4;}
.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:#f6f8fa;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:#fbfcfd;}
.wl-disp-summary{margin-top:12px;font-size:12.5px;line-height:1.7;color:var(--t2);text-wrap:pretty;}

/* 宏观 */
.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:#eef0f2;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:#f0f2f4;}
.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:#eef2fe;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 #e0e3e8;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 #d0d5dd;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-bs-save{background:#f5f7fa;border-color:#e0e4eb;}
.tob-bs-save:hover{border-color:#9ca3af;background:#eef0f4;transform:none;box-shadow:none;}
.tob-bs-save .tob-bs-ic{background:rgba(107,114,128,.12);color:#6b7280;}
.tob-savenote-row{display:flex;align-items:center;gap:6px;margin-top:8px;padding:0 2px;}


/* ── batx 定制样式(v2 tob.css 换版漏带,补回:模型选择器/聊天 md/工具块/侧栏子目录/消息meta)── */
.lib-sub{display:flex;flex-direction:column;gap:1px;}
.lib-subhead .lib-iname{color:var(--t1);font-weight:600;}
.lib-subn{flex-shrink:0;font-size:11px;color:var(--t3);font-weight:600;padding-right:4px;}
.lib-subchild{padding-left:30px;}
.tob-model{position:relative;display:inline-flex;}
.tob-model-btn{display:inline-flex;align-items:center;gap:5px;height:34px;padding:0 11px;border-radius:10px;font-size:12.5px;font-weight:600;color:var(--t2);background:#f4f6f8;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:#fff;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:#f4f6f8;}
.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-bs-refresh{display:grid;place-items:center;width:22px;height:22px;border-radius:6px;border:none;background:transparent;color:#8b5cf6;cursor:pointer;opacity:.55;transition:.14s;}
.tob-bs-refresh:hover{opacity:1;background:rgba(139,92,246,.1);}
.tob-bs-refresh:disabled{cursor:default;opacity:.35;}
.tob-bs-refresh.spinning svg{animation:tobSpin .7s linear infinite;}
.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:#fff;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;}
.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-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:#fafbfc;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:#eef2fe;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:#f8f9fb;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:#f1f3f5;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,#eef3ff);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,#eef0f3);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:#fff;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,#eef3ff);border:1px solid transparent;border-radius:8px;cursor:pointer;white-space:nowrap;}
.auth-sendbtn:disabled{color:var(--t3);background:var(--line,#eef0f3);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:#fff;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:#9aa3b2;font-size:12px;}
.auth-or::before,.auth-or::after{content:"";flex:1;height:1px;background:#e6e9ef;}
.auth-oauth{width:100%;display:flex;align-items:center;justify-content:center;gap:8px;
  border:1px solid #dfe3ea;background:#fff;color:#2b3240;font-size:14px;font-weight:600;
  padding:10px 12px;border-radius:10px;cursor:pointer;transition:background .14s,border-color .14s;}
.auth-oauth:hover{background:#f7f8fa;border-color:#c9d0db;}
.auth-oauth .g-mark{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;
  border-radius:50%;background:#fff;border:1px solid #e0e0e0;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(880px,96vw);background:#fff;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-body{padding:18px 20px 22px;}
.adm-stats{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:18px;}
.adm-stat{background:#f6f8fb;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:#f4f6f8;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:#fafbfc;}
.adm-acct{font-family:var(--mono);}
.adm-uid{font-family:var(--mono);font-size:11px;color:var(--t3);}
.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:#fff;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-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{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:#eef0f2;color:var(--t1);}
.am-brand{font-size:26px;font-weight:800;color:var(--t1,#171b21);letter-spacing:-1.2px;text-align:center;}
.am-brand b{font-weight:800;color:#171b21;}
.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:#f4f6f8;transition:.13s;}
.auth-inwrap:focus-within{background:#fff;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:#fff;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:#f4f6f8;}
.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:#fff;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;text-align:center;}
.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:#f1ecff;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: #fff; }
.hv-top { display: flex; align-items: center; gap: 10px; padding: 8px 14px; border-bottom: 1px solid #eceef1; flex-shrink: 0; }
.hv-back { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; font-weight: 600; color: #1a1d21;
           padding: 5px 11px; border: 1px solid #e3e6ea; border-radius: 8px; background: #fff; cursor: pointer; }
.hv-back:hover { background: #f2f5f9; }
.hv-title { flex: 1; min-width: 0; font-size: 13px; font-weight: 600; color: #1a1d21; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.hv-newtab { font-size: 11px; color: #878d94; text-decoration: none; padding: 4px 9px; border: 1px solid #eceef1; border-radius: 6px; }
.hv-newtab:hover { color: #3a6df0; border-color: #cdd9fb; }
.hv-frame { flex: 1; width: 100%; border: none; background: #fff; }

/* 生成中 spinner（GeneratePane / PatternPane 共用；主题色经 --spin-color 覆盖）
   用法：<div className="wl-spin" style={{ "--spin-color": "#0ea5e9" }} /> */
.wl-spin { width: 34px; height: 34px; border: 3px solid #e6e8eb; 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%; }
/* 指标条贴合卡片底部：去独立圆角边框（同原版 K线形态分析 的 .indbar 覆盖） */
.indbar{margin-top:0 !important;border:none !important;border-top:1px solid var(--line) !important;border-radius:0 0 14px 14px !important;background:#fff !important;flex-wrap:wrap !important;}
.indbar .ind-track{flex-wrap:wrap;overflow-x:visible;overflow-y:visible;}


/* ============================================================
   新版技术指标条 + 技术指标库（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:#fff;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:#f1f3f5;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:#fff;text-align:left;cursor:pointer;transition:.13s;}
.indlib-card:hover{border-color:var(--blue);background:#fafbff;}
.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:#f1f3f5;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:#fafbfc;}
.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:#fff;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:#fdecec;color:#d6453d;}
.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:#fff;cursor:pointer;text-align:left;transition:.13s;}
.indlib-customcard:hover{border-color:var(--blue);background:#fafbff;}
.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:#d6453d;background:#fdecec;border-radius:7px;padding:4px 10px;cursor:pointer;transition:.12s;}
.indlib-cdel:hover{background:#d6453d;color:#fff;}
/* 参数编辑 · 居中小对话框 */
.indedit{width:300px;max-width:calc(100vw - 40px);background:#fff;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:#f3f5f7;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:#fff;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;}
.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:#d6453d;opacity:1;}
.wl-ind-chip.off{opacity:1;border:1px dashed #d9dde2;background:#fbfbfc;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:#fff;cursor:pointer;transition:.12s;}
.wl-ind-exp:hover{border-color:var(--t3);color:var(--t1);background:#fafafa;}
.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:#fff;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:#fff;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:#d6453d;background:#fdecec;border-radius:9px;padding:9px 14px;cursor:pointer;transition:.12s;}
.wl-ind-del:hover{background:#d6453d;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:#fff;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:#e7e9ed;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:#fafbff;}
.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:#d6453d;background:#fdecec;border-radius:7px;padding:4px 10px;cursor:pointer;transition:.12s;}
.aif-mine-del:hover{background:#d6453d;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:#f1f3f5;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:#f3f5f7;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:#fff;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:#c4cad1;opacity:1;transition:.12s;}
.aif-fchip.on{color:#fff;border-color:transparent;}
.aif-fchip.on::before{background:rgba(255,255,255,.92);}
.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:#d6453d;}
/* 已选因子条（替代手调权重——权重全部交给 AI） */
.aif-pickbar{display:flex;align-items:center;gap:10px;margin-top:14px;padding:10px 13px;border-radius:11px;background:#fafbff;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:#f1f3f5;border-radius:7px;padding:4px 10px;cursor:pointer;transition:.12s;}
.aif-pickclear:hover{color:#d6453d;background:#fdecec;}
.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:#fff;}
.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:#f1f3f5;padding:1px 6px;border-radius:5px;}
.aif-wstep{margin-left:auto;display:flex;align-items:center;gap:2px;background:#f3f5f7;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:#fff;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:#d6453d;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:#e7e9ed;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:#fff;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:#fafbff;}
.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:#d6dae0;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:#fff;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:#f1f3f5;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:#f3f5f7;border-radius:9px;padding:10px 16px;cursor:pointer;transition:.12s;}
.aif-regen:hover{color:var(--t1);background:#e9ecef;}
.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:11px;font-weight:700;color:var(--t2);cursor:pointer;user-select:none;}
.kx-freq{display:flex;gap:2px;background:#f1f3f5;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:#fff;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:#f6f7f9;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:#eef0f2;}
.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:#fff;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:#f1f3f5;}
.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-tour-btn{background:#2b3442;color:#fff;border:none;border-radius:16px;padding:5px 13px;font-size:11.5px;font-weight:700;cursor:pointer;transition:.14s;font-family:inherit;}
.kx-tour-btn:hover{background:#1a212b;}

/* ===== 信号右键菜单 + 详情弹层（kx-menu / kx-dt · 同步自原版母体） ===== */
.kx-menu{position:fixed;z-index:200;min-width:150px;background:#fff;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-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:#fff;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:#fff;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:#f1f3f5;border-radius:9px;font-size:17px;color:var(--t2);cursor:pointer;flex:none;line-height:1;}
.kx-dt-x:hover{background:#e6e9ec;}
.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:#f7f8fa;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:#f7f8fa;border-radius:10px;padding:11px 13px;}
.kx-dt-fm code{font-family:var(--mono);color:var(--t1);font-weight:700;}

/* ===== 叠加对比选中条（kx-ovbar · 同步自原版母体） ===== */
.kx-ovbar{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:8px 16px;border-bottom:1px solid var(--line);background:#fbfcfd;}
.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:#fff;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);}

/* ===== 讲解模式浮层（kx-tour · 同步自原版母体） ===== */
.kx-tour{position:absolute;left:16px;bottom:16px;width:min(340px,calc(100% - 32px));background:rgba(26,29,33,.95);color:#fff;border-radius:14px;padding:13px 15px 12px;box-shadow:0 8px 30px rgba(15,20,28,.28);backdrop-filter:blur(6px);z-index:5;}
.kx-tour-top{display:flex;align-items:center;gap:9px;margin-bottom:7px;}
.kx-tour-title{font-size:13.5px;font-weight:800;letter-spacing:.2px;}
.kx-tour-dots{display:flex;gap:4px;margin-left:2px;}
.kx-tour-dots i{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.28);transition:.2s;}
.kx-tour-dots i.on{background:var(--blue);}
.kx-tour-x{margin-left:auto;background:transparent;border:none;color:rgba(255,255,255,.55);font-size:13px;cursor:pointer;padding:2px 4px;line-height:1;}
.kx-tour-x:hover{color:#fff;}
.kx-tour-cap{font-size:12.5px;line-height:1.72;color:rgba(255,255,255,.9);margin-bottom:11px;text-wrap:pretty;}
.kx-tour-ctl{display:flex;gap:7px;}
.kx-tour-ctl button{flex:1;background:rgba(255,255,255,.1);color:#fff;border:none;border-radius:8px;padding:7px 0;font-size:11.5px;font-weight:700;cursor:pointer;transition:.13s;font-family:inherit;}
.kx-tour-ctl button:hover:not(:disabled){background:rgba(255,255,255,.2);}
.kx-tour-ctl button:disabled{opacity:.35;cursor:default;}
.kx-tour-ctl .kx-tour-play{background:var(--blue);}
.kx-tour-ctl .kx-tour-play:hover{background:#2a5fd0;}
.kx-tour-ctl .kx-tour-done{background:var(--up);}

