:root{--bg:#0b0e14;--panel:#141925;--panel-2:#1b2231;--border:#232c3d;--text:#e6ebf2;--muted:#8b97ab;--accent:#4d8dff;--up:#2ec16b;--down:#f0556d;color:var(--text);background-color:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{background:radial-gradient(1200px 600px at 80% -10%, #182033 0%, transparent 60%), var(--bg);min-height:100vh;margin:0}.app{max-width:1180px;margin:0 auto;padding:24px 20px 64px}.topbar{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.topbar h1{letter-spacing:.2px;margin:0;font-size:22px;font-weight:650}.env-badge{color:var(--down);border:1px solid var(--down);vertical-align:middle;border-radius:6px;margin-left:8px;padding:2px 7px;font-size:11px;font-weight:700}.topbar-actions{align-items:center;gap:12px;display:flex}.hint{color:var(--muted);font-size:13px}.refresh-btn{background:var(--panel-2);color:var(--text);border:1px solid var(--border);cursor:pointer;border-radius:8px;padding:7px 16px;font-size:13px;font-weight:600;transition:border-color .15s,background .15s}.refresh-btn:hover:not(:disabled){border-color:var(--accent);background:#20283a}.refresh-btn:disabled{opacity:.5;cursor:default}.overview{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:22px;display:grid}.card{background:var(--panel);border:1px solid var(--border);border-radius:14px}.stat{flex-direction:column;gap:6px;padding:16px 18px;display:flex}.stat-label{color:var(--muted);font-size:13px}.stat-value{font-variant-numeric:tabular-nums;font-size:24px;font-weight:680}.stat-sub{font-size:13px;font-weight:600}.panel{background:var(--panel);border:1px solid var(--border);border-radius:16px;margin-bottom:22px;padding:18px 20px 6px}.panel h2{color:var(--text);margin:2px 0 14px;font-size:15px;font-weight:640}.table-wrap{margin:0 -6px 12px;overflow-x:auto}table.positions{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}table.positions th,table.positions td{text-align:right;white-space:nowrap;padding:11px 12px;font-size:14px}table.positions th{color:var(--muted);border-bottom:1px solid var(--border);-webkit-user-select:none;user-select:none;font-size:12px;font-weight:550}table.positions th.left,table.positions td.left{text-align:left}th.sortable{cursor:pointer}th.sortable:hover{color:var(--text)}th.sortable.active{color:var(--accent)}table.positions tbody tr{border-bottom:1px solid #1a2130}table.positions tbody tr:hover{background-color:var(--panel-2)}td .code{font-size:14px;font-weight:620}td .name{color:var(--muted);margin-top:1px;font-size:12px}.watchlist-bar{align-items:center;gap:12px;margin-bottom:14px;display:flex}.group-select{background:var(--panel-2);color:var(--text);border:1px solid var(--border);cursor:pointer;border-radius:8px;padding:7px 12px;font-size:13px}.quote-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;padding-bottom:14px;display:grid}.quote-card{background:var(--panel-2);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:6px;padding:13px 14px;display:flex}.quote-head{flex-direction:column;gap:1px;display:flex}.quote-head .code{font-size:14px;font-weight:640}.quote-head .name{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.quote-price{font-variant-numeric:tabular-nums;font-size:20px;font-weight:680}.quote-change{font-variant-numeric:tabular-nums;font-size:13px;font-weight:600}.up{color:var(--up)}.down{color:var(--down)}.flat{color:var(--text)}.loading-screen,.empty{color:var(--muted);text-align:center;padding:40px 0;font-size:14px}.error-banner{border:1px solid var(--down);color:#ffd7de;background:#2a1620;border-radius:12px;margin-bottom:20px;padding:14px 16px;font-size:14px}.error-help{color:var(--muted);margin-top:6px;font-size:12px}.error-inline{color:var(--down);margin:4px 0 12px;font-size:13px}code{background:#0008;border-radius:4px;padding:1px 5px;font-size:.9em}.positions-split{flex-direction:column;gap:22px;display:flex}.sub h3{color:var(--text);align-items:center;gap:10px;margin:0 0 10px;font-size:14px;font-weight:640;display:flex}.sub-count{background:var(--panel-2);border:1px solid var(--border);min-width:20px;height:20px;color:var(--muted);border-radius:10px;justify-content:center;align-items:center;padding:0 6px;font-size:12px;font-weight:600;display:inline-flex}.sub-total{color:var(--muted);font-variant-numeric:tabular-nums;margin-left:auto;font-size:13px;font-weight:500}.bar-row{background-image:linear-gradient(90deg, #4d8dff2e var(--bar,0%), transparent var(--bar,0%))}.pct-col{text-align:right}td.strong{font-variant-numeric:tabular-nums;font-weight:660}.exp-col{text-align:right}.exp-cell{flex-direction:column;align-items:flex-end;gap:3px;display:flex}.exp-pill{font-variant-numeric:tabular-nums;border-radius:999px;padding:3px 9px;font-size:13px;font-weight:700;line-height:1.2;display:inline-block}.exp-date{color:var(--muted);font-size:11px}.exp-green{color:var(--up);background:#2ec16b29;border:1px solid #2ec16b66}.exp-yellow{color:#f0be46;background:#f0be4629;border:1px solid #f0be4673}.exp-red{color:var(--down);background:#f0556d29;border:1px solid #f0556d73}.muted{color:var(--muted)}.tabs{border-bottom:1px solid var(--border);gap:6px;margin-bottom:18px;display:flex}.tab{color:var(--muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:9px 14px;font-size:14px;font-weight:600;transition:color .15s,border-color .15s}.tab:hover{color:var(--text)}.tab.active{color:var(--text);border-bottom-color:var(--accent)}.journal-summary{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:12px;display:grid}.journal-range{margin:0 0 12px;font-size:12px}table.journal th,table.journal td{padding:10px;font-size:13px}.kind-pill{vertical-align:middle;border-radius:5px;margin-left:7px;padding:1px 6px;font-size:11px;font-weight:700;display:inline-block}.kind-put{color:var(--down);background:#f0556d29}.kind-call{color:var(--up);background:#2ec16b29}.kind-stock{color:var(--accent);background:#4d8dff29}.side-tag{border-radius:6px;padding:2px 8px;font-size:12px;font-weight:650;display:inline-block}.side-short{color:#f0be46;background:#f0be4624}.side-long{color:var(--accent);background:#4d8dff24}.open-badge{background:var(--panel-2);border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.locked-blur{filter:blur(7px);pointer-events:none;-webkit-user-select:none;user-select:none;opacity:.8}.gate-overlay{z-index:100;background:#080b148c;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.gate-dialog{background:var(--panel);border:1px solid var(--border);text-align:center;border-radius:18px;flex-direction:column;align-items:center;width:360px;max-width:100%;padding:30px 28px 26px;display:flex;box-shadow:0 24px 60px #00000073}.gate-icon{margin-bottom:12px;font-size:30px;line-height:1}.gate-title{margin:0 0 6px;font-size:18px;font-weight:660}.gate-sub{color:var(--muted);margin:0 0 20px;font-size:13px}.gate-input{background:var(--panel-2);width:100%;color:var(--text);border:1px solid var(--border);border-radius:10px;outline:none;padding:11px 14px;font-size:15px;transition:border-color .15s}.gate-input:focus{border-color:var(--accent)}.gate-input:disabled{opacity:.6}.gate-error{color:var(--down);width:100%;margin:12px 0 0;font-size:13px}.gate-btn{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:10px;width:100%;margin-top:18px;padding:11px 16px;font-size:14px;font-weight:650;transition:background .15s,opacity .15s}.gate-btn:hover:not(:disabled){background:#3b7bf0}.gate-btn:disabled{opacity:.5;cursor:default}.sk-line{background:linear-gradient(90deg, var(--panel-2) 25%, var(--border) 37%, var(--panel-2) 63%);background-size:400% 100%;border-radius:6px;height:13px;animation:1.4s infinite shimmer;display:block}.skeleton-card{gap:12px}.sk-sm{width:48%}.sk-lg{width:72%;height:22px}.sk-title{width:150px;height:16px;margin:4px 0 18px}.sk-row{border-bottom:1px solid #1a2130;padding:13px 2px}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}
