/* AI 智能投研分析 · 全局样式（自 index.html 拆分 2026-10-20） */

  :root{
    --bg:#f6f7f9; --card:#ffffff; --border:#e5e7eb; --text:#1f2329; --sub:#646a73;
    --up:#d9382b; --down:#0f9d58; --accent:#b03a2e; --gold:#9a6b0f; --chip:#f2f3f5;
  }
  *{box-sizing:border-box;margin:0;padding:0}
  body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;font-size:14px}
  header{position:sticky;top:0;z-index:50;background:var(--card);border-bottom:1px solid var(--border);padding:10px 20px;display:flex;align-items:center;gap:16px}
  header h1{font-size:17px;color:var(--accent);font-weight:700;white-space:nowrap}
  header h1 span{color:var(--sub);font-size:12px;font-weight:400;margin-left:8px}
  .clock{margin-left:auto;font-size:12px;color:var(--sub);white-space:nowrap}
  .clock b{color:var(--text)}
  .layout{display:flex;min-height:calc(100vh - 49px)}
  aside{width:264px;flex-shrink:0;background:var(--card);border-right:1px solid var(--border);padding:14px;position:sticky;top:49px;height:calc(100vh - 49px);overflow-y:auto}
  main{flex:1;padding:16px 20px 40px;max-width:1280px;margin:0 auto}
  .card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:16px 18px;margin-bottom:16px}
  .card h3{font-size:15px;margin-bottom:12px;display:flex;align-items:center;gap:8px}
  .card h3::before{content:"";width:4px;height:14px;background:var(--accent);border-radius:2px}
  .searchbox{display:flex;gap:6px;margin-bottom:10px}
  .searchbox input{flex:1;border:1px solid var(--border);border-radius:6px;padding:7px 10px;font-size:13px;outline:none}
  .searchbox input:focus{border-color:var(--accent)}
  .btn{border:1px solid var(--border);background:var(--chip);border-radius:6px;padding:6px 12px;font-size:12px;cursor:pointer;color:var(--text)}
  .btn:hover{border-color:var(--accent);color:var(--accent)}
  .btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}
  .btn.primary:hover{opacity:.9;color:#fff}
  .btn.wl-in{border-color:var(--accent);color:var(--accent);background:#fdf6f5}
  .btn.wl-in:hover{color:#fff;background:var(--accent)}
  .kindchk{display:flex;gap:8px;font-size:12px;color:var(--sub);margin-bottom:10px;flex-wrap:wrap}
  .kindchk label{display:flex;align-items:center;gap:3px;cursor:pointer}
  .result-item{padding:8px 10px;border:1px solid var(--border);border-radius:8px;margin-bottom:6px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:6px}
  .result-item:hover{border-color:var(--accent);background:#fdf6f5}
  .result-item.top{border-color:var(--accent);background:#fdf6f5}
  .result-item .nm{font-size:13px;font-weight:600}
  .result-item .cd{font-size:11px;color:var(--sub)}
  .result-item .px{font-size:12px;text-align:right;white-space:nowrap}
  .res-group-hd{font-size:12px;color:var(--sub);font-weight:600;margin:10px 2px 6px;display:flex;justify-content:space-between;align-items:center}
  .res-count{font-weight:400;color:#9aa0a6;font-size:11px}
  .match-badge{font-size:10px;color:var(--sub);border:1px solid var(--border);border-radius:8px;padding:0 5px;margin-left:5px;white-space:nowrap}
  .match-badge.mt-exact{color:var(--up);border-color:#f2c4bd;background:#fdf0ee}
  .top-star{color:var(--accent);font-size:10px;margin-left:4px;font-weight:700}
  .tag{display:inline-block;padding:1px 7px;border-radius:10px;font-size:11px;background:var(--chip);color:var(--sub);margin-right:4px}
  aside h4{font-size:12px;color:var(--sub);margin:14px 0 8px;font-weight:600}
  .wl-item{display:flex;justify-content:space-between;align-items:center;padding:6px 8px;border-radius:6px;cursor:pointer;font-size:13px}
  .wl-item:hover{background:var(--chip)}
  .wl-item .del{color:var(--sub);font-size:11px;padding:0 4px}
  .wl-item .del:hover{color:var(--up)}
  .up{color:var(--up)} .down{color:var(--down)} .flat{color:var(--sub)}
  .idx-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
  .idx-card{border:1px solid var(--border);border-radius:8px;padding:10px 12px;background:#fff}
  .idx-card .nm{font-size:12px;color:var(--sub)}
  .idx-card .px{font-size:18px;font-weight:700;margin-top:2px}
  .idx-card .pct{font-size:12px}
  .stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px}
  .stat{border:1px solid var(--border);border-radius:8px;padding:10px 12px;background:#fff}
  .stat .k{font-size:12px;color:var(--sub)}
  .stat .v{font-size:16px;font-weight:700;margin-top:2px}
  .state-box{border-radius:8px;padding:12px 14px;margin-top:12px;font-size:13px;line-height:1.7}
  .state-box.attack{background:#fdf0ee;border:1px solid #f2c4bd}
  .state-box.warn{background:#fdf6e9;border:1px solid #f0dfae}
  .state-box.defense{background:#eef7f0;border:1px solid #bfe3cb}
  .state-box b{font-size:14px}
  .quote-head{display:flex;flex-wrap:wrap;align-items:flex-end;gap:14px;margin-bottom:6px}
  .quote-head .nm{font-size:20px;font-weight:700}
  .quote-head .cd{font-size:12px;color:var(--sub)}
  .quote-head .price{font-size:26px;font-weight:800}
  .kv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px 14px;margin-top:10px}
  .kv{font-size:12px;color:var(--sub);background:var(--chip);border-radius:8px;padding:8px 10px}
  .kv b{display:block;color:var(--text);font-size:14px;margin-top:1px}
  .chart{width:100%;height:380px}
  .chart-sm{width:100%;height:150px}
  .chart-md{width:100%;height:240px}
  .sig-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
  .sig{display:inline-flex;align-items:center;gap:4px;border-radius:6px;padding:4px 10px;font-size:12px;border:1px solid}
  .sig.bull{color:var(--up);border-color:#f2c4bd;background:#fdf0ee}
  .sig.bear{color:var(--down);border-color:#bfe3cb;background:#eef7f0}
  .sig.neu{color:var(--sub);border-color:var(--border);background:var(--chip)}
  .sig .st{font-size:10px;opacity:.75}
  .sigtable{width:100%;border-collapse:collapse;font-size:12px;margin-top:8px}
  .sigtable th,.sigtable td{border:1px solid var(--border);padding:6px 8px;text-align:left}
  .sigtable th{background:var(--chip);font-weight:600;color:var(--sub)}
  .score-wrap{display:grid;grid-template-columns:340px minmax(0,1fr);gap:16px}
  @media (max-width:760px){.score-wrap{grid-template-columns:1fr}}
  .gauge-box{width:100%;min-width:0}
  .chart-box{min-width:0;overflow:hidden}
  .chart-score{height:300px}
  .score-bars{height:300px;display:flex;flex-direction:column;justify-content:center;padding:8px 4px}
  .sb-row{display:flex;align-items:center;gap:10px;margin-bottom:13px}
  .sb-row:last-child{margin-bottom:0}
  .sb-label{width:66px;font-size:12px;color:var(--sub);text-align:right;flex:none}
  .sb-track{flex:1;height:14px;background:#f1f3f5;border-radius:4px;position:relative}
  .sb-zero{position:absolute;left:50%;top:-2px;bottom:-2px;width:1px;background:#d4d8dd}
  .sb-fill{position:absolute;top:0;bottom:0;border-radius:3px;min-width:2px}
  .sb-val{width:52px;font-size:12px;font-weight:600;flex:none;text-align:right}
  .plan-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
  .plan-item{border:1px solid var(--border);border-radius:8px;padding:10px 12px}
  .plan-item .k{font-size:12px;color:var(--sub)}
  .plan-item .v{font-size:16px;font-weight:700;margin-top:2px}
  .plan-item .s{font-size:11px;color:var(--sub);margin-top:3px}
  ul.notes{margin:8px 0 0 18px;font-size:12px;color:var(--sub);line-height:1.9}
  .disc{font-size:11px;color:var(--sub);background:var(--chip);border-radius:8px;padding:10px 14px;line-height:1.8;margin-top:18px}
  .mi{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:50%;border:1px solid #c9cdd4;background:#fff;color:#8a9099;font-size:9px;font-weight:700;margin-left:4px;cursor:help;vertical-align:1px;position:relative;font-style:normal;line-height:1;flex:none;transition:all .15s}
  .mi:hover{border-color:var(--accent);background:var(--accent);color:#fff;transform:scale(1.12)}
  .mi:hover::after{content:attr(data-tip);position:absolute;left:50%;bottom:calc(100% + 8px);transform:translateX(-50%);background:#26292e;color:#fff;font-size:11.5px;line-height:1.7;padding:9px 12px;border-radius:8px;width:max-content;max-width:260px;white-space:normal;z-index:999;box-shadow:0 4px 18px rgba(0,0,0,.25);pointer-events:none;font-weight:400}
  .mi:hover::before{content:'';position:absolute;left:50%;bottom:calc(100% + 3px);transform:translateX(-50%);border:5px solid transparent;border-top-color:#26292e;z-index:999}
  /* 表格内角标：原生 title 方案（视觉同 mi，但无自定义 tooltip——overflow 容器会裁切/错位） */
  .mi-t{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:50%;border:1px solid #c9cdd4;background:#fff;color:#8a9099;font-size:9px;font-weight:700;margin-left:4px;cursor:help;vertical-align:1px;position:relative;font-style:normal;line-height:1;flex:none;transition:all .15s}
  .mi-t:hover{border-color:var(--accent);background:var(--accent);color:#fff}
  .gl-item{font-size:12px;color:var(--sub);line-height:1.7;padding:7px 10px;border:1px solid var(--border);border-radius:8px;background:#fff}
  .gl-item b{color:var(--text);font-weight:600}

  /* 指标参数说明独立页 */
  .gl-entry{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;font-size:13px;color:var(--sub)}
  .gl-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap}
  .gl-tools{flex:1;min-width:220px;max-width:380px}
  .gl-tools input{width:100%;border:1px solid var(--border);border-radius:8px;padding:8px 12px;font-size:13px;outline:none}
  .gl-tools input:focus{border-color:var(--accent)}
  .gl-chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
  .gl-chip{border:1px solid var(--border);border-radius:999px;padding:4px 12px;font-size:12px;color:var(--sub);cursor:pointer;background:var(--card);user-select:none}
  .gl-chip:hover{border-color:var(--accent);color:var(--accent)}
  .gl-chip.on{background:var(--accent);border-color:var(--accent);color:#fff}
  .gl-card h3{align-items:baseline}
  .gl-desc{font-size:11px;color:var(--t3);font-weight:400;margin-left:8px}
  .gl-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:10px}
  .gl-row{background:var(--chip);border-radius:8px;padding:10px 12px}
  .gl-k{font-size:13px;font-weight:600;margin-bottom:3px}
  .gl-v{font-size:12px;color:var(--sub);line-height:1.75}
  .gl-v mark{background:#fdf6e9;color:#854F0B;padding:0 1px;border-radius:2px}
  .hidden{display:none!important}
  .empty{padding:40px;text-align:center;color:var(--sub);font-size:13px}
  .row2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
  @media (max-width:900px){.row2{grid-template-columns:1fr}.layout{flex-direction:column}aside{width:100%;position:static;height:auto}}

  /* ================= 设计令牌（UI 方案 v1.0/v2.0） ================= */
  :root{
    --warn:#c98a12; --t3:#8f959e; --bg-page:#f7f8fa;
    --up-bg:#fcebeb; --down-bg:#eaf3de;
  }
  .num{font-variant-numeric:tabular-nums}

  /* 顶栏行情时钟条 */
  .mk-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--card);border:1px solid var(--border);border-radius:8px;padding:7px 14px;margin-bottom:12px;font-size:12px;color:var(--sub)}
  .mk-bar .t{font-size:15px;font-weight:700;color:var(--text)}
  .mk-badge{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:2px 9px;font-size:11px}
  .mk-badge.open{background:var(--up-bg);color:#a32d2d}
  .mk-badge.close{background:var(--chip);color:var(--sub)}
  .mk-badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor}
  .mk-badge.open .dot{animation:pulse 1.6s infinite}
  @keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}

  /* L1 市场决策条 */
  .decision{background:var(--card);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:10px;padding:14px 18px;margin-bottom:12px;display:flex;gap:20px;align-items:center;flex-wrap:wrap}
  .decision .d-body{flex:1;min-width:210px}
  .badge-state{display:inline-block;color:#fff;font-size:12px;border-radius:999px;padding:3px 11px}
  .badge-state.bs-attack{background:var(--accent)}
  .badge-state.bs-warn{background:var(--warn)}
  .badge-state.bs-defense{background:var(--down)}
  .decision .advice{font-size:15px;font-weight:600;margin:6px 0 2px}

  /* 指数带 */
  .idx-strip{display:flex;gap:10px;overflow-x:auto;padding:2px 2px 4px}
  .idx-chip{border:1px solid var(--border);border-radius:8px;padding:8px 11px;background:#fff;min-width:118px;flex:none}
  .idx-chip .nm{font-size:11px;color:var(--t3)}
  .idx-chip .px{font-size:17px;font-weight:700;margin-top:1px}
  .idx-chip .pct{font-size:11px;border-radius:3px;padding:0 4px;display:inline-block}
  .pct.up{background:var(--up-bg);color:#a32d2d}
  .pct.down{background:var(--down-bg);color:#0f6e56}

  /* 紧凑表格（v2.0 密度规范） */
  .cmp-table{width:100%;border-collapse:collapse;font-size:12px}
  .cmp-table th{font-size:11px;color:var(--t3);font-weight:400;text-align:left;padding:6px 8px;background:var(--chip)}
  .cmp-table td{padding:7px 8px;border-bottom:1px solid #f2f3f5;vertical-align:middle}
  .cmp-table tr:nth-child(even) td{background:#fafbfc}
  .cmp-table tr:hover td{background:#fdf6f5}
  .cmp-table .r{text-align:right}
  .cmp-table .c{text-align:center}
  .grip{color:#c9cdd4;cursor:grab;user-select:none}
  .row-del{color:var(--t3);cursor:pointer;visibility:hidden}
  .cmp-table tr:hover .row-del{visibility:visible}
  .row-del:hover{color:var(--up)}
  .wl-name{font-weight:600;cursor:pointer;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .wl-name:hover{color:var(--accent)}
  .wl-code{color:var(--t3);font-size:11px;flex:none}
  .wl-table{table-layout:fixed}
  .wl-table td{padding:6px 6px 5px}
  .wl-line1{display:flex;align-items:center;gap:5px;font-size:13px;line-height:1.3}
  .wl-line2{display:flex;align-items:center;gap:6px;margin-top:3px;font-size:12px}
  .wl-line2 .num{font-size:12px;color:var(--sub)}
  .wl-line2 .pct{padding:0 4px}
  .wl-kind{font-size:10px;border-radius:3px;padding:0 4px;background:var(--chip);color:var(--sub);flex:none}
  .wl-hold{font-size:10px;border-radius:3px;padding:0 4px;background:#fdf6e9;color:#854F0B;border:1px solid #f0dfae;flex:none}
  .wl-sig{font-size:10px;border-radius:4px;padding:1px 5px;white-space:nowrap}
  .wl-sig.bull{color:#a32d2d;background:var(--up-bg)}
  .wl-sig.bear{color:#0f6e56;background:var(--down-bg)}
  .wl-sig.neu{color:var(--sub);background:var(--chip)}
  .wl-star{color:var(--accent);cursor:pointer;margin-right:2px}
  .wl-star.off{color:#c9cdd4}

  /* segmented control */
  .seg{display:inline-flex;border:1px solid var(--border);border-radius:6px;overflow:hidden}
  .seg span{font-size:11px;padding:2px 10px;color:var(--sub);cursor:pointer;border-left:1px solid var(--border)}
  .seg span:first-child{border-left:none}
  .seg span.on{background:var(--accent);color:#fff}

  /* 分析页结论头图 + 信号结论条 */
  .conclusion{background:var(--card);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:10px;padding:13px 18px;margin-bottom:12px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px}
  .conclusion .nm{font-size:15px;font-weight:700}
  .badge-rating{display:inline-block;color:#fff;font-size:12px;border-radius:999px;padding:3px 11px;background:var(--accent)}
  .badge-rating.br-good{background:#c0392b}
  .badge-rating.br-mid{background:var(--warn)}
  .badge-rating.br-hold{background:#5f6b7a}
  .badge-rating.br-bad{background:var(--down)}
  .badge-src{font-size:11px;color:var(--t3);border:1px solid var(--border);border-radius:4px;padding:1px 6px}
  .sumbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--card);border:1px solid var(--border);border-radius:8px;padding:9px 14px;margin-bottom:12px;font-size:12px}
  .sumbar .net{font-size:16px;font-weight:700}

  /* 行内持仓表单 */
  .hold-inline{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
  .hold-inline input{width:88px;border:1px solid var(--border);border-radius:6px;padding:5px 8px;font-size:13px;outline:none}
  .hold-inline input:focus{border-color:var(--accent)}

  /* 涨跌闪烁动效（可被减弱动效关闭） */
  @keyframes fup{from{background:var(--up-bg)}to{background:transparent}}
  @keyframes fdown{from{background:var(--down-bg)}to{background:transparent}}
  .flash-up{animation:fup .9s ease-out}
  .flash-down{animation:fdown .9s ease-out}
  @media (prefers-reduced-motion:reduce){.flash-up,.flash-down,.mk-badge.open .dot{animation:none}}

  /* ================= 响应式三断点（UI 方案 v2.0） ================= */
  @media (max-width:1280px){
    main{max-width:100%}
    .score-wrap{grid-template-columns:300px minmax(0,1fr)}
  }
  @media (max-width:1024px){
    .score-wrap{grid-template-columns:1fr}
    .chart-score{height:260px}
    .score-bars{height:260px}
  }
  @media (max-width:900px){
    aside{width:100%;position:static;height:auto;border-right:none;border-bottom:1px solid var(--border)}
    .row2{grid-template-columns:1fr}
    main{padding:12px 14px 32px}
  }
  @media (max-width:768px){
    header{padding:8px 12px;gap:8px}
    header h1{font-size:15px}
    header h1 span{display:none}
    .clock{font-size:11px}
    .card{padding:12px 14px}
    .chart{height:300px}
    .chart-md{height:200px}
    .chart-sm{height:120px}
    .chart-score{height:250px}
    .score-bars{height:250px}
    .decision{padding:12px 14px;gap:12px}
    .decision .advice{font-size:14px}
    .plan-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
    .stat-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}
    .conclusion{padding:12px 14px}
    .conclusion .price{font-size:22px!important}
    .sigtable{font-size:11px}
    .mk-bar{padding:6px 10px;gap:6px}
    .idx-chip{min-width:104px}
    #holdings-overview{overflow-x:auto}
    .wl-code{display:none}
  }

  /* ================= AI 投资建议卡 ================= */
  .ai-card{border-left:3px solid var(--accent)}
  .ai-head{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}
  .ai-head .t{font-size:15px;font-weight:600;display:flex;align-items:center;gap:8px}
  .ai-model{font-size:10px;color:var(--t3);border:0.5px solid var(--border);border-radius:4px;padding:1px 6px}
  .ai-badge{display:inline-block;color:#fff;font-size:12px;border-radius:999px;padding:2px 11px}
  .ai-badge.b-hold{background:#5F6B7A}
  .ai-badge.b-add{background:#B03A2E}
  .ai-badge.b-cut{background:#0F9D58}
  .ai-badge.b-clear{background:#0B6B3A}
  .ai-badge.b-watch{background:#8F959E}
  .ai-state{background:var(--chip);border-radius:8px;padding:12px 14px;font-size:13px;color:var(--sub);line-height:1.8}
  .ai-state .warn{color:#854F0B;background:#FDF6E9;border:1px solid #F0DFAE;border-radius:6px;padding:2px 8px;display:inline-block;font-size:12px}
  .ai-body{font-size:13px;line-height:1.85;max-height:540px;overflow-y:auto;padding-right:6px;color:#1F2329}
  .ai-body h4{font-size:14px;font-weight:600;margin:14px 0 6px;color:var(--text);padding-bottom:4px;border-bottom:0.5px solid #F2F3F5}
  .ai-body h4:first-child{margin-top:0}
  .ai-body h5{font-size:13px;font-weight:600;margin:10px 0 4px;color:var(--sub)}
  .ai-body ul{margin:4px 0 8px 18px}
  .ai-body li{margin:2px 0}
  .ai-body strong{font-weight:600}
  .ai-table{width:100%;border-collapse:collapse;font-size:12px;margin:8px 0}
  .ai-table th{background:var(--chip);font-weight:500;color:var(--sub)}
  .ai-table th,.ai-table td{border:0.5px solid var(--border);padding:5px 8px;text-align:left;vertical-align:top}
  .ai-cursor{display:inline-block;width:2px;height:14px;background:var(--accent);vertical-align:-2px;margin-left:2px;animation:aiblink 1s infinite}
  @keyframes aiblink{0%,100%{opacity:1}50%{opacity:0}}
  .ai-meta{font-size:11px;color:var(--t3);border-top:0.5px solid #F2F3F5;margin-top:10px;padding-top:8px;display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;align-items:center}
  .ai-actions{display:flex;gap:6px}
  .ai-btn{border:0.5px solid var(--border);background:#fff;border-radius:6px;padding:3px 10px;font-size:11px;color:var(--sub);cursor:pointer}
  .ai-btn:hover{border-color:var(--accent);color:var(--accent)}
  .ai-btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;padding:6px 14px;font-size:12px}
  .ai-btn.primary:hover{opacity:.9;color:#fff}
  .ai-btn:disabled{opacity:.5;cursor:not-allowed}
  .ai-disclaimer{font-size:10px;color:var(--t3);margin-top:6px;line-height:1.6}
  @media (prefers-reduced-motion:reduce){.ai-cursor{animation:none}}
