:root{
  --bg:#0B1220;
  --bg2:#111B2E;
  --card:#16223A;
  --card2:#1B2A45;
  --line:#24344F;
  --tx:#E8EEF9;
  --tx2:#93A4C2;
  --tx3:#5F7395;
  --hi:#3DDC97;
  --hi2:#2BB87B;
  --warn:#FFB020;
  --danger:#FF5C6C;
  --r:16px;
  /* 别名：供后续追加模块使用，避免未定义变量 */
  --dim:var(--tx3);
  --acc:#38BDF8;
  --up:var(--hi);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  background:
    radial-gradient(1100px 520px at 50% -180px, #1B2C4B 0%, transparent 62%),
    var(--bg);
  color:var(--tx);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  font-size:15px;line-height:1.62;
  -webkit-font-smoothing:antialiased;
}
#app{max-width:720px;margin:0 auto;padding:0 16px 90px;position:relative;min-height:100vh}

/* topbar（木头人 2026-10-07 版式：左=头像+小字 ｜ 中=蝴蝶 b-fiy ｜ 右=操作） */
.topbar{position:sticky;top:0;z-index:30;display:grid;grid-template-columns:1fr auto 1fr;
  align-items:center;gap:10px;
  padding:14px 0 12px;background:linear-gradient(180deg,#0B1220 62%,rgba(11,18,32,0));backdrop-filter:blur(8px)}
.tb-left{display:flex;align-items:center;min-width:0}
/* ★ 顶部返回键（2026-10-07）：微信/App 内置浏览器没有系统返回、右下角悬浮键又容易被
   底部工具栏遮挡或忽略 → 在顶栏左上角给一个始终可见的返回。home 视图隐藏。 */
.tb-back{ flex:0 0 auto; width:34px; height:34px; margin-right:8px; border-radius:50%;
  border:1px solid rgba(143,163,184,.4); background:rgba(20,30,48,.85); color:var(--tx);
  font-size:22px; line-height:1; padding:0 0 3px 0; cursor:pointer;
  display:flex; align-items:center; justify-content:center; }
.tb-back:active{ background:rgba(56,189,248,.25); }
/* ★ 微信内支付前预告卡（只弹一次）：管理"付完回聊天"的预期，防回跳断裂被当成坏了 */
.wx-guide-mask{ position:fixed; top:0; right:0; bottom:0; left:0; z-index:10005;
  background:rgba(2,6,16,.66); display:flex; align-items:center; justify-content:center; padding:26px; }
.wx-guide{ width:100%; max-width:340px; background:linear-gradient(160deg,#101b30,#0a1322);
  border:1px solid rgba(56,189,248,.4); border-radius:16px; padding:20px 18px; }
.wx-guide b{ display:block; font-size:16px; margin-bottom:12px; color:var(--tx); }
.wx-guide ol{ margin:0 0 16px 18px; padding:0; }
.wx-guide li{ font-size:13px; color:var(--tx2); line-height:1.9; }
.wx-guide li strong{ color:#7ee2b8; }
.wx-guide .btn-primary{ width:100%; margin-bottom:8px; }
.wx-guide .btn-line{ width:100%; }

/* 非微信环境：复制支付链接 → 微信一键付 */
.pay-link-mask{ position:fixed; top:0; right:0; bottom:0; left:0; z-index:10010;
  background:rgba(2,6,16,.72); display:flex; align-items:center; justify-content:center; padding:20px;
  -webkit-overflow-scrolling:touch; overflow-y:auto; }
.pay-link{ width:100%; max-width:360px; background:linear-gradient(160deg,#101b30,#0a1322);
  border:1px solid rgba(56,189,248,.4); border-radius:16px; padding:20px 18px;
  margin:auto; box-shadow:0 18px 50px rgba(0,0,0,.55); }
.pay-link b{ display:block; font-size:16px; margin-bottom:10px; color:var(--tx); }
.pay-link .pl-sub{ font-size:12.5px; color:var(--tx2); line-height:1.75; margin:0 0 12px; }
.pay-link .pl-sub strong{ color:#7ee2b8; }
.pay-link ol{ margin:0 0 12px 18px; padding:0; }
.pay-link li{ font-size:13px; color:var(--tx2); line-height:1.85; }
.pay-link li strong{ color:#7ee2b8; }
.pay-link .pl-url{ font-size:11px; color:var(--tx3); background:rgba(148,163,184,.09);
  border:1px dashed rgba(148,163,184,.3); border-radius:9px; padding:9px 10px; margin:0 0 12px;
  word-break:break-all; line-height:1.5; cursor:pointer; }
.pay-link .btn-primary{ width:100%; margin-bottom:8px; }
.pay-link .btn-line{ width:100%; margin-bottom:8px; }
.pay-link .pl-tip{ font-size:11px; color:var(--tx3); line-height:1.7; margin:2px 0 0; text-align:center; }
.pay-link .pl-input{ width:100%; box-sizing:border-box; background:rgba(148,163,184,.09);
  border:1px solid rgba(148,163,184,.35); border-radius:10px; padding:11px 12px; margin-bottom:10px;
  color:var(--tx); font-size:14px; outline:none; }
.pay-link .pl-input:focus{ border-color:var(--hi); }
.tb-mid{display:flex;align-items:baseline;gap:7px;justify-self:center;cursor:pointer;white-space:nowrap}
.tb-mid strong{font-size:19px;font-weight:700;letter-spacing:.6px;line-height:1}
.tb-right{display:flex;align-items:center;gap:9px;justify-self:end}
.brand{display:flex;align-items:center;gap:9px;cursor:pointer;min-width:0}
.brand-tag{font-size:11px;color:var(--tx3);font-style:normal;letter-spacing:.2px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.logo-img{width:38px;height:38px;border-radius:12px;display:block;flex:0 0 auto;
  box-shadow:0 0 0 1px rgba(148,163,184,.18),0 2px 10px rgba(0,0,0,.35)}
.brand-en-line{display:inline;font-size:10.5px;font-style:normal;letter-spacing:1.5px;
  text-transform:lowercase;color:var(--tx2);line-height:1.3}
.btn-ghost{background:transparent;border:1px solid var(--line);color:var(--tx2);
  padding:7px 15px;border-radius:999px;font-size:13px;cursor:pointer;transition:.2s}
.btn-ghost:hover{border-color:var(--hi);color:var(--hi)}

/* views */
.view{display:none;animation:fade .28s ease}
.view.active{display:block}
@keyframes fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* hero（★ 卖点居中：木头人 2026-10-07 钦定） */
.hero{padding:22px 0 8px;text-align:center}
.hero h1{font-size:25px;line-height:1.42;margin:0 auto 12px;font-weight:700;letter-spacing:.3px;max-width:660px}
.hero .hl{color:var(--hi)}
.hero .h2{color:var(--tx)}
.hero .sub{color:var(--tx2);font-size:13.5px;margin:0 auto 18px;max-width:620px}
.hero-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.btn-primary{background:linear-gradient(135deg,var(--hi),var(--hi2));color:#06131F;border:0;
  padding:12px 20px;border-radius:12px;font-size:14.5px;font-weight:700;cursor:pointer;
  box-shadow:0 6px 22px rgba(61,220,151,.28);transition:.2s}
.btn-primary:hover{transform:translateY(-1px);box-shadow:0 9px 26px rgba(61,220,151,.4)}
.btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none}
.btn-line{background:transparent;border:1px solid var(--line);color:var(--tx);
  padding:11px 18px;border-radius:12px;font-size:14px;cursor:pointer;transition:.2s}
.btn-line:hover{border-color:var(--hi);color:var(--hi)}
.btn-line:disabled{opacity:.45;cursor:default}

/* sections */
.sec-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:26px 0 12px}
.sec-head h2{font-size:16px;margin:0;font-weight:650;letter-spacing:.4px}
.sec-note{font-size:11.5px;color:var(--tx3)}

/* heat */
.heat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:9px}
.heat-cell{background:var(--card);border:1px solid var(--line);border-radius:13px;padding:12px 11px;
  cursor:pointer;transition:.22s;position:relative;overflow:hidden}
.heat-cell:hover{transform:translateY(-2px);border-color:var(--hi)}
.heat-cell .hname{font-size:13.5px;font-weight:600;margin-bottom:7px}
.heat-bar{height:5px;border-radius:3px;background:#22304A;overflow:hidden;margin-bottom:7px}
.heat-bar i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,var(--hi2),var(--hi))}
.heat-cell .hval{font-size:11.5px;color:var(--tx3);display:flex;justify-content:space-between}
.up{color:var(--danger)}
.down{color:var(--hi)}

/* filters */
.filters{display:flex;gap:7px;flex-wrap:wrap}
.chip{background:transparent;border:1px solid var(--line);color:var(--tx2);font-size:12px;
  padding:4px 11px;border-radius:999px;cursor:pointer;transition:.2s}
.chip.on{background:rgba(61,220,151,.14);border-color:var(--hi);color:var(--hi)}

/* feed */
.feed{display:flex;flex-direction:column;gap:11px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:15px;
  cursor:pointer;transition:.22s;position:relative}
.card:hover{border-color:#2F4A70;background:var(--card2);transform:translateY(-1px)}
.card-top{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px}
.tag{font-size:11px;padding:2.5px 9px;border-radius:6px;background:rgba(61,220,151,.13);color:var(--hi)}
.src{font-size:11px;color:var(--tx3)}
.card h3{margin:0 0 7px;font-size:15.5px;line-height:1.5;font-weight:620}
.card p{margin:0;font-size:13px;color:var(--tx2);display:-webkit-box;-webkit-line-clamp:2;
  -webkit-box-orient:vertical;overflow:hidden}
.card-foot{display:flex;gap:12px;margin-top:10px;font-size:11.5px;color:var(--tx3);align-items:center}
.lock{color:var(--warn);margin-left:auto}

/* detail */
/* ★ 2026-10-07 返回键改右下角悬浮胶囊：右手拇指区，单手可及。
   只在非首页视图出现，与首页右下角「问」FAB 不同视图，不冲突。 */
.btn-back{position:fixed;right:20px;bottom:calc(22px + env(safe-area-inset-bottom));
  z-index:70;display:inline-flex;align-items:center;gap:6px;
  padding:13px 20px;border-radius:999px;border:1px solid var(--line);
  background:rgba(15,23,42,.92);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  color:var(--tx);font-size:13.5px;font-weight:600;cursor:pointer;
  box-shadow:0 10px 30px rgba(0,0,0,.45);
  transition:transform .15s,border-color .15s,color .15s}
.btn-back:hover{color:var(--hi);border-color:rgba(56,189,248,.5);transform:translateY(-2px)}
.btn-back:active{transform:translateY(0) scale(.96)}
#detailBody h1{font-size:21px;line-height:1.45;margin:8px 0 12px}
.meta{display:flex;gap:10px;flex-wrap:wrap;font-size:12px;color:var(--tx3);margin-bottom:18px}
.block{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px;margin-bottom:13px}
.block h2{font-size:14px;margin:0 0 11px;color:var(--hi);letter-spacing:.4px}
.block p{margin:0 0 8px;color:var(--tx2);font-size:13.5px}
.chain{display:flex;flex-direction:column;gap:0}
.chain-node{display:flex;gap:12px;align-items:flex-start;position:relative;padding-bottom:16px}
.chain-node:last-child{padding-bottom:0}
.chain-node::before{content:"";position:absolute;left:9px;top:22px;bottom:0;width:1.5px;background:var(--line)}
.chain-node:last-child::before{display:none}
.dot{width:19px;height:19px;border-radius:50%;background:var(--card2);border:1.5px solid var(--hi);
  flex:0 0 19px;display:flex;align-items:center;justify-content:center;font-size:10px;color:var(--hi);z-index:1}
.chain-node .ct{font-size:13.5px}
.chain-node .cd{font-size:12px;color:var(--tx3);margin-top:2px}
.paywall{background:linear-gradient(135deg,rgba(255,176,32,.1),rgba(61,220,151,.07));
  border:1px solid rgba(255,176,32,.35);border-radius:var(--r);padding:16px;text-align:center}
.paywall p{margin:0 0 12px;color:var(--tx2);font-size:13.5px}
.prose{white-space:pre-wrap;font-size:14px;color:var(--tx);line-height:1.75}
.prose .caret{display:inline-block;width:7px;height:15px;background:var(--hi);vertical-align:-2px;animation:blink 1s steps(2) infinite}
/* 段缺失兜底提示（模型真没输出该段时） */
.prose .seg-miss{display:block;padding:10px 12px;border-radius:10px;font-size:13px;line-height:1.7;
  color:#F0B860;background:rgba(240,184,96,.09);border:1px dashed rgba(240,184,96,.34)}
@keyframes blink{50%{opacity:0}}

/* pro */
.pro-head{padding:10px 0 6px}
.pro-head h1{font-size:24px;margin:0 0 8px}
.pro-head .sub{color:var(--tx2);font-size:13.5px;margin:0 0 6px}
.pro-head .anchor{color:var(--warn);font-size:13px;margin:0}
.plans{display:grid;grid-template-columns:1fr;gap:13px;margin-top:20px}
.plan{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px;position:relative}
.plan.feature{border-color:var(--hi);box-shadow:0 0 0 1px rgba(61,220,151,.16),0 12px 34px rgba(0,0,0,.3)}
.plan .badge{position:absolute;top:-10px;right:16px;background:var(--hi);color:#06131F;
  font-size:11px;font-weight:800;padding:3px 10px;border-radius:999px}
.plan-name{font-size:15px;font-weight:650;margin-bottom:8px}
.plan-price{font-size:31px;font-weight:800;color:var(--hi);letter-spacing:-.5px;margin-bottom:14px}
.plan-price span{font-size:13px;font-weight:400;color:var(--tx3);margin-left:3px}
.plan ul{list-style:none;padding:0;margin:0 0 16px;display:flex;flex-direction:column;gap:7px}
.plan li{font-size:13.5px;color:var(--tx2);padding-left:19px;position:relative}
.plan li::before{content:"✓";position:absolute;left:0;color:var(--hi);font-size:12px}
.plan button{width:100%}

.compare{margin-top:28px}
.compare h2{font-size:16px;margin:0 0 12px}
.compare table{width:100%;border-collapse:collapse;font-size:13px}
.compare th,.compare td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--line)}
.compare th{color:var(--tx3);font-weight:500;font-size:12px}
.compare td{color:var(--tx2)}
.compare tr.mine td{color:var(--hi);font-weight:650}
.compare .tip{font-size:12.5px;color:var(--tx3);margin-top:12px;line-height:1.7}

/* watch */
.watch{margin-top:28px}
.watch-add{display:flex;gap:9px;margin-bottom:13px}
.watch-add input{flex:1;background:var(--card);border:1px solid var(--line);border-radius:11px;
  padding:11px 13px;color:var(--tx);font-size:14px;outline:none}
.watch-add input:focus{border-color:var(--hi)}
.watch-list{display:flex;flex-direction:column;gap:8px}
.watch-item{background:var(--card);border:1px solid var(--line);border-radius:11px;padding:12px 14px;
  display:flex;justify-content:space-between;align-items:center;font-size:13.5px}
.watch-item button{background:transparent;border:0;color:var(--tx3);cursor:pointer;font-size:15px}
.watch-item button:hover{color:var(--danger)}
.empty{color:var(--tx3);font-size:13px;padding:14px 0;text-align:center}

/* auth */
.auth-box,.me-box{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:20px;margin-top:16px}
.auth-box h2,.me-box h2{font-size:17px;margin:0 0 6px}
.auth-box .note{font-size:12.5px;color:var(--tx3);margin:0 0 18px}
.field{margin-bottom:12px}
.field label{display:block;font-size:12.5px;color:var(--tx2);margin-bottom:6px}
.field input{width:100%;background:var(--bg2);border:1px solid var(--line);border-radius:11px;
  padding:12px 13px;color:var(--tx);font-size:14.5px;outline:none}
.field input:focus{border-color:var(--hi)}
.field .err{color:var(--danger);font-size:12px;margin-top:5px;min-height:16px}
.row{display:flex;gap:9px}
.row input{flex:1}
.tabs{display:flex;gap:6px;margin-bottom:16px;background:var(--bg2);padding:4px;border-radius:11px}
.tabs button{flex:1;background:transparent;border:0;color:var(--tx2);padding:8px;border-radius:8px;
  font-size:13.5px;cursor:pointer;transition:.2s}
.tabs button.on{background:var(--card2);color:var(--hi);font-weight:600}
.divider{text-align:center;color:var(--tx3);font-size:12px;margin:16px 0;position:relative}
.divider::before,.divider::after{content:"";position:absolute;top:50%;width:38%;height:1px;background:var(--line)}
.divider::before{left:0}.divider::after{right:0}
.wechat-btn{width:100%;background:#07C160;color:#fff;border:0;padding:12px;border-radius:12px;
  font-size:14.5px;font-weight:650;cursor:pointer}
.link{background:transparent;border:0;color:var(--tx3);font-size:12.5px;cursor:pointer;padding:6px 0}
.link:hover{color:var(--hi)}
.hidden{display:none!important}
.me-row{display:flex;justify-content:space-between;padding:11px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.me-row:last-child{border:0}
.me-row span:first-child{color:var(--tx3)}
.member-yes{color:var(--hi);font-weight:650}
.member-no{color:var(--tx3)}

/* drawer */
.drawer{position:fixed;top:0;right:-100%;width:min(420px,92vw);height:100vh;background:var(--bg2);
  border-left:1px solid var(--line);z-index:60;display:flex;flex-direction:column;transition:right .3s cubic-bezier(.4,0,.2,1)}
.drawer.open{right:0}
.drawer-head{display:flex;justify-content:space-between;align-items:center;padding:16px;border-bottom:1px solid var(--line)}
.chat-log{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px}
.msg{max-width:88%;padding:11px 14px;border-radius:14px;font-size:13.5px;line-height:1.68;word-break:break-word}
.msg.bot{background:var(--card);align-self:flex-start;border-bottom-left-radius:4px}
.msg.user{background:linear-gradient(135deg,var(--hi),var(--hi2));color:#06131F;align-self:flex-end;
  border-bottom-right-radius:4px;font-weight:500}
.drawer-foot{display:flex;gap:9px;padding:14px;border-top:1px solid var(--line)}
.drawer-foot input{flex:1;background:var(--card);border:1px solid var(--line);border-radius:11px;
  padding:11px 13px;color:var(--tx);font-size:14px;outline:none}
.drawer-foot input:focus{border-color:var(--hi)}
.mask{position:fixed;top:0;right:0;bottom:0;left:0;background:rgba(4,9,18,.62);z-index:50;opacity:0;pointer-events:none;transition:.3s}
.mask.on{opacity:1;pointer-events:auto}

/* fab */
.fab{position:fixed;bottom:24px;right:24px;width:54px;height:54px;border-radius:50%;border:0;
  background:linear-gradient(135deg,var(--hi),var(--hi2));color:#06131F;font-size:15px;font-weight:800;
  cursor:pointer;z-index:40;box-shadow:0 8px 26px rgba(61,220,151,.42);transition:.2s}
.fab:hover{transform:scale(1.07)}

/* toast */
.toast{position:fixed;left:50%;bottom:88px;transform:translate(-50%,20px);background:#22304A;
  color:var(--tx);padding:11px 20px;border-radius:11px;font-size:13.5px;z-index:99;opacity:0;
  pointer-events:none;transition:.28s;border:1px solid var(--line);max-width:86vw;text-align:center}
.toast.on{opacity:1;transform:translate(-50%,0)}

/* skeleton */
.sk{background:linear-gradient(90deg,#16223A 25%,#1D2C47 50%,#16223A 75%);
  background-size:200% 100%;animation:sh 1.3s infinite;border-radius:var(--r);height:104px}
@keyframes sh{0%{background-position:200% 0}100%{background-position:-200% 0}}

@media(min-width:640px){
  .plans{grid-template-columns:1fr 1fr}
  .hero h1{font-size:29px}
}

/* ===== 方向盘（产品内核） ===== */
.compass-card{
  margin:6px 0 22px;padding:16px;border-radius:var(--r);
  background:linear-gradient(150deg,#1A2B49 0%,#16223A 62%);
  border:1px solid #2A3E60;position:relative;overflow:hidden;
}
.compass-card::after{
  content:"";position:absolute;top:-60px;right:-50px;width:170px;height:170px;border-radius:50%;
  background:radial-gradient(circle,rgba(61,220,151,.20),transparent 68%);pointer-events:none;
}
.cc-head{display:flex;align-items:center;gap:11px;margin-bottom:13px}
.cc-icon{font-size:25px;color:var(--hi);text-shadow:0 0 16px rgba(61,220,151,.6);line-height:1}
.cc-head strong{display:block;font-size:16.5px;letter-spacing:.4px}
.cc-head em{display:block;font-size:11.5px;color:var(--tx3);font-style:normal}
.cc-pro{margin-left:auto;font-size:10px;font-weight:700;letter-spacing:1px;color:#06131F;
  background:var(--warn);padding:3px 9px;border-radius:999px}
.cc-body textarea{
  width:100%;background:#0E1728;border:1px solid var(--line);border-radius:12px;
  color:var(--tx);padding:11px 12px;font-size:14px;font-family:inherit;line-height:1.6;
  resize:vertical;outline:none;transition:.2s;
}
.cc-body textarea:focus{border-color:var(--hi);box-shadow:0 0 0 3px rgba(61,220,151,.12)}
.cc-body textarea::placeholder{color:var(--tx3)}
.cc-body .btn-primary{width:100%;margin-top:10px}
.cc-flow{display:flex;align-items:center;justify-content:center;gap:7px;margin-top:12px;
  font-size:11.5px;color:var(--tx3)}
.cc-flow i{font-style:normal;color:#31456A}

/* 方向盘结果页 */
.cp-head{padding:16px 0 6px}
.cp-head h1{font-size:23px;margin:0 0 6px}
.cp-head .sub{color:var(--tx2);font-size:13.5px;margin:0}
.cp-result{padding-top:8px}
.cp-quote{
  border-left:3px solid var(--hi);padding:9px 0 9px 13px;margin:0 0 20px;
  color:var(--tx2);font-size:13.5px;background:rgba(61,220,151,.05);border-radius:0 10px 10px 0;
}
.cp-stage{
  background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  padding:15px;margin-bottom:14px;transition:.25s;
}
.cp-stage.locked{opacity:.55;filter:saturate(.4)}
.st-head{display:flex;align-items:center;gap:9px;font-size:14.5px;font-weight:700;
  margin-bottom:11px;padding-bottom:10px;border-bottom:1px solid var(--line)}
.st-n{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;
  border-radius:50%;background:var(--hi);color:#06131F;font-size:12px;font-weight:800}
.blurpeek{filter:blur(4.5px);user-select:none;color:var(--tx2)}
/* 免费用户锁定段的内容徽标：明确告知「已生成、待解锁」，避免被误认成"没生成/出错" */
.lockmeta{display:block;margin-bottom:7px;font-size:12.5px;font-weight:600;letter-spacing:.2px;
  color:#7FC8A9;background:rgba(127,200,169,.10);border:1px solid rgba(127,200,169,.28);
  border-radius:8px;padding:4px 9px}
.lockmeta+.blurpeek{display:block}

/* 骨架 */
.sk{height:78px;border-radius:var(--r);background:linear-gradient(100deg,#16223A 30%,#1E2E4C 50%,#16223A 70%);
  background-size:220% 100%;animation:shim 1.25s infinite}
@keyframes shim{0%{background-position:130% 0}100%{background-position:-30% 0}}

/* ==================== 三档套餐 ==================== */
.plans-3{display:grid;grid-template-columns:1fr;gap:12px}
@media(min-width:760px){.plans-3{grid-template-columns:repeat(3,1fr)}}
.plans-3 .plan.feature{transform:none}

/* ==================== 推送设置区 ==================== */
.push-box{margin:18px 0;padding:14px 15px;border-radius:var(--r);border:1px solid var(--line);
  background:linear-gradient(165deg,rgba(56,189,248,.07),rgba(56,189,248,.02))}
.pb-head{display:flex;gap:10px;align-items:flex-start;margin-bottom:12px}
.pb-icon{flex:none;width:28px;height:28px;border-radius:9px;display:grid;place-items:center;
  background:rgba(56,189,248,.14);color:var(--acc);font-size:15px}
.pb-head strong{display:block;font-size:14px;color:var(--tx);margin-bottom:3px}
.pb-head em{display:block;font-size:12px;line-height:1.55;font-style:normal;color:var(--dim)}
.pb-note{margin:9px 0 0;font-size:11.5px;color:var(--dim)}
.pb-note.on{color:var(--up)}

/* ==================== 影响权重榜 ==================== */
.wt-head{display:flex;align-items:baseline;justify-content:space-between;margin:16px 0 10px}
.wt-head h2{font-size:16px;color:var(--tx);margin:0}
.wt-head .wt-sub{font-size:11.5px;color:var(--dim)}
.wt-list{display:flex;flex-direction:column;gap:8px}
.wt-item{display:grid;grid-template-columns:38px 1fr auto;gap:11px;align-items:center;
  padding:11px 12px;border-radius:var(--r);border:1px solid var(--line);background:var(--card);cursor:pointer;
  transition:border-color .16s,transform .16s}
.wt-item:hover{border-color:rgba(56,189,248,.42);transform:translateX(2px)}
.wt-score{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;
  font-weight:700;font-size:14px;font-variant-numeric:tabular-nums;color:#fff}
.wt-s-hi{background:linear-gradient(150deg,#F43F5E,#B91C3C)}   /* >=72 重要 */
.wt-s-mid{background:linear-gradient(150deg,#F59E0B,#B45309)}  /* 60-71 */
.wt-s-low{background:linear-gradient(150deg,#475569,#334155)}  /* <60 */
.wt-main{min-width:0}
.wt-title{font-size:13.5px;line-height:1.45;color:var(--tx);margin-bottom:4px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.wt-meta{display:flex;gap:7px;align-items:center;flex-wrap:wrap;font-size:11px;color:var(--dim)}
.wt-tag{padding:1.5px 6px;border-radius:5px;background:rgba(148,163,184,.14)}
.wt-tag.reason{background:rgba(56,189,248,.14);color:var(--acc)}
.wt-hot{font-size:10px;font-weight:700;color:#fff;background:var(--up);padding:2px 6px;border-radius:5px}
.wt-lock{text-align:center;padding:16px;border-radius:var(--r);border:1px dashed var(--line);
  background:rgba(148,163,184,.04);font-size:12.5px;color:var(--dim);line-height:1.6}
.wt-lock button{margin-top:10px}

/* ★ 关注打勾按钮（2026-10-06 新增） */
.wt-tick{display:flex;flex-direction:column;align-items:center;gap:2px;
  padding:6px 9px;border-radius:10px;cursor:pointer;
  border:1px solid var(--line);background:transparent;
  font-size:15px;line-height:1;color:var(--tx3);
  transition:all .16s;flex:0 0 auto}
.wt-tick span{font-size:10px;transform:scale(.92)}
.wt-tick:hover{border-color:var(--acc);color:var(--acc);background:rgba(56,189,248,.07)}
.wt-tick.on{border-color:var(--hi);color:var(--hi);background:rgba(61,220,151,.12);font-weight:700}
.wt-tick.on:hover{border-color:#F87171;color:#F87171;background:rgba(248,113,113,.1)}
.wt-tick.lock{opacity:.42;cursor:pointer}
.wt-tick[disabled]{opacity:.5;cursor:wait}

/* ★ 「已关注 N」徽标（权重榜头） */
.wt-chip{padding:4px 12px;border-radius:999px;cursor:pointer;white-space:nowrap;
  border:1px solid rgba(61,220,151,.4);background:rgba(61,220,151,.12);
  color:var(--hi);font-size:11.5px;font-weight:600;transition:background .15s,border-color .15s}
.wt-chip:hover{border-color:var(--hi);background:rgba(61,220,151,.2)}
.wt-head .wt-sub{margin-right:auto}
@media(max-width:600px){.wt-head{flex-wrap:wrap}.wt-chip{order:3}}

/* ==================== 推送设置卡（★ 抢跑一小时） ==================== */
.push-prefs{margin:6px 0 20px}
.pp-row{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:9px 12px;border-radius:11px;border:1px solid var(--line);
  background:var(--card);margin-bottom:8px}
.pp-label{font-size:12.5px;color:var(--tx2)}
.pp-switch{display:flex;align-items:center;gap:9px;cursor:pointer;font-size:12.5px;color:var(--tx2)}
.pp-switch input{width:16px;height:16px;accent-color:var(--hi);cursor:pointer}
.pp-row input[type=time],.pp-row input[type=number]{
  padding:5px 9px;border-radius:8px;border:1px solid var(--line);
  background:rgba(15,23,42,.55);color:var(--tx);font-size:12.5px;font-family:inherit}
.pp-row input[type=number]{width:76px;text-align:right}
.pp-adv{display:flex;align-items:center;gap:9px;flex-wrap:wrap;
  margin:10px 0 8px;padding:10px 12px;border-radius:12px;
  border:1px solid var(--line);background:rgba(148,163,184,.06)}
.pp-adv.on{
  border-color:rgba(250,204,21,.45);
  background:linear-gradient(90deg,rgba(250,204,21,.16),rgba(250,204,21,.03))}
.pp-adv-k{font-size:11.5px;color:var(--tx3)}
.pp-adv-v{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--tx)}
.pp-adv.on .pp-adv-v{color:#FCD34D;text-shadow:0 0 14px rgba(250,204,21,.35)}
.pp-adv-s{font-size:11px;padding:2px 8px;border-radius:999px;
  background:rgba(148,163,184,.14);color:var(--dim)}
.pp-adv.on .pp-adv-s{background:rgba(250,204,21,.2);color:#FCD34D;font-weight:600}
.pp-note{margin:0 0 12px;font-size:11.5px;line-height:1.65;color:var(--tx3)}
.pp-note b{color:var(--tx2);font-variant-numeric:tabular-nums}
.pp-note .lnk{background:none;border:0;padding:0;cursor:pointer;
  color:var(--acc);font-size:11.5px;font-family:inherit;text-decoration:underline}
.pp-test{width:100%;margin-top:8px}

/* 套餐卡里的抢跑权益行 */
.plan.race{border-color:rgba(250,204,21,.42);
  box-shadow:0 0 0 1px rgba(250,204,21,.14),0 12px 34px rgba(0,0,0,.3)}
.plan ul li.li-race{color:#FCD34D}
.plan ul li.li-race::before{content:"⭐";color:#FCD34D}
.plan ul li.li-mute{color:var(--tx3);font-size:11.5px}
/* ★ 套餐 2.0：体验卡（虚线描边 + 品牌绿强调；生效中加呼吸光） */
.plan.trial{border-style:dashed;border-color:rgba(61,220,151,.5);background:rgba(61,220,151,.04)}
.plan.trial .badge{background:rgba(61,220,151,.16);color:var(--hi)}
.plan.trial .plan-price{color:var(--tx)}
.plan.trial.living{border-style:solid;border-color:var(--hi);
  animation:trialGlow 2.4s ease-in-out infinite}
@keyframes trialGlow{
  0%,100%{box-shadow:0 0 0 0 rgba(61,220,151,.0)}
  50%{box-shadow:0 0 0 4px rgba(61,220,151,.13)}
}
.plan.trial button:disabled{opacity:.62}

/* ==================== 方向盘·等待提示 ==================== */
.cp-wait{display:flex;flex-direction:column;align-items:center;gap:9px;
  padding:26px 16px;text-align:center}
.cp-wait b{font-size:13.5px;font-weight:600;color:var(--tx);line-height:1.5}
.cp-wait em{font-size:11.5px;font-style:normal;color:var(--dim)}
.cp-spin{width:26px;height:26px;border-radius:50%;
  border:2.5px solid rgba(56,189,248,.18);border-top-color:var(--acc);
  animation:cp-spin .85s linear infinite}
@keyframes cp-spin{to{transform:rotate(360deg)}}

/* ==================== 方向盘·三环权重标注 ==================== */
.st-head{align-items:center;gap:8px;flex-wrap:wrap}
.st-w{margin-left:6px;padding:1.5px 7px;border-radius:6px;font-size:10.5px;font-weight:500;
  background:rgba(148,163,184,.13);color:var(--dim)}
.st-w.w-max{background:rgba(244,63,94,.15);color:#FB7185}
.st-free{margin-left:auto;padding:1.5px 7px;border-radius:6px;font-size:10.5px;font-weight:600;
  background:rgba(34,197,94,.15);color:var(--up)}

/* ==================== 两档套餐 ==================== */
.plans-2{display:grid;grid-template-columns:1fr;gap:12px}
@media(min-width:700px){.plans-2{grid-template-columns:repeat(2,1fr)}}

/* ==================== 品牌英文名 ==================== */
.brand-en{font-size:10.5px;font-weight:500;letter-spacing:.5px;text-transform:lowercase;
  margin-left:5px;padding:1px 6px;border-radius:5px;
  background:rgba(148,163,184,.12);color:var(--dim);vertical-align:middle}

/* ==================== 方向盘·新用户免费体验提示条 ==================== */
.cc-free{display:flex;align-items:center;gap:9px;flex-wrap:wrap;
  margin:0 0 12px;padding:9px 12px;border-radius:12px;
  background:linear-gradient(90deg,rgba(61,220,151,.14),rgba(61,220,151,.04));
  border:1px solid rgba(61,220,151,.28)}
.cc-free-tag{padding:2px 9px;border-radius:999px;font-size:11.5px;font-weight:700;
  background:var(--hi);color:#08210F;white-space:nowrap}
.cc-free-tag.ok{background:var(--hi);color:#08210F}
.cc-free-tag.off{background:rgba(148,163,184,.2);color:var(--tx2)}
.cc-free em{font-size:12px;font-style:normal;color:var(--tx2)}

/* 方向盘卡片内的付费按钮行 */
.cc-buy{display:flex;align-items:center;gap:9px;flex-wrap:wrap;
  margin-top:13px;padding-top:13px;border-top:1px dashed var(--line)}
.cc-buy .btn-line{margin:0}
.cc-buy-note{font-size:11.5px;color:var(--tx3)}

/* ==================== 三档套餐 ==================== */
.plans-3{display:grid;grid-template-columns:1fr;gap:12px}
@media(min-width:760px){.plans-3{grid-template-columns:repeat(3,1fr)}}
.plan-sub{font-size:11px;font-style:normal;font-weight:500;color:var(--tx3);white-space:nowrap}
.plan-note{margin:9px 0 0;font-size:11px;line-height:1.5;color:var(--tx3);text-align:center}
.plan ul li.li-dim{color:var(--tx3);opacity:.75}
.plan ul li.li-dim::before{content:"✕";color:var(--tx3);opacity:.7}
@media(min-width:760px){
  .plans-3 .plan{padding:16px 14px}
  .plans-3 .plan-name{font-size:14px}
  .plans-3 .plan-price{font-size:26px}
}

/* ==================== 付费墙提示 ==================== */
.pay-hint{margin:10px 0 0;font-size:12px;color:var(--tx2)}
.paywall .btn-primary{margin-top:9px;display:block;width:100%}

/* ==================== 月/季/年 切换 ==================== */
.seg{display:inline-flex;gap:4px;margin:14px 0 0;padding:4px;border-radius:12px;
  background:rgba(148,163,184,.09);border:1px solid var(--line)}
.seg-btn{display:flex;align-items:center;gap:5px;padding:7px 14px;border:0;cursor:pointer;
  border-radius:9px;background:transparent;color:var(--tx2);font-size:13px;font-weight:600;
  transition:.18s;font-family:inherit}
.seg-btn em{font-style:normal;font-size:10px;padding:1px 5px;border-radius:5px;
  background:rgba(61,220,151,.18);color:var(--hi)}
.seg-btn.active{background:var(--card2);color:var(--tx);box-shadow:0 2px 10px rgba(0,0,0,.25)}

/* 套餐卡月均价 */
.plan-permo{margin:2px 0 11px;font-size:11.5px;color:var(--tx3)}

/* ==================== 免费版留存说明 ==================== */
.free-keep{margin:18px 0 0;padding:16px;border-radius:var(--r);
  background:linear-gradient(180deg,rgba(56,189,248,.07),rgba(56,189,248,.02));
  border:1px solid rgba(56,189,248,.2)}
.fk-head{display:flex;gap:11px;align-items:flex-start;margin-bottom:12px}
.fk-icon{font-size:22px;color:var(--acc);line-height:1}
.fk-head strong{display:block;font-size:14.5px;margin-bottom:3px}
.fk-head em{font-style:normal;font-size:12px;color:var(--tx2);line-height:1.5}
.fk-list{margin:0;padding-left:18px;font-size:13px;line-height:1.85;color:var(--tx2)}
.fk-list b{color:var(--tx)}
.fk-note{margin:12px 0 0;font-size:12px;color:var(--tx3);text-align:center}

/* ==================== 转发解锁 ==================== */
.share-box{margin:14px 0 0;padding:16px;border-radius:var(--r);
  background:linear-gradient(180deg,rgba(61,220,151,.1),rgba(61,220,151,.03));
  border:1px solid rgba(61,220,151,.3)}
.sb-head{display:flex;gap:11px;align-items:flex-start;margin-bottom:13px}
.sb-icon{font-size:21px;color:var(--hi);line-height:1}
.sb-head strong{display:block;font-size:14.5px;margin-bottom:3px}
.sb-head em{font-style:normal;font-size:12px;color:var(--tx2);line-height:1.55}
.sb-progress{display:flex;align-items:center;gap:10px;margin-bottom:13px}
.sb-bar{flex:1;height:7px;border-radius:99px;background:rgba(148,163,184,.18);overflow:hidden}
.sb-bar i{display:block;height:100%;width:0;border-radius:99px;
  background:linear-gradient(90deg,var(--hi2),var(--hi));transition:width .45s ease}
.sb-progress span{font-size:11.5px;color:var(--tx2);white-space:nowrap}
.sb-actions{display:flex;gap:9px;flex-wrap:wrap}
.sb-actions .btn-primary,.sb-actions .btn-line{flex:1;min-width:130px;margin:0}
.sb-note{margin:11px 0 0;font-size:11.5px;color:var(--tx3);text-align:center}
.sb-note.on{color:var(--hi)}

/* ==================== 领积分（签到） ==================== */
.points-box{margin:14px 0 0;padding:16px;border-radius:var(--r);
  background:linear-gradient(180deg,rgba(255,176,32,.1),rgba(255,176,32,.03));
  border:1px solid rgba(255,176,32,.3)}
.pt-icon{color:var(--warn)}
.points-box .sb-bar i{background:linear-gradient(90deg,#FFB020,#FFD37A)}

/* ==================== 语音播报 · 实时字幕 ==================== */
.voice-card{margin:16px 0 0;padding:15px;border-radius:var(--r);
  background:linear-gradient(180deg,rgba(167,139,250,.11),rgba(167,139,250,.03));
  border:1px solid rgba(167,139,250,.28);transition:.25s}
.voice-card.playing{border-color:rgba(167,139,250,.6);box-shadow:0 0 0 3px rgba(167,139,250,.09)}
.vc-head{display:flex;gap:11px;align-items:center}
.vc-icon{font-size:21px;color:#A78BFA;line-height:1}
.voice-card.playing .vc-icon{animation:vc-pulse 1.6s ease-in-out infinite}
@keyframes vc-pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(1.12)}}
.vc-head>div{flex:1;min-width:0}
.vc-head strong{display:block;font-size:14.5px;margin-bottom:2px}
.vc-head em{font-style:normal;font-size:11.5px;color:var(--tx2);line-height:1.45}
.vc-toggle{flex-shrink:0;padding:8px 13px;border-radius:999px;border:0;cursor:pointer;
  background:#A78BFA;color:#1A1033;font-size:12.5px;font-weight:700;font-family:inherit;
  white-space:nowrap;transition:.18s}
.vc-toggle:hover{filter:brightness(1.08)}

/* 字幕区 */
.vc-sub{margin:13px 0 0;max-height:190px;overflow-y:auto;border-radius:12px;
  background:rgba(0,0,0,.22);border:1px solid var(--line);padding:10px 12px}
.vc-sub-empty{font-size:12px;color:var(--tx3);text-align:center;padding:16px 8px;line-height:1.6}
.vc-line{display:flex;gap:9px;padding:8px 0;border-bottom:1px dashed rgba(148,163,184,.13)}
.vc-line:last-child{border-bottom:0}
.vc-line.on p{color:var(--tx);font-size:14.5px;font-weight:600;line-height:1.62}
.vc-line.next p{color:var(--tx3);font-size:12.5px;line-height:1.5}
.vc-num{flex-shrink:0;width:20px;height:20px;border-radius:6px;font-size:11px;font-weight:700;
  display:flex;align-items:center;justify-content:center;margin-top:2px;
  background:rgba(148,163,184,.15);color:var(--tx2)}
.vc-line.on .vc-num{background:rgba(167,139,250,.28);color:#C4B5FD}
.vc-line p{margin:0}

/* 进度与控制条 */
.vc-bar{margin-top:12px}
.vc-prog{height:4px;border-radius:99px;background:rgba(148,163,184,.16);overflow:hidden;margin-bottom:11px}
.vc-prog i{display:block;height:100%;width:0;border-radius:99px;
  background:linear-gradient(90deg,#8B5CF6,#A78BFA);transition:width .4s ease}
.vc-ctrl{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.vc-btn{width:36px;height:36px;border-radius:10px;border:1px solid var(--line);cursor:pointer;
  background:rgba(148,163,184,.07);color:var(--tx2);font-size:14px;line-height:1;
  display:flex;align-items:center;justify-content:center;transition:.16s;font-family:inherit}
.vc-btn:hover{border-color:#A78BFA;color:#C4B5FD}
.vc-btn.vc-main{width:44px;height:44px;font-size:17px;background:rgba(167,139,250,.2);
  border-color:rgba(167,139,250,.5);color:#C4B5FD}
.vc-btn.vc-close:hover{border-color:var(--danger);color:var(--danger)}
.vc-idx{font-size:11.5px;color:var(--tx3);margin-left:auto;padding-right:4px}
.vc-rate{padding:6px 8px;border-radius:9px;border:1px solid var(--line);background:var(--card);
  color:var(--tx2);font-size:12px;font-family:inherit;cursor:pointer}

/* 事件流中正在播报的卡片 */
.card.speaking{border-color:#A78BFA !important;box-shadow:0 0 0 3px rgba(167,139,250,.14)}
.card.speaking::after{content:"◍ 正在播报";position:absolute;top:10px;right:12px;
  font-size:10.5px;font-weight:700;color:#C4B5FD;background:rgba(167,139,250,.18);
  padding:2px 7px;border-radius:6px}
.card{position:relative}

/* ============ 开场幕 Overture ============ */
.overture{
  position:fixed; top:0; right:0; bottom:0; left:0; z-index:9999;
  background:radial-gradient(120% 90% at 50% 8%, #16233d 0%, #0B1220 55%, #05070d 100%);
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  transition:opacity .55s ease, visibility .55s ease;
  overflow:hidden;
}
.overture.gone{opacity:0; visibility:hidden; pointer-events:none;}
/* 老访客：开场整块不渲染（比 .gone 更彻底，零闪烁） */
html.ov-skip #overture{ display:none !important; }

/* 星尘 */
.ov-stars{
  position:absolute; top:-10%; right:-10%; bottom:-10%; left:-10%;
  background-image:
    radial-gradient(1.4px 1.4px at 12% 22%, rgba(255,255,255,.75), transparent 100%),
    radial-gradient(1.1px 1.1px at 34% 68%, rgba(255,255,255,.55), transparent 100%),
    radial-gradient(1.6px 1.6px at 58% 14%, rgba(255,220,150,.75), transparent 100%),
    radial-gradient(1.2px 1.2px at 76% 44%, rgba(255,255,255,.6), transparent 100%),
    radial-gradient(1.3px 1.3px at 22% 82%, rgba(180,220,255,.6), transparent 100%),
    radial-gradient(1.5px 1.5px at 88% 76%, rgba(255,255,255,.5), transparent 100%),
    radial-gradient(1.1px 1.1px at 46% 40%, rgba(255,205,120,.55), transparent 100%),
    radial-gradient(1.2px 1.2px at 66% 88%, rgba(255,255,255,.45), transparent 100%),
    radial-gradient(1.4px 1.4px at 8% 52%, rgba(255,255,255,.4), transparent 100%),
    radial-gradient(1.1px 1.1px at 94% 18%, rgba(255,235,180,.5), transparent 100%);
  background-size:100% 100%;
  animation:ovDrift 24s ease-in-out infinite alternate;
  opacity:.85;
}
@keyframes ovDrift{from{transform:translate3d(0,0,0) scale(1);} to{transform:translate3d(-1.5%,1.5%,0) scale(1.04);}}

.ov-canvas{
  /* ★ 2026-10-06 改版：蝴蝶改为文档流内、置于文字上方，不再与文字重叠 */
  position:relative; flex:0 0 auto;
  width:min(46vmin,380px); height:min(46vmin,380px);
  margin-bottom:-6px;
  opacity:.6; pointer-events:none;
  filter:drop-shadow(0 0 26px rgba(255,150,40,.35));
}
/* 矮屏（笔记本）压缩蝴蝶高度，保证文字完整露出 */
@media (max-height:800px){
  .ov-canvas{ width:min(34vmin,240px); height:min(34vmin,240px); }
}

.ov-inner{position:relative; z-index:2; text-align:center; padding:10px 24px 24px; max-width:680px;}
.ov-title{
  margin:0 0 14px; font-size:34px; font-size:clamp(25px,6.4vw,46px); line-height:1.28; font-weight:800;
  letter-spacing:.5px; color:#EAF0FF;
}
.ov-title i{font-style:normal; color:#FF9A2E; margin:0 6px; font-weight:400;}
.ov-title span{
  background:linear-gradient(100deg,#FFC93C,#FF8C1A 45%,#FF6B2C);
  -webkit-background-clip:text; background-clip:text; color:transparent;
}
.ov-br{display:none;}
.ov-sep{display:inline;}
.nb{white-space:nowrap;}
.ov-sub{
  margin:0 0 34px; font-size:14px; font-size:clamp(12px,2.9vw,14.5px); color:#8FA2C4; letter-spacing:1.2px;
}
/* 结尾信念三连：拼成脉络 → 有迹可循 → 按键在你手里 */
.ov-last{
  margin:0 0 30px; font-size:15px; font-size:clamp(13px,3.2vw,16.5px); line-height:2.0;
  color:#FFD79A; letter-spacing:1.6px; font-weight:500;
  text-shadow:0 0 22px rgba(255,168,52,.35);
  animation:ovLastIn 1.1s ease-out .35s both;
}
.ov-last b{
  display:inline-block; font-weight:700; color:#FFE9B8;
  text-shadow:0 0 26px rgba(255,178,64,.55);
}
@keyframes ovLastIn{
  from{opacity:0; transform:translateY(8px);}
  to{opacity:1; transform:translateY(0);}
}
.ov-sub{margin-bottom:18px;}

/* 播放按钮 */
.ov-play{
  position:relative; display:inline-flex; align-items:center; gap:14px;
  padding:13px 26px 13px 15px; border-radius:999px; cursor:pointer;
  background:linear-gradient(135deg,rgba(255,140,26,.16),rgba(255,201,60,.08));
  border:1px solid rgba(255,154,46,.5);
  color:#FFE9C8; font-family:inherit;
  box-shadow:0 0 0 0 rgba(255,154,46,.5), 0 10px 30px rgba(255,120,20,.18);
  animation:ovPulse 2.6s ease-out infinite;
  transition:transform .22s ease, border-color .22s ease;
}
.ov-play:hover{transform:translateY(-2px) scale(1.02); border-color:rgba(255,180,70,.9);}
.ov-play:active{transform:scale(.98);}
@keyframes ovPulse{
  0%{box-shadow:0 0 0 0 rgba(255,154,46,.45),0 10px 30px rgba(255,120,20,.18);}
  70%{box-shadow:0 0 0 18px rgba(255,154,46,0),0 10px 30px rgba(255,120,20,.18);}
  100%{box-shadow:0 0 0 0 rgba(255,154,46,0),0 10px 30px rgba(255,120,20,.18);}
}
.ov-play-icon{
  width:40px; height:40px; border-radius:50%; flex:0 0 40px;
  display:flex; align-items:center; justify-content:center;
  background:linear-gradient(135deg,#FFC93C,#FF7A1A); color:#231000;
  box-shadow:0 4px 14px rgba(255,140,26,.45);
}
.ov-play-txt{display:flex; flex-direction:column; align-items:flex-start; gap:3px; text-align:left;}
.ov-play-txt strong{font-size:15px; font-weight:700; letter-spacing:.3px;}
.ov-play-txt em{font-style:normal; font-size:11.5px; color:#B9905A; letter-spacing:.4px;}

.ov-skip{
  display:block; margin:22px auto 0; background:none; border:none; cursor:pointer;
  color:#6C7C98; font-size:13px; font-family:inherit; letter-spacing:.5px;
  padding:8px 12px; transition:color .2s;
}
.ov-skip:hover{color:#A9BBD8;}

/* 网易云播放器：隐藏但保留播放能力（离屏不 display:none，否则不播） */
.ov-player{
  position:absolute; left:-9999px; top:-9999px;
  width:330px; height:86px; opacity:0; pointer-events:none;
}
.ov-player.dock{
  position:fixed; left:50%; bottom:78px; transform:translateX(-50%);
  opacity:0; pointer-events:none; z-index:60;
  border-radius:12px; box-shadow:0 10px 30px rgba(0,0,0,.5);
}

/* 顶栏音乐控件 */
.btn-music{
  display:inline-flex; align-items:center; gap:8px; margin-right:8px;
  padding:7px 13px; border-radius:999px; cursor:pointer;
  background:rgba(255,154,46,.10); border:1px solid rgba(255,154,46,.32);
  color:#FFC98A; font-family:inherit; font-size:12.5px; letter-spacing:.4px;
  transition:background .2s, border-color .2s, color .2s;
}
.btn-music:hover{background:rgba(255,154,46,.18); border-color:rgba(255,180,70,.6);}
.btn-music.playing{background:rgba(255,154,46,.2); border-color:rgba(255,180,70,.75); color:#FFE0B0;}
.bm-eq{display:inline-flex; align-items:flex-end; gap:2px; height:12px;}
.bm-eq i{display:block; width:2.5px; border-radius:2px; background:#FFA53C; height:4px;}
.btn-music.playing .bm-eq i{animation:bmBar .9s ease-in-out infinite;}
.btn-music.playing .bm-eq i:nth-child(2){animation-delay:.18s;}
.btn-music.playing .bm-eq i:nth-child(3){animation-delay:.36s;}
.btn-music.playing .bm-eq i:nth-child(4){animation-delay:.54s;}
@keyframes bmBar{0%,100%{height:3px;} 50%{height:12px;}}

/* 音量滑块：悬停「背景乐」胶囊时展开 */
.vol-wrap{position:relative; display:inline-flex; align-items:center;}
.vol-pop{
  position:absolute; top:calc(100% + 10px); right:0; z-index:60;
  display:flex; align-items:center; gap:9px;
  padding:9px 13px; border-radius:12px;
  background:rgba(24,18,12,.96); border:1px solid rgba(255,154,46,.34);
  box-shadow:0 12px 30px rgba(0,0,0,.5);
  opacity:0; visibility:hidden; transform:translateY(-6px);
  transition:opacity .18s, transform .18s, visibility .18s;
}
.vol-wrap:hover .vol-pop, .vol-pop:hover{opacity:1; visibility:visible; transform:translateY(0);}
.vol-pop::before{content:""; position:absolute; top:-10px; left:0; right:0; height:10px;}
.vol-pop span{font-size:11.5px; color:#C8B39A; white-space:nowrap;}
.vol-pop input[type=range]{
  -webkit-appearance:none; appearance:none; width:92px; height:4px; border-radius:4px;
  background:linear-gradient(90deg,#FFA53C var(--vp,70%), rgba(255,255,255,.16) var(--vp,70%));
  outline:none; cursor:pointer;
}
.vol-pop input[type=range]::-webkit-slider-thumb{
  -webkit-appearance:none; width:13px; height:13px; border-radius:50%;
  background:#FFC46A; border:2px solid #3A2A18; box-shadow:0 0 8px rgba(255,165,60,.7); cursor:pointer;
}
.vol-pop input[type=range]::-moz-range-thumb{
  width:13px; height:13px; border-radius:50%; border:2px solid #3A2A18;
  background:#FFC46A; box-shadow:0 0 8px rgba(255,165,60,.7); cursor:pointer;
}

@media (max-width:560px){
  .bm-txt{display:none;}
  .btn-music{padding:9px 12px; min-height:40px;}
  .vol-pop{display:none;}
  .ov-sub{margin-bottom:14px;}
  .ov-last{margin-bottom:22px; font-size:13.5px; line-height:1.8;}
  .ov-br{display:block;}
  .ov-sep{display:none;}
}

/* ★ 行业筛选区高亮闪烁（播报未选行业时引导用户） */
@keyframes fltFlash {
  0%,100%{ box-shadow:0 0 0 0 rgba(56,189,248,0); }
  30%,70%{ box-shadow:0 0 0 3px rgba(56,189,248,.55); }
}
#filters.flash{ animation:fltFlash 1.2s ease-in-out; border-radius:12px; }

/* ★ 热度图行业选中态（点击后专项过滤权重榜） */
.heat-cell{ cursor:pointer; transition:background .18s, box-shadow .18s, transform .15s; }
.heat-cell:hover{ background:rgba(56,189,248,.10); }
.heat-cell.on{ background:rgba(56,189,248,.15); box-shadow:inset 0 0 0 1.5px rgba(56,189,248,.65); border-radius:10px; }
.heat-cell.on .hname{ color:var(--hi); font-weight:700; }
.heat-cell.on .hname::after{ content:' ▸ 已筛选'; font-size:11px; font-weight:500; opacity:.85; }

/* ★ 权重榜「取消行业过滤」按钮 */
.wt-clear{ margin-left:auto; padding:6px 12px; border-radius:999px; cursor:pointer;
  background:rgba(56,189,248,.14); border:1px solid rgba(56,189,248,.45);
  color:var(--hi); font-family:inherit; font-size:12.5px; font-weight:600;
  transition:background .18s, border-color .18s; }
.wt-clear:hover{ background:rgba(56,189,248,.24); border-color:rgba(56,189,248,.7); }

/* ============ ★ 语音播报入口下沉（热度图 + 权重榜） ============ */
/* 权重榜头部的「▶ 播报前 5」按钮 */
.wt-speak{
  padding:5px 12px; border-radius:999px; cursor:pointer; white-space:nowrap;
  background:rgba(167,139,250,.14); border:1px solid rgba(167,139,250,.45);
  color:#C4B5FD; font-size:12px; font-weight:600; font-family:inherit; transition:.16s;
}
.wt-speak:hover{ background:rgba(167,139,250,.26); }
.wt-speak.playing{ background:#A78BFA; color:#1A1033; border-color:#A78BFA; }
.wt-speak.done{ background:rgba(61,220,151,.16); border-color:rgba(61,220,151,.5); color:#3DDC97; }
.wt-head{gap:8px}
@media(max-width:600px){ .wt-speak{ order:2 } .wt-clear{ order:3 } }

/* ★ 2026-10-08 木头人：热度图标题行拥挤 → 压缩「◎ 综合推演」，给「▶ 播报前 N」腾出空间 */
.heat-card .sec-head{ gap:8px; }
.heat-card .sec-head #ccEntryHeat{
  padding:5px 9px; font-size:11.5px; letter-spacing:0;
  background:linear-gradient(135deg,rgba(56,189,248,.16),rgba(167,139,250,.16));
  border-color:rgba(129,199,244,.42);
}

/* 热度图内嵌字幕（视线不用滚下去） */
.vc-sub-inline{ margin:11px 0 0; max-height:132px; }
.vc-sub-inline .vc-line.on p{ font-size:13.5px; }

/* 播报台：不播报时收起控制条，不给强推感 */
.voice-card.vc-idle .vc-bar{ display:none; }
.voice-card.vc-idle .vc-sub{ max-height:120px; }
.voice-card.vc-idle .vc-toggle{ background:rgba(167,139,250,.16); color:#C4B5FD;
  box-shadow:inset 0 0 0 1px rgba(167,139,250,.4); }
.voice-card.vc-idle .vc-toggle:hover{ background:rgba(167,139,250,.3); }
/* 正在播报的热度格：与播放按钮呼应的紫色描边 */

/* ============ ★ 事件推演入口 + 选项弹窗 ============ */
/* 「◎ 事件推演」入口按钮：醒目 + 稍大 */
.cc-entry{
  flex-shrink:0; padding:7px 14px; border-radius:999px; cursor:pointer;
  background:linear-gradient(135deg,rgba(56,189,248,.22),rgba(167,139,250,.22));
  border:1px solid rgba(129,199,244,.55);
  color:#7DD3FC; font-size:13px; font-weight:700; font-family:inherit;
  white-space:nowrap; transition:.16s; letter-spacing:.3px;
}
.cc-entry:hover{ filter:brightness(1.15); transform:translateY(-1px);
  box-shadow:0 2px 10px rgba(56,189,248,.25); }
.cc-entry-lg{ padding:8px 16px; font-size:13.5px; }
/* 权重榜头部的推演按钮：与 wt-speak 并排，移动端换行 */
.wt-cc-entry{ order:2; }
@media(max-width:600px){
  .wt-head{ flex-wrap:wrap; }
  .wt-cc-entry{ order:1; }
  .wt-speak{ order:2; }
  .wt-clear{ order:3; }
  .wt-head .wt-sub{ order:4; width:100%; }
}
/* 弹窗 chips */
.cc-pick-grid{ display:grid; grid-template-columns:1fr 1fr; gap:8px; margin:12px 0; }
.cc-chip{
  display:flex; align-items:center; gap:7px; text-align:left;
  padding:10px 11px; border-radius:12px; cursor:pointer;
  background:rgba(148,163,184,.07); border:1px solid var(--line);
  color:var(--tx2); font-size:12.5px; line-height:1.45; font-family:inherit; transition:.15s;
}
.cc-chip:hover{ border-color:rgba(56,189,248,.5); color:var(--tx); }
.cc-chip.on{ background:rgba(56,189,248,.14); border-color:rgba(56,189,248,.65);
  color:var(--tx); font-weight:600; }
.cc-chip-n{
  flex-shrink:0; width:18px; height:18px; border-radius:6px;
  display:flex; align-items:center; justify-content:center;
  font-size:10.5px; font-weight:700;
  background:rgba(148,163,184,.16); color:var(--tx2);
}
.cc-chip.on .cc-chip-n{ background:#38BDF8; color:#062033; }
/* 弹窗本体
   ★★★ 重大修复：HTML 用 hidden 属性关闭弹窗（display:none），但类选择器 .cc-sheet
   的 display:flex 优先级高于浏览器默认样式表的 [hidden]{display:none}，
   导致弹窗**从未真正关闭**——全屏遮罩一直盖在页面上，
   热区按钮（▶ 播报前 5 / 背景乐 / 综合推演）全被 cc-mask 吃掉，表现为"点了没反应"。
   解决：显式声明 [hidden] 时 display:none（高优先级 + !important 兜底）。 */
.cc-sheet[hidden]{ display:none !important; }
.cc-sheet{ position:fixed; top:0; right:0; bottom:0; left:0; z-index:9000; display:flex; align-items:flex-end; justify-content:center; }
/* 弹窗打开时背景锁滚动 */
body.cc-locked{ overflow:hidden; }
.cc-mask{ position:absolute; top:0; right:0; bottom:0; left:0; background:rgba(2,6,16,.62); backdrop-filter:blur(3px);
  opacity:0; transition:opacity .24s; }
.cc-sheet-card{
  position:relative; width:min(520px,100%);
  max-height:86vh; overflow-y:auto;
  background:linear-gradient(180deg,#101b30,#0B1220);
  border:1px solid rgba(56,189,248,.28); border-bottom:0;
  border-radius:20px 20px 0 0; padding:18px 16px 20px;
  transform:translateY(40px); opacity:0; transition:.26s ease;
}
.cc-sheet.on .cc-mask{ opacity:1; }
.cc-sheet.on .cc-sheet-card{ transform:translateY(0); opacity:1; }
@media(min-width:640px){
  .cc-sheet{ align-items:center; }
  .cc-sheet-card{ border-radius:20px; border-bottom:1px solid rgba(56,189,248,.28); }
}
.cc-sheet-head{ display:flex; align-items:center; justify-content:space-between; }
.cc-sheet-head strong{ font-size:16px; color:var(--tx); letter-spacing:.4px; }
.cc-sheet-x{ width:30px; height:30px; border-radius:9px; border:1px solid var(--line);
  background:rgba(148,163,184,.08); color:var(--tx2); cursor:pointer; font-size:13px; }
.cc-sheet-x:hover{ border-color:var(--danger); color:var(--danger); }
.cc-sheet-tip{ margin:10px 0 0; font-size:12.5px; color:var(--tx2); line-height:1.6; }
.cc-sheet-tip b{ color:#7DD3FC; }
#ccSheetText{
  width:100%; box-sizing:border-box; margin-top:2px; padding:11px 12px;
  border-radius:12px; border:1px solid var(--line); background:rgba(0,0,0,.24);
  color:var(--tx); font-family:inherit; font-size:13px; line-height:1.55; resize:vertical;
}
#ccSheetText:focus{ outline:none; border-color:rgba(56,189,248,.55); }
#ccSheetGo{ width:100%; margin-top:12px; padding:13px; font-size:14.5px; }
.cc-sheet-note{ display:block; margin-top:10px; font-style:normal; text-align:center;
  font-size:11px; color:var(--tx3); line-height:1.5; }

/* 事件流标题旁的推演入口：与筛选 chips 共存（窄屏 chips 换行到下一行） */
.stream .sec-head{ flex-wrap:wrap; }
.stream .sec-head h2{ margin-right:4px; }
.stream .cc-entry{ order:2; }
.stream .filters{ order:3; }
@media(max-width:600px){
  .stream .filters{ width:100%; margin-top:9px; }
}

/* 事件流标题旁的推演入口：与筛选 chips 共存（窄屏 chips 换行到下一行） */
.stream .sec-head{ flex-wrap:wrap; }
.stream .sec-head h2{ margin-right:4px; }
.stream .cc-entry{ order:2; }
.stream .filters{ order:3; }
@media(max-width:600px){
  .stream .filters{ width:100%; margin-top:9px; }
}

/* ============ ★ 单事件推演按钮 ============ */
.ev-cc{
  flex-shrink:0; height:26px; padding:0 10px; border-radius:999px; cursor:pointer;
  border:1px solid rgba(167,139,250,.45); background:rgba(167,139,250,.12);
  color:#C4B5FD; font-size:11px; font-weight:600; font-family:inherit;
  display:flex; align-items:center; justify-content:center; white-space:nowrap; transition:.15s;
}
.ev-cc:hover{ background:rgba(167,139,250,.32); transform:scale(1.05); }
.card-foot .ev-cc{ margin-left:auto; }
.wt-item .ev-cc{ padding:0 8px; }

/* ============ ★ 紧凑工具感：高密度布局（彩票缩水工具式） ============ */
/* 板块标题与间距全面收紧 */
.sec-head{ margin:16px 0 9px !important; }
.heat-card, .voice-card{ margin-top:10px !important; padding:12px 12px !important; }
.compass-card{ margin-top:10px !important; padding:13px 12px !important; }
/* 热度格：更小更密 */
.heat-grid{ gap:6px !important; grid-template-columns:repeat(auto-fill,minmax(96px,1fr)) !important; }
.heat-cell{ padding:8px 8px !important; border-radius:10px !important; }
.heat-cell .hname{ font-size:12.5px !important; margin-bottom:5px !important; }
.heat-cell .hval{ font-size:10.5px !important; }
/* 权重榜：条目更紧 */
.wt-head{ margin:14px 0 8px !important; }
.wt-list{ gap:6px !important; }
.wt-item{ padding:8px 9px !important; gap:9px !important; border-radius:11px !important; }
.wt-score{ width:34px !important; height:34px !important; font-size:13px !important; border-radius:9px !important; }
.wt-title{ font-size:13px !important; line-height:1.42 !important; margin-bottom:3px !important; }
.wt-meta{ gap:5px !important; font-size:10.5px !important; }
.wt-meta .wt-tag, .wt-meta .reason{ padding:1px 6px !important; }
/* 信息流：卡片压缩 + 摘要两行截断 */
.feed{ gap:7px !important; }
.card{ padding:10px 11px !important; border-radius:11px !important; }
.card h3{ margin:5px 0 4px !important; font-size:13.5px !important; line-height:1.42 !important; }
.card p{ font-size:12px !important; line-height:1.5 !important; }
.card-foot{ margin-top:7px !important; font-size:10.5px !important; gap:9px !important; }
/* 播报字幕区收紧 */
.vc-sub{ margin-top:9px !important; max-height:150px !important; }

/* ★ 修：权重榜条目新增 ◎ 推演按钮后，网格从 3 列改 4 列（关注按钮不再被挤下移） */
.wt-item{ grid-template-columns:34px 1fr auto auto !important; }
@media(max-width:360px){
  .wt-item{ grid-template-columns:30px 1fr auto auto !important; }
  .wt-item .ev-cc{ padding:0 6px; font-size:10.5px; }
}

/* ★ 修：权重榜条目新增 ◎ 推演按钮后，网格从 3 列改 4 列（关注按钮不再被挤下移） */
.wt-item{ grid-template-columns:34px 1fr auto auto !important; }
@media(max-width:360px){
  .wt-item{ grid-template-columns:30px 1fr auto auto !important; }
  .wt-item .ev-cc{ padding:0 6px; font-size:10.5px; }
}

/* ★ 推演完成提示条（引导去综合推演） */
.cp-done-tip{
  margin-top:14px; padding:12px 13px; border-radius:12px;
  display:flex; align-items:center; gap:10px;
  background:rgba(61,220,151,.08); border:1px solid rgba(61,220,151,.35);
}
.cp-done-txt{ flex:1; display:flex; flex-direction:column; gap:3px; }
.cp-done-txt b{ font-size:12.5px; color:#3DDC97; }
.cp-done-txt span{ font-size:12px; color:var(--tx2); line-height:1.55; }
.cp-done-txt b:not(:first-child){ color:#7DD3FC; }
.cp-done-tip .btn-line{ flex-shrink:0; padding:7px 12px; font-size:12px; }

/* ★ 推演完成提示条（引导去综合推演） */
.cp-done-tip{
  margin-top:14px; padding:12px 13px; border-radius:12px;
  display:flex; align-items:center; gap:10px;
  background:rgba(61,220,151,.08); border:1px solid rgba(61,220,151,.35);
}
.cp-done-txt{ flex:1; display:flex; flex-direction:column; gap:3px; }
.cp-done-txt b{ font-size:12.5px; color:#3DDC97; }
.cp-done-txt span{ font-size:12px; color:var(--tx2); line-height:1.55; }
.cp-done-txt b:not(:first-child){ color:#7DD3FC; }
.cp-done-tip .btn-line{ flex-shrink:0; padding:7px 12px; font-size:12px; }

/* ★ 弹窗第 7 项：把事件流热点打包进推演（通栏样式 + 右侧条数） */
.cc-chip-stream{ grid-column:1 / -1; border-style:dashed; }
.cc-chip-stream.on{ border-style:solid; }
.cc-chip-n2{ margin-left:auto; flex-shrink:0; font-size:10.5px; color:var(--tx3);
  background:rgba(148,163,184,.12); padding:2px 7px; border-radius:999px; }
.cc-chip-stream.on .cc-chip-n2{ color:#7DD3FC; background:rgba(56,189,248,.14); }

/* ★ 隐性挂载容器：主页不显示播报台/方向盘卡片 */
.sr-mount{ position:absolute; width:0; height:0; overflow:hidden; opacity:0; pointer-events:none; }

/* ★ 播报栏：就嵌在「行业热度图」卡片内，点了「▶ 播报前 5」才展开，停止即收起
   （不再贴页面底部，视线不用跳；也不做常驻，不给强推感） */
.voice-console{
  margin-top:9px;
  padding:9px 10px 10px;
  border-radius:12px;
  background:rgba(11,18,32,.62);
  border:1px solid rgba(167,139,250,.34);
  display:none;
}
.voice-console.on{ display:block; animation:vIn .22s ease; }
@keyframes vIn{ from{ opacity:0; transform:translateY(-4px) } to{ opacity:1; transform:none } }
.voice-console .vc-sub{ margin:0 0 8px !important; max-height:76px !important;
  background:rgba(0,0,0,.3) !important; }
.voice-console .vc-bar{ margin-top:0; }
.voice-console .vc-ctrl{ justify-content:center; }
.voice-console .vc-idx{ margin-left:0; margin-right:auto; }

/* ★ 彻底隐藏主页遗留的两个卡片（display:none，不占位不受嵌套影响） */
.sr-mount{ display:none !important; }

/* ★ 事件流标题旁的「▶ 播报前 5」 */
.stream .wt-speak{ order:3; margin-left:auto; }
/* ★ 事件流定位说明（避免与权重榜重复刷屏的认知负担） */
.stream .sec-note{ order:2; padding:2px 8px; border-radius:999px; font-size:10.5px;
  color:#7DD3FC; background:rgba(56,189,248,.12); border:1px solid rgba(56,189,248,.22); }
.stream .cc-entry{ order:3; }
.stream .filters{ order:5; }

/* ★ 事件流折叠：默认只露最新 5 条，展开/收起 */
.feed-more{ display:flex; justify-content:center; padding:4px 0 10px; }
.feed-more .btn-line{ font-size:12px; padding:8px 16px; }

/* ============ ★ 创业雷达：创业者视角的独立一栏 ============ */
.biz-radar{ margin-top:2px; }
.biz-radar .sec-head{ flex-wrap:wrap; row-gap:6px; }
.biz-radar .sec-head h2{ white-space:nowrap; }
.bz-note{ padding:2px 8px; border-radius:999px; font-size:10.5px; color:#FCD34D;
  background:rgba(251,191,36,.12); border:1px solid rgba(251,191,36,.24); }
.bz-cc{ padding:7px 12px; }
.bz-list{ display:flex; flex-direction:column; gap:7px; }
.bz-item{
  display:flex; align-items:center; gap:9px;
  padding:9px 10px; border-radius:12px; cursor:pointer;
  background:linear-gradient(135deg, rgba(251,191,36,.07), rgba(167,139,250,.05));
  border:1px solid rgba(251,191,36,.2);
  transition:.15s;
}
.bz-item:hover{ border-color:rgba(251,191,36,.42); background:rgba(251,191,36,.1); }
.bz-stage{
  flex-shrink:0; width:34px; text-align:center; padding:3px 0; border-radius:7px;
  font-size:10px; font-weight:700; letter-spacing:.3px;
}
.bz-s0{ background:rgba(148,163,184,.16); color:#94A3B8; }
.bz-s1{ background:rgba(56,189,248,.16); color:#7DD3FC; }
.bz-s2{ background:rgba(167,139,250,.18); color:#C4B5FD; }
.bz-s3{ background:rgba(251,191,36,.2); color:#FCD34D; }
.bz-main{ flex:1; min-width:0; }
.bz-title{ font-size:12.5px; color:var(--tx); line-height:1.45; font-weight:550;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.bz-meta{ display:flex; align-items:center; gap:7px; margin-top:4px; font-size:10.5px; color:var(--tx3); }
.bz-tag{ padding:1px 6px; border-radius:999px; background:rgba(148,163,184,.13); color:var(--tx2); }
.bz-more{ display:flex; justify-content:center; padding:8px 0 4px; }
.bz-more .btn-line{ font-size:12px; padding:8px 16px; }

/* ★ 推演页：实时数据快照说明条 */
.cp-live{
  margin:8px 0 0; padding:7px 11px; border-radius:10px;
  font-size:11.5px; color:#7DD3FC;
  background:rgba(56,189,248,.09); border:1px solid rgba(56,189,248,.24);
}

/* ★ 热度图标题旁的「▶ 播报前 5」：贴近标题，右对齐 */
.heat-card .sec-head{ flex-wrap:wrap; row-gap:6px; }
.heat-card .sec-head h2{ white-space:nowrap; }
.heat-card .sec-head .wt-speak{ order:2; margin-left:auto; padding:5px 10px; }
.heat-card .sec-head .sec-note{ order:3; margin-left:0; font-size:10.5px; }
.heat-card .sec-head .cc-entry{ order:1; padding:7px 12px; }

/* ★ 背景乐按钮：暂停态要一眼看出"可点开"（用户反馈过"不能暂停"） */
#btnMusic.paused .bm-dot{ background:#64748B; box-shadow:none; }
#btnMusic.playing .bm-dot{ background:#3DDC97; box-shadow:0 0 6px rgba(61,220,151,.7); }
.bm-dot{ width:6px; height:6px; border-radius:50%; background:#64748B; display:inline-block; }

/* ★ 热度格：播报中/已播完的视觉反馈（格子上的 ▶ 已移除，播报统一下沉到按钮） */
.heat-cell.speaking{ border-color:rgba(167,139,250,.85) !important;
  box-shadow:inset 0 0 0 1.5px rgba(167,139,250,.65) !important;
  background:rgba(167,139,250,.12) !important; }
.heat-cell.speaking .hname{ color:#C4B5FD; font-weight:700; }
.heat-cell.done .hname::after{ content:' ✓'; color:#3DDC97; font-size:10px; }
@media(max-width:600px){
  .stream .sec-head{ flex-wrap:wrap; }
  .stream .wt-speak{ order:3; margin-left:auto; }
  .stream .filters{ order:4; width:100%; margin-top:9px; }
}

/* ================= 企业百强（2026-10-07 木头人钦定） =================
   ★ 颜色遵循 A 股习惯：利好=红、利空=绿（与欧美相反）。 */
:root{ --rise:#FF5C6C; --fall:#3DDC97; }

.firms-board{ margin:18px 0 6px; }
.firm-head{ display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; margin-bottom:11px; }
.firm-head h2{ margin:0; font-size:18px; font-weight:700; letter-spacing:.3px; }
.firm-sub{ font-size:12.5px; color:var(--tx2); flex:1; min-width:150px; }
.firm-sub b{ font-weight:700; }
.firm-sub .fpos{ color:var(--rise); } .firm-sub .fneg{ color:var(--fall); }

.firm-tabs{ display:flex; gap:8px; margin-bottom:10px; }
.ftab{ flex:1; padding:9px 12px; border-radius:11px; border:1px solid var(--line);
  background:var(--card); color:var(--tx2); font-size:13.5px; font-weight:600; cursor:pointer;
  transition:.16s; font-family:inherit; }
.ftab:hover{ border-color:#2F4A70; color:var(--tx); }
.ftab.active{ background:linear-gradient(180deg,#1E3A5F,#16283F); border-color:#3A5C8A; color:var(--tx); }

.firm-search{ display:flex; gap:8px; margin-bottom:9px; }
.firm-search input{ flex:1; background:var(--card); border:1px solid var(--line); border-radius:11px;
  padding:11px 14px; color:var(--tx); font-size:13.5px; font-family:inherit; outline:none; }
.firm-search input:focus{ border-color:#3A5C8A; }
.firm-search input::placeholder{ color:var(--tx3); }

.firm-typed-wrap{ display:flex; flex-wrap:wrap; gap:7px; margin-bottom:9px; }
.firm-typed-wrap:empty{ display:none; }
.firm-typed-chip{ display:inline-flex; align-items:center; gap:6px; padding:5px 10px; border-radius:999px;
  background:rgba(56,189,248,.12); border:1px solid rgba(56,189,248,.34); color:#8FD4F5; font-size:12.5px; font-weight:600; }
.firm-typed-chip i{ font-style:normal; cursor:pointer; opacity:.7; font-size:11px; }
.firm-typed-chip i:hover{ opacity:1; color:var(--danger); }

.firm-list{ display:flex; flex-direction:column; gap:7px; }
.firm-row{ display:flex; align-items:center; gap:10px; background:var(--card); border:1px solid var(--line);
  border-radius:12px; padding:11px 13px; transition:.16s; }
.firm-row:hover{ border-color:#2F4A70; background:var(--card2); }
.firm-row.sel{ border-color:#3A5C8A; background:rgba(56,189,248,.07); }
.firm-tick{ width:26px; height:26px; flex:0 0 26px; border-radius:8px; border:1px solid var(--line);
  background:var(--bg2); color:var(--tx3); font-size:13px; font-weight:700; cursor:pointer;
  display:flex; align-items:center; justify-content:center; transition:.16s; font-family:inherit; }
.firm-tick:hover{ border-color:#3A5C8A; color:var(--tx); }
.firm-tick.on{ background:var(--acc); border-color:var(--acc); color:#06202E; }
.firm-main{ flex:1; min-width:0; cursor:pointer; }
.firm-line1{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.firm-name{ font-size:14.5px; font-weight:700; color:var(--tx); }
.firm-code{ font-size:11.5px; color:var(--tx3); font-family:ui-monospace,Menlo,Consolas,monospace; }
.firm-tag{ font-size:11px; font-weight:700; padding:2px 8px; border-radius:999px; letter-spacing:.2px; }
.firm-tag.fpos{ background:rgba(255,92,108,.14); color:var(--rise); border:1px solid rgba(255,92,108,.3); }
.firm-tag.fneg{ background:rgba(61,220,151,.13); color:var(--fall); border:1px solid rgba(61,220,151,.3); }
.firm-tag.fflat{ background:rgba(147,164,194,.12); color:var(--tx2); border:1px solid rgba(147,164,194,.24); }
.firm-tag.fnone{ background:transparent; color:var(--tx3); border:1px solid var(--line); }
.firm-line2{ display:flex; align-items:baseline; gap:7px; margin-top:4px; font-size:12.5px; min-width:0; }
.firm-senti{ flex:0 0 auto; font-weight:700; font-size:11.5px; }
.firm-senti.fpos{ color:var(--rise); } .firm-senti.fneg{ color:var(--fall); } .firm-senti.fflat{ color:var(--tx2); }
.firm-ev{ color:var(--tx2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.firm-ev.dim{ color:var(--tx3); font-style:italic; }
.firm-badge{ flex:0 0 auto; min-width:20px; height:20px; padding:0 6px; border-radius:999px;
  background:var(--card2); border:1px solid var(--line); color:var(--tx2);
  font-size:11px; font-weight:700; display:flex; align-items:center; justify-content:center; }
.firm-lock{ text-align:center; padding:18px 14px; background:var(--card); border:1px dashed var(--line);
  border-radius:12px; font-size:13px; color:var(--tx2); line-height:1.9; }
.firm-lock .dim{ color:var(--tx3); font-size:12px; }
.firm-lock .btn-primary{ margin-top:9px; }

/* 吸底条 */
.firm-dock{ position:fixed; left:50%; transform:translateX(-50%) translateY(120%);
  bottom:calc(14px + env(safe-area-inset-bottom)); z-index:60;
  display:flex; align-items:center; gap:12px; max-width:680px; width:calc(100% - 28px);
  padding:11px 14px; background:rgba(17,27,46,.94); backdrop-filter:blur(12px);
  border:1px solid var(--line); border-radius:15px; box-shadow:0 10px 34px rgba(0,0,0,.44);
  transition:transform .28s cubic-bezier(.2,.8,.2,1); pointer-events:none; }
.firm-dock.on{ transform:translateX(-50%) translateY(0); pointer-events:auto; }
.firm-dock-count{ flex:1; font-size:13px; color:var(--tx2); font-weight:600; }
.firm-dock .btn-primary{ flex:0 0 auto; }

/* 单公司详情 */
.firm-detail{ position:fixed; left:0; right:0; bottom:0; z-index:70; max-height:78vh;
  background:var(--bg2); border-top:1px solid var(--line); border-radius:20px 20px 0 0;
  box-shadow:0 -14px 44px rgba(0,0,0,.5); transform:translateY(102%);
  transition:transform .3s cubic-bezier(.2,.8,.2,1); display:flex; flex-direction:column; }
.firm-detail.on{ transform:translateY(0); }
.fd-head{ display:flex; align-items:flex-start; justify-content:space-between; gap:10px;
  padding:16px 18px 12px; border-bottom:1px solid var(--line); }
.fd-head h3{ margin:0 0 3px; font-size:17px; }
.fd-head .dim{ margin:0; font-size:12.5px; color:var(--tx3); }
.fd-body{ overflow-y:auto; padding:12px 18px; display:flex; flex-direction:column; gap:9px; }
.fd-ev{ background:var(--card); border:1px solid var(--line); border-left-width:3px;
  border-radius:10px; padding:10px 12px; cursor:pointer; transition:.15s; }
.fd-ev:hover{ background:var(--card2); }
.fd-ev.fpos{ border-left-color:var(--rise); } .fd-ev.fneg{ border-left-color:var(--fall); }
.fd-ev.fflat{ border-left-color:var(--tx3); }
.fd-ev-t{ display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:4px; }
.fd-dir{ font-size:11.5px; font-weight:700; }
.fd-ev.fpos .fd-dir{ color:var(--rise); } .fd-ev.fneg .fd-dir{ color:var(--fall); } .fd-ev.fflat .fd-dir{ color:var(--tx2); }
.fd-src{ font-size:11px; color:var(--tx3); }
.fd-ev-title{ font-size:13.5px; color:var(--tx); line-height:1.5; }
.fd-ev-meta{ margin-top:5px; font-size:11.5px; color:var(--tx3); display:flex; justify-content:space-between; gap:8px; }
.fd-ev-meta b{ font-weight:700; }
.fd-ev-meta b.pos{ color:var(--rise); } .fd-ev-meta b.neg{ color:var(--fall); }
/* AI 复核行：与规则判定并列展示，一眼看出模型是否认同 */
.fd-ai{ margin-top:7px; padding:7px 9px; border-radius:8px; display:flex; flex-wrap:wrap;
  align-items:baseline; gap:6px; font-size:12px; line-height:1.5;
  background:rgba(120,140,170,.09); border-left:2px solid var(--tx4, #5b6b7d); }
.fd-ai.pos{ border-left-color:var(--rise); }
.fd-ai.neg{ border-left-color:var(--fall); }
.fd-ai-tag{ flex:0 0 auto; font-weight:700; color:var(--tx); }
.fd-ai.pos .fd-ai-tag{ color:var(--rise); }
.fd-ai.neg .fd-ai-tag{ color:var(--fall); }
.fd-ai-why{ flex:1 1 auto; min-width:0; color:var(--tx2, #93a3b5); }
.fd-ai-cmp{ flex:0 0 auto; font-style:normal; font-size:11px; padding:1px 6px; border-radius:6px; }
.fd-ai-cmp.same{ color:#7fd6a3; background:rgba(53,199,123,.13); }
.fd-ai-cmp.diff{ color:#e6c07a; background:rgba(230,180,80,.15); }
.fd-foot{ display:flex; gap:9px; padding:12px 18px calc(16px + env(safe-area-inset-bottom));
  border-top:1px solid var(--line); }
.fd-foot .btn-primary{ flex:1; }
.fd-foot .btn-line{ flex:0 0 auto; }

@media(max-width:600px){
  .firm-head h2{ font-size:16.5px; }
  .firm-sub{ order:3; flex:1 0 100%; }
  .firm-cc-entry{ order:2; }
}

/* 上次推演恢复条（首页顶部） */
.lc-bar{ display:flex; align-items:center; gap:9px; width:100%; margin:0 0 13px;
  padding:11px 14px; border-radius:12px; cursor:pointer; font-family:inherit; text-align:left;
  background:linear-gradient(90deg, rgba(61,220,151,.10), rgba(56,189,248,.08));
  border:1px solid rgba(61,220,151,.30); color:var(--tx); transition:.16s; }
.lc-bar:hover{ border-color:rgba(61,220,151,.55); }
.lc-ico{ flex:0 0 auto; font-size:15px; font-weight:800; color:var(--hi); }
.lc-txt{ flex:1; min-width:0; font-size:12.8px; color:var(--tx2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.lc-txt b{ color:var(--tx); }
.lc-arrow{ flex:0 0 auto; color:var(--hi); font-weight:700; }

/* 企业百强 · 付费版展开/收起 */
.firm-more{ text-align:center; padding:6px 0 2px; }
.firm-more .btn-line{ font-size:12.5px; padding:8px 18px; }

/* 引导选行业：高亮闪烁 + 顶部指引条 */
.heat-card.flash{ animation: heatFlash 1.1s ease-in-out 2; }
@keyframes heatFlash{
  0%,100%{ box-shadow:none; }
  50%{ box-shadow:0 0 0 2px var(--hi), 0 0 26px rgba(61,220,151,.45); }
}
.pick-guide-bar{ display:none; margin:0 0 12px; padding:11px 14px; border-radius:12px;
  background:linear-gradient(90deg, rgba(61,220,151,.14), rgba(56,189,248,.10));
  border:1px solid rgba(61,220,151,.42); color:var(--tx); font-size:13.5px; line-height:1.6; }
.pick-guide-bar.on{ display:block; animation: pgIn .3s ease; }
.pick-guide-bar strong{ color:var(--hi); }
@keyframes pgIn{ from{ opacity:0; transform:translateY(-6px); } to{ opacity:1; transform:none; } }

/* 会员到期提醒条 */
.expiry-bar{ display:flex; align-items:center; gap:9px; width:100%; margin:0 0 12px;
  padding:11px 14px; border-radius:12px; cursor:pointer; font-family:inherit; text-align:left;
  background:linear-gradient(90deg, rgba(240,184,96,.13), rgba(240,184,96,.05));
  border:1px solid rgba(240,184,96,.42); color:var(--tx); transition:.16s; }
.expiry-bar:hover{ border-color:rgba(240,184,96,.7); }
.expiry-bar.urgent{ background:linear-gradient(90deg, rgba(255,92,108,.14), rgba(255,92,108,.05));
  border-color:rgba(255,92,108,.45); }
.expiry-bar.urgent:hover{ border-color:rgba(255,92,108,.75); }
.ex-ico{ flex:0 0 auto; font-size:15px; }
.ex-txt{ flex:1; min-width:0; font-size:12.8px; color:var(--tx2); line-height:1.5; }
.ex-txt strong{ color:var(--tx); }
.ex-arrow{ flex:0 0 auto; font-size:12.5px; font-weight:700; color:#F0B860; }
.expiry-bar.urgent .ex-arrow{ color:var(--rise); }
/* 我的页 · 到期时间着色 */
.me-row span.exp-warn{ color:#F0B860; font-weight:700; }
.me-row span.exp-red{ color:var(--rise); font-weight:700; }

/* ================= 支付页 · 待推演条（2026-10-07 木头人钦定） =================
   点推演 → 送支付页，这里让用户一眼看到"问题还在"，并给免费额度一键入口 */
.pend-card{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin:0 0 16px;
  padding:14px 16px; border-radius:14px;
  background:linear-gradient(90deg, rgba(56,189,248,.10), rgba(61,220,151,.07));
  border:1px solid rgba(56,189,248,.34); }
.pend-card.has-quota{ background:linear-gradient(90deg, rgba(61,220,151,.14), rgba(56,189,248,.08));
  border-color:rgba(61,220,151,.46); }
.pend-txt{ flex:1; min-width:190px; display:flex; flex-direction:column; gap:4px; }
.pend-txt b{ font-size:14px; font-weight:700; color:var(--tx); }
.pend-q{ font-size:13px; color:var(--tx); line-height:1.5;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pend-why{ font-size:12px; color:var(--tx2); font-style:normal; line-height:1.55; }
.pend-acts{ flex:0 0 auto; display:flex; flex-direction:column; gap:7px; min-width:132px; }
.pend-acts .btn-primary, .pend-acts .btn-line{ width:100%; }
/* 🧪 支付页预览模式（?paywall=1）：只在测试开关打开时出现 */
.pend-card.is-test{ background:linear-gradient(90deg, rgba(255,193,74,.14), rgba(255,140,60,.06));
  border-color:rgba(255,193,74,.5); }
.pend-test{ font-size:12px; font-style:normal; line-height:1.6; color:#ffd479;
  border-top:1px dashed rgba(255,193,74,.35); padding-top:6px; margin-top:2px; }
.pend-test b{ font-weight:700; color:#ffe9a8; }
@media(max-width:600px){
  .pend-card{ flex-direction:column; align-items:stretch; }
  .pend-acts{ min-width:0; }
  .pend-q{ white-space:normal; }
}

/* ===== 顶栏/hero 窄屏适配（2026-10-07） ===== */
@media(max-width:430px){
  .logo-img{width:32px;height:32px;border-radius:10px}
  .brand-tag{font-size:10px}
  .tb-mid strong{font-size:17px}
  .tb-mid{gap:5px}
  .btn-ghost{padding:6px 12px;font-size:12.5px}
  .hero h1{font-size:22px}
}
@media(max-width:365px){
  .brand-tag{display:none}
}
@media(max-width:340px){
  .tb-mid .brand-en-line{display:none}
}

/* ★ 首页邀请胶囊（2026-10-08）：hero 末尾小按钮，不抢热度图风头 */
.invite-row{display:flex;justify-content:center;margin-top:12px}
.invite-chip{appearance:none;border:1px solid rgba(61,220,151,.38);background:rgba(61,220,151,.09);
  color:#7CE8B8;font-size:12.5px;font-weight:600;padding:8px 16px;border-radius:999px;cursor:pointer}
.invite-chip:active{transform:scale(.97)}
/* ================================================================
   16. ★ 事件 → 股票推演 板块样式（2026-10-09）
   沿用深色主题变量：--card --line --tx --tx2 --hi --danger --acc
   ★ 配色遵循 A 股习惯：利好=红(涨)，利空=绿(跌) —— 与欧美相反
   ================================================================ */
.stock-board{
  margin:18px 0 22px;
  padding:16px 14px 14px;
  background:linear-gradient(180deg, rgba(56,189,248,.06), rgba(22,34,58,.4));
  border:1px solid var(--line);
  border-radius:var(--r);
}
.stock-head{ display:flex; align-items:center; gap:10px; margin-bottom:4px; }
.stock-head h2{ font-size:16px; margin:0; color:var(--tx); }
.stock-sub{ margin-left:auto; font-size:11.5px; color:var(--tx3); }
.stock-tip{ font-size:12px; color:var(--tx2); line-height:1.55; margin:4px 0 12px; }

/* 板块 tabs */
.stock-tabs{
  display:flex; gap:6px; overflow-x:auto; padding-bottom:10px; margin-bottom:6px;
  -webkit-overflow-scrolling:touch; scrollbar-width:none;
}
.stock-tabs::-webkit-scrollbar{ display:none; }
.st-tab{
  flex:0 0 auto; padding:5px 11px; border-radius:999px; cursor:pointer;
  background:var(--card2); border:1px solid var(--line); color:var(--tx2);
  font-size:12px; white-space:nowrap; transition:.15s;
}
.st-tab em{ font-style:normal; opacity:.6; margin-left:4px; font-size:11px; }
.st-tab.active{ background:rgba(56,189,248,.16); border-color:var(--acc); color:var(--tx); }
.st-tab:hover{ filter:brightness(1.12); }

/* 区块标题 */
.st-sec-title{
  font-size:12.5px; color:var(--warn); font-weight:600;
  margin:12px 0 8px; letter-spacing:.3px;
}
.st-sec-title:first-child{ margin-top:2px; }

/* 卡片 */
.st-card{
  background:var(--card); border:1px solid var(--line); border-radius:12px;
  padding:11px 12px; margin-bottom:9px; cursor:pointer; transition:.15s;
  border-left:3px solid var(--line);
}
.st-card:hover{ background:var(--card2); transform:translateY(-1px); }
.st-card.spos{ border-left-color:#F0546B; }   /* 利好=红 */
.st-card.sneg{ border-left-color:#3DDC97; }   /* 利空=绿 */
.st-card.sflat{ border-left-color:var(--tx3); }

.st-top{ display:flex; align-items:center; gap:7px; flex-wrap:wrap; }
.st-name{ font-size:14.5px; font-weight:600; color:var(--tx); }
.st-code{ font-size:11.5px; color:var(--tx3); font-family:ui-monospace,Menlo,monospace; }
.st-dir{
  font-size:11px; padding:2px 7px; border-radius:5px; font-weight:600;
  font-family:ui-monospace,Menlo,monospace;
}
.st-dir.spos{ background:rgba(240,84,107,.16); color:#F0546B; }
.st-dir.sneg{ background:rgba(61,220,151,.14); color:#3DDC97; }
.st-dir.sflat{ background:rgba(147,164,194,.14); color:var(--tx2); }
.st-strong-badge{
  font-size:10px; padding:2px 6px; border-radius:4px; margin-left:auto;
  background:rgba(255,176,32,.16); color:var(--warn); border:1px solid rgba(255,176,32,.3);
  font-weight:600;
}

.st-meta{ display:flex; gap:10px; flex-wrap:wrap; margin-top:6px; font-size:11.5px; color:var(--tx3); }
.st-term{ color:var(--acc); }
.st-ev{
  margin-top:7px; font-size:12.5px; color:var(--tx2); line-height:1.5;
  padding-left:2px; border-left:2px solid var(--line); padding-left:8px;
}
.st-ev em{ font-style:normal; color:var(--tx3); font-size:11px; }
.st-why{ margin-top:5px; font-size:11.5px; color:var(--tx3); }
.st-foot{ margin-top:9px; text-align:right; }
.st-deduce{
  padding:5px 12px; font-size:12px; border-radius:7px; cursor:pointer;
  background:rgba(56,189,248,.12); border:1px solid var(--acc); color:var(--acc);
  transition:.15s;
}
.st-deduce:hover{ background:rgba(56,189,248,.22); }

.stock-more-btn{ text-align:center; margin:10px 0 4px; }
.stock-disc{
  font-size:11px; color:var(--tx3); line-height:1.6; margin-top:12px;
  padding-top:10px; border-top:1px dashed var(--line);
}

/* 空白态 */
.stock-board .empty{ font-size:12.5px; color:var(--tx3); padding:18px 0; text-align:center; }

/* ---------- 推演抽屉 ---------- */
.stock-sheet{ position:fixed; inset:0; z-index:9999; display:flex; align-items:flex-end; }
.stock-sheet .ss-mask{
  position:absolute; inset:0; background:rgba(4,8,16,.6); opacity:0; transition:.22s;
}
.stock-sheet.show .ss-mask{ opacity:1; }
.stock-sheet .ss-panel{
  position:relative; width:100%; max-height:86vh; overflow:hidden;
  background:var(--bg2); border-top:1px solid var(--line);
  border-radius:18px 18px 0 0; display:flex; flex-direction:column;
  transform:translateY(100%); transition:.24s cubic-bezier(.22,1,.36,1);
}
.stock-sheet.show .ss-panel{ transform:translateY(0); }

.ss-head{ display:flex; align-items:center; gap:8px; padding:14px 16px 8px; }
.ss-title{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.ss-title strong{ font-size:16px; color:var(--tx); }
.ss-close{
  margin-left:auto; width:28px; height:28px; border-radius:50%; cursor:pointer;
  background:var(--card2); border:1px solid var(--line); color:var(--tx2);
  font-size:17px; line-height:1;
}
.ss-tags{ display:flex; gap:7px; padding:0 16px 10px; flex-wrap:wrap; }
.ss-tag{
  font-size:11px; padding:2px 8px; border-radius:5px;
  background:var(--card2); border:1px solid var(--line); color:var(--tx3);
}
.ss-body{ padding:0 16px; overflow-y:auto; flex:1; -webkit-overflow-scrolling:touch; }

.ss-ev-list{ margin-bottom:12px; }
.ss-ev{ display:flex; gap:8px; padding:8px 0; border-bottom:1px solid var(--line); }
.ss-ev:last-child{ border-bottom:0; }
.ss-ev-dir{
  flex:0 0 auto; font-size:10.5px; padding:2px 6px; border-radius:4px; height:fit-content;
  font-weight:600;
}
.ss-ev-dir.spos{ background:rgba(240,84,107,.16); color:#F0546B; }
.ss-ev-dir.sneg{ background:rgba(61,220,151,.14); color:#3DDC97; }
.ss-ev-dir.sflat{ background:rgba(147,164,194,.14); color:var(--tx2); }
.ss-ev-tx{ font-size:13px; color:var(--tx2); line-height:1.55; }
.ss-ev-tx em{ display:block; font-style:normal; font-size:11px; color:var(--tx3); margin-top:2px; }

.ss-out{
  font-size:13.5px; line-height:1.75; color:var(--tx); white-space:pre-wrap;
  padding:12px 0 20px;
}
.ss-gate{ text-align:center; padding:16px 0 20px; }
.ss-gate p{ font-size:13px; color:var(--tx2); margin-bottom:12px; }

.ss-foot{
  display:flex; align-items:center; gap:10px; padding:12px 16px 16px;
  border-top:1px solid var(--line); background:var(--bg2);
}
.ss-warn{ font-size:10.5px; color:var(--tx3); line-height:1.45; flex:1; }
.ss-foot .btn-primary{ flex:0 0 auto; }
/* ================================================================
   16. ★ 事件 → 股票推演 板块样式（2026-10-09）
   沿用深色主题变量：--card --line --tx --tx2 --hi --danger --acc
   ★ 配色遵循 A 股习惯：利好=红(涨)，利空=绿(跌) —— 与欧美相反
   ================================================================ */
.stock-board{
  margin:18px 0 22px;
  padding:16px 14px 14px;
  background:linear-gradient(180deg, rgba(56,189,248,.06), rgba(22,34,58,.4));
  border:1px solid var(--line);
  border-radius:var(--r);
}
.stock-head{ display:flex; align-items:center; gap:10px; margin-bottom:4px; }
.stock-head h2{ font-size:16px; margin:0; color:var(--tx); }
.stock-sub{ margin-left:auto; font-size:11.5px; color:var(--tx3); }
.stock-tip{ font-size:12px; color:var(--tx2); line-height:1.55; margin:4px 0 12px; }

/* 板块 tabs */
.stock-tabs{
  display:flex; gap:6px; overflow-x:auto; padding-bottom:10px; margin-bottom:6px;
  -webkit-overflow-scrolling:touch; scrollbar-width:none;
}
.stock-tabs::-webkit-scrollbar{ display:none; }
.st-tab{
  flex:0 0 auto; padding:5px 11px; border-radius:999px; cursor:pointer;
  background:var(--card2); border:1px solid var(--line); color:var(--tx2);
  font-size:12px; white-space:nowrap; transition:.15s;
}
.st-tab em{ font-style:normal; opacity:.6; margin-left:4px; font-size:11px; }
.st-tab.active{ background:rgba(56,189,248,.16); border-color:var(--acc); color:var(--tx); }
.st-tab:hover{ filter:brightness(1.12); }

/* 区块标题 */
.st-sec-title{
  font-size:12.5px; color:var(--warn); font-weight:600;
  margin:12px 0 8px; letter-spacing:.3px;
}
.st-sec-title:first-child{ margin-top:2px; }

/* 卡片 */
.st-card{
  background:var(--card); border:1px solid var(--line); border-radius:12px;
  padding:11px 12px; margin-bottom:9px; cursor:pointer; transition:.15s;
  border-left:3px solid var(--line);
}
.st-card:hover{ background:var(--card2); transform:translateY(-1px); }
.st-card.spos{ border-left-color:#F0546B; }   /* 利好=红 */
.st-card.sneg{ border-left-color:#3DDC97; }   /* 利空=绿 */
.st-card.sflat{ border-left-color:var(--tx3); }

.st-top{ display:flex; align-items:center; gap:7px; flex-wrap:wrap; }
.st-name{ font-size:14.5px; font-weight:600; color:var(--tx); }
.st-code{ font-size:11.5px; color:var(--tx3); font-family:ui-monospace,Menlo,monospace; }
.st-dir{
  font-size:11px; padding:2px 7px; border-radius:5px; font-weight:600;
  font-family:ui-monospace,Menlo,monospace;
}
.st-dir.spos{ background:rgba(240,84,107,.16); color:#F0546B; }
.st-dir.sneg{ background:rgba(61,220,151,.14); color:#3DDC97; }
.st-dir.sflat{ background:rgba(147,164,194,.14); color:var(--tx2); }
.st-strong-badge{
  font-size:10px; padding:2px 6px; border-radius:4px; margin-left:auto;
  background:rgba(255,176,32,.16); color:var(--warn); border:1px solid rgba(255,176,32,.3);
  font-weight:600;
}

.st-meta{ display:flex; gap:10px; flex-wrap:wrap; margin-top:6px; font-size:11.5px; color:var(--tx3); }
.st-term{ color:var(--acc); }
.st-ev{
  margin-top:7px; font-size:12.5px; color:var(--tx2); line-height:1.5;
  padding-left:2px; border-left:2px solid var(--line); padding-left:8px;
}
.st-ev em{ font-style:normal; color:var(--tx3); font-size:11px; }
.st-why{ margin-top:5px; font-size:11.5px; color:var(--tx3); }
.st-foot{ margin-top:9px; text-align:right; }
.st-deduce{
  padding:5px 12px; font-size:12px; border-radius:7px; cursor:pointer;
  background:rgba(56,189,248,.12); border:1px solid var(--acc); color:var(--acc);
  transition:.15s;
}
.st-deduce:hover{ background:rgba(56,189,248,.22); }

.stock-more-btn{ text-align:center; margin:10px 0 4px; }
.stock-disc{
  font-size:11px; color:var(--tx3); line-height:1.6; margin-top:12px;
  padding-top:10px; border-top:1px dashed var(--line);
}

/* 空白态 */
.stock-board .empty{ font-size:12.5px; color:var(--tx3); padding:18px 0; text-align:center; }

/* ---------- 推演抽屉 ---------- */
.stock-sheet{ position:fixed; inset:0; z-index:9999; display:flex; align-items:flex-end; }
.stock-sheet .ss-mask{
  position:absolute; inset:0; background:rgba(4,8,16,.6); opacity:0; transition:.22s;
}
.stock-sheet.show .ss-mask{ opacity:1; }
.stock-sheet .ss-panel{
  position:relative; width:100%; max-height:86vh; overflow:hidden;
  background:var(--bg2); border-top:1px solid var(--line);
  border-radius:18px 18px 0 0; display:flex; flex-direction:column;
  transform:translateY(100%); transition:.24s cubic-bezier(.22,1,.36,1);
}
.stock-sheet.show .ss-panel{ transform:translateY(0); }

.ss-head{ display:flex; align-items:center; gap:8px; padding:14px 16px 8px; }
.ss-title{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.ss-title strong{ font-size:16px; color:var(--tx); }
.ss-close{
  margin-left:auto; width:28px; height:28px; border-radius:50%; cursor:pointer;
  background:var(--card2); border:1px solid var(--line); color:var(--tx2);
  font-size:17px; line-height:1;
}
.ss-tags{ display:flex; gap:7px; padding:0 16px 10px; flex-wrap:wrap; }
.ss-tag{
  font-size:11px; padding:2px 8px; border-radius:5px;
  background:var(--card2); border:1px solid var(--line); color:var(--tx3);
}
.ss-body{ padding:0 16px; overflow-y:auto; flex:1; -webkit-overflow-scrolling:touch; }

.ss-ev-list{ margin-bottom:12px; }
.ss-ev{ display:flex; gap:8px; padding:8px 0; border-bottom:1px solid var(--line); }
.ss-ev:last-child{ border-bottom:0; }
.ss-ev-dir{
  flex:0 0 auto; font-size:10.5px; padding:2px 6px; border-radius:4px; height:fit-content;
  font-weight:600;
}
.ss-ev-dir.spos{ background:rgba(240,84,107,.16); color:#F0546B; }
.ss-ev-dir.sneg{ background:rgba(61,220,151,.14); color:#3DDC97; }
.ss-ev-dir.sflat{ background:rgba(147,164,194,.14); color:var(--tx2); }
.ss-ev-tx{ font-size:13px; color:var(--tx2); line-height:1.55; }
.ss-ev-tx em{ display:block; font-style:normal; font-size:11px; color:var(--tx3); margin-top:2px; }

.ss-out{
  font-size:13.5px; line-height:1.75; color:var(--tx); white-space:pre-wrap;
  padding:12px 0 20px;
}
.ss-gate{ text-align:center; padding:16px 0 20px; }
.ss-gate p{ font-size:13px; color:var(--tx2); margin-bottom:12px; }

.ss-foot{
  display:flex; align-items:center; gap:10px; padding:12px 16px 16px;
  border-top:1px solid var(--line); background:var(--bg2);
}
.ss-warn{ font-size:10.5px; color:var(--tx3); line-height:1.45; flex:1; }
.ss-foot .btn-primary{ flex:0 0 auto; }

/* ===== 方法论视角标签（2026-10-09 木头人要求：对标华尔街分析师框架） ===== */
.st-lenses{ display:flex; flex-wrap:wrap; gap:6px; margin:2px 0 8px; }
.st-lens{
  font-size:10.5px; padding:2px 7px; border-radius:10px;
  background:rgba(56,189,248,.10); color:#7DD3FC; border:1px solid rgba(56,189,248,.22);
  white-space:nowrap;
}
.st-human{
  font-size:10.5px; padding:2px 7px; border-radius:10px;
  background:rgba(255,176,32,.12); color:#FFB020; border:1px solid rgba(255,176,32,.28);
  white-space:nowrap;
}
.ss-lenses{ display:flex; flex-wrap:wrap; gap:6px; padding:10px 0 4px; }
.ss-lens{
  font-size:11px; padding:4px 9px; border-radius:8px; line-height:1.4;
  background:var(--card2); border:1px solid var(--line); color:var(--tx2);
}
.ss-lens b{ color:#7DD3FC; font-weight:600; margin-right:5px; }
.ss-lens em{ display:block; font-style:normal; font-size:10px; color:var(--tx3); margin-top:2px; }
.ss-humansw{
  font-size:11.5px; line-height:1.6; color:#FFB020; margin:8px 0;
  padding:8px 10px; border-radius:8px;
  background:rgba(255,176,32,.08); border:1px solid rgba(255,176,32,.22);
}

/* ===== 每日复盘战绩面板（2026-10-09 木头人要求） ===== */
.stock-method{ margin:8px 0 12px; border:1px solid var(--line); border-radius:10px; background:var(--card); }
.stock-method>summary{
  cursor:pointer; padding:10px 14px; font-size:12.5px; color:var(--tx2); font-weight:600;
  list-style:none;
}
.stock-method>summary::-webkit-details-marker{ display:none; }
.stock-method>summary::before{ content:'▸ '; color:var(--acc); }
.stock-method[open]>summary::before{ content:'▾ '; }
.sm-body{ padding:0 14px 12px; }
.sm-row{ display:flex; gap:10px; padding:5px 0; font-size:12px; line-height:1.6; }
.sm-row b{ flex:0 0 108px; color:#7DD3FC; font-weight:600; }
.sm-row span{ color:var(--tx2); }
.sm-note{ font-size:11px; color:var(--tx3); line-height:1.6; margin-top:8px; padding-top:8px; border-top:1px dashed var(--line); }

.stock-review{ margin:18px 0 8px; border:1px solid var(--line); border-radius:12px; background:var(--card); padding:14px; }
.sr-head{ display:flex; align-items:baseline; justify-content:space-between; gap:10px; margin-bottom:12px; flex-wrap:wrap; }
.sr-title{ font-size:14px; font-weight:700; color:var(--tx); }
.sr-sub{ font-size:11px; color:var(--tx3); }

.sr-kpi{ display:flex; align-items:flex-end; gap:18px; flex-wrap:wrap; margin-bottom:14px; }
.sr-kpi-main{ display:flex; flex-direction:column; }
.sr-kpi-main b{ font-size:28px; line-height:1.1; font-weight:800; }
.sr-kpi-main b.ok{ color:#F0546B; } .sr-kpi-main b.mid{ color:#FFB020; } .sr-kpi-main b.bad{ color:#3DDC97; }
.sr-kpi-main span{ font-size:11px; color:var(--tx3); margin-top:2px; }
.sr-kpi-i{ display:flex; flex-direction:column; }
.sr-kpi-i b{ font-size:16px; font-weight:700; color:var(--tx); }
.sr-kpi-i span{ font-size:11px; color:var(--tx3); }

.sr-trend{ display:flex; align-items:center; gap:12px; margin-bottom:12px; }
.sr-tname{ font-size:11px; color:var(--tx3); flex:0 0 auto; }
.sr-bars{ display:flex; align-items:flex-end; gap:4px; height:46px; }
.sr-bar{ width:12px; border-radius:3px 3px 0 0; display:block; }
.sr-bar.ok{ background:#F0546B; } .sr-bar.mid{ background:#FFB020; } .sr-bar.bad{ background:#3DDC97; } .sr-bar.flat{ background:var(--line); }

.sr-lenses{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-bottom:12px; }
.sr-lens{
  display:flex; align-items:center; gap:6px; font-size:11px; padding:5px 9px; border-radius:8px;
  background:var(--card2); border:1px solid var(--line);
}
.sr-lens b{ color:var(--tx2); font-weight:600; }
.sr-lens em{ font-style:normal; font-weight:700; }
.sr-lens em.ok{ color:#F0546B; } .sr-lens em.mid{ color:#FFB020; } .sr-lens em.bad{ color:#3DDC97; }
.sr-lens span{ color:var(--tx3); font-size:10px; }

.sr-block{ margin-top:12px; padding-top:12px; border-top:1px solid var(--line); }
.sr-block h4{ font-size:12px; color:var(--tx2); font-weight:600; margin-bottom:8px; }
.sr-lessons{ margin:0; padding-left:16px; }
.sr-lessons li{ font-size:12px; color:var(--tx2); line-height:1.7; }
.sr-causes{ margin:0; padding:0; list-style:none; }
.sr-causes li{
  font-size:12px; color:var(--tx2); line-height:1.7; display:flex; justify-content:space-between; gap:10px;
  padding:4px 0; border-bottom:1px dashed var(--line);
}
.sr-causes li:last-child{ border-bottom:0; }
.sr-causes em{ font-style:normal; color:var(--tx3); flex:0 0 auto; }

.sr-misses-wrap>summary{ cursor:pointer; font-size:12px; color:var(--tx2); font-weight:600; list-style:none; }
.sr-misses-wrap>summary::-webkit-details-marker{ display:none; }
.sr-misses-wrap>summary::before{ content:'▸ '; color:var(--acc); }
.sr-misses-wrap[open]>summary::before{ content:'▾ '; }
.sr-misses{ margin-top:8px; }
.sr-miss{ display:flex; align-items:center; gap:8px; padding:6px 0; border-bottom:1px solid var(--line); font-size:12px; flex-wrap:wrap; }
.sr-miss:last-child{ border-bottom:0; }
.sr-mn{ flex:0 0 auto; color:var(--tx); font-weight:600; }
.sr-mn em{ font-style:normal; font-size:10px; color:var(--tx3); font-weight:400; margin-left:4px; }
.sr-mp{ flex:0 0 auto; font-weight:700; }
.sr-mp.up{ color:#F0546B; } .sr-mp.dn{ color:#3DDC97; }
.sr-mc{ flex:1; min-width:120px; color:var(--tx3); font-size:11px; }
.sr-note{ font-size:10.5px; color:var(--tx3); line-height:1.6; margin-top:12px; padding-top:10px; border-top:1px dashed var(--line); }

/* ===== 强信号提醒横幅（2026-10-09） ===== */
.stock-alert{
  margin:0 0 12px; padding:10px 12px; border-radius:12px;
  background:linear-gradient(135deg, rgba(240,84,107,.14), rgba(56,189,248,.08));
  border:1px solid rgba(240,84,107,.35);
}
.sa-head{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:8px; }
.sa-t{ font-size:13px; font-weight:700; color:#F0546B; }
.sa-btn{
  font-size:11px; padding:5px 10px; border-radius:14px; border:1px solid rgba(240,84,107,.5);
  background:rgba(240,84,107,.18); color:#FF8FA3; font-weight:600; cursor:pointer;
}
.sa-btn.off{ border-color:var(--line); background:var(--card2); color:var(--tx3); cursor:default; }
.sa-row{ display:flex; flex-wrap:wrap; gap:6px; }
.sa-item{
  display:inline-flex; align-items:center; gap:5px; font-size:11.5px; padding:5px 9px;
  border-radius:8px; background:rgba(11,18,32,.55); cursor:pointer;
}
.sa-item b{ font-weight:700; }
.sa-item.up b{ color:#F0546B; } .sa-item.dn b{ color:#3DDC97; }
.sa-item{ color:var(--tx); }
.sa-item em{ font-style:normal; font-size:10px; color:var(--tx3); }
/* ================================================================
   16. ★ 事件 → 股票推演 板块样式（2026-10-09）
   沿用深色主题变量：--card --line --tx --tx2 --hi --danger --acc
   ★ 配色遵循 A 股习惯：利好=红(涨)，利空=绿(跌) —— 与欧美相反
   ================================================================ */
.stock-board{
  margin:18px 0 22px;
  padding:16px 14px 14px;
  background:linear-gradient(180deg, rgba(56,189,248,.06), rgba(22,34,58,.4));
  border:1px solid var(--line);
  border-radius:var(--r);
}
.stock-head{ display:flex; align-items:center; gap:10px; margin-bottom:4px; }
.stock-head h2{ font-size:16px; margin:0; color:var(--tx); }
.stock-sub{ margin-left:auto; font-size:11.5px; color:var(--tx3); }
.stock-tip{ font-size:12px; color:var(--tx2); line-height:1.55; margin:4px 0 12px; }

/* 板块 tabs */
.stock-tabs{
  display:flex; gap:6px; overflow-x:auto; padding-bottom:10px; margin-bottom:6px;
  -webkit-overflow-scrolling:touch; scrollbar-width:none;
}
.stock-tabs::-webkit-scrollbar{ display:none; }
.st-tab{
  flex:0 0 auto; padding:5px 11px; border-radius:999px; cursor:pointer;
  background:var(--card2); border:1px solid var(--line); color:var(--tx2);
  font-size:12px; white-space:nowrap; transition:.15s;
}
.st-tab em{ font-style:normal; opacity:.6; margin-left:4px; font-size:11px; }
.st-tab.active{ background:rgba(56,189,248,.16); border-color:var(--acc); color:var(--tx); }
.st-tab:hover{ filter:brightness(1.12); }

/* 区块标题 */
.st-sec-title{
  font-size:12.5px; color:var(--warn); font-weight:600;
  margin:12px 0 8px; letter-spacing:.3px;
}
.st-sec-title:first-child{ margin-top:2px; }

/* 卡片 */
.st-card{
  background:var(--card); border:1px solid var(--line); border-radius:12px;
  padding:11px 12px; margin-bottom:9px; cursor:pointer; transition:.15s;
  border-left:3px solid var(--line);
}
.st-card:hover{ background:var(--card2); transform:translateY(-1px); }
.st-card.spos{ border-left-color:#F0546B; }   /* 利好=红 */
.st-card.sneg{ border-left-color:#3DDC97; }   /* 利空=绿 */
.st-card.sflat{ border-left-color:var(--tx3); }

.st-top{ display:flex; align-items:center; gap:7px; flex-wrap:wrap; }
.st-name{ font-size:14.5px; font-weight:600; color:var(--tx); }
.st-code{ font-size:11.5px; color:var(--tx3); font-family:ui-monospace,Menlo,monospace; }
.st-dir{
  font-size:11px; padding:2px 7px; border-radius:5px; font-weight:600;
  font-family:ui-monospace,Menlo,monospace;
}
.st-dir.spos{ background:rgba(240,84,107,.16); color:#F0546B; }
.st-dir.sneg{ background:rgba(61,220,151,.14); color:#3DDC97; }
.st-dir.sflat{ background:rgba(147,164,194,.14); color:var(--tx2); }
.st-strong-badge{
  font-size:10px; padding:2px 6px; border-radius:4px; margin-left:auto;
  background:rgba(255,176,32,.16); color:var(--warn); border:1px solid rgba(255,176,32,.3);
  font-weight:600;
}

.st-meta{ display:flex; gap:10px; flex-wrap:wrap; margin-top:6px; font-size:11.5px; color:var(--tx3); }
.st-term{ color:var(--acc); }
.st-ev{
  margin-top:7px; font-size:12.5px; color:var(--tx2); line-height:1.5;
  padding-left:2px; border-left:2px solid var(--line); padding-left:8px;
}
.st-ev em{ font-style:normal; color:var(--tx3); font-size:11px; }
.st-why{ margin-top:5px; font-size:11.5px; color:var(--tx3); }
.st-foot{ margin-top:9px; text-align:right; }
.st-deduce{
  padding:5px 12px; font-size:12px; border-radius:7px; cursor:pointer;
  background:rgba(56,189,248,.12); border:1px solid var(--acc); color:var(--acc);
  transition:.15s;
}
.st-deduce:hover{ background:rgba(56,189,248,.22); }

.stock-more-btn{ text-align:center; margin:10px 0 4px; }
.stock-disc{
  font-size:11px; color:var(--tx3); line-height:1.6; margin-top:12px;
  padding-top:10px; border-top:1px dashed var(--line);
}

/* 空白态 */
.stock-board .empty{ font-size:12.5px; color:var(--tx3); padding:18px 0; text-align:center; }

/* ---------- 推演抽屉 ---------- */
.stock-sheet{ position:fixed; inset:0; z-index:9999; display:flex; align-items:flex-end; }
.stock-sheet .ss-mask{
  position:absolute; inset:0; background:rgba(4,8,16,.6); opacity:0; transition:.22s;
}
.stock-sheet.show .ss-mask{ opacity:1; }
.stock-sheet .ss-panel{
  position:relative; width:100%; max-height:86vh; overflow:hidden;
  background:var(--bg2); border-top:1px solid var(--line);
  border-radius:18px 18px 0 0; display:flex; flex-direction:column;
  transform:translateY(100%); transition:.24s cubic-bezier(.22,1,.36,1);
}
.stock-sheet.show .ss-panel{ transform:translateY(0); }

.ss-head{ display:flex; align-items:center; gap:8px; padding:14px 16px 8px; }
.ss-title{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.ss-title strong{ font-size:16px; color:var(--tx); }
.ss-close{
  margin-left:auto; width:28px; height:28px; border-radius:50%; cursor:pointer;
  background:var(--card2); border:1px solid var(--line); color:var(--tx2);
  font-size:17px; line-height:1;
}
.ss-tags{ display:flex; gap:7px; padding:0 16px 10px; flex-wrap:wrap; }
.ss-tag{
  font-size:11px; padding:2px 8px; border-radius:5px;
  background:var(--card2); border:1px solid var(--line); color:var(--tx3);
}
.ss-body{ padding:0 16px; overflow-y:auto; flex:1; -webkit-overflow-scrolling:touch; }

.ss-ev-list{ margin-bottom:12px; }
.ss-ev{ display:flex; gap:8px; padding:8px 0; border-bottom:1px solid var(--line); }
.ss-ev:last-child{ border-bottom:0; }
.ss-ev-dir{
  flex:0 0 auto; font-size:10.5px; padding:2px 6px; border-radius:4px; height:fit-content;
  font-weight:600;
}
.ss-ev-dir.spos{ background:rgba(240,84,107,.16); color:#F0546B; }
.ss-ev-dir.sneg{ background:rgba(61,220,151,.14); color:#3DDC97; }
.ss-ev-dir.sflat{ background:rgba(147,164,194,.14); color:var(--tx2); }
.ss-ev-tx{ font-size:13px; color:var(--tx2); line-height:1.55; }
.ss-ev-tx em{ display:block; font-style:normal; font-size:11px; color:var(--tx3); margin-top:2px; }

.ss-out{
  font-size:13.5px; line-height:1.75; color:var(--tx); white-space:pre-wrap;
  padding:12px 0 20px;
}
.ss-gate{ text-align:center; padding:16px 0 20px; }
.ss-gate p{ font-size:13px; color:var(--tx2); margin-bottom:12px; }

.ss-foot{
  display:flex; align-items:center; gap:10px; padding:12px 16px 16px;
  border-top:1px solid var(--line); background:var(--bg2);
}
.ss-warn{ font-size:10.5px; color:var(--tx3); line-height:1.45; flex:1; }
.ss-foot .btn-primary{ flex:0 0 auto; }

/* ===== 方法论视角标签（2026-10-09 木头人要求：对标华尔街分析师框架） ===== */
.st-lenses{ display:flex; flex-wrap:wrap; gap:6px; margin:2px 0 8px; }
.st-lens{
  font-size:10.5px; padding:2px 7px; border-radius:10px;
  background:rgba(56,189,248,.10); color:#7DD3FC; border:1px solid rgba(56,189,248,.22);
  white-space:nowrap;
}
.st-human{
  font-size:10.5px; padding:2px 7px; border-radius:10px;
  background:rgba(255,176,32,.12); color:#FFB020; border:1px solid rgba(255,176,32,.28);
  white-space:nowrap;
}
.ss-lenses{ display:flex; flex-wrap:wrap; gap:6px; padding:10px 0 4px; }
.ss-lens{
  font-size:11px; padding:4px 9px; border-radius:8px; line-height:1.4;
  background:var(--card2); border:1px solid var(--line); color:var(--tx2);
}
.ss-lens b{ color:#7DD3FC; font-weight:600; margin-right:5px; }
.ss-lens em{ display:block; font-style:normal; font-size:10px; color:var(--tx3); margin-top:2px; }
.ss-humansw{
  font-size:11.5px; line-height:1.6; color:#FFB020; margin:8px 0;
  padding:8px 10px; border-radius:8px;
  background:rgba(255,176,32,.08); border:1px solid rgba(255,176,32,.22);
}

/* ===== 每日复盘战绩面板（2026-10-09 木头人要求） ===== */
.stock-method{ margin:8px 0 12px; border:1px solid var(--line); border-radius:10px; background:var(--card); }
.stock-method>summary{
  cursor:pointer; padding:10px 14px; font-size:12.5px; color:var(--tx2); font-weight:600;
  list-style:none;
}
.stock-method>summary::-webkit-details-marker{ display:none; }
.stock-method>summary::before{ content:'▸ '; color:var(--acc); }
.stock-method[open]>summary::before{ content:'▾ '; }
.sm-body{ padding:0 14px 12px; }
.sm-row{ display:flex; gap:10px; padding:5px 0; font-size:12px; line-height:1.6; }
.sm-row b{ flex:0 0 108px; color:#7DD3FC; font-weight:600; }
.sm-row span{ color:var(--tx2); }
.sm-note{ font-size:11px; color:var(--tx3); line-height:1.6; margin-top:8px; padding-top:8px; border-top:1px dashed var(--line); }

.stock-review{ margin:18px 0 8px; border:1px solid var(--line); border-radius:12px; background:var(--card); padding:14px; }
.sr-head{ display:flex; align-items:baseline; justify-content:space-between; gap:10px; margin-bottom:12px; flex-wrap:wrap; }
.sr-title{ font-size:14px; font-weight:700; color:var(--tx); }
.sr-sub{ font-size:11px; color:var(--tx3); }

.sr-kpi{ display:flex; align-items:flex-end; gap:18px; flex-wrap:wrap; margin-bottom:14px; }
.sr-kpi-main{ display:flex; flex-direction:column; }
.sr-kpi-main b{ font-size:28px; line-height:1.1; font-weight:800; }
.sr-kpi-main b.ok{ color:#F0546B; } .sr-kpi-main b.mid{ color:#FFB020; } .sr-kpi-main b.bad{ color:#3DDC97; }
.sr-kpi-main span{ font-size:11px; color:var(--tx3); margin-top:2px; }
.sr-kpi-i{ display:flex; flex-direction:column; }
.sr-kpi-i b{ font-size:16px; font-weight:700; color:var(--tx); }
.sr-kpi-i span{ font-size:11px; color:var(--tx3); }

.sr-trend{ display:flex; align-items:center; gap:12px; margin-bottom:12px; }
.sr-tname{ font-size:11px; color:var(--tx3); flex:0 0 auto; }
.sr-bars{ display:flex; align-items:flex-end; gap:4px; height:46px; }
.sr-bar{ width:12px; border-radius:3px 3px 0 0; display:block; }
.sr-bar.ok{ background:#F0546B; } .sr-bar.mid{ background:#FFB020; } .sr-bar.bad{ background:#3DDC97; } .sr-bar.flat{ background:var(--line); }

.sr-lenses{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-bottom:12px; }
.sr-lens{
  display:flex; align-items:center; gap:6px; font-size:11px; padding:5px 9px; border-radius:8px;
  background:var(--card2); border:1px solid var(--line);
}
.sr-lens b{ color:var(--tx2); font-weight:600; }
.sr-lens em{ font-style:normal; font-weight:700; }
.sr-lens em.ok{ color:#F0546B; } .sr-lens em.mid{ color:#FFB020; } .sr-lens em.bad{ color:#3DDC97; }
.sr-lens span{ color:var(--tx3); font-size:10px; }

.sr-block{ margin-top:12px; padding-top:12px; border-top:1px solid var(--line); }
.sr-block h4{ font-size:12px; color:var(--tx2); font-weight:600; margin-bottom:8px; }
.sr-lessons{ margin:0; padding-left:16px; }
.sr-lessons li{ font-size:12px; color:var(--tx2); line-height:1.7; }
.sr-causes{ margin:0; padding:0; list-style:none; }
.sr-causes li{
  font-size:12px; color:var(--tx2); line-height:1.7; display:flex; justify-content:space-between; gap:10px;
  padding:4px 0; border-bottom:1px dashed var(--line);
}
.sr-causes li:last-child{ border-bottom:0; }
.sr-causes em{ font-style:normal; color:var(--tx3); flex:0 0 auto; }

.sr-misses-wrap>summary{ cursor:pointer; font-size:12px; color:var(--tx2); font-weight:600; list-style:none; }
.sr-misses-wrap>summary::-webkit-details-marker{ display:none; }
.sr-misses-wrap>summary::before{ content:'▸ '; color:var(--acc); }
.sr-misses-wrap[open]>summary::before{ content:'▾ '; }
.sr-misses{ margin-top:8px; }
.sr-miss{ display:flex; align-items:center; gap:8px; padding:6px 0; border-bottom:1px solid var(--line); font-size:12px; flex-wrap:wrap; }
.sr-miss:last-child{ border-bottom:0; }
.sr-mn{ flex:0 0 auto; color:var(--tx); font-weight:600; }
.sr-mn em{ font-style:normal; font-size:10px; color:var(--tx3); font-weight:400; margin-left:4px; }
.sr-mp{ flex:0 0 auto; font-weight:700; }
.sr-mp.up{ color:#F0546B; } .sr-mp.dn{ color:#3DDC97; }
.sr-mc{ flex:1; min-width:120px; color:var(--tx3); font-size:11px; }
.sr-note{ font-size:10.5px; color:var(--tx3); line-height:1.6; margin-top:12px; padding-top:10px; border-top:1px dashed var(--line); }

/* ===== 强信号提醒横幅（2026-10-09） ===== */
.stock-alert{
  margin:0 0 12px; padding:10px 12px; border-radius:12px;
  background:linear-gradient(135deg, rgba(240,84,107,.14), rgba(56,189,248,.08));
  border:1px solid rgba(240,84,107,.35);
}
.sa-head{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:8px; }
.sa-t{ font-size:13px; font-weight:700; color:#F0546B; }
.sa-btn{
  font-size:11px; padding:5px 10px; border-radius:14px; border:1px solid rgba(240,84,107,.5);
  background:rgba(240,84,107,.18); color:#FF8FA3; font-weight:600; cursor:pointer;
}
.sa-btn.off{ border-color:var(--line); background:var(--card2); color:var(--tx3); cursor:default; }
.sa-row{ display:flex; flex-wrap:wrap; gap:6px; }
.sa-item{
  display:inline-flex; align-items:center; gap:5px; font-size:11.5px; padding:5px 9px;
  border-radius:8px; background:rgba(11,18,32,.55); cursor:pointer;
}
.sa-item b{ font-weight:700; }
.sa-item.up b{ color:#F0546B; } .sa-item.dn b{ color:#3DDC97; }
.sa-item{ color:var(--tx); }
.sa-item em{ font-style:normal; font-size:10px; color:var(--tx3); }

/* ===== 脱敏访客视图 + 管理员入口（2026-10-09 管理员白名单模式） ===== */
.st-card.info{ cursor:default; }
.st-evlist{ margin-top:6px; }
.st-ev2{ padding:6px 0; border-bottom:1px dashed var(--line); font-size:12.5px; line-height:1.55; }
.st-ev2:last-child{ border-bottom:0; }
.st-ev2 a{ color:var(--tx); text-decoration:none; }
.st-ev2 a:hover{ color:var(--acc); text-decoration:underline; }
.st-ev2 em{ display:block; font-style:normal; font-size:10.5px; color:var(--tx3); margin-top:2px; }
.stock-admin{ text-align:center; margin:10px 2px 0; }
.stock-admin a{
  display:inline-block; color:var(--tx2); font-size:14px; text-decoration:none;
  opacity:1; padding:9px 16px; border:1px solid rgba(255,255,255,.16);
  border-radius:10px; background:rgba(255,255,255,.04); transition:all .18s;
}
.stock-admin a:hover{ color:var(--acc); border-color:var(--acc); background:rgba(255,255,255,.07); }
.stock-admin a.on{ color:#3ddc84; border-color:rgba(61,220,132,.45); background:rgba(61,220,132,.10); font-weight:600; }
.sa-note{ font-size:10.5px; color:var(--tx3); margin-top:6px; line-height:1.5; }
.sa-item.info{ color:var(--tx2); }
.sa-item.info em{ margin-left:6px; }

/* ★ 2026-10-09 资讯板块折叠：卡片内「另有 N 条」提示 */
.st-evmore{ margin-top:6px; padding:6px 8px; background:rgba(255,255,255,.03); border-radius:8px; font-size:11.5px; color:var(--tx3); text-align:center; }

/* ★ 2026-10-09：管理员浮动快捷入口（仅管理员可见） */
#adminJumpBtn {
  position: fixed;
  right: 14px;
  bottom: 84px;              /* 避开可能的底部条 */
  z-index: 900;
  display: none;
  padding: 11px 16px;
  font-size: 14px;
  font-weight: 600;
  color: #fff;
  background: linear-gradient(135deg, #2563eb, #1d4ed8);
  border: none;
  border-radius: 999px;
  box-shadow: 0 6px 20px rgba(37, 99, 235, .42);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
#adminJumpBtn:active { transform: scale(.96); }

/* 跳到股票板块时的高亮闪烁 */
@keyframes stockFlash {
  0%   { box-shadow: 0 0 0 0 rgba(37, 99, 235, .6); }
  50%  { box-shadow: 0 0 0 8px rgba(37, 99, 235, .12); }
  100% { box-shadow: 0 0 0 0 rgba(37, 99, 235, 0); }
}
.stock-flash {
  animation: stockFlash 1.1s ease-out 2;
  border-radius: 14px;
}

/* ★ 2026-10-09：管理员「全部」视图的行业分组小标题 */
.sg-head {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 18px 0 10px;
  padding: 0 2px 8px;
  border-bottom: 1px solid var(--bd, rgba(255,255,255,.1));
}
.sg-head:first-child { margin-top: 4px; }
.sg-name {
  font-size: 15px;
  font-weight: 700;
  color: var(--tx1, #e8eefc);
  letter-spacing: .3px;
}
.sg-count {
  font-size: 12px;
  color: var(--tx3, #8b97b0);
}
.sg-more {
  margin-left: auto;
  padding: 5px 10px;
  font-size: 12px;
  color: #6ea8fe;
  background: rgba(110,168,254,.1);
  border: 1px solid rgba(110,168,254,.3);
  border-radius: 999px;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  white-space: nowrap;
}
.sg-more:active { transform: scale(.96); }

/* ★★ 2026-10-09 木头人「123456」：判断辅助工具样式（中性维度） */
.stock-change:empty, .stock-toolbar:empty { display: none; }

.chg-tip {
  margin: 10px 0 4px;
  padding: 11px 14px;
  font-size: 13px;
  line-height: 1.7;
  color: var(--tx2, #c3cee4);
  background: linear-gradient(135deg, rgba(37,99,235,.10), rgba(37,99,235,.04));
  border: 1px solid rgba(37,99,235,.22);
  border-radius: 12px;
}
.chg-tip b { color: #8ab4ff; font-weight: 600; }
.chg-note { display: inline-block; margin-top: 4px; font-size: 11px; color: var(--tx3, #8b97b0); }

.stock-toolbar {
  margin: 12px 0 6px;
  padding: 12px 14px;
  background: var(--bg2, rgba(255,255,255,.03));
  border: 1px solid var(--bd, rgba(255,255,255,.08));
  border-radius: 14px;
}
.tl-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-bottom: 9px;
}
.tl-row:last-child { margin-bottom: 0; }
.tl-lab {
  flex: 0 0 auto;
  font-size: 12px;
  color: var(--tx3, #8b97b0);
  min-width: 56px;
}
.tl-btn {
  padding: 6px 12px;
  font-size: 12.5px;
  color: var(--tx2, #c3cee4);
  background: rgba(255,255,255,.05);
  border: 1px solid rgba(255,255,255,.10);
  border-radius: 999px;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: all .16s;
  white-space: nowrap;
}
.tl-btn.on {
  color: #fff;
  background: linear-gradient(135deg, #2563eb, #1d4ed8);
  border-color: transparent;
  font-weight: 600;
}
.tl-btn:active { transform: scale(.95); }
.tl-hint { font-size: 12px; color: #6ea8fe; margin-left: 4px; }

.tl-search input, #tlSearch {
  width: 100%;
  box-sizing: border-box;
  padding: 10px 14px;
  font-size: 14px;
  color: var(--tx1, #e8eefc);
  background: rgba(0,0,0,.22);
  border: 1px solid var(--bd, rgba(255,255,255,.12));
  border-radius: 11px;
  outline: none;
  -webkit-appearance: none;
}
#tlSearch::placeholder { color: var(--tx3, #7c879e); }
#tlSearch:focus { border-color: rgba(37,99,235,.6); box-shadow: 0 0 0 3px rgba(37,99,235,.14); }

/* 卡片内的事件类型标签 */
.st-evtypes {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 7px 0 2px;
}
.st-evtype {
  padding: 3px 9px;
  font-size: 11px;
  color: #93c5fd;
  background: rgba(59,130,246,.12);
  border: 1px solid rgba(59,130,246,.26);
  border-radius: 6px;
  white-space: nowrap;
}

/* ★ 自选股（2026-10-09 木头人要求） */
.st-star{
  padding:5px 11px; margin-right:8px; font-size:12px; cursor:pointer;
  color:#fbbf24; background:rgba(251,191,36,.10);
  border:1px solid rgba(251,191,36,.32); border-radius:7px;
  transition:background .15s,border-color .15s;
}
.st-star:hover{ background:rgba(251,191,36,.22); }
.st-star.on{ color:#111; background:#fbbf24; border-color:#fbbf24; font-weight:500; }
.st-card.st-starred{ box-shadow:inset 3px 0 0 #fbbf24; }
.tl-star{ color:#fbbf24 !important; border-color:rgba(251,191,36,.34) !important; }
.tl-star.on{ background:#fbbf24 !important; color:#111 !important; border-color:#fbbf24 !important; }

/* ★ 宏观事件区块（2026-10-09） */
.ge-wrap{ margin:0 0 14px; padding:14px 14px 6px; border-radius:12px;
  background:rgba(245,158,11,.055); border:1px solid rgba(245,158,11,.22); }
.ge-title{ font-size:13px; font-weight:500; color:#fbbf24; margin-bottom:10px; }
.ge-sub{ display:block; font-size:11px; font-weight:400; color:var(--tx3,#7c879e); margin-top:3px; }
.ge-list{ display:flex; flex-direction:column; gap:10px; }
.ge-card{ border-radius:9px; display:block;
  background:rgba(255,255,255,.035); border:1px solid rgba(245,158,11,.16); }
/* ★ 2026-10-10：.ge-list 是 flex 容器，<details> 作为 flex item 时
   在 Safari / 微信 WebView 上会被当成 display:flex 处理，
   导致非 summary 的内容始终可见（折叠失效）。强制 block 修掉。 */
.ge-list > details.ge-card{ display:block; }
/* ★ 2026-10-10 木头人：「具体那些事件折叠」
   ge-card 由 div 改 details：卡片内边距移到 summary 上，
   折叠态只露标题行；展开态 ge-body 承接原内容与底部内边距。 */
.ge-card > summary.ge-head{ padding:10px 12px; margin:0; cursor:pointer;
  list-style:none; user-select:none; }
.ge-card > summary.ge-head::-webkit-details-marker{ display:none; }
.ge-card[open] > summary.ge-head{ padding-bottom:2px; }
.ge-caret{ flex:0 0 auto; width:0; height:0; align-self:center;
  border-left:5px solid rgba(252,211,77,.75);
  border-top:4px solid transparent; border-bottom:4px solid transparent;
  transition:transform .16s ease; }
.ge-card[open] > summary.ge-head .ge-caret{ transform:rotate(90deg); }
.ge-body{ padding:0 12px 10px; }
/* ★ 2026-10-10：显式控制 ge-body 显隐，不依赖浏览器原生 <details> 行为。
   某些移动端 WebView 对 flex 容器内的 details 折叠支持有 bug，这里自己兜底。 */
.ge-card:not([open]) > .ge-body{ display:none !important; }
.ge-card[open] > .ge-body{ display:block; }
.ge-head{ display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; margin-bottom:7px; }
.ge-card > summary.ge-head{ margin-bottom:0; }
.ge-card[open] > summary.ge-head{ margin-bottom:2px; }
.ge-name{ font-size:13px; font-weight:500; color:#fcd34d; }
.ge-cnt{ font-size:11px; color:#fbbf24; background:rgba(245,158,11,.14);
  padding:2px 7px; border-radius:5px; }
.ge-time{ font-size:11px; color:var(--tx3,#7c879e); margin-left:auto; }
.ge-fact{ font-size:12px; line-height:1.6; color:var(--tx2,#aab4c8); margin-bottom:8px; }
.ge-fact i{ font-style:normal; color:#fbbf24; margin-right:5px; font-size:11px;
  border:1px solid rgba(245,158,11,.3); padding:1px 5px; border-radius:4px; }
.ge-chain-lab{ font-size:11px; color:var(--tx3,#7c879e); margin-bottom:6px; }
.ge-chain{ display:flex; flex-direction:column; gap:5px; margin-bottom:8px; }
.ge-node{ display:flex; gap:7px; align-items:flex-start; font-size:12px; line-height:1.5; }
.ge-dot{ width:5px; height:5px; border-radius:50%; background:#fbbf24;
  margin-top:7px; flex:0 0 auto; }
.ge-node b{ color:var(--tx1,#e8edf7); font-weight:500; margin-right:5px; }
.ge-node em{ font-style:normal; color:var(--tx3,#7c879e); font-size:11px; }
.ge-news-box{ border-top:1px dashed rgba(245,158,11,.18); padding-top:7px; }
.ge-news{ font-size:11px; line-height:1.7; color:var(--tx2,#aab4c8); }
.ge-news em{ font-style:normal; color:var(--tx3,#7c879e); }

/* ★ 跨行业二级传导（2026-10-09 木头人：「跨行业的事会引起本行业变动」） */
.gx-wrap{ margin:8px 0 8px; padding:9px 11px; border-radius:8px;
  background:rgba(139,92,246,.07); border:1px dashed rgba(139,92,246,.28); }
.gx-lab{ font-size:12px; font-weight:500; color:#a78bfa; margin-bottom:8px; }
.gx-lab span{ display:block; font-size:11px; font-weight:400; color:var(--tx3,#7c879e);
  margin-top:3px; line-height:1.5; }
.gx-list{ display:flex; flex-direction:column; gap:8px; }
.gx-item{ display:flex; flex-wrap:wrap; align-items:baseline; gap:6px; font-size:12px; }
.gx-to{ color:var(--tx1,#e8edf7); font-weight:500; }
.gx-sec{ font-size:10.5px; color:#a78bfa; background:rgba(139,92,246,.16);
  padding:1px 6px; border-radius:4px; }
.gx-via{ width:100%; font-style:normal; font-size:11px; color:var(--tx3,#7c879e); line-height:1.55; }


/* ★ 池外发现标记（2026-10-09 木头人：「接」全市场发现层）
   语义：该标的来自全市场发现层（资讯中出现其代码/名称），
        不在预设股票池内。仅为「线索」，非推荐。 */
.st-ext {
  display: inline-block;
  margin-left: 6px;
  padding: 1px 6px;
  font-size: 11px;
  line-height: 1.5;
  border-radius: 4px;
  color: #b26a00;
  background: rgba(255, 176, 32, 0.14);
  border: 1px solid rgba(255, 176, 32, 0.35);
  vertical-align: middle;
}
.tl-btn.tl-ext.on {
  color: #b26a00;
  border-color: rgba(255, 176, 32, 0.6);
  background: rgba(255, 176, 32, 0.14);
}


/* ★ 覆盖率回测（2026-10-09 木头人：「我们只讨论方法」）
   方法：测漏比测中更重要。用官方标注重要的快讯做金标准，
        反查自己的资讯筐漏了什么。坦白展示覆盖率与缺口归因。 */
.ge-cov-bar {
  margin: 0 0 12px 0;
  padding: 10px 12px;
  border-radius: 8px;
  background: rgba(64, 132, 255, 0.07);
  border: 1px solid rgba(64, 132, 255, 0.22);
}
.ge-cov-main { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px; margin-bottom: 4px; }
.ge-cov-main b { font-size: 13px; color: #2b6cd4; }
.ge-cov-main span { font-size: 11.5px; opacity: 0.72; }
.ge-cov-dist { font-size: 11.5px; opacity: 0.78; margin-bottom: 4px; }
.ge-cov-note { font-size: 11px; opacity: 0.55; line-height: 1.5; }

/* 回测补漏卡：与正常事件卡区分（虚线边 + 无传导链） */
.ge-card.ge-cov {
  border-style: dashed;
  background: rgba(255, 176, 32, 0.04);
}
.ge-cnt-cov {
  color: #b26a00 !important;
  background: rgba(255, 176, 32, 0.16) !important;
  border: 1px solid rgba(255, 176, 32, 0.35);
}
.ge-attr {
  font-size: 11.5px;
  opacity: 0.68;
  margin: 4px 0 2px;
  padding-left: 2px;
}

/* ★ 英文源标记与译文（2026-10-09）
   设计原则：标记要克制——一眼能区分，但不抢正文注意力。
   译文为主、原文折叠在「原」字后面，点击展开核验。 */
.st-en{
  display:inline-block; margin-right:5px; padding:0 4px;
  font-size:9.5px; font-weight:600; letter-spacing:0.4px; line-height:15px;
  color:#b06a1f; background:rgba(176,106,31,.11);
  border:1px solid rgba(176,106,31,.28); border-radius:3px;
  vertical-align:1px;
}
.st-orig{
  display:none; margin-top:3px; padding:3px 6px;
  font-size:11px; color:var(--tx3); background:var(--bg2,rgba(127,127,127,.07));
  border-left:2px solid var(--line); border-radius:2px; line-height:1.5;
  cursor:pointer; word-break:break-word;
}
.st-ev2:hover .st-orig{ display:block; }
.st-ev .st-orig{ display:block; }


/* ★ 2026-10-10 木头人：tab 折叠 + 宏观事件折叠 */
.st-more{ border-style:dashed; opacity:.85; }
.ge-fold{ border:1px solid rgba(148,163,184,.18); border-radius:12px; margin:0 0 12px; background:rgba(15,23,42,.45); overflow:hidden; }
.ge-fold>summary{ list-style:none; cursor:pointer; padding:11px 14px; font-weight:600; display:flex; align-items:center; gap:8px; user-select:none; }
.ge-fold>summary::-webkit-details-marker{ display:none; }
.ge-fold>summary em{ font-style:normal; color:#38bdf8; font-size:12px; }
.ge-fold-cov{ font-style:normal; font-size:11px; opacity:.65; }
.ge-fold-hint{ margin-left:auto; font-size:12px; opacity:.6; }
.ge-fold-body{ padding:0 10px 10px; }

/* ★ 2026-10-10 木头人：企业百强「◎ 推演这家」按钮 + 推演引导 */
.btn-go{ background:linear-gradient(135deg,#f59e0b,#f97316); color:#fff; border:none; border-radius:9px;
  padding:0 14px; height:38px; line-height:1; font-weight:700; font-size:13px; cursor:pointer;
  white-space:nowrap; flex:0 0 auto; box-shadow:0 2px 10px rgba(249,115,22,.35); transition:filter .15s; }
.btn-go:hover{ filter:brightness(1.08); }
.btn-go:active{ transform:translateY(1px); }
.firm-go-hint{ color:#fbbf24; font-size:11px; opacity:.9; }
.firm-search{ display:flex; gap:8px; align-items:center; flex-wrap:nowrap; }
.firm-search input{ flex:1 1 auto; min-width:0; }

/* ★ 2026-10-10 木头人：输入就地提示条 */
.firm-hint{ margin:6px 0 2px; padding:7px 11px; border-radius:8px; font-size:12px;
  background:rgba(251,191,36,.10); border:1px solid rgba(251,191,36,.28); color:#fcd34d; }
.firm-hint b{ color:#fde68a; }
.firm-hint .fh-go{ color:#fbbf24; font-weight:700; }

/* ★ 2026-10-10 木头人：「那一堆感觉好乱」→ 筛选区改为下拉 + 条件汇总条
   原则：不选 = 全部（空值即全量），选中才高亮。 */
.stock-toolbar .tl-selrow { gap: 8px; }
.tl-sel {
  position: relative;
  display: inline-flex;
  align-items: center;
  flex: 1 1 auto;
  min-width: 0;
  max-width: 190px;
  background: rgba(255,255,255,.05);
  border: 1px solid rgba(255,255,255,.10);
  border-radius: 10px;
  transition: all .16s;
  overflow: hidden;
}
.tl-sel.on {
  background: rgba(37,99,235,.16);
  border-color: rgba(37,99,235,.55);
}
.tl-sel select {
  flex: 1 1 auto;
  min-width: 0;
  width: 100%;
  padding: 9px 26px 9px 11px;
  font-size: 13px;
  font-family: inherit;
  color: var(--tx2, #c3cee4);
  background: transparent;
  border: 0;
  outline: none;
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
  text-overflow: ellipsis;
}
.tl-sel.on select { color: #dbeafe; font-weight: 600; }
.tl-sel select option {
  background: #10151f;
  color: #e8eefc;
}
.tl-caret {
  position: absolute;
  right: 9px;
  top: 50%;
  width: 0; height: 0;
  margin-top: -2px;
  border-left: 4px solid transparent;
  border-right: 4px solid transparent;
  border-top: 5px solid var(--tx3, #8b97b0);
  pointer-events: none;
}
.tl-sel.on .tl-caret { border-top-color: #93c5fd; }

.tl-chips {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  margin-top: 10px;
  padding-top: 9px;
  border-top: 1px dashed rgba(255,255,255,.10);
  font-size: 12px;
}
.tl-chip-lab { color: var(--tx3, #8b97b0); }
.tl-chip {
  padding: 3px 9px;
  border-radius: 999px;
  font-size: 11.5px;
  color: #bfdbfe;
  background: rgba(37,99,235,.18);
  border: 1px solid rgba(37,99,235,.35);
}
.tl-chip-num { color: #6ea8fe; font-weight: 600; }
.tl-chips-idle { justify-content: flex-start; }
.tl-chips-idle .tl-chip-num { color: var(--tx3, #7c879e); font-weight: 400; }
.tl-clear {
  margin-left: auto;
  padding: 3px 10px;
  font-size: 11.5px;
  font-family: inherit;
  color: var(--tx2, #c3cee4);
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 999px;
  cursor: pointer;
}
.tl-clear:active { transform: scale(.95); }

/* ★ 2026-10-10 木头人：「把资讯也包括进宏观事件」+「每条资讯旁推演按钮」 */
.ge-news {
  display: flex;
  align-items: baseline;
  gap: 6px;
  flex-wrap: wrap;
  padding: 5px 0;
  font-size: 12.5px;
  line-height: 1.55;
  color: var(--tx2, #c3cee4);
}
.ge-news > a, .ge-news > span { flex: 1 1 auto; min-width: 0; color: inherit; text-decoration: none; }
.ge-news > a:hover { color: #93c5fd; text-decoration: underline; }
.ge-news > em { flex: 0 0 auto; font-style: normal; font-size: 11px; color: var(--tx3, #7c879e); }
.ge-go {
  flex: 0 0 auto;
  padding: 2px 9px;
  font-size: 11px;
  font-family: inherit;
  color: #93c5fd;
  background: rgba(37,99,235,.14);
  border: 1px solid rgba(37,99,235,.34);
  border-radius: 999px;
  cursor: pointer;
  transition: all .16s;
}
.ge-go:hover { background: rgba(37,99,235,.28); color: #dbeafe; }
.ge-go:active { transform: scale(.94); }

.ge-news-more { margin-top: 4px; }
.ge-news-more > summary {
  font-size: 11.5px;
  color: #6ea8fe;
  cursor: pointer;
  padding: 3px 0;
  list-style: none;
  user-select: none;
}
.ge-news-more > summary::-webkit-details-marker { display: none; }
.ge-news-more > summary::before { content: '▸ '; }
.ge-news-more[open] > summary::before { content: '▾ '; }
.ge-news-sub { padding-left: 14px; border-left: 2px solid rgba(255,255,255,.07); margin-left: 3px; }

.ge-go-main {
  flex: 0 0 auto;
  margin-left: auto;
  margin-right: 8px;
  padding: 3px 11px;
  font-size: 11.5px;
  font-family: inherit;
  color: #93c5fd;
  background: rgba(37,99,235,.15);
  border: 1px solid rgba(37,99,235,.36);
  border-radius: 999px;
  cursor: pointer;
}
.ge-go-main:hover { background: rgba(37,99,235,.3); color: #dbeafe; }

/* 访客视图搜索框 */
.pub-search { margin-bottom: 10px; }

/* 访客视图：每条资讯 + 推演按钮 */
.st-ev2 {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 6px;
}
.st-ev2 .st-ev2-tx { flex: 1 1 auto; min-width: 0; }
.st-ev2-go {
  flex: 0 0 auto;
  padding: 2px 9px;
  font-size: 11px;
  font-family: inherit;
  color: #93c5fd;
  background: rgba(37,99,235,.14);
  border: 1px solid rgba(37,99,235,.34);
  border-radius: 999px;
  cursor: pointer;
  transition: all .16s;
}
.st-ev2-go:hover { background: rgba(37,99,235,.28); color: #dbeafe; }
.st-ev2-go:active { transform: scale(.94); }

/* ★ 2026-10-10 木头人：「资讯和宏观做一起」+「筛选收进折叠」
   一、统一折叠区「事件与资讯」 */
.en-fold {
  margin: 10px 0 6px;
  border: 1px solid rgba(255,255,255,.09);
  border-radius: 14px;
  background: rgba(255,255,255,.02);
  overflow: hidden;
}
.en-fold > summary {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  padding: 12px 14px;
  cursor: pointer;
  list-style: none;
  user-select: none;
  font-size: 14px;
  font-weight: 600;
  color: var(--tx1, #e8eefc);
  background: linear-gradient(135deg, rgba(37,99,235,.10), rgba(37,99,235,.03));
}
.en-fold > summary::-webkit-details-marker { display: none; }
.en-fold > summary:hover { background: linear-gradient(135deg, rgba(37,99,235,.16), rgba(37,99,235,.06)); }
.en-fold[open] > summary { border-bottom: 1px solid rgba(255,255,255,.08); }
.en-fold-lab { font-weight: 700; }
.en-cnt {
  font-style: normal;
  font-size: 11.5px;
  font-weight: 500;
  color: #93c5fd;
  background: rgba(37,99,235,.14);
  border: 1px solid rgba(37,99,235,.28);
  border-radius: 999px;
  padding: 2px 9px;
}
.en-cov { font-style: normal; font-size: 11px; color: var(--tx3, #8b97b0); }
.en-fold-hint { margin-left: auto; font-size: 11.5px; font-weight: 400; color: var(--tx3, #7c879e); }
.en-fold-body { padding: 4px 2px 6px; }
.en-sec { padding: 0 2px; }
.en-divider {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 14px 2px 10px;
  font-size: 12px;
  color: var(--tx3, #8b97b0);
}
.en-divider::before, .en-divider::after {
  content: '';
  flex: 1 1 auto;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.13), transparent);
}

/* 二、筛选折叠（管理员 + 访客共用） */
.tl-fold {
  margin: 10px 0 6px;
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 12px;
  background: rgba(255,255,255,.02);
  overflow: hidden;
}
.tl-fold > summary {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 9px 13px;
  cursor: pointer;
  list-style: none;
  user-select: none;
  font-size: 12.5px;
  color: var(--tx2, #c3cee4);
}
.tl-fold > summary::-webkit-details-marker { display: none; }
.tl-fold > summary:hover { background: rgba(255,255,255,.03); }
.tl-fold[open] > summary { border-bottom: 1px solid rgba(255,255,255,.07); }
.tl-fold-lab { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tl-fold-hint { flex: 0 0 auto; font-size: 11.5px; color: var(--tx3, #7c879e); }
.tl-fold-body { padding: 11px 13px 13px; }
.tl-fold-body .tl-row:last-child { margin-bottom: 0; }
.pub-fold { margin-bottom: 10px; }

/* ★ 2026-10-10 木头人：「百强没过滤宏观事件，偏差很大」→ 展示行业传导维度 */
.firm-board {
  font-size: 10.5px;
  color: #7dd3fc;
  background: rgba(14,165,233,.12);
  border: 1px solid rgba(14,165,233,.26);
  border-radius: 5px;
  padding: 1px 6px;
}
.firm-geo {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 5px;
  margin-top: 5px;
  padding: 5px 8px;
  border-radius: 8px;
  background: rgba(168,85,247,.09);
  border: 1px solid rgba(168,85,247,.22);
}
.fg-lab {
  font-size: 10.5px;
  font-weight: 700;
  color: #d8b4fe;
  flex: 0 0 auto;
}
.fg-tag {
  font-size: 10.5px;
  color: #e9d5ff;
  background: rgba(168,85,247,.16);
  border-radius: 4px;
  padding: 1px 6px;
  cursor: help;
}
.fg-more {
  font-size: 10px;
  color: #c084fc;
}

/* ★ 2026-10-10 传导档位配色（强/中/弱），不显示裸数字 */
.firm-geo.gl-high { background: rgba(239,68,68,.10); border-color: rgba(239,68,68,.28); }
.firm-geo.gl-high .fg-lab { color: #fca5a5; }
.firm-geo.gl-high .fg-tag { background: rgba(239,68,68,.16); color: #fecaca; }
.firm-geo.gl-mid { background: rgba(245,158,11,.09); border-color: rgba(245,158,11,.24); }
.firm-geo.gl-mid .fg-lab { color: #fcd34d; }
.firm-geo.gl-mid .fg-tag { background: rgba(245,158,11,.15); color: #fde68a; }
.fg-tag.fg-precise { box-shadow: inset 0 0 0 1px rgba(255,255,255,.28); font-weight: 600; }

/* ★ 2026-10-10 传导分展示（0-100） */
.fg-score {
  flex: 0 0 auto;
  min-width: 34px;
  text-align: center;
  font-size: 15px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  color: #f0abfc;
  background: rgba(168,85,247,.18);
  border: 1px solid rgba(168,85,247,.34);
  border-radius: 7px;
  padding: 1px 7px;
  line-height: 1.5;
}
.firm-geo.gl-high .fg-score { color: #fca5a5; background: rgba(239,68,68,.18); border-color: rgba(239,68,68,.4); }
.firm-geo.gl-mid  .fg-score { color: #fcd34d; background: rgba(245,158,11,.18); border-color: rgba(245,158,11,.4); }
.fg-meta { font-size: 10.5px; color: #a1a1aa; flex: 0 0 auto; }
.fg-tags { display: inline-flex; flex-wrap: wrap; gap: 4px; align-items: center; }

/* ★ 2026-10-10 木头人：「参考角度也隐藏，我们自己保证用到就行了」
   页面上不再展示「解读视角」标签（三处），但 buildLensBrief() 仍会把这些数据
   喂给推演模型 —— 只是不给人看，数据链路完全保留。
   涉及：.st-lenses（股票卡片）/ .ss-lenses（推演抽屉）/ .sr-lenses（数据说明面板）
   以及配套的 .st-lens / .st-human / .ss-lens / .sr-lens / .ss-humansw（情绪提示） */
.st-lenses, .ss-lenses, .sr-lenses,
.st-lens, .st-human, .ss-lens, .sr-lens,
.ss-humansw { display: none !important; }

/* ★ 2026-10-10 木头人：「百强有没通过宏观/政策/事件/资讯/交易过滤」
   卡片上新增「政策 / 交易」信号徽章，与原有「行业传导」分开展示。 */
.firm-sig { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 4px; }
.fsig {
  display: inline-flex; align-items: center; gap: 3px;
  font-size: 10.5px; line-height: 1.5; padding: 1px 7px;
  border-radius: 5px; white-space: nowrap;
}
.fsig-pol {
  color: #fbbf24; background: rgba(245,158,11,.14);
  border: 1px solid rgba(245,158,11,.34);
}
.fsig-trade {
  color: #7dd3fc; background: rgba(56,189,248,.12);
  border: 1px solid rgba(56,189,248,.3);
}
.firm-stat-dim { color: var(--tx3, #7c879e); font-size: 10.5px; }

/* ================================================================
   公开数据区块（2026-10-11 新增）
   ★ 合规设计：中性灰，不用红绿；不做"好/坏"颜色暗示
   数据来源：腾讯行情 + 东财财报，均为公开披露
   ================================================================ */
.fd-fund{
  border:1px solid rgba(148,163,184,.22);
  border-radius:10px;
  background:rgba(255,255,255,.028);
  padding:10px 13px 9px;
  margin-bottom:2px;
}
.fd-fund-h{
  display:flex; align-items:baseline; flex-wrap:wrap; gap:8px;
  font-size:12.5px; font-weight:500; color:var(--tx2,#cbd5e1);
  margin-bottom:9px;
}
.fd-fund-src{
  font-size:10.5px; font-weight:400; color:var(--tx3,#7c879e);
  letter-spacing:.2px;
}
.fd-fund-body{
  display:grid; grid-template-columns:repeat(2,minmax(0,1fr));
  gap:5px 14px;
}
/* 窄屏（手机）单列，避免数字挤在一起 */
@media (max-width:420px){
  .fd-fund-body{ grid-template-columns:1fr; }
}
.fd-frow{
  display:flex; align-items:baseline; justify-content:space-between;
  gap:8px; font-size:12px; line-height:1.75;
  border-bottom:1px dashed rgba(148,163,184,.12);
  padding-bottom:2px;
}
.fd-fk{ color:var(--tx3,#7c879e); flex:0 0 auto; }
.fd-fv{
  color:var(--tx1,#e6edf7); font-weight:500;
  font-variant-numeric:tabular-nums;
  text-align:right;
}
.fd-fund-note{
  margin-top:9px; padding-top:7px;
  border-top:1px solid rgba(148,163,184,.14);
  font-size:10.5px; line-height:1.6; color:var(--tx3,#7c879e);
}
