Files
xiaobaifupan/app/frontend/pages/ladder/foundation.css
T

1173 lines
16 KiB
CSS

/* Canonical CSS owner: ladder. Historical layers consolidated 2026-08-02. */
.ladder-mini {
display: grid;
gap: 8px;
}
.ladder-stock {
display: grid;
grid-template-columns: minmax(0px, 1fr) auto;
gap: 8px;
padding: 9px 4px;
border-bottom: 1px solid rgb(232, 236, 239);
cursor: pointer;
}
.ladder-stock:hover {
color: var(--blue-dark);
}
.ladder-stock small {
display: block;
margin-top: 3px;
overflow: hidden;
color: var(--text-muted);
text-overflow: ellipsis;
white-space: nowrap;
}
.ladder-stock time {
color: var(--text-muted);
font-variant-numeric: tabular-nums;
}
.ladder-more:hover {
background: var(--action-soft);
}
.ladder-more .lucide {
width: 15px;
height: 15px;
}
@media (max-width: 1023px) {
.ladder-more {
grid-column: 1 / -1;
min-height: 38px;
border-top: 1px solid var(--border);
border-left: 0px;
}
}
@media (max-width: 720px) {
.ladder-more {
grid-column: auto;
}
}
.ladder-level {
border-color: var(--border);
border-radius: 6px;
box-shadow: rgba(22, 34, 46, 0.04) 0px 1px 3px;
}
@media (max-width: 720px) {
.ladder-board {
align-items: stretch;
padding: 12px 8px 14px;
}
}
.ladder-board {
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
align-items: flex-end;
max-width: 1120px;
margin: 0px auto;
display: flex;
flex-direction: column;
gap: 0px;
padding: 0px;
border: 1px solid var(--border);
border-radius: var(--card-radius);
background: var(--surface-raised);
box-shadow: var(--card-shadow);
overflow: hidden;
}
.ladder-more {
min-width: 84px;
display: flex;
align-items: center;
justify-content: center;
gap: 5px;
background: rgb(247, 249, 250);
cursor: pointer;
align-self: center;
margin-right: 12px;
padding: 7px 8px;
border: 1px dashed var(--border-strong);
border-radius: 6px;
color: var(--text-secondary);
font-size: 11px;
white-space: nowrap;
}
.ladder-gap {
min-height: 68px;
background: repeating-linear-gradient(135deg, rgb(255, 255, 255), rgb(255, 255, 255) 9px, rgb(250, 251, 252) 9px, rgb(250, 251, 252) 18px);
}
.ladder-gap-note {
color: var(--text-tertiary);
font-size: 11.5px;
}
.ladder-insight-card {
border: 1px solid var(--border);
border-radius: var(--card-radius);
background: var(--surface-raised);
box-shadow: var(--card-shadow);
overflow: hidden;
}
.ladder-insight-card > header h3 {
margin: 0px;
font-size: 13.5px;
}
.ladder-insight-card > header span {
margin-left: auto;
padding: 2px 6px;
border-radius: 4px;
background: var(--xb-gray-100);
color: var(--text-secondary);
font-size: 10px;
}
.ladder-insight-card > p {
margin: 0px;
padding: 0px 13px 12px;
color: var(--text-secondary);
font-size: 10.5px;
line-height: 1.65;
}
.ladder-apex {
display: flex;
flex-direction: column;
gap: 5px;
padding: 14px 13px 9px;
}
.ladder-apex strong {
color: var(--danger);
font-size: 25px;
}
.ladder-apex span {
color: var(--text-primary);
font-size: 12px;
font-weight: 650;
line-height: 1.55;
}
.ladder-rate-list i {
height: 8px;
overflow: hidden;
border-radius: 4px;
background: var(--xb-gray-100);
}
.ladder-rate-list {
display: grid;
gap: 9px;
padding: 12px 13px;
}
.ladder-rate-list > div {
display: grid;
grid-template-columns: 72px minmax(0px, 1fr) 42px;
align-items: center;
gap: 7px;
color: var(--text-secondary);
font-size: 10px;
}
.ladder-rate-list i b {
height: 100%;
display: block;
border-radius: inherit;
background: var(--primary);
}
.ladder-rate-list strong {
color: var(--text-primary);
text-align: right;
}
@media (max-width: 1280px) {
.ladder-workspace {
grid-template-columns: minmax(0px, 1fr) 260px;
}
}
@media (max-width: 900px) {
.ladder-insights {
grid-template-columns: 1fr;
}
.ladder-more {
grid-column: 2;
margin: 0px 9px 9px;
}
}
@media (prefers-reduced-motion: reduce) {
.ladder-stock {
animation: auto ease 0s 1 normal none running none !important;
transition: none !important;
}
}
.ladder-workspace {
display: grid;
gap: 12px;
align-items: start;
grid-template-columns: minmax(0px, 1fr) 320px;
}
.ladder-insights {
display: grid;
gap: 12px;
}
.ladder-insight-card > header {
display: flex;
align-items: center;
padding: 0px 13px;
border-bottom: 1px solid var(--border);
min-height: 42px;
}
@media (max-width: 900px) {
.ladder-workspace {
grid-template-columns: 1fr;
}
}
.redesigned-ladder-view {
overflow: visible;
padding: 0px;
border: 0px;
border-radius: 0px;
background: transparent;
box-shadow: none;
}
.ladder-page-head {
margin-bottom: 12px;
}
.ladder-page-head .section-subtitle b {
font-weight: 400;
}
.ladder-head-actions {
display: flex;
align-items: center;
gap: 8px;
margin-left: auto;
}
.ladder-sort-segment {
display: inline-flex;
gap: 2px;
padding: 2px;
border-radius: 8px;
background: var(--surface-muted);
}
.ladder-sort-segment button {
padding: 4px 12px;
border-radius: 6px;
color: var(--r2-sub);
font-size: 12px;
}
.ladder-sort-segment button.active {
background: var(--surface);
color: var(--r2-ink);
font-weight: 600;
box-shadow: rgba(0, 0, 0, 0.08) 0px 1px 2px;
}
.market-ladder-workspace {
display: grid;
grid-template-columns: minmax(0px, 1fr) 320px;
gap: 12px;
align-items: start;
}
.market-ladder-board {
min-width: 0px;
overflow: hidden;
border: 1px solid var(--r2-line);
border-radius: var(--r2-radius);
background: var(--surface);
box-shadow: var(--r2-shadow);
}
.market-ladder-tier {
display: flex;
min-width: 0px;
border-bottom: 1px solid var(--r2-line-soft);
}
.market-ladder-tier:last-child {
border-bottom: 0px;
}
.market-ladder-label {
width: 118px;
flex: 0 0 118px;
padding: 14px 0px 14px 16px;
border-right: 1px solid var(--r2-line-soft);
background: linear-gradient(90deg, color-mix(in srgb, var(--tier-color) 8%, #fff), #fff);
}
.market-ladder-tier.is-gap .market-ladder-label {
background: repeating-linear-gradient(45deg, rgb(250, 250, 250), rgb(250, 250, 250) 8px, rgb(243, 244, 246) 8px, rgb(243, 244, 246) 16px);
}
.market-ladder-level {
display: inline-flex;
align-items: center;
gap: 6px;
color: var(--tier-color);
font-size: 15px;
font-weight: 800;
}
.market-ladder-dot {
width: 9px;
height: 9px;
display: inline-block;
border-radius: 3px;
background: var(--tier-color);
}
.market-ladder-count {
margin-top: 3px;
color: var(--r2-faint);
font-size: 11px;
}
.market-ladder-rate {
margin-top: 6px;
color: var(--r2-sub);
font-size: 10.5px;
}
.market-ladder-rate b {
color: var(--r2-ink);
font-weight: 700;
}
.market-ladder-stocks {
min-width: 0px;
flex: 1 1 0%;
display: grid;
grid-template-columns: repeat(auto-fill, 190px);
place-content: flex-start start;
gap: 8px;
padding: 12px 14px;
}
.market-ladder-stock {
min-width: 0px;
width: 190px;
display: block;
padding: 7px 11px;
border: 1px solid var(--r2-line);
border-radius: 8px;
background: var(--surface);
color: var(--r2-ink);
text-align: left;
transition: border-color 150ms, box-shadow 150ms, transform 150ms;
}
.market-ladder-stock:focus-visible,
.market-ladder-stock:hover {
border-color: var(--r2-blue-line);
box-shadow: rgba(16, 24, 40, 0.1) 0px 3px 10px;
outline: 0px;
transform: translateY(-1px);
}
.market-ladder-stock-first {
min-width: 0px;
display: flex;
align-items: center;
gap: 6px;
}
.market-ladder-stock-first strong {
min-width: 0px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font-size: 13px;
font-weight: 800;
}
.market-ladder-stock-first .stock-code {
flex: 0 0 auto;
color: var(--r2-faint);
font-size: 10.5px;
}
.market-ladder-tags {
min-width: 0px;
display: flex;
gap: 3px;
margin-left: auto;
}
.market-ladder-tag {
display: inline-block;
padding: 1px 5px;
border-radius: 4px;
font-size: 10px;
font-style: normal;
line-height: 1.5;
white-space: nowrap;
}
.market-ladder-tag.one-price {
background: var(--r2-up-soft);
color: rgb(194, 46, 46);
font-weight: 700;
}
.market-ladder-tag.broken {
background: var(--r2-amber-soft);
color: var(--r2-amber);
}
.market-ladder-stock-second {
min-width: 0px;
display: flex;
align-items: center;
gap: 6px;
margin-top: 4px;
color: var(--r2-sub);
font-size: 11px;
}
.market-ladder-stock-second b {
max-width: 92px;
overflow: hidden;
padding: 0px 5px;
border-radius: 4px;
background: var(--r2-blue-soft);
color: var(--r2-blue);
text-overflow: ellipsis;
white-space: nowrap;
font-size: 11px;
font-weight: 500;
}
.market-ladder-stock-second small {
color: var(--r2-sub);
font-size: 10.5px;
font-variant-numeric: tabular-nums;
white-space: nowrap;
}
.market-ladder-stock-second small:last-child {
margin-left: auto;
color: var(--r2-faint);
}
.market-ladder-gap-note {
align-self: center;
padding: 8px 14px;
border: 1.5px dashed var(--r2-line);
border-radius: 8px;
color: var(--r2-faint);
font-size: 12px;
}
.market-ladder-more {
place-self: center start;
display: inline-flex;
align-items: center;
gap: 5px;
padding: 8px 16px;
border: 1px dashed var(--r2-line);
border-radius: 8px;
color: var(--r2-sub);
font-size: 12px;
white-space: nowrap;
}
.market-ladder-more:focus-visible,
.market-ladder-more:hover {
border-color: var(--r2-blue-line);
color: var(--r2-blue);
outline: 0px;
}
.market-ladder-insights {
min-width: 0px;
display: flex;
flex-direction: column;
gap: 12px;
}
.market-ladder-insight-card {
min-width: 0px;
overflow: hidden;
border: 1px solid var(--r2-line);
border-radius: var(--r2-radius);
background: var(--surface);
box-shadow: var(--r2-shadow);
}
.market-ladder-insight-card > header {
min-height: 42px;
display: flex;
align-items: center;
padding: 0px 14px;
border-bottom: 1px solid var(--r2-line-soft);
}
.market-ladder-insight-card > header h3 {
margin: 0px;
font-size: 13.5px;
font-weight: 700;
}
.market-ladder-insight-card > header span {
margin-left: auto;
padding: 2px 7px;
border-radius: 5px;
background: var(--surface-muted);
color: var(--r2-sub);
font-size: 11px;
}
.market-ladder-apex {
padding: 14px 16px 8px;
}
.market-ladder-apex > div {
display: flex;
align-items: baseline;
gap: 10px;
}
.market-ladder-apex strong {
color: var(--r2-up);
font-size: 26px;
font-weight: 800;
}
.market-ladder-apex em {
padding: 2px 7px;
border-radius: 5px;
background: var(--r2-amber-soft);
color: var(--r2-amber);
font-size: 11.5px;
font-style: normal;
}
.market-ladder-apex p {
margin: 8px 0px 0px;
color: var(--r2-ink);
font-size: 12.5px;
line-height: 1.9;
}
.market-ladder-apex p b {
font-weight: 700;
}
.market-ladder-insight-card > p {
margin: 0px;
padding: 0px 14px 12px;
color: var(--r2-sub);
font-size: 11.5px;
line-height: 1.7;
}
.market-ladder-pyramid {
padding: 8px 16px 10px;
}
.market-ladder-pyramid-row {
display: flex;
align-items: center;
gap: 8px;
padding: 4px 0px;
}
.market-ladder-pyramid-row > span {
width: 52px;
color: var(--r2-sub);
font-size: 12px;
text-align: right;
}
.market-ladder-pyramid-row > i {
flex: 1 1 0%;
height: 14px;
overflow: hidden;
border-radius: 4px;
background: var(--surface-muted);
}
.market-ladder-pyramid-row > i b {
display: block;
height: 100%;
border-radius: 4px;
background: var(--r2-blue);
}
.market-ladder-pyramid-row:nth-child(2) > i b {
background: var(--r2-up);
}
.market-ladder-pyramid-row:nth-child(3) > i b {
background: var(--r2-amber);
}
.market-ladder-pyramid-row:nth-child(4) > i b {
background: var(--r2-down);
}
.market-ladder-pyramid-row.is-gap > i {
background: repeating-linear-gradient(45deg, rgb(229, 231, 235), rgb(229, 231, 235) 4px, rgb(243, 244, 246) 4px, rgb(243, 244, 246) 8px);
}
.market-ladder-pyramid-row.is-gap > i b {
background: transparent;
}
.market-ladder-pyramid-row > strong {
width: 44px;
color: var(--r2-ink);
font-size: 12px;
font-variant-numeric: tabular-nums;
}
.market-ladder-pyramid-row.is-gap > strong {
color: var(--r2-faint);
font-weight: 400;
}
.market-ladder-rate-list {
padding: 6px 16px 8px;
}
.market-ladder-rate-list > div {
display: flex;
align-items: center;
gap: 8px;
padding: 5px 0px;
font-size: 12px;
}
.market-ladder-rate-list > div > span {
width: 112px;
color: var(--r2-sub);
}
.market-ladder-rate-list > div > i {
flex: 1 1 0%;
height: 8px;
overflow: hidden;
border-radius: 4px;
background: var(--surface-muted);
}
.market-ladder-rate-list > div > i b {
display: block;
height: 100%;
border-radius: 4px;
background: var(--r2-up);
}
.market-ladder-rate-list > div > i b.is-low {
background: rgb(245, 158, 11);
}
.market-ladder-rate-list > div > i b.is-zero {
background: rgb(209, 213, 219);
}
.market-ladder-rate-list > div > strong {
width: 44px;
color: var(--r2-up);
text-align: right;
font-variant-numeric: tabular-nums;
}
.market-ladder-rate-list > div > strong.is-low {
color: var(--r2-amber);
}
.market-ladder-rate-list > div > strong.is-zero {
color: var(--r2-faint);
}
.market-ladder-source {
display: block;
padding: 0px 16px 12px;
color: var(--r2-faint);
font-size: 10.5px;
}
@media (max-width: 1020px) {
.market-ladder-workspace {
grid-template-columns: minmax(0px, 1fr);
}
.market-ladder-insights {
display: grid;
grid-template-columns: repeat(3, minmax(0px, 1fr));
}
}
@media (max-width: 720px) {
.redesigned-ladder-view {
padding: 0px;
}
.ladder-page-head {
flex-wrap: wrap;
}
.ladder-page-head .section-title-group {
width: 100%;
}
.ladder-head-actions {
width: 100%;
margin-left: 0px;
justify-content: space-between;
}
.market-ladder-insights {
grid-template-columns: minmax(0px, 1fr);
}
.market-ladder-tier {
display: block;
}
.market-ladder-label {
width: 100%;
padding: 10px 12px;
border-right: 0px;
border-bottom: 1px solid var(--r2-line-soft);
}
.market-ladder-level {
font-size: 14px;
}
.market-ladder-rate {
display: inline-block;
margin: 0px 0px 0px 8px;
}
.market-ladder-stocks {
padding: 9px;
grid-template-columns: minmax(0px, 1fr);
}
.market-ladder-stock {
width: 100%;
min-width: 0px;
}
.market-ladder-more {
margin: 0px 0px 0px 8px;
}
}
.lad-grid {
display: grid;
grid-template-columns: minmax(0px, 1fr) 320px;
gap: 12px;
align-items: start;
}
@media (max-width: 1400px) {
.lad-grid {
grid-template-columns: minmax(0px, 1fr) 300px;
}
}
@media (min-width: 721px) {
:root #ladderView.active-view {
height: auto;
min-height: 0px;
display: block;
overflow: visible;
}
}
:root[data-theme="dark"] .market-ladder-tier:nth-child(1) {
background: var(--ladder-level-1);
}
:root[data-theme="dark"] .market-ladder-tier:nth-child(2) {
background: var(--ladder-level-2);
}
:root[data-theme="dark"] .market-ladder-tier:nth-child(3) {
background: var(--ladder-level-3);
}
:root[data-theme="dark"] .market-ladder-tier:nth-child(4) {
background: var(--ladder-level-4);
}
:root[data-theme="dark"] .market-ladder-tier:nth-child(5) {
background: var(--ladder-level-5);
}
:root[data-theme="dark"] :is(.market-ladder-stock, .rotation-day, .rotation-table-frame, .auction-table-frame-v2) {
border-color: var(--border);
background: var(--surface-subtle);
}
:root[data-theme="dark"] #ladderView :is(.ladder-sort-segment, .market-ladder-board) {
border-color: var(--border);
background: var(--surface);
color: var(--text-primary);
}
:root[data-theme="dark"] #ladderView .ladder-sort-segment {
background: var(--surface-muted);
}
:root[data-theme="dark"] #ladderView .ladder-sort-segment button.active {
background: var(--surface-subtle);
color: var(--text-primary);
box-shadow: var(--control-shadow);
}
:root[data-theme="dark"] #ladderView .market-ladder-label {
border-color: var(--line-soft);
background: color-mix(in srgb, var(--tier-color) 12%, var(--surface-subtle));
}
:root[data-theme="dark"] #ladderView .market-ladder-tier.is-gap .market-ladder-label {
background: var(--surface-muted);
}
:root[data-theme="dark"] #ladderView :is(.market-ladder-insight-card > header span, .market-ladder-pyramid-row > i, .market-ladder-rate-list > div > i) {
background: var(--surface-muted);
color: var(--text-secondary);
}