/* ============================================================
   股票每日复盘 · 桌面版（Electron）样式
   设计系统对齐 ui_app_design.html：深色专业交易风
   色彩 / 字体 / 圆角 / 涨跌色 与移动端一致
   注意：以下所有 class 名均被 app.js / index.html 依赖，勿删改。
   ============================================================ */
:root{
  /* 背景层级 */
  --bg:#0E1116; --panel:#161B22; --panel2:#1C2230; --panel3:#222A3A;
  --surface:#161B22; --surface2:#1C2230; --surface3:#222A3A;
  /* 边框 */
  --line:#262D3A; --border:#262D3A; --border2:#313A4D;
  /* 文字 */
  --txt:#E6EAF0; --text:#E6EAF0; --text2:#AAB2C2; --muted:#6B7587;
  /* 品牌 */
  --accent:#4F8CFF; --brand:#4F8CFF; --accent2:#2A4A82; --brand-dim:#2A4A82;
  /* 涨跌（中国习惯：涨红 / 跌绿） */
  --up:#FF4D4F; --red:#FF4D4F;     /* 涨 / 盈利 = 红 */
  --down:#15C98B; --green:#15C98B; /* 跌 / 亏损 = 绿 */
  --warn:#FF8A3D; --good:#15C98B; --purple:#9B7BFF;
  --pill-up-bg:rgba(255,77,79,.14); --pill-down-bg:rgba(21,201,139,.12); --pill-warn-bg:rgba(255,138,61,.12);
  /* 标签背景：深色主题下低透明度，浅色主题下变浅实色 */
  --tag-up-bg:rgba(255,77,79,.14); --tag-down-bg:rgba(21,201,139,.14); --tag-warn-bg:rgba(255,138,61,.14);
  --tag-muted-bg:rgba(107,117,135,.14); --tag-brand-bg:rgba(79,140,255,.14); --tag-purple-bg:rgba(155,123,255,.14);
  --r:14px; --r-sm:9px;
  --mono:"DIN Alternate","Bahnschrift",ui-monospace,Menlo,Consolas,monospace;
  --font:"PingFang SC","Microsoft YaHei",system-ui,-apple-system,sans-serif;
}
/* 浅色主题：在 <html data-theme="light"> 时生效，仅覆盖色彩变量，涨红跌绿不变 */
:root[data-theme="light"]{
  --bg:#f4f6fa; --panel:#ffffff; --panel2:#eef1f6; --panel3:#e6eaf1;
  --surface:#ffffff; --surface2:#eef1f6; --surface3:#e6eaf1;
  --line:#d8dee8; --border:#d8dee8; --border2:#c6cedb;
  --txt:#1b2230; --text:#1b2230; --text2:#3a4252; --muted:#5b6677;
  --accent:#2563eb; --brand:#2563eb; --accent2:#1d4ed8; --brand-dim:#1d4ed8;
  --up:#e0322f; --red:#e0322f; --down:#0f9d6b; --green:#0f9d6b;
  --warn:#b9770a; --good:#0f9d6b; --purple:#7c5cf0;
  --pill-up-bg:#fde7ec; --pill-down-bg:#e6f7ef; --pill-warn-bg:#fdf3e0;
  --tag-up-bg:#fde7ec; --tag-down-bg:#e6f7ef; --tag-warn-bg:#fdf3e0;
  --tag-muted-bg:#f0f2f5; --tag-brand-bg:#eaf2ff; --tag-purple-bg:#f3efff;
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;font-family:var(--font);background:var(--bg);color:var(--txt);
  font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased;
  display:flex;flex-direction:column;height:100vh;height:100dvh;overflow:hidden}

/* ---------- 顶部应用头 ---------- */
.topbar{flex:0 0 auto;order:1;z-index:40;display:flex;justify-content:space-between;
  align-items:center;gap:12px;padding:11px 18px;
  background:linear-gradient(90deg,var(--panel),var(--panel2));border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:11px;min-width:0;flex-shrink:0;cursor:default}
