2026-06-02 15:54:00 +08:00

273 lines
4.8 KiB
CSS

.databi-shell {
width: 100vw;
min-width: 1280px;
min-height: 720px;
padding: 0 24px 24px;
}
.databi-screen {
--analysis-row-height: 320px;
--business-metric-row-height: 88px;
display: grid;
grid-template-rows: 72px 128px var(--business-metric-row-height) var(--analysis-row-height);
gap: 16px;
min-height: 0;
}
.databi-header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 24px;
height: 72px;
margin: 0 -24px;
padding: 0 24px;
border-bottom: 1px solid rgba(34, 121, 170, 0.46);
background: rgba(2, 15, 31, 0.72);
}
.brand-lockup {
display: flex;
min-width: 0;
align-items: center;
gap: 14px;
}
.brand-emblem {
display: grid;
position: relative;
width: 40px;
height: 40px;
place-items: center;
border: 1px solid rgba(39, 228, 245, 0.7);
border-radius: 50%;
background: rgba(11, 45, 70, 0.82);
box-shadow: inset 0 0 12px rgba(39, 228, 245, 0.16);
}
.brand-emblem::before {
width: 19px;
height: 19px;
border: 2px solid #27e4f5;
border-radius: 50%;
background:
linear-gradient(90deg, transparent 45%, #27e4f5 45% 55%, transparent 55%),
linear-gradient(transparent 45%, #27e4f5 45% 55%, transparent 55%);
box-shadow: 0 0 12px rgba(39, 228, 245, 0.55);
content: "";
}
.brand-emblem::after {
position: absolute;
inset: 7px;
border: 1px solid rgba(39, 228, 245, 0.55);
border-radius: 50%;
content: "";
}
.brand-lockup h1 {
margin: 0;
font-size: 26px;
font-weight: 780;
letter-spacing: 0;
}
.header-meta {
display: flex;
gap: 12px;
margin-top: 2px;
color: #7fa1bf;
font-size: 12px;
}
.header-controls {
display: flex;
flex: 0 0 auto;
align-items: center;
gap: 10px;
}
.range-control,
.region-control {
display: inline-flex;
height: 44px;
align-items: center;
gap: 10px;
border: 1px solid rgba(64, 148, 197, 0.42);
border-radius: 8px;
background: rgba(7, 29, 48, 0.86);
color: #d8ebff;
}
.range-control {
width: 378px;
padding: 0 16px;
}
.range-control input,
.region-control select {
min-width: 0;
border: 0;
background: transparent;
color: #d8ebff;
font: inherit;
outline: 0;
}
.range-control input {
width: 132px;
color-scheme: dark;
}
.range-control input::-webkit-calendar-picker-indicator {
display: none;
}
.range-control svg,
.region-control svg {
color: #ccd9e8;
}
.region-control {
width: 280px;
padding: 0 16px;
}
.region-control select {
flex: 1;
}
.range-control:focus-within,
.region-control:focus-within {
border-color: rgba(39, 228, 245, 0.86);
box-shadow: 0 0 0 3px rgba(39, 228, 245, 0.1);
}
.live-dot {
display: inline-flex;
align-items: center;
gap: 7px;
color: #20e7d6;
font-size: 13px;
font-weight: 720;
}
.live-dot::before {
width: 7px;
height: 7px;
border-radius: 50%;
background: #20e7d6;
box-shadow: 0 0 14px rgba(32, 231, 214, 0.72);
content: "";
}
.live-dot--warn {
color: #f7a33a;
}
.live-dot--warn::before {
background: #f7a33a;
box-shadow: 0 0 14px rgba(247, 163, 58, 0.72);
}
.metric-grid,
.business-metric-grid {
display: grid;
grid-template-columns: repeat(12, minmax(0, 1fr));
gap: 16px;
}
.business-metric-grid .metric-card {
height: var(--business-metric-row-height);
grid-template-columns: minmax(0, 1fr);
align-items: stretch;
padding: 10px 16px;
}
.business-metric-grid .metric-content {
display: grid;
grid-template-columns: minmax(0, 1fr) max-content;
grid-template-rows: auto 1fr;
column-gap: 12px;
align-items: center;
}
.business-metric-grid .metric-content > span {
grid-column: 1;
grid-row: 1;
}
.business-metric-grid .metric-content strong {
grid-column: 1;
grid-row: 2;
margin-top: 3px;
font-size: clamp(18px, 1vw, 20px);
line-height: 1.25;
}
.business-metric-grid .metric-delta {
grid-column: 2;
grid-row: 1 / 3;
display: grid;
gap: 3px;
align-self: center;
justify-self: end;
margin-top: 0;
padding-top: 0;
border-top: 0;
font-size: 11px;
text-align: right;
white-space: nowrap;
}
.business-metric-grid .metric-delta span {
color: #7f9bb7;
}
.databi-grid {
display: grid;
grid-template-columns: repeat(12, minmax(0, 1fr));
gap: 16px;
}
.databi-grid--top {
height: var(--analysis-row-height);
min-height: 0;
}
.databi-grid--top > .databi-panel,
.databi-grid--middle > .databi-panel {
grid-column: span 4;
}
.databi-grid--top .databi-panel {
height: var(--analysis-row-height);
min-height: 0;
}
.databi-grid--middle .databi-panel {
height: 100%;
min-height: 0;
}
.databi-screen .databi-grid--top .databi-panel,
.databi-screen .databi-grid--middle .databi-panel {
display: flex;
flex-direction: column;
}
.databi-footer {
display: flex;
align-items: center;
justify-content: center;
gap: 34px;
margin-top: 16px;
color: #7f91a8;
font-size: 12px;
}
.databi-footer strong {
color: #f7a33a;
font-weight: 760;
}