/* ============================================================
 * 率土配将台 · 界面主题 v2（宣纸浅色）
 * 设计语言：宣纸 + 水墨 + 鎏金（三国策略 · 历史感）
 * 展示字：思源宋体/中宋（历史题材衬线）；正文：无衬线中文栈
 * 单一鎏金强调色；圆角统一 6px；动效由 GSAP 驱动（js/app-anim.js）
 * ============================================================ */

:root {
  /* 宣纸色阶（暖白） */
  --paper-50: #fdfaf2;
  --paper-100: #f8f3e7;
  --paper-200: #f2ecdc;
  --paper-300: #e9e1cc;
  --paper-400: #ddd3ba;
  --paper-500: #cabf9f;

  /* 墨色（文字/深色元素） */
  --ink-900: #1c1a15;
  --ink-700: #3a352b;
  --ink-600: #55503f;
  --ink-500: #6e685a;

  /* 鎏金（唯一强调色，浅底用深金保对比） */
  --gold: #a97f3e;
  --gold-bright: #b98f4e;
  --gold-deep: #8a642e;
  --gold-soft: rgba(169, 127, 62, 0.12);

  /* 语义色 */
  --green: #5c7d4e;
  --red: #b0523f;
  --blue: #4f6d94;

  /* 文本 */
  --text: #2f2a23;
  --text-dim: #5d5748;
  --muted: #8a8172;

  /* 字体 */
  --font-display: "Noto Serif SC", "Source Han Serif SC", "Source Han Serif CN", "STZhongsong", "SimSun", "Songti SC", serif;
  --font-body: "HarmonyOS Sans SC", "MiSans", "PingFang SC", "Microsoft YaHei", "Segoe UI", sans-serif;
  --font-mono: "JetBrains Mono", "Cascadia Code", Consolas, "Courier New", monospace;

  --radius: 6px;
  --border: 1px solid var(--paper-400);
  --shadow-panel: 0 1px 2px rgba(60, 50, 30, 0.06), 0 6px 18px rgba(60, 50, 30, 0.06);
  --gold-glow: 0 0 0 1px rgba(169, 127, 62, 0.35), 0 0 18px rgba(169, 127, 62, 0.14);
}

* { box-sizing: border-box; margin: 0; padding: 0; }

html { scrollbar-color: var(--paper-500) transparent; }

body {
  background:
    radial-gradient(ellipse 120% 55% at 50% -20%, rgba(169, 127, 62, 0.07), transparent 60%),
    radial-gradient(ellipse 70% 40% at 100% 110%, rgba(79, 109, 148, 0.04), transparent 55%),
    var(--paper-100);
  color: var(--text);
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.65;
  min-height: 100dvh;
  -webkit-font-smoothing: antialiased;
}

/* 宣纸纤维纹理（极淡） */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  opacity: 0.5;
  background-image:
    repeating-linear-gradient(0deg, transparent 0 3px, rgba(120, 100, 60, 0.02) 3px 4px);
}

/* ---------- 页眉 ---------- */
.app-header {
  position: sticky;
  top: 0;
  z-index: 60;
  background: linear-gradient(180deg, rgba(253, 250, 242, 0.96), rgba(253, 250, 242, 0.9));
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-bottom: var(--border);
}

.header-inner {
  max-width: 1780px;
  margin: 0 auto;
  padding: 14px 24px 6px;
  display: flex;
  align-items: baseline;
  gap: 18px;
  flex-wrap: wrap;
}

.logo {
  font-family: var(--font-display);
  font-size: 30px;
  font-weight: 700;
  letter-spacing: 4px;
  color: var(--gold-deep);
  display: flex;
  align-items: center;
  gap: 12px;
  position: relative;
  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6);
}

/* 印章徽记 */
.logo-img {
  width: 38px;
  height: 38px;
  border-radius: 8px;
  box-shadow: 0 2px 6px rgba(0,0,0,.35), 0 0 0 1px var(--gold);
  background: #fff;
}

.tagline {
  color: var(--muted);
  font-size: 13px;
  letter-spacing: 1px;
}

/* 标签页导航 */
.tabs {
  display: flex;
  gap: 2px;
  max-width: 1780px;
  margin: 0 auto;
  padding: 0 24px;
  overflow-x: auto;
}

.tab-btn {
  position: relative;
  background: transparent;
  border: none;
  color: var(--muted);
  padding: 11px 20px 13px;
  font-size: 16px;
  font-family: var(--font-body);
  cursor: pointer;
  white-space: nowrap;
  transition: color 0.2s ease;
  letter-spacing: 1px;
}

.tab-btn:hover { color: var(--text-dim); }

.tab-btn.active { color: var(--gold-deep); font-weight: 600; }

/* 活动标签的金色下划线 */
.tab-btn::after {
  content: "";
  position: absolute;
  left: 16px;
  right: 16px;
  bottom: 6px;
  height: 2px;
  background: linear-gradient(90deg, var(--gold), var(--gold-bright));
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1);
}

.tab-btn.active::after { transform: scaleX(1); }

/* ---------- 主体 ---------- */
.app-main {
  position: relative;
  z-index: 1;
  max-width: 1780px;
  margin: 18px auto 48px;
  padding: 0 24px;
}

.panel {
  background: linear-gradient(180deg, var(--paper-50), var(--paper-100));
  border: var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-panel);
  padding: 24px 28px;
  margin-bottom: 20px;
  position: relative;
}

/* 面板顶部细鎏金线 */
.panel::before {
  content: "";
  position: absolute;
  top: 0;
  left: 20px;
  right: 20px;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(169, 127, 62, 0.4), transparent);
}

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

.panel-head h2 {
  font-family: var(--font-display);
  font-size: 20px;
  font-weight: 700;
  letter-spacing: 2px;
  color: var(--gold-deep);
  display: flex;
  align-items: center;
  gap: 10px;
}

/* 章节标题前的菱形点饰 */
.panel-head h2::before {
  content: "";
  width: 6px;
  height: 6px;
  background: var(--gold);
  transform: rotate(45deg);
  box-shadow: 0 0 6px rgba(169, 127, 62, 0.4);
}

.panel-head h3 {
  font-family: var(--font-display);
  font-size: 15px;
  font-weight: 700;
  color: var(--text);
  margin: 16px 0 10px;
  letter-spacing: 1px;
}

.hint { color: var(--muted); font-size: 13px; margin-top: 8px; }
code {
  background: var(--paper-200);
  border: 1px solid var(--paper-400);
  padding: 1px 7px;
  border-radius: 4px;
  color: var(--gold-deep);
  font-size: 12px;
  font-family: var(--font-mono);
}
.steps { padding-left: 20px; color: var(--muted); font-size: 13px; }
.steps li { margin: 4px 0; }

