:root{--page: #0d0d0d;--surface-1: #1a1a19;--surface-2: #222220;--surface-3: #2a2a28;--text-primary: #ffffff;--text-secondary: #c3c2b7;--muted: #898781;--grid: #2c2c2a;--baseline: #383835;--border: rgba(255,255,255,.1);--series-1: #3987e5;--series-2: #199e70;--series-3: #c98500;--series-4: #008300;--series-5: #9085e9;--series-6: #e66767;--series-7: #d55181;--series-8: #d95926;--good: #0ca30c;--warning: #fab219;--serious: #ec835a;--critical: #d03b3b;--up: #22c55e;--down: #ef4444;--radius: 12px;--gap: 16px;font-family:system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--page);color:var(--text-primary);-webkit-font-smoothing:antialiased}a{color:var(--series-1);text-decoration:none}button{font-family:inherit}.tabular{font-variant-numeric:tabular-nums}.ellip{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pos{color:var(--up)}.neg{color:var(--down)}.muted{color:var(--muted)}.sec{color:var(--text-secondary)}.app{display:flex;min-height:100vh}.sidebar{width:220px;flex-shrink:0;background:var(--surface-1);border-right:1px solid var(--border);padding:20px 12px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh}.brand{font-weight:700;font-size:18px;padding:6px 12px 18px;letter-spacing:-.3px}.brand span{color:var(--series-1)}.navbtn{text-align:left;background:none;border:none;color:var(--text-secondary);padding:10px 12px;border-radius:8px;cursor:pointer;font-size:14px;display:flex;align-items:center;gap:10px;transition:background .12s}.navbtn:hover{background:var(--surface-2);color:var(--text-primary)}.navbtn.active{background:var(--surface-3);color:var(--text-primary);font-weight:600}.navbtn .ico{width:18px;text-align:center;opacity:.9}.sidebar-foot{margin-top:auto;font-size:12px}.main{flex:1;min-width:0;padding:24px 28px 60px;max-width:1400px}.pagehead{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;flex-wrap:wrap;gap:12px}.pagehead h1{font-size:22px;margin:0;font-weight:650}.card{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);padding:18px}.grid{display:grid;gap:var(--gap)}.tiles{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}.cols-2{grid-template-columns:1.6fr 1fr}@media (max-width: 900px){.cols-2{grid-template-columns:1fr}}.tile .label{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.5px}.tile .value{font-size:26px;font-weight:680;margin-top:6px;letter-spacing:-.5px}.tile .sub{font-size:13px;margin-top:4px}table{width:100%;border-collapse:collapse;font-size:14px}th{text-align:right;color:var(--muted);font-weight:500;font-size:12px;padding:8px 10px;border-bottom:1px solid var(--border);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none}th:first-child,td:first-child{text-align:left}td{padding:11px 10px;border-bottom:1px solid var(--grid);text-align:right;white-space:nowrap}tbody tr{cursor:pointer}tbody tr:hover{background:var(--surface-2)}.tick{font-weight:600}.subname{color:var(--muted);font-size:12px}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}.badge.buy{background:#0ca30c26;color:#4ade80}.badge.strongbuy{background:#0ca30c38;color:#22c55e}.badge.hold{background:#89878133;color:var(--text-secondary)}.badge.sell{background:#d03b3b29;color:#f87171}.badge.strongsell{background:#d03b3b3d;color:#ef4444}.badge.nodata{background:var(--surface-3);color:var(--muted)}.pill{display:inline-block;padding:2px 8px;border-radius:6px;background:var(--surface-3);color:var(--text-secondary);font-size:11px;margin-right:4px}.btn{background:var(--series-1);color:#fff;border:none;padding:9px 16px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600}.btn:hover{filter:brightness(1.08)}.btn.ghost{background:var(--surface-3);color:var(--text-primary)}.btn.sm{padding:6px 12px;font-size:13px}.btn.danger{background:#d03b3b29;color:#f87171}input,select{background:var(--surface-2);border:1px solid var(--border);color:var(--text-primary);padding:9px 11px;border-radius:8px;font-size:14px;width:100%}input:focus,select:focus{outline:1px solid var(--series-1)}label.field{display:block;margin-bottom:12px}label.field .lbl{display:block;font-size:12px;color:var(--muted);margin-bottom:5px}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.meter{height:8px;border-radius:999px;background:var(--surface-3);overflow:hidden;position:relative}.meter>span{position:absolute;top:0;bottom:0}.login-wrap{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px}.login-card{width:360px;max-width:100%}.login-card h1{font-size:20px;margin:0 0 4px}.banner{background:#fab2191f;border:1px solid rgba(250,178,25,.35);color:#f6c667;padding:12px 16px;border-radius:10px;font-size:13px;margin-bottom:18px}.banner.err{background:#d03b3b1f;border-color:#d03b3b66;color:#f6a1a1}.spinner{color:var(--muted);padding:40px;text-align:center}.reasons{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.reasons li{display:flex;gap:10px;align-items:baseline;font-size:13px;color:var(--text-secondary)}.reasons .pts{font-variant-numeric:tabular-nums;font-weight:700;min-width:34px}.chiprow{display:flex;gap:8px;flex-wrap:wrap}.section-title{font-size:13px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin:0 0 12px}.dropzone{border:1.5px dashed var(--border);border-radius:10px;padding:26px;text-align:center;color:var(--muted);cursor:pointer}.dropzone:hover{border-color:var(--series-1);color:var(--text-secondary)}@media (max-width: 760px){.app{flex-direction:column}.sidebar{width:100%;height:auto;position:sticky;top:0;z-index:30;flex-direction:row;align-items:center;gap:2px;padding:8px;overflow-x:auto;-webkit-overflow-scrolling:touch;border-right:none;border-bottom:1px solid var(--border)}.sidebar::-webkit-scrollbar{display:none}.brand{padding:0 8px 0 4px;font-size:16px;flex-shrink:0}.navbtn{padding:8px 11px;white-space:nowrap;font-size:13px;flex-shrink:0}.navbtn .ico{display:none}.sidebar-foot{margin:0 0 0 auto;display:flex;gap:2px;flex-shrink:0}.main{padding:16px 13px 72px;max-width:100%}.pagehead{margin-bottom:16px}.pagehead h1{font-size:19px}.card{padding:14px}.tiles{grid-template-columns:repeat(2,1fr);gap:10px}.tile .value{font-size:20px}.tile .label{font-size:11px}table{font-size:13px}th,td{padding:8px 7px}.subname{font-size:11px}input,select{font-size:16px}.row{gap:8px}}@media (max-width: 420px){.tiles{grid-template-columns:1fr 1fr}.brand span{display:none}}
