/* 《从摆摊到星辰大海》原型样式：极简扁平 · 色块 + 图标 + 文字 */
/* 白天模式：只换变量，不动任何组件规则。
 * 注意金色/绿色/红色都调深了一档 —— 亮底上原来的高饱和色会糊。 */
body.day{
  --bg:#eaeff7; --panel:#ffffff; --panel2:#f3f7fd; --panel3:#e9eff9; --line:#d2dcec;
  --text:#1a2334; --muted:#5d6d8a;
  --gold:#b8791a; --green:#0f8a53; --red:#d0453f; --blue:#1a6ecb; --purple:#7c3aed;
  --shadow:0 6px 18px rgba(28,48,88,.13);
  --bar:#f6faff; --neon:#1c86c8; --neon-dim:rgba(28,134,200,.14); --warn:#b25e12;
}
:root{
  --bg:#070b16; --panel:#101830; --panel2:#16203c; --line:#243154;
  --text:#e9eefc; --muted:#8a9ac2; --gold:#ffd24a; --green:#43e08d;
  --red:#ff6b6b; --blue:#5aa9ff; --purple:#c084fc;
  --shadow:0 8px 24px rgba(0,0,0,.45);
  /* V2.20 主题系统：这几条补齐后，昼夜切换只需要换一套变量 */
  --panel3:#0e1730;            /* 卡片渐变的深端 */
  --bar:#070d18;               /* 底部导航底色 */
  --neon:#7ee6ff;              /* 科技风主色（导航栏/描边） */
  --neon-dim:rgba(90,216,255,.16);
  --warn:#ff9f43; --glow:#12203f;   /* 页面顶部那层"顶光" */
  --app-top:#0c1428; --app-bot:#080d1a;   /* #app 整页底色（铺满视口的那层） */
  /* V2.28 价格条上的最优区间带（画在滑条背景里，不依赖图层）
   * --band 是光条中心（最亮），--band-edge 是两侧（淡），靠渐变做出羽化 */
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0;height:100%}
body{
  background:radial-gradient(120% 80% at 50% 0%,var(--glow) 0%,var(--bg) 60%);
  color:var(--text);font-family:system-ui,-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;
  overscroll-behavior:none;
  font-variant-numeric:tabular-nums;touch-action:manipulation;
}
html,body{width:100%;max-width:100%;overflow-x:hidden}
/* 注意：这里刻意不用 body{display:flex} 居中 —— flex 子项的 min-width:auto 会让
   max-width 失效，页面被内容撑宽后右侧被裁掉。块级 + margin:auto 是确定性的。 */
#app{width:100%;max-width:440px;min-width:0;margin:0 auto;min-height:100vh;position:relative;
  /* ★白天模式一直是深色的真凶：这层铺满视口，背景却写死了深蓝。
   * 诊断条说 body 背景已变浅是对的 —— 但看到的那片深色是 #app，不是 body。 */
  background:linear-gradient(180deg,var(--app-top) 0%,var(--app-bot) 100%);overflow-x:hidden;
  display:flex;flex-direction:column;box-shadow:0 0 60px rgba(0,0,0,.6)}
@media(min-width:520px){#app{border-left:1px solid var(--line);border-right:1px solid var(--line)}}
b{font-weight:800}

/* ---------- 顶栏 ---------- */
#topbar{position:sticky;top:0;z-index:30;padding:10px 14px 8px;background:var(--bar);
  border-bottom:1px solid var(--line)}
/* 注：这里原本有 backdrop-filter:blur(8px)。粘性顶栏上的毛玻璃在手机上每帧都要重新合成，
   是"拖动滑条发涩"的帮凶之一；背景本来就 96% 不透明，去掉后几乎看不出差别 */
