html,
body,
#app {
height: 100%;
margin: 0;
min-height: 0;
overflow: hidden;
background: #fff;
color: #1f1f1f;
font-family: Arial, sans-serif;
}
.plugin-shell {
display: flex;
box-sizing: border-box;
height: 100%;
min-height: 0;
flex-direction: column;
}
.plugin-header {
flex: 0 0 auto;
padding: 4px 12px;
border-bottom: 1px solid #f0f0f0;
background: #fff;
}
.status-line {
display: flex;
width: 100%;
min-width: 0;
min-height: 28px;
align-items: center;
justify-content: space-between;
}
.connection-status {
margin: 0;
white-space: nowrap;
}
.plugin-version {
color: rgb(0 0 0 / 45%);
white-space: nowrap;
}
.status-actions {
display: flex;
min-width: 0;
align-items: center;
gap: 4px;
}
.plugin-scroll-region {
min-height: 0;
flex: 1 1 auto;
padding: 12px 0;
overflow-x: hidden;
overflow-y: auto;
}
.field-list {
width: 100%;
padding-inline: 0;
margin: 0;
}
.field-list-compact {
margin: 0;
}
.field-toolbar {
display: flex;
min-width: 0;
flex: 0 0 auto;
align-items: center;
gap: 8px;
padding: 8px 12px;
border-bottom: 1px solid #f0f0f0;
background: #fff;
}
.field-filter {
min-width: 0;
flex: 1 1 auto;
margin-bottom: 0;
}
.field-toolbar > .ant-btn,
.field-toolbar > .ant-tooltip-disabled-compatible-wrapper {
flex: 0 0 auto;
}
.field-row {
box-sizing: border-box;
width: 100%;
padding: 8px 12px;
margin: 0;
transition: background 120ms ease;
}
.field-row:hover {
background: #f5f9ff;
}
.field-row.field-row-focused {
background: #e8f3ff;
}
.field-label {
display: flex;
min-height: 28px;
align-items: center;
justify-content: space-between;
gap: 4px;
}
.field-row label {
display: flex;
min-width: 0;
align-items: center;
flex-wrap: wrap;
gap: 4px;
font-size: 13px;
font-weight: 500;
overflow-wrap: anywhere;
}
.field-label .ant-btn {
flex: 0 0 28px;
color: #d9d9d9;
transition: color 120ms ease;
}
.field-row:hover .field-label .ant-btn {
color: #1f1f1f;
}
.field-row .ant-select,
.field-row .ant-picker {
width: 100%;
}
.required-mark,
.field-error,
.directory-problem,
.status-problem {
color: #d4380d;
}
.field-error {
margin-top: 4px;
font-size: 12px;
}
.field-conflict {
display: grid;
gap: 6px;
margin-top: 8px;
padding: 8px;
border-left: 2px solid #d4380d;
background: #fff7e6;
font-size: 12px;
}
.field-conflict-value {
display: grid;
grid-template-columns: 42px minmax(0, 1fr);
gap: 6px;
}
.field-conflict span,
.field-conflict strong {
overflow-wrap: anywhere;
}
.field-conflict span {
color: #8c8c8c;
}
.field-conflict .ant-space {
flex-wrap: wrap;
justify-content: flex-end;
}
.conflict-summary {
display: grid;
gap: 2px;
margin-top: 8px;
padding: 8px 0;
border-block: 1px solid #ffccc7;
}
.conflict-summary-title {
display: flex;
min-height: 28px;
align-items: center;
gap: 6px;
padding-inline: 6px;
color: #d4380d;
font-size: 13px;
}
.conflict-summary-item {
display: grid;
min-height: 34px;
grid-template-columns: minmax(0, 1fr) auto;
align-items: center;
gap: 8px;
padding: 4px 8px;
border: 0;
background: transparent;
color: inherit;
text-align: left;
cursor: pointer;
}
.conflict-summary-item:hover {
background: #fff7e6;
}
.conflict-summary-item span {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.conflict-summary-item small {
color: #8c8c8c;
}
.repeat-group {
margin: 12px 0 64px;
border-top: 1px solid #f0f0f0;
}
.repeat-group-header,
.repeat-row-header {
display: flex;
min-height: 40px;
align-items: center;
justify-content: space-between;
}
.repeat-count {
margin-left: 8px;
color: #8c8c8c;
font-size: 12px;
}
.repeat-row {
padding-top: 10px;
border-top: 1px solid #f0f0f0;
}
.repeat-row-title {
display: flex;
align-items: center;
gap: 6px;
color: #8c8c8c;
font-size: 12px;
}
.repeat-delete-state {
margin: 4px 0 8px;
}
.repeat-delete-form {
display: grid;
gap: 8px;
margin: 8px 0 12px;
padding-left: 8px;
border-left: 2px solid #ff4d4f;
}
.repeat-delete-form .ant-space {
justify-content: flex-end;
}
.step-navigation {
display: grid;
min-height: 44px;
grid-template-columns: 32px minmax(0, 1fr) 32px 32px;
align-items: center;
margin: 8px -4px 0;
border-block: 1px solid #f0f0f0;
}
.current-step {
display: flex;
min-width: 0;
align-items: center;
justify-content: center;
gap: 6px;
padding: 0 4px;
font-size: 13px;
font-weight: 600;
}
.current-step > span:first-child {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.current-step .ant-tag,
.directory-step .ant-tag {
margin: 0;
}
.step-sections {
margin-inline: -12px;
}
.step-sections > .ant-collapse-item > .ant-collapse-header {
padding-inline: 16px;
}
.step-sections .ant-collapse-content-box {
padding: 0 16px;
}
.step-sections .field-list,
.step-sections .repeat-group {
margin-bottom: 12px;
}
.step-directory {
padding-top: 12px;
}
.directory-summary {
display: flex;
min-height: 28px;
align-items: center;
gap: 8px;
font-size: 12px;
}
.directory-summary strong {
margin-right: auto;
font-size: 14px;
}
.directory-step {
width: 100%;
border: 0;
background: transparent;
color: inherit;
text-align: left;
cursor: pointer;
}
.directory-steps {
display: grid;
margin-top: 10px;
border-top: 1px solid #f0f0f0;
}
.directory-step {
display: grid;
min-height: 40px;
grid-template-columns: 18px minmax(0, 1fr) auto auto;
align-items: center;
gap: 6px;
padding: 4px 6px;
border-top: 1px solid #fafafa;
font-size: 13px;
}
.directory-step:hover,
.directory-step-current {
background: #f5f7fa;
}
.directory-step-name {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.directory-step-status {
color: #8c8c8c;
font-size: 12px;
}
.status-complete {
color: #389e0d;
}
.status-progress {
color: #8c8c8c;
}
.source-sync-list {
display: grid;
max-height: min(360px, calc(100vh - 180px));
overflow-y: auto;
}
.source-sync-item {
display: grid;
gap: 8px;
padding: 10px 0;
border-bottom: 1px solid #f0f0f0;
}
.source-sync-field {
display: grid;
gap: 2px;
min-width: 0;
}
.source-sync-heading {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
min-width: 0;
}
.source-sync-heading strong {
min-width: 0;
}
.source-sync-field strong,
.source-sync-field small,
.source-sync-values span,
.source-sync-values strong {
overflow-wrap: anywhere;
}
.source-sync-field small {
color: #8c8c8c;
}
.source-sync-lineage {
color: #595959 !important;
}
.source-sync-values {
display: grid;
grid-template-columns: minmax(0, 1fr) 16px minmax(0, 1fr);
align-items: center;
gap: 6px;
}
.source-sync-values > :nth-child(2) {
color: #8c8c8c;
}
.plugin-shell footer {
position: static;
z-index: 2;
flex: 0 0 auto;
padding: 10px 12px 12px;
border-top: 1px solid #f0f0f0;
background: #fff;
}