:root {
  --bg: #f3f5fa;
  --bg2: #e9edf4;
  --panel: #ffffff;
  --panel2: #f6f8fc;
  --line: #e3e8f0;
  --txt: #18202e;
  --dim: #697586;
  --gold: #b9802a;
  --gold-2: #9a6715;
  --gold-soft: rgba(185,128,42,.12);
  --ok: #1d9a52;
  --bad: #d83a3a;
  --blue: #2f6fed;
  --pink: #d6498c;
  --purp: #8b5cf6;
  --radius: 14px;
  --shadow: 0 8px 26px rgba(24,38,60,.10);
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }   /* .pill 等 display:flex 会盖掉 hidden，这里统一兜住 */

html, body {
  margin: 0; padding: 0;
  background:
    radial-gradient(1200px 600px at 80% -10%, rgba(185,128,42,.06), transparent 60%),
    radial-gradient(900px 500px at -10% 10%, rgba(47,111,237,.05), transparent 55%),
    var(--bg);
  color: var(--txt);
  font: 14px/1.55 "Microsoft YaHei", "PingFang SC", system-ui, -apple-system, sans-serif;
  -webkit-font-smoothing: antialiased;
  min-height: 100vh;
}

/* ---------------------------------------------------------------- 顶栏 */
.top {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px 16px; flex-wrap: wrap;
  padding: 12px 20px;
  border-bottom: 1px solid var(--line);
  background: linear-gradient(180deg, rgba(255,255,255,.96), rgba(243,245,250,.92));
  position: sticky; top: 0; z-index: 10;
  backdrop-filter: blur(10px);
}
.brand { display: flex; align-items: center; gap: 12px; min-width: 0; }
.logo {
  width: 38px; height: 38px; border-radius: 11px;
  display: grid; place-items: center;
  font-size: 20px; font-weight: 800; color: #fff;
  background: linear-gradient(135deg, var(--gold), var(--gold-2));
  box-shadow: 0 4px 14px rgba(185,128,42,.30);
  flex: none;
}
.brand-tx { display: flex; flex-direction: column; line-height: 1.25; min-width: 0; }
.brand h1 { font-size: 16px; margin: 0; font-weight: 700; letter-spacing: .3px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.brand .ver { color: var(--dim); font-size: 11px; }

.meta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.pill {
  display: flex; align-items: center; gap: 7px;
  padding: 6px 12px; border-radius: 999px;
  background: var(--panel); border: 1px solid var(--line);
}
.pill b { font-size: 14px; font-weight: 700; font-variant-numeric: tabular-nums; }
.pill span { color: var(--dim); font-size: 11px; }
.pill i {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--dim); display: inline-block;
}
#pill-im.ok i { background: var(--ok); box-shadow: 0 0 0 3px rgba(29,154,82,.18); }
#pill-im.bad i { background: var(--bad); box-shadow: 0 0 0 3px rgba(216,58,58,.18); }

.clock {
  font-variant-numeric: tabular-nums; color: var(--gold-2);
  font-size: 16px; padding-left: 12px; margin-left: 2px;
  border-left: 1px solid var(--line);
}
.quit {
  margin-left: 4px; padding: 7px 14px; border-radius: 8px;
  border: 1px solid var(--line); background: var(--panel); color: var(--dim);
  font: inherit; font-size: 12px; cursor: pointer; transition: .15s; white-space: nowrap;
  text-decoration: none;
}
.quit:hover { color: var(--bad); border-color: rgba(216,58,58,.4); background: rgba(216,58,58,.06); }

/* ---------------------------------------------------------------- 布局 */
.dash {
  max-width: 1320px; margin: 0 auto; padding: 22px 20px 8px;
  display: grid; grid-template-columns: minmax(0,1fr) 340px; gap: 18px;
  align-items: start;
}
/* 宽屏：侧栏与主列等高，「历史出奖记录」纵向撑满剩余空间 */
@media (min-width: 1000px) {
  .dash { align-items: stretch; }
}
.col-main, .col-side { display: flex; flex-direction: column; gap: 18px; min-width: 0; }

.card {
  background: linear-gradient(180deg, var(--panel), var(--panel2));
  border: 1px solid var(--line); border-radius: var(--radius);
  overflow: hidden; box-shadow: var(--shadow);
}
.card.hero { border-color: rgba(214,73,140,.28); }

/* ---------------------------------------------------------------- 秋季锦囊 */
.card.pouch {
  border-color: rgba(185,128,42,.36);
  background:
    linear-gradient(180deg, rgba(185,128,42,.06), rgba(255,255,255,0) 60%),
    linear-gradient(180deg, var(--panel), var(--panel2));
}
.card.pouch .head .ic { color: var(--gold); }
.body.pouch-b { display: flex; gap: 20px; padding: 16px; align-items: flex-start; }
.body.pouch-b .big { min-width: 110px; }
.body.pouch-b .big b { color: var(--gold-2); }
.list .gift { color: var(--pink); font-style: normal; font-weight: 700; flex: none; }
.list .op { color: var(--dim); flex: none; font-size: 12px; }
.list .act {
  color: var(--gold-2); flex: none; font-size: 12px;
  border: 1px solid rgba(185,128,42,.35); border-radius: 7px;
  padding: 0 7px; background: var(--gold-soft);
}

.head {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 13px 16px; border-bottom: 1px solid var(--line);
  background: rgba(0,0,0,.015);
}
.head h2 { margin: 0; font-size: 14px; font-weight: 700; letter-spacing: .3px;
  display: flex; align-items: center; gap: 8px; }
.head .ic { color: var(--gold); font-size: 15px; }
.hero .head .ic { color: var(--pink); }
.tag {
  font-size: 11px; color: var(--dim); border: 1px solid var(--line);
  border-radius: 8px; padding: 2px 9px; font-family: ui-monospace, Consolas, monospace;
  white-space: nowrap;
}
.tag.gold { color: var(--gold-2); border-color: rgba(185,128,42,.4); background: var(--gold-soft); }
.tag.dim { opacity: .85; }

.foot {
  padding: 9px 16px 11px; color: var(--dim); font-size: 11.5px;
  border-top: 1px dashed var(--line);
}

/* ---------------------------------------------------------------- 嘉年华 */
.body.carn { display: flex; gap: 22px; padding: 16px; align-items: flex-start; }
.big { display: flex; flex-direction: column; gap: 3px; min-width: 120px; }
.big b {
  font-size: 46px; line-height: 1; color: var(--pink);
  font-variant-numeric: tabular-nums; font-weight: 800;
}
.big.small b { font-size: 34px; color: var(--blue); }
.big.small.center { align-items: center; padding: 10px 0 14px; }
.big i { font-style: normal; color: var(--dim); font-size: 12px; }