.brand:active{opacity:1}
.logo{width:30px;height:30px;border-radius:8px;object-fit:cover;box-shadow:0 2px 6px rgba(232,76,61,.35)}
.topbar h1{margin:0;font-size:17px;letter-spacing:.5px;font-weight:800;white-space:nowrap}
.lock-btn{margin-left:auto;margin-right:8px;flex:0 0 auto;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:8px;background:none;color:var(--muted);font-size:15px;cursor:pointer;transition:.15s}
.lock-btn:hover{color:var(--text);border-color:var(--brand)}
.lock-btn.on{color:var(--warn,#e8a33d);border-color:var(--warn,#e8a33d)}
.sub{margin:0;color:var(--muted);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 顶部右侧操作区：与一级标题同一行居中对齐、整体靠右铺满剩余宽度 */
.top-actions{display:flex;align-items:center;gap:9px;position:relative;
  flex:1 1 auto;min-width:0;margin-left:auto;justify-content:flex-end;padding-left:14px}
.top-actions>*{flex:0 0 auto}
.top-actions .pos-ticker-wrap{flex:1 1 auto;min-width:0;max-width:min(58vw,440px)}
/* ===== 系统工具箱（悬浮贴边 + 可拖动） ===== */
.tool-box{position:fixed;z-index:9001;display:flex;align-items:stretch;gap:0;
  font-family:inherit;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:none}
.tool-box .tb-panel{display:none;flex-direction:column;gap:8px;background:var(--panel);
  border:1px solid var(--line);border-right:none;border-radius:12px 0 0 12px;padding:12px;
  box-shadow:0 10px 30px rgba(0,0,0,.18);min-width:212px}
.tool-box.open .tb-panel{display:flex}
.tool-box .tb-panel input[type=date]{width:100%;background:var(--panel2);color:var(--txt);
  border:1px solid var(--line);border-radius:var(--r-sm);padding:7px 9px;font-size:12.5px;font-family:inherit}
.tool-box .tb-panel .btn{width:100%;justify-content:center}
.tool-box .tb-panel .btn .lbl{display:inline}
.tool-box .tb-handle{width:42px;height:46px;flex:0 0 auto;border:none;cursor:grab;
  background:linear-gradient(135deg,#3b82f6 0%,#2563eb 60%,#1d4ed8 100%);color:#fff;font-size:19px;line-height:1;
  border-radius:0 13px 13px 0;display:flex;align-items:center;justify-content:center;
  box-shadow:-4px 4px 14px rgba(0,0,0,.28);transition:box-shadow .2s ease}
.tool-box .tb-handle:hover{box-shadow:-4px 4px 18px rgba(37,99,235,.55)}
.tool-box .tb-handle:active{cursor:grabbing}
.tool-box.dragging{cursor:grabbing;transition:none;opacity:.94;z-index:9002}
.top-actions input[type=date]{background:var(--panel2);color:var(--txt);border:1px solid var(--line);
  border-radius:var(--r-sm);padding:7px 9px;font-size:12.5px;font-family:inherit;max-width:150px}

/* ---------- 底部 Tab Bar（移动端风格） ---------- */
.tabbar{flex:0 0 auto;order:4;z-index:50;min-height:60px;
  display:flex;align-items:stretch;padding:0 4px calc(env(safe-area-inset-bottom,0px));
  background:var(--panel);backdrop-filter:blur(12px);
  border-top:1px solid var(--line)}
.tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;
  background:none;border:none;color:var(--muted);font-size:14px;font-weight:600;cursor:pointer;
  font-family:inherit;transition:color .15s}
.tab .ic{font-size:19px;line-height:1;filter:grayscale(.4);opacity:.75}
.tab:hover{color:var(--text2)}
.tab.active{color:#E5484D}
.tab.active .ic{color:#E5484D;filter:none;opacity:1}

/* ---------- 查询 tab 内子切换（隔日策略 / 每日复盘） ---------- */
.subtabs{display:flex;gap:8px;margin:2px 0 18px;flex-wrap:wrap}
.subtab{flex:1 1 0;min-width:140px;border:1px solid var(--line);background:var(--panel2);color:var(--txt);
  border-radius:var(--r-sm);padding:11px 14px;font-size:14px;font-weight:700;cursor:pointer;transition:.15s}
.subtab:hover{border-color:var(--brand);color:var(--brand)}
.subtab.active{background:linear-gradient(135deg,var(--brand),#7CB0FF);color:#fff;border-color:transparent}
.subpane[hidden]{display:none !important}

/* ---------- 主体内容（为底部 Tab 留出空间） ---------- */
.content{flex:1 1 auto;order:2;min-height:0;overflow-y:auto;overflow-x:hidden;position:relative;z-index:1;
  padding:18px 20px 24px;max-width:1120px;width:100%;align-self:center}
.panel{display:none;animation:fade .18s ease}
.panel.active{display:block}
@keyframes fade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
h2{font-size:17px;margin:2px 0 14px;font-weight:800}
h3{font-size:13.5px;margin:14px 0 9px;color:var(--brand);font-weight:700}

/* ---------- 表单 / 字段 ---------- */
.grid2{display:grid;grid-template-columns:repeat(2,1fr);gap:12px 18px}
/* 收盘录入：分组紧凑排版（v20260719bj） */
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px 14px}
.close-group{margin-top:14px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px}
.close-group:first-child{margin-top:0}
.close-group h4{margin:0 0 10px;font-size:13px;font-weight:600;color:var(--txt);display:flex;align-items:center;gap:9px}
.close-group h4::before{content:"";width:4px;height:15px;border-radius:3px;background:var(--brand);flex:0 0 auto}
.field.field-inline{display:flex;flex-direction:row;align-items:center;gap:8px}
.field.field-inline label{flex:0 0 92px;min-width:92px;font-size:12.5px;color:var(--muted);white-space:normal;overflow:visible}
.field.field-inline input,.field.field-inline select{flex:1;min-width:0;width:auto;box-sizing:border-box}
.field-unit{flex:0 0 auto;font-size:12px;color:var(--muted)}
@media(max-width:980px){.grid3{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.grid3{grid-template-columns:1fr}.field-inline label{flex-basis:76px}}
.close-policy>summary{cursor:pointer;font-size:14px;font-weight:600;color:var(--txt);list-style:none;display:flex;align-items:center;gap:8px;padding:2px 0}
.close-policy>summary::before{content:"";width:4px;height:15px;border-radius:3px;background:var(--brand);flex:0 0 auto}
.close-policy>summary::-webkit-details-marker{display:none}
.close-policy[open]>summary{margin-bottom:10px}
.field{display:flex;flex-direction:column;gap:4px}
.field label{font-size:12px;color:var(--muted)}
.field input,.field select{background:var(--panel2);border:1px solid var(--line);color:var(--txt);
  border-radius:var(--r-sm);padding:10px 12px;font-size:14px;font-family:inherit;width:100%;box-sizing:border-box;min-height:40px}
.field input:focus,.field select:focus{outline:none;border-color:var(--brand);
  box-shadow:0 0 0 3px rgba(79,140,255,.15)}

.row{display:flex;align-items:center;gap:14px;margin-bottom:14px;flex-wrap:wrap}
.row label{font-size:13px;color:var(--text2)}
.row input{background:var(--panel2);border:1px solid var(--line);color:var(--txt);border-radius:var(--r-sm);padding:10px 12px;font-family:inherit;box-sizing:border-box;min-height:40px;min-width:160px;font-size:14px}

/* ---------- 卡片块 ---------- */
.block{margin-top:16px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px}
.hint{color:var(--muted);font-size:12px;line-height:1.55}
/* 数据状态徽标：盘中实时 / 午间快照 / 收盘定稿 */
.data-status-badge{display:inline-flex;align-items:center;gap:5px;padding:4px 12px;border-radius:20px;font-size:12.5px;font-weight:600;line-height:1.6;letter-spacing:.3px}
.data-status-badge .dsb-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;position:relative}
.data-status-badge.dsb-live{background:rgba(220,38,38,.06);color:#dc2626;border:1px solid rgba(220,38,38,.18)}
.data-status-badge.dsb-live .dsb-dot{background:#dc2626;box-shadow:0 0 6px rgba(220,38,38,.55)}
.data-status-badge.dsb-noon{background:rgba(245,158,11,.06);color:#d97706;border:1px solid rgba(245,158,11,.18)}
.data-status-badge.dsb-noon .dsb-dot{background:#f59e0b;box-shadow:0 0 4px rgba(245,158,11,.35)}
.data-status-badge.dsb-closed{background:rgba(59,130,246,.06);color:#3b82f6;border:1px solid rgba(59,130,246,.18)}
.data-status-badge.dsb-closed .dsb-dot{background:#60a5fa;box-shadow:none}
.data-status-badge.dsb-snapshot{background:rgba(107,114,128,.06);color:#6b7280;border:1px solid rgba(107,114,128,.18)}
.data-status-badge.dsb-snapshot .dsb-dot{background:#9ca3af;box-shadow:none}
.data-status-badge.dsb-cache{background:rgba(161,98,7,.06);color:#92660a;border:1px solid rgba(161,98,7,.18)}
.data-status-badge.dsb-cache .dsb-dot{background:#a16207;box-shadow:none}
.data-status-badge .dsb-sep{margin:0 2px;color:#9ca3af;font-weight:400}
.data-status-badge .dsb-sub{font-weight:400;color:var(--muted);margin-left:2px}
/* 拉取状态：加载转圈 / 成功✓ / 失败✗ */
.spinner{display:inline-block;width:13px;height:13px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;vertical-align:-2px;margin-right:5px}
@keyframes spin{to{transform:rotate(360deg)}}
.ic{display:inline-block;width:14px;height:14px;line-height:14px;text-align:center;border-radius:50%;font-size:10px;font-weight:700;margin-right:5px;vertical-align:-1px}
.ic.ok{background:rgba(34,197,94,.16);color:#22c55e}
.ic.err{background:rgba(239,68,68,.16);color:#ef4444}
.hint.st-loading{color:var(--accent)}
.hint.st-ok{color:#22c55e}
.hint.st-err{color:#ef4444}
.btn:disabled{opacity:.55;cursor:not-allowed}
.btn:disabled .spinner{border-top-color:var(--muted)}

/* ---------- 政策 / 赛道选择 ---------- */
.policy-pick{display:block}
.pcat{margin-bottom:14px}
.pcat:last-child{margin-bottom:0}
.pcat-hd{display:flex;align-items:center;gap:8px;margin:4px 0 8px;
  padding:5px 10px;border-left:3px solid var(--brand);background:var(--panel2);
  border-radius:0 8px 8px 0}
.pcat-name{font-size:13px;font-weight:700;color:var(--brand)}
.pcat-badge{font-size:11px;color:var(--muted);background:var(--panel);border:1px solid var(--line);
  border-radius:10px;padding:0 8px;line-height:18px}
.pcat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:8px}
.pcat-empty{font-size:12px;color:var(--muted);padding:6px 4px}
.pcard{display:flex;gap:8px;align-items:flex-start;background:var(--panel2);border:1px solid var(--line);
  border-radius:10px;padding:10px 12px;cursor:pointer;transition:.15s}
.pcard:hover{border-color:var(--brand)}
.pcard.sel{border-color:var(--brand);background:rgba(79,140,255,.10)}
.pcard input{margin-top:3px;accent-color:var(--brand)}
.pcard-top{display:flex;align-items:center;gap:4px;flex-wrap:wrap;margin-bottom:3px}
.pcard .meta{font-size:11px;color:var(--muted)}
.ptime{font-size:11px;color:var(--muted);margin-left:auto}
.sector{font-size:11px;color:var(--brand);margin-right:6px;font-weight:600}

/* 标签 */
.tag{display:inline-block;font-size:11px;padding:1px 7px;border-radius:6px;margin-right:5px;font-weight:600}
.tag.s-强{background:var(--tag-up-bg);color:var(--up)}
.tag.s-中{background:var(--tag-warn-bg);color:var(--warn)}
.tag.s-弱{background:var(--tag-muted-bg);color:var(--muted)}
.tag.t-利好政策{background:var(--tag-down-bg);color:var(--down)}
.tag.t-利好消息{background:var(--tag-brand-bg);color:var(--brand)}
.tag.t-异动监管{background:var(--tag-warn-bg);color:var(--warn)}
.tag.t-利好{background:var(--tag-down-bg);color:var(--down)}
.tag.t-中性{background:var(--panel2);color:var(--muted);border:1px solid var(--line)}
.tag.t-减持{background:var(--tag-up-bg);color:var(--up);font-weight:700}

/* ---------- 按钮 ---------- */
.actions{margin-top:16px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.btn{border:none;border-radius:var(--r-sm);padding:9px 16px;font-size:13px;cursor:pointer;font-weight:700;
  font-family:inherit;transition:.15s}
.btn.primary{background:linear-gradient(135deg,var(--brand),#7CB0FF);color:#fff;
  box-shadow:0 6px 16px rgba(79,140,255,.32)}
.btn.primary:hover{filter:brightness(1.07)}
.btn.ghost{background:var(--panel2);color:var(--txt);border:1px solid var(--line)}
.btn.ghost:hover{border-color:var(--brand);color:var(--brand)}
.btn.icon{width:36px;height:36px;padding:0;display:inline-flex;align-items:center;justify-content:center;font-size:16px}
.btn.sm{padding:5px 12px;font-size:12px;border-radius:8px}
.del{color:var(--muted)}

/* ---------- 持仓表 ---------- */
.pos-table{width:100%;border-collapse:collapse;font-size:13px;background:var(--panel);
  border-radius:var(--r);overflow:hidden}
.pos-table th,.pos-table td{border:1px solid var(--line);padding:7px 8px;text-align:center}
.pos-table th{background:var(--panel2);color:var(--muted);font-weight:600;font-size:12px}
.pos-table input{width:92px;background:var(--panel3);border:1px solid var(--line);color:var(--txt);
  border-radius:6px;padding:6px 7px;font-size:13px;font-family:var(--mono);text-align:center}
.pos-table input:focus{outline:none;border-color:var(--brand)}
.pos-table input[type="number"]::-webkit-inner-spin-button,
.pos-table input[type="number"]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.pos-table input[type="number"]{-moz-appearance:textfield}
.pos-table .del{cursor:pointer;color:var(--up);border:none;background:none;font-size:15px}
.pos-table .calc-cell{background:var(--panel2);font-weight:700;white-space:nowrap;font-family:var(--mono)}
.pos-table .calc-cell .calc-hint{color:var(--warn);font-size:11px;font-weight:400;font-style:italic}
.pos-table tfoot .foot-label{background:var(--panel2);color:var(--brand);font-weight:800;text-align:left;padding-left:12px}
.pos-table tfoot td{background:var(--panel2);font-weight:800;white-space:nowrap;font-family:var(--mono)}
.pos-table tfoot .calc-cell span{font-size:13px}
/* 持仓表横向滚动（手机端列表显示不全，支持左右滑动） */
.pos-scroll{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;
  scrollbar-width:thin;scrollbar-color:var(--border2) transparent}
.pos-scroll .pos-table{min-width:760px}
.pos-scroll::-webkit-scrollbar{height:7px}
.pos-scroll::-webkit-scrollbar-thumb{background:var(--border2);border-radius:4px}
/* 自动计算/系统可回填字段（期初持仓/期初成本价/现价/昨收价）底色区分纯手动录入栏 */
.pos-table input.auto-calc{background:#e3effd;border-color:#bcdcff;color:#0b3d6e}
.pos-table input.auto-calc:focus{outline:none;border-color:var(--brand)}
:root[data-theme="dark"] .pos-table input.auto-calc{background:#16304d;border-color:#234a72;color:#cfe6ff}
/* 四十五期：逐笔交易明细派生只读 + 行内按钮 */
.pos-table input.tx-derived{background:#f3f4f6;border-color:#e2e5ea;color:#8a909a;cursor:not-allowed}
:root[data-theme="dark"] .pos-table input.tx-derived{background:#1b1f26;border-color:#2a2f38;color:#7c828c}
.pos-act-cell{white-space:nowrap}
.pos-table.locked .col-lockable{display:none}
.btn.active{background:var(--brand);color:#fff;border-color:var(--brand)}
.pos-tx-btn{margin:0 2px;padding:3px 8px;border-radius:6px;border:1px solid var(--line);background:var(--panel3);color:var(--txt);font-size:12px;cursor:pointer;line-height:1.4}
.pos-tx-btn:hover{filter:brightness(1.06)}
.pos-tx-view{background:#eef3fb;border-color:#cdddF2;color:#2b6cb0}
.pos-tx-buy{background:#fdecec;border-color:#f3c2c2;color:#c0392b}
.pos-tx-sell{background:#e9f7ef;border-color:#bfe6cf;color:#1e8449}
:root[data-theme="dark"] .pos-tx-view{background:#16273b;border-color:#234a72;color:#8fc0ff}
:root[data-theme="dark"] .pos-tx-buy{background:#3a1f1f;border-color:#5a2f2f;color:#ff9a8f}
:root[data-theme="dark"] .pos-tx-sell{background:#173a28;border-color:#235c3f;color:#7ee0a3}

/* 四十五期：个股逐笔交易明细抽屉 */
.trade-tx-modal{max-width:820px;width:94%}
.trade-tx-modal .modal-head h3{font-size:16px}
.trade-tx-summary{display:flex;flex-wrap:wrap;gap:10px 18px;padding:10px 12px;margin-bottom:12px;background:var(--panel2);border:1px solid var(--line);border-radius:8px;font-size:13px}
.trade-tx-summary span{color:var(--muted)}
.trade-tx-summary b{color:var(--txt);font-family:var(--mono)}
.trade-tx-list-wrap{max-height:300px;overflow:auto;border:1px solid var(--line);border-radius:8px;margin-bottom:12px}
.trade-tx-table{width:100%;border-collapse:collapse;font-size:13px}
.trade-tx-table th,.trade-tx-table td{border-bottom:1px solid var(--line);padding:7px 8px;text-align:center}
.trade-tx-table th{background:var(--panel2);color:var(--muted);font-weight:600;font-size:12px;position:sticky;top:0}
.trade-tx-table .tx-note{max-width:160px;white-space:normal;word-break:break-word;text-align:left;color:var(--muted)}
.trade-tx-form .tx-form-row{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:center;margin-bottom:10px}
.trade-tx-form label{display:flex;flex-direction:column;font-size:12px;color:var(--muted);gap:3px}
.trade-tx-form input,.trade-tx-form select{background:var(--panel3);border:1px solid var(--line);color:var(--txt);border-radius:6px;padding:6px 8px;font-size:13px}
.trade-tx-form input[type="date"]{min-width:140px}
.trade-tx-form input[type="number"]{width:110px}
.trade-tx-form input[type="text"]{width:150px}
.tx-form-actions{justify-content:space-between}
.tx-fee-preview{font-size:12px;color:var(--muted);font-family:var(--mono)}
.tx-fee-preview b{color:var(--down)}
.btn-primary{background:var(--brand);color:#fff;border:none;border-radius:6px;padding:7px 16px;font-size:13px;cursor:pointer}
.btn-primary:hover{filter:brightness(1.08)}

/* 已清仓交割单：统计看板 + 按月折叠列表 */
.liquidated-modal{max-width:760px}
.liquidated-stats{margin-bottom:14px}
/* 四十一期：实现总盈亏汇总卡 + 指标网格（替换原5张统计小卡） */
.liq-summary{border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:linear-gradient(180deg,#fbfdff 0%,#f4f8fd 100%);box-shadow:0 1px 2px rgba(20,40,80,.04);text-align:center}
.liq-sum-label{font-size:12px;color:#8a93a6;margin-bottom:6px}
.liq-sum-v{font-size:30px;font-weight:800;font-family:var(--mono,monospace);letter-spacing:.5px}
.liq-sum-v.up{color:#cf3a3a}.liq-sum-v.down{color:#3a9b5a}.liq-sum-v.flat{color:#888}
.liq-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:10px}
.liq-metric{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:8px 6px;text-align:center;display:flex;flex-direction:column;gap:3px}
.liq-mk{font-size:11px;color:var(--muted)}
.liq-metric b{font-size:13px;font-weight:700;font-family:var(--mono,monospace);color:var(--txt)}
.liq-metric b.up{color:#cf3a3a}.liq-metric b.down{color:#3a9b5a}
@media(max-width:520px){.liq-metrics{grid-template-columns:repeat(3,1fr)}}
.liquidated-list{display:flex;flex-direction:column;gap:10px}
.liq-group{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--panel2)}
.liq-group-head{display:flex;align-items:center;gap:10px;padding:11px 14px;cursor:pointer;user-select:none;background:var(--panel3)}
.liq-g-ym{font-weight:800;font-size:15px;color:var(--brand)}
.liq-g-meta{font-size:12px;color:var(--muted)}
.liq-g-meta b{font-family:var(--mono)}
.liq-g-toggle{margin-left:auto;color:var(--muted);transition:transform .15s;flex:0 0 auto}
.liq-group.collapsed .liq-g-toggle{transform:rotate(-90deg)}
.liq-group-body{padding:0;max-height:60vh;overflow:auto}
.liq-group.collapsed .liq-group-body{display:none}
.liq-table{width:100%;border-collapse:collapse;font-size:12px}
.liq-table th,.liq-table td{border-top:1px solid var(--line);padding:7px 8px;text-align:center;white-space:nowrap}
.liq-table th{background:var(--panel3);color:var(--muted);font-weight:600;position:sticky;top:0}
.liq-table td{font-family:var(--mono)}
.pos-scroll::-webkit-scrollbar-track{background:transparent}
.pos-scroll-hint{margin:4px 2px 8px;font-size:12px;opacity:.8}
@media (min-width:768px){.pos-scroll-hint{display:none}}

/* ---------- 报告 ---------- */
.report-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.r-actions{display:flex;gap:8px;flex-wrap:wrap}
.r-actions .r-date{height:36px;padding:0 10px;border:1px solid var(--line);border-radius:9px;background:var(--panel2);color:var(--txt);font-size:13px}
.report .rsec{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:15px 17px;margin-bottom:13px}
.report h4{margin:0 0 11px;font-size:14.5px;color:var(--brand);border-left:3px solid var(--brand);padding-left:9px;font-weight:800}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}
.kpi{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:11px 13px}
.kpi .k{font-size:11.5px;color:var(--muted)}
.kpi .v{font-family:var(--mono);font-size:19px;font-weight:800;margin-top:3px;letter-spacing:.3px}
.gauge{height:14px;border-radius:8px;background:linear-gradient(90deg,#15C98B,#FF8A3D,#FF4D4F);position:relative;margin:8px 0}
.gauge .dot{position:absolute;top:-3px;width:8px;height:20px;background:#fff;border-radius:3px;transform:translateX(-50%);box-shadow:0 0 6px rgba(255,255,255,.6)}
.pill{display:inline-block;padding:3px 11px;border-radius:20px;font-size:12px;font-weight:700;margin:2px 4px 2px 0}
.pill.up{background:var(--pill-up-bg);color:var(--up)}
.pill.down{background:var(--pill-down-bg);color:var(--down)}
.pill.warn{background:var(--pill-warn-bg);color:var(--warn)}
.pill.neu{background:var(--panel2);color:var(--muted)}
.rrow{display:flex;justify-content:space-between;gap:10px;padding:7px 0;border-bottom:1px dashed var(--line);font-size:13px}
.rrow:last-child{border:none}
.rrow .lbl{color:var(--muted)}
.pos-line{display:flex;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px dashed var(--line)}
.pos-line:last-child{border:none}
.pos-line .nm{font-weight:700}
.pos-news{margin:-2px 0 6px;padding:4px 0 4px 12px}
.pos-news .strat.sm{background:transparent;border-left:2px solid var(--line);padding:4px 10px;margin:3px 0;font-size:12px;color:var(--muted)}
.strat.sm{background:transparent;border-left:2px solid var(--line);padding:4px 10px;margin:3px 0;font-size:12px}
.deliv-block{margin-top:10px;padding:9px 12px;background:var(--panel2);border:1px solid var(--line);border-radius:10px}
.deliv-hd{font-size:12px;color:var(--muted);margin-bottom:6px}
.deliv-list{display:flex;flex-wrap:wrap;gap:6px}
.deliv-item{display:inline-block;font-size:12px;padding:3px 10px;border-radius:8px;background:var(--panel);border:1px solid var(--line);color:var(--muted)}
.deliv-item.td{border-color:var(--warn);color:var(--warn);font-weight:600}
.deliv-item.tm{border-color:var(--accent);color:var(--accent);font-weight:600}
.strat{background:var(--panel2);border-left:3px solid var(--brand);border-radius:8px;padding:9px 12px;margin:7px 0;font-size:13px;line-height:1.55}
.up{color:var(--up)} .down{color:var(--down)} .flat{color:var(--muted)}

/* ---------- 报告封面 + 核心指标速览卡（研报风） ---------- */
.report-cover{background:var(--panel);color:var(--txt);border:1px solid var(--line);border-radius:14px;padding:18px 20px;margin-bottom:16px}
.report-cover .rc-head{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:6px}
.report-cover .rc-title{font-size:22px;font-weight:800;letter-spacing:2px;color:var(--txt)}
.report-cover .rc-meta{font-size:12px;color:var(--muted);margin-top:4px}
.report-cover .cov-verdict{margin-top:14px;padding:13px 16px;border-radius:12px;background:var(--panel2);border:1px solid var(--line);border-left:6px solid var(--muted);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.report-cover .cov-verdict .cv-tag{font-size:11px;color:var(--muted);letter-spacing:1px}
.report-cover .cov-verdict .cv-main{font-size:18px;font-weight:800;margin-top:3px}
.report-cover .cov-verdict .cv-note{font-size:12.5px;color:var(--muted);margin-top:5px;line-height:1.5}
.report-cover .cov-grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:12px}
.report-cover .cov-dim{background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.report-cover .cov-dim .k{font-size:11px;color:var(--muted)}
.report-cover .cov-dim .v{font-size:15px;font-weight:800;margin-top:4px}
.report-cover .cov-strip{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.report-cover .cov-strip .pill{font-size:12.5px;padding:6px 12px;border-radius:10px;font-weight:700;border:1px solid transparent}
.report-cover .cov-strip .pill.up{background:var(--pill-up-bg);color:var(--up);border-color:rgba(255,77,79,.25)}
.report-cover .cov-strip .pill.down{background:var(--pill-down-bg);color:var(--down);border-color:rgba(21,201,139,.25)}
.report-cover .cov-strip .pill.warn{background:var(--pill-warn-bg);color:var(--warn);border-color:rgba(255,138,61,.25)}
.report-cover .cov-strip .pill.severe{background:rgba(192,57,43,.22);color:#ff6b6b;border-color:rgba(192,57,43,.4)}
.report-cover .cov-strip .pill.neu{background:var(--panel3);color:var(--muted);border-color:var(--line)}
.report-cover .cov-acc{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:12px}
.report-cover .cov-acc .a{background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.report-cover .cov-acc .a .k{font-size:11px;color:var(--muted)}
.report-cover .cov-acc .a .v{font-size:15px;font-weight:800;margin-top:4px;word-break:break-word}
.report-cover .cov-actions{display:flex;gap:18px;align-items:center;margin-top:12px;font-size:12.5px;color:var(--muted);background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:11px 14px;flex-wrap:wrap}
/* 封面：仓位建议 + 股债配置建议 */
.report-cover .cov-pos{display:grid;grid-template-columns:1fr 1.5fr;gap:10px;margin-top:12px}
.report-cover .cp-card{background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:12px 14px}
.report-cover .cp-h{font-size:12px;color:var(--muted);font-weight:800;letter-spacing:.5px}
.report-cover .cp-level{font-size:27px;font-weight:800;margin-top:4px;line-height:1.1}
.report-cover .cp-range{font-size:12px;color:var(--muted);margin-top:2px}
.report-cover .cp-bar{height:8px;border-radius:6px;background:var(--panel3);overflow:hidden;margin:9px 0 6px}
.report-cover .cp-bar span{display:block;height:100%;border-radius:6px}
.report-cover .cp-note{font-size:12px;color:var(--muted);line-height:1.5}
.report-cover .cp-row{display:flex;gap:8px;align-items:flex-start;margin-top:8px}
.report-cover .cp-tag{flex:none;font-size:11px;font-weight:800;padding:2px 8px;border-radius:7px;margin-top:1px}
.report-cover .cp-tag.eq{background:var(--pill-up-bg);color:var(--up)}
.report-cover .cp-tag.bond{background:var(--pill-down-bg);color:var(--down)}
.report-cover .cp-val{font-size:12.5px;color:var(--txt);line-height:1.5}
.report-cover .cp-bar2{display:flex;height:8px;border-radius:6px;overflow:hidden;margin:10px 0 5px;background:var(--panel3)}
.report-cover .cp-bar2 .eq{background:var(--up)}
.report-cover .cp-bar2 .bond{background:var(--down)}
.report-cover .cp-ratio{font-size:11.5px;color:var(--muted)}
@media(max-width:560px){
  .report-cover .cov-pos{grid-template-columns:1fr}
  .report-cover .cov-grid4{grid-template-columns:repeat(2,1fr)}
  .report-cover .cov-acc{grid-template-columns:repeat(2,1fr)}
  .report-cover .cov-acc .a .v{font-size:14px}
  .report-cover .cov-actions{gap:10px}
}
.report-cover .cov-actions b{color:var(--up);font-weight:800}
.report-cover .pill{background:var(--panel3);color:var(--txt)}
.report-cover .pill.up{background:var(--pill-up-bg);color:var(--up)}
.report-cover .pill.down{background:var(--pill-down-bg);color:var(--down)}
.report-cover .pill.warn{background:var(--pill-warn-bg);color:var(--warn)}
.report-cover .pill.neu{background:var(--panel3);color:var(--muted)}
.report-cover .rc-metrics{display:flex;flex-wrap:wrap;gap:8px;margin-top:11px}
.report-cover .rc-chip{font-size:12.5px;padding:6px 11px;background:var(--panel2);border:1px solid var(--line);border-radius:8px;color:var(--txt)}
.report-cover .rc-chip b{font-weight:800}
.report-cover .rc-chip .up{color:var(--up)}
.report-cover .rc-chip .down{color:var(--down)}
.report-cover .rc-chip .flat{color:var(--muted)}
.rsec-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
/* 明日机会分析：卡片视图 */
.opp-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(215px,1fr));gap:12px;margin-top:10px}
.opp-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px 13px;box-shadow:0 2px 8px rgba(0,0,0,.14);cursor:pointer;transition:border-color .15s,box-shadow .15s}
.opp-card:hover{border-color:var(--accent,#3b82f6);box-shadow:0 4px 14px rgba(0,0,0,.18)}
.opp-card.expanded{border-color:var(--accent,#3b82f6)}
.opp-card-top{display:flex;justify-content:space-between;align-items:center;gap:8px}
.opp-name{font-size:15px;font-weight:800;color:var(--txt)}
.opp-sector{font-size:12px;color:var(--muted);margin-top:2px}
.opp-metrics{display:flex;gap:10px;margin:11px 0}
.opp-metric{flex:1;background:var(--panel2);border-radius:9px;padding:8px 6px;text-align:center}
.opp-metric .om-v{font-family:var(--mono);font-size:20px;font-weight:800;line-height:1}
.opp-metric .om-v.up{color:var(--up)}
.opp-metric .om-v.down{color:var(--down)}
.opp-metric .om-k{font-size:11px;color:var(--muted);margin-top:3px}
.opp-detail{display:none;margin-top:10px;padding-top:10px;border-top:1px dashed var(--line)}
.opp-card.expanded .opp-detail{display:block}
.opp-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px}
.opp-detail-grid div{display:flex;flex-direction:column;gap:2px}
.opp-detail-grid span{font-size:11px;color:var(--muted)}
.opp-detail-grid b{font-size:13px;color:var(--txt);font-weight:600}
.opp-detail-score{font-size:12px;color:var(--txt);background:var(--panel2);border-radius:8px;padding:8px 10px;margin-bottom:8px}
.opp-detail-score span{display:block;font-size:11px;color:var(--muted);margin-bottom:2px}
.opp-detail-note{font-size:12px;color:var(--muted);line-height:1.55}
.opp-foot{display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--line);padding-top:9px}
.opp-price-lbl{font-size:12.5px;color:var(--muted);display:flex;align-items:center;gap:6px}
.opp-price-lbl input{font-family:var(--mono);background:var(--panel2);border:1px solid var(--line);color:var(--txt);border-radius:6px;padding:4px 6px;width:84px}
.opp-shares{font-size:12.5px;color:var(--muted)}
.opp-advice{font-size:12.5px;font-weight:700}
.opp-advice.up{color:var(--up)}.opp-advice.down{color:var(--down)}.opp-advice.flat{color:var(--muted)}
.opp-empty{background:var(--panel);border:1px dashed var(--line);border-radius:12px;padding:26px 18px;text-align:center;margin-top:10px}
.opp-empty-title{font-size:15px;font-weight:700;color:var(--txt);margin-bottom:6px}
.opp-empty-hint{font-size:12.5px;color:var(--muted);line-height:1.6}
.rsec-h .btn{margin-left:auto}
.no-print{display:none !important}
.pill.severe{background:#5a1620;color:#ff6b6b}
@media(max-width:560px){ .report-cover .summary-grid{grid-template-columns:repeat(2,1fr)} .report-cover .rc-title{font-size:22px} }

/* ---------- 策略 / 历史 列表 ---------- */
.strategy-list .scard{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;margin-bottom:12px}
.scard .date{font-weight:800;color:var(--brand);font-size:14px}
.scard .item{font-size:13px;padding:5px 0;border-bottom:1px dashed var(--line)}
.hcard{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:12px 16px;margin-bottom:12px}
.hrow{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.hdate{font-weight:800;color:var(--brand);font-size:15px}
.hactions{display:flex;gap:8px}
.hkpi{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.hkpi .kpi{width:auto;min-width:140px;margin:0}
.scard-detail{padding:8px 12px 4px;border-top:1px dashed var(--line);margin-top:6px}
.scard-detail .item{font-size:13px;padding:5px 0;border-bottom:1px dashed var(--line)}
.date{color:var(--brand);font-weight:700}
.item{font-size:13px;padding:5px 0}
.meta{font-size:11px;color:var(--muted)}

.empty{color:var(--muted);text-align:center;padding:40px 0}
.foot-note{text-align:center;color:var(--muted);font-size:11.5px;line-height:1.7;padding:18px 6px 6px;margin-top:18px;border-top:1px dashed var(--line)}


/* ---------- 4.2 情绪量化阈值表 ---------- */
.emo-table{margin:10px 0;background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.emo-table .emo-title{font-size:12px;color:var(--muted);margin-bottom:8px}
.emo-table .emo-title b{color:var(--txt)}
.emo-table table{border-collapse:collapse;width:100%}
.emo-table td{text-align:center;border:1px solid var(--line);padding:6px 4px;font-size:13px;font-weight:700;border-radius:4px;background:var(--panel)}
.emo-table td .rng{display:block;font-size:10px;font-weight:400;color:var(--muted);margin-top:2px}
.emo-table td.cur{outline:2px solid var(--brand);background:rgba(79,140,255,.12)}
.emo-formula{margin:10px 0 4px;background:var(--panel2);border:1px dashed var(--line);border-radius:10px;padding:10px 12px;font-size:12px;color:var(--muted);line-height:1.7}
.emo-formula .ef-title{font-weight:700;color:var(--txt);margin-bottom:4px}
.emo-formula .ef-eq{font-family:var(--mono,ui-monospace,Menlo,Consolas,monospace);color:var(--txt)}
.emo-formula .ef-sub{margin-top:4px}
.emo-formula .ef-sub b{color:var(--brand);font-size:14px}
.emo-conclusion{margin:8px 0 4px;background:var(--panel2);border:1px solid var(--line);border-left:4px solid var(--muted);border-radius:10px;padding:10px 12px;font-size:12px;line-height:1.7}
.emo-conclusion.up{border-left-color:#e23b3b}
.emo-conclusion.down{border-left-color:#1faa59}
.emo-conclusion.flat{border-left-color:#8a8f99}
.emo-conclusion .ec-title{font-weight:700;color:var(--txt);margin-bottom:4px}
.emo-conclusion .ec-body{color:var(--txt)}
.emo-conclusion .ec-body b{color:var(--brand)}
.emo-conclusion.up .ec-body b{color:#e23b3b}
.emo-conclusion.down .ec-body b{color:#1faa59}
.emo-conclusion .ec-sig{margin-top:6px;color:var(--muted);font-size:11px}
/* ---------- 4.2 情绪量化阈值表 · 合并卡片（行情页） ---------- */
.emo-card{margin:10px 0;background:var(--panel2);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.emo-card-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;padding:12px 14px;border-bottom:1px solid var(--line);background:var(--panel)}
.emo-card-title{font-size:14px;font-weight:700;color:var(--txt)}
.emo-card-value{font-size:12px;color:var(--muted)}
.emo-card-value b{font-size:15px}
.emo-card-tiers{padding:12px 14px}
.emo-card-tiers table{border-collapse:collapse;width:100%}
.emo-card-tiers td{text-align:center;border:1px solid var(--line);padding:7px 4px;font-size:13px;font-weight:700;border-radius:5px;background:var(--panel)}
.emo-card-tiers td .rng{display:block;font-size:10px;font-weight:400;color:var(--muted);margin-top:2px}
.emo-card-tiers td.cur{outline:2px solid var(--brand);background:rgba(79,140,255,.12)}
.emo-card-body{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:12px 14px 14px;border-top:1px solid var(--line);background:var(--panel)}
.emo-card-formula{font-size:12px;color:var(--muted);line-height:1.7}
.emo-card-formula .ecf-title{font-weight:700;color:var(--txt);margin-bottom:5px}
.emo-card-formula .ecf-eq{font-family:var(--mono,ui-monospace,Menlo,Consolas,monospace);color:var(--txt)}
.emo-card-formula .ecf-sub{margin-top:5px}
.emo-card-formula .ecf-sub b{color:var(--brand);font-size:14px}
.emo-card-conclusion{border-left:4px solid var(--muted);padding-left:10px;font-size:12px;line-height:1.7}
.emo-card-conclusion.up{border-left-color:#e23b3b}
.emo-card-conclusion.down{border-left-color:#1faa59}
.emo-card-conclusion.flat{border-left-color:#8a8f99}
.emo-card-conclusion .ecc-title{font-weight:700;color:var(--txt);margin-bottom:4px}
.emo-card-conclusion .ecc-body{color:var(--txt)}
.emo-card-conclusion .ecc-sig{margin-top:6px;color:var(--muted);font-size:11px}
.emo-hist-badge{display:inline-block;font-size:10px;font-weight:500;color:var(--muted);background:var(--panel);border:1px solid var(--line);border-radius:4px;padding:1px 6px;margin-left:6px;vertical-align:middle}
@media(max-width:640px){
  .emo-card-body{grid-template-columns:1fr}
  .emo-card-header{flex-direction:column;align-items:flex-start}
}
/* 复盘报告：三、大盘分析 大卡片视图 */
.report .rsec.big-card{padding:0;overflow:hidden}
.report .big-card > h4{margin:0;padding:13px 17px 11px;font-size:17px;border-bottom:1px solid var(--line)}
.report .big-card .sub-sec{padding:13px 17px;border-top:1px solid var(--line)}
.report .big-card .sub-sec:first-of-type{border-top:none}
.report .big-card .sub-sec > h5{margin:0 0 9px;font-size:14.5px;font-weight:800;color:var(--txt);display:flex;align-items:center;gap:8px}
.report .big-card .sub-sec > h5::before{content:"";width:4px;height:15px;border-radius:3px;background:var(--brand);flex:0 0 auto}
.report .big-card .sub-sec h4{margin:0 0 9px;font-size:15px;font-weight:800;color:var(--txt)}
/* 3.5 四维大盘定调 */
.verdict-card{margin-top:10px}
.verdict-card .vd-risk-grid{margin-top:8px;display:flex;flex-wrap:wrap;gap:6px}
.verdict-card .vd-ri{font-size:11.5px;border-radius:8px;padding:4px 8px;line-height:1.5}
.verdict-card .vd-ri.triggered{color:#e23b3b;background:rgba(226,59,59,.1);border:1px solid rgba(226,59,59,.3)}
.verdict-card .vd-ri.safe{color:#1faa59;background:rgba(31,170,89,.08);border:1px solid rgba(31,170,89,.2)}
.verdict-card .vd-concls{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:8px}
.verdict-card .vd-concl{display:block;background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--muted);border-radius:8px;padding:7px 9px}
.verdict-card .vd-concl.up{border-left-color:#e23b3b}
.verdict-card .vd-concl.down{border-left-color:#1faa59}
.verdict-card .vd-concl.flat{border-left-color:#8a8f99}
.verdict-card .vd-concl.up .vdc-b{color:#e23b3b}
.verdict-card .vd-concl.down .vdc-b{color:#1faa59}
.verdict-card .vd-concl.flat .vdc-b{color:#8a8f99}
.verdict-card .vdc-k{display:block;font-size:11.5px;font-weight:500;color:var(--muted);margin-bottom:3px}
.verdict-card .vdc-b{display:block;font-size:12.5px;color:var(--txt);line-height:1.6}

/* ---------- 3.7 风险预警 ---------- */
.risk-alert{border-radius:10px;padding:10px 14px;margin-bottom:10px;font-size:13.5px;text-align:center}
.risk-alert.danger{background:rgba(239,68,68,.12);border:2px solid #ef4444;color:#ef4444;font-weight:700}
.risk-alert.warn{background:rgba(245,158,11,.1);border:2px solid #f59e0b;color:#f59e0b;font-weight:600}
.risk-alert.ok{background:rgba(34,197,94,.1);border:2px solid #22c55e;color:#22c55e}
.risk-stocks{margin-top:8px;border:1px solid var(--line);border-radius:8px;padding:6px 8px}
.risk-stocks summary{font-size:12px;color:var(--muted);cursor:pointer;margin-bottom:4px}

.ann-list{margin:8px 0;display:flex;flex-direction:column;gap:7px}
.ann{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--panel2);border:1px solid var(--line);
  border-left:3px solid var(--brand);border-radius:8px;padding:8px 10px;font-size:12.5px}
.ann .an{font-weight:700;color:var(--txt)}
.ann .ac{color:var(--muted);font-size:11px;font-family:var(--mono)}
.ann .ad{color:var(--muted);font-size:11px}
.ann .at{margin-left:auto}
.ann .ax{flex:1 1 100%;color:var(--muted);line-height:1.5}
.ann.good{border-left-color:var(--down)}
.ann.reduce{border-left-color:var(--up);background:rgba(255,77,79,.10);border-color:rgba(255,77,79,.4)}
.ann.reduce .an,.ann.reduce .ax{color:var(--up)}

/* 公告录入（持仓页） */
.ann-edit{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--panel);border:1px solid var(--line);
  border-radius:8px;padding:8px 10px;margin-bottom:7px}
.ann-edit.reduce{border-color:rgba(255,77,79,.5);background:rgba(255,77,79,.08)}
.ann-edit input,.ann-edit select{background:var(--panel2);border:1px solid var(--line);color:var(--txt);
  border-radius:7px;padding:6px 8px;font-size:12px;font-family:inherit}
.ann-edit .ae-code{width:72px}.ann-edit .ae-name{width:96px}.ann-edit .ae-date{width:104px}.ann-edit .ae-type{width:74px}.ann-edit .ae-title{flex:1;min-width:200px}
.ann-edit .del{color:var(--up);background:none;border:none;font-size:15px;cursor:pointer}
.ann-edit .view{color:var(--brand);background:none;border:1px solid var(--line);border-radius:7px;padding:3px 7px;font-size:13px;cursor:pointer}
.ann-edit .view:hover{background:var(--panel2)}
/* 持仓个股公告详情弹窗 */
.ann-detail{display:flex;flex-direction:column;gap:12px;padding:4px 2px}
.ann-detail .ad-row{display:flex;gap:12px;align-items:flex-start}
.ann-detail .ad-row.col{flex-direction:column;gap:4px}
.ann-detail .ad-k{flex:0 0 72px;color:var(--muted);font-size:13px;padding-top:2px}
.ann-detail .ad-v{flex:1;font-size:14px;line-height:1.5;word-break:break-all}
.ann-detail.reduce .ad-v{color:var(--up)}
.ann-detail.good .ad-v{color:var(--down)}

/* ===== 概念板块选择器 ===== */
.concept-sel{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.concept-chip{display:inline-flex;align-items:center;gap:4px;background:var(--panel2);border:1px solid var(--line);
  border-radius:20px;padding:4px 10px;font-size:12px;cursor:pointer;transition:.15s;user-select:none}
.concept-chip:hover{border-color:var(--brand)}
.concept-chip input{width:14px;height:14px;accent-color:var(--brand);cursor:pointer;margin:0}
.concept-chip.sel{background:rgba(79,140,255,.15);border-color:var(--brand);color:var(--brand);font-weight:600}

/* ===== 价格涨跌趋势指示器 ===== */
.price-cell{position:relative;display:inline-flex;align-items:center;gap:4px}
.price-trend{display:inline-block;font-size:11px;margin-left:0;vertical-align:middle;width:14px;text-align:center}
.price-trend.up{color:var(--red);font-weight:bold}
.price-trend.down{color:var(--green);font-weight:bold}
.price-trend.flat{color:var(--muted)}

/* ===== 持仓分类下拉 ===== */
.pos-table select{background:var(--panel2);border:1px solid var(--line);color:var(--txt);
  border-radius:6px;padding:5px 6px;font-size:12px;font-family:inherit;max-width:80px}

/* ===== 公告分类选择器 ===== */
.ann-cat-sel{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.ann-cat-chip{display:inline-flex;align-items:center;gap:4px;background:var(--panel2);border:1px solid var(--line);
  border-radius:20px;padding:4px 10px;font-size:12px;cursor:pointer;transition:.15s;user-select:none}
.ann-cat-chip:hover{border-color:var(--brand)}
.ann-cat-chip input{width:14px;height:14px;accent-color:var(--brand);cursor:pointer;margin:0}
.ann-cat-chip.sel{background:rgba(79,140,255,.15);border-color:var(--brand);color:var(--brand);font-weight:600}

/* ---------- 响应式（窄窗口 / 竖屏） ---------- */
@media(max-width:820px){
  .grid2{grid-template-columns:1fr}
  /* 窄屏也保持单行：品牌标题在左，喇叭+消息栏靠右与标题对齐 */
  .topbar{flex-direction:row;align-items:center;gap:10px;padding:10px 14px}
  .sub{display:none}
  .top-actions{flex-wrap:nowrap;justify-content:flex-end;gap:6px;align-items:center;
    flex:1 1 auto;min-width:0;padding-left:8px}
  .top-actions input[type=date]{flex:0 1 118px;min-width:0;max-width:128px;width:118px;padding:7px 8px}
  .top-actions .btn .lbl{display:none}
  .top-actions .btn{padding:8px 11px;font-size:13px;flex:0 0 auto}
  #btnReport{flex:0 0 auto}
  .content{padding:14px 12px 20px}
  .pos-table{font-size:12px}
  .pos-table input{width:74px}
}
@media(max-width:520px){
  .policy-pick{grid-template-columns:1fr}
}

/* ---------- 打印 / 导出 PDF（window.print 路径） ---------- */
@media print{
  body{display:block;height:auto;overflow:visible;background:#fff;color:#000}
  .topbar,.tabbar,.foot-note,.report-head{display:none !important}
  .panel{display:none !important}
  #tab-report{display:block !important}
  .content{flex:none;order:initial;min-height:0;overflow:visible;max-width:100%;padding:0;margin:0;width:100%;align-self:stretch}
  .report .rsec{background:#fff !important;border:1px solid #ccc;break-inside:avoid;page-break-inside:avoid}
  .kpi{background:#fff !important;border:1px solid #ccc}
  .strat{background:#f5f8fc !important}
  .pill.up{color:#d11a37 !important}.pill.down{color:#0a8f5b !important}.pill.warn{color:#b9791a !important}.pill.neu{color:#555 !important}.pill.severe{color:#c0392b !important}
  .up{color:#d11a37 !important}.down{color:#0a8f5b !important}.flat{color:#555 !important}
  .gauge{background:linear-gradient(90deg,#15C98B,#FF8A3D,#FF4D4F) !important}
  .report-cover{background:#e8f1fc !important;color:#1f2733 !important;break-inside:avoid;page-break-inside:avoid}
  .report-cover .cov-verdict,.report-cover .cov-dim,.report-cover .cov-acc .a,.report-cover .cov-actions{background:#fff !important;border:1px solid #d6e2f0 !important;box-shadow:none !important}
  .report-cover .cov-strip .pill.up{background:#ffd9df !important;color:#d11a37 !important}.report-cover .cov-strip .pill.down{background:#cdeede !important;color:#0a8f5b !important}.report-cover .cov-strip .pill.warn{background:#ffe6bf !important;color:#b9791a !important}.report-cover .cov-strip .pill.neu{background:#fff !important;color:#555 !important}.report-cover .cov-strip .pill.severe{background:#ffc9cf !important;color:#c0392b !important}
  .report-cover .pill{background:rgba(31,41,51,.07) !important;color:#1f2933 !important}
  .no-print{display:none !important}
  .opp-cards{grid-template-columns:repeat(2,1fr);gap:8px}
  .opp-card{background:#fff !important;border:1px solid #ccc;box-shadow:none;break-inside:avoid;page-break-inside:avoid}
  .opp-metric{background:#f3f5f8 !important}
  .opp-price-lbl input{background:#fff !important;border:1px solid #ccc}
  *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}

/* ---------- 数据同步弹窗 ---------- */
.modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.65);z-index:9999;display:flex;align-items:center;justify-content:center}
.modal-box{background:var(--panel);border:1px solid var(--border);border-radius:14px;max-width:500px;width:92%;max-height:85vh;overflow-y:auto;box-shadow:0 12px 40px rgba(0,0,0,.5)}
.modal-head{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border)}
.modal-head h3{margin:0;font-size:16px;color:var(--brand)}
.modal-x{background:none;border:none;color:var(--text2);font-size:20px;cursor:pointer;padding:4px 8px;border-radius:6px}
.modal-x:hover{color:var(--txt);background:var(--panel2)}
.modal-body{padding:20px}
.modal-foot{display:flex;justify-content:flex-end;align-items:center;gap:12px;padding:14px 20px;border-top:1px solid var(--border)}
.sync-hint-box{background:var(--panel2);border-radius:8px;padding:14px 16px;margin-bottom:16px;line-height:1.8;font-size:13px}
.sync-hint-box .muted{color:var(--muted);font-size:12px;margin-top:8px}
.sync-hint-box code{background:var(--panel3);padding:2px 6px;border-radius:4px;font-size:12px;color:var(--brand)}
.sync-field{display:flex;gap:8px;align-items:center;margin-bottom:12px}
.sync-field label{min-width:70px;font-size:13px;color:var(--text2);white-space:nowrap}
.sync-field input{flex:1;padding:8px 12px;border-radius:8px;border:1px solid var(--border2);background:var(--panel2);color:var(--txt);font-size:14px}
.sync-field input:focus{outline:none;border-color:var(--brand)}
.sync-status{margin:12px 0;font-size:13px;min-height:20px}
.sync-ok{color:var(--down)}
.sync-err{color:var(--up)}
.sync-divider{height:1px;background:var(--border);margin:20px 0}
.sync-section h4{margin:0 0 8px;font-size:14px;color:var(--brand)}
.sync-actions{display:flex;gap:10px;flex-wrap:wrap}

/* 大盘实时：历史快照列表 + 缓存/历史态 meta */
.rt-hist{margin-top:14px}

/* 大盘实时：板块资金流向图表 */
.rt-charts{margin-top:14px;display:flex;flex-direction:column;gap:12px}
.rt-charts .block{background:var(--panel2,#fff);border:1px solid var(--line,#eee);border-radius:12px;padding:12px 10px}
.rt-charts .sec-title{font-size:13px;font-weight:700;color:var(--txt);margin-bottom:8px;padding-left:2px}
/* 大盘分时资金曲线：双列（上证 / 深证成指） */
.flow2col{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.flow-sub{background:var(--panel2,#fff);border:1px solid var(--line,#eee);border-radius:10px;padding:8px 6px}
.flow-sub-title{font-size:12px;font-weight:700;color:var(--txt);margin:0 0 6px 4px}
.flow-status{margin:0 0 10px 2px}
.flow-sub .profit-chart-canvas-box{height:220px}
@media (max-width:560px){ .flow2col{grid-template-columns:1fr} .flow-sub .profit-chart-canvas-box{height:200px} }
/* 板块表格排序切换（流入↓ / 流出↑） */
.sort-toggle{margin-left:auto;display:inline-flex;gap:4px;background:var(--panel2,#f2f3f5);border:1px solid var(--line,#eee);border-radius:8px;padding:2px}
.sort-btn{appearance:none;border:0;background:transparent;color:var(--text2,#8a94a6);font-size:11px;font-weight:700;padding:3px 8px;border-radius:6px;cursor:pointer;line-height:1.4;transition:.15s}
.sort-btn:hover{color:var(--txt)}
.sort-btn.active{background:var(--brand,#E5484D);color:#fff}
.hist-list{display:flex;flex-direction:column;gap:8px;margin-top:6px}
.hist-item{display:block;width:100%;text-align:left;background:var(--panel2);border:1px solid var(--line);
  border-radius:10px;padding:10px 12px;cursor:pointer;color:var(--txt);font-size:12.5px;transition:.15s;line-height:1.7}
.hist-item:hover{border-color:var(--accent);background:#16263d}
.hist-item .hd{font-weight:700;color:var(--accent);margin-right:10px}
.hist-item .hm{margin-right:12px;white-space:nowrap;color:var(--text2)}
.hist-item .hm.up{color:var(--up)}
.hist-item .hm.down{color:var(--down)}
.hist-item .ht{display:block;color:var(--muted);font-size:11px;margin-top:3px;white-space:normal}
.btn.ghost.sm{padding:4px 10px;font-size:12px;border-radius:7px}
.hint.st-cache{color:var(--accent)}
.hint.st-hist{color:var(--muted)}
.hint.st-ok{color:var(--down)}
.hint.st-err{color:var(--up)}

/* 收盘页：录入区 + 实时面板 两栏并排 */
.close-cols{display:grid;grid-template-columns:1fr;gap:20px;align-items:start}
.close-main{min-width:0}
@media(max-width:980px){.close-cols{grid-template-columns:1fr;gap:16px}}

/* ===== 实时盘面 25 项指标面板（收盘嵌入位 / 实时 tab 共用） ===== */
.m25{margin-top:6px}
.m25-compact{margin-top:12px}
.m25 h3{font-size:14px;margin:6px 0 4px;color:var(--accent)}
.m25-sec{font-size:12px;color:var(--muted);font-weight:700;margin:12px 0 6px;border-left:3px solid var(--accent);padding-left:8px}
.m25-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:8px}
.mtile{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:9px 10px;min-height:64px}
.mtile.wide{grid-column:1/-1}
.mtile .ml{font-size:11px;color:var(--muted);line-height:1.3}
.mtile .mv{font-size:17px;font-weight:700;margin-top:3px;font-family:var(--mono,ui-monospace,Menlo,Consolas,monospace);word-break:break-all}
.mtile .mv i{font-size:11px;font-style:normal;color:var(--muted);font-weight:400;margin-left:2px}
.mtile .ms{font-size:10.5px;color:var(--muted);margin-top:3px;line-height:1.3}
.mtile.up .mv{color:var(--red)}
.mtile.down .mv{color:var(--green)}
.mtile.flat .mv{color:var(--txt)}

/* ===== 股权溢价指数 ERP 统计模块 ===== */
.erp-mod{margin-top:0}
.erp-mod h3{margin-top:0}
.erp-val{font-size:34px;font-weight:800;font-family:var(--mono,ui-monospace,Menlo,Consolas,monospace);line-height:1.1;margin:6px 0 10px}
.erp-val.up{color:var(--red)}
.erp-val.down{color:var(--green)}
.erp-rows{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}
.erp-row{display:flex;justify-content:space-between;align-items:center;font-size:13px;padding:6px 10px;background:var(--panel2);border:1px solid var(--line);border-radius:8px}
.erp-row span{color:var(--muted);display:inline-flex;align-items:center;gap:6px}
.erp-row b{font-family:var(--mono,ui-monospace,Menlo,Consolas,monospace)}
.erp-src{font-style:normal;font-size:10.5px;font-weight:700;padding:1px 6px;border-radius:999px;line-height:1.5}
.erp-src.live{color:#fff;background:var(--up,#ff4d4f)}
.erp-src.manual{color:#fff;background:var(--accent,#3b82f6)}
.erp-src.snap{color:var(--muted);background:var(--panel2);border:1px solid var(--line)}
.erp-formula{font-size:12px;color:var(--muted);font-family:var(--mono,ui-monospace,Menlo,Consolas,monospace);background:var(--panel2);border:1px dashed var(--line);border-radius:8px;padding:6px 10px;text-align:center}
/* ERP 仓位提醒卡（持仓 tab 顶部 + 大盘模块内嵌建议共用配色；good=机会绿 / mid=中性蓝 / warn=谨慎橙） */
.erp-card{margin:12px 0 4px;border:1px solid var(--line);border-left:4px solid var(--line);border-radius:12px;padding:14px 16px;background:var(--panel2)}
.erp-card.tone-good{border-left-color:#22c55e}
.erp-card.tone-mid{border-left-color:#3b82f6}
.erp-card.tone-warn{border-left-color:#f97316}
.erp-card-top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.erp-card-val{font-size:28px;font-weight:800;font-family:var(--mono,ui-monospace,Menlo,Consolas,monospace);line-height:1}
.erp-card-val.good{color:#22c55e}
.erp-card-val.mid{color:#3b82f6}
.erp-card-val.warn{color:#f97316}
.erp-card-unit{font-size:12px;font-weight:600;color:var(--muted);margin-left:6px;font-family:inherit}
.erp-card-badges{display:inline-flex;align-items:center;gap:8px}
.erp-zone-badge{font-size:12px;font-weight:700;padding:2px 10px;border-radius:999px;color:#fff}
.erp-zone-badge.good{background:#22c55e}
.erp-zone-badge.mid{background:#3b82f6}
.erp-zone-badge.warn{background:#f97316}
.erp-card-advice{font-size:15px;font-weight:700;margin:10px 0 4px}
.erp-card-signal{font-size:13px;font-weight:600;padding:8px 10px;border-radius:8px;margin:6px 0;line-height:1.6}
.erp-card.tone-good .erp-card-signal{color:#15803d;background:rgba(34,197,94,.12)}
.erp-card.tone-warn .erp-card-signal{color:#c2410c;background:rgba(249,115,22,.14)}
.erp-card-etf{font-size:12.5px;color:var(--muted);line-height:1.7;margin-top:4px}
.erp-card-foot{font-size:11px;color:var(--muted);margin-top:8px;opacity:.85;line-height:1.6}
/* D-EAM 动态ERP三层锚定配置模型（中长线） */
.deam-block{margin-top:12px;padding:12px 14px;border-radius:10px;background:rgba(59,130,246,.08);border:1px solid rgba(59,130,246,.28)}
.deam-block.tone-good{background:rgba(34,197,94,.10);border-color:rgba(34,197,94,.32)}
.deam-block.tone-warn{background:rgba(249,115,22,.10);border-color:rgba(249,115,22,.32)}
.deam-block.deam-empty{background:rgba(91,102,117,.08);border-color:rgba(91,102,117,.25)}
.deam-title{font-size:14px;font-weight:800;color:var(--text);display:flex;align-items:center;gap:8px;margin-bottom:8px}
.deam-tag{font-size:10px;font-weight:700;padding:2px 8px;border-radius:999px;background:rgba(59,130,246,.18);color:#2563eb}
.deam-hint{font-size:12px;color:var(--muted);line-height:1.7}
.deam-factors{display:flex;flex-wrap:wrap;gap:10px 18px;margin-bottom:8px;font-size:12.5px}
.deam-f{color:var(--muted)}
.deam-f b{color:var(--text)}
.deam-main{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:8px}
.deam-metric{background:rgba(255,255,255,.5);border-radius:8px;padding:6px 8px;text-align:center}
.deam-metric .dm-l{display:block;font-size:10.5px;color:var(--muted);margin-bottom:2px}
.deam-metric .dm-v{font-size:17px;font-weight:800}
.deam-action-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.deam-act{font-size:14px;font-weight:800;padding:4px 12px;border-radius:999px;color:#fff}
.deam-act.good{background:#22c55e}
.deam-act.warn{background:#f97316}
.deam-act.mid{background:#3b82f6}
.deam-diff{font-size:12px;color:var(--muted)}
.deam-alert-row{display:flex;flex-wrap:wrap;gap:8px 18px;font-size:13px;padding:8px 0}
.deam-alert-row b{font-size:15px}
.deam-alert-note{font-size:11.5px;color:var(--muted);line-height:1.7}
.c-good{color:#22c55e}.c-mid{color:#3b82f6}.c-warn{color:#f97316}
/* D-EAM 新增：策略模型按钮 / 配置建议明细 / 模型弹窗（2026-08-01） */
.deam-btns{margin-left:auto;display:inline-flex;gap:6px;flex:0 0 auto}
.deam-btns .btn{margin:0}
/* 配置建议明细块 */
.deam-adv{margin-top:10px;padding:11px 13px;border-radius:10px;background:var(--panel2);border:1px solid var(--line)}
.deam-adv-hd{font-size:13px;font-weight:800;color:var(--text);margin-bottom:8px;display:flex;flex-wrap:wrap;align-items:baseline;gap:8px}
.deam-adv-sub{font-size:11.5px;font-weight:600;color:var(--muted);margin-left:auto;white-space:nowrap}
.deam-adv-bar{display:flex;height:26px;border-radius:7px;overflow:hidden;font-size:11px;font-weight:700;color:#fff;margin-bottom:10px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.06)}
.dab{display:flex;align-items:center;justify-content:center;overflow:hidden;white-space:nowrap;min-width:0}
.dab.core{background:#2563eb}
.dab.sat{background:#7c3aed}
.dab.cash{background:#64748b}
.deam-adv-row{padding:8px 0;border-top:1px dashed var(--line)}
.deam-adv-row:first-of-type{border-top:none}
.dar-h{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:var(--text);flex-wrap:wrap}
.dar-dot{width:9px;height:9px;border-radius:50%;flex:0 0 auto}
.dar-dot.core{background:#2563eb}
.dar-dot.sat{background:#7c3aed}
.dar-dot.cash{background:#64748b}
.dar-lt{font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:999px;margin-left:auto;white-space:nowrap}
.dar-lt.good{background:rgba(34,197,94,.18);color:#16a34a}
.dar-lt.mid{background:rgba(59,130,246,.18);color:#2563eb}
.dar-lt.warn{background:rgba(249,115,22,.18);color:#ea580c}
.dar-lt.na{background:rgba(91,102,117,.2);color:#64748b}
.dar-b{font-size:12.5px;line-height:1.6;color:var(--txt);margin-top:3px}
.dar-s{font-size:11.5px;color:var(--muted);line-height:1.6;margin-top:2px}
.da-amt{font-style:normal;font-size:11px;font-weight:700;color:var(--muted);margin-left:4px}
.deam-adv-bal{margin-top:8px;font-size:12px;line-height:1.6;color:#1d4ed8;background:rgba(59,130,246,.1);border:1px solid rgba(59,130,246,.3);border-radius:8px;padding:7px 10px}
.deam-adv-steps{margin-top:10px;background:rgba(255,255,255,.5);border-radius:8px;padding:8px 10px}
.das-h{font-size:12.5px;font-weight:800;color:var(--text);margin-bottom:5px}
.das-i{font-size:12px;line-height:1.65;color:var(--txt);margin:4px 0}
.das-i b{color:var(--text)}
/* 模型弹窗快照 */
.dm-snap{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}
.dms-i{flex:1 1 calc(33.3% - 8px);min-width:108px;background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:7px 10px;text-align:center}
.dms-i span{display:block;font-size:11px;color:var(--muted);margin-bottom:3px}
.dms-i b{font-size:15px;font-weight:800}
.dms-act.good{color:#16a34a}.dms-act.warn{color:#ea580c}.dms-act.mid{color:#2563eb}
/* 信号灯 pill */
.dl-pill{display:inline-block;font-size:11px;font-weight:800;padding:2px 9px;border-radius:999px;white-space:nowrap}
.dl-pill.good{background:rgba(34,197,94,.18);color:#16a34a}
.dl-pill.mid{background:rgba(59,130,246,.18);color:#2563eb}
.dl-pill.warn{background:rgba(249,115,22,.18);color:#ea580c}
.dl-pill.na{background:rgba(91,102,117,.2);color:#64748b}
/* 模型弹窗小节 */
.dm-sec{margin-bottom:14px}
.dm-sec h4{font-size:13.5px;font-weight:800;color:var(--text);margin:0 0 8px;padding-left:9px;border-left:3px solid var(--brand,#2563eb)}
.dm-formula{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin-bottom:10px;font-size:12.5px;line-height:1.9;color:var(--txt)}
.dm-formula code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--brand,#2563eb);font-weight:700}
.dm-sub{font-size:11px;color:var(--muted);line-height:1.5;margin-top:2px}
.dm-now{display:inline-block;font-size:10px;font-weight:800;color:#fff;background:#16a34a;padding:1px 7px;border-radius:999px;margin-left:6px;vertical-align:middle}
.dm-rules{margin:0;padding-left:20px;font-size:12.5px;line-height:1.8;color:var(--txt)}
.dm-rules li{margin:4px 0}
.dm-note{font-size:11.5px;color:var(--muted);line-height:1.6;margin-top:6px;background:var(--panel2);border-radius:6px;padding:7px 9px}
.dm-refresh{margin-left:8px}
/* 模型弹窗加宽 */
#deamModelModal .modal-box{max-width:720px;width:94%}
/* 报告 3.4 交割日操作注意 */
.deliv-note{margin-top:10px;padding:10px 12px;border-radius:8px;font-size:13px;line-height:1.7;color:#92400e;background:rgba(249,115,22,.12);border:1px solid rgba(249,115,22,.4)}
/* 显眼仓位动作横幅：加仓(绿)/减仓(蓝)/清仓(橙) */
.erp-action{display:flex;align-items:center;gap:10px;margin:10px 0 12px;padding:10px 14px;border-radius:10px;color:#fff;font-weight:800;box-shadow:0 2px 10px rgba(0,0,0,.14);overflow:hidden;position:relative}
.erp-action::before{content:"";position:absolute;left:-60px;top:0;width:60px;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.25),transparent);animation:erpSweep 2.8s ease-in-out infinite;pointer-events:none;z-index:1}
.erp-action.good{background:#22c55e}
.erp-action.mid{background:#3b82f6}
.erp-action.warn{background:#f97316}
.erp-action-arrow{font-size:20px;line-height:1;font-weight:900;position:relative;z-index:2}
.erp-action-word{font-size:22px;letter-spacing:3px;position:relative;z-index:2}
.erp-action-cond{margin-left:auto;font-size:12px;font-weight:600;opacity:.94;align-self:center;text-align:right;line-height:1.4;position:relative;z-index:2}
@media(max-width:520px){ .erp-action{margin:8px 0 10px;padding:9px 12px;gap:8px} .erp-action-word{font-size:19px;letter-spacing:2px} .erp-action-cond{font-size:11px} }
@keyframes erpSweep{0%{left:-60px}100%{left:calc(100% + 20px)}}
@media(prefers-reduced-motion:reduce){.erp-action::before{animation:none}}
/* 大盘 ERP 模块内嵌精简建议 */
.erp-adv{margin:8px 0 2px;padding:8px 12px;border-radius:8px;font-size:13px;font-weight:600;border:1px solid var(--line)}
.erp-adv.good{color:#15803d;background:rgba(34,197,94,.12);border-color:rgba(34,197,94,.4)}
.erp-adv.mid{color:#1d4ed8;background:rgba(59,130,246,.12);border-color:rgba(59,130,246,.4)}
.erp-adv.warn{color:#c2410c;background:rgba(249,115,22,.14);border-color:rgba(249,115,22,.4)}
@media(max-width:780px){ .grid2{grid-template-columns:1fr} }

/* ===== ERP 区间色谱图（大盘 tab ERP 模块内：<3%橙 / 3%~6%蓝 / >6%绿） ===== */
.erp-spectrum{margin:12px 0 6px}
.erp-spec-track{position:relative;height:26px;border-radius:8px;margin:0 0 2px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.06)}
.erp-spec-seg{position:absolute;top:0;bottom:0}
.erp-spec-seg.c-good{background:#22c55e}
.erp-spec-seg.c-mid{background:#3b82f6}
.erp-spec-seg.c-warn{background:#f97316}
.erp-spec-sep{position:absolute;top:0;bottom:0;width:2px;background:rgba(255,255,255,.9);z-index:3}
.erp-spec-pointer{position:absolute;top:-7px;transform:translateX(-50%);z-index:4;display:flex;flex-direction:column;align-items:center}
.erp-spec-bubble{font-size:11px;font-weight:800;padding:1px 7px;border-radius:10px;color:#fff;white-space:nowrap;background:#64748b;box-shadow:0 1px 4px rgba(0,0,0,.3)}
.erp-spec-bubble.c-good{background:#22c55e}
.erp-spec-bubble.c-mid{background:#3b82f6}
.erp-spec-bubble.c-warn{background:#f97316}
.erp-spec-caret{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid #64748b;margin-top:1px}
.erp-spec-caret.c-good{border-top-color:#22c55e}
.erp-spec-caret.c-mid{border-top-color:#3b82f6}
.erp-spec-caret.c-warn{border-top-color:#f97316}
.erp-spec-ticks{position:relative;height:16px;font-size:11px;color:var(--muted)}
.erp-spec-ticks span{position:absolute;transform:translateX(-50%);font-family:var(--mono,ui-monospace,Menlo,Consolas,monospace)}
.erp-spec-legends{margin-top:10px;display:flex;flex-direction:column;gap:6px}
.erp-spec-legend{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:8px;border:1px solid var(--line);background:var(--panel2);font-size:12.5px;line-height:1.5}
.erp-spec-legend.on{border-color:rgba(0,0,0,.18);box-shadow:0 0 0 2px rgba(0,0,0,.16);font-weight:700}
.erp-spec-dot{width:12px;height:12px;border-radius:3px;flex:none}
.erp-spec-dot.c-good{background:#22c55e}
.erp-spec-dot.c-mid{background:#3b82f6}
.erp-spec-dot.c-warn{background:#f97316}
.erp-spec-range{flex:none;font-weight:800;font-family:var(--mono,ui-monospace,Menlo,Consolas,monospace)}
.erp-spec-act{flex:none;font-weight:700}
.erp-spec-desc{color:var(--muted);margin-left:auto;text-align:right}
@media(max-width:520px){
  .erp-spec-legend{flex-wrap:wrap;gap:4px 8px}
  .erp-spec-desc{margin-left:0;flex:1 1 100%;text-align:left;font-size:11.5px}
}

/* ===== 大盘 tab 重排（v20260718ak） ===== */
/* ① 状态条：实时/快照 badge + 刷新时间 + 数据源 */
.rt-status{display:flex;align-items:center;flex-wrap:wrap;gap:8px 14px;margin:2px 0 14px;
  padding:9px 13px;background:var(--panel2);border:1px solid var(--line);border-radius:var(--r-sm);font-size:12.5px}
.rt-badge{font-weight:800;padding:2px 11px;border-radius:20px;font-size:12px;letter-spacing:.3px}
.rt-status.live .rt-badge{background:rgba(34,197,94,.16);color:#22c55e}
.rt-status.snap .rt-badge{background:rgba(255,138,61,.16);color:var(--warn)}
.rt-time{color:var(--txt);font-family:var(--mono,ui-monospace,Menlo,Consolas,monospace)}

/* ② KPI 三卡：风险等级卡语气色 + 单位 */
.kpi .unit{font-size:13px;color:var(--muted);font-weight:600}
.kpi-risk .v{font-size:21px}
.kpi-risk.tone-high{border-color:rgba(255,77,79,.5)}
.kpi-risk.tone-high .v{color:var(--up)}
.kpi-risk.tone-mid{border-color:rgba(255,138,61,.5)}
.kpi-risk.tone-mid .v{color:var(--warn)}
.kpi-risk.tone-low{border-color:rgba(34,197,94,.45)}
.kpi-risk.tone-low .v{color:#22c55e}
/* 今日风险等级卡可点击跳转风险预警（2026-07-27） */
.kpi-risk.today{cursor:pointer}
.kpi-risk.today:hover{filter:brightness(1.08)}

/* ③ 章节色条标题（蓝=数据，红=风险） */
.sec-title{display:flex;align-items:center;gap:9px;font-size:14.5px;font-weight:800;
  color:var(--txt);margin:0 0 12px;letter-spacing:.2px;text-align:left;justify-content:flex-start}
.sec-title::before{content:"";width:4px;height:15px;border-radius:3px;background:var(--brand);flex:0 0 auto}
.sec-title.sec-risk::before{background:var(--up)}

/* 全系统页面主标题统一色条（仿 sec-title） */
.panel > h2,.report-head h2,.mine-sub-head h2,.set-mod h3{display:flex;align-items:center;gap:9px}
.panel > h2::before,.report-head h2::before,.mine-sub-head h2::before,.set-mod h3::before{content:"";width:4px;height:16px;border-radius:3px;background:var(--brand);flex:0 0 auto}

/* ④ 数据表：数字列右对齐 + 等宽 */
.mkt-table th:first-child,.mkt-table td:first-child{text-align:left}
.mkt-table td:first-child{font-weight:600}
.mkt-table th:not(:first-child),.mkt-table td:not(:first-child){text-align:right}
.mkt-table td:not(:first-child){font-family:var(--mono,ui-monospace,Menlo,Consolas,monospace);letter-spacing:.2px}

/* ⑤ 并排区等高 */
.grid2-eq{align-items:stretch}
.grid2-eq>.block{margin-top:0;height:100%;display:flex;flex-direction:column}
.grid2-eq>.block .hint:last-child{margin-top:auto}

/* ⑥ 风险预警：统一 danger 卡片（语气色随等级） */
.risk-card{border-radius:10px;padding:12px 14px;font-size:13px;line-height:1.7;
  background:rgba(255,77,79,.07);border:1px solid rgba(255,77,79,.32)}
.risk-card .risk-hd{font-weight:800;color:var(--up);display:flex;align-items:center;gap:8px;margin-bottom:6px}
.risk-card .risk-dot{width:8px;height:8px;border-radius:50%;background:var(--up);box-shadow:0 0 0 3px rgba(255,77,79,.18);flex:0 0 auto}
.risk-card .risk-sub{font-weight:600;color:var(--muted);font-size:12px;margin-left:4px}
.risk-card b{font-family:var(--mono,ui-monospace,Menlo,Consolas,monospace)}
.risk-card.tone-mid{background:rgba(255,138,61,.08);border-color:rgba(255,138,61,.32)}
.risk-card.tone-mid .risk-hd{color:var(--warn)}
.risk-card.tone-mid .risk-dot{background:var(--warn);box-shadow:0 0 0 3px rgba(255,138,61,.18)}
.risk-card.tone-low{background:rgba(34,197,94,.07);border-color:rgba(34,197,94,.30)}
.risk-card.tone-low .risk-hd{color:#22c55e}
.risk-card.tone-low .risk-dot{background:#22c55e;box-shadow:0 0 0 3px rgba(34,197,94,.18)}
.risk-manual{margin-top:8px;padding-top:8px;border-top:1px dashed var(--border,#e5e7eb)}
.risk-manual > .hint{font-size:12px;color:var(--muted);margin-bottom:6px;line-height:1.5}
.risk-inputs{display:flex;flex-wrap:wrap;gap:10px}
.risk-inp{display:flex;flex-direction:column;font-size:12px;color:var(--muted);gap:4px;flex:1 1 150px}
.risk-inp input{width:100%;box-sizing:border-box;padding:7px 9px;border:1px solid var(--border,#e5e7eb);border-radius:8px;font-size:14px;background:var(--bg,#fff);color:var(--text,#111)}
.risk-body-sub{margin-top:8px;font-size:12.5px;line-height:1.6;color:var(--text,#111)}

/* ⑦ 风险预警滚动消息行（红色 + 跑马灯，点击跳锚点） */
.risk-ticker{display:flex;align-items:center;gap:9px;margin:4px 0 14px;padding:9px 13px;
  background:rgba(255,77,79,.07);border:1px solid rgba(255,77,79,.40);border-radius:10px;cursor:pointer;overflow:hidden}
.risk-ticker:hover{border-color:rgba(255,77,79,.7);background:rgba(255,77,79,.11)}
.risk-ticker .rt-dot{width:8px;height:8px;border-radius:50%;background:var(--up);flex:0 0 auto;animation:rtPulse 1.2s ease-in-out infinite}
.risk-ticker .rt-label{color:var(--up);font-weight:800;font-size:13px;white-space:nowrap;flex:0 0 auto;letter-spacing:.3px}
.risk-ticker .rt-track{position:relative;flex:1 1 auto;overflow:hidden;white-space:nowrap}
.risk-ticker .rt-text{display:inline-block;color:var(--up);font-size:13px;line-height:1.3;
  padding-left:100%;animation:rtMarq 20s linear infinite}
.risk-ticker:hover .rt-text{animation-play-state:paused}
@keyframes rtMarq{0%{transform:translateX(0)}100%{transform:translateX(-100%)}}
@keyframes rtPulse{0%,100%{opacity:1}50%{opacity:.3}}
@media (prefers-reduced-motion: reduce){ .risk-ticker .rt-text{animation:none;padding-left:0} .risk-ticker .rt-dot{animation:none} }

/* ===== 顶部全局风险预警滚动栏（2026-08-03 四十四期：仅大盘 risk.high，不关联喇叭） ===== */
.toprisk{order:2;flex:0 0 auto;display:flex;align-items:center;gap:10px;
  margin:0;padding:7px 14px;background:#fdecec;border-bottom:1px solid #f3c2c2;overflow:hidden;z-index:39}
.toprisk[hidden]{display:none}
.trisk-flag{display:inline-flex;align-items:center;gap:5px;flex:0 0 auto;
  font-size:12px;font-weight:700;color:#a33333;white-space:nowrap;
  background:#e24b4a;border-radius:12px;padding:3px 10px}
.trisk-ic{font-size:12px;line-height:1}
.trisk-track-wrap{position:relative;flex:1 1 auto;min-width:0;overflow:hidden;white-space:nowrap}
.trisk-track{display:inline-flex;align-items:center;gap:40px;white-space:nowrap;
  width:max-content;animation:topRiskScroll 22s linear infinite}
.toprisk:hover .trisk-track{animation-play-state:paused}
.trisk-item{font-size:12.5px;font-weight:600;color:#a33333;white-space:nowrap}
.trisk-item .trisk-sep{display:inline-block;width:5px;height:5px;border-radius:50%;background:#e9b4b4;margin-left:40px;vertical-align:middle}
@keyframes topRiskScroll{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}
@media (prefers-reduced-motion: reduce){ .trisk-track{animation:none} }
@media (max-width:640px){ .trisk-flag{font-size:11px;padding:2px 8px} .trisk-item{font-size:12px} }

/* ===== 市场趋势周期 + 板块操作预警（v20260718ak） ===== */
.mkt-sector{overflow-x:auto}
/* 行业表「今日/3日」口径切换时高亮当前统计列 */
.mkt-table td.hl-col, .mkt-table th.hl-col{ background: rgba(229,72,77,0.10); font-weight:700 }
/* 趋势图控制行 + 迷你日期输入 */
.seg-row{display:flex;align-items:center;gap:10px;margin:2px 0 6px;flex-wrap:wrap}
.mini-input{appearance:none;border:1px solid var(--line,#eee);background:var(--panel2,#f6f7f9);color:var(--txt);font-size:11px;border-radius:6px;padding:2px 6px;font-family:inherit}
.mkt-cycle{margin:4px 0 2px}
.mc-head{display:flex;align-items:center;justify-content:space-between;font-size:13px;font-weight:600;color:var(--txt);margin-bottom:10px}
.mc-phase{font-size:12px;padding:3px 11px;border-radius:20px;color:#fff;font-weight:700}
.mc-bar{display:flex;gap:6px}
.mc-seg{flex:1;text-align:center;padding:12px 4px;border-radius:9px;font-size:13px;font-weight:600;
  background:var(--panel2);color:var(--muted);border:1px solid transparent;transition:.2s}
.mc-seg.on{background:var(--c);color:#fff;border-color:var(--c);box-shadow:0 2px 8px rgba(0,0,0,.14)}
.mc-score{font-size:12px;color:var(--muted);margin:11px 0 8px}
.mc-score b{font-size:17px;color:var(--txt);font-family:var(--mono,ui-monospace,Menlo,Consolas,monospace);margin-right:2px}
.mc-sub{margin-left:6px}
.mc-factors{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}
.mc-f{display:flex;align-items:center;gap:6px;font-size:12px;padding:6px 8px;background:var(--panel2);border-radius:8px}
.mc-fn{color:var(--muted)}
.mc-fv{margin-left:auto;color:var(--txt);font-family:var(--mono,ui-monospace,Menlo,Consolas,monospace);font-size:11.5px}
.mc-fd{font-size:11px;font-weight:700}
.mc-fd.up{color:var(--up)}
.mc-fd.down{color:#22c55e}
.mc-fd.flat{color:var(--muted)}
.mc-legend{font-size:12px;color:var(--txt);margin-top:9px;padding:8px 10px;background:var(--panel2);border-radius:8px;line-height:1.5}
.sec-warn{display:inline-block;padding:2px 9px;border-radius:6px;font-size:12px;font-weight:700;white-space:nowrap}
.sec-warn.good{background:rgba(99,153,34,.16);color:#3B6D11}
.sec-warn.info{background:rgba(55,138,221,.16);color:#185FA5}
.sec-warn.warn{background:rgba(186,117,23,.16);color:#854F0B}
.sec-warn.danger{background:rgba(226,75,74,.16);color:#A32D2D}
.sec-remark{color:var(--muted);font-size:12px;line-height:1.4}
.pos-table.mkt-table td,.pos-table.mkt-table th{font-size:12px;padding:7px 6px}
@keyframes mcSegIn{from{opacity:.4}to{opacity:1}}
.mc-seg.on{animation:mcSegIn .25s ease}
@media(max-width:560px){
  .mc-factors{grid-template-columns:repeat(2,1fr)}
  .mc-fv{font-size:11px}
}

/* ===== 需求二：持仓 tab 顶部汇总框（v20260718ak） ===== */
.pos-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:10px 0 6px}
#prinInputs{display:contents}
.pos-box{display:flex;flex-direction:column;gap:5px;padding:10px 12px;background:var(--panel2);border:1px solid var(--border,transparent);border-radius:10px}
.pos-box-label{font-size:12px;color:var(--muted);font-weight:600}
.pos-box-input{width:100%;box-sizing:border-box;padding:7px 9px;font-size:14px;border-radius:8px;border:1px solid var(--border,transparent);background:var(--surface,#fff);color:var(--txt);font-family:var(--mono,ui-monospace,Menlo,Consolas,monospace)}
.pos-box-val{font-size:17px;font-weight:800;color:var(--txt);font-family:var(--mono,ui-monospace,Menlo,Consolas,monospace);padding:7px 0;word-break:break-all}
/* 总盈亏颜色：>0红 =0黑 <0绿（涨红跌绿），覆盖 .pos-box-val 默认色 */
#sumProfitLoss.up{color:var(--up)!important} #sumProfitLoss.down{color:var(--down)!important} #sumProfitLoss.flat{color:var(--txt)!important}
#sumDayPnl.up{color:var(--up)!important} #sumDayPnl.down{color:var(--down)!important} #sumDayPnl.flat{color:var(--txt)!important}
.pos-box-sub{font-size:12px;line-height:1.35;margin-top:1px;color:var(--muted);font-family:var(--mono,ui-monospace,Menlo,Consolas,monospace);font-variant-numeric:tabular-nums}
.pos-box-sub.up{color:var(--up)!important}
.pos-box-sub.down{color:var(--down)!important}
.pos-box-sub.flat{color:var(--muted)!important}
@media(max-width:560px){ .pos-summary{grid-template-columns:repeat(2,1fr)} }

/* ===== 需求三：ERP 数值按区间着色（v20260718ak） >6%绿 / 3~6%蓝 / <3%橙 ===== */
.erp-val.good{color:#22c55e}
.erp-val.mid{color:#3b82f6}
.erp-val.warn{color:#f97316}

/* ===== 需求四：风险卡边框高亮预警（v20260719bh） 今日仅「偏高」红闪 / 明日不高亮 ===== */
.kpi.risk-alert.today.tone-high{border:2px solid #ef4444;border-radius:12px;animation:riskBlink 1.2s ease-in-out infinite}
@keyframes riskBlink{0%,100%{border-color:rgba(239,68,68,.35);box-shadow:0 0 0 rgba(239,68,68,0)}50%{border-color:#ef4444;box-shadow:0 0 14px rgba(239,68,68,.55)}}
@media (prefers-reduced-motion: reduce){ .kpi.risk-alert.today.tone-high{animation:none;border-color:#ef4444;box-shadow:0 0 10px rgba(239,68,68,.45)} }


/* ===================== 启动页（Splash Screen · 设计稿还原） ===================== */
#splashScreen{position:fixed;inset:0;z-index:999999;display:flex;flex-direction:column;align-items:center;justify-content:center;
  background:linear-gradient(165deg,#ffffff 0%,#fff7f2 40%,#ffede3 72%,#ffe0d0 100%);
  font-family:inherit;color:#4a1818;overflow:hidden}
/* 装饰背景层：红点 + 斜线 + K线 */
.sp-deco{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.sp-dot{position:absolute;width:6px;height:6px;border-radius:50%;background:#E5484D}
.sp-dot-lg{width:10px;height:10px}
.sp-line{position:absolute;background:linear-gradient(180deg,rgba(229,72,77,.18),rgba(229,72,77,.04))}
.sp-line-1{width:1px;height:120px;top:8%;right:18%;transform:rotate(-30deg);transform-origin:top center}
.sp-line-2{width:1px;height:80px;top:24%;right:9%;transform:rotate(-50deg);transform-origin:top center}
.sp-line-3{width:1px;height:90px;bottom:22%;left:6%;transform:rotate(-35deg);transform-origin:bottom center}
/* K线装饰（右下 / 左下）*/
.sp-kline{position:absolute;bottom:8%;width:140px;height:70px;opacity:.25}
.sp-kline-br{right:5%}
.sp-kline-bl{left:3%;transform:scaleX(-1)}
.sp-kline::before{content:'';position:absolute;inset:0;
  background:
    linear-gradient(135deg,transparent 48%,rgba(200,60,65,.5) 49%,rgba(200,60,65,.5) 51%,transparent 52%) 0 0/100% 100%,
    repeating-linear-gradient(160deg,transparent,transparent 12px,rgba(180,55,60,.35) 13px,rgba(180,55,60,.35) 14px)}

/* 主体 */
.sp-body{z-index:2;display:flex;flex-direction:column;align-items:center;padding:0 24px}
/* 橙红渐变复字图标 */
.sp-icon{width:106px;height:106px;display:flex;align-items:center;justify-content:center;
  border-radius:24px;font-size:54px;font-weight:900;line-height:1;color:#fff;
  background:linear-gradient(145deg,#FF9F5A,#E84C3D);
  box-shadow:0 16px 44px rgba(232,76,61,.32),0 0 0 6px rgba(232,76,61,.1),
    inset 0 2px 0 rgba(255,255,255,.28),inset 0 -3px 0 rgba(180,30,30,.18);
  animation:spIconPulse 2.4s ease-in-out infinite}
@keyframes spIconPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.03)}}

.sp-title{font-size:32px;font-weight:900;color:#6b1515;letter-spacing:4px;margin:22px 0 10px;text-align:center}
.sp-sub{font-size:15px;color:#a06a5e;margin:0;text-align:center;letter-spacing:1.2px}

/* 底部提示 */
.sp-foot{position:absolute;bottom:28px;font-size:12.5px;color:#c08878;letter-spacing:.5px;text-align:center;width:100%;padding:0 20px;z-index:2}

/* 淡出动画 */
#splashScreen.sp-hiding{animation:spFadeOut .6s ease forwards;pointer-events:none}
@keyframes spFadeOut{from{opacity:1}to{opacity:0;visibility:hidden}}

@media (prefers-reduced-motion: reduce){ .sp-icon,#splashScreen.sp-hiding{animation:none} }


/* ===================== 登录页 V3（设计稿：白底卡片式） ===================== */
body.login-locked{overflow:hidden;height:100vh}

/* 登录页容器 */
#loginScreen{position:fixed;inset:0;z-index:99999;display:flex;flex-direction:column;align-items:center;justify-content:center;
  background:linear-gradient(170deg,#fff 0%,#fff8f2 40%,#ffede3 100%);
  font-family:inherit;color:#4a1818;overflow:hidden}

/* ====== 装饰背景层（红点 + 斜线 + K线） ====== */
.ls-deco{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:1}
.ls-dot{position:absolute;border-radius:50%;background:#E5484D}
.ls-dot-lg{width:12px;height:12px}
.ls-dot:not(.ls-dot-lg){width:7px;height:7px}
.ls-deco-line{position:absolute;background:rgba(229,72,77,.15);transform-origin:center}
.ls-dl-1{width:120px;height:1px;top:18%;right:-20px;transform:rotate(-35deg)}
.ls-dl-2{width:80px;height:1px;top:62%;right:6%;transform:rotate(25deg)}
.ls-dl-3{width:60px;height:1px;bottom:24%;left:8%;transform:rotate(-15deg)}
.ls-deco-kline{position:absolute;width:70px;height:45px;opacity:.22;
  background:
    repeating-linear-gradient(0deg,transparent,transparent 5px,rgba(229,72,77,.35) 5px,rgba(229,72,77,.35) 6px),
    repeating-linear-gradient(90deg,transparent,transparent 5px,rgba(229,72,77,.35) 5px,rgba(229,72,77,.35) 6px);
  border-radius:4px}
.ls-dk-br{bottom:14%;right:6%;border-radius:0 0 8px 0;transform:skewX(-8deg)}
.ls-dk-bl{bottom:32%;left:4%;border-radius:0 0 0 8px;transform:skewX(8deg)}

/* ====== 卡片容器 ====== */
.ls-card-v3{position:relative;z-index:3;width:320px;max-width:88vw;padding:36px 28px 28px;
  background:#fff;border-radius:22px;box-shadow:
    0 20px 55px rgba(180,40,30,.12),
    0 0 0 1px rgba(200,80,60,.06),
    inset 0 1px 0 rgba(255,255,255,.9);
  text-align:center;margin-top:0}

/* 复字图标 */
.ls-icon-v3{display:inline-flex;align-items:center;justify-content:center;width:84px;height:84px;
  border-radius:22px;font-size:44px;font-weight:900;line-height:1;color:#fff;
  background:linear-gradient(145deg,#FF9F5A,#E84C3D);
  box-shadow:0 12px 30px rgba(232,76,61,.35),0 0 0 5px rgba(232,76,61,.1),
    inset 0 2px 0 rgba(255,255,255,.28),inset 0 -3px 0 rgba(180,30,30,.18);
  animation:lsV3iconPulse 2.8s ease-in-out infinite;
  margin-bottom:18px}
@keyframes lsV3iconPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.04)}}

/* 标题 & 副标 */
.ls-title-v3{font-size:26px;font-weight:900;color:#3a0c0c;letter-spacing:3px;margin:0 0 8px;text-align:center}
.ls-sub-v3{font-size:13.5px;color:#a05548;margin:0 0 16px;text-align:center;letter-spacing:.8px}

/* 标语 */
.ls-tag-v3{display:flex;gap:8px;justify-content:center;margin-bottom:22px}
.ls-tag-v3 span{font-size:13px;padding:5px 14px;border-radius:20px;
  background:rgba(229,72,77,.06);color:#b83a2e;font-weight:600;border:1px solid rgba(229,72,77,.12)}

/* 表单组 */
.ls-form-group{text-align:left;margin-bottom:14px}
.ls-label{display:block;font-size:14px;font-weight:600;color:#5a2020;margin-bottom:8px;letter-spacing:.5px}
.ls-form-group input{width:100%;padding:12px 14px;border-radius:11px;
  border:1.5px solid #e8d8d0;background:#faf8f5;color:#3a1414;font-size:15px;
  outline:none;letter-spacing:1px;transition:border-color .2s,box-shadow .2s;
  box-sizing:border-box}
.ls-form-group input:focus{border-color:#E84C3D;box-shadow:0 0 0 3px rgba(232,76,61,.1)}
.ls-form-group input::placeholder{color:#c0aaa0}
.ls-pass-wrap{position:relative;display:flex;align-items:center}
.ls-pass-wrap input{padding-right:44px}
.ls-eye{position:absolute;right:10px;top:50%;transform:translateY(-50%);
  background:none;border:none;cursor:pointer;font-size:18px;line-height:1;padding:0;
  color:#b83a2e;opacity:.65;transition:opacity .15s}
.ls-eye:hover{opacity:1}
.ls-captcha{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box}
.ls-captcha-img{width:120px;height:40px;flex:0 0 auto;border:1.5px solid #e8d8d0;border-radius:10px;
  overflow:hidden;background:#F3F4F6;cursor:pointer;display:inline-block}
.ls-captcha-img svg{display:block;width:120px;height:40px}
.ls-captcha input{flex:1 1 0;min-width:0;width:auto;padding:12px 10px;box-sizing:border-box}
.ls-captcha input::placeholder{font-size:13px;letter-spacing:0}
.ls-captcha-refresh{display:inline-block;margin-top:6px;font-size:12px;color:#b83a2e;
  border:none;background:none;padding:0;cursor:pointer;opacity:.8;font-family:inherit}
.ls-captcha-refresh:hover{opacity:1;text-decoration:underline}

/* 登录按钮（橙红渐变） */
.ls-btn-v3{width:100%;margin-top:6px;padding:13px;border:none;border-radius:12px;
  cursor:pointer;font-size:17px;font-weight:800;letter-spacing:8px;
  background:linear-gradient(135deg,#FF9F5A 0%,#F06A3D 50%,#E84C3D 100%);
  color:#fff;box-shadow:0 8px 24px rgba(232,76,61,.35),inset 0 1px 0 rgba(255,255,255,.2);
  transition:transform .15s,box-shadow .15s}
.ls-btn-v3:hover{transform:translateY(-1px);box-shadow:0 12px 30px rgba(232,76,61,.42)}
.ls-btn-v3:active{transform:translateY(0);box-shadow:0 4px 14px rgba(232,76,61,.3)}

/* 错误提示 */
.ls-err{margin-top:12px;min-height:16px;font-size:12.5px;color:#E84C3D;text-align:center;font-weight:600}

/* 底部链接（注册 / 忘记密码） */
.ls-links{display:none}
.ls-link{font-size:13.5px;color:#999;text-decoration:none;transition:color .15s;font-weight:500}
.ls-link:hover{color:#E84C3D}

/* 底部风险提示 */
.ls-risk-v3{margin-top:16px;text-align:center;font-size:12px;
  color:#b89a92;letter-spacing:.5px}
/* 底部备案号（点击跳转工信部备案系统，合规要求） */
.ls-beian-v3{position:absolute;bottom:14px;width:100%;text-align:center;font-size:clamp(10px,3.2vw,13px);
  color:#b09a92;letter-spacing:.5px;z-index:3;text-decoration:none;transition:color .15s}
.ls-beian-v3:hover{color:#E84C3D}

/* 登录页隐私声明入口（跟随页面缩放） */
.ls-privacy{margin-top:14px;text-align:center;font-size:clamp(11px,3.4vw,13px);color:#a05548;letter-spacing:.3px;line-height:1.6}
.ls-privacy-tip{margin-right:2px}
.ls-privacy-link{color:var(--brand,#E5484D);text-decoration:underline;cursor:pointer;font-weight:600}
.ls-privacy-link:hover{opacity:.8}
/* 隐私声明弹窗（内容跟随页面缩放） */
.privacy-box{max-width:560px;width:94%}
.privacy-body{font-size:clamp(12px,3.6vw,14px);line-height:1.85;color:var(--txt);padding:18px 20px}
.privacy-body h4{margin:16px 0 6px;font-size:clamp(13px,3.8vw,15px);color:var(--brand,#E5484D);font-weight:800}
.privacy-body h4:first-of-type{margin-top:2px}
.privacy-meta{color:var(--muted);font-size:12px;margin:0 0 8px}
.privacy-body p{margin:0 0 8px}
.privacy-body ul{margin:0 0 8px;padding-left:20px}
.privacy-body li{margin:4px 0;line-height:1.7}
.privacy-body b{color:var(--txt);font-weight:700}
.tag-ok{display:inline-block;padding:2px 8px;border-radius:10px;background:rgba(4,120,87,.14);color:#047857;font-size:12px;white-space:nowrap}
.tag-muted{display:inline-block;padding:2px 8px;border-radius:10px;background:rgba(120,120,120,.14);color:#888;font-size:12px;white-space:nowrap}

/* ===================== 「我的」页面 ===================== */
.mine-page{max-width:520px;margin:0 auto;padding:10px 0 30px}
/* 顶部小 Logo */
.mine-logo-wrap{text-align:center;margin-bottom:4px}
.mine-logo{display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:16px;
  font-size:28px;font-weight:900;color:#fff;
  background:linear-gradient(145deg,#ff6b5b,#e23a2f);
  box-shadow:0 8px 24px rgba(229,72,77,.3),inset 0 2px 0 rgba(255,255,255,.25)}
/* 个人信息 */
.mine-profile{display:flex;align-items:center;gap:14px;padding:18px 20px 22px}
.mine-avatar{flex-shrink:0;width:56px;height:56px;border-radius:16px;overflow:hidden;background:linear-gradient(135deg,var(--brand),color-mix(in srgb,var(--brand) 55%,#7CB0FF));display:flex;align-items:center;justify-content:center;color:#fff;font-size:24px;font-weight:800}
.mine-info{flex:1;min-width:0}
.mine-name{font-size:19px;font-weight:800;color:var(--text)}
.mine-desc{font-size:13px;color:var(--muted);margin-top:2px}
/* 统计卡片 */
.mine-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:0 10px;margin-bottom:18px}
.mine-stat-card{background:var(--panel2,#ffffff);border:1px solid var(--line,#eee);border-radius:12px;
  padding:14px 8px;text-align:center;box-shadow:0 2px 8px rgba(0,0,0,.04)}
.mine-stat-label{font-size:12px;color:var(--muted);margin-bottom:6px;font-weight:600}
.mine-stat-val{font-size:24px;font-weight:900;color:#E5484D;line-height:1.2}
.mine-stat-val small{font-size:13px;font-weight:700;color:var(--muted);margin-left:1px}
/* 功能菜单 */
/* 我的页系统工具箱（2×4 横向网格 · 2026-07-25） */
.mine-sys{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:0 10px;margin:0 0 16px}
.mine-sys .tool{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  padding:14px 6px;background:var(--panel2,#ffffff);border:1px solid var(--line,#eee);
  border-radius:12px;cursor:pointer;color:var(--text);font-size:12px;font-weight:600;
  transition:all .15s;-webkit-tap-highlight-color:transparent;width:auto}
.mine-sys .tool .ic{font-size:22px;line-height:1}
.mine-sys .tool:hover{background:rgba(229,72,77,.04);border-color:rgba(229,72,77,.25)}
.mine-sys .tool:active{background:rgba(229,72,77,.08);transform:scale(.97)}
[data-theme="dark"] .mine-sys .tool{background:var(--panel2,#1e1e2e);border-color:var(--line,#333)}
[data-theme="dark"] .mine-sys .tool:hover{background:rgba(229,72,77,.12)}
@media(max-width:380px){ .mine-sys{grid-template-columns:repeat(4,1fr);gap:6px} .mine-sys .tool{padding:12px 4px;font-size:11px} .mine-sys .tool .ic{font-size:20px} }
.mine-menu{background:var(--panel2,#ffffff);border:1px solid var(--line,#eee);border-radius:14px;
  overflow:hidden;box-shadow:0 2px 10px rgba(0,0,0,.04)}
.mine-item{display:flex;align-items:center;gap:12px;padding:15px 18px;text-decoration:none;color:var(--text);
  border-bottom:1px solid var(--line,#f5f5f5);transition:background .15s;font-size:15px;font-weight:600}
.mine-item:last-child{border-bottom:none}
.mine-item:hover{background:rgba(229,72,77,.04)}
.mine-item:active{background:rgba(229,72,77,.08)}
.mine-item .mi-ic{flex:0 0 auto;width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:var(--brand-tint);color:var(--brand);font-size:14px;font-weight:800;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--brand) 18%,transparent)}
.mine-item .mi-tx{flex:1;min-width:0;font-size:15px;font-weight:600;color:var(--txt)}
.mine-item-icon{font-size:18px;width:26px;text-align:center;flex-shrink:0}
.mine-arrow{margin-left:auto;color:var(--muted);font-size:20px;font-weight:400}

/* 桌面端适配 */
@media(min-width:781px){ .mine-stats{grid-template-columns:repeat(3,1fr)} }
@media(max-width:420px){ .mine-stats{gap:6px;padding:0 4px} .mine-stat-card{padding:10px 4px} .mine-stat-val{font-size:20px} }
.risk-list{display:flex;flex-direction:column;gap:10px;margin-top:6px}
.risk-row{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--panel);border:1px solid var(--line);border-radius:12px}
.risk-row.ack{opacity:.55}
.risk-ic{flex:0 0 auto;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;font-size:16px;font-weight:800;color:#fff}
.risk-ic.up{background:var(--up)} .risk-ic.down{background:var(--down)} .risk-ic.flat{background:var(--muted)}
.risk-main{flex:1;min-width:0}
.risk-t1{font-size:14px;font-weight:700;color:var(--txt)}
.risk-t2{font-size:12px;color:var(--muted);margin-top:3px}
.risk-ack{flex:0 0 auto;border:1px solid var(--line);background:var(--panel2);color:var(--txt);font-size:12px;font-weight:700;padding:6px 12px;border-radius:20px;cursor:pointer}
.risk-row.ack .risk-ack{color:var(--muted)}
@media(min-width:600px){ .pos-quick-a .pq-sub-row{flex-wrap:wrap} .pos-quick-a .pq-sub{min-width:130px} }

/* 我的 · 页内子视图（策略仓库 / 复盘报告） */
.mine-home[hidden]{display:none}
.mine-subview{display:block}
.mine-subview[hidden]{display:none}
.mine-sub-head{display:flex;align-items:center;gap:12px;margin:4px 2px 16px}
.mine-sub-head h2{font-size:18px;font-weight:800;color:var(--text);margin:0}
.mine-back{background:var(--surface);border:1px solid rgba(229,72,77,.45);color:#E5484D;border-radius:9px;
  padding:7px 14px;font-size:13px;font-weight:700;cursor:pointer;transition:background .15s}
.mine-back:hover{background:rgba(229,72,77,.07)}
.mine-sub-body{padding-top:2px}

/* ===================== 收益统计 ===================== */
/* ① HERO 头部卡 */
.profit-hero{background:linear-gradient(135deg,#fff,#fbfcff);border:1px solid var(--line,#eee);border-radius:16px;padding:18px 16px;margin-bottom:14px;box-shadow:0 2px 10px rgba(0,0,0,.04)}
.profit-hero-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.profit-hero-label{font-size:12px;color:var(--muted,#999);font-weight:600;margin-bottom:4px}
.profit-hero-total{font-size:28px;font-weight:900;color:var(--text);line-height:1.2;word-break:break-all}
.profit-hero-sub{display:flex;gap:14px;margin-top:14px;padding-top:12px;border-top:1px dashed var(--line,#eee)}
.profit-hero-sub-item{flex:1;display:flex;flex-direction:column;gap:3px}
.profit-hero-sub-label{font-size:11px;color:var(--muted,#999)}
.profit-hero-sub-val{font-size:15px;font-weight:800;color:var(--text)}
.profit-hero-sub-val.up{color:#E5484D}
.profit-hero-sub-val.down{color:#22C55E}
.profit-hero-sub-val.flat{color:#888}

/* 盈亏状态 pill（沿用旧样式，保留闪烁） */
.profit-status-tag{display:inline-block;padding:6px 16px;border-radius:18px;font-size:13px;font-weight:800;letter-spacing:1px;white-space:nowrap;flex:0 0 auto}
.ps-up{background:rgba(229,72,77,.1);color:#E5484D;border:1.5px solid rgba(229,72,77,.3)}
.ps-flat{background:rgba(136,136,136,.08);color:#888;border:1.5px solid rgba(136,136,136,.2)}
.ps-down{background:rgba(34,197,94,.1);color:#22C55E;border:1.5px solid rgba(34,197,94,.3)}
.ps-severe{background:rgba(229,72,77,.12);color:#E5484D;border:1.5px solid rgba(229,72,77,.4)}
@keyframes psBlink{0%,100%{opacity:1}50%{opacity:.35}}
.ps-severe{animation:psBlink 1s ease-in-out infinite}

/* ② 三连收益率卡 */
.profit-tricards{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}
.ptri-card{background:var(--panel2,#ffffff);border:1px solid var(--line,#eee);border-radius:12px;padding:12px 8px;text-align:center;cursor:pointer;user-select:none;transition:all .15s}
.ptri-card:hover{border-color:var(--brand,var(--accent))}
.ptri-card.active{background:var(--brand,#E5484D);border-color:var(--brand,#E5484D)}
.ptri-card-label{font-size:12px;color:var(--muted,#999);font-weight:600;margin-bottom:6px}
.ptri-card.active .ptri-card-label{color:rgba(255,255,255,.9)}
.ptri-card-val{font-size:19px;font-weight:900;color:var(--text);line-height:1.2;word-break:break-all}
.ptri-card-val.up{color:#E5484D}
.ptri-card-val.down{color:#22C55E}
.ptri-card-val.flat{color:#888}
.ptri-card.active .ptri-card-val.up,
.ptri-card.active .ptri-card-val.down,
.ptri-card.active .ptri-card-val.flat{color:#fff}

/* ③ / ④ 图表容器 */
.profit-chart-wrap{background:var(--panel2,#ffffff);border:1px solid var(--line,#eee);border-radius:12px;padding:12px 10px;margin-bottom:14px}
.profit-chart-title{font-size:13px;font-weight:700;color:var(--txt);margin-bottom:8px;padding-left:2px}
.profit-chart-canvas-box{position:relative;height:240px}
.profit-chart-wrap canvas{width:100%!important;height:100%!important}

/* 收益统计维护面板 */
.profit-admin{margin-top:14px}
.profit-admin .mod-head{cursor:pointer;user-select:none}
.pa-head-note{font-size:11px;font-weight:600;color:var(--muted,#999);margin-left:8px}
.pa-live{background:var(--panel,#fafbfc);border:1px solid var(--line,#eee);border-radius:10px;padding:10px 12px;margin-bottom:12px;display:flex;flex-direction:column;gap:4px}
.pa-live-item{font-size:13px;color:var(--txt)}
.pa-live-item b.up{color:#E5484D}
.pa-live-item b.down{color:#22C55E}
.pa-live-note{font-size:11px;color:var(--muted,#999);margin-top:2px}
.pa-sec{margin-bottom:12px}
.pa-sec-title{font-size:12px;font-weight:700;color:var(--muted,#999);margin-bottom:6px}
.pa-list{display:flex;flex-direction:column;gap:6px}
.pa-row{display:flex;align-items:center;gap:6px;background:var(--panel2,#fff);border:1px solid var(--line,#eee);border-radius:8px;padding:6px 8px}
.pa-type{font-size:12px;font-weight:700;color:var(--brand,#E5484D);min-width:18px}
.pa-input{border:1px solid var(--line,#ddd);border-radius:6px;padding:5px 7px;font-size:13px;background:var(--panel,#fff);color:var(--txt)}
.pa-period{width:84px;text-align:center;color:var(--muted,#666)}
.pa-val{width:84px;text-align:right}
.pa-unit{font-size:12px;color:var(--muted,#999)}
.pa-btn{border:none;border-radius:6px;padding:5px 10px;font-size:12px;font-weight:700;cursor:pointer;color:#fff;background:var(--brand,#E5484D)}
.pa-btn.pa-del{background:#94a3b8}
.pa-btn.pa-add-btn{background:#2563EB}
.pa-add{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}
.pa-empty{font-size:12px;color:var(--muted,#999);padding:6px 2px}
.pa-add #paAddPeriod{flex:1;min-width:90px}
.pa-add #paAddVal{width:90px}

@media(max-width:420px){
  .profit-hero-total{font-size:24px}
  .ptri-card-val{font-size:16px}
  .profit-chart-canvas-box{height:210px}
}

/* ===================== 持仓页 · 四模块归类布局 ===================== */
.pos-quick{position:sticky;top:0;z-index:5;margin:2px 0 4px}
.pos-quick-a{display:flex;flex-direction:column;gap:10px}
/* 持仓页底部：整页快照存库（左下角，跨日不清） */
.pos-page-footer{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:18px;padding-top:14px;border-top:1px dashed var(--border,#2a2f3a)}
.pos-page-footer .btn{margin:0}
/* 持仓页标题行：主标题 + ERP 滚动公告 */
.pos-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:6px 0 10px}
.pos-title-row h2{margin:0}
.pos-ticker-wrap{display:flex;align-items:center;height:38px;flex:0 1 auto;min-width:0;max-width:min(46vw,380px);overflow:hidden;border-radius:19px;background:var(--panel2);border:1px solid var(--line);padding:0 12px;position:relative}
.pos-ticker{display:flex;align-items:center;gap:18px;white-space:nowrap;animation:posTickerScroll 16s linear infinite;width:max-content}
.pos-ticker:hover{animation-play-state:paused}
.pos-ticker-item{font-size:12.5px;font-weight:700}
.pos-ticker-dot{width:5px;height:5px;border-radius:50%;flex:none;opacity:.8}
.pos-ticker-gap{width:28px;flex:none}
@keyframes posTickerScroll{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.pos-ticker{animation:none}}
@media(max-width:640px){.pos-title-row{flex-direction:column;align-items:flex-start}.top-actions .pos-ticker-wrap{max-width:40vw}}
/* 持仓页 ERP 仓位提醒折叠面板 */
.mod-erp .erp-card{margin-top:0}
.pq-hero{position:relative;overflow:hidden;border-radius:14px;padding:14px 16px;background:linear-gradient(120deg,var(--brand),color-mix(in srgb,var(--brand) 55%,#7CB0FF));box-shadow:0 6px 18px color-mix(in srgb,var(--brand) 26%,transparent)}
.pq-hero-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.pq-h-label{font-size:12px;color:rgba(255,255,255,.85);font-weight:600}
.pq-h-tag{font-size:12px;font-weight:800;padding:3px 10px;border-radius:20px;background:rgba(255,255,255,.18);color:#fff;white-space:nowrap}
.pq-h-tag.up{background:color-mix(in srgb,var(--up) 88%,#fff);color:#fff}
.pq-h-tag.down{background:color-mix(in srgb,var(--down) 88%,#fff);color:#fff}
.pq-h-val{display:block;margin-top:5px;font-size:26px;font-weight:800;color:#fff;font-family:var(--mono,ui-monospace,Menlo,Consolas,monospace);letter-spacing:.5px}
.pq-h-yield{display:inline-block;margin-top:8px;font-size:12px;color:rgba(255,255,255,.9);font-weight:600}
.pq-sub-row{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}
.pq-sub-row::-webkit-scrollbar{display:none}
.pq-sub{flex:1 1 0;min-width:80px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:9px 10px;position:relative;overflow:hidden}
.pq-sub::before{content:"";position:absolute;left:0;top:11px;bottom:11px;width:3px;border-radius:3px;background:var(--brand)}
.pq-sub-label{font-size:11px;color:var(--muted);font-weight:600;white-space:nowrap}
.pq-sub-val{display:block;margin-top:3px;font-size:15px;font-weight:800;font-family:var(--mono,ui-monospace,Menlo,Consolas,monospace);color:var(--txt);white-space:nowrap}
.mod{margin-top:18px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r,12px);padding:14px 16px}
.mod-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px;cursor:pointer;user-select:none}
.mod-head h3{flex:1;min-width:0;margin:0;font-size:15px;font-weight:800;color:var(--txt);display:flex;align-items:center;gap:9px}
.mod-head .chev{margin-left:auto;width:7px;height:7px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg);transition:transform .15s;flex:0 0 auto}
.mod-head .spacer{flex:1 1 auto}
.mod.collapsed .mod-head .chev{transform:rotate(-45deg)}
.mod.collapsed>.mod-body{display:none}
.mod-body{margin-top:12px}
.mod-head h3{margin:0;font-size:15px;font-weight:800;color:var(--txt);display:flex;align-items:center;gap:9px}
.mod-head h3::before{content:"";width:4px;height:16px;border-radius:3px;background:var(--brand);flex:0 0 auto}
#annBlock h3{display:flex;align-items:center;gap:9px}
#annBlock h3::before{content:"";width:4px;height:16px;border-radius:3px;background:var(--brand);flex:0 0 auto}
/* 公告模块标题已上移到 .mod-head，隐藏原 block 内 h3 避免重复 */
.mod-ann .block>h3{display:none}
.pos-cat-filter{display:flex;flex-wrap:wrap;gap:6px;margin-left:auto}
/* 资产概览年度筛选 */
.pos-summary-filter{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 12px}
.pos-summary-filter .pcf-chip{font-size:12px;padding:4px 11px;border-radius:16px}
.pos-box.ov-live .pos-box-label::after{content:" · 实时";color:var(--muted);font-size:11px;font-weight:400}
.pcf-chip{font-size:12px;padding:4px 11px;border-radius:16px;background:var(--panel2);border:1px solid var(--line);color:var(--muted);cursor:pointer;user-select:none;transition:all .15s}
.pcf-chip:hover{color:var(--txt)}
.pcf-chip.sel{background:var(--brand,var(--accent));border-color:var(--brand,var(--accent));color:#fff}
.pos-groups{display:flex;flex-direction:column;gap:12px}
.pos-group{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--panel2)}
.pos-group-head{display:flex;align-items:center;gap:10px;padding:10px 12px;cursor:pointer;background:linear-gradient(90deg,var(--panel),var(--panel2));border-bottom:1px solid var(--line);user-select:none}
.pos-group-head:hover{filter:brightness(1.04)}
.pg-cat{font-weight:800;font-size:14px;color:var(--txt);min-width:64px}
.pg-meta{font-size:12px;color:var(--muted);flex:1;line-height:1.5}
.pg-meta b{color:var(--txt)}
.pg-toggle{color:var(--muted);font-size:13px;transition:transform .2s}
.pos-group.collapsed .pg-toggle{transform:rotate(-90deg)}
.pos-group.collapsed .pos-group-body{display:none}
.pos-group-body{overflow-x:auto}
.pos-group-body .pos-table{min-width:760px;margin:0}
.pos-group-body .pos-table th,.pos-group-body .pos-table td{border:none;border-bottom:1px solid var(--line)}
.pos-totals-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-top:12px}
.pos-table.pos-totals{margin-top:12px;min-width:760px}
.pos-table.pos-totals tfoot td{border:1px solid var(--line)}
.strat-groups{display:flex;flex-direction:column;gap:14px}
.strat-group{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.strat-cat{margin:0 0 8px;font-size:13.5px;font-weight:800;color:var(--brand,var(--accent));border-left:3px solid var(--brand,var(--accent));padding-left:8px}
.strat-list{display:flex;flex-direction:column;gap:7px}
.strat-item{background:var(--panel);border-left:3px solid var(--line);border-radius:7px;padding:8px 11px;font-size:13px;line-height:1.55;color:var(--txt)}
.strat-item.warn{border-left-color:var(--warn,#c0392b)}
.strat-item.neu{border-left-color:var(--muted)}
.strat-bias{display:inline-block;font-size:11px;font-weight:700;padding:1px 8px;border-radius:10px;margin-left:6px;vertical-align:middle}
.strat-bias.up{background:rgba(255,77,79,.16);color:var(--up)}
.strat-bias.down{background:rgba(34,200,120,.16);color:var(--down)}
.strat-bias.flat{background:var(--panel2);color:var(--muted);border:1px solid var(--line)}
/* ===== 四层策略框架 v2（L1→L4 级联卡片） ===== */
.fl-strat{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:8px 0;font-size:13px;line-height:1.5}
.fl-head{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:6px}
.fl-head>b{font-size:14px}
.fl-bias{font-size:11px;font-weight:800;padding:1px 9px;border-radius:10px}
.fl-bias.up{background:rgba(255,77,79,.16);color:var(--up)}
.fl-bias.down{background:rgba(34,200,120,.16);color:var(--down)}
.fl-bias.flat{background:var(--panel2);color:var(--muted);border:1px solid var(--line)}
.fl-sub{font-size:11.5px;color:var(--muted);margin-left:auto}
.fl-layer{border-top:1px dashed var(--line);padding:7px 0 4px}
.fl-layer:first-of-type{border-top:none;padding-top:2px}
.fl-tag{display:inline-block;font-size:11px;font-weight:800;color:var(--brand,var(--accent));margin-bottom:5px}
.fl-tag.up{color:var(--up)} .fl-tag.down{color:var(--down)} .fl-tag.flat{color:var(--muted)}
.fl-fs{display:flex;flex-direction:column;gap:3px}
.fl-f{display:flex;align-items:center;gap:8px;font-size:12px}
.fl-fk{flex:0 0 116px;color:var(--muted)}
.fl-fv{flex:1;color:var(--txt)}
.fl-fi{flex:0 0 16px;text-align:center;font-weight:800}
.fl-fi.up{color:var(--up)} .fl-fi.down{color:var(--down)} .fl-fi.flat{color:var(--muted)}
.fl-evt{margin-top:4px;font-size:11.5px;padding:2px 7px;border-radius:6px;display:inline-block}
.fl-evt.down{background:rgba(34,200,120,.14);color:var(--down)}
.fl-evt.flat{background:var(--panel2);color:var(--muted)}
.fl-prices{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0}
.fl-prices .pp{font-size:11.5px;font-weight:700;padding:2px 8px;border-radius:6px;background:var(--panel2);border:1px solid var(--line)}
.fl-prices .pp.tp{color:var(--up)} .fl-prices .pp.cover{color:var(--accent)} .fl-prices .pp.stop{color:var(--down)} .fl-prices .pp.pnl{color:var(--muted)}
.fl-note{font-size:12px;color:var(--txt);margin-top:3px}
.fl-add{font-size:12px;color:var(--brand,var(--accent));margin-top:3px}
.fl-gate{margin-top:6px;font-size:11.5px;color:var(--warn,#c0392b);background:rgba(192,57,43,.08);padding:3px 8px;border-radius:6px}
.mod-head-actions{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap}
/* 策略模型存档弹窗 */
.sm-head{font-size:13px;color:var(--muted);margin-bottom:8px}
.sm-head b{color:var(--brand)}
.sm-desc{font-size:13px;line-height:1.6;margin:0 0 12px}
.sm-tbl{width:100%;border-collapse:collapse;font-size:13px;margin-bottom:12px}
.sm-tbl th,.sm-tbl td{border:1px solid var(--line);padding:7px 10px;text-align:left;vertical-align:top}
.sm-tbl th{background:var(--panel2);color:var(--muted);font-weight:600}
.sm-tbl td.sw{white-space:nowrap;color:var(--brand);font-weight:700;text-align:center}
.sm-bias{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-size:13px;line-height:1.6;margin-bottom:10px}
.empty-cell,.empty{color:var(--muted);text-align:center;padding:14px;font-size:13px}
@media(max-width:560px){ .pcf-chip{padding:3px 9px;font-size:11px} .pos-cat-filter{width:100%;margin-left:0} }

/* 全局免责声明 */
.site-footer{order:3;flex:0 0 auto;text-align:center;color:var(--muted);font-size:11px;padding:8px 0 14px;opacity:0.7;line-height:1.4}

/* ===================== 全局悬浮 AI 助手入口 ===================== */
/* z-index:9000 → 高于内容/Tab(50)，低于登录页(99999)与模态遮罩(9999)，保证 Tab 内常驻可见 */
#aiFloat{
  position:fixed;
  right:18px;
  bottom:88px;                 /* 默认悬于底部 Tab 栏上方（移动端） */
  z-index:9000;
  width:44px;height:44px;
  border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  text-decoration:none;
  background:linear-gradient(135deg,#ff3d2e 0%,#ff6a1a 52%,#ffa62a 100%);
  box-shadow:0 6px 16px rgba(255,90,30,.45),0 2px 6px rgba(0,0,0,.18);
  cursor:grab;
  user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;
  touch-action:none;          /* 移动端拖动时不触发页面滚动 */
  transition:box-shadow .2s ease,transform .08s ease;
  overflow:hidden;
  padding:0;
}
#aiFloat img{width:32px;height:32px;display:block;pointer-events:none}
#aiFloat:hover{box-shadow:0 9px 24px rgba(255,90,30,.6),0 2px 8px rgba(0,0,0,.22)}
#aiFloat:active{cursor:grabbing;transform:scale(.94)}
#aiFloat.dragging{cursor:grabbing;transition:none;box-shadow:0 12px 28px rgba(255,90,30,.7)}
@media (min-width:768px){
  #aiFloat{right:22px;bottom:22px}   /* 桌面端贴右下角 */
}

/* ===== AI 快捷链接面板 ===== */
#aiLinkPanel{
  position:fixed; z-index:9001;
  width:264px; max-height:62vh; overflow:auto;
  background:#fff; color:#222;
  border:1px solid rgba(0,0,0,.08);
  border-radius:14px;
  box-shadow:0 12px 32px rgba(0,0,0,.22);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
  animation:alp-pop .12s ease;
}
@keyframes alp-pop{from{opacity:0;transform:translateY(6px) scale(.98)}to{opacity:1;transform:none}}
.alp-head{display:flex;align-items:center;gap:6px;padding:10px 12px;border-bottom:1px solid #eee;}
.alp-title{font-size:13px;font-weight:600;flex:1;color:#ff5a1e;}
.alp-manage,.alp-x{font-size:12px;border:none;background:#f3f4f6;color:#444;border-radius:8px;padding:4px 9px;cursor:pointer;}
.alp-x{padding:4px 8px;line-height:1;}
.alp-list{padding:6px 8px;display:flex;flex-direction:column;gap:6px;}
.alp-empty{font-size:12px;color:#999;text-align:center;padding:14px 6px;}
.alp-item{display:flex;flex-direction:column;gap:1px;padding:9px 10px;border-radius:10px;text-decoration:none;color:#222;background:#fafafa;border:1px solid #eee;}
.alp-item:hover{background:#fff4ee;border-color:#ffd2bd;}
.alp-name{font-size:13px;font-weight:600;}
.alp-url{font-size:11px;color:#888;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.alp-item.edit{background:#fff;border:1px solid #ffd2bd;gap:6px;}
.alp-name-input,.alp-url-input{width:100%;box-sizing:border-box;font-size:12px;padding:6px 8px;border:1px solid #ddd;border-radius:8px;outline:none;}
.alp-url-input:focus,.alp-name-input:focus{border-color:#ff7a2e;}
.alp-row-actions{display:flex;gap:6px;margin-top:2px;}
.alp-save,.alp-del{font-size:12px;border:none;border-radius:8px;padding:5px 12px;cursor:pointer;}
.alp-save{background:#ff5a1e;color:#fff;}
.alp-del{background:#f3f4f6;color:#d33;}
.alp-add{margin:0 8px 10px;width:calc(100% - 16px);box-sizing:border-box;font-size:13px;border:1px dashed #ff9b6a;background:#fff7f2;color:#ff5a1e;border-radius:10px;padding:9px;cursor:pointer;}

/* ===== 用户体系 / 设置页（2026-07-21 新增） ===== */
.muted{color:var(--muted)}
.modal-body{padding:16px 20px}
.mine-sub-body{padding:4px 2px}
.m-form{display:flex;flex-direction:column;gap:12px;padding:2px}
.m-form label{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--muted)}
.m-form input{width:100%;box-sizing:border-box;padding:9px 11px;border:1px solid var(--line);border-radius:9px;background:var(--panel);color:var(--txt);font-size:14px}
.m-form .m-row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.m-cap{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.m-cap > span{display:inline-flex;background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:3px 5px;line-height:0}
.m-cap > span svg{width:104px;height:34px;display:block}
.m-msg{font-size:12.5px;min-height:16px;color:var(--muted)}
.m-msg:empty{display:none}

.set-mod{border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin:14px 0;background:var(--panel)}
.set-mod h3{margin:0 0 10px;font-size:15px;color:var(--brand);font-weight:800}
.set-mod .row input,.set-mod .row select{padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--txt);font-size:13px;box-sizing:border-box}

.data-table{width:100%;border-collapse:collapse;font-size:13px;margin:8px 0;background:var(--panel);border-radius:8px;overflow:hidden}
.data-table th,.data-table td{border:1px solid var(--line);padding:7px 9px;text-align:left;vertical-align:middle}
.data-table th{background:var(--panel2);font-weight:700;color:var(--txt);white-space:nowrap}
.data-table tbody tr:nth-child(even){background:rgba(127,127,127,.05)}
.data-table td select{font-size:12px;padding:3px 6px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--txt)}
.data-table .btn.sm{margin:1px 2px}
.btn.danger{background:#E5484D;color:#fff;border:none}
.btn.danger:hover{filter:brightness(1.08)}
/* 设置页-表格横向滚动（手机端适配） */
.tbl-scroll{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.tbl-scroll .data-table{min-width:640px}
.data-table td.acts{white-space:nowrap}
/* 角色权限卡片 */
.role-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin:10px 0}
.role-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:14px;cursor:pointer;transition:.15s}
.role-card:hover{border-color:var(--accent,#E5484D);transform:translateY(-2px);box-shadow:0 6px 18px rgba(0,0,0,.25)}
.role-card .rc-name{font-weight:700;font-size:15px;color:var(--txt)}
.role-card .rc-sub{margin-top:4px;font-size:12px;color:var(--muted,#888)}
.perm-row{display:flex;align-items:center;gap:8px;padding:8px 4px;border-bottom:1px solid var(--line);font-size:14px;color:var(--txt)}
.perm-row input{width:18px;height:18px}
/* 登录日志 */
.log-summary{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:10px 0}
.log-summary .muted{font-size:12px}
.log-pager{display:flex;align-items:center;justify-content:center;gap:12px;margin:10px 0 2px;font-size:13px;color:var(--muted,#888)}
.log-pager button[disabled]{opacity:.4;cursor:not-allowed}
.btn.danger:active{filter:brightness(.95)}
/* 板块表容器（重点概念 / 行业）位于「板块资金流向趋势」之下 */
#realtimeSectors .mkt-sector{margin-top:14px}
/* 我的 → 系统退出 按钮 */
.mine-logout-btn{
  display:block;width:calc(100% - 32px);margin:18px 16px 8px;padding:12px 0;
  background:var(--panel,#fff);border:1px solid #E5484D;color:#E5484D;
  border-radius:12px;font-size:15px;font-weight:700;cursor:pointer;transition:.15s;
}
.mine-logout-btn:hover{background:#E5484D;color:#fff}
.mine-logout-btn:active{filter:brightness(.95)}

/* —— 收盘表单：用户手填锁定高亮（自动刷新不会覆盖这些字段） —— */
.user-locked{ box-shadow:0 0 0 2px #F0C000 inset; background:#FFFBE9 !important; color:#5A4A00; }
/* —— 自动刷新状态徽标 —— */
.hint.live-badge{ color:var(--good,#15C98B); font-weight:600; }
#closeAutoBadge,#posAutoBadge{ margin-left:4px; }

/* ============ 大盘实时 · 三栏（大盘宏观 / 板块中观 / 个股微观）============ */
.rt-subtabs{display:flex;gap:4px;margin:14px 0 16px;padding:4px;background:var(--panel2,#1b1f27);border:1px solid var(--line,#2a2f37);border-radius:12px}
.rt-subtab{flex:1;display:flex;align-items:center;justify-content:center;padding:9px 6px;border-radius:9px;background:none;border:1px solid transparent;color:var(--muted,#8b94a3);font-size:13.5px;font-weight:700;cursor:pointer;transition:.15s;white-space:nowrap}
.rt-subtab:hover{background:rgba(255,255,255,.04);color:var(--txt,#e8eaed)}
.rt-subtab.active{background:var(--panel,#161b24);border-color:var(--line,#2a2f37);color:var(--txt,#e8eaed);box-shadow:0 1px 4px rgba(0,0,0,.18)}
.rt-pane{display:none}
.rt-pane.active{display:block}

/* 行情页大盘内容 Tab 化（指数/资金/周期/风险） */
.macro-tabs{display:flex;gap:6px;margin:14px 0 10px;overflow-x:auto;padding-bottom:2px}
.macro-tab{flex:0 0 auto;display:flex;align-items:center;gap:6px;padding:7px 18px;border-radius:20px;border:1px solid var(--line,#2a2f37);background:var(--panel2,#1b1f27);color:var(--muted,#8b94a3);font-size:13px;font-weight:700;cursor:pointer;transition:.15s;white-space:nowrap}
.macro-tab:hover{color:var(--txt,#e8eaed)}
.macro-tab.active{background:var(--brand,#4f8cff);border-color:var(--brand,#4f8cff);color:#fff}
.macro-tab.risk.active{background:#E5484D;border-color:#E5484D}
.macro-pane{display:none}
.macro-pane.active{display:block}

/* 行情页留白压缩（仅作用于实时 tab） */
#tab-realtime .block{margin-top:10px;padding:12px 14px}
#tab-realtime .sec-title{margin-bottom:8px}
#tab-realtime .hint{font-size:11px}

/* KPI 下方小视图联动摘要条 */
.summary-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin:12px 0 4px}
.mini-card{display:flex;flex-direction:column;gap:2px;background:var(--panel2,#1b1f27);border:1px solid var(--line,#2a2f37);border-radius:8px;padding:6px 10px}
.mini-card .lbl{font-size:11px;color:var(--muted,#888)}
.mini-card .val{font-size:13px;font-weight:500;line-height:1.35;color:var(--txt,#e8eaed)}
.mini-card .val.up{color:var(--red,#f5475c)}
.mini-card .val.down{color:var(--green,#2bbf6a)}
.mini-card .val.flat{color:var(--muted,#8b94a3)}

/* 分时资金曲线 · 收盘快照徽标 */
.sec-title.hasctl{display:flex;justify-content:space-between;align-items:center;gap:8px}
.ctl-row{display:flex;align-items:center;gap:8px;font-weight:400}
.snap-badge{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--good,#15C98B);background:rgba(21,201,139,.12);border:1px solid rgba(21,201,139,.4);padding:2px 8px;border-radius:20px}
.snap-badge .dot{width:7px;height:7px;border-radius:50%;background:var(--good,#15C98B);animation:pulse 1.6s infinite}
@keyframes pulse{0%{opacity:1}50%{opacity:.35}100%{opacity:1}}
.upd-time{font-size:11px;color:var(--muted,#8b94a3)}

/* ===== 上证指数走势图（需求C：指数区下方通栏 + 分时/日K + MA + 成交量副图）===== */
.idx-chart-hd{display:flex;align-items:center;justify-content:space-between;gap:8px}
.idx-chart-title{display:inline-flex;align-items:center;gap:8px;flex:1 1 auto;min-width:0;flex-wrap:wrap}
.idx-chart-tabs{flex:0 0 auto;display:inline-flex;gap:4px}
.idx-chart-tab{font-size:11.5px;padding:3px 10px;border:1px solid var(--line,#2a2f37);background:var(--panel,#11141a);color:var(--muted,#8b94a3);border-radius:7px;cursor:pointer;line-height:1.4}
.idx-chart-tab.active{color:var(--txt,#e8eaed);border-color:var(--accent,#6ea3ff);background:rgba(110,163,255,.12)}
.idx-chart-wrap{height:240px;margin-top:8px;position:relative}
.idx-vol-wrap{height:80px;margin-top:4px;position:relative}
.idx-pcv,.idx-vcv{width:100%;height:100%;display:block}
.idx-chart-note{margin-top:6px;font-size:12px;color:var(--muted,#8b94a3)}

/* 市场广度 */
.breadth-bar{display:flex;height:24px;border-radius:6px;overflow:hidden;font-size:11px;color:#fff;margin-bottom:10px}
.breadth-bar span{display:flex;align-items:center;justify-content:center;white-space:nowrap;padding:0 4px;min-width:0;overflow:hidden;text-overflow:ellipsis}
.b-readth-up,.b-up{background:var(--red,#f5475c)}
.b-flat{background:#5b6470}
.b-readth-down,.b-down{background:var(--green,#2bbf6a)}
.bstats{display:flex;gap:18px}
.bstat{display:flex;flex-direction:column;align-items:center}
.bstat .n{font-size:20px;font-weight:600;line-height:1.2}
.bstat .n.up{color:var(--red,#f5475c)} .bstat .n.down{color:var(--green,#2bbf6a)} .bstat .n.flat{color:var(--muted,#8b94a3)}
.bstat .t{font-size:11px;color:var(--muted,#8b94a3);margin-top:2px}

/* 牛/熊市四维矩阵 + 牛熊温度 */
/* bb-dim 旧竖条样式已弃用，改四维对照表（见下方设计保真块） */

/* ============ 设计保真块（按《行情三栏设计方案》效果图） ============ */
/* 风险卡 warn/crit 高亮（中性偏空=橙 / 偏空=红+🔔） */
.kpi.risk-card.warn-state{border-color:var(--warn,#f59e0b);background:rgba(245,158,11,.08);box-shadow:0 0 0 1px rgba(245,158,11,.25)}
.kpi.risk-card.crit-state{border-color:var(--red,#f5475c);background:rgba(245,71,92,.1);box-shadow:0 0 10px rgba(245,71,92,.25)}
.kpi.risk-card.warn-state .v{color:var(--warn,#f59e0b)}
.kpi.risk-card.crit-state .v{color:var(--red,#f5475c)}
.risk-card.warn-state{border-color:var(--warn,#f59e0b);background:rgba(245,158,11,.08)}
.risk-card.crit-state{border-color:var(--red,#f5475c);background:rgba(245,71,92,.1)}
.risk-legend .sw.warn{background:var(--warn,#f59e0b)} .risk-legend .sw.crit{background:var(--red,#f5475c)}

/* 收盘快照徽标 / 更新时间 */
.snap-badge{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:20px;font-size:11px;font-weight:400;background:rgba(245,158,11,.14);color:var(--warn,#f59e0b);border:1px solid rgba(245,158,11,.4);margin-left:8px;vertical-align:middle}
.snap-badge .dot{width:6px;height:6px;border-radius:50%;background:var(--warn,#f59e0b)}
.upd-time{font-size:11px;color:var(--muted,#8b94a3);margin-left:auto}

/* 牛熊四维对照表 + banner + 量表 */
.bb-banner{display:flex;align-items:center;gap:12px;border-radius:10px;padding:12px 14px;margin-bottom:10px;border:1px solid}
.bb-banner.bull{background:rgba(245,71,92,.1);border-color:rgba(245,71,92,.4)}
.bb-banner.bear{background:rgba(43,191,106,.1);border-color:rgba(43,191,106,.4)}
.bb-banner.neutral{background:rgba(139,148,163,.1);border-color:rgba(139,148,163,.4)}
.bb-ic{font-size:22px;flex:none}
.bb-main{flex:1;min-width:0}
.bb-verdict{font-size:13.5px;font-weight:600}
.bb-verdict.bull{color:var(--red,#f5475c)} .bb-verdict.bear{color:var(--green,#2bbf6a)} .bb-verdict.neutral{color:var(--muted,#aab3c0)}
.bb-sub{font-size:12px;color:var(--muted,#8b94a3);margin-top:3px;line-height:1.5}
.bb-gauge{width:150px;flex:none;text-align:center}
.g-track{position:relative;height:8px;border-radius:6px;background:linear-gradient(90deg,var(--green,#2bbf6a),#5b6470 50%,var(--red,#f5475c))}
.g-dot{position:absolute;top:50%;width:12px;height:12px;border-radius:50%;background:#fff;border:2px solid var(--txt,#e8eaed);transform:translate(-50%,-50%);box-shadow:0 1px 3px rgba(0,0,0,.4)}
.g-lbl{font-size:10.5px;color:var(--muted,#8b94a3);margin-top:4px}
.bb-matrix{width:100%;border-collapse:collapse;margin-bottom:10px;font-size:12.5px}
.bb-matrix th,.bb-matrix td{padding:8px 10px;border-bottom:1px solid var(--line,#2a2f37);vertical-align:top;text-align:left}
.bb-matrix th{font-size:12px;color:var(--muted,#8b94a3);font-weight:600}
.bb-matrix .dim{font-weight:600;color:var(--txt,#e8eaed);white-space:nowrap}
.bb-matrix .bull-col{color:var(--red,#f5475c);opacity:.85}
.bb-matrix .bear-col{color:var(--green,#2bbf6a);opacity:.85}
.bb-now{display:inline-block;margin-top:4px;padding:1px 8px;border-radius:10px;font-size:11px;font-weight:600}
.bb-now.bull{background:rgba(245,71,92,.16);color:var(--red,#f5475c)}
.bb-now.bear{background:rgba(43,191,106,.16);color:var(--green,#2bbf6a)}
.bb-now.neutral{background:rgba(139,148,163,.16);color:#aab3c0}

/* 微观富组件 alert-bar / st-tag / pp / 子tab */
/* 交易提醒 alert-bar：三色大圆点(红=止盈/绿=止损/黄=补仓) + 结构化内容（v20260730） */
.alert-bar{display:flex;align-items:flex-start;gap:10px;border:1px solid var(--line,#2a2f37);border-left:3px solid var(--muted,#8b94a3);background:var(--panel2,#1b1f27);border-radius:9px;padding:9px 12px;margin:8px 0}
.alert-bar.dot-red{border-left-color:var(--red,#f5475c)}
.alert-bar.dot-yellow{border-left-color:var(--warn,#f59e0b)}
.alert-bar.dot-green{border-left-color:var(--green,#2bbf6a)}
.alert-dot{flex:none;width:15px;height:15px;border-radius:50%;margin-top:2px}
.alert-dot.dot-red{background:var(--red,#f5475c);animation:alertPulse 1.3s ease-in-out infinite}
.alert-dot.dot-yellow{background:var(--warn,#f59e0b);animation:alertPulse 1.3s ease-in-out infinite}
.alert-dot.dot-green{background:var(--green,#2bbf6a);animation:alertPulse 1.3s ease-in-out infinite}
@keyframes alertPulse{0%,100%{opacity:1}50%{opacity:.35}}
@media (prefers-reduced-motion: reduce){ .alert-dot{animation:none} }
.alert-body{flex:1;min-width:0}
.alert-hd{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.alert-nm{font-weight:600;font-size:13.5px;color:var(--txt,#e8eaed)}
.alert-st{font-size:12.5px;font-weight:600;white-space:nowrap}
.alert-st.st-red{color:var(--red,#f5475c)}
.alert-st.st-green{color:var(--green,#2bbf6a)}
.alert-st.st-yellow{color:var(--warn,#f59e0b)}
.alert-sub{font-size:12.5px;color:var(--muted,#8b94a3);margin-top:3px;line-height:1.45}
.alert-sub b{font-weight:600}
.alert-act{font-size:12.5px;color:var(--txt,#e8eaed);margin-top:3px;line-height:1.45}
.alert-act b{font-weight:600}
.alert-meta{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:6px;font-size:11px;color:var(--muted,#8b94a3);white-space:nowrap}
.alert-meta .ack{padding:4px 11px;font-size:11.5px;border-radius:7px;border:1px solid var(--line,#2a2f37);background:var(--panel,#11141a);color:var(--txt,#e8eaed);cursor:pointer}
.alert-meta .ack:hover{border-color:var(--accent,#6ea3ff);color:var(--accent,#6ea3ff)}
.mini-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px;vertical-align:middle}
.mini-dot.md-red{background:var(--red,#f5475c)}
.mini-dot.md-yellow{background:var(--warn,#f59e0b)}
.mini-dot.md-green{background:var(--green,#2bbf6a)}
.snd-sw,.toggle-chip{padding:5px 11px;font-size:11.5px;border-radius:20px;border:1px solid var(--line,#2a2f37);background:var(--panel2,#1b1f27);color:var(--txt,#e8eaed);cursor:pointer}
.snd-sw.off{opacity:.6}
.snd-sw .dot2,.toggle-chip .dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--green,#2bbf6a);margin-right:5px;vertical-align:middle}
.snd-sw.off .dot2{background:var(--muted,#8b94a3)}
.st-tag{display:inline-block;padding:2px 9px;border-radius:6px;font-size:11.5px;font-weight:500;white-space:nowrap;margin:1px 2px}
.st-def{background:rgba(37,99,235,.18);color:#6ea3ff}
.st-atk{background:rgba(245,71,92,.16);color:var(--red,#f5475c)}
.st-neu{background:rgba(139,148,163,.16);color:#aab3c0}
.st-hold{background:rgba(43,191,106,.16);color:var(--green,#2bbf6a)}
.st-game{background:rgba(245,158,11,.16);color:var(--warn,#f59e0b)}
.st-full{background:rgba(168,85,247,.2);color:#c084fc}
.pp{display:inline-block;padding:1px 7px;border-radius:5px;font-size:11px;font-weight:500;margin:1px 2px;white-space:nowrap}
.pp.tp{background:rgba(245,71,92,.13);color:var(--red,#f5475c)}
.pp.cover{background:rgba(245,158,11,.13);color:var(--warn,#f59e0b)}
.pp.stop{background:rgba(43,191,106,.13);color:var(--green,#2bbf6a)}
.mtabs{display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap}
.mtab{padding:6px 13px;font-size:12.5px;color:var(--muted,#888);background:var(--panel2,#1b1f27);border:1px solid var(--line,#2a2f37);border-radius:20px;cursor:pointer}
.mtab.on{color:var(--txt,#e8eaed);border-color:var(--accent,#4f8cff);background:rgba(79,140,255,.12)}
.mtab .badge{font-size:10px;background:var(--accent,#4f8cff);color:#fff;border-radius:10px;padding:0 6px;margin-left:4px}
.mpane{display:none}
.mpane.on{display:block}
.snap-tag{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--green,#2bbf6a)}
.snap-tag .d{width:6px;height:6px;border-radius:50%;background:var(--green,#2bbf6a)}
.add-fav{padding:4px 10px;font-size:11.5px;border-radius:7px;border:1px solid var(--accent,#4f8cff);background:rgba(79,140,255,.12);color:var(--accent,#4f8cff);cursor:pointer}
.add-fav.added{border-color:var(--line,#2a2f37);background:var(--panel2,#1b1f27);color:var(--muted,#8b94a3)}
.mcard{background:var(--panel2,#1b1f27);border:1px solid var(--line,#2a2f37);border-radius:10px;padding:10px 12px}
.mcard .nm{font-size:13px;font-weight:600;color:var(--txt,#e8eaed);margin-bottom:6px}
.mcard .row{display:flex;justify-content:space-between;font-size:12px;color:var(--muted,#8b94a3);margin-bottom:4px}
.grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
/* 收盘录入网格：避免被上方全局 .grid3 auto-fit 覆盖导致输入框被压 */
.close-grid.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px 14px}
@media(max-width:980px){.close-grid.grid3{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.close-grid.grid3{grid-template-columns:1fr}}
.hit-tp{background:rgba(245,71,92,.06)} .hit-cover{background:rgba(245,158,11,.06)}
.sec-remark{color:var(--muted,#8b94a3);font-size:12px;line-height:1.5}

/* 个股微观 · 三大视图 */
.mv-nav{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.mv-nav-btn{display:flex;align-items:center;gap:6px;padding:9px 14px;font-size:13px;color:var(--muted,#888);background:var(--panel2,#1b1f27);border:1px solid var(--line,#2a2f37);border-radius:10px;cursor:pointer;transition:.15s}
.mv-nav-btn:hover{color:var(--txt,#e8eaed)}
.mv-nav-btn.on{color:var(--red,#E5484D);border-color:var(--red,#E5484D);background:rgba(229,72,77,.08);font-weight:600}
.mv-nav-btn .badge{font-size:11px;background:var(--red,#E5484D);color:#fff;border-radius:10px;padding:0 7px;min-width:18px;text-align:center}
.mv-pane{display:none}
.mv-pane.on{display:block}
.mv-subs{display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap}
.mv-sub{padding:6px 12px;font-size:12.5px;color:var(--muted,#888);background:var(--panel2,#1b1f27);border:1px solid var(--line,#2a2f37);border-radius:20px;cursor:pointer}
.mv-sub.on{color:var(--txt,#e8eaed);border-color:var(--accent,#4f8cff);background:rgba(79,140,255,.12)}
.mv-sub .badge{font-size:10px;background:var(--accent,#4f8cff);color:#fff;border-radius:10px;padding:0 6px}
.mv-subpane{display:none}
.mv-subpane.on{display:block}
.alert-row{display:flex;align-items:center;gap:8px;padding:9px 12px;margin-bottom:8px;background:var(--panel2,#1b1f27);border:1px solid var(--line,#2a2f37);border-left:3px solid var(--muted,#8b94a3);border-radius:8px;font-size:13px}
.alert-row.up{border-left-color:var(--red,#f5475c)}
.alert-row.down{border-left-color:var(--green,#2bbf6a)}
.empty{padding:18px;text-align:center;color:var(--muted,#8b94a3);font-size:13px;background:var(--panel2,#1b1f27);border:1px dashed var(--line,#2a2f37);border-radius:10px}
.btn.sm{padding:4px 10px;font-size:12px;border-radius:8px}

/* ============ 板块·中观：与「行情三栏设计方案.html」一致 ============ */
/* 控件行（标题右侧筛选区，靠右） */
.ctl-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-left:auto}
/* 分段控件（tab / 口径）：默认蓝(active)、.g 绿、.w 橙色(5日) */
.seg{display:inline-flex;background:var(--panel2);border:1px solid var(--line);border-radius:8px;overflow:hidden}
.seg .sort-btn{padding:5px 11px;font-size:12px;color:var(--muted);background:transparent;border:none;border-right:1px solid var(--line);cursor:pointer;line-height:1.4}
.seg .sort-btn:last-child{border-right:none}
.seg .sort-btn.active{background:var(--accent);color:#fff;font-weight:500}
.seg.g .sort-btn.active{background:var(--green)}
.seg.w .sort-btn.active{background:var(--warn);color:#1a1d22}
.sec-title.hasctl{display:flex;align-items:center}
/* 棒图区 */
.bar-wrap{display:flex;align-items:center;gap:10px;margin:7px 0}
.bar-scroll{max-height:248px;overflow-y:auto;padding-right:6px;position:relative}
.bar-scroll::-webkit-scrollbar{width:6px}
.bar-scroll::-webkit-scrollbar-thumb{background:#3a4150;border-radius:3px}
.bar-scroll::-webkit-scrollbar-track{background:transparent}
.bar-name{width:70px;color:var(--txt);font-size:12.5px;flex:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bar-track{flex:1;background:var(--panel2);border-radius:4px;height:20px;position:relative;overflow:hidden}
.bar-fill{height:100%;border-radius:4px;display:flex;align-items:center;justify-content:flex-end;padding-right:6px;font-size:11px;color:#fff;min-width:36px;box-sizing:border-box}
.bar-val{width:52px;text-align:right;font-size:12px;flex:none}
/* 滚动提示 */
.scroll-hint{text-align:center;font-size:11px;color:var(--muted);margin-top:2px}
/* 表格容器（表头吸顶）—— 限定中观表，避免影响持仓表 */
.mkt-sector .tbl-scroll{max-height:236px;overflow-y:auto;position:relative;border:1px solid var(--line);border-radius:8px}
.mkt-sector .tbl-scroll table{margin:0}
.mkt-sector .tbl-scroll th{position:sticky;top:0;background:var(--panel);z-index:1}
/* 中观表体 */
.sec-table{width:100%;border-collapse:collapse;font-size:12.5px}
.sec-table th,.sec-table td{border:1px solid var(--line);padding:6px 8px;text-align:left;vertical-align:middle}
.sec-table th{background:var(--panel2);color:var(--muted);font-weight:600;font-size:12px;white-space:nowrap;text-align:center}
/* 表头排序：可点击列显示方向三角（降序红▼ / 升序绿▲ / 未激活中性 ↕）—— 对齐 A 股「红涨/绿跌」语义：红=大值置顶（降序）、绿=小值置顶（升序） */
.sec-table th.sortable{cursor:pointer;user-select:none}
.sec-table th.sortable:hover{color:var(--txt)}
.sec-table th.sortable .sort-ico{display:inline-block;margin-left:4px;font-size:9px;line-height:1;color:var(--muted);opacity:.5;vertical-align:middle}
.sec-table th.sortable.s-asc .sort-ico{color:var(--green);opacity:1}
.sec-table th.sortable.s-desc .sort-ico{color:var(--red);opacity:1}
.sec-table tbody tr:nth-child(even){background:rgba(127,127,127,.05)}
/* 操作预警标签（清仓/建仓/减仓/观察） */
.sec-warn{display:inline-block;padding:2px 8px;border-radius:6px;font-size:11px;font-weight:500;white-space:nowrap}
.sec-warn.danger{background:rgba(245,71,92,.16);color:var(--red)}
.sec-warn.warn{background:rgba(245,158,11,.16);color:var(--warn)}
.sec-warn.good{background:rgba(43,191,106,.16);color:var(--green)}
.sec-warn.info{background:rgba(79,140,255,.16);color:var(--accent)}
.sec-remark{color:var(--muted);font-size:11.5px;text-align:left!important;line-height:1.4}
/* 趋势线尾分类标签（SVG <text>） */
.lbl{font-size:11px;font-weight:500}
/* 叠加指数开关 */
.toggle-chip{padding:4px 10px;font-size:12px;border-radius:8px;border:1px solid var(--line);background:var(--panel2);color:var(--muted);cursor:pointer}
.toggle-chip.on{border-color:var(--accent);color:var(--accent)}
/* 日期筛选控件（表格维度） */
.date-ctl{display:inline-flex;align-items:center;gap:5px;background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:3px 9px;font-size:12px;color:var(--txt);cursor:pointer}
.date-ctl input[type=date]{background:transparent;border:none;color:var(--txt);font-size:12px;outline:none;color-scheme:dark;cursor:pointer;font-family:inherit}
.date-ctl .ico{color:var(--muted)}
/* 趋势图例 */
.legend{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;color:var(--muted);font-size:12px;margin-top:6px}
.legend i{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px;vertical-align:middle}
.legend span{display:inline-flex;align-items:center}
#sectorTrendUpdated{text-align:center}
/* 说明段落（与设计稿 .note 一致） */
.note{color:var(--muted);font-size:12px;margin-top:6px;line-height:1.6}

/* ============================================================
   个股微观 · 新三板块（交易提醒 / 持仓监测 / 自选侦察）
   设计稿 1:1 还原：全局概览条 + 唯一一层导航 + 三大 pane
   作用域锁定 #microViews，避免影响其它页面既有组件
   ============================================================ */
#microViews .ov-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:12px}
@media(max-width:760px){#microViews .ov-strip{grid-template-columns:repeat(2,1fr)}}
#microViews .ov-card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:9px 12px;cursor:pointer;transition:border-color .15s}
#microViews .ov-card:hover{border-color:var(--accent)}
#microViews .ov-card .l{color:var(--muted);font-size:11px;display:flex;align-items:center;gap:5px}
#microViews .ov-card .v{font-size:15px;font-weight:500;margin-top:3px}
#microViews .ov-card .v .sub{font-size:11px;color:var(--muted);font-weight:400;margin-left:5px}
#microViews .ov-card.warn-state{border-color:rgba(245,158,11,.55);background:rgba(245,158,11,.07)}
#microViews .ov-card.alert-state{border-color:rgba(245,71,92,.55);background:rgba(245,71,92,.07)}

#microViews .mv-nav{display:flex;gap:0;margin-bottom:12px;border-bottom:1px solid var(--line)}
#microViews .mv-nav-btn{padding:10px 18px;cursor:pointer;color:var(--muted);font-size:13.5px;border:none;background:transparent;border-bottom:2px solid transparent;margin-bottom:-1px;display:flex;align-items:center;gap:7px}
#microViews .mv-nav-btn:hover{color:var(--txt)}
#microViews .mv-nav-btn.on{color:var(--txt);border-bottom-color:var(--accent);font-weight:500}
#microViews .mv-pane{display:none}
#microViews .mv-pane.on{display:block}

#microViews .badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;font-size:11px;background:var(--panel2);border:1px solid var(--line);color:var(--muted)}
#microViews .mv-nav-btn .badge{margin-left:2px}

/* ===== 全A周期（四十六期 yl/zl） ===== */
.cyc-wrap{max-width:1080px;margin:0 auto;padding:4px 2px 24px}
.cyc-section{margin-top:16px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.cyc-sec-title{font-size:14px;font-weight:600;margin-bottom:12px;color:var(--txt);display:flex;align-items:center;justify-content:space-between;gap:10px}
.cyc-judge{display:flex;flex-wrap:wrap;gap:16px;align-items:center;background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:12px;padding:14px 18px}
.cyc-judge.risk-low{border-left-color:#3b82f6}
.cyc-judge.risk-midlow{border-left-color:#22c55e}
.cyc-judge.risk-high{border-left-color:#ef4444}
.cyc-judge.risk-midhigh{border-left-color:#f59e0b}
.cyc-judge-main{display:flex;align-items:center;gap:12px;min-width:200px}
.cyc-phase-dot{width:14px;height:14px;border-radius:50%;flex:none}
.cyc-phase-name{font-size:17px;font-weight:700}
.cyc-phase-sub{font-size:12px;color:var(--muted);margin-top:2px}
.cyc-pred{font-size:11px;color:var(--muted);font-weight:400}
.cyc-judge-grid{flex:1;display:grid;grid-template-columns:repeat(4,1fr);gap:10px 18px;min-width:420px}
.cyc-jg{display:flex;flex-direction:column;gap:3px}
.cyc-jg .l{font-size:11px;color:var(--muted)}
.cyc-jg .v{font-size:13.5px;font-weight:600;line-height:1.35}
.cyc-jg-full{grid-column:1/-1}
.cyc-jg .v.risk-low{color:#3b82f6}
.cyc-jg .v.risk-midlow{color:#22c55e}
.cyc-jg .v.risk-high{color:#ef4444}
.cyc-jg .v.risk-midhigh{color:#f59e0b}
.cyc-wave{background:var(--panel2);border-radius:10px;padding:6px 4px}
.cyc-legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:8px;font-size:12px;color:var(--muted)}
.cyc-lg{display:inline-flex;align-items:center;gap:5px}
.cyc-lg i{width:12px;height:12px;border-radius:3px;display:inline-block}
.cyc-idx-sel{margin-left:auto;background:var(--panel2);border:1px solid var(--line);border-radius:7px;padding:4px 8px;color:var(--txt);font-size:12px;font-weight:500;cursor:pointer}
.cyc-idx-dot{cursor:crosshair}
.cyc-idx-tip{position:fixed;z-index:9999;pointer-events:none;display:none;background:rgba(17,22,30,.95);border:1px solid var(--line);border-radius:8px;padding:7px 10px;font-size:12px;line-height:1.5;color:#e6edf3;box-shadow:0 6px 18px rgba(0,0,0,.4);white-space:nowrap}
.cyc-idx-tip b{color:#fff}
.cyc-idx-trend{margin-top:10px;padding:9px 12px;background:var(--panel2);border:1px solid var(--line);border-radius:9px;font-size:13px;color:var(--txt);line-height:1.7}
.cyc-idx-trend-load{color:var(--muted);font-size:12px}
.cyc-idx-trend b{color:var(--txt)}
.cyc-idx-up{color:#ef4444;font-weight:600}
.cyc-idx-down{color:#22c55e;font-weight:600}
.cyc-idx-trend-note{margin-top:5px;font-size:12px;color:var(--muted);border-top:1px dashed var(--line);padding-top:6px}
.cyc-idx-msg{font-size:11.5px;color:var(--muted);margin-top:6px;min-height:14px}
.cyc-idx-msg:empty{display:none}
.cyc-cal{display:flex;flex-direction:column;gap:10px}
.cyc-cal-year{display:flex;align-items:center;gap:10px}
.cyc-cal-yh{width:42px;font-size:13px;font-weight:600;color:var(--muted);flex:none}
.cyc-cal-months{display:grid;grid-template-columns:repeat(12,1fr);gap:5px;flex:1}
.cyc-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;height:42px;border:1px solid var(--line);border-radius:7px;background:var(--panel2);cursor:pointer;transition:.12s;padding:0}
.cyc-cell:hover{border-color:var(--accent)}
.cyc-cell .cyc-m{font-size:10px;color:var(--muted)}
.cyc-cell .cyc-p{font-size:12px;font-weight:700}
.cyc-cell.now{box-shadow:0 0 0 2px #e11d48 inset}
.cyc-cell.pending{border-style:dashed;border-color:#6b7685;opacity:.9}
.cyc-cell.pending .cyc-p{font-size:10px;font-weight:700}
.cyc-pend-sec{border-left:4px solid #f59e0b}
.cyc-pend-list{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}
.cyc-pend-item{display:flex;align-items:center;gap:10px;background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:6px 10px}
.cyc-pend-m{font-size:13px;font-weight:600;min-width:74px}
.cyc-pend-s{font-size:12.5px;flex:1}
.cyc-pend-btn{border:1px solid var(--accent);background:var(--accent);color:#0b0f17;border-radius:6px;padding:4px 12px;font-size:12px;font-weight:600;cursor:pointer}
.cyc-pend-btn:hover{filter:brightness(1.1)}
.cyc-adopt-all{margin-top:4px;border:1px solid var(--accent);background:transparent;color:var(--accent);border-radius:8px;padding:8px 14px;font-size:13px;font-weight:600;cursor:pointer}
.cyc-adopt-all:hover{background:var(--accent);color:#0b0f17}
.cyc-pend-none{font-size:13px;color:#22c55e}
.cyc-themes{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.cyc-theme-card{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.cyc-th-h{font-size:13px;font-weight:700;margin-bottom:8px}
.cyc-th-row{display:flex;align-items:center;gap:6px;margin-bottom:6px}
.cyc-th-label{font-size:11px;color:var(--muted);width:28px;flex:none}
.cyc-th-btn{border:1px solid var(--line);background:transparent;color:var(--txt);border-radius:6px;padding:4px 9px;font-size:12px;cursor:pointer}
.cyc-th-btn.sel{background:var(--tc);color:#0b0f17;border-color:var(--tc);font-weight:700}
.cyc-th-line{font-size:11.5px;color:var(--muted)}
.cyc-margin{display:flex;flex-direction:column;gap:10px}
.cyc-mg-list{display:flex;flex-wrap:wrap;gap:8px}
.cyc-mg{font-size:12px;background:var(--panel2);border:1px solid var(--line);border-radius:6px;padding:3px 8px}
.cyc-mg-inputs{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}
.cyc-mg-in{display:flex;flex-direction:column;gap:3px;font-size:11px;color:var(--muted)}
.cyc-mg-in input{width:100%;background:var(--panel2);border:1px solid var(--line);border-radius:6px;padding:5px 6px;color:var(--txt);font-size:12px}
@media(max-width:760px){
  .cyc-judge-grid{grid-template-columns:repeat(2,1fr);min-width:0}
  .cyc-themes{grid-template-columns:repeat(2,1fr)}
  .cyc-mg-inputs{grid-template-columns:repeat(3,1fr)}
  .cyc-cal-months{grid-template-columns:repeat(6,1fr)}
}
#microViews .badge.hot{background:var(--red);border-color:var(--red);color:#fff}
#microViews .mv-nav-btn.on .badge{background:var(--accent);border-color:var(--accent);color:#fff}
/* 微观子视图导航：窄屏强制单行（交易提醒/持仓监测/自选侦察 不折行） */
@media(max-width:560px){
  #microViews .mv-nav{flex-wrap:nowrap}
  #microViews .mv-nav-btn{flex:1 1 0;min-width:0;justify-content:center;padding:10px 6px;font-size:12px;gap:4px;white-space:nowrap}
  #microViews .mv-nav-btn .badge{font-size:10px;padding:0 4px;min-width:15px;height:15px;line-height:15px}
}

/* 板块① 大盘今日风险横幅 */
#microViews .risk-banner{display:flex;align-items:center;gap:14px;border-radius:10px;padding:13px 15px;margin-bottom:12px;border:1px solid rgba(245,158,11,.45);background:rgba(245,158,11,.09)}
#microViews .risk-banner.crit{border-color:rgba(245,71,92,.5);background:rgba(245,71,92,.09)}
#microViews .risk-banner.calm{border-color:var(--line);background:var(--panel2)}
#microViews .rb-main{flex:1;min-width:0}
#microViews .rb-lv{font-size:15.5px;font-weight:600;color:var(--warn)}
#microViews .risk-banner.crit .rb-lv{color:var(--red)} #microViews .risk-banner.calm .rb-lv{color:var(--muted)}
#microViews .rb-sub{color:var(--muted);font-size:12px;margin-top:3px;line-height:1.6}
#microViews .rb-chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
#microViews .rb-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:20px;font-size:11px;border:1px solid rgba(245,158,11,.4);color:var(--warn);background:rgba(245,158,11,.1)}
#microViews .rb-chip.crit{border-color:rgba(245,71,92,.4);color:var(--red);background:rgba(245,71,92,.1)}
#microViews .rb-gauge{width:118px;flex:none;text-align:center}
#microViews .rb-gauge .g-track{height:8px;border-radius:5px;background:linear-gradient(90deg,var(--green),#5b6470 50%,var(--red));position:relative;margin-bottom:4px}
#microViews .rb-gauge .g-dot{position:absolute;top:-3px;width:14px;height:14px;border-radius:50%;background:#fff;border:2px solid var(--bg);transform:translateX(-50%)}
#microViews .rb-gauge .g-lbl{font-size:10.5px;color:var(--muted)}

/* 声音提醒控件行 */
#microViews .sec-title.hasctl{justify-content:flex-start}
#microViews .ctl-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-left:auto}
#microViews .snd-sw{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:8px;font-size:12px;background:rgba(43,191,106,.12);color:var(--green);border:1px solid rgba(43,191,106,.4);cursor:pointer}
#microViews .snd-sw .dot2{width:7px;height:7px;border-radius:50%;background:var(--green)}
#microViews .snd-sw.off{background:rgba(107,117,135,.12);color:var(--muted);border:1px solid rgba(107,117,135,.4)}
#microViews .snd-sw.off .dot2{background:var(--muted)}

/* 提醒卡片：沿用通用 .alert-bar 三色圆点方案（圆点闪烁，文本框不整条闪） */
#microViews .empty{color:var(--muted);font-size:12px;padding:10px 4px}
#microViews .grp-title{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:500;margin:14px 0 8px;color:var(--txt)}
#microViews .grp-title:first-child{margin-top:0}
#microViews .grp-title .ln{flex:1;height:1px;background:var(--line)}

/* 板块② 持仓监测：合并表 + 展开策略行 */
#microViews .st-tag{display:inline-block;padding:2px 8px;border-radius:6px;font-size:11px;font-weight:500;white-space:nowrap;margin:1px 2px}
#microViews .st-atk{background:rgba(245,71,92,.14);color:var(--red)}
#microViews .st-def{background:rgba(43,191,106,.14);color:var(--green)}
#microViews .st-hold{background:rgba(79,140,255,.14);color:var(--accent)}
#microViews .st-game{background:rgba(245,158,11,.14);color:var(--warn)}
#microViews .st-full{background:rgba(245,71,92,.2);color:var(--red)}
#microViews .st-neu{background:rgba(139,148,163,.14);color:var(--muted)}
#microViews .pp{display:inline-block;padding:1px 7px;border-radius:5px;font-size:10.5px;margin-right:4px;white-space:nowrap}
#microViews .pp.tp{background:rgba(245,71,92,.12);color:var(--red)}
#microViews .pp.cover{background:rgba(245,158,11,.12);color:var(--warn)}
#microViews .pp.stop{background:rgba(43,191,106,.12);color:var(--green)}
#microViews tr.hit-tp td{background:rgba(245,71,92,.05)}
#microViews tr.hit-cover td{background:rgba(245,158,11,.05)}
#microViews tr.hit-stop td{background:rgba(43,191,106,.06)}
#microViews .tbl-note{margin:8px 2px 0;font-size:11.5px;line-height:1.65;color:var(--muted);border-left:3px solid var(--line);padding:7px 11px;background:var(--panel2);border-radius:6px}
#microViews .pos-table.mkt-table th,#microViews .pos-table.mkt-table td{text-align:center;vertical-align:middle;padding:10px 8px;line-height:1.55}
#microViews .pos-table.mkt-table th:first-child,#microViews .pos-table.mkt-table td:first-child{text-align:center;width:30px}
/* 自选列表：覆盖 first-child 的 30px 居中（那是持仓监测展开按钮专用），恢复名称列正常布局 + 两行(名称/代码·板块) + 研判列限宽换行 */
#microViews .pos-table.watch-table th:first-child,#microViews .pos-table.watch-table td:first-child{width:auto;min-width:130px;text-align:left}
#microViews .pos-table.watch-table th:first-child{white-space:nowrap}
#microViews .pos-table.watch-table .wl-nm{font-weight:600;line-height:1.35}
#microViews .pos-table.watch-table .wl-sub{color:var(--muted);font-size:11px;font-weight:400;white-space:nowrap}
#microViews .pos-table.watch-table .wl-remark{max-width:240px;white-space:normal;word-break:break-word;text-align:left}
#microViews .pos-table.mkt-table td .pp{display:inline-flex;gap:4px;justify-content:center;flex-wrap:wrap}
#microViews .pos-table.mkt-table td .exp-btn{display:inline-flex;align-items:center;justify-content:center}
#microViews tr.strat-row td{background:var(--panel2);font-size:12px;color:var(--muted);border-bottom:1px solid var(--line);padding:10px;text-align:center}
#microViews tr.strat-row .sr-concl{display:flex;align-items:center;justify-content:flex-start;text-align:left;gap:6px;flex-wrap:wrap;font-size:13px;margin-bottom:7px;padding:6px 8px;background:rgba(37,99,235,.07);border:1px solid rgba(37,99,235,.18);border-radius:8px}
#microViews tr.strat-row .sr-concl .sr-lbl{color:var(--brand);font-weight:600}
#microViews tr.strat-row .sr-concl b{color:var(--txt);font-weight:700}
#microViews tr.strat-row .sr-line{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}
#microViews tr.strat-row .sr-lbl{color:var(--muted);font-size:11px;flex:none}
#microViews .exp-btn{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:5px;background:var(--panel2);border:1px solid var(--line);color:var(--muted);cursor:pointer;font-size:11px}
#microViews .exp-btn.on{color:var(--accent);border-color:var(--accent)}
#microViews .tbl-scroll{overflow:auto;min-height:340px;max-height:520px;border:1px solid var(--line);border-radius:9px}
#microViews .tbl-scroll th{position:sticky;top:0;background:var(--panel);z-index:2}

/* 板块③ 自选侦察：扫描工具条 */
#microViews .scan-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:4px}
#microViews .scan-bar select,#microViews .scan-bar input{background:var(--panel);border:1px solid var(--line);color:var(--txt);border-radius:7px;padding:6px 10px;font-size:12.5px;outline:none;font-family:inherit}
#microViews .scan-bar input{width:150px}
#microViews .scan-bar select:focus,#microViews .scan-bar input:focus{border-color:var(--accent)}
#microViews .btn-scan{padding:6px 16px;border-radius:8px;font-size:12.5px;background:var(--accent);color:#fff;border:none;cursor:pointer;font-weight:500}
#microViews .btn-scan:hover{filter:brightness(1.08)}
#microViews .add-fav{padding:3px 11px;border-radius:7px;font-size:11.5px;background:var(--panel2);color:var(--warn);border:1px solid rgba(245,158,11,.4);cursor:pointer}
#microViews .add-fav.added{color:var(--muted);border-color:var(--line)}
#microViews .snap-tag{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:20px;font-size:11px;background:rgba(43,191,106,.12);color:var(--green);border:1px solid rgba(43,191,106,.4)}
#microViews .snap-tag .d{width:6px;height:6px;border-radius:50%;background:var(--green)}

/* 候选池折叠区 */
#microViews .fold-head{display:flex;align-items:center;gap:8px;cursor:pointer;padding:10px 0 2px;color:var(--muted);font-size:12.5px;user-select:none}
#microViews .fold-head:hover{color:var(--txt)}
#microViews .fold-head .arr{transition:transform .15s;display:inline-block;flex-shrink:0}
#microViews .fold-head.open .arr{transform:rotate(90deg)}
#microViews .fold-title{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#microViews .fold-ctl{display:flex;align-items:center;gap:6px;margin-left:auto;flex-shrink:0}
#microViews .fold-ctl .btn{flex-shrink:0}
#microViews .fold-body{display:none;padding-top:8px}
#microViews .fold-body.open{display:block}
#microViews .opp-hint{color:var(--muted);font-size:12px;line-height:1.55;margin:8px 0 0}
#microViews .grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
@media(max-width:760px){#microViews .grid3{grid-template-columns:1fr}}
#microViews .mcard{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:11px 13px}
#microViews .mcard .nm{font-weight:500;font-size:13px;margin-bottom:6px}
#microViews .mcard .row{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);padding:2px 0}
#microViews .pill.r{background:rgba(245,71,92,.14);color:var(--red)}
#microViews .pill.w{background:rgba(245,158,11,.14);color:var(--warn)}
#microViews .pill.g{background:rgba(43,191,106,.14);color:var(--green)}

/* ===== 顶部小喇叭（交易提醒全局入口）===== */
.alert-speaker{position:relative;display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:10px;background:var(--panel2);border:1px solid var(--line);color:var(--txt);cursor:pointer;transition:background .15s,border-color .15s;outline:none}
.alert-speaker:hover{background:var(--panel3,#222);border-color:var(--accent,#3b82f6)}
.alert-speaker svg{width:20px;height:20px}
.alert-speaker .spk-count{position:absolute;top:-6px;right:-6px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--red);color:#fff;font-size:11px;font-weight:700;line-height:18px;text-align:center}
.alert-speaker.has-red{color:#ef4444;border-color:#ef4444;animation:spkRed 1s steps(1,end) infinite}
.alert-speaker.has-orange{color:#f59e0b;border-color:#f59e0b;animation:spkOrange 1s steps(1,end) infinite}
.alert-speaker.has-red.has-orange{animation:spkRed 1s steps(1,end) infinite} /* 红优先 */
.alert-speaker:not(.active){opacity:.78}
@keyframes spkRed{0%,49%{box-shadow:0 0 0 0 rgba(239,68,68,0)}50%,100%{box-shadow:0 0 12px 2px rgba(239,68,68,.7)}}
@keyframes spkOrange{0%,49%{box-shadow:0 0 0 0 rgba(245,158,11,0)}50%,100%{box-shadow:0 0 12px 2px rgba(245,158,11,.7)}}
/* 持仓提醒/大盘风险：蓝色闪烁（覆盖红色优先呈现蓝闪） */
.alert-speaker.blink-blue{color:#3b82f6 !important;border-color:#3b82f6 !important;animation:spkBlue 1.1s ease-in-out infinite}
.alert-speaker.blink-blue.has-red,.alert-speaker.blink-blue.has-orange{color:#3b82f6 !important;border-color:#3b82f6 !important;animation:spkBlue 1.1s ease-in-out infinite}
@keyframes spkBlue{0%,100%{box-shadow:0 0 0 0 rgba(59,130,246,0)}50%{box-shadow:0 0 14px 3px rgba(59,130,246,.9)}}
@media(prefers-reduced-motion:reduce){.alert-speaker.has-red,.alert-speaker.has-orange,.alert-speaker.has-red.has-orange,.alert-speaker.blink-blue{animation:none}}
@media(prefers-reduced-motion:reduce){.alert-speaker.blink-blue{color:#3b82f6 !important;border-color:#3b82f6 !important}}

/* 全局轻提示：保存/失败等关键操作的可见反馈 */
.sr-toast{position:fixed;left:50%;bottom:84px;transform:translateX(-50%) translateY(12px);z-index:9999;
  max-width:86vw;padding:10px 16px;border-radius:10px;font-size:14px;line-height:1.4;
  background:rgba(24,28,36,.94);color:#fff;box-shadow:0 6px 22px rgba(0,0,0,.28);
  opacity:0;pointer-events:none;transition:opacity .22s ease,transform .22s ease}
.sr-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.sr-toast.err{background:rgba(190,40,40,.96)}
.hint.save-ok{color:var(--red)}
.hint.save-err{color:var(--warn);font-weight:600}
/* 关注池 chips（扫描自动入池 · 跨设备同步） */
.scan-pool{margin-top:8px}
.pool-chips{display:flex;flex-wrap:wrap;gap:6px}
.pool-chip{display:inline-flex;align-items:center;gap:4px;background:var(--bg-soft,#f3f4f6);border:1px solid var(--border,#e5e7eb);border-radius:14px;padding:2px 6px 2px 10px;font-size:12px}
.pool-chip b{color:var(--text)}
.pool-chip i{color:var(--muted);font-style:normal}
.pool-x{border:none;background:transparent;color:var(--muted);cursor:pointer;font-size:14px;line-height:1;padding:0 2px}
.pool-x:hover{color:var(--red,#f5475c)}
.pool-add{margin-right:5px;font-size:11px;line-height:1;border:1px solid var(--accent,#4f8cff);background:rgba(79,140,255,.12);color:var(--accent,#4f8cff);border-radius:6px;padding:2px 8px;cursor:pointer}
.pool-add:hover{background:rgba(79,140,255,.22)}
.pool-add.added{border-color:var(--line,#2a2f37);background:var(--panel2,#1b1f27);color:var(--muted,#8b94a3);cursor:default}
.sf-pool-table{font-size:11px}
.sf-pool-table .pool-x{padding:2px 8px;border:1px solid var(--border,#e5e7eb);border-radius:6px;background:var(--bg-soft,#f3f4f6)}
.sf-pool-table .pill{font-size:10px;padding:1px 5px}
/* ===== 个人中心 · 记事本 ===== */
.note-form{background:var(--panel2,#1b2027);border:1px solid var(--line,#2a2f3a);border-radius:12px;padding:12px;margin-bottom:14px}
.note-form label{font-size:13px;color:var(--muted,#9aa3b2)}
.note-form input[type=text],.note-form input[type=date],.note-form textarea{width:100%;margin-top:4px;background:var(--panel,#12161c);border:1px solid var(--line,#2a2f3a);border-radius:8px;color:var(--txt,#e6e9ef);padding:8px 10px;font-size:14px;font-family:inherit}
.note-form textarea{resize:vertical}
.note-img-row{margin-top:8px}
.note-img-row input[type=file]{font-size:12px;color:var(--muted,#9aa3b2)}
.note-img-prev{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.note-img-prev-item{width:56px;height:56px;object-fit:cover;border-radius:8px;border:1px solid var(--line,#2a2f3a)}
.note-form-actions{display:flex;align-items:center;gap:10px;margin-top:10px}
.note-list-title{font-size:14px;margin:6px 0 8px;color:var(--txt,#e6e9ef)}
.note-list{display:flex;flex-direction:column;gap:10px}
.note-card{background:var(--panel2,#1b2027);border:1px solid var(--line,#2a2f3a);border-radius:12px;padding:10px 12px}
.note-card-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.note-date{font-size:12px;color:var(--muted,#9aa3b2);background:var(--panel,#12161c);border:1px solid var(--line,#2a2f3a);border-radius:6px;padding:1px 7px}
.note-theme{flex:1;font-weight:600;color:var(--txt,#e6e9ef);font-size:14px;word-break:break-all}
.note-del{margin-left:auto;border:1px solid var(--line,#2a2f3a);background:transparent;color:var(--red,#f5475c);border-radius:7px;padding:3px 10px;font-size:12px;cursor:pointer}
.note-del:hover{background:var(--red,#f5475c);color:#fff}
.note-body{font-size:13.5px;line-height:1.6;color:var(--txt,#e6e9ef);white-space:pre-wrap;word-break:break-word}
.note-imgs{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.note-imgs img{width:84px;height:84px;object-fit:cover;border-radius:8px;border:1px solid var(--line,#2a2f3a);cursor:zoom-in}
.note-login-tip{font-size:13px;color:var(--muted,#9aa3b2);padding:14px 0}
/* 记事本：查询框 / 折叠卡片 / 编辑 */
.note-search{display:flex;align-items:center;gap:8px;margin:4px 0 10px}
.note-search input[type=search]{flex:1;background:var(--panel,#12161c);border:1px solid var(--line,#2a2f3a);border-radius:8px;color:var(--txt,#e6e9ef);padding:8px 10px;font-size:13px;font-family:inherit}
.note-search-count{font-size:12px;color:var(--muted,#9aa3b2);white-space:nowrap}
.note-card-head{cursor:pointer;user-select:none}
.note-card.collapsed .note-card-head{margin-bottom:0}
.note-card.collapsed .note-card-body{display:none}
.note-card-body{padding-top:6px}
.note-caret{color:var(--muted,#9aa3b2);font-size:12px;width:14px;display:inline-block;text-align:center;flex:0 0 auto}
.note-card-head .note-theme{flex:1}
.note-card-head .note-edit{margin-left:auto;border:1px solid var(--line,#2a2f3a);background:transparent;color:var(--blue,#4aa3ff);border-radius:7px;padding:3px 10px;font-size:12px;cursor:pointer}
.note-card-head .note-edit:hover{background:var(--blue,#4aa3ff);color:#fff}
.note-card-head .note-del{margin-left:6px}
.note-edit-imgs{margin-top:8px;padding:8px;background:var(--panel,#12161c);border:1px dashed var(--line,#2a2f3a);border-radius:8px}
.note-edit-imgs-label{font-size:12px;color:var(--muted,#9aa3b2);margin-bottom:6px}
.note-edit-img{position:relative;display:inline-block;margin:0 6px 6px 0;vertical-align:top}
.note-edit-img img{width:64px;height:64px;object-fit:cover;border-radius:6px;border:1px solid var(--line,#2a2f3a)}
.note-edit-img-x{position:absolute;top:-6px;right:-6px;width:18px;height:18px;border-radius:50%;border:none;background:var(--red,#f5475c);color:#fff;font-size:12px;line-height:18px;cursor:pointer;padding:0}
#noteCancelEdit{background:transparent;border:1px solid var(--line,#2a2f3a);color:var(--muted,#9aa3b2);border-radius:8px;padding:7px 12px;font-size:13px;cursor:pointer}
#noteCancelEdit:hover{color:var(--txt,#e6e9ef)}

/* ============ 2026-08-02 · 交易中心（一级菜单）+ 仓位策略提醒蓝色化 ============ */
/* ① 底部 6 tab：2 字标签防换行 / 防变形 */
.tabbar{padding:0 2px calc(env(safe-area-inset-bottom,0px))}
.tab{gap:5px;min-width:0;padding:0 1px}
.tab .lbl{font-size:12px;line-height:1.1;white-space:nowrap;letter-spacing:.5px}
@media (max-width:360px){
  .tab .lbl{font-size:11px;letter-spacing:0}
  .tab .ic svg{width:20px;height:20px}
}
/* ② 交易中心面板：顶部标题与行情页同构 */
#tab-trade > .report-head{margin-bottom:10px}

/* ③ 仓位策略提醒：蓝色色条 + 蓝色圆点（对齐持仓提醒 / 自选提醒视觉语言） */
#microViews .block.deam-alert-blk{position:relative;padding-left:12px}
#microViews .block.deam-alert-blk::before{content:"";position:absolute;left:0;top:2px;bottom:2px;width:3px;border-radius:3px;background:var(--accent,#4f8cff);opacity:.35}
#microViews .block.deam-alert-blk.has-blue::before{opacity:1;box-shadow:0 0 6px rgba(79,140,255,.55);animation:deamBlueBar 1.6s ease-in-out infinite}
@keyframes deamBlueBar{0%,100%{opacity:.5;box-shadow:0 0 3px rgba(79,140,255,.35)}50%{opacity:1;box-shadow:0 0 9px rgba(79,140,255,.75)}}
#microViews .grp-dot.blue{flex:0 0 auto;width:8px;height:8px;border-radius:50%;background:var(--accent,#4f8cff);opacity:.4}
#microViews .grp-dot.blue.on{opacity:1;animation:deamBlueDot 1.2s ease-in-out infinite}
@keyframes deamBlueDot{0%,100%{box-shadow:0 0 0 0 rgba(79,140,255,.55);transform:scale(1)}50%{box-shadow:0 0 0 5px rgba(79,140,255,0);transform:scale(1.18)}}
#microViews .grp-title .badge.blue{background:rgba(79,140,255,.14);color:var(--accent,#4f8cff);border-color:rgba(79,140,255,.35)}
#microViews .grp-title .badge.blue.hot{background:rgba(79,140,255,.22);color:var(--accent,#4f8cff)}
@media (prefers-reduced-motion:reduce){
  #microViews .block.deam-alert-blk.has-blue::before,#microViews .grp-dot.blue.on{animation:none}
}

/* ④ 执行工作 / 风险提示（拉取持仓页 ERP 卡同源内容） */
#microViews .deam-exec,#microViews .deam-risk{margin-top:10px;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:var(--panel2,rgba(127,127,127,.05))}
#microViews .deam-exec{border-left:3px solid var(--accent,#4f8cff)}
#microViews .deam-risk{border-left:3px solid var(--warn,#f59e0b)}
#microViews .de-hd,#microViews .dr-hd{display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-size:12.5px;font-weight:600;color:var(--txt);margin-bottom:8px}
#microViews .de-sub{font-size:11px;font-weight:400;color:var(--muted)}
#microViews .de-i{position:relative;font-size:12px;line-height:1.75;color:var(--text2,var(--txt));padding:2px 0 2px 2px}
#microViews .de-i b{color:var(--accent,#4f8cff);font-weight:600}
#microViews .de-i .da-amt{font-style:normal;margin-left:4px;padding:0 5px;border-radius:4px;font-size:11px;background:rgba(79,140,255,.12);color:var(--accent,#4f8cff)}
#microViews .dr-i{position:relative;font-size:12px;line-height:1.7;padding:3px 0 3px 14px;color:var(--text2,var(--txt))}
#microViews .dr-i::before{content:"";position:absolute;left:2px;top:10px;width:6px;height:6px;border-radius:50%;background:var(--muted)}
#microViews .dr-i.tone-warn::before{background:var(--warn,#f59e0b)}
#microViews .dr-i.tone-high::before,#microViews .dr-i.tone-danger::before{background:var(--red,#f5475c)}
#microViews .dr-i.tone-good::before{background:var(--green,#2bbf6a)}
#microViews .dr-i.tone-mid::before{background:var(--accent,#4f8cff)}
#microViews .dr-i b{color:var(--red,#f5475c);font-weight:600}

/* 2026-08-02 按需求关闭页面功能开发说明注释：全局隐藏 .hint 引导/说明文字（保留实时同步徽标 .live-badge 作为功能性状态反馈） */
/* 隐藏说明性说明文字；保留保存状态反馈（toast 浮层由 .sr-toast 承载，下面为内联"已保存"提示） */
.hint{display:none !important}
.hint.live-badge{display:inline-block !important}
#closeSaved,#posSnapStatus,#rolePermMsg,#annFetchStatus{display:inline-block !important}
#reportSavedNote{display:block !important}

/* ===== 收盘页：历史日期查询窗（2026-08-02 由 .hint 迁出，确保可见） ===== */
.close-date-lbl{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:12px;cursor:pointer}
.close-date-lbl input.r-date{padding:5px 8px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--text);font-size:13px}

/* ===== 收盘看板：大盘评级 / 大盘定调 / 今日日签 ===== */
.close-board{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:12px 0 16px}
@media (max-width:860px){ .close-board{grid-template-columns:repeat(2,1fr)} .close-board .board-card.daily{grid-column:1 / -1} }
@media (max-width:560px){ .close-board{grid-template-columns:1fr} .close-board .board-card.daily{grid-column:auto} }
.board-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px;min-height:160px;display:flex;flex-direction:column;gap:8px;position:relative;overflow:hidden}
.board-card.empty{opacity:.7;border-style:dashed}
.board-card .bd-title{font-size:12px;color:var(--muted);font-weight:500}
.board-card .bd-main{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:6px}
.board-card .bd-desc{font-size:12px;color:var(--muted);line-height:1.55}
/* 大盘评级圆环 */
.rating-ring{position:relative;width:96px;height:96px}
.rating-ring svg{width:96px;height:96px;transform:rotate(-90deg)}
.rating-ring .track{fill:none;stroke:var(--line);stroke-width:10}
.rating-ring .fill{fill:none;stroke:var(--up,#e5484d);stroke-width:10;stroke-linecap:round;transition:stroke-dasharray .5s ease}
.rating-score{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:2px;font-size:28px;font-weight:700;color:var(--text)}
.rating-score small{font-size:13px;font-weight:400;color:var(--muted)}
.rating-tag{display:inline-block;padding:2px 10px;border-radius:4px;background:var(--accent,#4f8cff);color:#fff;font-size:12px}
/* 四维共振 */
.four-d-text{font-size:18px;font-weight:700;color:var(--text);line-height:1.4;display:flex;align-items:center;justify-content:center;gap:4px}
.four-emo{font-size:18px;line-height:1;vertical-align:middle}
.four-kpis{display:flex;gap:16px;justify-content:center;margin:2px 0}
.four-kpis .fkpi{display:flex;flex-direction:column;align-items:center;gap:2px}
.four-kpis .fk-k{font-size:11px;color:var(--muted)}
.four-kpis .fk-v{font-size:16px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}
.four-d-dim{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:6px;width:100%}
.four-d-dim span{font-size:12px;padding:7px 0;border-radius:8px;font-weight:500;display:flex;align-items:center;justify-content:center;gap:5px;background:var(--panel2);border:0.5px solid var(--line);color:var(--muted)}
.four-d-dim span b{font-size:10px;font-weight:400;color:var(--muted)}
.four-d-dim span.up{background:rgba(229,72,77,.1);border:0.5px solid rgba(229,72,77,.25);color:#c73a3a}
.four-d-dim span.down{background:rgba(43,191,106,.1);border:0.5px solid rgba(43,191,106,.25);color:#1a9e5a}
.four-d-dim span.flat{background:var(--panel2);border:0.5px solid var(--line);color:var(--muted)}
/* 今日日签 */
.daily-card .bd-main{align-items:stretch}
.daily-date{display:flex;align-items:baseline;justify-content:center;gap:6px}
.daily-date .d-num{font-size:42px;font-weight:700;color:var(--text);line-height:1}
.daily-date .d-meta{text-align:left;font-size:11px;color:var(--muted);line-height:1.4}
.daily-trade{display:inline-block;margin:4px auto 0;padding:2px 10px;border-radius:10px;font-size:11px;background:var(--panel2);color:var(--muted)}
.daily-trade.trading-day{background:rgba(43,191,106,.12);color:var(--green,#2bbf6a)}
.daily-yiji{display:flex;gap:16px;justify-content:center;margin-top:6px}
.daily-yiji .yi, .daily-yiji .ji{display:flex;align-items:center;gap:4px;font-size:13px}
.daily-yiji .yi::before{content:'宜';display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:var(--up,#e5484d);color:#fff;font-size:10px}
.daily-yiji .ji::before{content:'忌';display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:var(--muted);color:#fff;font-size:10px}
.daily-quote{font-size:12px;color:var(--muted);font-style:italic;margin-top:6px}
.daily-dir{display:inline-block;margin:4px auto 0;padding:2px 10px;border-radius:10px;font-size:12px;font-weight:600}
.daily-dir.up{background:rgba(229,72,77,.12);color:var(--up,#e5484d)}
.daily-dir.down{background:rgba(43,191,106,.12);color:var(--green,#2bbf6a)}
.daily-dir.flat{background:var(--panel2);color:var(--muted)}
.daily-note{font-size:12px;color:var(--muted);margin-top:6px}
.release-log{display:flex;flex-direction:column;gap:8px;margin-top:4px}
.rl-item{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--panel)}
.rl-head{display:flex;align-items:center;gap:10px;padding:10px 12px;cursor:pointer;user-select:none}
.rl-head:hover{background:var(--panel2)}
.rl-ver{font-size:12px;font-weight:600;color:var(--accent,#3a6df0);font-family:ui-monospace,Menlo,Consolas,monospace;white-space:nowrap}
.rl-date{font-size:12px;color:var(--muted);white-space:nowrap}
.rl-title{font-size:13px;font-weight:500;flex:1;color:var(--text);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rl-toggle{font-size:12px;color:var(--muted);transition:transform .15s}
.rl-item.open .rl-toggle{transform:rotate(90deg)}
.rl-body{display:none;padding:0 12px 12px;border-top:1px solid var(--line)}
.rl-item.open .rl-body{display:block}
.rl-summary{font-size:12px;color:var(--text);line-height:1.6;margin:8px 0}
.rl-detail{font-size:12px;color:var(--muted);line-height:1.7;white-space:pre-wrap;background:var(--panel2);border-radius:8px;padding:8px 10px}

/* ===== 持仓个股重要公告提醒弹窗（2026-08-02：减持/异常波动/风险 → 弹窗，60s 自动关闭） ===== */
.ann-alert-box{max-width:620px;width:min(620px,94vw);border:1px solid var(--warn,#f0b429)}
.ann-alert-box .modal-head h3{color:var(--warn,#f0b429)}
.ann-alert-tip{font-size:12px;color:var(--muted);margin:0 0 10px}
.ann-alert-tip b{color:var(--up,#e5484d)}
.ann-alert-item{border:1px solid var(--line);border-left:3px solid var(--warn,#f0b429);border-radius:8px;padding:8px 10px;margin-bottom:8px;background:var(--panel2)}
.ann-alert-item.tone-减持{border-left-color:var(--up,#e5484d)}
.ann-alert-item.tone-异动{border-left-color:var(--warn,#f0b429)}
.ann-alert-item.tone-风险{border-left-color:#a855f7}
.ann-alert-item .aa-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:4px}
.ann-alert-item .aa-code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;color:var(--muted)}
.ann-alert-item .aa-name{font-weight:700;font-size:13px}
.ann-alert-item .aa-date{margin-left:auto;font-size:11px;color:var(--muted)}
.ann-alert-item .aa-title{font-size:12.5px;line-height:1.5;word-break:break-all}
.ann-alert-foot{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:10px 14px 12px;border-top:1px solid var(--line)}
.ann-alert-foot .aa-cd{font-size:11px;color:var(--muted)}
.tag.t-异动{background:var(--tag-warn-bg);color:var(--warn)}
.tag.t-风险{background:var(--tag-purple-bg);color:var(--purple);font-weight:700}
/* 交割单「移回持仓」撤销按钮（清仓录错时把该股移回持仓列表继续编辑） */
.liq-table .liq-undo{padding:2px 9px;border:1px solid var(--line);border-radius:6px;background:transparent;color:var(--muted);font-size:11px;font-family:inherit;cursor:pointer;white-space:nowrap;transition:.15s}
.liq-table .liq-undo:hover{border-color:var(--accent);color:var(--accent);background:rgba(79,140,255,.08)}
/* 仓位配置监控 redesign 2026-08-03：合并当前/目标卡 + 三层明细偏离金额表 */
.cm-overview{display:flex;justify-content:space-between;align-items:center;gap:10px;border:1px solid #c9c2e8;background:#f6f3fc;border-radius:8px;padding:10px 12px}
.cm-ov-row{display:flex;flex-direction:column;gap:2px}
.cm-ov-main{display:flex;align-items:baseline;gap:8px}
.cm-ov-cur{font-size:22px;font-weight:700;color:#333}
.cm-ov-sep{font-size:13px;color:#999}
.cm-ov-right{display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.cm-ov-state{font-size:12px;font-weight:600}
/* 四十一期：账户仓位总览合并卡（总资产/总市值/可用资金 + 今日盈亏 + 仓位总览 一卡） */
.cm-overview-card{border:1px solid var(--line,#e3e3e0);border-radius:12px;padding:12px 14px;background:linear-gradient(180deg,#fbfdff 0%,#f4f8fd 100%);box-shadow:0 1px 2px rgba(20,40,80,.04)}
.cm-oc-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.cm-oc-title{font-size:13px;font-weight:600;color:#2c3e57;letter-spacing:.3px}
.cm-oc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding-bottom:10px;border-bottom:1px dashed rgba(55,138,221,.25)}
.cm-oc-grid>div{display:flex;flex-direction:column;gap:3px;align-items:flex-start}
.cm-oc-grid b{font-size:15px;font-weight:700;color:#1f2d44;font-family:var(--mono,monospace)}
.cm-oc-k{font-size:11px;color:#8a93a6}
.cm-oc-line{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px;flex-wrap:wrap}
.cm-oc-day{display:flex;align-items:baseline;gap:6px}
.cm-oc-day b{font-size:16px;font-weight:700;font-family:var(--mono,monospace)}
.cm-oc-day b.up{color:#cf3a3a}
.cm-oc-day b.down{color:#3a9b5a}
.cm-oc-s{font-size:11px;color:#8a93a6}
.cm-oc-pos{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}
.cm-oc-cur{font-size:18px;font-weight:700;color:#1f2d44}
.cm-oc-sep{font-size:12px;color:#999}
.cm-oc-state{font-size:12px;font-weight:600}
.cm-jump-erp{font-size:11px;color:#3a6ea5;border:1px solid #bcd4f4;border-radius:12px;background:#fff;padding:3px 9px;cursor:pointer;white-space:nowrap}
.cm-jump-erp:hover{background:#eaf2fb}
.cm-layers{border:1px solid #e3e3e0;border-radius:8px;overflow:hidden;margin-top:4px}
.cm-layer-head,.cm-layer-row{display:grid;grid-template-columns:1.4fr .8fr .8fr 1fr 1fr 1.1fr .8fr;align-items:center;padding:8px 10px;font-size:12px}
.cm-layer-head{background:#fafafa;color:#666;font-size:11px;border-bottom:1px solid #eee}
.cm-layer-row{border-top:1px solid #f0f0f0;color:#333}
.cm-layer-row:nth-child(even){background:#fcfcfc}
.cm-layer-name{display:flex;align-items:center;gap:6px}
.cm-dot{display:inline-block;width:8px;height:8px;border-radius:2px;flex:none}
.cm-layer-stocks{background:#fafafa;border-top:1px dashed #e0e0e0}
.cm-layer-stock{display:grid;grid-template-columns:1.4fr 1fr 1fr;align-items:center;padding:6px 10px 6px 26px;font-size:11px;color:#555}
.cm-layer-stock:not(:first-child){border-top:1px dotted #eee}
.cm-ls-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cm-ls-amt{text-align:right;font-weight:500;color:#333}
.cm-ls-pct{text-align:right;color:#888}
.cm-num{text-align:right}
.cm-num.up{color:#BA7517}.cm-num.down{color:#639922}.cm-num.flat{color:#888}
.cm-act{text-align:center;font-weight:600}
.cm-act.up{color:#BA7517}.cm-act.down{color:#639922}.cm-act.flat{color:#888}
/* 三十八期 2026-08-03：账户快照卡 + 执行清单价位带 + 三类预警跳转提示 */
.cm-card.snap{flex:1.2;min-width:140px;border:1px solid #cdd7e6;background:#f3f7fc;border-radius:8px;padding:8px;text-align:left}
.cm-card.snap .cm-card-t{font-size:12px;color:#666;margin-bottom:4px}
.cm-snap{display:flex;justify-content:space-between;align-items:baseline;font-size:12px;padding:2px 0}
.cm-snap span{color:#888}
.cm-snap b{font-size:14px;font-weight:600;color:#333}
.cm-plan-bands{display:flex;gap:6px;flex-wrap:wrap;font-size:11px;padding:2px 0 6px 0;color:#666}
.cm-plan-bands .pp{padding:1px 6px;border-radius:5px;font-weight:500}
.cm-plan-bands .pp.cover{background:rgba(245,158,11,.13);color:var(--warn,#f59e0b)}
.cm-plan-bands .pp.tp{background:rgba(245,71,92,.13);color:var(--red,#f5475c)}
.cm-plan-bands .pp.stop{background:rgba(43,191,106,.13);color:var(--green,#2bbf6a)}
/* 三类预警视图：可点击跳转（hover 反馈） */
.ov-card[data-jump]:hover{box-shadow:0 0 0 2px #bcd4f4 inset}
.grp-title[data-mv]{cursor:pointer;transition:.15s}
.grp-title[data-mv]:hover{background:rgba(79,140,255,.08)}
.mv-jump{margin-left:auto;font-size:11px;font-weight:500;color:#3a6ea5;background:#eaf2fb;border:1px solid #bcd4f4;border-radius:10px;padding:1px 8px;white-space:nowrap}
.grp-title[data-mv] .mv-jump{margin-left:8px}
/* 三十九期 2026-08-03：账户快照卡改三列网格 + 三层配置表折叠 */
.cm-card.snap{flex:1;min-width:140px;border:1px solid #cdd7e6;background:#f3f7fc;border-radius:8px;padding:10px;text-align:left}
.cm-snap-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:8px}
.cm-snap-grid>div{display:flex;flex-direction:column;align-items:center;gap:3px}
.cm-snap-grid>div span{font-size:11px;color:var(--muted)}
.cm-snap-grid>div b{font-size:13px;font-weight:600;color:var(--txt)}
.cm-fold-head{display:flex;align-items:center;gap:8px;margin-top:10px;padding:10px 12px;background:#fafafa;border:1px solid #e3e3e0;border-radius:8px;cursor:pointer;font-size:13px;font-weight:500;color:#555;transition:background .15s}
.cm-fold-head:hover{background:#f3f3f3}
.cm-fold-arr{font-size:12px;color:#888;transition:transform .15s;display:inline-block}
.cm-fold-head.expanded .cm-fold-arr{transform:rotate(90deg)}
.cm-fold-hint{font-size:11px;color:#999;font-weight:400}
.cm-fold-btn{margin-left:auto;margin-right:8px;padding:4px 10px;font-size:11px;flex-shrink:0}
.cm-fold-btn:hover{background:#eaf2fb}
.cm-fold-body.collapsed{display:none}
.cm-fold-body .cm-layers{margin-top:0;border-radius:0 0 8px 8px}
/* 四十期 2026-08-03：文案精简 + 标题 nowrap + 今日盈亏横排 */
.cm-card.day .cm-card-body{display:flex;align-items:center;justify-content:center;gap:8px}
.cm-card.day .cm-card-v{margin:0;font-size:18px;font-weight:600}
.cm-card.day .cm-card-s{font-size:11px;color:var(--muted);white-space:nowrap;padding-top:2px}
.cm-card.snap .cm-card-t{display:none}
.cm-fold-t{white-space:nowrap}
.cm-fold-head{gap:10px}
.grp-title{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.grp-title-text{white-space:nowrap;flex-shrink:0;font-size:13px;font-weight:600}
.grp-title .badge{flex-shrink:0}
.grp-title .ln{flex-shrink:0}
.grp-title>[style*="color:var(--muted)"]{flex:1 1 auto;min-width:0}

/* ========== v51 今日日签 + 四维共振 + 扫描弹窗 ========== */
.macro-day-sign .day-sign-body{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:2px 0}
.ds-tone{font-size:20px;font-weight:700;padding:6px 14px;border-radius:8px;white-space:nowrap}
.ds-tone.up{background:rgba(245,71,92,.12);color:var(--up)}
.ds-tone.down{background:rgba(43,191,106,.12);color:var(--down)}
.ds-tone.neu{background:rgba(139,148,163,.12);color:var(--muted)}
.ds-bullets{display:flex;flex-wrap:wrap;gap:8px}
.ds-bullet{font-size:12px;color:var(--text2);background:var(--panel2);padding:4px 10px;border-radius:12px}
.ds-extra{margin-top:12px;padding-top:12px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:10px;align-items:flex-start}
.ds-judge{display:inline-flex;align-items:center;padding:6px 14px;border-radius:16px;font-size:15px;font-weight:700;background:rgba(139,148,163,.12);color:var(--muted)}
.ds-judge.up{background:rgba(245,71,92,.12);color:var(--up)}
.ds-judge.down{background:rgba(43,191,106,.12);color:var(--down)}
.ds-yiji{display:flex;flex-wrap:wrap;gap:16px;font-size:14px;color:var(--text2);align-items:center}
.ds-badge{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;margin-right:6px;font-size:12px;color:#fff;background:var(--muted)}
.ds-badge.yi{background:var(--up)}
.ds-badge.ji{background:#6b7280}
.ds-quote{font-size:13px;color:var(--muted);font-style:italic;padding-left:2px}
.four-dim-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.dim-card{background:var(--panel2);border-radius:10px;padding:12px;border-left:4px solid var(--muted)}
.dim-card.up{border-left-color:var(--up)}
.dim-card.down{border-left-color:var(--down)}
.dim-card.warn{border-left-color:var(--warn)}
.dim-card.neu{border-left-color:var(--muted)}
.dim-name{font-size:12px;color:var(--muted);margin-bottom:6px}
.dim-val{font-size:16px;font-weight:700;margin-bottom:6px;color:var(--txt)}
.dim-note{font-size:11px;color:var(--text2);line-height:1.35}
.four-dim-conclusion{margin-top:12px;padding:10px 14px;border-radius:8px;font-weight:600;text-align:center;font-size:14px}
.four-dim-conclusion.up{background:rgba(245,71,92,.10);color:var(--up)}
.four-dim-conclusion.down{background:rgba(43,191,106,.10);color:var(--down)}
.four-dim-conclusion.neu{background:rgba(139,148,163,.10);color:var(--muted)}
@media (max-width:720px){ .four-dim-grid{grid-template-columns:repeat(2,1fr)} .macro-day-sign .day-sign-body{gap:10px} }
@media (max-width:420px){ .four-dim-grid{grid-template-columns:1fr} }

/* 扫描工具：周期按钮文字隐藏 */
#stockFlowMetricSeg .sort-btn{font-size:0;min-width:26px;min-height:26px}
#stockFlowMetricSeg .sort-btn::after{content:attr(data-sfmetric);font-size:11px}

/* 扫描结果弹窗 */
.scan-result-modal{max-width:900px;width:96%}
.scan-result-modal .modal-body{padding:14px}
#scanResultBody .pos-table{font-size:12px}
#scanResultBody .pos-table th,#scanResultBody .pos-table td{padding:6px 8px}
#scanResultBody .add-fav{font-size:11px;padding:3px 8px;border-radius:6px;border:1px solid var(--border);background:var(--panel2);color:var(--txt);cursor:pointer}
#scanResultBody .add-fav.added{background:var(--up);color:#fff;border-color:var(--up)}
