/* ============================================================
   商海雄心 · 视觉系统
   深色金融终端风：玻璃拟态 / 金色主色 / 青色强调
   ============================================================ */
:root{
  --bg0:#070b16;
  --bg1:#0b1122;
  --bg2:#101a33;
  --panel:rgba(255,255,255,.045);
  --panel-hi:rgba(255,255,255,.08);
  --line:rgba(255,255,255,.09);
  --line-gold:rgba(240,201,106,.35);
  --gold:#f0c96a;
  --gold-soft:#f6dda2;
  --gold-deep:#c99a3f;
  --cyan:#5cd6e8;
  --red:#ff5d6c;
  --green:#3ddc97;
  --blue:#6ea8ff;
  --orange:#ffa45c;
  --purple:#b48cff;
  --text:#e9edf8;
  --dim:#8f9bc0;
  --dim2:#5c6787;
  --ok:#3ddc97;
  --danger:#ff5d6c;
  --radius:14px;
  --shadow:0 18px 50px rgba(0,0,0,.5);
  --font:"PingFang SC","Microsoft YaHei","Segoe UI",system-ui,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:var(--font);
  color:var(--text);
  background:radial-gradient(1200px 800px at 75% -10%,#16223f 0%,transparent 55%),
             radial-gradient(900px 700px at -10% 110%,#12203a 0%,transparent 50%),
             linear-gradient(160deg,var(--bg0),var(--bg1) 55%,var(--bg2));
  overflow:hidden;
}
#bg{position:fixed;inset:0;z-index:0;pointer-events:none}
#app{position:relative;z-index:1;height:100vh;display:flex;flex-direction:column;max-width:1500px;margin:0 auto;padding:12px 16px 0}

/* ---------- 滚动条 ---------- */
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-thumb{background:rgba(255,255,255,.13);border-radius:6px;border:2px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:rgba(240,201,106,.35);background-clip:content-box;border:2px solid transparent}
::-webkit-scrollbar-track{background:transparent}

/* ================= 顶部状态栏 ================= */
#topbar{
  display:flex;align-items:center;gap:14px;
  background:linear-gradient(180deg,rgba(255,255,255,.07),rgba(255,255,255,.03));
  border:1px solid var(--line);border-radius:var(--radius);
  padding:9px 14px;backdrop-filter:blur(12px);
  box-shadow:0 8px 30px rgba(0,0,0,.35);
  flex-wrap:wrap;
}
.logo{display:flex;align-items:center;gap:9px;margin-right:4px}
.logo-mark{
  width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;
  font-size:19px;font-weight:800;color:#1a1306;
  background:linear-gradient(145deg,var(--gold-soft),var(--gold) 45%,var(--gold-deep));
  box-shadow:0 0 18px rgba(240,201,106,.45),inset 0 1px 0 rgba(255,255,255,.6);
}
.logo-text{font-size:17px;font-weight:800;letter-spacing:1px}
.logo-sub{font-size:11px;color:var(--dim);font-weight:400;margin-left:5px}
.stats{display:flex;gap:8px;flex:1;flex-wrap:wrap;align-items:center}
.stat{
  display:flex;align-items:center;gap:6px;padding:6px 10px;border-radius:10px;
  background:rgba(255,255,255,.04);border:1px solid var(--line);min-width:0;
}
.stat.wide{flex:1 1 150px}
.stat-ico{font-size:13px;color:var(--gold)}
.stat-ico.dim{color:var(--dim2)}
.stat-label{font-size:11px;color:var(--dim);white-space:nowrap}
.stat b{font-size:13px;white-space:nowrap}
.stat .bar{flex:1;min-width:52px;height:7px;background:rgba(255,255,255,.08);border-radius:4px;overflow:hidden;position:relative}
.stat .bar .bar-fill{height:100%;border-radius:4px;background:linear-gradient(90deg,#5cd6e8,#6ea8ff);transition:width .4s ease;width:100%}
.stat .bar.gold .bar-fill{background:linear-gradient(90deg,var(--gold-deep),var(--gold))}
#st-money{color:var(--gold)}
#st-net{color:var(--cyan)}
.period-chip{
  font-size:11px;padding:2px 7px;border-radius:20px;background:rgba(92,214,232,.12);
  color:var(--cyan);border:1px solid rgba(92,214,232,.3);white-space:nowrap;
}
.period-chip.night{background:rgba(180,140,255,.14);color:var(--purple);border-color:rgba(180,140,255,.35)}
.period-chip.eve{background:rgba(255,164,92,.13);color:var(--orange);border-color:rgba(255,164,92,.32)}
.stage-name{color:var(--gold-soft)}
.topbtns{display:flex;gap:6px}
.tbtn{
  font-family:inherit;font-size:12px;color:var(--dim);background:rgba(255,255,255,.05);
  border:1px solid var(--line);border-radius:9px;padding:6px 11px;cursor:pointer;transition:.18s;
}
.tbtn:hover{color:var(--gold-soft);border-color:var(--line-gold);background:rgba(240,201,106,.08)}
.tbtn.has-save{color:var(--gold-soft);border-color:var(--line-gold);background:rgba(240,201,106,.12);box-shadow:0 0 10px rgba(240,201,106,.22)}

/* ================= 主体布局 ================= */
#main{flex:1;display:flex;gap:14px;min-height:0;margin-top:12px}
#log-panel{
  flex:1.35;display:flex;flex-direction:column;min-width:0;
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  backdrop-filter:blur(12px);box-shadow:var(--shadow);
}
#side-panel{flex:1;display:flex;flex-direction:column;gap:12px;min-width:300px;max-width:430px;overflow-y:auto;padding-right:2px}
.panel-head{
  display:flex;align-items:baseline;gap:10px;padding:12px 16px 9px;
  border-bottom:1px solid var(--line);
}
.ph-title{font-size:14px;font-weight:700;letter-spacing:1px;color:var(--gold-soft)}
.ph-title::before{content:"";display:inline-block;width:4px;height:13px;background:var(--gold);border-radius:2px;margin-right:9px;vertical-align:-2px}
.ph-sub{font-size:11px;color:var(--dim2)}

/* ---------- 日志 ---------- */
#log{flex:1;overflow-y:auto;padding:10px 16px 26px;display:flex;flex-direction:column;gap:10px}
.entry{
  border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.028);
  padding:10px 13px;animation:entryIn .32s ease both;max-width:98%;
}
.entry.self{align-self:flex-start;border-left:3px solid var(--cyan);background:rgba(92,214,232,.05)}
.entry.sys{align-self:flex-start;border-left:3px solid var(--dim2);background:rgba(255,255,255,.02)}
.entry.good{align-self:flex-start;border-left:3px solid var(--green);background:rgba(61,220,151,.06)}
.entry.bad{align-self:flex-start;border-left:3px solid var(--danger);background:rgba(255,93,108,.06)}
.entry.gold{align-self:center;text-align:center;border:1px solid var(--line-gold);background:linear-gradient(180deg,rgba(240,201,106,.10),rgba(240,201,106,.03));box-shadow:0 0 22px rgba(240,201,106,.12);max-width:86%}
.entry .e-head{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.e-time{font-size:10px;color:var(--dim2);letter-spacing:.5px}
.e-tag{font-size:10px;padding:1px 7px;border-radius:10px;background:rgba(255,255,255,.07);color:var(--dim)}
.e-tag.t-gold{background:rgba(240,201,106,.15);color:var(--gold-soft)}
.e-tag.t-good{background:rgba(61,220,151,.13);color:var(--green)}
.e-tag.t-bad{background:rgba(255,93,108,.13);color:var(--danger)}
.e-tag.t-info{background:rgba(110,168,255,.13);color:var(--blue)}
.e-tag.t-event{background:rgba(180,140,255,.15);color:var(--purple)}
.entry .e-title{font-size:13px;font-weight:700;color:var(--text);line-height:1.5}
.entry.gold .e-title{color:var(--gold-soft)}
.entry .e-body{font-size:12.5px;color:#c6cde2;line-height:1.75;margin-top:3px}
.entry .e-body b{color:var(--text)}
.entry .e-body .gain{color:var(--green);font-weight:700}
.entry .e-body .loss{color:var(--danger);font-weight:700}
.entry .e-body .gold-t{color:var(--gold);font-weight:700}
.e-meta{display:flex;gap:8px;margin-top:7px;font-size:11px;color:var(--dim);border-top:1px dashed rgba(255,255,255,.07);padding-top:6px;flex-wrap:wrap}
.e-meta span b{color:var(--gold-soft)}
.entry.act-log .e-body{color:#b7c0da;font-size:12px}
@keyframes entryIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.typing-caret{display:inline-block;width:2px;height:14px;background:var(--gold);vertical-align:-2px;margin-left:2px;animation:blink .8s step-end infinite}
@keyframes blink{50%{opacity:0}}

/* ---------- 侧栏卡片 ---------- */
.s-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);backdrop-filter:blur(10px);padding:11px 13px}
.s-card-title{font-size:12px;font-weight:700;color:var(--gold-soft);letter-spacing:1px;margin-bottom:9px;display:flex;align-items:center;justify-content:space-between}
.s-card-body{display:flex;flex-direction:column;gap:7px}
.mood{font-size:10px;padding:2px 8px;border-radius:10px;font-weight:400}
.mood.bull{background:rgba(255,93,108,.13);color:var(--red)}
.mood.bear{background:rgba(61,220,151,.13);color:var(--green)}
.mood.flat{background:rgba(255,255,255,.07);color:var(--dim)}
.stage-track{display:flex;gap:4px;align-items:center;margin-bottom:8px;flex-wrap:wrap}
.stage-node{font-size:10.5px;padding:3px 9px;border-radius:20px;border:1px solid var(--line);color:var(--dim2);white-space:nowrap}
.stage-node.on{color:var(--gold-soft);border-color:var(--line-gold);background:rgba(240,201,106,.09);box-shadow:0 0 12px rgba(240,201,106,.15)}
.stage-node.arrow{color:var(--dim2);border:none;padding:0 1px}
.stage-desc{font-size:11.5px;color:var(--dim);line-height:1.6}
.stage-desc b{color:var(--gold-soft)}
.asset-item{
  display:flex;justify-content:space-between;align-items:center;gap:8px;
  border:1px solid var(--line);border-radius:10px;padding:8px 11px;background:rgba(255,255,255,.03);
}
.asset-item .ai-name{font-size:12.5px;font-weight:600}
.asset-item .ai-sub{font-size:10.5px;color:var(--dim);margin-top:2px}
.asset-item .ai-val{font-size:12.5px;color:var(--gold-soft);white-space:nowrap;font-weight:700}
.asset-item .ai-val.neg{color:var(--danger)}
.asset-empty{font-size:11.5px;color:var(--dim2);text-align:center;padding:8px}
/* 侧栏个人资产卡片 */
.pf-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:8px}
.pf-cell{background:rgba(255,255,255,.03);border:1px solid var(--line);border-radius:9px;padding:6px 9px;display:flex;flex-direction:column;gap:2px}
.pf-cell.net{border-color:var(--line-gold);background:rgba(240,201,106,.07)}
.pf-k{font-size:10px;color:var(--dim2)}
.pf-v{font-size:12px;font-weight:700;color:var(--gold-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pf-v.up{color:var(--red)}
.pf-v.down{color:var(--green)}
.pf-sub{display:flex;justify-content:space-between;align-items:center;font-size:11.5px;color:var(--dim);margin:8px 0 5px;font-weight:600}
.pf-stock{display:grid;grid-template-columns:1.4fr .7fr .9fr .9fr .6fr;gap:4px;align-items:center;padding:6px 8px;border-radius:9px;background:rgba(255,255,255,.03);border:1px solid var(--line);margin-bottom:4px;cursor:pointer}
.pf-stock:hover{border-color:rgba(92,214,232,.4)}
.pf-st-name b{font-size:11.5px;font-weight:600}
.pf-st-name .sr-ind{font-size:9px;color:var(--dim2);display:block}
.pf-st-qty{font-size:10px;color:var(--dim)}
.pf-st-mv{font-size:11px;color:var(--gold-soft);font-weight:600;white-space:nowrap}
.pf-st-pnl{font-size:10.5px;font-weight:700;white-space:nowrap}
.pf-st-pnl.up{color:var(--red)}
.pf-st-pnl.down{color:var(--green)}
.pf-st-chg{font-size:10px;font-weight:700;text-align:right}
.pf-st-chg.up{color:var(--red)}
.pf-st-chg.down{color:var(--green)}
.pf-st-chg.flat{color:var(--dim2)}
.mini-btn{font-family:inherit;font-size:11px;color:var(--cyan);background:rgba(92,214,232,.09);border:1px solid rgba(92,214,232,.3);border-radius:7px;padding:3px 9px;cursor:pointer}
.mini-btn:hover{background:rgba(92,214,232,.16)}
.stock-row{display:flex;align-items:center;gap:8px;padding:6px 9px;border-radius:9px;background:rgba(255,255,255,.03);border:1px solid var(--line)}
.stock-row .sn{flex:1;min-width:0}
.stock-row .sn .t{font-size:12px;font-weight:600}
.stock-row .sn .s{font-size:10px;color:var(--dim2)}
.stock-row .px{font-size:12.5px;font-weight:700;font-family:Consolas,monospace}
.stock-row .chg{font-size:10.5px;padding:2px 6px;border-radius:8px;font-weight:700}
.chg.up{color:var(--red);background:rgba(255,93,108,.12)}
.chg.down{color:var(--green);background:rgba(61,220,151,.12)}
.chg.flat{color:var(--dim);background:rgba(255,255,255,.06)}
.contact-row{display:flex;align-items:center;gap:8px;font-size:12px;padding:5px 2px}
.contact-row .c-dot{width:8px;height:8px;border-radius:50%;flex:none}
.contact-row .c-name{flex:1;font-weight:600}
.contact-row .c-val{color:var(--dim);font-size:11px}

/* ================= 行动栏 ================= */
#action-bar{
  margin-top:12px;background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,.03));
  border:1px solid var(--line);border-radius:var(--radius) var(--radius) 0 0;backdrop-filter:blur(14px);
  padding:9px 12px 11px;box-shadow:0 -6px 30px rgba(0,0,0,.3);
}
.ab-inner{display:flex;flex-direction:column;gap:8px}
.ab-tabs{display:flex;gap:5px;flex-wrap:wrap}
.ab-tab{
  font-family:inherit;font-size:11.5px;color:var(--dim);background:transparent;border:1px solid transparent;
  border-radius:8px;padding:4px 11px;cursor:pointer;transition:.15s;
}
.ab-tab:hover{color:var(--text)}
.ab-tab.active{color:var(--gold-soft);background:rgba(240,201,106,.09);border-color:var(--line-gold)}
.actions{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}
.action-btn{
  flex:0 0 auto;min-width:112px;max-width:170px;
  font-family:inherit;font-size:12.5px;font-weight:600;color:var(--text);text-align:left;
  background:linear-gradient(180deg,rgba(255,255,255,.07),rgba(255,255,255,.03));
  border:1px solid var(--line);border-radius:11px;padding:9px 12px;cursor:pointer;position:relative;transition:.18s;
  overflow:hidden;
}
.action-btn::after{
  content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.08) 50%,transparent 60%);
  transform:translateX(-120%);transition:transform .5s;
}
.action-btn:hover{border-color:var(--line-gold);transform:translateY(-2px);box-shadow:0 8px 20px rgba(0,0,0,.35)}
.action-btn:hover::after{transform:translateX(120%)}
.action-btn:active{transform:translateY(0)}
.action-btn .ab-name{display:block;font-size:12.5px;font-weight:700;color:var(--gold-soft)}
.action-btn .ab-desc{display:block;font-size:10px;color:var(--dim);margin-top:3px;line-height:1.5;font-weight:400;white-space:normal}
.action-btn.disabled{opacity:.42;cursor:not-allowed;filter:grayscale(.4)}
.action-btn.disabled:hover{transform:none;box-shadow:none;border-color:var(--line)}
.action-btn.locked::before{content:"🔒";position:absolute;top:6px;right:8px;font-size:11px;opacity:.8}
.action-btn .cost{display:block;font-size:10px;color:var(--cyan);margin-top:3px;font-weight:400}
.action-btn .cost.neg{color:var(--danger)}

