:root{--ink:#08111f;--navy:#0b1c34;--panel:#fff;--bg:#edf3f8;--line:#d9e3ec;--muted:#6d7d90;--blue:#2767ff;--cyan:#5ee7d3;--green:#0ca77a;--red:#dc4c64;--shadow:0 18px 50px rgba(16,35,60,.09)}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:"Avenir Next","PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--bg)}button,input{font:inherit}button{cursor:pointer}.login-mode{background:radial-gradient(circle at 20% 20%,#173766 0,#09182e 38%,#060f1d 100%);color:#eef7ff;overflow-x:hidden}.login-mode:before{content:"";position:fixed;inset:0;background-image:linear-gradient(rgba(108,196,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(108,196,255,.05) 1px,transparent 1px);background-size:42px 42px;mask-image:linear-gradient(to right,#000,transparent 80%)}.login-shell{position:relative;min-height:100vh;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(340px,480px);align-items:center;gap:8vw;padding:8vw;max-width:1440px;margin:auto}.login-copy h1{font-size:clamp(48px,7vw,96px);line-height:.93;letter-spacing:-.065em;margin:28px 0}.login-copy h1 em{font-style:normal;color:var(--cyan)}.login-copy>p{font-size:18px;color:#9eb2ca;max-width:560px;line-height:1.8}.signal{font:700 12px/1 "SFMono-Regular",Consolas,monospace;letter-spacing:.15em;color:#a9bdd3}.signal i,.readonly i,.status-line i{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--cyan);box-shadow:0 0 16px var(--cyan);margin-right:10px}.guard-note{display:inline-flex;margin-top:22px;padding:12px 16px;border:1px solid rgba(126,199,255,.18);border-radius:12px;color:#8fa8c1;font-size:13px}.key-card{background:rgba(247,251,255,.98);color:var(--ink);padding:38px;border-radius:28px;box-shadow:0 40px 100px rgba(0,0,0,.35);display:grid;gap:14px}.key-mark{font:700 11px "SFMono-Regular",monospace;letter-spacing:.2em;color:var(--blue);margin-bottom:18px}.key-card label{font-size:14px;font-weight:700}.key-card input,.settings-card input{width:100%;border:1px solid var(--line);background:#f7fafc;border-radius:12px;padding:15px 16px;outline:none}.key-card input:focus,.settings-card input:focus{border-color:var(--blue);box-shadow:0 0 0 4px rgba(39,103,255,.1)}.key-card button,.settings-card button{border:0;background:var(--blue);color:#fff;border-radius:12px;padding:16px 18px;font-weight:800;display:flex;justify-content:space-between}.key-card small{color:var(--muted)}.form-error{color:var(--red);font-size:13px;margin:0}.app-shell{min-height:100vh;display:grid;grid-template-columns:232px 1fr}.app-shell aside{position:sticky;top:0;height:100vh;background:var(--navy);color:#fff;padding:26px 20px;display:flex;flex-direction:column;will-change:transform}.brand{display:flex;align-items:center;gap:12px;padding:0 8px 38px}.brand b{display:grid;place-items:center;width:42px;height:42px;border-radius:13px;background:var(--cyan);color:var(--navy);font-size:14px}.brand span{font-size:13px;line-height:1.2;letter-spacing:.08em}.app-shell nav{display:grid;gap:6px}.nav,.logout{border:0;color:#9fb1c6;background:transparent;text-align:left;border-radius:11px;padding:13px 15px}.nav:hover,.nav.active{background:#142b4a;color:#fff}.nav.active{box-shadow:inset 3px 0 var(--cyan)}.readonly{margin-top:auto;display:flex;align-items:flex-start;padding:16px 12px;border-top:1px solid rgba(255,255,255,.1);font-size:12px;color:#b8c7d8}.readonly i{width:7px;height:7px;margin-top:4px}.readonly small{color:#6f849d}.logout{margin-top:5px}.workspace{min-width:0;padding:34px 4vw 60px}.workspace>header{display:flex;justify-content:space-between;align-items:center;gap:20px;will-change:transform,opacity}.eyebrow,.section-head span,.panel-head span,.review-head span{font:700 10px "SFMono-Regular",Consolas,monospace;letter-spacing:.16em;color:var(--blue)}h1,h2,h3,p{margin-top:0}.workspace h1{font-size:30px;letter-spacing:-.04em;margin:7px 0 0}.sync-button{border:0;background:var(--ink);color:#fff;border-radius:13px;padding:13px 17px;font-weight:700}.sync-button.loading .sync-icon{display:inline-block;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.status-line{display:flex;align-items:center;background:#dff7f0;color:#08785a;border:1px solid #c5eadf;padding:11px 15px;border-radius:12px;margin:25px 0;will-change:transform,opacity;font-size:13px}.status-line i{background:var(--green);box-shadow:none}.view{display:none}.view.active{display:block}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}.metric{position:relative;background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:22px;overflow:hidden;box-shadow:0 10px 30px rgba(16,35,60,.04)}.metric>span{font:700 10px monospace;color:var(--muted);letter-spacing:.12em}.metric b{display:block;font-size:38px;letter-spacing:-.04em;margin:17px 0 5px}.metric p{font-size:13px;color:var(--muted);margin:0}.metric i{position:absolute;right:17px;top:16px;font:700 10px monospace;color:#b9c6d2}.split-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:15px;margin-top:15px}.panel,.table-panel,.review-panel,.settings-card,.batch{background:var(--panel);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow)}.panel{padding:24px}.panel-head,.section-head,.review-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.panel h2,.section-head h2,.review-head h3{font-size:20px;margin:6px 0 0}.panel-head>b{font:600 11px monospace;color:var(--muted)}.pipeline{display:grid;margin-top:24px}.pipeline>div{display:grid;grid-template-columns:38px 1fr auto;align-items:center;padding:16px 0;border-top:1px solid var(--line)}.pipeline i{font:700 10px monospace;color:var(--blue)}.pipeline strong{font-size:14px}.pipeline span{font-size:12px;color:var(--muted)}.latest dl{display:grid;margin:22px 0 0}.latest dl>div{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding:14px 0;font-size:12px}.latest dt{color:var(--muted)}.latest dd{margin:0}.run-state{display:inline-flex;margin-top:22px;padding:7px 10px;border-radius:8px;font-size:11px;font-weight:800;background:#e3f7ef;color:var(--green)}.run-state.failed{background:#fde8ec;color:var(--red)}.run-error{font-size:12px;color:var(--red)}.empty,.empty-card,.review-empty{text-align:center;color:var(--muted);padding:38px 15px;font-size:13px}.section-head{align-items:center;margin:8px 0 20px}.candidate-toggle{font-size:13px;color:var(--muted)}.table-panel{overflow:auto}table{width:100%;border-collapse:collapse;min-width:720px}th,td{text-align:left;padding:15px 18px;border-bottom:1px solid var(--line);font-size:13px}th{font:700 10px monospace;color:var(--muted);letter-spacing:.1em}.trader{display:flex;gap:12px;align-items:center}.trader>b{display:grid;place-items:center;width:35px;height:35px;border-radius:10px;background:#eef4ff;color:var(--blue)}.trader span{display:grid}.trader small{font:11px monospace;color:var(--muted);margin-top:3px}.pnl{font-weight:800;color:var(--green)}.tag,.safe-pill{display:inline-flex;padding:6px 9px;border-radius:20px;background:#eef2f5;color:var(--muted);font-size:11px}.tag.candidate,.safe-pill{background:#e2f7f0;color:var(--green)}.inspect{border:1px solid var(--line);background:#fff;border-radius:9px;padding:8px 10px;color:var(--blue)}.review-panel{margin-top:15px;overflow:hidden}.review-head{padding:21px 22px;border-bottom:1px solid var(--line)}.review-head button{border:0;background:var(--blue);color:#fff;border-radius:10px;padding:11px 13px}.trade{display:grid;grid-template-columns:20px 54px 1fr auto;align-items:center;gap:12px;padding:15px 22px;border-bottom:1px solid var(--line)}.side{font:800 10px monospace}.side.buy{color:var(--green)}.side.sell{color:var(--red)}.market,.trade-value{display:grid}.market strong{font-size:13px}.market small,.trade-value small{color:var(--muted);font-size:11px;margin-top:4px}.trade-value{text-align:right}.batch-list{display:grid;gap:12px}.batch{display:flex;align-items:center;justify-content:space-between;padding:20px 22px}.batch span{font:700 10px monospace;color:var(--blue)}.batch h3{margin:7px 0 4px}.batch p{font-size:11px;color:var(--muted);margin:0}.batch>b{font-size:11px;background:#e3f7ef;color:var(--green);padding:8px 10px;border-radius:20px}.settings-card{display:grid;grid-template-columns:1fr 1fr;gap:18px;padding:25px;max-width:800px}.settings-card label{display:grid;gap:8px;font-size:12px;font-weight:700}.settings-card button{grid-column:1/-1;justify-content:center}.toast{position:fixed;right:24px;bottom:24px;background:var(--ink);color:#fff;padding:13px 17px;border-radius:11px;box-shadow:var(--shadow);transform:translateY(20px);opacity:0;pointer-events:none;transition:.2s}.toast.show{transform:none;opacity:1}.toast.bad{background:var(--red)}button:focus-visible,input:focus-visible{outline:3px solid rgba(39,103,255,.35);outline-offset:2px}@media (max-width:1000px){.metric-grid{grid-template-columns:1fr 1fr}.split-grid{grid-template-columns:1fr}}@media (max-width: 760px){.login-shell{grid-template-columns:1fr;padding:28px 20px}.login-copy h1{font-size:52px}.login-copy>p{font-size:15px}.key-card{padding:25px}.app-shell{display:block}.app-shell aside{position:sticky;z-index:10;height:auto;padding:12px 14px;flex-direction:row;align-items:center;overflow:auto}.brand{padding:0;margin-right:8px}.brand span,.readonly,.logout{display:none}.app-shell nav{display:flex}.nav{white-space:nowrap;padding:10px}.workspace{padding:22px 15px 50px}.workspace>header{align-items:flex-start}.workspace h1{font-size:23px}.sync-button{padding:11px;font-size:12px}.metric-grid{grid-template-columns:1fr 1fr;gap:10px}.metric{padding:17px}.metric b{font-size:30px}.pipeline>div{grid-template-columns:28px 1fr}.pipeline span{grid-column:2;margin-top:4px}.settings-card{grid-template-columns:1fr}.trade{grid-template-columns:18px 45px 1fr}.trade-value{grid-column:3}.safe-pill{display:none}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