/* ---------------------------------------------------------------- 列表 */
.list { list-style: none; margin: 0; padding: 0; flex: 1; min-width: 0; }
.list li {
  display: flex; align-items: baseline; gap: 10px;
  padding: 7px 9px; border-radius: 8px;
  font-variant-numeric: tabular-nums;
}
.list li + li { border-top: 1px solid rgba(227,232,240,.9); }
.list li:nth-child(odd) { background: rgba(24,32,46,.025); }
.list .t { color: var(--dim); font-size: 12px; width: 62px; flex: none; }
.list .nick { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.list .prize { color: var(--gold-2); flex: none; }
.list .val { color: var(--txt); flex: none; text-align: right; font-size: 13px; }
.list .gap { color: var(--dim); font-size: 11.5px; flex: none; }
.list .empty { color: var(--dim); justify-content: center; font-size: 12.5px; padding: 12px; }
.list.tight li { padding: 5px 8px; font-size: 12.5px; }

/* ---------------------------------------------------------------- 三舞台 */
.stages { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--line); }
.stage { background: var(--panel); padding: 14px 14px 12px; display: flex; flex-direction: column; gap: 10px; }
.stage.cold { background: #eef1f6; }
.stage .title { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.stage .title h3 { margin: 0; font-size: 14px; font-weight: 700; }
.stage .tier {
  font-size: 11px; color: var(--gold-2); background: var(--gold-soft);
  border: 1px solid rgba(185,128,42,.35); border-radius: 7px; padding: 1px 7px;
  font-variant-numeric: tabular-nums; white-space: nowrap;
}
.kv { display: grid; grid-template-columns: repeat(2, 1fr); gap: 7px 10px; }
.kv div { display: flex; flex-direction: column; line-height: 1.25; }
.kv i { font-style: normal; color: var(--dim); font-size: 11px; }
.kv b { font-size: 14px; font-variant-numeric: tabular-nums; font-weight: 700; }
.stage .rows { border-top: 1px dashed var(--line); padding-top: 8px; }
.stage .rows .empty { color: var(--dim); font-size: 12px; padding: 8px 0; }

/* ---------------------------------------------------------------- 页脚 / 登录令牌弹层 */
footer {
  max-width: 1320px; margin: 0 auto; padding: 14px 24px 28px;
  color: var(--dim); font-size: 11.5px;
  display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap;
}
.overlay {
  position: fixed; inset: 0; background: rgba(20,30,45,.45);
  display: flex; align-items: center; justify-content: center; z-index: 50; padding: 20px;
}
.overlay[hidden] { display: none; }
.overlay .box {
  background: var(--panel); border: 1px solid var(--line); border-radius: 14px;
  padding: 24px 26px; width: min(360px, 92vw); text-align: center;
}
.overlay h3 { margin: 0 0 8px; font-size: 15px; }
.overlay p { color: var(--dim); font-size: 12.5px; margin: 0 0 14px; }
.overlay code { color: var(--gold-2); }
.overlay input {
  width: 100%; padding: 9px 11px; border-radius: 8px; border: 1px solid var(--line);
  background: #fff; color: var(--txt); font-size: 13px; outline: none;
}
.overlay input:focus { border-color: var(--gold); }
.overlay button {
  margin-top: 10px; width: 100%; padding: 9px; border: 0; border-radius: 8px;
  background: linear-gradient(135deg, var(--gold), var(--gold-2)); color: #fff; font-weight: 700; font-size: 13px; cursor: pointer;
}
.overlay .err { color: var(--bad); font-size: 12px; margin: 8px 0 0; min-height: 16px; }

/* ---------------------------------------------------------------- 历史记录页 */
.page { max-width: 1320px; margin: 0 auto; padding: 22px 20px 8px; }

.tabs { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 14px; }
.tab {
  padding: 9px 18px; border-radius: 10px; cursor: pointer; font: inherit; font-size: 13.5px;
  background: var(--panel); color: var(--dim); border: 1px solid var(--line); transition: .15s;
}
.tab:hover { color: var(--txt); border-color: rgba(185,128,42,.5); }
.tab.active {
  color: #fff; background: linear-gradient(135deg, var(--gold), var(--gold-2));
  border-color: transparent; font-weight: 700;
}

.toolbar { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; flex-wrap: wrap; }
.toolbar #search {
  flex: 1; min-width: 200px; padding: 9px 13px; border-radius: 9px; border: 1px solid var(--line);
  background: #fff; color: var(--txt); font-size: 13px; outline: none;
}
.toolbar #search:focus { border-color: var(--gold); }
.toolbar .field { display: flex; align-items: center; gap: 6px; color: var(--dim); font-size: 12px; }
.toolbar select {
  padding: 8px 10px; border-radius: 8px; border: 1px solid var(--line);
  background: #fff; color: var(--txt); font: inherit; font-size: 13px; outline: none; cursor: pointer;
}
.toolbar .count { color: var(--dim); font-size: 12px; font-variant-numeric: tabular-nums; }
.ghost {
  margin-left: auto; padding: 8px 14px; border-radius: 8px; cursor: pointer; font: inherit; font-size: 12.5px;
  background: transparent; color: var(--gold-2); border: 1px solid rgba(185,128,42,.45); transition: .15s;
}
.ghost:hover { background: var(--gold-soft); }

.table-wrap { overflow-x: auto; }
table.hist { width: 100%; border-collapse: collapse; font-size: 13px; }
table.hist th {
  text-align: left; padding: 11px 14px; color: var(--dim); font-weight: 600; font-size: 12px;
  border-bottom: 1px solid var(--line); background: rgba(0,0,0,.02); white-space: nowrap;
  position: sticky; top: 0;
}
table.hist td {
  padding: 10px 14px; border-bottom: 1px solid rgba(227,232,240,.9);
  vertical-align: top; font-variant-numeric: tabular-nums;
}
table.hist tbody tr:nth-child(odd) { background: rgba(24,32,46,.025); }
table.hist tbody tr:hover { background: rgba(185,128,42,.08); }
table.hist .num { text-align: right; color: var(--gold-2); }
table.hist .t { color: var(--dim); font-size: 12px; white-space: nowrap; }
table.hist .wide { color: var(--txt); max-width: 520px; }
table.hist td.empty { text-align: center; color: var(--dim); padding: 26px; }
table.hist .th-wide { min-width: 360px; }
table.hist .nowrap { white-space: nowrap; }

/* 轮次明细：每个礼物各自的出现时间（时间徽标 + 礼物名 + ×数量） */
.evlist { display: flex; flex-wrap: wrap; gap: 5px 7px; max-width: 640px; }
.ev {
  display: inline-flex; align-items: baseline; gap: 5px;
  padding: 2px 8px 2px 7px; border-radius: 8px;
  background: var(--panel2); border: 1px solid var(--line);
  font-size: 12.5px; line-height: 1.5; white-space: nowrap;
}
.ev-t {
  font-family: ui-monospace, "Cascadia Mono", Consolas, "Courier New", monospace;
  font-size: 12px; font-weight: 700; color: var(--dim);
  letter-spacing: .2px; font-variant-numeric: tabular-nums;
}
.ev-n { color: var(--txt); font-weight: 600; }
.ev-x { font-style: normal; font-size: 11.5px; font-weight: 700; color: var(--gold-2); }
.ev-hit { border-color: rgba(185,128,42,.45); background: var(--gold-soft); }
.ev-hit .ev-n, .ev-hit .ev-t { color: var(--gold-2); }
.muted { color: var(--dim); }

.badge {
  display: inline-block; padding: 1px 9px; border-radius: 7px; font-size: 11.5px; font-weight: 600;
  border: 1px solid transparent; white-space: nowrap;
}
.b-pink  { color: #c41f73; border-color: rgba(214,73,140,.4); background: rgba(214,73,140,.1); }
.b-blue  { color: #1f5fd0; border-color: rgba(47,111,237,.4);  background: rgba(47,111,237,.1); }
.b-gold  { color: var(--gold-2); border-color: rgba(185,128,42,.4); background: var(--gold-soft); }
.b-purp  { color: #7c3aed; border-color: rgba(139,92,246,.4); background: rgba(139,92,246,.1); }
.b-dim   { color: var(--dim); border-color: var(--line);        background: rgba(24,32,46,.03); }

/* ---------------------------------------------------------------- 账号审核面板 */
.admin { max-width: 1320px; margin: 0 auto 22px; }
.admin-b { padding: 14px 16px; display: flex; flex-direction: column; gap: 8px; }
.admin-row {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--panel2);
}
.admin-row .u { font-weight: 700; font-size: 14px; }
.admin-row .acts { display: flex; gap: 8px; flex: none; }
.admin-row .empty { color: var(--dim); }
.btn-ok, .btn-no {
  padding: 7px 16px; border-radius: 8px; cursor: pointer; font: inherit; font-size: 13px; border: 1px solid transparent;
}
.btn-ok { background: var(--ok); color: #fff; }
.btn-ok:hover { filter: brightness(.95); }
.btn-no { background: #fff; color: var(--bad); border-color: rgba(216,58,58,.4); }
.btn-no:hover { background: rgba(216,58,58,.07); }
/* v5.22：管理员面板第二块 —— IP 绑定 */
.head.admin-sub {
  margin-top: 4px; padding-top: 14px;
  border-top: 1px dashed var(--line); border-radius: 0;
}
.head.admin-sub h2 { font-size: 13.5px; }
.head.admin-sub h2 .sub { font-style: normal; font-weight: normal; font-size: 10.5px; color: var(--dim); margin-left: 6px; }
.admin-row .u .ip {
  margin-left: 9px; color: var(--dim);
  font-size: 12px; font-weight: 500; font-variant-numeric: tabular-nums;
}
.admin-row .u .tag { margin-left: 6px; font-weight: 600; }
/* v5.52：当前登录账号 + 在线/离线状态 —— 整行高亮 + 带圆点的徽标 */
.admin-row.me { border-color: rgba(29,154,82,.38); background: rgba(29,154,82,.05); }
.tag.cur { color: var(--ok); border-color: rgba(29,154,82,.45); background: rgba(29,154,82,.13); }
.tag.on  { color: var(--ok); border-color: rgba(29,154,82,.3); background: rgba(29,154,82,.08); }
.tag.off { color: var(--dim); opacity: .8; }
.tag.on::before, .tag.off::before {
  content: ''; display: inline-block; width: 6px; height: 6px; border-radius: 50%;
  margin-right: 5px; vertical-align: 1px; background: currentColor;
}
/* v5.23：破坏性操作二次确认 + 结果提示 */
.btn-no.armed { background: var(--bad); color: #fff; border-color: var(--bad); }
.btn-ok.armed { background: var(--bad); color: #fff; border-color: var(--bad); }
.admin-msg { display: none; }
.admin-msg.show {
  display: block; margin: 10px 16px 14px; padding: 9px 12px; border-radius: 9px;
  font-size: 12.5px; color: var(--bad);
  background: rgba(216,58,58,.06); border: 1px solid rgba(216,58,58,.25);
}
.admin-msg.show.ok {
  color: var(--ok);
  background: rgba(29,154,82,.07); border-color: rgba(29,154,82,.25);
}

/* ---------------------------------------------------------------- 窄屏 */
@media (max-width: 940px) {
  .dash { grid-template-columns: 1fr; }
  .stages { grid-template-columns: 1fr; }
  .body.carn { flex-direction: column; gap: 14px; }
  .meta { gap: 6px; }
  .clock { border-left: 0; padding-left: 0; }
  .big b { font-size: 38px; }
  .toolbar #search { min-width: 100%; order: -1; }
  .ghost { margin-left: 0; }
}

@media (max-width: 600px) {
  .top { padding: 10px 14px; }
  .brand h1 { font-size: 14px; max-width: 62vw; }
  .pill { padding: 5px 9px; }
  .pill b { font-size: 13px; }
  .pill span { display: none; }            /* 手机上隐藏「连接/收包」等小标签，留数字 */
  .quit { padding: 6px 11px; }
  .dash { padding: 14px 12px 6px; gap: 14px; }
  .col-main, .col-side { gap: 14px; }
  .body.carn { padding: 14px; gap: 10px; }
  .big { min-width: 0; }
  .big b { font-size: 32px; }
  .head { padding: 11px 13px; }
  .foot { font-size: 11px; }
  .tabs { gap: 6px; }
  .tab { padding: 8px 13px; font-size: 13px; }
  .page { padding: 14px 12px 6px; }
  table.hist th, table.hist td { padding: 9px 11px; }
  .admin-row { flex-direction: column; align-items: stretch; gap: 10px; }
  .admin-row .acts { justify-content: flex-end; }

  /* 出奖轮次：窄屏改成卡片，明细时间不用横滑 */
  table.hist.rounds,
  table.hist.rounds tbody { display: block; width: 100%; }
  table.hist.rounds thead { display: none; }
  table.hist.rounds tbody tr,
  table.hist.rounds tbody tr:nth-child(odd) {
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: 12px;
    background: var(--panel);
    border: 1px solid var(--line);
    border-radius: 12px;
    padding: 10px 13px;
    margin-bottom: 10px;
    box-shadow: 0 2px 10px rgba(24,38,60,.04);
  }
  table.hist.rounds td {
    display: block; width: auto; max-width: none !important;
    border: 0; padding: 2px 0;
  }
  table.hist.rounds td::before {
    content: attr(data-l);
    display: block; color: var(--dim); font-size: 10.5px; margin-bottom: 2px;
  }
  table.hist.rounds td[data-l="时间区间"],
  table.hist.rounds td[data-l="轮次"],
  table.hist.rounds td[data-l="单个礼物出现时间"],
  table.hist.rounds td[data-l="收尾大奖"] { grid-column: 1 / -1; }
  table.hist.rounds td[data-l="轮次"] { font-size: 15px; font-weight: 700; padding-bottom: 0; }
  table.hist.rounds td[data-l="时间区间"] { color: var(--dim); font-size: 12px; }
  table.hist.rounds td.num { text-align: left; }
  table.hist.rounds td[data-l="轮次"]::before,
  table.hist.rounds td[data-l="时间区间"]::before,
  table.hist.rounds td[data-l="礼物数"]::before,
  table.hist.rounds td[data-l="数量"]::before {
    display: inline; margin: 0 5px 0 0; font-size: 11px; color: var(--dim);
  }
  table.hist.rounds td[data-l="单个礼物出现时间"]::before { margin-bottom: 4px; }
  table.hist.rounds .evlist { max-width: none; }
  table.hist.rounds .ev { font-size: 12px; }

  /* 全部流水：窄屏卡片，时间/价值/礼物/数量/场景·中奖人 三段式 */
  table.hist.events,
  table.hist.events tbody { display: block; width: 100%; }
  table.hist.events thead { display: none; }
  table.hist.events tbody tr,
  table.hist.events tbody tr:nth-child(odd) {
    display: grid;
    grid-template-columns: minmax(0,1fr) auto;
    grid-template-areas: "t v" "g c" "s u";
    column-gap: 10px;
    background: var(--panel);
    border: 1px solid var(--line);
    border-radius: 12px;
    padding: 9px 12px;
    margin-bottom: 8px;
    box-shadow: 0 2px 10px rgba(24,38,60,.04);
  }
  table.hist.events td {
    display: block; width: auto; max-width: none !important;
    border: 0; padding: 0; text-align: left; font-size: 12px;
  }
  table.hist.events td::before {
    content: attr(data-l); color: var(--dim); font-size: 10.5px; margin-right: 4px;
  }
  table.hist.events td[data-l="时间"] { grid-area: t; color: var(--dim); font-size: 11.5px; white-space: nowrap; }
  table.hist.events td[data-l="时间"]::before { display: none; }
  table.hist.events td[data-l="实际价值"] { grid-area: v; text-align: right; color: var(--gold-2); font-weight: 700; }
  table.hist.events td[data-l="实际价值"]::before { display: none; }
  table.hist.events td[data-l="礼物"] { grid-area: g; font-size: 14px; font-weight: 600; color: var(--txt); }
  table.hist.events td[data-l="礼物"]::before { display: none; }
  table.hist.events td[data-l="数量"] { grid-area: c; text-align: right; color: var(--dim); }
  table.hist.events td[data-l="场景"] { grid-area: s; color: var(--dim); font-size: 11.5px; }
  table.hist.events td[data-l="场景"]::before { display: none; }
  table.hist.events td[data-l="中奖用户"] { grid-area: u; text-align: right; color: var(--txt); font-size: 11.5px;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  table.hist.events td[data-l="中奖用户"]::before { display: none; }
}

/* ---------------------------------------------------------------- 登录页 */
.auth-page {
  min-height: 100vh; display: grid; place-items: center; padding: 20px;
}
.auth-wrap { width: min(392px, 94vw); }
.auth-card {
  background: linear-gradient(180deg, var(--panel), var(--panel2));
  border: 1px solid var(--line); border-radius: 18px; padding: 26px 26px 28px;
  box-shadow: var(--shadow);
}
.auth-brand { display: flex; align-items: center; gap: 12px; margin-bottom: 20px; }
.auth-brand .logo {
  width: 40px; height: 40px; border-radius: 12px; font-size: 21px;
  display: grid; place-items: center; font-weight: 800; color: #fff;
  background: linear-gradient(135deg, var(--gold), var(--gold-2));
  box-shadow: 0 4px 14px rgba(185,128,42,.30);
}
.auth-brand h1 { font-size: 16px; margin: 0; font-weight: 700; }
.auth-brand .ver { color: var(--dim); font-size: 11.5px; }

.auth-tabs { display: flex; gap: 8px; margin-bottom: 16px; }
.auth-tabs button {
  flex: 1; padding: 9px; border-radius: 9px; cursor: pointer; font: inherit;
  font-size: 13px; background: var(--panel2); color: var(--dim);
  border: 1px solid var(--line); transition: .15s;
}
.auth-tabs button.active {
  color: #fff; background: linear-gradient(135deg, var(--gold), var(--gold-2));
  border-color: transparent; font-weight: 700;
}

.auth-card form { display: flex; flex-direction: column; gap: 11px; }
.auth-card input {
  width: 100%; padding: 11px 13px; border-radius: 9px; border: 1px solid var(--line);
  background: #fff; color: var(--txt); font-size: 14px; outline: none;
}
.auth-card input:focus { border-color: var(--gold); }
.reg-only { color: var(--dim); font-size: 12px; line-height: 1.5; margin: -2px 0 2px; }
.auth-card button[type=submit] {
  margin-top: 4px; padding: 11px; border: 0; border-radius: 9px; cursor: pointer;
  background: linear-gradient(135deg, var(--gold), var(--gold-2));
  color: #fff; font-weight: 700; font-size: 14px;
}
.auth-card button[type=submit]:disabled { opacity: .6; cursor: default; }
.auth-card .err { font-size: 12.5px; margin: 4px 0 0; min-height: 16px; text-align: center; }
.auth-card .err.ok { color: var(--ok); }

#pill-user i { background: var(--ok); box-shadow: 0 0 0 3px rgba(29,154,82,.18); }

/* ---------------------------------------------------------------- AI 轮次分析 */
.card.ai {
  border-color: rgba(47,111,237,.30);
  background:
    linear-gradient(180deg, rgba(47,111,237,.055), rgba(255,255,255,0) 55%),
    linear-gradient(180deg, var(--panel), var(--panel2));
}
.card.ai .head .ic { color: var(--blue); }
.body.ai-b { padding: 14px 16px 16px; display: flex; flex-direction: column; gap: 12px; }

.ai-stats { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 10px; }
.ai-stat {
  border: 1px solid var(--line); border-radius: 11px; background: #fff;
  padding: 10px 12px; display: flex; flex-direction: column; gap: 3px; min-width: 0;
}
.ai-stat i { font-style: normal; color: var(--dim); font-size: 11px; }
.ai-stat b {
  font-size: 17px; font-weight: 700; font-variant-numeric: tabular-nums;
  letter-spacing: .2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.ai-stat.hot b { color: var(--gold-2); }
.ai-stat.cool b { color: var(--blue); }

.ai-bar {
  height: 9px; border-radius: 999px; background: var(--bg2);
  border: 1px solid var(--line); overflow: hidden;
}
.ai-bar span {
  display: block; height: 100%; width: 0;
  background: linear-gradient(90deg, var(--blue), var(--purp));
  transition: width .5s ease;
}
.ai-verdict { font-size: 12.5px; color: var(--txt); line-height: 1.65; }
.ai-verdict p { margin: 0; }
.ai-verdict p + p { margin-top: 3px; }
.ai-verdict .k { color: var(--gold-2); font-weight: 700; }

.ai-cols { display: grid; grid-template-columns: 1fr; gap: 12px; }
.ai-col {
  border: 1px solid var(--line); border-radius: 11px; background: #fff;
  overflow: hidden; min-width: 0;
}
.ai-colh {
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
  padding: 8px 12px; font-size: 12.5px; font-weight: 700;
  background: rgba(0,0,0,.02); border-bottom: 1px solid var(--line);
}
.ai-colh em { font-style: normal; font-weight: 400; color: var(--dim); font-size: 11px; }
.ai-list { list-style: none; margin: 0; padding: 4px 0; max-height: 215px; overflow: auto; }
.ai-list li {
  display: flex; align-items: center; gap: 8px; padding: 6px 12px; font-size: 12.5px;
}
.ai-list li + li { border-top: 1px dashed var(--line); }
.ai-list .nm {
  flex: 1; min-width: 0; font-weight: 600;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.ai-list .src { color: var(--dim); font-size: 10.5px; flex: none; }
.ai-list .ct {
  font-variant-numeric: tabular-nums; font-weight: 700; color: var(--blue); flex: none;
}
.ai-list .ct.hit { color: var(--gold-2); }
.ai-list .vg { color: var(--dim); font-size: 10.5px; flex: none; font-variant-numeric: tabular-nums; }
.ai-list .empty { color: var(--dim); font-size: 12px; }
.ai-list .bstar { color: var(--gold); flex: none; font-size: 11px; }

.chips { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 7px; }
.chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 10px; border-radius: 999px; font-size: 12px;
  background: var(--panel); border: 1px solid var(--line); color: var(--txt);
}
.chip b { font-variant-numeric: tabular-nums; }
.chip i { font-style: normal; color: var(--dim); font-size: 10.5px; }
.chip.hit { border-color: rgba(185,128,42,.45); background: var(--gold-soft); color: var(--gold-2); font-weight: 700; }

/* ---------------------------------------------------------------- 大奖节点逐个分析 */
.card.nodes { border-color: rgba(185,128,42,.28); }
.card.nodes .head .ic { color: var(--gold); }
.nodes-b { padding: 9px 11px 11px; display: flex; flex-direction: column; gap: 6px; }

.node {
  position: relative; overflow: hidden;
  border: 1px solid var(--line); border-radius: 10px;
  background: linear-gradient(180deg, #fff, var(--panel2));
  padding: 7px 11px 7px 13px;
}
.node::before {
  content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: #ccd5e2;
}
.node.st-near::before { background: var(--blue); }
.node.st-hot::before { background: var(--gold); }
.node.st-guard::before { background: var(--bad); }

.nhead { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; line-height: 1.25; margin-bottom: 5px; }
.ndot { width: 6px; height: 6px; border-radius: 50%; background: #b3bece; flex: none; }
.st-near .ndot { background: var(--blue); }
.st-hot .ndot { background: var(--gold); }
.st-guard .ndot { background: var(--bad); }
.nname { font-size: 13.5px; font-weight: 700; letter-spacing: .2px; }
.nbadge {
  font-size: 10px; font-weight: 700; padding: 0 6px; border-radius: 999px; line-height: 15px;
  border: 1px solid var(--line); color: var(--dim); background: #fff; white-space: nowrap;
}
.st-near .nbadge { color: var(--blue); border-color: rgba(47,111,237,.35); background: rgba(47,111,237,.08); }
.st-hot .nbadge { color: var(--gold-2); border-color: rgba(185,128,42,.42); background: var(--gold-soft); }
.st-guard .nbadge { color: var(--bad); border-color: rgba(216,58,58,.35); background: rgba(216,58,58,.07); }
.nsrc { font-size: 10.5px; color: var(--dim); }
.nlast {
  font-size: 10.5px; color: var(--dim); margin-left: auto; text-align: right;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 52%;
}
.nlast b { color: var(--txt); font-variant-numeric: tabular-nums; }
.nwho { color: var(--gold-2); font-weight: 600; }

.nrow { display: grid; grid-template-columns: 124px minmax(0,1fr) 164px; gap: 12px; align-items: center; }
.nbig { min-width: 0; }
.nbig b {
  display: block; font-size: 21px; line-height: 1.05; font-weight: 800;
  letter-spacing: -.4px; font-variant-numeric: tabular-nums;
}
.nbig i {
  display: block; font-style: normal; font-size: 10px; color: var(--dim);
  margin-top: 2px; white-space: nowrap;
}

.nbar-h { display: flex; justify-content: space-between; gap: 10px; font-size: 11px; color: var(--dim); margin-bottom: 3px; }
.nbar-h b { color: var(--txt); font-variant-numeric: tabular-nums; }
.nbar { height: 6px; border-radius: 999px; background: #e7ebf3; overflow: hidden; }
.nbar span {
  display: block; height: 100%; border-radius: 999px;
  background: linear-gradient(90deg, #c2cbdb, #93a1b8);
  transition: width .45s ease;
}
.st-near .nbar span { background: linear-gradient(90deg, #a9c4ff, var(--blue)); }
.st-hot .nbar span { background: linear-gradient(90deg, #eccd94, var(--gold)); }
.st-guard .nbar span { background: linear-gradient(90deg, #f2b0b0, var(--bad)); }

.nmeta {
  display: flex; flex-wrap: wrap; gap: 0 12px;
  font-size: 11px; color: var(--dim); margin-top: 3px; line-height: 1.35;
}
.nmeta .ne b { color: var(--gold-2); }
.nmeta .nei { font-style: normal; font-variant-numeric: tabular-nums; }
.nmeta .nw b { color: var(--blue); }

.nside { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.ns { display: flex; align-items: baseline; gap: 6px; font-size: 11.5px; line-height: 1.3; min-width: 0; }
.ns i { font-style: normal; color: var(--dim); font-size: 10.5px; width: 24px; flex: none; }
.ns span { color: var(--txt); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* 「当前 / 上轮 / 合计」纯数字：等宽数字，倍数部分略亮 */
.ns b {
  color: var(--txt); font-weight: 600; font-size: 12px; letter-spacing: .2px;
  font-variant-numeric: tabular-nums;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

.nhist {
  display: flex; align-items: flex-start; gap: 9px;
  margin-top: 4px; padding-top: 4px; border-top: 1px dashed var(--line);
}
.nh-h {
  width: 30px; flex: none; font-size: 9.5px; line-height: 1.25;
  color: var(--dim); padding-top: 1px; letter-spacing: 0;
}
.nh-body { flex: 1; min-width: 0; }
.nh-list { display: grid; grid-template-columns: 1fr 1fr; gap: 0 18px; }
.nh {
  display: grid; grid-template-columns: 96px minmax(0,118px) minmax(0,1fr); gap: 8px;
  font-size: 11.5px; padding: 1px 0; border-bottom: 1px dotted rgba(227,232,240,.9);
}
.nh:last-child { border-bottom: 0; }
.nh-t { font-family: ui-monospace, "Cascadia Mono", Consolas, monospace; color: var(--dim); font-size: 10.5px; }
.nh-n { color: var(--txt); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nh-g { color: var(--gold-2); text-align: left; white-space: nowrap; font-variant-numeric: tabular-nums;
  overflow: hidden; text-overflow: ellipsis; }
.nh-more { font-size: 10.5px; color: var(--blue); cursor: pointer; padding: 2px 0 0; user-select: none; }
.nh-more:hover { text-decoration: underline; }

/* ---------------------------------------------------------------- 逐个大奖 · 实时中奖率 */
.pz { margin-top: 9px; border-top: 1px dashed var(--line); padding-top: 7px; }
.pz-h { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-bottom: 5px; }
.pz-h b { font-size: 12.5px; letter-spacing: .2px; }
.pz-lead { font-size: 11.5px; color: var(--dim); }
.pz-lead.on { color: var(--gold-2); font-weight: 700; }
.pz-tip { font-size: 10px; color: var(--dim); margin-left: auto; opacity: .85; }
.pz-list { display: flex; flex-direction: column; gap: 5px; }

.pzr {
  position: relative; display: grid;
  grid-template-columns: 166px 92px minmax(0,1fr) 150px 96px; gap: 10px;
  align-items: center;
  padding: 5px 10px 5px 12px;
  border: 1px solid var(--line); border-radius: 9px;
  background: linear-gradient(180deg, #fff, var(--panel2));
}
.pzr::before {
  content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px;
  border-radius: 9px 0 0 9px; background: #ccd5e2;
}
.pzr.st-near::before { background: var(--blue); }
.pzr.st-hot::before { background: var(--gold); }
.pzr.st-guard::before { background: var(--bad); }

.pzr-n { display: flex; align-items: center; gap: 5px; min-width: 0; flex-wrap: nowrap; }
.pzr-dot { width: 6px; height: 6px; border-radius: 50%; background: #b3bece; flex: none; }
.st-near .pzr-dot { background: var(--blue); }
.st-hot .pzr-dot { background: var(--gold); }
.st-guard .pzr-dot { background: var(--bad); }
.pzr-n b {
  font-size: 12.5px; white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis; min-width: 0;
}
.pzr-src { font-size: 9.5px; color: var(--dim); white-space: nowrap; flex: none; }
.pzr-badge {
  font-size: 9.5px; line-height: 14px; padding: 0 5px; border-radius: 999px;
  border: 1px solid var(--line); color: var(--dim); background: #fff; white-space: nowrap;
}
.st-near .pzr-badge { color: var(--blue); border-color: rgba(47,111,237,.32); background: rgba(47,111,237,.07); }
.st-hot .pzr-badge { color: var(--gold-2); border-color: rgba(185,128,42,.42); background: var(--gold-soft); }
.st-guard .pzr-badge { color: var(--bad); border-color: rgba(216,58,58,.32); background: rgba(216,58,58,.06); }
.pzr-more {
  font-size: 9.5px; color: var(--blue); cursor: pointer; user-select: none;
  flex: none; margin-left: auto; padding: 0 2px;
}
.pzr-more:hover { text-decoration: underline; }

.pzr-w { min-width: 0; }
.pzr-w b {
  display: block; font-size: 15px; font-weight: 800; line-height: 1.1;
  font-variant-numeric: tabular-nums;
}
.pzr-w i {
  display: block; font-style: normal; font-size: 9.5px; color: var(--dim);
  margin-top: 1px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

.pzr-mid { min-width: 0; }
.pzr-bar { height: 6px; border-radius: 999px; background: #e7ebf3; overflow: hidden; }
.pzr-bar span {
  display: block; height: 100%; border-radius: 999px;
  background: linear-gradient(90deg, #c2cbdb, #93a1b8);
  transition: width .9s linear;
}
.st-near .pzr-bar span { background: linear-gradient(90deg, #a9c4ff, var(--blue)); }
.st-hot .pzr-bar span { background: linear-gradient(90deg, #eccd94, var(--gold)); }
.st-guard .pzr-bar span { background: linear-gradient(90deg, #f2b0b0, var(--bad)); }
.pzr-sub {
  display: flex; justify-content: space-between; gap: 8px;
  font-size: 10.5px; color: var(--dim); margin-top: 3px;
  overflow: hidden; white-space: nowrap;
}
.pzr-sub b { color: var(--txt); font-variant-numeric: tabular-nums; }
.pzr-st { font-style: normal; margin-left: 6px; font-size: 9.5px; opacity: .9; }
.st-guard .pzr-st { color: var(--bad); }
.st-hot .pzr-st { color: var(--gold-2); }
.st-near .pzr-st { color: var(--blue); }

.pzr-p { display: flex; gap: 10px; justify-content: flex-end; align-items: baseline; }
.pzr-p span { display: flex; align-items: baseline; gap: 3px; }
.pzr-p i { font-style: normal; font-size: 9.5px; color: var(--dim); }
.pzr-p b { font-size: 12.5px; font-variant-numeric: tabular-nums; color: var(--txt); }
.pzr-p .hi b { font-size: 14px; font-weight: 800; color: var(--gold-2); }

.pzr-e { min-width: 0; text-align: right; }
.pzr-e b {
  display: block; font-size: 12.5px; font-weight: 700;
  font-variant-numeric: tabular-nums; line-height: 1.15;
}
.pzr-e i {
  display: block; font-style: normal; font-size: 9.5px; color: var(--dim);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.pzr-e.late b { color: var(--gold-2); }
.pzr-e.late i { color: var(--bad); }

.pzr-h { grid-column: 1 / -1; border-top: 1px dashed var(--line); margin-top: 4px; padding-top: 4px; }

/* 逐奖历史明细表：时间 / 场景 / 礼物 / 实际价值 / 数量 / 中奖用户 */
.ht-wrap { overflow-x: auto; }
.ht { width: 100%; border-collapse: collapse; font-size: 11.5px; table-layout: fixed; }
.ht th {
  text-align: left; font-weight: 500; font-size: 10px; color: var(--dim);
  padding: 0 8px 3px; border-bottom: 1px solid var(--line); white-space: nowrap;
}
.ht td {
  padding: 3px 8px; border-bottom: 1px dotted rgba(227,232,240,.9);
  color: var(--txt); white-space: nowrap;
}
.ht tbody tr:last-child td { border-bottom: 0; }
.ht tbody tr:hover td { background: rgba(47,111,237,.045); }
.ht-t { font-family: ui-monospace, "Cascadia Mono", Consolas, monospace; color: var(--dim); font-size: 10.5px; width: 122px; }
.ht th:nth-child(2) { width: 104px; }
.ht-g { color: var(--gold-2); font-weight: 600; width: 150px; }
.ht-v, .ht-c { font-variant-numeric: tabular-nums; }
.ht-v { width: 104px; }
.ht-c { width: 52px; text-align: right; }
.ht th.ht-c { text-align: right; }
.ht th:last-child { width: auto; }
.ht td:last-child { overflow: hidden; text-overflow: ellipsis; }
.ht-more {
  font-size: 10.5px; color: var(--blue); cursor: pointer;
  padding: 3px 8px 0; user-select: none;
}
.ht-more:hover { text-decoration: underline; }
.pzr-cnt {
  font-size: 9.5px; color: var(--dim); border: 1px solid var(--line);
  border-radius: 999px; line-height: 14px; padding: 0 5px; flex: none; margin-left: auto;
}

@media (max-width: 940px) {
  .ai-stats { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .nrow { grid-template-columns: 118px minmax(0,1fr); gap: 10px; }
  .nside { grid-column: 1 / -1; flex-direction: row; flex-wrap: wrap; gap: 2px 16px; }
  .ns span, .ns b { white-space: normal; }
  .nlast { margin-left: 0; max-width: none; text-align: left; flex-basis: 100%; white-space: normal; }
  .pzr { grid-template-columns: minmax(0,1fr) 92px; gap: 5px 10px; }
  .pzr-mid { grid-column: 1 / -1; }
  .pzr-w { text-align: right; }
  .pzr-p { justify-content: flex-start; }
}
@media (max-width: 600px) {
  .ai-cols { grid-template-columns: 1fr; }
  .ai-stats { gap: 8px; }
  .ai-stat { padding: 8px 10px; }
  .ai-stat b { font-size: 15px; }
  .body.ai-b { padding: 12px; }
  .ai-list { max-height: 180px; }

  .nodes-b { padding: 8px; gap: 6px; }
  .pz { margin-top: 7px; padding-top: 6px; }
  .pz-h { gap: 6px; }
  .pz-tip { display: none; }
  .pzr { padding: 5px 8px 5px 10px; }
  .pzr-p { gap: 9px; }
  .node { padding: 7px 9px 7px 11px; }
  .nhead { gap: 4px; margin-bottom: 4px; }
  .nname { font-size: 12.5px; }
  .nsrc { width: 100%; font-size: 10px; }
  .nlast { width: 100%; font-size: 10px; }
  .nrow { grid-template-columns: 1fr; gap: 5px; }
  .nbig b { font-size: 19px; }
  .nbig i { font-size: 9.5px; }
  .nside { flex-direction: row; flex-wrap: wrap; gap: 1px 10px; }
  .ns { font-size: 11px; }
  .ns i { width: auto; font-size: 10px; }
  .nmeta { font-size: 10.5px; gap: 0 10px; margin-top: 2px; }
  .nhist { gap: 7px; margin-top: 3px; padding-top: 3px; }
  .nh-h { width: 26px; font-size: 9px; }
  .nh-list { grid-template-columns: 1fr; }
  .nh {
    display: flex; flex-wrap: wrap; gap: 0 7px; font-size: 11px;
    padding: 1px 0; border-bottom: 1px dotted rgba(227,232,240,.9);
  }
  .nh-t { font-size: 10px; }
  .nh-t, .nh-n, .nh-g { white-space: normal; overflow: visible; }
  .nh-g { text-align: left; }

  /* 历史明细表在窄屏改卡片式，一行一条不横滚 */
  .ht-wrap { overflow: visible; }
  .ht thead { display: none; }
  .ht, .ht tbody { display: block; }
  .ht tr {
    display: flex; flex-wrap: wrap; gap: 1px 8px;
    padding: 5px 0; border-bottom: 1px solid var(--line);
  }
  .ht tbody tr:last-child { border-bottom: 0; }
  .ht td {
    display: inline; padding: 0; border: 0; width: auto;
    max-width: none; white-space: normal; font-size: 11px;
  }
  .ht td::before {
    content: attr(data-l); color: var(--dim); font-size: 9.5px; margin-right: 3px;
  }
  .ht-t { width: 100%; font-size: 10px; }
  .ht-t::before { display: none; }
  .ht-g { font-weight: 600; width: auto; }
  .ht-v, .ht-c { text-align: left; }
  .ht td[data-l="中奖用户"] { flex-basis: 100%; }
}

/* ---------------------------------------------------------------- AI 分析 + 大奖节点并排 */
/* 默认仍上下堆叠；宽屏（≥1280，主列够宽）两块各占一半并排 */
.row-ai { display: flex; flex-direction: column; gap: 18px; min-width: 0; }

@media (min-width: 1280px) {
  .row-ai {
    display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr);
    gap: 18px; align-items: start;
  }

  /* AI 卡半宽：四格统计改 2×2，两列表改竖排 */
  .row-ai .ai-stats { grid-template-columns: repeat(2, minmax(0,1fr)); gap: 8px; }
  .row-ai .ai-stat { padding: 8px 10px; }
  .row-ai .ai-stat b { font-size: 16px; }
  .row-ai .ai-cols { grid-template-columns: 1fr; gap: 10px; }
  .row-ai .ai-list { max-height: 170px; }
  .row-ai .ai-verdict { font-size: 12px; }
  .row-ai .body.ai-b { padding: 12px; gap: 10px; }
  .row-ai .pz-tip { display: none; }

  /* 逐奖行：五列 → 两行（名称+距上次 / 进度 / 概率+期望） */
  .row-ai .pzr {
    grid-template-columns: minmax(0,1fr) auto;
    grid-template-areas: "n w" "mid mid" "p e";
    row-gap: 5px; padding: 6px 10px 7px 12px;
  }
  .row-ai .pzr-n { grid-area: n; }
  .row-ai .pzr-w { grid-area: w; text-align: right; }
  .row-ai .pzr-w b { font-size: 14px; }
  .row-ai .pzr-mid { grid-area: mid; }
  .row-ai .pzr-p { grid-area: p; justify-content: flex-start; }
  .row-ai .pzr-e { grid-area: e; }
  .row-ai .pzr-h { grid-column: 1 / -1; }
  /* 六列历史表在半宽卡里压缩显示（字号降一档，列宽按 428px 预算） */
  .row-ai .ht-wrap { overflow-x: auto; scrollbar-width: thin; padding-bottom: 2px; }
  .row-ai .ht { min-width: 0; font-size: 10.5px; }
  .row-ai .ht th { font-size: 9.5px; padding: 0 4px 3px; }
  .row-ai .ht td { padding: 2.5px 4px; }
  .row-ai .ht-t { width: 82px; font-size: 9.5px; }
  .row-ai .ht th:nth-child(2) { width: 58px; }
  .row-ai .ht-g { width: 52px; }
  .row-ai .ht-v { width: 52px; }
  .row-ai .ht-c { width: 30px; padding-right: 10px; }
  .row-ai .ht th:last-child, .row-ai .ht td:last-child { padding-left: 7px; }
  .row-ai .ht-more { padding-left: 4px; }

  /* 节点卡半宽：大数字与「当前/上轮/合计」并排，进度条独占一行 */
  .row-ai .nrow {
    grid-template-columns: minmax(0,1fr) auto;
    grid-template-areas: "big side" "mid mid";
    row-gap: 5px;
  }
  .row-ai .nbig { grid-area: big; }
  .row-ai .nmid { grid-area: mid; }
  .row-ai .nside { grid-area: side; width: 176px; align-items: flex-end; }
  .row-ai .ns span, .row-ai .ns b { min-width: 0; flex: 1; text-align: right; }
  .row-ai .nh-list { grid-template-columns: 1fr; }
  .row-ai .nhist { gap: 8px; }
  .row-ai .nhead { flex-wrap: wrap; }
  .row-ai .head { flex-wrap: nowrap; }
  .row-ai .head h2 { font-size: 14px; white-space: nowrap; }
  .row-ai .head .tag {
    max-width: 50%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  }
}

/* ---------------------------------------------------------------- 右栏 · 历史出奖记录 */
/* 取代原「其他官方公告」：显示最近 14 条出奖流水，宽屏时纵向拉伸填满侧栏剩余高度 */
.hist-mini { flex: 1 1 auto; display: flex; flex-direction: column; min-height: 200px; }
.hist-mini .head { flex: none; }
.hist-mini #hist-mini { flex: 1 1 auto; overflow-y: auto; overflow-x: hidden; scrollbar-width: thin; }
.hist-mini #hist-mini li {
  display: grid; grid-template-columns: 70px minmax(0,1fr) minmax(0,88px) 56px;
  align-items: baseline; gap: 6px; padding: 5px 9px;
}
.hist-mini #hist-mini .t { width: auto; font-size: 10.5px; letter-spacing: -.2px; }
.hist-mini #hist-mini .nick {
  font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.hist-mini #hist-mini .prize {
  max-width: none; font-size: 12px; text-align: left;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.hist-mini #hist-mini .val {
  font-size: 11.5px; color: var(--dim); text-align: right;
  font-variant-numeric: tabular-nums;
}
.hist-mini #hist-mini li.hm-big .prize { color: var(--gold-2); font-weight: 700; }
.hm-foot { flex: none; display: flex; justify-content: flex-end; padding: 7px 14px 9px; }
.hm-foot a { color: var(--gold-2); text-decoration: none; font-size: 11.5px; }
.hm-foot a:hover { text-decoration: underline; }

/* 窄屏：卡片不拉伸，列表限高滚动，避免 50 多条把页面拉太长 */
@media (max-width: 999px) {
  .hist-mini { flex: 0 0 auto; }
  .hist-mini #hist-mini { max-height: 420px; }
}

/* ================================================================ v5.21 视觉打磨 */
/* 顶栏：把「收包 / 重连 / 最后消息 / 运行」降为次要信息，只让「连接」保持醒目 */
.meta-dim { display: flex; align-items: center; gap: 2px; }
.meta-dim .pill {
  padding: 4px 9px; gap: 5px; background: transparent; border-color: transparent;
  opacity: .85; transition: background .15s, border-color .15s, opacity .15s;
}
.meta-dim .pill b { font-size: 12px; font-weight: 600; color: var(--dim); }
.meta-dim .pill span { font-size: 10.5px; }
.meta-dim .pill:hover { opacity: 1; background: var(--panel); border-color: var(--line); }
.meta-dim .pill:hover b { color: var(--txt); }

/* 「历史记录」从灰色小按钮改成主操作按钮（默认 .quit:hover 是退出用的红色，这里单独覆盖） */
.quit.nav {
  color: var(--gold-2); border-color: rgba(185,128,42,.38);
  background: var(--gold-soft); font-weight: 600;
}
.quit.nav:hover {
  color: #fff; border-color: var(--gold-2);
  background: linear-gradient(135deg, var(--gold), var(--gold-2));
}

/* 卡片：头部去掉灰底感，图标统一成小圆角色块 */
.head { background: linear-gradient(180deg, rgba(255,255,255,.94), rgba(246,248,252,.42)); }
.head .ic {
  width: 24px; height: 24px; border-radius: 8px; flex: none;
  display: inline-grid; place-items: center;
  background: var(--gold-soft); font-size: 13px; line-height: 1;
}
.card.ai .head .ic { background: rgba(47,111,237,.10); }
.card.hero .head .ic { background: rgba(214,73,140,.10); }

/* 卡片轻微浮起，让层级更清楚 */
@media (hover: hover) and (min-width: 1000px) {
  .card { transition: box-shadow .18s ease, transform .18s ease, border-color .18s ease; }
  .card:hover { transform: translateY(-2px); box-shadow: 0 14px 34px rgba(24,38,60,.13); }
}

/* 列表行悬停 */
.list li { transition: background-color .12s ease; }
.list li:hover { background: rgba(185,128,42,.07); }

/* AI 结论块：加左侧色条，和上下的小字区分开 */
.ai-verdict {
  border-left: 3px solid rgba(185,128,42,.45);
  border-radius: 0 8px 8px 0;
  padding: 8px 10px 8px 11px;
  background: linear-gradient(90deg, rgba(185,128,42,.07), rgba(185,128,42,0) 72%);
}
.ai-stat { transition: border-color .15s, box-shadow .15s; }
.ai-stat:hover { border-color: rgba(185,128,42,.35); box-shadow: 0 4px 14px rgba(24,38,60,.06); }

/* 宽屏内容区更舒展（原 1320 在 1600 屏两侧留白偏多） */
@media (min-width: 1400px) { .dash { max-width: 1400px; } }

/* 滚动条统一细条 */
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-thumb { background: #cdd6e4; border-radius: 8px; }
::-webkit-scrollbar-thumb:hover { background: #b9c4d6; }
::-webkit-scrollbar-track { background: transparent; }

/* 小屏：次要指标隐藏，顶栏更紧凑 */
@media (max-width: 1100px) { .meta-dim { display: none; } }
@media (max-width: 640px) {
  .top { padding: 10px 14px; }
  .brand h1 { font-size: 15px; }
  .brand .ver { font-size: 10.5px; }
  .clock { font-size: 14px; padding-left: 8px; }
  .ai-verdict { padding-left: 9px; }
}

/* v5.26-thin · 「样本不足 / 间隔待补」状态与口径标记 */
.nq {
  font-style: normal; font-size: 9.5px; font-weight: 700; line-height: 12px;
  color: var(--dim); background: #fff; border: 1px solid var(--line);
  border-radius: 4px; padding: 0 3px; margin-left: 3px; vertical-align: 1px;
  cursor: help;
}
.node.st-thin::before { background: #ddc79a; }
.st-thin .ndot { background: #cdb583; }
.st-thin .nbadge { color: #8a6a2c; border-color: rgba(185,128,42,.28); background: rgba(185,128,42,.06); }
.st-thin .nbar span { background: linear-gradient(90deg, #e4d6b8, #cbb27f); }

/* v5.27 · 礼物价目（管理员面板） */
.admin-row.carn-row .acts { display: flex; gap: 6px; align-items: center; }
.price-in {
  width: 96px; height: 26px; padding: 0 8px; font-size: 12px; text-align: right;
  border: 1px solid var(--line); border-radius: 7px; background: #fff; color: var(--txt);
  font-variant-numeric: tabular-nums;
}
.price-in::-webkit-outer-spin-button,
.price-in::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.price-in:focus { outline: none; border-color: rgba(185,128,42,.55); box-shadow: 0 0 0 3px rgba(185,128,42,.12); }
.carn-row.no-price .u .ip { color: var(--gold-2); }
.carn-tip { font-size: 10.5px; color: var(--dim); line-height: 1.55; margin: 5px 2px 0; }
/* 档位价区块（v5.29）：跟名字价用同一套行样式，只是隔一条虚线区分「按档 / 按名字」 */
.carn-tierbox {
  border-bottom: 1px dashed var(--line); padding-bottom: 6px; margin-bottom: 6px;
}
.carn-tierbox .ct-h {
  font-size: 10.5px; color: var(--dim); line-height: 1.5; margin: 2px 2px 6px;
  display: flex; gap: 8px; align-items: center; justify-content: space-between;
}
.ct-btn { flex: 0 0 auto; font-size: 11px; height: 24px; padding: 0 10px; border-radius: 7px; }
/* 顶档行（v5.30）：换期改名填这里，一个输入框 + 保存 */
.carn-row.toprow { border-bottom: 1px dashed var(--line); padding-bottom: 6px; margin-bottom: 6px; }
.carn-row.toprow .u .tag { margin-right: 4px; }
.top-in {
  width: 168px; text-align: left; font-size: 11.5px;
  font-variant-numeric: normal;
}
.ct-btn.armed { background: #b4453a; color: #fff; }
.carn-tierbox .carn-row { background: linear-gradient(90deg, rgba(212,160,66,.05), transparent 60%); }

/* 换期设置折叠区（v5.32）：档位价 + 顶档改名收进来，平时只看到统一礼物清单 */
.ct-fold { margin-top: 8px; border-top: 1px dashed var(--line); padding-top: 6px; }
.ct-toggle {
  width: 100%; text-align: left; background: none; border: 0; cursor: pointer;
  font: inherit; font-size: 11px; color: var(--dim);
  display: flex; align-items: center; gap: 6px; padding: 2px 2px;
}
.ct-toggle:hover { color: var(--fg, inherit); }
.ct-arrow { font-style: normal; font-size: 10px; }
.ct-body { margin-top: 6px; }
.ct-body .carn-row { background: linear-gradient(90deg, rgba(212,160,66,.05), transparent 60%); }
.ct-actions { display: flex; justify-content: flex-end; padding: 4px 2px 2px; }

/* v5.42 · 改密码（账号行下方就地展开，不用原生弹窗） */
.admin-row.pwd-row {
  background: linear-gradient(90deg, rgba(212,160,66,.08), transparent 70%);
  border-radius: 8px;
}
.admin-row.pwd-row .acts { gap: 6px; align-items: center; }
.admin-row.pwd-row .pwd-in {
  width: 132px; text-align: left; letter-spacing: normal;
  font-variant-numeric: normal;
}
.admin-row.pwd-row .pwd-in::placeholder { text-align: left; }


/* v5.43：账号有效期 */
.btn-dim {
  padding: 7px 14px; border-radius: 8px; cursor: pointer; font: inherit; font-size: 13px;
  border: 1px solid var(--line); background: #fff; color: var(--dim);
}
.btn-dim:hover { color: var(--txt); border-color: rgba(24,32,46,.22); }
.tag.warn { color: #a86400; border-color: rgba(168,100,0,.35); background: rgba(255,176,32,.14); }
.tag.bad  { color: var(--bad); border-color: rgba(216,58,58,.35); background: rgba(216,58,58,.07); }
.admin-row.exp-row {
  background: linear-gradient(90deg, rgba(47,111,237,.07), transparent 70%);
  border-radius: 8px;
}
.admin-row.exp-row .acts { gap: 6px; align-items: center; flex-wrap: wrap; }
.exp-in {
  width: 76px; height: 26px; padding: 0 8px; font-size: 12px; text-align: center;
  border: 1px solid var(--line); border-radius: 7px; background: #fff; color: var(--txt);
  font-variant-numeric: tabular-nums;
}

/* ---------------------------------------------------------------- AI 蹲守推荐 */
.card.aip .head { align-items: center; gap: 8px; }
.aip-btn {
  margin-left: auto; font: inherit; font-size: 11.5px; line-height: 1;
  padding: 6px 11px; border: 1px solid var(--line); border-radius: 8px;
  background: #fff; color: var(--txt); cursor: pointer;
  transition: border-color .15s, color .15s;
}
.aip-btn:hover { border-color: var(--gold); color: var(--gold-2); }
/* 正在调模型：卡片顶部扫一条，说明不是卡住了 */
.card.aip.busy { position: relative; }
.card.aip.busy::before {
  content: ''; position: absolute; left: 0; top: 0; z-index: 2;
  height: 2px; width: 36%; background: var(--gold); opacity: .85;
  animation: aipScan 1.1s ease-in-out infinite;
}
@keyframes aipScan {
  0% { transform: translateX(-100%); }
  100% { transform: translateX(278%); }
}
@media (prefers-reduced-motion: reduce) {
  .card.aip.busy::before { animation: none; width: 100%; opacity: .45; }
}
.aip-btn:disabled { opacity: .55; cursor: default; }

.aip-b { padding: 12px 14px 10px; }
.aip-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.aip-pick { display: flex; align-items: baseline; gap: 8px; min-width: 0; }
.aip-pick i { font-style: normal; font-size: 11px; color: var(--dim); }
.aip-pick b {
  font-size: 22px; font-weight: 800; letter-spacing: -.4px; color: var(--txt);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 14em;
}
.aip-pick em { font-style: normal; font-size: 12px; color: var(--gold-2); }
.aip-cf { margin-left: auto; font-size: 11.5px; color: var(--dim); white-space: nowrap; }
.aip-cf.lv-hi { color: var(--gold-2); }
.aip-cf.lv-mid { color: var(--blue); }
.aip-cf.lv-lo { color: var(--dim); }

.aip-one {
  margin: 9px 0 7px; font-size: 14px; font-weight: 600; line-height: 1.55;
  color: var(--txt);
}
.aip-why {
  margin: 0; padding-left: 18px; font-size: 12.5px; line-height: 1.65; color: var(--dim);
}
.aip-why li { margin: 2px 0; }
.aip-why li::marker { color: var(--gold); }
.aip-risk {
  margin-top: 9px; padding: 6px 9px; border-radius: 8px; font-size: 12px; line-height: 1.5;
  color: #8a6a2c; background: rgba(185,128,42,.08);
  border: 1px solid rgba(185,128,42,.22);
}
.aip-risk.bad {
  color: var(--bad); background: rgba(216,58,58,.06); border-color: rgba(216,58,58,.22);
}
.aip-foot {
  display: flex; justify-content: space-between; gap: 10px; flex-wrap: wrap;
  margin-top: 9px; font-size: 11px; color: var(--dim);
}

/* 管理员：大模型配置表单 */
.llm-form { display: flex; flex-direction: column; gap: 8px; }
.llm-form label {
  display: flex; flex-direction: column; gap: 4px;
  font-size: 11.5px; color: var(--dim);
}
.llm-form input {
  font: inherit; font-size: 12.5px; padding: 6px 8px; color: var(--txt);
  border: 1px solid var(--line); border-radius: 8px; background: #fff;
}
.llm-form input:focus { outline: none; border-color: var(--gold); }
.llm-acts { display: flex; gap: 8px; }
.llm-tip { font-size: 11px; line-height: 1.6; color: var(--dim); }
.llm-tip code {
  padding: 1px 4px; border-radius: 4px; background: rgba(24,32,46,.06);
  font-size: 10.5px; word-break: break-all;
}

/* ---------------------------------------------------------------- 版本不一致提示条 */
.verbar {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  padding: 9px 16px;
  background: linear-gradient(180deg, #fff5f3, #ffeceb);
  border-bottom: 1px solid #f6c9c4;
  color: #8d1f16; font-size: 12.5px;
}
.verbar .vb-ic {
  flex: none; width: 18px; height: 18px; border-radius: 50%;
  display: grid; place-items: center;
  background: var(--bad); color: #fff; font-size: 12px; font-weight: 700;
}
.verbar .vb-tx { flex: 1 1 320px; min-width: 0; line-height: 1.5; }
.verbar .vb-tx b { color: #a3221a; }
.verbar .vb-cmd {
  flex: none; max-width: 100%; overflow: auto; white-space: nowrap;
  padding: 3px 8px; border-radius: 6px; background: #fff;
  border: 1px solid #f0c4be; color: #7a1b12;
  font-family: ui-monospace, Consolas, "Courier New", monospace; font-size: 11.5px;
}
.verbar .vb-x {
  margin-left: auto; padding: 2px 6px; border: 0; border-radius: 6px;
  background: transparent; color: #b04a3f; font-size: 16px; line-height: 1;
  cursor: pointer;
}
.verbar .vb-x:hover { background: #f9dcd8; }
#llm-box .empty { color: #8d1f16; font-size: 12.5px; line-height: 1.7; padding: 10px 2px; }
#llm-box .empty code {
  padding: 1px 5px; border-radius: 4px; background: rgba(24,32,46,.06);
  font-size: 11px; word-break: break-all;
}

/* ---------------------------------------------------------------- 模型调用记录 */
.ail-sum {
  display: flex; flex-wrap: wrap; gap: 6px 18px;
  padding: 2px 0 8px; margin-bottom: 6px;
  border-bottom: 1px dashed var(--line);
  font-size: 12px; color: var(--dim);
}
.ail-sum b { color: var(--txt); font-variant-numeric: tabular-nums; }
.ail-sum b.bad { color: var(--bad); }
.ail-list { display: flex; flex-direction: column; }
.ail-row {
  display: grid; grid-template-columns: 62px 52px 182px 1fr; gap: 8px;
  align-items: baseline; padding: 5px 0;
  border-bottom: 1px solid rgba(24,32,46,.05);
  font-size: 12px;
}
.ail-row:last-child { border-bottom: 0; }
.ail-t {
  color: var(--dim); font-size: 11.5px;
  font-family: ui-monospace, Consolas, "Courier New", monospace;
  font-variant-numeric: tabular-nums;
}
.ail-k { font-size: 11px; text-align: center; border-radius: 5px; padding: 1px 0; }
.ail-k.ok { color: #1d7a45; background: rgba(29,154,82,.13); }
.ail-k.bad { color: #b3251f; background: rgba(216,58,58,.13); }
.ail-k.dim { color: var(--dim); background: rgba(24,32,46,.06); }
.ail-m {
  color: var(--txt); font-variant-numeric: tabular-nums;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.ail-n { color: var(--dim); overflow-wrap: anywhere; }
.ail-foot {
  margin-top: 6px; padding-top: 8px;
  border-top: 1px dashed var(--line);
  font-size: 11.5px; color: var(--dim);
}
.ail-foot a { color: var(--gold); cursor: pointer; text-decoration: none; }
.ail-foot a:hover { text-decoration: underline; }
@media (max-width: 640px) {
  .ail-row { grid-template-columns: 58px 52px 1fr; }
  .ail-n { grid-column: 1 / -1; }
}

/* ---------------------------------------------------------------- AI 自算 & 战绩 */
/* v5.48 选中玩法的硬指标：概率 / 90% 区间 / 一半把握 / 样本 */
.aip-nums {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 8px;
  margin: 2px 0 8px; font-size: 11.5px; color: var(--dim);
}
.aip-nums b { color: var(--txt); font-size: 12.5px; font-variant-numeric: tabular-nums; }
.aip-nums i { font-style: normal; color: #c3cad6; }
.aip-nums em {
  font-style: normal; padding: 1px 6px; border-radius: 5px;
  background: rgba(29,154,82,.1); color: var(--ok); font-size: 10.5px;
}

.aip-calc {
  display: flex; flex-wrap: wrap; align-items: center; gap: 6px;
  margin-top: 9px;
}
.aip-calc .ac-h {
  font-size: 11px; color: var(--dim); letter-spacing: .04em;
}
.aip-calc .ac {
  display: inline-flex; align-items: baseline; gap: 6px;
  padding: 3px 8px; border-radius: 7px;
  background: rgba(47,111,237,.07); border: 1px solid rgba(47,111,237,.18);
  font-size: 11.5px; color: var(--dim);
}
.aip-calc .ac b {
  color: var(--blue); font-size: 12.5px; font-variant-numeric: tabular-nums;
}
.aip-calc .ac.bad {
  background: rgba(216,58,58,.06); border-color: rgba(216,58,58,.2);
}
.aip-calc .ac.bad b { color: var(--bad); }

.aip-learn {
  margin-top: 9px; padding-top: 8px; border-top: 1px dashed var(--line);
  font-size: 11.5px; line-height: 1.7; color: var(--dim);
}
.aip-learn i {
  font-style: normal; margin-right: 6px; padding: 1px 6px; border-radius: 5px;
  background: rgba(24,32,46,.06); font-size: 10.5px;
}
.aip-learn b { color: var(--txt); font-variant-numeric: tabular-nums; }
.aip-learn b.r-good { color: var(--ok); }
.aip-learn b.r-mid { color: var(--gold); }
.aip-learn b.r-bad { color: var(--bad); }
.aip-learn .al-last {
  display: block; margin-top: 3px; padding-left: 2px; color: #8b95a6; font-size: 11px;
}
/* 战绩形状化：命中率条 + 最近 12 次对错方块 */
.al-bar {
  display: inline-block; vertical-align: middle;
  width: 76px; height: 6px; margin: 0 6px 0 8px;
  border-radius: 4px; background: rgba(24,32,46,.08); overflow: hidden;
}
.al-fill { display: block; height: 100%; border-radius: 4px; background: var(--gold); }
.al-fill.r-good { background: var(--ok); }
.al-fill.r-mid { background: var(--gold); }
.al-fill.r-bad { background: var(--bad); }
.al-seq { display: inline-flex; gap: 2px; vertical-align: middle; }
.al-seq i {
  width: 7px; height: 7px; border-radius: 2px; background: rgba(24,32,46,.14);
}
.al-seq i.ok { background: var(--ok); }

/* ---------------------------------------------------------------- 概率准确度（管理员） */
.acc-tab {
  margin-top: 8px; border: 1px solid var(--line); border-radius: 10px; overflow: hidden;
}
.acc-h, .acc-r {
  display: grid; grid-template-columns: 1fr 56px 1fr 1fr 62px 84px;
  gap: 8px; padding: 6px 10px; font-size: 11.5px;
  font-variant-numeric: tabular-nums;
}
.acc-h {
  background: var(--panel2); color: var(--dim); font-size: 11px;
  border-bottom: 1px solid var(--line);
}
.acc-r { border-bottom: 1px solid var(--line); color: var(--dim); }
.acc-r:last-child { border-bottom: 0; }
.acc-r span:nth-child(2) { text-align: right; }
.acc-r span:nth-child(n+3) { text-align: right; }
.acc-r span.ok { color: var(--ok); }
.acc-r span.bad { color: var(--bad); }
.acc-r span.warn { color: var(--gold); }
.ail-sum b.good { color: var(--ok); }
.ail-sum b.bad { color: var(--bad); }
.acc-note {
  margin-top: 8px; font-size: 11px; color: var(--dim); line-height: 1.6;
}
@media (max-width: 520px) {
  .acc-h, .acc-r { grid-template-columns: 1fr 44px 1fr 1fr; }
  .acc-h span:nth-child(n+5), .acc-r span:nth-child(n+5) { display: none; }
}

/* 404 提示：把「服务端是什么版本、加载哪个文件、要跑什么」直接写在面板里 */
.bad404 { text-align: left; line-height: 1.7; }
.bad404 b { display: block; color: var(--bad); margin-bottom: 3px; }
.bad404 code {
  display: inline-block; margin: 2px 0; padding: 2px 7px;
  border-radius: 6px; background: var(--panel2); border: 1px solid var(--line);
  font-size: 11.5px; font-family: ui-monospace, Consolas, "Courier New", monospace;
  overflow-wrap: anywhere;
}
.b4-cmd {
  display: block; margin-top: 6px; padding: 4px 8px;
  border-radius: 6px; background: var(--panel2); border: 1px solid var(--line);
  font-family: ui-monospace, Consolas, "Courier New", monospace; font-size: 11.5px;
  color: var(--txt);
}


/* ---------------------------------------------------------------- v5.51 AI 界面 */
.llm-res {
  margin-top: 8px; padding: 7px 10px; border-radius: 8px;
  border: 1px solid var(--line); background: var(--panel2);
  font-size: 11.5px; color: var(--dim); line-height: 1.6; overflow-wrap: anywhere;
}
.llm-res b { color: var(--txt); font-variant-numeric: tabular-nums; }
.llm-res.ok { border-color: rgba(29,154,82,.35); background: rgba(29,154,82,.08); }
.llm-res.ok b { color: var(--ok); }
.llm-res.bad { border-color: rgba(216,58,58,.35); background: rgba(216,58,58,.07); }
.acc-cmp { display: flex; flex-direction: column; gap: 2px; padding: 3px 0; }
.acc-cmp i {
  height: 5px; border-radius: 3px; background: rgba(47,111,237,.32); max-width: 100%;
}
.acc-cmp i.act { background: var(--gold); }

/* 采集断档警示：放在 AI 卡最上面，结论可信度先说清 */
.aip-dead {
  margin-bottom: 10px; padding: 8px 11px; border-radius: 8px;
  border: 1px solid rgba(216,58,58,.42); background: rgba(216,58,58,.10);
  font-size: 11.5px; line-height: 1.65; color: var(--dim);
}
.aip-dead b {
  display: block; margin-bottom: 2px; color: var(--bad); font-size: 12.5px;
}

/* 采集覆盖：四个大数 + 分类 + 说明 */
.fd-top { display: flex; flex-wrap: wrap; gap: 8px; }
.fd-i {
  flex: 1 1 120px; padding: 7px 10px; border-radius: 8px;
  border: 1px solid var(--line); background: var(--panel2);
}
.fd-i i { display: block; font-style: normal; font-size: 11px; color: var(--dim); }
.fd-i b { font-size: 14px; font-variant-numeric: tabular-nums; }
.fd-i b.ok { color: var(--ok); }
.fd-i b.bad { color: var(--bad); }
.fd-kinds { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.fd-k {
  padding: 3px 9px; border-radius: 999px; border: 1px solid var(--line);
  font-size: 11.5px; color: var(--dim);
}
.fd-k b { margin-left: 5px; color: var(--txt); font-variant-numeric: tabular-nums; }
.fd-note { margin-top: 9px; font-size: 11px; line-height: 1.75; color: var(--dim); }
.fd-note b { color: var(--txt); }
.fd-note code {
  padding: 1px 5px; border-radius: 4px; background: var(--panel2);
  border: 1px solid var(--line); font-size: 10.5px;
  font-family: ui-monospace, Consolas, "Courier New", monospace;
}
