.action-cell { display: flex; align-items: center; gap: 6px; } .drag-handle { cursor: grab; opacity: 0.35; font-size: 14px; padding: 4px; margin: -4px; touch-action: none; transition: opacity 0.15s; } .drag-handle:hover { opacity: 0.8; } .drag-handle:active { cursor: grabbing; } .row-dragging { opacity: 0.4; } .drop-before > td { box-shadow: inset 0 2px 0 0 var(--ant-color-primary); } .drop-after > td { box-shadow: inset 0 -2px 0 0 var(--ant-color-primary); } .row-index { font-weight: 500; opacity: 0.7; min-width: 18px; text-align: right; } .action-buttons { display: flex; align-items: center; justify-content: flex-end; gap: 4px; margin-left: auto; } .criterion-flow { display: flex; flex-direction: column; gap: 2px; font-size: 12px; } .criterion-row { display: inline-flex; align-items: baseline; gap: 4px; white-space: nowrap; } .criterion-label { font-size: 10px; text-transform: uppercase; opacity: 0.55; letter-spacing: 0.04em; } .criterion-value { font-weight: 500; } .criterion-more { font-size: 11px; padding: 0 5px; border-radius: 8px; background: var(--ant-color-fill-tertiary); } .criterion-empty { opacity: 0.4; } .target-row { display: flex; align-items: center; gap: 4px; } .target-icon { font-size: 12px; opacity: 0.6; } .rule-list { display: flex; flex-direction: column; gap: 14px; } .rule-card { position: relative; display: flex; flex-direction: column; gap: 8px; padding: 10px 12px; background: var(--bg-card, #fff); border: 1px solid var(--ant-color-border); border-radius: 8px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06); transition: opacity 0.15s, box-shadow 0.15s; } .rule-list > .rule-card:not(:last-child)::after { content: ''; position: absolute; left: 50%; bottom: -8px; width: 32px; height: 1px; background: var(--ant-color-border); transform: translateX(-50%); opacity: 0.7; } .rule-card.row-dragging { opacity: 0.4; } .rule-card.drop-before { box-shadow: inset 0 2px 0 0 var(--ant-color-primary); } .rule-card.drop-after { box-shadow: inset 0 -2px 0 0 var(--ant-color-primary); } .rule-card-head { display: flex; align-items: center; gap: 8px; } .rule-number { font-weight: 600; font-size: 13px; opacity: 0.75; flex: 1; } .rule-flow { display: flex; align-items: center; gap: 8px; } .flow-side { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; } .flow-side-target { align-items: flex-end; text-align: right; } .flow-label { font-size: 10px; text-transform: uppercase; letter-spacing: 0.05em; opacity: 0.55; } .flow-tag { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin: 0; } .flow-arrow { font-size: 16px; opacity: 0.45; flex-shrink: 0; } .rule-criteria { display: flex; flex-wrap: wrap; gap: 4px; padding-top: 6px; border-top: 1px dashed var(--ant-color-border); } .criterion-chip { display: inline-flex; align-items: baseline; gap: 4px; padding: 1px 6px; font-size: 11px; background: var(--ant-color-fill-tertiary); border-radius: 4px; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .criterion-chip-label { font-size: 9px; text-transform: uppercase; letter-spacing: 0.04em; opacity: 0.6; } .criterion-chip-value { font-weight: 500; } .rule-empty { padding: 24px; text-align: center; opacity: 0.4; }