:root{
    --bg:#0f1117;
    --panel:#171a21;
    --panel2:#1d212b;
    --text:#e6e8ee;
    --muted:#9aa3b2;
    --border:#272c38;
    --notion:#e6e8ee;
    --coda:#7c5cff;
    --craft:#3aa675;
    --high:#ef4444;
    --medium:#f59e0b;
    --low:#38bdf8;
  }
  *{box-sizing:border-box;}
  html,body{margin:0;padding:0;}
  body{
    background:var(--bg);
    color:var(--text);
    font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,"PingFang SC","Microsoft YaHei",sans-serif;
    line-height:1.55;
    font-size:15px;
  }
  .wrap{max-width:min(1480px,96%);width:100%;box-sizing:border-box;margin:0 auto;padding:24px 18px 60px;}
  h1,h2,h3{margin:0;font-weight:600;}
  a{color:var(--coda);}

  /* Header */
  header{padding:8px 0 22px;border-bottom:1px solid var(--border);position:relative;}
  .title{font-size:26px;letter-spacing:.5px;}
  .subtitle{color:var(--muted);font-size:14px;margin-top:4px;}
  .gen-date{color:var(--muted);font-size:12px;margin-top:6px;}
  .win-note{color:var(--accent);font-size:12px;margin-top:2px;opacity:.85;}
  .chips{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px;}
  .chip{
    display:flex;align-items:center;gap:8px;
    background:var(--panel);border:1px solid var(--border);
    border-radius:999px;padding:8px 14px;font-weight:600;
  }
  .chip .dot{width:10px;height:10px;border-radius:50%;}
  .chip.high .dot{background:var(--high);}
  .chip.medium .dot{background:var(--medium);}
  .chip.low .dot{background:var(--low);}
  .chip .num{font-size:18px;}
  .chip .lbl{color:var(--muted);font-weight:500;font-size:13px;}
  .callout{
    margin-top:18px;background:var(--panel);border-left:4px solid var(--coda);
    padding:14px 16px;border-radius:8px;color:var(--text);
  }
  .callout .k{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:1px;}

  /* Sections */
  section{margin-top:34px;}
  .sec-title{font-size:18px;margin-bottom:14px;display:flex;align-items:center;gap:10px;}
  .sec-title .bar{width:4px;height:18px;background:var(--coda);border-radius:2px;}

  /* Top moves */
  .topmove{
    display:flex;gap:12px;background:var(--panel);border:1px solid var(--border);
    border-radius:10px;padding:13px 15px;margin-bottom:10px;align-items:flex-start;
  }
  .topmove .rank{
    flex:0 0 28px;height:28px;border-radius:8px;background:var(--coda);
    color:#fff;font-weight:700;display:flex;align-items:center;justify-content:center;font-size:14px;
  }
  .topmove .mv{color:var(--text);}

  /* Filters */
  .filters{display:flex;gap:18px;flex-wrap:wrap;margin-bottom:8px;}
  .fgroup{display:flex;flex-direction:column;gap:6px;}
  .fgroup .gl{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--muted);}
  .fbtns{display:flex;gap:6px;flex-wrap:wrap;}
  .fbtn{
    background:var(--panel);border:1px solid var(--border);color:var(--muted);
    padding:6px 12px;border-radius:8px;cursor:pointer;font-size:13px;font-family:inherit;
    transition:.15s;
  }
  .fbtn:hover{color:var(--text);border-color:var(--coda);}
  .fbtn.active{background:var(--coda);color:#fff;border-color:var(--coda);}
  .fbtn.active.c-notion{background:var(--notion);color:#15171d;border-color:var(--notion);}
  .fbtn.active.c-coda{background:var(--coda);color:#fff;border-color:var(--coda);}
  .fbtn.active.c-craft{background:var(--craft);color:#fff;border-color:var(--craft);}
  .fbtn.active.c-high{background:var(--high);color:#fff;border-color:var(--high);}
  .fbtn.active.c-medium{background:var(--medium);color:#15171d;border-color:var(--medium);}
  .fbtn.active.c-low{background:var(--low);color:#15171d;border-color:var(--low);}

  /* Timeline */
  .timeline{position:relative;margin-left:8px;padding-left:26px;border-left:2px solid var(--border);}
  .tnode{position:relative;margin-bottom:16px;}
  .tnode .tl-dot{
    position:absolute;left:-35px;top:6px;width:14px;height:14px;border-radius:50%;
    border:2px solid var(--bg);
  }
  .tnode .tl-date{font-size:12px;color:var(--muted);}
  .tnode .tl-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:2px;}
  .tnode .tl-item{font-weight:600;}
  .tnode .tl-ev{color:var(--muted);font-size:13px;margin-top:2px;}

  /* Cards */
  .cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;}
  .card{
    background:var(--panel);border:1px solid var(--border);border-radius:12px;
    padding:15px;display:flex;flex-direction:column;gap:10px;
  }
  .card .top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
  .badge{
    font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;
    border:1px solid var(--border);
  }
  .badge.notion{color:var(--notion);border-color:var(--notion);}
  .badge.coda{color:var(--coda);border-color:var(--coda);background:rgba(124,92,255,.12);}
  .badge.craft{color:var(--craft);border-color:var(--craft);background:rgba(58,166,117,.12);}
  .impact{font-size:11px;font-weight:700;padding:3px 10px;border-radius:999px;color:#fff;letter-spacing:.5px;}
  .impact.high{background:var(--high);}
  .impact.medium{background:var(--medium);color:#15171d;}
  .impact.low{background:var(--low);color:#15171d;}
  .type-lbl{font-size:11px;color:var(--muted);margin-left:auto;font-family:ui-monospace,Menlo,Consolas,monospace;}
  .card .c-title{font-size:16px;font-weight:700;}
  .ba{
    background:var(--panel2);border:1px solid var(--border);border-radius:8px;
    padding:8px 10px;font-size:13px;display:flex;gap:8px;flex-wrap:wrap;align-items:center;
  }
  .ba .b{color:var(--muted);}
  .ba .arrow{color:var(--coda);}
  .ba .af{color:var(--text);font-weight:600;}
  .card .row{font-size:13px;}
  .card .row .lbl{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:1px;display:block;margin-bottom:3px;}
  .card .ev{color:var(--text);}
  .card .rat{color:var(--muted);}
  .resp{
    background:rgba(124,92,255,.08);border:1px solid rgba(124,92,255,.35);
    border-radius:8px;padding:10px 12px;font-size:13px;
  }
  .resp .lbl{color:var(--coda);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1px;display:block;margin-bottom:3px;}

  /* Per-competitor summary */
  .cslist{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;}
  .csum{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:15px;}
  .csum .ch{display:flex;align-items:center;gap:10px;margin-bottom:8px;}
  .csum .cname{font-size:16px;font-weight:700;}
  .csum .cic{display:flex;gap:6px;margin-left:auto;}
  .csum .ci{font-size:11px;padding:2px 8px;border-radius:999px;font-weight:700;color:#fff;}
  .csum .ci.high{background:var(--high);}
  .csum .ci.medium{background:var(--medium);color:#15171d;}
  .csum .ci.low{background:var(--low);color:#15171d;}
  .csum .txt{color:var(--muted);font-size:13px;}

  .empty{padding:30px;text-align:center;color:var(--muted);}
  footer{margin-top:40px;padding-top:18px;border-top:1px solid var(--border);color:var(--muted);font-size:12px;}

  /* ===== 特效与表格增强 ===== */
  /* 背景极光 */
  body::before{
    content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
    background:
      radial-gradient(60% 50% at 15% 0%, rgba(124,92,255,.16), transparent 60%),
      radial-gradient(50% 50% at 90% 10%, rgba(58,166,117,.14), transparent 60%),
      radial-gradient(45% 45% at 50% 100%, rgba(56,189,248,.10), transparent 60%);
    animation:aurora 16s ease-in-out infinite alternate;
    filter:blur(8px);
  }
  @keyframes aurora{
    0%{transform:translate3d(0,0,0) scale(1);}
    50%{transform:translate3d(2%,-2%,0) scale(1.05);}
    100%{transform:translate3d(-2%,2%,0) scale(1.02);}
  }
  /* 入场动画（滚动揭示改为 GSAP 管理；.in 仅作“已揭示”终态标记） */
  @keyframes fadeUp{from{opacity:0;transform:translateY(18px);}to{opacity:1;transform:none;}}
  .reveal{opacity:0;}
  .reveal.in{opacity:1;}
  /* 卡片悬浮辉光（transform 上浮由 GSAP 管理，避免 CSS/GSAP 冲突） */
  .card{transition:box-shadow .2s ease, border-color .2s ease;}
  .card:hover{border-color:var(--coda);box-shadow:0 12px 30px -12px rgba(124,92,255,.5);}
  .topmove{transition:border-color .18s ease;}
  .topmove:hover{border-color:var(--coda);}
  .csum{transition:box-shadow .2s ease;}
  .csum:hover{box-shadow:0 10px 26px -14px rgba(124,92,255,.45);}
  /* 时间线节点脉冲 */
  @keyframes pulse{0%{box-shadow:0 0 0 0 rgba(124,92,255,.55);}70%{box-shadow:0 0 0 9px rgba(124,92,255,0);}100%{box-shadow:0 0 0 0 rgba(124,92,255,0);}}
  .tnode .tl-dot{animation:pulse 2.4s infinite;}
  /* 影响分布进度条 */
  .impact-bars{display:flex;flex-direction:column;gap:10px;margin-top:14px;}
  .ibar{display:grid;grid-template-columns:48px 1fr 40px;gap:10px;align-items:center;font-size:13px;}
  .ibar .track{height:10px;background:var(--panel2);border-radius:999px;overflow:hidden;border:1px solid var(--border);}
  .ibar .fill{height:100%;border-radius:999px;transition:width 1.1s cubic-bezier(.22,.61,.36,1);width:0;}
  .ibar.high .fill{background:var(--high);}
  .ibar.medium .fill{background:var(--medium);}
  .ibar.low .fill{background:var(--low);}
  .ibar .val{text-align:right;font-weight:700;}
  /* 表格 */
  .tbl-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:12px;background:var(--panel);}
  /* 表格/图表滚动容器：细滚动条（移动端横滑体验） */
  .tbl-wrap::-webkit-scrollbar,.lk-wrap::-webkit-scrollbar,.quad-wrap::-webkit-scrollbar,.health-tbl-wrap::-webkit-scrollbar{height:6px;width:6px;}
  .tbl-wrap::-webkit-scrollbar-thumb,.lk-wrap::-webkit-scrollbar-thumb,.quad-wrap::-webkit-scrollbar-thumb,.health-tbl-wrap::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px;}
  .tbl-wrap::-webkit-scrollbar-thumb:hover,.lk-wrap::-webkit-scrollbar-thumb:hover,.quad-wrap::-webkit-scrollbar-thumb:hover,.health-tbl-wrap::-webkit-scrollbar-thumb:hover{background:var(--muted);}
  .tbl-wrap::-webkit-scrollbar-track,.lk-wrap::-webkit-scrollbar-track,.quad-wrap::-webkit-scrollbar-track,.health-tbl-wrap::-webkit-scrollbar-track{background:transparent;}
  table.tbl{border-collapse:collapse;width:100%;font-size:13.5px;min-width:520px;}
  table.tbl th,table.tbl td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--border);}
  table.tbl thead th{
    position:sticky;top:0;background:var(--panel2);color:var(--muted);
    font-weight:700;letter-spacing:.5px;font-size:11px;z-index:1;
  }
  table.tbl tbody tr{transition:background .15s ease;}
  table.tbl tbody tr:hover{background:var(--panel2);}
  table.tbl tbody tr:last-child td{border-bottom:none;}
  table.tbl td.comp{font-weight:700;}
  .pill{display:inline-block;font-size:11px;font-weight:700;padding:2px 9px;border-radius:999px;color:#fff;}
  .pill.high{background:var(--high);}
  .pill.medium{background:var(--medium);color:#15171d;}
  .pill.low{background:var(--low);color:#15171d;}
  .up{color:var(--high);font-weight:700;}
  .cell-yes{color:var(--craft);}
  .cell-no{color:var(--muted);}
  .price-m{font-weight:700;}
  .price-sub{color:var(--muted);font-size:11px;}
  .tbl-note{color:var(--muted);font-size:12px;margin-top:8px;}
  /* 迷你涨跌柱 */
  .mini-bar-track{display:inline-block;width:72px;height:6px;background:var(--panel2);border:1px solid var(--border);border-radius:999px;vertical-align:middle;margin-right:8px;overflow:hidden;}
  .mini-bar{display:block;height:100%;width:0;border-radius:999px;transition:width 1s cubic-bezier(.22,.61,.36,1);}
  /* 导出 CSV 按钮 */
  .csv-btn{margin-left:auto;border:1px solid var(--border);background:var(--panel2);color:var(--muted);font-size:12px;padding:4px 13px;border-radius:8px;cursor:pointer;transition:all .15s ease;white-space:nowrap;}
  .csv-btn:hover{border-color:var(--coda);color:var(--text);box-shadow:0 0 0 3px rgba(124,92,255,.15);}
  .csv-btn:active{transform:translateY(1px);}
  /* 涨跌条 tooltip */
  .mini-bar-track{position:relative;cursor:help;}
  .mini-bar-track::after{
    content:attr(data-tip);position:absolute;left:50%;bottom:165%;
    transform:translateX(-50%) translateY(4px);
    background:#1b1f29;color:var(--text);border:1px solid var(--border);
    padding:5px 9px;border-radius:8px;font-size:11px;white-space:nowrap;
    opacity:0;pointer-events:none;transition:opacity .15s ease,transform .15s ease;
    box-shadow:0 8px 20px -8px rgba(0,0,0,.6);z-index:30;
  }
  .mini-bar-track:hover::after{opacity:1;transform:translateX(-50%) translateY(0);}
  /* 分享图按钮 */
  .share-btn{margin-left:14px;border:1px solid var(--coda);background:rgba(124,92,255,.14);color:#cdbcff;font-size:12px;padding:5px 14px;border-radius:8px;cursor:pointer;transition:all .15s ease;vertical-align:middle;}
  .share-btn:hover{background:rgba(124,92,255,.26);box-shadow:0 0 0 3px rgba(124,92,255,.18);}
  .share-btn:disabled{opacity:.6;cursor:wait;}
  /* 截图模式：隐藏装饰/交互、强制显示所有揭示元素 */
  .capturing::before{display:none!important;}
  .capturing .reveal{opacity:1!important;animation:none!important;}
  .capturing *{animation:none!important;}
  .capturing .csv-btn,.capturing .share-btn,.capturing .fbtns,.capturing .chart-btn,.capturing .llm-model-pick,.capturing .calc-btn,.capturing .llm-search{display:none!important;}
  /* 大模型竞品分析（DeepSeek 视角） */
  .llm-persp{background:linear-gradient(135deg,rgba(124,92,255,.12),rgba(58,166,117,.08));border:1px solid var(--border);border-radius:14px;padding:16px 18px;margin-bottom:14px;}
  .llm-persp .k{font-weight:700;color:var(--coda);margin-bottom:8px;font-size:15px;}
  .llm-persp > div{color:var(--text);line-height:1.65;}
  .llm-persp ul{margin:8px 0 0;padding-left:18px;}
  .llm-persp li{margin:6px 0;line-height:1.6;color:var(--text);}
  .llm-filters{display:flex;gap:8px;margin:6px 0 12px;flex-wrap:wrap;}
  .llm-filters button{font:inherit;font-size:13px;padding:6px 14px;border-radius:20px;border:1px solid var(--border);background:var(--panel);color:var(--muted);cursor:pointer;transition:.2s;}
  .llm-filters button.active{background:var(--coda);color:#fff;border-color:var(--coda);}
  .region{display:inline-block;font-size:11px;padding:1px 8px;border-radius:10px;margin-left:6px;vertical-align:middle;}
  .region.cn{background:rgba(80,200,120,.18);color:#5fd98a;}
  .region.global{background:rgba(120,150,255,.18);color:#9db4ff;}
  .self-row td:first-child{box-shadow:inset 3px 0 0 var(--coda);}
  .self-badge{font-size:10px;padding:1px 6px;border-radius:8px;background:var(--coda);color:#fff;margin-left:6px;vertical-align:middle;white-space:nowrap;}
  .llm-tbl td.note{color:var(--muted);font-size:13px;min-width:240px;line-height:1.5;}
  .llm-tbl td.num{white-space:nowrap;}
  .muted-sub{color:var(--muted);font-size:12px;margin:4px 0 0;}
  /* 图表（内联 SVG / CSS，无外部依赖） */
  .viz-impact{display:flex;gap:22px;flex-wrap:wrap;align-items:center;}
  .donut{display:block;}
  .donut text{fill:var(--text);}
  .d-num{font-size:26px;font-weight:700;}
  .d-lbl{font-size:12px;fill:var(--muted);}
  .donut-legend{display:flex;flex-direction:column;gap:7px;font-size:13px;color:var(--muted);}
  .donut-legend span{display:flex;align-items:center;gap:7px;}
  .donut-legend i{width:11px;height:11px;border-radius:3px;display:inline-block;}
  .sb-wrap{flex:1;min-width:260px;}
  .sb-row{display:flex;align-items:center;gap:10px;margin:9px 0;}
  .sb-name{width:66px;font-size:13px;color:var(--text);}
  .sb-track{display:flex;flex:1;height:18px;border-radius:9px;overflow:hidden;background:var(--panel2);}
  .sb.seg-high{background:var(--high);}
  .sb.seg-medium{background:var(--medium);}
  .sb.seg-low{background:var(--low);}
  .sb-tot{width:26px;text-align:right;font-size:13px;color:var(--muted);}
  .llm-charts{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:8px 0 14px;}
  .llm-chart-title{font-size:13px;color:var(--muted);margin-bottom:8px;}
  .pb-row{display:flex;align-items:center;gap:8px;margin:6px 0;}
  .pb-name{width:128px;font-size:12px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .pb-track{flex:1;height:14px;background:var(--panel2);border-radius:7px;overflow:hidden;}
  .pb-fill{display:block;height:100%;background:linear-gradient(90deg,var(--coda),#9b7bff);border-radius:7px;}
  .pb-val{width:88px;text-align:right;font-size:12px;color:var(--muted);white-space:nowrap;}
  .pb-unit{font-size:12px;color:var(--muted);margin-bottom:4px;}
  .llm-timeline-wrap{margin-top:18px;border-top:1px dashed var(--border);padding-top:14px;}
  .llm-timeline-title{font-weight:700;margin-bottom:10px;font-size:15px;}
  .llm-timeline{position:relative;margin-left:8px;padding-left:26px;border-left:2px solid var(--border);}
  .llm-tl-item{position:relative;margin-bottom:16px;}
  .llm-tl-item .tl-dot{position:absolute;left:-35px;top:6px;width:14px;height:14px;border-radius:50%;background:var(--accent);border:2px solid var(--bg);}
  .llm-tl-item.self .tl-dot{background:var(--coda);box-shadow:0 0 0 3px rgba(123,97,255,.18);}
  .llm-tl-date{font-size:12px;color:var(--muted);}
  .llm-tl-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:2px;}
  .llm-tl-model{font-weight:600;}
  .llm-tl-title{font-weight:600;margin-top:2px;}
  .llm-tl-detail{color:var(--muted);font-size:13px;margin-top:2px;line-height:1.5;}
  .llm-tl-empty{color:var(--muted);font-size:13px;padding:8px 0;}
  @media(max-width:680px){.llm-charts{grid-template-columns:1fr;}.pb-name{width:104px;}}
  /* ---- 新增图表：折线 / 柱状 / 甘特 ---- */
  .llm-chart-block{margin-top:20px;border-top:1px dashed var(--border);padding-top:14px;}
  .llm-chart-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:8px;}
  .llm-chart-h{font-weight:700;font-size:15px;}
  .llm-chart-note{font-size:12px;color:var(--muted);margin-bottom:10px;line-height:1.5;}
  .llm-toggle{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden;}
  .llm-toggle button{background:transparent;color:var(--muted);border:0;padding:5px 12px;font-size:12px;cursor:pointer;}
  .llm-toggle button.active{background:var(--coda);color:#fff;}
  .llm-toggle button:not(.active):hover{color:var(--text);}
  .llm-svg{width:100%;height:auto;display:block;}
  .llm-svg text{fill:var(--muted);font-size:11px;}
  .llm-svg .axis-line{stroke:var(--border);stroke-width:1;}
  .llm-svg .grid{stroke:var(--border);stroke-width:1;stroke-dasharray:3 4;opacity:.6;}
  .llm-svg .tick-lbl{fill:var(--muted);}
  .llm-legend{display:flex;flex-wrap:wrap;gap:10px 16px;margin-top:10px;}
  .llm-legend .lg{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text);}
  .llm-legend .sw{width:12px;height:12px;border-radius:3px;display:inline-block;}
  .llm-legend .sw.line{height:3px;border-radius:2px;width:16px;}
  .llm-gantt-row{display:flex;align-items:center;gap:8px;margin:3px 0;}
  .llm-gantt-name{width:150px;font-size:12px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0;}
  .llm-gantt-track{flex:1;position:relative;height:30px;}
  .llm-gantt-track .axis{position:absolute;left:0;right:0;top:14px;height:2px;background:var(--border);}
  .llm-gantt-mk{position:absolute;top:7px;width:16px;height:16px;border-radius:50%;transform:translateX(-50%);border:2px solid var(--bg);cursor:default;}
  .llm-gantt-mk:hover{outline:2px solid #fff3;}
  .llm-gantt-axis{display:flex;margin-left:158px;margin-top:2px;}
  .llm-gantt-axis span{flex:1;text-align:left;font-size:11px;color:var(--muted);}
  .llm-gantt-legend{font-size:12px;color:var(--muted);margin-top:6px;}
  /* 快速导航 */
  .nav-bar{display:flex;gap:6px;padding:8px 0;margin-bottom:4px;flex-wrap:wrap;border-bottom:1px solid var(--border);}
  .nav-bar a{background:var(--panel);color:var(--text);text-decoration:none;font-size:12px;padding:5px 12px;border-radius:20px;border:1px solid var(--border);transition:background .15s;}
  .nav-bar a:hover{background:var(--coda);color:#fff;border-color:var(--coda);}
  /* 返回顶部按钮 */
  .top-btn{position:fixed;bottom:30px;right:30px;z-index:999;width:40px;height:40px;border-radius:50%;background:var(--coda);color:#fff;border:0;font-size:18px;cursor:pointer;opacity:.7;transition:opacity.2s;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px rgba(0,0,0,.4);}
  .top-btn:hover{opacity:1;}
  /* 图表标记悬停闪烁（甘特图/折线图/柱状图/象限图） */
  @keyframes chart-blink { 0%,100%{opacity:1;transform:scale(1)} 50%{opacity:.4;transform:scale(1.35)} }
  #llm-gantt circle, #llm-gantt polygon, #llm-gantt rect,
  #llm-price-line circle, #llm-price-line polygon,
  #llm-cmp-bar rect,
  #llm-quadrant circle { transition:transform .15s; transform-box:fill-box; transform-origin:center; cursor:pointer; }
  #llm-gantt circle:hover, #llm-gantt polygon:hover, #llm-gantt rect:hover,
  #llm-price-line circle:hover, #llm-price-line polygon:hover,
  #llm-cmp-bar rect:hover,
  #llm-quadrant circle:hover { animation:chart-blink .55s ease-in-out infinite; filter:drop-shadow(0 0 8px rgba(255,255,255,.45)); }
  /* ===== 新增：告警横幅 / 搜索排序 / 模型勾选 / 图表导出 / 象限图 / 成本计算器 / 心跳 ===== */
  .alert-banner{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:14px;background:rgba(239,68,68,.10);border:1px solid rgba(239,68,68,.35);border-radius:10px;padding:10px 14px;font-size:13px;}
  .alert-banner .al-k{font-weight:700;color:var(--high);white-space:nowrap;}
  .alert-banner .al-item{color:var(--text);}
  .alert-banner .al-item b{color:var(--high);}
  .alert-banner.flat{background:rgba(58,166,117,.10);border-color:rgba(58,166,117,.35);}
  .alert-banner.flat .al-k,.alert-banner.flat .al-item b{color:var(--craft);}
  .llm-search{margin:0 0 10px;display:flex;gap:8px;align-items:center;}
  .llm-search input{flex:1;max-width:320px;background:var(--panel);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:7px 12px;font-size:13px;font-family:inherit;outline:none;transition:border-color .15s;}
  .llm-search input:focus{border-color:var(--coda);}
  th.sortable{cursor:pointer;user-select:none;white-space:nowrap;}
  th.sortable:hover{color:var(--text);}
  th.sortable .arr{opacity:.6;font-size:10px;margin-left:3px;}
  .dep-badge{display:inline-block;font-size:10px;font-weight:700;padding:1px 7px;border-radius:8px;background:var(--panel2);border:1px solid var(--border);color:var(--muted);margin-left:6px;vertical-align:middle;white-space:nowrap;}
  tr.deprecated td{opacity:.55;}
  tr.deprecated .dep-name{text-decoration:line-through;}
  .llm-model-pick{display:flex;flex-wrap:wrap;gap:6px 10px;margin:0 0 10px;font-size:12px;}
  .llm-model-pick label{display:inline-flex;align-items:center;gap:5px;color:var(--muted);cursor:pointer;background:var(--panel);border:1px solid var(--border);border-radius:999px;padding:3px 10px;transition:.15s;}
  .llm-model-pick label:hover{color:var(--text);border-color:var(--coda);}
  .llm-model-pick label.self{color:var(--coda);border-color:rgba(124,92,255,.5);}
  .llm-model-pick input{accent-color:var(--coda);}
  .chart-btn{border:1px solid var(--border);background:var(--panel2);color:var(--muted);font-size:12px;padding:4px 12px;border-radius:8px;cursor:pointer;transition:all .15s ease;white-space:nowrap;}
  .chart-btn:hover{border-color:var(--coda);color:var(--text);box-shadow:0 0 0 3px rgba(124,92,255,.15);}
  .chart-btn:disabled{opacity:.6;cursor:wait;}
  .quad-wrap{overflow-x:auto;}
  #llm-quadrant .llm-svg{min-width:640px;}
  .quad-tip{position:absolute;pointer-events:none;background:#1b1f29;border:1px solid var(--border);color:var(--text);padding:8px 10px;border-radius:8px;font-size:12px;box-shadow:0 8px 20px -8px rgba(0,0,0,.6);z-index:40;display:none;max-width:280px;line-height:1.5;}
  .calc-box{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:16px;}
  .calc-inputs{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-end;}
  .calc-inputs label{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--muted);}
  .calc-inputs input{background:var(--panel2);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:8px 12px;font-size:14px;font-family:inherit;width:140px;outline:none;}
  .calc-inputs input:focus{border-color:var(--coda);}
  .calc-unit{color:var(--muted);font-size:11px;margin-top:3px;}
  .calc-btn{background:var(--coda);border:0;color:#fff;font-size:13px;font-weight:700;padding:9px 22px;border-radius:8px;cursor:pointer;font-family:inherit;transition:.15s;}
  .calc-btn:hover{filter:brightness(1.1);}
  .calc-btn:disabled{opacity:.6;cursor:wait;}
  .calc-note{font-size:12px;color:var(--muted);margin-top:8px;}
  .calc-res{display:flex;flex-direction:column;gap:8px;margin-top:14px;}
  .calc-row{display:grid;grid-template-columns:180px 1fr 130px 110px;gap:10px;align-items:center;background:var(--panel2);border:1px solid var(--border);border-radius:8px;padding:8px 12px;font-size:13px;}
  .calc-row.self{background:rgba(124,92,255,.12);border-color:rgba(124,92,255,.45);}
  .calc-row .cr-name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .calc-row .cr-bar{height:8px;background:var(--panel);border-radius:999px;overflow:hidden;}
  .calc-row .cr-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--coda),#9b7bff);border-radius:999px;}
  .calc-row .cr-cost{text-align:right;font-weight:700;white-space:nowrap;}
  .calc-row .cr-x{text-align:right;color:var(--muted);font-size:12px;white-space:nowrap;}
  #footMeta{color:var(--muted);font-size:12px;margin-top:6px;}
  /* ===== 第二轮新增：收藏 / URL 分享 / 定价策略 / 90 天回溯 / 归因洞察 / 降价预测 / 导出报告 ===== */
  .fav-star{background:none;border:none;cursor:pointer;font-size:16px;line-height:1;padding:2px 6px;color:var(--muted);transition:transform .15s;vertical-align:middle;font-family:inherit;}
  .fav-star:hover{transform:scale(1.25);}
  .fav-star.on{color:#fbbf24;text-shadow:0 0 8px rgba(251,191,36,.5);}
  .fav-td{width:44px;text-align:center;}
  .fav-th{width:44px;text-align:center;}
  .llm-toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:0 0 10px;}
  .llm-toolbar .spacer{flex:1;}
  .tool-btn{border:1px solid var(--border);background:var(--panel2);color:var(--muted);font-size:12px;padding:5px 13px;border-radius:8px;cursor:pointer;transition:all .15s ease;white-space:nowrap;font-family:inherit;}
  .tool-btn:hover{border-color:var(--coda);color:var(--text);box-shadow:0 0 0 3px rgba(124,92,255,.15);}
  .tool-btn:active{transform:translateY(1px);}
  .fav-hint{display:none;margin:0 0 10px;background:rgba(251,191,36,.12);border:1px solid rgba(251,191,36,.4);color:#fde68a;border-radius:10px;padding:9px 13px;font-size:12.5px;}
  .fav-hint.show{display:block;animation:fadeUp .5s both;}
  .fav-count{color:var(--muted);font-size:12px;margin-left:4px;white-space:nowrap;}
  tr.flash-row{animation:row-flash 1.6s ease 2;}
  @keyframes row-flash{0%,100%{background:transparent;}25%{background:rgba(124,92,255,.28);}50%{background:rgba(124,92,255,.16);}}
  tr.hl td{background:rgba(124,92,255,.14)!important;}
  .llm-svg .dim{opacity:.08!important;}
  .llm-svg .hl{filter:drop-shadow(0 0 6px rgba(124,92,255,.9));}
  .calc-row{cursor:pointer;}
  .calc-row.hl{outline:2px solid var(--coda);outline-offset:-2px;}
  .advice-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;}
  .advice-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:15px;display:flex;flex-direction:column;gap:8px;transition:border-color .2s;}
  .advice-card:hover{border-color:var(--coda);}
  .advice-card .a-title{font-weight:700;font-size:15px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
  .advice-card .a-tag{font-size:11px;padding:2px 8px;border-radius:999px;font-weight:700;white-space:nowrap;}
  .advice-card .a-tag.strong{background:var(--craft);color:#fff;}
  .advice-card .a-tag.warn{background:var(--medium);color:#15171d;}
  .advice-card .a-tag.keep{background:rgba(124,92,255,.2);color:#cdbcff;border:1px solid rgba(124,92,255,.4);}
  .advice-card .a-body{color:var(--muted);font-size:13px;line-height:1.6;}
  .advice-card .a-num{color:var(--text);font-weight:700;}
  .advice-note{font-size:11.5px;color:var(--muted);margin-top:6px;}
  .daily-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:8px;}
  .daily-toolbar select{background:var(--panel);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:6px 10px;font-size:13px;font-family:inherit;outline:none;max-width:260px;}
  .daily-toolbar select:focus{border-color:var(--coda);}
  .daily-empty{color:var(--muted);font-size:13px;padding:14px 0;}
  .insight-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;}
  .insight-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:15px;display:flex;flex-direction:column;gap:8px;}
  .insight-card .i-title{font-weight:700;font-size:15px;color:var(--coda);}
  .insight-card .i-body{color:var(--muted);font-size:13px;line-height:1.7;}
  .insight-card .i-body b{color:var(--text);}
  .insight-card .i-empty{color:var(--muted);font-size:13px;}
  .insight-note{font-size:11.5px;color:var(--muted);margin-top:6px;}
  @media(max-width:680px){
    .wrap{padding:14px 10px 40px;}
    .title{font-size:20px;}
    .subtitle{font-size:12px;}
    .nav-bar a{font-size:10px;padding:4px 8px;}
    .llm-chart-h{font-size:14px;}
    .llm-toggle button{padding:4px 9px;font-size:11px;}
    .llm-chart-note{font-size:11px;}
    .llm-gantt-name{width:104px;}
    .llm-gantt-axis{margin-left:112px;}
    .llm-svg .tick-lbl{font-size:9px!important;}
    .llm-search input{max-width:100%;}
    table.tbl{font-size:12px;min-width:780px;}
    .llm-model-pick label{font-size:11px;padding:2px 8px;}
    .alert-banner{font-size:12px;}
    .calc-row{grid-template-columns:1fr auto;grid-template-rows:auto auto;row-gap:4px;}
    .calc-row .cr-bar{grid-column:1 / 3;grid-row:2;}
    .calc-row .cr-cost{grid-column:2;grid-row:1;}
    .calc-row .cr-x{grid-column:1;grid-row:1;text-align:left;}
    .calc-inputs input{width:110px;}
    .tbl-wrap{-webkit-overflow-scrolling:touch;}
    .quad-wrap{-webkit-overflow-scrolling:touch;}
    .llm-toolbar{gap:6px;}
    .tool-btn{font-size:11px;padding:4px 10px;}
    .advice-card .a-title{font-size:14px;}
  }
  /* GSAP 动画期间：屏蔽 CSS 过渡/动画，避免与 GSAP 抢占导致抖动 */
  .gsap-anim *{transition:none!important;animation:none!important;}
  /* 无障碍：用户偏好减少动效时禁用所有动画并直接落定终值 */
  @media (prefers-reduced-motion: reduce){
    *{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;}
    .reveal{opacity:1!important;transform:none!important;}
    body::before{animation:none!important;}
    .tnode .tl-dot{animation:none!important;}
  }
  /* ===== 第三轮新增：深浅主题 / 数据健康 / 雷达图 / 十字准星 / Excel 导出 ===== */
  /* 主题切换按钮 */
  .theme-btn{
    position:absolute;top:8px;right:0;
    border:1px solid var(--border);background:var(--panel);color:var(--text);
    font-size:15px;width:38px;height:38px;border-radius:10px;cursor:pointer;transition:.2s;
    display:flex;align-items:center;justify-content:center;z-index:5;
  }
  .theme-btn:hover{border-color:var(--coda);box-shadow:0 0 0 3px rgba(124,92,255,.15);}
  /* 数据健康区块（v4.1：左列数据来源 + 右列「系统状态」面板紧凑堆叠） */
  .health-grid{display:grid;grid-template-columns:3fr 2fr;gap:14px;align-items:start;}
  .health-box{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:15px;}
  .health-box h4{margin:0 0 10px;font-size:14px;display:flex;align-items:center;gap:8px;}
  .health-box .hb-note{color:var(--muted);font-size:12px;margin-bottom:8px;}
  .health-main{min-width:0;}
  /* 右列「系统状态」面板：健康告警 / 新模型 / 页面错误 / 抓取率 / 时间机器 紧凑堆叠 */
  .sys-panel{padding:13px 14px 12px;display:flex;flex-direction:column;}
  .sys-panel>h4{margin-bottom:6px;font-size:13px;}
  .sys-sub{padding:7px 0 2px;}
  .sys-sub+.sys-sub{border-top:1px dashed var(--border);margin-top:6px;}
  .sys-head{font-size:11.5px;font-weight:700;color:var(--muted);margin:0 0 3px;display:flex;align-items:center;gap:5px;letter-spacing:.2px;cursor:help;}
  .sys-sub .tm-controls{margin-top:2px;}
  .hx-empty{font-size:11.5px;color:var(--craft);line-height:1.5;padding:1px 0 3px;}
  .fs-line{display:flex;align-items:center;gap:8px;font-size:12px;margin:2px 0 4px;}
  .fs-line .fs-track{flex:1;height:7px;}
  .fs-line .fs-val{font-size:12px;min-width:34px;}
  .fs-line .fs-sub{color:var(--muted);font-size:10.5px;white-space:nowrap;}
  .fs-models{margin-top:2px;}
  .fs-models .fs-row{margin:3px 0;font-size:11.5px;}
  .fs-models .fs-lbl{width:112px;}
  /* 移动端：数据健康左右列变单列堆叠（置于基础规则之后，避免被覆盖） */
  @media(max-width:680px){
    .health-grid{grid-template-columns:1fr;}
    .sys-panel{padding:12px;}
    .sys-panel>h4{font-size:13px;}
    /* 数据健康表：包滚动容器 + min-width，内容完整可横滑、不撑破页面 */
    .health-tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;}
    .health-tbl{min-width:520px;}
  }
  .health-tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;}
  .health-tbl{width:100%;border-collapse:collapse;font-size:12.5px;}
  .health-tbl th,.health-tbl td{padding:6px 8px;text-align:left;border-bottom:1px solid var(--border);}
  .health-tbl thead th{color:var(--muted);font-weight:700;font-size:11px;background:var(--panel2);}
  .src-badge{display:inline-block;font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;white-space:nowrap;}
  .src-playwright{background:rgba(58,166,117,.16);color:var(--craft);border:1px solid rgba(58,166,117,.4);}
  .src-fallback{background:rgba(245,158,11,.14);color:#f59e0b;border:1px solid rgba(245,158,11,.4);}
  .src-manual{background:rgba(124,92,255,.14);color:#cdbcff;border:1px solid rgba(124,92,255,.4);}
  .expired-mark{color:var(--high);font-weight:700;font-size:11px;}
  .health-alert{display:flex;gap:8px;align-items:flex-start;margin-bottom:8px;padding:8px 10px;border-radius:8px;font-size:12.5px;line-height:1.5;background:rgba(239,68,68,.08);border:1px solid rgba(239,68,68,.3);color:var(--text);}
  .health-alert .hk{color:var(--high);font-weight:700;flex-shrink:0;}
  .health-ok{color:var(--craft);font-size:12.5px;}
  .health-api{color:var(--muted);font-size:11.5px;margin-top:8px;word-break:break-all;}
  .health-api code{color:var(--coda);}
  /* 第四轮新增：新模型发现 / 时间机器 / 历史横幅 */
  .nm-list{font-size:12.5px;color:var(--text);}
  .nm-list .nm-item{display:flex;gap:8px;align-items:baseline;margin-bottom:6px;padding:6px 10px;border-radius:8px;background:rgba(245,158,11,.08);border:1px solid rgba(245,158,11,.35);}
  .nm-list .nm-item b{color:#f59e0b;font-family:ui-monospace,Consolas,monospace;}
  .nm-list .nm-note{color:var(--muted);font-size:11px;}
  .nm-none{color:var(--craft);font-size:12.5px;}
  .tm-box{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:15px;margin-top:14px;}
  .tm-box h4{margin:0 0 8px;font-size:14px;display:flex;align-items:center;gap:8px;}
  .tm-controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:6px;}
  .tm-controls input[type="date"]{
    background:var(--panel2);color:var(--text);border:1px solid var(--border);
    padding:6px 10px;border-radius:8px;font-size:12.5px;font-family:inherit;
  }
  .tm-controls input[type="date"]:focus{outline:none;border-color:var(--coda);}
  .tm-controls .tm-status{color:var(--muted);font-size:12px;}
  .tm-controls .tm-active{color:#f59e0b;font-weight:700;}
  .tm-banner{
    position:sticky;top:0;z-index:60;display:flex;gap:12px;align-items:center;justify-content:center;
    background:rgba(245,158,11,.14);border:1px solid rgba(245,158,11,.5);border-radius:10px;
    padding:9px 14px;margin-bottom:12px;font-size:13px;color:var(--text);backdrop-filter:blur(6px);
  }
  .tm-banner b{color:#f59e0b;}
  .tm-banner button{margin-left:4px;}
  /* 折线图历史日期高亮 */
  .llm-svg .hist-line{stroke:#f59e0b;stroke-width:1.5;stroke-dasharray:6 3;pointer-events:none;}
  .llm-svg .hist-dot{fill:#f59e0b;stroke:var(--bg);stroke-width:1.5;pointer-events:none;}
  /* 雷达图 */
  .radar-wrap{display:flex;gap:18px;flex-wrap:wrap;align-items:flex-start;}
  .radar-svg{max-width:520px;flex:1;min-width:300px;}
  .radar-pick{display:flex;flex-direction:column;gap:8px;flex:0 0 240px;}
  .radar-pick label{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text);cursor:pointer;background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:6px 10px;transition:.15s;}
  .radar-pick label:hover{border-color:var(--coda);}
  .radar-pick input{accent-color:var(--coda);}
  .radar-legend{display:flex;flex-wrap:wrap;gap:8px 14px;margin-top:10px;font-size:12px;color:var(--text);}
  .radar-legend .lg{display:flex;align-items:center;gap:6px;}
  .radar-legend .sw{width:12px;height:3px;border-radius:2px;display:inline-block;}
  .radar-axis-lbl{fill:var(--muted);font-size:11px;}
  .radar-axis-val{fill:var(--text);font-size:11px;font-weight:600;}
  /* 折线图十字准星 */
  .llm-svg .cross-v{stroke:var(--coda);stroke-width:1;stroke-dasharray:4 3;opacity:0;pointer-events:none;}
  .llm-svg .cross-h{stroke:var(--border);stroke-width:1;stroke-dasharray:3 3;opacity:0;pointer-events:none;}
  .line-panel{position:relative;}
  .line-tip{
    position:absolute;pointer-events:none;background:var(--panel2);border:1px solid var(--border);
    color:var(--text);padding:8px 10px;border-radius:8px;font-size:11.5px;line-height:1.6;
    box-shadow:0 10px 24px -10px rgba(0,0,0,.5);z-index:40;display:none;max-width:280px;min-width:150px;
  }
  .line-tip b{display:block;color:var(--coda);margin-bottom:4px;font-size:12px;}
  .line-tip .lt-row{display:flex;justify-content:space-between;gap:12px;white-space:nowrap;}
  .line-tip .lt-row .ln{color:var(--muted);}
  /* Excel 导出按钮（.xls 兼容格式） */
  .xls-btn{margin-left:8px;border:1px solid #34d399;background:rgba(52,211,153,.1);color:#34d399;font-size:12px;padding:4px 12px;border-radius:8px;cursor:pointer;transition:all .15s ease;white-space:nowrap;}
  .xls-btn:hover{background:rgba(52,211,153,.22);box-shadow:0 0 0 3px rgba(52,211,153,.15);}
  .xls-btn:active{transform:translateY(1px);}
  .toolbar-note{color:var(--muted);font-size:11px;}
  /* 浅色主题覆盖组（保留紫色主色调，背景 #f5f6fa 系） */
  [data-theme="light"]{
    --bg:#f5f6fa;
    --panel:#ffffff;
    --panel2:#edf0f6;
    --text:#1f2430;
    --muted:#5b6474;
    --border:#d9dde6;
    --notion:#1f2430;
    --coda:#7c5cff;
    --craft:#0e9f6e;
    --high:#dc2626;
    --medium:#d97706;
    --low:#0284c7;
  }
  [data-theme="light"] body::before{
    background:
      radial-gradient(60% 50% at 15% 0%, rgba(124,92,255,.10), transparent 60%),
      radial-gradient(50% 50% at 90% 10%, rgba(14,159,110,.08), transparent 60%),
      radial-gradient(45% 45% at 50% 100%, rgba(2,132,199,.06), transparent 60%);
    filter:blur(10px);
  }
  [data-theme="light"] .mini-bar-track::after,
  [data-theme="light"] .quad-tip{background:var(--panel2);}
  [data-theme="light"] .src-manual{color:#6d4aff;background:rgba(124,92,255,.12);border-color:rgba(124,92,255,.35);}
  [data-theme="light"] .src-fallback{color:#b45309;}
  [data-theme="light"] .share-btn{color:#6d4aff;}
  [data-theme="light"] .llm-tl-item .tl-dot{border-color:#f5f6fa;}
  [data-theme="light"] .llm-gantt-mk{border-color:#f5f6fa;}
  [data-theme="light"] .fbtn.active.c-medium{color:#fff;}
  [data-theme="light"] .impact.low{color:#fff;}
  [data-theme="light"] .pill.medium{color:#fff;}
  [data-theme="light"] .ibar.medium .fill{color:transparent;}
  /* ===== 第五轮新增：威胁榜 / 降价联动 / sparkline / 错误上报 / 抓取成功率 / 新模型跟进 / 分享图 / 无障碍 ===== */
  /* 竞品威胁榜 */
  .threat-grid{display:flex;flex-direction:column;gap:10px;}
  .threat-item{background:var(--panel2);border:1px solid var(--border);border-radius:10px;padding:10px 12px;display:grid;grid-template-columns:30px 1fr 44px;gap:10px;align-items:center;}
  .threat-item .t-rank{font-size:15px;font-weight:700;color:var(--coda);text-align:center;}
  .threat-item .t-main .t-name{font-weight:700;font-size:13.5px;color:var(--text);}
  .threat-item .t-main .t-bar{height:7px;background:var(--panel);border-radius:999px;overflow:hidden;margin-top:6px;}
  .threat-item .t-main .t-fill{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#38bdf8,#7c5cff);transition:width .8s cubic-bezier(.22,.61,.36,1);}
  .threat-item .t-score{font-size:16px;font-weight:700;text-align:right;color:var(--text);}
  .threat-item .t-reason{grid-column:1 / 4;color:var(--muted);font-size:12px;line-height:1.55;}
  .threat-item .t-reason i{color:var(--coda);font-style:normal;}
  .threat-self{opacity:.55;}
  .threat-self .t-name::after{content:"自我基准";display:inline-block;font-size:10px;color:var(--coda);border:1px solid rgba(124,92,255,.4);border-radius:8px;padding:0 6px;margin-left:6px;vertical-align:middle;}
  /* 降价联动矩阵 */
  .lk-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:10px;background:var(--panel);}
  table.lk-tbl{border-collapse:collapse;width:100%;font-size:12px;min-width:640px;}
  table.lk-tbl th,table.lk-tbl td{padding:7px 9px;text-align:center;border-bottom:1px solid var(--border);white-space:nowrap;}
  table.lk-tbl thead th{background:var(--panel2);color:var(--muted);font-weight:700;font-size:11px;position:sticky;top:0;}
  table.lk-tbl td.lk-corner{color:var(--muted);font-style:italic;}
  table.lk-tbl td.lk-cell{color:var(--text);}
  table.lk-tbl td.lk-cell b{color:var(--coda);}
  table.lk-tbl td.lk-none{color:var(--muted);}
  .lk-note{color:var(--muted);font-size:11.5px;margin-top:6px;}
  .lk-win{display:inline-flex;gap:6px;align-items:center;margin-bottom:8px;flex-wrap:wrap;}
  .lk-win .fbtn{font-size:12px;padding:4px 10px;}
  /* sparkline */
  .spark-cell{white-space:nowrap;}
  .sparkline{width:40px;height:16px;vertical-align:middle;display:inline-block;}
  .spark-empty{color:var(--muted);font-size:10px;}
  /* 错误上报 */
  .err-box{margin-top:8px;font-size:12px;}
  .err-line{color:var(--muted);font-size:11px;line-height:1.6;border-bottom:1px dashed var(--border);padding:3px 0;word-break:break-all;font-family:ui-monospace,Consolas,monospace;}
  .err-none{color:var(--craft);font-size:12px;}
  .err-clear{font-size:11px;margin-left:8px;color:var(--muted);cursor:pointer;background:none;border:1px solid var(--border);border-radius:6px;padding:1px 8px;font-family:inherit;}
  .err-clear:hover{color:var(--text);border-color:var(--coda);}
  /* 抓取成功率 */
  .fs-row{display:flex;align-items:center;gap:10px;margin:6px 0;font-size:12px;}
  .fs-row .fs-lbl{width:130px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .fs-track{flex:1;height:8px;background:var(--panel);border-radius:999px;overflow:hidden;border:1px solid var(--border);}
  .fs-fill{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#ef4444,#f59e0b,#3aa675);}
  .fs-val{width:46px;text-align:right;font-weight:700;color:var(--text);white-space:nowrap;}
  .fs-overall{display:flex;align-items:center;gap:10px;margin-bottom:8px;font-weight:700;font-size:13px;color:var(--text);}
  .fs-overall .fs-track{height:10px;}
  /* 新模型跟进 */
  .nm-item{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:6px;padding:6px 10px;border-radius:8px;background:rgba(245,158,11,.08);border:1px solid rgba(245,158,11,.35);}
  .nm-follow{font-size:11px;padding:2px 9px;border-radius:6px;background:var(--coda);color:#fff;border:0;cursor:pointer;font-family:inherit;}
  .nm-follow:hover{filter:brightness(1.15);}
  .nm-follow:disabled{opacity:.5;cursor:default;}
  .nm-done{font-size:11px;color:var(--craft);}
  .pending-edit{width:64px;background:var(--panel);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:2px 6px;font-size:12px;font-family:inherit;}
  .pending-edit:focus{border-color:var(--coda);outline:none;}
  .pending-badge{display:inline-block;font-size:10px;font-weight:700;padding:1px 7px;border-radius:8px;background:rgba(245,158,11,.16);border:1px solid rgba(245,158,11,.5);color:#f59e0b;margin-left:6px;vertical-align:middle;white-space:nowrap;}
  .pending-row td{background:rgba(245,158,11,.05);}
  /* 竞争力分享图（独立容器，截图时使用） */
  .share-comp{display:none;position:fixed;left:-10000px;top:0;width:720px;background:var(--bg);z-index:9999;padding:18px 20px;border-radius:14px;}
  .share-comp.capturing{display:block;}
  .share-comp h3{margin:0 0 10px;font-size:16px;color:var(--text);}
  .share-comp .sc-date{color:var(--muted);font-size:12px;margin-bottom:10px;}
  .share-comp .sc-advice{display:flex;flex-direction:column;gap:8px;margin-top:12px;}
  .share-comp .sc-advice .advice-card{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:10px 12px;}
  .share-comp .sc-advice .advice-card .a-title{font-weight:700;font-size:13.5px;color:var(--text);display:flex;align-items:center;gap:8px;}
  .share-comp .sc-advice .advice-card .a-body{color:var(--muted);font-size:12px;margin-top:4px;line-height:1.55;}
  .share-comp .sc-note{color:var(--muted);font-size:11px;margin-top:12px;border-top:1px dashed var(--border);padding-top:8px;}
  /* 无障碍：焦点态 outline */
  :focus-visible{outline:2px solid var(--coda);outline-offset:2px;border-radius:4px;}
  button:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--coda);outline-offset:2px;}
  .fbtn[aria-pressed="true"]{background:var(--coda);color:#fff;border-color:var(--coda);}
  /* 价格变化过渡动画 */
  .price-anim-cell{transition:background-color .4s ease;}
  .price-anim-cell.anim-down{background-color:rgba(58,166,117,.35)!important;}
  .price-anim-cell.anim-up{background-color:rgba(239,68,68,.35)!important;}
  /* ===== 第六轮新增：每日简报 / 桌面通知 / 能力分 / 列配置 / 推演 / 场景模板 / 威胁趋势 / 推送通道 ===== */
  /* 每日市场简报卡片（页面顶部，告警横幅下） */
  .daily-brief{margin-top:14px;background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:13px 15px;font-size:13px;line-height:1.6;}
  .brf-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:7px;}
  .brf-title{font-weight:700;font-size:14.5px;color:var(--coda);}
  .brf-date{color:var(--muted);font-size:12px;background:var(--panel2);border:1px solid var(--border);border-radius:999px;padding:1px 9px;}
  .brf-weekly{margin-left:auto;font-size:12px;color:var(--craft);text-decoration:none;border:1px solid rgba(58,166,117,.4);border-radius:8px;padding:2px 10px;background:rgba(58,166,117,.08);}
  .brf-weekly:hover{background:rgba(58,166,117,.18);}
  .brf-line{color:var(--text);margin-bottom:6px;}
  .brf-sec{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:5px;}
  .brf-k{font-size:11.5px;font-weight:700;color:var(--muted);white-space:nowrap;}
  .brf-chip{display:inline-flex;align-items:center;gap:4px;font-size:12px;background:var(--panel2);border:1px solid var(--border);border-radius:8px;padding:2px 9px;white-space:nowrap;}
  .brf-chip b{color:var(--high);}
  .brf-chip .price-sub{font-size:11px;}
  .brf-chip.brf-fav{background:rgba(251,191,36,.10);border-color:rgba(251,191,36,.4);}
  .brf-chip.brf-new b{color:var(--medium);}
  .brf-chip b.up{color:var(--high);}
  .brf-chip b.down{color:var(--craft);}
  .brf-foot{color:var(--muted);font-size:11px;margin-top:8px;border-top:1px dashed var(--border);padding-top:6px;}
  /* 告警横幅：收藏模型高亮 */
  .alert-banner .al-item.al-fav{background:rgba(251,191,36,.12);border:1px solid rgba(251,191,36,.4);border-radius:8px;padding:2px 8px;}
  /* 桌面通知按钮 */
  .notif-btn{margin-left:14px;border:1px solid var(--border);background:var(--panel2);color:var(--muted);font-size:12px;padding:5px 14px;border-radius:8px;cursor:pointer;transition:all .15s ease;vertical-align:middle;white-space:nowrap;font-family:inherit;}
  .notif-btn:hover{border-color:var(--coda);color:var(--text);box-shadow:0 0 0 3px rgba(124,92,255,.15);}
  .notif-btn.on{border-color:var(--craft);background:rgba(58,166,117,.12);color:var(--craft);}
  .notif-btn.off{opacity:.6;cursor:not-allowed;}
  /* 推送通道状态 */
  .pc-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px;margin:2px 0 6px;}
  .pc-ok{color:var(--craft);}
  .pc-no{color:var(--muted);}
  /* 能力分单元格 */
  .cap-cell{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;}
  .cap-bar{display:inline-block;width:52px;height:6px;background:var(--panel);border:1px solid var(--border);border-radius:999px;overflow:hidden;vertical-align:middle;}
  .cap-bar i{display:block;height:100%;border-radius:999px;}
  .cap-num{font-weight:700;font-size:12.5px;}
  /* 威胁榜迷你趋势 */
  .t-spark{display:flex;align-items:center;gap:4px;margin-top:5px;}
  .t-spark .sparkline{width:40px;height:14px;}
  .t-spark-lbl{color:var(--muted);font-size:10px;white-space:nowrap;}
  /* 定价策略推演 */
  .sim-box{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:16px;}
  .sim-inputs{display:flex;gap:14px;align-items:flex-end;flex-wrap:wrap;}
  .sim-inputs label{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--muted);}
  .sim-inputs input{background:var(--panel2);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:8px 12px;font-size:14px;font-family:inherit;width:150px;outline:none;}
  .sim-inputs input:focus{border-color:var(--coda);}
  .sim-note{font-size:12px;color:var(--muted);margin-top:8px;}
  .sim-note2{font-size:11.5px;color:var(--muted);margin-top:8px;border-top:1px dashed var(--border);padding-top:6px;}
  .sim-res{display:flex;flex-direction:column;gap:7px;margin-top:14px;}
  .sim-row{background:var(--panel2);border:1px solid var(--border);border-radius:8px;padding:8px 12px;font-size:13px;color:var(--text);line-height:1.6;}
  .sim-row b{color:var(--coda);}
  .sim-row.sim-sug{background:rgba(58,166,117,.08);border-color:rgba(58,166,117,.35);}
  /* 场景模板按钮 */
  .scn-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px;}
  .scn-lbl{font-size:12px;color:var(--muted);white-space:nowrap;}
  .scn-row .fbtn{padding:4px 11px;font-size:12px;}
  .scn-row .fbtn.active{background:var(--craft);border-color:var(--craft);}
  /* 列设置弹层 */
  .col-pop{position:fixed;inset:0;z-index:100;display:none;align-items:center;justify-content:center;background:rgba(0,0,0,.5);}
  .col-pop-inner{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:18px 20px;width:min(420px,92vw);max-height:80vh;overflow:auto;box-shadow:0 24px 60px -20px rgba(0,0,0,.7);}
  .col-pop-title{display:flex;align-items:center;justify-content:space-between;font-weight:700;font-size:15px;margin-bottom:12px;color:var(--text);}
  .col-pop-title button{background:var(--panel2);border:1px solid var(--border);color:var(--muted);border-radius:8px;width:28px;height:28px;cursor:pointer;font-size:13px;}
  .col-pop-list{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:12px;}
  .col-chk{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--text);cursor:pointer;background:var(--panel2);border:1px solid var(--border);border-radius:8px;padding:7px 10px;transition:.15s;}
  .col-chk:hover{border-color:var(--coda);}
  .col-chk input{accent-color:var(--coda);}
  .col-pop-row{display:flex;align-items:center;gap:10px;margin-bottom:12px;font-size:13px;color:var(--text);}
  .col-pop-row input{accent-color:var(--coda);}
  .col-pop-foot{display:flex;gap:10px;justify-content:flex-end;}
  /* 紧凑密度 */
  .tbl-compact th,.tbl-compact td{padding:6px 8px!important;font-size:12.5px!important;}
  /* 折线图预测可视化 */
  .llm-svg .pred-line{pointer-events:none;}
  .llm-svg .pred-mk{pointer-events:none;}
  @media(max-width:680px){
    .daily-brief{font-size:12px;padding:11px 12px;}
    .brf-head{flex-wrap:wrap;}
    .brf-weekly{margin-left:0;}
    .col-pop-list{grid-template-columns:1fr;}
    .sim-inputs input{width:120px;}
  }
