.sr-only { height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; clip: rect(0, 0, 0, 0); border: 0; } .ui-button { align-items: center; border: 1px solid transparent; border-radius: var(--radius-md); display: inline-flex; font-weight: var(--font-weight-semibold); gap: var(--space-2); justify-content: center; max-width: 100%; transition: background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast), box-shadow var(--transition-fast); white-space: nowrap; } .ui-button--sm { font-size: var(--font-size-sm); height: var(--control-height-sm); padding: 0 10px; } .ui-button--md { font-size: var(--font-size-md); height: var(--control-height-md); padding: 0 var(--space-4); } .ui-button--lg { font-size: var(--font-size-md); height: var(--control-height-lg); padding: 0 var(--space-5); } .ui-button--primary { background: var(--color-brand); color: var(--color-text-inverse); } .ui-button--primary:hover { background: var(--color-brand-hover); } .ui-button--secondary { background: var(--color-selected); color: var(--color-text-inverse); } .ui-button--secondary:hover { background: var(--color-selected-hover); } .ui-button--success { background: rgba(22, 163, 74, 0.12); color: #15803d; } .ui-button--success:hover { background: rgba(22, 163, 74, 0.2); color: #166534; } .ui-button--warning { background: rgba(245, 158, 11, 0.14); color: #b45309; } .ui-button--warning:hover { background: rgba(245, 158, 11, 0.22); color: #92400e; } .ui-button--ghost { background: var(--color-surface); border-color: var(--color-border); color: var(--color-text); } .ui-button--ghost:hover { background: var(--color-selected-soft); border-color: rgba(37, 99, 235, 0.22); color: var(--color-selected); } .ui-button--danger { background: var(--color-danger); color: var(--color-text-inverse); } .ui-button--danger:hover { background: #b91c1c; } .ui-button--danger .ui-button__icon, .ui-button--danger .ui-button__icon svg { color: #fff; stroke: #fff; } .ui-button--icon-only { padding: 0; width: var(--control-height-md); } .ui-button--sm.ui-button--icon-only { width: var(--control-height-sm); } .ui-button--lg.ui-button--icon-only { width: var(--control-height-lg); } .ui-button:disabled { background: var(--color-surface-muted); border-color: var(--color-border); color: var(--color-text-subtle); } .ui-button__icon { display: inline-flex; } .ui-field { display: grid; gap: var(--space-2); } .ui-field__label { color: var(--color-text-strong); font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); } .ui-field__hint, .ui-field__error { font-size: var(--font-size-xs); } .ui-field__hint { color: var(--color-text-muted); } .ui-field__error { color: var(--color-danger); } .ui-input, .ui-select { 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); min-height: var(--control-height-md); padding: 0 var(--control-padding-x); position: relative; transition: border-color var(--transition-fast), box-shadow var(--transition-fast), background var(--transition-fast); } .ui-textarea { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-md); color: var(--color-text); min-height: 116px; outline: 0; padding: 10px var(--control-padding-x); resize: vertical; transition: border-color var(--transition-fast), box-shadow var(--transition-fast), background var(--transition-fast); width: 100%; } .ui-textarea:focus { border-color: var(--color-selected); box-shadow: var(--focus-ring); } .ui-textarea--error { border-color: var(--color-danger); } .ui-textarea::placeholder { color: var(--color-text-subtle); } .ui-input:focus-within, .ui-select:focus-within, .ui-select--open { border-color: var(--color-selected); box-shadow: var(--focus-ring); } .ui-input--error, .ui-select--error { border-color: var(--color-danger); } .ui-input input { background: transparent; border: 0; color: var(--color-text); flex: 1; height: calc(var(--control-height-md) - 2px); min-width: 0; outline: 0; text-overflow: ellipsis; } .ui-input input::placeholder { color: var(--color-text-subtle); } .ui-input__addon { align-items: center; color: var(--color-text-subtle); display: inline-flex; } .ui-date-range-field { position: relative; } .ui-date-range-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); justify-content: space-between; min-height: var(--control-height-md); 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%; } .ui-date-range-trigger > span:nth-child(2) { color: var(--color-text-subtle); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .ui-date-range-trigger--filled > span:nth-child(2) { color: var(--color-text); } .ui-date-range-trigger--open, .ui-date-range-trigger:focus-visible { border-color: var(--color-selected); box-shadow: var(--focus-ring); } .ui-date-range__clear { align-items: center; border-radius: var(--radius-full); color: var(--color-text-muted); display: inline-flex; flex: 0 0 auto; justify-content: center; padding: 2px; } .ui-date-range__clear:hover { background: var(--color-surface-muted); color: var(--color-text); } .ui-date-range-popover { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); display: grid; gap: var(--space-4); left: 0; padding: var(--space-4); position: absolute; top: calc(100% + 8px); width: min(420px, calc(100vw - 48px)); z-index: var(--z-dropdown); } .ui-date-range-presets { display: flex; gap: var(--space-2); } .ui-date-range-presets button, .ui-date-range-actions button { background: var(--color-bg-subtle); border: 1px solid var(--color-border); border-radius: var(--radius-md); color: var(--color-text); min-height: var(--control-height-sm); padding: 0 var(--space-3); } .ui-date-range-presets button:hover { border-color: var(--color-selected); color: var(--color-selected); } .ui-date-range-actions { display: flex; gap: var(--space-2); justify-content: flex-end; } .ui-date-range-actions button:last-child { background: var(--color-brand); border-color: var(--color-brand); color: var(--color-text-inverse); } .ui-date-range-actions button:disabled { opacity: 0.48; } .ui-calendar { border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: var(--space-3); } .ui-calendar__header { align-items: center; display: flex; justify-content: space-between; margin-bottom: var(--space-3); } .ui-calendar__header button { align-items: center; background: transparent; border: 0; border-radius: var(--radius-md); color: var(--color-text-muted); display: inline-flex; height: 30px; justify-content: center; width: 30px; } .ui-calendar__header button:hover { background: var(--color-surface-muted); color: var(--color-text); } .ui-calendar__header strong { color: var(--color-text-strong); font-size: var(--font-size-sm); } .ui-calendar__weekdays, .ui-calendar__grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); } .ui-calendar__weekdays span { color: var(--color-text-muted); font-size: var(--font-size-xs); line-height: 30px; text-align: center; } .ui-calendar__grid { gap: 2px 0; } .ui-calendar__day { background: transparent; border: 0; border-radius: 0; color: var(--color-text); height: 34px; position: relative; z-index: 0; } .ui-calendar__day::before { background: transparent; border-radius: var(--radius-full); content: ""; height: 30px; inset: 2px calc(50% - 15px); position: absolute; z-index: -1; } .ui-calendar__day:hover::before { background: #dbeafe; } .ui-calendar__day--start:hover::before, .ui-calendar__day--end:hover::before { background: var(--color-selected); } .ui-calendar__day--muted { color: var(--color-text-subtle); } .ui-calendar__day--range { background: var(--color-selected-soft); color: var(--color-selected); } .ui-calendar__day--start, .ui-calendar__day--end, .ui-calendar__day--selected { color: var(--color-text-inverse); font-weight: var(--font-weight-semibold); } .ui-calendar__day--start::before, .ui-calendar__day--end::before, .ui-calendar__day--selected::before { background: var(--color-selected); } .ui-calendar__day--selected:hover::before { background: var(--color-selected); } .ui-date-time-popover { width: min(360px, calc(100vw - 48px)); } .ui-time-picker { align-items: center; border: 1px solid var(--color-border); border-radius: var(--radius-md); display: flex; gap: var(--space-3); justify-content: space-between; padding: var(--space-3); } .ui-time-picker span { align-items: center; color: var(--color-text-muted); display: flex; font-size: var(--font-size-xs); font-weight: var(--font-weight-medium); gap: var(--space-2); } .ui-time-picker input { background: var(--color-bg-subtle); border: 1px solid var(--color-border); border-radius: var(--radius-md); color: var(--color-text); height: var(--control-height-sm); padding: 0 var(--space-3); } .ui-query-panel { display: grid; gap: var(--space-5); } .ui-query-panel h2 { font-size: var(--font-size-lg); } .ui-query-panel__grid { align-items: end; display: grid; gap: var(--space-8); grid-template-columns: repeat(3, minmax(220px, 1fr)); } .ui-query-panel__summary { color: var(--color-text-muted); } .ui-query-panel__summary strong { color: var(--color-selected); } .ui-pagination { align-items: center; display: flex; justify-content: space-between; padding: var(--space-4) var(--space-6); } .ui-pagination > span { color: var(--color-text-muted); } .ui-pagination > div { display: flex; gap: var(--space-2); } .ui-inline-text-preview { 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; padding: var(--space-3) var(--space-4); transition: border-color var(--transition-fast), box-shadow var(--transition-fast); } .ui-inline-text-preview > span:first-child { color: var(--color-text-muted); flex: 0 0 auto; font-size: var(--font-size-xs); font-weight: var(--font-weight-semibold); } .ui-inline-text-preview p { color: var(--color-text-muted); margin: 0; } .ui-inline-text-preview p strong { color: var(--color-text-muted); font-weight: var(--font-weight-regular); margin-right: 2px; } .ui-select button { align-items: center; background: transparent; border: 0; color: var(--color-text); display: flex; flex: 1; gap: var(--space-2); height: calc(var(--control-height-md) - 2px); justify-content: space-between; min-width: 0; padding: 0; text-align: left; } .ui-select button:disabled { color: var(--color-text-subtle); } .ui-select button > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .ui-select__placeholder { color: var(--color-text-subtle); } .ui-select--disabled { background: var(--color-surface-muted); } .ui-select svg { color: var(--color-text-subtle); pointer-events: none; transition: transform var(--transition-fast); } .ui-select--open svg { transform: rotate(180deg); } .ui-select__dropdown { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-md); box-shadow: var(--shadow-md); display: grid; left: -1px; max-height: 220px; overflow-y: auto; padding: var(--space-1); position: absolute; right: -1px; top: calc(100% + 6px); z-index: var(--z-dropdown); } .ui-select__dropdown button { border-radius: var(--radius-sm); color: var(--color-text); font-size: var(--font-size-md); height: 36px; padding: 0 var(--space-3); } .ui-select__dropdown button:hover { background: var(--color-selected-soft); color: var(--color-selected); } .ui-select__dropdown button[aria-selected="true"] { background: var(--color-selected); color: var(--color-text-inverse); } .ui-tag { align-items: center; border-radius: var(--radius-full); display: inline-flex; font-size: var(--font-size-xs); font-weight: var(--font-weight-semibold); min-height: 24px; padding: 0 10px; } .ui-tag--neutral { background: var(--color-surface-muted); color: var(--color-text-muted); } .ui-tag--info { background: var(--color-info-soft); color: var(--color-info); } .ui-tag--success { background: var(--color-success-soft); color: var(--color-success); } .ui-tag--warning { background: var(--color-warning-soft); color: var(--color-warning); } .ui-tag--danger { background: var(--color-danger-soft); color: var(--color-danger); } .ui-tag--accent { background: var(--color-accent-soft); color: var(--color-accent-strong); } .ui-tabs { display: grid; gap: var(--space-4); } .ui-tabs__list { align-items: center; border-bottom: 1px solid var(--color-border); display: flex; gap: var(--space-2); } .ui-tabs__tab { align-items: center; background: transparent; border: 0; color: var(--color-text-muted); display: inline-flex; font-weight: var(--font-weight-semibold); gap: var(--space-2); padding: 0 var(--space-2) var(--space-3); position: relative; } .ui-tabs__tab[aria-selected="true"] { color: var(--color-selected); } .ui-tabs__tab[aria-selected="true"]::after { background: var(--color-selected); border-radius: var(--radius-full); bottom: -1px; content: ""; height: 2px; left: var(--space-2); position: absolute; right: var(--space-2); } .ui-tabs__panel { min-width: 0; } .ui-table-wrap { border: 1px solid var(--color-border); border-radius: var(--radius-lg); overflow: auto; } .ui-table { background: var(--color-surface); border-collapse: collapse; min-width: 680px; width: 100%; } .ui-table th { background: var(--color-bg-subtle); color: var(--color-text-muted); font-size: var(--font-size-xs); font-weight: var(--font-weight-bold); padding: var(--space-3) var(--space-4); } .ui-table td { border-top: 1px solid var(--color-border); color: var(--color-text); padding: var(--space-4); vertical-align: middle; word-break: break-word; } .ui-table tbody tr:hover { background: var(--color-bg-subtle); } .ui-table__empty { color: var(--color-text-muted); height: 160px; text-align: center; } .ui-modal { inset: 0; position: fixed; z-index: var(--z-modal); } .ui-modal__mask { background: rgba(18, 18, 26, 0.48); border: 0; cursor: default; inset: 0; position: absolute; width: 100%; } .ui-modal__panel { background: var(--color-surface); border: 1px solid rgba(18, 18, 26, 0.08); border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); display: grid; grid-template-rows: auto minmax(0, 1fr) auto; left: 50%; max-height: min(760px, calc(100vh - 48px)); max-width: calc(100vw - 32px); overflow: hidden; position: absolute; top: 50%; transform: translate(-50%, -50%); width: 560px; } .ui-modal__panel--xl { max-height: min(840px, calc(100vh - 40px)); width: min(1080px, calc(100vw - 48px)); } .ui-modal__title { min-width: 0; } .ui-modal__header, .ui-modal__footer { align-items: center; display: flex; justify-content: space-between; padding: var(--space-5) var(--space-6); } .ui-modal__header { border-bottom: 1px solid var(--color-border); } .ui-modal__panel--xl .ui-modal__header { padding: var(--space-6) var(--space-7); } .ui-modal__body { color: var(--color-text); max-height: none; min-height: 0; overflow: auto; padding: var(--space-6); } .ui-modal__panel--xl .ui-modal__body { background: #f8fafc; max-height: none; padding: var(--space-6) var(--space-7); } .ui-modal__body::-webkit-scrollbar { width: 10px; } .ui-modal__body::-webkit-scrollbar-thumb { background: rgba(107, 114, 128, 0.36); border: 3px solid transparent; border-radius: var(--radius-full); background-clip: content-box; } .ui-modal__footer { border-top: 1px solid var(--color-border); gap: var(--space-3); justify-content: flex-end; } .ui-modal__panel--xl .ui-modal__footer { background: var(--color-surface); padding: var(--space-4) var(--space-7); } .ui-detail-title h2 { color: var(--color-text-strong); font-size: 22px; line-height: var(--line-height-tight); margin: 0; } .ui-detail-title p { color: #8a93a3; font-family: ui-monospace, SFMono-Regular, Consolas, monospace; font-size: var(--font-size-sm); margin: 6px 0 0; } .ui-detail-section { background: #ffffff; border: 1px solid #e9edf3; border-radius: var(--radius-lg); box-shadow: 0 8px 24px rgba(18, 18, 26, 0.04); display: grid; gap: 18px; padding: 22px; } .ui-detail-section__header { align-items: center; border-bottom: 1px solid #eef1f5; display: flex; gap: var(--space-3); justify-content: space-between; padding-bottom: 14px; } .ui-detail-section__header h3 { align-items: center; color: var(--color-text-strong); display: flex; font-size: 18px; gap: 8px; margin: 0; } .ui-detail-section__extra { align-items: center; display: flex; } .ui-detail-info-grid { border: 1px solid #edf0f5; border-radius: var(--radius-md); display: grid; gap: 0; grid-template-columns: repeat(4, minmax(0, 1fr)); overflow: hidden; } .ui-detail-info-grid__item { background: #ffffff; border-bottom: 1px solid #edf0f5; border-right: 1px solid #edf0f5; display: grid; gap: var(--space-2); min-height: 82px; padding: 16px 18px; } .ui-detail-info-grid__item:nth-child(4n) { border-right: 0; } .ui-detail-info-grid__item:hover { background: #fbfcff; } .ui-detail-info-grid__item span, .ui-detail-progress-card span, .ui-detail-stat-list span, .ui-rate-overview span { color: #7b8494; font-size: var(--font-size-xs); font-weight: var(--font-weight-medium); } .ui-detail-info-grid__item strong { color: #18202f; font-size: var(--font-size-md); line-height: 1.55; } .ui-detail-info-grid__item--full { background: #fbfcff; border-bottom: 0; border-right: 0; grid-column: 1 / -1; min-height: 92px; } .ui-detail-info-grid__item--full strong { color: #263244; font-weight: var(--font-weight-medium); } .ui-detail-text--primary { color: var(--color-selected) !important; } .ui-detail-text--success { color: var(--color-success) !important; } .ui-detail-text--danger { color: var(--color-danger) !important; } .ui-detail-progress-stats { display: grid; gap: 14px; grid-template-columns: minmax(280px, 0.9fr) minmax(0, 1.4fr); } .ui-detail-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; } .ui-detail-progress-card strong { color: var(--color-selected); font-size: 42px; line-height: 1; } .ui-detail-progress-card small { color: #7b8494; } .ui-detail-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; } .ui-detail-stat-list > div { align-content: center; border-right: 1px solid #edf0f5; display: grid; gap: 10px; min-height: 138px; padding: 20px; } .ui-detail-stat-list > div:last-child { border-right: 0; } .ui-detail-stat-list strong { color: #18202f; font-size: 28px; line-height: 1; } .ui-progress-bar { background: var(--color-border-strong); border-radius: var(--radius-full); height: 8px; overflow: hidden; } .ui-progress-bar span { background: var(--rate-color, var(--color-selected)); display: block; height: 100%; } .ui-progress-bar--completed span { background: var(--color-success); } .ui-progress-bar--sending span { background: var(--color-selected); } .ui-progress-bar--terminated span { background: var(--color-danger); } .ui-rate-overview { align-items: center; background: #ffffff; border: 1px solid #d9e6ff; border-radius: var(--radius-md); display: grid; gap: var(--space-3); justify-items: center; min-height: 188px; padding: var(--space-6); } .ui-rate-overview strong { color: var(--rate-color, var(--color-success)); font-size: 48px; line-height: 1; } .ui-rate-overview__metrics { display: grid; gap: 12px; grid-template-columns: repeat(2, minmax(120px, 1fr)); width: min(420px, 100%); } .ui-rate-overview__metrics 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; } .ui-rate-overview__metrics b { color: #18202f; font-size: 18px; } .ui-rate-card { border: 1px solid #e7ebf2; border-radius: var(--radius-md); box-shadow: 0 1px 2px rgba(18, 18, 26, 0.04); display: grid; gap: var(--space-4); padding: 18px; } .ui-rate-card__header, .ui-rate-card p { align-items: center; display: flex; justify-content: space-between; } .ui-rate-card__header strong { color: var(--color-text-strong); } .ui-rate-card__header span { color: var(--rate-color, var(--color-success)); font-size: var(--font-size-xl); font-weight: var(--font-weight-bold); } .ui-rate-card p { color: var(--color-text-muted); font-size: var(--font-size-xs); margin: 0; } .ui-rate-tone-low { --rate-color: var(--color-danger); } .ui-rate-tone-medium { --rate-color: var(--color-warning); } .ui-rate-tone-high { --rate-color: var(--color-success); } .rate-text { color: var(--rate-color, var(--color-success)) !important; font-weight: var(--font-weight-semibold); } .ui-rate-overview.ui-rate-tone-low { background: linear-gradient(180deg, rgba(220, 38, 38, 0.09), transparent 58%), #ffffff; border-color: rgba(220, 38, 38, 0.28); } .ui-rate-overview.ui-rate-tone-medium { background: linear-gradient(180deg, rgba(217, 119, 6, 0.1), transparent 58%), #ffffff; border-color: rgba(217, 119, 6, 0.28); } .ui-rate-overview.ui-rate-tone-high { background: linear-gradient(180deg, rgba(22, 163, 74, 0.09), transparent 58%), #ffffff; border-color: rgba(22, 163, 74, 0.26); } .ui-chart { min-height: 220px; min-width: 0; width: 100%; } @media (max-width: 780px) { .ui-modal__panel { max-height: calc(100vh - 24px); width: calc(100vw - 24px); } .ui-modal__header, .ui-modal__footer, .ui-modal__body { padding: var(--space-4); } .ui-modal__footer { align-items: stretch; display: grid; } .ui-query-panel__grid, .ui-detail-info-grid, .ui-detail-progress-stats, .ui-detail-stat-list { grid-template-columns: 1fr; } .ui-pagination { align-items: stretch; display: grid; gap: var(--space-3); } }