feat: integrate iFinD data and refine intelligent workspaces

This commit is contained in:
leefer
2026-07-28 16:38:56 +08:00
parent 6adeb54458
commit f4b2d7152a
22 changed files with 6481 additions and 389 deletions
+131 -3
View File
@@ -29,6 +29,10 @@
--col-text:220px;
--right-rail-wide:372px;
--pool-table-max-height:calc(var(--content-height) - var(--topbar-height) - var(--page-pad-y) - var(--page-pad-y) - var(--card-gap));
--sentiment-history-max-height:510px;
--sentiment-chart-compact-height:clamp(180px,20dvh,250px);
--sentiment-chart-compact-canvas-height:calc(var(--sentiment-chart-compact-height) - 18px);
--sentiment-history-min-height:220px;
--primary-share:1.45fr;
--secondary-share:.75fr;
--mobile-nav-height:58px;
@@ -40,6 +44,7 @@
--space-4:4px;
--font-aux:10.5px;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
@@ -689,10 +694,28 @@ tbody tr.clickable{cursor:pointer}
}
#auctionView .auction-tabs-v2{padding-right:0}
/* Match the temperature header with the right-aligned range values below it. */
#sentimentView .sentiment-stage-guide-head > span:nth-child(3){
padding-right:12px;
/* Keep the stage range label and its current value on one left-aligned axis. */
#sentimentCycleView .sentiment-stage-guide-head > span:nth-child(3),
#sentimentCycleView .sentiment-stage-guide-grid article .stage-range{
text-align:left;
}
/* Sentiment history: numeric columns align right; categorical columns align centrally. */
#sentimentCycleView .sentiment-history-table tbody td.number{
text-align:right;
font-variant-numeric:tabular-nums;
}
/* The history table owns its scrolling; the fixed status bar must not cover its final row. */
#sentimentCycleView .sentiment-history-frame{
max-height:var(--sentiment-history-max-height);
overflow:auto;
}
#sentimentCycleView .sentiment-history-table .sentiment-history-columns th:nth-child(3),
#sentimentCycleView .sentiment-history-table .sentiment-history-columns th:nth-child(4),
#sentimentCycleView .sentiment-history-table tbody td:nth-child(3),
#sentimentCycleView .sentiment-history-table tbody td:nth-child(4){
text-align:center;
}
/* Strategy cards select on direct click; the condition dialog stays viewport-centered. */
@@ -746,6 +769,54 @@ tbody tr.clickable{cursor:pointer}
:is(#limitPool,#brokenView,#downView,#yesterdayView) .tbl-wrap{max-height:var(--pool-table-max-height);overflow:auto}
@media (min-width:721px){
body:is(
[data-active-view="sentimentCycleView"],
[data-active-view="yesterdayView"]
) .app-main{
height:var(--workspace-height);
min-height:0;
display:flex;
flex-direction:column;
overflow:hidden;
}
body:is(
[data-active-view="sentimentCycleView"],
[data-active-view="yesterdayView"]
) .overview-strip{flex:0 0 auto}
#sentimentCycleView.active-view,
#yesterdayView.active-view{
min-height:0;
flex:1 1 auto;
display:flex;
flex-direction:column;
overflow:hidden;
}
#sentimentCycleView > :is(.sentiment-cycle-toolbar,#sentimentHistoryNotice,.sentiment-cycle-analysis,.sentiment-detail-toolbar),
#yesterdayView > .yesterday-page-head,
#yesterdayView .yesterday-result-summary{flex:0 0 auto}
#sentimentCycleView .sentiment-history-frame{
min-height:var(--sentiment-history-min-height);
max-height:none;
flex:1 1 auto;
}
#yesterdayView .yesterday-table-card{
min-height:0;
flex:1 1 auto;
display:flex;
flex-direction:column;
}
#yesterdayView .yesterday-table-scroll{
min-height:0;
max-height:none;
flex:1 1 auto;
}
body:is(
[data-active-view="auctionView"],
[data-active-view="themeLibraryView"],
@@ -845,7 +916,64 @@ tbody tr.clickable{cursor:pointer}
#mentorView .mentor-messages{min-height:0;overflow:auto}
}
@media (min-width:721px) and (max-height:1100px){
#sentimentCycleView .sentiment-chart-shell{height:var(--sentiment-chart-compact-height)}
#sentimentCycleView .sentiment-chart-shell canvas{height:var(--sentiment-chart-compact-canvas-height)}
#sentimentCycleView .sentiment-phase-block{gap:12px;padding:10px 12px}
#sentimentCycleView .sentiment-current-phase-badge{padding:8px 12px}
#sentimentCycleView .sentiment-phase-advice{margin-top:4px;padding:4px 8px;line-height:1.4}
#sentimentCycleView .sentiment-feedback-strip > span{padding:4px 10px}
#sentimentCycleView .sentiment-component-list{padding:4px 16px 8px}
#sentimentCycleView .sentiment-component-item{padding:4px 0}
#sentimentCycleView .sentiment-component-item small{display:none}
}
/* Full-page workspaces: at desktop sizes the page, rather than an inner card,
owns vertical scrolling. This keeps dense 1080p screens usable without
shrinking the primary content. */
@media (min-width:721px){
:root body:is(
[data-active-view="sentimentCycleView"],
[data-active-view="rotationView"],
[data-active-view="screenerView"]
) .app-main{
height:var(--workspace-height);
min-height:0;
display:block;
overflow-x:hidden;
overflow-y:auto;
}
:root #sentimentCycleView.active-view,
:root #rotationView.active-view,
:root #screenerView.active-view{
height:auto;
min-height:0;
display:block;
overflow:visible;
}
:root #sentimentCycleView .sentiment-history-frame,
:root #rotationView .rotation-history,
:root #rotationView .rotation-table-frame,
:root #screenerView .screener-result-frame{
max-height:none;
overflow:visible;
}
:root #rotationView .rotation-trajectory-card,
:root #rotationView .rotation-detail-card{
min-height:0;
margin-top:var(--card-gap);
display:block;
overflow:visible;
}
:root #rotationView .rotation-page-head{margin-bottom:0}
}
@media (max-width:720px), (max-width:1023px) and (max-height:600px){
:root{--sentiment-history-max-height:min(480px,calc(100dvh - 210px))}
html,body{width:100%;min-width:var(--mobile-min-width)}
body,body.sidebar-collapsed{display:block;padding-bottom:var(--mobile-nav-height)}
.main{width:100%;min-width:0;margin-left:0}