:root{--bg:#0a0c10;--panel:#12151b;--panel-2:#171b22;--border:#262c36;--border-strong:#333b48;--text:#e7eaf0;--muted:#8b93a3;--muted-2:#656d7c;--accent:#4f8cff;--accent-dim:#1e3a6b;--success:#3ecf8e;--success-dim:#10352a;--danger:#ff5c5c;--danger-dim:#3a1618;--warning:#f5b544;--warning-dim:#3a2c10;--radius:8px;--radius-sm:5px;--pad:16px;--gap:12px;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--fs-xs:11px;--fs-sm:12px;--fs-base:13px;--fs-md:14px;--fs-lg:18px;--fs-xl:24px;--shadow:0 8px 24px #00000073;--speed:.14s}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:var(--fs-base);-webkit-font-smoothing:antialiased;line-height:1.5}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}h1,h2,h3{letter-spacing:-.01em;margin:0;font-weight:600}h1{font-size:var(--fs-xl)}h2{font-size:var(--fs-md)}pre{margin:0}.shell{flex-direction:column;min-height:100vh;display:flex}.topbar{background:var(--panel);border-bottom:1px solid var(--border);z-index:20;align-items:center;gap:20px;height:48px;padding:0 20px;display:flex;position:sticky;top:0}.brand{font-family:var(--mono);font-weight:700;font-size:var(--fs-md);letter-spacing:.14em}.nav{flex:1;align-items:center;gap:2px;display:flex;overflow-x:auto}.navlink{color:var(--muted);border-radius:var(--radius-sm);font-size:var(--fs-base);white-space:nowrap;transition:background var(--speed), color var(--speed);padding:6px 10px}.navlink:hover{color:var(--text);background:var(--panel-2);text-decoration:none}.navlink[aria-current=page]{color:var(--text);background:var(--panel-2);box-shadow:inset 0 -2px 0 var(--accent)}.logout-form{margin:0}.main{flex-direction:column;flex:1;gap:16px;width:100%;max-width:1360px;margin:0 auto;padding:20px;display:flex}.page-head{justify-content:space-between;align-items:center;gap:var(--gap);flex-wrap:wrap;display:flex}.page-sub{color:var(--muted);font-size:var(--fs-sm);margin:2px 0 0}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.row.gap-top{margin-top:6px}.grid-2{grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:16px;display:grid}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.panel-head{justify-content:space-between;align-items:center;gap:var(--gap);padding:10px var(--pad);border-bottom:1px solid var(--border);background:var(--panel-2);display:flex}.panel-title{font-size:var(--fs-base);letter-spacing:.02em;font-weight:600}.panel-note{color:var(--muted);font-size:var(--fs-sm)}.panel-body{padding:var(--pad)}.panel-body.tight{padding:10px var(--pad)}.stat-grid{background:var(--border);border:1px solid var(--border);border-radius:var(--radius);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1px;display:grid;overflow:hidden}.stat{background:var(--panel);padding:12px var(--pad);flex-direction:column;gap:4px;display:flex}.stat-label{color:var(--muted);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.08em}.stat-value{font-family:var(--mono);font-size:var(--fs-lg);font-weight:600}.stat-hint{color:var(--muted-2);font-size:var(--fs-xs)}.table-wrap{overflow-x:auto}.table{border-collapse:collapse;width:100%;font-size:var(--fs-base)}.table th{text-align:left;font-weight:600;font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.07em;color:var(--muted);border-bottom:1px solid var(--border);background:var(--panel-2);white-space:nowrap;padding:8px 12px}.table td{border-bottom:1px solid var(--border);vertical-align:top;padding:9px 12px}.table tbody tr:last-child td{border-bottom:none}.table tbody tr:hover td{background:var(--panel-2)}.table td.num,.table th.num{text-align:right;font-family:var(--mono);white-space:nowrap}.table td.mono{font-family:var(--mono);white-space:nowrap}.table td.wrap{white-space:normal;min-width:220px}.pos{color:var(--success)}.neg{color:var(--danger)}.flat,.muted{color:var(--muted)}.mono{font-family:var(--mono)}.nowrap{white-space:nowrap}.badge{font-size:var(--fs-xs);letter-spacing:.05em;text-transform:uppercase;border:1px solid var(--border-strong);color:var(--muted);background:var(--panel-2);white-space:nowrap;border-radius:999px;align-items:center;gap:5px;padding:2px 8px;font-weight:600;display:inline-flex}.badge.neutral{color:var(--text)}.badge.ok{color:var(--success);border-color:var(--success);background:var(--success-dim)}.badge.warn{color:var(--warning);border-color:var(--warning);background:var(--warning-dim)}.badge.bad{color:var(--danger);border-color:var(--danger);background:var(--danger-dim)}.badge.info{color:var(--accent);border-color:var(--accent);background:var(--accent-dim)}.badge.live{color:var(--bg);background:var(--danger);border-color:var(--danger);letter-spacing:.12em;box-shadow:0 0 0 3px var(--danger-dim)}.btn{border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--panel-2);height:30px;color:var(--text);font-family:var(--font);font-size:var(--fs-base);cursor:pointer;transition:background var(--speed), border-color var(--speed), color var(--speed);justify-content:center;align-items:center;gap:6px;padding:0 12px;font-weight:500;display:inline-flex}.btn:hover:not(:disabled){background:var(--border);border-color:var(--muted-2)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:#04070d;font-weight:600}.btn-primary:hover:not(:disabled){background:#6ba0ff;border-color:#6ba0ff}.btn-danger{background:var(--danger);border-color:var(--danger);color:#1a0507;font-weight:600}.btn-danger:hover:not(:disabled){background:#ff7676;border-color:#ff7676}.btn-ghost{color:var(--muted);background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){background:var(--panel-2);color:var(--text);border-color:var(--border)}.btn-sm{height:26px;font-size:var(--fs-sm);padding:0 9px}.btn-block{width:100%}.spinner{border:2px solid;border-right-color:#0000;border-radius:50%;width:12px;height:12px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.form-grid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px;display:grid}.field{flex-direction:column;gap:5px;display:flex}.field label{font-size:var(--fs-sm);color:var(--text);font-weight:600}.field .req{color:var(--danger);margin-left:2px}.field .hint{font-size:var(--fs-xs);color:var(--muted-2)}.field .err{font-size:var(--fs-xs);color:var(--danger)}.input{background:var(--bg);border:1px solid var(--border-strong);border-radius:var(--radius-sm);height:30px;color:var(--text);font-family:var(--mono);font-size:var(--fs-base);width:100%;transition:border-color var(--speed);padding:0 9px}.input:hover:not(:disabled){border-color:var(--muted-2)}.input:focus{border-color:var(--accent);outline:2px solid var(--accent);outline-offset:1px}.input:disabled{opacity:.5;cursor:not-allowed}.input.invalid{border-color:var(--danger)}.form-actions{border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px;padding-top:14px;display:flex}.banner{border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--panel-2);font-size:var(--fs-base);align-items:flex-start;gap:10px;padding:10px 12px;display:flex}.banner-title{font-weight:600}.banner.error{border-color:var(--danger);background:var(--danger-dim);color:var(--text)}.banner.success{border-color:var(--success);background:var(--success-dim)}.banner.warn{border-color:var(--warning);background:var(--warning-dim)}.notice{border:1px dashed var(--border-strong);border-radius:var(--radius);background:var(--panel);text-align:center;flex-direction:column;align-items:center;gap:6px;padding:24px;display:flex}.notice .notice-mark{font-family:var(--mono);font-size:var(--fs-xl);color:var(--warning);line-height:1}.notice .notice-title{font-weight:600;font-size:var(--fs-md)}.notice .notice-body{color:var(--muted);max-width:60ch}.notice code{font-family:var(--mono);font-size:var(--fs-sm);background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:3px;padding:1px 5px}.empty{text-align:center;flex-direction:column;align-items:center;gap:4px;padding:28px 20px;display:flex}.empty .empty-mark{font-family:var(--mono);font-size:var(--fs-xl);color:var(--muted-2);line-height:1}.empty .empty-title{font-weight:600}.empty .empty-body{color:var(--muted);font-size:var(--fs-sm);max-width:52ch}.equity{flex-direction:column;gap:8px;display:flex}.equity-svg{width:100%;height:auto;display:block}.equity-svg .grid-line{stroke:var(--border);stroke-width:1px;stroke-dasharray:3 4}.equity-svg .curve{fill:none;stroke:var(--accent);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.equity-svg .curve.pos{stroke:var(--success)}.equity-svg .curve.neg{stroke:var(--danger)}.equity-svg .dot{fill:var(--accent)}.equity-legend{font-size:var(--fs-sm);color:var(--muted);font-family:var(--mono);flex-wrap:wrap;gap:16px;display:flex}details.collapse{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);overflow:hidden}details.collapse+details.collapse{margin-top:10px}details.collapse>summary{cursor:pointer;background:var(--panel-2);font-size:var(--fs-sm);transition:background var(--speed);align-items:center;gap:8px;padding:8px 12px;font-weight:600;list-style:none;display:flex}details.collapse>summary:hover{background:var(--border)}details.collapse>summary::-webkit-details-marker{display:none}details.collapse>summary:before{content:"+";font-family:var(--mono);color:var(--muted)}details.collapse[open]>summary:before{content:"-"}.code{font-family:var(--mono);font-size:var(--fs-sm);color:var(--text);white-space:pre-wrap;word-break:break-word;max-height:460px;margin:0;padding:12px;line-height:1.55;overflow:auto}.modal-backdrop{z-index:100;background:#04060ab8;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--border-strong);border-radius:var(--radius);width:100%;max-width:440px;box-shadow:var(--shadow);overflow:hidden}.modal-head{padding:12px var(--pad);border-bottom:1px solid var(--border);font-weight:600;font-size:var(--fs-md)}.modal-head.danger{color:var(--danger)}.modal-body{padding:var(--pad);font-size:var(--fs-base);flex-direction:column;gap:12px;display:flex}.modal-body p{color:var(--muted);margin:0}.modal-foot{padding:12px var(--pad);border-top:1px solid var(--border);background:var(--panel-2);justify-content:flex-end;gap:8px;display:flex}.confirm-token{font-family:var(--mono);color:var(--text);background:var(--bg);border:1px solid var(--border-strong);border-radius:3px;padding:1px 6px;font-weight:700}.login-wrap{justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.login-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:16px;width:100%;max-width:340px;padding:24px;display:flex}.login-brand{font-family:var(--mono);letter-spacing:.2em;font-weight:700;font-size:var(--fs-lg);text-align:center}.login-sub{color:var(--muted);font-size:var(--fs-sm);text-align:center;margin-top:-10px}.skeleton{border-radius:var(--radius-sm);background:linear-gradient(90deg, var(--panel) 0%, var(--panel-2) 50%, var(--panel) 100%);background-size:200% 100%;animation:1.2s ease-in-out infinite shimmer}.skeleton-row{height:34px;margin-bottom:6px}.skeleton-title{width:220px;height:34px}.skeleton-block{height:150px}@keyframes shimmer{to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}
