:root{--bg: #12141a;--bg-2: #191c24;--bg-3: #21252f;--line: #2c3140;--ink: #e7eaf0;--ink-dim: #97a0b3;--ink-faint: #6c7488;--accent: #6ea8fe;--accent-ink: #0b1220;--ok: #59c38a;--warn: #e0b155;--err: #e0685f;--r: 10px;--r-s: 7px;color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.45 ui-sans-serif,system-ui,Segoe UI,Roboto,Arial,sans-serif;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.login{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:100%;max-width:400px;background:var(--bg-2);border:1px solid var(--line);border-radius:14px;padding:26px}.login-ttl{font-size:20px;font-weight:650;letter-spacing:.2px}.login-sub{color:var(--ink-dim);margin:6px 0 20px;font-size:13px}.login-row{display:flex;gap:8px}.login-or{text-align:center;color:var(--ink-faint);font-size:12px;margin:16px 0 12px}.login-hint{color:var(--ink-faint);font-size:12px;margin-top:16px;line-height:1.5}.login-widget{min-height:48px;display:flex;align-items:center;justify-content:center;background:#eef1f6;border-radius:var(--r-s);padding:8px;color-scheme:light}.top{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:14px;padding:10px 18px;background:var(--bg-2);border-bottom:1px solid var(--line)}.top-ttl{font-weight:650}.top-sub{color:var(--ink-faint);font-size:12px}.top-right{margin-left:auto;display:flex;align-items:center;gap:8px}.wrap{max-width:1180px;margin:0 auto;padding:20px 18px 60px}.pick-h{margin:6px 0 4px;font-size:22px;font-weight:650}.pick-sub{color:var(--ink-dim);margin-bottom:20px}.pick-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(290px,1fr))}.pick-sec{margin:26px 0 12px;color:var(--ink-dim);font-size:12px;text-transform:uppercase;letter-spacing:.08em}.card{text-align:left;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r);padding:14px;display:grid;gap:8px;cursor:pointer;transition:border-color .12s,transform .12s}.card:hover{border-color:#445070;transform:translateY(-1px)}.card[disabled]{cursor:not-allowed;opacity:.58}.card-top{display:flex;align-items:center;gap:8px}.card-ttl{font-weight:620;font-size:15px}.card-note{color:var(--ink-dim);font-size:12.5px}.card-meta{color:var(--ink-faint);font-size:11.5px;display:flex;gap:10px;flex-wrap:wrap}.dot{width:8px;height:8px;border-radius:50%;background:var(--ink-faint);flex:0 0 auto}.dot.up{background:var(--ok)}.dot.down{background:var(--err)}.tag{font-size:11px;padding:2px 7px;border-radius:999px;border:1px solid var(--line);color:var(--ink-dim);background:var(--bg-3);white-space:nowrap}.tag.full{color:#bcd6ff;border-color:#35507f}.tag.part{color:#e6cf9a;border-color:#574a2c}.tag.none{color:var(--ink-faint)}.tabs{display:flex;gap:6px;flex-wrap:wrap;padding:12px 18px 0;max-width:1180px;margin:0 auto}.tab{background:transparent;border:1px solid transparent;color:var(--ink-dim);padding:7px 12px;border-radius:999px;cursor:pointer}.tab:hover{color:var(--ink);background:var(--bg-2)}.tab.on{color:var(--accent-ink);background:var(--accent);font-weight:600}.btn{background:var(--bg-3);border:1px solid var(--line);color:var(--ink);padding:7px 13px;border-radius:var(--r-s);cursor:pointer}.btn:hover:not([disabled]){border-color:#46506a}.btn[disabled]{opacity:.5;cursor:default}.btn.pri{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}.btn.danger{color:#ffc9c4;border-color:#5a3230}.btn.sm{padding:4px 9px;font-size:12.5px}.inp,.sel,.ta{width:100%;background:var(--bg);border:1px solid var(--line);color:var(--ink);border-radius:var(--r-s);padding:8px 10px}.inp:focus,.ta:focus,.sel:focus{outline:none;border-color:var(--accent)}.ta{font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:12.5px;line-height:1.5;resize:vertical}.field{display:grid;gap:5px;margin-bottom:12px}.field>label{color:var(--ink-dim);font-size:12.5px}.field .hint{color:var(--ink-faint);font-size:11.5px}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end}.row>.field{flex:1 1 180px;margin-bottom:0}.panel{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r);padding:16px;margin-bottom:16px}.panel-h{font-weight:620;margin-bottom:4px}.panel-sub{color:var(--ink-dim);font-size:12.5px;margin-bottom:14px}.list{display:grid;gap:6px}.list-row{display:flex;align-items:center;gap:10px;text-align:left;width:100%;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-s);padding:9px 12px;cursor:pointer}.list-row:hover{border-color:#46506a}.list-row.on{border-color:var(--accent)}.list-main{display:grid;gap:2px;min-width:0}.list-main b{font-weight:600}.list-main small{color:var(--ink-faint);font-size:11.5px}.list-row .grow{margin-left:auto}table{width:100%;border-collapse:collapse;font-size:13px}th,td{text-align:left;padding:7px 9px;border-bottom:1px solid var(--line)}th{color:var(--ink-dim);font-weight:500;font-size:12px}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}.scroll-x{overflow-x:auto}.empty{color:var(--ink-dim);padding:22px;text-align:center;display:grid;gap:6px}.empty b{color:var(--ink)}.empty.err b{color:var(--err)}.load{color:var(--ink-faint);padding:22px;text-align:center}.edit-grid{display:grid;grid-template-columns:250px 1fr;gap:16px;align-items:start}@media(max-width:900px){.edit-grid{grid-template-columns:1fr}}.edit-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}.edit-bar .grow{margin-left:auto}.json-ta{min-height:62vh}.json-state{font-size:12px;color:var(--ink-faint)}.json-state.bad{color:var(--err)}.json-state.dirty{color:var(--warn)}.kv{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:12.5px}.kv dt{color:var(--ink-faint)}.kv dd{margin:0}.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,20px);background:var(--bg-3);border:1px solid var(--line);color:var(--ink);padding:10px 16px;border-radius:var(--r-s);max-width:min(680px,92vw);opacity:0;pointer-events:none;transition:opacity .16s,transform .16s;z-index:50}.toast.show{opacity:1;transform:translate(-50%)}.toast.ok{border-color:#2f5a44}.toast.warn{border-color:#57492b}.toast.err{border-color:#5c3330}
