/* ==========================================================================
   LUNAR BASE · ネイア オートマタ TERMINAL THEME
   NieR:Automata · 四种风格主题（html[data-theme]）
     bunker  = YoRHa 班克终端（黑玻璃 HUD · 深红 · 扫描线）
     archive = 档案记录（米白纸面 · 衬线 · 纸张纹理 · 图章）
     machine = 机械网络（炭黑 · 等宽发光 · 电路网格 · 斜切角）
     ruins   = 沙漠残响（暖沙 · 圆角风化 · 沙粒 · 砖红）
   每种主题拥有独立的 字体 / 纹理 / 边框 / 按钮 / 装饰符号。
   ========================================================================== */

/* ---- ① BUNKER · 班克终端（默认）：冷峻高科技终端 ---- */
:root,
html[data-theme="bunker"] {
  --bg-deep: #050507;
  --bg: #0c0c10;
  --bg-raised: #131318;
  --fg: #e8e4da;
  --fg-mid: #9a958a;
  --fg-dim: #5b574e;
  --red: #c2332a;
  --red-bright: #e23b30;
  --red-dim: #7a1f1a;
  --gold: #d9a23c;
  --gold-dim: #a57a2b;
  --cyan: #86b6c4;
  --green: #6aa35e;
  --line: rgba(232, 228, 218, 0.16);
  --line-strong: rgba(232, 228, 218, 0.42);
  --line-red: rgba(194, 51, 42, 0.55);
  --panel-bg: rgba(232, 228, 218, 0.045);
  --panel-bg-hover: rgba(232, 228, 218, 0.085);
  --input-bg: rgba(5, 5, 7, 0.7);
  --code-bg: rgba(232, 228, 218, 0.07);

  /* 专属差异 */
  --font-head: Georgia, "SimSun", "Noto Serif CJK SC", serif;
  --font-body: "Segoe UI", "Microsoft YaHei", "PingFang SC", sans-serif;
  --head-style: italic;
  --panel-radius: 0;
  --panel-clip: none;
  --panel-shadow: none;
  --btn-radius: 0;
  --term-badge: "◆";
  --texture: repeating-linear-gradient(to bottom, transparent 0, transparent 3px, var(--scanline) 3px, var(--scanline) 4px);
  --marker-open: "[ ";
  --marker-close: " ]";

  --term-bg: linear-gradient(180deg, #101014, #0a0a0d);
  --term-fg: #b9b2a2;
  --term-fg-bright: #fff;
  --nav-bg: rgba(10, 10, 13, 0.92);
  --nav-fg: var(--fg-mid);
  --busy-bg: rgba(5, 5, 7, 0.55);
  --scanline: rgba(255, 255, 255, 0.014);
  --theme-glow: radial-gradient(ellipse 90% 60% at 50% -10%, rgba(194, 51, 42, 0.10), transparent 60%),
                radial-gradient(ellipse 70% 50% at 50% 110%, rgba(134, 182, 196, 0.05), transparent 60%);
  --thumb-bg: linear-gradient(135deg, #0c0c10, #1a1a20);
  --thumb-fg: #e8e4da;
  --thumb-line: #3a3a44;

  --bg-cream: var(--bg);
  --bg-cream-dark: var(--bg-raised);
  --fg-dark: var(--fg);
  --panel: var(--panel-bg);
  --panel-inverse-bg: #17171c;
  --panel-inverse-fg: var(--fg);
  --accent: var(--red);
  --danger: var(--red);
  --danger-hover: var(--red-bright);
  --success: var(--green);
  --border-thick: 1px solid var(--line-strong);
  --border-thin: 1px solid var(--line);
}

/* ---- ② ARCHIVE · 档案记录：纸面文献 · 衬线 · 图章 ---- */
html[data-theme="archive"] {
  --bg-deep: #d8d2bf;
  --bg: #e8e2d2;
  --bg-raised: #f1ecdf;
  --fg: #2b2722;
  --fg-mid: #6b6455;
  --fg-dim: #98917f;
  --red: #a8261c;
  --red-bright: #c2332a;
  --red-dim: #7d1d15;
  --gold: #a97b1f;
  --gold-dim: #8a6518;
  --cyan: #3f7280;
  --green: #3f7d38;
  --line: rgba(43, 39, 34, 0.18);
  --line-strong: rgba(43, 39, 34, 0.45);
  --line-red: rgba(168, 38, 28, 0.55);
  --panel-bg: rgba(255, 252, 244, 0.62);
  --panel-bg-hover: rgba(255, 252, 244, 0.9);
  --input-bg: rgba(255, 252, 244, 0.85);
  --code-bg: rgba(43, 39, 34, 0.06);

  --font-head: Georgia, "SimSun", "Noto Serif CJK SC", serif;
  --font-body: Georgia, "Songti SC", "SimSun", "Noto Serif CJK SC", serif;
  --head-style: normal;
  --panel-radius: 2px;
  --panel-clip: none;
  --panel-shadow: 0 1px 0 rgba(43, 39, 34, 0.08), inset 0 0 0 2px rgba(255, 252, 244, 0.6);
  --btn-radius: 2px;
  --term-badge: "※";
  --texture:
    radial-gradient(circle at 20% 30%, rgba(43,39,34,0.025) 0, transparent 40%),
    radial-gradient(circle at 80% 70%, rgba(43,39,34,0.02) 0, transparent 45%),
    repeating-linear-gradient(0deg, transparent 0 6px, rgba(43,39,34,0.012) 6px 7px);
  --marker-open: "[ ";
  --marker-close: " ]";

  --term-bg: linear-gradient(180deg, #4a4232, #38322a);
  --term-fg: #c6bfa9;
  --term-fg-bright: #f5efdd;
  --nav-bg: rgba(241, 236, 223, 0.95);
  --nav-fg: var(--fg-mid);
  --busy-bg: rgba(232, 226, 210, 0.6);
  --scanline: rgba(0, 0, 0, 0.012);
  --theme-glow: radial-gradient(ellipse 90% 60% at 50% -10%, rgba(168, 38, 28, 0.06), transparent 60%);
  --thumb-bg: linear-gradient(135deg, #e8e2d2, #f5f0e2);
  --thumb-fg: #2b2722;
  --thumb-line: #b5ad97;

  --bg-cream: var(--bg);
  --bg-cream-dark: var(--bg-raised);
  --fg-dark: var(--fg);
  --panel: var(--panel-bg);
  --panel-inverse-bg: #efe9d8;
  --panel-inverse-fg: var(--fg);
  --accent: var(--red);
  --danger: var(--red);
  --danger-hover: var(--red-bright);
  --success: var(--green);
  --border-thick: 1px solid var(--line-strong);
  --border-thin: 1px solid var(--line);
}

/* ---- ③ MACHINE · 机械网络：等宽发光 · 电路网格 · 斜切角 ---- */
html[data-theme="machine"] {
  --bg-deep: #070604;
  --bg: #0e0c09;
  --bg-raised: #171310;
  --fg: #e6dcc8;
  --fg-mid: #9a8a70;
  --fg-dim: #5c5140;
  --red: #e0572b;
  --red-bright: #ff6b2c;
  --red-dim: #8a3a18;
  --gold: #e8b23c;
  --gold-dim: #b07f1f;
  --cyan: #6f8f72;
  --green: #7fae63;
  --line: rgba(230, 220, 200, 0.15);
  --line-strong: rgba(255, 107, 44, 0.5);
  --line-red: rgba(255, 107, 44, 0.6);
  --panel-bg: rgba(224, 87, 43, 0.06);
  --panel-bg-hover: rgba(224, 87, 43, 0.12);
  --input-bg: rgba(7, 6, 4, 0.75);
  --code-bg: rgba(224, 87, 43, 0.08);

  --font-head: "Consolas", "Cascadia Code", "Courier New", monospace;
  --font-body: "Segoe UI", "Microsoft YaHei", sans-serif;
  --head-style: normal;
  --panel-radius: 0;
  --panel-clip: polygon(10px 0, 100% 0, 100% calc(100% - 10px), calc(100% - 10px) 100%, 0 100%, 0 10px);
  --panel-shadow: 0 0 18px rgba(255, 107, 44, 0.08);
  --btn-radius: 0;
  --term-badge: "▣";
  --texture:
    repeating-linear-gradient(to right, transparent 0 34px, rgba(255,107,44,0.035) 34px 35px),
    repeating-linear-gradient(to bottom, transparent 0 34px, rgba(255,107,44,0.035) 34px 35px),
    radial-gradient(circle at 17px 17px, rgba(255,107,44,0.07) 1px, transparent 2px);
  --marker-open: "[ ";
  --marker-close: " ]";

  --term-bg: linear-gradient(180deg, #14100c, #0a0806);
  --term-fg: #a58d6f;
  --term-fg-bright: #ffd9b0;
  --nav-bg: rgba(14, 12, 9, 0.93);
  --nav-fg: var(--fg-mid);
  --busy-bg: rgba(7, 6, 4, 0.62);
  --scanline: rgba(255, 107, 44, 0.03);
  --theme-glow: radial-gradient(ellipse 80% 55% at 50% -10%, rgba(255, 107, 44, 0.16), transparent 62%),
                radial-gradient(ellipse 60% 45% at 50% 110%, rgba(111, 143, 114, 0.06), transparent 60%);
  --thumb-bg: linear-gradient(135deg, #100c09, #241a10);
  --thumb-fg: #ffd9b0;
  --thumb-line: #5a3a22;

  --bg-cream: var(--bg);
  --bg-cream-dark: var(--bg-raised);
  --fg-dark: var(--fg);
  --panel: var(--panel-bg);
  --panel-inverse-bg: #171310;
  --panel-inverse-fg: var(--fg);
  --accent: var(--red);
  --danger: var(--red);
  --danger-hover: var(--red-bright);
  --success: var(--green);
  --border-thick: 1px solid var(--line-strong);
  --border-thin: 1px solid var(--line);
}

/* ---- ④ RUINS · 沙漠残响：暖沙圆角 · 风化 ---- */
html[data-theme="ruins"] {
  --bg-deep: #b8a278;
  --bg: #cbbb92;
  --bg-raised: #d8cba6;
  --fg: #33291b;
  --fg-mid: #6e5f42;
  --fg-dim: #9c8b66;
  --red: #a03a1e;
  --red-bright: #c24b26;
  --red-dim: #7a2c15;
  --gold: #b3892f;
  --gold-dim: #8f6c22;
  --cyan: #4f6f6b;
  --green: #5f8548;
  --line: rgba(51, 41, 27, 0.18);
  --line-strong: rgba(51, 41, 27, 0.42);
  --line-red: rgba(160, 58, 30, 0.5);
  --panel-bg: rgba(255, 246, 222, 0.55);
  --panel-bg-hover: rgba(255, 246, 222, 0.82);
  --input-bg: rgba(255, 246, 222, 0.8);
  --code-bg: rgba(51, 41, 27, 0.06);

  --font-head: Georgia, "SimSun", "Noto Serif CJK SC", serif;
  --font-body: "Segoe UI", "Microsoft YaHei", sans-serif;
  --head-style: italic;
  --panel-radius: 8px;
  --panel-clip: none;
  --panel-shadow: 0 2px 6px rgba(51, 41, 27, 0.14), inset 0 1px 0 rgba(255, 246, 222, 0.5);
  --btn-radius: 6px;
  --term-badge: "◈";
  --texture:
    radial-gradient(circle at 12% 25%, rgba(51,41,27,0.05) 0 1px, transparent 2px),
    radial-gradient(circle at 70% 60%, rgba(51,41,27,0.04) 0 1px, transparent 2px),
    radial-gradient(circle at 40% 85%, rgba(51,41,27,0.045) 0 1px, transparent 2px);
  --marker-open: "⌈ ";
  --marker-close: " ⌋";

  --term-bg: linear-gradient(180deg, #4a3b26, #382c1c);
  --term-fg: #c9b68e;
  --term-fg-bright: #f5e8c8;
  --nav-bg: rgba(216, 203, 166, 0.95);
  --nav-fg: var(--fg-mid);
  --busy-bg: rgba(184, 162, 120, 0.62);
  --scanline: rgba(0, 0, 0, 0.012);
  --theme-glow: radial-gradient(ellipse 90% 60% at 50% -10%, rgba(160, 58, 30, 0.08), transparent 60%),
                radial-gradient(ellipse 70% 50% at 50% 110%, rgba(79, 111, 107, 0.05), transparent 60%);
  --thumb-bg: linear-gradient(135deg, #cbbb92, #e2d4ae);
  --thumb-fg: #33291b;
  --thumb-line: #9c8b66;

  --bg-cream: var(--bg);
  --bg-cream-dark: var(--bg-raised);
  --fg-dark: var(--fg);
  --panel: var(--panel-bg);
  --panel-inverse-bg: #d8cba6;
  --panel-inverse-fg: var(--fg);
  --accent: var(--red);
  --danger: var(--red);
  --danger-hover: var(--red-bright);
  --success: var(--green);
  --border-thick: 1px solid var(--line-strong);
  --border-thin: 1px solid var(--line);
}

* { box-sizing: border-box; }

html, body {
  margin: 0;
  padding: 0;
  background: var(--bg-deep);
  color: var(--fg);
  font-family: var(--font-body);
  font-size: 14px;
  line-height: 1.5;
  min-height: 100vh;
}

/* ---- 背景：主题纹理 + 辉光 ---- */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9998;
  background: var(--texture);
}
body::after {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9997;
  background: var(--theme-glow);
}

::selection { background: var(--red); color: #fff; }

/* ---- 顶部 HUD 状态栏 ---- */
.terminal-bar {
  background: var(--term-bg);
  border-bottom: 1px solid var(--line-red);
  padding: 10px 28px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 20px;
  position: relative;
  z-index: 5;
}
.terminal-bar::before {
  content: var(--term-badge);
  position: absolute;
  left: 10px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--red-bright);
  font-size: 9px;
  animation: lb-blink 1.2s steps(1) infinite;
}
html[data-theme="machine"] .terminal-bar::before { text-shadow: 0 0 8px var(--red-bright); }
@keyframes lb-blink { 50% { opacity: 0.15; } }
.terminal-bar .left {
  display: flex;
  align-items: baseline;
  gap: 22px;
  font-family: "Consolas", "Courier New", monospace;
  font-size: 11px;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--term-fg);
}
.terminal-bar .left .brand {
  font-family: var(--font-head);
  font-style: var(--head-style);
  font-size: 14px;
  letter-spacing: 0.34em;
  color: var(--term-fg-bright);
}
html[data-theme="machine"] .terminal-bar .left .brand { text-shadow: 0 0 10px rgba(255, 107, 44, 0.5); }
html[data-theme="archive"] .terminal-bar .left .brand { letter-spacing: 0.28em; }
.terminal-bar .left .brand em { color: var(--red-bright); font-style: italic; }
.terminal-bar .left .zh { letter-spacing: 0.5em; }
.terminal-bar .right {
  display: flex;
  align-items: center;
  gap: 14px;
  font-family: "Consolas", "Courier New", monospace;
  font-size: 10px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--term-fg);
}
.terminal-bar .right .hud-clock { color: var(--term-fg); }
.terminal-bar .right .user-pill { color: var(--term-fg-bright); }
.terminal-bar .right .user-pill a { color: var(--term-fg); border-bottom: 1px dotted var(--term-fg); }
.terminal-bar .right .user-pill a:hover { color: var(--red-bright); border-bottom-color: var(--red-bright); }

/* 顶栏切换：主题为纯文字展示（不可点击），语言为链接 */
.theme-switch { display: inline-flex; gap: 2px; align-items: center; }
.theme-switch .theme-label {
  color: var(--term-fg);
  font-size: 10px;
  letter-spacing: 0.14em;
  padding: 2px 8px;
  text-transform: uppercase;
  user-select: none;
}
.theme-switch .lang-link {
  background: transparent;
  border: none;
  color: var(--term-fg);
  font-size: 10px;
  letter-spacing: 0.14em;
  padding: 2px 8px;
  cursor: pointer;
  text-transform: uppercase;
  text-decoration: none;
  transition: color 120ms;
  border-left: 1px solid var(--line-strong);
}
.theme-switch .lang-link:hover { color: var(--red-bright); background: transparent; border-left-color: var(--red-bright); }

/* ---- 主导航 ---- */
nav.primary {
  display: flex;
  flex-wrap: wrap;
  background: var(--nav-bg);
  border-bottom: 1px solid var(--line);
  position: sticky;
  top: 0;
  z-index: 20;
  backdrop-filter: blur(6px);
}
nav.primary a {
  color: var(--nav-fg);
  padding: 11px 22px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  text-decoration: none;
  border-right: 1px solid var(--line);
  transition: color 120ms, background 120ms;
}
nav.primary a:hover { color: var(--fg); background: var(--panel-bg-hover); }
nav.primary a.active {
  color: var(--fg);
  background: linear-gradient(180deg, color-mix(in srgb, var(--red) 22%, transparent), color-mix(in srgb, var(--red) 5%, transparent));
  box-shadow: inset 0 -2px 0 var(--red);
}
html[data-theme="machine"] nav.primary a.active { box-shadow: inset 0 -2px 0 var(--red), 0 0 12px rgba(255, 107, 44, 0.25); }

main {
  max-width: 1160px;
  margin: 30px auto 80px;
  padding: 0 26px;
  position: relative;
  z-index: 1;
}

/* ---- 括号标题（每主题不同括符/字形）---- */
.bracket-header {
  display: flex;
  align-items: baseline;
  gap: 14px;
  margin: 36px 0 18px;
  font-family: var(--font-head);
  font-style: var(--head-style);
  font-size: 20px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--fg);
}
html[data-theme="archive"] .bracket-header { font-size: 22px; font-weight: 700; }
html[data-theme="machine"] .bracket-header {
  font-size: 17px;
  font-weight: 700;
  text-shadow: 0 0 12px rgba(255, 107, 44, 0.35);
}
html[data-theme="ruins"] .bracket-header { font-size: 22px; letter-spacing: 0.24em; }
.bracket-header::before { content: var(--marker-open); color: var(--red); letter-spacing: -0.2em; }
.bracket-header::after { content: var(--marker-close); color: var(--red); letter-spacing: -0.2em; }
.bracket-header .sub {
  font-family: var(--font-body);
  font-style: normal;
  font-size: 11px;
  color: var(--fg-dim);
  letter-spacing: 0.3em;
  text-transform: uppercase;
}

/* ---- 面板（每主题不同圆角/切角/阴影）---- */
.panel {
  background: var(--panel-bg);
  border: var(--border-thin);
  padding: 20px 24px;
  margin: 16px 0;
  position: relative;
  border-radius: var(--panel-radius);
  box-shadow: var(--panel-shadow);
  clip-path: var(--panel-clip);
}
.panel:hover { border-color: var(--line-strong); }
html[data-theme="archive"] .panel { border-width: 2px; }
.panel.inverse {
  background: var(--panel-inverse-bg);
  color: var(--panel-inverse-fg);
}
.panel-corners::before,
.panel-corners::after {
  content: "";
  position: absolute;
  width: 16px;
  height: 16px;
  pointer-events: none;
}
html[data-theme="ruins"] .panel-corners::before,
html[data-theme="ruins"] .panel-corners::after { border-radius: 4px; }
.panel-corners::before {
  top: -1px; left: -1px;
  border-top: 2px solid var(--fg-mid);
  border-left: 2px solid var(--fg-mid);
}
.panel-corners::after {
  bottom: -1px; right: -1px;
  border-bottom: 2px solid var(--fg-mid);
  border-right: 2px solid var(--fg-mid);
}

/* ---- 键值列表 ---- */
.kv {
  display: grid;
  grid-template-columns: 210px 1fr;
  gap: 8px 18px;
  font-family: "Consolas", "Courier New", monospace;
  font-size: 13px;
  margin: 0;
}
html[data-theme="archive"] .kv { font-family: Georgia, "SimSun", serif; }
.kv dt {
  color: var(--fg-dim);
  text-transform: uppercase;
  letter-spacing: 0.22em;
  font-size: 10px;
  align-self: center;
  font-weight: 600;
}
.kv dt::after { content: " :: "; color: var(--red-dim); }
.kv dd { margin: 0; word-break: break-all; }

/* ---- 按钮（每主题不同风格）---- */
button, .button {
  display: inline-block;
  background: transparent;
  color: var(--fg);
  border: 1px solid var(--line-strong);
  padding: 9px 22px;
  font-family: inherit;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  cursor: pointer;
  text-decoration: none;
  transition: all 120ms;
  border-radius: var(--btn-radius);
}
html[data-theme="archive"] button, html[data-theme="archive"] .button { border-width: 2px; }
html[data-theme="machine"] button, html[data-theme="machine"] .button { border-width: 1px; }
button:hover, .button:hover {
  background: var(--panel-bg-hover);
  border-color: var(--fg);
  transform: translateY(-1px);
}
html[data-theme="machine"] button:hover {
  border-color: var(--red-bright);
  box-shadow: 0 0 14px rgba(255, 107, 44, 0.3);
  color: var(--red-bright);
}
button:active, .button:active { transform: translateY(0); }
button.danger { border-color: var(--line-red); color: var(--red-bright); }
button.danger:hover { background: color-mix(in srgb, var(--red) 12%, transparent); border-color: var(--red); }
button:disabled, button.danger:disabled, .button:disabled {
  opacity: 0.35;
  cursor: not-allowed;
  transform: none;
  background: transparent;
}
.grant-chosen-btn, .max-all-btn { padding: 8px 16px; font-size: 11px; letter-spacing: 0.18em; }
.max-all-btn { border-color: var(--line-red); color: var(--red-bright); }
.max-all-btn:hover { background: color-mix(in srgb, var(--red) 12%, transparent); }

/* ---- 表单 ---- */
input[type="text"], input[type="password"], input[type="number"], select {
  background: var(--input-bg);
  border: 1px solid var(--line);
  padding: 8px 10px;
  font-family: "Consolas", "Courier New", monospace;
  font-size: 13px;
  color: var(--fg);
  border-radius: var(--btn-radius);
}
input:focus, select:focus {
  outline: none;
  border-color: var(--line-strong);
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--red) 35%, transparent);
}
input::placeholder { color: var(--fg-dim); }
.confirm-form { display: inline-flex; gap: 6px; align-items: center; }

/* ---- 横幅 ---- */
.banner {
  padding: 12px 16px;
  margin: 16px 0;
  border-left: 3px solid var(--fg-mid);
  font-family: "Consolas", "Courier New", monospace;
  font-size: 13px;
  background: var(--panel-bg);
  border-radius: var(--btn-radius);
}
.banner.error { border-left-color: var(--red); color: var(--red-bright); background: color-mix(in srgb, var(--red) 7%, transparent); }
.banner.success { border-left-color: var(--green); color: var(--green); background: color-mix(in srgb, var(--green) 6%, transparent); }
.banner.ajax-hidden { display: none; }

/* ---- 表格 ---- */
table {
  width: 100%;
  border-collapse: collapse;
  font-family: "Consolas", "Courier New", monospace;
  font-size: 12.5px;
}
html[data-theme="archive"] table { font-family: Georgia, "SimSun", serif; }
th, td {
  text-align: left;
  padding: 9px 12px;
  border-bottom: var(--border-thin);
  vertical-align: middle;
}
th {
  text-transform: uppercase;
  letter-spacing: 0.18em;
  font-size: 10px;
  color: var(--fg-dim);
  font-weight: 600;
  background: var(--panel-bg-hover);
}
tr:hover td { background: var(--panel-bg-hover); }

/* ---- 状态胶囊（archive 做成图章感）---- */
.status-pill {
  display: inline-block;
  padding: 2px 10px;
  font-size: 10px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  border: 1px solid var(--line-strong);
  color: var(--fg-mid);
  font-weight: 600;
  background: transparent;
  border-radius: var(--btn-radius);
}
html[data-theme="archive"] .status-pill {
  border: 2px solid var(--red-dim);
  border-radius: 50px;
  color: var(--red-dim);
  letter-spacing: 0.2em;
  font-weight: 700;
}
html[data-theme="machine"] .status-pill.online,
html[data-theme="machine"] .status-pill.warn { text-shadow: 0 0 6px currentColor; }
.status-pill.online { border-color: color-mix(in srgb, var(--green) 55%, transparent); color: var(--green); }
.status-pill.warn  { border-color: var(--line-red); color: var(--red-bright); }
.status-pill.offline { opacity: 0.55; }

/* ---- 代码 ---- */
code {
  font-family: "Consolas", "Courier New", monospace;
  font-size: 11.5px;
  background: var(--code-bg);
  padding: 1px 6px;
  border: 1px solid var(--line);
  border-radius: 3px;
}

/* ---- 链接 ---- */
a {
  color: var(--fg-mid);
  text-decoration: none;
  border-bottom: 1px dotted var(--fg-dim);
  transition: color 120ms;
}
a:hover { color: var(--red-bright); border-bottom-color: var(--red); }

/* ---- 标签页 ---- */
.tab-bar {
  display: flex;
  gap: 2px;
  margin: 18px 0 0;
  flex-wrap: wrap;
  border-bottom: 1px solid var(--line-strong);
}
.tab-bar .tab-btn {
  background: transparent;
  color: var(--fg-dim);
  padding: 10px 18px;
  letter-spacing: 0.16em;
  border: none;
  border-bottom: 2px solid transparent;
  border-radius: 0;
}
.tab-bar .tab-btn:hover { background: var(--panel-bg-hover); color: var(--fg); transform: none; }
.tab-bar .tab-btn.active { color: var(--fg); border-bottom-color: var(--red); }
.tab-bar .tab-count {
  font-size: 10px;
  color: var(--fg-dim);
  margin-left: 6px;
  font-family: "Consolas", "Courier New", monospace;
}
.tab-pane { display: none; }
.tab-pane.active { display: block; }

/* ---- 搜索行 ---- */
.search-row {
  display: flex;
  gap: 12px;
  align-items: center;
  margin: 16px 0 8px;
  flex-wrap: wrap;
}
.search-row .search-label {
  font-size: 10px;
  color: var(--fg-dim);
  letter-spacing: 0.24em;
  text-transform: uppercase;
  font-weight: 600;
}
.search-row input[type="text"] { flex: 1; min-width: 240px; }
.search-row .tab-stats {
  font-family: "Consolas", "Courier New", monospace;
  font-size: 11.5px;
  color: var(--fg-mid);
}

/* ---- 发放行 ---- */
.grant-list { padding: 0; max-height: 640px; overflow-y: auto; }
.grant-list::-webkit-scrollbar { width: 8px; }
.grant-list::-webkit-scrollbar-track { background: transparent; }
.grant-list::-webkit-scrollbar-thumb { background: var(--line-strong); border: 2px solid var(--bg-deep); }

.grant-form {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 90px 130px 130px 90px;
  align-items: center;
  gap: 12px;
  padding: 8px 16px;
  border-bottom: 1px solid var(--line);
  margin: 0;
}
.grant-form:hover { background: var(--panel-bg-hover); }
.grant-form .grant-name {
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  letter-spacing: 0.03em;
}
.grant-form .grant-id {
  color: var(--fg-dim);
  font-family: "Consolas", "Courier New", monospace;
  font-size: 10.5px;
  letter-spacing: 0.12em;
}
.grant-form .grant-current {
  font-family: "Consolas", "Courier New", monospace;
  font-size: 13px;
  text-align: right;
  color: var(--fg);
}
.grant-form .grant-current .not-owned { color: var(--fg-dim); }
.grant-form .grant-current .received-at {
  display: inline-block;
  margin-left: 6px;
  font-size: 10px;
  color: var(--fg-dim);
}
.grant-form input[type="number"] { padding: 6px 8px; font-size: 13px; width: 100%; }
.grant-form button { padding: 6px 12px; font-size: 10.5px; letter-spacing: 0.16em; }
.grant-form.important { grid-template-columns: minmax(0, 1fr) 90px 180px 80px 90px; }

.row-checkbox {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 10.5px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--fg-dim);
  cursor: pointer;
  user-select: none;
  font-weight: 600;
}
.row-checkbox input[type="checkbox"] {
  width: 15px;
  height: 15px;
  accent-color: var(--red);
  cursor: pointer;
}
.row-checkbox input[type="checkbox"]:disabled,
.row-checkbox input[type="checkbox"]:disabled + span { cursor: not-allowed; opacity: 0.4; }
.row-checkbox:has(input[type="checkbox"]:disabled) { color: var(--fg-dim); opacity: 0.7; }

.grant-form.grant-success,
.grant-form.grant-success:hover {
  background: color-mix(in srgb, var(--green) 10%, transparent);
  box-shadow: inset 3px 0 0 var(--green);
}
.grant-form.owned { opacity: 0.6; }
.grant-form.owned:hover { opacity: 0.85; background: var(--panel-bg-hover); }

.grant-form.costume { grid-template-columns: 70px minmax(0, 1fr) 110px 110px 80px 90px; }
.grant-form.weapon { grid-template-columns: 90px minmax(0, 1fr) 90px 110px 80px 90px; }
.grant-form.weapon .rarity-badge { letter-spacing: 0; }
.grant-form.upgrade {
  grid-template-columns: minmax(0, 1.5fr) minmax(0, 2fr) 100px 100px;
  gap: 16px;
}
.grant-form.upgrade .grant-id { font-style: normal; line-height: 1.55; }
.grant-form.upgrade.pending { opacity: 0.55; }

.rarity-badge {
  font-size: 10.5px;
  letter-spacing: 0.08em;
  text-align: center;
  padding: 2px 6px;
  font-weight: 700;
  font-family: "Consolas", "Courier New", monospace;
}
.rarity-badge.rarity-50 { color: var(--gold); text-shadow: 0 0 8px color-mix(in srgb, var(--gold) 40%, transparent); }
.rarity-badge.rarity-40 { color: var(--gold-dim); }
.rarity-badge.rarity-30 { color: #9a7cc4; }

.costume-group-header { margin-top: 28px; font-size: 15px; letter-spacing: 0.22em; }
.costume-group-header .group-stats {
  font-family: "Consolas", "Courier New", monospace;
  font-size: 11px;
  color: var(--fg-dim);
  margin-left: 8px;
  letter-spacing: 0.1em;
}

.warning-text {
  color: var(--red-bright);
  font-weight: 600;
  font-family: "Consolas", "Courier New", monospace;
  font-size: 12px;
  letter-spacing: 0.08em;
}

/* ---- 选择工具 ---- */
.sel-count {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: "Consolas", "Courier New", monospace;
  font-size: 11px;
  letter-spacing: 0.14em;
  color: var(--fg-mid);
  padding: 4px 10px;
  border: 1px dashed var(--line-strong);
  text-transform: uppercase;
}
.sel-count b { color: var(--red-bright); font-size: 13px; }
.sel-count.hidden { display: none; }
.select-tools { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.select-tools button { padding: 5px 12px; font-size: 10px; letter-spacing: 0.16em; }

.state-tag {
  font-family: "Consolas", "Courier New", monospace;
  font-size: 10px;
  color: var(--fg-dim);
  letter-spacing: 0.08em;
}
.state-tag b { color: var(--green); font-weight: 600; }

.karma-row {
  grid-column: 1 / -1;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
  margin-top: 4px;
  padding-top: 6px;
  border-top: 1px dashed var(--line-strong);
}
.karma-row select { flex: 1 1 280px; min-width: 240px; font-family: inherit; font-size: 11px; padding: 3px; }

/* ---- 页脚 ---- */
footer {
  margin-top: 72px;
  padding: 26px 24px 40px;
  text-align: center;
  font-family: "Consolas", "Courier New", monospace;
  font-size: 10px;
  letter-spacing: 0.34em;
  text-transform: uppercase;
  color: var(--fg-dim);
  border-top: 1px solid var(--line);
}
footer .lb-red { color: var(--red-dim); }

/* ---- 汉堡菜单 ---- */
.nav-toggle { display: none; }
.nav-burger { display: none; }

/* ---- 全局忙碌遮罩 ---- */
#lb-busy-overlay {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 9999;
  background: var(--busy-bg);
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 16px;
  font-family: "Consolas", "Courier New", monospace;
  font-size: 11px;
  letter-spacing: 0.3em;
  color: var(--fg);
  text-transform: uppercase;
  backdrop-filter: blur(2px);
}
#lb-busy-overlay.show { display: flex; }
#lb-busy-overlay .spinner {
  width: 34px; height: 34px;
  border: 1px solid var(--fg-dim);
  border-top-color: var(--red);
  border-right-color: var(--red);
  border-radius: 50%;
  animation: lb-spin 0.9s linear infinite;
}
@keyframes lb-spin { to { transform: rotate(360deg); } }

/* ---- 主题选择器主页（4 种风格）---- */
.select-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 18px;
  margin: 24px 0;
}
.select-card {
  display: block;
  border: 1px solid var(--line-strong);
  background: var(--panel-bg);
  padding: 18px;
  position: relative;
  transition: all 140ms;
  cursor: pointer;
  border-radius: var(--panel-radius);
  box-shadow: var(--panel-shadow);
}
.select-card:hover {
  border-color: var(--red);
  background: var(--panel-bg-hover);
  transform: translateY(-2px);
}
.select-card.current::after {
  content: "✓";
  position: absolute;
  top: 8px; right: 12px;
  color: var(--green);
  font-weight: 700;
}
.select-card .sc-thumb {
  height: 80px;
  border: 1px solid var(--line);
  margin-bottom: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: Georgia, serif;
  font-style: italic;
  letter-spacing: 0.18em;
  font-size: 12px;
  background: var(--thumb-bg);
  color: var(--thumb-fg);
  border-color: var(--thumb-line);
  border-radius: calc(var(--panel-radius) * 0.8);
}
.select-card .sc-title {
  font-size: 15px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  margin: 0 0 3px;
}
.select-card .sc-sub {
  font-size: 11px;
  color: var(--fg-mid);
  letter-spacing: 0.06em;
  margin: 0 0 8px;
  min-height: 36px;
}
.select-card button {
  width: 100%;
  padding: 7px 10px;
  font-size: 10.5px;
  letter-spacing: 0.2em;
}
.select-hint {
  font-family: "Consolas", "Courier New", monospace;
  font-size: 11px;
  color: var(--fg-dim);
  letter-spacing: 0.12em;
  text-align: center;
  margin: 18px 0 0;
}

