:root{--color-bg:#0a0d12;--color-surface:#10141b;--color-surface-elevated:#161b24;--color-surface-hover:#1b212c;--color-border:#232a36;--color-border-strong:#313a49;--color-text:#e7ebf2;--color-text-secondary:#aab2c2;--color-text-muted:#707c8f;--color-primary:#3b82f6;--color-primary-hover:#60a5fa;--color-primary-bg:#3b82f624;--color-positive:#17c88f;--color-positive-bg:#17c88f21;--color-negative:#f0495a;--color-negative-bg:#f0495a21;--color-warning:#e5a02e;--color-warning-bg:#e5a02e24;--color-info:#3b82f6;--color-info-bg:#3b82f621;--color-danger:var(--color-negative);--color-danger-bg:var(--color-negative-bg);--color-success-bg:var(--color-positive-bg);--color-success-text:var(--color-positive);--radius:6px;--radius-sm:4px;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono:ui-monospace, "SF Mono", "Cascadia Code", "Roboto Mono", Consolas, monospace;--shadow-sm:0 1px 2px #0006;--shadow-md:0 8px 24px #00000073;--sidebar-width:208px;--topbar-height:52px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text);font-size:14px;line-height:1.5}a{color:var(--color-primary)}*{scrollbar-width:thin;scrollbar-color:var(--color-border-strong) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--color-border-strong);border:2px solid var(--color-bg);border-radius:999px}::-webkit-scrollbar-track{background:0 0}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.section-label{text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);margin:0;font-size:.72rem;font-weight:600}.auth-shell{background:radial-gradient(ellipse at top, #0d1520 0%, var(--color-bg) 60%);justify-content:center;align-items:center;min-height:100dvh;padding:24px;display:flex}.auth-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);width:100%;max-width:380px;box-shadow:var(--shadow-md);padding:32px}.auth-card h1{margin:0 0 4px;font-size:1.25rem}.auth-card .subtitle{color:var(--color-text-muted);margin:0 0 24px;font-size:.9rem}.field{margin-bottom:16px}.field label{color:var(--color-text-secondary);margin-bottom:6px;font-size:.82rem;font-weight:500;display:block}select,input[type=text],input[type=date],input[type=datetime-local],input[type=search]{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-elevated);color:var(--color-text);padding:7px 11px;font-family:inherit;font-size:.86rem}.field input,.field select{width:100%;padding:8px 11px;font-size:.88rem}.field input:focus,.field select:focus{outline:2px solid var(--color-primary);outline-offset:-1px}.field input::placeholder,input::placeholder{color:var(--color-text-muted)}button.primary{background:var(--color-primary);color:#fff;border-radius:var(--radius-sm);cursor:pointer;border:none;width:100%;padding:9px 12px;font-size:.9rem;font-weight:600}button.primary:hover:not(:disabled){background:var(--color-primary-hover)}button.primary:disabled{opacity:.5;cursor:not-allowed}button.link{color:var(--color-primary);cursor:pointer;background:0 0;border:none;padding:0;font-family:inherit;font-size:.88rem}.form-footer{color:var(--color-text-muted);text-align:center;margin-top:20px;font-size:.88rem}.alert{border-radius:var(--radius-sm);border:1px solid #0000;margin-bottom:16px;padding:9px 12px;font-size:.85rem}.alert-error{background:var(--color-danger-bg);color:var(--color-negative);border-color:#f0495a4d}.alert-success{background:var(--color-success-bg);color:var(--color-positive);border-color:#17c88f4d}.app-shell{min-height:100dvh;display:flex}.app-sidebar{width:var(--sidebar-width);background:var(--color-surface);border-right:1px solid var(--color-border);flex-direction:column;flex-shrink:0;height:100dvh;display:flex;position:sticky;top:0;overflow-y:auto}.app-sidebar .brand{letter-spacing:.01em;border-bottom:1px solid var(--color-border);white-space:nowrap;align-items:center;gap:8px;padding:16px 18px;font-size:.92rem;font-weight:700;display:flex;overflow:hidden}.app-sidebar .brand .brand-mark{background:var(--color-primary);border-radius:2px;flex-shrink:0;width:8px;height:8px}.sidebar-nav{flex-direction:column;flex:1;gap:1px;padding:8px;display:flex}.sidebar-link{border-radius:var(--radius-sm);color:var(--color-text-secondary);border-left:2px solid #0000;justify-content:space-between;align-items:center;gap:8px;padding:7px 10px;font-size:.85rem;font-weight:500;text-decoration:none;display:flex}.sidebar-link:hover{background:var(--color-surface-hover);color:var(--color-text)}.sidebar-link-active{background:var(--color-primary-bg);color:var(--color-primary);border-left-color:var(--color-primary)}.sidebar-link .badge{padding:0 6px;font-size:.68rem}.app-topbar{height:var(--topbar-height);background:var(--color-surface);border-bottom:1px solid var(--color-border);z-index:20;flex-shrink:0;justify-content:space-between;align-items:center;gap:16px;padding:0 20px;display:flex;position:sticky;top:0}.app-topbar .topbar-search{flex:1;max-width:360px;position:relative}.app-topbar .topbar-search input{background:var(--color-surface-elevated);border:1px solid var(--color-border);border-radius:var(--radius-sm);width:100%;color:var(--color-text);padding:6px 12px;font-size:.85rem}.app-content-col{flex-direction:column;flex:1;min-width:0;display:flex}.app-main{max-width:720px;margin:48px auto;padding:0 24px}.app-main-wide{width:100%;max-width:1240px;margin:0 auto;padding:24px 28px 48px}.center-message{min-height:100dvh;color:var(--color-text-muted);justify-content:center;align-items:center;display:flex}.nav-link{color:var(--color-text-muted);border-bottom:2px solid #0000;padding:4px 0;font-size:.88rem;font-weight:500;text-decoration:none}.nav-link:hover{color:var(--color-text)}.nav-link-active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px;display:flex}.page-header h1{letter-spacing:-.01em;margin:0;font-size:1.2rem;font-weight:700}.page-header h2{margin:0;font-size:.98rem;font-weight:600}.toolbar{flex-wrap:wrap;gap:10px;margin-bottom:18px;display:flex}.toolbar input[type=search],.toolbar select{padding:7px 11px;font-size:.85rem}.toolbar input[type=search]{flex:1;min-width:200px}.data-table-wrap{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);overflow-x:auto}table.data-table{border-collapse:collapse;width:100%;font-size:.85rem}table.data-table thead th{z-index:1;background:var(--color-surface-elevated);position:sticky;top:0}table.data-table th{text-align:left;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);border-bottom:1px solid var(--color-border);white-space:nowrap;padding:8px 12px;font-size:.72rem;font-weight:600}table.data-table td{border-bottom:1px solid var(--color-border);vertical-align:middle;padding:7px 12px}table.data-table tbody tr:last-child td{border-bottom:none}table.data-table tbody tr:hover{background:var(--color-surface-hover)}table.data-table td.num,table.data-table th.num{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.symbol-link{color:var(--color-text);font-weight:700;font-family:var(--font-mono);text-decoration:none}.symbol-link:hover{color:var(--color-primary)}.badge{border-radius:var(--radius-sm);letter-spacing:.01em;background:var(--color-surface-elevated);color:var(--color-text-secondary);border:1px solid var(--color-border-strong);white-space:nowrap;align-items:center;padding:1px 7px;font-size:.72rem;font-weight:600;display:inline-flex}.badge-buy{background:var(--color-positive-bg);color:var(--color-positive);border-color:#0000}.badge-sell,.priority-high{background:var(--color-negative-bg);color:var(--color-negative);border-color:#0000}.priority-medium{background:var(--color-warning-bg);color:var(--color-warning);border-color:#0000}.priority-low{background:var(--color-surface-elevated);color:var(--color-text-muted)}.pnl-positive{color:var(--color-positive);font-weight:600;font-family:var(--font-mono)}.pnl-negative{color:var(--color-negative);font-weight:600;font-family:var(--font-mono)}.heatmap-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;margin:12px 0;display:grid}.heat-tile{border-radius:var(--radius-sm);border:1px solid var(--color-border);padding:10px 12px}.heat-tile .heat-name{color:var(--color-text-secondary);margin-bottom:4px;font-size:.78rem}.heat-tile .heat-value{font-size:1rem;font-weight:700;font-family:var(--font-mono)}.heat-neutral{background:var(--color-surface-elevated)}.heat-neutral .heat-value{color:var(--color-text-muted)}.heat-pos-1{background:#17c88f1a}.heat-pos-2{background:#17c88f38}.heat-pos-3{background:#17c88f5c}.heat-pos-1 .heat-value,.heat-pos-2 .heat-value,.heat-pos-3 .heat-value{color:var(--color-positive)}.heat-neg-1{background:#f0495a1a}.heat-neg-2{background:#f0495a38}.heat-neg-3{background:#f0495a5c}.heat-neg-1 .heat-value,.heat-neg-2 .heat-value,.heat-neg-3 .heat-value{color:var(--color-negative)}.score-panel{flex-wrap:wrap;align-items:baseline;gap:16px;display:flex}.score-value{font-size:2.4rem;font-weight:700;font-family:var(--font-mono);line-height:1}.score-contributors{flex-direction:column;gap:4px;margin:12px 0 0;padding:0;font-size:.85rem;list-style:none;display:flex}.score-contributors li{color:var(--color-text-secondary)}.pagination{color:var(--color-text-muted);justify-content:center;align-items:center;gap:12px;margin-top:18px;font-size:.85rem;display:flex}.pagination button{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-elevated);color:var(--color-text);cursor:pointer;padding:5px 12px;font-size:.85rem}.pagination button:disabled{opacity:.4;cursor:not-allowed}.empty-state{text-align:center;color:var(--color-text-muted);border:1px dashed var(--color-border);border-radius:var(--radius);background:var(--color-surface);padding:40px 24px;font-size:.88rem}.skeleton{background:var(--color-surface-elevated);border-radius:var(--radius-sm);position:relative;overflow:hidden}.skeleton:after{content:"";background:linear-gradient(90deg,#0000,#ffffff0a,#0000);animation:1.4s ease-in-out infinite skeleton-shimmer;position:absolute;inset:0}@keyframes skeleton-shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@media (prefers-reduced-motion:reduce){.skeleton:after{animation:none}}.btn-secondary{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-elevated);color:var(--color-text);cursor:pointer;padding:7px 13px;font-family:inherit;font-size:.85rem;font-weight:500}.btn-secondary:hover:not(:disabled){background:var(--color-surface-hover);border-color:var(--color-border-strong)}.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.btn-danger{border-radius:var(--radius-sm);background:var(--color-danger-bg);color:var(--color-negative);cursor:pointer;border:1px solid #f0495a59;padding:7px 13px;font-family:inherit;font-size:.85rem;font-weight:500}.btn-danger:hover:not(:disabled){background:#f0495a38}.btn-danger:disabled{opacity:.5;cursor:not-allowed}.detail-grid{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin:18px 0;padding:16px 18px;display:grid}.detail-grid dt{text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);margin-bottom:3px;font-size:.7rem}.detail-grid dd{font-size:.95rem;font-weight:600;font-family:var(--font-mono);margin:0}.back-link{color:var(--color-text-muted);margin-bottom:14px;font-size:.85rem;text-decoration:none;display:inline-block}.back-link:hover{color:var(--color-primary)}.trade-form{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:18px}.trade-form-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin-bottom:4px;display:grid}.trade-form-grid .stock-picker{grid-column:1/-1}.stock-picker{position:relative}.stock-picker-results{z-index:10;background:var(--color-surface-elevated);border:1px solid var(--color-border-strong);border-radius:var(--radius);max-height:240px;box-shadow:var(--shadow-md);margin:0;padding:4px;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto}.stock-picker-results li button{text-align:left;width:100%;color:var(--color-text);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;padding:7px 9px;font-family:inherit;font-size:.85rem;display:block}.stock-picker-results li button:hover{background:var(--color-surface-hover)}.tab{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-elevated);color:var(--color-text-muted);cursor:pointer;padding:6px 14px;font-family:inherit;font-size:.83rem;font-weight:500}.tab:hover{color:var(--color-text)}.tab-active{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.tab-active:hover{color:#fff}@media (max-width:1024px){.app-sidebar .sidebar-link span.link-label{display:none}.app-sidebar{width:56px}.app-sidebar .brand span{display:none}}@media (max-width:720px){.app-shell{flex-direction:column}.app-sidebar{border-right:none;border-bottom:1px solid var(--color-border);flex-direction:row;width:100%;height:auto;position:static;overflow-x:auto}.app-sidebar .brand{display:none}.sidebar-nav{flex-direction:row;padding:6px 8px}.sidebar-link{white-space:nowrap;border-bottom:2px solid #0000;border-left:none}.sidebar-link-active{border-left-color:#0000;border-bottom-color:var(--color-primary)}.app-topbar .topbar-search{max-width:none}.app-main-wide{padding:16px}}