.top-row{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.stage{display:flex;gap:8px;align-items:center}
.stage-icon{font-size:26px;filter:drop-shadow(0 2px 6px rgba(0,0,0,.5))}
.stage-name{font-size:15px;font-weight:800}
.stage-biz{font-size:11px;color:var(--muted)}
.top-right{text-align:right}
.cash{font-size:24px;font-weight:900;color:var(--gold);line-height:1.1;text-shadow:0 0 18px rgba(255,210,74,.25)}
.rate{font-size:12px;color:var(--green);font-weight:700}
.icon-btn{background:var(--panel2);border:1px solid var(--line);color:var(--text);border-radius:8px;
  width:30px;height:26px;font-size:13px;cursor:pointer;margin-bottom:4px}
.goal{margin-top:8px}
.goal-bar{height:6px;background:#1b2440;border-radius:4px;overflow:hidden}
.goal-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,#5aa9ff,#43e08d)}
.goal-row{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:6px}
.goal-text{font-size:11px;color:var(--muted);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.expand-btn{background:linear-gradient(180deg,#ffd24a,#f5a623);color:#2a1c00;border:0;border-radius:10px;
  padding:7px 14px;font-weight:900;font-size:13px;cursor:pointer;box-shadow:0 4px 0 #a86c00}
.expand-btn:disabled{background:#232f4f;color:#5d6b90;box-shadow:none;cursor:default}
.expand-btn:not(:disabled){animation:pulse 1.2s infinite}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
.hidden{display:none !important}

/* ---------- 卡片 ---------- */
#main{padding:12px 14px 24px;display:flex;flex-direction:column;gap:12px;min-width:0}
.card{background:linear-gradient(180deg,var(--panel),var(--panel3));border:1px solid var(--line);border-radius:16px;padding:12px;box-shadow:var(--shadow);min-width:0;overflow:hidden}
.card h3{margin:0 0 10px;font-size:13px;font-weight:800;display:flex;align-items:baseline;gap:8px}
.card h3 .hint{font-size:10px;color:var(--muted);font-weight:500}
.market{padding:14px}

/* ---------- 商品 ---------- */
.market-head{display:flex;align-items:center;gap:10px}
.goods-icon{font-size:38px;width:52px;height:52px;display:grid;place-items:center;background:var(--panel2);
  border-radius:14px;border:1px solid var(--line)}
.goods-info{flex:1;min-width:0}
.goods-name{font-size:15px}
.goods-name .unit{font-size:11px;color:var(--muted);margin-left:6px}
.stock-line{font-size:11px;color:var(--muted);margin-top:3px}
.stock-line b{color:var(--text)}
.stock-line .warn{color:var(--red);font-weight:800}
.stock-bar{height:4px;background:#1b2440;border-radius:3px;margin-top:5px;overflow:hidden}
.stock-bar i{display:block;height:100%;width:0;background:var(--blue)}
.traffic-box{text-align:center;font-size:10px;color:var(--muted);line-height:1.3;min-width:56px}
.traffic-box b{display:block;font-size:17px;color:var(--blue)}
.traffic-box b.frozen{color:#5d6b90;animation:pulse 1s infinite}
.traffic-box small{display:block;font-size:9px}
.traffic-box em{display:block;font-size:9px;font-style:normal;color:#6b7ba3;margin-top:2px}

/* 调价冷却：松手后这段时间不能动价，逼玩家"先决策，再观察" */
.slider-cd{position:absolute;left:0;right:0;top:2px;bottom:2px;border-radius:10px;background:rgba(10,16,32,.72);
  display:flex;align-items:center;gap:8px;padding:0 10px;z-index:3;backdrop-filter:blur(1px)}
.slider-cd.hidden{display:none}
.slider-cd i{flex:1;height:5px;border-radius:3px;background:linear-gradient(90deg,#5aa9ff,#c084fc);width:0}
.slider-cd span{font-size:10px;color:var(--blue);white-space:nowrap;font-weight:700}

/* ---------- 定价 ---------- */
.price-block{margin-top:14px}
.price-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.price-val{font-size:30px;font-weight:900;color:var(--gold);line-height:1;transition:opacity .15s}
/* 拖动中的价格是"待定"的：虚线下划线 + 略微压暗，玩家一眼知道还没挂出去 */
.price-val.pending{opacity:.72;text-decoration:underline dashed rgba(255,210,74,.6);text-underline-offset:6px}
.price-val small{font-size:12px;color:var(--muted);font-weight:600;margin-left:4px}
/* V2.0：不再直接给出"完美定价"标签，改成只反映数据的"热度"，答案由玩家自己看出来 */
.star-tag{font-size:11px;font-weight:800;padding:4px 10px;border-radius:20px;color:var(--muted);
  background:var(--panel2);border:1px solid var(--line);transition:all .18s}
.star-tag.warm{color:var(--gold);border-color:#6b5a24;background:rgba(255,210,74,.12)}
.star-tag.hot{color:#2a1c00;background:linear-gradient(90deg,#ffd24a,#ff9f43);border-color:#ffe9a8;
  box-shadow:0 0 18px rgba(255,210,74,.55);animation:pulse .9s infinite}
/* 数字跳动：数值显著变化时抖一下 */
@keyframes numPop{0%{transform:scale(1)}35%{transform:scale(1.16);filter:brightness(1.35)}100%{transform:scale(1)}}
.metric b.pop{animation:numPop .28s ease-out}
.ip-bar{height:8px;background:#1b2440;border-radius:5px;overflow:hidden;position:relative}
.ip-bar i{display:block;height:100%;width:0;border-radius:5px;
  background:linear-gradient(90deg,#5aa9ff,#43e08d,#ffd24a);transition:width .3s}
.ip-range{font-size:10.5px;color:var(--blue);margin-top:6px;min-height:14px}
.ip-range.closed{color:var(--green);font-weight:800}
.energy-bar{flex:1;height:6px;background:#1b2440;border-radius:4px;overflow:hidden}
.energy-bar i{display:block;height:100%;width:100%;background:linear-gradient(90deg,#7b5cff,#5aa9ff);transition:width .2s}
.energy-buy{width:100%;margin-top:9px;padding:9px;border:1px dashed #866c22;border-radius:11px;cursor:pointer;
  font-family:inherit;font-size:12px;font-weight:800;color:var(--gold);background:rgba(255,210,74,.08)}
.energy-buy b{color:var(--gold)}
.energy-buy.hidden{display:none}
.energy-buy:active{transform:scale(.99)}
.intel-quote{display:flex;gap:6px;margin-top:10px;padding:9px 11px;border-radius:11px;font-size:11.5px;line-height:1.55;
  background:linear-gradient(90deg,rgba(192,132,252,.14),rgba(192,132,252,.03));border:1px solid #5b3f7d;
  color:var(--text)}   /* 原来写死 #e3d4ff：淡紫压在深蓝气泡上对比度太低，客户的话看不清 */
.intel-quote b{color:var(--purple);white-space:nowrap}
.intel-quote.hidden{display:none}
/* 注：曾有 "🎯 按情报锁定售价" 一键按钮。它与"调价冷却"的承诺感冲突
   （刚要求玩家为定价负责，又给一个绕过冷却的一键最优），已删除。
   现在情报到手后由玩家自己把滑条拖过去 —— 信息是挣来的，动作还是要自己做。 */

/* ---------- 路人的吐槽气泡 ---------- */
.passerby{display:flex;gap:9px;align-items:flex-start;margin:0 14px;padding:9px 12px;border-radius:14px 14px 14px 4px;
  background:linear-gradient(180deg,var(--bubble-a,#1d2a4d),var(--bubble-b,#16203c));border:1px solid var(--line);font-size:12px;line-height:1.5;
  color:var(--text);animation:bubbleIn .28s ease-out;box-shadow:0 6px 18px rgba(0,0,0,.4)}
.passerby.hidden{display:none}
.pb-avatar{font-size:19px;line-height:1.1}
.pb-text{flex:1}
@keyframes bubbleIn{from{opacity:0;transform:translateY(-8px) scale(.96)}to{opacity:1;transform:none}}

/* ---------- V2.1 模糊经营反馈 ---------- */
.metric.wide-l,.metric.wide-r{padding:9px 10px}
.metric.wide-l b,.metric.wide-r b{font-size:16px;letter-spacing:.5px}
.judge{display:flex;gap:7px;align-items:flex-start;margin-top:9px;padding:9px 11px;border-radius:11px;
  background:linear-gradient(90deg,rgba(90,169,255,.13),rgba(90,169,255,.03));border:1px solid #2b4a7d;
  font-size:12px;line-height:1.5;color:var(--blue)}
.judge i{font-style:normal;font-size:14px;line-height:1.35}
.judge.warn{background:linear-gradient(90deg,rgba(255,107,107,.16),rgba(255,107,107,.03));border-color:#7d3a3a;color:var(--red)}
/* 锁形广告入口：V2.8 起统一用它承担"解锁精准数据"这一个入口（原来商品卡和情报卡各有一个，重复） */
.data-lock{width:100%;margin-top:9px;display:flex;align-items:center;gap:10px;padding:10px 12px;cursor:pointer;
  -webkit-appearance:none;appearance:none;
  background:repeating-linear-gradient(45deg,rgba(255,210,74,.07),rgba(255,210,74,.07) 8px,rgba(255,210,74,.13) 8px,rgba(255,210,74,.13) 16px);
  border:1px dashed #866c22;border-radius:12px;color:var(--gold);font-family:inherit;text-align:left}
.data-lock:active{transform:scale(.99)}
/* 生效中：绿底实线，和"上锁"的虚线金边形成明显区分 */
.data-lock:disabled{opacity:1}
.data-lock.active{cursor:default;opacity:1;
  background:repeating-linear-gradient(45deg,rgba(67,224,141,.09),rgba(67,224,141,.09) 8px,rgba(67,224,141,.16) 8px,rgba(67,224,141,.16) 16px);
  border:1px solid #2f7d55;color:var(--green)}
.data-lock.active .dl-text b{color:var(--green)}
.data-lock.active .dl-text small{color:var(--muted)}
.data-lock.active .dl-arrow{color:var(--green)}
.data-lock .dl-icon{font-size:17px}
.data-lock .dl-text{flex:1;font-size:11px;line-height:1.5}
.data-lock .dl-text b{font-size:12.5px;color:var(--gold)}   /* 原来写死 #fff2c4：白底上完全看不清 */
.data-lock .dl-text small{color:var(--muted);font-size:10px}
.data-lock .dl-arrow{color:var(--gold);font-size:12px}
.metrics.exact{margin-top:9px;padding-top:9px;border-top:1px dashed #3a4a75}
.metrics.exact.hidden{display:none}

/* ---------- V2.1 房租倒计时 ---------- */
.rent-chip{display:flex;align-items:center;gap:7px;margin-top:7px;padding:6px 10px;border-radius:10px;
  background:var(--panel2);border:1px solid var(--line);font-size:11px;color:var(--muted)}
.rent-chip b{color:var(--text)}
.rent-chip.warn{border-color:#866c22;background:rgba(255,210,74,.1);color:var(--gold)}
.rent-chip.warn b{color:var(--gold)}
.rent-chip.debt{border-color:#7d3a3a;background:rgba(255,107,107,.14);color:var(--red);animation:pulse 1.1s infinite}
.rent-chip.debt b{color:#fff}
.rc-loan{margin-left:auto;background:linear-gradient(180deg,#ffd24a,#f5a623);color:#2a1c00;border:0;
  border-radius:8px;padding:4px 9px;font-size:10px;font-weight:900;cursor:pointer;font-family:inherit}
.rc-loan.hidden{display:none}

/* ---------- 库存损耗 ---------- */
.stock-bar{position:relative}
.stock-bar u{position:absolute;top:-3px;bottom:-3px;width:2px;background:#ff9f43;border-radius:2px;opacity:.85}
.rot-warn{color:var(--warn);font-weight:800;margin-left:6px}
.rot-warn.hidden{display:none}
.rv-hold{height:4px;background:#2a1520;border-radius:3px;margin:6px 0 4px;overflow:hidden}
.rv-hold i{display:block;height:100%;width:0;background:linear-gradient(90deg,#ff9f43,#43e08d);transition:width .12s}
.rv-how{font-size:10px;color:var(--gold);line-height:1.45}
/* 刻度画在容器上：容器在金色区间带之下，两者不会互相遮挡。
 * （曾经画在 input 本体上 —— input 有 z-index:2，不透明底色会把区间带整个盖住） */
.slider-wrap{position:relative;margin:16px 0 4px;height:34px;display:flex;align-items:center;border-radius:10px;background:repeating-linear-gradient(90deg,var(--neon-dim) 0 1px,rgba(0,0,0,0) 1px 9px),var(--panel2);box-shadow:inset 0 0 0 1px var(--neon-dim);border-radius:10px;
  background:repeating-linear-gradient(90deg,var(--neon-dim) 0 1px,rgba(0,0,0,0) 1px 9px),var(--panel2);
  box-shadow:inset 0 0 0 1px var(--neon-dim)}
.golden-band{position:absolute;top:9px;bottom:9px;z-index:3;pointer-events:none;
  /* 实测结论：z-index:1 在真机上依然被 input 的轨道/伪元素盖住（两个模式都一样），
   * 所以只能放在最上层。为了不压住圆形滑块：
   *   ① 高度收窄（上下各留 9px，比 26px 的滑块矮）→ 滑块上下露出来
   *   ② 半透明 → 滑块隔着带子也能看见
   * 装饰可以让人，但玩法信息被挡住就等于没有。 */background:linear-gradient(90deg,rgba(255,210,74,0),rgba(255,210,74,.45),rgba(255,210,74,0));
  border-radius:8px;pointer-events:none;box-shadow:0 0 18px rgba(255,210,74,.5)}
input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:34px;background:transparent;position:relative;z-index:2;margin:0;
  /* 手机上必须写 touch-action:none —— 否则手指稍微上下滑动，浏览器会把手势判成"页面滚动"抢走，
     并抛出 pointercancel，滑条就会突然"卡住"（这是拖动不顺滑的根因） */
  touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
input[type=range]::-webkit-slider-runnable-track{height:10px;border-radius:6px;background:transparent;border:0}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:26px;height:26px;border-radius:50%;
  background:radial-gradient(circle at 35% 30%,#fff2c4,#ffd24a 55%,#e39b00);border:2px solid #fff6d8;
  margin-top:-9px;box-shadow:0 2px 10px rgba(0,0,0,.6)}
input[type=range]::-moz-range-track{height:10px;border-radius:6px;background:transparent}
input[type=range]::-moz-range-thumb{width:24px;height:24px;border-radius:50%;background:#ffd24a;border:2px solid #fff6d8}
.scale-row{display:flex;justify-content:space-between;font-size:10px;color:var(--muted);margin-top:2px}
.metrics{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}
.metric{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:7px 9px;font-size:11px;color:var(--muted);min-width:0;overflow:hidden}
.metric b{display:block;font-size:14px;color:var(--text);margin-top:2px}
.metric b.gold{color:var(--gold)}
.mini-bar{height:3px;background:#0d1428;border-radius:2px;margin-top:5px;overflow:hidden}
.mini-bar i{display:block;height:100%;background:var(--green);transition:width .15s}

/* ---------- 按钮 ---------- */
.actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}
.actions.three{grid-template-columns:1fr 1fr 1fr;gap:8px}
.actions.three .btn{padding:11px 4px}
.actions.three .btn-main{font-size:13px}
.actions.three .btn-sub{font-size:10px}
.btn.ask{background:linear-gradient(180deg,#c084fc,#7c3aed);color:#1a0b2e;box-shadow:0 4px 0 #4c1d95}
.btn.ask[disabled]{background:#232f4f;color:#5d6b90;box-shadow:none}
.btn{position:relative;overflow:hidden;border:0;border-radius:14px;padding:11px 8px;cursor:pointer;
  display:flex;flex-direction:column;align-items:center;gap:2px;font-family:inherit;transition:transform .06s}
.btn:active{transform:scale(.96)}
.btn.buy{background:linear-gradient(180deg,#43e08d,#1e9c5c);color:#04220f;box-shadow:0 4px 0 #10703f}
.btn.push{background:linear-gradient(180deg,#5aa9ff,#2f6fd0);color:#04162e;box-shadow:0 4px 0 #1d4a91}
.btn[disabled]{background:#232f4f;color:#5d6b90;box-shadow:none;cursor:default}
.btn-main{font-size:15px;font-weight:900}
.btn-sub{font-size:11px;opacity:.85;font-weight:700}
.btn .cd{position:absolute;left:0;bottom:0;height:3px;width:0;background:#fff;opacity:.85}
.btn.shake{animation:shake .3s}
@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}

/* ---------- 升级列表 ---------- */
.up-row{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:12px;background:var(--panel2);
  border:1px solid var(--line);margin-bottom:8px;cursor:pointer;transition:transform .06s}
.up-row:active{transform:scale(.99)}
.up-row.afford{border-color:#3f6b4d;background:linear-gradient(90deg,rgba(67,224,141,.12),var(--panel2))}
.up-row.maxed{opacity:.55;cursor:default}
/* 到"本阶段上限"（还能长，只是要先扩张）：虚线金边，和真正的满级区分开 */
.up-row.maxed.stage-cap{opacity:.85;cursor:pointer;border:1px dashed #866c22;
  background:repeating-linear-gradient(45deg,rgba(255,210,74,.05),rgba(255,210,74,.05) 8px,rgba(255,210,74,.10) 8px,rgba(255,210,74,.10) 16px)}
.up-row.maxed.stage-cap .up-cost{color:var(--gold)}
/* 有升级线顶到本阶段上限时，扩张按钮脉冲提示瓶颈 */
.hint-pulse{animation:pulseGlow 1.5s ease-in-out infinite}
@keyframes pulseGlow{0%,100%{box-shadow:0 0 0 0 rgba(255,210,74,.55)}50%{box-shadow:0 0 0 7px rgba(255,210,74,0)}}
/* 自动化"下岗"状态：行变暗，但依然可点（点一下重新上岗） */
.up-row.maxed.off{opacity:.4;cursor:pointer}
/* ---- 自动化"上下岗"状态 ---- */
/* 上岗＝活的：绿色呼吸灯 + 左侧绿边 + 满不透明度（以前这里误用了 .maxed 的 55% 透明，
   结果"正在干活"看起来反而是灰的） */
.chip{display:inline-flex;align-items:center;gap:5px;margin-left:7px;padding:2px 8px;border-radius:20px;
  font-size:9.5px;font-weight:800;letter-spacing:.5px;vertical-align:1px}
.chip.hidden{display:none}
.chip i{width:6px;height:6px;border-radius:50%;display:block}
.chip em{font-style:normal}
.chip.on{background:rgba(67,224,141,.15);color:var(--green);box-shadow:inset 0 0 0 1px rgba(67,224,141,.45)}
.chip.on i{background:#43e08d;box-shadow:0 0 8px #43e08d;animation:blip 1.8s ease-in-out infinite}
.chip.off{background:rgba(255,255,255,.05);color:var(--muted);box-shadow:inset 0 0 0 1px #2a3350}
.chip.off i{background:#5a6a8a}
@keyframes blip{0%,100%{opacity:1}50%{opacity:.28}}
.up-row.auto-on{opacity:1;cursor:pointer;border-color:#2f7d55;
  background:linear-gradient(90deg,rgba(67,224,141,.13),var(--panel2) 58%)}
.up-row.auto-off{opacity:.5;cursor:pointer}
.up-row.auto-off .up-icon{filter:grayscale(1)}
.up-row.auto-off .up-desc{color:#5f6d92}
.auto-act{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;
  border-radius:50%;font-size:11px;line-height:1}
.up-row.auto-on .auto-act{background:rgba(67,224,141,.16);color:var(--green)}
.up-row.auto-off .auto-act{background:rgba(255,255,255,.07);color:var(--muted)}
.up-icon{font-size:20px;flex:0 0 32px;width:32px;text-align:center;overflow:hidden;white-space:nowrap}
/* 注：图标格子必须固定宽度 + 裁切。之前只写了 width:32px，遇到"组合 emoji 散成两个图案"时
   （例如 🧑‍💼 在不支持 ZWJ 的字体下会渲染成人和公文包两个 glyph）就会溢出压到右边文字上 */
.up-mid{flex:1;min-width:0;overflow:hidden}
.up-name{font-size:13px;font-weight:800}
.up-name .lv{font-size:10px;color:var(--gold);margin-left:6px}
.up-desc{font-size:10px;color:var(--muted);margin-top:2px}
.up-cost{font-size:13px;font-weight:900;color:var(--muted);text-align:right;white-space:nowrap}
.up-row.afford .up-cost{color:var(--gold)}
.up-cost small{display:block;font-size:9px;font-weight:600;color:var(--muted)}

/* ---------- 广告位 ---------- */
.ad-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.ad-btn{background:var(--panel2);border:1px dashed #3a4a75;border-radius:12px;padding:9px;cursor:pointer;
  text-align:left;color:var(--text);font-family:inherit;position:relative;min-width:0;overflow:hidden}
.ad-btn:active{transform:scale(.98)}
.ad-btn[disabled]{opacity:.45;cursor:default}
.ad-btn .ad-icon{font-size:16px}
.ad-btn .ad-name{font-size:12px;font-weight:800;margin-top:2px}
.ad-btn .ad-sub{font-size:10px;color:var(--muted);margin-top:2px;line-height:1.35}
.ad-btn .ad-tag{position:absolute;right:6px;top:6px;font-size:9px;background:var(--gold);color:#2a1c00;
  border-radius:6px;padding:1px 5px;font-weight:900}
.ad-btn.on .ad-tag{background:var(--green)}

/* ---------- 数据 ---------- */
.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;font-size:11px;color:var(--muted)}
.stat-grid div{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:7px 9px;min-width:0;overflow:hidden}
.stat-grid b{display:block;color:var(--text);font-size:13px;margin-top:2px}
.stat-actions{display:flex;gap:8px;margin-top:10px}
.mini-btn{flex:1;background:var(--panel2);border:1px solid var(--line);color:var(--text);border-radius:10px;
  padding:8px;font-size:12px;font-weight:700;cursor:pointer;font-family:inherit}
.mini-btn.danger{color:var(--red);border-color:#5a2b2b}
.footer-note{text-align:center;font-size:10px;color:#4d5b7d;padding:4px 0 10px;line-height:1.5}

/* ---------- 跳字 / 提示 ---------- */
#floatLayer{position:fixed;inset:0;pointer-events:none;z-index:60;overflow:hidden}
.float{position:absolute;font-weight:900;font-size:19px;color:var(--gold);white-space:nowrap;
  text-shadow:0 2px 10px rgba(0,0,0,.85);animation:floatUp 1.15s cubic-bezier(.2,.7,.3,1) forwards}
.float.big{font-size:27px;color:var(--gold)}
.float.push{color:var(--blue)}
.float.stock{color:#8ef0b8}
.float.bad{color:var(--red)}
@keyframes floatUp{0%{opacity:0;transform:translate(-50%,10px) scale(.7)}
  18%{opacity:1;transform:translate(-50%,-6px) scale(1.18)}
  60%{transform:translate(-50%,-34px) scale(1)}
  100%{opacity:0;transform:translate(-50%,-78px) scale(.95)}}
#toasts{position:fixed;top:72px;left:0;right:0;z-index:105;display:flex;flex-direction:column;align-items:center;gap:6px;pointer-events:none}
.toast{background:var(--toast-bg,rgba(20,30,56,.96));border:1px solid var(--line);border-radius:20px;padding:7px 14px;font-size:12px;
  font-weight:700;box-shadow:var(--shadow);animation:toastIn .25s ease-out;max-width:92%}
.toast.gold{border-color:#7a6220;color:var(--gold)}
.toast.green{border-color:#2c6b48;color:var(--green)}
.toast.red{border-color:#6b2c2c;color:var(--red)}
.toast.out{animation:toastOut .3s forwards}
@keyframes toastIn{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}
@keyframes toastOut{to{opacity:0;transform:translateY(-10px)}}

/* ---------- 弹窗 ---------- */
#modalRoot{position:fixed;inset:0;z-index:100;display:none;align-items:center;justify-content:center;
  background:rgba(3,6,14,.78);padding:20px;backdrop-filter:blur(3px)}
#modalRoot.show{display:flex}
.modal{width:100%;max-width:360px;background:linear-gradient(180deg,var(--panel2),var(--panel3));border:1px solid var(--line);
  border-radius:18px;padding:18px;box-shadow:0 20px 60px rgba(0,0,0,.7);animation:modalIn .22s ease-out}
@keyframes modalIn{from{opacity:0;transform:scale(.92) translateY(10px)}to{opacity:1;transform:none}}
.modal h2{margin:0 0 6px;font-size:18px;display:flex;align-items:center;gap:8px}
.modal .modal-sub{font-size:12px;color:var(--muted);line-height:1.6;margin-bottom:12px}
.modal .big-num{font-size:30px;font-weight:900;color:var(--gold);text-align:center;margin:10px 0;text-shadow:0 0 24px rgba(255,210,74,.35)}
.modal .rows{font-size:12px;color:var(--muted);line-height:1.8;margin-bottom:12px}
.modal .rows b{color:var(--text)}
.modal-btns{display:flex;gap:8px}
.modal-btns button{flex:1;border:0;border-radius:12px;padding:12px;font-size:13px;font-weight:800;cursor:pointer;font-family:inherit}
.mb-primary{background:linear-gradient(180deg,#ffd24a,#f5a623);color:#2a1c00;box-shadow:0 4px 0 #a86c00}
.mb-ad{background:linear-gradient(180deg,#43e08d,#1e9c5c);color:#04220f;box-shadow:0 4px 0 #10703f}
.mb-ghost{background:var(--panel2);color:var(--text);border:1px solid var(--line) !important}
.celebrate{text-align:center}
.celebrate .ce-icon{font-size:56px;animation:pulse .9s infinite}

/* ---------- 新手引导提示行 ---------- */
.hint-bar{margin:0 14px;padding:9px 12px;border-radius:12px;font-size:12px;line-height:1.5;color:var(--gold);
  background:linear-gradient(90deg,rgba(255,210,74,.16),rgba(255,210,74,.03));border:1px dashed #866c22}
.hint-bar b{color:var(--gold)}
/* 引导脉冲：告诉玩家"现在点这里" */
@keyframes guidePulse{0%,100%{box-shadow:0 0 0 0 rgba(255,210,74,.75)}55%{box-shadow:0 0 0 9px rgba(255,210,74,0)}}
.guide{animation:guidePulse 1.35s infinite;border-radius:14px}

/* ---------- V2.11 情报带（压缩后常驻核心区）---------- */
.card.intel.compact{padding:9px 12px;margin-bottom:9px}
.ip-top{display:flex;align-items:center;gap:7px;margin-bottom:5px}
.ip-top .ip-title{font-size:11px;color:var(--muted);white-space:nowrap}
.ip-top #intelPct{font-size:13px;font-weight:900;color:var(--gold);min-width:34px}
.ip-top .en-label{font-size:10px;color:var(--muted);margin-left:auto}
.ip-top .energy-bar{width:76px;flex:0 0 76px}
.ip-top .en-val{font-size:10.5px;font-weight:800;color:var(--blue);min-width:44px;text-align:right}
.card.intel.compact .ip-bar{margin:0 0 6px}
.card.intel.compact .ip-range{font-size:10.5px;margin-bottom:0}
.card.intel.compact .energy-buy{margin-top:7px;padding:7px;font-size:11px}
/* 弹层里的锁形按钮保持原样，核心区的瘦一点 */
.data-lock.slim{margin-top:7px;padding:7px 10px;gap:7px}
.data-lock.slim .dl-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.data-lock.slim .dl-text small{margin-left:1px}
.data-lock.slim .dl-icon{font-size:15px}
.data-lock.slim .dl-text{font-size:10.5px}
.data-lock.slim .dl-text b{font-size:11.5px}

/* ---------------------------------------------------------------- 层级约定
 *  40 底部按钮栏 · 60 跳字 · 88 破产全屏 · 90 收纳弹层 · 92 特效层 · 93 成就横幅
 *  95 开始页 · 100 弹窗(modalRoot) · 105 toast · 120 启动自检红框
 *  规则：弹窗与 toast 必须永远在最上层 —— 弹层里点广告、买完东西弹提示都靠它
 * -------------------------------------------------------------------------*/
/* ---------- V2.11 底部按钮栏 + 收纳弹层（手机一屏只看核心区）---------- */
.bottom-bar{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;gap:4px;
  padding:7px 8px calc(7px + env(safe-area-inset-bottom));
  background:rgba(10,16,32,.97);border-top:1px solid var(--line);
  max-width:440px;margin:0 auto;box-sizing:border-box;   /* V2.36 与 #app 同宽，避免两边留缝/"歪掉" */
  max-width:440px;box-sizing:border-box;margin:0 auto;box-shadow:0 -8px 24px rgba(0,0,0,.45)}
.bar-btn{flex:1;position:relative;display:flex;flex-direction:column;align-items:center;gap:3px;
  padding:6px 2px 5px;border:0;border-radius:12px;background:transparent;font-family:inherit;
  color:var(--muted);cursor:pointer;-webkit-appearance:none;appearance:none}
.bar-btn:active{transform:scale(.95);background:rgba(255,255,255,.05)}
.bar-btn .bb-icon{font-size:17px;line-height:1}
.bar-btn .bb-name{font-size:10px;font-weight:800;letter-spacing:1px}
.bb-dot{position:absolute;top:0;left:calc(50% + 6px);min-width:15px;height:15px;padding:0 3px;border-radius:9px;
  background:#ff4d6d;color:#fff;font-size:9px;font-weight:900;font-style:normal;line-height:15px;text-align:center}
.bb-dot.hidden{display:none}
#main{padding-bottom:78px}
/* 次级板块默认收起；被搬进弹层时才显示 */
.card.collapsed{display:none}
.sheet-anchor{display:none}
.card.in-sheet{display:block;margin:0 0 10px;background:transparent;border:0;padding:0}
.card.in-sheet h3{display:none}   /* 弹层顶部已经有标题了，卡片自己的 h3 会重复 */
/* 上滑弹层 */
.sheet-root{position:fixed;inset:0;z-index:90;display:flex;align-items:flex-end;justify-content:center}
.sheet-root.hidden{display:none}
.sheet-mask{position:absolute;inset:0;background:rgba(4,7,16,.64)}
.sheet{position:relative;width:100%;max-width:430px;max-height:82vh;display:flex;flex-direction:column;
  background:linear-gradient(180deg,#141d35,#0b1322);border-top:1px solid #2a3350;border-radius:18px 18px 0 0;
  box-shadow:0 -14px 40px rgba(0,0,0,.62);animation:sheetUp .22s ease-out}
@keyframes sheetUp{from{transform:translateY(26px);opacity:.35}to{transform:none;opacity:1}}
.sheet-head{display:flex;align-items:center;justify-content:space-between;padding:13px 15px 9px;border-bottom:1px solid var(--line)}
.sheet-head b{font-size:14px;letter-spacing:1px}
.sheet-close{width:29px;height:29px;border:0;border-radius:50%;background:rgba(255,255,255,.07);
  color:var(--muted);font-size:13px;cursor:pointer;font-family:inherit}
.sheet-body{padding:12px 14px calc(20px + env(safe-area-inset-bottom));overflow-y:auto;-webkit-overflow-scrolling:touch}
/* ---------- 启动自检提示（V2.10）---------- */
.boot-status{margin-top:12px;font-size:10px;color:#5f6d92;line-height:1.6;word-break:break-all}
.boot-status.ok{color:#6fd39b}
.boot-status.bad{color:#ff8f8f}
.boot-box{position:fixed;left:12px;right:12px;bottom:12px;z-index:120;padding:12px 14px;border-radius:12px;
  background:rgba(120,22,32,.97);border:1px solid #ff6b6b;color:#ffdada;font-size:12px;line-height:1.75;
  box-shadow:0 10px 30px rgba(0,0,0,.6)}
.boot-box.hidden{display:none}
.boot-box b{color:#fff}

/* ---------- V2.10 成就系统 ---------- */
.icon-btn{position:relative}
.icon-btn .badge{position:absolute;top:-4px;right:-4px;min-width:15px;height:15px;padding:0 3px;border-radius:9px;
  background:#ff4d6d;color:#fff;font-size:9.5px;font-weight:900;font-style:normal;line-height:15px;text-align:center;
  box-shadow:0 0 0 2px var(--bg)}
.icon-btn .badge.hidden{display:none}
/* 解锁横幅：从顶部滑入，2.6 秒后淡出 */
.ach-banner{position:fixed;left:50%;top:14px;transform:translate(-50%,-120%);z-index:93;
  display:flex;align-items:center;gap:10px;padding:10px 16px;border-radius:14px;max-width:88vw;
  background:linear-gradient(180deg,rgba(255,210,74,.16),rgba(20,28,48,.96));
  border:1px solid #866c22;box-shadow:0 10px 30px rgba(0,0,0,.5);
  animation:achIn .42s cubic-bezier(.2,1.4,.4,1) forwards}
.ach-banner.out{animation:achOut .6s ease-in forwards}
.ach-banner.secret{border-color:#7b5cff;background:linear-gradient(180deg,rgba(123,92,255,.18),rgba(20,28,48,.96))}
.ach-banner .ab-icon{font-size:24px;line-height:1}
.ach-banner .ab-mid{display:flex;flex-direction:column;gap:1px}
.ach-banner .ab-mid b{font-size:13px;color:var(--gold)}
.ach-banner .ab-mid small{font-size:10px;color:var(--muted)}
@keyframes achIn{to{transform:translate(-50%,0)}}
@keyframes achOut{to{transform:translate(-50%,-120%);opacity:0}}
/* 成就面板 */
.ach-count{font-size:12px;color:var(--gold);margin-left:6px;font-weight:800}
.ach-bonus{font-size:11px;color:var(--blue);background:rgba(90,169,255,.09);border:1px solid #2b4a7d;
  border-radius:10px;padding:8px 11px;margin:8px 0 4px;line-height:1.7}
.ach-bonus b{color:var(--gold)}
.ach-scroll{max-height:46vh;overflow-y:auto;margin-top:6px;padding-bottom:10px;-webkit-overflow-scrolling:touch;
  /* 底部渐隐：提示"下面还有"，避免列表被按钮硬切 */
  -webkit-mask-image:linear-gradient(180deg,#000 0,#000 calc(100% - 26px),transparent 100%);
  mask-image:linear-gradient(180deg,#000 0,#000 calc(100% - 26px),transparent 100%)}
.ach-cat{font-size:11.5px;font-weight:900;color:var(--muted);margin:12px 0 6px;letter-spacing:1px}
.ach-cat small{font-weight:600;color:#5f6d92;margin-left:6px;letter-spacing:0}
.ach-row{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:11px;margin-bottom:6px;
  background:var(--panel2);border:1px solid #1e2740}
.ach-row.got{border-color:#3f6b4d;background:linear-gradient(90deg,rgba(67,224,141,.10),var(--panel2) 60%)}
.ach-row.locked{opacity:.5}
.ach-row.secret{border-style:dashed;border-color:#3a3560}
.ach-row .ar-icon{font-size:19px;width:24px;text-align:center;flex:0 0 24px}
.ach-row.locked .ar-icon{filter:grayscale(1)}
.ach-row .ar-mid{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}
.ach-row .ar-mid b{font-size:12.5px;color:#e8eeff}
.ach-row.got .ar-mid b{color:var(--green)}
.ach-row .ar-mid small{font-size:10px;color:#8b98b8;line-height:1.5}
.ach-row .ar-mid em{font-style:normal;font-size:9.5px;color:var(--gold)}
.ach-row .ar-time{font-size:9.5px;color:#5f6d92;white-space:nowrap}
/* 深空皮肤（成就【富可敌国】） */
.skin-deep{background:radial-gradient(120% 70% at 50% 0%,#1b1140 0%,#0a0f22 45%,#05060e 100%)}
.skin-deep .card{box-shadow:0 0 0 1px rgba(180,140,255,.08)}
/* ---------- V2.5 开始页（每次载入都显示）---------- */
.start-screen{position:fixed;inset:0;z-index:95;display:flex;align-items:center;justify-content:center;padding:24px 20px;
  overflow-y:auto;background:radial-gradient(120% 80% at 50% 0%,#16264a 0%,#0a1122 45%,#05070d 100%)}
.start-screen.hidden{display:none}
.ss-inner{width:100%;max-width:360px;text-align:center;animation:modalIn .35s ease-out}
.ss-badge{display:inline-block;font-size:10px;color:var(--muted);border:1px solid #2a3350;border-radius:20px;padding:3px 10px;margin-bottom:14px}
.ss-title{margin:0;font-size:34px;line-height:1.25;letter-spacing:2px;font-weight:900;color:#fff;
  text-shadow:0 4px 30px rgba(90,169,255,.35)}
.ss-title span{background:linear-gradient(90deg,#ffd24a,#ff9f43);-webkit-background-clip:text;background-clip:text;color:transparent}
.ss-road{font-size:11px;color:var(--muted);margin:12px 0 18px;line-height:1.7}
.ss-save{font-size:11.5px;color:var(--blue);background:rgba(90,169,255,.1);border:1px solid #2b4a7d;border-radius:12px;
  padding:9px 12px;margin-bottom:14px;line-height:1.7}
.ss-save b{color:var(--gold)}
.ss-start{width:100%;border:0;border-radius:18px;padding:17px;cursor:pointer;font-family:inherit;
  font-size:18px;font-weight:900;letter-spacing:3px;
  background:linear-gradient(180deg,#ffd24a,#f5a623);color:#2a1c00;box-shadow:0 6px 0 #a86c00;animation:pulse 1.6s infinite}
.ss-start:active{transform:translateY(4px);box-shadow:0 2px 0 #a86c00}
.ss-again{width:100%;margin-top:10px;border:1px solid #2a3350;border-radius:12px;padding:10px;cursor:pointer;
  font-family:inherit;font-size:12px;color:var(--muted);background:transparent}
.ss-again.hidden{display:none}
.ss-rules{margin-top:22px;text-align:left;display:flex;flex-direction:column;gap:8px}
.ss-rules div{font-size:11.5px;color:var(--muted);line-height:1.5;background:rgba(255,255,255,.03);
  border:1px solid #1e2740;border-radius:10px;padding:8px 11px}
.ss-rules b{color:var(--text);margin-right:6px}
.ss-foot{margin-top:18px;font-size:10px;color:#4d5b7d;line-height:1.6}

/* ---------- V2.5 破产打工全屏页 ---------- */
.bk-screen{position:fixed;inset:0;z-index:88;display:flex;align-items:center;justify-content:center;padding:20px;
  background:radial-gradient(120% 90% at 50% 0%,#2a1d12 0%,#0b0d16 55%,#05070d 100%)}
.bk-screen.hidden{display:none}
.bk-inner{width:100%;max-width:360px;text-align:center;animation:modalIn .28s ease-out}
.bk-icon{font-size:52px;line-height:1;filter:drop-shadow(0 6px 18px rgba(0,0,0,.6))}
.bk-title{margin:10px 0 6px;font-size:24px;letter-spacing:6px;color:var(--gold);text-shadow:0 0 24px rgba(255,210,74,.35)}
.bk-sub{font-size:12px;color:var(--muted);line-height:1.6;margin-bottom:16px}
.bk-rows{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}
.bk-row{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);
  background:rgba(255,255,255,.04);border:1px solid #2a3350;border-radius:10px;padding:8px 12px}
.bk-row b{color:var(--gold)}
.bk-bar{height:10px;background:#1b2440;border-radius:6px;overflow:hidden;border:1px solid #2a3350}
.bk-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,#f5a623,#ffd24a);transition:width .12s}
.bk-progress{font-size:13px;color:var(--muted);margin:8px 0 18px;font-weight:700}
.bk-progress span{color:var(--gold);font-size:16px}
.bk-progress em{font-style:normal;margin:0 5px;opacity:.5}
.bk-progress b{color:var(--gold)}
.bk-work{width:100%;border:0;border-radius:22px;padding:22px 12px;cursor:pointer;font-family:inherit;
  display:flex;flex-direction:column;gap:7px;align-items:center;
  background:linear-gradient(180deg,#ffd24a,#e8940a);color:#2a1c00;box-shadow:0 7px 0 #9c5f00;
  transition:transform .05s, box-shadow .05s}
.bk-work:active{transform:translateY(5px);box-shadow:0 2px 0 #9c5f00}
.bk-work .bw-main{font-size:26px;font-weight:900;letter-spacing:4px}
.bk-work .bw-power{font-size:13px;font-weight:800;opacity:.9}
.bk-work .bw-count{font-size:11px;font-weight:700;opacity:.7}
.bk-ad{width:100%;margin-top:12px;border:0;border-radius:16px;padding:14px;cursor:pointer;font-family:inherit;
  font-size:14px;font-weight:900;background:linear-gradient(180deg,#43e08d,#1e9c5c);color:#04220f;box-shadow:0 5px 0 #10703f}
.bk-ad:active{transform:translateY(4px);box-shadow:0 1px 0 #10703f}
.bk-tip{font-size:10.5px;color:#5f6d92;margin-top:12px;line-height:1.6}
.bk-tip2{color:var(--muted)}
.bk-tip2 b{color:var(--gold)}

/* ---------- 特效层：金币雨 / 金币爆裂 ---------- */
#fxLayer{position:fixed;inset:0;pointer-events:none;z-index:92;overflow:hidden}
.coin{position:absolute;top:-46px;font-size:24px;will-change:transform,opacity;animation:coinFall linear forwards}
@keyframes coinFall{
  0%{transform:translateY(-46px) rotate(0deg);opacity:0}
  8%{opacity:1}
  100%{transform:translateY(112vh) rotate(720deg);opacity:.95}}
.spark{position:absolute;font-size:17px;line-height:1;will-change:transform,opacity;animation:sparkFly .72s cubic-bezier(.15,.75,.4,1) forwards}
@keyframes sparkFly{
  0%{transform:translate(-50%,-50%) scale(.35);opacity:1}
  70%{opacity:1}
  100%{transform:translate(calc(-50% + var(--dx)), calc(-50% + var(--dy))) scale(1.15);opacity:0}}

/* ---------- 扩张：屏幕震动 ---------- */
@keyframes quake{
  0%,100%{transform:translate(0,0) rotate(0)}
  8%{transform:translate(-7px,4px) rotate(-.5deg)}
  18%{transform:translate(6px,-5px) rotate(.45deg)}
  30%{transform:translate(-5px,-3px) rotate(-.35deg)}
  45%{transform:translate(5px,4px) rotate(.3deg)}
  62%{transform:translate(-3px,2px) rotate(-.2deg)}
  80%{transform:translate(2px,-2px) rotate(.1deg)}}
#app.quake{animation:quake .78s cubic-bezier(.36,.07,.19,.97)}
/* 扩张瞬间的整屏金色闪光 */
#fxLayer .flash{position:absolute;inset:0;background:radial-gradient(circle at 50% 45%,rgba(255,225,140,.85),rgba(255,180,40,.25) 45%,transparent 72%);
  animation:flashOut .8s ease-out forwards}
@keyframes flashOut{0%{opacity:0}12%{opacity:1}100%{opacity:0}}
/* ============================================================================
 * V2.12 紧凑模式：让核心区在 360×640 的小屏上也一屏装下
 * 实测：改之前各板块合计 750px，而小屏可用高度只有 547px（超出 203px）。
 * 这一整块是"覆盖式"的，集中放在末尾便于微调与回退 —— 不需要翻遍上面的规则。
 * ==========================================================================*/
/* 顶栏：三行压成两行半 */
#topbar{padding:7px 12px 6px}
#topbar .stage-name{font-size:15px}
#topbar .stage-biz{font-size:9.5px;margin-top:1px}
#topbar .cash{font-size:21px}
#topbar .rate{font-size:10.5px}
#topbar .icon-btn{width:27px;height:23px;font-size:12px}
.goal{margin-top:6px}
.goal-bar{height:5px}
.expand-btn{padding:7px 13px;font-size:12.5px}
.rent-chip{margin-top:5px;padding:4px 9px;font-size:10.5px}
/* 提示条：强制一行，超出省略（点开详情没必要，正文已经说清了） */
#hintBar{font-size:10px;padding:6px 10px;margin:8px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 卡片整体收紧 */
#main > .card{margin-bottom:8px}
.card{padding:11px 12px}
/* 商品卡内部 */
.card.market .goods{gap:9px}
.goods-icon{width:40px;height:40px;font-size:25px;border-radius:11px}
.goods-name{font-size:15px}
.stock-bar{height:5px;margin-top:4px}
.traffic-box b{font-size:20px}
.traffic-box small{font-size:9px}
.traffic-box em{font-size:9px}
.price-block{margin-top:9px}
.price-val{font-size:26px}
.price-val small{font-size:11px}
.star-tag{font-size:10.5px;padding:4px 9px}
.slider-wrap{margin-top:8px}
input[type=range]{height:30px}
.scale-row{font-size:9.5px;margin-top:2px}
.metrics{gap:7px;margin-top:8px}
.metric{padding:6px 9px;border-radius:10px}
.metric span{font-size:9.5px}
.metric b{font-size:13px}
.judge{margin-top:8px;padding:6px 9px;font-size:10.5px;border-radius:10px}
.actions.three{margin-top:8px;gap:7px}
.btn{padding:11px 4px;border-radius:13px}
.btn b{font-size:14px}
.btn small{font-size:9px}
/* 情报带 */
.card.intel.compact{padding:8px 11px;margin-bottom:8px}
.ip-top{gap:6px;margin-bottom:4px}
.card.intel.compact .ip-bar{height:5px;margin-bottom:4px}
.card.intel.compact .ip-range{font-size:10px}
.data-lock.slim{margin-top:6px;padding:6px 9px}
/* 底栏 */
.bottom-bar{padding:5px 6px calc(5px + env(safe-area-inset-bottom))}
.bar-btn{padding:5px 2px 4px;gap:2px}
.bar-btn .bb-icon{font-size:15px}
.bar-btn .bb-name{font-size:9.5px}
#main{padding-bottom:66px}
/* ---- 第三轮：结构性合并（挤像素收益递减了，改成并排） ---- */
/* 目标行 + 房租条并排：原来各占一行，共 57px */
.goal{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px}
.goal .goal-bar{flex:1 0 100%}
.goal .goal-row{flex:1 1 auto;min-width:0}
.goal .rent-chip{flex:0 0 auto;margin:0}
/* 情报带：区间文字与"解锁精准市场调研"并排 */
.card.intel.compact{display:flex;flex-wrap:wrap;align-items:center;gap:5px 8px}
.card.intel.compact .ip-top{flex:1 0 100%;margin-bottom:2px}
.card.intel.compact .ip-bar{flex:1 0 100%;margin-bottom:0}
.card.intel.compact .ip-range{flex:1 1 42%;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card.intel.compact .data-lock.slim{flex:1 1 52%;margin:0}
.card.intel.compact .energy-buy{flex:1 0 100%;margin-top:4px}
.card.intel.compact .intel-quote{flex:1 0 100%}
/* ---- 第二轮：按实测的"高度大户"精确压缩 ---- */
/* 顶栏右侧：现金+速率原来占 64px */
#topbar .top-row{align-items:center}
#topbar .top-right .cash{font-size:18px;line-height:1.1}
#topbar .top-right .rate{font-size:9.5px;line-height:1.15;margin-top:1px}
#topbar .stage{padding-top:2px}
/* 房租条 */
.rent-chip{padding:2px 8px;font-size:9.5px;margin-top:4px}
.rent-chip b,.rent-chip span{line-height:1.3}
/* 商品头：成交框原来 64px，比图标还高 */
.market-head{align-items:center}
.traffic-box{padding:5px 8px}
.traffic-box span{font-size:9px;line-height:1.2}
.traffic-box b{font-size:16px;line-height:1.1}
.traffic-box small{font-size:8.5px}
.traffic-box em{font-size:8.5px;line-height:1.2;margin-top:1px}
.goods-info{gap:1px}
.goods-name{line-height:1.2}
/* 价格行 */
.price-head{align-items:center}
.card.market .price-val{font-size:24px;line-height:1.1}
.card.market .price-val small{font-size:10px}
.star-tag{padding:3px 8px;font-size:10px}
/* 客流/利润两块：原来 77px */
.metrics .metric{padding:4px 8px;gap:0}
.metrics .metric span{font-size:9px;line-height:1.25}
.metrics .metric b{font-size:12.5px;line-height:1.3}
/* 判词行 */
.judge{padding:5px 8px;font-size:10px;line-height:1.35}
/* 三个动作按钮：原来 55px */
.actions.three .btn{padding:9px 4px}
.actions.three .btn b{font-size:13px;line-height:1.2}
.actions.three .btn small{font-size:8.5px;line-height:1.2;margin-top:1px}
/* 情报带里的锁形按钮：原来 44px */
.data-lock.slim{padding:5px 8px;margin-top:5px}
.data-lock.slim .dl-icon{font-size:13px}
.data-lock.slim .dl-text{font-size:9.5px;line-height:1.35}
.data-lock.slim .dl-text b{font-size:10.5px}
.data-lock.slim .dl-arrow{font-size:10px}
/* 提示条与底栏再收一点 */
#hintBar{padding:5px 9px;font-size:9.5px}
.bar-btn .bb-icon{font-size:14px}
.bar-btn .bb-name{font-size:9px}
.bottom-bar{padding:4px 6px calc(4px + env(safe-area-inset-bottom))}
#main{padding-bottom:62px}
/* ---- 第四轮：细部收尾（保持字号 ≥9px，不牺牲可读性） ---- */
.traffic-box{padding:4px 7px}
.traffic-box b{font-size:15px}
.metrics .metric{padding:3px 8px}
.metrics{gap:6px;margin-top:7px}
.actions.three{margin-top:7px}
.actions.three .btn{padding:8px 4px}
.judge{padding:4px 8px;margin-top:7px;font-size:9.5px}
.price-block{margin-top:7px}
.slider-wrap{margin-top:6px}
#main > .card{margin-bottom:6px}
.card.market .goods{padding-bottom:0}
.goal{margin-top:5px}
.rent-chip{padding:2px 7px}
.bottom-bar{padding:4px 6px calc(3px + env(safe-area-inset-bottom))}
#main{padding-bottom:58px}
/* ---- V2.12 常驻状态行：行情/加速券/房租三个小胶囊并排 ----
 * 关键：这一行**永远存在、永远单行**（nowrap + overflow hidden），
 * 所以行情来了、加速券生效、欠租变红，都不会把核心区往下挤。
 * 之前的写法是三条独立横幅插在文档流里，行情+加速券同时出现能挤掉 80px。 */
.status-row{display:flex;flex-wrap:nowrap;gap:5px;margin-top:5px;height:21px;overflow:hidden}
.stat-chip{display:inline-flex;align-items:center;gap:4px;flex:0 0 auto;max-width:100%;
  padding:2px 8px;border-radius:20px;font-size:10px;line-height:1.5;white-space:nowrap;overflow:hidden}
.stat-chip b{font-weight:800}
.stat-chip i{font-style:normal;font-weight:800}
.stat-chip.hidden{display:none}
.stat-chip.event{background:rgba(90,169,255,.16);border:1px solid #2b4a7d;color:var(--blue)}
.stat-chip.event .ev-tip{display:none}      /* 提示文案太长 → 点胶囊弹 toast */
.stat-chip.boost{background:rgba(67,224,141,.14);border:1px solid #2f7d55;color:var(--green)}
.stat-chip.rent{background:rgba(255,210,74,.12);border:1px solid #866c22;color:var(--gold)}
.stat-chip.tax{background:rgba(150,120,255,.14);border:1px solid #4a3a7d;color:var(--purple)}
.stat-chip.tax.debt{background:rgba(255,107,107,.18);border-color:#7d3a3a;color:var(--red)}
.stat-chip.rent.debt{background:rgba(255,107,107,.16);border-color:#7d3a3a;color:var(--red)}
.stat-chip .rc-loan{padding:1px 6px;font-size:9.5px;border:0;border-radius:10px;
  background:#ffd24a;color:#2a1c00;font-weight:800;font-family:inherit}
@keyframes epIn{from{transform:translateX(26px) scale(.9);opacity:0}to{transform:none;opacity:1}}
/* ---- V2.12 浮动通知栈：行情 / 对手共用一套"弹出→缩回小方块"的组件 ---- */
.pop-stack{position:fixed;right:9px;z-index:94;display:flex;flex-direction:column;gap:6px;
  align-items:flex-end;pointer-events:none}   /* 栈本身不拦点击，只有卡片拦 */
.stat-pop{pointer-events:auto;position:relative;display:flex;align-items:center;gap:8px;
  padding:7px 10px;border-radius:15px;max-width:212px;cursor:pointer;
  background:linear-gradient(135deg,rgba(90,169,255,.24),rgba(12,20,40,.97));
  border:1px solid #2b4a7d;color:var(--text);box-shadow:0 10px 26px rgba(0,0,0,.52);
  animation:epIn .3s cubic-bezier(.2,1.3,.4,1);
  transition:max-width .26s ease, padding .26s ease, border-radius .26s ease}
.stat-pop.hidden{display:none}
.stat-pop .ep-icon{font-size:20px;line-height:1;flex:0 0 auto}
.stat-pop .ep-text{display:flex;flex-direction:column;gap:1px;min-width:0}
.stat-pop .ep-text b{font-size:11.5px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stat-pop .ep-text small{font-size:9.5px;color:var(--muted);line-height:1.35;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stat-pop .ep-time{font-size:10px;font-weight:900;color:var(--blue);font-style:normal;flex:0 0 auto}
.stat-pop .rv-hold{display:none}
/* ---- V2.12 补齐：对手的红色系 + 缩回小方块形态（上一版写入被截断，漏了这一段） ---- */
.stat-pop.rival{background:linear-gradient(135deg,rgba(255,107,107,.28),rgba(30,12,16,.97));
  border-color:#7d3a3a;color:var(--red)}
.stat-pop.rival .ep-text b{color:var(--red)}
.stat-pop.rival .ep-text small{color:var(--red)}
.stat-pop.rival .ep-text .rv-how{color:var(--red)}
.stat-pop.rival .ep-time{color:var(--red)}
/* 缩回形态：36×36 小方块，只留图标 + 一个呼吸点 */
.stat-pop.mini{max-width:36px;width:36px;height:36px;padding:0;border-radius:13px;
  justify-content:center;gap:0;opacity:.92}
.stat-pop.mini .ep-text,.stat-pop.mini .ep-time{display:none}
.stat-pop.mini .ep-icon{font-size:17px}
.stat-pop.mini::after{content:"";position:absolute;right:5px;bottom:5px;width:5px;height:5px;border-radius:50%;
  background:#8fd0ff;animation:blip 1.6s ease-in-out infinite}
/* ---- V2.13 弹窗不省略：宁可折行，也不藏信息 ---- */
.stat-pop{max-width:min(80vw,320px);align-items:flex-start;padding:8px 11px}
.stat-pop .ep-icon{margin-top:1px}
.stat-pop .ep-text{flex:1 1 auto}
.stat-pop .ep-text b{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.3}
.stat-pop .ep-text small{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.42}
.data-lock.slim .dl-text{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.35}
.data-lock.slim .dl-text small{display:block;margin-left:0}
.card.intel.compact .ip-range{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.4;flex:1 1 46%}
#hintBar{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.45}
.stat-pop.rival.mini::after{background:#ff8f8f}
/* ---- V2.17+ 灰 ⇄ 亮的过渡：条件不满足=纯灰，条件满足=重新亮起原色 ---- */
/* 三个动作按钮：默认带过渡，灰的时候把彩色彻底抽掉（不是"淡一点"，是一眼看出不能用） */
.btn{transition:filter .26s ease,opacity .26s ease,transform .12s ease,box-shadow .26s ease}
.btn.off{filter:grayscale(1) brightness(.58) contrast(.9);opacity:.85;box-shadow:none;cursor:pointer}
.btn.off b,.btn.off small,.btn.off .btn-main{color:var(--muted)}
/* 精力副按钮同理 */
.energy-buy.off{filter:grayscale(1) brightness(.6);opacity:.85}
/* 扩张按钮：钱不够=灰、够了=金色亮起（原来只有静态灰，补上过渡） */
.expand-btn{transition:filter .26s ease,background .26s ease,box-shadow .26s ease,color .26s ease}
.expand-btn:disabled{filter:grayscale(1) brightness(.6)}
/* 升级行：买得起=亮边，买不起=压暗（也是同一套"亮/灰"语言） */
.up-row{transition:border-color .2s ease,background .2s ease,opacity .2s ease}
.up-row:not(.afford):not(.maxed){opacity:.72}

/* ---- V2.14 新手引导（保姆级）---- */
.guide-layer{position:fixed;inset:0;z-index:96;pointer-events:none}   /* 整层不拦点击 */
.guide-layer.hidden{display:none}
.guide-ring{position:absolute;border:2px solid #ffd24a;border-radius:14px;
  box-shadow:0 0 0 3px rgba(255,210,74,.22),0 0 22px rgba(255,210,74,.45);transition:all .2s ease}
.guide-bubble{position:absolute;left:50%;transform:translateX(-50%);width:min(92vw,398px);pointer-events:auto;
  background:linear-gradient(180deg,var(--guide-a,#1b2542),var(--guide-b,#121a30));border:1px solid var(--guide-line,#866c22);border-radius:15px;
  padding:11px 13px;box-shadow:0 14px 34px rgba(0,0,0,.62)}
.gb-head{display:flex;align-items:center;gap:6px;margin-bottom:6px}
.gb-head b{font-size:13px;color:var(--gold)}
.gb-head .gb-icon{font-size:16px}
.gb-step{margin-left:auto;font-size:10px;color:var(--muted);font-style:normal;font-weight:800}
.gb-text{font-size:11.5px;line-height:1.65;color:var(--text)}
.gb-text b{color:var(--gold)}
.gb-actions{display:flex;gap:7px;margin-top:9px}
.gb-skip{flex:1;padding:8px;border:0;border-radius:10px;background:rgba(255,255,255,.07);color:var(--muted);
  font-family:inherit;font-size:11px;font-weight:800;cursor:pointer}
.gb-next{flex:2;padding:8px;border:0;border-radius:10px;background:linear-gradient(180deg,#ffd24a,#f5a623);
  color:#2a1c00;font-family:inherit;font-size:12px;font-weight:900;cursor:pointer}
.gb-next.hidden{display:none}

/* ============================================================================
 * V2.45 轨道条回退到 V2.42（伪元素版）
 * V2.43 试图把轨道做成"容器背景的多层渐变"，但 位置/尺寸简写（center / 100% 10px）
 * 在部分内核上会让整条 background 声明失效 → 轨道和刻度一起消失。
 * 回到伪元素方案：它简单、兼容性好，而且真机验证过可见。
 * ==========================================================================*/
/* ① 容器背景恢复成"刻度 + 底色"两层（去掉那层轨道） */
.slider-wrap{
  background:repeating-linear-gradient(90deg,var(--neon-dim) 0 1px,rgba(0,0,0,0) 1px 9px),var(--panel2) !important}
html.day .slider-wrap{
  background:repeating-linear-gradient(90deg,rgba(10,132,200,.22) 0 1px,rgba(0,0,0,0) 1px 9px),#f2f7fd !important}
/* ② 伪元素轨道回来（V2.42 的颜色） */
.slider-wrap::before{display:block !important;content:"" !important;position:absolute !important;
  left:0 !important;right:0 !important;top:50% !important;height:10px !important;margin-top:-5px !important;
  border-radius:6px !important;z-index:0 !important;
  background:linear-gradient(90deg,#2b3a63,#3d5488) !important;border:1px solid #3a4a75 !important;
  box-shadow:inset 0 1px 2px rgba(0,0,0,.35) !important}
html.day .slider-wrap::before{
  background:linear-gradient(180deg,#c6d6ea,#dde8f6) !important;border:1px solid rgba(10,132,200,.42) !important;
  box-shadow:inset 0 1px 2px rgba(28,60,110,.16) !important}


/* ============================================================================
 * V2.43 轨道条改为"容器背景的一部分" —— 保证一直显示
 * 之前画在 ::before 伪元素上：容易被别的层影响，看起来像"跟区间带一起出现/消失"。
 * 现在直接作为容器背景的一层（居中 10px 的横条），永远渲染、和别的元素无关。
 * 图层（从下到上）：容器背景(含刻度+轨道) → 区间带 → 滑块
 * ==========================================================================*/
html:not(.day) .slider-wrap,.slider-wrap{
  background:
    repeating-linear-gradient(90deg,var(--neon-dim) 0 1px,rgba(0,0,0,0) 1px 9px),
    linear-gradient(180deg,#2b3a63,#3d5488) center / 100% 10px no-repeat,
    var(--panel2) !important}
html.day .slider-wrap{
  background:
    repeating-linear-gradient(90deg,rgba(10,132,200,.22) 0 1px,rgba(0,0,0,0) 1px 9px),
    linear-gradient(180deg,#c6d6ea,#dde8f6) center / 100% 10px no-repeat,
    #f2f7fd !important}
/* 旧的伪元素轨道退役（避免出现两条） */
.slider-wrap::before{display:none !important}


/* ============================================================================
 * V2.42 白天：滑条轨道条要看得见
 * 白天时轨道用了接近白的 #e7eff9，和容器底色几乎一样 → 看上去"中间没有条"。
 * 换成浅灰蓝（比容器底明显深一档），轨道才立得住。
 * ==========================================================================*/
html.day .slider-wrap::before,body.day .slider-wrap::before{
  background:linear-gradient(180deg,#c6d6ea,#dde8f6) !important;
  border:1px solid rgba(10,132,200,.42) !important;
  box-shadow:inset 0 1px 2px rgba(28,60,110,.16) !important}
/* 夜里的轨道也顺手加一点内阴影，和白天观感一致 */
.slider-wrap::before{box-shadow:inset 0 1px 2px rgba(0,0,0,.35)}


/* ============================================================================
 * V2.41 白天模式：次要文字（--muted）再加深一档
 * 弹窗里的说明文字用的是 --muted，白天是 #63748f —— 白底上仍然偏淡（"帮我改改"）。
 * 这是一处改动、全局见效：所有次要文字（副标题、说明、单位…）都会更清楚。
 * ==========================================================================*/
html.day,body.day{ --muted:#46566f }
/* 弹窗内的说明行再加深一点，并拉开"标签/数值"的对比 */
html.day .modal .rows,body.day .modal .rows{color:#51617c !important}
html.day .modal .rows b,body.day .modal .rows b{color:#0f1b2d !important}
html.day .modal h2,body.day .modal h2{color:#0f1b2d !important}
/* 金色大数字在白底上要更深，否则"县市商铺"会发飘 */
html.day .modal .big-num,body.day .modal .big-num{color:#b0731a !important;text-shadow:none !important}


/* ============================================================================
 * V2.40 白天模式：启动页换浅色
 * 启动页原来是一整块深空渐变（#16264a→#05070d），白天模式下就是一块黑板。
 * ==========================================================================*/
html.day .start-screen{background:radial-gradient(120% 80% at 50% 0%,#ffffff 0%,#eef4fb 55%,#e6eef8 100%) !important}
html.day .ss-badge{border-color:rgba(10,132,200,.30) !important;color:#5d6d8a !important;background:rgba(255,255,255,.7)}
html.day .ss-title{color:#0f1b2d !important;text-shadow:0 4px 24px rgba(10,132,200,.18) !important}
html.day .ss-road{color:#5d6d8a !important}
html.day .ss-save{color:#1a4f86 !important;background:rgba(10,132,200,.08) !important;border-color:rgba(10,132,200,.28) !important}
html.day .ss-save b{color:#8a5a10 !important}
html.day .boot-status{color:#0c7d4b !important}
html.day .sheet-head,body.day .sheet-head{background:#ffffff !important;border-bottom:1px solid #e3ebf6 !important;color:#0f1b2d !important}
html.day .sheet-head b{color:#0f1b2d !important}
html.day .sheet-close{background:rgba(28,60,110,.08) !important;color:#41506a !important}
html.day .sheet-body{background:#ffffff !important}
html.day .sheet-root{background:rgba(40,60,95,.28) !important}
html.day .card.in-sheet{background:#ffffff !important;border-color:#e3ebf6 !important;box-shadow:none !important}
html.day .card.in-sheet h3{box-shadow:inset 2px 0 0 #0a84c8}
html.day .up-row{background:#ffffff !important;border-color:#e6edf7 !important}
html.day .up-row.afford{background:#f7fcff !important;border-color:rgba(10,132,200,.45) !important}

/* V2.35 Toast 跟随主题：原来是深底亮字，白底上是一排"黑药丸" */
html.day{ --toast-bg:rgba(255,255,255,.97) }
html.day .toast{box-shadow:0 6px 18px rgba(28,60,110,.16) !important}
html.day .toast.gold{border-color:rgba(176,115,26,.55) !important;color:#8a5a10 !important}
html.day .toast.green{border-color:rgba(12,125,75,.5) !important;color:#0a6a41 !important}
html.day .toast.red{border-color:rgba(204,59,54,.5) !important;color:#a8312d !important}
html.day .toast.blue{border-color:rgba(10,111,196,.5) !important;color:#0a5a9e !important}

/* ============================================================================
 * V2.34 新手引导跟随主题
 * 引导气泡、光圈原来是写死的深色/亮金，白天模式下是一块黑板。
 * ==========================================================================*/
html.day .guide-bubble{background:linear-gradient(180deg,#ffffff,#f4f8fd) !important;
  border-color:rgba(10,132,200,.42) !important;box-shadow:0 12px 30px rgba(28,60,110,.18) !important}
html.day .gb-head b{color:#a06a12 !important}
html.day .gb-text{color:#1a2334 !important}
html.day .gb-text b{color:#8a5a10 !important}
html.day .gb-step{color:#63748f !important}
html.day .gb-skip{background:rgba(28,60,110,.08) !important;color:#5d6d8a !important}
html.day .gb-next{background:linear-gradient(180deg,#f5c14a,#d99a12) !important;color:#2a1c00 !important}
html.day .guide-ring{border-color:#c8871a !important;
  box-shadow:0 0 0 3px rgba(200,135,26,.18),0 0 22px rgba(200,135,26,.30) !important}


/* ============================================================================
 * V2.33 白天模式全局换色
 * 扫描发现 45 处写死的深色背景（进度条槽 #1b2440、禁用按钮 #232f4f、气泡渐变 …），
 * 白天模式下它们会变成一个个"深色孤岛"。这里统一覆盖成浅色。
 * ==========================================================================*/
/* ① 各种进度条/能量条的"槽"：#1b2440 / #0d1428 → 浅灰蓝 */
html.day .goal-bar,html.day .stock-bar,html.day .ip-bar,html.day .energy-bar,html.day .mini-bar,
html.day .rv-hold{background:#e6edf7 !important;box-shadow:inset 0 1px 2px rgba(28,60,110,.10)}
/* ② 禁用态按钮：#232f4f → 浅灰 */
html.day .expand-btn:disabled,html.day .btn-ask:disabled,html.day .btn.ask[disabled],
html.day .btn.buy[disabled],html.day .btn.push[disabled]{background:#e3e9f3 !important;color:#94a3bb !important}
/* ③ 路人吐槽气泡（就是截图里那个深色胶囊）：#1d2a4d→#16203c 渐变 → 白底浅边 */
html.day .bubble,html.day .passerby,html.day .tip-bubble{
  background:linear-gradient(180deg,#ffffff,#f4f8fd) !important;
  border:1px solid rgba(10,132,200,.28) !important;color:var(--text) !important;
  box-shadow:0 4px 14px rgba(28,60,110,.12) !important}
/* ④ 通用兜底：任何用旧变量/旧写死色做深色底的"小面板"类，统一提亮 */
html.day .judge,html.day .stock-line,html.day .ask-cost,html.day .buy-cost{background:transparent !important}
/* ⑤ 滑条冷却遮罩（原来是深色半透明） */
html.day .slider-cd{background:rgba(230,238,248,.72) !important;color:#41506a !important}

/* 白天：#app 整页底色改成浅色（这是"白天还是深色"的根因） */
html.day{ --app-top:#f7fafe; --app-bot:#edf3fa }
html.day #app{background:linear-gradient(180deg,#f7fafe 0%,#edf3fa 100%) !important}
/* V2.32 白天主题兜底：这两条最关键（页面底色 + 卡片），加 !important 防止被任何规则压住 */
html.day body,body.day{background:#edf3fa !important;color:#0f1b2d !important}
body.day .card,html.day .card{background:#ffffff !important;border-color:#e0e8f4 !important;
  box-shadow:0 4px 14px rgba(28,60,110,.08) !important}
body.day #topbar,html.day #topbar{background:#ffffff !important}
body.day .bottom-bar,html.day .bottom-bar{background:#ffffff !important;border-top-color:#cfe0f0 !important}
/* V2.31 白天主题：变量同时挂在 html.day 上 —— 页面底色由 <html>/<body> 哪个承载都能生效 */
html.day{
  --bg:#edf3fa; --panel:#ffffff; --panel2:#fbfdff; --panel3:#ffffff;
  --line:#e8eefa; --bar:#ffffff; --glow:#ffffff;
  --text:#0f1b2d; --muted:#63748f;
  --gold:#b0731a; --green:#0c7d4b; --red:#cc3b36; --blue:#0a6fc4; --purple:#6d28d9;
  --neon:#0a84c8; --neon-dim:rgba(10,132,200,.22); --warn:#b25e12;
  --band:rgba(186,124,16,.66); --band-edge:rgba(186,124,16,.20);
  --shadow:0 4px 14px rgba(28,60,110,.08);
}
html.day body{background:radial-gradient(120% 80% at 50% 0%,#ffffff 0%,var(--bg) 60%)}
/* 街坊原话气泡：白天把紫调压淡、边框加深，保证正文可读 */
body.day .intel-quote{background:linear-gradient(90deg,rgba(124,58,237,.10),rgba(124,58,237,.02));border-color:rgba(124,58,237,.35)}

/* ============================================================================
 * V2.29 最优区间带（最终版）：圆角光带，在刻度之上、滑块之下
 * 历史：这个元素曾经"怎么都看不见"，根因是 input 的轨道伪元素不透明，把它盖住了。
 * 轨道已强制透明（见上面的统一脚本），所以 z-index:1 现在是可靠的 ——
 * 既不会看不见，也不会压住圆形滑块。
 * ==========================================================================*/
.golden-band{top:5px;bottom:5px;z-index:1;border-radius:10px;pointer-events:none;
  background:linear-gradient(90deg,rgba(255,210,74,0),rgba(255,210,74,.40) 20%,
    rgba(255,216,96,.62) 50%,rgba(255,210,74,.40) 80%,rgba(255,210,74,0));
  box-shadow:inset 0 0 10px rgba(255,220,120,.30)}
body.day .golden-band{
  background:linear-gradient(90deg,rgba(186,124,16,0),rgba(186,124,16,.42) 20%,
    rgba(186,124,16,.64) 50%,rgba(186,124,16,.42) 80%,rgba(186,124,16,0));
  box-shadow:inset 0 0 10px rgba(186,124,16,.22)}


/* ---- V2.28 区间带配色（末尾覆盖，确保两个模式都齐全）---- */
:root{ --band:rgba(255,214,90,.72); --band-edge:rgba(255,210,74,.30); }
body.day{ --band:rgba(186,124,16,.66); --band-edge:rgba(186,124,16,.20); }

/* V2.26 诊断条（?debug）：用来定位"区间带看不见"这类问题 */
.dbg-band{position:fixed;left:6px;right:6px;bottom:60px;z-index:110;padding:5px 8px;border-radius:8px;
  background:rgba(0,0,0,.82);color:#8ef0b8;font-size:9px;line-height:1.4;word-break:break-all;
  border:1px solid rgba(126,230,255,.4)}
.dbg-band.hidden{display:none}
body.day .dbg-band{background:rgba(255,255,255,.94);color:#0c7d4b;border-color:rgba(10,132,200,.4)}

/* ============================================================================
 * V2.25 区间带正确分层：滑块(2) → 区间带(1) → 轨道(0)
 * 之前怎么调都不对，根因是：**原生轨道伪元素本身是不透明的**，
 * 它和滑块同属 input（z-index:2），所以带子放低就被它盖住、放高就压住滑块。
 * 解法：让原生轨道**透明**，轨道改由容器的 ::before 绘制 ——
 * 这样"轨道 / 区间带 / 滑块"就是三个独立的层，可以精确排序。
 * ==========================================================================*/
input[type=range]::-webkit-slider-runnable-track{height:10px;border-radius:6px;background:transparent;border:0}
input[type=range]::-moz-range-track{height:10px;border-radius:6px;background:transparent;border:0}
/* 轨道（第 0 层） */
.slider-wrap::before{content:"";position:absolute;left:0;right:0;top:50%;height:10px;margin-top:-5px;
  border-radius:6px;background:linear-gradient(90deg,#2b3a63,#3d5488);border:1px solid #3a4a75;z-index:0}
body.day .slider-wrap::before{background:linear-gradient(180deg,#e7eff9,#f6fafe);border-color:rgba(10,132,200,.30)}
/* 区间带回到"轨道之上、滑块之下"，并且恢复完整高度 */
.golden-band{top:4px;bottom:4px;z-index:1}

.golden-band{border-left:1px solid rgba(255,210,74,.5);border-right:1px solid rgba(255,210,74,.5)}
/* 白天：区间带的金色加浓（白底上 45% 太淡），刻度也再深一点 */
body.day .golden-band{background:linear-gradient(90deg,rgba(190,130,15,.22),rgba(190,130,15,.60),rgba(190,130,15,.22));
  border-left:1px solid rgba(150,100,10,.85);border-right:1px solid rgba(150,100,10,.85)}
body.day .slider-wrap{box-shadow:inset 0 0 0 1px rgba(10,132,200,.30)}
body.day input[type=range]::-webkit-slider-runnable-track{height:10px;border-radius:6px;background:transparent;border:0}
/* 白天：刻度层同样只画在容器上（input 本体保持透明，否则会盖住区间带） */
body.day .slider-wrap{background:repeating-linear-gradient(90deg,rgba(10,132,200,.48) 0 1px,rgba(0,0,0,0) 1px 9px),#f2f7fd}
/* V2.23 解锁按钮在白天模式的底色（原本是写死的暗金斜纹） */
body.day .data-lock{background:repeating-linear-gradient(45deg,rgba(176,115,26,.07),rgba(176,115,26,.07) 8px,rgba(176,115,26,.13) 8px,rgba(176,115,26,.13) 16px);
  border-color:rgba(176,115,26,.45)}
body.day .data-lock.active{background:repeating-linear-gradient(45deg,rgba(12,125,75,.07),rgba(12,125,75,.07) 8px,rgba(12,125,75,.13) 8px,rgba(12,125,75,.13) 16px);
  border-color:rgba(12,125,75,.45)}

/* ============================================================================
 * V2.22 白天模式 = 纯白科技风
 * 思路：**白色面 + 霓虹线勾勒** —— 纯白下没有底色差可以分层，
 * 所以层次全靠 1px 青线、内高光和极淡阴影来立。
 * ==========================================================================*/
body.day{
  --bg:#edf3fa; --panel:#ffffff; --panel2:#fbfdff; --panel3:#ffffff;   /* 底色带一点青调：和白卡片分层，又和科技线同调 */
  --glow:#ffffff;   /* 白天的"顶光"用纯白，避免页面顶部压着一层深蓝（原来是写死的 #12203f） */

  --line:#e8eefa; --bar:#ffffff;
  --text:#0f1b2d; --muted:#63748f;
  --gold:#b0731a; --green:#0c7d4b; --red:#cc3b36; --blue:#0a6fc4; --purple:#7c3aed;
  --neon:#0a84c8; --neon-dim:rgba(10,132,200,.22);
  --shadow:0 4px 14px rgba(28,60,110,.08);
}
body.day .card{border-color:var(--neon-dim);
  box-shadow:0 4px 14px rgba(28,60,110,.07),inset 0 1px 0 #ffffff}
body.day #topbar{background:#ffffff;border-bottom:1px solid var(--neon-dim)}
body.day .bottom-bar{
  background:linear-gradient(180deg,rgba(10,132,200,.06),rgba(255,255,255,0) 46%),
    repeating-linear-gradient(90deg,rgba(10,132,200,.05) 0 1px,rgba(0,0,0,0) 1px 15px),#ffffff;
  box-shadow:0 -1px 0 var(--neon-dim),0 -10px 24px rgba(28,60,110,.08),inset 0 1px 0 #ffffff}
body.day .bar-btn{background:#ffffff;border-color:var(--neon-dim)}
body.day .bar-btn.on{background:linear-gradient(180deg,rgba(10,132,200,.14),rgba(10,132,200,.03))}
body.day .stat-pop{background:linear-gradient(135deg,rgba(10,132,200,.07),#ffffff);
  box-shadow:0 6px 18px rgba(28,60,110,.13)}
body.day .stat-pop.rival{background:linear-gradient(135deg,rgba(204,59,54,.08),#ffffff)}
body.day .sheet-root{background:rgba(15,27,45,.28)}
body.day .modal{background:#ffffff;border:1px solid var(--neon-dim);box-shadow:0 18px 44px rgba(28,60,110,.18)}
body.day input[type=range]{
  background:linear-gradient(180deg,rgba(28,60,110,.05),rgba(255,255,255,.25)),
    repeating-linear-gradient(90deg,rgba(10,132,200,.16) 0 1px,rgba(0,0,0,0) 1px 9px),#f4f8fd}
body.day .metric,body.day .traffic-box,body.day .price-head{background:#ffffff;box-shadow:inset 0 0 0 1px var(--neon-dim)}
body.day .btn{border-color:rgba(0,0,0,.08)}


/* ============================================================================
 * V2.21 科技风上到全局
 * 原则：所有颜色都走变量（--neon / --panel / --line ...），
 * 所以白天模式自动跟随，不需要再写一套亮色规则。
 * ==========================================================================*/
/* 卡片：青色描边 + 内侧高光 + 更深的投影（像一块发光的舱壁） */
.card{border-color:var(--neon-dim);
  box-shadow:inset 0 1px 0 rgba(150,240,255,.07),0 10px 26px rgba(0,0,0,.42)}
body.day .card{box-shadow:inset 0 1px 0 rgba(255,255,255,.9),0 6px 18px rgba(28,48,88,.10)}
/* 顶栏：底部一条霓虹分隔线（原本是普通描边） */
#topbar{border-bottom:1px solid var(--neon-dim);box-shadow:0 6px 18px rgba(0,0,0,.35)}
body.day #topbar{box-shadow:0 4px 12px rgba(28,48,88,.08)}
/* 卡片标题：左侧一小段霓虹刻度（用内阴影拼，不动伪元素） */
.card h3{padding-left:9px;box-shadow:inset 2px 0 0 var(--neon)}
/* 动作按钮：加一圈科技描边 + 内侧高光 */
.btn{border:1px solid rgba(255,255,255,.14);box-shadow:inset 0 1px 0 rgba(255,255,255,.16),0 4px 12px rgba(0,0,0,.3)}
body.day .btn{border-color:rgba(0,0,0,.10);box-shadow:inset 0 1px 0 rgba(255,255,255,.7),0 3px 10px rgba(28,48,88,.14)}
/* 滑条：轨道做成"分段刻度"，科技仪表感 */
/* 刻度图层必须画在**容器**上：input 有 z-index:2，把不透明底色画在它身上会盖住金色区间带 */
input[type=range]{background:transparent;box-shadow:none}
body.day input[type=range]{box-shadow:inset 0 2px 4px rgba(28,48,88,.10),0 0 0 1px var(--neon-dim);
  background:linear-gradient(180deg,rgba(28,60,110,.04),rgba(255,255,255,.3)),
    repeating-linear-gradient(90deg,rgba(10,132,200,.30) 0 1px,rgba(0,0,0,0) 1px 9px),#f2f7fd}
/* 关键：滑条轨道的伪元素原来是深蓝写死的 —— 白底上就是一条黑杠，还把刻度全盖住了 */
body.day input[type=range]::-webkit-slider-runnable-track{height:10px;border-radius:6px;background:transparent;border:0}
body.day input[type=range]::-moz-range-track{height:10px;border-radius:6px;background:transparent}
body.day input[type=range]::-webkit-slider-thumb{
  background:radial-gradient(circle at 35% 30%,#ffd98a,#f5a623);border:2px solid #ffffff;
  box-shadow:0 2px 8px rgba(160,110,10,.35)}
body.day input[type=range]::-moz-range-thumb{background:#f5a623;border:2px solid #ffffff}
/* 内在小面板（客流/利润、进位成本等）：统一青色内描边 */
.metric,.traffic-box,.price-head,.stock-bar,.ip-bar,.goal-bar{box-shadow:inset 0 0 0 1px var(--neon-dim)}
.stock-bar,.ip-bar,.goal-bar{box-shadow:none}
/* 弹层容器 */
.sheet-root{background:rgba(4,8,16,.62)}
body.day .sheet-root{background:rgba(40,60,95,.30)}
/* 浮动通知卡：科技化描边 */
.stat-pop{border-color:var(--neon-dim);box-shadow:0 10px 26px rgba(0,0,0,.5),inset 0 1px 0 rgba(150,240,255,.10)}
body.day .stat-pop{box-shadow:0 8px 20px rgba(28,48,88,.18)}
/* 升级行 / 广告卡：hover 态的青色边（原本只有金色 afford） */
.up-row.afford{border-color:rgba(126,230,255,.45)}

/* ---- 白天模式再提亮一档（玩家反馈"有些黑的地方可以再白一些"）---- */
body.day{
  --bg:#f4f7fc; --panel:#ffffff; --panel2:#fbfdff; --panel3:#f2f6fc; --line:#e0e8f4;
  --bar:#fbfdff; --neon-dim:rgba(28,134,200,.18);
  --shadow:0 6px 16px rgba(28,48,88,.10);
}
/* 白天：这些组件原来写死了深色，单独提亮 */
body.day .stat-pop{background:linear-gradient(135deg,rgba(28,134,200,.10),#ffffff)}
body.day .stat-pop.rival{background:linear-gradient(135deg,rgba(208,69,63,.12),#ffffff)}
body.day .sheet-body,body.day .sheet-head{background:transparent}
body.day .bottom-bar{background:linear-gradient(180deg,var(--neon-dim),rgba(255,255,255,0) 46%),
  repeating-linear-gradient(90deg,rgba(28,134,200,.06) 0 1px,rgba(0,0,0,0) 1px 15px),linear-gradient(180deg,#fbfdff,#eef3fa)}
body.day .bar-btn{background:linear-gradient(180deg,rgba(28,134,200,.05),rgba(255,255,255,.6))}
body.day .bar-btn .bb-name{color:#4a5c7d}
body.day .bar-btn.on{background:linear-gradient(180deg,rgba(28,134,200,.18),rgba(28,134,200,.04))}
body.day .bar-btn.on .bb-name{color:#0f4f80;text-shadow:none}

/* V2.19 价格条上的区间带：**统一用金色光晕样式**（玩家指定）。
 * 手动打听 vs 广告的差别只体现在**宽度**上（打听出来的区间明显更宽），不再用颜色区分。 */
/* V2.17 变灰但仍可点：禁用按钮会吞掉点击，玩家不知道缺什么 */



/* ============================================================================
 * V2.16 底部导航：科技风（玩家反馈"导航栏不美观"）
 * 思路：深空蓝底 + 青色霓虹描边 + 缓慢扫描光带 + 左上/右上科技角标。
 * 只用老内核也稳的属性（渐变 / box-shadow / border-radius / transform 动画），
 * 刻意不用 clip-path —— 这个项目要兼容没有 Promise 的老 WebView，clip-path 必然失效。
 * ==========================================================================*/
.bottom-bar{
  background:
    linear-gradient(180deg,var(--neon-dim),rgba(90,216,255,0) 46%),
    repeating-linear-gradient(90deg,rgba(90,216,255,.05) 0 1px,rgba(0,0,0,0) 1px 15px),
    linear-gradient(180deg,var(--bar),var(--bg));
  border-top:1px solid var(--neon);
  box-shadow:0 -1px 0 rgba(140,235,255,.14),0 -12px 28px rgba(0,0,0,.6),inset 0 1px 0 rgba(150,240,255,.10)}
/* 顶部霓虹光带（缓慢左右扫动） */
.bottom-bar::before{content:"";position:absolute;left:6%;right:6%;top:-1px;height:2px;border-radius:2px;
  background:linear-gradient(90deg,rgba(90,216,255,0),#7ee6ff,rgba(90,216,255,0));
  animation:barScan 5s ease-in-out infinite}
@keyframes barScan{0%{transform:translateX(-34%);opacity:.15}45%{opacity:.85}100%{transform:translateX(34%);opacity:.15}}
/* 左右上角的科技角标 */
.bottom-bar::after{content:"";position:absolute;left:0;right:0;top:0;height:9px;pointer-events:none;opacity:.55;
  background:
    linear-gradient(#7ee6ff,#7ee6ff) left top/16px 1px no-repeat,
    linear-gradient(#7ee6ff,#7ee6ff) left top/1px 9px no-repeat,
    linear-gradient(#7ee6ff,#7ee6ff) right top/16px 1px no-repeat,
    linear-gradient(#7ee6ff,#7ee6ff) right top/1px 9px no-repeat}
/* 按钮＝玻璃舱体 */
.bar-btn{border:1px solid rgba(90,216,255,.16);border-radius:11px;
  background:linear-gradient(180deg,rgba(90,216,255,.055),rgba(90,216,255,.012));
  box-shadow:inset 0 1px 0 rgba(160,240,255,.06);
  transition:border-color .18s,background .18s,box-shadow .18s,transform .12s}
.bar-btn:active{transform:scale(.96);border-color:rgba(126,230,255,.5);
  background:linear-gradient(180deg,rgba(90,216,255,.18),rgba(90,216,255,.05))}
.bar-btn .bb-icon{filter:drop-shadow(0 0 5px rgba(90,216,255,.4))}
.bar-btn .bb-name{letter-spacing:1.5px;color:var(--muted)}
/* 当前打开的那一栏：霓虹点亮 + 底部光条 */
.bar-btn.on{border-color:rgba(126,230,255,.55);
  background:linear-gradient(180deg,rgba(90,216,255,.20),rgba(90,216,255,.05));
  box-shadow:0 0 15px rgba(90,216,255,.20),inset 0 1px 0 rgba(190,250,255,.18)}
.bar-btn.on .bb-name{color:var(--text);text-shadow:0 0 8px rgba(126,230,255,.55)}
.bar-btn.on .bb-icon{filter:drop-shadow(0 0 8px rgba(126,230,255,.75))}
.bar-btn.on::after{content:"";position:absolute;left:24%;right:24%;bottom:2px;height:2px;border-radius:2px;
  background:linear-gradient(90deg,rgba(126,230,255,0),#7ee6ff,rgba(126,230,255,0));
  box-shadow:0 0 8px rgba(90,216,255,.9)}
/* 角标霓虹化 */
.bb-dot{background:linear-gradient(180deg,#ff6b8a,#e8385c);
  box-shadow:0 0 9px rgba(255,93,122,.75),0 0 0 1.5px rgba(8,14,26,.95)}


/* 升级行右侧的"≈ N 进账"：字号再收一点，保证 360px 屏不撑破右侧列 */
.up-cost small{font-size:8.5px;letter-spacing:-.2px}   /* 和"情报到手"的绿色保持一致（玩家说样式参考那个） */
.ip-range.closed{color:var(--green);font-weight:700}

/* V2.36 底栏：整条铺满（原来只有按钮是白的，底栏本身还是深的 —— 看起来"没盖住底部 / 歪了"）*/
html.day .bottom-bar{background:#ffffff !important;border-top:1px solid #cfe0f0 !important;
  box-shadow:0 -1px 0 #dbe6f4,0 -8px 20px rgba(28,60,110,.08) !important;
  max-width:440px;box-sizing:border-box;margin:0 auto}

/* V2.38 已回退（玩家选择保持"与内容同宽"） */

/* ============================================================================
 * V2.46 轨道条最终版 —— 追加到文件真正末尾
 * 之前所有"末尾覆盖"其实都插在同一个锚点后面，导致新规则排在旧规则**前面**，
 * 旧规则反而生效（这是本轮多个"改了没效果"的根源）。这里直接 append 到文件末尾。
 * ==========================================================================*/
.slider-wrap::before{display:block !important;content:"" !important;position:absolute !important;
  left:0 !important;right:0 !important;top:50% !important;height:10px !important;margin-top:-5px !important;
  border-radius:6px !important;z-index:0 !important;
  background:linear-gradient(90deg,#2b3a63,#3d5488) !important;border:1px solid #3a4a75 !important}
html.day .slider-wrap::before,body.day .slider-wrap::before{
  background:linear-gradient(180deg,#c6d6ea,#dde8f6) !important;border:1px solid rgba(10,132,200,.42) !important}

/* ============================================================================
 * V2.47 滑条轨道条 + 区间带都画在滑条自己的背景里（长写法，不用简写）
 * 伪元素方案在真机上始终不渲染，所以轨道改用"和区间带同一条路"来画。
 * ==========================================================================*/
:root{ --track-a:#2b3a63; --track-b:#3d5488; }
html.day,body.day{ --track-a:#c6d6ea; --track-b:#dde8f6; }
/* 轨道由内联样式画在背景里，CSS 这层保持透明，避免打架 */
input[type=range]{background:transparent}

/* ============================================================================
 * V2.48 轨道条半透明 —— 让刻度透出来
 * 轨道画在滑条背景里（在刻度容器之上），不透明会把刻度全盖住。
 * 降到 ~60-70% 透明：既有"槽"的实体感，又能看见刻度。
 * ==========================================================================*/
:root{ --track-a:rgba(43,58,99,.58); --track-b:rgba(61,84,136,.58) }
html.day,body.day{ --track-a:rgba(170,192,222,.72); --track-b:rgba(200,216,236,.72) }

/* ============================================================================
 * V2.49 只保留一条轨道 —— 关掉伪元素那条
 * V2.46 的伪元素轨道追加到文件末尾后真的生效了，于是和 V2.47 的"背景轨道"叠成两条。
 * 保留背景那条（真机验证可见、且能画区间带），伪元素这条关掉。
 * ==========================================================================*/
.slider-wrap::before{display:none !important;background:none !important;border:0 !important}

/* ============================================================================
 * V2.50 刻度移到输入层（和轨道、区间带同一层），容器只留底色
 * 原因：刻度在容器上、轨道在输入层（更上层），几何上必然被盖住 —— 和透明度无关。
 * ==========================================================================*/
.slider-wrap{background:var(--panel2) !important;box-shadow:inset 0 0 0 1px var(--neon-dim) !important}
html.day .slider-wrap,body.day .slider-wrap{background:#f2f7fd !important;box-shadow:inset 0 0 0 1px var(--neon-dim) !important}

/* ============================================================================
 * V2.51 轨道两端做圆角 —— 包进外面的圆角框里
 * 轨道是滑条的 background，而元素的 background 会被自身的 border-radius 裁切，
 * 所以只要给 input 加圆角，轨道两端就跟着圆了（不用改背景写法）。
 * ==========================================================================*/
input[type=range]{border-radius:9px}
/* 圆角半径比容器（10px）略小 1px，视觉上像"包在里面" */

/* ============================================================================
 * V2.59 广告弹窗排版
 * 原来的倒计时是个裸 div（.ad-player/.count 压根没有样式），数字独占一行、看着像排版事故。
 * 改成圆形倒计时徽章 + 居中说明；关闭按钮压成明确的次要样式。
 * ==========================================================================*/
.ad-player{display:flex;flex-direction:column;align-items:center;gap:9px;padding:14px 8px 4px}
.ad-ring{width:64px;height:64px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(180deg,var(--panel3),var(--panel2));border:2px solid var(--neon-dim);
  box-shadow:inset 0 0 14px rgba(90,216,255,.16)}
.ad-count{font-size:26px;font-weight:900;color:var(--text);line-height:1}
.ad-tip{font-size:12px;color:var(--muted);text-align:center;line-height:1.65}
.ad-tip small{font-size:11px;color:var(--muted);opacity:.85}
html.day .ad-ring,body.day .ad-ring{background:linear-gradient(180deg,#ffffff,#eef4fb);
  border-color:rgba(10,132,200,.35);box-shadow:inset 0 0 14px rgba(10,132,200,.10)}
/* 关闭＝明确的次要动作：透明底 + 灰字 + 细边（原来用 --panel2 + --text，看着像主按钮） */
.mb-ghost{background:transparent !important;color:var(--muted) !important;
  border:1px solid var(--line) !important;font-weight:700 !important}

/* ============================================================================
 * V2.61 状态行允许换行（欠租等长状态不再被裁掉）
 * 原先为了「不挤动核心区」做成强制单行 + overflow:hidden，
 * 结果欠租时「还剩 36s 就破产！+ 金额 + 借钱按钮」放不下，借钱按钮被裁掉。
 * 现在：整行可换行（胶囊换到第二行），单个胶囊内部也允许换行。
 * 代价：欠租这类长状态会让状态行高一行（约 22px）—— 这是玩家明确要的取舍。
 * ==========================================================================*/
.status-row{display:flex;flex-wrap:wrap;align-items:center;gap:5px;margin-top:5px;
  min-height:21px;height:auto;overflow:visible}
.stat-chip{white-space:normal;line-height:1.5;max-width:100%}
.stat-chip.rent{flex-wrap:wrap;row-gap:2px;padding:3px 9px}
.stat-chip.rent .rc-loan{margin-left:2px}
