/* =========================================================
   建筑施工企业“三精管理”沙盘 v3.0
   Neo-Brutalism 设计系统：奶白底 / 4px 黑边 / 硬阴影
   ========================================================= */
:root {
  --bg: #FFF5E1;          /* 奶白 */
  --surface: #FFFFFF;
  --surface-2: #FFF8EC;
  --ink: #111111;         /* 黑边/文字 */
  --ink-soft: #4a4a4a;
  --muted: #8a7f66;
  --border: 4px solid #111111;
  --shadow: 6px 6px 0 #111111;
  --shadow-sm: 4px 4px 0 #111111;
  --radius: 0px;
  /* 高饱和撞色（工地主题） */
  --c-yellow: #FFD23F;
  --c-red: #FF5757;
  --c-blue: #3A86FF;
  --c-green: #06D6A0;
  --c-orange: #FF8C42;
  --c-purple: #9B5DE5;
  --font: 'PingFang SC', 'Microsoft YaHei', 'Noto Sans SC', 'Heiti SC', sans-serif;
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  font-family: var(--font);
  background: var(--bg);
  color: var(--ink);
  line-height: 1.55;
  font-weight: 500;
  background-image:
    radial-gradient(rgba(17,17,17,0.05) 1px, transparent 1px);
  background-size: 22px 22px;
}

h1, h2, h3, h4 { font-weight: 900; letter-spacing: .5px; margin: 0 0 10px; }

/* ---------- 顶栏 ---------- */
.topbar {
  display: flex; align-items: center; justify-content: space-between;
  gap: 16px; padding: 14px 22px;
  background: var(--c-yellow);
  border-bottom: var(--border);
  position: sticky; top: 0; z-index: 50; flex-wrap: wrap;
}
.brand { display: flex; align-items: center; gap: 14px; }
.brand .logo {
  font-size: 30px; width: 52px; height: 52px;
  display: grid; place-items: center;
  background: var(--surface); border: var(--border);
  box-shadow: var(--shadow-sm);
}
.brand h1 { font-size: 20px; line-height: 1.1; }
.brand .sub { font-size: 12px; color: var(--ink-soft); font-weight: 700; margin: 2px 0 0; }