/* ================= 模态 ================= */
.modal-mask{
  position:fixed;inset:0;z-index:100;background:rgba(4,7,16,.72);backdrop-filter:blur(6px);
  display:flex;align-items:center;justify-content:center;padding:20px;animation:fadeIn .22s ease;
}
.modal{
  width:min(640px,96vw);max-height:84vh;display:flex;flex-direction:column;
  background:linear-gradient(180deg,#111a33,#0c1226);border:1px solid var(--line-gold);border-radius:16px;
  box-shadow:0 30px 80px rgba(0,0,0,.65),0 0 40px rgba(240,201,106,.08);animation:modalIn .28s cubic-bezier(.2,.9,.3,1.2);
}
.modal.wide{width:min(760px,96vw)}
.modal-head{padding:15px 20px 11px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px}
.modal-head .mh-title{font-size:15px;font-weight:800;color:var(--gold-soft);letter-spacing:1px;flex:1}
.modal-head .mh-tag{font-size:10.5px;color:var(--dim);padding:2px 9px;border-radius:12px;background:rgba(255,255,255,.06)}
.modal-close{
  width:26px;height:26px;border-radius:8px;border:1px solid var(--line);background:rgba(255,255,255,.05);
  color:var(--dim);font-size:14px;cursor:pointer;font-family:inherit;
}
.modal-close:hover{color:var(--danger);border-color:var(--danger)}
.modal-body{padding:16px 20px;overflow-y:auto;line-height:1.8;font-size:13.5px;color:#cdd4ea}
.modal-foot{padding:13px 20px;border-top:1px solid var(--line);display:flex;gap:9px;justify-content:flex-end;flex-wrap:wrap}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes modalIn{from{opacity:0;transform:scale(.94) translateY(16px)}to{opacity:1;transform:none}}

/* 事件选项 */
.option-btn{
  display:block;width:100%;text-align:left;font-family:inherit;font-size:13px;color:var(--text);
  background:rgba(255,255,255,.045);border:1px solid var(--line);border-radius:11px;
  padding:11px 14px;margin-top:9px;cursor:pointer;transition:.16s;line-height:1.6;
}
.option-btn:hover{border-color:var(--line-gold);background:rgba(240,201,106,.07);transform:translateX(3px)}
.option-btn .ob-req{display:block;font-size:10.5px;color:var(--dim2);margin-top:2px}
.option-btn.locked{opacity:.4;cursor:not-allowed}
.option-btn.locked:hover{transform:none;border-color:var(--line);background:rgba(255,255,255,.045)}

/* ================= 股票分析面板 ================= */
.st-tabs{display:flex;gap:6px;border-bottom:1px solid var(--line);margin-bottom:10px}
.st-tab{font-family:inherit;font-size:12.5px;color:var(--dim);background:transparent;border:none;border-bottom:2px solid transparent;padding:7px 14px;cursor:pointer;transition:.15s}
.st-tab:hover{color:var(--text)}
.st-tab.active{color:var(--gold-soft);border-bottom-color:var(--gold)}
.st-chips{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:9px}
.chip{font-family:inherit;font-size:10.5px;color:var(--dim);background:rgba(255,255,255,.05);border:1px solid var(--line);border-radius:14px;padding:3px 10px;cursor:pointer}
.chip:hover{color:var(--text)}
.chip.on{color:var(--gold-soft);border-color:var(--line-gold);background:rgba(240,201,106,.09)}
.stock-tbl{display:flex;flex-direction:column;gap:5px}
.st-row{
  display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:9px;
  background:rgba(255,255,255,.03);border:1px solid var(--line);cursor:pointer;transition:.14s;flex-wrap:wrap;
}
.st-row:hover{border-color:var(--line-gold);background:rgba(240,201,106,.05)}
.sr-name{flex:1.2;min-width:110px}
.sr-name b{font-size:12.5px}
.sr-ind{display:inline-block;font-size:9.5px;color:var(--dim2);background:rgba(255,255,255,.06);border-radius:8px;padding:1px 6px;margin-left:5px;vertical-align:1px}
.sr-vol{font-size:10px;color:var(--dim2);width:44px}
.sr-fin{font-size:11px;color:var(--dim);width:44px;display:flex;align-items:center;gap:4px}
.rate-dot{width:8px;height:8px;border-radius:50%;flex:none}
.rate-good{background:#f0c96a;color:#f0c96a}
.rate-ok{background:#5cd6e8;color:#5cd6e8}
.rate-bad{background:#ffa45c;color:#ffa45c}
.rate-worst{background:#ff5d6c;color:#ff5d6c}
.sr-px{font-size:12.5px;font-weight:700;font-family:Consolas,monospace;min-width:56px;text-align:right}
.sr-px.up{color:var(--red)}
.sr-px.down{color:var(--green)}
.held-summary{
  display:flex;gap:10px;margin-bottom:10px;flex-wrap:wrap;
  border:1px solid var(--line-gold);border-radius:11px;padding:10px 12px;
  background:linear-gradient(180deg,rgba(240,201,106,.08),rgba(240,201,106,.02));
}
.hs-item{flex:1;min-width:110px;display:flex;flex-direction:column;gap:3px}
.hs-item span{font-size:10.5px;color:var(--dim)}
.hs-item b{font-size:15px;font-weight:800;color:var(--gold-soft)}
.hs-item b.up{color:var(--red)}
.hs-item b.down{color:var(--green)}
.sr-chg{font-size:10.5px;padding:2px 6px;border-radius:8px;font-weight:700;min-width:62px;text-align:center;line-height:1.35}
.sr-day{font-size:11px}
.sr-cyc{font-size:10px;opacity:.82}
.sr-chg.chg{background:rgba(255,255,255,.06)}
.sr-ops{display:flex;gap:5px;align-items:center;margin-left:auto}
.sr-hold{font-size:10px;color:var(--dim);margin-right:2px}
.st-pnl{font-size:10.5px;color:var(--dim);text-align:right;margin:-2px 6px 2px 0}
.st-news{display:flex;flex-direction:column;gap:6px}
.st-news-item{font-size:12px;line-height:1.6;padding:7px 10px;border-radius:9px;background:rgba(255,255,255,.03);border:1px solid var(--line);display:flex;align-items:baseline;gap:7px;flex-wrap:wrap}
.n-day{font-size:10px;color:var(--dim2);flex:none}
.n-tag{font-size:10px;padding:1px 7px;border-radius:9px;flex:none;font-weight:700}
.n-tag.n-bull{background:rgba(255,93,108,.13);color:var(--red)}
.n-tag.n-bear{background:rgba(61,220,151,.13);color:var(--green)}
.n-tag.n-rumor{background:rgba(180,140,255,.15);color:var(--purple)}
.n-tag.n-fake{background:rgba(255,164,92,.18);color:var(--orange);animation:blinkFake 1.6s ease-in-out infinite}
.n-tag.n-real{background:rgba(92,214,232,.13);color:var(--cyan)}
.n-tag.n-mid{background:rgba(255,255,255,.08);color:var(--dim)}
@keyframes blinkFake{0%,100%{opacity:1}50%{opacity:.55}}
.n-text{color:#c6cde2;flex:1}
.st-news-item b{font-size:12px}

/* ================= 彩票中心 ================= */
.lot-list{display:flex;flex-direction:column;gap:6px;max-height:260px;overflow-y:auto;padding-right:2px}
.lot-card{border:1px solid var(--line);border-radius:10px;padding:8px 11px;background:rgba(255,255,255,.03)}
.lc-top{display:flex;justify-content:space-between;align-items:center;font-size:11.5px;color:var(--dim);margin-bottom:6px}
.lc-top span:first-child{font-weight:600;color:var(--text)}
.lc-balls{display:flex;gap:3px;flex-wrap:wrap}
.lot-ball{display:inline-flex;width:24px;height:24px;border-radius:50%;align-items:center;justify-content:center;font-size:11px;font-weight:700;margin:1px}
.lot-ball.red{background:linear-gradient(145deg,#ff8490,#e0455a);color:#fff;box-shadow:0 1px 4px rgba(255,93,108,.4)}
.lot-ball.blue{background:linear-gradient(145deg,#7ce3f2,#2f9db8);color:#06222b;box-shadow:0 1px 4px rgba(92,214,232,.4)}
.lot-status{font-size:10.5px;padding:1px 8px;border-radius:10px}
.lot-status.pending{background:rgba(255,164,92,.14);color:var(--orange)}
.lot-status.won{background:rgba(61,220,151,.14);color:var(--green);font-weight:700}
.lot-status{background:rgba(255,255,255,.07);color:var(--dim)}
.scratch-result{
  text-align:center;padding:16px 10px;border-radius:12px;margin:10px 0 4px;
  border:1px solid var(--line);animation:entryIn .3s ease both;
}
.scratch-result.hit{background:radial-gradient(circle at 50% 0%,rgba(240,201,106,.18),rgba(240,201,106,.04));border-color:var(--line-gold);box-shadow:0 0 26px rgba(240,201,106,.2)}
.scratch-result.miss{background:rgba(255,255,255,.02)}
.sr-big{font-size:30px;font-weight:900;letter-spacing:2px;background:linear-gradient(90deg,var(--gold-deep),var(--gold-soft),var(--gold-deep));-webkit-background-clip:text;background-clip:text;color:transparent}
.scratch-result.miss .sr-big{color:var(--dim2);background:none;-webkit-background-clip:initial;background-clip:initial}
.sr-sub{font-size:12px;color:var(--dim);margin-top:5px}

/* ================= 摊位多品类库存 ================= */
.stall-item{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  border:1px solid var(--line);border-radius:9px;padding:7px 10px;background:rgba(255,255,255,.03);margin-bottom:6px;flex-wrap:wrap;
}
.si-info{display:flex;flex-direction:column;gap:2px}
.si-info b{font-size:12.5px}
.si-stock{font-size:10.5px;color:var(--dim)}
.si-ctrl{display:flex;gap:5px;align-items:center}
.si-price{width:62px!important}

/* ================= 商战排行榜 ================= */
.rank-chip{font-size:10px;padding:2px 8px;border-radius:10px;font-weight:400}
.rank-chip.top{background:rgba(255,93,108,.14);color:var(--red)}
.rank-chip.mid{background:rgba(255,164,92,.14);color:var(--orange)}
.rank-chip.low{background:rgba(61,220,151,.14);color:var(--green)}
.rival-row{display:flex;align-items:center;gap:7px;font-size:12px;padding:5px 8px;border-radius:8px;background:rgba(255,255,255,.03)}
.rival-row.player{border:1px solid var(--line-gold);background:rgba(240,201,106,.08)}
.r-medal{width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:800;flex:none}
.r-medal.m1{background:linear-gradient(145deg,#ffd76a,#e0a020);color:#3a2a00}
.r-medal.m2{background:linear-gradient(145deg,#d8e2ef,#9fb2c8);color:#1c2430}
.r-medal.m3{background:linear-gradient(145deg,#e8b48a,#b06a38);color:#3a1d06}
.r-medal.mx{background:rgba(255,255,255,.1);color:var(--dim)}
.r-name{flex:1;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.r-net{font-size:11px;color:var(--gold-soft);font-family:Consolas,monospace}
.rival-ellipsis{text-align:center;color:var(--dim2);font-size:10px;padding:2px}
.rank-list{display:flex;flex-direction:column;gap:6px}
.rank-row{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:10px;background:rgba(255,255,255,.03);border:1px solid var(--line)}
.rank-row.player{border-color:var(--line-gold);background:rgba(240,201,106,.07)}
.rank-row.r1{border-color:var(--line-gold);background:linear-gradient(180deg,rgba(240,201,106,.12),rgba(240,201,106,.03))}
.rk-num{width:26px;height:26px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:800;background:rgba(255,255,255,.07);color:var(--gold-soft);flex:none}
.rank-row.r1 .rk-num{background:linear-gradient(145deg,var(--gold-soft),var(--gold-deep));color:#1a1306}
.rk-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.rk-info b{font-size:13px}
.rk-sub{font-size:10.5px;color:var(--dim2)}
.rk-desc{font-size:10px;color:var(--dim);margin-top:1px}
.rk-net{font-size:12.5px;font-weight:700;color:var(--gold-soft);font-family:Consolas,monospace;white-space:nowrap}

/* ================= 地区情报 ================= */
.region-card{border:1px solid var(--line);border-radius:11px;padding:10px 13px;margin-bottom:9px;background:rgba(255,255,255,.03)}
.rc-head{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.rc-head b{font-size:13.5px;color:var(--gold-soft)}
.rc-income{font-size:10.5px;font-weight:700}
.rc-desc{font-size:11.5px;color:var(--dim);line-height:1.6}
.rc-stats{display:flex;gap:14px;font-size:11px;color:var(--dim);margin:5px 0}
.rc-line{font-size:11.5px;color:var(--dim);line-height:1.7}
.rc-line b{font-size:11px}
.rc-infl{margin-top:6px;font-size:12px;display:flex;align-items:center;gap:10px;border-top:1px dashed rgba(255,255,255,.08);padding-top:6px}
.rc-infl b.up{color:var(--red)}
.rc-infl b.down{color:var(--green)}
.rc-factor{margin-left:auto;font-size:11px;color:var(--dim)}

/* ================= 商海晨报 ================= */
.report-sum{display:flex;gap:18px;font-size:13px;margin-bottom:7px}
.report-sum b{font-size:15px;font-weight:800;color:var(--gold-soft)}
.report-sum b.up{color:var(--red)}
.report-sum b.down{color:var(--green)}
.rep-row{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12.5px;padding:6px 9px;border-radius:8px;background:rgba(255,255,255,.03);margin-bottom:4px;flex-wrap:wrap}
.rep-row span:first-child{font-weight:600}
.rep-row .up{color:var(--red);font-weight:700}
.rep-row .down{color:var(--green);font-weight:700}
.rep-region{font-style:normal;font-size:10px;color:var(--dim2);margin-left:6px}
.report-rank{font-size:14px;padding:8px 10px;border-radius:9px;background:rgba(240,201,106,.07);border:1px solid var(--line-gold)}
.report-rank b{font-size:16px}

/* ================= 科技树 ================= */
.tech-track{display:flex;gap:5px;align-items:center;margin-bottom:2px}
.tech-node{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;background:rgba(255,255,255,.06);color:var(--dim);border:1px solid var(--line)}
.tech-node.done{background:rgba(92,214,232,.16);color:var(--cyan);border-color:rgba(92,214,232,.4)}
.tech-node.cur{background:rgba(240,201,106,.16);color:var(--gold-soft);border-color:var(--line-gold);box-shadow:0 0 10px rgba(240,201,106,.25)}
.crisis-box{border:1px solid rgba(255,93,108,.4);border-radius:10px;padding:9px 12px;margin-top:8px;background:rgba(255,93,108,.06);display:flex;flex-direction:column;gap:4px}

/* 通用表单 */
.row{display:flex;gap:8px;align-items:center;margin-bottom:9px;flex-wrap:wrap}
.row label{font-size:12px;color:var(--dim);min-width:70px}
.row .grow{flex:1}
select,input[type=number]{
  font-family:inherit;font-size:13px;color:var(--text);background:rgba(255,255,255,.06);
  border:1px solid var(--line);border-radius:8px;padding:7px 10px;outline:none;
}
select{
  appearance:none;-webkit-appearance:none;-moz-appearance:none;
  background-image:linear-gradient(45deg,transparent 50%,var(--dim) 50%),linear-gradient(135deg,var(--dim) 50%,transparent 50%);
  background-position:calc(100% - 14px) 50%,calc(100% - 9px) 50%;
  background-size:5px 5px,5px 5px;
  background-repeat:no-repeat;
  padding-right:26px;
}
select:focus,input:focus{border-color:var(--line-gold)}
option{background:#16213a;color:var(--text);padding:6px 4px}
option:checked,option:hover{background:#243454;color:var(--gold-soft)}
input[type=range]{flex:1;accent-color:var(--gold)}
.btn{
  font-family:inherit;font-size:13px;font-weight:600;color:#14100a;cursor:pointer;
  background:linear-gradient(145deg,var(--gold-soft),var(--gold) 50%,var(--gold-deep));
  border:none;border-radius:9px;padding:8px 18px;transition:.16s;
  box-shadow:0 4px 14px rgba(240,201,106,.25),inset 0 1px 0 rgba(255,255,255,.5);
}
.btn:hover{transform:translateY(-1px);box-shadow:0 7px 20px rgba(240,201,106,.35)}
.btn.ghost{background:rgba(255,255,255,.06);color:var(--text);border:1px solid var(--line);box-shadow:none}
.btn.ghost:hover{border-color:var(--line-gold);color:var(--gold-soft)}
.btn.danger{background:linear-gradient(145deg,#ff8490,#ff4d5e 55%,#d63343);color:#fff;box-shadow:0 4px 14px rgba(255,93,108,.25)}
.btn.cyan{background:linear-gradient(145deg,#8ee9f7,#3fb9d4 55%,#2a93ad);color:#06222b;box-shadow:0 4px 14px rgba(92,214,232,.25)}
.btn.gold{background:linear-gradient(145deg,#ffe9a8,#f0c96a 55%,#d9a93f);color:#3a2c05;box-shadow:0 4px 14px rgba(240,201,106,.3)}
.ipo-banner{background:rgba(240,201,106,.10);border:1px solid var(--line-gold);border-radius:10px;padding:8px 11px;font-size:12px;margin-bottom:10px;color:var(--gold-soft)}
.ipo-banner b{color:var(--gold-soft)}
.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}
.btn.sm{padding:5px 11px;font-size:12px}

/* 数据卡（店铺/股票/列表） */
.data-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:9px}
.data-card{border:1px solid var(--line);border-radius:11px;padding:10px 12px;background:rgba(255,255,255,.035);cursor:pointer;transition:.16s}
.data-card:hover{border-color:var(--line-gold);background:rgba(240,201,106,.05)}
.data-card.sel{border-color:var(--cyan);background:rgba(92,214,232,.07)}
.data-card .dc-name{font-size:13px;font-weight:700;display:flex;justify-content:space-between;gap:6px}
.data-card .dc-name .v{color:var(--gold-soft);font-family:Consolas,monospace}
.data-card .dc-desc{font-size:11px;color:var(--dim);line-height:1.6;margin-top:4px}
.data-card .dc-stats{font-size:10.5px;color:var(--dim2);margin-top:5px;display:flex;gap:8px;flex-wrap:wrap}
.data-card .dc-stats b{color:var(--cyan);font-weight:600}
.info-list{display:flex;flex-direction:column;gap:7px}
.info-row{display:flex;justify-content:space-between;font-size:12.5px;padding:7px 10px;background:rgba(255,255,255,.03);border-radius:8px}
.info-row .k{color:var(--dim)}
.info-row .v{font-weight:700}
.info-row .v.good{color:var(--green)}
.info-row .v.bad{color:var(--danger)}
.section-t{font-size:12px;font-weight:700;color:var(--gold-soft);margin:14px 0 8px;letter-spacing:1px}
.section-t:first-child{margin-top:2px}
.ach-item{display:flex;gap:10px;align-items:center;padding:8px 11px;border-radius:10px;border:1px solid var(--line);margin-bottom:7px}
.ach-item.unlocked{border-color:var(--line-gold);background:rgba(240,201,106,.06)}
.ach-item .a-ico{width:30px;height:30px;flex:none;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:15px;background:rgba(255,255,255,.05);color:var(--dim2)}
.ach-item.unlocked .a-ico{background:linear-gradient(145deg,var(--gold-soft),var(--gold-deep));color:#1a1306}
.ach-item .a-name{font-size:13px;font-weight:700}
.ach-item .a-desc{font-size:11px;color:var(--dim);line-height:1.5}
.ach-item .a-reward{margin-left:auto;font-size:11px;color:var(--cyan);white-space:nowrap}
.stat-line{display:flex;align-items:center;gap:8px;margin-bottom:7px}
.stat-line .sl-label{width:56px;font-size:12px;color:var(--dim)}
.stat-line .bar{flex:1;height:8px;background:rgba(255,255,255,.07);border-radius:5px;overflow:hidden}
.stat-line .bar .fill{height:100%;border-radius:5px;transition:width .3s}
.stat-line .sl-val{width:34px;text-align:right;font-size:12px;font-weight:700;font-family:Consolas,monospace}

/* ================= Toast ================= */
#toast-root{position:fixed;top:70px;right:18px;z-index:200;display:flex;flex-direction:column;gap:8px;pointer-events:none}
.toast{
  min-width:200px;max-width:320px;padding:10px 14px;border-radius:11px;font-size:12.5px;line-height:1.6;
  background:linear-gradient(180deg,rgba(20,28,52,.97),rgba(13,19,38,.97));border:1px solid var(--line);
  box-shadow:0 12px 34px rgba(0,0,0,.5);animation:toastIn .3s cubic-bezier(.2,.9,.3,1.15);
}
.toast.out{animation:toastOut .3s ease forwards}
.toast .t-title{font-weight:800;font-size:12.5px;margin-bottom:2px}
.toast.t-good{border-color:rgba(61,220,151,.5)}.toast.t-good .t-title{color:var(--green)}
.toast.t-bad{border-color:rgba(255,93,108,.5)}.toast.t-bad .t-title{color:var(--danger)}
.toast.t-gold{border-color:var(--line-gold)}.toast.t-gold .t-title{color:var(--gold-soft)}
.toast.t-info{border-color:rgba(92,214,232,.45)}.toast.t-info .t-title{color:var(--cyan)}
@keyframes toastIn{from{opacity:0;transform:translateX(40px)}to{opacity:1;transform:none}}
@keyframes toastOut{to{opacity:0;transform:translateX(40px)}}

/* ================= 教程浮层 ================= */
#tutorial-root{position:fixed;inset:0;z-index:300;pointer-events:none;display:flex;align-items:center;justify-content:center}
.tut-card{
  pointer-events:auto;max-width:520px;padding:22px 26px;border-radius:16px;
  background:linear-gradient(180deg,#131c38,#0d1429);border:1px solid var(--line-gold);
  box-shadow:0 30px 80px rgba(0,0,0,.6);animation:modalIn .3s;
}
.tut-card h3{color:var(--gold-soft);font-size:16px;margin-bottom:10px;letter-spacing:1px}
.tut-card p{font-size:13px;color:#c6cde2;line-height:1.9}
.tut-card .tut-btns{display:flex;justify-content:flex-end;gap:9px;margin-top:16px}
.tut-progress{position:absolute;bottom:10px;left:0;right:0;text-align:center;font-size:10px;color:var(--dim2);letter-spacing:2px}

/* 资金浮动动画 */
.float-num{
  position:fixed;z-index:250;font-size:14px;font-weight:800;pointer-events:none;
  animation:floatUp 1.4s ease forwards;text-shadow:0 2px 10px rgba(0,0,0,.6);
}
.float-num.gain{color:var(--green)}
.float-num.loss{color:var(--danger)}
.float-num.gold{color:var(--gold)}
@keyframes floatUp{0%{opacity:0;transform:translateY(6px)}12%{opacity:1}100%{opacity:0;transform:translateY(-42px)}}

/* 分页 */
.pager{display:flex;gap:6px;align-items:center;justify-content:center;margin-top:12px}
.pager button{font-family:inherit;font-size:12px;color:var(--dim);background:rgba(255,255,255,.05);border:1px solid var(--line);border-radius:7px;padding:4px 10px;cursor:pointer}
.pager button:hover:not(:disabled){color:var(--gold-soft);border-color:var(--line-gold)}
.pager button:disabled{opacity:.35;cursor:default}
.pager .pg-info{font-size:12px;color:var(--dim);padding:0 8px}

/* 终局横幅 */
.ending-banner{
  text-align:center;padding:8px 0 2px;
}
.ending-banner .eb-title{font-size:22px;font-weight:900;letter-spacing:4px;background:linear-gradient(90deg,var(--gold-deep),var(--gold-soft),var(--gold-deep));-webkit-background-clip:text;background-clip:text;color:transparent}
.ending-banner .eb-sub{font-size:12.5px;color:var(--dim);margin-top:6px;line-height:1.8}

/* 响应式 */
@media (max-width:1080px){
  #main{flex-direction:column}
  #side-panel{max-width:none;min-width:0;flex-direction:row;flex-wrap:wrap}
  .s-card{flex:1 1 300px}
}
@media (max-width:720px){
  #app{padding:8px 10px 0}
  .logo-sub{display:none}
  .stats{gap:5px}
  .stat{padding:4px 8px}
  .stat-label{display:none}
}