/* ---------- 消息 ---------- */
.msg {
  max-width: 1780px;
  margin: 12px auto -6px;
  padding: 9px 18px;
  border-radius: var(--radius);
  position: sticky;
  top: 86px;
  z-index: 70;
  font-size: 13px;
  box-shadow: var(--shadow-panel);
}
.msg.ok { background: #eef3e9; color: var(--green); border: 1px solid rgba(92, 125, 78, 0.4); }
.msg.err { background: #f7e9e4; color: var(--red); border: 1px solid rgba(176, 82, 63, 0.4); }

/* ---------- 库存 ---------- */
.inv-layout { display: grid; grid-template-columns: 1.25fr 1fr; gap: 16px; align-items: start; }
@media (max-width: 960px) { .inv-layout { grid-template-columns: 1fr; } }

.filter-row { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin-bottom: 12px; }
.filter-row input[type="text"], .filter-row input[type="number"], .filter-row select {
  background: var(--paper-50);
  border: 1px solid var(--paper-500);
  color: var(--text);
  padding: 6px 11px;
  border-radius: var(--radius);
  font-size: 13px;
  font-family: var(--font-body);
  outline: none;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.filter-row input[type="text"] { width: 190px; }
.filter-row input:focus, .filter-row select:focus {
  border-color: var(--gold);
  box-shadow: 0 0 0 2px var(--gold-soft);
}

.gallery {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 12px;
  max-height: 760px;
  overflow-y: auto;
  padding-right: 4px;
  user-select: none;
}

.g-card {
  background: linear-gradient(160deg, var(--paper-50), var(--paper-100));
  border: 1px solid var(--paper-400);
  border-radius: var(--radius);
  padding: 14px 16px;
  cursor: pointer;
  transition: transform 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease;
  position: relative;
}

.g-card:hover {
  transform: translateY(-2px);
  border-color: var(--gold);
  box-shadow: 0 6px 16px rgba(60, 50, 30, 0.12), 0 0 0 1px rgba(169, 127, 62, 0.2);
}

.g-card:active { transform: translateY(0) scale(0.98); }
.g-card.owned { opacity: 0.58; }
.g-card.batch-selected,
.g-card.owned.batch-selected,
.skill-card.batch-selected,
.skill-card.owned.batch-selected {
  opacity: 1;
  border-color: var(--gold);
  background: linear-gradient(145deg, rgba(212, 160, 23, 0.18), var(--paper-50));
  box-shadow: inset 0 0 0 2px rgba(169, 127, 62, 0.32), 0 5px 15px rgba(91, 64, 18, 0.14);
}
.g-card.batch-selected::after,
.skill-card.batch-selected::after {
  content: '✓';
  position: absolute;
  top: 7px;
  right: 8px;
  width: 22px;
  height: 22px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  color: #fff;
  background: var(--gold-deep);
  font-weight: 800;
  z-index: 2;
}

.g-head { display: flex; justify-content: space-between; align-items: center; }
.g-name { font-weight: 600; font-size: 16px; font-family: var(--font-display); letter-spacing: 1px; }
.g-star { font-size: 12px; letter-spacing: 1px; }
.g-meta, .g-stats, .g-skill { font-size: 12.5px; color: var(--muted); }
.g-skill { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.btn-row { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 12px; }

.batch-toolbar {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin: -2px 0 12px;
  padding: 9px 10px;
  border: 1px dashed var(--paper-500);
  background: rgba(169, 127, 62, 0.06);
}
.batch-toolbar strong { color: var(--gold-deep); min-width: 72px; font-family: var(--font-mono); }
.catalog-divider { height: 1px; margin: 24px 0 18px; background: linear-gradient(90deg, transparent, var(--paper-500), transparent); }

.skill-gallery {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 10px;
  max-height: 620px;
  overflow-y: auto;
  padding-right: 4px;
  user-select: none;
}
.skill-card {
  position: relative;
  min-height: 112px;
  padding: 12px;
  border: 1px solid var(--paper-400);
  border-radius: var(--radius);
  background: linear-gradient(160deg, var(--paper-50), var(--paper-100));
  cursor: crosshair;
  transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease;
}
.skill-card:hover { transform: translateY(-1px); border-color: var(--gold); }
.skill-card.owned { opacity: .62; }
.skill-card-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding-right: 20px; }
.skill-card-head strong { color: var(--text); font-family: var(--font-display); }
.skill-type { flex: 0 0 auto; padding: 2px 6px; border: 1px solid var(--paper-500); color: var(--gold-deep); font-size: 11px; }
.skill-card-meta { margin-top: 7px; color: var(--muted); font-size: 11.5px; }
.skill-card p { margin: 7px 0 0; color: var(--muted); font-size: 12px; line-height: 1.5; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }

.screenshot-import-panel {
  margin-top: 18px;
  padding: 14px;
  border: 1px solid var(--paper-400);
  background: rgba(169, 127, 62, 0.055);
}
.screenshot-import-status { margin: 8px 0; color: var(--muted); font-size: 12.5px; line-height: 1.6; }
.screenshot-preview { display: grid; grid-template-columns: repeat(auto-fill, minmax(88px, 1fr)); gap: 8px; }
.screenshot-preview figure { margin: 0; min-width: 0; }
.screenshot-preview img { width: 100%; height: 106px; object-fit: cover; border: 1px solid var(--paper-500); border-radius: var(--radius); display: block; }
.screenshot-preview figcaption { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--muted); font-size: 10px; margin-top: 3px; }

.btn {
  background: var(--paper-50);
  color: var(--text);
  border: 1px solid var(--paper-500);
  padding: 9px 18px;
  font-size: 14px;
  border-radius: var(--radius);
  cursor: pointer;
  font-size: 13px;
  font-family: var(--font-body);
  transition: all 0.18s ease;
}

.btn:hover { border-color: var(--gold); color: var(--gold-deep); box-shadow: 0 0 10px rgba(169, 127, 62, 0.14); }
.btn:active { transform: scale(0.97); }

.btn.primary {
  background: linear-gradient(180deg, rgba(169, 127, 62, 0.18), rgba(169, 127, 62, 0.1));
  border-color: var(--gold);
  color: var(--gold-deep);
  font-weight: 600;
}
.btn.primary:hover { box-shadow: var(--gold-glow); }

.btn.big { padding: 12px 28px; font-size: 15px; font-weight: 700; letter-spacing: 2px; }
.btn.danger:hover { border-color: var(--red); color: var(--red); }
.btn.small { padding: 5px 12px; font-size: 13px; }
.btn.tiny { padding: 1px 9px; font-size: 12px; }
.btn:disabled { opacity: 0.5; cursor: not-allowed; }
.btn:disabled:hover { box-shadow: none; border-color: var(--paper-500); color: var(--text); }
.file-btn { display: inline-block; cursor: pointer; }

.inv-list { max-height: 340px; overflow-y: auto; }
.inv-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  border-bottom: 1px solid rgba(218, 211, 186, 0.7);
  flex-wrap: wrap;
  transition: background 0.15s ease;
  border-radius: 4px;
}
.inv-row:hover { background: var(--paper-200); }
.inv-info { flex: 1; min-width: 120px; }
.inv-name { font-weight: 600; font-family: var(--font-display); }
.inv-sub { font-size: 11px; color: var(--muted); }
.inv-level input {
  width: 58px;
  background: var(--paper-100);
  border: 1px solid var(--paper-500);
  color: var(--text);
  padding: 3px 7px;
  border-radius: 4px;
  font-family: var(--font-body);
}
.inv-skills { display: flex; gap: 4px; flex-wrap: wrap; }

.os-list { max-height: 340px; overflow-y: auto; }
.os-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 5px 6px;
  border-bottom: 1px solid rgba(218, 211, 186, 0.7);
  border-radius: 4px;
  transition: background 0.15s ease;
}
.os-row:hover { background: var(--paper-200); }
.os-ctrl { display: flex; align-items: center; gap: 8px; }
.os-cnt { min-width: 22px; text-align: center; font-weight: 700; color: var(--gold-deep); font-family: var(--font-mono); }