/* ==========================================================================
   响应式
   ========================================================================== */
@media (max-width: 1100px) {
  nav.primary { position: static; }
  nav.primary a { padding: 11px 16px; letter-spacing: 0.16em; }
  main { padding: 0 16px; }
}

@media (max-width: 760px) {
  .terminal-bar { flex-wrap: wrap; gap: 6px 14px; padding: 10px 16px; }
  .terminal-bar .left { gap: 12px; flex-wrap: wrap; letter-spacing: 0.14em; }
  .terminal-bar .right .hud-clock { display: none; }

  .nav-burger {
    display: flex;
    align-items: center;
    gap: 8px;
    background: var(--bg-raised);
    color: var(--fg);
    padding: 12px 16px;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    cursor: pointer;
    border-bottom: 1px solid var(--line);
    user-select: none;
  }
  .nav-burger span { font-size: 18px; line-height: 1; }
  nav.primary { display: none; flex-direction: column; position: static; }
  .nav-toggle:checked ~ nav.primary { display: flex; }
  nav.primary a { border-right: none; border-bottom: 1px solid var(--line); }

  main { margin: 20px auto 60px; padding: 0 12px; }
  .kv { grid-template-columns: 1fr; gap: 4px 0; }
  .kv dt { margin-top: 8px; }
  .panel { overflow-x: auto; padding: 16px; }
  table { min-width: 520px; }

  .grant-form,
  .grant-form.important,
  .grant-form.costume,
  .grant-form.weapon,
  .grant-form.upgrade {
    grid-template-columns: 1fr auto;
    gap: 6px 10px;
  }
  .grant-form .grant-name { white-space: normal; grid-column: 1 / -1; }
  .grant-form .grant-current { text-align: left; }
  .search-row input[type="text"] { min-width: 0; width: 100%; }
  .bracket-header { font-size: 16px; letter-spacing: 0.12em; }
}
