/* 天时控制台 · 零依赖样式 */
:root{
  --bg:#0f1419; --panel:#161c23; --panel2:#1c242c; --line:#2a3540;
  --fg:#dbe3ea; --dim:#8b9aa8; --accent:#4aa3ff; --ok:#3ecf8e;
  --warn:#ffb454; --bad:#ff6b6b; --adopted:#243b53;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--bg);color:var(--fg);font:14px/1.5 -apple-system,"PingFang SC","Microsoft YaHei",sans-serif}
h2{font-size:15px;margin:0 0 10px;color:#c9d6e2;letter-spacing:.5px}
a{color:var(--accent)}
button,select,input{font:inherit;color:inherit}
button{background:var(--panel2);border:1px solid var(--line);border-radius:6px;padding:5px 11px;cursor:pointer}
button:hover{border-color:var(--accent)}
button.primary{background:#1d3557;border-color:#2f6cad;color:#e8f2ff}
button.ghost{background:transparent}
input,select{background:#111820;border:1px solid var(--line);border-radius:5px;padding:4px 6px}
label{display:inline-flex;align-items:center;gap:5px;color:var(--dim)}
label.chk{color:var(--fg)}

#topbar{position:sticky;top:0;z-index:20;display:flex;justify-content:space-between;align-items:center;
  gap:12px;padding:9px 16px;background:#111820;border-bottom:1px solid var(--line);flex-wrap:wrap}
.brand{font-weight:700;color:var(--accent);margin-right:6px}
.tb-left,.tb-right{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tb-label{color:var(--dim)}
.alive{color:var(--dim);font-size:13px}
.alive b{color:var(--ok);font-weight:600}
.alive .no{color:var(--bad)}
.badge{font-size:12px;color:var(--dim);border:1px solid var(--line);border-radius:10px;padding:1px 8px}

.strip{margin:10px 16px 0;padding:9px 12px;border:1px solid #5a4420;background:#2a2113;border-radius:7px;color:#ffd9a3;font-size:13px}
.strip ul{margin:4px 0 0;padding-left:18px}
.strip .src{color:#c99a5b}

#main{padding:14px 16px 40px;display:grid;grid-template-columns:1fr;gap:14px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:13px 15px}
.row{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap}
.row.wrap{align-items:flex-end}
.group{display:flex;gap:8px;align-items:center;flex-wrap:wrap;background:var(--panel2);
  border:1px solid var(--line);border-radius:7px;padding:8px 10px}
.cap{font-size:12px;color:var(--dim);margin-right:4px}
.msg{margin:8px 0 0;min-height:18px;font-size:13px;color:var(--dim);white-space:pre-wrap}
.msg.err,.err{color:var(--bad)}
.msg.ok{color:var(--ok)}
.note{font-size:12px;color:var(--dim);margin-top:8px;border-left:2px solid var(--line);padding-left:8px;white-space:pre-wrap}
.meta{font-size:12px;color:var(--dim);margin-top:9px;display:flex;gap:14px;flex-wrap:wrap}
.meta b{color:var(--fg);font-weight:600}
.warn-box{font-size:13px;color:#ffd9a3;background:#241d10;border:1px solid #5a4420;border-radius:6px;padding:7px 10px}
.notice{font-size:13px;margin:0 0 9px;padding:7px 10px;border-radius:6px;background:#2a2113;border:1px solid #5a4420;color:#ffd9a3}
.notice.bad{background:#2a1417;border-color:#6b2b30;color:#ffb3b3}
.cands{display:flex;flex-direction:column;gap:4px;max-height:180px;overflow:auto}
.cand{text-align:left;background:var(--panel);border:1px solid var(--line);border-radius:5px;padding:4px 8px;font-size:13px}
.cand small{color:var(--dim)}

/* 收起的面板必须真的不见：.drawer 那条 display:flex 会盖掉 [hidden] 的 UA 默认值 */
[hidden]{display:none !important}

/* 登录层：一屏只这一张卡，小而不占版面 */
.login{max-width:340px;margin:12vh auto 40px;padding:18px 20px}
.login label{display:flex;flex-direction:column;gap:4px;margin:10px 0}
.login input{padding:6px 8px}
.login button{margin-top:4px}
.login .hint{font-size:12px;color:var(--dim);margin:8px 0 0;line-height:1.5}

/* 表格 */
.scrollx{overflow:auto;max-height:520px}
table{border-collapse:collapse;width:100%;font-size:13px}
th,td{border:1px solid var(--line);padding:3px 7px;white-space:nowrap;text-align:right;vertical-align:top}
th{position:sticky;top:0;background:#131a21;color:#c2d0dd;text-align:left;z-index:1}
td.time,th.time{text-align:left;color:#c2d0dd;background:#12181e;position:sticky;left:0;z-index:1}
tbody tr:nth-child(even){background:#141a21}
tbody tr.sel{outline:2px solid var(--accent)}
td.num{cursor:pointer}
td.num:hover{background:#1f2a35}
td.nul{color:#5c6874}
td.div{background:#2c2415}
td.adopt{background:var(--adopted);font-weight:600}
tr.vend td{color:#b3c0cd}
tr.vend td.nul{color:#5c6874}
td.txt{text-align:left}

/* 图上要素选择条 */
.keybar{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:9px}
.key{font-size:12px;border:1px solid var(--line);border-radius:14px;padding:2px 9px;cursor:pointer;background:var(--panel2);color:var(--dim)}
.key.on{border-color:var(--accent);color:#e8f2ff;background:#1d3557}
.chartbox{width:100%;overflow:auto}
.chartbox svg{display:block}
.legend{display:flex;gap:12px;flex-wrap:wrap;margin-top:6px;font-size:12px;color:var(--dim)}
.legend i{display:inline-block;width:14px;height:2px;vertical-align:middle;margin-right:4px}

/* 抽屉 */
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(880px,96vw);background:#12181e;border-left:1px solid var(--line);
  z-index:40;display:flex;flex-direction:column;box-shadow:-6px 0 24px rgba(0,0,0,.5)}
.drawer-head{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 12px;border-bottom:1px solid var(--line)}
.tabs{display:flex;gap:6px;flex-wrap:wrap}
.tab{background:transparent;border:1px solid var(--line);border-radius:14px;padding:3px 11px;color:var(--dim)}
.tab.on{border-color:var(--accent);color:#e8f2ff;background:#1d3557}
.drawer-body{padding:12px 14px 40px;overflow:auto;flex:1}
.tabpane h3{font-size:13px;margin:14px 0 6px;color:#c9d6e2}
.grp-h{display:flex;justify-content:space-between;align-items:center;margin:16px 0 6px;padding-bottom:4px;border-bottom:1px solid var(--line)}
.grp-h span{font-size:13px;color:#c9d6e2}
.grp-h small{color:var(--dim);font-size:11px}
.frow{display:grid;grid-template-columns:190px 1fr;gap:8px;padding:5px 4px;border-bottom:1px dashed #222c36;align-items:start}
.frow .fmain{display:flex;flex-direction:column;gap:2px}
.frow .flab{display:flex;align-items:center;gap:6px}
.frow .flab small{color:var(--dim)}
.avs{display:flex;gap:4px;flex-wrap:wrap}
.av{font-size:11px;border-radius:4px;padding:1px 5px;border:1px solid var(--line);color:var(--dim);background:#141a21}
.av b{font-weight:600}
.av.bound{color:#8fe3b8;border-color:#2c5d44}
.av.verified-absent{color:#d3a06a;border-color:#5a4420}
.av.unregistered{color:#8e7ba8;border-color:#443756}
.av.none{opacity:.45}
.src-card{border:1px solid var(--line);border-radius:7px;padding:9px 11px;margin-bottom:9px;background:var(--panel2)}
.src-card .h{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.src-card .kv{font-size:12px;color:var(--dim);margin-top:5px;display:flex;gap:12px;flex-wrap:wrap}
.src-card p{font-size:12px;color:#a7b5c2;margin:6px 0 0;white-space:pre-wrap}
.pill{font-size:11px;border:1px solid var(--line);border-radius:10px;padding:0 7px;color:var(--dim)}
.pill.no{color:#ffb3b3;border-color:#6b2b30}
.pill.yes{color:#8fe3b8;border-color:#2c5d44}
.dl{display:inline-block;border:1px solid #2f6cad;background:#1d3557;color:#e8f2ff;border-radius:6px;padding:6px 12px;text-decoration:none}
.prov{margin-top:10px;border:1px solid var(--line);border-radius:7px;padding:9px 11px;background:var(--panel2);font-size:13px}
.prov h4{margin:0 0 6px;font-size:13px;color:#c9d6e2}
.prov .l{color:var(--dim)}
.prov ul{margin:5px 0 0;padding-left:18px}
.prov .drop{color:#ffb3b3}
.rawbody{background:#0d1217;border:1px solid var(--line);border-radius:6px;padding:10px;max-height:60vh;overflow:auto;
  font:12px/1.45 ui-monospace,SFMono-Regular,Menlo,monospace;color:#c3d0dc;white-space:pre-wrap;word-break:break-all}
.toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);background:#1d3557;border:1px solid #2f6cad;
  color:#e8f2ff;padding:9px 16px;border-radius:7px;z-index:60;max-width:80vw;white-space:pre-wrap}
.spin{color:var(--accent)}
.sk{color:#5c6874;font-style:normal;font-size:12px}
