* {
box-sizing: border-box;
}
html {
text-size-adjust: 100%;
}
body {
margin: 0;
min-width: 320px;
min-height: 100vh;
background: var(--color-bg);
color: var(--color-text);
font-family: var(--font-family);
font-size: var(--font-size-md);
line-height: var(--line-height-base);
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
}
a {
color: inherit;
text-decoration: none;
}
button,
input,
textarea,
select {
font: inherit;
}
button {
cursor: pointer;
}
button:disabled,
input:disabled,
textarea:disabled,
select:disabled {
cursor: not-allowed;
}
:focus {
outline: none;
}
:focus-visible {
box-shadow: var(--focus-ring);
}
h1,
h2,
h3,
p {
margin: 0;
}
h1 {
color: var(--color-text-strong);
font-size: var(--font-size-2xl);
font-weight: var(--font-weight-bold);
line-height: var(--line-height-tight);
}
h2 {
color: var(--color-text-strong);
font-size: var(--font-size-xl);
font-weight: var(--font-weight-semibold);
line-height: var(--line-height-tight);
}
h3 {
color: var(--color-text-strong);
font-size: var(--font-size-lg);
font-weight: var(--font-weight-semibold);
line-height: var(--line-height-tight);
}
.text-page-title {
color: var(--color-text-strong);
font-size: var(--font-size-2xl);
font-weight: var(--font-weight-bold);
line-height: var(--line-height-tight);
}
.text-section-title {
color: var(--color-text-strong);
font-size: var(--font-size-lg);
font-weight: var(--font-weight-semibold);
line-height: var(--line-height-tight);
}
.text-card-title {
color: var(--color-text-strong);
font-size: var(--font-size-lg);
font-weight: var(--font-weight-semibold);
line-height: 1.3;
}
.text-body {
color: var(--color-text);
font-size: var(--font-size-md);
line-height: var(--line-height-base);
}
.text-secondary {
color: var(--color-text-muted);
font-size: var(--font-size-sm);
line-height: var(--line-height-base);
}
.text-caption {
color: var(--color-text-muted);
font-size: var(--font-size-xs);
line-height: 1.45;
}
.app-shell {
display: grid;
grid-template-columns: var(--sidebar-width) minmax(0, 1fr);
height: 100vh;
overflow: hidden;
transition: grid-template-columns var(--transition-base);
}
.app-shell--collapsed {
grid-template-columns: 76px minmax(0, 1fr);
}
.sidebar {
background: var(--color-surface);
border-right: 1px solid var(--color-border);
color: var(--color-text);
display: flex;
flex-direction: column;
gap: var(--space-5);
height: 100vh;
padding: var(--space-6) var(--space-4);
min-width: 0;
overflow: hidden;
}
.brand-block {
align-items: center;
display: flex;
gap: var(--space-3);
justify-content: center;
padding: 0 0 var(--space-2);
}
.brand-logo {
display: block;
flex: 0 0 auto;
object-fit: contain;
}
.brand-logo--full {
height: 50px;
width: 148px;
}
.brand-logo--compact {
display: none;
height: 34px;
width: 34px;
}
.brand-copy {
min-width: 0;
}
.brand-mark {
color: var(--color-text-strong);
font-size: 18px;
font-weight: var(--font-weight-bold);
line-height: var(--line-height-tight);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.brand-subtitle {
color: var(--color-text-muted);
font-size: var(--font-size-xs);
margin-top: 3px;
}
.side-nav {
align-content: start;
display: grid;
flex: 1;
gap: var(--space-5);
overflow-y: auto;
overflow-x: hidden;
margin-right: calc(var(--space-4) * -1);
padding-right: calc(var(--space-4) - 2px);
scrollbar-color: transparent transparent;
scrollbar-width: thin;
}
.side-nav::-webkit-scrollbar {
width: 6px;
}
.side-nav::-webkit-scrollbar-track {
background: transparent;
}
.side-nav::-webkit-scrollbar-thumb {
background: transparent;
border-radius: var(--radius-full);
}
.sidebar:hover .side-nav {
scrollbar-color: rgba(37, 99, 235, 0.24) transparent;
}
.sidebar:hover .side-nav::-webkit-scrollbar-thumb {
background: rgba(37, 99, 235, 0.18);
}
.side-nav:hover::-webkit-scrollbar-thumb {
background: rgba(37, 99, 235, 0.22);
}
.side-nav::-webkit-scrollbar-thumb:hover {
background: rgba(37, 99, 235, 0.34);
}
.side-nav-section p {
color: var(--color-text-subtle);
font-size: var(--font-size-xs);
font-weight: var(--font-weight-semibold);
letter-spacing: 0;
margin-bottom: var(--space-2);
padding: 0 var(--space-3);
}
.side-nav-group-toggle {
align-items: center;
background: transparent;
border: 0;
border-radius: var(--radius-md);
color: var(--color-text-strong);
cursor: pointer;
display: flex;
font: inherit;
font-weight: var(--font-weight-semibold);
gap: var(--space-3);
margin-bottom: var(--space-1);
min-height: 42px;
padding: 10px var(--space-3);
text-align: left;
transition: background var(--transition-fast), color var(--transition-fast);
width: 100%;
}
.side-nav-group-toggle:hover {
background: var(--color-bg-subtle);
color: var(--color-selected);
}
.side-nav-group-label {
flex: 1;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.side-nav-group-chevron {
color: var(--color-text-muted);
flex: none;
}
.side-nav-list {
display: grid;
gap: var(--space-1);
}
.side-nav-list--closed {
display: none;
}
.side-nav-section:has(.side-nav-group-toggle) .side-nav-list {
padding-left: var(--space-6);
}
.side-nav a {
align-items: center;
border-radius: var(--radius-md);
color: var(--color-text);
display: flex;
gap: var(--space-3);
font-weight: var(--font-weight-medium);
padding: 10px var(--space-3);
transition: background var(--transition-fast), color var(--transition-fast);
min-width: 0;
}
.side-nav-label {
align-items: center;
display: inline-flex;
flex: 1;
gap: var(--space-1);
min-width: 0;
}
.side-nav-label-text {
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.dev-status-badge {
background: var(--color-warning-soft);
border: 1px solid color-mix(in srgb, var(--color-warning) 24%, transparent);
border-radius: 999px;
color: var(--color-warning);
flex: 0 0 auto;
font-size: 11px;
font-weight: var(--font-weight-semibold);
line-height: 1;
padding: 3px 6px;
white-space: nowrap;
}
.side-nav-pending-badge {
margin-left: 2px;
}
.ui-tabs__tab {
align-items: center;
display: inline-flex;
gap: var(--space-2);
}
.side-nav a.active,
.side-nav a:hover {
background: var(--color-selected-soft);
color: var(--color-selected);
}
.side-nav a.active {
box-shadow: inset 3px 0 0 var(--color-selected);
}
.sidebar-footer {
background: var(--color-bg-subtle);
border: 1px solid var(--color-border);
border-radius: var(--radius-lg);
display: grid;
gap: 2px;
padding: var(--space-3);
}
.sidebar-footer span {
color: var(--color-text-muted);
font-size: var(--font-size-xs);
}
.sidebar-footer strong {
color: var(--color-text-strong);
font-size: var(--font-size-sm);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.app-shell--collapsed .sidebar {
align-items: center;
padding-left: var(--space-3);
padding-right: var(--space-3);
}
.app-shell--collapsed .brand-copy,
.app-shell--collapsed .side-nav-section p,
.app-shell--collapsed .side-nav-group-label,
.app-shell--collapsed .side-nav-group-chevron,
.app-shell--collapsed .side-nav a span,
.app-shell--collapsed .sidebar-footer {
display: none;
}
.app-shell--collapsed .brand-block {
justify-content: center;
padding-left: 0;
padding-right: 0;
}
.app-shell--collapsed .brand-logo--full {
display: none;
}
.app-shell--collapsed .brand-logo--compact {
display: block;
}
.app-shell--collapsed .side-nav {
gap: var(--space-2);
margin-right: 0;
overflow-y: auto;
padding-right: 0;
scrollbar-width: none;
width: 100%;
overflow-x: hidden;
}
.app-shell--collapsed .side-nav::-webkit-scrollbar {
display: none;
}
.app-shell--collapsed .side-nav-section {
display: grid;
gap: 6px;
justify-items: center;
}
.app-shell--collapsed .side-nav-group-toggle {
border-radius: var(--radius-md);
display: inline-flex;
height: 38px;
justify-content: center;
margin-bottom: 0;
min-height: 38px;
padding: 0;
width: 38px;
}
.app-shell--collapsed .side-nav-list {
gap: 6px;
justify-items: center;
padding-left: 0;
width: 100%;
}
.app-shell--collapsed .side-nav-section:has(.side-nav-group-toggle) .side-nav-list {
padding-left: 0;
}
.app-shell--collapsed .side-nav a {
height: 44px;
justify-content: center;
padding: 0;
width: 44px;
}
.app-shell--collapsed .side-nav a svg {
height: 20px;
width: 20px;
}
.app-shell--collapsed .side-nav a.active {
box-shadow: inset 0 -3px 0 var(--color-accent);
}
.main-area {
display: grid;
grid-template-rows: var(--topbar-height) minmax(0, 1fr);
height: 100vh;
min-width: 0;
overflow: hidden;
}
.topbar {
align-items: center;
background: var(--color-surface);
border-bottom: 1px solid var(--color-border);
display: flex;
height: var(--topbar-height);
justify-content: space-between;
padding: 0 var(--space-7);
position: sticky;
top: 0;
z-index: 20;
}
.topbar-left,
.topbar-actions {
align-items: center;
display: flex;
gap: var(--space-3);
}
.topbar span {
color: var(--color-text-muted);
}
.icon-button {
align-items: center;
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
color: var(--color-text-muted);
display: inline-flex;
height: var(--control-height-md);
justify-content: center;
padding: 0;
position: relative;
transition: background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);
width: var(--control-height-md);
}
.icon-button:hover {
background: var(--color-selected-soft);
border-color: rgba(37, 99, 235, 0.22);
color: var(--color-selected);
}
.icon-button.has-dot::after {
background: var(--color-danger);
border: 2px solid var(--color-surface);
border-radius: var(--radius-full);
content: "";
height: 8px;
position: absolute;
right: 8px;
top: 8px;
width: 8px;
}
.notice-menu-wrap {
position: relative;
}
.notice-count {
align-items: center;
background: var(--color-danger);
border: 2px solid var(--color-surface);
border-radius: var(--radius-full);
color: var(--color-text-inverse) !important;
display: inline-flex;
font-size: 10px;
font-weight: var(--font-weight-bold);
height: 20px;
justify-content: center;
min-width: 20px;
padding: 0 4px;
position: absolute;
right: -7px;
top: -7px;
}
.notice-popover {
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
box-shadow: var(--shadow-lg);
display: grid;
gap: var(--space-1);
min-width: 238px;
padding: var(--space-3);
position: absolute;
right: 0;
top: calc(100% + 8px);
z-index: var(--z-dropdown);
}
.notice-popover__header {
align-items: center;
border-bottom: 1px solid var(--color-border);
display: flex;
justify-content: space-between;
margin-bottom: var(--space-1);
padding: 0 var(--space-1) var(--space-2);
}
.notice-popover__header strong {
color: var(--color-text-strong);
}
.notice-popover__header span {
color: var(--color-danger);
font-weight: var(--font-weight-semibold);
}
.notice-popover a,
.notice-popover p {
align-items: center;
border-radius: var(--radius-sm);
color: var(--color-text);
display: flex;
justify-content: space-between;
min-height: 38px;
padding: 0 var(--space-3);
}
.notice-popover a:hover {
background: var(--color-selected-soft);
color: var(--color-selected);
}
.notice-popover a strong {
background: var(--color-danger-soft);
border-radius: var(--radius-full);
color: var(--color-danger);
min-width: 28px;
padding: 2px 8px;
text-align: center;
}
.user-menu {
align-items: center;
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-full);
color: var(--color-text);
display: flex;
gap: var(--space-2);
height: 42px;
padding: 0 var(--space-3) 0 var(--space-1);
}
.user-menu-wrap {
position: relative;
}
.user-menu-popover {
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
box-shadow: var(--shadow-lg);
display: grid;
gap: var(--space-1);
min-width: 164px;
padding: var(--space-2);
position: absolute;
right: 0;
top: calc(100% + 8px);
z-index: var(--z-dropdown);
}
.user-menu-popover button {
align-items: center;
background: transparent;
border: 0;
border-radius: var(--radius-sm);
color: var(--color-text);
display: flex;
gap: var(--space-2);
min-height: 36px;
padding: 0 var(--space-3);
text-align: left;
}
.user-menu-popover button:hover {
background: var(--color-selected-soft);
color: var(--color-selected);
}
.user-avatar {
align-items: center;
background: var(--color-brand);
border-radius: var(--radius-full);
color: var(--color-accent);
display: inline-flex;
font-weight: var(--font-weight-bold);
height: 32px;
justify-content: center;
width: 32px;
}
.user-menu span:not(.user-avatar) {
display: grid;
gap: 1px;
text-align: left;
}
.user-menu strong {
color: var(--color-text-strong);
font-size: var(--font-size-sm);
}
.user-menu small {
color: var(--color-text-muted);
font-size: var(--font-size-xs);
}
.page-content {
margin: 0 auto;
max-width: var(--content-max-width);
overflow-y: auto;
padding: var(--space-7);
width: 100%;
}
.page-stack {
display: grid;
gap: var(--space-5);
}
.page-heading {
align-items: end;
display: flex;
gap: var(--space-5);
justify-content: space-between;
}
.overview-hero {
align-items: center;
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-lg);
box-shadow: var(--shadow-sm);
color: var(--color-text);
display: flex;
gap: var(--space-5);
justify-content: space-between;
padding: var(--space-7);
}
.overview-hero h1 {
color: var(--color-text-strong);
}
.overview-hero .eyebrow {
color: var(--color-selected);
}
.overview-hero .muted {
color: var(--color-text-muted);
margin-top: var(--space-2);
}
.page-heading > p {
max-width: 460px;
text-align: right;
}
.eyebrow {
color: var(--color-selected);
font-size: var(--font-size-sm);
font-weight: var(--font-weight-bold);
margin-bottom: var(--space-2);
}
.surface {
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-lg);
box-shadow: var(--shadow-sm);
min-width: 0;
padding: var(--space-6);
}
.ui-table-wrap {
max-width: 100%;
overflow-x: auto;
}
.ui-table {
border-collapse: collapse;
min-width: max-content;
width: 100%;
}
.ui-table th,
.ui-table td {
box-sizing: border-box;
}
.ui-modal {
align-items: center;
display: grid;
inset: 0;
justify-items: center;
padding: var(--space-6);
position: fixed;
z-index: 1000;
}
.ui-modal__mask {
background: rgba(15, 23, 42, 0.48);
border: 0;
cursor: default;
inset: 0;
padding: 0;
position: absolute;
}
.ui-modal__panel {
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-lg);
box-shadow: 0 24px 70px rgba(18, 18, 26, 0.18);
display: grid;
max-height: calc(100vh - 48px);
max-width: min(920px, calc(100vw - 48px));
min-width: min(520px, calc(100vw - 48px));
overflow: hidden;
position: relative;
width: min(640px, calc(100vw - 48px));
z-index: 1;
}
.ui-modal__panel--xl {
max-width: min(980px, calc(100vw - 48px));
width: min(860px, calc(100vw - 48px));
}
.ui-modal__header,
.ui-modal__footer {
align-items: center;
display: flex;
gap: var(--space-4);
justify-content: space-between;
padding: var(--space-5) var(--space-6);
}
.ui-modal__title {
min-width: 0;
}
.ui-modal__body {
max-height: calc(100vh - 220px);
overflow: auto;
padding: 0 var(--space-6) var(--space-6);
}
.ui-modal__footer {
border-top: 1px solid var(--color-border);
justify-content: flex-end;
}
.page-actions,
.table-actions {
align-items: center;
display: flex;
gap: var(--space-3);
}
.table-mono-id,
.table-strong-text,
.table-long-text {
display: block;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
}
.table-mono-id {
font-family: ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", monospace;
white-space: nowrap;
}
.table-strong-text {
white-space: nowrap;
}
.table-long-text {
line-height: var(--line-height-base);
}
.table-long-text--sms-template {
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
display: -webkit-box;
white-space: normal;
}
.dashboard-grid {
display: grid;
gap: var(--space-4);
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.metric-card {
display: grid;
gap: var(--space-2);
}
.metric-card--featured {
background: linear-gradient(180deg, var(--color-surface), var(--color-accent-soft));
border-color: rgba(217, 195, 160, 0.72);
}
.metric-card--featured span,
.metric-card--featured small {
color: var(--color-text-muted);
}
.metric-card--featured strong {
color: var(--color-text-strong);
}
.metric-card span {
color: var(--color-text-muted);
font-size: var(--font-size-sm);
}
.metric-card strong {
color: var(--color-text-strong);
font-size: 30px;
line-height: var(--line-height-tight);
}
.metric-card small {
color: var(--color-text-muted);
font-size: var(--font-size-xs);
}
.section-stack {
display: grid;
gap: var(--space-5);
}
.section-heading {
align-items: center;
display: flex;
gap: var(--space-4);
justify-content: space-between;
}
.chart-grid {
display: grid;
gap: var(--space-5);
grid-template-columns: minmax(0, 1.3fr) minmax(320px, 0.7fr);
}
.chart-card {
min-width: 0;
}
.chart-card h2 {
margin-bottom: var(--space-2);
}
.overview-grid {
display: grid;
gap: var(--space-5);
grid-template-columns: minmax(0, 1.2fr) minmax(320px, 0.8fr);
}
.overview-grid--three {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.quick-grid {
display: grid;
gap: var(--space-3);
grid-template-columns: repeat(4, minmax(0, 1fr));
}
.quick-action {
background: var(--color-bg-subtle);
border: 1px solid var(--color-border);
border-radius: var(--radius-lg);
color: var(--color-text);
display: grid;
gap: var(--space-2);
justify-items: start;
min-width: 0;
padding: var(--space-4);
text-align: left;
transition: border-color var(--transition-fast), box-shadow var(--transition-fast), transform var(--transition-fast);
}
.quick-action:hover {
border-color: rgba(37, 99, 235, 0.24);
box-shadow: var(--shadow-sm);
transform: translateY(-1px);
}
.quick-action svg {
color: var(--color-selected);
}
.quick-action span {
color: var(--color-text-strong);
font-weight: var(--font-weight-semibold);
}
.quick-action small {
color: var(--color-text-muted);
}
.progress-heading {
align-items: center;
color: var(--color-text-muted);
display: flex;
justify-content: space-between;
margin: var(--space-4) 0 var(--space-2);
}
.progress-heading strong {
color: var(--color-text-strong);
}
.progress-track {
background: var(--color-surface-muted);
border-radius: var(--radius-full);
height: 10px;
overflow: hidden;
}
.progress-track span {
background: linear-gradient(90deg, var(--color-selected), var(--color-accent));
border-radius: inherit;
display: block;
height: 100%;
}
.mini-status-card {
align-items: flex-start;
display: flex;
gap: var(--space-4);
}
.mini-status-card svg {
color: var(--color-selected);
flex: 0 0 auto;
margin-top: 2px;
}
.mini-status-card div {
display: grid;
gap: var(--space-1);
min-width: 0;
}
.mini-status-card span {
color: var(--color-text-muted);
font-size: var(--font-size-sm);
}
.mini-status-card strong {
color: var(--color-text-strong);
}
.mini-status-card small {
color: var(--color-text-muted);
}
.downstream-breakdown-table {
display: grid;
}
.downstream-breakdown-table__head,
.downstream-breakdown-table__row {
align-items: center;
display: grid;
gap: var(--space-3);
grid-template-columns: minmax(140px, 1.2fr) repeat(4, minmax(72px, 0.7fr));
min-height: 52px;
}
.downstream-breakdown-table__head {
border-bottom: 1px solid var(--color-border);
color: var(--color-text-muted);
font-size: var(--font-size-xs);
font-weight: var(--font-weight-semibold);
}
.downstream-breakdown-table__head--apps,
.downstream-breakdown-table__row--apps {
grid-template-columns: minmax(180px, 1.4fr) repeat(4, minmax(72px, 0.65fr));
}
.downstream-breakdown-table__row {
border-bottom: 1px solid var(--color-border);
}
.downstream-breakdown-table__row strong,
.downstream-breakdown-table__row span {
min-width: 0;
}
.downstream-breakdown-table__empty {
color: var(--color-text-muted);
padding: var(--space-5) 0 var(--space-1);
}
.downstream-bucket-list {
display: grid;
gap: var(--space-3);
}
.downstream-bucket-list--wrap {
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
}
.downstream-bucket-item {
align-items: center;
background: var(--color-bg-subtle);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
display: flex;
justify-content: space-between;
min-height: 56px;
padding: 0 var(--space-4);
}
.downstream-bucket-item span {
color: var(--color-text-muted);
font-size: var(--font-size-sm);
}
.downstream-bucket-item strong {
color: var(--color-text-strong);
font-size: var(--font-size-lg);
}
.sms-send-page {
display: grid;
gap: var(--space-6);
}
.sms-send-title {
align-items: center;
display: flex;
gap: var(--space-4);
}
.sms-send-title h1 {
font-size: var(--font-size-lg);
font-weight: var(--font-weight-semibold);
}
.sms-send-title__icon {
align-items: center;
background: var(--color-selected-soft);
border-radius: var(--radius-sm);
color: var(--color-selected);
display: inline-flex;
height: 40px;
justify-content: center;
width: 40px;
}
.sms-send-layout {
align-items: start;
display: grid;
gap: var(--space-6);
grid-template-columns: minmax(0, 1fr) 372px;
}
.sms-send-main {
display: grid;
gap: var(--space-6);
}
.send-card,
.sms-preview-card {
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
padding: var(--space-6);
}
.send-card__title {
align-items: center;
display: flex;
gap: var(--space-2);
margin-bottom: var(--space-5);
}
.send-card__title span {
align-items: center;
background: var(--color-selected);
border-radius: var(--radius-full);
color: var(--color-text-inverse);
display: inline-flex;
font-size: var(--font-size-sm);
font-weight: var(--font-weight-bold);
height: 24px;
justify-content: center;
width: 24px;
}
.send-card__title h2,
.preview-title h2 {
font-size: var(--font-size-lg);
}
.send-field {
display: grid;
gap: var(--space-3);
}
.send-field span {
color: var(--color-text-strong);
font-weight: var(--font-weight-semibold);
}
.send-field input,
.receiver-table input {
background: transparent;
border: 0;
border-bottom: 1px solid transparent;
color: var(--color-text);
height: var(--control-height-md);
outline: 0;
width: 100%;
}
.send-field input::placeholder,
.receiver-table input::placeholder {
color: var(--color-text-subtle);
}
.send-form-row {
display: grid;
gap: var(--space-6);
grid-template-columns: repeat(3, minmax(0, 1fr));
margin-top: var(--space-6);
}
.template-trigger {
align-items: center;
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
color: var(--color-text);
display: flex;
gap: var(--space-2);
height: var(--control-height-md);
justify-content: space-between;
padding: 0 var(--control-padding-x);
text-align: left;
transition: border-color var(--transition-fast), box-shadow var(--transition-fast), background var(--transition-fast);
width: 100%;
}
.template-trigger:hover,
.template-trigger:focus-visible {
border-color: var(--color-selected);
box-shadow: var(--focus-ring);
}
.template-trigger span {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.template-trigger svg {
color: var(--color-selected);
flex: 0 0 auto;
}
.template-trigger__placeholder {
color: var(--color-text-subtle);
}
.radio-row {
align-items: center;
display: flex;
gap: var(--space-6);
min-height: var(--control-height-md);
}
.radio-row label {
align-items: center;
color: var(--color-text);
display: flex;
gap: var(--space-2);
}
.radio-row label.is-disabled {
color: var(--color-text-muted);
cursor: not-allowed;
}
.radio-row input[type="radio"] {
accent-color: var(--color-selected);
height: 16px;
width: 16px;
}
.receiver-tabs {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
margin-bottom: var(--space-4);
}
.receiver-tabs button {
background: var(--color-surface);
border: 1px solid var(--color-border);
color: var(--color-text-muted);
height: 44px;
}
.receiver-tabs button.active {
border-color: var(--color-selected);
color: var(--color-selected);
}
.receiver-table {
border: 1px solid var(--color-border);
border-bottom: 0;
}
.receiver-table__head,
.receiver-table__row {
display: grid;
grid-template-columns: 120px minmax(0, 1fr) 96px;
}
.receiver-table__head {
background: var(--color-surface-muted);
color: var(--color-text);
font-size: var(--font-size-sm);
font-weight: var(--font-weight-semibold);
}
.receiver-table__head span,
.receiver-table__row span,
.receiver-table__row input,
.receiver-table__row button {
align-items: center;
border-bottom: 1px solid var(--color-border);
display: flex;
min-height: 50px;
padding: 0 var(--space-4);
}
.receiver-table__row span {
color: var(--color-selected);
}
.receiver-table__row button {
background: transparent;
border-left: 0;
border-right: 0;
border-top: 0;
color: var(--color-danger);
justify-content: center;
}
.receiver-table__row button:disabled {
color: var(--color-text-subtle);
}
.add-recipient {
align-items: center;
background: var(--color-bg-subtle);
border: 1px dashed var(--color-selected);
color: var(--color-selected);
display: flex;
gap: var(--space-2);
height: 40px;
justify-content: center;
margin-top: var(--space-3);
width: 100%;
}
.import-panel {
align-items: center;
border: 1px dashed var(--color-border-strong);
border-radius: var(--radius-md);
color: var(--color-text-muted);
display: grid;
gap: var(--space-3);
grid-auto-rows: max-content;
align-content: center;
justify-items: center;
min-height: 190px;
padding: var(--space-6);
text-align: center;
}
.import-panel__icon {
align-items: center;
background: var(--color-selected-soft);
border-radius: var(--radius-full);
color: var(--color-selected);
display: inline-flex;
height: 48px;
justify-content: center;
width: 48px;
}
.import-panel__icon svg {
color: var(--color-selected);
}
.import-panel strong {
color: var(--color-text-strong);
}
.send-tip {
color: var(--color-text-muted);
font-size: var(--font-size-xs);
margin-top: var(--space-3);
}
.send-submit-row {
display: flex;
justify-content: flex-end;
}
.mms-send-page .send-card {
box-shadow: none;
}
.mms-send-tip {
background: var(--color-selected-soft);
border: 1px solid #bfdbfe;
color: var(--color-text);
font-weight: var(--font-weight-medium);
line-height: 1.6;
margin-bottom: var(--space-4);
padding: var(--space-3) var(--space-4);
}
.mms-import-mode {
display: grid;
gap: var(--space-5);
}
.mms-import-rules {
align-items: start;
background: #e5e7eb;
color: var(--color-text-muted);
display: flex;
gap: var(--space-5);
justify-content: space-between;
padding: var(--space-5);
}
.mms-import-rules strong {
color: var(--color-text-strong);
display: block;
margin-bottom: var(--space-3);
}
.mms-import-rules p {
margin: 0 0 var(--space-2);
}
.mms-import-panel {
min-height: 240px;
}
.mms-import-panel .import-panel__icon {
border-radius: var(--radius-md);
height: 64px;
width: 64px;
}
.sms-preview-card {
position: sticky;
top: calc(var(--topbar-height) + var(--space-6));
}
.preview-title {
align-items: center;
color: var(--color-selected);
display: flex;
gap: var(--space-2);
margin-bottom: var(--space-5);
}
.preview-title h2 {
color: var(--color-text-strong);
}
.phone-preview {
background: var(--color-surface-muted);
border-radius: var(--radius-sm);
padding: 22px;
}
.phone-preview div {
background: #dbe6ff;
border: 1px solid #90b0ff;
border-radius: 10px;
box-shadow: 0 2px 5px rgba(37, 99, 235, 0.18);
color: var(--color-text);
min-height: 54px;
padding: var(--space-4);
}
.preview-stats {
display: grid;
margin-top: var(--space-5);
}
.preview-stats div {
align-items: center;
border-bottom: 1px solid var(--color-border);
display: flex;
justify-content: space-between;
padding: var(--space-4) 0;
}
.preview-stats span {
color: var(--color-text-muted);
}
.preview-stats strong {
color: var(--color-selected);
}
.preview-note {
background: var(--color-surface-muted);
border-radius: var(--radius-sm);
color: var(--color-text-muted);
font-size: var(--font-size-xs);
margin-top: var(--space-5);
padding: var(--space-3) var(--space-4);
}
.mms-preview-card {
min-height: 340px;
}
.mms-message-preview {
background: #e5e7eb;
border-radius: var(--radius-sm);
padding: var(--space-6);
}
.mms-message-preview > div {
background: var(--color-surface);
border-radius: var(--radius-lg);
box-shadow: var(--shadow-sm);
color: var(--color-text);
display: grid;
gap: var(--space-2);
min-height: 64px;
padding: var(--space-4);
}
.mms-message-preview strong {
color: var(--color-text-strong);
font-size: var(--font-size-sm);
}
.mms-message-preview p {
color: var(--color-text-muted);
font-size: var(--font-size-xs);
line-height: 1.6;
margin: 0;
}
.template-picker {
display: grid;
gap: var(--space-4);
}
.template-picker__list {
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
display: grid;
max-height: 360px;
overflow-y: auto;
}
.template-picker__list button {
align-items: center;
background: var(--color-surface);
border: 0;
border-bottom: 1px solid var(--color-border);
color: var(--color-text);
display: flex;
gap: var(--space-4);
justify-content: space-between;
padding: var(--space-4);
text-align: left;
}
.template-picker__list button:last-child {
border-bottom: 0;
}
.template-picker__list button:hover,
.template-picker__list button.active {
background: var(--color-selected-soft);
}
.template-picker__list button.active {
color: var(--color-selected);
}
.template-picker__list span {
display: grid;
gap: var(--space-1);
min-width: 0;
}
.template-picker__list strong {
color: var(--color-text-strong);
}
.template-picker__list small {
color: var(--color-text-muted);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.batch-filter-card {
display: grid;
gap: var(--space-5);
}
.batch-filter-card h2 {
font-size: var(--font-size-lg);
}
.batch-filter-card p strong {
color: var(--color-selected);
}
.batch-filter-grid {
align-items: end;
display: grid;
gap: var(--space-8);
grid-template-columns: minmax(220px, 1fr) minmax(220px, 1fr) minmax(220px, 1fr);
}
.batch-table-card {
overflow: hidden;
padding: 0;
}
.batch-table {
min-width: 1080px;
}
.batch-table th {
background: #e5e7eb;
color: var(--color-text-strong);
}
.batch-table td {
height: 70px;
}
.batch-table tbody tr:hover {
background: transparent;
}
.batch-main-row td {
border-top: 12px solid var(--color-bg);
position: relative;
transition: background var(--transition-fast);
}
.batch-main-row td,
.batch-template-row td {
background: #fbfcff;
}
.batch-task-id {
display: grid;
gap: var(--space-2);
justify-items: start;
}
.batch-task-id strong {
color: var(--color-text-strong);
font-size: var(--font-size-sm);
}
.batch-template-row td {
border-top: 0;
height: auto;
padding: 0 var(--space-4) var(--space-5);
position: relative;
transition: background var(--transition-fast);
}
.batch-main-row.batch-row--hovered td,
.batch-template-row.batch-row--hovered td {
background: #dbeafe;
}
.batch-template-content {
align-items: flex-start;
background: var(--color-surface);
border: 1px solid #edf0f5;
border-radius: var(--radius-md);
box-shadow: inset 0 0 0 1px rgba(18, 18, 26, 0.01);
color: var(--color-text);
display: flex;
gap: var(--space-3);
line-height: 1.7;
margin-left: 0;
padding: var(--space-3) var(--space-4);
transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}
.batch-template-row.batch-row--hovered .batch-template-content {
border-color: rgba(37, 99, 235, 0.18);
box-shadow: 0 1px 2px rgba(37, 99, 235, 0.08);
}
.batch-template-row.batch-row--hovered .ui-inline-text-preview {
border-color: rgba(37, 99, 235, 0.18);
box-shadow: 0 1px 2px rgba(37, 99, 235, 0.08);
}
.batch-template-content > span:first-child {
color: var(--color-text-muted);
flex: 0 0 auto;
font-size: var(--font-size-xs);
font-weight: var(--font-weight-semibold);
}
.batch-template-content p {
color: var(--color-text-muted);
margin: 0;
}
.batch-template-content p strong {
color: var(--color-text-muted);
font-weight: var(--font-weight-regular);
margin-right: 2px;
}
.batch-send-time {
display: grid;
gap: var(--space-1);
}
.batch-send-time span {
align-items: center;
color: var(--color-selected);
display: flex;
gap: var(--space-1);
font-weight: var(--font-weight-semibold);
}
.batch-send-time small {
color: var(--color-text-muted);
}
.batch-progress {
display: grid;
gap: var(--space-2);
}
.batch-progress div:first-child {
align-items: center;
display: flex;
justify-content: space-between;
}
.batch-progress span {
color: var(--color-text-muted);
font-size: var(--font-size-xs);
}
.batch-progress strong {
color: var(--color-selected);
font-size: var(--font-size-xs);
}
.batch-progress__track {
background: var(--color-border-strong);
border-radius: var(--radius-full);
height: 8px;
overflow: hidden;
}
.batch-progress__bar {
display: block;
height: 100%;
}
.batch-progress__bar--completed {
background: var(--color-success);
}
.batch-progress__bar--sending {
background: var(--color-selected);
}
.batch-progress__bar--terminated {
background: var(--color-danger);
}
.batch-actions {
display: flex;
gap: var(--space-2);
justify-content: flex-end;
}
.batch-actions .ui-button {
min-width: 52px;
}
.batch-actions .ui-button:last-child {
color: var(--color-danger);
}
.mms-task-table td {
height: 96px;
}
.mms-task-content {
align-items: center;
display: grid;
gap: var(--space-4);
grid-template-columns: 74px minmax(0, 1fr);
min-width: 0;
}
.mms-task-content img {
aspect-ratio: 1 / 1;
border-radius: var(--radius-sm);
object-fit: cover;
width: 74px;
}
.mms-task-content div {
display: grid;
gap: var(--space-2);
min-width: 0;
}
.mms-task-content strong {
color: var(--color-text-strong);
font-size: var(--font-size-md);
font-weight: var(--font-weight-semibold);
}
.mms-task-content p {
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
color: var(--color-text-muted);
display: -webkit-box;
line-height: 1.5;
margin: 0;
overflow: hidden;
}
.mms-detail-row-content {
align-items: center;
display: grid;
gap: 14px;
grid-template-columns: 84px minmax(0, 1fr);
min-width: 0;
}
.mms-detail-row-content img {
aspect-ratio: 1 / 1;
border-radius: var(--radius-sm);
object-fit: cover;
width: 84px;
}
.mms-detail-row-content div {
display: grid;
gap: 6px;
min-width: 0;
}
.mms-detail-row-content strong {
color: var(--color-text-strong);
font-size: var(--font-size-sm);
font-weight: var(--font-weight-semibold);
}
.mms-detail-row-content p {
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
color: var(--color-text-muted);
display: -webkit-box;
line-height: 1.55;
margin: 0;
overflow: hidden;
}
.mms-task-actions {
grid-template-columns: repeat(2, minmax(62px, 1fr));
}
.mms-task-actions .ui-button:last-child {
color: var(--color-selected);
}
.mms-detail-template {
align-items: start;
display: grid;
gap: var(--space-5);
grid-template-columns: 220px minmax(0, 1fr);
}
.mms-detail-template img {
aspect-ratio: 4 / 3;
border-radius: var(--radius-sm);
object-fit: cover;
width: 100%;
}
.mms-detail-template div {
display: grid;
gap: var(--space-3);
}
.mms-detail-template p {
color: var(--color-text);
line-height: 1.7;
margin: 0;
}
.batch-pagination {
align-items: center;
display: flex;
justify-content: space-between;
padding: var(--space-4) var(--space-6);
}
.batch-pagination > span {
color: var(--color-text-muted);
}
.batch-pagination > div {
display: flex;
gap: var(--space-2);
}
.task-detail-title {
align-items: center;
display: flex;
gap: var(--space-4);
}
.task-detail-title .sms-send-title__icon {
background: linear-gradient(135deg, #eff6ff 0%, #f6efe4 100%);
border-color: rgba(37, 99, 235, 0.16);
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.72);
height: 46px;
width: 46px;
}
.task-detail-title h2 {
color: var(--color-text-strong);
font-size: 30px;
line-height: 1.15;
margin: 0;
}
.task-detail-title p {
color: var(--color-text-muted);
font-size: var(--font-size-sm);
margin: var(--space-2) 0 0;
}
.task-detail {
display: grid;
gap: var(--space-6);
}
.task-detail-section {
background: var(--color-surface);
border: 1px solid rgba(209, 213, 219, 0.72);
border-radius: var(--radius-lg);
box-shadow: var(--shadow-xs);
display: grid;
gap: var(--space-5);
padding: var(--space-6);
}
.task-detail-section > h3,
.task-section-title h3 {
align-items: center;
color: var(--color-text-strong);
display: flex;
font-size: var(--font-size-xl);
gap: var(--space-2);
margin: 0;
}
.task-section-title {
align-items: center;
display: flex;
gap: var(--space-3);
justify-content: space-between;
}
.task-info-grid {
display: grid;
gap: var(--space-4);
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.task-info-grid > div {
background: linear-gradient(180deg, #fbfcfe 0%, #f7f8fa 100%);
border: 1px solid rgba(209, 213, 219, 0.74);
border-radius: var(--radius-sm);
display: grid;
gap: var(--space-2);
min-height: 78px;
padding: var(--space-4);
transition: border-color var(--transition-fast), box-shadow var(--transition-fast), transform var(--transition-fast);
}
.task-info-grid > div:hover {
border-color: rgba(37, 99, 235, 0.22);
box-shadow: 0 8px 20px rgba(18, 18, 26, 0.05);
transform: translateY(-1px);
}
.task-info-grid span,
.task-stat-card span,
.task-total-progress span,
.overall-rate-card span {
color: var(--color-text-muted);
font-size: var(--font-size-xs);
font-weight: var(--font-weight-semibold);
}
.task-info-grid strong {
color: var(--color-text-strong);
font-size: var(--font-size-md);
}
.task-info-full {
grid-column: 1 / -1;
}
.task-info-full strong {
line-height: 1.7;
}
.task-send-type {
align-items: center;
color: var(--color-selected) !important;
display: flex;
gap: var(--space-2);
}
.text-blue {
color: var(--color-selected) !important;
}
.text-green {
color: var(--color-success) !important;
font-weight: var(--font-weight-semibold);
}
.task-stat-grid {
display: grid;
gap: var(--space-4);
grid-template-columns: repeat(4, minmax(0, 1fr));
}
.task-stat-card {
background: var(--color-surface);
border: 1px solid rgba(191, 219, 254, 0.9);
border-radius: var(--radius-sm);
display: grid;
gap: var(--space-2);
min-height: 96px;
overflow: hidden;
padding: var(--space-5);
position: relative;
}
.task-stat-card::before {
content: "";
height: 3px;
inset: 0 0 auto;
position: absolute;
}
.task-stat-card--blue::before {
background: var(--color-selected);
}
.task-stat-card--green {
border-color: #bbf7d0;
}
.task-stat-card--green::before {
background: var(--color-success);
}
.task-stat-card strong {
color: var(--color-selected);
font-size: 32px;
line-height: 1;
}
.task-stat-card--green strong {
color: var(--color-success);
}
.task-total-progress {
background: #f8fafc;
border: 1px solid rgba(209, 213, 219, 0.72);
border-radius: var(--radius-sm);
display: grid;
gap: var(--space-4);
padding: var(--space-5);
}
.task-total-progress > div:first-child {
align-items: center;
display: flex;
justify-content: space-between;
}
.task-total-progress strong {
color: var(--color-selected);
}
.overall-rate-card {
align-items: center;
background:
radial-gradient(circle at 50% 24%, rgba(217, 195, 160, 0.24), transparent 28%),
linear-gradient(135deg, #f8fbff 0%, #eef4ff 100%);
border: 1px solid rgba(191, 219, 254, 0.95);
border-radius: var(--radius-sm);
display: grid;
gap: var(--space-3);
justify-items: center;
min-height: 178px;
padding: var(--space-6);
}
.overall-rate-card strong {
color: var(--color-success);
font-size: 52px;
line-height: 1;
}
.overall-rate-card small {
color: var(--color-text-muted);
}
.task-detail-section h4 {
color: var(--color-text-strong);
font-size: var(--font-size-base);
margin: 0;
}
.carrier-rate-grid {
display: grid;
gap: var(--space-4);
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.carrier-rate-card {
background: #ffffff;
border: 1px solid rgba(209, 213, 219, 0.78);
border-radius: var(--radius-sm);
box-shadow: var(--shadow-xs);
display: grid;
gap: var(--space-4);
padding: var(--space-5);
}
.carrier-rate-card > div:first-child,
.carrier-rate-card p {
align-items: center;
display: flex;
justify-content: space-between;
}
.carrier-rate-card > div:first-child strong {
color: var(--color-text-strong);
}
.carrier-rate-card > div:first-child span {
color: var(--color-success);
font-size: var(--font-size-xl);
font-weight: var(--font-weight-bold);
}
.carrier-rate-card p {
color: var(--color-text-muted);
font-size: var(--font-size-xs);
margin: 0;
}
.city-rate-table th {
background: #f3f4f6;
color: var(--color-text-strong);
}
.city-rate-table td {
height: 56px;
}
.city-rate-table tbody tr:hover {
background: #f8fafc;
}
.ui-modal__panel--xl {
box-shadow: 0 24px 70px rgba(18, 18, 26, 0.18);
}
.ui-modal__panel--xl .ui-modal__header {
background:
linear-gradient(90deg, rgba(217, 195, 160, 0.12), transparent 36%),
#ffffff;
padding: 26px 30px 24px;
position: relative;
}
.ui-modal__panel--xl .ui-modal__header::before {
background: linear-gradient(90deg, var(--color-brand), var(--color-accent));
content: "";
height: 3px;
inset: 0 0 auto;
position: absolute;
}
.ui-modal__panel--xl .ui-modal__body {
background: #f7f8fa;
padding: 22px 30px;
}
.task-detail-title .sms-send-title__icon {
background: var(--color-brand);
border-color: var(--color-brand);
color: var(--color-accent);
height: 48px;
width: 48px;
}
.task-detail-title h2 {
font-size: 28px;
letter-spacing: 0;
}
.task-detail-title p {
color: #8a93a3;
font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
margin-top: 6px;
}
.task-detail {
gap: 18px;
}
.task-detail-section {
background: #ffffff;
border: 1px solid #e9edf3;
border-radius: var(--radius-lg);
box-shadow: 0 8px 24px rgba(18, 18, 26, 0.04);
gap: 18px;
padding: 22px;
}
.task-detail-section > h3,
.task-section-title h3 {
font-size: 18px;
gap: 8px;
}
.task-section-title {
border-bottom: 1px solid #eef1f5;
padding-bottom: 14px;
}
.task-info-grid {
gap: 0;
grid-template-columns: repeat(4, minmax(0, 1fr));
overflow: hidden;
border: 1px solid #edf0f5;
border-radius: var(--radius-md);
}
.task-info-grid > div {
background: #ffffff;
border: 0;
border-bottom: 1px solid #edf0f5;
border-right: 1px solid #edf0f5;
border-radius: 0;
box-shadow: none;
min-height: 82px;
padding: 16px 18px;
transform: none;
}
.task-info-grid > div:nth-child(4n) {
border-right: 0;
}
.task-info-grid > div:hover {
background: #fbfcff;
border-color: #edf0f5;
box-shadow: none;
transform: none;
}
.task-info-grid span,
.task-stat-card span,
.task-total-progress span,
.overall-rate-card span {
color: #7b8494;
font-weight: var(--font-weight-medium);
}
.task-info-grid strong {
color: #18202f;
font-size: 14px;
line-height: 1.55;
}
.task-info-full {
background: #fbfcff !important;
border-bottom: 0 !important;
border-right: 0 !important;
grid-column: 1 / -1;
min-height: 92px !important;
}
.task-info-full strong {
color: #263244;
font-size: 14px;
font-weight: var(--font-weight-medium);
}
.task-stat-grid {
gap: 12px;
}
.task-stat-card {
background: #ffffff;
border: 1px solid #e7ebf2;
border-radius: var(--radius-md);
box-shadow: 0 1px 2px rgba(18, 18, 26, 0.04);
min-height: 106px;
padding: 18px;
}
.task-stat-card::before {
height: 100%;
inset: 0 auto 0 0;
width: 3px;
}
.task-stat-card strong {
font-size: 30px;
letter-spacing: 0;
}
.task-total-progress {
background: #fbfcff;
border-color: #e7ebf2;
border-radius: var(--radius-md);
padding: 18px;
}
.task-total-progress .batch-progress__track {
height: 10px;
}
.overall-rate-card {
background:
linear-gradient(180deg, rgba(37, 99, 235, 0.08), transparent 58%),
#ffffff;
border-color: #d9e6ff;
border-radius: var(--radius-md);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9);
min-height: 150px;
}
.overall-rate-card strong {
font-size: 48px;
}
.carrier-rate-grid {
gap: 12px;
}
.carrier-rate-card {
border-color: #e7ebf2;
border-radius: var(--radius-md);
box-shadow: 0 1px 2px rgba(18, 18, 26, 0.04);
padding: 18px;
}
.city-rate-table {
min-width: 760px;
}
.city-rate-table th {
background: #f7f8fa;
border-bottom: 1px solid #e7ebf2;
color: #5f6878;
font-size: 12px;
}
.city-rate-table td {
height: 58px;
}
.send-detail-table-card {
overflow: hidden;
padding: 0;
}
.send-detail-table {
min-width: 1420px;
}
.mms-send-detail-table {
min-width: 1560px;
}
.send-detail-table th {
background: #e5e7eb;
color: var(--color-text-strong);
height: 58px;
}
.send-detail-main-row td {
background: #ffffff;
height: 72px;
}
.send-detail-content-row td {
background: #ffffff;
border-top: 0;
height: auto;
padding: 0 var(--space-4) var(--space-5);
}
.send-detail-message {
color: var(--color-text-muted);
display: block;
line-height: 1.65;
max-width: 380px;
}
.send-detail-content-block {
align-items: flex-start;
background: #fbfcff;
border: 1px solid #edf0f5;
border-radius: var(--radius-md);
display: flex;
gap: var(--space-3);
line-height: 1.7;
padding: var(--space-3) var(--space-4);
}
.send-detail-content-block span {
color: var(--color-text-muted);
flex: 0 0 auto;
font-size: var(--font-size-xs);
font-weight: var(--font-weight-semibold);
}
.send-detail-content-block p {
color: var(--color-text-muted);
margin: 0;
}
.send-detail-app-name,
.send-detail-count,
.send-detail-time,
.send-detail-region {
display: grid;
gap: 2px;
}
.send-detail-time,
.send-detail-region {
color: var(--color-text-muted);
}
.send-detail-time small,
.send-detail-region small,
.send-detail-count small {
color: var(--color-text-muted);
font-size: var(--font-size-xs);
}
.send-detail-count strong {
color: var(--color-text-strong);
}
.send-detail-receipt-code {
color: var(--color-success);
font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
font-size: var(--font-size-xs);
}
.send-detail-carrier {
color: #374151;
font-weight: var(--font-weight-semibold);
}
.uplink-table-card {
overflow: hidden;
padding: 0;
}
.uplink-table-card .ui-table th {
background: #e5e7eb;
color: var(--color-text-strong);
height: 54px;
}
.uplink-table-card .ui-table td {
height: 78px;
}
.uplink-content {
color: var(--color-text-strong);
}
.uplink-detail {
display: grid;
gap: var(--space-5);
}
.uplink-detail-hint {
color: var(--color-text-muted);
margin: 0;
}
.uplink-match-list {
display: grid;
gap: var(--space-5);
}
.uplink-match-card {
background: #f1f3f5;
border: 1px solid #e5e7eb;
border-radius: var(--radius-md);
display: grid;
gap: var(--space-4);
padding: var(--space-5);
}
.uplink-match-grid {
display: grid;
gap: var(--space-5);
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.uplink-match-grid div,
.uplink-match-content {
display: grid;
gap: var(--space-2);
}
.uplink-match-grid span,
.uplink-match-content span {
color: var(--color-text-muted);
font-size: var(--font-size-xs);
font-weight: var(--font-weight-semibold);
}
.uplink-match-grid strong,
.uplink-match-content p {
color: var(--color-text-strong);
}
.uplink-match-content p {
line-height: 1.75;
margin: 0;
}
.uplink-match-actions {
display: flex;
justify-content: flex-end;
}
.mms-uplink-pagination {
align-items: center;
border-top: 1px solid #edf0f5;
color: var(--color-text-muted);
display: flex;
justify-content: space-between;
padding: 16px 22px;
}
.mms-uplink-pagination > div {
display: flex;
gap: 10px;
}
.mms-uplink-detail .task-detail-section:first-child {
background: #ffffff;
}
.mms-uplink-match-card {
background: #f4f6f8;
}
.mms-uplink-image {
display: grid;
gap: var(--space-2);
}
.mms-uplink-image span {
color: var(--color-text-muted);
font-size: var(--font-size-xs);
font-weight: var(--font-weight-semibold);
}
.mms-uplink-image img {
aspect-ratio: 16 / 7;
border-radius: var(--radius-sm);
object-fit: cover;
width: 100%;
}
.sms-app-grid {
display: grid;
gap: var(--space-5);
grid-template-columns: repeat(3, minmax(260px, 1fr));
}
.sms-app-card {
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
display: grid;
gap: var(--space-5);
padding: var(--space-6);
}
.sms-app-card h2 {
font-size: var(--font-size-xl);
}
.sms-app-card dl {
display: grid;
gap: var(--space-4);
margin: 0;
}
.sms-app-card dl div {
align-items: center;
display: flex;
justify-content: space-between;
}
.sms-app-card dt {
color: var(--color-text-muted);
font-weight: var(--font-weight-semibold);
}
.sms-app-card dd {
color: var(--color-text-strong);
margin: 0;
text-align: right;
}
.sms-app-card dd span {
color: var(--color-selected);
}
.sms-app-param-table {
border: 1px solid var(--color-border);
display: grid;
}
.sms-app-param-table div {
display: grid;
grid-template-columns: minmax(220px, 0.7fr) minmax(0, 1fr);
min-height: 58px;
}
.sms-app-param-table div + div {
border-top: 1px solid var(--color-border);
}
.sms-app-param-table span,
.sms-app-param-table strong {
align-items: center;
display: flex;
padding: 0 var(--space-5);
}
.sms-app-param-table span {
background: #f1f3f5;
color: var(--color-text-muted);
font-weight: var(--font-weight-semibold);
}
.sms-app-param-table strong {
background: #ffffff;
color: var(--color-text-strong);
font-weight: var(--font-weight-medium);
}
.signature-page-header {
align-items: center;
display: flex;
justify-content: space-between;
}
.signature-search-row {
max-width: 360px;
}
.signature-list {
display: grid;
gap: var(--space-5);
}
.signature-card {
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
overflow: hidden;
position: relative;
}
.signature-card::before {
content: "";
inset: 0 auto 0 0;
position: absolute;
width: 5px;
}
.signature-card--green::before {
background: var(--color-success);
}
.signature-card--blue::before {
background: var(--color-selected);
}
.signature-card--red::before {
background: var(--color-danger);
}
.signature-card--gray::before {
background: var(--color-text-subtle);
}
.signature-summary {
align-items: center;
display: grid;
gap: var(--space-5);
grid-template-columns: 28px 1fr 1fr 1fr 1fr 1fr 1fr 110px;
min-height: 112px;
padding: var(--space-5) var(--space-6);
}
.signature-summary > button {
background: transparent;
border: 0;
color: var(--color-text-muted);
display: inline-flex;
padding: 0;
}
.signature-summary div:not(.signature-actions) {
display: grid;
gap: var(--space-2);
}
.signature-summary span {
color: var(--color-text-muted);
font-size: var(--font-size-xs);
font-weight: var(--font-weight-medium);
}
.signature-summary strong {
color: var(--color-text-strong);
}
.signature-actions {
display: grid;
gap: var(--space-3);
}
.drainage-panel {
background: #f1f3f5;
border-top: 1px solid var(--color-border);
display: grid;
gap: var(--space-5);
padding: var(--space-5) var(--space-6);
}
.drainage-panel h2 {
font-size: var(--font-size-lg);
}
.drainage-table {
display: grid;
}
.drainage-table__head,
.drainage-table__row {
align-items: center;
display: grid;
gap: var(--space-4);
grid-template-columns: minmax(96px, 0.9fr) minmax(180px, 1.5fr) repeat(3, minmax(64px, 0.65fr)) minmax(128px, 1fr) minmax(196px, auto);
min-height: 58px;
}
.drainage-table__head {
color: var(--color-text-muted);
font-size: var(--font-size-xs);
font-weight: var(--font-weight-semibold);
border-bottom: 1px solid var(--color-border);
}
.drainage-table__row {
border-bottom: 1px solid var(--color-border);
}
.drainage-table__url {
color: var(--color-text-strong);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.drainage-row-actions {
display: flex;
gap: var(--space-2);
}
.drainage-panel__footer {
display: flex;
justify-content: flex-end;
}
.admin-enterprise-signature-list .signature-summary {
gap: var(--space-2);
grid-template-columns: 22px minmax(96px, 0.9fr) minmax(132px, 1fr) minmax(104px, 0.85fr) repeat(4, minmax(64px, 0.55fr)) minmax(206px, auto);
min-width: 1040px;
padding-inline: var(--space-3);
}
.admin-enterprise-signature-list .signature-actions {
display: flex;
gap: 6px;
justify-content: flex-end;
justify-self: end;
min-width: 206px;
white-space: nowrap;
}
.admin-enterprise-signature-list .signature-actions .ui-button {
padding-left: 8px;
padding-right: 8px;
}
.admin-split-filter {
align-items: end;
display: grid;
gap: var(--space-5);
grid-template-columns: minmax(240px, 1fr) minmax(280px, 1.2fr) auto;
}
.admin-application-filter {
grid-template-columns: minmax(320px, 460px) auto;
}
.cmpp-status-cell {
align-items: center;
display: flex;
gap: var(--space-2);
flex-wrap: wrap;
}
.cmpp-status-cell button {
align-items: center;
background: var(--color-selected-soft);
border: 1px solid rgba(37, 99, 235, 0.22);
border-radius: var(--radius-full);
color: var(--color-selected);
display: inline-flex;
font-weight: var(--font-weight-bold);
height: 28px;
justify-content: center;
min-width: 34px;
padding: 0 var(--space-2);
}
.cmpp-status-cell button:hover {
background: var(--color-selected);
color: var(--color-text-inverse);
}
.cmpp-status-cell__params {
gap: 4px;
min-width: 58px !important;
}
.cmpp-connection-detail {
display: grid;
gap: var(--space-5);
}
.cmpp-connection-summary {
display: grid;
gap: var(--space-4);
grid-template-columns: repeat(4, minmax(0, 1fr));
}
.cmpp-connection-summary > div {
background: var(--color-bg-subtle);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
display: grid;
gap: var(--space-2);
min-height: 82px;
padding: var(--space-4);
}
.cmpp-connection-summary span {
color: var(--color-text-muted);
font-size: var(--font-size-xs);
font-weight: var(--font-weight-semibold);
}
.cmpp-connection-summary strong {
color: var(--color-text-strong);
font-size: var(--font-size-lg);
}
.cmpp-param-detail {
display: grid;
gap: var(--space-5);
}
.cmpp-param-grid {
display: grid;
gap: var(--space-4);
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.cmpp-param-grid > div {
background: var(--color-bg-subtle);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
display: grid;
gap: var(--space-2);
min-height: 78px;
padding: var(--space-4);
}
.cmpp-param-grid span {
color: var(--color-text-muted);
font-size: var(--font-size-xs);
font-weight: var(--font-weight-semibold);
}
.cmpp-param-grid strong {
color: var(--color-text-strong);
font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
word-break: break-all;
}
.cmpp-param-copy {
background: #0f172a;
border-radius: var(--radius-md);
color: #e5e7eb;
line-height: 1.7;
margin: 0;
overflow: auto;
padding: var(--space-5);
white-space: pre-wrap;
}
.admin-split-pagination {
align-items: center;
border-top: 1px solid var(--color-border);
display: flex;
gap: var(--space-3);
justify-content: flex-end;
margin-top: var(--space-5);
padding-top: var(--space-5);
}
.admin-split-pagination span {
color: var(--color-text-muted);
}
.admin-confirm-text {
color: var(--color-text-strong);
line-height: 1.8;
margin: 0;
}
.detail-grid {
display: grid;
gap: var(--space-5);
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.detail-grid div {
background: var(--color-bg-subtle);
border-radius: var(--radius-md);
display: grid;
gap: var(--space-2);
padding: var(--space-4);
}
.detail-grid span {
color: var(--color-text-muted);
font-size: var(--font-size-xs);
font-weight: var(--font-weight-semibold);
}
.detail-grid strong {
color: var(--color-text-strong);
line-height: 1.7;
}
.detail-grid__wide {
grid-column: 1 / -1;
}
.signature-modal-title h2 {
font-size: var(--font-size-2xl);
}
.signature-modal-title p {
color: var(--color-text-muted);
margin-top: var(--space-1);
}
.signature-form {
display: grid;
gap: var(--space-8);
}
.signature-form section {
display: grid;
gap: var(--space-5);
}
.signature-form h3 {
border-left: 5px solid var(--color-selected);
padding-left: var(--space-3);
}
.signature-alert {
align-items: center;
background: var(--color-selected-soft);
border: 1px solid #bfdbfe;
color: var(--color-selected);
display: flex;
gap: var(--space-3);
line-height: 1.7;
padding: var(--space-4);
}
.signature-form-grid {
display: grid;
gap: var(--space-5);
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.signature-form-grid__wide {
grid-column: 1 / -1;
}
.signature-upload {
align-items: center;
border: 2px dashed var(--color-border);
color: var(--color-text-muted);
display: grid;
gap: var(--space-2);
justify-items: center;
min-height: 170px;
padding: var(--space-5);
text-align: center;
}
.signature-upload > span:first-child {
justify-self: start;
color: var(--color-text-strong);
font-weight: var(--font-weight-semibold);
}
.signature-upload svg {
color: var(--color-text-muted);
}
.signature-upload strong {
color: var(--color-selected);
}
.signature-upload small {
color: var(--color-text-muted);
}
.signature-upload--compact {
min-height: 118px;
}
.signature-file-line {
align-items: center;
display: flex;
gap: var(--space-3);
}
.signature-file-line > span {
color: var(--color-text-muted);
font-weight: var(--font-weight-semibold);
}
.signature-file-line small {
color: var(--color-text-muted);
}
.drainage-edit-form .signature-upload {
min-height: 112px;
}
.drainage-form-note {
align-items: flex-start;
}
.drainage-form-note ol {
margin: 0;
padding-left: var(--space-5);
}
.drainage-file-picker {
display: grid;
gap: var(--space-2);
}
.drainage-file-picker > span {
color: var(--color-text-strong);
font-weight: var(--font-weight-semibold);
}
.drainage-file-picker > div {
align-items: center;
display: grid;
gap: var(--space-3);
grid-template-columns: auto 1fr;
}
.drainage-file-picker em {
background: var(--color-surface-subtle);
color: var(--color-text-muted);
font-style: normal;
padding: var(--space-3) var(--space-4);
}
.mms-signature-table-card {
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
overflow: hidden;
padding: 0;
}
.mms-signature-table-card .ui-table th {
background: #e1e5ea;
color: #7b8494;
font-size: var(--font-size-sm);
height: 58px;
}
.mms-signature-table-card .ui-table td {
color: var(--color-text);
height: 86px;
}
.mms-signature-table-card .ui-table th:first-child,
.mms-signature-table-card .ui-table td:first-child {
padding-left: var(--space-6);
}
.mms-signature-name {
color: var(--color-text-strong);
font-size: var(--font-size-lg);
}
.mms-signature-actions {
align-items: center;
display: flex;
gap: var(--space-3);
}
.mms-signature-actions .ui-button:disabled {
background: #f5f6f8;
border-color: #e5e7eb;
color: var(--color-text-subtle);
opacity: 1;
}
.mms-signature-delete {
border-color: rgba(239, 68, 68, 0.22);
color: var(--color-danger);
}
.mms-signature-delete:hover {
background: rgba(239, 68, 68, 0.06);
border-color: rgba(239, 68, 68, 0.36);
color: var(--color-danger);
}
.mms-pagination {
align-items: center;
display: flex;
gap: var(--space-2);
justify-content: center;
padding: var(--space-3) 0;
}
.mms-pagination button {
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-sm);
color: var(--color-text);
height: 36px;
min-width: 36px;
padding: 0 var(--space-3);
transition: background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);
}
.mms-pagination button:hover:not(:disabled),
.mms-pagination button.active {
background: var(--color-selected);
border-color: var(--color-selected);
color: var(--color-text-inverse);
}
.mms-pagination button:disabled {
color: var(--color-text-subtle);
}
.mms-template-header {
align-items: center;
display: flex;
justify-content: space-between;
}
.mms-template-header .sms-send-title {
align-items: flex-start;
}
.mms-template-header p {
color: var(--color-text-muted);
margin-top: var(--space-2);
}
.mms-template-toolbar {
align-items: center;
display: grid;
gap: var(--space-4);
grid-template-columns: minmax(0, 1fr) auto;
}
.mms-template-grid {
display: grid;
gap: var(--space-4);
grid-template-columns: repeat(3, minmax(320px, 1fr));
}
.mms-template-card {
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
display: grid;
grid-template-rows: auto auto;
min-height: 0;
overflow: hidden;
position: relative;
transition: border-color var(--transition-fast), box-shadow var(--transition-fast), transform var(--transition-fast);
}
.mms-template-card:hover {
border-color: rgba(37, 99, 235, 0.2);
box-shadow: var(--shadow-sm);
transform: translateY(-1px);
}
.mms-template-card::before {
content: "";
inset: 0 auto 0 0;
position: absolute;
width: 5px;
}
.mms-template-card--green::before {
background: var(--color-success);
}
.mms-template-card--blue::before {
background: var(--color-selected);
}
.mms-template-card--gray::before {
background: var(--color-text-subtle);
}
.mms-template-card__body {
display: grid;
gap: 10px;
padding: var(--space-5) var(--space-5) var(--space-4);
}
.mms-template-meta {
display: grid;
gap: 7px;
padding-right: 128px;
}
.mms-template-card h2 {
color: var(--color-text-strong);
font-size: var(--font-size-lg);
font-weight: var(--font-weight-semibold);
line-height: 1.3;
}
.mms-template-card h3 {
color: var(--color-text-strong);
font-size: var(--font-size-sm);
font-weight: var(--font-weight-semibold);
line-height: 1.28;
margin-top: 1px;
}
.mms-template-code {
color: var(--color-text-muted);
font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
font-size: var(--font-size-sm);
line-height: 1.28;
margin-bottom: 0;
}
.mms-template-card img {
aspect-ratio: 16 / 7.2;
border-radius: var(--radius-sm);
display: block;
object-fit: cover;
width: 100%;
}
.mms-template-content {
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
color: var(--color-text-muted);
display: -webkit-box;
line-height: 1.45;
margin: 0;
overflow: hidden;
}
.mms-template-app-tag {
background: var(--color-selected-soft);
border: 1px solid rgba(37, 99, 235, 0.16);
border-radius: var(--radius-full);
color: var(--color-selected);
font-size: var(--font-size-xs);
font-weight: var(--font-weight-semibold);
padding: 5px 10px;
position: absolute;
right: var(--space-5);
top: var(--space-5);
z-index: 1;
}
.mms-template-status {
display: grid;
gap: 6px;
margin-top: 2px;
}
.mms-template-status > span {
color: var(--color-text-muted);
font-size: var(--font-size-xs);
font-weight: var(--font-weight-semibold);
}
.mms-template-status > div {
align-items: center;
display: flex;
flex-wrap: wrap;
gap: var(--space-4);
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.mms-template-status section {
align-items: center;
display: inline-flex;
gap: 5px;
min-width: 0;
}
.mms-template-status small {
color: var(--color-text-muted);
font-size: var(--font-size-xs);
}
.mms-template-card__footer {
align-items: center;
background: #f4f6f8;
border-top: 1px solid var(--color-border);
display: flex;
gap: var(--space-2);
justify-content: space-between;
min-height: 48px;
padding: 0 var(--space-5);
}
.mms-template-card__footer > span {
color: var(--color-text-muted);
font-size: var(--font-size-sm);
}
.mms-template-card__footer div {
align-items: center;
display: flex;
gap: var(--space-5);
}
.mms-template-card__footer button {
align-items: center;
background: transparent;
border: 0;
color: var(--color-selected);
display: inline-flex;
gap: 4px;
font-weight: var(--font-weight-semibold);
padding: 0;
}
.mms-template-card__footer button:nth-child(2) {
color: var(--color-text-strong);
}
.mms-template-card__footer button:last-child {
color: var(--color-danger);
}
.mms-template-modal-title h2 {
font-size: var(--font-size-2xl);
}
.mms-template-modal-title p {
color: var(--color-text-muted);
line-height: 1.55;
margin-top: var(--space-2);
max-width: 980px;
}
.mms-template-form {
display: grid;
gap: var(--space-5);
}
.mms-template-form-grid {
display: grid;
gap: var(--space-5);
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.mms-frame-header {
align-items: center;
display: flex;
justify-content: space-between;
}
.mms-frame-header div {
align-items: baseline;
display: flex;
gap: var(--space-2);
}
.mms-frame-header strong {
color: var(--color-text-strong);
}
.mms-frame-header span {
color: var(--color-text-muted);
}
.mms-frame-list {
display: grid;
gap: var(--space-5);
}
.mms-frame {
background: #eef0f2;
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
display: grid;
gap: var(--space-3);
padding: var(--space-4);
}
.mms-frame__top {
align-items: center;
display: grid;
gap: var(--space-3);
grid-template-columns: auto 124px 1fr;
}
.mms-frame__top > strong {
color: var(--color-text-strong);
}
.mms-frame__top > button {
background: transparent;
border: 0;
color: var(--color-danger);
justify-self: end;
padding: 0;
}
.mms-frame-type .ui-field__label {
display: none;
}
.mms-frame-type .ui-select button {
background: var(--color-surface);
}
.mms-frame .ui-textarea {
background: var(--color-surface);
border-color: transparent;
min-height: 106px;
}
.mms-file-drop {
align-items: center;
background: var(--color-surface);
border: 2px dashed var(--color-border);
color: var(--color-text-muted);
display: grid;
gap: var(--space-3);
justify-items: center;
min-height: 132px;
padding: var(--space-5);
text-align: center;
}
.mms-file-drop div {
align-items: center;
display: flex;
gap: var(--space-3);
}
.mms-file-drop strong {
color: var(--color-text-strong);
}
.mms-file-drop small {
color: var(--color-text-muted);
}
.mms-save-button {
background: #7c3aed;
border-color: #7c3aed;
}
.mms-save-button:hover {
background: #6d28d9;
border-color: #6d28d9;
}
.mms-preview {
display: grid;
gap: var(--space-4);
}
.mms-preview img {
aspect-ratio: 16 / 9;
border-radius: var(--radius-md);
object-fit: cover;
width: 100%;
}
.mms-preview p {
color: var(--color-text-muted);
line-height: 1.75;
}
.mms-preview-frames {
display: flex;
flex-wrap: wrap;
gap: var(--space-2);
}
.mms-preview-frames span {
align-items: center;
background: var(--color-bg-subtle);
border: 1px solid var(--color-border);
border-radius: var(--radius-full);
color: var(--color-text-muted);
display: inline-flex;
gap: var(--space-1);
min-height: 30px;
padding: 0 var(--space-3);
}
.template-toolbar {
align-items: center;
display: grid;
gap: var(--space-4);
grid-template-columns: minmax(0, 1fr) auto;
}
.template-card-grid {
display: grid;
gap: var(--space-5);
grid-template-columns: repeat(3, minmax(280px, 1fr));
}
.template-card {
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
display: grid;
gap: var(--space-4);
min-height: 300px;
overflow: hidden;
padding: var(--space-6);
position: relative;
}
.template-card::before {
content: "";
inset: 0 auto 0 0;
position: absolute;
width: 5px;
}
.template-card--green::before {
background: var(--color-success);
}
.template-card--blue::before {
background: var(--color-selected);
}
.template-card--red::before {
background: var(--color-danger);
}
.template-card h2 {
color: var(--color-text-strong);
font-size: var(--font-size-lg);
font-weight: var(--font-weight-semibold);
line-height: 1.3;
}
.template-hash {
color: var(--color-text-muted);
font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
margin: 0;
}
.template-content {
color: var(--color-text-strong);
font-size: var(--font-size-lg);
line-height: 1.65;
margin: 0;
}
.template-vars {
align-items: center;
display: flex;
flex-wrap: wrap;
gap: var(--space-2);
}
.template-vars span {
color: var(--color-text-muted);
}
.template-vars strong,
.template-current-vars strong {
background: #e8f0ff;
border-radius: var(--radius-sm);
color: var(--color-selected);
font-weight: var(--font-weight-medium);
padding: 5px 10px;
}
.template-card-footer {
align-items: center;
border-top: 1px solid var(--color-border);
display: flex;
justify-content: space-between;
margin-top: auto;
padding-top: var(--space-4);
}
.template-card-footer span {
color: var(--color-text-muted);
}
.template-card-footer div {
display: flex;
gap: var(--space-3);
}
.template-card-footer button {
background: transparent;
border: 0;
color: var(--color-selected);
padding: 0;
}
.template-card-footer button:last-child {
color: var(--color-danger);
}
.template-modal-title h2 {
font-size: var(--font-size-2xl);
}
.template-modal-title p {
color: var(--color-text-muted);
margin-top: var(--space-1);
}
.template-form {
display: grid;
gap: var(--space-5);
}
.template-form .ui-textarea {
min-height: 220px;
}
.template-form-meta {
align-items: center;
display: flex;
justify-content: space-between;
}
.template-form-meta button {
background: transparent;
border: 0;
color: var(--color-selected);
font-weight: var(--font-weight-semibold);
padding: 0;
}
.template-form-meta span {
color: var(--color-text-muted);
}
.template-variable-panel {
border: 1px solid var(--color-border);
display: grid;
gap: var(--space-4);
padding: var(--space-5);
}
.template-variable-panel h3 {
font-size: var(--font-size-lg);
}
.template-variable-buttons {
display: flex;
flex-wrap: wrap;
gap: var(--space-3);
}
.template-variable-buttons button {
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-sm);
color: var(--color-text);
min-height: 36px;
padding: 0 var(--space-4);
}
.template-variable-buttons button:hover {
border-color: var(--color-selected);
color: var(--color-selected);
}
.template-custom-variable {
display: grid;
gap: var(--space-3);
grid-template-columns: minmax(0, 1fr) 96px;
}
.template-info-tip {
align-items: center;
background: var(--color-selected-soft);
border-left: 4px solid var(--color-selected);
color: var(--color-text);
display: flex;
gap: var(--space-3);
line-height: 1.7;
padding: var(--space-4);
}
.template-info-tip svg {
color: var(--color-selected);
flex: 0 0 auto;
}
.template-current-vars {
align-items: center;
display: flex;
flex-wrap: wrap;
gap: var(--space-2);
}
.task-detail-title h2 {
font-size: 22px;
}
.task-stat-layout {
display: grid;
gap: 14px;
grid-template-columns: minmax(280px, 0.9fr) minmax(0, 1.4fr);
}
.task-progress-card {
background:
linear-gradient(180deg, rgba(37, 99, 235, 0.08), transparent 64%),
#ffffff;
border: 1px solid #dbe7ff;
border-radius: var(--radius-md);
display: grid;
gap: 14px;
padding: 20px;
}
.task-progress-card span,
.task-stat-list span {
color: #7b8494;
font-size: var(--font-size-xs);
font-weight: var(--font-weight-medium);
}
.task-progress-card strong {
color: var(--color-selected);
font-size: 42px;
line-height: 1;
}
.task-progress-card small {
color: #7b8494;
}
.task-stat-list {
background: #ffffff;
border: 1px solid #e7ebf2;
border-radius: var(--radius-md);
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
overflow: hidden;
}
.task-stat-list > div {
align-content: center;
border-right: 1px solid #edf0f5;
display: grid;
gap: 10px;
min-height: 138px;
padding: 20px;
}
.task-stat-list > div:last-child {
border-right: 0;
}
.task-stat-list strong {
color: #18202f;
font-size: 28px;
line-height: 1;
}
.overall-rate-card {
min-height: 188px;
}
.overall-rate-split {
display: grid;
gap: 12px;
grid-template-columns: repeat(2, minmax(120px, 1fr));
width: min(420px, 100%);
}
.overall-rate-split div {
background: rgba(255, 255, 255, 0.78);
border: 1px solid rgba(209, 213, 219, 0.72);
border-radius: var(--radius-md);
display: grid;
gap: 4px;
justify-items: center;
padding: 12px;
}
.overall-rate-split b {
color: #18202f;
font-size: 18px;
}
.rate-tone-low,
.rate-tone-low .batch-progress__bar {
--rate-color: var(--color-danger);
}
.rate-tone-medium,
.rate-tone-medium .batch-progress__bar {
--rate-color: var(--color-warning);
}
.rate-tone-high,
.rate-tone-high .batch-progress__bar {
--rate-color: var(--color-success);
}
.overall-rate-card.rate-tone-low {
background: linear-gradient(180deg, rgba(220, 38, 38, 0.09), transparent 58%), #ffffff;
border-color: rgba(220, 38, 38, 0.28);
}
.overall-rate-card.rate-tone-medium {
background: linear-gradient(180deg, rgba(217, 119, 6, 0.1), transparent 58%), #ffffff;
border-color: rgba(217, 119, 6, 0.28);
}
.overall-rate-card.rate-tone-high {
background: linear-gradient(180deg, rgba(22, 163, 74, 0.09), transparent 58%), #ffffff;
border-color: rgba(22, 163, 74, 0.26);
}
.overall-rate-card.rate-tone-low strong,
.carrier-rate-card.rate-tone-low > div:first-child span,
.rate-text.rate-tone-low {
color: var(--color-danger) !important;
}
.overall-rate-card.rate-tone-medium strong,
.carrier-rate-card.rate-tone-medium > div:first-child span,
.rate-text.rate-tone-medium {
color: var(--color-warning) !important;
}
.overall-rate-card.rate-tone-high strong,
.carrier-rate-card.rate-tone-high > div:first-child span,
.rate-text.rate-tone-high {
color: var(--color-success) !important;
}
.rate-text {
font-weight: var(--font-weight-semibold);
}
.carrier-rate-card .batch-progress__bar,
.city-rate-table .batch-progress__bar {
background: var(--rate-color, var(--color-success));
}
.detail-message {
color: var(--color-text-muted);
display: block;
max-width: 330px;
}
.receipt {
color: var(--color-success);
font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
font-size: var(--font-size-xs);
font-weight: var(--font-weight-semibold);
}
.receipt--failed {
color: var(--color-danger);
}
.form-grid {
display: grid;
gap: var(--space-4);
}
.form-grid--two {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.content-grid {
display: grid;
gap: var(--space-5);
grid-template-columns: minmax(0, 1.4fr) minmax(300px, 0.6fr);
}
.soft-panel {
background: var(--color-bg-subtle);
border: 1px solid var(--color-border);
border-radius: var(--radius-lg);
min-width: 0;
padding: var(--space-5);
}
.soft-panel h3 {
margin-bottom: var(--space-3);
}
.summary-list {
display: grid;
gap: var(--space-3);
}
.summary-list div {
align-items: center;
display: flex;
justify-content: space-between;
}
.summary-list span {
color: var(--color-text-muted);
}
.summary-list strong {
color: var(--color-text-strong);
}
.plan-grid {
display: grid;
gap: var(--space-4);
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.plan-card {
border: 1px solid var(--color-border);
border-radius: var(--radius-lg);
display: grid;
gap: var(--space-4);
padding: var(--space-5);
}
.plan-card--highlight {
border-color: rgba(217, 195, 160, 0.78);
box-shadow: 0 0 0 3px rgba(217, 195, 160, 0.18);
}
.plan-card strong {
color: var(--color-text-strong);
font-size: 26px;
line-height: var(--line-height-tight);
}
.muted {
color: var(--color-text-muted);
}
.text-strong {
color: var(--color-text-strong);
}
.status-success {
color: var(--color-success);
}
.status-warning {
color: var(--color-warning);
}
.status-danger {
color: var(--color-danger);
}
.status-info {
color: var(--color-info);
}
.empty-state {
align-items: center;
display: grid;
justify-items: center;
min-height: 240px;
text-align: center;
}
.empty-state strong {
color: var(--color-text-strong);
font-size: var(--font-size-lg);
}
.empty-state span {
color: var(--color-text-muted);
margin-top: var(--space-2);
}
.login-page {
min-height: 100vh;
display: grid;
place-items: center;
padding: 36px 20px;
background:
radial-gradient(circle at 18% 16%, rgba(37, 99, 235, 0.12), transparent 32%),
radial-gradient(circle at 82% 14%, rgba(16, 185, 129, 0.1), transparent 30%),
linear-gradient(135deg, rgba(37, 99, 235, 0.08), rgba(15, 23, 42, 0.04)),
var(--color-bg);
}
.login-panel {
width: min(428px, 100%);
padding: 34px 34px 30px;
border: 1px solid rgba(148, 163, 184, 0.24);
border-radius: 8px;
background: var(--color-surface);
box-shadow: 0 26px 70px rgba(15, 23, 42, 0.14);
}
.login-brand {
display: grid;
justify-items: center;
gap: 14px;
margin-bottom: 30px;
text-align: center;
}
.login-brand img {
display: block;
width: 178px;
height: 64px;
object-fit: contain;
}
.login-brand h1 {
margin: 0;
color: var(--color-text-strong);
font-size: 24px;
font-weight: 800;
letter-spacing: 0;
line-height: 1.15;
}
.login-brand p {
margin: 8px 0 0;
color: var(--color-text-muted);
font-size: 15px;
font-weight: 500;
}
.login-form {
display: grid;
gap: 17px;
}
.login-captcha-row {
display: grid;
grid-template-columns: 1fr 136px;
gap: 12px;
align-items: end;
}
.login-captcha {
height: 40px;
border: 1px solid var(--color-border);
border-radius: 8px;
background: linear-gradient(180deg, #fff, var(--color-surface-muted));
color: var(--color-text-strong);
font-weight: 700;
cursor: pointer;
}
.login-error {
margin: 0;
padding: 10px 12px;
border-radius: 8px;
color: var(--color-danger);
background: rgba(239, 68, 68, 0.1);
}
.login-alert-message {
margin: 0;
color: var(--color-text-strong);
line-height: 1.7;
}
.system-page {
gap: 28px;
}
.system-page-toolbar {
align-items: center;
display: flex;
justify-content: space-between;
}
.system-filter-row {
max-width: 520px;
}
.system-log-filters {
align-items: end;
display: grid;
gap: 22px;
grid-template-columns: minmax(320px, 1fr) minmax(220px, 0.32fr) minmax(220px, 0.32fr);
}
.system-log-range {
align-items: center;
display: flex;
flex-wrap: wrap;
gap: 12px;
}
.system-log-range > span {
align-items: center;
color: var(--color-text-muted);
display: inline-flex;
gap: 8px;
}
.system-table-card {
overflow: hidden;
padding: 0;
}
.system-table-card .ui-table-wrap {
border: 0;
border-radius: 0;
}
.system-table-card .ui-table {
min-width: 1080px;
}
.system-table-card .ui-table th {
background: #e5e7eb;
color: #7b8494;
height: 58px;
}
.system-table-card .ui-table td {
height: 72px;
}
.system-table-card .ui-table tbody tr:nth-child(odd) td {
background: #ffffff;
}
.system-table-card .ui-table tbody tr:nth-child(even) td {
background: #fbfcfe;
}
.system-table-card .ui-table tbody tr:hover td {
background: #f2f5fa;
}
.inline-actions {
align-items: center;
display: flex;
gap: 12px;
}
.system-user-form {
display: grid;
gap: 24px;
padding-bottom: 96px;
}
.system-user-form .ui-field__label {
color: var(--color-text-strong);
font-weight: var(--font-weight-semibold);
}
.system-log-detail {
color: var(--color-text-muted);
line-height: 1.6;
}
.system-log-detail-card {
background: var(--color-bg-subtle);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
display: grid;
gap: var(--space-1);
line-height: 1.55;
max-width: 360px;
padding: var(--space-3);
}
.system-log-detail-card strong {
color: var(--color-text-strong);
font-size: var(--font-size-sm);
}
.system-log-detail-card span {
color: var(--color-text-muted);
}
.system-log-detail-card small {
color: var(--color-selected);
font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
font-size: var(--font-size-xs);
}
.enterprise-page {
gap: 28px;
}
.enterprise-page-title {
color: var(--color-text-strong);
font-size: var(--font-size-2xl);
font-weight: var(--font-weight-semibold);
margin: 0;
}
.enterprise-status-card {
align-items: center;
display: flex;
gap: 14px;
min-height: 96px;
padding: 0 34px;
}
.enterprise-status-card strong {
color: var(--color-text-strong);
font-size: var(--font-size-md);
}
.enterprise-status-card--pending {
border-color: rgba(37, 99, 235, 0.26);
}
.enterprise-status-card--approved {
border-color: rgba(22, 163, 74, 0.28);
}
.enterprise-status-card--rejected {
border-color: rgba(220, 38, 38, 0.28);
}
.enterprise-review-status {
align-items: center;
border-radius: var(--radius-full);
display: inline-flex;
font-size: var(--font-size-sm);
font-weight: var(--font-weight-semibold);
min-height: 30px;
padding: 0 var(--space-3);
}
.enterprise-review-status--uncertified {
background: var(--color-surface-muted);
color: var(--color-text-muted);
}
.enterprise-review-status--pending {
background: var(--color-info-soft);
color: var(--color-info);
}
.enterprise-review-status--approved {
background: var(--color-success-soft);
color: var(--color-success);
}
.enterprise-review-status--rejected {
background: var(--color-danger-soft);
color: var(--color-danger);
}
.enterprise-status-card button,
.enterprise-result button {
align-items: center;
background: transparent;
border: 0;
color: var(--color-selected);
display: inline-flex;
font-weight: var(--font-weight-semibold);
gap: 4px;
}
.enterprise-info-card {
padding: 44px 54px;
}
.enterprise-info-card dl {
display: grid;
gap: 34px 120px;
grid-template-columns: repeat(2, minmax(0, 1fr));
margin: 0;
max-width: 1120px;
}
.enterprise-info-card div,
.enterprise-result dl div {
display: grid;
gap: 14px;
grid-template-columns: 170px minmax(0, 1fr);
}
.enterprise-info-card dt,
.enterprise-result dt {
color: var(--color-text-muted);
font-weight: var(--font-weight-semibold);
}
.enterprise-info-card dd,
.enterprise-result dd {
color: var(--color-text-strong);
font-weight: var(--font-weight-semibold);
margin: 0;
}
.enterprise-flow-card {
min-height: 700px;
padding: 46px 54px;
}
.enterprise-stepper {
align-items: center;
display: flex;
justify-content: center;
margin-bottom: 82px;
}
.enterprise-stepper__item {
align-items: center;
display: flex;
gap: 14px;
}
.enterprise-stepper__dot {
align-items: center;
background: #d1d5db;
border-radius: var(--radius-full);
color: #8b95a5;
display: inline-flex;
font-weight: var(--font-weight-bold);
height: 44px;
justify-content: center;
width: 44px;
}
.enterprise-stepper__dot.is-active,
.enterprise-stepper__dot.is-complete {
background: var(--color-selected);
color: #ffffff;
}
.enterprise-stepper__item strong {
color: #8b95a5;
font-size: var(--font-size-md);
}
.enterprise-stepper__item strong.is-active {
color: var(--color-text-strong);
}
.enterprise-stepper__arrow {
color: #8b95a5;
margin: 0 28px;
}
.enterprise-form-panel,
.enterprise-verify-panel,
.enterprise-face-panel {
display: grid;
gap: 26px;
margin-left: 0;
max-width: 920px;
}
.enterprise-form-panel {
margin-left: 0;
}
.enterprise-required,
.enterprise-address-selects > span {
color: var(--color-text-strong);
font-size: var(--font-size-md);
font-weight: var(--font-weight-semibold);
}
.enterprise-required::first-letter,
.enterprise-address-selects > span::first-letter {
color: var(--color-danger);
}
.enterprise-upload {
align-items: center;
border: 2px dashed #dfe4ec;
color: var(--color-selected);
display: grid;
gap: 12px;
height: 176px;
justify-items: center;
max-width: 920px;
}
.enterprise-upload strong {
color: var(--color-selected);
font-size: var(--font-size-md);
}
.enterprise-help,
.enterprise-form-note,
.enterprise-verify-panel small {
color: var(--color-text-muted);
line-height: 1.7;
margin: -12px 0 0;
}
.enterprise-address-selects {
display: grid;
gap: 12px;
}
.enterprise-address-selects > div {
display: flex;
gap: 16px;
}
.enterprise-address-selects .ui-field {
min-width: 140px;
width: 236px;
}
.enterprise-actions {
align-items: center;
display: flex;
gap: 16px;
justify-content: flex-end;
margin-top: 16px;
}
.enterprise-actions--center {
justify-content: center;
}
.enterprise-method-panel {
display: grid;
gap: 24px;
margin: 0 auto;
max-width: 1060px;
width: 100%;
}
.enterprise-method-card {
align-items: center;
background: #ffffff;
border: 1px solid #e1e6ef;
border-radius: var(--radius-sm);
display: grid;
gap: 22px;
grid-template-columns: 88px minmax(0, 1fr);
min-height: 168px;
padding: 34px;
text-align: left;
}
.enterprise-method-card.is-selected {
border-color: var(--color-selected);
box-shadow: inset 0 0 0 1px rgba(37, 99, 235, 0.35);
}
.enterprise-method-card svg {
color: #c8d0dc;
}
.enterprise-method-card strong {
color: var(--color-text-strong);
font-size: 20px;
}
.enterprise-method-card strong span,
.enterprise-verify-copy em,
.enterprise-info-alert em,
.enterprise-qr-section em {
color: #ff7a00;
font-style: normal;
}
.enterprise-method-card p {
color: var(--color-text-muted);
font-size: var(--font-size-md);
line-height: 1.75;
margin: 4px 0 0;
}
.enterprise-verify-panel,
.enterprise-face-panel {
margin-left: 0;
}
.enterprise-verify-panel > p,
.enterprise-face-panel > p {
align-items: center;
display: flex;
gap: 28px;
margin: 0;
}
.enterprise-verify-panel > p span,
.enterprise-face-panel > p span {
color: var(--color-text-muted);
font-weight: var(--font-weight-semibold);
}
.enterprise-verify-copy {
color: var(--color-text-muted);
line-height: 1.8;
margin-top: 18px !important;
}
.enterprise-verify-copy em:first-of-type {
color: var(--color-danger);
}
.enterprise-verify-panel h2,
.enterprise-face-panel h2 {
color: var(--color-text-strong);
font-size: 22px;
margin: 24px 0 0;
}
.enterprise-info-alert {
align-items: flex-start;
background: #eff6ff;
border: 1px solid #bfdbfe;
color: #344054;
display: flex;
gap: 14px;
line-height: 1.8;
margin-top: 24px;
max-width: 920px;
padding: 22px;
}
.enterprise-info-alert svg {
color: var(--color-selected);
flex: 0 0 auto;
margin-top: 3px;
}
.enterprise-face-panel {
max-width: 920px;
}
.enterprise-qr-section {
display: grid;
gap: 22px;
justify-items: center;
margin-top: 36px;
text-align: center;
}
.enterprise-legal-summary {
display: grid;
gap: 22px;
margin: 0;
}
.enterprise-legal-summary div {
display: flex;
gap: 28px;
}
.enterprise-legal-summary dt {
color: var(--color-text-muted);
min-width: 150px;
}
.enterprise-legal-summary dd {
color: var(--color-text-strong);
margin: 0;
}
.enterprise-qr-section h2,
.enterprise-qr-section p {
justify-self: start;
margin: 0;
text-align: left;
}
.enterprise-qr-section p {
color: var(--color-text-muted);
line-height: 1.8;
}
.enterprise-qr {
align-items: center;
border: 2px solid #e1e5ec;
color: #ff4040;
display: flex;
font-size: 34px;
height: 280px;
justify-content: center;
width: 280px;
}
.enterprise-qr-section > span {
color: var(--color-text-muted);
}
.enterprise-success-test {
background: var(--color-success);
border-color: var(--color-success);
}
.enterprise-result {
align-items: center;
display: grid;
justify-items: center;
min-height: 610px;
text-align: center;
}
.enterprise-result > span {
align-items: center;
border-radius: var(--radius-full);
display: inline-flex;
justify-content: center;
}
.enterprise-result--success > span,
.enterprise-result--pending > span {
background: #00bb38;
color: #ffffff;
height: 132px;
width: 132px;
}
.enterprise-result--pending > span {
background: var(--color-selected);
}
.enterprise-result--failed > span {
border: 5px solid #ff4040;
color: #ff4040;
font-size: 62px;
height: 132px;
width: 132px;
}
.enterprise-result h2 {
color: var(--color-text-strong);
font-size: 28px;
margin: 28px 0 22px;
}
.enterprise-result dl {
display: grid;
gap: 22px;
margin: 0 0 50px;
text-align: left;
}
.enterprise-result--failed p {
color: var(--color-text-muted);
margin: 0;
}
.enterprise-result--failed > strong {
color: #ff7a00;
font-size: 26px;
margin: 14px 0 26px;
}
.admin-dashboard-hero {
background: #ffffff;
border: 1px solid var(--color-border);
color: var(--color-text);
}
.admin-dashboard-hero h1 {
color: var(--color-text-strong);
}
.admin-dashboard-main-grid {
grid-template-columns: minmax(0, 1fr) minmax(360px, 0.72fr);
}
.admin-metric-grid {
grid-template-columns: repeat(4, minmax(0, 1fr));
}
.admin-signature-rank-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.admin-workload-grid {
display: grid;
gap: var(--space-3);
grid-template-columns: repeat(4, minmax(0, 1fr));
}
.admin-workload-card {
background: #fbfcff;
border: 1px solid #edf0f5;
border-radius: var(--radius-md);
display: grid;
gap: var(--space-2);
justify-items: start;
min-height: 112px;
padding: var(--space-4);
text-align: left;
transition: background var(--transition-fast), border-color var(--transition-fast), transform var(--transition-fast);
}
.admin-workload-card:hover {
background: #f3f7ff;
border-color: rgba(37, 99, 235, 0.24);
transform: translateY(-1px);
}
.admin-workload-card strong {
color: var(--color-text-strong);
font-size: 28px;
line-height: 1;
}
.admin-workload-card span:not(.ui-tag) {
color: var(--color-text-muted);
font-size: var(--font-size-xs);
}
.admin-alert-list {
display: grid;
gap: var(--space-3);
}
.admin-alert {
border: 1px solid #edf0f5;
border-left-width: 4px;
border-radius: var(--radius-md);
display: grid;
gap: var(--space-2);
padding: var(--space-4);
}
.admin-alert--danger {
border-left-color: var(--color-danger);
}
.admin-alert--warning {
border-left-color: var(--color-warning);
}
.admin-alert--info {
border-left-color: var(--color-selected);
}
.admin-alert > div {
align-items: center;
display: flex;
gap: var(--space-3);
justify-content: space-between;
}
.admin-alert strong {
color: var(--color-text-strong);
}
.admin-alert span,
.admin-alert p {
color: var(--color-text-muted);
}
.admin-alert p {
line-height: 1.6;
margin: 0;
}
.enterprise-summary-grid {
grid-template-columns: repeat(4, minmax(0, 1fr));
}
.enterprise-query-grid {
grid-template-columns: minmax(180px, 1fr) minmax(220px, 1fr) minmax(180px, 1fr) auto;
}
.enterprise-query-actions {
align-items: end;
display: flex;
gap: var(--space-3);
}
.enterprise-inline-tag {
margin-left: var(--space-2);
}
.enterprise-form {
display: grid;
gap: var(--space-5);
}
.enterprise-form-page {
max-width: 1120px;
}
.enterprise-form-card {
display: grid;
gap: var(--space-6);
}
.enterprise-upload-panel {
align-items: center;
display: grid;
gap: var(--space-4);
grid-template-columns: 120px 176px minmax(0, 1fr);
}
.enterprise-upload-panel > span {
color: var(--color-text-strong);
font-weight: var(--font-weight-semibold);
}
.enterprise-upload-panel button,
.enterprise-upload-button {
align-items: center;
background: #ffffff;
border: 1px dashed var(--color-border-strong);
border-radius: var(--radius-md);
color: var(--color-selected);
display: grid;
gap: var(--space-2);
height: 142px;
justify-items: center;
text-align: center;
}
.enterprise-upload-panel p {
color: var(--color-text-muted);
line-height: var(--line-height-base);
margin: 0;
}
.enterprise-info-tip {
background: var(--color-selected-soft);
border: 1px solid #bfdbfe;
border-radius: var(--radius-md);
color: var(--color-text);
padding: var(--space-4);
}
.enterprise-form-footer {
align-items: center;
border-top: 1px solid var(--color-border);
display: flex;
gap: var(--space-3);
justify-content: flex-end;
padding-top: var(--space-5);
}
.admin-enterprise-detail {
max-width: 1320px;
}
.admin-detail-backbar {
align-items: center;
display: flex;
gap: var(--space-4);
}
.admin-detail-backbar > span {
color: var(--color-text-muted);
font-weight: var(--font-weight-semibold);
}
.admin-detail-metric-grid {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.admin-detail-metric-grid .mini-status-card {
align-items: stretch;
}
.admin-detail-metric-grid .mini-status-card .ui-button {
margin-top: var(--space-3);
}
.admin-detail-metric-grid--compact {
display: grid;
gap: var(--space-4);
margin-bottom: var(--space-5);
}
.page-inline-hint {
color: var(--color-text-muted);
font-size: var(--font-size-sm);
line-height: var(--line-height-base);
}
.admin-enterprise-profile {
display: grid;
gap: var(--space-6);
}
.admin-enterprise-profile__main {
align-items: center;
display: flex;
gap: var(--space-4);
}
.admin-enterprise-profile__icon {
align-items: center;
background: var(--color-selected-soft);
border-radius: var(--radius-md);
color: var(--color-selected);
display: inline-flex;
height: 52px;
justify-content: center;
width: 52px;
}
.admin-enterprise-profile h1 {
font-size: 28px;
margin: 0 0 var(--space-1);
}
.admin-enterprise-profile p {
color: var(--color-text-muted);
margin: 0;
}
.admin-enterprise-profile > .ui-button {
justify-self: end;
margin-top: -72px;
}
.admin-enterprise-profile dl {
display: grid;
gap: var(--space-5);
grid-template-columns: repeat(3, minmax(0, 1fr));
margin: 0;
}
.admin-enterprise-profile dt {
color: var(--color-text-muted);
font-size: 13px;
margin-bottom: var(--space-2);
}
.admin-enterprise-profile dd {
color: var(--color-text-strong);
font-size: 18px;
font-weight: var(--font-weight-semibold);
margin: 0;
}
.admin-business-tabs {
background: var(--color-surface-muted);
border: 1px solid var(--color-border);
border-radius: var(--radius-lg);
display: grid;
gap: var(--space-2);
grid-template-columns: repeat(2, minmax(0, 1fr));
margin-inline: auto;
max-width: 560px;
padding: var(--space-2);
}
.admin-business-tabs button {
align-items: center;
background: transparent;
border: 0;
border-radius: var(--radius-md);
color: var(--color-text-muted);
display: flex;
font-weight: var(--font-weight-semibold);
justify-content: center;
min-height: 44px;
}
.admin-business-tabs button.active {
background: var(--color-surface);
box-shadow: var(--shadow-sm);
color: var(--color-selected);
}
.admin-app-grid {
display: grid;
gap: var(--space-4);
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.admin-app-card {
border: 1px solid var(--color-border);
border-radius: var(--radius-lg);
display: grid;
gap: var(--space-4);
padding: var(--space-5);
}
.admin-app-card header {
align-items: center;
display: flex;
gap: var(--space-3);
justify-content: space-between;
}
.admin-app-card h3 {
font-size: 20px;
margin: 0;
}
.admin-app-card header button {
align-items: center;
background: var(--color-border-strong);
border: 0;
border-radius: 999px;
color: var(--color-text-muted);
display: inline-flex;
font-size: 13px;
font-weight: var(--font-weight-semibold);
gap: var(--space-2);
padding: 5px 10px;
}
.admin-app-card header button.is-on {
background: var(--color-selected-soft);
color: var(--color-selected);
}
.admin-app-card dl {
display: grid;
gap: var(--space-3);
margin: 0;
}
.admin-app-card dl div {
align-items: center;
display: flex;
justify-content: space-between;
}
.admin-app-card dt {
color: var(--color-text-muted);
font-weight: var(--font-weight-semibold);
}
.admin-app-card dd {
color: var(--color-text-strong);
font-weight: var(--font-weight-semibold);
margin: 0;
}
.admin-app-card footer {
border-top: 1px solid var(--color-border);
display: grid;
gap: var(--space-3);
grid-template-columns: repeat(2, minmax(0, 1fr));
padding-top: var(--space-4);
}
.admin-section-footer {
align-items: center;
display: flex;
justify-content: flex-end;
}
.admin-mms-signature-summary {
grid-template-columns: 28px 1.4fr 1fr 1fr 1fr 1fr 130px;
}
.admin-signature-spacer {
width: 28px;
}
.admin-report-detail {
display: grid;
gap: var(--space-5);
}
.admin-report-tabs {
background: var(--color-bg-subtle);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
overflow: hidden;
}
.admin-report-tabs button {
align-items: center;
background: transparent;
border: 0;
color: var(--color-text-muted);
display: grid;
gap: var(--space-2);
justify-items: center;
min-height: 86px;
padding: var(--space-4);
}
.admin-report-tabs button.active {
background: var(--color-surface);
box-shadow: var(--shadow-sm);
}
.admin-report-tabs strong {
font-size: 18px;
}
.admin-report-carrier--mobile strong {
color: var(--color-selected);
}
.admin-report-carrier--unicom strong {
color: var(--color-warning);
}
.admin-report-carrier--telecom strong {
color: var(--color-success);
}
.admin-report-tabs span {
align-items: center;
display: inline-flex;
gap: 6px;
margin-inline: 4px;
}
.admin-report-tabs i {
border-radius: 999px;
display: inline-block;
height: 8px;
width: 8px;
}
.admin-report-tabs i.is-success {
background: var(--color-success);
}
.admin-report-tabs i.is-info {
background: var(--color-selected);
}
.admin-report-tabs i.is-danger {
background: var(--color-danger);
}
.admin-report-carrier-detail {
display: grid;
gap: var(--space-4);
}
.admin-report-carrier-title {
align-items: center;
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
display: flex;
justify-content: space-between;
padding: var(--space-4);
}
.admin-report-carrier-title div {
align-items: center;
display: flex;
gap: var(--space-3);
}
.admin-report-carrier-title strong {
color: var(--color-selected);
font-size: 18px;
}
.admin-report-carrier-title span,
.admin-report-carrier-title p {
color: var(--color-text-muted);
}
.admin-report-carrier-title p {
display: flex;
gap: var(--space-4);
margin: 0;
}
.admin-report-carrier-title p span {
color: var(--color-success);
font-weight: var(--font-weight-semibold);
}
.admin-report-carrier-title p em {
color: var(--color-selected);
font-style: normal;
font-weight: var(--font-weight-semibold);
}
.admin-report-record-list {
display: grid;
gap: var(--space-4);
}
.admin-report-record-list article {
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
display: grid;
gap: var(--space-3);
padding: var(--space-5);
}
.admin-report-record-list h4 {
align-items: center;
color: var(--color-text-strong);
display: flex;
gap: var(--space-3);
margin: 0;
}
.admin-report-record-list p {
color: var(--color-text-muted);
margin: 0;
}
.admin-report-record-list p span {
color: var(--color-text);
margin-left: var(--space-2);
}
.admin-drainage-report-meta {
display: grid;
gap: var(--space-2);
}
.admin-drainage-report-meta p {
color: var(--color-text);
margin: 0;
}
.admin-drainage-report-meta a {
color: var(--color-selected);
font-weight: var(--font-weight-semibold);
}
.admin-app-form-page {
max-width: 1120px;
}
.admin-app-form-card {
display: grid;
gap: var(--space-6);
}
.admin-app-form-grid {
display: grid;
gap: var(--space-5);
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.admin-app-form-row {
display: grid;
gap: var(--space-2);
}
.admin-app-form-row--wide {
grid-column: 1 / -1;
}
.admin-app-form-row > span {
color: var(--color-text-strong);
font-weight: var(--font-weight-semibold);
}
.admin-app-form-tip {
align-items: flex-start;
background: var(--color-selected-soft);
border: 1px solid #bfdbfe;
border-radius: var(--radius-md);
color: var(--color-text);
display: flex;
gap: var(--space-3);
line-height: var(--line-height-base);
padding: var(--space-4);
}
.admin-app-form-tip svg {
color: var(--color-selected);
flex: 0 0 auto;
margin-top: 2px;
}
.admin-app-form-price-note {
color: var(--color-selected);
font-weight: var(--font-weight-semibold);
}
.app-create-modal {
gap: var(--space-5);
}
.app-create-modal__hint {
background: var(--color-selected-soft);
border: 1px solid #bfdbfe;
border-radius: var(--radius-md);
display: grid;
gap: var(--space-2);
padding: var(--space-4);
}
.app-create-modal__hint strong {
color: var(--color-text-strong);
}
.app-create-modal__hint span {
color: var(--color-text-muted);
line-height: var(--line-height-base);
}
.admin-app-route-grid {
display: grid;
gap: var(--space-4);
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.admin-app-route-card {
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
display: grid;
gap: var(--space-4);
min-width: 0;
padding: var(--space-4);
}
.admin-app-route-card.is-selected {
background: var(--color-selected-soft);
border-color: #bfdbfe;
}
.admin-app-route-card header {
align-items: flex-start;
display: grid;
gap: var(--space-3);
grid-template-columns: auto minmax(0, 1fr) auto;
}
.admin-app-route-card header > span:first-child {
align-items: center;
background: #ffffff;
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
color: var(--color-selected);
display: inline-flex;
height: 34px;
justify-content: center;
width: 34px;
}
.admin-app-route-card header strong,
.admin-app-route-card header small {
display: block;
}
.admin-app-route-card header small,
.admin-app-route-card p {
color: var(--color-text-muted);
line-height: var(--line-height-base);
margin: 0;
}
.admin-switch {
align-items: center;
background: transparent;
border: 0;
color: var(--color-text-muted);
display: inline-flex;
gap: var(--space-3);
justify-self: start;
}
.admin-switch span {
background: var(--color-border-strong);
border-radius: 999px;
display: inline-flex;
height: 24px;
position: relative;
width: 44px;
}
.admin-switch span::after {
background: var(--color-surface);
border-radius: 999px;
box-shadow: var(--shadow-sm);
content: "";
height: 18px;
left: 3px;
position: absolute;
top: 3px;
transition: transform var(--transition-fast);
width: 18px;
}
.admin-switch.is-on {
color: var(--color-selected);
}
.admin-switch.is-on span {
background: var(--color-selected);
}
.admin-switch.is-on span::after {
transform: translateX(20px);
}
.breadcrumb-line {
align-items: center;
align-self: flex-start;
display: flex;
gap: var(--space-4);
max-width: 100%;
min-height: 40px;
}
.breadcrumb-line__icon {
align-items: center;
background: var(--color-selected-soft);
border-radius: var(--radius-sm);
color: var(--color-selected);
display: inline-flex;
flex: 0 0 auto;
height: 40px;
justify-content: center;
width: 40px;
}
.breadcrumb-line h1 {
align-items: center;
color: var(--color-text-strong);
display: flex;
font-size: var(--font-size-lg);
font-weight: var(--font-weight-semibold);
gap: var(--space-4);
letter-spacing: 0;
line-height: 1.25;
margin: 0;
min-width: 0;
}
.page-heading > div:has(.breadcrumb-line) > h1 {
display: none;
}
.channel-report-heading h1 {
display: none;
}
.channel-route-modal__title {
align-items: center;
display: flex;
gap: var(--space-3);
}
.channel-route-modal__title > span {
align-items: center;
background: var(--color-surface-subtle);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
color: var(--color-selected);
display: inline-flex;
height: 40px;
justify-content: center;
width: 40px;
}
.channel-route-modal__title h2,
.channel-route-modal__title p {
margin: 0;
}
.channel-route-modal__title p {
color: var(--color-text-muted);
font-size: var(--font-size-sm);
margin-top: var(--space-1);
}
.channel-route-modal__empty {
background: var(--color-surface-subtle);
border: 1px dashed var(--color-border-strong);
border-radius: var(--radius-md);
color: var(--color-text-muted);
margin: 0;
padding: var(--space-4);
}
.channel-route-modal__selected {
align-items: center;
background: color-mix(in srgb, var(--color-success) 8%, var(--color-surface));
border: 1px solid color-mix(in srgb, var(--color-success) 35%, var(--color-border));
border-radius: var(--radius-md);
color: var(--color-success);
display: flex;
gap: var(--space-3);
padding: var(--space-4);
}
.channel-route-modal__selected strong,
.channel-route-modal__selected span {
display: block;
}
.channel-route-modal__selected span {
color: var(--color-text-muted);
font-size: var(--font-size-sm);
margin-top: var(--space-1);
}
.admin-enterprise-profile__main {
align-items: center;
}
.admin-enterprise-profile__icon {
height: 40px;
width: 40px;
}
.admin-enterprise-profile__main h1 {
font-size: var(--font-size-lg);
font-weight: var(--font-weight-semibold);
letter-spacing: 0;
}
.admin-audit-page {
gap: var(--space-6);
}
.audit-filter-card,
.sms-audit-filter {
padding: var(--space-6);
}
.sms-audit-filter h2 {
border-left: 5px solid var(--color-selected);
margin-bottom: var(--space-5);
padding-left: var(--space-3);
}
.audit-filter-grid {
align-items: end;
display: grid;
gap: var(--space-5);
}
.audit-filter-grid--enterprise {
grid-template-columns: minmax(280px, 1.4fr) minmax(220px, 1fr) auto;
}
.audit-filter-grid--template {
grid-template-columns: minmax(320px, 1.4fr) minmax(220px, 0.8fr) auto;
}
.audit-filter-grid--sms {
grid-template-columns: minmax(180px, 1fr) minmax(180px, 1fr) minmax(220px, 1.2fr) minmax(160px, 1fr) auto;
}
.audit-filter-actions {
display: flex;
gap: var(--space-3);
}
.audit-table-card {
padding: 0;
}
.audit-actions {
align-items: center;
display: flex;
gap: var(--space-3);
justify-content: flex-end;
}
.enterprise-audit-detail {
display: grid;
gap: var(--space-5);
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.enterprise-audit-detail section {
background: var(--color-surface-subtle);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
display: grid;
gap: var(--space-3);
padding: var(--space-5);
}
.enterprise-audit-detail h3 {
color: var(--color-text-strong);
font-size: var(--font-size-lg);
margin: 0 0 var(--space-2);
}
.enterprise-audit-detail div {
display: grid;
gap: 4px;
}
.enterprise-audit-detail span {
color: var(--color-text-muted);
font-size: var(--font-size-sm);
}
.enterprise-audit-detail strong {
color: var(--color-text-strong);
overflow-wrap: anywhere;
}
.enterprise-audit-detail__remark {
border-top: 1px solid var(--color-border);
padding-top: var(--space-3);
}
.audit-link {
align-items: center;
background: transparent;
border: 0;
color: var(--color-selected);
cursor: pointer;
display: inline-flex;
font-weight: var(--font-weight-semibold);
gap: var(--space-1);
padding: 0;
}
.audit-link--success {
color: var(--color-success);
}
.audit-link--danger {
color: var(--color-danger);
}
.audit-pagination {
align-items: center;
border-top: 1px solid var(--color-border);
display: flex;
justify-content: flex-end;
gap: var(--space-3);
padding: var(--space-4);
}
.sms-bulk-actions {
align-items: center;
border-top: 1px solid var(--color-border);
display: flex;
gap: var(--space-4);
margin-top: var(--space-6);
padding-top: var(--space-5);
}
.sms-bulk-actions .ui-button--secondary {
background: var(--color-success);
border-color: var(--color-success);
color: white;
}
.sms-audit-toolbar {
align-items: center;
display: flex;
justify-content: flex-end;
gap: var(--space-5);
padding: var(--space-3) 0;
}
.sms-audit-toolbar > div {
display: flex;
gap: var(--space-2);
}
.sms-audit-list {
padding: 0;
}
.sms-audit-head,
.sms-audit-row {
display: grid;
grid-template-columns: 42px minmax(190px, 1.1fr) minmax(320px, 1.8fr) minmax(120px, 0.7fr) minmax(130px, 0.7fr) minmax(130px, 0.7fr) 112px;
}
.sms-audit-head {
background: var(--color-surface-subtle);
border-bottom: 1px solid var(--color-border);
color: var(--color-text-strong);
font-weight: var(--font-weight-semibold);
padding: var(--space-4);
}
.sms-audit-row {
align-items: center;
border-bottom: 1px solid var(--color-border);
padding: var(--space-5) var(--space-4);
}
.sms-audit-row:last-child {
border-bottom: 0;
}
.sms-audit-customer,
.sms-audit-count,
.sms-audit-result,
.sms-audit-actions {
display: grid;
gap: var(--space-2);
}
.sms-audit-customer span,
.sms-audit-customer small,
.sms-audit-count {
color: var(--color-text-muted);
}
.sms-audit-content {
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
line-height: 1.7;
margin: 0;
max-height: 92px;
overflow: hidden;
padding: var(--space-4);
}
.sms-audit-count a,
.sms-audit-count button {
color: var(--color-selected);
}
.sms-audit-count button {
background: transparent;
border: 0;
cursor: pointer;
justify-self: start;
padding: 0;
}
.sms-audit-reasons {
align-items: flex-start;
display: flex;
flex-wrap: wrap;
gap: var(--space-2);
}
.audit-dot {
align-items: center;
display: inline-flex;
gap: var(--space-2);
font-weight: var(--font-weight-semibold);
}
.audit-dot::before {
border-radius: 999px;
content: '';
height: 9px;
width: 9px;
}
.audit-dot--warning {
color: #b7791f;
}
.audit-dot--warning::before {
background: #d97706;
}
.audit-dot--success {
color: var(--color-success);
}
.audit-dot--success::before {
background: var(--color-success);
}
.audit-dot--danger {
color: var(--color-danger);
}
.audit-dot--danger::before {
background: var(--color-danger);
}
.sms-audit-result small {
color: var(--color-text-muted);
}
.sms-audit-actions .ui-button {
justify-content: center;
}
.sms-audit-actions .ui-button--secondary {
background: transparent;
border-color: #86efac;
color: var(--color-success);
}
.sms-audit-actions .ui-button--danger {
background: transparent;
color: var(--color-danger);
}
.sms-audit-edit {
display: grid;
gap: var(--space-5);
}
.sms-audit-edit__meta {
background: var(--color-surface-subtle);
border-radius: var(--radius-md);
display: grid;
gap: var(--space-4);
grid-template-columns: repeat(3, minmax(0, 1fr));
padding: var(--space-5);
}
.sms-audit-edit__meta span {
color: var(--color-text-muted);
}
.sms-audit-edit__meta strong {
color: var(--color-text);
}
.sms-audit-edit__count {
align-items: center;
color: var(--color-text-muted);
display: flex;
justify-content: space-between;
}
.sms-audit-edit__count strong {
color: var(--color-text-strong);
}
.sms-reject-modal {
display: grid;
gap: var(--space-5);
}
.reject-reason-tags {
display: flex;
flex-wrap: wrap;
gap: var(--space-3);
margin-top: var(--space-3);
}
.reject-reason-tags button {
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: 999px;
color: var(--color-text);
cursor: pointer;
font-weight: var(--font-weight-semibold);
padding: var(--space-2) var(--space-4);
}
.reject-reason-tags button:hover {
border-color: var(--color-selected);
color: var(--color-selected);
}
.audit-collapse-link {
background: transparent;
border: 0;
color: var(--color-text-muted);
cursor: pointer;
justify-self: start;
padding: 0;
}
.phone-list-modal {
display: grid;
gap: var(--space-5);
}
.phone-list-toolbar {
align-items: center;
display: flex;
justify-content: flex-end;
gap: var(--space-3);
}
.phone-list-toolbar > label {
width: 150px;
}
.phone-list-toolbar > div {
align-items: center;
display: flex;
gap: var(--space-2);
}
.phone-list-table {
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
overflow: hidden;
}
.phone-list-table .ui-table-wrap {
border: 0;
box-shadow: none;
}
.phone-list-table .ui-table tbody tr:nth-child(even) {
background: var(--color-surface-subtle);
}
.sms-channel-page .page-heading {
align-items: center;
}
.sms-channel-filter {
padding: var(--space-6);
}
.sms-channel-filter-grid {
align-items: end;
display: grid;
gap: var(--space-5);
grid-template-columns: minmax(220px, 1fr) minmax(220px, 1fr) minmax(220px, 1fr) auto;
}
.sms-channel-table {
overflow-x: auto;
padding: 0;
}
.sms-channel-table__head,
.sms-channel-table__row {
display: grid;
gap: var(--space-3);
grid-template-columns: minmax(150px, 1.2fr) 88px 86px 96px minmax(210px, 1.35fr) 190px;
min-width: 860px;
}
.sms-channel-table__head {
background: var(--color-surface-subtle);
border-bottom: 1px solid var(--color-border);
color: var(--color-text-strong);
font-weight: var(--font-weight-semibold);
padding: var(--space-4) var(--space-5);
}
.sms-channel-table__row {
align-items: center;
border-bottom: 1px solid var(--color-border);
min-height: 126px;
padding: var(--space-5);
}
.sms-channel-table__row:nth-child(odd) {
background: #f8fafc;
}
.sms-channel-total {
font-size: var(--font-size-xl);
}
.sms-channel-identity {
display: grid;
gap: var(--space-2);
min-width: 0;
}
.sms-channel-identity strong {
line-height: 1.45;
overflow-wrap: anywhere;
}
.sms-channel-identity span {
color: var(--color-text-muted);
font-size: var(--font-size-sm);
}
.sms-channel-carrier-price {
align-items: flex-start;
display: grid;
gap: var(--space-3);
justify-items: start;
}
.sms-channel-status-cell {
align-items: flex-start;
display: grid;
gap: var(--space-2);
justify-items: start;
}
.sms-channel-status-cell button {
align-items: center;
background: transparent;
border: 0;
color: var(--color-selected);
cursor: pointer;
display: inline-flex;
font-size: var(--font-size-sm);
font-weight: var(--font-weight-semibold);
gap: 4px;
padding: 0;
}
.sms-channel-status-cell button:hover {
text-decoration: underline;
}
.sms-channel-quality {
background: var(--color-surface-subtle);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
padding: var(--space-3);
}
.sms-channel-rate {
display: grid;
gap: 3px;
min-width: 0;
}
.sms-channel-rate small {
color: var(--color-text-muted);
}
.sms-channel-rate strong {
color: var(--color-text-muted);
}
.sms-channel-rate--success strong {
color: var(--color-success);
}
.sms-channel-rate--warning strong {
color: #f59e0b;
}
.sms-channel-rate--danger strong {
color: var(--color-danger);
}
.sms-channel-rate span {
color: var(--color-text-strong);
font-size: var(--font-size-sm);
font-weight: var(--font-weight-semibold);
overflow: hidden;
text-overflow: ellipsis;
}
.sms-channel-actions {
display: grid;
gap: var(--space-2);
grid-template-columns: repeat(2, minmax(0, 1fr));
width: 190px;
}
.sms-channel-actions button {
align-items: center;
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-sm);
color: var(--color-selected);
cursor: pointer;
display: inline-flex;
font-weight: var(--font-weight-semibold);
gap: var(--space-1);
justify-content: center;
min-height: 34px;
font-size: var(--font-size-sm);
padding: var(--space-1);
white-space: nowrap;
}
.sms-channel-actions button:hover {
background: var(--color-accent-soft);
border-color: var(--color-selected);
}
.sms-channel-actions button.is-warning {
color: #ea580c;
}
.sms-channel-actions button.is-success {
color: var(--color-success);
}
.sms-channel-actions button.is-danger {
color: var(--color-danger);
}
.channel-confirm {
display: grid;
gap: var(--space-2);
}
.channel-confirm strong {
color: var(--color-text-strong);
font-size: var(--font-size-lg);
}
.channel-confirm span {
color: var(--color-text-muted);
}
.channel-confirm p {
color: var(--color-text);
line-height: 1.7;
margin: var(--space-3) 0 0;
}
.channel-log-modal,
.channel-log-list {
display: grid;
gap: var(--space-3);
}
.channel-connection-summary {
display: grid;
gap: var(--space-3);
}
.channel-connection-summary article {
align-items: center;
background: var(--color-surface-subtle);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
display: grid;
gap: var(--space-4);
grid-template-columns: minmax(130px, 1fr) auto minmax(110px, auto) minmax(180px, 1.2fr);
padding: var(--space-4);
}
.channel-connection-summary span {
color: var(--color-text-muted);
display: block;
font-size: var(--font-size-sm);
margin-bottom: var(--space-1);
}
.channel-connection-summary strong {
color: var(--color-text-strong);
overflow-wrap: anywhere;
}
.channel-connection-summary p {
color: var(--color-danger);
grid-column: 1 / -1;
margin: 0;
}
.channel-log-item {
align-items: start;
background: var(--color-surface-subtle);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
display: grid;
gap: var(--space-4);
grid-template-columns: 150px minmax(0, 1fr);
padding: var(--space-4);
}
.channel-log-item strong {
color: var(--color-text-strong);
}
.channel-log-item span {
color: var(--color-text-muted);
display: block;
font-size: var(--font-size-sm);
margin-top: 3px;
}
.channel-log-item pre {
color: var(--color-text);
font-family: var(--font-family-mono);
font-size: var(--font-size-sm);
line-height: 1.65;
margin: var(--space-1) 0 0;
overflow-wrap: anywhere;
white-space: pre-wrap;
}
.sms-channel-pagination {
align-items: center;
border-top: 1px solid var(--color-border);
display: flex;
gap: var(--space-3);
justify-content: flex-end;
padding: var(--space-4) var(--space-5);
position: sticky;
right: 0;
}
.sms-channel-pagination > label {
width: 150px;
}
.sms-channel-form {
display: grid;
gap: var(--space-8);
}
.sms-channel-form section {
border-bottom: 1px solid var(--color-border);
display: grid;
gap: var(--space-5);
padding-bottom: var(--space-7);
}
.sms-channel-form section:last-child {
border-bottom: 0;
padding-bottom: 0;
}
.sms-channel-form h3 {
border-left: 5px solid var(--color-selected);
padding-left: var(--space-3);
}
.sms-channel-form-grid {
display: grid;
gap: var(--space-5);
grid-template-columns: minmax(170px, 180px) minmax(0, 1fr);
}
.sms-channel-form-grid > .ui-field,
.sms-channel-radio-row,
.sms-channel-inline-field {
grid-column: 2;
}
.sms-channel-form-grid .ui-field__label,
.sms-channel-radio-row > span {
color: var(--color-text-strong);
font-weight: var(--font-weight-semibold);
}
.sms-channel-radio-row {
align-items: center;
display: flex;
gap: var(--space-8);
min-height: 42px;
}
.sms-channel-radio-row label {
align-items: center;
display: inline-flex;
gap: var(--space-2);
}
.sms-channel-inline-field {
align-items: end;
display: grid;
gap: var(--space-4);
grid-template-columns: minmax(0, 1fr) 160px;
}
.channel-report-page {
min-width: 1100px;
}
.channel-report-hero {
display: grid;
gap: var(--space-5);
padding: var(--space-6);
}
.channel-report-heading {
align-items: center;
display: flex;
gap: var(--space-4);
}
.channel-report-heading h1 {
border-left: 5px solid var(--color-selected);
font-size: 26px;
letter-spacing: 0;
margin: 0;
padding-left: var(--space-4);
}
.channel-report-config-actions {
display: flex;
gap: var(--space-3);
margin-left: auto;
}
.channel-report-filter {
padding: var(--space-6);
}
.channel-report-filter-grid {
align-items: end;
display: grid;
gap: var(--space-5);
grid-template-columns: minmax(240px, 1fr) minmax(200px, 0.8fr) minmax(360px, 1.4fr);
}
.channel-report-filter-footer {
align-items: center;
border-top: 1px solid var(--color-border);
display: flex;
justify-content: space-between;
margin-top: var(--space-5);
padding-top: var(--space-5);
}
.channel-report-filter-footer > div {
display: flex;
gap: var(--space-3);
}
.channel-report-table {
overflow: hidden;
padding: 0;
}
.channel-report-table__head,
.channel-report-row {
display: grid;
grid-template-columns: 34px minmax(220px, 1.2fr) 112px 120px 120px 130px minmax(280px, 1.35fr) 132px;
}
.channel-report-table__head {
align-items: center;
background: var(--color-surface-subtle);
border-bottom: 1px solid var(--color-border);
color: var(--color-text-strong);
font-weight: var(--font-weight-semibold);
min-height: 56px;
padding: 0 var(--space-5);
}
.channel-report-row {
align-items: center;
border-bottom: 1px solid var(--color-border);
min-height: 132px;
padding: var(--space-5);
}
.channel-report-row--signature {
background: var(--color-surface);
}
.channel-report-row--drainage {
background: #fff9f5;
border-left: 4px solid var(--color-danger);
padding-left: calc(var(--space-5) - 4px);
}
.channel-report-name {
align-items: center;
display: flex;
gap: var(--space-3);
min-width: 0;
}
.channel-report-name > button {
align-items: center;
background: transparent;
border: 0;
color: var(--color-text-muted);
cursor: pointer;
display: inline-flex;
justify-content: center;
padding: var(--space-1);
}
.channel-report-name > button:disabled {
cursor: default;
opacity: 0.25;
}
.channel-report-name > span {
display: grid;
gap: var(--space-2);
min-width: 0;
}
.channel-report-name strong {
overflow-wrap: anywhere;
}
.channel-report-name small {
color: var(--color-text-muted);
}
.channel-report-name small b {
background: var(--color-accent-soft);
border-radius: 999px;
color: var(--color-selected);
display: inline-flex;
justify-content: center;
margin-left: var(--space-2);
min-width: 24px;
padding: 2px var(--space-2);
}
.channel-report-name--flow {
padding-left: 36px;
}
.channel-report-name--flow i {
background: var(--color-danger);
border-radius: 50%;
height: 9px;
width: 9px;
}
.channel-report-date {
color: var(--color-text-muted);
display: grid;
gap: var(--space-1);
line-height: 1.35;
}
.channel-report-stats {
background: var(--color-surface-subtle);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
display: grid;
grid-template-columns: repeat(3, 1fr);
min-width: 260px;
padding: var(--space-4);
}
.channel-report-stats span {
color: var(--color-text-muted);
display: grid;
gap: var(--space-3);
}
.channel-report-stats strong {
margin-left: var(--space-1);
}
.channel-report-stats b {
color: var(--color-text-strong);
}
.channel-report-stats .is-success {
color: var(--color-success);
}
.channel-report-stats .is-warning {
color: #ea580c;
}
.channel-report-stats .is-danger {
color: var(--color-danger);
}
.channel-report-actions {
display: grid;
gap: var(--space-3);
justify-items: start;
}
.channel-report-actions button {
align-items: center;
background: transparent;
border: 0;
color: var(--color-selected);
cursor: pointer;
display: inline-flex;
font-weight: var(--font-weight-semibold);
gap: var(--space-2);
padding: 0;
}
.channel-report-actions button.is-warning {
color: #ea580c;
}
.channel-report-actions button.is-danger {
color: var(--color-danger);
}
.channel-report-empty {
color: var(--color-text-muted);
padding: var(--space-10);
text-align: center;
}
.channel-report-detail {
display: grid;
gap: var(--space-4);
}
.channel-report-detail > strong {
font-size: var(--font-size-xl);
}
.channel-report-detail p {
align-items: center;
border-bottom: 1px solid var(--color-border);
display: grid;
grid-template-columns: 150px 1fr;
margin: 0;
padding-bottom: var(--space-3);
}
.channel-report-detail p > span:first-child {
color: var(--color-text-muted);
}
.channel-signature-title h2,
.channel-signature-title p {
margin: 0;
}
.channel-signature-title p {
color: var(--color-text-muted);
font-size: var(--font-size-sm);
font-weight: var(--font-weight-regular);
margin-top: var(--space-2);
}
.channel-signature-detail {
display: grid;
gap: var(--space-8);
}
.channel-signature-detail section {
display: grid;
gap: var(--space-5);
}
.channel-signature-detail h3 {
border-left: 5px solid var(--color-selected);
font-size: var(--font-size-lg);
letter-spacing: 0;
margin: 0;
padding-left: var(--space-3);
}
.channel-signature-grid {
display: grid;
gap: var(--space-5);
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.channel-signature-grid__wide,
.channel-signature-grid > .channel-signature-upload:first-of-type:last-child {
grid-column: 1 / -1;
}
.channel-signature-detail input[readonly] {
background: var(--color-surface-subtle);
color: var(--color-text-strong);
cursor: default;
font-weight: var(--font-weight-medium);
}
.channel-signature-upload {
display: grid;
gap: var(--space-2);
}
.channel-signature-upload > span {
color: var(--color-text-strong);
font-size: var(--font-size-sm);
font-weight: var(--font-weight-semibold);
}
.channel-signature-upload > div {
align-items: center;
background: var(--color-surface-subtle);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
color: var(--color-text-muted);
display: flex;
justify-content: center;
min-height: 68px;
}
.channel-status-title h2,
.channel-status-title p {
margin: 0;
}
.channel-status-title p {
color: var(--color-text-muted);
font-size: var(--font-size-sm);
font-weight: var(--font-weight-regular);
margin-top: var(--space-2);
}
.channel-status-form {
display: grid;
gap: var(--space-6);
}
.channel-status-options {
display: grid;
gap: var(--space-4);
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.channel-status-options button {
background: var(--color-surface);
border: 2px solid var(--color-border);
border-radius: var(--radius-md);
color: var(--color-text-strong);
cursor: pointer;
font: inherit;
font-weight: var(--font-weight-semibold);
min-height: 58px;
position: relative;
}
.channel-status-options button.is-info {
color: var(--color-selected);
}
.channel-status-options button.is-success {
color: var(--color-success);
}
.channel-status-options button.is-danger {
color: var(--color-danger);
}
.channel-status-options button.is-warning {
color: #a16207;
}
.channel-status-options button.is-selected {
border-color: var(--color-selected);
box-shadow: 0 0 0 2px var(--color-accent-soft);
}
.channel-status-options button > span {
align-items: center;
background: var(--color-selected);
border-radius: 0 var(--radius-sm) 0 var(--radius-sm);
color: white;
display: flex;
height: 30px;
justify-content: center;
position: absolute;
right: -2px;
top: -2px;
width: 34px;
}
.channel-field-config-title h2,
.channel-field-config-title p {
margin: 0;
}
.channel-field-config-title p {
color: var(--color-text-muted);
font-size: var(--font-size-sm);
font-weight: var(--font-weight-regular);
margin-top: var(--space-2);
}
.channel-field-config {
display: grid;
grid-template-columns: minmax(300px, 0.9fr) minmax(380px, 1.1fr);
margin: calc(-1 * var(--space-6));
min-height: 620px;
}
.channel-field-config > section {
display: grid;
grid-template-rows: auto auto minmax(0, 1fr);
padding: var(--space-6);
}
.channel-field-pool {
border-right: 1px solid var(--color-border);
}
.channel-field-section-head {
align-items: center;
display: flex;
justify-content: space-between;
margin-bottom: var(--space-4);
}
.channel-field-section-head h3,
.channel-field-section-head p {
margin: 0;
}
.channel-field-section-head p {
color: var(--color-text-muted);
font-size: var(--font-size-sm);
margin-top: var(--space-1);
}
.channel-field-pool-list,
.channel-selected-field-list {
display: grid;
gap: var(--space-3);
margin-top: var(--space-4);
max-height: 520px;
overflow-y: auto;
padding-right: var(--space-2);
}
.channel-field-pool-list > button {
align-items: center;
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
color: var(--color-text-strong);
cursor: pointer;
display: flex;
justify-content: space-between;
min-height: 58px;
padding: var(--space-3) var(--space-4);
text-align: left;
}
.channel-field-pool-list > button:hover {
background: var(--color-accent-soft);
border-color: var(--color-selected);
}
.channel-field-pool-list > button > span {
align-items: center;
display: inline-flex;
gap: var(--space-2);
}
.channel-field-pool-list > button > span:last-child {
color: var(--color-selected);
font-size: var(--font-size-sm);
}
.channel-selected-fields {
background: var(--color-surface-subtle);
grid-template-rows: auto minmax(0, 1fr) !important;
}
.channel-selected-field-list article {
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
display: grid;
gap: var(--space-4);
padding: var(--space-4);
}
.channel-selected-field-head {
align-items: center;
display: flex;
gap: var(--space-2);
}
.channel-selected-field-index {
align-items: center;
background: var(--color-selected);
border-radius: var(--radius-sm);
color: white;
display: inline-flex;
height: 30px;
justify-content: center;
width: 30px;
}
.channel-selected-field-order {
display: flex;
margin-left: auto;
}
.channel-selected-field-order button,
.channel-selected-field-controls > button {
align-items: center;
background: transparent;
border: 0;
color: var(--color-text-muted);
cursor: pointer;
display: inline-flex;
justify-content: center;
padding: var(--space-1);
}
.channel-selected-field-order button:disabled {
cursor: default;
opacity: 0.3;
}
.channel-selected-field-controls {
align-items: center;
display: flex;
gap: var(--space-4);
}
.channel-selected-field-controls label {
align-items: center;
cursor: pointer;
display: inline-flex;
gap: var(--space-2);
}
.channel-selected-field-controls > button {
color: var(--color-danger);
margin-left: auto;
}
.mms-channel-page .page-heading {
align-items: center;
}
.mms-channel-filter {
align-items: center;
display: grid;
gap: var(--space-4);
grid-template-columns: minmax(260px, 1fr) 180px 180px auto;
padding: var(--space-5);
}
.mms-channel-list {
overflow: hidden;
padding: 0;
}
.mms-channel-list .ui-table-wrap {
border: 0;
border-radius: 0;
box-shadow: none;
}
.mms-channel-list .ui-table {
min-width: 900px;
}
.mms-channel-list .ui-table th,
.mms-channel-list .ui-table td {
padding: var(--space-4);
vertical-align: middle;
}
.mms-channel-list .ui-table tbody tr:nth-child(even) {
background: var(--color-surface-subtle);
}
.mms-channel-identity {
display: grid;
gap: var(--space-1);
min-width: 0;
}
.mms-channel-identity span,
.mms-channel-identity small {
color: var(--color-text-muted);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.mms-channel-identity small {
font-size: var(--font-size-xs);
}
.mms-channel-carrier {
align-items: flex-start;
display: grid;
gap: var(--space-2);
justify-items: start;
}
.mms-channel-quality {
background: var(--color-surface-subtle);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
padding: var(--space-3);
}
.mms-channel-metric {
display: grid;
gap: 3px;
}
.mms-channel-metric small {
color: var(--color-text-muted);
}
.mms-channel-metric strong {
color: var(--color-text-strong);
}
.mms-channel-metric--success strong {
color: var(--color-success);
}
.mms-channel-metric--warning strong {
color: #ea580c;
}
.mms-channel-metric--danger strong {
color: var(--color-danger);
}
.mms-channel-actions {
display: flex;
gap: var(--space-2);
justify-content: flex-end;
}
.mms-channel-modal-title h2,
.mms-channel-modal-title p {
margin: 0;
}
.mms-channel-modal-title p {
color: var(--color-text-muted);
font-size: var(--font-size-sm);
font-weight: var(--font-weight-regular);
margin-top: var(--space-2);
}
.mms-channel-form {
display: grid;
gap: var(--space-5);
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.mms-channel-form__wide {
grid-column: 1 / -1;
}
.sms-channel-group-page .page-heading {
align-items: center;
}
.channel-group-filter {
align-items: end;
display: grid;
gap: var(--space-5);
grid-template-columns: minmax(220px, 1fr) minmax(220px, 1fr) auto;
}
.channel-group-filter__actions {
display: flex;
gap: var(--space-3);
}
.channel-group-list {
display: grid;
gap: var(--space-5);
}
.channel-group-config-list {
display: grid;
gap: var(--space-3);
}
.channel-group-config-item {
align-items: center;
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-sm);
display: grid;
gap: var(--space-4);
grid-template-columns: minmax(180px, 1.15fr) minmax(210px, 0.9fr) minmax(200px, 0.95fr) minmax(220px, 1.2fr) minmax(82px, auto);
min-width: 0;
padding: var(--space-4);
}
.channel-group-config-item__identity {
align-items: center;
display: flex;
gap: var(--space-3);
min-width: 0;
}
.channel-group-config-item__icon {
align-items: center;
background: #eef5ff;
border: 1px solid #cfe2ff;
border-radius: var(--radius-sm);
color: var(--color-selected);
display: inline-flex;
flex: 0 0 auto;
height: 38px;
justify-content: center;
width: 38px;
}
.channel-group-config-item__identity div {
display: grid;
gap: var(--space-1);
min-width: 0;
}
.channel-group-config-item__identity strong {
color: var(--color-text-strong);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.channel-group-config-item__identity span:last-child,
.channel-group-config-item__metrics span,
.channel-group-config-item__policy span,
.channel-group-config-item__channels span {
color: var(--color-text-muted);
}
.channel-group-config-item__metrics {
display: grid;
gap: var(--space-3);
grid-template-columns: repeat(3, minmax(0, 1fr));
min-width: 0;
}
.channel-group-config-item__metrics div {
border-left: 1px solid var(--color-border);
display: grid;
gap: var(--space-1);
padding-left: var(--space-3);
}
.channel-group-config-item__metrics strong {
color: var(--color-text-strong);
font-size: var(--font-size-lg);
}
.channel-group-config-item__policy {
align-items: center;
display: flex;
flex-wrap: wrap;
gap: var(--space-3);
min-width: 0;
}
.channel-group-config-item__policy span {
align-items: center;
display: inline-flex;
gap: var(--space-1);
white-space: nowrap;
}
.channel-group-config-item__channels {
display: flex;
flex-wrap: wrap;
gap: var(--space-2);
min-width: 0;
}
.channel-group-config-item__channels span {
background: var(--color-surface-subtle);
border: 1px solid var(--color-border);
border-radius: var(--radius-sm);
max-width: 160px;
overflow: hidden;
padding: var(--space-1) var(--space-2);
text-overflow: ellipsis;
white-space: nowrap;
}
.channel-group-config-item__actions {
align-items: center;
display: flex;
flex-wrap: wrap;
gap: var(--space-3);
justify-content: flex-end;
justify-self: end;
min-width: 82px;
}
.channel-group-config-item__actions button {
align-items: center;
background: transparent;
border: 0;
color: var(--color-selected);
cursor: pointer;
display: inline-flex;
font-weight: var(--font-weight-semibold);
gap: var(--space-1);
padding: 0;
}
.channel-group-config-item__actions button.is-danger {
color: var(--color-danger);
}
.channel-group-form-page {
min-width: 1040px;
}
.channel-group-form-section {
display: grid;
gap: var(--space-5);
}
.channel-group-form-section h2 {
border-bottom: 1px solid var(--color-border);
border-left: 5px solid var(--color-selected);
margin: 0;
padding: 0 0 var(--space-4) var(--space-3);
}
.channel-group-base-form {
display: grid;
gap: var(--space-6);
grid-template-columns: 190px minmax(0, 1fr);
}
.channel-group-base-form > .ui-field,
.channel-group-retry-limit,
.channel-group-radio-row,
.channel-group-switch-row {
grid-column: 2;
}
.channel-group-radio-row,
.channel-group-switch-row {
align-items: center;
display: flex;
gap: var(--space-7);
min-height: 42px;
}
.channel-group-radio-row > span,
.channel-group-switch-row > span {
color: var(--color-text-strong);
font-weight: var(--font-weight-semibold);
}
.channel-group-radio-row label {
align-items: center;
display: inline-flex;
gap: var(--space-2);
}
.channel-group-switch-row button {
background: #d1d5db;
border: 0;
border-radius: 999px;
cursor: pointer;
height: 30px;
padding: 3px;
transition: background 0.18s ease;
width: 54px;
}
.channel-group-switch-row button i {
background: #fff;
border-radius: 50%;
box-shadow: var(--shadow-sm);
display: block;
height: 24px;
transition: transform 0.18s ease;
width: 24px;
}
.channel-group-switch-row button.is-on {
background: var(--color-selected);
}
.channel-group-switch-row button.is-on i {
transform: translateX(24px);
}
.channel-group-row-actions {
display: flex;
gap: var(--space-4);
}
.channel-group-row-actions button {
align-items: center;
background: transparent;
border: 0;
color: var(--color-selected);
cursor: pointer;
display: inline-flex;
font-weight: var(--font-weight-semibold);
gap: var(--space-1);
padding: 0;
}
.channel-group-row-actions button.is-danger {
color: var(--color-danger);
}
.channel-group-retry-limit {
display: grid;
gap: var(--space-3);
grid-template-columns: 150px 150px minmax(220px, 1fr);
}
.channel-group-retry-limit > span {
color: var(--color-text-strong);
font-weight: var(--font-weight-semibold);
grid-column: 1 / -1;
}
.channel-group-retry-limit small {
align-self: center;
color: var(--color-text-muted);
}
.channel-route-card-grid {
display: grid;
gap: var(--space-4);
grid-template-columns: repeat(3, minmax(220px, 1fr));
}
.channel-route-card {
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
display: grid;
gap: var(--space-3);
min-height: 188px;
padding: var(--space-4);
}
.channel-route-card > div {
align-items: flex-start;
display: flex;
gap: var(--space-3);
justify-content: space-between;
}
.channel-route-card strong {
color: var(--color-text-strong);
font-size: var(--font-size-lg);
}
.channel-route-card span,
.channel-route-card small {
color: var(--color-text-muted);
}
.channel-route-card p {
color: var(--color-text);
font-weight: var(--font-weight-semibold);
line-height: 1.5;
margin: 0;
overflow-wrap: anywhere;
}
.channel-route-card footer {
align-items: center;
border-top: 1px solid var(--color-border);
display: flex;
gap: var(--space-3);
justify-content: flex-end;
margin-top: var(--space-1);
padding-top: var(--space-3);
}
.channel-route-card footer button {
align-items: center;
background: transparent;
border: 0;
color: var(--color-selected);
cursor: pointer;
display: inline-flex;
font-weight: var(--font-weight-semibold);
gap: var(--space-1);
padding: 0;
}
.channel-route-card footer button.is-danger {
color: var(--color-danger);
}
.channel-route-empty {
align-items: center;
background: var(--color-surface-subtle);
border: 1px dashed var(--color-border-strong);
border-radius: var(--radius-md);
color: var(--color-text-muted);
display: flex;
justify-content: center;
min-height: 120px;
padding: var(--space-5);
}
.channel-route-modal {
display: grid;
gap: var(--space-5);
grid-template-columns: repeat(2, minmax(0, 1fr));
min-width: 0;
}
.channel-route-modal__channel-select {
grid-column: 1 / -1;
}
.channel-route-modal .ui-select__dropdown {
max-height: min(360px, calc(100vh - 360px));
}
.channel-route-modal .ui-select__dropdown button {
align-items: flex-start;
height: auto;
line-height: 1.45;
min-height: 42px;
padding: var(--space-2) var(--space-3);
white-space: normal;
}
.channel-route-modal__note {
align-items: center;
background: #eff6ff;
border: 1px solid #bfdbfe;
border-radius: var(--radius-md);
color: var(--color-text);
display: flex;
gap: var(--space-3);
padding: var(--space-4);
}
.channel-route-modal__note svg {
color: var(--color-selected);
flex: 0 0 auto;
}
.channel-group-form-footer {
align-items: center;
display: flex;
gap: var(--space-4);
justify-content: center;
padding: var(--space-4) 0;
}
.channel-group-form-footer .ui-button {
min-width: 160px;
}
.sms-test-title {
align-items: center;
display: flex;
gap: var(--space-4);
}
.sms-test-title span {
align-items: center;
background: rgba(255, 255, 255, 0.18);
border-radius: var(--radius-md);
color: white;
display: inline-flex;
height: 58px;
justify-content: center;
width: 58px;
}
.sms-test-title h2,
.sms-test-title p {
color: white;
margin: 0;
}
.sms-test-title p {
margin-top: var(--space-1);
opacity: 0.86;
}
.ui-modal__title:has(.sms-test-title) {
margin: calc(-1 * var(--space-6)) calc(-1 * var(--space-7));
padding: var(--space-6) var(--space-7);
width: calc(100% + (var(--space-7) * 2));
}
.ui-modal__header:has(.sms-test-title) {
background: var(--color-selected);
border-bottom: 0;
}
.ui-modal__header:has(.sms-test-title) .ui-button {
color: white;
}
.sms-test-modal {
display: grid;
gap: var(--space-5);
}
.sms-test-channel {
align-items: center;
background: var(--color-surface-subtle);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
display: flex;
gap: var(--space-4);
padding: var(--space-5);
}
.sms-test-channel span {
border-right: 1px solid var(--color-border);
color: var(--color-text-muted);
font-weight: var(--font-weight-semibold);
padding-right: var(--space-4);
}
.sms-test-channel strong {
font-size: var(--font-size-xl);
}
.sms-test-counter {
align-items: center;
color: var(--color-text-muted);
display: flex;
justify-content: space-between;
}
.sms-test-counter strong {
color: var(--color-text-strong);
font-weight: var(--font-weight-semibold);
}
.sms-test-counter i {
border-left: 1px solid var(--color-border);
display: inline-block;
height: 18px;
margin: 0 var(--space-3);
vertical-align: middle;
}
.sms-test-note {
margin-top: var(--space-2);
}
.sms-test-result {
background: color-mix(in srgb, var(--color-success) 8%, var(--color-surface));
border: 1px solid color-mix(in srgb, var(--color-success) 35%, var(--color-border));
border-radius: var(--radius-md);
display: grid;
gap: var(--space-4);
padding: var(--space-4);
}
.sms-test-result__summary {
align-items: center;
color: var(--color-success);
display: flex;
gap: var(--space-3);
}
.sms-test-result__summary strong,
.sms-test-result__summary span {
display: block;
}
.sms-test-result__summary span {
color: var(--color-text-muted);
font-size: var(--font-size-sm);
margin-top: var(--space-1);
}
.sms-test-result__records {
border-top: 1px solid color-mix(in srgb, var(--color-success) 25%, var(--color-border));
display: grid;
gap: var(--space-2);
padding-top: var(--space-3);
}
.sms-test-result__records div {
align-items: center;
display: flex;
font-size: var(--font-size-sm);
justify-content: space-between;
gap: var(--space-3);
}
.sms-test-result__records code {
color: var(--color-text-muted);
overflow-wrap: anywhere;
}
.admin-sms-task-page .page-heading {
align-items: center;
}
.admin-task-filter {
align-items: end;
display: grid;
gap: var(--space-5);
grid-template-columns: minmax(180px, 1fr) minmax(180px, 1fr) minmax(180px, 1fr) minmax(240px, 1.2fr) auto;
}
.admin-task-filter__actions {
display: flex;
gap: var(--space-3);
}
.admin-task-table-card {
overflow: hidden;
padding: 0;
}
.admin-task-table-card .ui-table-wrap {
border: 0;
border-radius: 0;
}
.admin-task-table-card .ui-table {
min-width: 1180px;
}
.admin-task-table-card .ui-table th,
.admin-task-table-card .ui-table td {
padding: var(--space-4);
vertical-align: middle;
}
.admin-task-id {
color: var(--color-text-strong);
font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
font-size: var(--font-size-sm);
}
.admin-task-enterprise,
.admin-task-counts,
.admin-task-send-type {
display: grid;
gap: var(--space-1);
}
.admin-task-enterprise strong {
color: var(--color-text-strong);
}
.admin-task-enterprise span,
.admin-task-counts span,
.admin-task-send-type > span {
color: var(--color-text-muted);
}
.admin-task-counts strong {
color: var(--color-text-strong);
}
.admin-task-send-type .ui-tag {
gap: 4px;
justify-self: start;
}
.admin-task-list-progress {
min-width: 150px;
}
.admin-task-actions {
display: flex;
gap: var(--space-2);
justify-content: flex-end;
}
.report-page-actions {
align-items: center;
display: flex;
flex-wrap: wrap;
gap: var(--space-3);
}
.report-task-table-card .ui-table {
min-width: 1380px;
}
.report-task-table-card .ui-table th:last-child,
.report-task-table-card .ui-table td:last-child {
background: var(--color-surface);
box-shadow: -8px 0 12px rgb(15 23 42 / 6%);
position: sticky;
right: 0;
z-index: 1;
}
.report-task-table-card .ui-table th:last-child {
z-index: 2;
}
.report-task-time {
color: var(--color-text-muted);
display: grid;
font-size: var(--font-size-xs);
gap: 4px;
line-height: 1.45;
}
.report-task-time span {
white-space: nowrap;
}
.admin-remark-cell {
background: var(--color-bg-subtle);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
color: var(--color-text);
display: -webkit-box;
line-height: 1.6;
max-width: 360px;
min-width: 220px;
overflow: hidden;
padding: var(--space-3);
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
.admin-remark-cell--empty {
color: var(--color-text-subtle);
}
.report-task-generate {
display: grid;
gap: var(--space-5);
}
.report-task-generate section,
.report-task-detail .admin-task-card {
background: var(--color-bg-subtle);
border: 1px solid var(--color-border);
border-radius: var(--radius-lg);
padding: var(--space-5);
}
.report-task-generate h3,
.report-receipt-preview h3,
.report-history h3 {
color: var(--color-text-strong);
font-size: var(--font-size-md);
font-weight: 700;
margin: 0 0 var(--space-4);
}
.report-task-preview {
display: grid;
gap: var(--space-4);
grid-template-columns: repeat(4, minmax(0, 1fr));
}
.report-task-preview > div,
.report-receipt-preview > div {
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-lg);
padding: var(--space-4);
}
.report-task-preview span,
.report-receipt-preview span {
color: var(--color-text-muted);
display: block;
font-size: var(--font-size-xs);
margin-bottom: var(--space-2);
}
.report-task-preview strong,
.report-receipt-preview strong {
color: var(--color-text-strong);
font-size: var(--font-size-xl);
}
.report-receipt-modal {
align-items: start;
display: grid;
gap: var(--space-5);
grid-template-columns: minmax(260px, 0.9fr) minmax(320px, 1.1fr);
}
.report-receipt-modal .ui-field {
grid-column: 1 / -1;
}
.report-upload-drop {
align-content: center;
background: var(--color-bg-subtle);
border: 1px dashed var(--color-border-strong);
border-radius: var(--radius-lg);
display: grid;
gap: var(--space-2);
min-height: 180px;
padding: var(--space-6);
place-items: center;
text-align: center;
}
.report-upload-drop svg {
color: var(--color-primary);
}
.report-upload-drop strong {
color: var(--color-text-strong);
font-size: var(--font-size-md);
}
.report-upload-drop span {
color: var(--color-text-muted);
font-size: var(--font-size-sm);
line-height: 1.5;
}
.report-receipt-preview {
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-lg);
display: grid;
gap: var(--space-3);
padding: var(--space-5);
}
.report-record-detail {
display: grid;
gap: var(--space-5);
}
.report-history {
background: var(--color-bg-subtle);
border: 1px solid var(--color-border);
border-radius: var(--radius-lg);
padding: var(--space-5);
}
.report-history h3 {
align-items: center;
display: flex;
gap: var(--space-2);
}
.report-history > div {
align-items: center;
border-top: 1px solid var(--color-border);
display: grid;
gap: var(--space-4);
grid-template-columns: 170px 120px 1fr;
padding: var(--space-3) 0;
}
.report-history span,
.report-history em {
color: var(--color-text-muted);
font-size: var(--font-size-sm);
font-style: normal;
}
.report-history strong {
color: var(--color-text-strong);
}
.admin-task-template-row .ui-inline-text-preview {
background: var(--color-bg-subtle);
}
.admin-task-template-row .ui-inline-text-preview p,
.admin-task-template-row .ui-inline-text-preview p strong {
color: var(--color-text);
}
.admin-task-detail-title {
display: grid;
gap: var(--space-3);
}
.admin-task-detail-title h2 {
font-size: 24px;
}
.admin-task-detail-title p {
align-items: center;
display: flex;
gap: var(--space-3);
}
.admin-task-detail-title p > span {
color: var(--color-text-strong);
font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
font-weight: var(--font-weight-semibold);
}
.admin-task-detail {
display: grid;
gap: var(--space-5);
}
.admin-task-metrics {
display: grid;
gap: var(--space-4);
grid-template-columns: repeat(5, minmax(0, 1fr));
}
.admin-task-metric {
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
display: grid;
gap: var(--space-3);
min-height: 104px;
padding: var(--space-5);
}
.admin-task-metric span {
color: var(--color-text-muted);
font-weight: var(--font-weight-semibold);
}
.admin-task-metric strong {
color: var(--color-text-strong);
font-size: 30px;
line-height: 1;
}
.admin-task-metric--success strong {
color: var(--color-success);
}
.admin-task-metric--primary {
background: linear-gradient(135deg, rgba(37, 99, 235, 0.08), rgba(22, 163, 74, 0.08)), var(--color-surface);
border-color: rgba(37, 99, 235, 0.24);
}
.admin-task-metric--primary strong {
color: var(--color-selected);
}
.admin-task-detail-grid {
display: grid;
gap: var(--space-5);
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
}
.admin-task-card {
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
display: grid;
gap: var(--space-5);
padding: var(--space-5);
}
.admin-task-card h3 {
align-items: center;
display: flex;
font-size: var(--font-size-md);
gap: var(--space-2);
}
.admin-task-card h3 svg {
color: var(--color-selected);
}
.admin-task-info-list,
.admin-task-template-meta {
display: grid;
gap: var(--space-5);
margin: 0;
}
.admin-task-info-list div,
.admin-task-template-meta div {
align-items: start;
display: grid;
gap: var(--space-4);
grid-template-columns: 120px minmax(0, 1fr);
}
.admin-task-info-list dt,
.admin-task-template-meta dt {
color: var(--color-text-muted);
font-weight: var(--font-weight-semibold);
}
.admin-task-info-list dd,
.admin-task-template-meta dd {
color: var(--color-text-strong);
display: grid;
gap: var(--space-1);
justify-items: end;
margin: 0;
text-align: right;
}
.admin-task-info-list dd span {
color: var(--color-text-muted);
}
.admin-task-progress-card {
display: grid;
gap: var(--space-5);
}
.admin-task-progress-card > div:first-child {
align-items: center;
display: flex;
justify-content: space-between;
}
.admin-task-progress-card > div:first-child span {
color: var(--color-text-muted);
}
.admin-task-progress-card > div:first-child strong {
color: var(--color-selected);
font-size: 28px;
}
.admin-task-progress-split {
display: grid;
gap: var(--space-4);
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.admin-task-progress-split span {
background: var(--color-surface-muted);
border-radius: var(--radius-sm);
color: var(--color-text-muted);
display: grid;
gap: var(--space-2);
justify-items: center;
padding: var(--space-4);
}
.admin-task-progress-split strong {
color: var(--color-text-strong);
font-size: 20px;
}
.admin-task-template-block {
display: grid;
gap: var(--space-2);
}
.admin-task-template-block > span {
color: var(--color-text-muted);
font-weight: var(--font-weight-semibold);
}
.admin-task-template {
background: var(--color-bg-subtle);
border-radius: var(--radius-sm);
color: var(--color-text-strong);
line-height: 1.75;
margin: 0;
padding: var(--space-4);
}
.admin-task-template-meta b {
color: var(--color-selected);
margin: 0 var(--space-1);
}
.admin-task-billing-note {
align-items: center;
background: var(--color-bg-subtle);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
color: var(--color-text-muted);
display: flex;
min-height: 58px;
padding: var(--space-4) var(--space-5);
}
.admin-task-card--full {
grid-column: 1 / -1;
}
.admin-carrier-grid {
display: grid;
gap: var(--space-5);
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.admin-carrier-card {
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
display: grid;
gap: var(--space-4);
padding: var(--space-5);
}
.admin-carrier-card--mobile {
background: #eef4ff;
border-color: #a7c4ff;
}
.admin-carrier-card--unicom {
background: #eaf8ee;
border-color: #96dda7;
}
.admin-carrier-card--telecom {
background: #fff3e6;
border-color: #fdba74;
}
.admin-carrier-card strong {
color: var(--color-text-strong);
font-size: var(--font-size-lg);
}
.admin-carrier-card p {
align-items: center;
color: var(--color-text-muted);
display: flex;
justify-content: space-between;
margin: 0;
}
.admin-carrier-card b {
color: var(--color-text-strong);
}
.admin-carrier-card div {
border-top: 1px solid rgba(148, 163, 184, 0.32);
display: grid;
gap: var(--space-2);
padding-top: var(--space-4);
}
.admin-carrier-card em {
color: var(--color-selected);
font-size: 30px;
font-style: normal;
font-weight: var(--font-weight-bold);
line-height: 1;
}
.admin-carrier-card--unicom em,
.admin-success-text {
color: var(--color-success);
}
.admin-carrier-card--telecom em {
color: #ea580c;
}
.admin-task-card .ui-table-wrap {
border-radius: var(--radius-md);
}
.admin-mms-task-page .page-heading {
align-items: center;
}
.admin-mms-task-table-card .ui-table {
min-width: 1360px;
}
.admin-mms-task-table-card .ui-table-wrap {
border: 0;
border-radius: 0;
}
.admin-mms-task-table-card {
overflow: hidden;
padding: 0;
}
.admin-mms-task-table-card .mms-task-content {
max-width: 420px;
}
.admin-mms-task-table-card .mms-task-content p {
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
display: -webkit-box;
overflow: hidden;
}
.admin-mms-task-table-card .mms-task-actions {
justify-content: flex-end;
}
.admin-mms-task-table-card .mms-task-actions .ui-button {
padding: 0 9px;
}
.admin-mms-task-detail .mms-detail-template small {
color: var(--color-text-muted);
font-size: var(--font-size-sm);
margin-top: var(--space-2);
}
.admin-mms-city-list {
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
display: grid;
gap: var(--space-4);
padding: var(--space-5);
}
.admin-mms-city-list > div {
display: grid;
gap: var(--space-2);
grid-template-columns: 120px minmax(140px, 1fr) 80px;
}
.admin-mms-city-list strong {
color: var(--color-text-strong);
}
.admin-mms-city-list span {
color: var(--color-text-muted);
text-align: right;
}
.admin-mms-city-list b {
color: var(--color-selected);
text-align: right;
}
.admin-mms-city-list .ui-progress-bar {
grid-column: 1 / -1;
}
.admin-sms-records-page .page-heading {
align-items: center;
}
.admin-sms-record-filter {
align-items: end;
display: grid;
gap: var(--space-5);
grid-template-columns: repeat(4, minmax(180px, 1fr));
}
.admin-sms-record-filter__actions {
display: grid;
gap: var(--space-3);
grid-template-columns: repeat(2, minmax(120px, 1fr));
}
.admin-sms-record-table-card {
overflow: hidden;
padding: 0;
}
.admin-sms-record-toolbar {
align-items: center;
border-bottom: 1px solid var(--color-border);
display: flex;
justify-content: flex-end;
min-height: 76px;
padding: var(--space-4) var(--space-6);
}
.admin-sms-record-table-card .ui-table-wrap {
border: 0;
border-radius: 0;
}
.admin-sms-record-table {
min-width: 1180px;
}
.admin-sms-record-table th {
background: var(--color-bg-subtle);
color: var(--color-text-strong);
height: 58px;
}
.admin-sms-record-table td {
height: 120px;
padding: var(--space-5) var(--space-6);
vertical-align: top;
}
.admin-sms-record-sender,
.admin-sms-record-phone,
.admin-sms-record-channel {
display: grid;
gap: var(--space-1);
}
.admin-sms-record-sender strong,
.admin-sms-record-phone strong,
.admin-sms-record-channel strong {
color: var(--color-text-strong);
}
.admin-sms-record-sender span,
.admin-sms-record-phone span,
.admin-sms-record-channel span,
.admin-sms-record-sender small,
.admin-sms-record-phone small {
color: var(--color-text-muted);
}
.admin-sms-record-content {
color: var(--color-text-strong);
line-height: 1.75;
margin: 0;
max-width: 440px;
}
.admin-sms-record-status {
align-items: center;
color: var(--color-text-muted);
display: inline-flex;
font-weight: var(--font-weight-semibold);
gap: var(--space-2);
margin-top: var(--space-1);
}
.admin-sms-record-status i {
border-radius: var(--radius-full);
display: inline-flex;
height: 10px;
width: 10px;
}
.admin-sms-record-status i.is-success {
background: var(--color-success);
}
.admin-sms-record-status i.is-unknown {
background: #6b7280;
}
.admin-sms-record-status i.is-failed {
background: var(--color-danger);
}
.admin-sms-record-status:has(.is-success) {
color: var(--color-success);
}
.admin-sms-record-status:has(.is-failed) {
color: var(--color-danger);
}
.admin-sms-record-detail-link {
background: transparent;
border: 0;
color: var(--color-selected);
font-weight: var(--font-weight-semibold);
padding: 0;
}
.admin-sms-send-detail {
display: grid;
gap: var(--space-6);
}
.admin-sms-detail-overview {
background: var(--color-surface-subtle);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
display: grid;
gap: var(--space-4);
grid-template-columns: repeat(4, minmax(0, 1fr));
padding: var(--space-4) var(--space-5);
}
.admin-sms-detail-overview div {
display: grid;
gap: var(--space-2);
}
.admin-sms-detail-overview span {
color: var(--color-text-muted);
font-size: var(--font-size-sm);
}
.admin-sms-detail-overview strong {
color: var(--color-text-strong);
overflow-wrap: anywhere;
}
.admin-sms-send-detail h3 {
color: var(--color-text-strong);
font-size: var(--font-size-md);
margin-bottom: var(--space-3);
}
.admin-sms-detail-content {
background: var(--color-bg-subtle);
border-radius: var(--radius-md);
color: var(--color-text-strong);
line-height: 1.75;
margin: 0;
padding: var(--space-5);
}
.admin-sms-detail-status-grid {
background: var(--color-bg-subtle);
border-radius: var(--radius-md);
display: grid;
gap: var(--space-4) var(--space-6);
grid-template-columns: repeat(2, minmax(0, 1fr));
padding: var(--space-5);
}
.admin-sms-detail-status-grid div {
display: grid;
gap: var(--space-2);
}
.admin-sms-detail-status-grid span {
color: var(--color-text-muted);
font-weight: var(--font-weight-semibold);
}
.admin-sms-detail-status-grid strong {
color: var(--color-text-strong);
font-weight: var(--font-weight-semibold);
overflow-wrap: anywhere;
}
.admin-sms-route-list {
display: grid;
}
.admin-sms-route-list article {
display: grid;
gap: var(--space-5);
grid-template-columns: 44px minmax(0, 1fr);
padding: var(--space-5) 0;
}
.admin-sms-route-list article + article {
border-top: 1px solid var(--color-border);
}
.admin-sms-route-list article > span {
align-items: center;
background: var(--color-surface-muted);
border-radius: var(--radius-full);
color: var(--color-text-muted);
display: inline-flex;
font-weight: var(--font-weight-semibold);
height: 36px;
justify-content: center;
width: 36px;
}
.admin-sms-route-list strong {
color: var(--color-text-strong);
display: block;
margin-bottom: var(--space-4);
}
.admin-sms-route-list dl {
display: grid;
gap: var(--space-5);
grid-template-columns: repeat(4, minmax(0, 1fr));
margin: 0;
}
.admin-sms-route-list dt {
color: var(--color-text-muted);
font-weight: var(--font-weight-semibold);
}
.admin-sms-route-list dd {
color: var(--color-text-strong);
margin: var(--space-2) 0 0;
}
.admin-mms-record-search-button {
background: #9d18ff;
color: var(--color-text-inverse);
}
.admin-mms-record-search-button:hover {
background: #8610dc;
}
.admin-mms-record-table {
min-width: 1120px;
}
.admin-mms-record-table td {
height: 112px;
}
.admin-mms-template-cell {
display: grid;
gap: var(--space-1);
}
.admin-mms-template-cell strong {
color: var(--color-text-strong);
}
.admin-mms-template-cell span {
color: var(--color-text-muted);
}
.admin-mms-template-cell small {
color: #9d18ff;
font-weight: var(--font-weight-semibold);
}
.admin-mms-preview-link {
align-items: center;
background: transparent;
border: 0;
color: #9d18ff;
display: inline-flex;
font-weight: var(--font-weight-semibold);
gap: var(--space-2);
padding: 0;
}
.admin-uplink-page .page-heading {
align-items: center;
}
.admin-uplink-filter {
align-items: end;
display: grid;
gap: var(--space-5);
grid-template-columns: minmax(260px, 1.1fr) minmax(220px, 1fr) minmax(220px, 1fr) auto;
}
.admin-uplink-filter__actions {
display: grid;
gap: var(--space-3);
grid-template-columns: repeat(2, minmax(120px, 1fr));
}
.admin-uplink-table-card {
overflow: hidden;
padding: 0;
}
.admin-uplink-table-card .ui-table-wrap {
border: 0;
border-radius: 0;
}
.admin-uplink-table-card .ui-table {
min-width: 1160px;
}
.admin-uplink-table-card .ui-table th {
background: var(--color-bg-subtle);
color: var(--color-text-muted);
font-size: var(--font-size-sm);
height: 58px;
}
.admin-uplink-table-card .ui-table td {
height: 84px;
padding: var(--space-5) var(--space-4);
}
.admin-uplink-checkbox {
accent-color: var(--color-selected);
height: 18px;
width: 18px;
}
.admin-uplink-detail-link {
background: transparent;
border: 0;
color: var(--color-selected);
font-weight: var(--font-weight-semibold);
padding: 0;
}
.admin-uplink-detail {
display: grid;
gap: var(--space-7);
}
.admin-uplink-info-card,
.admin-uplink-match-card,
.admin-uplink-empty-match {
background: var(--color-bg-subtle);
border-radius: var(--radius-md);
padding: var(--space-6);
}
.admin-uplink-info-card h3,
.admin-uplink-match-section h3 {
font-size: var(--font-size-lg);
margin: 0 0 var(--space-5);
}
.admin-uplink-info-grid {
display: grid;
gap: var(--space-6) var(--space-8);
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.admin-uplink-info-grid div {
display: grid;
gap: var(--space-2);
}
.admin-uplink-info-grid__full {
grid-column: 1 / -1;
}
.admin-uplink-info-grid span,
.admin-uplink-match-section > p,
.admin-uplink-match-grid span,
.admin-uplink-match-content span {
color: var(--color-text-muted);
font-weight: var(--font-weight-semibold);
}
.admin-uplink-info-grid strong,
.admin-uplink-match-grid strong {
color: var(--color-text-strong);
font-weight: var(--font-weight-semibold);
}
.admin-uplink-match-section > p {
margin-bottom: var(--space-5);
}
.admin-uplink-match-grid {
display: grid;
gap: var(--space-6);
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.admin-uplink-match-grid div,
.admin-uplink-match-content {
display: grid;
gap: var(--space-2);
}
.admin-uplink-match-content {
margin-top: var(--space-5);
}
.admin-uplink-match-content p {
border-bottom: 1px solid var(--color-border);
color: var(--color-text-strong);
line-height: 1.75;
margin: 0;
padding-bottom: var(--space-5);
}
.admin-uplink-candidate-footer {
align-items: center;
display: flex;
gap: var(--space-4);
justify-content: space-between;
margin-top: var(--space-5);
}
.admin-uplink-candidate-footer span {
color: var(--color-text-muted);
line-height: 1.6;
min-width: 0;
}
.admin-uplink-empty-match {
color: var(--color-text-muted);
}
.admin-recharge-page .page-heading {
align-items: center;
}
.admin-recharge-filter {
align-items: end;
display: grid;
gap: var(--space-5);
grid-template-columns: minmax(320px, 1.2fr) minmax(320px, 1.2fr) minmax(360px, 1fr);
}
.admin-recharge-filter__actions {
display: grid;
gap: var(--space-4);
grid-template-columns: repeat(2, minmax(140px, 1fr));
}
.admin-recharge-table-card {
overflow: hidden;
padding: 0;
}
.admin-recharge-table-card .ui-table-wrap {
border: 0;
border-radius: 0;
}
.admin-recharge-table {
min-width: 1220px;
}
.admin-recharge-table th {
background: var(--color-bg-subtle);
color: var(--color-text-muted);
font-size: var(--font-size-sm);
height: 58px;
}
.admin-recharge-table td {
color: var(--color-text-strong);
font-weight: var(--font-weight-medium);
height: 76px;
padding: var(--space-4) var(--space-6);
vertical-align: middle;
}
.admin-recharge-table td:nth-child(3),
.admin-recharge-table td:nth-child(4) {
font-variant-numeric: tabular-nums;
}
.admin-recharge-pagination {
align-items: center;
border-top: 1px solid var(--color-border);
display: flex;
gap: var(--space-5);
justify-content: flex-end;
min-height: 88px;
padding: var(--space-4) var(--space-6);
}
.admin-recharge-pagination > label {
width: 130px;
}
.admin-recharge-pagination > div {
align-items: center;
display: flex;
gap: var(--space-2);
}
.admin-recharge-pagination .ui-button--primary {
background: var(--color-selected);
}
.admin-recharge-pagination span {
color: var(--color-text-muted);
padding: 0 var(--space-2);
}
.admin-security-page .page-heading {
align-items: center;
}
.admin-security-filter {
align-items: end;
display: grid;
gap: var(--space-5);
grid-template-columns: minmax(320px, 1fr) auto;
padding: var(--space-5);
}
.admin-security-filter__actions {
display: flex;
gap: var(--space-3);
}
.admin-security-form {
display: grid;
gap: var(--space-4);
}
.admin-security-table-card {
overflow: hidden;
padding: 0;
}
.admin-security-table-card .ui-table-wrap {
border: 0;
border-radius: 0;
}
.admin-security-table-card .ui-table {
min-width: 980px;
}
.admin-security-table-card .ui-table th {
background: var(--color-bg-subtle);
color: var(--color-text-muted);
font-size: var(--font-size-sm);
height: 56px;
}
.admin-security-table-card .ui-table td {
height: 72px;
padding: var(--space-4) var(--space-6);
}
.phone-segment-tabs .ui-tabs__list {
width: fit-content;
}
.phone-segment-tabs .ui-tabs__tab {
min-width: 0;
padding-inline: var(--space-3);
}
.admin-system-page .page-heading {
align-items: center;
}
.admin-system-toolbar {
align-items: end;
display: grid;
gap: var(--space-5);
grid-template-columns: minmax(360px, 1fr) auto;
}
.phone-segment-overview {
display: grid;
gap: var(--space-4);
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.phone-segment-overview section {
align-items: center;
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
display: flex;
gap: var(--space-4);
min-height: 92px;
padding: var(--space-5);
}
.phone-segment-overview span {
align-items: center;
background: var(--color-selected-soft);
border-radius: var(--radius-md);
color: var(--color-selected);
display: inline-flex;
height: 44px;
justify-content: center;
width: 44px;
}
.phone-segment-overview strong {
color: var(--color-text-strong);
font-size: 26px;
line-height: 1;
}
.phone-segment-overview p {
color: var(--color-text-muted);
margin: var(--space-1) 0 0;
}
.phone-segment-tabs {
display: grid;
gap: var(--space-4);
grid-template-columns: repeat(2, minmax(0, 1fr));
padding: var(--space-4);
}
.phone-segment-tabs button {
align-items: center;
background: var(--color-surface-subtle);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
color: var(--color-text);
cursor: pointer;
display: grid;
gap: var(--space-3);
grid-template-columns: 36px minmax(0, 1fr) auto;
min-height: 78px;
padding: var(--space-4);
text-align: left;
}
.phone-segment-tabs button > svg {
color: var(--color-selected);
}
.phone-segment-tabs button span {
display: grid;
gap: 4px;
min-width: 0;
}
.phone-segment-tabs button strong {
color: var(--color-text-strong);
font-size: var(--font-size-base);
}
.phone-segment-tabs button small {
color: var(--color-text-muted);
line-height: 1.45;
}
.phone-segment-tabs button em {
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: 999px;
color: var(--color-text-strong);
font-style: normal;
font-weight: var(--font-weight-semibold);
min-width: 40px;
padding: 5px 10px;
text-align: center;
}
.phone-segment-tabs button.is-active {
background: var(--color-selected-soft);
border-color: #bfdbfe;
}
.phone-segment-tabs button.is-active em {
background: var(--color-selected);
border-color: var(--color-selected);
color: #ffffff;
}
.phone-segment-toolbar {
align-items: center;
}
.admin-system-table-card {
overflow: hidden;
padding: 0;
}
.admin-system-table-card .ui-table-wrap {
border: 0;
border-radius: 0;
}
.admin-system-table-card .ui-table {
min-width: 1080px;
}
.admin-system-table-card .ui-table th {
background: var(--color-bg-subtle);
color: var(--color-text-muted);
font-size: var(--font-size-sm);
height: 56px;
}
.admin-system-table-card .ui-table td {
height: 72px;
padding: var(--space-4) var(--space-6);
}
.admin-system-actions,
.admin-drainage-actions {
align-items: center;
display: inline-flex;
gap: var(--space-2);
justify-content: flex-end;
}
.admin-system-modal-form {
display: grid;
gap: var(--space-5);
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.admin-system-modal-form__wide {
grid-column: 1 / -1;
}
.admin-drainage-toolbar {
align-items: end;
display: grid;
gap: var(--space-5);
grid-template-columns: minmax(420px, 1fr) minmax(180px, 220px) minmax(180px, 220px) auto;
}
.admin-drainage-type {
align-items: center;
background: var(--color-bg-subtle);
border: 1px solid var(--color-border);
border-radius: var(--radius-sm);
color: var(--color-text-strong);
display: inline-flex;
font-size: var(--font-size-sm);
font-weight: var(--font-weight-semibold);
min-height: 30px;
padding: 0 var(--space-3);
}
.admin-drainage-actions .ui-button--ghost {
color: var(--color-text);
}
.admin-drainage-pagination {
align-items: center;
border-top: 1px solid var(--color-border);
display: flex;
gap: var(--space-3);
justify-content: flex-end;
min-height: 76px;
padding: var(--space-4) var(--space-6);
}
.admin-drainage-pagination span {
color: var(--color-text-muted);
}
.file-actions {
align-items: center;
display: inline-flex;
flex-wrap: wrap;
gap: 6px;
margin-top: 6px;
}
.file-action-link {
align-items: center;
background: #fff;
border: 1px solid var(--border);
border-radius: 6px;
color: var(--text);
display: inline-flex;
font-size: 13px;
font-weight: 600;
gap: 4px;
min-height: 30px;
padding: 0 10px;
text-decoration: none;
}
.file-action-link:hover {
border-color: var(--primary);
color: var(--primary);
}
.file-preview-image {
display: block;
height: auto;
margin: 0 auto;
max-height: calc(100vh - 300px);
max-width: 100%;
object-fit: contain;
}
@media (max-width: 780px) {
.app-shell {
grid-template-columns: 1fr;
height: auto;
min-height: 100vh;
overflow: visible;
}
.app-shell--collapsed {
grid-template-columns: 1fr;
}
.sidebar {
align-items: stretch;
height: auto;
padding: var(--space-4);
}
.app-shell--collapsed .sidebar {
align-items: stretch;
padding: var(--space-4);
}
.app-shell--collapsed .brand-copy,
.app-shell--collapsed .side-nav-section p,
.app-shell--collapsed .side-nav a span,
.app-shell--collapsed .sidebar-footer {
display: revert;
}
.app-shell--collapsed .brand-block {
justify-content: flex-start;
padding: 0 var(--space-2) var(--space-2);
}
.app-shell--collapsed .brand-logo--full {
display: block;
}
.app-shell--collapsed .brand-logo--compact {
display: none;
}
.app-shell--collapsed .side-nav a {
height: auto;
justify-content: flex-start;
padding: 10px var(--space-3);
width: auto;
}
.app-shell--collapsed .side-nav-list {
justify-items: stretch;
}
.side-nav {
max-height: 260px;
}
.topbar {
align-items: stretch;
flex-direction: column;
gap: var(--space-3);
height: auto;
padding: var(--space-4);
position: sticky;
}
.topbar-left,
.topbar-actions {
justify-content: space-between;
}
.user-menu small {
display: none;
}
.page-content {
overflow-y: visible;
padding: var(--space-5);
}
.page-heading {
align-items: start;
display: grid;
}
.overview-hero {
align-items: stretch;
display: grid;
padding: var(--space-5);
}
.page-heading > p {
text-align: left;
}
.dashboard-grid {
grid-template-columns: 1fr;
}
.content-grid,
.form-grid--two,
.plan-grid,
.chart-grid,
.overview-grid,
.overview-grid--three,
.quick-grid,
.sms-send-layout,
.send-form-row {
grid-template-columns: 1fr;
}
.sms-preview-card {
position: static;
}
.downstream-breakdown-table {
overflow-x: auto;
}
.downstream-breakdown-table__head,
.downstream-breakdown-table__row {
min-width: 560px;
}
.receiver-table__head,
.receiver-table__row {
grid-template-columns: 64px minmax(0, 1fr) 64px;
}
.radio-row {
align-items: flex-start;
display: grid;
gap: var(--space-3);
}
.batch-filter-grid {
gap: var(--space-4);
grid-template-columns: 1fr;
}
.batch-pagination {
align-items: stretch;
display: grid;
gap: var(--space-3);
}
.task-info-grid,
.task-stat-grid,
.carrier-rate-grid,
.sms-app-grid,
.template-card-grid {
grid-template-columns: 1fr;
}
.template-toolbar,
.template-custom-variable {
grid-template-columns: 1fr;
}
.task-detail-title h2 {
font-size: 26px;
}
.section-heading,
.page-actions {
align-items: stretch;
display: grid;
}
.admin-task-filter,
.admin-sms-record-filter,
.admin-uplink-filter,
.admin-recharge-filter,
.admin-recharge-filter__actions,
.admin-system-toolbar,
.phone-segment-overview,
.phone-segment-tabs,
.admin-system-modal-form,
.admin-drainage-toolbar,
.channel-route-card-grid,
.admin-split-filter,
.detail-grid,
.admin-task-detail-grid,
.admin-task-metrics,
.admin-carrier-grid,
.admin-mms-city-list > div,
.admin-sms-detail-overview,
.channel-connection-summary article,
.admin-sms-route-list dl,
.admin-uplink-info-grid,
.admin-uplink-match-grid {
grid-template-columns: 1fr;
}
.admin-recharge-pagination {
align-items: stretch;
display: grid;
justify-content: stretch;
}
}