Files
a-share-analysis/web/src/styles/index.scss
T

610 lines
8.8 KiB
SCSS

:root {
color: #171a1f;
background: #f4f6f8;
font-family:
Inter,
'PingFang SC',
'Microsoft YaHei',
system-ui,
-apple-system,
BlinkMacSystemFont,
sans-serif;
font-synthesis: none;
}
* {
box-sizing: border-box;
}
html,
body,
#app {
min-width: 320px;
min-height: 100%;
margin: 0;
}
button,
a,
input,
select,
textarea {
letter-spacing: 0;
}
:focus-visible {
outline: 2px solid #1677ff;
outline-offset: 2px;
}
.app-shell {
min-height: 100vh;
}
.app-header {
display: flex;
align-items: center;
justify-content: space-between;
min-height: 52px;
padding: 0 20px;
color: #fff;
background: #1d2229;
border-bottom: 1px solid #343b44;
}
.app-identity {
display: flex;
align-items: center;
gap: 10px;
}
.app-identity strong,
.app-identity small {
display: block;
}
.app-identity small {
margin-top: 2px;
color: #aeb7c2;
font-size: 11px;
font-weight: 500;
}
.header-context {
color: #aeb7c2;
font-size: 12px;
}
.app-mark {
display: inline-grid;
width: 28px;
height: 28px;
place-items: center;
color: #1d2229;
font-weight: 700;
background: #50c878;
border-radius: 4px;
}
.app-main {
width: min(100%, 1600px);
margin: 0 auto;
padding: 20px;
}
.market-overview-page {
display: grid;
gap: 16px;
}
.overview-toolbar {
display: flex;
align-items: center;
justify-content: space-between;
gap: 14px;
min-height: 42px;
}
.view-switcher {
display: inline-flex;
padding: 3px;
background: #e8edf1;
border: 1px solid #d5dce3;
border-radius: 6px;
}
.view-switcher button,
.refresh-button,
.quiet-button,
.sector-list button {
border: 0;
border-radius: 4px;
cursor: pointer;
font: inherit;
}
.view-switcher button {
min-width: 72px;
padding: 7px 12px;
color: #4c5966;
background: transparent;
font-size: 13px;
}
.view-switcher button.active {
color: #17212b;
background: #fff;
box-shadow: 0 1px 3px rgb(28 40 52 / 14%);
}
.toolbar-actions {
display: flex;
align-items: center;
gap: 10px;
}
.toolbar-actions label {
display: flex;
align-items: center;
gap: 7px;
color: #65717d;
font-size: 12px;
}
.toolbar-actions select {
min-height: 32px;
padding: 0 28px 0 9px;
color: #24303b;
background: #fff;
border: 1px solid #ccd4dc;
border-radius: 4px;
font: inherit;
}
.refresh-button {
min-height: 32px;
padding: 0 12px;
color: #fff;
background: #167d82;
font-size: 12px;
}
.refresh-button:disabled {
cursor: wait;
opacity: 0.55;
}
.overview-conclusion,
.overview-panel {
background: #fff;
border: 1px solid #dbe1e6;
border-radius: 7px;
box-shadow: 0 3px 14px rgb(26 38 49 / 5%);
}
.overview-conclusion {
padding: 22px 24px 18px;
}
.section-kicker {
color: #167d82;
font-size: 11px;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
}
.conclusion-heading,
.panel-heading {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 16px;
}
.conclusion-heading {
margin-top: 8px;
}
.conclusion-heading h1,
.panel-heading h2 {
margin: 0;
color: #17212b;
letter-spacing: 0;
}
.conclusion-heading h1 {
font-size: clamp(24px, 3vw, 38px);
line-height: 1.2;
}
.panel-heading h2 {
margin-top: 4px;
font-size: 17px;
}
.conclusion-copy {
margin: 10px 0 0;
color: #475563;
font-size: 15px;
}
.source-status {
display: grid;
grid-template-columns: auto auto;
align-items: center;
gap: 5px 7px;
min-width: 142px;
padding: 9px 11px;
color: #167d82;
background: #eff8f7;
border: 1px solid #cbe6e2;
border-radius: 5px;
font-size: 12px;
font-weight: 700;
}
.source-status small {
grid-column: 1 / -1;
color: #6d7a85;
font-size: 10px;
font-weight: 500;
}
.source-status[data-status='unavailable'] {
color: #a45e1b;
background: #fff7ec;
border-color: #f0d7b5;
}
.status-dot {
width: 7px;
height: 7px;
background: currentcolor;
border-radius: 50%;
}
.conclusion-facts {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 10px;
margin-top: 21px;
padding-top: 15px;
border-top: 1px solid #e6eaee;
}
.conclusion-facts div {
display: grid;
gap: 5px;
}
.conclusion-facts span,
.panel-meta,
.breadth-values span,
.column-label {
color: #7b8792;
font-size: 11px;
}
.conclusion-facts strong {
color: #2e3b47;
font-size: 14px;
}
.module-warning {
margin: 13px 0 0;
color: #a45e1b;
font-size: 12px;
}
.overview-panel .module-warning {
display: flex;
gap: 8px;
padding: 7px 9px;
border-left: 3px solid #b67a2d;
background: #fff8ec;
}
.overview-panel .module-warning strong {
white-space: nowrap;
}
.overview-grid {
display: grid;
gap: 16px;
}
.overview-grid-top {
grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
}
.overview-grid-bottom {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.overview-panel {
min-height: 190px;
padding: 18px;
}
.panel-heading {
align-items: center;
margin-bottom: 17px;
}
.panel-meta {
white-space: nowrap;
}
.quiet-button {
padding: 6px 9px;
color: #167d82;
background: #eff8f7;
font-size: 11px;
}
.drivers-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 17px;
}
.driver-column + .driver-column {
padding-left: 17px;
border-left: 1px solid #e6eaee;
}
.column-label {
display: block;
margin-bottom: 8px;
font-weight: 700;
}
.column-label.positive,
.positive {
color: #c33f3f;
}
.column-label.negative,
.negative {
color: #19846e;
}
.driver-column ul {
display: grid;
gap: 8px;
margin: 0;
padding: 0;
color: #485664;
font-size: 12px;
line-height: 1.55;
list-style: none;
}
.driver-column li {
position: relative;
padding-left: 13px;
}
.driver-column li::before {
position: absolute;
top: 0.62em;
left: 0;
width: 5px;
height: 5px;
background: #aeb8c1;
border-radius: 50%;
content: '';
}
.index-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 9px;
}
.index-item {
display: grid;
gap: 7px;
min-height: 112px;
padding: 13px;
color: #4c5966;
text-align: left;
background: #f8fafb;
border: 1px solid #e3e8ec;
border-radius: 5px;
cursor: pointer;
font: inherit;
}
.index-item:hover {
border-color: #a5c9c7;
box-shadow: 0 2px 8px rgb(26 38 49 / 8%);
}
.index-item strong {
color: #1c2a35;
font-size: 20px;
}
.index-item small {
color: #7d8893;
font-size: 12px;
}
.index-item[data-direction='up'] small {
color: #c33f3f;
}
.index-item[data-direction='down'] small {
color: #19846e;
}
.breadth-values {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 8px;
margin-top: 32px;
}
.breadth-values div {
display: grid;
gap: 8px;
text-align: center;
}
.breadth-values strong {
color: #2e3b47;
font-size: 25px;
}
.module-placeholder,
.module-unavailable {
display: grid;
align-content: center;
min-height: 104px;
gap: 6px;
color: #8a959f;
font-size: 12px;
}
.module-unavailable strong {
color: #a45e1b;
font-size: 13px;
}
.module-unavailable span {
line-height: 1.5;
}
.sector-list {
display: flex;
flex-wrap: wrap;
gap: 7px;
}
.sector-list button {
display: inline-flex;
align-items: center;
justify-content: space-between;
min-width: 112px;
gap: 10px;
padding: 7px 9px;
color: #4c5966;
background: #f3f7f7;
font-size: 12px;
}
.sector-list button strong {
font-weight: 650;
}
.sector-list button[data-direction='up'] strong,
.turnover-trend [data-direction='up'] {
color: #c33f3f;
}
.sector-list button[data-direction='down'] strong,
.turnover-trend [data-direction='down'] {
color: #19846e;
}
.turnover-trend [data-direction='flat'] {
color: #6f7a84;
}
.turnover-trend {
display: grid;
gap: 12px;
margin-top: 24px;
}
.turnover-trend div {
display: flex;
align-items: baseline;
gap: 7px;
}
.turnover-trend strong {
color: #1c2a35;
font-size: 25px;
}
.turnover-trend small,
.turnover-trend p {
color: #7d8893;
font-size: 12px;
}
@media (max-width: 900px) {
.overview-grid-top,
.overview-grid-bottom {
grid-template-columns: 1fr;
}
}
@media (max-width: 600px) {
.app-header,
.app-main {
padding-right: 14px;
padding-left: 14px;
}
.header-context {
display: none;
}
.overview-toolbar,
.conclusion-heading {
align-items: stretch;
flex-direction: column;
}
.toolbar-actions {
justify-content: space-between;
}
.view-switcher {
width: 100%;
}
.view-switcher button {
flex: 1;
}
.overview-conclusion {
padding: 18px 16px 15px;
}
.conclusion-heading h1 {
font-size: 27px;
}
.source-status {
width: 100%;
}
.conclusion-facts {
gap: 7px;
}
.conclusion-facts strong {
font-size: 12px;
}
.drivers-grid {
grid-template-columns: 1fr;
}
.driver-column + .driver-column {
padding-top: 14px;
padding-left: 0;
border-top: 1px solid #e6eaee;
border-left: 0;
}
.index-grid {
grid-template-columns: 1fr;
}
}