.chip {
  display: inline-block;
  background: var(--paper-100);
  border: 1px solid var(--paper-400);
  border-radius: 12px;
  padding: 1px 10px;
  font-size: 11px;
  color: var(--text);
  cursor: pointer;
  transition: border-color 0.15s ease, color 0.15s ease;
}
.chip:hover { border-color: var(--gold); }
.chip small { color: var(--muted); }
.chip.自带 { border-color: rgba(92, 125, 78, 0.5); color: var(--green); }
.chip.学习 { border-color: rgba(79, 109, 148, 0.5); color: var(--blue); }
.chip.bond { border-color: rgba(169, 127, 62, 0.5); color: var(--gold-deep); cursor: default; }

/* ---------- 配将 ---------- */
.obj-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; }

.obj-card {
  background: linear-gradient(165deg, var(--paper-50), var(--paper-100));
  border: 1px solid var(--paper-400);
  border-radius: var(--radius);
  padding: 14px 12px;
  cursor: pointer;
  text-align: center;
  transition: all 0.2s ease;
  position: relative;
  overflow: hidden;
}

.obj-card::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 50% 0%, rgba(169, 127, 62, 0.12), transparent 70%);
  opacity: 0;
  transition: opacity 0.25s ease;
}

.obj-card:hover { transform: translateY(-2px); border-color: var(--gold); }
.obj-card:hover::before { opacity: 1; }
.obj-card:active { transform: scale(0.97); }

.obj-card.active {
  border-color: var(--gold);
  box-shadow: var(--gold-glow);
  background: linear-gradient(165deg, rgba(169, 127, 62, 0.1), var(--paper-50));
}
.obj-card.active::before { opacity: 1; }

.obj-name { font-size: 17px; font-weight: 700; font-family: var(--font-display); letter-spacing: 2px; position: relative; }
.obj-desc { font-size: 12.5px; color: var(--muted); margin-top: 4px; position: relative; }

.opt-row label { display: flex; align-items: center; gap: 6px; color: var(--muted); font-size: 12px; }
.opt-row select, .opt-row input {
  background: var(--paper-50);
  border: 1px solid var(--paper-500);
  color: var(--text);
  padding: 6px 9px;
  border-radius: var(--radius);
  font-family: var(--font-body);
}
.opt-row .chk { gap: 4px; }

.opt-mode-tabs {
  display: inline-flex;
  gap: 4px;
  margin: 0 0 14px;
  padding: 4px;
  border: 1px solid var(--paper-500);
  border-radius: calc(var(--radius) + 3px);
  background: var(--paper-100);
}
.opt-mode-tab {
  min-width: 150px;
  padding: 10px 20px;
  border: 0;
  border-radius: var(--radius);
  background: transparent;
  color: var(--muted);
  font: 600 15px var(--font-display);
  cursor: pointer;
}
.opt-mode-tab:hover { color: var(--gold-deep); background: var(--paper-50); }
.opt-mode-tab.active {
  color: #fff;
  background: linear-gradient(135deg, var(--gold), var(--gold-deep));
  box-shadow: 0 2px 8px #7c571c33;
}
.opt-mode-tab #history-count {
  display: inline-block;
  min-width: 19px;
  margin-left: 5px;
  padding: 1px 6px;
  border-radius: 999px;
  background: #00000012;
  font: 700 11px var(--font-mono);
}
.opt-mode-page[hidden] { display: none !important; }
.opt-config-panel[hidden] { display: none !important; }
.empty-note { margin: 18px 0 4px; color: var(--muted); }

