/* =========================================================
 * 小小集团 · 网页版原型
 * style.css —— 设计系统：配色 / 字体 / 组件
 * ========================================================= */

/* ---------------- 设计令牌 ---------------- */
:root{
  /* 字体 */
  --font-sans:"PingFang SC","Microsoft YaHei UI","Microsoft YaHei","HarmonyOS Sans SC",
              "Source Han Sans SC","Noto Sans SC",system-ui,-apple-system,"Segoe UI",sans-serif;
  --font-mono:"Cascadia Mono","JetBrains Mono",Consolas,"SF Mono",ui-monospace,monospace;

  /* 底色 */
  --bg:#090c10;
  --bg-glow-1:#0f2b3f;
  --bg-glow-2:#241a35;

  /* 表面 */
  --surface:#111820;
  --surface-2:#0d141b;
  --surface-3:#16202a;
  --line:#1d2a37;
  --line-soft:#17222d;

  /* 文字 */
  --text:#e3ecf6;
  --text-2:#b9cadb;
  --muted:#76899d;
  --dim:#4e6377;

  /* 强调色 */
  --green:#35e0a1;
  --green-dim:#1f7a5c;
  --red:#ff6f6f;
  --gold:#f2c14e;
  --blue:#59a9ff;
  --violet:#a98bff;

  --radius:14px;
  --radius-sm:9px;
  --shadow:0 18px 40px -18px rgba(0,0,0,.9);
}

*{box-sizing:border-box;}

html{scroll-behavior:smooth;}