.status { display: flex; gap: 10px; flex-wrap: wrap; }
.pill {
  background: var(--surface); border: 3px solid var(--ink);
  padding: 6px 12px; font-size: 14px; font-weight: 800;
  display: flex; gap: 6px; align-items: center; box-shadow: 3px 3px 0 var(--ink);
}
.pill label { color: var(--ink-soft); font-weight: 700; }
.pill.money { background: var(--c-green); }
.pill.ach { background: var(--c-blue); color: #fff; }

.actions { display: flex; gap: 10px; flex-wrap: wrap; }
.btn {
  border: 3px solid var(--ink); background: var(--surface);
  padding: 9px 16px; font-size: 14px; font-weight: 800;
  cursor: pointer; box-shadow: var(--shadow-sm);
  transition: transform .08s, box-shadow .08s; font-family: var(--font);
}
.btn:hover { transform: translate(-1px,-1px); box-shadow: 5px 5px 0 var(--ink); }
.btn:active { transform: translate(4px,4px); box-shadow: 0 0 0 var(--ink); }
.btn.primary { background: var(--c-red); color: #fff; }
.btn.success { background: var(--c-green); }
.btn.accent { background: var(--c-blue); color: #fff; }
.btn.warn { background: var(--c-orange); }
.btn.ghost { background: transparent; }
.btn:disabled { opacity: .45; cursor: not-allowed; box-shadow: 3px 3px 0 var(--ink); transform: none; }

/* ---------- 选项卡 ---------- */
.tabs {
  display: flex; gap: 0; padding: 0 22px; flex-wrap: wrap;
  background: var(--surface-2); border-bottom: var(--border);
}
.tab {
  border: 3px solid var(--ink); border-right: none;
  background: var(--surface-2); padding: 11px 18px; cursor: pointer;
  font-size: 14px; font-weight: 800; color: var(--ink-soft);
  border-bottom: none;
}
.tab:last-child { border-right: 3px solid var(--ink); }
.tab.active {
  background: var(--c-yellow); color: var(--ink);
  box-shadow: inset 0 4px 0 var(--ink);
}

.app { padding: 22px; max-width: 1320px; margin: 0 auto; }
.panel { display: none; }
.panel.active { display: block; animation: pop .18s ease; }
@keyframes pop { from { opacity: 0; transform: translateY(6px);} to { opacity: 1; transform: none; } }

/* ---------- 通用卡片 ---------- */
.card {
  background: var(--surface); border: var(--border);
  box-shadow: var(--shadow); padding: 16px;
}
.card h2 { font-size: 17px; margin-top: 0; }
.card h3 { font-size: 15px; }

/* ---------- 双树盘面 ---------- */
.board-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; }
.tree-wrap {
  background: var(--surface); border: var(--border);
  box-shadow: var(--shadow); padding: 16px;
}
.tree-wrap h2 { margin: 0 0 12px; font-size: 17px; display: flex; align-items: center; gap: 8px; }
.tree-tag {
  font-size: 12px; font-weight: 800; padding: 2px 8px;
  border: 2px solid var(--ink); background: var(--c-yellow);
}
.tree {
  position: relative; width: 100%; border: 3px solid var(--ink);
  background: #fff; overflow: hidden;
}
.tree img { width: 100%; display: block; }
.tree-node {
  position: absolute; width: 34px; height: 34px;
  border-radius: 50%; transform: translate(-50%, -50%);
  cursor: pointer; border: 3px solid var(--ink);
  box-shadow: 2px 2px 0 var(--ink);
  transition: transform .12s; z-index: 2;
}
.tree-node:hover { transform: translate(-50%, -50%) scale(1.18); }
.tree-node.unlocked { background: var(--c-green); }
.tree-node.available { background: var(--c-yellow); animation: blink 1.1s infinite; }
.tree-node.locked { background: #d9cfb4; }
@keyframes blink { 50% { box-shadow: 2px 2px 0 var(--ink), 0 0 0 4px rgba(255,210,63,.6); } }
.tree-node::after {
  content: attr(data-letter); position: absolute; left: 50%; top: 50%;
  transform: translate(-50%, -50%); font-size: 13px; font-weight: 900; color: var(--ink);
}
/* 字母解锁进度条：解释同字母多位置设计，避免学员误以为"画重了" */
.tree-progress {
  position: absolute; left: 8px; right: 8px; top: 8px; z-index: 3;
  display: flex; gap: 4px; flex-wrap: wrap;
  background: rgba(255,245,225,.94); border: 2px solid var(--ink);
  padding: 5px 8px; font-size: 11px; font-weight: 900;
  box-shadow: 2px 2px 0 var(--ink);
}
.tree-progress .lp {
  display: inline-flex; align-items: center; gap: 3px;
  padding: 2px 6px; border: 1.5px solid var(--ink); border-radius: 10px;
  background: #fff; line-height: 1;
}
.tree-progress .lp.zero { background: #d9cfb4; color: var(--ink-soft); }
.tree-progress .lp.partial { background: var(--c-yellow); }
.tree-progress .lp.done { background: var(--c-green); color: #fff; }
.tree-progress .lp .c { font-size: 10px; opacity: .85; }
.tree-progress .hint { width: 100%; font-size: 10px; color: var(--ink-soft); margin-top: 2px; }

.tree-legend {
  display: flex; gap: 18px; margin-top: 12px; font-size: 13px; font-weight: 800;
  flex-wrap: wrap;
}
.tree-legend .chip {
  background: var(--surface-2); border: 2px solid var(--ink); padding: 4px 10px;
}
.tree-tooltip {
  position: absolute; background: var(--ink); color: #fff;
  padding: 9px 13px; border: 2px solid #fff; font-size: 12px; font-weight: 700;
  pointer-events: none; z-index: 20; max-width: 240px; display: none; line-height: 1.5;
}

/* ---------- 订单 ---------- */
.orders-header { margin-bottom: 16px; }
.orders-header h2 { font-size: 20px; }
.orders-header p { margin: 6px 0 0; color: var(--ink-soft); font-weight: 700; font-size: 13px; }
.orders-grid, .active-orders {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(290px, 1fr));
  gap: 16px; margin-bottom: 26px;
}
.order-card {
  background: var(--surface); border: var(--border);
  box-shadow: var(--shadow); padding: 14px;
  display: flex; flex-direction: column; gap: 9px; position: relative;
  border-top: 10px solid var(--c-blue);
}
.order-card.locked { border-top-color: #bdbdbd; opacity: .85; }
.order-card.active { border-top-color: var(--c-orange); }
.order-card.done { border-top-color: var(--c-green); }
.order-header { display: flex; justify-content: space-between; align-items: center; }
.order-name { font-size: 19px; font-weight: 900; }
.order-profit { font-size: 17px; color: #0a7a4f; font-weight: 900; }
.order-meta { font-size: 12px; color: var(--ink-soft); font-weight: 700; }
.order-reqs { font-size: 13px; display: flex; gap: 6px; flex-wrap: wrap; }
.phase-row {
  display: flex; gap: 8px; align-items: center; font-size: 12px; font-weight: 700;
  padding: 6px 0; border-top: 2px dashed var(--ink);
}
.phase-row.done { color: #0a7a4f; }
.phase-row.current { color: var(--c-orange); font-weight: 900; }
.phase-row.pending { color: var(--muted); }
.phase-ico { width: 20px; height: 20px; display: inline-grid; place-items: center;
  border: 2px solid var(--ink); font-size: 12px; background: var(--surface-2); }

/* ---------- 资源 ---------- */
.resource-layout { display: grid; grid-template-columns: 380px 1fr; gap: 22px; }
.inventory, .market { background: var(--surface); border: var(--border); box-shadow: var(--shadow); padding: 16px; }
.inventory h2, .market h2 { font-size: 17px; margin-top: 0; }
.res-group { margin-bottom: 16px; }
.res-group h4 { margin: 0 0 7px; font-size: 13px; font-weight: 900; background: var(--c-yellow);
  display: inline-block; padding: 2px 10px; border: 2px solid var(--ink); }
.res-item {
  display: flex; justify-content: space-between; align-items: center;
  padding: 7px 11px; background: var(--surface-2); border: 2px solid var(--ink);
  margin-bottom: 5px; font-size: 13px; font-weight: 800;
}
.res-item .qty { background: var(--ink); color: #fff; padding: 1px 9px; font-weight: 900; }
.team-row {
  display: flex; justify-content: space-between; align-items: center;
  padding: 9px 0; border-bottom: 2px solid var(--ink); font-weight: 800;
}
.team-row button { padding: 5px 12px; font-size: 12px; }
.market-cats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.market-cat h3 { margin: 0 0 10px; font-size: 15px; background: var(--c-blue); color:#fff;
  display: inline-block; padding: 3px 12px; border: 2px solid var(--ink); }
.market-item {
  display: flex; justify-content: space-between; align-items: center; gap: 6px;
  padding: 9px; background: var(--surface-2); border: 2px solid var(--ink);
  margin-bottom: 7px; font-size: 13px; font-weight: 800;
}
.market-item .price { color: #0a7a4f; font-weight: 900; }
.market-item input {
  width: 48px; text-align: center; border: 2px solid var(--ink); padding: 4px;
  font-weight: 800; font-family: var(--font);
}
.market-item button { padding: 4px 11px; font-size: 12px; box-shadow: 2px 2px 0 var(--ink); }

/* ---------- v3.2 机械三档 ---------- */
.market-tier { margin-bottom: 12px; }
.tier-head {
  display: inline-block; padding: 2px 10px; margin-bottom: 7px;
  font-size: 12px; font-weight: 900; border: 2px solid var(--ink);
  color: #fff; background: var(--ink);
}
.tier-head.tier-PRO { background: #e07b00; }
.tier-head.tier-MAX { background: #b000b5; }
.market-item .mi-name { display: inline-flex; flex-direction: column; line-height: 1.2; }
.market-item .maint { font-size: 10px; font-weight: 700; color: var(--ink-soft); }
.market-item .price { white-space: nowrap; }

/* ---------- 财务表 ---------- */
.finance-tables { display: grid; gap: 22px; }
.finance-table {
  width: 100%; border-collapse: collapse; background: var(--surface);
  border: var(--border); box-shadow: var(--shadow); font-size: 13px; font-weight: 700;
}
.finance-table th, .finance-table td {
  padding: 10px 12px; border: 2px solid var(--ink); text-align: center;
}
.finance-table th { background: var(--c-yellow); font-weight: 900; }
.finance-table td:first-child, .finance-table th:first-child { text-align: left; }
.finance-table tfoot td { font-weight: 900; background: var(--surface-2); }
/* 团队成本 / 机械维护费 行（区别于采购支出，浅色底纹） */
.finance-table tr.t-salary td { background: #FFF1F0; }
.finance-table tr.t-maintain td { background: #EEF3FF; }
.finance-table tr.t-salary td:first-child,
.finance-table tr.t-maintain td:first-child { color: var(--c-red); font-weight: 900; }

/* ---------- 规则 ---------- */
.rules-layout { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.rule-card { background: var(--surface); border: var(--border); box-shadow: var(--shadow); padding: 16px; }
.rule-card h2 { font-size: 17px; margin-top: 0; }
.flow {
  background: var(--c-yellow); border: 3px solid var(--ink); padding: 11px 14px;
  font-weight: 900; font-size: 14px; margin-bottom: 14px; box-shadow: var(--shadow-sm);
}
.rule-card ul { padding-left: 18px; margin: 0; }
.rule-card li { margin-bottom: 9px; font-size: 13px; font-weight: 700; }
.hint { color: var(--ink-soft); font-size: 12px; font-weight: 700; }

/* ---------- 标签 ---------- */
.tag {
  display: inline-block; padding: 3px 9px; border: 2px solid var(--ink);
  font-size: 12px; font-weight: 900;
}
.tag.green { background: var(--c-green); }
.tag.yellow { background: var(--c-yellow); }
.tag.red { background: var(--c-red); color: #fff; }
.tag.gray { background: var(--surface-2); }
.tag.blue { background: var(--c-blue); color: #fff; }

/* v3.5 PT 配套标签 */
.pt-tag {
  display: inline-block;
  padding: 2px 8px;
  margin-left: 6px;
  background: var(--c-blue);
  color: #fff;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.5px;
  border-radius: 3px;
  border: 2px solid var(--ink);
  box-shadow: 2px 2px 0 var(--ink);
}
.pt-tag.broken {
  background: var(--c-red);
  animation: pt-pulse 1s infinite;
}
@keyframes pt-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.55; }
}

/* =========================================================
   新增：引导页 / 步骤 / 日志 / 复盘
   ========================================================= */

/* 引导页（全屏遮罩） */
#guide {
  position: fixed; inset: 0; z-index: 200; overflow: auto;
  background: var(--bg);
  background-image:
    radial-gradient(rgba(17,17,17,0.06) 1px, transparent 1px);
  background-size: 24px 24px;
}
#guide.hidden { display: none; }
.guide-inner { max-width: 980px; margin: 0 auto; padding: 46px 24px 70px; }
.guide-hero {
  background: var(--c-yellow); border: var(--border); box-shadow: var(--shadow);
  padding: 30px 32px; margin-bottom: 26px; position: relative;
}
.guide-hero .badge {
  position: absolute; top: -16px; right: 24px; background: var(--c-red); color: #fff;
  border: 3px solid var(--ink); padding: 6px 14px; font-weight: 900; font-size: 13px;
  box-shadow: var(--shadow-sm); transform: rotate(4deg);
}
.guide-hero h1 { font-size: 34px; line-height: 1.15; }
.guide-hero .sub { font-size: 15px; font-weight: 800; color: var(--ink-soft); margin-top: 8px; }
.guide-hero .intro { font-size: 15px; font-weight: 700; margin-top: 16px; line-height: 1.7; }

.guide-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; margin-bottom: 26px; }
.guide-box { background: var(--surface); border: var(--border); box-shadow: var(--shadow); padding: 20px; }
.guide-box h3 { font-size: 18px; display: flex; align-items: center; gap: 8px; }
.guide-box h3 .dot { width: 14px; height: 14px; background: var(--c-red); border: 2px solid var(--ink); display: inline-block; }
.guide-box p { font-weight: 700; font-size: 14px; line-height: 1.7; margin: 8px 0 0; }
.benefit-list { list-style: none; padding: 0; margin: 10px 0 0; }
.benefit-list li { font-weight: 800; font-size: 14px; padding: 8px 0 8px 30px; position: relative; border-bottom: 2px dashed var(--ink); }
.benefit-list li::before { content: '★'; position: absolute; left: 4px; color: var(--c-orange); font-size: 16px; }

.core-loop { background: var(--surface); border: var(--border); box-shadow: var(--shadow); padding: 20px; margin-bottom: 26px; }
.core-loop h3 { font-size: 18px; }
.loop-track { display: grid; grid-template-columns: repeat(5, 1fr); gap: 0; margin-top: 16px; }
.loop-step { border: 3px solid var(--ink); padding: 14px 10px; text-align: center; background: var(--surface-2); }
.loop-step:not(:last-child) { border-right: none; }
.loop-step .num { font-size: 26px; font-weight: 900; color: var(--c-blue); }
.loop-step .lk { font-weight: 900; font-size: 14px; margin: 4px 0; }
.loop-step .lv { font-size: 11px; font-weight: 700; color: var(--ink-soft); line-height: 1.5; }
.loop-step .arrow { font-size: 18px; }

/* 步骤介绍 */
.steps-wrap { margin-bottom: 26px; }
.steps-head { font-size: 22px; font-weight: 900; margin-bottom: 16px; display: flex; align-items: center; gap: 10px; }
.step-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.step-card { background: var(--surface); border: var(--border); box-shadow: var(--shadow); padding: 16px; border-left: 12px solid var(--c-purple); }
.step-card .top { display: flex; align-items: center; gap: 12px; margin-bottom: 8px; }
.step-card .sno { width: 40px; height: 40px; background: var(--c-purple); color: #fff; border: 3px solid var(--ink);
  display: grid; place-items: center; font-size: 20px; font-weight: 900; box-shadow: var(--shadow-sm); }
.step-card .sicon { font-size: 24px; }
.step-card .stitle { font-size: 17px; font-weight: 900; }
.step-card .sdesc { font-size: 13px; font-weight: 700; line-height: 1.7; }
.step-card .stip { font-size: 12px; font-weight: 800; margin-top: 10px; background: var(--c-yellow);
  border: 2px solid var(--ink); padding: 7px 10px; }

.win-rule { background: var(--c-green); border: var(--border); box-shadow: var(--shadow);
  padding: 18px 22px; font-size: 16px; font-weight: 900; margin-bottom: 28px; }
.guide-start { text-align: center; }
.btn-start {
  font-size: 22px; font-weight: 900; padding: 18px 56px; border: 4px solid var(--ink);
  background: var(--c-red); color: #fff; cursor: pointer; box-shadow: 8px 8px 0 var(--ink);
  transition: transform .1s, box-shadow .1s;
}
.btn-start:hover { transform: translate(-2px,-2px); box-shadow: 10px 10px 0 var(--ink); }
.btn-start:active { transform: translate(8px,8px); box-shadow: 0 0 0 var(--ink); }

/* ---------- 日志时间线 ---------- */
.log-toolbar { display: flex; gap: 10px; align-items: center; margin-bottom: 18px; flex-wrap: wrap; }
.log-toolbar .info { font-weight: 800; font-size: 14px; }
.timeline { position: relative; padding-left: 34px; }
.timeline::before { content: ''; position: absolute; left: 14px; top: 6px; bottom: 6px; width: 4px; background: var(--ink); }
.log-item { position: relative; margin-bottom: 16px; background: var(--surface); border: 3px solid var(--ink);
  box-shadow: var(--shadow-sm); padding: 11px 14px; }
.log-item::before { content: ''; position: absolute; left: -29px; top: 14px; width: 18px; height: 18px;
  border: 3px solid var(--ink); background: var(--c-yellow); }
.log-item .lh { display: flex; gap: 10px; align-items: center; font-weight: 900; font-size: 14px; }
.log-item .lr { font-size: 11px; font-weight: 800; color: var(--ink-soft); background: var(--surface-2);
  border: 2px solid var(--ink); padding: 1px 8px; }
.log-item .ld { font-size: 13px; font-weight: 700; margin-top: 4px; line-height: 1.5; }
.log-item.t-recruit::before { background: var(--c-blue); }
.log-item.t-unlock::before { background: var(--c-green); }
.log-item.t-order::before { background: var(--c-orange); }
.log-item.t-phase::before { background: var(--c-purple); }
.log-item.t-buy::before { background: var(--c-yellow); }
.log-item.t-round::before { background: #fff; }
.log-item.t-end::before { background: var(--c-red); }
.log-empty { text-align: center; color: var(--muted); font-weight: 800; padding: 40px; border: 3px dashed var(--ink); }

/* ---------- 复盘页 ---------- */
#review {
  position: fixed; inset: 0; z-index: 200; overflow: auto;
  background: var(--bg); background-image: radial-gradient(rgba(17,17,17,0.06) 1px, transparent 1px);
  background-size: 24px 24px; padding: 40px 24px 70px;
}
#review.hidden { display: none; }
.review-inner { max-width: 1080px; margin: 0 auto; }
.review-hero { background: var(--c-red); color: #fff; border: var(--border); box-shadow: var(--shadow);
  padding: 26px 30px; margin-bottom: 24px; position: relative; }
.review-hero h1 { font-size: 30px; color: #fff; }
.review-hero .score-big { font-size: 64px; font-weight: 900; line-height: 1; margin: 10px 0; }
.review-hero .score-sub { font-size: 15px; font-weight: 800; opacity: .92; }
.review-hero .rank { position: absolute; top: 22px; right: 28px; background: var(--c-yellow); color: var(--ink);
  border: 3px solid var(--ink); padding: 8px 18px; font-weight: 900; font-size: 18px; transform: rotate(-5deg);
  box-shadow: var(--shadow-sm); }
.review-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-bottom: 26px; }
.stat-box { background: var(--surface); border: var(--border); box-shadow: var(--shadow); padding: 14px; text-align: center; }
.stat-box .sv { font-size: 28px; font-weight: 900; }
.stat-box .sl { font-size: 12px; font-weight: 800; color: var(--ink-soft); margin-top: 4px; }
.stat-box:nth-child(1) { border-top: 10px solid var(--c-blue); }
.stat-box:nth-child(2) { border-top: 10px solid var(--c-green); }
.stat-box:nth-child(3) { border-top: 10px solid var(--c-orange); }
.stat-box:nth-child(4) { border-top: 10px solid var(--c-purple); }

.dim-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-bottom: 26px; }
.dim-card { background: var(--surface); border: var(--border); box-shadow: var(--shadow); padding: 16px; }
.dim-card .dh { display: flex; align-items: center; gap: 10px; font-size: 17px; font-weight: 900; }
.dim-card .dh .swatch { width: 18px; height: 18px; border: 3px solid var(--ink); }
.dim-card .dp { font-size: 13px; font-weight: 700; line-height: 1.7; margin: 10px 0; }
.dim-card .dm { display: flex; gap: 6px; flex-wrap: wrap; }
.dim-card .dm .m { font-size: 11px; font-weight: 800; background: var(--surface-2); border: 2px solid var(--ink); padding: 3px 8px; }

.tpl-box { background: var(--surface); border: var(--border); box-shadow: var(--shadow); padding: 18px; margin-bottom: 26px; }
.tpl-box h3 { font-size: 18px; }
.tpl-row { display: grid; grid-template-columns: 160px 1fr; gap: 14px; padding: 12px 0; border-bottom: 2px dashed var(--ink); }
.tpl-row:last-child { border-bottom: none; }
.tpl-row .tk { font-weight: 900; font-size: 14px; background: var(--c-yellow); border: 2px solid var(--ink); padding: 6px 10px; align-self: start; }
.tpl-row .tv { font-size: 13px; font-weight: 700; line-height: 1.7; }
.tpl-row textarea { width: 100%; min-height: 60px; border: 3px solid var(--ink); padding: 9px;
  font-family: var(--font); font-weight: 700; font-size: 13px; background: var(--surface-2); resize: vertical; }

.review-tl-title { font-size: 20px; font-weight: 900; margin-bottom: 14px; }
.review-actions { display: flex; gap: 12px; margin-top: 10px; flex-wrap: wrap; }

/* ---------- Modal / Toast ---------- */
.modal { position: fixed; inset: 0; background: rgba(17,17,17,0.5); display: flex;
  align-items: center; justify-content: center; z-index: 150; }
.modal.hidden { display: none; }
.modal-body { background: var(--surface); border: var(--border); box-shadow: var(--shadow);
  padding: 26px; max-width: 540px; width: 92%; max-height: 84vh; overflow: auto; position: relative; }
.modal-body .close { position: absolute; top: 12px; right: 16px; border: 3px solid var(--ink);
  background: var(--c-red); color: #fff; width: 36px; height: 36px; font-size: 20px; font-weight: 900; cursor: pointer; box-shadow: var(--shadow-sm); }
.modal h3 { margin-top: 0; font-size: 20px; }
.modal .detail { font-size: 13px; font-weight: 700; margin-bottom: 8px; line-height: 1.7; }
.modal .actions { margin-top: 16px; justify-content: flex-end; }

.toast { position: fixed; bottom: 26px; left: 50%; transform: translateX(-50%) translateY(160%);
  background: var(--ink); color: #fff; padding: 12px 22px; border: 3px solid #fff; font-weight: 900; font-size: 14px;
  transition: transform .3s; z-index: 160; box-shadow: var(--shadow); }
.toast.show { transform: translateX(-50%) translateY(0); }

/* ---------- 响应式 ---------- */
@media (max-width: 1100px) {
  .board-grid, .guide-grid, .step-grid, .dim-grid, .review-stats { grid-template-columns: 1fr; }
  .resource-layout { grid-template-columns: 1fr; }
  .market-cats { grid-template-columns: 1fr; }
  .rules-layout { grid-template-columns: 1fr; }
  .loop-track { grid-template-columns: 1fr 1fr; }
  .loop-step:nth-child(odd) { border-right: 3px solid var(--ink); }
  .tpl-row { grid-template-columns: 1fr; }
}

/* ---------- 直播开关 ---------- */
.btn.on { background: var(--c-green, #2ecc71); color: #fff; border-color: var(--ink); box-shadow: inset 0 0 0 2px #fff; }
.btn.on::before { content: ''; display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: #fff; margin-right: 6px; vertical-align: middle; animation: livePulse 1.2s infinite; }
@keyframes livePulse { 0%,100% { opacity: 1; } 50% { opacity: .25; } }

/* ---------- 通用隐藏 ---------- */
.hidden { display: none !important; }

/* ---------- 登录口令层 ---------- */
#login-gate { position: fixed; inset: 0; z-index: 9999; background: #FFF5E1;
  display: flex; align-items: center; justify-content: center; font-family: var(--font); padding: 20px; }
.login-card { background: #fff; border: 4px solid var(--ink); box-shadow: 8px 8px 0 var(--ink);
  padding: 40px 36px; max-width: 400px; width: 100%; text-align: center; }
.login-card .badge { display: inline-block; background: var(--c-yellow); border: 3px solid var(--ink);
  box-shadow: var(--shadow-sm); padding: 4px 12px; font-weight: 900; font-size: 13px; margin-bottom: 16px; }
.login-card h1 { font-family: var(--font); font-size: 24px; font-weight: 900; color: var(--ink); margin: 0 0 8px; }
.login-card .sub { font-size: 14px; color: var(--ink-soft); margin: 0 0 22px; }
.login-card input { width: 100%; padding: 14px 16px; font-size: 17px; font-weight: 800; text-align: center;
  border: 4px solid var(--ink); box-shadow: var(--shadow-sm); outline: none; margin-bottom: 16px; font-family: var(--font); }
.login-card input:focus { box-shadow: var(--shadow); }
.login-card .btn { width: 100%; padding: 14px; font-size: 17px; }
.login-err { color: var(--c-red); font-weight: 900; font-size: 13px; min-height: 18px; margin-top: 10px; }
.login-divider { margin-top: 22px; padding-top: 16px; border-top: 3px dashed var(--ink);
  font-size: 11px; font-weight: 900; color: var(--ink-soft); letter-spacing: 2px; }
.login-link { display: block; margin-top: 12px; padding: 14px 16px; font-size: 14px; font-weight: 900;
  color: var(--ink); text-decoration: none; background: var(--c-yellow); border: 3px solid var(--ink);
  box-shadow: 4px 4px 0 var(--ink); transition: transform .1s, box-shadow .1s; }
.login-link:hover { transform: translate(-1px,-1px); box-shadow: 5px 5px 0 var(--ink); }
.login-link:active { transform: translate(2px,2px); box-shadow: 2px 2px 0 var(--ink); }
.group-label { font-size: 12px; font-weight: 900; color: var(--ink-soft); letter-spacing: 2px; margin: 2px 0 10px; }
.group-picker { display: grid; grid-template-columns: repeat(5, 1fr); gap: 8px; margin-bottom: 16px; }
.gp { padding: 10px 0; font-size: 16px; font-weight: 900; font-family: var(--font); cursor: pointer;
  background: #fff; border: 3px solid var(--ink); box-shadow: 3px 3px 0 var(--ink); color: var(--ink); }
.gp:hover { transform: translate(-1px,-1px); box-shadow: 4px 4px 0 var(--ink); }
.gp.sel { background: var(--c-yellow); }
.gp:active { transform: translate(2px,2px); box-shadow: 1px 1px 0 var(--ink); }

.notice-bar { background: var(--c-yellow); border-bottom: 4px solid var(--ink);
  padding: 10px 22px; font-size: 14px; font-weight: 800; color: var(--ink); }
.lock-bar { background: var(--c-red); color: #fff; border-bottom: 4px solid var(--ink);
  padding: 10px 22px; font-size: 14px; font-weight: 900; text-align: center; }
/* v3.10：轮次横幅 —— NPC 一键推进时提示「第 N 轮开始」，不阻塞操作 */
.round-banner { background: #B6D035; color: var(--ink); border-bottom: 4px solid var(--ink);
  padding: 10px 22px; font-size: 15px; font-weight: 900; text-align: center; }

/* ============ v3.1 4 色团队 / 4 色成果样式 ============ */

/* 顶部 4 色成果 pill */
.pill.ach { background: var(--c-blue); color: #fff; padding-left: 12px; }
.pill.ach #achievements { display: flex; align-items: center; gap: 4px; }
.ach-dot { display: inline-block; width: 12px; height: 12px; border-radius: 50%; border: 2px solid #111; box-shadow: 0 0 0 1px #fff inset; vertical-align: middle; }
.ach-num { font-weight: 900; font-size: 14px; min-width: 18px; text-align: right; }
.ach-sep { display: inline-block; width: 4px; }

/* 盘面图下的成果储备 4 色小点 */
.ach-mini { display: inline-block; width: 10px; height: 10px; border-radius: 50%; border: 1.5px solid #111; vertical-align: middle; margin: 0 4px 0 6px; }

/* 4 色团队卡容器 */
.team-section-head { display: flex; justify-content: space-between; align-items: center; margin: 18px 0 0; gap: 12px; flex-wrap: wrap; }
.team-section-head h2 { margin: 0; }
.team-section-head .btn { font-size: 13px; padding: 6px 12px; }
.team-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 12px; margin: 8px 0 18px; }

/* 单张 4 色团队卡 */
.team-card {
  background: var(--surface);
  border: 4px solid var(--ink);
  box-shadow: var(--shadow);
  border-radius: 4px;
  overflow: hidden;
  position: relative;
  transition: transform 0.15s;
}
.team-card:hover { transform: translate(-2px,-2px); box-shadow: 8px 8px 0 var(--ink); }
.team-color-bar { height: 12px; }
.team-body { padding: 12px 14px 14px; }
.team-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 6px; }
.team-name { font-size: 14px; font-weight: 900; color: var(--ink); }
.team-tag { font-size: 10px; font-weight: 900; padding: 2px 7px; background: var(--ink); color: #fff; border-radius: 3px; letter-spacing: 0.5px; }
.team-num { font-size: 32px; font-weight: 900; color: var(--ink); line-height: 1; margin: 6px 0 4px; }
.team-cap { font-size: 14px; color: #888; font-weight: 800; }
.team-ach { font-size: 12px; font-weight: 800; color: var(--ink-soft); margin: 2px 0 4px; }
.team-cost { font-size: 11px; font-weight: 800; color: var(--ink-soft); margin: 4px 0 10px; padding: 5px 8px; background: var(--surface-2); border-left: 3px solid var(--team-color, #111); }
.team-cost b { color: #c0392b; }
.team-hint { font-size: 10px; color: #888; margin-top: 6px; font-weight: 700; }

/* 4 色合计卡：顶部色条为 4 色渐变 */
.team-summary .team-cost b { color: #111; }
.team-card button[disabled] { opacity: 0.5; cursor: not-allowed; }
.team-card button.primary[disabled] { background: var(--c-gray, #ccc); color: #fff; }

/* 节点色圈 tooltip（4 色明细） */
.tree-tooltip { font-family: var(--font); }
.cc-row { display: inline-flex; align-items: center; gap: 4px; }
.cc-cc { display: inline-block; width: 10px; height: 10px; border-radius: 50%; border: 1.5px solid #111; vertical-align: middle; }
.cc-total { color: #555; font-weight: 800; font-size: 11px; }

/* 盘面图下的 4 色成果显示小样式 */
.tree-legend .ach-mini { margin-right: 2px; }

/* ============ v3.3 团队 tab（并入主界面） ============ */
.team-rules { background: var(--surface); border: var(--border); box-shadow: var(--shadow); padding: 20px; border-radius: 4px; margin-bottom: 24px; }
.team-rules h2 { font-size: 18px; }
.team-rules ul { margin: 0; padding-left: 20px; }
.team-rules li { font-size: 14px; line-height: 1.9; }
.team-cost-panel { background: var(--surface); border: var(--border); box-shadow: var(--shadow); padding: 20px; border-radius: 4px; margin: 24px 0; }
.team-cost-panel h2 { font-size: 18px; }
.salary-schedule { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-bottom: 12px; }
.salary-cell { padding: 12px; border: 2px solid var(--ink); border-radius: 4px; text-align: center; background: #fff; }
.salary-cell .r { font-size: 12px; color: var(--ink-soft); font-weight: 800; }
.salary-cell .v { font-size: 26px; font-weight: 900; margin: 4px 0; }
.salary-cell .l { font-size: 11px; color: #777; }
.total-line { padding: 14px; background: var(--ink); color: var(--c-yellow); border-radius: 4px; text-align: center; font-weight: 900; margin-top: 10px; font-size: 16px; }
.team-cost-panel .legend { font-size: 12px; color: var(--ink-soft); margin-top: 8px; line-height: 1.6; }
#tab-team .team-grid { grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); }

/* ============ v3.3 组别下拉框 + 选中反馈 ============ */
.group-select {
  width: 100%; padding: 18px 18px; font-size: 24px; font-weight: 900;
  border: 4px solid var(--ink); box-shadow: var(--shadow-sm); outline: none;
  background: #fff; color: var(--ink); cursor: pointer; font-family: var(--font);
  margin-bottom: 10px; text-align: center; text-align-last: center;
  transition: background .15s;
}
.group-select option { font-size: 20px; font-weight: 900; }
.group-select:focus { box-shadow: var(--shadow); }
.group-select.picked { background: var(--c-yellow); }
.group-feedback { font-size: 13px; font-weight: 900; color: var(--c-green); min-height: 20px; margin: 0 0 12px; opacity: 0; transition: opacity .2s; }
.group-feedback.show { opacity: 1; }

/* NPC 入口（讲师入口用蓝色系区分） */
.login-link-npc { background: var(--c-blue); color: #fff; }

/* ============================================================
   v3.4 新手教练窗 + 组间沟通 + 复盘顶部返回 + 演练成绩
   ============================================================ */
/* 演练徽标 */
#coach-badge {
  position: fixed; top: 8px; left: 50%; transform: translateX(-50%);
  z-index: 2900; background: #FFE066; color: #111;
  font-weight: 900; font-size: 13px; padding: 6px 14px;
  border: 3px solid #111; border-radius: 999px; box-shadow: 3px 3px 0 rgba(17,17,17,.25);
  pointer-events: none; white-space: nowrap;
}
/* 教练窗 */
.coach-window {
  position: fixed; right: 16px; top: 92px; width: 372px; height: min(72vh, 600px);
  min-width: 300px; min-height: 240px; z-index: 3000;
  display: flex; flex-direction: column;
  background: #FFFEF9; border: 3px solid #111; border-radius: 16px;
  box-shadow: 7px 7px 0 rgba(17,17,17,.22); overflow: hidden;
  font-family: inherit; font-size: 13.5px; color: #111; resize: both;
}
.coach-window.max { width: min(680px, 92vw); height: min(88vh, 820px); }
.coach-window.collapsed { height: auto; resize: none; }
.coach-window.collapsed .coach-progress,
.coach-window.collapsed .coach-mission-tabs,
.coach-window.collapsed .coach-body,
.coach-window.collapsed .coach-foot { display: none; }
.coach-head {
  display: flex; align-items: center; gap: 6px; cursor: move; user-select: none;
  background: #111; color: #fff; padding: 8px 10px;
}
.coach-title { font-weight: 900; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 14px; }
.coach-round { font-size: 11px; background: #FFE066; color: #111; border-radius: 999px; padding: 2px 8px; font-weight: 900; white-space: nowrap; }
.coach-ctrl { display: flex; gap: 2px; }
.coach-ico {
  width: 22px; height: 22px; line-height: 1; border-radius: 6px; border: none;
  background: rgba(255,255,255,.16); color: #fff; font-size: 13px; font-weight: 900; cursor: pointer;
}
.coach-ico:hover { background: #FF5757; }
.coach-progress { height: 6px; background: #eee; }
.coach-progress .cp-bar { height: 100%; background: linear-gradient(90deg,#06D6A0,#00BBF9); width: 0%; transition: width .3s; }
.coach-mission-tabs { display: flex; gap: 4px; padding: 8px 10px 2px; }
.cm-tab {
  flex: 1; height: 26px; border: 2px solid #111; border-radius: 8px; background: #fff;
  font-weight: 900; font-size: 12px; cursor: pointer; color: #111;
}
.cm-tab.cur { background: #FFE066; box-shadow: 2px 2px 0 #111; }
.cm-tab.done { background: #06D6A0; color: #fff; border-color: #06D6A0; }
.cm-tab:hover { transform: translateY(-1px); }
.coach-body { flex: 1; overflow-y: auto; padding: 8px 12px 12px; }
.coach-ms .coach-mtitle { font-weight: 900; font-size: 16px; margin: 2px 0 4px; }
.coach-ms .coach-mintro { color: #555; margin-bottom: 10px; line-height: 1.5; font-size: 12.5px; }
.coach-steps { display: flex; flex-direction: column; gap: 8px; }
.cstep {
  display: flex; gap: 8px; padding: 9px 10px; border-radius: 10px;
  border: 2px solid #ddd; background: #fff; opacity: .72;
}
.cstep.cur { border-color: #111; box-shadow: 3px 3px 0 rgba(255,159,10,.5); background: #FFF8E6; opacity: 1; }
.cstep.done { border-color: #06D6A0; background: #F0FFF9; opacity: 1; }
.cstep-ico { font-size: 16px; line-height: 1.2; }
.cstep-txt { flex: 1; }
.cstep-t { font-weight: 800; font-size: 13px; }
.cstep.cur .cstep-t::after { content: ' ← 当前步骤'; color: #FF9F0A; font-weight: 900; }
.cstep-why { color: #777; font-size: 12px; margin-top: 3px; line-height: 1.45; }
.coach-foot {
  display: flex; gap: 6px; padding: 8px 10px; border-top: 2px solid #eee; flex-wrap: wrap;
}
.coach-btn-sm { font-size: 12px !important; padding: 6px 10px !important; flex: 1; white-space: nowrap; }
/* 高亮光圈 */
.coach-ring {
  position: fixed; z-index: 2990; pointer-events: none; border-radius: 12px;
  border: 3px dashed #FF9F0A; box-shadow: 0 0 0 4px rgba(255,159,10,.18), 0 0 18px rgba(255,159,10,.6);
  animation: coachPulse 1.1s ease-in-out infinite;
}
@keyframes coachPulse { 0%,100% { box-shadow: 0 0 0 4px rgba(255,159,10,.15), 0 0 12px rgba(255,159,10,.45); } 50% { box-shadow: 0 0 0 7px rgba(255,159,10,.28), 0 0 26px rgba(255,159,10,.8); } }
/* 成绩单 */
.coach-report { text-align: center; padding: 8px 4px 2px; }
.coach-report .cr-title { font-weight: 900; font-size: 17px; margin-bottom: 8px; }
.cr-score { font-size: 46px; font-weight: 900; line-height: 1; color: #111; }
.cr-score .cr-unit { font-size: 16px; font-weight: 800; }
.cr-grade { display: inline-block; margin: 8px 0; padding: 5px 14px; border-radius: 999px; font-weight: 900; font-size: 15px; }
.cr-grade.A { background: #FF5757; color: #fff; } .cr-grade.B { background: #FF9F0A; color: #fff; }
.cr-grade.C { background: #FFE066; color: #111; } .cr-grade.D { background: #bbb; color: #fff; }
.cr-rows { display: flex; flex-direction: column; gap: 6px; background: #fff; border: 2px solid #111; border-radius: 12px; padding: 10px 12px; margin: 10px 0; }
.cr-row { display: flex; justify-content: space-between; font-size: 13px; }
.cr-todo { color: #B8860B; font-weight: 700; margin: 6px 0; font-size: 12.5px; }
.cr-done { color: #069B6E; font-weight: 800; margin: 6px 0; font-size: 13px; }
.cr-actions { display: flex; gap: 8px; justify-content: center; margin-top: 10px; flex-wrap: wrap; }
/* 复盘顶部返回 */
.review-topbar { position: sticky; top: 0; z-index: 20; display: flex; justify-content: flex-end; padding: 6px 2px; background: #FFFDF5; border-bottom: 2px solid #eee; margin-bottom: 10px; }
/* 沟通留言墙 */
.chat-card { display: flex; flex-direction: column; gap: 10px; max-width: 900px; }
.chat-head h2 { margin: 0 0 4px; }
.chat-send { display: flex; gap: 8px; align-items: stretch; }
.chat-send textarea { flex: 1; resize: vertical; min-height: 48px; border: 3px solid #111; border-radius: 10px; padding: 10px; font-size: 14px; font-family: inherit; outline: none; }
.chat-send .btn { align-self: stretch; min-width: 86px; }
.chat-list { display: flex; flex-direction: column; gap: 8px; max-height: 55vh; overflow-y: auto; }
.chat-empty { color: #999; padding: 26px; text-align: center; font-weight: 700; background: #fff; border: 2px dashed #ccc; border-radius: 12px; }
.chat-msg { background: #fff; border: 2px solid #111; border-radius: 12px; padding: 8px 12px; box-shadow: 3px 3px 0 rgba(17,17,17,.12); }
.chat-msg.own { border-color: #111; background: #FFF8E6; box-shadow: 4px 4px 0 #FFE066; }
.chat-msg-head { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; }
.chat-badge { color: #fff; font-size: 11px; font-weight: 900; border-radius: 999px; padding: 2px 9px; }
.chat-local { font-size: 11px; color: #B8860B; font-weight: 800; }
.chat-time { font-size: 11px; color: #999; margin-left: auto; }
.chat-text { font-size: 14px; line-height: 1.5; word-break: break-word; }
/* 新手演练成绩（复盘 tab） */
.guide-report { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.guide-report.hint { color: #666; font-size: 13px; }
.gr-list { display: flex; flex-direction: column; gap: 4px; margin-top: 8px; }
.gr-row { display: flex; align-items: center; gap: 10px; background: #fff; border: 2px solid #111; border-radius: 10px; padding: 6px 10px; font-size: 13px; }
.gr-no { color: #777; font-weight: 700; }
.gr-score { font-weight: 900; font-size: 15px; }
.gr-grade { padding: 1px 9px; border-radius: 999px; font-weight: 900; font-size: 12px; }
.gr-grade.A { background: #FF5757; color: #fff; } .gr-grade.B { background: #FF9F0A; color: #fff; }
.gr-grade.C { background: #FFE066; color: #111; } .gr-grade.D { background: #bbb; color: #fff; }
.gr-ok { font-weight: 800; } .gr-meta { color: #888; font-size: 12px; margin-left: auto; }
.coach-btn-sm { }

/* ============ v3.6 甲方池 / 投资卡 ============ */
.pill.sat { background: #2FB4EC; color: #fff; padding-left: 12px; }
.pill.blk { background: #d32f2f; color: #fff; padding-left: 12px; }
.pill.sat #satisfaction, .pill.blk #blacklist { font-weight: 900; }

.pool-meta { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 10px; }
.meta-chip { background: #FFF; border: 2px solid #111; border-radius: 999px; padding: 4px 12px; font-size: 13px; font-weight: 700; box-shadow: 2px 2px 0 rgba(17,17,17,.18); }

.pool-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 16px; margin: 12px 0; }
.pool-card { background: #fff; border: 3px solid var(--ink, #111); border-radius: 14px; overflow: hidden; box-shadow: 4px 4px 0 rgba(17,17,17,.18); display: flex; flex-direction: column; }
.pool-card-head { background: var(--pool-bg, #1F4C7C); color: #fff; display: flex; align-items: center; justify-content: space-between; padding: 10px 14px; font-weight: 900; }
.pool-level { font-size: 18px; }
.pool-status { font-size: 12px; background: rgba(255,255,255,.18); padding: 3px 10px; border-radius: 999px; }
.pool-card > div { padding: 10px 14px; font-size: 13px; border-bottom: 1px dashed #eee; }
.pool-card > div:last-child { border-bottom: none; }
.pool-card .pool-actions { padding: 12px 14px; background: #FAFAFA; border-top: 2px solid #eee; border-bottom: none; }
.pool-card .pool-demand b { color: var(--pool-color); font-weight: 900; }
.pool-card .pool-pub .tag { margin-right: 4px; }
.pool-card .pool-skip { font-size: 11px; color: #B8860B; background: #FFF8E6; padding: 6px 10px; border-radius: 8px; }
.pool-card .lh { color: #888; font-size: 11px; font-weight: 900; margin-right: 8px; display: inline-block; min-width: 56px; }
.pool-card .muted { color: #999; font-size: 12px; }
.pool-card .pool-sat b { color: #FF9F0A; font-size: 16px; }

.pool-reference { background: #FFF8E6; border: 2px dashed #FF9F0A; border-radius: 12px; padding: 16px 22px; font-size: 14px; line-height: 1.7; }
.pool-reference ul { margin: 6px 0 6px 20px; padding: 0; }
.pool-reference li { margin: 4px 0; }

.invest-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 14px; margin: 12px 0; }
.invest-card { background: #fff; border: 3px solid var(--ink, #111); border-radius: 14px; overflow: hidden; box-shadow: 4px 4px 0 rgba(17,17,17,.18); display: flex; flex-direction: column; }
.invest-card-head { background: var(--invest-color); color: #fff; padding: 10px 14px; display: grid; grid-template-columns: auto 1fr auto; gap: 10px; align-items: center; font-weight: 900; }
.invest-id { font-size: 12px; background: rgba(255,255,255,.22); padding: 3px 10px; border-radius: 999px; }
.invest-name { font-size: 16px; }
.invest-cost { font-size: 16px; background: rgba(0,0,0,.22); padding: 4px 12px; border-radius: 999px; }
.invest-desc { padding: 12px 14px; font-size: 13px; line-height: 1.6; flex: 1; color: #444; }
.invest-card .btn { margin: 0 14px 14px; }

/* ============ v3.6 讲师推送订单区 ============ */
.pushed-orders-wrap { margin-bottom: 26px; }
.pushed-orders-wrap h2 { display: flex; align-items: center; gap: 8px; }
.pushed-orders {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(290px, 1fr));
  gap: 16px;
}
.push-empty {
  border: 3px dashed #cfcfcf; padding: 16px 18px; font-size: 13px;
  font-weight: 800; color: #8a8a8a; background: #fff;
}
.order-card.pushed { border-top-color: var(--c-purple); background: #FBF6FF; }
.order-card.pushed .order-name { color: #6a2fb0; }
.order-card.pushed.locked { opacity: .82; }
.order-card.pushed .btn.success { background: var(--c-green); color: #062; }

/* ============ v3.7 已签约订单 / 项目部承接阶段 / 撤回 ============ */
.cnt-badge {
  display: inline-block; min-width: 22px; text-align: center;
  background: var(--ink); color: #fff; border-radius: 10px;
  font-size: 12px; font-weight: 900; padding: 1px 7px; margin-left: 6px;
}
.order-card.ref { background: #FAFAFA; }
.order-card.ref.locked { opacity: .55; }
.order-ref-note { margin-top: 6px; font-size: 11px; font-weight: 800; color: #888; }
.order-card.signed { border-top-color: var(--c-blue); background: #F4F9FF; }
.order-card.signed .order-name { color: #1F4C7C; }
.task-sel {
  width: 100%; margin-top: 8px; padding: 8px 10px; font-size: 12px; font-weight: 800;
  border: 2px solid var(--ink); background: #fff; color: var(--ink);
}
.task-empty { font-size: 12px; font-weight: 800; color: var(--muted); margin-top: 6px; }
.task-note { font-size: 12px; font-weight: 800; color: #b8860b; margin-top: 6px; }
.task-need { font-size: 12px; font-weight: 800; color: var(--ink-soft); margin-top: 6px; }
.pool-sign-row { display: flex; align-items: center; gap: 8px; }
.pool-sign-row label { font-size: 12px; font-weight: 800; color: var(--ink-soft); white-space: nowrap; }
.pool-sign-row input {
  width: 62px; padding: 6px 8px; font-size: 14px; font-weight: 900;
  border: 2px solid var(--ink); text-align: center; background: #fff;
}
.pool-return { margin-top: 8px; width: 100%; }
.market-note {
  border: 2px dashed #cfcfcf; background: #fff; padding: 8px 12px; margin-bottom: 10px;
  font-size: 12px; font-weight: 800; color: #6a6a6a;
}
.undo-btn {
  margin-left: auto; padding: 3px 10px; font-size: 11px; font-weight: 900;
  border: 2px solid var(--ink); background: var(--yellow); box-shadow: 2px 2px 0 var(--ink);
  cursor: pointer;
}
.undo-btn:hover { background: #ffe066; }

/* ---------- v3.8 每轮市场价格 ---------- */
.market-round {
  border-style: solid; border-color: var(--ink);
  background: var(--c-yellow); color: var(--ink); line-height: 1.7;
}
.market-round b { color: #b3261e; }
.market-item.out {
  opacity: .6;
  background: repeating-linear-gradient(45deg, #f4f4f4, #f4f4f4 6px, #e4e4e4 6px, #e4e4e4 12px);
}
.market-item.out .price { color: #999; }
.market-item.out input, .market-item.out button { cursor: not-allowed; }
.undo-btn { background: var(--c-yellow); }

/* ---------- v3.9 讲师推进确认（小组端） ---------- */
.adv-hint {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 9px 14px; font-size: 13px; font-weight: 900;
  color: var(--ink); background: var(--c-yellow);
  border: 3px solid var(--ink); box-shadow: var(--shadow-sm);
  white-space: nowrap;
}
.adv-modal {
  position: fixed; inset: 0; z-index: 9999;
  display: flex; align-items: center; justify-content: center;
  background: rgba(17,17,17,.55); padding: 20px;
}
.adv-modal.hidden { display: none; }
.adv-card {
  width: min(430px, 100%);
  background: var(--surface); border: 4px solid var(--ink);
  box-shadow: 8px 8px 0 var(--ink);
  padding: 26px 24px 22px; text-align: center;
  animation: advPop .16s ease-out;
}
@keyframes advPop { from { transform: scale(.92); opacity: 0; } to { transform: scale(1); opacity: 1; } }
.adv-ico { font-size: 42px; line-height: 1; }
.adv-card h3 { margin: 12px 0 10px; font-size: 21px; font-weight: 900; color: var(--ink); }
.adv-card h3 span { color: #b3261e; }
.adv-card .adv-desc { margin: 0 0 20px; font-size: 13px; line-height: 1.75; color: var(--ink-soft); }
.adv-acts { display: flex; gap: 12px; }
.adv-acts button {
  flex: 1; padding: 13px 10px; font-size: 15px; font-weight: 900;
  font-family: var(--font); border: 3px solid var(--ink);
  box-shadow: var(--shadow-sm); cursor: pointer;
}
.adv-acts .adv-wait { background: var(--c-yellow); color: var(--ink); }
.adv-acts .adv-ok { background: var(--c-green); color: var(--ink); }
.adv-acts button:active { transform: translate(2px,2px); box-shadow: 2px 2px 0 var(--ink); }
