:root{
  --bg:#0d1117; --bg2:#131922; --card:#171c26; --card2:#1e2430;
  --line:#242c38; --txt:#e8eaed; --txt2:#98a1b0; --txt3:#6b7382;
  --up:#f6465d; --down:#0ecb81; --flat:#98a1b0;
  --pri:#4b8bff; --pri2:#7aa2ff; --warn:#ff9f1a; --gold:#ffc53d;
  --rad:16px;
  /* 随主题变化的渐变/底色 */
  --topbar:linear-gradient(180deg,#141a24,#12161e);
  --hero-bg:linear-gradient(135deg,#1c2540,#191d26);
  --hero-line:#2a3550;
  --hero2-bg:linear-gradient(135deg,#1c2a4d,#16203a 60%,#1a2440);
  --hero2-line:#2f4a7a;
  --pad-bg:linear-gradient(180deg,#141a24,#101620);
  --toast-bg:rgba(20,25,34,.96);
  --sk1:#1a2029; --sk2:#232b36;
  --flat-bg:#39414f;
  --tag-fg:#0f1218;
  /* 画布（K线/概率环/画板）用色 */
  --chart-grid:#1b212b; --chart-txt:#69707d; --chart-line:#3a4453;
  --chart-track:#222833; --chart-tick:#2c3441;
}

/* ---------- 日间模式 ---------- */
:root[data-theme="light"]{
  --bg:#f4f6f9; --bg2:#ffffff; --card:#ffffff; --card2:#eef1f6;
  --line:#e3e7ee; --txt:#171b22; --txt2:#5b6472; --txt3:#8b93a1;
  --up:#e5384f; --down:#0aa06a; --flat:#8b93a1;
  --pri:#2f6fe4; --pri2:#1f5fd0; --warn:#e08a00; --gold:#d99b00;
  --topbar:linear-gradient(180deg,#ffffff,#f7f9fc);
  --hero-bg:linear-gradient(135deg,#eaf0ff,#f5f7fb);
  --hero-line:#d9e2f5;
  --hero2-bg:linear-gradient(135deg,#dfe9ff,#eef2fb 60%,#e6edf9);
  --hero2-line:#c4d4f2;
  --pad-bg:linear-gradient(180deg,#ffffff,#f6f8fb);
  --toast-bg:rgba(28,33,42,.92);
  --sk1:#e9edf3; --sk2:#f4f6fa;
  --flat-bg:#c9d0da;
  --tag-fg:#ffffff;
  --chart-grid:#e6e9ee; --chart-txt:#8b93a1; --chart-line:#c3cad6;
  --chart-track:#e6e9ee; --chart-tick:#d3d8e0;
}
:root[data-theme="light"] .toast{color:#fff}
:root[data-theme="light"] .chip.active{background:rgba(47,111,228,.10);border-color:var(--pri);color:var(--pri2)}
:root[data-theme="light"] .card,:root[data-theme="light"] .item,:root[data-theme="light"] .m-item,
:root[data-theme="light"] .sk-item,:root[data-theme="light"] .idx{box-shadow:0 1px 2px rgba(16,24,40,.05)}
:root[data-theme="light"] .scale-now{border-color:#fff}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0;background:var(--bg);color:var(--txt);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Helvetica Neue",Arial,sans-serif;
  font-size:14px;line-height:1.5}
body{padding-bottom:64px}
.hidden{display:none!important}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
input,select{font-family:inherit;font-size:14px}

/* ---------- 顶部 ---------- */
.topbar{position:sticky;top:0;z-index:50;background:var(--topbar);
  padding:10px 14px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px}
.brand{display:flex;align-items:center;gap:6px;font-weight:700;font-size:16px;letter-spacing:.5px}
.logo{color:var(--pri2);font-size:18px}
.searchbox{flex:1;display:flex;gap:6px}
.searchbox input{flex:1;background:var(--card);border:1px solid var(--line);border-radius:10px;
  padding:8px 12px;color:var(--txt);outline:none}
.searchbox input:focus{border-color:var(--pri)}
.searchbox button{background:var(--pri);color:#fff;border-radius:10px;padding:8px 14px;font-weight:600}
.theme-btn{flex:0 0 auto;width:34px;height:34px;border-radius:50%;font-size:16px;line-height:1;
  background:var(--card);border:1px solid var(--line);color:var(--txt2);
  display:flex;align-items:center;justify-content:center;transition:transform .25s ease}
.theme-btn:active{transform:scale(.88) rotate(-25deg)}
.suggest{position:sticky;top:56px;z-index:49;background:var(--card);border-bottom:1px solid var(--line);
  max-height:50vh;overflow:auto}
.suggest .sg-item{padding:11px 16px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between}
.suggest .sg-item:active{background:var(--card2)}
.sg-code{color:var(--txt3);font-size:12px}

/* ---------- 指数条 ---------- */
.indexbar{display:flex;gap:10px;overflow-x:auto;padding:10px 14px;background:var(--bg2);
  border-bottom:1px solid var(--line);scrollbar-width:none}
.indexbar::-webkit-scrollbar{display:none}
.idx{flex:0 0 auto;min-width:96px;background:var(--card);border-radius:10px;padding:8px 10px}
.idx .n{font-size:11px;color:var(--txt3)}
.idx .p{font-size:16px;font-weight:700;margin-top:2px}
.idx .c{font-size:12px;margin-top:1px}

/* ---------- 通用 ---------- */
.page{padding:12px 14px}
.hero-card{background:var(--hero-bg);border:1px solid var(--hero-line);
  border-radius:var(--rad);padding:16px;margin-bottom:12px}
.hero-title{font-size:17px;font-weight:700}
.hero-sub{font-size:12px;color:var(--txt2);margin-top:4px}
.hero-tip{font-size:11px;color:var(--txt2);margin-top:12px;opacity:.75;
  display:flex;align-items:center;gap:4px}
.hero-tip::before{content:"";width:6px;height:6px;border-radius:50%;
  background:var(--up,#f6465d);display:inline-block;animation:pulse 3s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:.35}50%{opacity:1}}
.hero-stat{display:flex;gap:16px;margin-top:12px;flex-wrap:wrap}
.hero-stat .hs{min-width:70px}
.hero-stat .v{font-size:18px;font-weight:700}
.hero-stat .k{font-size:11px;color:var(--txt3)}

.filter-row{display:flex;gap:8px;overflow-x:auto;margin-bottom:12px;scrollbar-width:none}
.filter-row::-webkit-scrollbar{display:none}
.chip{flex:0 0 auto;background:var(--card);border:1px solid var(--line);border-radius:20px;
  padding:6px 14px;font-size:13px;color:var(--txt2)}
.chip.active{background:rgba(61,125,255,.15);border-color:var(--pri);color:var(--pri2);font-weight:600}
.filter-row select{background:var(--card);border:1px solid var(--line);border-radius:20px;
  padding:6px 12px;color:var(--txt);outline:none}

.tip-box{background:rgba(61,125,255,.08);border:1px solid var(--hero-line);border-radius:12px;
  padding:10px 12px;font-size:12px;color:var(--txt2);margin-bottom:12px;line-height:1.6}

/* ---------- 列表 ---------- */
.list{display:flex;flex-direction:column;gap:10px}
.item{background:var(--card);border-radius:var(--rad);padding:12px 14px;display:flex;
  align-items:center;gap:12px;border:1px solid transparent}
.item:active{border-color:var(--pri)}
.item .left{flex:1;min-width:0}
.item .t1{font-size:15px;font-weight:600;display:flex;align-items:center;gap:8px}
.item .t1 .code{font-size:12px;color:var(--txt3);font-weight:400}
.item .t2{font-size:12px;color:var(--txt2);margin-top:4px}
.item .t2 .tag{background:var(--card2);border-radius:4px;padding:1px 6px;margin-right:6px;
  color:var(--txt2);font-size:11px}
.item .right{text-align:right;flex:0 0 auto}
.item .prob{font-size:20px;font-weight:800;line-height:1.1}
.item .plabel{font-size:10px;color:var(--txt3)}
.item .px{font-size:13px;margin-top:2px}
.up{color:var(--up)} .down{color:var(--down)} .flat{color:var(--flat)}

/* ---------- 详情 ---------- */
.back-btn{background:var(--card);border:1px solid var(--line);border-radius:10px;
  padding:7px 14px;margin-bottom:12px;color:var(--txt2);font-size:13px}
.d-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:12px}
.d-name{font-size:20px;font-weight:700}
.d-code{font-size:12px;color:var(--txt3);margin-top:2px}
.d-price{font-size:26px;font-weight:800;text-align:right}

.card{background:var(--card);border-radius:var(--rad);padding:14px;margin-bottom:12px}
.card-title{font-size:14px;font-weight:700;margin-bottom:10px;display:flex;
  align-items:center;justify-content:space-between}
.card-title .sub{font-size:11px;color:var(--txt3);font-weight:400}

/* 概率仪表 */
.gauge{display:flex;align-items:center;gap:16px}
.gauge-ring{position:relative;width:126px;height:126px;flex:0 0 auto}
.gauge-ring canvas{width:126px;height:126px}
.gauge-center{position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center}
.gauge-center .v{font-size:30px;font-weight:800;line-height:1}
.gauge-center .l{font-size:10px;color:var(--txt3);margin-top:3px}
.gauge-info{flex:1;min-width:0}
.gauge-info .row{display:flex;justify-content:space-between;font-size:12px;
  padding:3px 0;color:var(--txt2)}
.gauge-info .row b{color:var(--txt);font-weight:600}

/* 因子条 */
.factor{margin-bottom:12px}
.factor:last-child{margin-bottom:0}
.f-top{display:flex;justify-content:space-between;font-size:13px;margin-bottom:5px}
.f-top .score{font-weight:700}
.f-bar{height:6px;background:var(--card2);border-radius:4px;overflow:hidden}
.f-bar i{display:block;height:100%;border-radius:4px;
  background:linear-gradient(90deg,var(--pri),var(--pri2))}
.f-reason{font-size:12px;color:var(--txt2);margin-top:5px;line-height:1.6}

/* 价位表 */
.levels{display:flex;gap:8px;text-align:center}
.levels .lv{flex:1;background:var(--card2);border-radius:10px;padding:10px 4px}
.levels .lv .k{font-size:11px;color:var(--txt3)}
.levels .lv .v{font-size:16px;font-weight:700;margin-top:3px}
.levels .lv .p{font-size:11px;margin-top:2px}

/* 操作建议 */
.plan-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.verdict{font-size:16px;font-weight:800;padding:6px 14px;border-radius:20px}
.verdict.v-good{background:rgba(245,34,45,.15);color:var(--up)}
.verdict.v-mid{background:rgba(255,159,26,.15);color:var(--warn)}
.verdict.v-bad{background:rgba(154,163,178,.15);color:var(--txt2)}
.plan-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:12px}
.plan-grid .pg{background:var(--card2);border-radius:10px;padding:10px}
.plan-grid .pg .k{font-size:11px;color:var(--txt3)}
.plan-grid .pg .v{font-size:16px;font-weight:700;margin-top:2px}

.steps{list-style:none;margin:0;padding:0}
.steps li{position:relative;padding-left:18px;margin-bottom:9px;font-size:13px;color:var(--txt2);line-height:1.6}
.steps li:before{content:"";position:absolute;left:2px;top:7px;width:7px;height:7px;
  border-radius:50%;background:var(--pri)}
.steps li b{color:var(--txt);font-weight:600}
.steps.warn li:before{background:var(--warn)}
.steps.danger li:before{background:var(--up)}

/* 新闻 */
.news-item{padding:9px 0;border-bottom:1px solid var(--line);font-size:13px}
.news-item:last-child{border-bottom:none}
.news-item .nt{display:flex;gap:8px}
.news-item .badge{font-size:10px;padding:1px 5px;border-radius:4px;background:var(--card2);
  color:var(--txt3);flex:0 0 auto}
.news-item .nd{font-size:11px;color:var(--txt3);margin-top:3px}

/* K线 */
.chart-wrap{width:100%;height:260px;position:relative}
.chart-wrap canvas{width:100%;height:100%;display:block}
.chart-legend{display:flex;gap:12px;font-size:11px;color:var(--txt3);margin-top:6px;flex-wrap:wrap}
.chart-legend i{display:inline-block;width:10px;height:2px;vertical-align:middle;margin-right:3px}

/* ---------- 底部 ---------- */
.tabbar{position:fixed;bottom:0;left:0;right:0;height:58px;background:var(--bg2);
  border-top:1px solid var(--line);display:flex;z-index:60}
.tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:2px;font-size:11px;color:var(--txt3)}
.tab span{font-size:17px}
.tab.active{color:var(--pri2)}

.loading{position:fixed;inset:0;background:rgba(15,18,24,.7);display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:12px;z-index:200;color:var(--txt2);font-size:13px}
.spinner{width:28px;height:28px;border:3px solid var(--line);border-top-color:var(--pri);
  border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.toast{position:fixed;left:50%;bottom:80px;transform:translateX(-50%);background:rgba(0,0,0,.85);
  color:#fff;padding:9px 18px;border-radius:20px;font-size:13px;z-index:300}

.disclaimer{font-size:11px;color:var(--txt3);line-height:1.7;padding:4px 2px 20px}

/* ---------- 观察区间切换 ---------- */
.win-tabs{display:flex;gap:8px;padding:4px 2px 0}
.wtab{flex:1;background:var(--card);border:1px solid var(--line);border-radius:12px;
  padding:10px 0;font-size:13px;color:var(--txt2);transition:all .18s ease}
.wtab.active{background:rgba(75,139,255,.16);border-color:var(--pri);color:var(--pri2);font-weight:600}
.wtab:active{transform:scale(.97)}
.win-hint{font-size:12px;color:var(--txt3);padding:8px 2px 0;line-height:1.6}
.win-hint b{color:var(--pri2)}

/* ---------- 多周期视角 ---------- */
.mw-row{display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:12px;
  margin-bottom:6px;background:var(--card2);cursor:pointer;transition:all .18s ease}
.mw-row:active{transform:scale(.99)}
.mw-row.cur{background:rgba(75,139,255,.12);box-shadow:inset 0 0 0 1px var(--pri)}
.mw-k{flex:0 0 62px;font-size:13px;font-weight:600;color:var(--txt2)}
.mw-row.cur .mw-k{color:var(--pri2)}
.mw-v{flex:1;min-width:0;font-size:13px;display:flex;align-items:center;
  flex-wrap:wrap;gap:2px 6px}

/* ---------- 画线选股 ---------- */
.draw-wrap{position:relative;background:var(--pad-bg);
  border:1px solid var(--line);border-radius:12px;overflow:hidden;touch-action:none}
.draw-wrap canvas{display:block;width:100%;height:180px;cursor:crosshair}
.draw-hint{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  color:var(--txt3);font-size:13px;pointer-events:none}
.draw-tools{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.up-btn{background:rgba(75,139,255,.14);border-color:var(--pri);color:var(--pri2);font-weight:600}
.up-tip{font-size:11px;color:var(--txt3);margin-top:8px;line-height:1.6}
.draw-tpl{margin-top:16px}
.dt-title{font-size:12px;color:var(--txt3);margin-bottom:8px}
.tpl-row{display:flex;flex-wrap:wrap;gap:8px}
.tpl{padding:6px 12px;background:var(--card2);border:1px solid var(--line);
  border-radius:20px;font-size:12px;color:var(--txt2);transition:all .18s ease}
.tpl.active{background:rgba(75,139,255,.16);border-color:var(--pri);color:var(--pri2);font-weight:600}
.tpl:active{transform:scale(.96)}
.draw-copy{display:flex;gap:8px;margin-top:14px}
.draw-copy input{flex:1;background:var(--card2);border:1px solid var(--line);
  border-radius:10px;padding:8px 12px;color:var(--txt);outline:none;font-size:13px}
.opt-row{display:flex;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap}
.opt-k{font-size:13px;color:var(--txt2);flex:0 0 62px}
.opt-opts{display:flex;gap:8px;flex:1;flex-wrap:wrap}
.match-btn{width:100%;background:linear-gradient(135deg,#4b8bff,#7aa2ff);color:#fff;
  border-radius:12px;padding:14px 0;font-size:15px;font-weight:700;margin-top:6px;
  transition:transform .18s ease;box-shadow:0 6px 18px rgba(75,139,255,.25)}
.match-btn:active{transform:scale(.98)}
.match-btn:disabled{opacity:.55}

/* ---------- 战法画像 ---------- */
.pb-entry{display:flex;align-items:center;justify-content:space-between;
  background:linear-gradient(135deg,rgba(255,159,26,.14),rgba(246,70,93,.10));
  border:1px solid #3a3244;border-radius:var(--rad);padding:14px 16px;margin-bottom:12px}
.pb-e-t{font-size:15px;font-weight:700}
.pb-e-s{font-size:11px;color:var(--txt2);margin-top:3px}
.pb-e-btn{font-size:12px;color:var(--gold);font-weight:600;flex:0 0 auto}
.pb-up{display:flex;gap:8px;flex-wrap:wrap}
.pb-imglist{margin-top:10px}
.pb-img-item{display:flex;justify-content:space-between;align-items:center;
  background:var(--card2);border-radius:10px;padding:9px 12px;margin-bottom:6px;
  font-size:12px;color:var(--txt2)}
.pb-img-item [data-del]{color:var(--up);cursor:pointer}
.pb-img-note{font-size:11px;color:var(--pri2);margin-top:4px}
.pb-or{font-size:11px;color:var(--txt3);margin:14px 0 6px}
.pb-text{width:100%;background:var(--card2);border:1px solid var(--line);border-radius:10px;
  padding:10px 12px;color:var(--txt);font-size:12px;font-family:inherit;outline:none;
  resize:vertical;line-height:1.6}
.pb-bar{margin-bottom:14px}
.pb-bar-t{display:flex;justify-content:space-between;font-size:12px;margin-bottom:6px}
.pb-adv{background:var(--card2);border-radius:12px;padding:12px;margin-bottom:10px;
  border-left:3px solid var(--pri)}
.pb-adv.warn{border-left-color:var(--warn)}
.pb-adv.danger{border-left-color:var(--up)}
.pb-adv-t{font-size:13px;font-weight:700;margin-bottom:5px}
.pb-adv-d{font-size:12px;color:var(--txt2);line-height:1.7}
.pb-adv-a{font-size:12px;color:var(--pri2);margin-top:6px;line-height:1.7}
.pb-note{width:100%;background:var(--card2);border:1px solid var(--line);border-radius:10px;
  padding:10px 12px;color:var(--txt);font-size:13px;outline:none;margin-bottom:10px}
.pb-row{display:flex;gap:8px;align-items:center}
.pb-pnl{flex:1;background:var(--card2);border:1px solid var(--line);border-radius:10px;
  padding:10px 12px;color:var(--txt);font-size:13px;outline:none}
.pb-log{display:flex;gap:10px;align-items:center;padding:9px 0;
  border-bottom:1px solid var(--line);font-size:12px}
.pb-log:last-child{border-bottom:none}
.pb-log-n{flex:1;min-width:0;color:var(--txt2);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---------- 区间形态（拖动框选） ---------- */
.range-quick{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.kline-sel{position:absolute;top:0;bottom:0;background:rgba(75,139,255,.18);
  border-left:2px solid var(--pri);border-right:2px solid var(--pri);
  pointer-events:none;z-index:5}
.chart-wrap{touch-action:pan-y}
.rs-head{font-size:13px;margin-bottom:12px;line-height:1.7}
.rs-match{background:var(--card2);border-radius:12px;padding:12px;margin-bottom:10px}
.rs-match.best{border:1px solid var(--pri);background:rgba(75,139,255,.08)}
.rs-t{display:flex;align-items:center;gap:8px;margin-bottom:7px;font-size:14px}
.rs-rank{width:20px;height:20px;border-radius:50%;background:var(--pri);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}
.rs-match.best .rs-rank{background:var(--gold);color:#1a1a1a}
.rs-sim{margin-left:auto;font-size:16px;font-weight:800;color:var(--pri2)}

/* ---------- 首页画股入口 ---------- */
.draw-hero{display:flex;align-items:center;justify-content:space-between;
  background:var(--hero2-bg);
  border:1px solid var(--hero2-line);border-radius:var(--rad);padding:18px;
  margin-bottom:12px;position:relative;overflow:hidden}
.draw-hero:active{transform:scale(.99)}
.draw-hero:before{content:"✎";position:absolute;right:-6px;top:-14px;
  font-size:80px;color:rgba(75,139,255,.12);transform:rotate(12deg)}
.dh-t{font-size:18px;font-weight:800;letter-spacing:.5px}
.dh-s{font-size:12px;color:var(--txt2);margin-top:5px;line-height:1.6}
.dh-btn{background:linear-gradient(135deg,#4b8bff,#7aa2ff);color:#fff;
  border-radius:22px;padding:9px 20px;font-size:13px;font-weight:700;
  flex:0 0 auto;box-shadow:0 4px 14px rgba(75,139,255,.35)}
.more-link{text-align:center;color:var(--pri2);font-size:13px;padding:10px 0 4px;
  cursor:pointer}

/* ---------- 形态库案例 ---------- */
.case-panel{margin-top:10px;background:var(--bg2);border-radius:12px;padding:10px 12px}
.case-t{font-size:12px;font-weight:700;color:var(--pri2);margin-bottom:8px}
.case-row{display:flex;align-items:center;gap:8px;padding:6px 0;font-size:12px;
  border-bottom:1px dashed var(--line);flex-wrap:wrap}
.case-row:last-child{border-bottom:none}
.case-row b{color:var(--txt)}
.case-row .code{color:var(--txt3);font-size:11px}

/* 形态示意 */
.shape-wrap{display:flex;align-items:center;gap:8px;margin:6px 0 2px;
  padding:6px 8px;background:rgba(75,139,255,.06);border:1px solid rgba(75,139,255,.14);border-radius:8px}
.shape-wrap canvas{flex:0 0 auto;display:block}
.shape-cap{font-size:10px;white-space:nowrap}
.scan-note{font-size:11px;color:var(--txt3);padding:2px 2px 8px}

/* 匹配结果 */
.m-head{display:flex;justify-content:space-between;align-items:baseline;
  font-size:14px;font-weight:700;margin:4px 2px 10px}
.m-head .sub{font-size:11px;color:var(--txt3);font-weight:400}
.m-sort{display:flex;align-items:center;gap:8px;margin:0 2px 12px;flex-wrap:wrap}
.m-sort-l{font-size:12px;color:var(--txt3)}
.chip.sm{padding:4px 12px;font-size:12px;cursor:pointer}
.m-item{background:var(--card);border-radius:var(--rad);padding:12px 14px;margin-bottom:10px;
  display:flex;align-items:center;gap:12px}
.m-item .left{flex:1;min-width:0}
.m-item .t1{font-size:15px;font-weight:600}
.m-item .t1 .code{font-size:12px;color:var(--txt3);font-weight:400;margin-left:8px}
.m-item .t2{font-size:11px;color:var(--txt3);margin-top:4px}
.m-cmp{width:88px;height:44px;flex:0 0 auto}
.m-score{text-align:right;flex:0 0 auto;min-width:56px}
.m-score .v{font-size:19px;font-weight:800}
.m-score .l{font-size:10px;color:var(--txt3)}

/* ---------- 形态库分组 ---------- */
.lib-h{font-size:15px;font-weight:700;padding:14px 4px 8px;display:flex;
  justify-content:space-between;align-items:baseline;border-top:1px solid var(--line);
  margin-top:6px}
.lib-h:first-child{border-top:none;margin-top:0}
.empty{text-align:center;color:var(--txt3);padding:40px 0;font-size:13px}

/* ---------- 加载骨架屏 ---------- */
@keyframes shimmer{0%{background-position:-300px 0}100%{background-position:300px 0}}
.sk{background:linear-gradient(90deg,var(--sk1) 25%,var(--sk2) 50%,var(--sk1) 75%);
  background-size:600px 100%;animation:shimmer 1.3s linear infinite;border-radius:8px}
.sk-item{background:var(--card);border-radius:var(--rad);padding:14px;margin-bottom:10px;
  display:flex;align-items:center;gap:12px}
.sk-l{flex:1}
.sk-t1{height:15px;width:40%;margin-bottom:9px}
.sk-t2{height:11px;width:65%}
.sk-r{width:56px;height:34px;border-radius:8px}

/* ---------- 卡片入场 ---------- */
@keyframes rise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.card,.item{animation:rise .32s ease both}
.page>.item:nth-child(2){animation-delay:.03s}
.page>.item:nth-child(3){animation-delay:.06s}
.page>.item:nth-child(4){animation-delay:.09s}
.page>.item:nth-child(5){animation-delay:.12s}

/* ---------- 指数卡片（含迷你走势） ---------- */
.idx{position:relative;overflow:hidden}
.idx .spark{position:absolute;left:0;right:0;bottom:0;height:26px;opacity:.5}
.idx .n{position:relative;z-index:1}
.idx .p,.idx .c{position:relative;z-index:1}

/* ---------- 价位区间条 ---------- */
.scale{margin-top:16px;padding-top:4px}
.scale-track{position:relative;height:6px;background:linear-gradient(90deg,
  var(--down) 0%,var(--flat-bg) 45%,var(--gold) 72%,var(--up) 100%);
  border-radius:4px;margin:26px 0 8px}
.scale-pt{position:absolute;top:-5px;width:2px;height:16px;background:var(--txt);
  border-radius:2px;box-shadow:0 0 0 3px rgba(232,234,237,.15)}
.scale-lab{position:absolute;top:-24px;transform:translateX(-50%);font-size:10px;
  color:var(--txt2);white-space:nowrap}
.scale-lab b{color:var(--txt);font-weight:600}
.scale-now{position:absolute;top:-9px;width:14px;height:14px;border-radius:50%;
  background:var(--pri);border:2px solid var(--bg);transform:translateX(-50%);
  box-shadow:0 0 0 3px rgba(75,139,255,.25)}

/* ---------- 形态标签 ---------- */
.tag{display:inline-block;background:var(--card2);border-radius:5px;padding:1px 7px;
  margin-right:6px;color:var(--txt2);font-size:11px}
.tag.bull{background:rgba(246,70,93,.14);color:#ff7b8a}
.tag.bear{background:rgba(14,203,129,.14);color:#4bd0a0}
.tag.neutral{background:rgba(152,161,176,.14);color:var(--txt2)}
.tag.hot{background:rgba(255,197,61,.16);color:var(--gold)}

/* ---------- 概率条（列表项） ---------- */
.pbar{height:4px;background:var(--card2);border-radius:3px;overflow:hidden;margin-top:5px;width:74px}
.pbar i{display:block;height:100%;border-radius:3px;
  background:linear-gradient(90deg,var(--pri),var(--pri2))}
.pbar i.hi{background:linear-gradient(90deg,var(--warn),var(--up))}
.pbar i.lo{background:linear-gradient(90deg,var(--down),#5ad9a8)}

/* ---------- 步骤时间轴 ---------- */
.steps{list-style:none;margin:0;padding:0}
.steps li{position:relative;padding-left:20px;margin-bottom:11px;font-size:13px;
  color:var(--txt2);line-height:1.65}
.steps li:before{content:"";position:absolute;left:3px;top:7px;width:7px;height:7px;
  border-radius:50%;background:var(--pri);box-shadow:0 0 0 3px rgba(75,139,255,.16)}
.steps li:not(:last-child):after{content:"";position:absolute;left:6px;top:17px;
  width:1px;height:calc(100% - 8px);background:var(--line)}
.steps.warn li:before{background:var(--warn);box-shadow:0 0 0 3px rgba(255,159,26,.16)}
.steps.danger li:before{background:var(--up);box-shadow:0 0 0 3px rgba(246,70,93,.16)}
.steps li b{color:var(--txt);font-weight:600}

/* ---------- 因子条动画 ---------- */
.f-bar{height:6px;background:var(--card2);border-radius:4px;overflow:hidden}
.f-bar i{display:block;height:100%;border-radius:4px;
  background:linear-gradient(90deg,var(--pri),var(--pri2));
  width:0;transition:width .8s cubic-bezier(.22,1,.36,1)}
.f-bar i.good{background:linear-gradient(90deg,var(--warn),var(--up))}
.f-bar i.bad{background:linear-gradient(90deg,var(--down),#5ad9a8)}

/* ---------- 数字滚动 ---------- */
.num{font-variant-numeric:tabular-nums}

/* ---------- toast ---------- */
.toast{position:fixed;left:50%;bottom:86px;transform:translateX(-50%) translateY(8px);
  background:var(--toast-bg);color:var(--txt);padding:10px 20px;border-radius:22px;
  font-size:13px;z-index:300;opacity:0;transition:all .25s ease;
  border:1px solid var(--line);box-shadow:0 8px 24px rgba(0,0,0,.4)}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ---------- 合规：底部免责栏 ---------- */
.disc-bar{font-size:11px;color:var(--txt3);line-height:1.6;text-align:center;
  padding:14px 18px 76px;max-width:640px;margin:0 auto}
/* 备案号（2026-10-30 管局审核通过，2026-10-30 上墙） */
.disc-bar .beian{display:block;margin-top:5px}
.disc-bar .beian a{color:var(--txt3);text-decoration:none}
.disc-bar .beian a:hover{color:var(--txt2);text-decoration:underline}

/* ---------- 合规：首次打开免责弹窗 ---------- */
.modal-mask{position:fixed;inset:0;background:rgba(0,0,0,.62);z-index:400;
  display:flex;align-items:center;justify-content:center;padding:24px}
.modal{background:var(--card);border:1px solid var(--line);border-radius:16px;
  max-width:340px;width:100%;padding:22px 20px 18px;
  box-shadow:0 18px 50px rgba(0,0,0,.5)}
.modal-t{font-size:16px;font-weight:700;margin-bottom:12px}
.modal-b{font-size:13px;color:var(--txt2);line-height:1.75}
.modal-b b{color:var(--txt)}
.modal-ok{width:100%;margin-top:18px;padding:11px 0;border:none;border-radius:10px;
  background:var(--pri);color:#fff;font-size:14px;font-weight:600;cursor:pointer}
.modal-ok:active{opacity:.85}

/* ---------- 今日大盘：涨跌家数 ---------- */
.bd-nums{display:flex;align-items:baseline;gap:14px;margin-top:14px}
.bd-num{flex:1}
.bd-num b{font-size:28px;font-weight:800;font-variant-numeric:tabular-nums}
.bd-num span{font-size:12px;color:var(--txt3);margin-left:6px}
.bd-bar{height:10px;border-radius:6px;overflow:hidden;display:flex;
  background:var(--card2);margin-top:12px}
.bd-bar i{display:block;height:100%}
.bd-bar .u{background:linear-gradient(90deg,#f6465d,#ff8a8a)}
.bd-bar .f{background:var(--flat-bg)}
.bd-bar .d{background:linear-gradient(90deg,#0ecb81,#5ad9a8)}


/* ---------- 匹配结果补充信息 ---------- */
.m-days{display:inline-block;font-size:10px;color:var(--pri2);
  background:rgba(75,139,255,.14);border-radius:6px;padding:1px 6px;
  margin-left:8px;font-weight:600;vertical-align:1px}
.m-q{font-size:11px;color:var(--txt3);margin-top:4px;min-height:14px}
.m-q b{font-weight:700}
.m-item .t2 b{font-weight:700}
#looseBtn{cursor:pointer}

/* ---------------- 访问入口（电脑打不开时的备用地址） ---------------- */
.entry-btn {
  display: block;
  width: calc(100% - 32px);
  margin: 10px 16px 4px;
  padding: 10px 12px;
  font-size: 13px;
  color: #8fb4ff;
  background: rgba(91, 155, 255, .08);
  border: 1px solid rgba(91, 155, 255, .28);
  border-radius: 10px;
  cursor: pointer;
  text-align: center;
}
.entry-btn:hover { background: rgba(91, 155, 255, .14); }
.entry-url {
  padding: 10px 12px;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 12.5px;
  line-height: 1.6;
  color: #cfd8ea;
  background: rgba(255, 255, 255, .05);
  border: 1px solid rgba(255, 255, 255, .10);
  border-radius: 8px;
  word-break: break-all;
  user-select: all;
}

/* ---------- 反馈悬浮按钮与弹窗 ---------- */
.fb-fab{position:fixed;right:14px;bottom:74px;z-index:60;background:var(--pri);
  color:#fff;border:none;border-radius:20px;padding:8px 15px;font-size:13px;
  cursor:pointer;box-shadow:0 4px 14px rgba(75,139,255,.35);font-family:inherit;}
.fb-fab:active{transform:scale(.95);}
.fb-row{margin-bottom:12px;}
.fb-row label{display:block;font-size:12px;color:var(--txt2);margin-bottom:4px;}
.fb-row select,.fb-row textarea,.fb-row input{width:100%;background:var(--card);
  border:1px solid var(--line);color:var(--txt);border-radius:8px;padding:8px 10px;
  font-size:13px;font-family:inherit;outline:none;}
.fb-row select:focus,.fb-row textarea:focus,.fb-row input:focus{border-color:var(--pri);}
.fb-req{color:var(--up);}
.fb-actions{display:flex;gap:10px;margin-top:14px;}
.fb-actions .modal-ok{flex:1;width:auto;margin-top:0;}
.fb-cancel{background:transparent;border:1px solid var(--line);color:var(--txt2);}

/* ---------- 品牌 Logo（2026-10-29 新增：原「◈」字符换成盾形图标） ---------- */
.brand .logo{width:32px;height:32px;flex:0 0 auto;display:block;
  filter:drop-shadow(0 1px 1.5px rgba(0,0,0,.28))}
/* 2026-10-30 换新 logo（蓝龙盾 + 金元宝 + 红箭头，中间镂空透明）：
   深色底直接可用；浅色底浅蓝对比不足，压暗一档并略提饱和，不加任何描边 */
:root[data-theme="light"] .brand .logo{filter:brightness(.82) saturate(1.18) drop-shadow(0 1px 1px rgba(10,20,40,.14))}
@media (max-width:400px){.brand .logo{width:30px;height:30px}}

/* 窄屏（≤400）原来品牌名会竖排、搜索按钮也会竖排：
   flex 默认允许收缩，brand/searchbox 一起被压。这里只让输入框收缩，其余不换行。 */
.brand{flex:0 0 auto;white-space:nowrap}
.searchbox{min-width:0}
.searchbox input{min-width:0}
.searchbox button{flex:0 0 auto;white-space:nowrap}