body{
  margin:0;
  min-height:100vh;
  display:flex;flex-direction:column;
  background:
    radial-gradient(1100px 520px at 12% -12%, color-mix(in srgb, var(--bg-glow-1) 55%, transparent), transparent 70%),
    radial-gradient(900px 460px at 98% -6%, color-mix(in srgb, var(--bg-glow-2) 45%, transparent), transparent 68%),
    var(--bg);
  color:var(--text);
  font-family:var(--font-sans);
  font-size:15px;
  line-height:1.62;
  letter-spacing:.01em;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

b,strong{font-weight:600;color:var(--text);}
::selection{background:#1f6f52;color:#eafff6;}

/* 数字统一等宽 + 表格数字对齐，避免跳数时抖动 */
.num,
.kpi b,
.hs b,
.plot-price,
.big-num,
.tbl .num,
.bld-budget,
.legend b,
.coll .num,
.chart-meta{
  font-family:var(--font-mono);
  font-variant-numeric:tabular-nums;
  font-feature-settings:"tnum" 1,"lnum" 1;
  letter-spacing:-.01em;
}

/* ---------------- 滚动条 ---------------- */
*{scrollbar-width:thin;scrollbar-color:#243447 transparent;}
::-webkit-scrollbar{width:10px;height:10px;}
::-webkit-scrollbar-thumb{background:#243447;border-radius:10px;border:2px solid transparent;background-clip:content-box;}
::-webkit-scrollbar-thumb:hover{background:#31506e;background-clip:content-box;}
::-webkit-scrollbar-track{background:transparent;}

/* =========================================================
 * 顶栏
 * ========================================================= */
#hud{
  position:sticky;top:0;z-index:40;
  display:flex;align-items:center;gap:26px;
  padding:11px 26px;
  background:linear-gradient(180deg,rgba(9,12,16,.96),rgba(9,12,16,.82));
  backdrop-filter:blur(14px) saturate(140%);
  border-bottom:1px solid var(--line);
  box-shadow:0 1px 0 rgba(255,255,255,.02), 0 16px 30px -24px #000;
}
#hud::after{
  content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;
  background:linear-gradient(90deg,transparent,#2b7a5c 22%,#35e0a1 50%,#2b7a5c 78%,transparent);
  opacity:.5;
}

.brand{display:flex;align-items:center;gap:11px;min-width:186px;}
.logo{
  width:36px;height:36px;border-radius:11px;flex:0 0 auto;
  display:grid;place-items:center;
  background:linear-gradient(140deg,#3ff0b0,#1f8fd0 70%);
  color:#04140f;font-weight:800;font-size:19px;line-height:1;
  box-shadow:0 6px 18px -6px #35e0a1aa, inset 0 1px 0 #ffffff55;
}
.bt{display:flex;flex-direction:column;line-height:1.1;}
.bt b{font-size:17px;font-weight:700;letter-spacing:.06em;}
.bt small{font-family:var(--font-mono);font-size:8.5px;letter-spacing:.22em;color:var(--dim);margin-top:3px;}

.hstats{display:flex;gap:8px;flex:1;flex-wrap:wrap;}
.hs{
  display:flex;flex-direction:column;justify-content:center;
  padding:4px 14px;border-radius:10px;
  border:1px solid transparent;
  min-width:96px;
}
.hs:hover{background:#0f1720;border-color:var(--line);}
.hs label{font-size:10px;color:var(--dim);letter-spacing:.14em;line-height:1.4;}
.hs b{font-size:16px;line-height:1.35;white-space:nowrap;}
.hs b.pos{color:var(--green);}
.hs b.neg{color:var(--red);}
.hs .sub{font-size:10.5px;color:var(--dim);font-family:var(--font-mono);}

.hctl{display:flex;align-items:center;gap:7px;}

/* 分段控制器 */
.spds{
  display:inline-flex;gap:2px;padding:3px;
  background:#0c131a;border:1px solid var(--line);border-radius:11px;
}
.spds button{
  background:transparent;border:0;color:var(--muted);
  padding:5px 11px;border-radius:8px;font-size:13px;font-weight:500;
  transition:background .15s,color .15s;
}
#hud .spds button:hover{background:#16212c;color:var(--text-2);}
#hud .spds button.on{
  background:linear-gradient(180deg,#1a4636,#123227);
  color:var(--green);
  box-shadow:inset 0 0 0 1px #2a6a51,0 0 16px -8px var(--green);
}

/* ---------------- 页签 ---------------- */
#tabs{
  display:flex;gap:2px;
  padding:12px 26px 0;
  width:100%;max-width:1620px;margin:0 auto;
  position:relative;
}
#tabs button{
  position:relative;
  background:transparent;border:0;border-radius:10px 10px 0 0;
  color:var(--muted);padding:9px 18px 11px;font-size:14.5px;font-weight:500;
  transition:color .15s,background .15s;
}
#tabs button:hover{color:var(--text-2);background:#0e161e;}
#tabs button.on{color:var(--green);}
#tabs button.on::after{
  content:"";position:absolute;left:14px;right:14px;bottom:-1px;height:2px;
  background:var(--green);border-radius:2px;
  box-shadow:0 0 12px -2px var(--green);
}

/* ---------------- 布局 ---------------- */
main{
  display:grid;grid-template-columns:minmax(0,1fr) 330px;
  gap:18px;padding:18px 26px 72px;
  max-width:1620px;margin:0 auto;
  align-items:start;
  flex:1 0 auto;width:100%;
}
#panel{display:flex;flex-direction:column;gap:16px;min-width:0;}
#side{position:sticky;top:104px;}

.two{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start;}
.two.fin{grid-template-columns:minmax(300px,.9fr) 1.1fr;}

/* ---------------- 卡片 ---------------- */
.card{
  position:relative;
  background:linear-gradient(180deg,var(--surface) 0%,var(--surface-2) 100%);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:18px 20px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.025), var(--shadow);
}

.card-title{
  display:flex;align-items:center;gap:9px;
  font-size:13.5px;font-weight:600;color:var(--text-2);
  letter-spacing:.08em;
  margin-bottom:14px;
}
.card-title::before{
  content:"";width:3px;height:13px;border-radius:2px;flex:0 0 auto;
  background:linear-gradient(180deg,var(--green),#1f7a5c);
}
.card-title > .muted{margin-left:auto;font-size:12px;letter-spacing:.02em;font-weight:400;}

.section-title{
  display:flex;align-items:baseline;gap:12px;
  font-size:17px;font-weight:700;letter-spacing:.02em;
  margin:6px 0 -4px;
}
.section-title .muted{font-size:12.5px;font-weight:400;letter-spacing:0;}

/* ---------------- KPI ---------------- */
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;}
.kpi{
  display:flex;flex-direction:column;gap:3px;
  padding:16px 18px 14px;
  overflow:hidden;
}
.kpi::after{
  content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:var(--accent,var(--green));opacity:.85;
}
.kpi span{font-size:12px;color:var(--muted);letter-spacing:.06em;}
.kpi b{font-size:25px;line-height:1.25;letter-spacing:-.02em;}
.kpi em{
  font-style:normal;font-size:11.5px;color:var(--dim);
  letter-spacing:.01em;
}
.kpi:nth-child(1){--accent:var(--green);}
.kpi:nth-child(2){--accent:var(--blue);}
.kpi:nth-child(3){--accent:var(--gold);}
.kpi:nth-child(4){--accent:var(--red);}

/* ---------------- 进度条 ---------------- */
.bar{
  position:relative;height:9px;border-radius:99px;overflow:hidden;
  background:#0c141b;border:1px solid #1b2836;margin:2px 0 9px;
}
.bar i{
  display:block;height:100%;border-radius:99px;
  background:linear-gradient(90deg,#2b8fd0,#35e0a1);
  box-shadow:0 0 14px -3px var(--green);
  transition:width .35s ease;
}

/* ---------------- 表格 ---------------- */
.tbl{width:100%;border-collapse:separate;border-spacing:0;font-size:14px;}
.tbl th{
  text-align:left;font-weight:500;color:var(--dim);font-size:11px;
  letter-spacing:.12em;white-space:nowrap;
  padding:8px 10px;border-bottom:1px solid var(--line);
  background:linear-gradient(180deg,#0f171f,#0d141b);
  position:sticky;top:0;
}
.tbl td{
  padding:10px;border-bottom:1px solid var(--line-soft);
  color:var(--text-2);vertical-align:middle;
}
.tbl tbody tr{transition:background .12s;}
.tbl tbody tr:hover{background:#101a24;}
.tbl tbody tr:last-child td{border-bottom:0;}
.tbl .num{white-space:nowrap;text-align:right;}
.tbl th.num{text-align:right;}
.tbl .gname{white-space:nowrap;color:var(--text);font-weight:500;}
.tbl .ops{text-align:right;white-space:nowrap;}

.tbl-head{
  display:flex;justify-content:space-between;align-items:center;gap:12px;
  margin-bottom:12px;
}

/* ---------------- 按钮 ---------------- */
button{
  font-family:inherit;font-size:13.5px;font-weight:500;line-height:1.2;
  cursor:pointer;
  padding:7px 15px;border-radius:var(--radius-sm);
  background:linear-gradient(180deg,#1d2c3b,#17232f);
  border:1px solid #2a4055;color:#d6e6f7;
  transition:background .15s,border-color .15s,transform .08s,box-shadow .15s;
  white-space:nowrap;
}
button:hover{background:linear-gradient(180deg,#26394c,#1c2b39);border-color:#3a5a77;}
button:active{transform:translateY(1px);}
button:focus-visible{outline:2px solid var(--green);outline-offset:2px;}
button:disabled{opacity:.38;cursor:not-allowed;filter:grayscale(.4);}
button:disabled:hover{background:linear-gradient(180deg,#1d2c3b,#17232f);border-color:#2a4055;}

button.primary{
  background:linear-gradient(180deg,#1d6b4f,#155640);
  border-color:#2e8b69;color:#d8ffee;
  box-shadow:0 6px 18px -12px var(--green);
}
button.primary:hover{background:linear-gradient(180deg,#248060,#19654b);border-color:#3fae86;}

button.ghost{
  background:transparent;border:1px solid var(--line);color:var(--muted);
}
button.ghost:hover{color:var(--text);border-color:#33506b;background:#0f1720;}

button.danger{
  background:linear-gradient(180deg,#2c1717,#241313);
  border-color:#5c2c2c;color:#ffb4b4;
}
button.danger:hover{background:linear-gradient(180deg,#3a1d1d,#2c1717);border-color:#7d3c3c;}

button.sm{padding:4px 11px;font-size:12.5px;border-radius:7px;}

/* 页签 / 分段控制器里的按钮不吃默认皮肤 */
#tabs button, .spds button{
  background:transparent;border:0;box-shadow:none;
}

.brow{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;}

/* ---------------- 地皮 / 建筑 ---------------- */
.plots{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px;}
.plot{padding:16px 18px;display:flex;flex-direction:column;}
.plot.owned{
  border-color:#25493b;
  background:linear-gradient(180deg,#121d1c 0%,#0d141b 55%);
}
.plot-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;}
.plot-head b{font-size:15px;}
.plot-price{font-size:15px;white-space:nowrap;color:var(--text);}
.plot-price .small{font-size:11.5px;margin-left:4px;}
.plot-foot{
  display:flex;justify-content:space-between;align-items:center;gap:12px;
  margin-top:auto;padding-top:14px;border-top:1px dashed #1f2d3a;
}
.foot-btns{display:flex;gap:6px;}

.tag{
  display:inline-block;font-size:10.5px;letter-spacing:.06em;
  color:#9db4cc;background:#16222e;border:1px solid #223347;
  border-radius:99px;padding:1px 8px;vertical-align:2px;
}

.bld{
  background:#0c141b;border:1px solid #1b2836;border-radius:11px;
  padding:12px 13px;margin-top:12px;
}
.bld-top{display:flex;justify-content:space-between;gap:12px;align-items:baseline;}
.bico{font-size:15px;margin-right:2px;}
.bld-info{font-size:13px;color:var(--text-2);margin:8px 0 10px;line-height:1.55;}
.bld-info b{color:var(--green);}
.bld-budget{font-size:11.5px;color:var(--dim);white-space:nowrap;}
.bld-actions{display:flex;flex-wrap:wrap;gap:6px;}
.bld-actions button{font-size:12px;padding:4px 9px;border-radius:6px;}

.badge{font-size:10.5px;padding:1.5px 8px;border-radius:99px;letter-spacing:.04em;}
.badge.ok{background:#0f2c22;color:var(--green);box-shadow:inset 0 0 0 1px #1d5340;}
.badge.bad{background:#301717;color:var(--red);box-shadow:inset 0 0 0 1px #5a2a2a;}

/* ---------------- 图表 + 资产构成 ---------------- */
.nchart{width:100%;height:150px;display:block;}
.chart-meta{
  display:flex;gap:22px;font-size:11.5px;color:var(--dim);
  margin-top:8px;
}
.chart-meta b{color:var(--text-2);font-weight:500;}

.comp-bar{
  display:flex;height:10px;border-radius:99px;overflow:hidden;
  background:#0b1218;border:1px solid #1b2836;margin:16px 0 10px;
}
.comp-bar i{height:100%;transition:width .35s ease;}
.comp-bar i + i{box-shadow:inset 1px 0 0 #0a1015;}
.legend{display:flex;flex-wrap:wrap;gap:8px 20px;font-size:12.5px;color:var(--muted);}
.legend span{display:inline-flex;align-items:center;gap:7px;}
.legend b{color:var(--text-2);font-weight:500;}
.dot{width:9px;height:9px;border-radius:3px;display:inline-block;flex:0 0 auto;}

/* ---------------- 集团 ---------------- */
.big-num{
  font-size:40px;line-height:1.05;color:var(--gold);
  margin:2px 0 8px;letter-spacing:-.03em;
  text-shadow:0 0 30px #f2c14e33;
}
.lvs{list-style:none;padding:0;margin:0;font-size:13.5px;}
.lvs li{
  display:grid;grid-template-columns:15px 1fr auto;align-items:center;gap:8px;
  padding:8px 0;border-bottom:1px solid var(--line-soft);color:var(--dim);
}
.lvs li:last-child{border-bottom:0;}
.lvs li::before{content:"";}
.lvs li.done{color:var(--text-2);}
.lvs li.cur{
  color:var(--green);font-weight:600;
  background:linear-gradient(90deg,#0f2c22,transparent 70%);
  border-radius:6px;padding-left:6px;margin-left:-6px;
}
.lvs li.cur::before{content:"▶";font-size:9px;}

.colls{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px;}
.coll{
  display:flex;flex-direction:column;align-items:flex-start;gap:3px;
  padding:16px 17px;
  transition:border-color .18s,transform .18s;
}
.coll:hover{border-color:#2f4a63;transform:translateY(-2px);}
.coll.owned{
  border-color:#4a3d1e;
  background:linear-gradient(180deg,#1b1710 0%,#0d141b 70%);
}
.coll-ico{font-size:28px;line-height:1.2;margin-bottom:2px;filter:saturate(1.1);}
.coll b{font-size:14.5px;}
.coll .num{font-size:14px;color:var(--text-2);margin:2px 0 8px;}

/* ---------------- 日志 ---------------- */
.log-card{
  max-height:calc(100vh - 190px);
  display:flex;flex-direction:column;padding-bottom:10px;
}
#log{overflow:auto;padding-right:6px;margin-right:-4px;}
.logi{
  position:relative;
  padding:7px 4px 7px 14px;
  font-size:12.5px;line-height:1.55;color:var(--text-2);
  border-bottom:1px solid var(--line-soft);
}
.logi:last-child{border-bottom:0;}
.logi::before{
  content:"";position:absolute;left:0;top:13px;width:5px;height:5px;border-radius:50%;
  background:var(--dot,#3d5568);
}
.logi.good{--dot:var(--green);}
.logi.bad{--dot:var(--red);}
.logi.sys{--dot:var(--blue);}
.logi .ldate{
  color:var(--dim);font-family:var(--font-mono);font-size:10.5px;
  white-space:nowrap;margin-right:7px;
}
.logi.good{color:#a9eccd;}
.logi.bad{color:#ffc0c0;}
.logi.sys{color:#a8cdf2;}

/* ---------------- 键值行 / 建议列表 / 开关态 ---------------- */
.kv{
  display:flex;justify-content:space-between;align-items:baseline;gap:12px;
  padding:9px 0;border-bottom:1px solid var(--line-soft);font-size:13.5px;
}
.kv:last-of-type{border-bottom:0;}
.kv span{color:var(--muted);}
.kv b{font-size:15.5px;}

.tips{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:11px;}
.tips li{
  position:relative;padding-left:20px;font-size:13.5px;
  color:var(--text-2);line-height:1.62;
}
.tips li::before{
  content:"";position:absolute;left:3px;top:8px;width:7px;height:7px;border-radius:2px;
  background:linear-gradient(135deg,var(--green),#1f7a5c);
  transform:rotate(45deg);
}

button.sm.on{
  background:linear-gradient(180deg,#1a4636,#123227);
  border-color:#2a6a51;color:var(--green);
}

/* ---------------- 空状态 ---------------- */
.empty{
  color:var(--dim);font-size:13px;padding:22px 16px;text-align:center;
  border:1px dashed #1f2d3a;border-radius:10px;background:#0b1218;
}

/* ---------------- 弹窗 ---------------- */
#modal{
  position:fixed;inset:0;z-index:90;
  background:rgba(4,7,10,.74);
  backdrop-filter:blur(6px);
  display:grid;place-items:center;padding:28px;
  animation:fade .16s ease;
}
#modal.hidden{display:none;}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

.mbox{
  width:min(1000px,100%);max-height:86vh;overflow:auto;
  background:linear-gradient(180deg,#131c25,#0c1319);
  border:1px solid #2a3d50;border-radius:18px;
  padding:22px 24px;
  box-shadow:0 40px 100px -30px #000, inset 0 1px 0 #ffffff0d;
  animation:rise .18s ease;
}
.mtitle{
  font-size:18px;font-weight:700;letter-spacing:.02em;margin-bottom:18px;
  display:flex;align-items:center;gap:10px;
}
.mfoot{display:flex;justify-content:flex-end;gap:10px;margin-top:20px;}

.bgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:14px;}
.bcard{
  background:#0f1821;border:1px solid #1f2d3a;border-radius:13px;
  padding:14px 16px;display:flex;flex-direction:column;gap:7px;
  transition:border-color .15s,transform .15s;
}
.bcard:hover{border-color:#2f4a63;transform:translateY(-2px);}
.bcard.locked{opacity:.5;}
.bcard.locked:hover{transform:none;border-color:#1f2d3a;}
.bhead{display:flex;align-items:center;gap:9px;font-size:14.5px;}
.bdesc{font-size:13px;color:var(--text-2);margin:0;line-height:1.55;}
.bmeta{font-size:12.5px;color:var(--muted);flex:1;line-height:1.6;}
.bfoot{display:flex;justify-content:space-between;align-items:center;margin-top:8px;gap:10px;}
.bfoot > span{font-size:14px;}

.help p{margin:8px 0;font-size:13.5px;color:var(--text-2);line-height:1.7;}
.help ul{margin:8px 0 8px 20px;padding:0;color:var(--text-2);font-size:13.5px;}
.help li{margin:4px 0;}
.help b{color:var(--green);}

/* ---------------- Toast ---------------- */
#toast{
  position:fixed;left:50%;bottom:38px;transform:translate(-50%,16px);
  background:linear-gradient(180deg,#1a2a38,#14202b);
  border:1px solid #35526d;color:#e4f1ff;
  padding:10px 18px;border-radius:11px;font-size:13.5px;
  opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;
  z-index:99;box-shadow:0 18px 40px -16px #000;
}
#toast.show{opacity:1;transform:translate(-50%,0);}

/* ---------------- 行情机会 ---------------- */
.chips{display:flex;flex-wrap:wrap;gap:10px;}
.chip{
  display:inline-flex;align-items:center;gap:8px;
  padding:8px 13px;border-radius:10px;font-size:13px;
  background:#0f1821;border:1px solid #22303e;color:var(--text-2);
}
.chip b{font-size:14px;}
.chip em{font-style:normal;font-size:11.5px;color:var(--dim);}
.chip.low{border-color:#1f5a45;background:#0e211b;}
.chip.low b{color:var(--green);}
.chip.high{border-color:#5a2a2a;background:#1d1414;}
.chip.high b{color:var(--red);}

/* ---------------- 页脚 ---------------- */
#foot{
  width:100%;max-width:1620px;margin:0 auto;
  padding:16px 26px 24px;
  border-top:1px solid var(--line-soft);
  text-align:center;font-size:12px;color:var(--dim);
  letter-spacing:.04em;
}
#foot .sep{margin:0 10px;color:#263545;}

/* ---------------- 工具类 ---------------- */
.pos{color:var(--green) !important;}
.neg{color:var(--red) !important;}
.muted{color:var(--muted);}
.small{font-size:12.5px;}

/* ---------------- 响应式 ---------------- */
@media (max-width:1280px){
  main{grid-template-columns:1fr;padding:16px 18px 60px;}
  #side{position:static;}
  .log-card{max-height:300px;}
  .hstats{gap:2px;}
  .hs{min-width:auto;padding:4px 10px;}
}
@media (max-width:900px){
  body{font-size:14.5px;}
  .kpis{grid-template-columns:repeat(2,1fr);}
  .two{grid-template-columns:1fr;}
  #hud{flex-wrap:wrap;gap:12px;padding:10px 14px;}
  .brand{min-width:auto;}
  .hctl{width:100%;justify-content:flex-end;}
  #tabs{padding:8px 14px 0;overflow-x:auto;}
  #tabs button{padding:8px 12px 10px;font-size:14px;}
  main{padding:12px 14px 60px;}
  .kpi b{font-size:21px;}
  .plots{grid-template-columns:1fr;}
  .chart-meta{gap:14px;flex-wrap:wrap;}
}

/* =========================================================
 * v0.2 新增：原作四层结构（城市/地皮/厂房/设备）
 * ========================================================= */
.company{
  display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;
  padding-bottom:14px;border-bottom:1px solid var(--line-soft);margin-bottom:16px;
}
.company-name{font-size:22px;font-weight:700;display:flex;align-items:center;gap:10px;letter-spacing:.02em;}
.company-lv{display:flex;align-items:center;gap:10px;}
.company-lv .lbl{font-size:12px;color:var(--muted);letter-spacing:.08em;}
.company-lv .lv{font-size:28px;font-family:var(--font-mono);color:var(--green);line-height:1;}

.stat-row{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;}
.st{
  display:flex;flex-direction:column;gap:3px;padding:11px 13px;
  background:#0c141b;border:1px solid var(--line-soft);border-radius:10px;
}
.st span{font-size:11px;color:var(--muted);letter-spacing:.08em;}
.st b{font-family:var(--font-mono);font-size:17px;font-variant-numeric:tabular-nums;}
.st em{font-style:normal;color:var(--dim);font-size:12px;font-family:var(--font-mono);}

.led{
  display:grid;grid-template-columns:1fr auto auto;gap:14px;align-items:baseline;
  padding:9px 0;border-bottom:1px solid var(--line-soft);font-size:13.5px;
}
.led:last-child{border-bottom:0;}
.led span{color:var(--muted);}
.led b{font-family:var(--font-mono);min-width:112px;text-align:right;font-variant-numeric:tabular-nums;}
.led-head{
  display:grid;grid-template-columns:1fr auto auto;gap:14px;
  font-size:11px;color:var(--dim);padding-bottom:7px;letter-spacing:.1em;
  border-bottom:1px solid var(--line);
}
.led-head b{font-weight:400;min-width:112px;text-align:right;}

.crumb{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:14px;}
.crumb b{font-size:16px;}

.grade{
  display:inline-block;font-family:var(--font-mono);font-size:11px;font-weight:700;
  padding:1px 7px;border-radius:5px;border:1px solid;line-height:1.55;letter-spacing:.02em;
}

.subnav{display:flex;gap:2px;border-bottom:1px solid var(--line);}
.subnav button{
  background:transparent;border:0;border-radius:10px 10px 0 0;
  padding:9px 20px 11px;color:var(--muted);font-size:14.5px;
}
.subnav button:hover{color:var(--text);}
.subnav button.on{color:var(--green);background:#0f1a16;box-shadow:inset 0 -2px 0 var(--green);}

.ask{display:flex;gap:12px;align-items:center;margin:16px 0;}
.ask input{
  flex:1;background:#0b1218;border:1px solid var(--line);border-radius:9px;
  padding:11px 13px;color:var(--text);font-family:var(--font-mono);font-size:17px;outline:none;
}
.ask input:focus{border-color:#2f7a5f;box-shadow:0 0 0 3px #35e0a122;}
.ask-quick{display:flex;gap:6px;}

.pick-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;}
.pick-list button{
  display:flex;flex-direction:column;align-items:flex-start;gap:1px;min-width:112px;
}
.pick-list button em{font-style:normal;font-size:11px;color:var(--dim);font-family:var(--font-mono);}

.recipe-list{display:flex;flex-direction:column;gap:8px;}
.recipe-list button{
  display:flex;flex-direction:column;align-items:flex-start;gap:2px;
  text-align:left;width:100%;padding:9px 12px;
}
.recipe-list button em{font-style:normal;font-size:11.5px;color:var(--dim);}
.recipe-list button.on{background:#12312a;border-color:#2f7a5f;color:var(--green);}

.staff-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-height:36px;}
.op{
  display:inline-flex;align-items:center;gap:5px;
  background:#0d151d;border:1px solid var(--line-soft);border-radius:9px;padding:3px 7px;
}
.op .x{background:transparent;border:0;color:var(--dim);padding:0 2px;font-size:15px;line-height:1;}
.op .x:hover{color:var(--red);}
.op .tr{background:transparent;border:0;color:var(--green);padding:0 3px;font-size:11px;line-height:1;cursor:pointer;}
.op .tr:hover{color:#8ff3cd;}
.recruit{display:flex;gap:6px;flex-wrap:wrap;}

.dev-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:22px;}
.dev-main .kv{font-size:13px;}

tr.mine td{background:#0d1a15;}
tr.mine:hover td{background:#11241c;}
tr.banned td{opacity:.5;}
.empty-row td{color:var(--dim);}
.center{text-align:center;padding:16px 0 !important;}

@media (max-width:900px){
  .stat-row{grid-template-columns:repeat(3,1fr);}
  .dev-grid{grid-template-columns:1fr;}
  .company{flex-direction:column;align-items:flex-start;}
}

/* 未开埠城市 */
tr.locked td{opacity:.5;}
tr.locked .tag{color:#7d8b99;border-color:#2a3b4d;background:#141c25;}

/* 曲线粒度切换 */
.seg-mini{
  display:inline-flex;gap:2px;padding:2px;
  background:#0b1218;border:1px solid var(--line);border-radius:8px;
}
.seg-mini button{
  background:transparent;border:0;color:var(--muted);
  padding:3px 11px;border-radius:6px;font-size:12px;line-height:1.4;
}
.seg-mini button:hover{color:var(--text);}
.seg-mini button.on{background:#173b2e;color:var(--green);box-shadow:inset 0 0 0 1px #2a6a51;}

/* ---------------- 2K / 4K 大屏适配 ---------------- */
/* 用 zoom 整体放大：字体、间距、卡片、表格一起缩放，
   避免只放大字号导致布局挤压 */
@media (min-width: 1900px){
  body{zoom:1.15;min-height:calc(100vh / 1.15);}
  main{max-width:1820px;}
  #tabs,#foot{max-width:1820px;}
}
@media (min-width: 2400px){
  body{zoom:1.35;min-height:calc(100vh / 1.35);}
  main{max-width:1960px;}
  #tabs,#foot{max-width:1960px;}
  .mbox{width:min(1150px,100%);}
  .card{padding:20px 22px;}
}
@media (min-width: 3100px){
  body{zoom:1.6;min-height:calc(100vh / 1.6);}
  main{max-width:2280px;}
  #tabs,#foot{max-width:2280px;}
  .mbox{width:min(1250px,100%);}
}

/* =========================================================
 * 手机端（≤768px）：底部导航 + 紧凑顶栏 + 表格内滚动
 * ========================================================= */
@media (max-width: 768px){
  html{-webkit-text-size-adjust:100%;}
  body{font-size:14.5px;line-height:1.6;overflow-x:hidden;}

  /* ---------- 顶栏：品牌 + 调速 一行，指标一行可横滑 ---------- */
  #hud{
    flex-wrap:wrap;gap:8px 10px;padding:8px 12px;
    padding-top:calc(8px + env(safe-area-inset-top,0px));
  }
  .brand{flex:1 1 auto;min-width:0;gap:9px;}
  .logo{width:30px;height:30px;font-size:16px;border-radius:9px;}
  .bt b{font-size:15px;letter-spacing:.04em;}
  .bt small{display:none;}
  .hctl{flex:0 0 auto;margin-left:auto;gap:6px;}
  .hctl .ghost{display:none;}          /* 存档/读档/设置在「设置」页里都有 */
  .spds{padding:2px;}
  .spds button{padding:5px 9px;font-size:12.5px;}

  .hstats{
    order:3;width:100%;flex-wrap:nowrap;gap:0;
    overflow-x:auto;overscroll-behavior-x:contain;
    scrollbar-width:none;
  }
  .hstats::-webkit-scrollbar{display:none;}
  .hs{min-width:auto;padding:2px 12px;border-left:1px solid var(--line-soft);border-radius:0;}
  .hs:first-child{border-left:0;padding-left:2px;}
  .hs:hover{background:transparent;border-color:transparent;border-left-color:var(--line-soft);}
  .hs:first-child:hover{border-left-color:transparent;}
  .hs label{font-size:9.5px;letter-spacing:.1em;}
  .hs b{font-size:14px;}

  /* ---------- 底部导航（原作的六宫格） ---------- */
  #tabs{
    position:fixed;left:0;right:0;bottom:0;z-index:45;
    width:100%;max-width:none;margin:0;
    padding:0 0 env(safe-area-inset-bottom,0px);
    gap:0;
    background:rgba(10,14,19,.97);
    backdrop-filter:blur(14px) saturate(140%);
    border-top:1px solid var(--line);
    box-shadow:0 -12px 30px -20px #000;
  }
  #tabs button{
    position:relative;flex:1 1 0;min-width:0;
    padding:13px 2px 12px;font-size:12.5px;border-radius:0;
    color:var(--muted);letter-spacing:.02em;
  }
  #tabs button.on{color:var(--green);background:transparent;}
  #tabs button.on::after{
    left:22%;right:22%;bottom:auto;top:0;height:2px;border-radius:0 0 2px 2px;
  }

  /* ---------- 内容区 ---------- */
  main{
    grid-template-columns:minmax(0,1fr);gap:12px;
    padding:12px 12px calc(76px + env(safe-area-inset-bottom,0px));
  }
  #panel{gap:12px;min-width:0;}
  #side{display:flex;min-width:0;}
  .two{grid-template-columns:minmax(0,1fr);}
  .two.fin{grid-template-columns:minmax(0,1fr);}
  .two > *{min-width:0;}
  .card{padding:14px 14px;border-radius:12px;}
  .card-title{font-size:12.5px;margin-bottom:10px;gap:7px;flex-wrap:wrap;}
  .card-title > .muted{margin-left:auto;font-size:11px;}
  .section-title{font-size:15.5px;flex-wrap:wrap;gap:6px;}

  /* 表格：优先压缩字号让它塞进屏幕，实在放不下再卡片内横滑 */
  .card{overflow-x:auto;overscroll-behavior-x:contain;}
  .tbl{min-width:0;font-size:12.5px;}
  .tbl th{font-size:10px;padding:6px 5px;letter-spacing:.04em;}
  .tbl td{padding:8px 5px;}
  .tbl .gname{white-space:normal;}
  .tbl .ops{white-space:nowrap;}
  .tbl .ops button{padding:6px 9px;font-size:12px;}

  /* 按钮：加大触摸区 */
  button{padding:9px 13px;}
  button.sm{padding:7px 11px;font-size:12.5px;border-radius:8px;}
  .brow{gap:8px;}
  .bld-actions button{font-size:12px;padding:6px 10px;}

  /* 概览 */
  .company{flex-direction:column;align-items:flex-start;gap:10px;}
  .company-name{font-size:19px;}
  .company-lv{width:100%;justify-content:space-between;}
  .company-lv .lv{font-size:24px;}
  .stat-row{grid-template-columns:repeat(3,1fr);gap:8px;}
  .st{padding:9px 10px;}
  .st b{font-size:15px;}
  .st span{font-size:10px;}
  .led{grid-template-columns:1fr auto auto;gap:8px;font-size:13px;}
  .led b{min-width:84px;}
  .led-head b{min-width:84px;}

  /* 曲线 */
  .nchart{height:130px;}
  .chart-meta{gap:10px 14px;font-size:11px;}
  .seg-mini button{padding:4px 10px;font-size:12px;}

  /* 城市 / 地皮 */
  .crumb{gap:8px;font-size:13px;}
  .crumb b{font-size:15px;}
  .crumb .muted.small{width:100%;}

  /* 日志 */
  .log-card{max-height:240px;}
  .logi{font-size:12px;}

  /* 弹窗 */
  #modal{padding:10px;}
  .mbox{
    width:100%;max-height:calc(100vh - 80px);
    padding:16px 16px;border-radius:14px;
  }
  .mtitle{font-size:16px;margin-bottom:12px;}
  .bgrid{grid-template-columns:1fr;}
  .dev-grid{grid-template-columns:1fr;gap:16px;}
  .bcard{padding:12px 13px;}
  .ask{flex-direction:column;align-items:stretch;gap:8px;}
  .ask input{font-size:16px;}            /* 防 iOS 聚焦自动放大 */
  .ask-quick{justify-content:flex-end;}
  .mfoot{position:sticky;bottom:0;background:linear-gradient(180deg,transparent,#0c1319 30%);padding-top:10px;}

  /* 其他 */
  #toast{bottom:calc(78px + env(safe-area-inset-bottom,0px));left:12px;right:12px;transform:translateY(12px);text-align:center;}
  #toast.show{transform:none;}
  #foot{display:none;}
  .big-num{font-size:34px;}
}

/* 小屏再收一档 */
@media (max-width: 420px){
  body{font-size:14px;}
  #tabs button{font-size:11.5px;padding:12px 1px 11px;}
  .hs{padding:2px 10px;}
  .hs b{font-size:13.5px;}
  .stat-row{grid-template-columns:repeat(2,1fr);}
  .company-name{font-size:18px;}
  .tbl{min-width:0;}
  .card{padding:12px 12px;}
  main{padding:10px 10px calc(74px + env(safe-area-inset-bottom,0px));}
}

/* 手机端：隐藏次要列 */
@media (max-width: 768px){
  .hide-sm{display:none !important;}
  .tag{white-space:nowrap;}
}

/* 难度选择（开新档） */
.diff-list{display:grid;gap:8px;margin:14px 0 4px;}
.diff{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;padding:10px 13px;}
.diff b{font-size:13.5px;}
.diff em{font-style:normal;font-size:11.5px;color:var(--dim);}
.diff.on{background:#12312a;border-color:#2f7a5f;color:var(--green);}

/* 稳定度 */
.stab{
  display:inline-flex;align-items:baseline;gap:8px;
  padding:5px 12px;border-radius:10px;
  background:#0f1a16;border:1px solid #24352c;margin-left:6px;
}
.stab .lbl{font-size:11px;color:var(--muted);letter-spacing:.08em;}
.stab b{font-family:var(--font-mono);font-size:20px;line-height:1;color:var(--green);}
.stab.mid{background:#251f12;border-color:#4a3d1e;}
.stab.mid b{color:var(--gold);}
.stab.low{background:#2a1616;border-color:#5a2a2a;}
.stab.low b{color:var(--red);}
@media (max-width:768px){
  .stab{margin-left:0;}
  .stab b{font-size:17px;}
}

/* ---------------- 研发等级点 ---------------- */
.rd-dots{display:flex;gap:4px;margin:2px 0 8px;}
.rd-dot{width:10px;height:10px;border-radius:2px;background:#16222e;border:1px solid #223347;}
.rd-dot.on{background:linear-gradient(180deg,#35e0a1,#1f7a5c);border-color:#2a6a51;}

/* 手机端：宽表格横向滚动，避免挤压 */
@media (max-width:768px){
  .card{overflow-x:auto;}
  .tbl{width:max-content;min-width:100%;}
  .tbl .gname{white-space:nowrap;}
}
.only-mobile{display:none;}
@media (max-width:768px){ .only-mobile{display:block;} }
/* sidebar market */
#side{display:flex;flex-direction:column;gap:12px;max-height:calc(100vh - 120px);}
#side .log-card{flex:1 1 auto;max-height:none;min-height:140px;}
.mkt-card{flex:0 0 auto;display:flex;flex-direction:column;max-height:320px;}
.mkt-card #mktSide{overflow:auto;min-height:0;}
.mkt-mini th,.mkt-mini td{padding:4px 4px;font-size:11.5px;}
@media (max-width:900px){
  #side{max-height:none;}
  .mkt-card{max-height:260px;}
}