chore: create Multica handoff checkpoint

This commit is contained in:
leefer
2026-08-06 22:54:46 +08:00
parent de635e4f9c
commit d95bcb523a
51 changed files with 3054 additions and 2883 deletions
+426 -27
View File
@@ -65,21 +65,13 @@ body.sidebar-collapsed .nav-group + .nav-group {
border-top: 1px solid var(--border);
}
@media (min-width: 721px) and (max-width: 1279px) {
@media (min-width: 768px) and (max-width: 1279px) {
.header-actions {
grid-column: 3;
}
}
@media (min-width: 721px) and (max-width: 1023px) {
.module-nav {
width: 64px;
padding-right: 7px;
padding-left: 7px;
}
@media (min-width: 768px) and (max-width: 1023px) {
.nav-group:first-of-type {
margin-top: 10px;
}
@@ -93,7 +85,7 @@ body.sidebar-collapsed .nav-group + .nav-group {
}
}
@media (max-width: 720px) {
@media (max-width: 767px) {
.market-tape {
display: none;
}
@@ -139,6 +131,16 @@ body.sidebar-collapsed .nav-group + .nav-group {
.status-bar {
display: none;
}
body:is(
[data-active-view="screenerView"],
[data-active-view="screenerTrackingView"],
[data-active-view="mentorView"],
[data-active-view="heavenView"],
[data-active-view="reviewWorkspaceView"]
) .overview-strip {
display: none;
}
}
.market-breadth-panel .workspace-heading {
@@ -295,7 +297,7 @@ body.sidebar-collapsed .nav-group + .nav-group {
font-weight: 770;
}
@media (min-width: 721px) and (max-width: 1279px) {
@media (min-width: 768px) and (max-width: 1279px) {
body.sidebar-collapsed .module-nav {
width: 68px;
@@ -315,7 +317,7 @@ body.sidebar-collapsed .nav-group + .nav-group {
}
}
@media (max-width: 720px) {
@media (max-width: 767px) {
.header-command-group {
position: fixed;
@@ -441,7 +443,7 @@ body.sidebar-collapsed .module-tab {
padding: 0px;
}
@media (min-width: 721px) and (max-width: 1023px) {
@media (min-width: 768px) and (max-width: 1023px) {
.module-tab span {
display: none;
}
@@ -457,7 +459,7 @@ body.sidebar-collapsed .module-tab {
}
}
@media (min-width: 721px) and (max-width: 1279px) {
@media (min-width: 768px) and (max-width: 1279px) {
.module-tab span {
display: none;
}
@@ -473,7 +475,7 @@ body.sidebar-collapsed .module-tab {
}
}
@media (max-width: 720px) {
@media (max-width: 767px) {
.header-date-group .icon-button {
width: 30px;
@@ -535,7 +537,7 @@ body.sidebar-collapsed .module-tab {
border-right-color: var(--border);
}
@media (max-width: 720px) {
@media (max-width: 767px) {
.metric {
gap: 2px;
@@ -557,7 +559,7 @@ body.sidebar-collapsed .module-tab {
font-size: 11px;
}
@media (max-width: 720px) {
@media (max-width: 767px) {
.metric-label {
font-size: 10.5px;
}
@@ -695,7 +697,7 @@ body.sidebar-collapsed .app-main {
}
}
@media (max-width: 720px) {
@media (max-width: 767px) {
.module-nav .market-sub-tab {
display: none;
}
@@ -1015,7 +1017,7 @@ body.sidebar-collapsed .app-main {
}
}
@media (min-width: 721px) and (max-width: 1279px) {
@media (min-width: 768px) and (max-width: 1279px) {
.app-header {
padding-left: 8px;
@@ -1033,7 +1035,7 @@ body.sidebar-collapsed .app-main {
}
}
@media (max-width: 720px) {
@media (max-width: 767px) {
body.sidebar-collapsed {
display: block;
@@ -2055,7 +2057,7 @@ body.sidebar-collapsed .status-bar {
}
}
@media (max-width: 1023px) and (min-width: 721px) {
@media (max-width: 1023px) and (min-width: 768px) {
.module-nav {
width: 64px;
@@ -2089,7 +2091,7 @@ body.sidebar-collapsed .status-bar {
}
}
@media (max-width: 720px), (max-width: 1023px) and (max-height: 600px) {
@media (max-width: 767px), (max-width: 1023px) and (max-height: 600px) {
.redesigned-page-head .section-title-group {
width: 100%;
@@ -2101,7 +2103,7 @@ body.sidebar-collapsed .status-bar {
}
}
@media (min-width: 721px) {
@media (min-width: 768px) {
.app-main {
min-height: 0px;
@@ -2397,7 +2399,7 @@ body.sidebar-collapsed .status-bar {
background: transparent;
}
@media (min-width: 721px) {
@media (min-width: 768px) {
body:is([data-active-view="sentimentCycleView"], [data-active-view="yesterdayView"]) .app-main {
height: var(--workspace-height);
@@ -2449,7 +2451,7 @@ body.sidebar-collapsed .status-bar {
}
}
@media (max-width: 720px), (max-width: 1023px) and (max-height: 600px) {
@media (max-width: 767px), (max-width: 1023px) and (max-height: 600px) {
body.sidebar-collapsed {
display: block;
@@ -2808,7 +2810,7 @@ body.sidebar-collapsed .status-bar {
color: var(--text-primary);
}
@media (min-width: 721px) {
@media (min-width: 768px) {
.header-actions > .icon-button {
min-width: 31px;
}
@@ -2823,3 +2825,400 @@ body.sidebar-collapsed .status-bar {
align-items: center;
}
}
@media (min-width: 768px) and (max-width: 1023px) {
.main,
body.sidebar-collapsed .main {
width: calc(100% - var(--sidebar-compact-width));
min-width: 0;
margin-left: var(--sidebar-compact-width);
}
.module-nav,
body.sidebar-collapsed .module-nav {
width: var(--sidebar-compact-width);
padding-right: 7px;
padding-left: 7px;
}
.status-bar,
body.sidebar-collapsed .status-bar {
left: var(--sidebar-compact-width);
}
}
/* Canonical mobile shell. Page-specific responsive rules remain with each page. */
.mobile-page-context,
.mobile-command-shortcuts,
.mobile-command-backdrop {
display: none;
}
@media (max-width: 767px) {
.mobile-shell,
.mobile-shell.sidebar-collapsed {
display: block;
min-height: 100dvh;
padding-bottom: var(--mobile-content-bottom);
}
body.mobile-shell .main,
body.mobile-shell.sidebar-collapsed .main {
width: 100%;
min-width: 0;
min-height: 100dvh;
margin-left: 0;
}
body.mobile-shell .app-header {
position: sticky;
top: 0;
z-index: var(--mobile-layer-header);
width: 100%;
height: var(--mobile-header-height);
min-height: var(--mobile-header-height);
display: flex;
align-items: center;
gap: var(--space-8);
padding: var(--space-4) var(--mobile-shell-pad);
border-bottom: 1px solid var(--border);
background: var(--surface);
box-shadow: none;
}
body.mobile-shell.mobile-command-open .app-header {
z-index: var(--mobile-layer-menu);
}
body.mobile-shell .mobile-page-context {
min-width: 0;
display: flex;
flex: 1 1 auto;
flex-direction: column;
justify-content: center;
gap: 0;
}
body.mobile-shell .mobile-page-context span {
color: var(--text-tertiary);
font-size: var(--font-size-aux);
line-height: 1.2;
}
body.mobile-shell .mobile-page-context strong {
overflow: hidden;
color: var(--text-primary);
font-size: var(--font-size-body);
font-weight: var(--font-weight-bold);
line-height: 1.35;
text-overflow: ellipsis;
white-space: nowrap;
}
body.mobile-shell .market-tape,
body.mobile-shell .header-actions > :is(.global-search-button, .theme-toggle, .alert-button, .assistant-button) {
display: none;
}
body.mobile-shell .header-actions {
position: static;
width: auto;
min-width: 0;
display: flex;
flex: 0 0 auto;
align-items: center;
gap: var(--space-4);
margin: 0;
}
body.mobile-shell .header-date-group {
width: var(--mobile-date-width);
height: var(--mobile-touch-size);
min-height: var(--mobile-touch-size);
padding: 0 var(--space-4);
border: 1px solid var(--border);
border-radius: var(--radius-md);
background: var(--control-surface);
}
body.mobile-shell .header-date-group > .icon-button {
display: none;
}
body.mobile-shell .header-date-group .date-input {
width: 100%;
height: calc(var(--mobile-touch-size) - 2px);
min-width: 0;
padding: 0;
border: 0;
background: transparent;
color: var(--text-primary);
font-size: var(--font-size-caption);
font-weight: var(--font-weight-semibold);
}
body.mobile-shell .app-header .header-actions > .header-menu-button {
width: var(--mobile-touch-size);
min-width: var(--mobile-touch-size);
height: var(--mobile-touch-size);
min-height: var(--mobile-touch-size);
display: grid;
place-items: center;
padding: 0;
border: 1px solid var(--border);
border-radius: var(--radius-md);
background: var(--control-surface);
}
body.mobile-shell .header-command-group {
position: fixed;
inset: auto var(--mobile-shell-pad) var(--mobile-content-bottom);
z-index: var(--mobile-layer-menu);
width: auto;
max-height: calc(100dvh - var(--mobile-header-height) - var(--mobile-content-bottom) - var(--space-16));
display: none;
grid-template-columns: 1fr;
align-items: stretch;
gap: var(--space-8);
padding: var(--space-12);
overflow-y: auto;
border: 1px solid var(--border);
border-radius: var(--radius-lg);
background: var(--surface-overlay);
box-shadow: var(--shadow-float);
}
body.mobile-shell .header-command-group.is-open {
display: grid;
}
body.mobile-shell .mobile-command-shortcuts {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: var(--space-8);
padding-bottom: var(--space-8);
border-bottom: 1px solid var(--border-subtle);
}
body.mobile-shell .header-command-group .mobile-command-shortcuts > .mobile-command-shortcut {
min-width: 0;
min-height: var(--mobile-touch-size);
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
gap: var(--space-4);
padding: var(--space-8) var(--space-4);
border: 1px solid var(--border);
border-radius: var(--radius-md);
background: var(--surface-subtle);
color: var(--text-secondary);
font-size: var(--font-size-caption);
}
body.mobile-shell .header-command-group > .command-button,
body.mobile-shell .header-command-group .account-button {
width: 100%;
min-height: var(--mobile-touch-size);
justify-content: flex-start;
}
body.mobile-shell .header-command-group .account-dropdown {
position: static;
grid-column: 1 / -1;
width: 100%;
margin-top: var(--space-8);
}
body.mobile-shell .mobile-command-backdrop:not([hidden]) {
position: fixed;
inset: 0;
z-index: var(--mobile-layer-backdrop);
display: block;
width: 100%;
height: 100%;
border: 0;
background: var(--backdrop);
}
body.mobile-shell .module-nav,
body.mobile-shell.sidebar-collapsed .module-nav {
position: fixed;
inset: auto 0 0;
z-index: var(--mobile-layer-nav);
width: 100%;
height: calc(var(--mobile-nav-height) + var(--mobile-safe-bottom));
min-height: calc(var(--mobile-nav-height) + var(--mobile-safe-bottom));
max-height: calc(var(--mobile-nav-height) + var(--mobile-safe-bottom));
display: grid;
grid-template-columns: repeat(5, minmax(0, 1fr));
align-items: start;
gap: 0;
padding: var(--space-4) var(--space-4) max(var(--space-4), var(--mobile-safe-bottom));
overflow: hidden;
border: 0;
border-top: 1px solid var(--border);
background: var(--surface-overlay);
box-shadow: var(--elevation-raised);
}
body.mobile-shell .module-nav :is(.sidebar-brand, .nav-group-label, .market-sub-tab, .sidebar-collapse-button),
body.mobile-shell.sidebar-collapsed .module-nav :is(.sidebar-brand, .nav-group-label, .market-sub-tab, .sidebar-collapse-button) {
display: none;
}
body.mobile-shell .module-nav .nav-group,
body.mobile-shell.sidebar-collapsed .module-nav .nav-group {
display: contents;
margin: 0;
padding: 0;
border: 0;
}
body.mobile-shell .module-nav .module-tab,
body.mobile-shell.sidebar-collapsed .module-nav .module-tab {
display: none;
}
body.mobile-shell .module-nav .module-tab.mobile-primary-tab,
body.mobile-shell.sidebar-collapsed .module-nav .module-tab.mobile-primary-tab {
position: relative;
min-width: 0;
min-height: var(--mobile-tab-height);
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
gap: var(--space-4);
margin: 0;
padding: var(--space-4);
border: 0;
border-radius: var(--radius-md);
background: transparent;
color: var(--text-tertiary);
font-size: var(--font-size-aux);
font-weight: var(--font-weight-medium);
}
body.mobile-shell .module-nav .module-tab.mobile-primary-tab .lucide {
width: var(--mobile-nav-icon-size);
height: var(--mobile-nav-icon-size);
}
body.mobile-shell .module-nav .module-tab.mobile-primary-tab:is(.active, .mobile-active) {
background: var(--action-soft);
color: var(--action);
font-weight: var(--font-weight-semibold);
}
body.mobile-shell .module-nav .module-tab.mobile-primary-tab span,
body.mobile-shell.sidebar-collapsed .module-nav .module-tab.mobile-primary-tab span {
display: block;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
body.mobile-shell .module-nav .module-tab.mobile-primary-tab .nav-label-desktop {
display: none;
}
body.mobile-shell .module-nav .module-tab.mobile-primary-tab .nav-label-mobile {
display: block;
}
body.mobile-shell .app-main,
body.mobile-shell.sidebar-collapsed .app-main,
body.mobile-shell:is([data-active-view]) .app-main {
width: 100%;
height: auto;
min-height: calc(100dvh - var(--mobile-header-height) - var(--mobile-content-bottom));
display: block;
margin: 0;
padding: 0 var(--mobile-page-pad) var(--mobile-page-pad);
overflow: visible;
background: var(--surface-canvas);
}
body.mobile-shell .overview-strip,
body.mobile-shell .overview-strip[data-overview-expanded="true"] {
width: calc(100% + var(--mobile-page-pad) + var(--mobile-page-pad));
height: var(--mobile-tab-height);
min-height: var(--mobile-tab-height);
display: flex;
margin: 0 calc(var(--mobile-page-pad) * -1);
padding: 0 var(--mobile-page-pad);
overflow-x: auto;
overflow-y: hidden;
border-bottom: 1px solid var(--border);
background: var(--surface);
scrollbar-width: none;
}
body.mobile-shell .overview-strip::-webkit-scrollbar {
display: none;
}
body.mobile-shell .overview-strip .row {
width: max-content;
min-width: 100%;
display: flex;
align-items: center;
gap: var(--space-8);
padding: 0;
}
body.mobile-shell .overview-strip .sentiment-block,
body.mobile-shell .overview-strip .metric,
body.mobile-shell .overview-strip[data-overview-expanded="true"] .metric {
min-width: max-content;
min-height: var(--mobile-touch-size);
display: flex;
flex: 0 0 auto;
flex-direction: row;
align-items: center;
gap: var(--space-4);
padding: 0 var(--space-8);
border: 0;
background: transparent;
}
body.mobile-shell .overview-strip .metric:nth-of-type(n) {
display: flex;
}
body.mobile-shell .overview-strip .metric-wide,
body.mobile-shell .overview-toggle {
display: none;
}
body.mobile-shell .workspace-view,
body.mobile-shell .workspace-view.page:not(#heavenView),
body.mobile-shell:is([data-active-view]) .workspace-view.active-view {
width: 100%;
height: auto;
min-height: 0;
margin: 0;
padding: var(--mobile-page-pad) 0 0;
overflow: visible;
border: 0;
border-radius: 0;
background: transparent;
box-shadow: none;
}
body.mobile-shell .status-bar {
display: none;
}
}
@media (max-width: 359px) {
.header-date-group {
width: calc(var(--mobile-date-width) - var(--space-16));
}
.mobile-page-context span {
display: none;
}
}