:root{--bg: #f6f7f9;--card: #fff;--ink: #1d2330;--mute: #7a8394;--line: #e3e6eb;--accent: #2f5bd3;--up: #d9363e;--down: #18a058;--warn: #c27c0e;--bad: #d9363e;font:14px/1.55 -apple-system,PingFang SC,Microsoft YaHei,Segoe UI,sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0}h1{font-size:20px}h2{font-size:15px;margin:22px 0 10px}pre{margin:0}a{color:var(--accent);text-decoration:none}table{width:100%;border-collapse:collapse;background:var(--card);border-radius:8px;overflow:hidden}th,td{text-align:left;padding:7px 10px;border-bottom:1px solid var(--line);vertical-align:top}th{font-weight:500;color:var(--mute);font-size:12px}tr.off td{color:var(--mute)}input,select,textarea{font:inherit;border:1px solid var(--line);border-radius:6px;padding:5px 8px;background:#fff}input.num{width:70px}input.wide{width:100%}.mono{font-family:ui-monospace,Consolas,monospace}.small{font-size:12px}.mute{color:var(--mute)}.pre{white-space:pre-wrap}.right{margin-left:auto}.up{color:var(--up)}.down{color:var(--down)}.warn{color:var(--warn);font-style:normal}.error{color:var(--bad);padding:8px 0}.error.inline{padding:0 0 0 8px;font-size:12px}.empty{color:var(--mute);padding:18px;text-align:center;background:var(--card);border-radius:8px}.top{display:flex;align-items:center;gap:20px;padding:0 20px;height:48px;background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}.brand{font-weight:600}.top nav{display:flex;gap:4px;overflow-x:auto}.top nav a{color:var(--ink);padding:6px 10px;border-radius:6px;white-space:nowrap;position:relative}.top nav a.active{background:#eef2fc;color:var(--accent)}.dot{background:var(--bad);color:#fff;font-size:11px;border-radius:9px;padding:0 5px;margin-left:3px;font-weight:500}.who{margin-left:auto;color:var(--mute);white-space:nowrap}.statusbar{display:flex;gap:18px;padding:4px 20px;font-size:12px;color:var(--mute);border-bottom:1px solid var(--line);flex-wrap:wrap}main{max-width:1180px;margin:0 auto;padding:16px 20px 60px}.btn{font:inherit;border:1px solid var(--line);background:#fff;border-radius:6px;padding:4px 12px;cursor:pointer}.btn:hover{border-color:var(--accent)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.danger{color:var(--bad)}.btn:disabled{opacity:.5;cursor:default}.link{border:0;background:none;color:var(--accent);cursor:pointer;font:inherit;padding:0 4px}.chip{border:1px solid var(--line);background:#fff;border-radius:14px;padding:2px 12px;cursor:pointer;font:inherit}.chip.on{border-color:var(--accent);color:var(--accent)}.filters{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap}.actions{display:flex;gap:8px;align-items:center;margin-top:10px;flex-wrap:wrap}.card{background:var(--card);border-radius:8px;padding:12px 14px;margin-bottom:10px;border:1px solid var(--line)}.card.done{opacity:.75}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:10px}.grid .card{margin:0}.rec-h{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.rec-t{margin:6px 0}.act{font-size:12px;border-radius:4px;padding:1px 6px;background:#eee}.act.buy{background:#fdeceb;color:var(--up)}.act.sell{background:#e7f6ee;color:var(--down)}.nums{display:flex;gap:18px;margin:10px 0 4px;flex-wrap:wrap}.nums div{display:flex;flex-direction:column}.nums label{font-size:12px;color:var(--mute)}.nums b{font-size:15px;font-weight:600}.summary{display:flex;gap:22px;align-items:baseline;padding:10px 14px;background:var(--card);border-radius:8px;border:1px solid var(--line);flex-wrap:wrap}.count{color:var(--mute);font-weight:400;font-size:13px}.tag{font-size:12px;border-radius:4px;padding:0 6px;white-space:nowrap}.tag.ok{background:#e7f6ee;color:var(--down)}.tag.bad{background:#fdeceb;color:var(--bad)}.tag.run{background:#fdf3e1;color:var(--warn)}.tag.mute{background:#f0f1f4;color:var(--mute)}.bar{display:inline-block;width:70px;height:5px;background:#eceef2;border-radius:3px;vertical-align:middle;overflow:hidden}.bar span{display:block;height:100%;background:var(--accent)}.fold{margin-top:6px}.fold-h{border:0;background:none;padding:2px 0;cursor:pointer;font:inherit;color:var(--ink);text-align:left;display:flex;gap:4px;align-items:center;flex-wrap:wrap}.caret{color:var(--mute);width:12px}.fold-b{padding:6px 0 6px 16px}.body{white-space:pre-wrap;font-family:inherit}dl{margin:0}dl div{display:flex;gap:10px}dt{color:var(--mute);min-width:80px}dd{margin:0}.feed{list-style:none;padding:0;margin:0;background:var(--card);border-radius:8px;border:1px solid var(--line)}.feed li{padding:8px 14px;border-bottom:1px solid var(--line);display:flex;gap:8px;flex-wrap:wrap;align-items:baseline}.feed li .pre{flex-basis:100%}.feed li.warn{border-left:3px solid var(--warn)}.feed li.error{border-left:3px solid var(--bad)}.fields{background:var(--card);border-radius:8px;border:1px solid var(--line);padding:4px 14px}.field{display:flex;gap:10px;align-items:center;padding:7px 0;border-bottom:1px solid var(--line);flex-wrap:wrap}.field:last-child{border-bottom:0}.field>label{min-width:260px}.field input.wide{flex:1;min-width:300px}.split{display:grid;grid-template-columns:220px 1fr;gap:16px;min-height:70vh}.sessions{list-style:none;padding:0;margin:10px 0 0}.sessions li{padding:6px 8px;border-radius:6px;display:flex;flex-direction:column}.sessions li.on{background:#eef2fc}.sessions a{color:var(--ink)}.chat{display:flex;flex-direction:column;background:var(--card);border-radius:8px;border:1px solid var(--line);min-height:70vh}.chat-h{display:flex;gap:8px;align-items:center;padding:10px 14px;border-bottom:1px solid var(--line)}.msgs{flex:1;overflow-y:auto;padding:12px 14px;max-height:65vh}.msg{margin-bottom:12px;max-width:85%}.msg.user{margin-left:auto;background:#eef2fc;padding:8px 12px;border-radius:8px}.msg.assistant{background:#f6f7f9;padding:8px 12px;border-radius:8px}.msg.system{font-size:12px;color:#8a8f98;margin:-4px 0 10px;max-width:100%}.composer{display:flex;gap:8px;padding:10px 14px;border-top:1px solid var(--line);align-items:flex-end}.composer textarea{flex:1;resize:vertical}.login{max-width:320px;margin:15vh auto;display:flex;flex-direction:column;gap:10px;background:var(--card);padding:28px;border-radius:10px;border:1px solid var(--line)}.login h1{margin:0 0 8px;text-align:center}@media(max-width:720px){.top{gap:10px;padding:0 10px}main{padding:12px 10px 60px}.split,.grid{grid-template-columns:1fr}.field>label{min-width:0;flex-basis:100%}}