.history-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-top: 10px;
  padding: 14px 16px;
  border: 1px solid var(--paper-500);
  border-radius: var(--radius);
  background: var(--paper-50);
}
.history-card-main { display: flex; align-items: center; gap: 12px; min-width: 0; }
.history-card h3 { margin: 0 0 4px; font: 700 16px var(--font-display); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.history-meta { color: var(--muted); font-size: 12px; }
.history-mode { flex: 0 0 auto; padding: 5px 9px; border-radius: 999px; color: #fff; font-size: 12px; font-weight: 700; background: var(--gold-deep); }
.history-mode.cultivate { background: #b84a2b; }
.history-mode.multi { background: #356d8f; }
.history-actions { display: flex; flex: 0 0 auto; gap: 6px; }
.history-detail-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 22px; }
.history-table { margin-top: 8px; }
.history-team-detail { margin-top: 14px; }
@media (max-width: 760px) {
  .opt-mode-tabs { display: flex; width: 100%; overflow-x: auto; }
  .opt-mode-tab { min-width: 120px; }
  .history-card { align-items: flex-start; flex-direction: column; }
  .history-actions { flex-wrap: wrap; }
}

.resource-control {
  margin: 12px 0 16px;
  padding: 12px 14px;
  border: 1px dashed var(--paper-600);
  border-radius: var(--radius);
  background: #b78b3710;
}
.panel-head.compact { margin-bottom: 8px; }
.panel-head.compact h3 { margin: 0; font-size: 15px; }
.constraint-summary { color: var(--muted); font-size: 13px; line-height: 1.8; }
.constraint-summary b { color: var(--gold-deep); }
.locked-teams { display: grid; gap: 6px; margin-top: 8px; }
.locked-team-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 7px 9px; background: var(--paper-50); border: 1px solid var(--paper-400); }
.locked-team-row small { color: var(--muted); }
.restricted-resource { opacity: .58; background: #8e3b2d0b !important; }
.active-restrict { color: #fff !important; border-color: #974836 !important; background: #974836 !important; }
.multi-summary { display: flex; justify-content: space-between; gap: 14px; margin: 8px 0 14px; padding: 14px 16px; border: 1px solid #356d8f55; background: #356d8f0c; }
.multi-summary span { color: var(--muted); }
.multi-team { margin-top: 16px; padding-top: 14px; border-top: 2px solid var(--paper-500); }
.multi-team-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.multi-team-head b { margin-left: 10px; font: 700 18px var(--font-display); }
.multi-team-head small { margin-left: 8px; color: var(--muted); }
.multi-rank { display: inline-block; padding: 4px 8px; color: #fff; background: #356d8f; border-radius: var(--radius); font-size: 12px; font-weight: 700; }

.progress {
  height: 22px;
  background: var(--paper-200);
  border: 1px solid var(--paper-500);
  border-radius: 11px;
  overflow: hidden;
  position: relative;
  margin-top: 12px;
}

.bar-fill {
  height: 100%;
  width: 0%;
  background: linear-gradient(90deg, var(--gold-deep), var(--gold), var(--gold-bright));
  background-size: 200% 100%;
  animation: gold-shimmer 2s linear infinite;
  transition: width 0.25s ease;
  border-radius: inherit;
}

@keyframes gold-shimmer {
  0% { background-position: 0% 0; }
  100% { background-position: -200% 0; }
}

.bar-text {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  color: var(--ink-900);
  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
  font-family: var(--font-mono);
}

.result-table { width: 100%; border-collapse: collapse; font-size: 14.5px; }
.result-table th {
  text-align: left;
  color: var(--gold-deep);
  font-weight: 600;
  padding: 8px 10px;
  border-bottom: 1px solid var(--paper-500);
  font-size: 12px;
  letter-spacing: 1px;
  white-space: nowrap;
  background: rgba(169, 127, 62, 0.05);
}
.result-table td { padding: 8px 10px; border-bottom: 1px solid rgba(218, 211, 186, 0.7); }
.result-table.mini th, .result-table.mini td { font-size: 13px; padding: 5px 10px; }
.opt-row { cursor: pointer; transition: background 0.15s ease; }
.opt-row:hover td { background: var(--paper-200); }
.team-cell { font-weight: 600; font-size: 15px; font-family: var(--font-display); }
.score b { color: var(--gold-deep); font-family: var(--font-mono); font-size: 16px; }
.link { color: var(--blue); font-size: 12px; }

.detail-box {
  background: linear-gradient(180deg, var(--paper-50), var(--paper-100));
  border: 1px solid var(--paper-400);
  border-radius: var(--radius);
  padding: 16px;
  margin-top: 12px;
  box-shadow: var(--shadow-panel);
}
.gen-detail { margin-bottom: 12px; }
.gen-title { font-weight: 700; font-size: 17px; font-family: var(--font-display); letter-spacing: 1px; }
.gen-title small { color: var(--muted); font-weight: 400; font-family: var(--font-body); }
.gen-stats { font-size: 13.5px; color: var(--muted); }
.gen-skills { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 4px; }
.bond-line { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 10px; }

.stat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(108px, 1fr)); gap: 8px; margin: 10px 0; }
.stat-cell {
  background: var(--paper-100);
  border: 1px solid var(--paper-400);
  border-radius: var(--radius);
  padding: 9px 8px;
  text-align: center;
  transition: border-color 0.2s ease;
}
.stat-cell:hover { border-color: var(--gold); }
.stat-label { font-size: 12.5px; color: var(--muted); }
.stat-value { font-size: 18px; font-weight: 700; color: var(--gold-deep); font-family: var(--font-mono); }

.sub-title { font-size: 13px; font-weight: 700; color: var(--text); margin: 12px 0 6px; font-family: var(--font-display); letter-spacing: 1px; }
.detail-btns { display: flex; gap: 8px; margin-top: 12px; }

/* ---------- 实验室 ---------- */
.lab-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; align-items: start; }
@media (max-width: 960px) { .lab-grid { grid-template-columns: 1fr; } }

.slot {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 9px 10px;
  margin-bottom: 8px;
  background: var(--paper-100);
  border: 1px solid var(--paper-400);
  border-radius: var(--radius);
  flex-wrap: wrap;
  transition: border-color 0.2s ease;
}
.slot:hover { border-color: var(--paper-500); }
.slot-label { font-weight: 700; color: var(--gold-deep); min-width: 30px; font-family: var(--font-mono); }
.slot select {
  font-size: 13.5px;
  background: var(--paper-50);
  border: 1px solid var(--paper-500);
  color: var(--text);
  padding: 5px 8px;
  border-radius: var(--radius);
  font-size: 12px;
  font-family: var(--font-body);
  flex: 1;
  min-width: 130px;
}
.slot .slot-level {
  font-size: 13.5px;
  width: 60px;
  background: var(--paper-50);
  border: 1px solid var(--paper-500);
  color: var(--text);
  padding: 5px 7px;
  border-radius: var(--radius);
  font-family: var(--font-body);
}
.search-select-wrap {
  display: grid;
  gap: 4px;
  min-width: 0;
}
.search-select-wrap .select-search {
  width: 100%;
  min-width: 0;
  padding: 5px 8px;
  border: 1px solid var(--paper-400);
  border-radius: var(--radius);
  color: var(--text);
  background: rgba(255, 255, 255, .58);
  font: 12px var(--font-body);
}
.search-select-wrap .select-search:focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: 1px;
}
.slot .search-select-wrap { flex: 1 1 150px; }
.slot .search-select-wrap select { width: 100%; }

.preview { font-size: 13px; color: var(--muted); margin-top: 8px; }
.lab-pool-note {
  margin: -4px 0 10px;
  padding: 6px 9px;
  color: var(--muted);
  border-left: 3px solid var(--paper-500);
  background: var(--paper-100);
  font-size: 12px;
}
#btn-lab-b-pool.active {
  color: var(--paper-50);
  border-color: var(--gold-deep);
  background: var(--gold-deep);
  box-shadow: 0 0 0 2px rgba(169, 127, 62, .14);
}
.preview-item { display: flex; justify-content: space-between; padding: 3px 0; border-bottom: 1px dashed var(--paper-400); }
.preview-name { font-weight: 600; color: var(--text); font-family: var(--font-display); }
.preview-siege { color: var(--gold-deep); font-weight: 600; margin-top: 6px; }
.preview-bonds { color: var(--gold); margin-top: 4px; }

.running { color: var(--gold-deep); font-weight: 600; }
.city-target-note {
  align-items: center;
  min-height: 34px;
  padding: 0 12px;
  border: 1px solid var(--gold);
  background: rgba(169, 127, 62, .09);
  color: var(--gold-deep);
  font-weight: 700;
}
.siege-breakdown {
  display: grid;
  grid-template-columns: minmax(110px, auto) minmax(180px, 1fr) auto;
  gap: 8px 14px;
  align-items: center;
  padding: 7px 9px;
  border-bottom: 1px dashed var(--paper-400);
  color: var(--muted);
  font-size: 12.5px;
}
.siege-breakdown b, .siege-breakdown strong { color: var(--gold-deep); }
.siege-breakdown small { grid-column: 2 / -1; color: var(--muted); }
.siege-breakdown.suppressed { opacity: .58; }
@media (max-width: 640px) { .siege-breakdown { grid-template-columns: 1fr auto; } .siege-breakdown span { grid-column: 1 / -1; } }

.vs-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; margin: 10px 0; }
.vs-card {
  background: linear-gradient(170deg, var(--paper-50), var(--paper-100));
  border: 1px solid var(--paper-400);
  border-radius: var(--radius);
  padding: 16px 14px;
  text-align: center;
  transition: border-color 0.2s ease, transform 0.2s ease;
}
.vs-card:hover { border-color: var(--gold); transform: translateY(-2px); }
.vs-name { font-size: 14px; color: var(--muted); font-family: var(--font-display); letter-spacing: 2px; }
.vs-big { font-size: 32px; font-weight: 800; margin: 4px 0; font-family: var(--font-mono); }
.simulation-rule {
  display: grid;
  gap: 5px;
  margin: 12px 0;
  padding: 12px 14px;
  color: var(--muted);
  background: rgba(169, 127, 62, .07);
  border: 1px solid rgba(169, 127, 62, .35);
  font-size: 12.5px;
  line-height: 1.55;
}
.simulation-rule b { color: var(--gold-deep); font-family: var(--font-display); }

.perunit-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 8px; margin: 10px 0; }
.pu-card {
  font-size: 13px;
  background: var(--paper-100);
  border: 1px solid var(--paper-400);
  border-radius: var(--radius);
  padding: 9px 11px;
  font-size: 12px;
  transition: border-color 0.2s ease;
}
.pu-card:hover { border-color: var(--gold); }
.pu-card.dead { border-color: var(--red); opacity: 0.8; }
.pu-name { font-weight: 700; margin-bottom: 4px; font-family: var(--font-display); }

