2026-06-29 17:47:33 +08:00

507 lines
9.4 KiB
CSS

.root {
display: flex;
height: calc(100vh - var(--header-height) - var(--space-8) - var(--space-4));
height: calc(100dvh - var(--header-height) - var(--space-8) - var(--space-4));
min-height: 0;
flex-direction: column;
}
.contentPanel {
display: flex;
flex: 1;
flex-direction: column;
min-height: 0;
border: 1px solid var(--border);
border-radius: var(--radius-card);
background: var(--bg-card);
overflow: hidden;
}
.contentPanel :global(.data-state) {
flex: 1;
min-height: 0;
border: 0;
border-radius: 0;
background: transparent;
}
.contentPanel :global(.table-frame) {
min-height: 0;
border: 0;
border-radius: 0;
}
.contentPanel :global(.table-scroll) {
overflow: auto;
}
.contentPanel :global(.admin-row--head) {
position: sticky;
top: 0;
z-index: 1;
}
.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);
}
.toolbarLeft {
display: flex;
min-width: 0;
flex: 1;
align-items: center;
gap: var(--space-3);
}
.toolbarActions {
display: flex;
flex: 0 0 auto;
align-items: center;
gap: var(--space-2);
margin-left: auto;
}
.toolbarTextAction {
flex: 0 0 auto;
}
.filters {
display: flex;
min-width: 0;
flex: 1;
align-items: center;
flex-wrap: wrap;
gap: var(--space-3);
}
.search {
flex: 0 1 300px;
}
.statusSelect {
flex: 0 0 150px;
}
.filterFields {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: var(--space-3);
}
.filterFields :global(.MuiTextField-root) {
width: 170px;
}
.rowActions {
display: inline-flex;
align-items: center;
gap: var(--space-2);
}
.permissionGrid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: var(--space-2);
}
.permissionSwitch {
display: flex;
min-width: 0;
min-height: 40px;
align-items: center;
justify-content: space-between;
gap: var(--space-3);
padding: 0 var(--space-3);
border: 1px solid var(--border);
border-radius: var(--radius-control);
background: var(--bg-input);
color: var(--text-primary);
font-size: var(--admin-font-size);
font-weight: 650;
}
.permissionSwitch span {
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.permissionList {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 6px;
}
.permissionPill {
display: inline-flex;
min-height: 24px;
align-items: center;
gap: 5px;
padding: 0 8px;
border: 1px solid var(--success-border);
border-radius: var(--radius-pill);
background: var(--success-surface);
color: var(--success);
font-size: 12px;
font-weight: 720;
line-height: 1;
white-space: nowrap;
}
.permissionPill span {
color: inherit;
font-weight: 780;
}
.permissionPillOff {
border-color: var(--border);
background: var(--bg-input);
color: var(--text-tertiary);
}
.rateDrawerForm {
display: flex;
flex-direction: column;
gap: var(--space-4);
}
.ledgerDrawer.ledgerDrawer {
width: min(960px, calc(100vw - 32px));
}
.ledgerDrawerBody.ledgerDrawerBody {
display: flex;
overflow: hidden;
}
.rateTierHeader {
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--space-3);
font-weight: 760;
color: var(--text-primary);
}
.rateTierList {
display: flex;
flex-direction: column;
gap: var(--space-3);
}
.rateTierRow {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr)) auto auto;
gap: var(--space-3);
align-items: center;
padding: var(--space-3);
border: 1px solid var(--border);
border-radius: var(--radius-md);
background: var(--bg-card);
}
.rateTierSwitch {
display: flex;
justify-content: center;
}
.flagCell {
font-size: var(--admin-font-size);
}
.listBlock {
display: flex;
flex: 1;
flex-direction: column;
min-height: 0;
background: var(--bg-card);
}
.listBlock :global(.pagination-bar) {
margin: var(--space-3) var(--space-5) var(--space-4);
}
.inlineValue {
color: var(--text-primary);
font-weight: 650;
}
.hostCountButton {
display: inline-flex;
min-width: 44px;
min-height: 28px;
align-items: center;
justify-content: flex-start;
padding: 0;
border: 0;
background: transparent;
color: var(--primary);
cursor: pointer;
font: inherit;
font-weight: 760;
letter-spacing: 0;
}
.hostCountButton:hover,
.hostCountButton:focus-visible {
color: var(--primary-strong);
text-decoration: underline;
text-underline-offset: 3px;
}
.inlineAliasText {
color: var(--text-secondary);
font-weight: 650;
}
.inlineAliasButton {
display: inline-flex;
max-width: 100%;
min-height: 28px;
align-items: center;
padding: 0;
border: 0;
background: transparent;
color: var(--text-secondary);
cursor: pointer;
font: inherit;
font-weight: 650;
overflow: hidden;
text-align: left;
text-overflow: ellipsis;
white-space: nowrap;
}
.inlineAliasButton:hover {
color: var(--primary);
}
.inlineAliasInput {
width: min(180px, 100%);
min-height: 32px;
padding: 0 var(--space-2);
border: 1px solid var(--primary);
border-radius: var(--radius-control);
outline: 0;
background: var(--bg-card);
color: var(--text-primary);
font: inherit;
font-weight: 650;
}
.sellerIdentity {
display: inline-flex;
min-width: 0;
align-items: center;
gap: var(--space-3);
}
.sellerAvatar {
display: inline-flex;
width: 32px;
height: 32px;
flex: 0 0 auto;
align-items: center;
justify-content: center;
border: 1px solid var(--border);
border-radius: 50%;
background: var(--bg-input);
color: var(--text-secondary);
font-weight: 700;
object-fit: cover;
}
.sellerText {
display: inline-flex;
min-width: 0;
flex-direction: column;
gap: 2px;
}
.sellerName {
overflow: hidden;
color: var(--text-primary);
font-weight: 700;
text-overflow: ellipsis;
white-space: nowrap;
}
.sellerMeta {
overflow: hidden;
color: var(--text-secondary);
font-size: var(--admin-font-size);
text-overflow: ellipsis;
white-space: nowrap;
}
.contactButton {
max-width: 100%;
padding: 0;
border: 0;
background: transparent;
color: var(--primary);
cursor: pointer;
font: inherit;
font-weight: 700;
overflow: hidden;
text-align: left;
text-overflow: ellipsis;
white-space: nowrap;
}
.contactButton:hover {
color: var(--primary-strong);
text-decoration: underline;
}
.salaryWalletButton {
display: inline-flex;
max-width: 100%;
min-height: 34px;
flex-direction: column;
align-items: flex-start;
justify-content: center;
padding: 0;
border: 0;
background: transparent;
color: var(--primary);
cursor: pointer;
font: inherit;
overflow: hidden;
text-align: left;
}
.salaryWalletButton:hover .salaryWalletAmount {
color: var(--primary-strong);
text-decoration: underline;
}
.salaryWalletAmount {
max-width: 100%;
overflow: hidden;
color: var(--primary);
font-weight: 780;
text-overflow: ellipsis;
white-space: nowrap;
}
.salaryWalletDrawer.salaryWalletDrawer {
width: min(980px, calc(100vw - 32px));
}
.salaryWalletDrawerBody.salaryWalletDrawerBody {
display: flex;
flex-direction: column;
gap: var(--space-3);
overflow: hidden;
}
.salaryWalletDrawerBody :global(.data-state) {
flex: 1;
min-height: 0;
}
.salaryWalletSummary {
display: inline-flex;
width: fit-content;
align-items: center;
gap: var(--space-2);
padding: var(--space-2) var(--space-3);
border: 1px solid var(--border);
border-radius: var(--radius-control);
background: var(--bg-input);
color: var(--text-secondary);
font-size: var(--admin-font-size);
font-weight: 700;
}
.salaryWalletIncome {
color: var(--success);
font-weight: 780;
}
.salaryWalletExpense {
color: var(--danger);
font-weight: 780;
}
.contactPlaceholder {
color: var(--text-tertiary);
}
.childBdList {
display: grid;
gap: var(--space-3);
}
.childBdItem {
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--space-3);
padding: var(--space-3);
border: 1px solid var(--border);
border-radius: var(--radius-card);
background: var(--bg-input);
}
.childBdStatus {
flex: 0 0 auto;
}
.lookupPanel {
display: grid;
gap: var(--space-2);
min-height: 44px;
padding: var(--space-3);
border: 1px solid var(--border);
border-radius: var(--radius-control);
background: var(--bg-input);
color: var(--text-secondary);
font-size: var(--admin-font-size);
}
.positive {
color: var(--success);
}
.negative {
color: var(--danger);
}
@media (max-width: 760px) {
.toolbar,
.toolbarLeft,
.filters,
.filterFields {
align-items: stretch;
flex-direction: column;
}
.toolbarActions {
align-self: flex-end;
}
.search {
flex: 1 1 auto;
width: 100%;
}
.statusSelect {
flex: 1 1 auto;
width: 100%;
}
.filterFields :global(.MuiTextField-root) {
width: 100%;
}
}