feat: apply B-147 visual tokens to screener, review and account surfaces

Unify intelligent screener, review workspace, and account/admin chrome with shared tokens, table density, and left-aligned first columns.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
MS-01-Codex
2026-08-20 06:39:25 +08:00
co-authored by Cursor multica-agent
parent ee37223722
commit 22d4dcd339
7 changed files with 394 additions and 293 deletions
+111 -96
View File
@@ -1,8 +1,8 @@
/* Canonical CSS owner: screener. Historical layers consolidated 2026-08-02. */
#screenerView .section-toolbar h2 {
font-size: 17px;
font-size: var(--font-size-page-title);
font-weight: 800;
font-weight: var(--font-weight-semibold);
}
@media (max-width: 767px) {
@@ -25,7 +25,7 @@
.curated-detail-header > div > span,
.quant-panel-heading span {
color: rgb(100, 116, 139);
color: var(--text-secondary);
font-size: 12px;
@@ -35,7 +35,7 @@
:where(#screenerView) .curated-detail-header h3 {
margin: 3px 0px 0px;
color: rgb(17, 24, 39);
color: var(--text-primary);
letter-spacing: 0px;
}
@@ -45,7 +45,7 @@
border-radius: 5px;
background: rgb(232, 238, 252);
background: var(--action-soft);
}
:where(#screenerView) .curated-search .lucide {
@@ -55,19 +55,19 @@
:where(#screenerView) .curated-search input {
background: transparent;
color: rgb(17, 24, 39);
color: var(--text-primary);
}
.curated-strategy-card.active .curated-strategy-rank {
background: rgb(220, 232, 255);
background: var(--action-soft);
color: rgb(29, 78, 216);
color: var(--action);
}
:where(#screenerView) .curated-detail-header p {
margin: 9px 0px 0px;
color: rgb(100, 116, 139);
color: var(--text-secondary);
}
.curated-strategy-badges {
@@ -87,9 +87,9 @@
border-radius: 5px;
background: rgb(241, 245, 249);
background: var(--hover);
color: rgb(71, 85, 105);
color: var(--text-secondary);
font-weight: 650;
@@ -97,9 +97,9 @@
}
.curated-strategy-badges span:first-child {
background: rgb(234, 241, 255);
background: var(--action-soft);
color: rgb(29, 78, 216);
color: var(--action);
}
:where(#screenerView) .mini-section-heading {
@@ -111,11 +111,11 @@
:where(#screenerView) .mini-section-heading h4 {
font-weight: 740;
color: rgb(31, 41, 55);
color: var(--text-primary);
}
.mini-section-heading > span {
color: rgb(100, 116, 139);
color: var(--text-secondary);
font-size: 12px;
}
@@ -141,15 +141,15 @@
gap: 12px;
border-bottom: 1px solid rgb(238, 240, 243);
border-bottom: 1px solid var(--border);
}
:where(#screenerView) .curated-rule-row span {
color: rgb(71, 85, 105);
color: var(--text-secondary);
}
:where(#screenerView) .curated-rule-row strong {
color: rgb(17, 24, 39);
color: var(--text-primary);
font-variant-numeric: tabular-nums;
}
@@ -163,7 +163,7 @@
.curated-score-row > span:first-child {
overflow: hidden;
color: rgb(71, 85, 105);
color: var(--text-secondary);
text-overflow: ellipsis;
@@ -177,7 +177,7 @@
border-radius: 4px;
background: rgb(237, 240, 244);
background: var(--surface-muted);
}
.curated-score-track i {
@@ -187,11 +187,11 @@
border-radius: inherit;
background: rgb(79, 118, 199);
background: var(--action);
}
.curated-score-row strong {
color: rgb(51, 65, 85);
color: var(--text-primary);
text-align: right;
@@ -211,11 +211,11 @@
}
:where(#screenerView) .curated-data-status > .lucide {
color: rgb(22, 163, 74);
color: var(--market-down);
}
.curated-data-status.missing > .lucide {
color: rgb(217, 119, 6);
color: var(--warning-color);
}
.curated-data-status span {
@@ -225,13 +225,13 @@
:where(#screenerView) .curated-data-status strong {
display: block;
color: rgb(51, 65, 85);
color: var(--text-primary);
}
:where(#screenerView) .curated-data-status small {
display: block;
color: rgb(124, 135, 152);
color: var(--text-tertiary);
}
.quant-universe-grid .form-field {
@@ -239,16 +239,16 @@
}
.quant-universe-grid input[type="number"] {
height: 40px;
height: 32px;
}
.quant-rule-row input:focus,
.quant-rule-row select:focus {
border-color: rgb(37, 99, 235);
border-color: var(--action);
outline: 0px;
box-shadow: rgba(37, 99, 235, 0.1) 0px 0px 0px 3px;
box-shadow: 0 0 0 3px var(--focus-ring);
}
:where(#screenerView) .quant-remove-button {
@@ -268,7 +268,7 @@
float: right;
color: rgb(29, 78, 216);
color: var(--action);
}
:where(#screenerView) .quant-weight-status > div {
@@ -278,7 +278,7 @@
:where(#screenerView) .quant-weight-status i {
width: 100%;
background: rgb(37, 99, 235);
background: var(--action);
transition: width 180ms, background 180ms;
}
@@ -305,7 +305,7 @@
}
.quant-summary-pane {
border-top: 1px solid rgb(229, 231, 235);
border-top: 1px solid var(--border);
border-left: 0px;
}
@@ -549,7 +549,7 @@
padding: 12px;
background: rgb(248, 249, 251);
background: var(--surface-subtle);
}
#screenerView .strategy-list {
@@ -575,7 +575,7 @@
}
#screenerView .strategy-item.active {
border-color: rgb(201, 219, 241);
border-color: var(--color-action-line);
background: var(--action-soft);
}
@@ -724,7 +724,7 @@
#screenerView .backtest-panel {
padding: 10px 14px 12px;
background: rgb(251, 252, 253);
background: var(--surface-subtle);
}
#screenerView .backtest-panel > .workspace-heading {
@@ -1099,7 +1099,7 @@
}
.tracking-status.active {
border-color: rgb(197, 215, 237);
border-color: var(--color-action-line);
background: var(--action-soft);
@@ -1107,7 +1107,7 @@
}
.tracking-status.complete {
border-color: rgb(185, 223, 207);
border-color: var(--market-down);
background: var(--market-down-soft);
@@ -1149,9 +1149,9 @@
border-radius: 50%;
background: rgb(229, 231, 235);
background: var(--border);
color: rgb(156, 163, 175);
color: var(--text-tertiary);
font-size: 11px;
@@ -1189,11 +1189,11 @@
.screener-strategy-title b.neutral {
background: var(--surface-muted);
color: rgb(107, 114, 128);
color: var(--text-secondary);
}
:where(#screenerView) .screener-strategy-summary p {
color: rgb(107, 114, 128);
color: var(--text-secondary);
font-size: 12px;
}
@@ -1225,7 +1225,7 @@
border-right: 0px;
border-bottom-color: rgb(238, 240, 243);
border-bottom-color: var(--border);
}
#screenerView .screener-result-frame th {
@@ -1235,13 +1235,13 @@
border-right: 0px;
border-bottom-color: rgb(238, 240, 243);
border-bottom-color: var(--border);
height: 38px;
background: var(--table-header);
color: rgb(107, 114, 128);
color: var(--text-secondary);
font-size: 12px;
}
@@ -1281,7 +1281,7 @@
background: var(--surface);
box-shadow: rgba(15, 23, 42, 0.16) -12px 0px 32px;
box-shadow: var(--shadow-float);
}
.strategy-drawer[open] {
@@ -1323,7 +1323,7 @@
}
.strategy-drawer-header span {
color: rgb(156, 163, 175);
color: var(--text-tertiary);
font-size: 10.5px;
}
@@ -1365,7 +1365,7 @@
border-bottom: 1px solid var(--border);
background: rgb(248, 249, 251);
background: var(--surface-subtle);
}
#screenerView .strategy-drawer .strategy-list {
@@ -1602,7 +1602,7 @@
padding-top: 5px;
border-top: 1px solid rgb(238, 240, 243);
border-top: 1px solid var(--border);
}
#screenerView .screener-backtest-strip {
@@ -1684,7 +1684,7 @@
background: var(--surface);
color: rgb(31, 41, 55);
color: var(--text-primary);
font-style: inherit;
@@ -1722,7 +1722,7 @@
padding: 0px 9px;
color: rgb(31, 41, 55);
color: var(--text-primary);
font: inherit;
@@ -1749,7 +1749,7 @@
.curated-library-pane {
border-right: 0px;
border-bottom: 1px solid rgb(229, 231, 235);
border-bottom: 1px solid var(--border);
display: block;
@@ -1788,9 +1788,9 @@
}
.curated-search:focus-within {
border-color: rgb(142, 172, 239);
border-color: var(--action);
box-shadow: rgba(53, 106, 230, 0.1) 0px 0px 0px 3px;
box-shadow: 0 0 0 3px var(--focus-ring);
}
:where(#screenerView) .screener-page-heading {
@@ -1824,7 +1824,7 @@
}
:where(#screenerView) .curated-library-heading h3 {
color: rgb(17, 24, 39);
color: var(--text-primary);
letter-spacing: 0px;
}
@@ -1870,7 +1870,7 @@
justify-content: space-between;
border-bottom: 1px solid rgb(232, 235, 239);
border-bottom: 1px solid var(--border);
}
:where(#screenerView) .curated-execution-bar {
@@ -1890,7 +1890,7 @@
}
#screenerView .regime-evidence strong {
color: rgb(146, 88, 6);
color: var(--warning-color);
font-size: 12px;
@@ -1902,7 +1902,7 @@
overflow: visible;
color: rgb(162, 106, 24);
color: var(--warning-color);
font-size: 10.5px;
@@ -2350,7 +2350,7 @@ body[data-active-view="screenerView"] .overview-strip {
}
:where(#screenerView) .curated-strategy-card:hover {
box-shadow: rgba(37, 99, 235, 0.08) 0px 4px 14px;
box-shadow: var(--shadow-raised);
}
:where(#screenerView) .quant-screener-panel {
@@ -2414,7 +2414,7 @@ body[data-active-view="screenerView"] .overview-strip {
border-radius: 999px;
background: rgb(223, 229, 238);
background: var(--border-strong);
accent-color: var(--primary);
@@ -2532,19 +2532,19 @@ body[data-active-view="screenerView"] .overview-strip {
color: var(--r2-ink);
font-size: 17px;
font-size: var(--font-size-page-title);
font-weight: 800;
font-weight: var(--font-weight-semibold);
}
#screenerView .screener-page-heading .section-subtitle {
color: var(--r2-faint);
font-size: 12px;
font-size: var(--font-size-caption);
}
#screenerView .screener-mode-tabs {
min-height: 34px;
min-height: 32px;
display: inline-flex;
@@ -2662,7 +2662,7 @@ body[data-active-view="screenerView"] .overview-strip {
}
#screenerView .step-line.complete {
background: rgb(134, 213, 160);
background: var(--market-down);
}
#screenerView .screener-overview-card {
@@ -2712,7 +2712,7 @@ body[data-active-view="screenerView"] .overview-strip {
border-radius: 5px;
background: rgb(244, 246, 248);
background: var(--surface-muted);
color: var(--r2-sub);
@@ -2766,7 +2766,7 @@ body[data-active-view="screenerView"] .overview-strip {
}
#screenerView .regime-option:hover {
border-color: rgb(187, 200, 219);
border-color: var(--border-strong);
color: var(--r2-ink);
}
@@ -2979,7 +2979,7 @@ body[data-active-view="screenerView"] .overview-strip {
#screenerView .result-toolbar .count-badge {
border-radius: 5px;
background: rgb(241, 243, 246);
background: var(--surface-muted);
color: var(--r2-sub);
@@ -3039,25 +3039,29 @@ body[data-active-view="screenerView"] .overview-strip {
}
#screenerView .data-table {
font-size: 11.5px;
font-size: var(--font-size-table);
}
#screenerView .data-table thead th {
height: 39px;
height: 36px;
padding: 8px 11px;
padding: 0 12px;
background: var(--table-header);
color: var(--r2-sub);
font-size: 10.5px;
font-size: var(--font-size-caption);
font-weight: var(--font-weight-semibold);
}
#screenerView .data-table tbody td {
height: 45px;
height: 40px;
padding: 8px 11px;
padding: 0 12px;
font-size: var(--font-size-table);
}
#screenerView .data-table .stock-name {
@@ -3069,7 +3073,7 @@ body[data-active-view="screenerView"] .overview-strip {
overflow: hidden;
color: rgb(95, 107, 124);
color: var(--text-secondary);
text-overflow: ellipsis;
}
@@ -3091,13 +3095,13 @@ body[data-active-view="screenerView"] .overview-strip {
#screenerView .probability-value small {
margin-top: 3px;
font-weight: 500;
font-weight: var(--font-weight-medium);
display: block;
color: var(--r2-faint);
font-size: 9px;
font-size: var(--font-size-aux);
}
#screenerView .tracking-summary {
@@ -3341,7 +3345,7 @@ body[data-active-view="screenerView"] .overview-strip {
}
#screenerView .curated-school-filters button.active {
border-color: rgb(197, 212, 241);
border-color: var(--color-action-line);
background: var(--scr-blue-soft);
@@ -3562,7 +3566,7 @@ body[data-active-view="screenerView"] .overview-strip {
border-radius: 5px;
background: rgb(238, 241, 245);
background: var(--surface-muted);
color: var(--r2-sub);
@@ -3598,7 +3602,7 @@ body[data-active-view="screenerView"] .overview-strip {
border-radius: 4px;
background: rgb(238, 241, 245);
background: var(--surface-muted);
color: var(--r2-faint);
@@ -3953,7 +3957,7 @@ body[data-active-view="screenerView"] .overview-strip {
border-radius: 6px;
background: rgb(247, 248, 250);
background: var(--surface-subtle);
}
#screenerView .quant-rule-rows {
@@ -3989,7 +3993,7 @@ body[data-active-view="screenerView"] .overview-strip {
min-height: 30px;
border: 1px solid rgb(220, 225, 232);
border: 1px solid var(--border-strong);
border-radius: 6px;
@@ -4003,7 +4007,7 @@ body[data-active-view="screenerView"] .overview-strip {
min-height: 30px;
border: 1px solid rgb(220, 225, 232);
border: 1px solid var(--border-strong);
border-radius: 6px;
@@ -4075,7 +4079,7 @@ body[data-active-view="screenerView"] .overview-strip {
border-radius: 3px;
background: rgb(232, 235, 240);
background: var(--surface-muted);
}
#screenerView .quant-weight-status i {
@@ -4109,7 +4113,7 @@ body[data-active-view="screenerView"] .overview-strip {
}
#screenerView .strategy-drawer::backdrop {
background: rgba(20, 29, 44, 0.38);
background: var(--backdrop);
backdrop-filter: blur(3px);
}
@@ -4587,7 +4591,7 @@ body[data-active-view="screenerView"] .overview-strip {
}
#screenerTrackingView .tracking-back-button:hover {
border-color: rgb(185, 200, 228);
border-color: var(--color-action-line);
color: var(--scr-blue);
}
@@ -4743,23 +4747,27 @@ body[data-active-view="screenerView"] .overview-strip {
}
#screenerTrackingView .data-table {
font-size: 11.5px;
font-size: var(--font-size-table);
}
#screenerTrackingView .data-table thead th {
height: 39px;
height: 36px;
padding: 8px 11px;
padding: 0 12px;
background: var(--table-header);
font-size: 10.5px;
font-size: var(--font-size-caption);
font-weight: var(--font-weight-semibold);
}
#screenerTrackingView .data-table tbody td {
height: 46px;
height: 40px;
padding: 8px 11px;
padding: 0 12px;
font-size: var(--font-size-table);
}
#screenerTrackingView .stock-cell {
@@ -4775,7 +4783,7 @@ body[data-active-view="screenerView"] .overview-strip {
#screenerTrackingView .stock-cell small {
color: var(--r2-faint);
font-size: 9px;
font-size: var(--font-size-aux);
}
#screenerTrackingView .table-action.danger {
@@ -5495,7 +5503,7 @@ body[data-active-view="screenerView"] .overview-strip {
flex-direction: column;
border: 1px solid rgb(243, 201, 195);
border: 1px solid var(--market-up);
border-radius: 9px;
@@ -5677,7 +5685,7 @@ body[data-active-view="screenerView"] .overview-strip {
}
#screenerView .screener-tracking-entry:focus-visible {
outline: rgba(37, 99, 235, 0.45) solid 2px;
outline: 2px solid var(--action);
outline-offset: 2px;
}
@@ -5729,11 +5737,11 @@ body[data-active-view="screenerView"] .overview-strip {
padding: 3px 8px;
border: 1px solid rgb(217, 226, 239);
border: 1px solid var(--border-strong);
border-radius: 5px;
background: rgb(247, 249, 252);
background: var(--surface-subtle);
color: var(--r2-sub);
@@ -6563,3 +6571,10 @@ body[data-active-view="screenerView"] .overview-strip {
gap: 3px;
}
}
#screenerView .data-table thead th:first-child,
#screenerView .data-table tbody td:first-child,
#screenerTrackingView .data-table thead th:first-child,
#screenerTrackingView .data-table tbody td:first-child {
text-align: left;
}