/* 战报：墨本（浅色主题中保留一处深色对比，像纸上墨字） */
.battle-log {
  font-size: 13px;
  background: #23211c;
  border: 1px solid var(--ink-900);
  border-radius: var(--radius);
  padding: 12px 16px;
  max-height: 440px;
  overflow-y: auto;
  font-family: var(--font-mono);
  margin-top: 10px;
  color: #d8d2c2;
}
.log-round { color: var(--gold-bright); font-weight: 700; margin: 9px 0 4px; letter-spacing: 1px; }
.log-line { color: #b3ac9c; padding-left: 10px; }

/* ---------- 数据管理 ---------- */
#data-counts b { color: var(--gold-deep); font-family: var(--font-mono); }

/* ---------- 页脚 ---------- */
.app-footer {
  position: relative;
  z-index: 1;
  text-align: center;
  color: var(--muted);
  font-size: 13px;
  padding: 22px;
  border-top: 1px solid var(--paper-400);
  letter-spacing: 1px;
}

.anim-toggle {
  margin-left: 14px;
  color: var(--gold);
  cursor: pointer;
  border: 1px solid var(--paper-400);
  padding: 2px 10px;
  border-radius: 12px;
  font-size: 12px;
  transition: border-color 0.2s ease, color 0.2s ease;
  user-select: none;
}
.anim-toggle:hover { border-color: var(--gold); color: var(--gold-deep); }

/* ---------- 滚动条 ---------- */
::-webkit-scrollbar { width: 9px; height: 9px; }
::-webkit-scrollbar-thumb { background: var(--paper-500); border-radius: 5px; border: 2px solid var(--paper-100); }
::-webkit-scrollbar-thumb:hover { background: var(--gold); }
::-webkit-scrollbar-track { background: transparent; }

/* 减少动效偏好 */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
}
/* 官方武将/战法详情 */
.g-actions { margin-top: 8px; display: flex; justify-content: flex-end; }
.detail-dialog { width: min(720px, calc(100vw - 32px)); max-height: 86vh; overflow: auto; color: #e8e2d2; background: #15191c; border: 1px solid #9c7835; border-radius: 8px; padding: 26px; box-shadow: 0 24px 80px #000c; }
.detail-dialog::backdrop { background: rgba(5, 7, 8, .78); backdrop-filter: blur(3px); }
.dialog-close { position: sticky; float: right; top: 0; border: 0; background: transparent; color: #d4a017; font-size: 30px; cursor: pointer; }
.dialog-kicker { color: #b89a62; font-size: 12px; letter-spacing: .12em; text-transform: uppercase; }
.dialog-section { margin-top: 18px; padding-top: 14px; border-top: 1px solid #ffffff18; }
.dialog-section h3 { margin: 0 0 8px; color: #d4a017; }
.dialog-section p { color: #c7c3b8; line-height: 1.75; }
.detail-facts { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0; }
.detail-facts span, .pos-tag { padding: 3px 7px; border: 1px solid #9c783566; background: #d4a01712; color: #d8c69c; border-radius: 3px; }
.bio { white-space: normal; }

/* 养蛊淘汰赛 */
.panel-note { margin: 4px 0 0; color: var(--muted, #7c7466); font-size: 13px; }
.cultivate-champion { margin-top: 18px; padding: 20px; text-align: center; border: 1px solid #b68a36; background: linear-gradient(135deg, #d4a01714, #fff8e811); }
.champion-crown { color: #b17b12; font-weight: 800; letter-spacing: .25em; }
.cultivate-champion h3 { margin: 7px 0; font-size: 24px; }
.champion-meta { margin-bottom: 12px; color: var(--muted, #7c7466); }
.cultivate-bracket { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(260px, 1fr); gap: 14px; overflow-x: auto; margin-top: 18px; padding-bottom: 8px; align-items: stretch; }
.cultivate-round { display: flex; flex-direction: column; gap: 10px; min-width: 260px; }
.cultivate-round h4 { margin: 0; padding-bottom: 7px; border-bottom: 1px solid #9c783544; color: #9b6d17; }
.cultivate-match { padding: 10px; border: 1px solid #9c783533; background: #ffffff52; }
.match-team { display: flex; justify-content: space-between; gap: 10px; padding: 5px 7px; color: #766f62; }
.match-team.winner { color: #7b5310; background: #d4a01718; font-weight: 700; }
.match-team span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.match-games { margin-top: 6px; color: #948b7d; font-size: 11px; line-height: 1.5; }

/* ---------- 统一资源范围 / 手动配将 ---------- */
.resource-mode-grid { display: grid; grid-template-columns: repeat(2, minmax(220px, 1fr)); gap: 12px; }
.resource-mode-card { display: flex; gap: 10px; align-items: flex-start; padding: 13px 15px; border: 1px solid var(--paper-400); background: var(--paper-50); cursor: pointer; }
.resource-mode-card:has(input:checked) { border-color: var(--gold); box-shadow: inset 3px 0 var(--gold); background: rgba(169, 127, 62, .08); }
.resource-mode-card input { margin-top: 4px; accent-color: var(--gold-deep); }
.resource-mode-card span { display: grid; gap: 3px; }
.resource-mode-card b { color: var(--gold-deep); font-family: var(--font-display); }
.resource-mode-card small { color: var(--muted); line-height: 1.5; }
.ideal-resource-limits { margin-top: 12px; padding: 10px 12px; border: 1px dashed var(--gold); background: rgba(169, 127, 62, .05); }
.ideal-resource-limits input { width: 72px; }
#resource-scope-summary { color: var(--gold-deep); font: 700 12px var(--font-mono); }
.manual-slot { display: grid; grid-template-columns: 72px minmax(180px, 1.4fr) 74px minmax(150px, 1fr) minmax(150px, 1fr); gap: 8px; align-items: center; padding: 10px; margin-bottom: 8px; border: 1px solid var(--paper-400); background: var(--paper-100); }
.manual-slot .slot-label { min-width: 0; }
.manual-slot select, .manual-slot input { width: 100%; min-width: 0; padding: 7px 8px; border: 1px solid var(--paper-500); background: var(--paper-50); color: var(--text); }
.manual-resource-usage { margin: 10px 0; padding: 9px 12px; color: var(--muted); border-left: 3px solid var(--paper-500); background: var(--paper-100); }
.manual-resource-usage.over-limit { color: var(--red); border-left-color: var(--red); }
.enemy-builder-panel {
  position: relative;
  border-color: rgba(169, 127, 62, .7);
  background: linear-gradient(145deg, rgba(169, 127, 62, .08), var(--paper-50) 42%);
}
.enemy-builder-panel::before {
  content: "全图鉴目标";
  position: absolute;
  top: -1px;
  right: 24px;
  padding: 5px 12px;
  color: var(--paper-50);
  background: var(--gold-deep);
  font: 700 11px var(--font-mono);
  letter-spacing: .12em;
}
.enemy-builder-name {
  display: grid;
  grid-template-columns: 86px minmax(180px, 420px);
  gap: 10px;
  align-items: center;
  margin: 10px 0;
  color: var(--gold-deep);
  font-weight: 700;
}
.enemy-builder-name input {
  width: 100%;
  padding: 8px 10px;
  border: 1px solid var(--paper-500);
  background: var(--paper-50);
  color: var(--text);
}
.enemy-builder-slot { border-left: 3px solid var(--gold); }
.enemy-builder-slot select:focus-visible,
.enemy-builder-slot input:focus-visible,
.enemy-builder-name input:focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: 2px;
}
.saved-team-card { display: flex; justify-content: space-between; gap: 14px; align-items: center; padding: 11px 12px; border-bottom: 1px solid var(--paper-400); }
.saved-team-card.target { background: rgba(169, 127, 62, .09); box-shadow: inset 3px 0 var(--gold); }
.saved-team-card h3 { margin: 0 0 3px; font-size: 15px; }
.saved-team-card small { color: var(--muted); }
.saved-team-card .btn-row { flex-wrap: wrap; justify-content: flex-end; }
.ideal-usage-line { margin: 8px 0; padding: 7px 10px; color: #865f1b; background: #d4a01712; border: 1px dashed #d4a01766; font-size: 12px; }
.history-mode.manual { background: #6c4a88; }
@media (max-width: 760px) {
  .resource-mode-grid { grid-template-columns: 1fr; }
  .manual-slot { grid-template-columns: 62px 1fr; }
  .manual-slot > input, .manual-slot > select, .manual-slot > .search-select-wrap { grid-column: 2; }
  .enemy-builder-panel::before { display: none; }
  .enemy-builder-name { grid-template-columns: 1fr; }
  .saved-team-card { align-items: flex-start; flex-direction: column; }
}

/* ============================================================
 * 武将卡面图 & 兵种转换/宝物 & 天梯榜（2026-08 扩展）
 * ============================================================ */

/* ---- 卡面图 ---- */
.card-img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center 18%; }
.card-img-fallback {
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-weight: 700; font-family: var(--font-display);
  background: #555; font-size: 15px; width: 100%; height: 100%;
}
.card-thumb {
  --faction-color: #555;
  display: inline-block; width: 38px; height: 50px; flex: 0 0 38px;
  border: 1.5px solid var(--faction-color); border-radius: 4px;
  overflow: hidden; background: var(--paper-200); vertical-align: middle;
  box-shadow: 0 1px 3px rgba(0,0,0,.25);
}
.card-thumb-row { display: inline-flex; gap: 5px; align-items: center; }

/* 图鉴卡片：顶部立绘 */
/* 卡面立绘：完整原画 470:592 比例展示；回退裁剪版时按 240:348 居中裁剪 */
.g-art { height: auto; aspect-ratio: 470 / 592; margin: -14px -16px 10px; overflow: hidden; background: var(--paper-300); border-bottom: 1px solid var(--paper-400); }
.g-art-img, .g-art .card-img-fallback { width: 100%; height: 100%; object-fit: cover; object-position: center 15%; transition: transform .35s ease; }
.g-art .card-img-cropped { object-position: center 12%; }
.g-art .card-img-fallback { font-size: 42px; display: flex; align-items: center; justify-content: center; }
.g-card:hover .g-art-img { transform: scale(1.06); }

/* 武将详情对话框：左图右文 */
.dialog-hero { display: flex; gap: 16px; align-items: flex-start; }
.dialog-art { width: 168px; flex: 0 0 168px; height: 212px; border-radius: 6px; overflow: hidden; border: 2px solid var(--gold); box-shadow: 0 3px 12px rgba(0,0,0,.3); background: var(--paper-200); }
.dialog-hero-info { flex: 1; min-width: 0; }

/* 库存行小卡面 */
.inv-thumb { width: 34px; height: 45px; flex-basis: 34px; }

/* 配将详情：武将横排 + 中卡面 */
.gen-detail { display: flex; gap: 12px; align-items: flex-start; }
.gen-detail .gen-detail-art { width: 78px; height: 104px; flex: 0 0 78px; border-radius: 5px; overflow: hidden; border: 1.5px solid var(--paper-400); background: var(--paper-200); }
.gen-detail-main { flex: 1; min-width: 0; }
.adv-troop-line, .treasure-line { margin: 4px 0; padding: 5px 9px; font-size: 12px; border-radius: 4px; }
.adv-troop-line { color: #1f5f8b; background: #4a90d914; border: 1px dashed #4a90d966; }
.treasure-line { color: #865f1b; background: #d4a01712; border: 1px dashed #d4a01766; }

/* 结果表队伍列卡面 */
.team-cell .card-thumb { width: 34px; height: 45px; }
.team-cell-name { margin-top: 4px; font-weight: 600; font-size: 13.5px; font-family: var(--font-display); }

/* 实验室预览小卡面 */
.preview-thumb { width: 30px; height: 40px; flex-basis: 30px; }
.preview-item { display: flex; gap: 8px; align-items: center; }

/* 战法图标（图标资源就绪前用类型色字块） */
.skill-icon { width: 26px; height: 26px; border-radius: 4px; flex: 0 0 26px; object-fit: cover; }
.skill-icon-fallback {
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-weight: 700; font-family: var(--font-display); font-size: 14px;
}
.skill-icon-fallback.type-active { background: #b03a2e; }
.skill-icon-fallback.type-command { background: #1f5f8b; }
.skill-icon-fallback.type-passive { background: #1e7a46; }
.skill-icon-fallback.type-pursuit { background: #8a5fbf; }
.skill-card-head { align-items: center; }
.skill-card-icon { margin-right: 2px; }

/* 槽位扩展行（兵种转换 / 宝物） */
.slot-extra-row { display: flex; gap: 10px; grid-column: 1 / -1; flex-wrap: wrap; }
.slot-extra { display: flex; align-items: center; gap: 6px; font-size: 12.5px; color: var(--muted); flex: 1; min-width: 200px; }
.slot-extra select { flex: 1; min-width: 0; }

/* ---- 天梯榜 ---- */
.rank-status { margin: 10px 0 4px; color: var(--muted); font-size: 13px; }
.rank-status.warn { color: #a3541c; }
.rank-list { display: flex; flex-direction: column; gap: 12px; margin-top: 12px; }
.rank-card-head { display: flex; align-items: center; gap: 10px; }
.rank-no { font-family: var(--font-display); font-size: 18px; font-weight: 700; color: var(--gold); min-width: 42px; }
.rank-title { flex: 1; min-width: 0; }
.rank-title h3 { margin: 0; font-size: 16px; font-family: var(--font-display); }
.rank-title small { color: var(--muted); }
.rank-votes { display: flex; gap: 6px; }
.rank-votes .btn.active { box-shadow: inset 0 0 0 2px var(--gold); }
.grade {
  display: inline-flex; align-items: center; justify-content: center;
  width: 30px; height: 30px; border-radius: 6px; flex: 0 0 30px;
  color: #fff; font-weight: 700; font-size: 16px; font-family: var(--font-display);
  box-shadow: 0 2px 5px rgba(0,0,0,.25);
}
.grade-s { background: linear-gradient(135deg, #d4a017, #f4d06f); color: #3d2b05; }
.grade-a { background: linear-gradient(135deg, #b03a2e, #d96b5b); }
.grade-b { background: linear-gradient(135deg, #1f5f8b, #5b8dd9); }
.grade-c { background: linear-gradient(135deg, #5a6b5f, #8a9a8f); }
.grade-d { background: linear-gradient(135deg, #555, #777); }
.rank-card-body { display: flex; gap: 14px; align-items: center; margin: 10px 0; flex-wrap: wrap; }
.rank-stats { display: flex; gap: 14px; flex-wrap: wrap; }
.rank-stat { display: flex; flex-direction: column; min-width: 62px; }
.rank-stat small { color: var(--muted); font-size: 11px; }
.rank-stat b { font-size: 15px; font-family: var(--font-display); }
.rank-gens { color: var(--muted); }
.rank-upload-preview { display: flex; gap: 12px; align-items: center; margin-top: 10px; flex-wrap: wrap; }
.rank-upload-stats { color: var(--muted); font-size: 13px; }

@media (max-width: 760px) {
  .dialog-hero { flex-direction: column; }
  .dialog-art { width: 120px; }
  .gen-detail { flex-direction: row; }
  .rank-card-head { flex-wrap: wrap; }
}

/* ============================================================
 * 拖拽卡池侧边栏 & 卡位 & 五档评级（2026-08-29）
 * ============================================================ */

/* ---- 单独对手配置：去掉溢出的装饰丝带 ---- */
.enemy-builder-panel::before { content: none; }
.enemy-builder-panel { border-top-width: 2px; }

/* ---- 库存卡池：右下角浮窗 + 底部横向卡片流 ---- */
/* ---- 库存卡池：右下角浮窗 + 底部横向卡片流（宣纸金主题） ---- */
.pool-fab {
  position: fixed; right: 18px; bottom: 18px; z-index: 80;
  padding: 11px 20px; border-radius: 24px; border: 1.5px solid var(--gold);
  background: linear-gradient(160deg, #fff7e0, #f0dfb0); color: #6b4d0e;
  font: 700 14px var(--font-display); letter-spacing: .1em; cursor: pointer;
  box-shadow: 0 4px 14px rgba(0,0,0,.3);
}
.pool-fab:hover { transform: translateY(-1px); box-shadow: 0 6px 18px rgba(0,0,0,.35); }
.pool-fab.open { background: linear-gradient(160deg, #f0dfb0, #e4cd93); }
.pool-dock {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 75;
  background: linear-gradient(175deg, var(--paper-50), #f0e6cc);
  border-top: 2px solid var(--gold);
  box-shadow: 0 -8px 24px rgba(0,0,0,.22);
  padding: 10px 16px 8px;
}
.pool-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 8px; }
.pool-tabs { display: flex; gap: 4px; }
.pool-tab {
  padding: 5px 18px; border: 1px solid var(--paper-400); background: var(--paper-100);
  border-radius: 6px 6px 0 0; cursor: pointer; font: 600 13px var(--font-display); color: var(--muted);
}
.pool-tab.active { background: var(--gold); color: #fff; border-color: var(--gold); }
.pool-head input[type="text"] { flex: 1; min-width: 140px; max-width: 300px; }
.pool-head select { font-size: 12.5px; }
.pool-close {
  margin-left: auto; border: 1px solid var(--paper-400); background: var(--paper-50); color: var(--muted);
  border-radius: 6px; padding: 5px 12px; cursor: pointer; font: 600 12.5px var(--font-display);
}
.pool-close:hover { color: var(--red); border-color: var(--red); }
.pool-row {
  display: flex; gap: 10px; overflow-x: auto; overflow-y: hidden;
  padding: 4px 2px 8px; align-items: flex-start; scroll-behavior: smooth;
}
.pool-row::-webkit-scrollbar { height: 8px; }
.pool-row::-webkit-scrollbar-thumb { background: var(--paper-400); border-radius: 4px; }
.pool-card {
  flex: 0 0 112px; width: 112px;
  border: 1px solid var(--paper-400); border-radius: 7px; background: #fffaf0;
  cursor: grab; overflow: hidden; position: relative; user-select: none;
  transition: transform .12s ease, box-shadow .12s ease, border-color .12s ease;
}
.pool-card:hover { transform: translateY(-3px); border-color: var(--gold); box-shadow: 0 4px 12px rgba(0,0,0,.18); }
.pool-card.picked { border-color: var(--gold); box-shadow: 0 0 0 2px var(--gold); }
.pool-card:active { cursor: grabbing; }
/* 完整卡面：固定像素高度，任何浏览器都不会压扁 */
.pool-general .pool-art { display: block; width: 100%; height: 140px; overflow: hidden; background: var(--paper-200); }
.pool-general .pool-art .card-img { width: 100%; height: 100%; object-fit: cover; object-position: center 12%; }
.pool-general .pool-meta { display: block; padding: 4px 6px 6px; font-size: 11.5px; color: var(--text); }
.pool-general .pool-meta b { font-family: var(--font-display); font-size: 13px; display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pool-general .pool-meta small { color: var(--muted); line-height: 1.45; display: block; }
.pool-skill { flex: 0 0 250px; width: 250px; min-height: 86px; display: flex; gap: 10px; padding: 10px; align-items: flex-start; }
.pool-skill .pool-meta { flex: 1; min-width: 0; }
.pool-skill .pool-meta b { font-size: 14.5px; display: block; font-family: var(--font-display); margin-bottom: 2px; }
.pool-skill .pool-meta small { color: var(--muted); font-size: 11.5px; display: block; margin-bottom: 4px; }
.pool-skill-desc {
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden;
  font-size: 11.5px; line-height: 1.5; color: var(--text); font-style: normal; font-family: inherit;
}
.pool-skill-icon { width: 44px; height: 44px; flex: 0 0 44px; border-radius: 6px; }
.pool-skill-icon-fallback { font-size: 20px; }
.pool-hint { margin-top: 2px; font-size: 11px; color: var(--muted); }
.pool-list { display: flex; }

/* ---- 配置器卡位 ---- */
.card-slots { display: flex; gap: 14px; justify-content: center; margin: 12px 0; flex-wrap: wrap; }
.card-slot {
  width: 128px; min-height: 196px; border: 2px dashed var(--paper-400); border-radius: 8px;
  position: relative; background: var(--paper-100); display: flex; flex-direction: column;
  transition: border-color .15s ease, box-shadow .15s ease;
}
.card-slot.drag-over { border-color: var(--gold); box-shadow: 0 0 0 3px rgba(212,160,23,.3); border-style: solid; }
.card-slot.filled { border-style: solid; border-color: var(--gold); background: linear-gradient(170deg, var(--paper-50), var(--paper-200)); }
.card-slot-empty { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; color: var(--muted); font-size: 13px; padding: 12px 4px; text-align: center; }
.card-slot-empty small { font: 700 12px var(--font-display); color: var(--gold-deep); letter-spacing: .2em; }
.card-slot-remove {
  position: absolute; top: 3px; right: 3px; z-index: 2; width: 20px; height: 20px; line-height: 18px;
  border-radius: 50%; border: 1px solid var(--paper-400); background: rgba(0,0,0,.55); color: #fff;
  cursor: pointer; font-size: 13px; padding: 0;
}
.card-slot-remove:hover { background: var(--red); }
.card-slot-art { width: 100%; aspect-ratio: 470 / 592; overflow: hidden; border-radius: 6px 6px 0 0; background: var(--paper-200); }
.card-slot-art .card-img { object-position: center 10%; }
.card-slot-bar { padding: 4px 6px 0; font: 700 13px var(--font-display); text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.card-slot-sub { padding: 0 6px; font-size: 10.5px; color: var(--muted); text-align: center; }
.card-slot-chips { display: flex; gap: 4px; padding: 5px 5px 7px; }
.card-slot-chip {
  flex: 1; min-width: 0; text-align: center; font-size: 10px; padding: 3px 2px;
  border: 1px dashed var(--paper-400); border-radius: 4px; color: var(--muted);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; cursor: default;
}
.card-slot-chip.filled { border-style: solid; border-color: var(--gold); color: var(--text); background: rgba(212,160,23,.08); }
.card-slot-chip.drag-over { border-color: var(--gold); box-shadow: 0 0 0 2px rgba(212,160,23,.35); }

/* ---- 五档评级 ---- */
.grade-none { background: #999; }
.rank-avg { font: 700 14px var(--font-display); color: var(--gold-deep); white-space: nowrap; }
.rate-row { display: flex; align-items: center; gap: 8px; margin: 8px 0 2px; flex-wrap: wrap; }
.rate-label { font-size: 12px; color: var(--muted); }
.rate-chip {
  display: inline-flex; flex-direction: column; align-items: center; gap: 1px;
  padding: 4px 12px; border-radius: 6px; border: 1px solid var(--paper-400);
  background: var(--paper-50); cursor: pointer; transition: transform .1s ease, box-shadow .1s ease;
}
.rate-chip b { font: 700 14px var(--font-display); color: #fff; }
.rate-chip small { font-size: 10px; color: rgba(255,255,255,.85); }
.rate-chip:hover { transform: translateY(-1px); }
.rate-chip.active { box-shadow: 0 0 0 2px var(--gold), 0 3px 8px rgba(0,0,0,.25); }
.grade-chip-s b { color: #3d2b05; } .grade-chip-s small { color: #6b5320; }
.grade-chip-s { background: linear-gradient(135deg, #f4d06f, #d4a017); }
.grade-chip-a { background: linear-gradient(135deg, #d96b5b, #b03a2e); }
.grade-chip-b { background: linear-gradient(135deg, #5b8dd9, #1f5f8b); }
.grade-chip-c { background: linear-gradient(135deg, #8a9a8f, #5a6b5f); }
.grade-chip-d { background: linear-gradient(135deg, #777, #555); }

@media (max-width: 760px) {
  .card-slot { width: 106px; min-height: 168px; }
  .pool-card { flex-basis: 88px; width: 88px; }
  .pool-general .pool-art { height: 112px; }
}

/* ---- 三列配置栅格（配将详情重排） + 阵容加成条 ---- */
.pos-config-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin: 10px 0; align-items: start; }
.pos-config-grid > .manual-slot,
.pos-config-grid > .enemy-builder-slot,
.pos-config-grid > .slot {
  background: linear-gradient(170deg, var(--paper-50), var(--paper-100));
  border: 1px solid var(--paper-300); border-radius: 8px; padding: 12px 12px 10px;
  display: flex; flex-direction: column; gap: 8px;
}
.pos-config-grid > .manual-slot .slot-label,
.pos-config-grid > .slot .slot-label { font: 700 13px var(--font-display); color: var(--gold-deep); letter-spacing: .15em; }
.pos-config-grid .slot-extra-row { flex-direction: column; gap: 6px; }
.pos-config-grid .slot-extra { min-width: 0; }
@media (max-width: 980px) { .pos-config-grid { grid-template-columns: 1fr; } }
.team-bonus { display: flex; gap: 8px; flex-wrap: wrap; justify-content: center; margin: 6px 0 2px; }
.bonus-chip {
  display: inline-flex; flex-direction: column; align-items: center; gap: 1px;
  padding: 4px 12px; border-radius: 6px; font-size: 11px; border: 1px solid var(--paper-400);
  background: var(--paper-50); text-align: center;
}
.bonus-chip b { font: 700 12px var(--font-display); }
.bonus-chip small { color: var(--muted); font-size: 10px; }
.bonus-chip.on { border-color: var(--gold); background: rgba(212,160,23,.1); }
.bonus-chip.on b { color: #865f1b; }
.bonus-chip.off { opacity: .62; }

/* ---- 对手多选面板 ---- */
.enemy-picker { position: relative; display: inline-flex; }
.enemy-picker-panel {
  position: absolute; top: calc(100% + 6px); left: 0; z-index: 50;
  width: 340px; max-height: 320px; overflow-y: auto;
  background: var(--paper-50); border: 1.5px solid var(--gold); border-radius: 8px;
  box-shadow: 0 8px 24px rgba(0,0,0,.28); padding: 8px;
  display: flex; flex-direction: column; gap: 2px;
}
.enemy-picker-item {
  display: flex; align-items: center; gap: 8px; padding: 6px 8px;
  border-radius: 5px; cursor: pointer; font-size: 13px;
}
.enemy-picker-item:hover { background: rgba(212,160,23,.12); }
.enemy-picker-item input { accent-color: var(--gold); }

/* hidden 属性优先级高于任何 display 设置（修复对手面板默认展开） */
[hidden] { display: none !important; }

/* 对手面板：空间不足时向上弹出 */
.enemy-picker-panel.dropup { top: auto; bottom: calc(100% + 6px); max-height: min(320px, calc(100vh - 32px)); }

/* ---- 各将场均表现（官方武将统计样式） ---- */
.gen-report { display: flex; flex-direction: column; gap: 8px; }
.report-row {
  display: flex; gap: 12px; align-items: center;
  background: linear-gradient(170deg, var(--paper-50), var(--paper-100));
  border: 1px solid var(--paper-300); border-radius: 8px; padding: 8px 12px;
}
.report-hero { display: flex; align-items: center; gap: 10px; min-width: 210px; flex: 0 0 210px; }
.report-hero .report-art { width: 42px; height: 56px; border-radius: 5px; overflow: hidden; border: 1px solid var(--paper-400); }
.report-hero-name { display: flex; flex-direction: column; gap: 1px; font-size: 13px; }
.report-pos {
  display: inline-block; align-self: flex-start; padding: 0 6px; margin-bottom: 2px;
  background: var(--gold); color: #fff; border-radius: 3px; font: 700 10.5px var(--font-display);
  letter-spacing: .2em;
}
.report-hero-name small { color: var(--muted); font-size: 11px; }
.report-sources { display: flex; flex-wrap: wrap; gap: 8px; flex: 1; }
.report-seg {
  display: flex; align-items: baseline; gap: 6px;
  background: var(--paper-200); border: 1px solid var(--paper-400);
  border-radius: 5px; padding: 4px 10px; font-size: 12px;
}
.report-seg.seg-normal { background: rgba(212,160,23,.14); border-color: var(--gold); }
.seg-label { color: var(--gold-deep); font-weight: 600; }
.seg-count { color: var(--text); font-weight: 700; }
.seg-count::after { content: '次'; font-size: 10px; color: var(--muted); margin-left: 1px; }
.seg-dmg { color: var(--muted); }
.seg-dmg::before { content: '伤害 '; font-size: 10px; }

/* ---- 战报（官方流程样式） ---- */
.battle-log { display: flex; flex-direction: column; gap: 8px; }
.log-block { border: 1px solid var(--paper-300); border-radius: 6px; overflow: hidden; }
.log-block-title {
  background: linear-gradient(160deg, #3a2c12, #241b0e); color: var(--gold);
  font: 700 12px var(--font-display); letter-spacing: .12em; padding: 5px 12px;
}
.log-line { padding: 3px 12px; font-size: 12.5px; color: var(--text); border-bottom: 1px dashed var(--paper-200); }
.log-line:last-child { border-bottom: none; }
.log-line .log-dmg { color: #b03a2e; font-weight: 700; }
.log-line.log-cast { color: #1f5f8b; }
.log-line.log-cast .log-dmg { color: #b03a2e; }
.log-line.log-end { background: rgba(212,160,23,.15); color: #865f1b; font-weight: 700; }

/* ---- 战报样本区块 ---- */
.enemy-report-section { margin: 10px 0; }
.report-head { display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.report-side {
  margin: 8px 0 4px; padding: 3px 10px; display: inline-block;
  background: var(--gold); color: #fff; border-radius: 4px;
  font: 700 12px var(--font-display); letter-spacing: .2em;
}

/* 战报可读性修复：浅色纸面替代旧墨本深底 */
.battle-log {
  background: var(--paper-50);
  color: var(--text);
  border: 1px solid var(--paper-300);
  max-height: 560px;
  overflow-y: auto;
}
.log-block { background: #fffaf0; }
.log-line { color: var(--text); }
.log-line .log-dmg { color: #b03a2e; }
.log-line.log-cast { color: #1f5f8b; }
.log-line.log-end { background: rgba(212,160,23,.15); color: #865f1b; }

/* 战报回合条：浅色金边（与整体主题一致） */
.log-block { background: #fffaf0; border-color: var(--paper-300); }
.log-block-title {
  background: #f4ecd6;
  color: #865f1b;
  border-bottom: 1px solid var(--paper-300);
  padding: 4px 12px;
}
.battle-log .log-block { margin-bottom: 2px; }

/* 战报块禁止 flex 收缩（修复块被压缩、内容被裁切的 bug） */
.log-block { flex: 0 0 auto; }

.report-seg.seg-zero { opacity: .55; }
