* { 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; } }