Files
lingniu-vehicle-ingest/vehicle-data-platform/apps/web/src/v2/styles/workspace.css
2026-07-18 02:02:40 +08:00

4228 lines
84 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
* Shared Semi UI workspace primitives.
*
* Keep reusable component rules here instead of adding more page-specific
* overrides to v2.css. Page modules may size their content regions, while
* title, metadata and action anatomy remain consistent.
*/
.v2-workspace-panel-header {
display: flex;
min-height: 52px;
flex: 0 0 auto;
align-items: center;
justify-content: space-between;
gap: 16px;
border-bottom: 1px solid var(--v2-border);
background: linear-gradient(180deg, #fff 0%, #fbfcfe 100%);
padding: 8px 14px;
}
/*
* Semi UI admin workspace scale.
* Access management is the visual baseline: history and alerts use the same
* 1213px reading scale, progressive detail disclosure and list-first layout.
*/
@media (min-width: 681px) {
.v2-history-page,
.v2-alert-page {
gap: 12px;
padding: 16px 18px 20px;
background: #f6f8fb;
}
.v2-history-toolbar {
min-height: 76px;
grid-template-columns: minmax(240px, 1fr) minmax(340px, 1.45fr) minmax(120px, .55fr) minmax(130px, .6fr) auto;
gap: 10px;
padding: 13px 14px;
}
.v2-history-toolbar label,
.v2-history-range legend {
gap: 6px;
color: #647287;
font-size: 12px;
font-weight: 650;
}
.v2-history-toolbar .semi-input-wrapper,
.v2-history-toolbar .semi-select,
.v2-history-range > div {
min-height: 38px;
border-radius: 7px;
}
.v2-history-toolbar .semi-input,
.v2-history-toolbar .semi-select-selection-text,
.v2-history-range > div input {
font-size: 13px;
}
.v2-history-toolbar-actions > .semi-button {
height: 38px;
font-size: 13px;
}
.v2-history-metrics-card.semi-card {
min-height: 50px;
border-radius: 9px;
}
.v2-history-metrics {
min-height: 50px;
gap: 9px;
padding: 8px 14px;
}
.v2-history-metrics > strong {
font-size: 12px;
}
.v2-history-metric-tag.semi-tag {
height: 30px;
border-radius: 7px;
font-size: 11px;
}
.v2-history-metric-scroll > span {
font-size: 11px;
}
.v2-history-workspace {
grid-template-columns: minmax(0, 1fr);
gap: 12px;
}
.v2-history-workspace.is-inspector-open {
grid-template-columns: minmax(760px, 1fr) 390px;
}
.v2-history-main {
grid-template-rows: 76px 56px minmax(280px, 1fr);
gap: 10px;
}
.v2-history-main.has-expanded-trend {
grid-template-rows: 76px 230px minmax(280px, 1fr);
}
.v2-history-trend.is-expanded.semi-card {
height: 230px;
min-height: 230px;
}
.v2-history-summary.semi-card,
.v2-history-trend.semi-card,
.v2-history-table-card.semi-card,
.v2-alert-filter-card.semi-card,
.v2-alert-kpis-card.semi-card,
.v2-alert-table-card.semi-card,
.v2-alert-inspector.semi-card {
border-radius: 9px;
}
.v2-history-summary small {
font-size: 11px;
}
.v2-history-summary strong,
.v2-history-summary strong.is-source {
margin-top: 7px;
font-size: 20px;
}
.v2-history-table-card .v2-workspace-panel-header,
.v2-alert-table-card .v2-workspace-panel-header {
min-height: 50px;
padding-inline: 15px 12px;
}
.v2-history-table-card .v2-workspace-panel-copy > h5.semi-typography,
.v2-alert-table-card .v2-workspace-panel-copy > h5.semi-typography {
font-size: 15px;
}
.v2-history-table-card .v2-workspace-panel-meta,
.v2-alert-table-card .v2-workspace-panel-meta {
font-size: 11px;
}
.v2-history-table-card .v2-workspace-panel-actions > .semi-button,
.v2-history-table-card .v2-workspace-panel-actions > .semi-select,
.v2-alert-table-card .v2-workspace-panel-actions > .semi-button {
min-height: 32px;
font-size: 12px;
}
.v2-history-data-table.semi-table-wrapper,
.v2-alert-event-table.semi-table-wrapper {
font-size: 12px;
}
.v2-history-table-scroll .v2-history-data-table.semi-table-wrapper .semi-table-thead > .semi-table-row > .semi-table-row-head,
.v2-alert-table-scroll .v2-alert-event-table.semi-table-wrapper .semi-table-thead > .semi-table-row > .semi-table-row-head {
height: 42px;
font-size: 11px;
}
.v2-history-data-table .semi-table-tbody > .semi-table-row > .semi-table-row-cell,
.v2-alert-event-table .semi-table-tbody > .semi-table-row > .semi-table-row-cell {
height: 50px;
padding: 7px 10px;
}
.v2-history-data-table .semi-table-row-cell > .semi-button,
.v2-alert-table-card .semi-table-row-cell > .semi-button {
font-size: 11px;
}
.v2-history-table-card > .semi-card-body > footer,
.v2-alert-table-card > .semi-card-body > footer {
min-height: 46px;
padding-inline: 12px;
font-size: 12px;
}
.v2-history-table-card > .semi-card-body > footer button,
.v2-history-table-card > .semi-card-body > footer select,
.v2-alert-table-card > .semi-card-body > footer button,
.v2-alert-table-card > .semi-card-body > footer select {
height: 30px;
font-size: 12px;
}
.v2-history-side {
overflow: auto;
}
.v2-history-evidence-descriptions .semi-descriptions-key,
.v2-history-evidence-descriptions .semi-descriptions-value,
.v2-evidence-values .semi-descriptions-key > span,
.v2-evidence-values .semi-descriptions-value {
font-size: 11px;
}
.v2-evidence-values .semi-descriptions-key small {
font-size: 9px;
}
.v2-history-export-sidesheet .semi-sidesheet-inner {
width: min(100vw, 520px) !important;
}
.v2-alert-page {
overflow: hidden;
}
.v2-alert-tabs {
min-height: 48px;
margin: 0;
border: 1px solid var(--v2-border);
border-radius: 10px;
padding: 4px;
background: #fff;
box-shadow: var(--v2-shadow);
}
.v2-alert-tabs .v2-segmented-tab.semi-button {
min-height: 38px;
font-size: 13px;
}
.v2-alert-filter {
gap: 10px;
padding: 13px 14px;
}
.v2-alert-filter label {
gap: 6px;
color: #647287;
font-size: 12px;
font-weight: 650;
}
.v2-alert-filter label > div,
.v2-alert-filter .semi-select,
.v2-alert-filter .semi-input-wrapper,
.v2-alert-filter > .semi-button {
min-height: 38px;
border-radius: 7px;
}
.v2-alert-filter .semi-input,
.v2-alert-filter .semi-select-selection-text,
.v2-alert-filter > .semi-button {
font-size: 13px;
}
.v2-alert-kpis-card.semi-card {
min-height: 76px;
margin-top: 0;
}
.v2-alert-kpis-card > .semi-card-body {
grid-template-columns: minmax(0, 1fr) 300px;
}
.v2-alert-kpis,
.v2-alert-kpis .v2-metric-action-content {
min-height: 76px;
}
.v2-alert-kpis small {
font-size: 11px;
}
.v2-alert-kpis strong {
margin-top: 7px;
font-size: 22px;
}
.v2-alert-secondary-states span {
font-size: 11px;
}
.v2-alert-secondary-states b {
font-size: 16px;
}
.v2-alert-workspace {
grid-template-columns: minmax(0, 1fr);
gap: 12px;
margin-top: 0;
}
.v2-alert-workspace.is-inspector-open {
grid-template-columns: minmax(760px, 1fr) 390px;
}
.v2-alert-event-vehicle strong {
font-size: 12px;
}
.v2-alert-event-vehicle small {
font-size: 10px;
}
.v2-alert-inspector-content {
gap: 10px;
padding: 10px;
}
.v2-alert-detail-card .semi-card-header,
.v2-alert-detail-card .semi-card-header .semi-card-header-title {
font-size: 12px;
}
.v2-alert-descriptions .semi-descriptions-key,
.v2-alert-descriptions .semi-descriptions-value,
.v2-alert-timeline,
.v2-alert-disposition-card {
font-size: 11px;
}
}
.v2-workspace-panel-header.is-compact {
min-height: 42px;
gap: 10px;
padding: 7px 12px;
}
.v2-workspace-panel-header.is-compact > .v2-workspace-panel-copy {
gap: 1px;
}
.v2-workspace-panel-header.is-compact > .v2-workspace-panel-copy > h5.semi-typography {
font-size: 12px;
}
.v2-workspace-panel-header.is-compact > .v2-workspace-panel-copy > .semi-typography,
.v2-workspace-panel-header.is-compact > .v2-workspace-panel-actions > .v2-workspace-panel-meta {
font-size: 10px;
}
.v2-workspace-panel-header.is-inverted {
min-height: 52px;
border-bottom-color: rgba(255, 255, 255, .14);
background: transparent;
padding: 9px 12px 8px;
}
.v2-workspace-panel-header.is-inverted > .v2-workspace-panel-copy > h5.semi-typography {
color: #f8fbff;
font-size: 14px;
text-shadow: 0 1px 1px rgba(0, 0, 0, .18);
}
.v2-workspace-panel-header.is-inverted > .v2-workspace-panel-copy > .semi-typography {
color: #c8d3df;
font-size: 10px;
}
.v2-workspace-panel-header.is-inverted > .v2-workspace-panel-actions > .v2-workspace-panel-meta {
border-radius: 999px;
background: rgba(37, 99, 235, .46);
padding: 3px 8px;
color: #edf4ff;
font-size: 10px;
font-weight: 700;
}
.v2-workspace-panel-copy {
display: flex;
min-width: 0;
flex-direction: column;
gap: 3px;
}
.v2-workspace-panel-header > .v2-workspace-panel-copy {
align-items: flex-start;
justify-content: center;
flex-direction: column;
}
.v2-workspace-panel-header > .v2-workspace-panel-copy > h5.semi-typography {
margin: 0;
overflow: hidden;
color: #24364d;
font-size: 14px;
font-weight: 700;
letter-spacing: -.012em;
line-height: 1.3;
text-overflow: ellipsis;
white-space: nowrap;
}
.v2-workspace-panel-header > .v2-workspace-panel-copy > .semi-typography {
overflow: hidden;
max-width: min(720px, 62vw);
color: #748398;
font-size: 11px;
line-height: 1.45;
text-overflow: ellipsis;
white-space: nowrap;
}
.v2-workspace-panel-actions {
display: flex;
min-width: 0;
flex: 0 0 auto;
align-items: center;
justify-content: flex-end;
gap: 8px;
}
.v2-workspace-panel-header > .v2-workspace-panel-actions {
align-items: center;
justify-content: flex-end;
flex-direction: row;
}
.v2-workspace-panel-actions > a {
display: inline-flex;
color: inherit;
text-decoration: none;
}
.v2-workspace-panel-header > .v2-workspace-panel-actions > .v2-workspace-panel-meta {
overflow: hidden;
color: #748398;
font-size: 11px;
font-style: normal;
line-height: 1.4;
text-overflow: ellipsis;
white-space: nowrap;
}
.v2-workspace-panel-meta > .semi-tag,
.v2-workspace-result-meta > .semi-tag {
min-height: 24px;
margin: 0;
border-radius: 999px;
padding-inline: 8px;
font-size: 10px;
font-variant-numeric: tabular-nums;
font-weight: 650;
}
.v2-workspace-result-meta {
display: inline-flex;
min-width: 0;
align-items: center;
gap: 7px;
}
.v2-workspace-result-meta > span {
color: #748398;
font-size: 10px;
font-variant-numeric: tabular-nums;
}
.v2-workspace-panel-actions > .semi-button {
min-height: 34px;
border-radius: 8px;
font-size: 11px;
font-weight: 600;
}
.v2-workspace-panel-actions > a > .semi-button {
min-height: 34px;
border-radius: 8px;
font-size: 11px;
font-weight: 600;
}
.v2-workspace-panel-actions > .semi-select {
min-height: 34px;
border-radius: 8px;
}
.v2-live-report-meta {
display: inline-flex;
align-items: center;
gap: 5px;
}
.v2-live-report-meta > i {
width: 7px;
height: 7px;
flex: 0 0 auto;
border-radius: 50%;
background: #aab3c0;
}
.v2-live-report-meta > i.is-online {
background: var(--v2-green);
box-shadow: 0 0 0 4px rgba(26, 160, 109, .1);
}
.v2-access-inspector-header {
position: sticky;
z-index: 2;
top: 0;
}
@media (max-width: 680px) {
.v2-workspace-panel-header {
min-height: 50px;
align-items: flex-start;
gap: 8px;
padding: 9px 10px;
}
.v2-workspace-panel-copy { gap: 2px; }
.v2-workspace-panel-header > .v2-workspace-panel-copy > h5.semi-typography { font-size: 14px; }
.v2-workspace-panel-header > .v2-workspace-panel-copy > .semi-typography {
max-width: 210px;
font-size: 10px;
}
.v2-workspace-panel-actions {
max-width: 64%;
flex-wrap: wrap;
gap: 5px;
}
.v2-workspace-panel-header > .v2-workspace-panel-actions > .v2-workspace-panel-meta { font-size: 10px; }
.v2-workspace-panel-actions > .semi-button {
min-height: 32px;
padding-inline: 9px;
font-size: 10px;
}
.v2-workspace-panel-actions > a > .semi-button {
min-height: 32px;
padding-inline: 9px;
font-size: 10px;
}
.v2-workspace-panel-header.is-compact {
min-height: 42px;
align-items: center;
padding: 7px 10px;
}
.v2-workspace-panel-header.is-compact > .v2-workspace-panel-copy > h5.semi-typography { font-size: 12px; }
.v2-workspace-panel-header.is-inverted {
min-height: 48px;
align-items: center;
padding: 7px 10px 6px;
}
.v2-workspace-panel-header.is-inverted > .v2-workspace-panel-copy > h5.semi-typography { font-size: 13px; }
.v2-workspace-result-meta > span {
display: none;
}
}
/*
* Alert and access workspaces use the same progressive-disclosure anatomy:
* core filters stay in the page, secondary filters and governance live in
* SideSheets, and mobile detail never pushes the primary list below the fold.
*/
.v2-alert-filter.v2-alert-filter-primary {
grid-template-columns: minmax(300px, 1.5fr) minmax(140px, .65fr) minmax(150px, .7fr) auto auto auto;
}
.v2-alert-more-filter.semi-button {
min-width: 112px;
border-color: #d8e1ed;
color: #516179;
}
.v2-alert-more-filter.semi-button:hover {
border-color: #9ebdf0;
background: #f4f8ff;
color: var(--v2-blue);
}
.v2-alert-kpis-card > .semi-card-body {
display: grid;
grid-template-columns: minmax(0, 1fr) 286px;
}
.v2-alert-kpis {
grid-template-columns: repeat(4, minmax(112px, 1fr));
}
.v2-alert-secondary-states {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
align-items: stretch;
border-left: 1px solid var(--v2-border);
background: #fafbfd;
padding: 8px;
gap: 6px;
}
.v2-alert-secondary-states > .semi-button {
height: auto;
min-width: 0;
border: 1px solid transparent;
border-radius: 8px;
padding: 7px 8px;
color: #68788e;
}
.v2-alert-secondary-states > .semi-button:hover,
.v2-alert-secondary-states > .semi-button[aria-pressed="true"] {
border-color: #d5e3f8;
background: #eef5ff;
color: var(--v2-blue);
}
.v2-alert-secondary-states .semi-button-content {
display: flex;
min-width: 0;
align-items: center;
justify-content: center;
flex-direction: column;
gap: 4px;
}
.v2-alert-secondary-states span {
font-size: 10px;
white-space: nowrap;
}
.v2-alert-secondary-states b {
color: #34455c;
font-size: 14px;
line-height: 1;
font-variant-numeric: tabular-nums;
}
.v2-alert-sheet-title,
.v2-access-sheet-title {
display: flex;
min-width: 0;
flex-direction: column;
gap: 3px;
}
.v2-alert-sheet-title strong,
.v2-access-sheet-title strong {
color: #26374e;
font-size: 15px;
}
.v2-alert-sheet-title span,
.v2-access-sheet-title span {
overflow: hidden;
color: #7c899b;
font-size: 11px;
text-overflow: ellipsis;
white-space: nowrap;
}
.v2-alert-filter-sidesheet .semi-sidesheet-body,
.v2-alert-detail-sidesheet .semi-sidesheet-body,
.v2-access-detail-sidesheet .semi-sidesheet-body,
.v2-access-governance-sidesheet .semi-sidesheet-body {
background: #f6f8fb;
}
.v2-alert-advanced-filter {
display: grid;
gap: 16px;
padding: 4px 2px;
}
.v2-alert-advanced-filter label {
display: grid;
gap: 7px;
color: #5f6f84;
font-size: 12px;
font-weight: 650;
}
.v2-alert-advanced-filter .semi-select,
.v2-alert-advanced-filter .semi-input-wrapper {
width: 100%;
min-height: 40px;
border-radius: 8px;
}
.v2-alert-sheet-footer {
display: flex;
align-items: center;
justify-content: flex-end;
gap: 8px;
}
.v2-alert-detail-sidesheet .semi-sidesheet-body,
.v2-access-detail-sidesheet .semi-sidesheet-body {
padding: 0;
}
.v2-alert-inspector.is-sheet.semi-card,
.v2-access-inspector-v3.is-sheet.semi-card {
position: static !important;
width: 100% !important;
max-height: none;
overflow: visible;
border: 0;
border-radius: 0;
box-shadow: none;
}
.v2-alert-inspector.is-sheet > .semi-card-body,
.v2-access-inspector-v3.is-sheet > .semi-card-body {
min-height: 100%;
}
.v2-alert-inspector.is-sheet .v2-alert-inspector-heading,
.v2-access-inspector-v3.is-sheet .v2-access-inspector-header {
position: static;
background: #fff;
}
.v2-access-governance {
display: grid;
gap: 12px;
}
.v2-access-governance-summary.semi-card {
overflow: hidden;
border: 1px solid var(--v2-border);
border-radius: 10px;
box-shadow: 0 8px 24px rgba(31, 50, 76, .05);
}
.v2-access-governance-summary > .semi-card-body {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.v2-access-governance-summary > .semi-card-body > div {
display: grid;
min-width: 0;
gap: 6px;
padding: 13px 14px;
}
.v2-access-governance-summary > .semi-card-body > div + div {
border-left: 1px solid var(--v2-border);
}
.v2-access-governance-summary small {
color: #7d8b9e;
font-size: 10px;
}
.v2-access-governance-summary strong {
color: #2f4159;
font-size: 19px;
font-variant-numeric: tabular-nums;
}
.v2-access-governance .v2-access-identity-queue-v3,
.v2-access-governance .v2-access-settings {
border-radius: 10px;
box-shadow: 0 8px 24px rgba(31, 50, 76, .04);
}
.v2-access-governance .v2-access-identity-queue-v3 > div {
grid-template-columns: 1fr;
}
.v2-access-governance .v2-access-settings fieldset {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.v2-access-governance .v2-access-settings label,
.v2-access-governance .v2-access-settings input {
width: 100%;
box-sizing: border-box;
}
.v2-access-governance .v2-access-settings button,
.v2-access-governance .v2-access-settings p,
.v2-access-governance .v2-access-settings fieldset > small {
grid-column: 1 / -1;
}
@media (max-width: 1180px) {
.v2-alert-filter.v2-alert-filter-primary {
grid-template-columns: minmax(250px, 1.35fr) minmax(130px, .65fr) minmax(140px, .7fr) auto auto auto;
}
.v2-alert-kpis-card > .semi-card-body {
grid-template-columns: minmax(0, 1fr) 248px;
}
}
@media (max-width: 900px) {
.v2-alert-filter.v2-alert-filter-primary {
grid-template-columns: minmax(240px, 1fr) repeat(2, minmax(130px, .6fr)) repeat(3, auto);
}
.v2-alert-kpis-card > .semi-card-body {
grid-template-columns: 1fr;
}
.v2-alert-secondary-states {
border-top: 1px solid var(--v2-border);
border-left: 0;
}
}
@media (max-width: 680px) {
.v2-access-page-v3 > .v2-page-heading {
min-height: 0;
flex-wrap: wrap;
align-items: flex-start;
gap: 8px;
padding-block: 4px;
}
.v2-access-page-v3 > .v2-page-heading .v2-page-heading-copy {
width: 100%;
flex: 1 0 100%;
}
.v2-access-page-v3 > .v2-page-heading .v2-page-heading-copy > div {
flex-wrap: wrap;
}
.v2-access-page-v3 > .v2-page-heading .v2-page-heading-copy h2 {
white-space: nowrap;
}
.v2-access-page-v3 > .v2-page-heading .v2-page-heading-aside {
width: 100%;
justify-content: flex-start;
}
.v2-alert-filter.v2-alert-filter-primary {
grid-template-columns: 1fr 1fr;
}
.v2-alert-filter.v2-alert-filter-primary label:first-child {
grid-column: 1 / -1;
}
.v2-alert-filter.v2-alert-filter-primary > .semi-button {
min-width: 0;
width: 100%;
}
.v2-alert-filter.v2-alert-filter-primary > .v2-secondary-button {
grid-column: 1 / -1;
}
.v2-alert-kpis {
display: grid;
min-height: 0;
grid-template-columns: repeat(2, minmax(0, 1fr));
overflow: hidden;
}
.v2-alert-kpis .v2-metric-action {
min-width: 0;
min-height: 74px;
flex: none;
}
.v2-alert-kpis .v2-metric-action.is-notice {
grid-column: auto;
}
.v2-alert-kpis .v2-metric-action:nth-child(odd)::before {
display: none;
}
.v2-alert-kpis .v2-metric-action:nth-child(n + 3) {
border-top: 1px solid var(--v2-border);
}
.v2-alert-secondary-states {
padding: 7px;
}
.v2-alert-secondary-states span { font-size: 9px; }
.v2-alert-secondary-states b { font-size: 13px; }
.v2-alert-filter-sidesheet .semi-sidesheet-inner,
.v2-alert-detail-sidesheet .semi-sidesheet-inner,
.v2-access-detail-sidesheet .semi-sidesheet-inner,
.v2-access-governance-sidesheet .semi-sidesheet-inner {
width: 100% !important;
}
.v2-alert-sheet-footer {
width: 100%;
}
.v2-alert-sheet-footer > .semi-button {
min-height: 40px;
flex: 1;
}
.v2-alert-inspector.is-sheet .v2-alert-inspector-content,
.v2-access-inspector-v3.is-sheet .v2-access-protocol-details {
padding-bottom: 14px;
}
.v2-access-governance-summary > .semi-card-body {
grid-template-columns: 1fr;
}
.v2-access-governance-summary > .semi-card-body > div {
grid-template-columns: 1fr auto;
align-items: center;
}
.v2-access-governance-summary > .semi-card-body > div + div {
border-top: 1px solid var(--v2-border);
border-left: 0;
}
.v2-access-governance .v2-access-settings fieldset {
grid-template-columns: 1fr;
}
}
/*
* Account grants and reconciliation details follow the same progressive
* disclosure pattern as alerts and access: dense summaries stay in the
* workspace; time-window and evidence editing move into one stable SideSheet.
*/
.v2-assigned-vins {
max-height: min(440px, 48vh);
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
align-content: start;
padding: 2px 3px 2px 0;
overscroll-behavior: contain;
scrollbar-gutter: stable;
}
.v2-assigned-vins > .v2-assigned-vehicle-card.semi-card {
min-height: 102px;
padding: 11px 12px;
content-visibility: auto;
contain-intrinsic-size: auto 102px;
}
.v2-assigned-vehicle-card > .semi-card-body > header {
align-items: center;
}
.v2-assigned-vehicle-card > .semi-card-body > header > span:first-child {
overflow: hidden;
flex: 1;
}
.v2-assigned-vehicle-actions {
display: inline-flex;
flex: 0 0 auto;
align-items: center;
gap: 3px;
}
.v2-assigned-vehicle-card > .semi-card-body > header .v2-assigned-vehicle-actions > .semi-button:first-child {
width: auto;
min-width: 76px;
height: 30px;
flex: 0 0 auto;
border-color: #d6e0ec;
padding: 0 9px;
color: #4e6885;
font-size: 10px;
}
.v2-assigned-vehicle-card > .semi-card-body > header .v2-assigned-vehicle-actions > .semi-button:first-child:hover {
border-color: #a9c6ef;
background: #f2f7ff;
color: var(--v2-blue);
}
.v2-assigned-vehicle-card > .semi-card-body > .v2-assigned-vehicle-interval {
display: grid;
grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
align-items: center;
gap: 8px;
margin-top: 10px;
border-top: 1px solid #e7edf4;
padding-top: 9px;
}
.v2-assigned-vehicle-interval > span {
display: grid;
min-width: 0;
gap: 3px;
}
.v2-assigned-vehicle-interval small {
color: #8a97a8;
font-size: 9px;
}
.v2-assigned-vehicle-interval strong {
overflow: hidden;
color: #53677e;
font-size: 10px;
font-weight: 650;
font-variant-numeric: tabular-nums;
text-overflow: ellipsis;
white-space: nowrap;
}
.v2-assigned-vehicle-interval > i {
color: #a8b3c1;
font-size: 10px;
font-style: normal;
}
.v2-user-grant-sidesheet .semi-sidesheet-inner {
width: min(420px, 100vw) !important;
}
.v2-user-grant-sidesheet .semi-sidesheet-header,
.v2-reconcile-detail-sidesheet .semi-sidesheet-header {
min-height: 68px;
border-bottom: 1px solid #e1e8f0;
background: linear-gradient(180deg, #fff, #f8fafd);
padding: 12px 16px;
}
.v2-user-grant-sidesheet .semi-sidesheet-body {
background: #f6f8fb;
padding: 16px;
}
.v2-user-grant-sheet-title,
.v2-reconcile-sheet-title {
display: grid;
min-width: 0;
gap: 4px;
}
.v2-user-grant-sheet-title strong,
.v2-reconcile-sheet-title strong {
color: #263b53;
font-size: 16px;
}
.v2-user-grant-sheet-title span,
.v2-reconcile-sheet-title span {
overflow: hidden;
color: #7b899b;
font-size: 10px;
text-overflow: ellipsis;
white-space: nowrap;
}
.v2-user-grant-form {
display: grid;
gap: 15px;
}
.v2-user-grant-summary.semi-card {
overflow: hidden;
border: 1px solid #dce5ef;
border-radius: 10px;
background: #fff;
box-shadow: 0 7px 22px rgba(31, 50, 76, .05);
}
.v2-user-grant-summary > .semi-card-body {
display: grid;
grid-template-columns: minmax(0, .75fr) minmax(0, 1.25fr);
}
.v2-user-grant-summary span {
display: grid;
min-width: 0;
gap: 6px;
padding: 13px 14px;
}
.v2-user-grant-summary span + span {
border-left: 1px solid #e6ecf3;
}
.v2-user-grant-summary small {
color: #8290a3;
font-size: 9px;
}
.v2-user-grant-summary strong {
overflow: hidden;
color: #2e435a;
font-size: 12px;
text-overflow: ellipsis;
white-space: nowrap;
}
.v2-user-grant-form > label {
display: grid;
gap: 7px;
color: #5e7087;
font-size: 12px;
font-weight: 650;
}
.v2-user-grant-form > label > .semi-input-wrapper {
min-height: 42px;
border-color: #d5dfeb;
border-radius: 8px;
background: #fff;
}
.v2-user-grant-form > p {
margin: -2px 0 0;
color: #7d8b9d;
font-size: 10px;
line-height: 1.55;
}
.v2-user-grant-form > p[role="alert"] {
color: var(--v2-red);
}
.v2-user-grant-sheet-footer {
display: flex;
width: 100%;
align-items: center;
justify-content: space-between;
gap: 12px;
}
.v2-user-grant-sheet-footer > .semi-typography {
font-size: 10px;
}
.v2-user-grant-sheet-footer > .semi-button {
min-width: 88px;
min-height: 38px;
border-radius: 8px;
}
.v2-reconcile-overview {
display: grid;
overflow: hidden;
grid-template-columns: minmax(0, 4fr) minmax(170px, 1fr);
gap: 0;
border-bottom: 1px solid #e3eaf2;
background: #fff;
padding: 0;
}
.v2-reconcile-overview > .v2-reconcile-kpis {
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 0;
border-bottom: 0;
background: #fff;
padding: 0;
}
.v2-reconcile-overview .v2-reconcile-kpi-card.semi-card {
border: 0;
border-radius: 0;
background: #fff;
box-shadow: none;
}
.v2-reconcile-overview .v2-reconcile-kpi-card + .v2-reconcile-kpi-card {
border-left: 1px solid #e4eaf2;
}
.v2-reconcile-overview .v2-reconcile-kpi-card > .semi-card-body {
min-height: 76px;
padding: 10px 14px !important;
}
.v2-reconcile-overview .v2-reconcile-kpi-card.is-active {
background: linear-gradient(180deg, #f1f7ff 0%, #edf5ff 100%);
box-shadow: inset 0 -3px #1f6feb;
}
.v2-reconcile-sla.semi-card {
min-width: 0;
overflow: hidden;
border: 0;
border-left: 1px solid #e4eaf2;
border-radius: 0;
background: linear-gradient(145deg, #fff 0%, #fff9f8 100%);
box-shadow: none;
}
.v2-reconcile-sla > .semi-card-body {
display: grid;
min-height: 76px;
grid-template-columns: minmax(0, 1fr) auto;
align-content: center;
align-items: center;
gap: 4px 10px;
padding: 10px 13px !important;
}
.v2-reconcile-sla span {
display: flex;
min-width: 0;
align-items: center;
gap: 7px;
}
.v2-reconcile-sla .semi-tag {
min-height: 21px;
border-radius: 999px;
font-size: 9px;
}
.v2-reconcile-sla small {
color: #728197;
font-size: 10px;
font-weight: 650;
}
.v2-reconcile-sla strong {
grid-column: 2;
grid-row: 1 / 3;
color: #33475e;
font-size: 24px;
line-height: 1;
font-variant-numeric: tabular-nums;
}
.v2-reconcile-sla.is-overdue strong {
color: #c2413d;
}
.v2-reconcile-sla p {
margin: 0;
color: #8a97a8;
font-size: 9px;
}
.v2-reconcile-layout {
grid-template-columns: minmax(0, 1fr);
}
.v2-reconcile-layout.is-trend-open {
grid-template-columns: minmax(0, 1fr) 260px;
}
.v2-reconcile-main {
border-right: 0;
}
.v2-reconcile-layout.is-trend-open > .v2-reconcile-main {
border-right: 1px solid #e3eaf2;
}
.v2-reconcile-table .semi-table {
width: 100% !important;
min-width: 934px;
}
.v2-reconcile-trend-slot {
min-width: 0;
}
.v2-reconcile-trend-slot > .v2-reconcile-trend.semi-card {
height: 100%;
}
.v2-reconcile-trend-open.semi-button,
.v2-reconcile-trend-toggle.semi-button {
min-height: 36px;
border-radius: 8px;
color: #3f648f;
font-size: 11px;
font-weight: 650;
}
.v2-reconcile-detail-sidesheet .semi-sidesheet-inner {
width: min(680px, 100vw) !important;
}
.v2-reconcile-detail-sidesheet .semi-sidesheet-body {
overflow: auto;
background: #f6f8fb;
padding: 0;
}
.v2-reconcile-detail.is-sheet.semi-card {
position: static !important;
width: 100% !important;
max-height: none;
overflow: visible;
border: 0;
border-radius: 0;
box-shadow: none;
}
.v2-reconcile-detail.is-sheet > .semi-card-body {
min-height: 100%;
}
.v2-reconcile-detail.is-sheet .v2-reconcile-detail-heading {
position: static;
background: #fff;
}
@media (max-width: 900px) {
.v2-reconcile-overview {
grid-template-columns: minmax(0, 4fr) minmax(156px, 1fr);
}
.v2-assigned-vins {
grid-template-columns: minmax(0, 1fr);
}
}
@media (max-width: 680px) {
.v2-assigned-vins {
max-height: min(360px, 42dvh);
gap: 7px;
}
.v2-assigned-vins > .v2-assigned-vehicle-card.semi-card {
min-height: 106px;
padding: 11px;
contain-intrinsic-size: auto 106px;
}
.v2-assigned-vehicle-card > .semi-card-body > .v2-assigned-vehicle-interval {
grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
}
.v2-user-grant-sidesheet .semi-sidesheet-inner,
.v2-reconcile-detail-sidesheet .semi-sidesheet-inner {
width: 100% !important;
}
.v2-user-grant-sidesheet .semi-sidesheet-body {
padding: 12px;
}
.v2-user-grant-sheet-footer > .semi-typography {
max-width: 190px;
}
.v2-reconcile-overview {
grid-template-columns: minmax(0, 1fr);
gap: 7px;
background: transparent;
padding: 8px 10px;
}
.v2-reconcile-overview > .v2-reconcile-kpis {
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 6px;
background: transparent;
}
.v2-reconcile-overview .v2-reconcile-kpi-card.semi-card {
overflow: hidden;
border: 1px solid #e0e7f0;
border-radius: 9px;
box-shadow: 0 3px 10px rgba(31, 53, 80, .035);
}
.v2-reconcile-overview .v2-reconcile-kpi-card + .v2-reconcile-kpi-card {
border-left: 1px solid #e0e7f0;
}
.v2-reconcile-overview .v2-reconcile-kpi-card:last-child {
grid-column: auto;
}
.v2-reconcile-sla.semi-card {
border: 1px solid #e0e7f0;
border-radius: 9px;
}
.v2-reconcile-sla > .semi-card-body {
min-height: 56px;
grid-template-columns: minmax(0, 1fr) auto;
padding: 8px 10px !important;
}
.v2-reconcile-sla strong {
font-size: 21px;
}
.v2-reconcile-detail.is-sheet .v2-reconcile-detail-body {
padding-bottom: 16px;
}
.v2-reconcile-layout,
.v2-reconcile-layout.is-trend-open {
display: flex;
grid-template-columns: none;
}
.v2-reconcile-heading.v2-workspace-panel-header {
min-height: 54px;
padding: 8px 10px;
}
.v2-reconcile-heading > .v2-workspace-panel-copy {
display: none;
}
.v2-reconcile-heading > .v2-workspace-panel-actions {
display: grid;
width: 100%;
max-width: none;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 8px;
}
.v2-reconcile-heading > .v2-workspace-panel-actions > .semi-button {
width: 100%;
min-height: 38px;
}
.v2-reconcile-trend-slot {
order: 2;
}
}
/* Semi UI convergence: vehicle discovery and track replay. */
.v2-vehicle-search-capabilities {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 8px;
margin-top: 18px;
}
.v2-vehicle-search-capabilities > span {
display: grid;
min-width: 0;
grid-template-columns: 30px minmax(0, 1fr);
grid-template-rows: auto auto;
align-items: center;
gap: 2px 9px;
border: 1px solid #e2e9f2;
border-radius: 10px;
background: #fbfcfe;
padding: 10px 12px;
}
.v2-vehicle-search-capabilities svg {
grid-row: 1 / span 2;
color: var(--v2-blue);
font-size: 18px;
}
.v2-vehicle-search-capabilities b {
grid-column: 2;
overflow: hidden;
color: #33475e;
font-size: 11px;
text-overflow: ellipsis;
white-space: nowrap;
}
.v2-vehicle-search-capabilities small {
grid-column: 2;
overflow: hidden;
color: #8794a5;
font-size: 9px;
text-overflow: ellipsis;
white-space: nowrap;
}
.v2-vehicle-record-page {
overflow-anchor: none;
}
.v2-content:has(> .v2-vehicle-record-page) {
overflow-anchor: none;
}
.v2-track-current-card.semi-card {
--track-overlay-text: #23344b;
--track-overlay-muted: #718096;
border-color: rgba(211, 222, 235, .96);
background: rgba(255, 255, 255, .96);
color: var(--track-overlay-text);
box-shadow: 0 12px 34px rgba(25, 45, 72, .14);
}
.v2-track-current-card .v2-workspace-panel-header {
border-bottom: 1px solid #e5ebf2;
background: rgba(249, 251, 254, .94);
}
.v2-track-current-card .v2-workspace-panel-copy > h5.semi-typography {
color: #1f2f45;
}
.v2-track-current-card .v2-workspace-panel-copy > .semi-typography {
color: #78879a;
}
.v2-track-current-card .v2-workspace-panel-meta {
border-radius: 999px;
background: #eaf2ff;
padding: 4px 8px;
color: var(--v2-blue);
}
.v2-track-current-card > .semi-card-body > div {
border-color: #e5ebf2;
}
.v2-track-current-card > .semi-card-body > div > span + span {
border-left-color: #e5ebf2;
}
.v2-track-current-card small {
color: #7c8a9d;
}
.v2-track-current-card > .semi-card-body > div strong {
color: #23344b;
text-shadow: none;
}
.v2-track-current-card em {
color: #718096;
}
.v2-track-current-card > .semi-card-body > p {
color: #53657b;
}
.v2-track-rail-hide-label {
display: none;
}
.v2-track-detail-sheet-title {
display: grid;
min-width: 0;
gap: 3px;
}
.v2-track-detail-sheet-title strong {
color: #1f2f45;
font-size: 16px;
}
.v2-track-detail-sheet-title span {
overflow: hidden;
color: #7c8a9d;
font-size: 10px;
font-weight: 400;
text-overflow: ellipsis;
white-space: nowrap;
}
@media (max-width: 700px) {
.v2-vehicle-search-capabilities {
gap: 6px;
margin-top: 13px;
}
.v2-vehicle-search-capabilities > span {
display: flex;
min-height: 44px;
justify-content: center;
gap: 6px;
padding: 7px 5px;
}
.v2-vehicle-search-capabilities svg {
flex: 0 0 auto;
font-size: 15px;
}
.v2-vehicle-search-capabilities b {
font-size: 10px;
}
.v2-vehicle-search-capabilities small {
display: none;
}
.v2-track-detail-sidesheet .semi-sidesheet-inner {
overflow: hidden;
border-radius: 18px 18px 0 0;
box-shadow: 0 -18px 54px rgba(22, 34, 50, .22);
}
.v2-track-detail-sidesheet .semi-sidesheet-header {
min-height: 64px;
border-bottom: 1px solid #e3eaf2;
padding: 11px 14px;
}
.v2-track-detail-sidesheet .semi-sidesheet-body {
display: flex;
min-height: 0;
overflow: hidden;
background: #fff;
padding: 0;
}
.v2-track-detail-sidesheet .v2-track-rail {
position: relative;
inset: auto;
width: 100%;
height: 100%;
flex: 1 1 auto;
overflow: hidden;
border: 0;
border-radius: 0;
box-shadow: none;
transform: none;
}
.v2-track-detail-sidesheet .v2-track-rail::before,
.v2-track-detail-sidesheet .v2-track-rail-hide {
display: none;
}
.v2-track-detail-sidesheet .v2-track-query-header {
min-height: 52px;
}
.v2-track-detail-sidesheet .v2-track-rail-result {
min-height: 0;
}
}
/* Mileage workspace refinement: expose the active source strategy and keep the
* mobile matrix dense without sacrificing the fixed plate/period columns. */
.v2-mileage-source-trigger .semi-button-content {
min-width: 0;
gap: 5px;
}
.v2-mileage-source-trigger em {
min-width: 0;
overflow: hidden;
color: #55708f;
font-size: 9px;
font-style: normal;
font-weight: 650;
text-overflow: ellipsis;
white-space: nowrap;
}
.v2-mileage-source-trigger b {
flex: 0 0 auto;
}
@media (max-width: 680px) {
.v2-mileage-summary.semi-card {
height: 144px;
min-height: 144px;
}
.v2-mileage-summary > .semi-card-body {
height: 144px;
gap: 4px;
}
.v2-mileage-summary > .semi-card-body > .v2-mileage-summary-card.is-primary,
.v2-mileage-summary > .semi-card-body > .v2-mileage-summary-card.is-primary > .semi-card-body {
height: 75px;
min-height: 75px;
}
.v2-mileage-summary > .semi-card-body > .v2-mileage-summary-card.is-primary > .semi-card-body {
padding: 7px 13px 8px !important;
}
.v2-mileage-summary > .semi-card-body > .is-primary .v2-mileage-summary-value {
min-height: 29px;
line-height: 29px;
}
.v2-mileage-summary-secondary.semi-card-group,
.v2-mileage-summary-secondary.semi-card-group > .v2-mileage-summary-card.semi-card {
height: 65px;
min-height: 65px;
}
.v2-mileage-summary-secondary.semi-card-group > .v2-mileage-summary-card > .semi-card-body {
min-height: 65px;
padding: 7px 8px !important;
}
.v2-mileage-summary-secondary .v2-mileage-summary-card strong {
margin-block: 3px 2px;
font-size: 16px;
}
.v2-mileage-results > .semi-card-body > .v2-workspace-panel-header {
min-height: 66px;
flex-direction: row;
align-items: center;
gap: 8px;
padding: 7px 9px;
}
.v2-mileage-results .v2-workspace-panel-copy {
min-width: 0;
flex: 1 1 auto;
}
.v2-mileage-results .v2-workspace-panel-copy > h5.semi-typography {
font-size: 13px;
}
.v2-mileage-results .v2-workspace-panel-copy > .semi-typography {
overflow: hidden;
font-size: 9px;
text-overflow: ellipsis;
white-space: nowrap;
}
.v2-mileage-results .v2-mileage-result-actions {
display: grid;
min-width: 150px;
max-width: 164px;
flex: 0 0 auto;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 3px 5px;
}
.v2-mileage-results .v2-mileage-result-actions > .v2-workspace-panel-meta {
grid-column: 1 / -1;
overflow: hidden;
font-size: 8px;
text-align: right;
text-overflow: ellipsis;
white-space: nowrap;
}
.v2-mileage-result-actions > .semi-button {
width: auto;
min-width: 0;
height: 30px;
padding-inline: 7px;
font-size: 9px;
}
.v2-mileage-table .semi-table-thead > .semi-table-row > .semi-table-row-head {
height: 38px;
padding-inline: 6px;
}
.v2-mileage-table .semi-table-tbody > .semi-table-row > .semi-table-row-cell {
height: 44px;
padding-inline: 6px;
}
.v2-mileage-table :is(.semi-table-row-head,.semi-table-row-cell).is-plate {
width: 92px;
min-width: 92px;
max-width: 92px;
}
.v2-mileage-table :is(.semi-table-row-head,.semi-table-row-cell).is-date {
width: 72px;
min-width: 72px;
}
.v2-mileage-table :is(.semi-table-row-head,.semi-table-row-cell).is-total {
width: 104px;
min-width: 104px;
}
}
/*
* Account administration follows the same command-center anatomy as alerts,
* access and operations: one panel header, one continuous metric rail and one
* scroll owner. Large vehicle scopes are paged instead of nested-scrolled.
*/
.v2-user-filter-panel.v2-workspace-filter-panel.semi-card {
width: 100%;
max-width: 1480px;
margin-inline: auto;
}
.v2-user-filter-form {
display: grid;
grid-template-columns: minmax(280px, 1fr) 180px auto;
align-items: end;
gap: 10px;
padding: 10px 12px 12px;
}
.v2-user-filter-form > label {
display: grid;
min-width: 0;
gap: 6px;
color: #5d6c80;
font-size: 11px;
font-weight: 650;
}
.v2-user-filter-form :is(.semi-input-wrapper, .semi-select),
.v2-user-filter-reset.semi-button {
width: 100%;
min-height: 40px;
border-radius: 8px;
}
.v2-user-filter-form .semi-input,
.v2-user-filter-form .semi-select-selection {
min-height: 38px;
font-size: 12px;
}
.v2-user-filter-reset.semi-button {
width: auto;
min-width: 88px;
}
.v2-user-list.semi-card {
overflow: hidden;
border-color: #dce5ef;
background: #fff;
box-shadow: 0 8px 26px rgba(31, 50, 76, .045);
}
.v2-user-list > .semi-card-body {
display: block;
padding: 0 !important;
}
.v2-user-directory-header.v2-workspace-panel-header {
min-height: 62px;
padding: 9px 14px;
}
.v2-user-directory-header .v2-workspace-panel-meta > .semi-tag {
min-height: 24px;
border-radius: 999px;
padding-inline: 9px;
font-size: 10px;
font-weight: 650;
}
.v2-user-directory-body {
padding: 10px 12px 12px;
}
.v2-user-directory-metrics {
display: grid;
overflow: hidden;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 0;
border: 1px solid #dfe7f0;
border-radius: 10px;
background: #fff;
margin-bottom: 10px;
}
.v2-user-directory-metrics > span {
position: relative;
display: grid;
min-height: 68px;
align-content: center;
gap: 5px;
border: 0;
border-radius: 0;
background: #fff;
padding: 10px 14px;
}
.v2-user-directory-metrics > span + span {
border-left: 1px solid #e4eaf1;
}
.v2-user-directory-metrics > span.is-primary {
background: linear-gradient(110deg, #edf5ff 0%, #f8fbff 100%);
}
.v2-user-directory-metrics > span.is-primary::after {
position: absolute;
right: 0;
bottom: 0;
left: 0;
height: 3px;
background: var(--v2-blue);
content: '';
}
.v2-user-directory-metrics small {
color: #7b899b;
font-size: 10px;
font-weight: 650;
}
.v2-user-directory-metrics strong {
color: #263b53;
font-size: 22px;
font-variant-numeric: tabular-nums;
letter-spacing: -.035em;
line-height: 1;
}
.v2-user-directory-metrics > .is-primary strong {
color: var(--v2-blue);
}
.v2-user-list-search.semi-input-wrapper {
margin-bottom: 10px;
background: #fff;
}
.v2-user-editor.semi-card {
width: min(940px, 82vw);
background: #f5f7fa;
}
.v2-user-editor form {
gap: 0;
background: #f5f7fa;
padding: 0;
}
.v2-user-editor-title {
z-index: 5;
min-height: 82px;
border: 0;
border-bottom: 1px solid #dfe6ef;
border-radius: 0;
background: rgba(255, 255, 255, .97);
padding: 15px 18px;
box-shadow: 0 5px 18px rgba(31, 53, 80, .035);
backdrop-filter: blur(12px);
}
.v2-user-editor-title > div {
min-width: 0;
}
.v2-user-editor-title p {
overflow: hidden;
max-width: 620px;
color: #7d8b9e;
text-overflow: ellipsis;
white-space: nowrap;
}
.v2-user-editor-tabs.semi-tabs {
width: auto;
flex: 0 0 auto;
border-color: #dfe6ef;
margin: 12px 12px 0;
box-shadow: 0 8px 24px rgba(31, 53, 80, .04);
}
.v2-user-editor-tabs > .semi-tabs-content {
padding: 12px;
}
.v2-user-editor form > footer {
bottom: 0;
min-height: 62px;
margin: 12px 0 0;
padding: 10px 14px;
}
.v2-user-editor form > footer .semi-button {
min-width: 142px;
min-height: 40px;
}
.v2-assigned-toolbar {
display: flex;
min-width: 0;
align-items: center;
justify-content: space-between;
gap: 14px;
margin-top: 14px;
border-top: 1px solid #e6ecf3;
padding-top: 13px;
}
.v2-assigned-toolbar > span {
display: grid;
min-width: 0;
gap: 3px;
}
.v2-assigned-toolbar strong {
color: #31465e;
font-size: 12px;
}
.v2-assigned-toolbar small {
color: #8492a4;
font-size: 9px;
}
.v2-assigned-toolbar > .semi-input-wrapper {
width: min(300px, 46%);
min-height: 36px;
flex: 0 1 300px;
border: 1px solid #d9e3ee;
border-radius: 8px;
background: #f8fafc;
}
.v2-assigned-toolbar > .semi-input-wrapper-focus {
border-color: #8fb7f4;
background: #fff;
box-shadow: 0 0 0 3px rgba(18, 104, 243, .08);
}
.v2-assigned-toolbar .semi-input {
height: 34px;
font-size: 11px;
}
.v2-assigned-vins {
max-height: none;
grid-template-columns: repeat(2, minmax(0, 1fr));
overflow: visible;
margin-top: 9px;
padding: 0;
scrollbar-gutter: auto;
}
.v2-assigned-vins > .v2-assigned-vehicle-card.semi-card {
min-height: 98px;
background: #fbfcfe;
}
.v2-user-assigned-filter-empty.semi-empty {
min-height: 160px;
justify-content: center;
margin-top: 9px;
border: 1px dashed #d8e1ec;
border-radius: 9px;
background: #fafbfd;
}
.v2-user-assigned-filter-empty .semi-empty-image {
display: none;
}
.v2-user-assigned-filter-empty .semi-empty-title {
color: #53657c;
font-size: 12px;
font-weight: 700;
}
.v2-user-assigned-filter-empty .semi-empty-description {
color: #8a97a8;
font-size: 10px;
}
.v2-assigned-pagination {
display: flex;
min-height: 52px;
align-items: center;
justify-content: space-between;
gap: 12px;
border-top: 1px solid #e6ecf3;
margin-top: 10px;
padding-top: 10px;
}
@media (max-width: 680px) {
.v2-user-filter-panel.is-mobile-collapsed {
display: none;
}
.v2-user-filter-form {
grid-template-columns: minmax(0, 1fr);
gap: 9px;
padding: 10px;
}
.v2-user-filter-form.is-mobile-collapsed {
display: none;
}
.v2-user-filter-form :is(.semi-input-wrapper, .semi-select),
.v2-user-filter-reset.semi-button {
min-height: 42px;
}
.v2-user-filter-reset.semi-button {
width: 100%;
}
.v2-user-directory-header.v2-workspace-panel-header {
min-height: 56px;
align-items: center;
padding: 8px 10px;
}
.v2-user-directory-header .v2-workspace-panel-copy > .semi-typography {
max-width: 220px;
}
.v2-user-directory-body {
padding: 8px;
}
.v2-user-directory-metrics {
margin-bottom: 8px;
}
.v2-user-directory-metrics > span {
min-height: 58px;
padding: 8px 10px;
}
.v2-user-directory-metrics small {
font-size: 9px;
}
.v2-user-directory-metrics strong {
font-size: 19px;
}
.v2-user-editor.semi-card {
width: auto;
}
.v2-user-editor form {
gap: 0;
padding: 0;
}
.v2-user-editor-title {
min-height: 70px;
border-radius: 0;
padding: 11px 10px;
}
.v2-user-editor-title p {
max-width: 238px;
font-size: 9px;
}
.v2-user-editor-tabs.semi-tabs {
border-radius: 9px;
margin: 8px 8px 0;
}
.v2-user-editor-tabs > .semi-tabs-content {
padding: 8px;
}
.v2-assigned-toolbar {
display: grid;
grid-template-columns: minmax(0, 1fr);
justify-content: stretch;
gap: 8px;
margin-top: 12px;
padding-top: 11px;
}
.v2-assigned-toolbar > .semi-input-wrapper {
width: 100%;
min-height: 40px;
flex: none;
}
.v2-assigned-toolbar .semi-input {
height: 38px;
font-size: 12px;
}
.v2-assigned-vins {
grid-template-columns: minmax(0, 1fr);
gap: 7px;
}
.v2-assigned-pagination {
min-height: 76px;
align-items: stretch;
flex-direction: column;
justify-content: center;
gap: 7px;
margin-top: 8px;
padding-top: 8px;
}
.v2-assigned-pagination .v2-table-pagination-controls {
width: 100%;
}
.v2-user-editor form > footer {
bottom: 0;
min-height: 60px;
margin: 8px 0 0;
padding: 8px;
}
.v2-user-editor form > footer .semi-button {
width: 100%;
min-width: 0;
min-height: 44px;
}
}
/*
* Semi UI operations command center.
* Match the access and alert workspaces: readable evidence tables on desktop,
* progressive policy editing on mobile, and one consistent status hierarchy.
*/
.v2-source-filter-panel.v2-workspace-filter-panel.semi-card {
width: 100%;
overflow: visible;
}
.v2-source-filter-panel .v2-source-search {
padding: 11px 12px 12px;
}
.v2-source-filter-panel .v2-source-candidates {
right: 128px;
left: 12px;
}
@media (min-width: 681px) {
.v2-ops-page {
gap: 12px;
padding: 16px 18px 20px;
background: #f6f8fb;
}
.v2-ops-tabs.v2-segmented-tabs {
width: min(700px, 100%);
min-height: 52px;
}
.v2-ops-tabs.v2-segmented-tabs > .semi-button {
min-height: 40px;
font-size: 13px;
}
.v2-reconcile-heading.v2-workspace-panel-header {
min-height: 70px;
padding: 12px 16px;
}
.v2-reconcile-heading .v2-workspace-panel-copy > h5.semi-typography {
font-size: 17px;
}
.v2-reconcile-heading .v2-workspace-panel-copy > .semi-typography {
font-size: 11px;
}
.v2-reconcile-toolbar {
gap: 9px;
padding: 11px 12px;
}
.v2-reconcile-toolbar > .semi-input-wrapper,
.v2-reconcile-toolbar > .semi-select {
min-height: 38px;
border-radius: 7px;
}
.v2-reconcile-toolbar .semi-input,
.v2-reconcile-toolbar .semi-select-selection-text {
font-size: 12px;
}
.v2-reconcile-table .semi-table-thead > .semi-table-row > .semi-table-row-head {
height: 42px;
font-size: 11px;
}
.v2-reconcile-table .semi-table-tbody > .semi-table-row > .semi-table-row-cell {
height: 66px;
padding: 9px 11px;
}
.v2-reconcile-cell strong {
font-size: 12px;
}
.v2-reconcile-cell small {
font-size: 10px;
}
.v2-reconcile-pagination {
min-height: 48px;
font-size: 12px;
}
.v2-reconcile-detail.semi-card {
width: min(480px, 52vw);
}
.v2-reconcile-detail-heading > .v2-workspace-panel-copy > h5.semi-typography {
font-size: 16px;
}
.v2-reconcile-detail-heading > .v2-workspace-panel-copy > .semi-typography {
font-size: 11px;
}
.v2-reconcile-identity small,
.v2-reconcile-identity span {
font-size: 10px;
}
.v2-reconcile-identity strong,
.v2-reconcile-summary {
font-size: 12px;
}
.v2-ops-kpi-card > .semi-card-body {
min-height: 92px;
padding: 14px 16px !important;
}
.v2-ops-kpis small {
font-size: 11px;
}
.v2-ops-kpis strong {
margin: 8px 0 6px;
font-size: 22px;
}
.v2-ops-kpis span {
font-size: 10px;
}
.v2-ops-panel > .semi-card-body > .v2-workspace-panel-header {
min-height: 52px;
padding-inline: 15px;
}
.v2-ops-panel .v2-workspace-panel-copy > h5.semi-typography {
font-size: 15px;
}
.v2-ops-panel .v2-workspace-panel-copy > .semi-typography,
.v2-ops-panel .v2-workspace-panel-meta {
font-size: 11px;
}
.v2-ops-link-card > .semi-card-body {
min-height: 62px;
padding: 10px 15px;
}
.v2-ops-link-status strong {
font-size: 12px;
}
.v2-ops-link-card p {
font-size: 11px;
}
.v2-ops-runtime-descriptions .semi-descriptions-key {
font-size: 11px;
}
.v2-ops-runtime-descriptions .semi-descriptions-value {
font-size: 12px;
}
.v2-ops-source-title small,
.v2-ops-source-evidence strong,
.v2-ops-source-action strong,
.v2-ops-source-evidence p,
.v2-ops-source-action p,
.v2-ops-source-card footer span {
font-size: 10px;
}
.v2-source-diagnostic > .semi-card-body > .v2-workspace-panel-header {
min-height: 58px;
padding-inline: 15px;
}
.v2-source-diagnostic .v2-workspace-panel-copy > h5.semi-typography {
font-size: 15px;
}
.v2-source-diagnostic .v2-workspace-panel-copy > .semi-typography {
font-size: 11px;
}
.v2-source-table .semi-table-thead > .semi-table-row > .semi-table-row-head {
font-size: 11px;
}
.v2-source-table .semi-table-tbody > .semi-table-row > .semi-table-row-cell {
font-size: 12px;
}
.v2-source-cell > strong,
.v2-source-cell > span > strong {
font-size: 12px;
}
.v2-source-cell > small,
.v2-source-policy-summary small {
font-size: 10px;
}
.v2-source-policy-summary b {
font-size: 11px;
}
.v2-source-policy-summary > .semi-button {
min-height: 30px;
font-size: 10px;
}
}
@media (max-width: 680px) {
.v2-source-filter-panel.is-mobile-collapsed,
.v2-source-search.is-mobile-collapsed {
display: none !important;
}
.v2-source-filter-panel .v2-source-search {
padding: 10px;
}
.v2-source-filter-panel .v2-source-candidates {
right: 10px;
left: 10px;
}
.v2-source-empty.semi-empty,
.v2-source-loading {
min-height: 160px;
}
.v2-source-mobile-card > .semi-card-body > section {
padding: 11px 13px 13px;
}
.v2-source-mobile-card .v2-source-policy-summary {
grid-template-columns: minmax(0, 1fr) auto;
align-items: center;
gap: 5px 10px;
}
.v2-source-mobile-card .v2-source-policy-summary > span {
grid-column: 1;
grid-row: 1;
}
.v2-source-mobile-card .v2-source-policy-summary > small {
grid-column: 1;
grid-row: 2;
font-size: 10px;
}
.v2-source-mobile-card .v2-source-policy-summary > .semi-button {
min-width: 92px;
min-height: 40px;
grid-column: 2;
grid-row: 1 / 3;
justify-content: center;
font-size: 11px;
}
.v2-source-policy-sidesheet .semi-sidesheet-inner {
width: 100vw !important;
}
.v2-source-policy-sidesheet .semi-sidesheet-header {
min-height: 62px;
padding: 10px 12px;
}
.v2-source-policy-sheet-title strong {
font-size: 15px;
}
.v2-source-policy-sheet-title span {
font-size: 10px;
}
}
/* Semi UI operations health: one overview rail, evidence-first rows and compact protocol coverage. */
.v2-ops-overview.semi-card {
min-width: 0;
overflow: hidden;
border: 1px solid #dce5ef;
border-radius: 12px;
background: #fff;
box-shadow: 0 8px 28px rgba(31, 53, 80, .055);
}
.v2-ops-overview > .semi-card-body > .v2-workspace-panel-header {
min-height: 64px;
border-bottom: 1px solid #e7edf4;
padding: 11px 16px;
}
.v2-ops-overview-meta {
display: flex;
align-items: center;
gap: 10px;
}
.v2-ops-overview-meta > .semi-typography {
font-size: 11px;
white-space: nowrap;
}
.v2-ops-metric-rail {
display: grid;
grid-template-columns: 1.2fr repeat(4, minmax(0, 1fr));
background: #fff;
}
.v2-ops-metric {
position: relative;
min-width: 0;
min-height: 112px;
padding: 17px 18px 15px;
}
.v2-ops-metric + .v2-ops-metric {
border-left: 1px solid #e7edf4;
}
.v2-ops-metric::after {
position: absolute;
right: 18px;
bottom: 0;
left: 18px;
height: 3px;
border-radius: 999px 999px 0 0;
background: #dce5ef;
content: "";
}
.v2-ops-metric.is-success::after { background: var(--v2-green); }
.v2-ops-metric.is-warning::after { background: var(--v2-orange); }
.v2-ops-metric.is-danger::after { background: var(--v2-red); }
.v2-ops-metric small {
display: block;
overflow: hidden;
color: #6b7c92;
font-size: 11px;
font-weight: 600;
text-overflow: ellipsis;
white-space: nowrap;
}
.v2-ops-metric strong {
display: block;
margin: 10px 0 8px;
overflow: hidden;
color: #20364f;
font-size: 24px;
font-variant-numeric: tabular-nums;
letter-spacing: -.025em;
line-height: 1;
text-overflow: ellipsis;
white-space: nowrap;
}
.v2-ops-metric.is-success strong { color: #16835d; }
.v2-ops-metric.is-warning strong { color: #a66500; }
.v2-ops-metric.is-danger strong { color: #cf3f3b; }
.v2-ops-metric span {
display: block;
overflow: hidden;
color: #8390a2;
font-size: 10px;
line-height: 1.45;
text-overflow: ellipsis;
white-space: nowrap;
}
.v2-ops-panel > .semi-card-body > .v2-workspace-panel-header {
min-height: 64px;
border-bottom: 1px solid #e7edf4;
padding: 11px 15px;
}
.v2-ops-link-card {
display: grid;
min-height: 62px;
grid-template-columns: minmax(140px, .7fr) minmax(0, 1fr) auto;
align-items: center;
gap: 12px;
border-bottom: 1px solid #e8edf3;
background: #fff;
padding: 10px 15px;
}
.v2-ops-link-card:last-child { border-bottom: 0; }
.v2-ops-source-list.semi-card-group {
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}
.v2-ops-source-card.semi-card {
box-shadow: inset 0 3px #d6e0ec, 0 5px 16px rgba(31, 53, 80, .045);
}
.v2-ops-source-card.is-ok { box-shadow: inset 0 3px var(--v2-green), 0 5px 16px rgba(31, 53, 80, .045); }
.v2-ops-source-card.is-warning { box-shadow: inset 0 3px var(--v2-orange), 0 5px 16px rgba(31, 53, 80, .045); }
.v2-ops-source-card.is-error { box-shadow: inset 0 3px var(--v2-red), 0 5px 16px rgba(31, 53, 80, .045); }
.v2-ops-source-coverage {
display: grid;
gap: 7px;
border-bottom: 1px solid #e9eef4;
padding: 13px;
background: #fff;
}
.v2-ops-source-coverage > span {
display: flex;
align-items: baseline;
justify-content: space-between;
gap: 12px;
}
.v2-ops-source-coverage strong {
color: #41556d;
font-size: 11px;
}
.v2-ops-source-coverage b {
color: #263d57;
font-size: 17px;
font-variant-numeric: tabular-nums;
letter-spacing: -.02em;
}
.v2-ops-source-coverage .semi-progress {
width: 100%;
margin: 0;
}
.v2-ops-source-coverage small {
color: #748398;
font-size: 10px;
}
@media (max-width: 900px) {
.v2-ops-metric-rail {
display: flex;
overflow-x: auto;
scroll-snap-type: x proximity;
scrollbar-width: thin;
}
.v2-ops-metric {
min-width: 190px;
flex: 0 0 190px;
scroll-snap-align: start;
}
.v2-ops-metric:first-child {
min-width: 218px;
flex-basis: 218px;
}
}
@media (max-width: 680px) {
.v2-ops-overview > .semi-card-body > .v2-workspace-panel-header {
min-height: 58px;
padding: 9px 12px;
}
.v2-ops-overview-meta > .semi-typography { display: none; }
.v2-ops-metric {
min-width: 156px;
min-height: 96px;
flex-basis: 156px;
padding: 14px 13px 12px;
}
.v2-ops-metric:first-child {
min-width: 184px;
flex-basis: 184px;
}
.v2-ops-metric strong {
margin: 8px 0 7px;
font-size: 21px;
}
.v2-ops-metric span { font-size: 10px; }
.v2-ops-link-card {
min-height: 72px;
grid-template-columns: minmax(0, 1fr) auto;
gap: 5px 10px;
padding: 10px 12px;
}
.v2-ops-link-card p {
grid-column: 1 / -1;
white-space: normal;
}
.v2-ops-source-list.semi-card-group {
display: flex;
grid-template-columns: none;
}
.v2-ops-source-coverage b { font-size: 16px; }
}
/* Unified Semi UI state language: page, panel and inline recovery surfaces. */
.v2-state-surface {
box-sizing: border-box;
width: 100%;
min-width: 0;
color: #607086;
}
.v2-state-surface.is-page {
display: grid;
min-height: 100%;
align-content: center;
justify-items: center;
gap: 24px;
background:
radial-gradient(circle at 50% 35%, rgba(18, 104, 243, .06), transparent 32%),
var(--v2-bg);
padding: clamp(24px, 5vw, 54px);
}
.v2-state-surface.is-panel {
position: relative;
inset: auto;
display: grid;
min-height: 164px;
align-content: center;
justify-items: center;
gap: 18px;
border: 0;
background: linear-gradient(180deg, rgba(249, 251, 254, .72), rgba(255, 255, 255, .98));
padding: 22px;
}
.v2-state-surface.is-inline {
display: flex;
min-height: 52px;
align-items: center;
border: 1px solid #dfe7f1;
border-radius: 10px;
background: rgba(255, 255, 255, .96);
padding: 9px 12px;
}
.v2-state-surface.is-error.is-inline {
border-color: #f3c7c4;
background: #fff8f7;
color: #b42318;
}
.v2-state-message {
display: flex;
min-width: 0;
align-items: center;
justify-content: center;
gap: 12px;
}
.v2-state-icon {
display: grid;
width: 38px;
height: 38px;
flex: 0 0 auto;
place-items: center;
border-radius: 11px;
background: #edf4ff;
color: var(--v2-blue);
}
.v2-state-surface.is-error .v2-state-icon {
background: #fff0ef;
color: #d92d20;
}
.v2-state-copy {
display: grid;
min-width: 0;
gap: 4px;
}
.v2-state-copy > .semi-typography {
display: block;
margin: 0;
}
.v2-state-copy > .semi-typography-primary {
color: #293a50;
font-size: 13px;
font-weight: 700;
}
.v2-state-copy > .semi-typography-tertiary,
.v2-state-copy > .semi-typography-danger {
overflow: hidden;
color: #7e8c9f;
font-size: 10px;
line-height: 1.55;
text-overflow: ellipsis;
}
.v2-state-copy > .semi-typography-danger {
color: #a63a32;
}
.v2-state-action {
display: flex;
flex: 0 0 auto;
margin-left: 10px;
}
.v2-state-action > .semi-button {
min-height: 34px;
border-radius: 8px;
font-weight: 650;
}
.v2-state-skeleton {
display: grid;
width: min(780px, 100%);
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 10px;
}
.v2-state-skeleton > i {
min-height: 58px;
border: 1px solid #eaf0f6;
border-radius: 10px;
background: linear-gradient(100deg, #f3f6fa 24%, #eaf1f8 38%, #f3f6fa 54%);
background-size: 300% 100%;
animation: v2-skeleton 1.4s ease infinite;
}
.v2-state-surface.is-page .v2-state-skeleton {
width: min(960px, 100%);
}
.v2-state-surface.is-page .v2-state-skeleton > i {
min-height: 92px;
}
.v2-state-surface.is-page .v2-state-skeleton > i:last-child {
min-height: 240px;
grid-column: 1 / -1;
}
.v2-state-surface.is-panel.is-compact {
position: sticky;
z-index: 3;
top: 0;
display: flex;
width: 100%;
min-height: 42px;
justify-content: center;
border-bottom: 1px solid #dfe8f2;
background: rgba(248, 251, 255, .94);
padding: 5px 12px;
backdrop-filter: blur(8px);
}
.v2-state-surface.is-panel.is-compact .v2-state-icon {
width: 28px;
height: 28px;
border-radius: 8px;
}
.v2-state-surface.is-panel.is-compact .v2-state-copy {
display: flex;
align-items: baseline;
gap: 7px;
}
.v2-state-surface.is-panel.is-compact .v2-state-skeleton {
display: none;
}
.v2-state-empty.semi-empty {
box-sizing: border-box;
width: 100%;
min-height: 140px;
justify-content: center;
padding: 20px;
}
.v2-state-empty .semi-empty-image {
height: 54px;
margin-bottom: 10px;
opacity: .8;
}
.v2-state-empty .semi-empty-title {
color: #33465d;
font-size: 13px;
font-weight: 700;
}
.v2-state-empty .semi-empty-description {
max-width: 440px;
margin-top: 6px;
color: #8491a3;
font-size: 10px;
line-height: 1.6;
}
.v2-state-empty .semi-empty-content {
margin-top: 14px;
}
.v2-state-surface.is-inline .v2-state-empty.semi-empty {
min-height: 50px;
align-items: flex-start;
padding: 4px 0;
}
.v2-state-surface.is-inline .v2-state-empty .semi-empty-image,
.v2-state-surface.is-inline .v2-state-empty .semi-empty-description {
display: none;
}
@media (max-width: 680px) {
.v2-state-surface.is-page {
gap: 18px;
padding: 18px 12px 88px;
}
.v2-state-surface.is-panel {
min-height: 142px;
padding: 18px 12px;
}
.v2-state-message {
max-width: 100%;
gap: 9px;
}
.v2-state-icon {
width: 34px;
height: 34px;
border-radius: 9px;
}
.v2-state-copy > .semi-typography-primary {
font-size: 12px;
}
.v2-state-copy > .semi-typography-tertiary,
.v2-state-copy > .semi-typography-danger {
font-size: 9px;
}
.v2-state-skeleton {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.v2-state-skeleton > i:last-child {
grid-column: 1 / -1;
}
.v2-state-surface.is-page .v2-state-skeleton > i {
min-height: 72px;
}
.v2-state-surface.is-page .v2-state-skeleton > i:last-child {
min-height: 190px;
}
.v2-state-surface.is-inline {
align-items: stretch;
padding: 9px;
}
.v2-state-surface.is-inline .v2-state-message {
width: 100%;
align-items: flex-start;
}
.v2-state-surface.is-inline .v2-state-action {
margin-left: auto;
}
.v2-state-surface.is-panel.is-compact .v2-state-copy > .semi-typography-tertiary {
display: none;
}
}
/* Platform entry and recovery states share the same Semi UI visual system. */
.v2-auth-screen.is-session-loading {
grid-template-columns: minmax(0, 1fr);
}
.v2-auth-loading.semi-card {
width: min(520px, 100%);
border-color: rgba(207, 220, 236, .96);
border-radius: 20px;
background: rgba(255, 255, 255, .98);
box-shadow: 0 26px 72px rgba(27, 45, 72, .13);
}
.v2-auth-loading.semi-card > .semi-card-body {
display: block;
min-height: 0;
}
.v2-auth-loading-inner {
display: grid;
min-width: 0;
gap: 24px;
padding: 28px;
}
.v2-auth-loading-header {
display: flex;
min-width: 0;
align-items: center;
justify-content: space-between;
gap: 18px;
border-bottom: 1px solid #edf1f6;
padding-bottom: 20px;
}
.v2-auth-loading-header > img {
display: block;
width: 148px;
max-width: 52%;
height: auto;
}
.v2-auth-loading-header > .semi-tag {
height: 28px;
flex: 0 0 auto;
border-radius: 999px;
padding-inline: 10px;
font-size: 11px;
font-weight: 650;
}
.v2-auth-loading-status {
display: flex;
min-width: 0;
align-items: center;
gap: 15px;
}
.v2-auth-loading-status > span {
display: grid;
width: 48px;
height: 48px;
flex: 0 0 auto;
place-items: center;
border-radius: 14px;
background: #eef5ff;
}
.v2-auth-loading-status > div {
display: grid;
min-width: 0;
gap: 5px;
}
.v2-auth-loading-status h4.semi-typography {
margin: 0;
color: #26394f;
font-size: 18px;
letter-spacing: -.025em;
}
.v2-auth-loading-status .semi-typography-tertiary {
margin: 0;
color: #7a899d;
font-size: 11px;
line-height: 1.6;
}
.v2-auth-loading-skeleton {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 9px;
}
.v2-auth-loading-skeleton > i {
min-height: 52px;
border: 1px solid #e9eff6;
border-radius: 10px;
background: linear-gradient(100deg, #f4f7fa 24%, #eaf1f8 38%, #f4f7fa 54%);
background-size: 300% 100%;
animation: v2-skeleton 1.4s ease infinite;
}
.v2-auth-loading-inner > footer {
display: flex;
align-items: flex-start;
gap: 7px;
border-top: 1px solid #edf1f6;
padding-top: 16px;
color: #7c8a9d;
}
.v2-auth-loading-inner > footer > svg {
flex: 0 0 auto;
margin-top: 2px;
color: #4d79b7;
}
.v2-auth-loading-inner > footer .semi-typography {
margin: 0;
color: #8390a2;
font-size: 10px;
line-height: 1.55;
}
.v2-auth-form-heading {
display: grid;
justify-items: center;
}
.v2-auth-form-heading > h3.semi-typography {
margin: 2px 0 0;
color: #25374d;
text-align: center;
font-size: 25px;
letter-spacing: -.035em;
}
.v2-auth-form-heading > h3 + .semi-typography {
margin: 11px 0 18px;
color: #738196;
text-align: center;
font-size: 13px;
line-height: 1.7;
}
.v2-auth-error {
margin-top: 14px;
}
.v2-auth-error .semi-banner {
align-items: flex-start;
border: 1px solid #f3cbc7;
border-radius: 10px;
background: #fff8f7;
padding: 10px 11px;
}
.v2-auth-error .semi-banner-icon {
margin-top: 1px;
color: #d92d20;
}
.v2-auth-error .semi-banner-title {
color: #9f2d25;
font-size: 11px;
font-weight: 700;
}
.v2-auth-error .semi-banner-description {
margin-top: 3px;
color: #a94b43;
font-size: 10px;
line-height: 1.5;
}
.v2-auth-form > .v2-auth-error + .semi-button-primary {
margin-top: 16px;
}
.v2-auth-trust-note {
display: flex;
min-height: 28px;
align-items: center;
justify-content: center;
gap: 6px;
margin-top: 10px;
color: #8793a4;
}
.v2-auth-trust-note > svg {
flex: 0 0 auto;
color: #5f7fa9;
font-size: 12px;
}
.v2-auth-trust-note > .semi-typography {
margin: 0;
color: #8793a4;
font-size: 10px;
}
.v2-route-error {
align-content: center;
background:
radial-gradient(circle at 50% 38%, rgba(18, 104, 243, .065), transparent 30%),
var(--v2-bg);
}
.v2-route-error > .v2-route-error-card.semi-card {
width: min(620px, 100%);
max-width: none;
min-width: 0;
overflow: hidden;
border: 1px solid #d8e2ee;
border-radius: 18px;
background: rgba(255, 255, 255, .98);
box-shadow: 0 24px 68px rgba(29, 48, 76, .12);
text-align: left;
}
.v2-route-error-card.semi-card > .semi-card-body {
padding: 0;
}
.v2-route-error-content {
display: grid;
gap: 20px;
padding: 28px;
}
.v2-route-error-content > header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
}
.v2-route-error-icon {
display: grid;
width: 46px;
height: 46px;
flex: 0 0 auto;
place-items: center;
border-radius: 13px;
background: #fff1ef;
color: #d92d20;
font-size: 21px;
}
.v2-route-error.is-update .v2-route-error-icon {
background: #edf4ff;
color: var(--v2-blue);
}
.v2-route-error.is-timeout .v2-route-error-icon {
background: #fff6e7;
color: #c56a0a;
}
.v2-route-error-content > header .semi-tag {
height: 28px;
border-radius: 999px;
padding-inline: 11px;
font-size: 10px;
font-weight: 700;
}
.v2-route-error-copy {
display: grid;
gap: 9px;
}
.v2-route-error-copy > h2.semi-typography {
margin: 0;
color: #25374d;
font-size: clamp(22px, 2.3vw, 28px);
line-height: 1.25;
letter-spacing: -.035em;
}
.v2-route-error-copy > .semi-typography {
max-width: 540px;
margin: 0;
color: #718096;
font-size: 12px;
line-height: 1.75;
}
.v2-route-error-detail {
overflow: hidden;
border: 1px solid #e3e9f1;
border-radius: 9px;
background: #f8fafc;
}
.v2-route-error-detail > summary {
min-height: 36px;
padding: 10px 12px;
color: #607087;
cursor: pointer;
font-size: 10px;
font-weight: 650;
list-style-position: inside;
}
.v2-route-error-detail > code {
margin: 0;
overflow: auto;
border-top: 1px solid #e3e9f1;
padding: 10px 12px;
color: #9f3f38;
font-size: 10px;
line-height: 1.55;
text-overflow: clip;
white-space: pre-wrap;
overflow-wrap: anywhere;
}
.v2-route-error-content > .v2-recovery-actions {
justify-content: flex-start;
margin-top: 0;
}
.v2-route-error .v2-recovery-actions > .semi-button {
min-height: 38px;
border-radius: 9px;
padding-inline: 14px;
font-size: 11px;
font-weight: 700;
}
@media (max-width: 680px) {
.v2-auth-loading-inner {
gap: 20px;
padding: 22px 18px;
}
.v2-auth-loading-header {
padding-bottom: 16px;
}
.v2-auth-loading-header > img {
width: 132px;
}
.v2-auth-loading-status {
align-items: flex-start;
}
.v2-auth-loading-status > span {
width: 42px;
height: 42px;
border-radius: 12px;
}
.v2-auth-loading-status h4.semi-typography {
font-size: 16px;
}
.v2-auth-loading-status .semi-typography-tertiary {
font-size: 10px;
}
.v2-auth-loading-skeleton {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.v2-auth-loading-skeleton > i:last-child {
grid-column: 1 / -1;
}
.v2-auth-form-heading > h3.semi-typography {
font-size: 22px;
}
.v2-auth-form-heading > h3 + .semi-typography {
font-size: 12px;
}
.v2-route-error > .v2-route-error-card.semi-card {
border-radius: 15px;
}
.v2-route-error-content {
gap: 17px;
padding: 21px 18px;
}
.v2-route-error-icon {
width: 42px;
height: 42px;
border-radius: 12px;
font-size: 19px;
}
.v2-route-error-copy > h2.semi-typography {
font-size: 21px;
}
.v2-route-error-copy > .semi-typography {
font-size: 11px;
line-height: 1.7;
}
.v2-route-error-content > .v2-recovery-actions {
display: grid;
grid-template-columns: minmax(0, 1fr);
}
.v2-route-error .v2-recovery-actions > .semi-button {
width: 100%;
min-height: 42px;
justify-content: center;
font-size: 12px;
}
}
/* Unified application shell: page context, help, account and password flows. */
.v2-topbar {
border-bottom-color: #e4eaf2;
background: rgba(255, 255, 255, .95);
box-shadow: 0 3px 14px rgba(29, 45, 68, .025);
}
.v2-topbar-title {
min-width: 0;
gap: 2px;
}
.v2-topbar-title > .semi-typography {
color: #8a96a8;
font-size: 10px;
font-weight: 550;
letter-spacing: .02em;
}
.v2-topbar-title > h4.semi-typography {
overflow: hidden;
margin: 0;
color: #24364c;
font-size: 21px;
font-weight: 720;
letter-spacing: -.035em;
text-overflow: ellipsis;
white-space: nowrap;
}
.v2-topbar-actions {
gap: 8px;
}
.v2-topbar-actions > .v2-help-trigger.semi-button {
width: auto;
min-width: 104px;
height: 38px;
gap: 6px;
border: 1px solid #e0e7f0;
border-radius: 9px;
background: #f8fafc;
padding: 0 12px;
color: #5d6d82;
font-size: 11px;
font-weight: 650;
}
.v2-topbar-actions > .v2-help-trigger.semi-button:hover,
.v2-topbar-actions > .v2-help-trigger.semi-button[aria-expanded="true"] {
border-color: #c9d8ec;
background: #f2f7ff;
color: var(--v2-blue);
}
.v2-help-trigger .semi-button-content {
display: flex;
align-items: center;
gap: 6px;
}
.v2-topbar-actions > .v2-current-user.semi-button {
min-width: 0;
height: 38px;
margin: 0;
border: 1px solid transparent;
border-radius: 9px;
padding: 0 9px;
color: #4d5e74;
}
.v2-topbar-actions > .v2-current-user.semi-button:hover,
.v2-topbar-actions > .v2-current-user.semi-button[aria-expanded="true"] {
border-color: #d9e3ef;
background: #f6f9fd;
}
.v2-current-user .semi-avatar {
box-shadow: inset 0 0 0 1px rgba(18, 104, 243, .1);
}
.v2-current-user b {
max-width: 128px;
color: #34465d;
font-size: 11px;
font-weight: 680;
}
.v2-current-user .semi-tag {
height: 22px;
border-radius: 999px;
padding-inline: 7px;
font-size: 9px;
font-weight: 650;
}
.v2-help-sheet .semi-sidesheet-inner {
border-left: 1px solid #dce5ef;
background: #f6f8fb;
box-shadow: -18px 0 54px rgba(29, 45, 68, .13);
}
.v2-help-sheet .semi-sidesheet-header {
min-height: 82px;
border-bottom: 1px solid #e1e7ef;
background: #fff;
padding: 16px 18px;
}
.v2-help-sheet-title {
display: flex;
align-items: center;
gap: 11px;
}
.v2-help-sheet-title > span {
display: grid;
width: 38px;
height: 38px;
flex: 0 0 auto;
place-items: center;
border-radius: 11px;
background: #edf4ff;
color: var(--v2-blue);
font-size: 18px;
}
.v2-help-sheet-title > div {
display: grid;
min-width: 0;
gap: 2px;
}
.v2-help-sheet-title .semi-typography-tertiary {
margin: 0;
color: #8a96a7;
font-size: 9px;
font-weight: 600;
letter-spacing: .03em;
}
.v2-help-sheet-title h4.semi-typography {
overflow: hidden;
margin: 0;
color: #26394f;
font-size: 18px;
letter-spacing: -.025em;
text-overflow: ellipsis;
white-space: nowrap;
}
.v2-help-sheet .semi-sidesheet-body {
background: #f6f8fb;
padding: 16px;
}
.v2-help-sheet .semi-sidesheet-footer {
border-top: 1px solid #e2e8f0;
background: #fff;
padding: 12px 16px;
}
.v2-help-sheet .semi-sidesheet-footer .semi-button {
min-height: 40px;
border-radius: 9px;
font-size: 12px;
font-weight: 650;
}
.v2-help-panel {
display: grid;
gap: 14px;
padding: 0;
}
.v2-help-overview.semi-card {
border: 1px solid #dbe5f2;
border-radius: 12px;
background: linear-gradient(135deg, #fff 0%, #f5f9ff 100%);
box-shadow: 0 6px 18px rgba(34, 61, 96, .045);
}
.v2-help-overview > .semi-card-body {
display: grid;
gap: 10px;
padding: 15px !important;
}
.v2-help-overview .semi-tag {
width: max-content;
height: 24px;
border-radius: 999px;
padding-inline: 8px;
font-size: 9px;
font-weight: 700;
}
.v2-help-overview .semi-typography {
margin: 0;
color: #53647a;
font-size: 12px;
line-height: 1.75;
}
.v2-help-section-label {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 1px 2px 0;
}
.v2-help-section-label > .semi-typography-primary {
color: #33465d;
font-size: 12px;
}
.v2-help-section-label > .semi-typography-tertiary {
color: #929daf;
font-size: 9px;
}
.v2-help-panel ol {
gap: 8px;
}
.v2-help-panel li {
min-height: 58px;
grid-template-columns: 30px minmax(0, 1fr);
align-items: center;
gap: 10px;
border: 1px solid #e5eaf1;
border-radius: 10px;
background: #fff;
padding: 11px 12px;
color: #4c5e75;
font-size: 11px;
line-height: 1.65;
box-shadow: 0 2px 8px rgba(29, 45, 68, .025);
}
.v2-help-panel li > span {
width: 28px;
height: 28px;
border-radius: 9px;
background: #eef5ff;
color: #3974c8;
font-size: 10px;
}
.v2-help-panel > footer {
justify-content: flex-end;
margin-top: 0;
padding: 0 2px;
color: #909bad;
}
.v2-account-dropdown {
width: 272px;
min-width: 272px;
border-color: #dce4ee;
border-radius: 13px;
padding: 7px;
box-shadow: 0 20px 54px rgba(24, 38, 58, .17);
}
.v2-account-dropdown-profile {
min-width: 0;
grid-template-columns: 38px minmax(0, 1fr) auto;
gap: 10px;
border: 1px solid #e4eaf2;
border-radius: 10px;
background: linear-gradient(135deg, #f8fbff 0%, #f2f7fd 100%);
padding: 11px;
}
.v2-account-dropdown-profile > span {
display: grid;
min-width: 0;
gap: 1px;
}
.v2-account-dropdown-profile small,
.v2-account-dropdown-profile strong,
.v2-account-dropdown-profile em {
overflow: hidden;
margin: 0;
text-overflow: ellipsis;
white-space: nowrap;
}
.v2-account-dropdown-profile small {
color: #8b97a8;
font-size: 8px;
font-weight: 600;
letter-spacing: .03em;
}
.v2-account-dropdown-profile strong {
color: #293c53;
font-size: 12px;
font-weight: 720;
}
.v2-account-dropdown-profile em {
color: #7f8d9f;
font-size: 9px;
font-style: normal;
font-weight: 500;
}
.v2-account-dropdown-profile .semi-tag {
height: 22px;
border-radius: 999px;
padding-inline: 7px;
font-size: 8px;
font-weight: 700;
}
.v2-account-dropdown .semi-dropdown-divider {
margin: 7px 3px;
}
.v2-account-dropdown .semi-dropdown-item {
min-height: 40px;
border-radius: 8px;
padding-inline: 11px;
color: #4d6077;
font-size: 11px;
font-weight: 650;
}
.v2-password-modal.semi-modal {
width: min(500px, calc(100vw - 32px)) !important;
}
.v2-password-modal .semi-modal-content {
overflow: hidden;
border: 1px solid #dbe4ee;
border-radius: 17px;
box-shadow: 0 24px 72px rgba(21, 37, 59, .2);
}
.v2-password-modal .semi-modal-header {
min-height: 76px;
border-bottom: 1px solid #e5eaf1;
background: linear-gradient(180deg, #fff 0%, #fbfcfe 100%);
padding: 15px 20px;
}
.v2-password-title {
display: flex;
align-items: center;
gap: 11px;
}
.v2-password-title > span {
display: grid;
width: 38px;
height: 38px;
flex: 0 0 auto;
place-items: center;
border-radius: 11px;
background: #edf4ff;
color: var(--v2-blue);
font-size: 17px;
}
.v2-password-title > div {
display: grid;
gap: 2px;
}
.v2-password-title h4.semi-typography {
margin: 0;
color: #293b51;
font-size: 17px;
letter-spacing: -.02em;
}
.v2-password-title .semi-typography-tertiary {
margin: 0;
color: #8b96a7;
font-size: 9px;
}
.v2-password-modal .semi-modal-body {
padding: 18px 20px 20px;
}
.v2-password-dialog {
display: grid;
gap: 0;
}
.v2-password-dialog > .semi-banner {
border: 1px solid #f2dfb9;
border-radius: 9px;
background: #fffaf0;
padding: 9px 10px;
}
.v2-password-dialog > .semi-banner .semi-banner-title {
font-size: 10px;
font-weight: 700;
}
.v2-password-dialog > .semi-banner .semi-banner-description {
margin-top: 2px;
font-size: 9px;
line-height: 1.5;
}
.v2-password-dialog > label {
gap: 7px;
margin-top: 14px;
color: #52637a;
font-size: 11px;
font-weight: 680;
}
.v2-password-dialog > label .semi-input-wrapper {
height: 42px;
border-radius: 8px;
}
.v2-password-rules {
display: grid;
grid-template-columns: minmax(0, .72fr) minmax(0, 1.6fr);
gap: 7px;
margin-top: 9px;
}
.v2-password-rules > span {
display: flex;
min-width: 0;
align-items: flex-start;
gap: 5px;
border-radius: 7px;
background: #f4f6f9;
padding: 7px 8px;
color: #8793a3;
font-size: 8px;
line-height: 1.45;
}
.v2-password-rules > span > svg {
flex: 0 0 auto;
margin-top: 1px;
}
.v2-password-rules > span.is-valid {
background: #edf9f3;
color: #16805b;
}
.v2-password-match.semi-typography {
margin: 8px 0 0;
font-size: 9px;
font-weight: 650;
}
.v2-password-match.is-valid {
color: #16805b;
}
.v2-password-match.is-error {
color: #b42318;
}
.v2-password-error.semi-banner {
margin-top: 10px;
border-color: #f0cbc7;
background: #fff7f6;
}
.v2-password-dialog > footer {
display: grid;
grid-template-columns: minmax(0, .68fr) minmax(0, 1.32fr);
gap: 9px;
margin-top: 20px;
}
.v2-password-dialog > footer > .semi-button {
width: 100%;
min-height: 42px;
justify-content: center;
border-radius: 9px;
font-size: 11px;
font-weight: 700;
}
@media (max-width: 680px) {
.v2-topbar {
padding-inline: 12px 8px;
}
.v2-topbar-title > .semi-typography {
display: none;
}
.v2-topbar-title > h4.semi-typography {
font-size: 17px;
}
.v2-topbar-actions {
gap: 2px;
}
.v2-topbar-actions > .v2-help-trigger.semi-button {
width: 40px;
min-width: 40px;
height: 40px;
border-color: transparent;
background: transparent;
padding: 0;
}
.v2-help-trigger .v2-help-trigger-label {
display: none;
}
.v2-topbar-actions > .v2-current-user.semi-button {
width: 40px;
min-width: 40px;
height: 40px;
padding: 0;
}
.v2-help-sheet .semi-sidesheet-inner {
width: 100vw !important;
}
.v2-help-sheet .semi-sidesheet-header {
min-height: 70px;
padding: 12px 14px;
}
.v2-help-sheet .semi-sidesheet-body {
padding: 12px;
}
.v2-help-sheet-title > span {
width: 34px;
height: 34px;
border-radius: 10px;
font-size: 16px;
}
.v2-help-sheet-title h4.semi-typography {
font-size: 16px;
}
.v2-help-panel li {
min-height: 56px;
}
.v2-account-dropdown {
width: min(272px, calc(100vw - 20px));
min-width: min(272px, calc(100vw - 20px));
}
.v2-password-modal.semi-modal {
width: calc(100vw - 16px) !important;
max-width: 500px;
}
.v2-password-modal .semi-modal-content {
max-height: calc(100dvh - 24px);
border-radius: 15px;
}
.v2-password-modal .semi-modal-header {
min-height: 68px;
padding: 12px 14px;
}
.v2-password-modal .semi-modal-body {
max-height: calc(100dvh - 92px);
overflow-y: auto;
padding: 14px;
}
.v2-password-title > span {
width: 34px;
height: 34px;
border-radius: 10px;
}
.v2-password-rules {
grid-template-columns: minmax(0, 1fr);
gap: 5px;
}
.v2-password-dialog > label .semi-input-wrapper {
height: 46px;
}
.v2-password-dialog > footer {
position: sticky;
bottom: -14px;
z-index: 2;
margin-inline: -14px;
margin-bottom: -14px;
border-top: 1px solid #e4e9f0;
background: rgba(255, 255, 255, .97);
padding: 11px 14px calc(11px + env(safe-area-inset-bottom));
backdrop-filter: blur(10px);
}
.v2-password-dialog > footer > .semi-button {
min-height: 44px;
}
}
/* Semi UI data workspace controls: one filter anatomy and one compact pager. */
.v2-workspace-filter-panel.semi-card {
overflow: visible;
border-color: #dce5ef;
border-radius: 12px;
background: #fff;
box-shadow: 0 6px 20px rgba(31, 47, 70, .05);
}
.v2-workspace-filter-panel > .semi-card-body {
overflow: visible;
}
.v2-workspace-filter-heading {
display: flex;
min-height: 44px;
align-items: center;
gap: 9px;
border-bottom: 1px solid #e6ebf2;
border-radius: 12px 12px 0 0;
background: linear-gradient(100deg, #f8fbff 0%, #f5f8fc 58%, #fbfcfe 100%);
padding: 7px 12px;
}
.v2-workspace-filter-icon {
display: inline-grid;
width: 28px;
height: 28px;
flex: 0 0 auto;
place-items: center;
border-radius: 8px;
background: #eaf2ff;
color: var(--v2-blue);
font-size: 14px;
}
.v2-workspace-filter-copy {
display: flex;
min-width: 0;
flex: 1 1 auto;
align-items: baseline;
gap: 8px;
}
.v2-workspace-filter-copy > .semi-typography:first-child {
flex: 0 0 auto;
margin: 0;
color: #30445d;
font-size: 12px;
font-weight: 700;
line-height: 1.3;
}
.v2-workspace-filter-copy > .semi-typography:last-child {
min-width: 0;
overflow: hidden;
color: #7d8b9d;
font-size: 10px;
text-overflow: ellipsis;
white-space: nowrap;
}
.v2-workspace-filter-heading > .semi-tag {
min-height: 23px;
flex: 0 0 auto;
border-radius: 999px;
padding-inline: 8px;
font-size: 9px;
font-weight: 650;
}
.v2-mileage-query-panel.v2-workspace-filter-panel.semi-card {
border-radius: 12px;
}
.v2-mileage-query-panel .v2-workspace-filter-heading {
min-height: 42px;
}
@media (min-width: 681px) and (max-width: 1050px) {
.v2-mileage-query-panel .v2-mileage-filter {
min-height: 0;
grid-template-columns: minmax(200px, 1.35fr) repeat(2, minmax(112px, .72fr)) auto;
grid-template-areas:
"vehicle start end submit"
"source ranges ranges ranges";
align-items: end;
}
.v2-mileage-query-panel .v2-mileage-vehicle-field {
grid-area: vehicle;
}
.v2-mileage-query-panel .v2-mileage-filter > label:nth-of-type(2) {
grid-area: start;
}
.v2-mileage-query-panel .v2-mileage-filter > label:nth-of-type(3) {
grid-area: end;
}
.v2-mileage-query-panel .v2-mileage-filter > .v2-primary-button {
grid-area: submit;
width: auto;
margin-top: 0;
}
.v2-mileage-query-panel .v2-mileage-source-strategy {
grid-area: source;
}
.v2-mileage-query-panel .v2-mileage-ranges {
grid-area: ranges;
}
}
.v2-table-pagination.semi-page {
min-width: 0;
color: #607086;
}
.v2-table-pagination.semi-page .semi-page-item {
width: 30px;
min-width: 30px;
height: 30px;
margin: 0 1px;
border: 1px solid transparent;
border-radius: 8px;
line-height: 30px;
}
.v2-table-pagination.semi-page .semi-page-item-small {
width: auto;
min-width: 56px;
border-color: #dce5f0;
background: #f7faff;
color: #52647a;
font-size: 10px;
font-variant-numeric: tabular-nums;
font-weight: 650;
}
.v2-table-pagination.semi-page .semi-page-prev:not(.semi-page-item-disabled):hover,
.v2-table-pagination.semi-page .semi-page-next:not(.semi-page-item-disabled):hover {
border-color: #b9cee9;
background: #f2f7ff;
color: var(--v2-blue);
}
.v2-table-pagination.semi-page .semi-page-item-disabled {
background: #f8fafc;
color: #b1bbc8;
}
@media (max-width: 900px) {
.v2-workspace-filter-heading {
min-height: 42px;
padding-inline: 10px;
}
.v2-workspace-filter-copy > .semi-typography:last-child {
display: none;
}
}
@media (max-width: 680px) {
.v2-workspace-filter-heading {
display: none;
}
.v2-workspace-filter-panel.semi-card {
border-radius: 11px;
}
.v2-mileage-query-panel.v2-workspace-filter-panel.semi-card {
border-radius: 11px;
}
.v2-table-pagination-controls {
justify-content: space-between;
}
.v2-table-pagination.semi-page {
flex: 1 1 auto;
justify-content: flex-start;
}
.v2-table-pagination.semi-page .semi-page-item {
width: 36px;
min-width: 36px;
height: 36px;
line-height: 36px;
}
.v2-table-pagination.semi-page .semi-page-item-small {
width: auto;
min-width: 62px;
}
}