feat: harden platform workflows and UI governance
This commit is contained in:
@@ -841,13 +841,41 @@
|
||||
|
||||
.ui-modal__mask {
|
||||
background: rgba(18, 18, 26, 0.48);
|
||||
border: 0;
|
||||
cursor: default;
|
||||
inset: 0;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.ui-modal__guard-layer {
|
||||
align-items: center;
|
||||
background: rgba(18, 18, 26, 0.32);
|
||||
display: flex;
|
||||
inset: 0;
|
||||
justify-content: center;
|
||||
padding: var(--space-4);
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.ui-modal__guard {
|
||||
background: var(--color-surface);
|
||||
border: 1px solid var(--color-border);
|
||||
border-radius: var(--radius-lg);
|
||||
box-shadow: var(--shadow-lg);
|
||||
display: grid;
|
||||
gap: var(--space-4);
|
||||
grid-template-columns: auto minmax(0, 1fr);
|
||||
max-width: 100%;
|
||||
padding: var(--space-6);
|
||||
width: 460px;
|
||||
}
|
||||
|
||||
.ui-modal__guard > svg { color: var(--color-warning); margin-top: 2px; }
|
||||
.ui-modal__guard h2 { font-size: var(--font-size-lg); margin: 0 0 var(--space-2); }
|
||||
.ui-modal__guard p { color: var(--color-text-muted); line-height: var(--line-height-relaxed); margin: 0; }
|
||||
.ui-modal__guard footer { display: flex; gap: var(--space-3); grid-column: 1 / -1; justify-content: flex-end; }
|
||||
|
||||
.ui-modal__panel {
|
||||
background: var(--color-surface);
|
||||
border: 1px solid rgba(18, 18, 26, 0.08);
|
||||
@@ -1247,6 +1275,9 @@
|
||||
display: grid;
|
||||
}
|
||||
|
||||
.ui-modal__guard { padding: var(--space-5); }
|
||||
.ui-modal__guard footer { display: grid; }
|
||||
|
||||
.ui-query-panel__grid,
|
||||
.ui-detail-info-grid,
|
||||
.ui-detail-progress-stats,
|
||||
|
||||
@@ -4568,6 +4568,24 @@ h3 {
|
||||
background: rgba(239, 68, 68, 0.1);
|
||||
}
|
||||
|
||||
.login-session-notice {
|
||||
margin: 0;
|
||||
padding: 10px 12px;
|
||||
border: 1px solid rgba(37, 99, 235, 0.2);
|
||||
border-radius: 8px;
|
||||
color: var(--color-text-strong);
|
||||
background: rgba(37, 99, 235, 0.08);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.page-loading-state {
|
||||
min-height: 100vh;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
color: var(--color-text-muted);
|
||||
background: var(--color-surface-muted);
|
||||
}
|
||||
|
||||
.login-alert-message {
|
||||
margin: 0;
|
||||
color: var(--color-text-strong);
|
||||
@@ -4584,6 +4602,57 @@ h3 {
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.system-log-export {
|
||||
align-items: flex-end;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
max-width: min(100%, 680px);
|
||||
}
|
||||
|
||||
.system-log-export__result,
|
||||
.system-log-export__error {
|
||||
align-items: center;
|
||||
border-radius: var(--radius-md);
|
||||
display: flex;
|
||||
font-size: 13px;
|
||||
gap: 8px;
|
||||
justify-content: space-between;
|
||||
padding: 8px 10px;
|
||||
}
|
||||
|
||||
.system-log-export__result { background: var(--color-success-soft); color: var(--color-success-strong); }
|
||||
.system-log-export__error { background: var(--color-danger-soft); color: var(--color-danger-strong); }
|
||||
|
||||
.risk-action-content { display: grid; gap: 18px; }
|
||||
.risk-action-content section { display: grid; gap: 8px; }
|
||||
.risk-action-content h3 { font-size: 14px; margin: 0; }
|
||||
.risk-action-content ul { margin: 0; padding-left: 20px; }
|
||||
.risk-action-identity { background: var(--color-surface-muted); border-radius: var(--radius-lg); display: grid; gap: 10px; grid-template-columns: repeat(2, minmax(0, 1fr)); padding: 14px; }
|
||||
.risk-action-identity div { display: grid; gap: 3px; min-width: 0; }
|
||||
.risk-action-identity span { color: var(--color-text-muted); font-size: 12px; }
|
||||
.risk-action-identity strong { overflow-wrap: anywhere; }
|
||||
.risk-action-blockers { color: var(--color-danger-strong); list-style: none; padding: 0 !important; }
|
||||
.risk-action-blockers li, .risk-action-passed { align-items: center; display: flex; gap: 7px; }
|
||||
.risk-action-passed { color: var(--color-success-strong); margin: 0; }
|
||||
.risk-action-result { align-items: center; background: var(--color-success-soft); border-radius: var(--radius-lg); color: var(--color-success-strong); display: flex; gap: 10px; padding: 14px; }
|
||||
.risk-action-result div { display: grid; gap: 4px; }
|
||||
.risk-action-result span { font-size: 12px; overflow-wrap: anywhere; }
|
||||
|
||||
@media (max-width: 640px) { .risk-action-identity { grid-template-columns: 1fr; } }
|
||||
.delete-risk-dependencies { display: grid; gap: 8px; list-style: none; padding: 0 !important; }
|
||||
.delete-risk-dependencies li { align-items: center; background: var(--color-surface-muted); border-radius: var(--radius-md); display: grid; gap: 3px; grid-template-columns: 1fr auto; padding: 10px 12px; }
|
||||
.delete-risk-dependencies small { color: var(--color-text-muted); grid-column: 1 / -1; overflow-wrap: anywhere; }
|
||||
.delete-risk-action .ui-textarea { min-height: 88px; }
|
||||
|
||||
@media (max-width: 640px) {
|
||||
.system-page-toolbar { align-items: stretch; flex-direction: column; }
|
||||
.system-log-export { align-items: stretch; max-width: none; }
|
||||
.system-log-export > .ui-button { min-height: 44px; width: 100%; }
|
||||
.system-log-export__result,
|
||||
.system-log-export__error { align-items: stretch; flex-direction: column; }
|
||||
}
|
||||
|
||||
.system-filter-row {
|
||||
max-width: 520px;
|
||||
}
|
||||
@@ -7298,6 +7367,8 @@ h3 {
|
||||
.report-material-table-head { background: var(--surface-muted); color: var(--text-muted); font-size: 12px; font-weight: 700; }
|
||||
.report-material-row { border-top: 1px solid var(--border); cursor: pointer; }
|
||||
.report-material-row:hover { background: color-mix(in srgb, var(--primary) 3%, var(--surface)); }
|
||||
.report-material-row.is-disabled { cursor: not-allowed; opacity: 0.72; }
|
||||
.report-material-row.is-disabled:hover { background: var(--surface); }
|
||||
.report-material-row > span { display: grid; gap: 3px; }
|
||||
.report-material-row small, .report-material-row em { color: var(--text-muted); font-size: 12px; font-style: normal; }
|
||||
.report-material-batches { display: grid; gap: 0; }
|
||||
@@ -7305,6 +7376,16 @@ h3 {
|
||||
.report-material-batches article > div { display: flex; flex-wrap: wrap; gap: 8px 14px; align-items: center; }
|
||||
.report-material-batches article small { width: 100%; color: var(--text-muted); }
|
||||
.report-material-batches article a { display: inline-flex; align-items: center; gap: 5px; color: var(--primary); }
|
||||
.report-batch-preflight { display: grid; gap: 16px; }
|
||||
.report-batch-summary { display: flex; flex-wrap: wrap; gap: 12px; }
|
||||
.report-batch-summary span { display: inline-flex; align-items: center; gap: 7px; padding: 9px 12px; border-radius: 8px; background: var(--surface-muted); font-weight: 700; }
|
||||
.report-batch-preflight article { display: grid; gap: 10px; padding: 14px; border: 1px solid var(--border); border-radius: 10px; }
|
||||
.report-batch-preflight article > div { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; }
|
||||
.report-batch-preflight article small { color: var(--text-muted); }
|
||||
.report-batch-preflight ul { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }
|
||||
.report-batch-preflight li { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; padding: 9px 10px; border-radius: 8px; background: var(--surface-muted); }
|
||||
.report-batch-preflight li.is-eligible { border-left: 3px solid var(--success); }
|
||||
.report-batch-preflight li.is-blocked { border-left: 3px solid var(--warning); }
|
||||
|
||||
@media (max-width: 980px) {
|
||||
.channel-field-mapping-grid, .report-import-basic-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
||||
@@ -9490,6 +9571,99 @@ h3 {
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
|
||||
.manual-recharge-review,
|
||||
.manual-recharge-result {
|
||||
display: grid;
|
||||
gap: var(--space-5);
|
||||
}
|
||||
|
||||
.manual-recharge-review > p {
|
||||
color: var(--color-text-muted);
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.manual-recharge-review dl {
|
||||
background: var(--color-bg-subtle);
|
||||
border: 1px solid var(--color-border);
|
||||
border-radius: var(--radius-lg);
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.manual-recharge-review dl > div {
|
||||
align-items: center;
|
||||
border-bottom: 1px solid var(--color-border);
|
||||
display: grid;
|
||||
gap: var(--space-4);
|
||||
grid-template-columns: minmax(110px, 0.7fr) minmax(0, 1.5fr);
|
||||
padding: var(--space-4) var(--space-5);
|
||||
}
|
||||
|
||||
.manual-recharge-review dl > div:last-child {
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.manual-recharge-review dt {
|
||||
color: var(--color-text-muted);
|
||||
}
|
||||
|
||||
.manual-recharge-review dd {
|
||||
display: grid;
|
||||
font-variant-numeric: tabular-nums;
|
||||
gap: var(--space-1);
|
||||
justify-items: end;
|
||||
margin: 0;
|
||||
overflow-wrap: anywhere;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.manual-recharge-review dd span {
|
||||
color: var(--color-text-muted);
|
||||
font-size: var(--font-size-sm);
|
||||
}
|
||||
|
||||
.manual-recharge-review .is-positive {
|
||||
color: var(--color-success);
|
||||
}
|
||||
|
||||
.manual-recharge-review .is-negative {
|
||||
color: var(--color-danger);
|
||||
}
|
||||
|
||||
.manual-recharge-review__remark {
|
||||
background: var(--color-warning-soft);
|
||||
border-radius: var(--radius-md);
|
||||
color: var(--color-text-strong) !important;
|
||||
padding: var(--space-4);
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
|
||||
.manual-recharge-result {
|
||||
background: var(--color-success-soft);
|
||||
border: 1px solid var(--color-success);
|
||||
border-radius: var(--radius-lg);
|
||||
color: var(--color-text-strong);
|
||||
padding: var(--space-6);
|
||||
}
|
||||
|
||||
.manual-recharge-result > strong {
|
||||
color: var(--color-success);
|
||||
font-size: var(--font-size-lg);
|
||||
}
|
||||
|
||||
@media (max-width: 480px) {
|
||||
.manual-recharge-review dl > div {
|
||||
align-items: start;
|
||||
grid-template-columns: 1fr;
|
||||
gap: var(--space-2);
|
||||
}
|
||||
|
||||
.manual-recharge-review dd {
|
||||
justify-items: start;
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
|
||||
.admin-recharge-pagination {
|
||||
align-items: center;
|
||||
border-top: 1px solid var(--color-border);
|
||||
@@ -10166,6 +10340,63 @@ h3 {
|
||||
}
|
||||
|
||||
@media (max-width: 780px) {
|
||||
.enterprise-flow-card {
|
||||
min-height: 0;
|
||||
padding: var(--space-4);
|
||||
}
|
||||
|
||||
.enterprise-stepper {
|
||||
justify-content: flex-start;
|
||||
margin-bottom: var(--space-8);
|
||||
overflow-x: auto;
|
||||
padding-bottom: var(--space-2);
|
||||
}
|
||||
|
||||
.enterprise-stepper__item {
|
||||
flex: 0 0 auto;
|
||||
gap: var(--space-2);
|
||||
}
|
||||
|
||||
.enterprise-stepper__dot {
|
||||
height: 36px;
|
||||
width: 36px;
|
||||
}
|
||||
|
||||
.enterprise-stepper__arrow {
|
||||
flex: 0 0 auto;
|
||||
margin: 0 var(--space-2);
|
||||
}
|
||||
|
||||
.enterprise-form-panel,
|
||||
.enterprise-upload {
|
||||
min-width: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.enterprise-upload {
|
||||
padding: var(--space-4);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.enterprise-upload strong {
|
||||
max-width: 100%;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
|
||||
.enterprise-upload .file-actions {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.enterprise-address-selects > div {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
}
|
||||
|
||||
.enterprise-address-selects .ui-field {
|
||||
min-width: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.client-signature-heading,
|
||||
.client-drainage-panel__head {
|
||||
align-items: stretch;
|
||||
|
||||
Reference in New Issue
Block a user