feat: expand market discovery and auction workflow

This commit is contained in:
leefer
2026-07-24 17:32:28 +08:00
parent fde2728a86
commit 2d2a3aa5e5
46 changed files with 32992 additions and 168 deletions
+466
View File
@@ -3198,6 +3198,25 @@ dialog::backdrop {
font-size: 12px;
}
.chart-heading-controls {
display: flex;
align-items: center;
justify-content: flex-end;
gap: 10px;
min-width: 0;
}
.chart-mode-toggle.segmented {
height: 28px;
flex: 0 0 auto;
}
.chart-mode-toggle .segment {
min-width: 44px;
padding: 0 9px;
font-size: 12px;
}
.price-chart {
width: 100%;
height: 300px;
@@ -3817,6 +3836,440 @@ dialog::backdrop {
}
}
/* Auction, theme library and popularity views */
.auction-phase-notice {
min-height: 58px;
display: grid;
grid-template-columns: 10px minmax(0, 1fr) auto;
align-items: center;
gap: 11px;
padding: 9px 14px;
border-bottom: 1px solid var(--line);
background: #f7fafb;
}
.auction-phase-marker {
width: 9px;
height: 9px;
border-radius: 50%;
background: #83909a;
box-shadow: 0 0 0 4px rgba(131, 144, 154, 0.12);
}
.auction-phase-notice > div { min-width: 0; display: grid; gap: 2px; }
.auction-phase-notice strong { color: var(--text); font-size: 13px; }
.auction-phase-notice span:not(.auction-phase-marker) { color: var(--text-muted); font-size: 12px; line-height: 1.5; }
.auction-phase-notice time { color: var(--text-secondary); font-size: 12px; font-variant-numeric: tabular-nums; white-space: nowrap; }
.auction-phase-notice[data-phase="observing"] { background: #fffaf0; }
.auction-phase-notice[data-phase="observing"] .auction-phase-marker { background: #c58b1c; box-shadow: 0 0 0 4px rgba(197, 139, 28, 0.14); }
.auction-phase-notice[data-phase="selection"] { background: #fff4f1; }
.auction-phase-notice[data-phase="selection"] .auction-phase-marker { background: var(--market-up); box-shadow: 0 0 0 4px rgba(198, 66, 54, 0.14); }
.auction-phase-notice[data-phase="selection"] time { color: var(--market-up); font-weight: 700; }
.auction-phase-notice[data-phase="finalized"] { background: #f2f7f5; }
.auction-phase-notice[data-phase="finalized"] .auction-phase-marker { background: #3f7661; box-shadow: 0 0 0 4px rgba(63, 118, 97, 0.13); }
.market-feature-summary {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
border-bottom: 1px solid var(--line);
background: var(--surface);
}
.market-feature-summary > div {
min-height: 70px;
display: flex;
flex-direction: column;
justify-content: center;
gap: 5px;
padding: 10px 14px;
border-right: 1px solid var(--line);
}
.market-feature-summary > div:last-child { border-right: 0; }
.market-feature-summary span { color: var(--text-muted); font-size: 12px; }
.market-feature-summary strong { font-size: 18px; font-variant-numeric: tabular-nums; }
.market-feature-filterbar {
min-height: 52px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 8px 14px;
border-bottom: 1px solid var(--line);
background: var(--surface-muted);
}
.market-feature-table-frame {
max-height: calc(100vh - 310px);
border-right: 0;
}
#auctionView .market-feature-table-frame { max-height: none; }
.auction-insight-grid {
display: grid;
grid-template-columns: minmax(360px, 1.25fr) minmax(300px, 1fr) minmax(230px, .7fr);
border-bottom: 1px solid var(--line);
background: var(--surface);
}
.auction-insight-section {
min-width: 0;
padding: 14px;
border-right: 1px solid var(--line);
}
.auction-insight-section:last-child { border-right: 0; }
.auction-insight-heading,
.auction-candidate-heading {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
}
.auction-insight-heading { min-height: 42px; margin-bottom: 10px; }
.auction-insight-heading h3,
.auction-candidate-heading h3 { margin: 2px 0 0; font-size: 15px; }
.auction-amount-value { font-size: 20px; font-variant-numeric: tabular-nums; }
.auction-theme-list { min-height: 162px; display: grid; align-content: start; }
.auction-theme-row {
min-height: 40px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 6px 0;
border-bottom: 1px solid var(--line-soft);
}
.auction-theme-row > div:first-child { min-width: 0; display: grid; gap: 2px; }
.auction-theme-row > div:first-child strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; }
.auction-theme-row > div:first-child span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text-muted); font-size: 11px; }
.auction-theme-result { flex: 0 0 auto; display: flex; align-items: center; gap: 8px; }
.auction-theme-result small { width: 72px; color: var(--text-muted); font-size: 11px; text-align: right; font-variant-numeric: tabular-nums; }
.auction-theme-status,
.auction-expectation,
.disabled-status {
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 24px;
padding: 2px 8px;
border: 1px solid var(--line);
border-radius: 4px;
font-size: 12px;
font-weight: 700;
white-space: nowrap;
}
.auction-theme-status.strong,
.auction-expectation.above { border-color: #efb7ad; background: var(--coral-soft); color: var(--market-up); }
.auction-theme-status.steady,
.auction-expectation.matched { border-color: #b8ccdc; background: var(--blue-soft); color: #315f7b; }
.auction-theme-status.mixed { border-color: #e4ca88; background: var(--amber-soft); color: #765314; }
.auction-theme-status.weak,
.auction-expectation.below { border-color: #b9d7cb; background: var(--green-soft); color: var(--market-down); }
.auction-new-theme-line { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 10px; min-height: 36px; padding-top: 9px; }
.auction-new-theme-line > strong { color: var(--text-secondary); font-size: 12px; }
.auction-theme-chips { min-width: 0; display: flex; flex-wrap: wrap; gap: 5px; }
.auction-theme-chips > span { padding: 3px 7px; border-radius: 3px; background: var(--surface-muted); color: var(--text-secondary); font-size: 11px; }
.auction-theme-chips > span strong { color: var(--market-up); font-variant-numeric: tabular-nums; }
.auction-theme-chips > small,
.auction-inline-empty { color: var(--text-muted); font-size: 12px; }
.auction-inline-empty { min-height: 80px; display: grid; place-items: center; }
.auction-amount-trend {
height: 148px;
display: flex;
align-items: stretch;
gap: 5px;
padding: 8px 2px 0;
border-bottom: 1px solid var(--line);
}
.auction-amount-day { min-width: 0; flex: 1; display: grid; grid-template-rows: minmax(0, 1fr) 20px; align-items: end; gap: 4px; }
.auction-amount-day > span { width: 100%; min-height: 8px; border-radius: 2px 2px 0 0; background: #a9bdc8; transition: opacity var(--motion-fast) ease; }
.auction-amount-day.current > span { background: var(--market-up); }
.auction-amount-day:hover > span { opacity: .72; }
.auction-amount-day small { overflow: hidden; color: var(--text-muted); font-size: 10px; text-align: center; white-space: nowrap; font-variant-numeric: tabular-nums; }
.auction-amount-compare { min-height: 34px; display: flex; align-items: end; gap: 18px; padding-top: 7px; }
.auction-amount-compare span { color: var(--text-muted); font-size: 11px; }
.auction-amount-compare strong { margin-left: 5px; color: var(--text); font-size: 12px; font-variant-numeric: tabular-nums; }
.auction-news-unavailable { background: var(--surface-muted); }
.auction-news-unavailable p { min-height: 74px; margin: 22px 0 18px; color: var(--text-muted); font-size: 13px; line-height: 1.7; }
.auction-news-unavailable .button { width: 100%; justify-content: center; }
.disabled-status { border-color: var(--line); background: var(--surface); color: var(--text-muted); }
.auction-special-section,
.auction-watchlist-section {
border-bottom: 1px solid var(--line);
background: var(--surface);
}
.auction-special-section > summary {
min-height: 48px;
display: grid;
grid-template-columns: auto auto minmax(0, 1fr) auto;
align-items: center;
gap: 10px;
padding: 7px 14px;
cursor: pointer;
list-style: none;
transition: background-color var(--motion-fast) ease;
}
.auction-special-section > summary::-webkit-details-marker { display: none; }
.auction-special-section > summary:hover { background: var(--surface-muted); }
.auction-special-section > summary > span { display: inline-flex; align-items: center; gap: 7px; font-size: 14px; font-weight: 700; }
.auction-special-section > summary > span .lucide { width: 16px; height: 16px; color: #8a671d; }
.auction-special-section > summary > strong { min-width: 42px; color: var(--market-up); font-size: 12px; font-variant-numeric: tabular-nums; }
.auction-special-section > summary > small { color: var(--text-muted); font-size: 11px; }
.auction-special-section > summary::after { content: ""; justify-self: end; width: 7px; height: 7px; border-right: 1.5px solid var(--text-muted); border-bottom: 1.5px solid var(--text-muted); transform: rotate(45deg); transition: transform var(--motion-fast) ease; }
.auction-special-section[open] > summary::after { transform: rotate(225deg); }
.auction-list-heading {
min-height: 52px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 8px 14px;
border-bottom: 1px solid var(--line);
background: var(--surface-muted);
}
.auction-list-heading h3 { margin: 2px 0 0; font-size: 15px; }
.auction-compact-frame { max-height: 300px; border-right: 0; }
.auction-compact-table { min-width: 920px; }
.auction-one-price-tag { display: inline-flex; min-height: 24px; align-items: center; padding: 2px 8px; border: 1px solid #e4ca88; border-radius: 4px; background: var(--amber-soft); color: #765314; font-size: 12px; font-weight: 700; }
.auction-score { color: #315f7b; font-weight: 750; font-variant-numeric: tabular-nums; }
.auction-core-tags { display: inline-flex; flex-wrap: wrap; gap: 4px; }
.auction-core-tags b { padding: 2px 5px; border: 1px solid #ddc16d; border-radius: 3px; background: var(--amber-soft); color: #715113; font-size: 10px; font-weight: 700; white-space: nowrap; }
.table-muted { color: var(--text-muted); font-size: 12px; }
.auction-candidate-heading { min-height: 58px; padding: 8px 14px 0; background: var(--surface-muted); }
.auction-candidate-heading .search-field input { width: min(280px, 32vw); }
.auction-expectation-segments .segment { gap: 6px; }
.auction-expectation-segments .segment strong { min-width: 20px; color: inherit; font-size: 11px; font-variant-numeric: tabular-nums; }
.auction-source { max-width: 180px; color: var(--text-secondary); font-size: 12px; }
.auction-reason { min-width: 310px; max-width: 420px; color: var(--text-secondary); font-size: 12px; line-height: 1.5; }
.auction-workspace-layout {
min-height: 620px;
display: grid;
grid-template-columns: minmax(0, 1fr) 290px;
border-bottom: 1px solid var(--line);
background: var(--surface);
}
.auction-main-workspace { min-width: 0; }
.auction-candidate-heading {
min-height: 58px;
padding: 9px 14px;
border-bottom: 1px solid var(--line);
background: var(--surface);
}
.auction-candidate-heading .search-field input { width: min(260px, 28vw); }
.auction-dataset-bar {
padding: 8px 14px;
border-bottom: 1px solid var(--line);
background: var(--surface-muted);
}
.auction-dataset-segments { width: 100%; }
.auction-dataset-segments .segment { flex: 1 1 0; gap: 6px; }
.auction-dataset-segments strong,
.auction-expectation-segments strong { color: inherit; font-size: 11px; font-variant-numeric: tabular-nums; }
.auction-expectation-filterbar {
min-height: 46px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 7px 14px;
border-bottom: 1px solid var(--line);
background: #fafbfc;
}
.auction-expectation-filterbar > span { color: var(--text-muted); font-size: 11px; }
.auction-expectation-filterbar[hidden] { display: none; }
.auction-unified-table-frame {
min-height: 470px;
max-height: calc(100vh - 354px);
border-right: 0;
border-bottom: 0;
}
.auction-table { min-width: 740px; }
.auction-stock-cell { display: grid; grid-template-columns: 22px minmax(0, 1fr); align-items: center; gap: 5px; min-width: 105px; }
.auction-stock-cell > b { color: var(--text-muted); font-size: 10px; font-weight: 500; text-align: center; }
.auction-stock-cell > span,
.auction-context-cell,
.auction-volume-cell { min-width: 0; display: grid; gap: 2px; }
.auction-stock-cell strong,
.auction-context-cell strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; }
.auction-stock-cell small,
.auction-context-cell small,
.auction-volume-cell small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text-muted); font-size: 10px; font-weight: 400; }
.auction-context-cell { max-width: 155px; }
.auction-volume-cell { min-width: 78px; }
.auction-volume-cell strong { font-size: 11px; font-weight: 600; white-space: nowrap; }
.auction-evidence-rail {
min-width: 0;
border-left: 1px solid var(--line);
background: var(--surface-muted);
}
.auction-evidence-section { padding: 12px 13px; border-bottom: 1px solid var(--line); background: var(--surface); }
.auction-evidence-section .auction-insight-heading { min-height: 38px; margin-bottom: 7px; }
.auction-evidence-section .auction-theme-list { min-height: 0; }
.auction-evidence-section .auction-theme-row { min-height: 37px; }
.auction-evidence-section .auction-theme-result { display: grid; justify-items: end; gap: 2px; }
.auction-evidence-section .auction-theme-result small { width: auto; }
.auction-evidence-section .auction-new-theme-line { grid-template-columns: 1fr; gap: 5px; }
.auction-evidence-section .auction-amount-trend { height: 128px; }
.auction-news-entry {
min-height: 72px;
display: grid;
grid-template-columns: 18px minmax(0, 1fr) auto;
align-items: center;
gap: 9px;
padding: 11px 13px;
color: var(--text-muted);
}
.auction-news-entry > .lucide { width: 17px; height: 17px; }
.auction-news-entry h3 { margin: 0 0 2px; color: var(--text-secondary); font-size: 12px; }
.auction-news-entry p { margin: 0; font-size: 10px; line-height: 1.45; }
.auction-signal,
.popularity-source-tag {
display: inline-flex;
align-items: center;
min-height: 23px;
padding: 2px 7px;
border: 1px solid var(--line);
border-radius: 4px;
background: var(--surface-muted);
color: var(--text-secondary);
font-size: 12px;
font-weight: 650;
}
.auction-signal.up { border-color: #efb7ad; background: var(--coral-soft); color: var(--market-up); }
.auction-signal.down { border-color: #b9d7cb; background: var(--green-soft); color: var(--market-down); }
.popularity-source-tag.dual { border-color: #e6c773; background: var(--amber-soft); color: #765314; }
.popularity-concepts { max-width: 320px; overflow: hidden; text-overflow: ellipsis; }
.theme-library-layout {
display: grid;
grid-template-columns: minmax(250px, 310px) minmax(0, 1fr);
min-height: 650px;
}
.theme-directory-panel {
min-width: 0;
border-right: 1px solid var(--line);
background: #f7f9fa;
}
.theme-directory-heading,
.theme-members-heading {
min-height: 44px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 8px 12px;
border-bottom: 1px solid var(--line);
}
.theme-directory-heading span,
.theme-members-heading span { color: var(--text-muted); font-size: 12px; }
.theme-members-heading h3 { margin: 0; font-size: 15px; }
.theme-directory {
max-height: calc(100vh - 292px);
overflow-y: auto;
overscroll-behavior: contain;
}
.theme-directory-item {
width: 100%;
min-height: 58px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
padding: 8px 12px;
border: 0;
border-bottom: 1px solid var(--line);
background: transparent;
color: var(--text);
cursor: pointer;
text-align: left;
transition: background-color var(--motion-fast) ease, box-shadow var(--motion-fast) ease;
}
.theme-directory-item:hover { background: #edf8fc; }
.theme-directory-item.active { background: var(--blue-soft); box-shadow: inset 3px 0 var(--blue); }
.theme-directory-item > span { min-width: 0; display: grid; gap: 3px; }
.theme-directory-item strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; }
.theme-directory-item small { color: var(--text-muted); font-size: 11px; }
.theme-directory-item b { flex: 0 0 auto; font-size: 13px; font-variant-numeric: tabular-nums; }
.theme-detail-panel { min-width: 0; background: var(--surface); }
.theme-detail-empty { min-height: 520px; display: grid; place-items: center; }
.theme-detail-heading { min-height: 76px; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 12px 16px; border-bottom: 1px solid var(--line); }
.theme-detail-heading h3 { margin: 3px 0 1px; font-size: 20px; }
.theme-detail-heading small { color: var(--text-muted); }
.theme-detail-heading > strong { font-size: 24px; font-variant-numeric: tabular-nums; }
.theme-detail-metrics { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-bottom: 1px solid var(--line); }
.theme-detail-metrics > div { display: grid; gap: 4px; padding: 9px 14px; border-right: 1px solid var(--line); }
.theme-detail-metrics > div:last-child { border-right: 0; }
.theme-detail-metrics span { color: var(--text-muted); font-size: 11px; }
.theme-detail-metrics strong { font-size: 14px; font-variant-numeric: tabular-nums; }
.theme-chart-shell { height: 300px; padding: 8px 12px; border-bottom: 1px solid var(--line); }
.theme-chart-shell canvas { width: 100%; height: 100%; display: block; }
.theme-members-frame { max-height: 330px; border-right: 0; }
@media (max-width: 900px) {
.theme-library-layout { grid-template-columns: 230px minmax(0, 1fr); }
.auction-workspace-layout { grid-template-columns: 1fr; }
.auction-evidence-rail { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-top: 1px solid var(--line); border-left: 0; }
.auction-news-entry { grid-column: 1 / -1; border-top: 1px solid var(--line); }
.market-feature-summary { grid-template-columns: repeat(4, minmax(105px, 1fr)); }
.market-feature-filterbar { align-items: stretch; flex-direction: column; }
.market-feature-filterbar .search-field input { width: 100%; }
}
@media (max-width: 720px) {
.auction-phase-notice { grid-template-columns: 10px minmax(0, 1fr); }
.auction-phase-notice time { grid-column: 2; }
.market-feature-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.market-feature-summary > div { min-height: 60px; }
.auction-candidate-heading { align-items: stretch; flex-direction: column; padding-bottom: 8px; }
.auction-candidate-heading .search-field input { width: 100%; }
.auction-dataset-bar { overflow-x: auto; }
.auction-dataset-segments { min-width: 480px; }
.auction-expectation-filterbar { align-items: stretch; flex-direction: column; }
.auction-evidence-rail { display: block; }
.auction-unified-table-frame { min-height: 360px; max-height: none; }
.market-feature-segments { width: 100%; height: auto; overflow-x: auto; }
.market-feature-segments .segment { min-height: 38px; flex: 1 0 auto; }
.market-feature-table-frame { max-height: none; }
.theme-library-layout { display: block; min-height: 0; }
.theme-directory-panel { border-right: 0; border-bottom: 1px solid var(--line); }
.theme-directory { max-height: 280px; }
.theme-detail-empty { min-height: 260px; }
.theme-detail-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.theme-detail-metrics > div:nth-child(2) { border-right: 0; }
.theme-chart-shell { height: 260px; }
.theme-members-frame { max-height: none; }
}
/* Phase 1 application shell */
html {
background: var(--canvas);
@@ -9785,6 +10238,19 @@ body.sidebar-collapsed .sidebar-collapse-button .lucide {
width: 100%;
}
.chart-mode-toggle.segmented {
width: auto;
}
.detail-section-heading {
align-items: flex-start;
gap: 8px;
}
.chart-heading-controls {
flex-wrap: wrap;
}
.segment {
min-width: 0;
flex: 1;