:root{
  --bg:#f5f7fa; --card:#ffffff; --ink:#1f2733; --muted:#6b7785;
  --line:#e4e9f0; --accent:#c0392b; --accent2:#2e86de; --ok:#27ae60; --warn:#e67e22;
  --chip:#eef3f9;
}
*{box-sizing:border-box}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  background:var(--bg);color:var(--ink);font-size:14px;line-height:1.5}
.wrap{max-width:none;padding:18px 24px 96px}
h1{font-size:20px;margin:0 0 4px}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:14px;
  box-shadow:0 1px 2px rgba(20,30,50,.04)}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
/* 三栏：裂隙 | 赏金 | 规则(右窄)；栏间分隔条可拖动调宽（--c1/--c2/--c3 由 JS 写入 px 值） */
.cols3{display:grid;align-items:start;gap:6px;
  grid-template-columns:var(--c1,minmax(0,1.3fr)) 8px var(--c2,minmax(0,1fr)) 8px var(--c3,265px)}
.cols3 > .card{margin-bottom:0}
.splitter{cursor:col-resize;align-self:stretch;min-height:90px;border-radius:4px;transition:.15s;
  background:linear-gradient(180deg,transparent 8%,rgba(46,134,222,.18) 50%,transparent 92%)}
.splitter:hover,.splitter.active{background:rgba(46,134,222,.32)}
@media (max-width:1200px){
  /* 两栏：裂隙 | 规则(右上)，赏金跨列到下方 */
  .cols3{grid-template-columns:minmax(0,1fr) minmax(220px,255px);gap:14px}
  .splitter{display:none}
  .cols3 > .card:nth-child(1){order:1}
  .cols3 > .card:nth-child(5){order:2}
  .cols3 > .card:nth-child(3){order:3;grid-column:1 / -1;margin-top:14px}
}
@media (max-width:880px){
  .cols3{grid-template-columns:1fr}
  .cols3 > .card{order:0;margin-bottom:14px}
  .cols3 > .card:nth-child(3){margin-top:0}
}
.row.tight{gap:6px}
label{font-size:12px;color:var(--muted);display:block;margin:0 0 4px}
select,input[type=text],input[type=number]{padding:7px 9px;border:1px solid var(--line);border-radius:8px;
  background:#fff;color:var(--ink);font-size:13px;min-width:0}
input[type=text]{width:230px}
button{cursor:pointer;border:none;border-radius:8px;padding:8px 14px;font-size:13px;font-weight:600;
  background:var(--accent2);color:#fff;transition:.15s}
button:hover{filter:brightness(1.05)}
button.ghost{background:#fff;color:var(--ink);border:1px solid var(--line);font-weight:500}
button.danger{background:var(--accent)}
button.ok{background:var(--ok)}
button:disabled{opacity:.5;cursor:not-allowed}
.status{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}
.dot{width:9px;height:9px;border-radius:50%;background:#bbb;display:inline-block}
.dot.ok{background:var(--ok)} .dot.err{background:var(--accent)} .dot.busy{background:var(--warn)}
.seg{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin-top:10px}
.seg > div{display:flex;flex-direction:column}
.switch{display:inline-flex;align-items:center;gap:8px;font-size:13px;cursor:pointer;user-select:none}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
th{color:var(--muted);font-weight:600;font-size:12px}
td.map{white-space:normal}
/* 等级分组首行：加深上边线，便于分辨古/前/中/后纪各分组 */
#fissTable tr.gstart td{border-top:2px solid #d9e2ec}
.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:700}
.b-tier{background:var(--chip);color:var(--accent2)}
.b-match{background:#fdecea;color:var(--accent)}
.b-enemy{background:#eef3f9;color:var(--muted)}
.countdown{font-variant-numeric:tabular-nums;font-weight:600}
.rule{display:flex;gap:6px;align-items:center;padding:5px 8px;border:1px solid var(--line);
  border-radius:8px;margin-bottom:6px;background:#fbfcfe;flex-wrap:wrap}
.rule .rt{font-weight:600;font-size:12.5px}
.rule .rn{color:var(--accent2);font-weight:600}
.rule .rtxt{font-size:13px}
/* 规则行内删除按钮：悬停/聚焦时显示，用 opacity 避免布局跳动 */
.rule .rd{margin-left:auto;padding:3px 9px;font-size:12px;opacity:0;transition:opacity .15s}
.rule:hover .rd,.rule:focus-within .rd{opacity:1}
.rule.off{opacity:.55}
/* 规则当前命中（有匹配的目标在场）：绿色背景 */
.rule.hit{background:#e9f9ef;border-color:#bfe8ce}
.rule.hit .rtxt{color:#186b41}
.empty{color:var(--muted);font-size:13px;padding:10px 2px}
/* 数据源异常提示（黄底） */
.warn{background:#fff8e6;border:1px solid #f0dfae;color:#8a6a1a;border-radius:8px;
  padding:7px 10px;font-size:12px;margin-top:10px}
/* 命中提醒：右下角通知样式（绿色） */
.alert{position:fixed;right:18px;bottom:78px;z-index:60;max-width:min(360px,86vw);
  background:#e9f9ef;border:1px solid #b6e3c6;color:#186b41;border-radius:12px;padding:13px 15px;
  box-shadow:0 10px 28px rgba(16,80,50,.25);display:none}
.alert.show{display:block;animation:toastIn .22s ease-out}
@keyframes toastIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.alert h3{margin:0 0 4px;font-size:14.5px}
.alert .acts{margin-top:8px;display:flex;gap:8px}
.alert .acts button{border-color:#b6e3c6;color:#186b41}
.nowrap{white-space:nowrap}
.field-inline{display:inline-flex;align-items:center;gap:6px}
.field-inline label{margin:0}
/* 页脚：固定在页面最底部（免责声明 + 数据来源） */
.foot{position:fixed;left:0;right:0;bottom:0;z-index:40;margin:0;padding:7px 16px;
  background:rgba(252,253,255,.95);border-top:1px solid var(--line);
  display:flex;flex-direction:column;gap:2px;text-align:center;
  color:var(--muted);font-size:11.5px;line-height:1.5}
.log{max-height:160px;overflow:auto;font-size:12px;color:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.log div{padding:2px 0;border-bottom:1px dashed var(--line)}
.tip{font-size:12px;color:var(--muted);margin-top:8px}
code{background:#eef3f9;padding:1px 6px;border-radius:5px;font-size:12px}
.mt{color:var(--accent);font-weight:600}

/* ---------- 裂隙 tab（钢铁 / 普通） ---------- */
.tabs{display:inline-flex;gap:2px;padding:2px;border:1px solid var(--line);border-radius:9px;background:#f5f8fc}
.tab{padding:4px 12px;font-size:12.5px;font-weight:600;border:none;border-radius:7px;
  background:transparent;color:var(--muted);cursor:pointer;transition:.15s}
.tab:hover{color:var(--ink)}
.tab.active{background:#fff;color:var(--ink);box-shadow:0 1px 2px rgba(20,30,50,.14)}

/* ---------- 规则种类/来源徽章 ---------- */
.b-fissure{background:var(--chip);color:var(--accent2)}
.b-bounty{background:#fdf3e0;color:#b8860b}
.b-src-holdfasts{background:#efe9f7;color:#7a4fb0}
.b-src-cavia{background:#e8f0fe;color:#3a6ea8}
.b-src-hex{background:#fdeaea;color:#c0392b}
.steel-l{color:var(--muted);font-weight:600}

/* ---------- 弹窗 ---------- */
.modal-mask{position:fixed;inset:0;background:rgba(20,30,50,.45);display:flex;align-items:center;
  justify-content:center;z-index:50;padding:16px}
.modal-mask[hidden]{display:none}
.modal{background:var(--card);border-radius:12px;padding:18px;width:min(560px,94vw);max-height:86vh;
  overflow:auto;box-shadow:0 10px 40px rgba(20,30,50,.28)}
.modal .field{margin-bottom:12px}
.modal select{width:100%}
.seg-btns{display:flex;gap:8px}
.seg-btns button{flex:1;background:#fff;color:var(--ink);border:1px solid var(--line);font-weight:600}
.seg-btns button.active{background:var(--accent2);color:#fff;border-color:var(--accent2)}
.m-acts{margin-top:14px;display:flex;gap:8px;justify-content:flex-end}
#ioText{width:100%;box-sizing:border-box;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;
  padding:8px;border:1px solid var(--line);border-radius:8px;min-height:110px;resize:vertical;background:#fbfcfe;color:var(--ink)}
