.page-head { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-4); margin-bottom: var(--space-5); } .page-title { margin: 0; font-size: var(--admin-font-size); font-weight: 700; } .page-meta { margin: var(--space-2) 0 0; color: var(--text-tertiary); font-size: var(--admin-font-size); } .page-actions { display: flex; align-items: center; gap: var(--space-3); } .button { display: inline-flex; height: var(--control-height); min-height: var(--control-height); align-items: center; justify-content: center; gap: var(--space-2); padding: 0 var(--space-3); border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--bg-card); color: var(--text-secondary); cursor: pointer; font-size: var(--admin-font-size); line-height: var(--admin-line-height); white-space: nowrap; transition: background var(--motion-fast) var(--ease-standard), border-color var(--motion-fast) var(--ease-standard), box-shadow var(--motion-fast) var(--ease-standard), color var(--motion-fast) var(--ease-standard), transform var(--motion-base) var(--ease-emphasized); } .button:hover { border-color: var(--primary-border-strong); background: var(--bg-hover); box-shadow: var(--shadow-soft); color: var(--text-primary); transform: translateY(-1px); } .button:active { box-shadow: none; transform: translateY(0) scale(0.985); } .button:disabled, .icon-button:disabled { cursor: not-allowed; opacity: 0.42; } .button--primary { border-color: var(--primary); background: var(--primary); color: var(--active-contrast); } .button--success { color: var(--success); } .button--danger { color: var(--danger); } .button.MuiButton-root { height: var(--control-height); min-height: var(--control-height); padding: 0 var(--space-3); border-radius: var(--radius-control); font-size: var(--admin-font-size); line-height: var(--admin-line-height); text-transform: none; } .kpi-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: var(--space-4); } .card { border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--bg-card); } .MuiTextField-root, .MuiFormControl-root { --admin-control-height: var(--control-height); --admin-control-font-size: var(--admin-font-size); --admin-control-line-height: var(--admin-line-height); } .region-select.MuiTextField-root, .region-select.MuiFormControl-root { width: 180px; min-width: 180px; flex: 0 0 180px; } .region-filter-control { display: inline-flex; min-width: 0; flex: 0 0 auto; align-items: center; gap: var(--space-1); } .region-filter-control .region-select.MuiTextField-root, .region-filter-control .region-select.MuiFormControl-root { flex: 0 0 180px; } .MuiInputBase-root.MuiOutlinedInput-root:not(.MuiInputBase-multiline) { height: var(--control-height); min-height: var(--control-height); } .MuiInputBase-root.MuiOutlinedInput-root { background: var(--bg-input); backdrop-filter: var(--glass-blur); -webkit-backdrop-filter: var(--glass-blur); } .MuiInputBase-root.MuiOutlinedInput-root:not(.MuiInputBase-multiline) .MuiInputBase-input { box-sizing: border-box; height: var(--control-height); padding-top: 0; padding-bottom: 0; font-size: var(--admin-font-size); line-height: var(--admin-line-height); } .MuiInputBase-root .MuiInputBase-input::placeholder { font-size: var(--admin-font-size); line-height: var(--admin-line-height); } .MuiInputBase-input:focus { outline: 0; } .MuiTextField-root .MuiOutlinedInput-root, .MuiFormControl-root .MuiOutlinedInput-root { border-radius: var(--radius-control); background: var(--bg-input); backdrop-filter: var(--glass-blur); color: var(--text-primary); font-size: var(--admin-control-font-size); line-height: var(--admin-control-line-height); -webkit-backdrop-filter: var(--glass-blur); } .MuiTextField-root .MuiOutlinedInput-root:not(.MuiInputBase-multiline), .MuiFormControl-root .MuiOutlinedInput-root:not(.MuiInputBase-multiline) { height: var(--admin-control-height); min-height: var(--admin-control-height); } .MuiTextField-root .MuiOutlinedInput-notchedOutline, .MuiFormControl-root .MuiOutlinedInput-notchedOutline { border-color: var(--border); } .MuiTextField-root .MuiOutlinedInput-root:hover .MuiOutlinedInput-notchedOutline, .MuiFormControl-root .MuiOutlinedInput-root:hover .MuiOutlinedInput-notchedOutline { border-color: var(--primary-border); } .MuiTextField-root .MuiOutlinedInput-root.Mui-focused .MuiOutlinedInput-notchedOutline, .MuiFormControl-root .MuiOutlinedInput-root.Mui-focused .MuiOutlinedInput-notchedOutline { border-color: var(--primary); border-width: 1px; } .MuiInputBase-root.Mui-focused { box-shadow: none; } .MuiTextField-root .MuiOutlinedInput-input, .MuiFormControl-root .MuiOutlinedInput-input { box-sizing: border-box; height: var(--admin-control-height); padding: 0 var(--space-3); color: var(--text-primary); font-size: var(--admin-control-font-size); line-height: var(--admin-control-line-height); } .MuiTextField-root .MuiOutlinedInput-input::placeholder, .MuiFormControl-root .MuiOutlinedInput-input::placeholder { color: var(--text-tertiary); font-size: var(--admin-control-font-size); line-height: var(--admin-control-line-height); opacity: 1; } .MuiTextField-root .MuiInputLabel-outlined, .MuiFormControl-root .MuiInputLabel-outlined { color: var(--text-tertiary); font-size: var(--admin-control-font-size); line-height: var(--admin-control-line-height); transform: translate(14px, 8px) scale(1); } .MuiTextField-root .MuiInputLabel-outlined.MuiInputLabel-shrink, .MuiFormControl-root .MuiInputLabel-outlined.MuiInputLabel-shrink { transform: translate(14px, -8px) scale(0.75); } .MuiTextField-root .MuiFormLabel-root.Mui-focused, .MuiFormControl-root .MuiFormLabel-root.Mui-focused { color: var(--primary); } .MuiTextField-root .MuiSelect-select, .MuiFormControl-root .MuiSelect-select { display: flex; box-sizing: border-box; height: var(--admin-control-height); min-height: var(--admin-control-height) !important; align-items: center; padding: 0 var(--space-8) 0 var(--space-3) !important; font-size: var(--admin-control-font-size); line-height: var(--admin-control-line-height); } .MuiTextField-root .MuiSelect-icon, .MuiFormControl-root .MuiSelect-icon { top: 50%; color: var(--text-tertiary); transform: translateY(-50%); } .MuiAutocomplete-root { --admin-autocomplete-input-height: 24px; } .MuiAutocomplete-root .MuiOutlinedInput-root.MuiAutocomplete-inputRoot:not(.MuiInputBase-multiline) { height: auto; min-height: var(--control-height); align-items: center; flex-wrap: wrap; gap: var(--space-1); padding: 4px 40px 4px var(--space-2); } .MuiAutocomplete-root .MuiOutlinedInput-root.MuiAutocomplete-inputRoot .MuiAutocomplete-input { flex: 1 0 12px; width: auto !important; min-width: 12px; height: var(--admin-autocomplete-input-height); padding: 0 !important; line-height: var(--admin-autocomplete-input-height); } .MuiAutocomplete-root .MuiOutlinedInput-root.MuiAutocomplete-inputRoot .MuiAutocomplete-endAdornment { top: 50%; right: var(--space-2); transform: translateY(-50%); } .MuiAutocomplete-root .MuiAutocomplete-tag { --admin-multiselect-tag-bg: var(--admin-multiselect-tag-1); display: inline-flex; flex: 0 0 auto; max-width: calc(100% - var(--space-2)); height: var(--admin-tag-height); align-items: center; margin: 0; border: 1px solid var(--admin-multiselect-tag-border); border-radius: var(--admin-tag-radius); background: var(--admin-multiselect-tag-bg); box-shadow: var(--admin-multiselect-tag-shadow); color: var(--admin-multiselect-tag-color); font-size: var(--admin-tag-font-size); font-weight: var(--admin-tag-font-weight); line-height: 1; white-space: nowrap; animation: row-enter var(--motion-base) var(--ease-emphasized) both; transition: box-shadow var(--motion-fast) var(--ease-standard), filter var(--motion-fast) var(--ease-standard), transform var(--motion-base) var(--ease-emphasized); } .MuiAutocomplete-root .MuiAutocomplete-tag:nth-of-type(6n + 2) { --admin-multiselect-tag-bg: var(--admin-multiselect-tag-2); } .MuiAutocomplete-root .MuiAutocomplete-tag:nth-of-type(6n + 3) { --admin-multiselect-tag-bg: var(--admin-multiselect-tag-3); } .MuiAutocomplete-root .MuiAutocomplete-tag:nth-of-type(6n + 4) { --admin-multiselect-tag-bg: var(--admin-multiselect-tag-4); } .MuiAutocomplete-root .MuiAutocomplete-tag:nth-of-type(6n + 5) { --admin-multiselect-tag-bg: var(--admin-multiselect-tag-5); } .MuiAutocomplete-root .MuiAutocomplete-tag:nth-of-type(6n) { --admin-multiselect-tag-bg: var(--admin-multiselect-tag-6); } .MuiAutocomplete-root .MuiAutocomplete-tag:hover { box-shadow: var(--admin-multiselect-tag-shadow-hover); filter: saturate(1.06) brightness(1.03); transform: translateY(-1px); } .MuiAutocomplete-root .MuiAutocomplete-tag:active { transform: translateY(0) scale(0.98); } .MuiAutocomplete-root .MuiAutocomplete-tag .MuiChip-label { overflow: hidden; padding: 0 var(--admin-tag-padding-x); text-overflow: ellipsis; white-space: nowrap; } .MuiAutocomplete-root .MuiAutocomplete-tag .MuiChip-deleteIcon { width: 18px; height: 18px; margin-right: var(--space-1); border-radius: var(--radius-pill); color: rgba(255, 255, 255, 0.9); transition: background var(--motion-fast) var(--ease-standard), color var(--motion-fast) var(--ease-standard), transform var(--motion-fast) var(--ease-emphasized); } .MuiAutocomplete-root .MuiAutocomplete-tag .MuiChip-deleteIcon:hover { background: rgba(255, 255, 255, 0.16); color: #ffffff; transform: scale(1.08); } .admin-tag-list { display: flex; min-width: 0; align-items: center; flex-wrap: wrap; gap: var(--space-2); } .admin-tag { display: inline-flex; flex: 0 0 auto; max-width: 100%; height: var(--admin-tag-height); align-items: center; gap: var(--admin-tag-gap); overflow: hidden; border: 1px solid var(--admin-tag-border); border-radius: var(--admin-tag-radius); background: var(--admin-tag-bg); color: var(--admin-tag-color); font-size: var(--admin-tag-font-size); font-weight: var(--admin-tag-font-weight); line-height: 1; padding: 0 var(--admin-tag-padding-x); text-overflow: ellipsis; white-space: nowrap; } .MuiAutocomplete-popper .MuiAutocomplete-paper { overflow: hidden; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--bg-flyout); box-shadow: var(--shadow-panel); transform-origin: top center; animation: autocomplete-pop-enter var(--motion-base) var(--ease-emphasized) both; } .MuiAutocomplete-popper[data-popper-placement*="top"] .MuiAutocomplete-paper { transform-origin: bottom center; animation-name: autocomplete-pop-enter-up; } .MuiAutocomplete-popper .MuiAutocomplete-listbox { max-height: 280px; padding: var(--space-1); } .MuiAutocomplete-popper .MuiAutocomplete-option { min-height: var(--control-height); border-radius: var(--radius-control); color: var(--text-secondary); font-size: var(--admin-font-size); transition: background var(--motion-fast) var(--ease-standard), color var(--motion-fast) var(--ease-standard), transform var(--motion-fast) var(--ease-emphasized); } .MuiAutocomplete-popper .MuiAutocomplete-option.Mui-focused, .MuiAutocomplete-popper .MuiAutocomplete-option[aria-selected="true"] { background: var(--primary-hover); color: var(--text-primary); transform: translateX(2px); } .MuiTextField-root .MuiOutlinedInput-root.MuiInputBase-multiline, .MuiFormControl-root .MuiOutlinedInput-root.MuiInputBase-multiline { align-items: flex-start; padding: var(--space-2) var(--space-3); } .MuiTextField-root .MuiOutlinedInput-root.MuiInputBase-multiline .MuiOutlinedInput-input, .MuiFormControl-root .MuiOutlinedInput-root.MuiInputBase-multiline .MuiOutlinedInput-input { height: auto; min-height: calc(var(--admin-line-height) * 2); padding: 0; line-height: var(--admin-control-line-height); } .MuiFormHelperText-root { margin: var(--space-1) 0 0; color: var(--text-tertiary); font-size: var(--admin-font-size); line-height: var(--admin-line-height); } .MuiMenuItem-root { min-height: var(--control-height); font-size: var(--admin-font-size); } @media (max-width: 760px) { .region-select.MuiTextField-root, .region-select.MuiFormControl-root { width: 100%; min-width: 0; flex: 1 1 100%; } .region-filter-control { width: 100%; flex: 1 1 100%; } .region-filter-control .region-select.MuiTextField-root, .region-filter-control .region-select.MuiFormControl-root { width: auto; min-width: 0; flex: 1 1 auto; } } .kpi-card { min-height: 132px; padding: var(--space-5); animation: panel-enter var(--motion-slow) var(--ease-emphasized) both; transition: border-color var(--motion-base) var(--ease-standard), box-shadow var(--motion-base) var(--ease-standard), transform var(--motion-base) var(--ease-emphasized); } .kpi-grid .kpi-card:nth-child(2) { animation-delay: 40ms; } .kpi-grid .kpi-card:nth-child(3) { animation-delay: 80ms; } .kpi-grid .kpi-card:nth-child(4) { animation-delay: 120ms; } .kpi-grid .kpi-card:nth-child(5) { animation-delay: 160ms; } .kpi-card:hover, .chart-card:hover, .table-card:hover, .server-rail:hover, .inline-inspector:hover { border-color: var(--primary-border-strong); box-shadow: var(--shadow-panel); transform: translateY(-2px); } .kpi-card__top { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); } .kpi-card__label, .card-title { color: var(--text-secondary); font-size: var(--admin-font-size); font-weight: 650; } .metric-icon { display: grid; width: var(--control-height); height: var(--control-height); place-items: center; border-radius: var(--radius-control); background: var(--primary-surface); color: var(--primary); transition: background var(--motion-base) var(--ease-standard), transform var(--motion-base) var(--ease-emphasized); } .kpi-card:hover .metric-icon { transform: scale(1.08) rotate(-4deg); } .metric-icon--success { background: var(--success-surface); color: var(--success); } .metric-icon--warning { background: var(--warning-surface); color: var(--warning); } .metric-icon--info { background: var(--info-surface); color: var(--info); } .kpi-value { margin-top: var(--space-5); color: var(--text-primary); font-size: var(--admin-font-size); font-weight: 760; line-height: 1; } .kpi-value span { margin-left: var(--space-1); font-size: var(--admin-font-size); font-weight: 600; } .kpi-sub { margin-top: var(--space-3); color: var(--text-tertiary); font-size: var(--admin-font-size); } .status-ok { color: var(--success); } .status-warn { color: var(--warning); } .status-danger { color: var(--danger); } .status-badge { display: inline-flex; box-sizing: border-box; flex: 0 0 auto; max-width: 100%; height: var(--admin-tag-height); align-items: center; gap: var(--admin-tag-gap); padding: 0 var(--admin-tag-padding-x); border: 1px solid var(--admin-tag-border) !important; border-radius: var(--admin-tag-radius) !important; background: var(--neutral-surface) !important; color: var(--text-secondary) !important; font-size: var(--admin-tag-font-size) !important; font-weight: var(--admin-tag-font-weight) !important; line-height: 1; white-space: nowrap; word-break: keep-all; } .status-point { display: block; flex: 0 0 var(--space-2); width: var(--space-2); height: var(--space-2); border-radius: var(--radius-pill); background: var(--stopped); } .status-badge.MuiChip-root { gap: 0; padding: 0; } .status-badge.MuiChip-root .MuiChip-icon { margin-left: var(--admin-tag-padding-x); margin-right: 0; } .status-badge.MuiChip-root .MuiChip-label { overflow: hidden; padding-left: var(--admin-tag-gap); padding-right: var(--admin-tag-padding-x); line-height: 1; text-overflow: ellipsis; white-space: nowrap; } .status-badge--running, .status-badge--succeeded { border-color: var(--success-border) !important; background: var(--success-surface) !important; color: var(--success) !important; } .status-badge--running .status-point, .status-badge--succeeded .status-point { background: var(--success); box-shadow: 0 0 var(--space-3) var(--success-glow); } .status-badge--warning { border-color: var(--warning-border) !important; background: var(--warning-surface) !important; color: var(--warning) !important; } .status-badge--warning .status-point { background: var(--warning); box-shadow: 0 0 var(--space-3) var(--warning-glow); } .status-badge--error, .status-badge--danger { border-color: var(--danger-border) !important; background: var(--danger-surface) !important; color: var(--danger) !important; } .status-badge--error .status-point, .status-badge--danger .status-point { background: var(--danger); box-shadow: 0 0 var(--space-3) var(--danger-glow); } .status-badge--stopped { background: var(--neutral-surface) !important; color: var(--stopped) !important; } .panel-grid { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(340px, 0.65fr); gap: var(--space-4); margin-top: var(--space-4); } .table-toolbar { display: flex; align-items: center; justify-content: space-between; gap: var(--space-4); padding: var(--space-4) var(--space-5); border-bottom: 1px solid var(--border); } .filter-row { display: flex; align-items: center; gap: var(--space-2); } .filter-chip { height: var(--status-height); padding: 0 var(--space-3); border: 1px solid var(--border); border-radius: var(--radius-pill); background: transparent; color: var(--text-tertiary); cursor: pointer; font-size: var(--admin-font-size); transition: background var(--motion-fast) var(--ease-standard), border-color var(--motion-fast) var(--ease-standard), box-shadow var(--motion-fast) var(--ease-standard), color var(--motion-fast) var(--ease-standard), transform var(--motion-base) var(--ease-emphasized); } .filter-chip:hover { box-shadow: var(--shadow-soft); transform: translateY(-1px); } .filter-chip--active { border-color: var(--primary-border-strong); background: var(--primary-surface); color: var(--text-primary); } .muted { color: var(--text-tertiary); } .cell-stack { display: grid; min-width: 0; gap: var(--space-1); } .cell-stack > * { min-width: 0; overflow-wrap: anywhere; } .row-actions { display: flex; align-items: center; gap: var(--space-2); } .empty-state { padding: var(--space-8) var(--space-5); color: var(--text-tertiary); text-align: center; } .login-page { display: grid; min-height: 100vh; place-items: center; padding: var(--space-6); background: var(--login-gradient), var(--bg-page); } .login-panel { display: grid; width: min(420px, 100%); gap: var(--space-6); padding: var(--space-7); border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--bg-card); box-shadow: var(--shadow-panel); animation: panel-enter var(--motion-slow) var(--ease-emphasized) both; } .login-brand { display: flex; align-items: center; gap: var(--space-3); } .login-brand h1 { margin: 0; color: var(--text-primary); font-size: var(--admin-font-size); } .login-brand p { margin: var(--space-1) 0 0; color: var(--text-tertiary); font-size: var(--admin-font-size); } .login-form, .form-drawer { display: grid; gap: var(--space-4); } .form-drawer { width: min(420px, 100vw); padding: var(--space-6); } .form-drawer--wide { width: min(560px, 100vw); } .form-drawer h2 { margin: 0 0 var(--space-1); color: var(--text-primary); font-size: var(--admin-font-size); } .form-drawer__section { display: grid; gap: var(--space-3); } .form-drawer__section + .form-drawer__section { padding-top: var(--space-4); border-top: 1px solid var(--border-soft); } .form-drawer__section-title { color: var(--text-secondary); font-size: 13px; font-weight: 700; line-height: 18px; } .form-drawer__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: var(--space-3); } .form-drawer__grid > .MuiTextField-root, .form-drawer__grid > .MuiFormControl-root, .form-drawer__grid > .MuiAutocomplete-root, .form-drawer__grid > .MuiFormControlLabel-root { width: 100%; } .form-drawer__section > .MuiFormControlLabel-root, .form-drawer__grid > .MuiFormControlLabel-root { min-height: var(--control-height); margin: 0; } .form-drawer__actions { display: flex; justify-content: flex-end; gap: var(--space-3); padding-top: var(--space-2); } .side-drawer { display: flex; width: min(420px, 100vw); min-height: 100%; flex-direction: column; gap: var(--space-4); padding: var(--space-6); background: var(--bg-card); } .side-drawer--wide { width: min(560px, 100vw); } .side-drawer__header { display: flex; min-height: var(--control-height); align-items: center; justify-content: space-between; gap: var(--space-3); } .side-drawer__title { margin: 0; color: var(--text-primary); font-size: var(--admin-font-size); font-weight: 800; } .side-drawer__body { display: grid; gap: var(--space-4); } .side-drawer__actions { display: flex; justify-content: flex-end; gap: var(--space-3); margin-top: auto; padding-top: var(--space-2); } .form-section-title { color: var(--text-secondary); font-size: var(--admin-font-size); font-weight: 700; } .permission-menu-list { display: grid; gap: var(--space-3); } .permission-menu-section { display: grid; gap: var(--space-2); padding: var(--space-3); border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--bg-card); } .permission-menu-header { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); min-height: var(--control-height); } .permission-menu-title { color: var(--text-primary); font-size: var(--admin-font-size); font-weight: 700; } .permission-menu-actions { display: inline-flex; align-items: center; gap: var(--space-3); } .permission-menu-toggle { display: inline-flex; align-items: center; gap: var(--space-2); color: var(--text-secondary); font-size: var(--admin-font-size); font-weight: 600; white-space: nowrap; } .permission-menu-toggle .MuiCheckbox-root, .permission-check .MuiCheckbox-root { padding: 0; } .permission-menu-count { color: var(--text-tertiary); font-size: var(--admin-font-size); white-space: nowrap; } .permission-section { display: grid; gap: var(--space-3); } .permission-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-2); } .permission-grid--compact { gap: var(--space-2); } .permission-check { display: flex; align-items: center; gap: var(--space-2); min-height: var(--control-height); padding: 0 var(--space-3); border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--bg-card-strong); color: var(--text-secondary); font-size: var(--admin-font-size); } .batch-actions { display: flex; gap: var(--space-2); } .pagination-bar { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); min-height: 32px; margin-top: var(--space-2); color: var(--text-tertiary); font-size: 12px; } .pagination-bar__meta { display: flex; min-width: 0; align-items: center; gap: var(--space-2); } .pagination-bar__page-size-wrap { display: inline-flex; align-items: center; gap: var(--space-1); } .pagination-bar__page-size { width: 72px; } .pagination-bar__page-size .MuiInputBase-root { height: 30px; border-radius: var(--radius-control); font-size: 12px; } .pagination-bar__page-size .MuiSelect-select.MuiInputBase-input { padding-top: 4px; padding-bottom: 4px; } .pagination-bar__actions { display: flex; align-items: center; gap: var(--space-1); } .data-state { display: grid; min-height: 180px; place-items: center; gap: var(--space-3); border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--bg-card); color: var(--text-tertiary); } .data-state--loading { display: flex; align-items: stretch; justify-content: stretch; padding: var(--space-4); } .data-state__skeleton { display: grid; width: 100%; min-height: 360px; grid-template-rows: auto minmax(0, 1fr); gap: var(--space-4); } .data-state__skeleton-toolbar { display: flex; min-width: 0; align-items: center; justify-content: space-between; gap: var(--space-4); } .data-state__skeleton-filters, .data-state__skeleton-actions { display: flex; min-width: 0; align-items: center; flex-wrap: wrap; gap: var(--space-3); } .data-state__skeleton-actions { flex: 0 0 auto; } .data-state__skeleton-filter { width: 150px; height: var(--control-height); } .data-state__skeleton-reset, .data-state__skeleton-action { width: 84px; height: var(--control-height); } .data-state__skeleton-table { display: grid; min-height: 0; overflow: hidden; border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--bg-card); } .data-state__skeleton-head { height: var(--table-head-height); border-radius: 0; background-color: var(--bg-card-strong); } .data-state__skeleton-row { display: grid; min-height: var(--table-row-height); align-items: center; grid-template-columns: minmax(180px, 1.35fr) minmax(100px, 0.7fr) minmax(140px, 0.95fr) minmax(90px, 0.55fr) minmax(54px, 0.35fr); gap: var(--space-4); padding: 0 var(--space-4); border-top: 1px solid var(--row-border); } .data-state__skeleton-cell { width: min(100%, 150px); height: 18px; } .data-state__skeleton-cell--main { width: min(100%, 220px); } .data-state__skeleton-cell--short { width: 72px; } .data-state__skeleton-cell--action { width: 34px; height: 28px; } .data-state__title { color: var(--text-secondary); font-size: var(--admin-font-size); font-weight: 650; } .admin-table { --admin-table-cell-x: var(--space-3); display: flex; flex-direction: column; width: max(100%, var(--admin-table-min-width, 900px)); min-height: 100%; min-width: max(100%, var(--admin-table-min-width, 900px)); } .admin-row { display: grid; flex: 0 0 auto; align-items: center; grid-template-columns: var(--admin-table-columns); min-height: var(--table-row-height); padding: 0; border-bottom: 1px solid var(--row-border); background: var(--bg-card); color: var(--text-secondary); column-gap: 0; font-size: var(--admin-font-size); animation: row-enter var(--motion-slow) var(--ease-emphasized) both; } .admin-row[role="button"] { cursor: pointer; } .admin-row--head { min-height: var(--table-head-height); background: var(--bg-card-strong); color: var(--text-tertiary); font-size: var(--admin-font-size); font-weight: 650; } .admin-row--load-more { min-height: 36px; color: var(--text-tertiary); font-size: 12px; } .admin-row--load-more-done { min-height: 1px; } .admin-cell--load-more { grid-column: 1 / -1; text-align: center; } .admin-row--load-more-sentinel { min-height: 1px; } .admin-cell { box-sizing: border-box; min-width: 0; padding: 0 var(--admin-table-cell-x); overflow: hidden; overflow-wrap: anywhere; } .admin-cell:first-child { padding-left: var(--admin-table-cell-x); } .admin-cell:last-child { padding-right: var(--admin-table-cell-x); } .admin-cell--head { position: relative; display: flex; min-height: var(--table-head-height); align-items: center; padding-right: calc(var(--admin-table-cell-x) + 10px); } .admin-cell--head:last-child { padding-right: calc(var(--admin-table-cell-x) + 10px); } .admin-cell__head-content { display: flex; width: 100%; min-width: 0; align-items: center; gap: var(--space-2); } .admin-cell__head-label { flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .admin-cell__head-filter { color: var(--primary); font-weight: 700; } .admin-cell__head-trigger { display: inline-flex; flex: 0 1 auto; max-width: 100%; min-width: 0; align-items: center; gap: var(--space-1); padding: 0; border: 0; background: transparent; color: inherit; cursor: pointer; font: inherit; font-weight: inherit; } .admin-cell__head-trigger:hover, .admin-cell__head-trigger--active { color: var(--text-primary); } .admin-cell__head-icon { flex: 0 0 auto; color: var(--text-tertiary); font-size: 16px; } .admin-cell__head-trigger--active .admin-cell__head-icon { color: var(--primary); } .admin-table-filter-reset-wrap { display: inline-flex; flex: 0 0 auto; margin-left: auto; } .admin-cell--fixed-left, .admin-cell--fixed-right { position: sticky; z-index: 2; display: flex; min-height: var(--table-row-height); align-items: center; background: inherit; } .admin-cell--fixed-left { left: 0; box-shadow: 10px 0 18px -18px rgb(30 41 59 / 0.4); } .admin-cell--fixed-right { right: 0; box-shadow: -10px 0 18px -18px rgb(30 41 59 / 0.4); } .admin-row--head .admin-cell--fixed-left, .admin-row--head .admin-cell--fixed-right { z-index: 4; min-height: var(--table-head-height); background: inherit; } .admin-column-resizer { position: absolute; top: 9px; right: 0; bottom: 9px; width: 10px; padding: 0; border: 0; background: transparent; cursor: col-resize; touch-action: none; } .admin-column-resizer::after { position: absolute; top: 0; right: 4px; bottom: 0; width: 1px; border-radius: var(--radius-pill); background: transparent; content: ""; transition: background var(--motion-fast) var(--ease-standard), box-shadow var(--motion-fast) var(--ease-standard); } .admin-column-resizer:hover::after, .admin-cell--resizing .admin-column-resizer::after { background: var(--primary); box-shadow: 0 0 0 1px var(--primary-surface); } .admin-table--resizing { cursor: col-resize; user-select: none; } .admin-table-filter-popover .MuiPopover-paper { width: 240px; overflow: hidden; border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--bg-flyout); box-shadow: var(--shadow-panel); } .admin-table-filter { display: grid; gap: var(--space-2); padding: var(--space-2); } .admin-table-filter__search.MuiTextField-root { width: 100%; } .admin-table-filter__options { max-height: 280px; overflow: auto; } .admin-table-filter__actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-2); } .admin-table-filter__options .MuiMenuItem-root { min-height: 34px; border-radius: var(--radius-control); color: var(--text-secondary); } .admin-table-filter__options .MuiMenuItem-root.Mui-selected { background: var(--primary-hover); color: var(--text-primary); } .admin-table-filter__empty { padding: var(--space-4) var(--space-2); color: var(--text-tertiary); font-size: var(--admin-font-size); text-align: center; } .admin-table .empty-state--table { flex: 1; } .table-frame { display: flex; flex: 1; min-height: 0; flex-direction: column; background: var(--bg-card); } .table-frame .table-scroll { flex: 1; min-height: 0; overflow: auto; } .table-frame .admin-row--head { position: sticky; top: 0; z-index: 1; } .content-panel, .table-frame, .table-card { overflow: hidden; border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--bg-card); } .content-panel { display: flex; flex: 1; flex-direction: column; min-height: 520px; } .empty-state--table { min-height: 340px; align-content: center; } .empty-state__title { color: var(--text-secondary); font-weight: 650; } .empty-state__action { display: flex; justify-content: center; }