Files
lingniu-vehicle-ingest/vehicle-data-platform/apps/web/src/styles/global.css
2026-07-04 22:10:36 +08:00

1875 lines
34 KiB
CSS

@import './tokens.css';
@import '@douyinfe/semi-theme-default/scss/index.scss';
* {
box-sizing: border-box;
}
body {
margin: 0;
min-width: 1280px;
background: var(--vp-bg);
color: var(--vp-text);
font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}
.vp-app {
min-height: 100vh;
background: var(--vp-bg);
}
.vp-shell {
display: grid;
grid-template-columns: var(--vp-shell-sidebar) minmax(0, 1fr);
min-height: 100vh;
}
.vp-sidebar {
position: sticky;
top: 0;
height: 100vh;
background: var(--vp-surface);
border-right: 1px solid var(--vp-border);
padding: 16px 12px;
}
.vp-brand {
min-height: 54px;
display: flex;
align-items: center;
gap: 10px;
padding: 0 8px 16px;
font-weight: 700;
color: var(--vp-text);
}
.vp-brand-mark {
width: 28px;
height: 28px;
border-radius: 7px;
background: linear-gradient(135deg, var(--vp-primary), var(--vp-cyan));
}
.vp-brand-copy {
min-width: 0;
display: flex;
flex-direction: column;
gap: 2px;
line-height: 18px;
}
.vp-brand-copy span:first-child {
font-size: 15px;
}
.vp-brand-copy span:last-child {
color: var(--vp-text-muted);
font-size: 11px;
font-weight: 500;
white-space: nowrap;
}
.vp-nav-groups {
display: grid;
gap: 12px;
}
.vp-nav-group {
min-width: 0;
}
.vp-nav-section-title {
padding: 0 12px 6px;
color: var(--vp-text-subtle);
font-size: 12px;
font-weight: 600;
line-height: 18px;
}
.vp-main {
min-width: 0;
}
.vp-topbar {
height: var(--vp-shell-header);
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 24px;
background: rgba(255, 255, 255, 0.9);
border-bottom: 1px solid var(--vp-border);
backdrop-filter: blur(12px);
position: sticky;
top: 0;
z-index: 10;
}
.vp-link-health-button-warning {
color: var(--vp-warning);
border-color: rgba(247, 144, 9, 0.45);
background: rgba(247, 144, 9, 0.08);
}
.vp-link-health-button-ok {
color: var(--vp-success);
border-color: rgba(18, 183, 106, 0.45);
background: rgba(18, 183, 106, 0.08);
}
.vp-page {
padding: var(--vp-page-gutter);
}
.vp-page-header {
min-height: 54px;
margin-bottom: 16px;
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 16px;
}
.vp-page-header-actions {
flex: 0 0 auto;
padding-top: 2px;
}
.vp-scope-bar {
min-height: 40px;
margin-top: 12px;
padding: 8px 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
display: flex;
align-items: center;
gap: 10px;
}
.vp-scope-label {
color: var(--vp-text-muted);
font-size: 13px;
}
.vp-service-status {
min-height: 40px;
margin-top: 8px;
padding: 8px 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: var(--vp-surface);
display: flex;
align-items: center;
gap: 10px;
}
.vp-service-status-ok {
border-color: rgba(18, 183, 106, 0.35);
background: rgba(18, 183, 106, 0.05);
}
.vp-service-status-warning {
border-color: rgba(247, 144, 9, 0.35);
background: rgba(247, 144, 9, 0.06);
}
.vp-service-status-error {
border-color: rgba(240, 68, 56, 0.35);
background: rgba(240, 68, 56, 0.05);
}
.vp-section {
background: var(--vp-surface);
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
box-shadow: var(--vp-shadow-sm);
}
.vp-grid {
display: grid;
gap: 16px;
}
.vp-grid.two {
grid-template-columns: minmax(0, 1.2fr) minmax(360px, 0.8fr);
}
.vp-kpi-grid {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 16px;
margin-bottom: 16px;
}
.vp-kpi-card {
overflow: hidden;
}
.vp-kpi-button {
width: 100%;
min-height: 94px;
padding: 20px 24px;
border: 0;
background: transparent;
text-align: left;
cursor: pointer;
font: inherit;
}
.vp-kpi-button:hover,
.vp-kpi-button:focus-visible {
background: #f8fbff;
outline: none;
}
.vp-kpi-value {
font-size: 28px;
font-weight: 700;
line-height: 34px;
color: var(--vp-text);
}
.vp-kpi-label {
margin-top: 4px;
color: var(--vp-text-muted);
font-size: 13px;
}
.vp-result-summary-grid {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 12px;
}
.vp-current-service-board {
margin-bottom: 16px;
padding: 14px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
display: grid;
grid-template-columns: minmax(0, 1fr) 280px;
gap: 16px;
}
.vp-current-service-title {
margin-bottom: 10px;
color: var(--vp-text);
font-size: 14px;
font-weight: 700;
line-height: 20px;
}
.vp-current-service-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 10px;
}
.vp-current-service-item {
min-height: 112px;
padding: 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: var(--vp-surface);
display: grid;
gap: 8px;
align-content: start;
}
.vp-current-service-risk {
color: var(--vp-text);
font-size: 13px;
font-weight: 600;
line-height: 20px;
}
.vp-current-service-next {
color: var(--vp-text-muted);
font-size: 12px;
line-height: 18px;
}
.vp-current-action-list {
display: flex;
flex-wrap: wrap;
gap: 8px;
}
.vp-realtime-command-board {
margin-bottom: 16px;
padding: 14px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
display: grid;
grid-template-columns: minmax(0, 1fr) 280px;
gap: 16px;
}
.vp-realtime-command-grid {
display: grid;
grid-template-columns: repeat(6, minmax(0, 1fr));
gap: 10px;
}
.vp-realtime-command-item {
min-height: 74px;
padding: 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: var(--vp-surface);
display: grid;
align-content: space-between;
gap: 8px;
text-align: left;
font: inherit;
}
button.vp-realtime-command-item {
cursor: pointer;
}
button.vp-realtime-command-item:hover,
button.vp-realtime-command-item:focus-visible {
border-color: rgba(22, 100, 255, 0.42);
background: #f5f9ff;
outline: none;
}
.vp-realtime-command-item span:last-child {
color: var(--vp-text);
font-size: 22px;
font-weight: 700;
line-height: 28px;
}
.vp-source-coverage-board {
margin-bottom: 16px;
padding: 14px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: var(--vp-surface);
}
.vp-source-coverage-grid {
margin-top: 10px;
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 10px;
}
.vp-source-coverage-item {
min-height: 98px;
padding: 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
text-align: left;
font: inherit;
cursor: pointer;
}
.vp-source-coverage-item:hover,
.vp-source-coverage-item:focus-visible {
border-color: rgba(22, 100, 255, 0.42);
background: #f5f9ff;
outline: none;
}
.vp-source-coverage-item-head {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
}
.vp-source-coverage-item-head span {
color: var(--vp-text);
font-weight: 700;
}
.vp-source-coverage-bars {
margin-top: 12px;
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 8px;
color: var(--vp-text-muted);
font-size: 12px;
line-height: 18px;
}
.vp-result-summary-item {
min-height: 72px;
padding: 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
}
.vp-result-summary-button {
width: 100%;
text-align: left;
font: inherit;
cursor: pointer;
}
.vp-result-summary-button:hover,
.vp-result-summary-button:focus-visible {
border-color: rgba(22, 100, 255, 0.42);
background: #f5f9ff;
outline: none;
}
.vp-result-summary-value {
color: var(--vp-text);
font-size: 22px;
font-weight: 700;
line-height: 28px;
}
.vp-result-summary-label {
margin-top: 4px;
color: var(--vp-text-muted);
font-size: 12px;
line-height: 18px;
}
.vp-map {
position: relative;
height: 360px;
overflow: hidden;
background:
linear-gradient(90deg, rgba(22, 100, 255, 0.08) 1px, transparent 1px),
linear-gradient(0deg, rgba(22, 100, 255, 0.08) 1px, transparent 1px),
#f8fbff;
background-size: 36px 36px;
}
.vp-amap-canvas {
position: absolute;
inset: 0;
}
.vp-map-fallback {
position: absolute;
inset: 0;
background:
linear-gradient(90deg, rgba(22, 100, 255, 0.08) 1px, transparent 1px),
linear-gradient(0deg, rgba(22, 100, 255, 0.08) 1px, transparent 1px),
rgba(248, 251, 255, 0.94);
background-size: 36px 36px;
}
.vp-map-fallback-status {
position: absolute;
left: 12px;
bottom: 12px;
box-shadow: var(--vp-shadow-sm);
}
.vp-amap-marker {
min-width: 18px;
height: 18px;
padding: 0 5px;
border: 2px solid #fff;
border-radius: 999px;
color: #fff;
font-size: 10px;
font-weight: 700;
line-height: 14px;
text-align: center;
box-shadow: 0 8px 18px rgba(16, 24, 40, 0.2);
}
.vp-amap-marker-online {
background: var(--vp-success);
}
.vp-amap-marker-offline {
background: var(--vp-warning);
}
.vp-amap-marker-selected {
border-color: #fff;
box-shadow:
0 0 0 4px rgba(22, 100, 255, 0.28),
0 10px 22px rgba(16, 24, 40, 0.24);
}
.vp-monitor-layout {
display: grid;
grid-template-columns: minmax(0, 1fr) 260px;
gap: 16px;
margin-bottom: 16px;
}
.vp-monitor-map {
min-height: 430px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
overflow: hidden;
background: var(--vp-surface);
}
.vp-monitor-map-header {
min-height: 50px;
padding: 12px;
border-bottom: 1px solid var(--vp-border);
background: #fbfcff;
}
.vp-map-monitor {
height: 380px;
}
.vp-map-dot {
position: absolute;
width: 10px;
height: 10px;
padding: 0;
border: 0;
border-radius: 50%;
background: var(--vp-primary);
box-shadow: 0 0 0 5px rgba(22, 100, 255, 0.16);
cursor: pointer;
}
.vp-map-dot-online {
background: var(--vp-success);
box-shadow: 0 0 0 5px rgba(18, 183, 106, 0.16);
}
.vp-map-dot-offline {
background: var(--vp-warning);
box-shadow: 0 0 0 5px rgba(247, 144, 9, 0.16);
}
.vp-map-dot-start {
width: 12px;
height: 12px;
background: var(--vp-success);
box-shadow: 0 0 0 6px rgba(18, 183, 106, 0.18);
}
.vp-map-dot-end {
width: 12px;
height: 12px;
background: var(--vp-warning);
box-shadow: 0 0 0 6px rgba(247, 144, 9, 0.18);
}
.vp-map-dot-selected {
width: 16px;
height: 16px;
border: 3px solid #fff;
box-shadow:
0 0 0 7px rgba(22, 100, 255, 0.2),
0 10px 22px rgba(16, 24, 40, 0.2);
}
.vp-map-dot:focus-visible {
outline: 2px solid var(--vp-primary);
outline-offset: 6px;
}
.vp-monitor-side {
display: grid;
gap: 12px;
align-content: start;
}
.vp-monitor-metric {
min-height: 72px;
padding: 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
}
.vp-monitor-metric-value {
margin-top: 8px;
color: var(--vp-text);
font-size: 24px;
font-weight: 700;
line-height: 30px;
}
.vp-map-service-queue {
display: grid;
gap: 10px;
margin-top: 4px;
padding-top: 12px;
border-top: 1px solid var(--vp-border);
}
.vp-source-consistency-panel {
display: grid;
gap: 10px;
margin-top: 4px;
padding-top: 12px;
border-top: 1px solid var(--vp-border);
}
.vp-map-integration-panel {
display: grid;
gap: 8px;
padding: 10px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fff;
}
.vp-map-integration-row {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 10px;
padding-bottom: 8px;
border-bottom: 1px solid var(--vp-border);
}
.vp-map-integration-row:last-child {
padding-bottom: 0;
border-bottom: 0;
}
.vp-map-integration-row > div {
display: grid;
gap: 2px;
min-width: 0;
}
.vp-map-service-queue-title {
color: var(--vp-text);
font-size: 13px;
font-weight: 700;
}
.vp-map-service-item {
display: grid;
gap: 8px;
padding: 10px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fff;
}
.vp-map-service-item-button {
width: 100%;
color: inherit;
text-align: left;
cursor: pointer;
}
.vp-map-service-item-button:focus-visible {
outline: 2px solid rgba(22, 100, 255, 0.45);
outline-offset: 2px;
}
.vp-map-service-item-selected {
border-color: rgba(22, 100, 255, 0.62);
background: #f5f9ff;
box-shadow: 0 0 0 3px rgba(22, 100, 255, 0.08);
}
.vp-map-service-item-main,
.vp-map-service-item-footer {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
}
.vp-map-service-item-main > div {
display: grid;
min-width: 0;
}
.vp-selected-vehicle-panel {
display: grid;
gap: 8px;
padding: 12px;
border: 1px solid rgba(22, 100, 255, 0.28);
border-radius: var(--vp-radius);
background: #f5f9ff;
}
.vp-selected-vehicle-grid {
display: grid;
grid-template-columns: auto minmax(0, 1fr);
gap: 6px 10px;
font-size: 12px;
}
.vp-selected-vehicle-grid span {
color: var(--vp-text-muted);
}
.vp-selected-vehicle-grid strong {
color: var(--vp-text);
font-weight: 600;
text-align: right;
}
.vp-alert-flow {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 12px;
}
.vp-alert-flow-item {
min-height: 96px;
padding: 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
display: grid;
gap: 10px;
align-content: start;
}
.vp-alert-flow-value {
color: var(--vp-text);
font-size: 22px;
font-weight: 700;
line-height: 28px;
}
.vp-alert-dispatch-grid {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 12px;
}
.vp-alert-dispatch-item {
min-height: 132px;
padding: 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
display: grid;
align-content: start;
gap: 8px;
text-align: left;
font: inherit;
cursor: pointer;
}
.vp-alert-dispatch-item:hover,
.vp-alert-dispatch-item:focus-visible {
border-color: rgba(22, 100, 255, 0.42);
background: #f5f9ff;
outline: none;
}
.vp-alert-dispatch-head {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
}
.vp-alert-dispatch-head strong {
color: var(--vp-text);
font-size: 22px;
line-height: 28px;
}
.vp-alert-command-board {
display: grid;
grid-template-columns: minmax(0, 1fr) 360px;
gap: 16px;
}
.vp-alert-command-grid {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 12px;
}
.vp-alert-command-item {
min-height: 92px;
padding: 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
display: grid;
align-content: space-between;
gap: 10px;
}
.vp-alert-command-item > div {
color: var(--vp-text);
font-size: 22px;
font-weight: 700;
line-height: 28px;
word-break: break-word;
}
.vp-alert-next-action {
min-height: 132px;
padding: 12px;
border: 1px solid rgba(22, 100, 255, 0.28);
border-radius: var(--vp-radius);
background: #f5f9ff;
display: grid;
align-content: start;
gap: 10px;
}
.vp-sla-board {
display: grid;
gap: 14px;
}
.vp-sla-summary {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 12px;
}
.vp-sla-summary-item {
min-height: 72px;
display: grid;
gap: 8px;
align-content: start;
padding: 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
}
.vp-sla-summary-item strong {
color: var(--vp-text);
font-size: 18px;
line-height: 24px;
}
.vp-risk-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 12px;
}
.vp-risk-item {
min-height: 158px;
padding: 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
display: grid;
gap: 10px;
align-content: start;
}
.vp-risk-value {
color: var(--vp-text);
font-size: 26px;
font-weight: 700;
line-height: 32px;
}
.vp-risk-runbook {
margin-top: 12px;
padding: 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #f5f9ff;
display: flex;
align-items: center;
gap: 10px;
}
.vp-ops-action-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 12px;
}
.vp-ops-action-item {
min-height: 196px;
padding: 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
display: grid;
gap: 10px;
align-content: start;
}
.vp-ops-action-evidence {
color: var(--vp-text);
font-size: 18px;
font-weight: 700;
line-height: 26px;
word-break: break-word;
}
.vp-ops-action-acceptance {
padding-top: 8px;
border-top: 1px solid var(--vp-border);
color: var(--vp-text-muted);
font-size: 13px;
line-height: 20px;
}
.vp-alert-ops-grid {
display: grid;
grid-template-columns: minmax(0, 1.4fr) minmax(360px, 0.6fr);
gap: 16px;
margin-top: 16px;
}
.vp-notification-policy-list {
display: grid;
gap: 12px;
}
.vp-notification-policy {
min-height: 86px;
padding: 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
display: grid;
gap: 10px;
}
.vp-alert-policy-detail {
margin-top: 8px;
color: var(--vp-text-muted);
font-size: 13px;
line-height: 20px;
}
.vp-stat-workspace {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 16px;
margin-top: 16px;
}
.vp-stat-chart {
display: grid;
gap: 12px;
}
.vp-stat-bar-row {
min-height: 32px;
display: grid;
grid-template-columns: 110px minmax(0, 1fr) 96px;
align-items: center;
gap: 10px;
}
.vp-stat-bar-label,
.vp-stat-bar-value {
color: var(--vp-text-muted);
font-size: 12px;
line-height: 18px;
white-space: nowrap;
}
.vp-stat-bar-value {
color: var(--vp-text);
text-align: right;
}
.vp-stat-bar-track {
height: 10px;
overflow: hidden;
border-radius: 999px;
background: #eef4ff;
}
.vp-stat-bar-fill {
display: block;
height: 100%;
border-radius: inherit;
background: var(--vp-primary);
}
.vp-stat-bar-fill-green {
background: var(--vp-success);
}
.vp-stat-insight-grid {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 16px;
margin-top: 16px;
}
.vp-stat-definition-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 12px;
}
.vp-stat-definition-grid > div {
min-height: 104px;
padding: 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
}
.vp-stat-definition-grid p {
margin: 10px 0 0;
color: var(--vp-text-muted);
font-size: 13px;
line-height: 20px;
}
.vp-stat-closure-board {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 12px;
}
.vp-stat-closure-item {
min-height: 112px;
padding: 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
display: grid;
gap: 8px;
align-content: start;
}
.vp-stat-closure-action {
margin-top: 12px;
min-height: 48px;
padding: 10px 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #f5f9ff;
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
}
.vp-bi-publish-board {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(360px, 0.9fr) auto;
gap: 16px;
align-items: center;
}
.vp-bi-publish-main {
display: grid;
gap: 8px;
align-content: start;
}
.vp-bi-publish-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 10px;
}
.vp-bi-publish-grid div {
min-height: 68px;
padding: 10px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
display: grid;
gap: 6px;
}
.vp-bi-publish-grid span {
color: var(--vp-text-muted);
font-size: 12px;
line-height: 18px;
}
.vp-bi-publish-grid strong {
color: var(--vp-text);
font-size: 15px;
line-height: 22px;
}
.vp-stat-audit-board {
display: grid;
grid-template-columns: minmax(260px, 0.7fr) minmax(0, 1.3fr);
gap: 16px;
}
.vp-stat-audit-summary {
min-height: 168px;
padding: 12px;
border: 1px solid rgba(22, 100, 255, 0.28);
border-radius: var(--vp-radius);
background: #f5f9ff;
display: grid;
gap: 10px;
align-content: start;
}
.vp-stat-audit-grid {
display: grid;
grid-template-columns: repeat(5, minmax(0, 1fr));
gap: 12px;
}
.vp-stat-audit-item {
min-height: 184px;
padding: 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
display: grid;
gap: 9px;
align-content: start;
}
.vp-stat-audit-item strong {
color: var(--vp-text);
font-size: 18px;
line-height: 24px;
}
.vp-stat-audit-action {
padding-top: 8px;
border-top: 1px solid var(--vp-border);
color: var(--vp-text-muted);
font-size: 12px;
line-height: 18px;
}
.vp-trajectory-anomaly-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 12px;
}
.vp-trajectory-anomaly-item {
min-height: 112px;
padding: 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
display: grid;
gap: 8px;
align-content: start;
}
.vp-trajectory-anomaly-action {
margin-top: 12px;
min-height: 44px;
padding: 10px 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #f5f9ff;
display: flex;
align-items: center;
gap: 10px;
}
.vp-playback-layout {
display: grid;
grid-template-columns: minmax(0, 1fr) 260px;
gap: 16px;
}
.vp-playback-map {
min-height: 430px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
overflow: hidden;
background: var(--vp-surface);
}
.vp-playback-side {
display: grid;
gap: 12px;
align-content: start;
}
.vp-playback-current {
display: grid;
gap: 10px;
padding: 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fff;
}
.vp-playback-address {
min-width: 0;
display: grid;
gap: 6px;
padding: 10px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
}
.vp-playback-timeline {
margin-top: 16px;
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 12px;
}
.vp-playback-step {
text-align: left;
min-height: 112px;
padding: 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
color: inherit;
cursor: pointer;
transition: border-color 0.16s ease, box-shadow 0.16s ease, background 0.16s ease;
}
.vp-playback-step:hover,
.vp-playback-step:focus-visible {
border-color: rgba(22, 100, 255, 0.42);
box-shadow: 0 0 0 3px rgba(22, 100, 255, 0.08);
outline: none;
}
.vp-playback-step-active {
border-color: rgba(22, 100, 255, 0.72);
background: #eef5ff;
box-shadow: inset 3px 0 0 #1664ff;
}
.vp-playback-range {
width: 100%;
accent-color: #1664ff;
}
.vp-json {
margin: 0;
padding: 16px;
border-radius: 8px;
background: #101828;
color: #e4e7ec;
overflow: auto;
max-height: 360px;
font-size: 12px;
line-height: 1.65;
}
.vp-table-footer {
min-height: 52px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
padding-top: 12px;
}
.vp-table-toolbar {
min-height: 42px;
display: flex;
align-items: center;
justify-content: flex-end;
gap: 12px;
padding-bottom: 12px;
}
.vp-vehicle-summary {
min-height: 72px;
display: flex;
align-items: center;
}
.vp-evidence-grid {
display: grid;
grid-template-columns: repeat(6, minmax(0, 1fr));
gap: 12px;
margin-bottom: 12px;
}
.vp-conclusion-grid {
display: grid;
grid-template-columns: 160px minmax(180px, 1fr) minmax(260px, 1.4fr);
gap: 12px;
}
.vp-conclusion-item {
min-height: 78px;
padding: 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
}
.vp-evidence-item {
min-height: 70px;
padding: 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
}
.vp-evidence-label {
color: var(--vp-text-muted);
font-size: 12px;
line-height: 18px;
}
.vp-evidence-value {
margin-top: 6px;
color: var(--vp-text);
font-size: 15px;
font-weight: 600;
line-height: 22px;
word-break: break-all;
}
.vp-action-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 12px;
}
.vp-action-item {
min-height: 92px;
padding: 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
}
.vp-action-item > div {
min-width: 0;
}
.vp-map-ops-board {
display: grid;
grid-template-columns: minmax(320px, 0.9fr) minmax(0, 1.1fr);
gap: 12px;
}
.vp-map-ops-readiness,
.vp-map-ops-work {
display: grid;
gap: 12px;
}
.vp-map-ops-readiness {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.vp-map-ops-readiness-item,
.vp-map-ops-work-item {
min-height: 128px;
padding: 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
display: grid;
gap: 9px;
align-content: start;
}
.vp-map-ops-value,
.vp-map-ops-work-value {
color: var(--vp-text);
font-size: 22px;
font-weight: 700;
line-height: 28px;
}
.vp-map-ops-work {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.vp-map-ops-work-item {
width: 100%;
color: inherit;
text-align: left;
cursor: pointer;
transition: border-color 0.16s ease, box-shadow 0.16s ease, background 0.16s ease;
}
.vp-map-ops-work-item:hover,
.vp-map-ops-work-item:focus-visible {
border-color: rgba(22, 100, 255, 0.42);
box-shadow: 0 0 0 3px rgba(22, 100, 255, 0.08);
outline: none;
}
.vp-map-ops-work-head {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 10px;
}
.vp-runbook-grid {
display: grid;
grid-template-columns: repeat(5, minmax(0, 1fr));
gap: 12px;
}
.vp-runbook-step {
min-height: 210px;
padding: 14px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
display: grid;
grid-template-rows: auto 1fr;
gap: 12px;
}
.vp-runbook-index {
width: 28px;
height: 28px;
border-radius: 7px;
background: rgba(0, 164, 184, 0.1);
color: var(--vp-cyan);
display: flex;
align-items: center;
justify-content: center;
font-size: 13px;
font-weight: 700;
}
.vp-runbook-body {
min-width: 0;
display: grid;
gap: 10px;
align-content: space-between;
}
.vp-runbook-body .semi-typography {
line-height: 20px;
}
.vp-runbook-acceptance {
padding: 9px 10px;
border-radius: 6px;
background: rgba(18, 183, 106, 0.08);
color: var(--vp-text);
font-size: 12px;
line-height: 18px;
}
.vp-workbench-grid {
display: grid;
grid-template-columns: repeat(5, minmax(0, 1fr));
gap: 12px;
}
.vp-workbench-item {
min-height: 190px;
padding: 14px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
display: grid;
gap: 10px;
align-content: start;
}
.vp-workbench-head {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
}
.vp-workbench-head .semi-typography {
font-size: 12px;
line-height: 18px;
text-align: right;
}
.vp-workbench-value {
color: var(--vp-text);
font-size: 24px;
font-weight: 700;
line-height: 30px;
}
.vp-focus-service {
display: grid;
grid-template-columns: minmax(220px, 0.8fr) minmax(420px, 1.6fr) auto;
gap: 16px;
align-items: center;
}
.vp-focus-service-main {
min-width: 0;
}
.vp-focus-service-main .semi-typography {
line-height: 20px;
}
.vp-focus-service-evidence {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 10px;
}
.vp-focus-service-evidence-item {
min-height: 78px;
padding: 11px 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
display: grid;
gap: 7px;
align-content: start;
}
.vp-focus-service-evidence-item span {
color: var(--vp-text-muted);
font-size: 12px;
line-height: 18px;
}
.vp-focus-service-evidence-item strong {
color: var(--vp-text);
font-size: 13px;
line-height: 19px;
font-weight: 600;
word-break: break-word;
}
.vp-operation-flow {
display: grid;
grid-template-columns: repeat(6, minmax(0, 1fr));
gap: 12px;
}
.vp-service-model-grid {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 12px;
}
.vp-service-model-item {
min-height: 132px;
padding: 14px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
display: grid;
gap: 10px;
align-content: start;
}
.vp-service-model-value {
color: var(--vp-text);
font-size: 26px;
font-weight: 700;
line-height: 32px;
}
.vp-scenario-grid {
display: grid;
grid-template-columns: repeat(5, minmax(0, 1fr));
gap: 12px;
}
.vp-scenario-item {
min-height: 220px;
padding: 14px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
display: grid;
gap: 12px;
align-content: space-between;
}
.vp-scenario-main {
display: grid;
gap: 8px;
}
.vp-scenario-main .semi-typography {
line-height: 20px;
}
.vp-scenario-evidence {
min-height: 42px;
padding: 10px;
border-radius: 6px;
background: rgba(22, 100, 255, 0.06);
color: var(--vp-text);
font-size: 12px;
line-height: 18px;
}
.vp-operation-step {
min-height: 176px;
padding: 14px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
display: grid;
grid-template-rows: auto 1fr;
gap: 12px;
}
.vp-operation-index {
width: 28px;
height: 28px;
border-radius: 7px;
background: rgba(22, 100, 255, 0.1);
color: var(--vp-primary);
display: flex;
align-items: center;
justify-content: center;
font-size: 13px;
font-weight: 700;
}
.vp-operation-content {
min-width: 0;
display: grid;
gap: 10px;
align-content: space-between;
}
.vp-operation-content .semi-typography {
line-height: 20px;
}
.vp-priority-alert {
min-height: 92px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
}
.vp-priority-alert-main {
min-width: 0;
}
.vp-capability-grid {
display: grid;
grid-template-columns: repeat(5, minmax(0, 1fr));
gap: 12px;
}
.vp-capability-item {
min-height: 154px;
padding: 14px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
display: grid;
gap: 12px;
align-content: space-between;
}
.vp-capability-item .semi-typography {
line-height: 20px;
}
.vp-capability-status {
justify-self: start;
}
.vp-capability-item .semi-button {
justify-self: start;
}
.vp-vehicle-map-layout {
display: grid;
grid-template-columns: minmax(0, 1fr) 280px;
gap: 16px;
}
.vp-source-fusion-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 12px;
}
.vp-source-fusion-item {
min-height: 250px;
padding: 14px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
display: grid;
gap: 12px;
align-content: space-between;
}
.vp-source-fusion-head {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 10px;
}
.vp-source-fusion-contribution {
min-height: 52px;
display: flex;
flex-wrap: wrap;
align-content: flex-start;
gap: 6px;
}
.vp-source-fusion-facts {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 8px;
}
.vp-source-fusion-fact {
min-height: 64px;
padding: 9px 10px;
border: 1px solid var(--vp-border);
border-radius: 6px;
background: #fff;
display: grid;
gap: 5px;
align-content: start;
}
.vp-source-fusion-fact span {
color: var(--vp-text-muted);
font-size: 12px;
line-height: 18px;
}
.vp-source-fusion-fact strong {
color: var(--vp-text);
font-size: 13px;
line-height: 19px;
font-weight: 600;
word-break: break-word;
}
.vp-vehicle-detail-map {
height: 300px;
}
.vp-vehicle-map-side {
display: flex;
min-width: 0;
flex-direction: column;
gap: 10px;
}
.vp-vehicle-map-source {
display: flex;
min-height: 84px;
flex-direction: column;
gap: 6px;
padding: 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
}
.vp-vehicle-map-source-main {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
}
.vp-source-toolbar {
margin-bottom: 12px;
}
.vp-realtime-strip {
display: grid;
grid-template-columns: repeat(6, minmax(0, 1fr));
gap: 12px;
margin-bottom: 16px;
}
.vp-realtime-strip-item {
min-height: 72px;
padding: 12px;
border: 1px solid var(--vp-border);
border-radius: var(--vp-radius);
background: #fbfcff;
}
.vp-realtime-strip-label {
color: var(--vp-text-muted);
font-size: 12px;
line-height: 18px;
}
.vp-realtime-strip-value {
margin-top: 6px;
color: var(--vp-text);
font-size: 15px;
font-weight: 600;
line-height: 22px;
word-break: break-all;
}
.semi-navigation-item-text {
font-size: 14px;
}
@media (max-width: 900px) {
.vp-evidence-grid,
.vp-action-grid,
.vp-map-ops-board,
.vp-map-ops-readiness,
.vp-map-ops-work,
.vp-current-service-board,
.vp-current-service-grid,
.vp-realtime-command-board,
.vp-realtime-command-grid,
.vp-source-coverage-grid,
.vp-runbook-grid,
.vp-workbench-grid,
.vp-focus-service,
.vp-focus-service-evidence,
.vp-scenario-grid,
.vp-operation-flow,
.vp-service-model-grid,
.vp-capability-grid,
.vp-conclusion-grid,
.vp-monitor-layout,
.vp-alert-flow,
.vp-alert-dispatch-grid,
.vp-alert-command-board,
.vp-alert-command-grid,
.vp-sla-summary,
.vp-risk-grid,
.vp-ops-action-grid,
.vp-alert-ops-grid,
.vp-stat-workspace,
.vp-stat-insight-grid,
.vp-stat-definition-grid,
.vp-stat-closure-board,
.vp-bi-publish-board,
.vp-bi-publish-grid,
.vp-stat-audit-board,
.vp-stat-audit-grid,
.vp-trajectory-anomaly-grid,
.vp-source-fusion-grid,
.vp-source-fusion-facts,
.vp-vehicle-map-layout,
.vp-playback-layout,
.vp-playback-timeline {
grid-template-columns: 1fr;
}
.vp-stat-closure-action {
align-items: flex-start;
flex-direction: column;
}
}