diff --git a/config/architecture-inventory.json b/config/architecture-inventory.json index ccd1323..1ae0149 100644 --- a/config/architecture-inventory.json +++ b/config/architecture-inventory.json @@ -468,8 +468,8 @@ }, { "path": "frontend/shared/shell.css", - "bytes": 63733, - "lines": 3767 + "bytes": 64839, + "lines": 3794 }, { "path": "backend/features/heaven/engine.py", @@ -766,16 +766,16 @@ "bytes": 3316, "lines": 55 }, + { + "path": "frontend/pages/rotation/page.html", + "bytes": 3299, + "lines": 57 + }, { "path": "backend/features/market/insights_context.py", "bytes": 3175, "lines": 84 }, - { - "path": "frontend/pages/rotation/page.html", - "bytes": 3031, - "lines": 54 - }, { "path": "frontend/pages/market/bindings.js", "bytes": 2663, diff --git a/frontend/pages/rotation/foundation.css b/frontend/pages/rotation/foundation.css index 3dac085..a81d0a0 100644 --- a/frontend/pages/rotation/foundation.css +++ b/frontend/pages/rotation/foundation.css @@ -28,14 +28,6 @@ background: var(--selected); } -.rotation-sector-chip.selected { - border-color: var(--action); - - background: var(--action-soft); - - color: var(--action-hover); -} - .rotation-sector-chip > span { color: var(--text-secondary); @@ -158,8 +150,6 @@ cursor: pointer; border-bottom: 1px dashed var(--border); - - background: color-mix(in srgb, var(--accent) calc(4% + var(--rotation-heat) * 46%), transparent); } .redesigned-rotation-view { @@ -397,8 +387,12 @@ display: flex; + flex-wrap: wrap; + align-items: center; + row-gap: 4px; + gap: 14px; padding: 8px 14px; @@ -434,18 +428,32 @@ border-radius: 2px; } -#rotationView .rotation-swatch.strong { - background: var(--accent); +#rotationView .rotation-swatch.tier-1 { + background: var(--rotation-tier1-bar); } -#rotationView .rotation-swatch.warm { - background: var(--accent-soft); +#rotationView .rotation-swatch.tier-2 { + background: var(--rotation-tier2-bar); } -#rotationView .rotation-swatch.mild { - background: var(--surface-muted); +#rotationView .rotation-swatch.tier-3 { + background: var(--rotation-tier3-bar); +} - border: 1px solid var(--border); +#rotationView .rotation-swatch.tier-4 { + background: var(--rotation-tier4-bar); +} + +#rotationView .rotation-swatch.tier-5 { + background: var(--rotation-tier5-bar); +} + +#rotationView .rotation-legend-note { + margin-left: auto; + + color: var(--r2-faint); + + white-space: nowrap; } #rotationView .rotation-tracker { @@ -818,10 +826,59 @@ #rotationView .rotation-history.tracking .rotation-sector-chip.selected { opacity: 1; +} - border-color: var(--r2-blue); +/* 追踪态:命中被追踪板块名、但不是当次点击的那一格 —— 保持档位底色,2px 同档位描边(含 80% 不透明度), + 连点标记不做动画,仅描边淡入 200ms */ +#rotationView .rotation-sector-chip.selected:not(.current-cell) { + border-width: 2px; - box-shadow: inset 3px 0 0 var(--r2-blue), 0 0 0 1px var(--accent-soft); + border-color: color-mix(in srgb, var(--tier-bar) 80%, transparent); + + transition: border-color 200ms var(--ease-out); +} + +/* 选中态:仅当次点击的日期+板块这一格 —— 同档位实色渐变 + 2px 亮描边 + 克制光晕,全页最多一张 */ +#rotationView .rotation-sector-chip.selected.current-cell { + border-width: 2px; + + border-color: var(--tier-text); + + background: linear-gradient(135deg, var(--tier-fill-start), var(--tier-fill-end)); + + box-shadow: 0 0 16px color-mix(in srgb, var(--tier-bar) var(--rotation-tier-glow-alpha), transparent); + + color: var(--text-inverse); + + transition: background 160ms var(--ease-out), border-color 160ms var(--ease-out), box-shadow 160ms var(--ease-out); +} + +#rotationView .rotation-sector-chip.selected.current-cell strong, +#rotationView .rotation-sector-chip.selected.current-cell small, +#rotationView .rotation-sector-chip.selected.current-cell small b { + color: var(--text-inverse); +} + +#rotationView .rotation-track-dot { + width: 6px; + + height: 6px; + + position: absolute; + + top: 6px; + + right: 6px; + + border-radius: 50%; + + background: var(--tier-bar); +} + +@media (prefers-reduced-motion: reduce) { + #rotationView .rotation-sector-chip.selected.current-cell { + box-shadow: none; + } } .rotation-cell-tooltip { @@ -1050,40 +1107,79 @@ } } -#rotationView .rotation-sector-chip.heat-mild { - border-color: var(--border); - - background: var(--surface-muted); - - box-shadow: none; +/* HEL-524: 五档强度色 —— 同一强度值在 9 个日期列中颜色完全一致,仅代表强度档位,与涨跌无关。 + 普通卡只用低透明着色,页面/主容器/日期分栏的层级由 HEL-522 的明度骨架承担,这里不重复叠加。 */ +#rotationView .rotation-sector-chip.heat-tier-1 { + --tier-bar: var(--rotation-tier1-bar); + --tier-bg: var(--rotation-tier1-bg); + --tier-border: var(--rotation-tier1-border); + --tier-text: var(--rotation-tier1-text); + --tier-fill-start: var(--rotation-tier1-fill-start); + --tier-fill-end: var(--rotation-tier1-fill-end); } -#rotationView .rotation-sector-chip.heat-strong { - border-color: var(--action-line); - - background: var(--accent-soft); - - box-shadow: none; +#rotationView .rotation-sector-chip.heat-tier-2 { + --tier-bar: var(--rotation-tier2-bar); + --tier-bg: var(--rotation-tier2-bg); + --tier-border: var(--rotation-tier2-border); + --tier-text: var(--rotation-tier2-text); + --tier-fill-start: var(--rotation-tier2-fill-start); + --tier-fill-end: var(--rotation-tier2-fill-end); } -#rotationView .rotation-sector-chip.heat-warm { - border-color: var(--action-line); - - background: color-mix(in srgb, var(--accent) 12%, var(--surface)); - - box-shadow: none; +#rotationView .rotation-sector-chip.heat-tier-3 { + --tier-bar: var(--rotation-tier3-bar); + --tier-bg: var(--rotation-tier3-bg); + --tier-border: var(--rotation-tier3-border); + --tier-text: var(--rotation-tier3-text); + --tier-fill-start: var(--rotation-tier3-fill-start); + --tier-fill-end: var(--rotation-tier3-fill-end); } -#rotationView .rotation-sector-chip:hover { +#rotationView .rotation-sector-chip.heat-tier-4 { + --tier-bar: var(--rotation-tier4-bar); + --tier-bg: var(--rotation-tier4-bg); + --tier-border: var(--rotation-tier4-border); + --tier-text: var(--rotation-tier4-text); + --tier-fill-start: var(--rotation-tier4-fill-start); + --tier-fill-end: var(--rotation-tier4-fill-end); +} + +#rotationView .rotation-sector-chip.heat-tier-5 { + --tier-bar: var(--rotation-tier5-bar); + --tier-bg: var(--rotation-tier5-bg); + --tier-border: var(--rotation-tier5-border); + --tier-text: var(--rotation-tier5-text); + --tier-fill-start: var(--rotation-tier5-fill-start); + --tier-fill-end: var(--rotation-tier5-fill-end); +} + +#rotationView .rotation-sector-chip[class*="heat-tier-"] { + border-color: var(--tier-border); + + background: var(--tier-bg); + + box-shadow: inset 4px 0 0 0 var(--tier-bar); + + transition: transform 280ms cubic-bezier(0.22, 1, 0.36, 1), background-color 120ms var(--ease-out), border-color 120ms var(--ease-out), box-shadow 120ms var(--ease-out), filter 240ms, opacity 220ms; +} + +#rotationView .rotation-sector-chip[class*="heat-tier-"] .rotation-strength { + color: var(--tier-text); +} + +/* 悬停态:卡底与描边 alpha 适度提升,120ms ease-out,可打断,不打乱档位色含义; + 已经处于选中/追踪态的卡片保持其自身样式,不叠加普通悬停处理 */ +#rotationView .rotation-sector-chip[class*="heat-tier-"]:hover:not(.selected) { z-index: 6; - border-color: var(--accent); + background: color-mix(in srgb, var(--tier-bar) 8%, var(--tier-bg) 92%); + + border-color: color-mix(in srgb, var(--tier-bar) 26%, var(--tier-border) 74%); filter: saturate(1.06); transform: translate3d(2px, -2px, 0px) scale(1.015); - - box-shadow: none; } #rotationView .rotation-table { @@ -1207,30 +1303,6 @@ box-shadow: var(--control-shadow); } -:root[data-theme="dark"] #rotationView .rotation-sector-chip.heat-strong { - border-color: var(--blue-line); - - background: var(--heat-strong-bg); - - color: var(--heat-strong-ink); -} - -:root[data-theme="dark"] #rotationView .rotation-sector-chip.heat-warm { - border-color: var(--border-strong); - - background: var(--heat-warm-bg); - - color: var(--heat-warm-ink); -} - -:root[data-theme="dark"] #rotationView .rotation-sector-chip.heat-mild { - border-color: var(--border); - - background: var(--heat-mild-bg); - - color: var(--heat-mild-ink); -} - :root[data-theme="dark"] #rotationView :is(.rotation-rank, .rotation-table thead th, .trend-flat) { border-color: var(--border); @@ -1243,20 +1315,6 @@ background: var(--action-soft); } -:root[data-theme="dark"] #rotationView :is(.rotation-swatch.warm) { - border-color: var(--blue-line); - - background: var(--action-soft); - - color: var(--action); -} - -:root[data-theme="dark"] #rotationView :is(.rotation-swatch.mild) { - border-color: var(--border); - - background: var(--surface-muted); -} - @media (max-width: 767px) { #rotationView :is(.rotation-table-frame, .rotation-detail-card) { max-height: none; diff --git a/frontend/pages/rotation/page.html b/frontend/pages/rotation/page.html index 90b14fa..95cf0ec 100644 --- a/frontend/pages/rotation/page.html +++ b/frontend/pages/rotation/page.html @@ -22,9 +22,12 @@ 每日 Top 12 热点