/* V16: shared alignment rules for every backend control. */
:root{
  --control-height:42px;
  --compact-control-height:36px;
}

body .main-content .ant-form-item-row,
body .main-content .ant-form-item-control-input,
body .ant-modal .ant-form-item-row,
body .ant-modal .ant-form-item-control-input{
  align-items:center!important;
}
body .main-content .ant-form-item-control-input,
body .ant-modal .ant-form-item-control-input{
  min-height:var(--control-height)!important;
}
body .main-content .ant-select,
body .main-content .ant-picker,
body .main-content .ant-input-number,
body .ant-modal .ant-select,
body .ant-modal .ant-picker,
body .ant-modal .ant-input-number{
  height:var(--control-height)!important;
  vertical-align:middle!important;
}
body .main-content .ant-select-selector,
body .main-content .ant-picker,
body .main-content .ant-input-number,
body .ant-modal .ant-select-selector,
body .ant-modal .ant-picker,
body .ant-modal .ant-input-number{
  min-height:var(--control-height)!important;
  height:var(--control-height)!important;
  display:flex!important;
  align-items:center!important;
}
body .main-content .ant-select-selector,
body .ant-modal .ant-select-selector{padding:0 13px!important;}
body .main-content .ant-select-single .ant-select-selection-item,
body .main-content .ant-select-single .ant-select-selection-placeholder,
body .ant-modal .ant-select-single .ant-select-selection-item,
body .ant-modal .ant-select-single .ant-select-selection-placeholder{
  display:flex!important;
  height:40px!important;
  min-height:40px!important;
  align-items:center!important;
  line-height:1.35!important;
  padding:0!important;
}
body .main-content .ant-select-selection-search,
body .ant-modal .ant-select-selection-search{
  height:40px!important;
  display:flex!important;
  align-items:center!important;
}
body .main-content .ant-select-selection-search-input,
body .ant-modal .ant-select-selection-search-input{height:40px!important;line-height:40px!important;}
body .main-content .ant-select-selection-overflow,
body .ant-modal .ant-select-selection-overflow{
  display:flex!important;
  min-height:40px!important;
  align-items:center!important;
  gap:3px!important;
}
body .main-content .ant-select-selection-overflow-item,
body .ant-modal .ant-select-selection-overflow-item{display:flex!important;align-items:center!important;}
body .main-content .ant-select-selection-item-content,
body .ant-modal .ant-select-selection-item-content{line-height:1.25!important;}
body .main-content .ant-picker-input,
body .ant-modal .ant-picker-input{display:flex!important;height:40px!important;align-items:center!important;}
body .main-content .ant-picker-input>input,
body .ant-modal .ant-picker-input>input{height:40px!important;line-height:40px!important;}
body .main-content .ant-input-number-input-wrap,
body .ant-modal .ant-input-number-input-wrap{height:100%!important;}
body .main-content .ant-input-number-input,
body .ant-modal .ant-input-number-input{height:40px!important;padding:0 12px!important;line-height:40px!important;}
/* Ant Design already offsets its icons. Applying another translateY moved them
   6-8px above the visual center, so icon containers now span the control. */
body .ant-select .ant-select-arrow{
  top:0!important;
  inset-block-start:0!important;
  bottom:0!important;
  height:auto!important;
  margin:0!important;
  transform:none!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  color:#758399!important;
  line-height:1!important;
}
body .ant-select .ant-select-arrow .anticon,
body .ant-select .ant-select-arrow svg{
  display:block!important;
  width:14px!important;
  height:14px!important;
  line-height:1!important;
}
body .ant-select:not(.ant-select-disabled):hover .ant-select-arrow,
body .ant-select-focused .ant-select-arrow{color:#3f6da8!important;}
body .ant-picker .ant-picker-suffix{
  top:auto!important;
  transform:none!important;
  align-self:stretch!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  color:#758399!important;
  line-height:1!important;
}
body .ant-picker .ant-picker-suffix .anticon,
body .ant-picker .ant-picker-suffix svg{
  display:block!important;
  width:14px!important;
  height:14px!important;
  line-height:1!important;
}
body .ant-picker:hover .ant-picker-suffix,
body .ant-picker-focused .ant-picker-suffix{color:#3f6da8!important;}
body .ant-picker .ant-picker-clear{
  top:0!important;
  inset-block-start:0!important;
  bottom:0!important;
  height:auto!important;
  margin:0!important;
  transform:none!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  line-height:1!important;
}

/* Override page-level legacy heights so text and placeholders use the same
   center line as their selector on every backend surface. */
body .main-content .ant-select.ant-select-single .ant-select-selector .ant-select-selection-item,
body .main-content .ant-select.ant-select-single .ant-select-selector .ant-select-selection-placeholder,
body .ant-modal .ant-select.ant-select-single .ant-select-selector .ant-select-selection-item,
body .ant-modal .ant-select.ant-select-single .ant-select-selector .ant-select-selection-placeholder,
body .ant-drawer .ant-select.ant-select-single .ant-select-selector .ant-select-selection-item,
body .ant-drawer .ant-select.ant-select-single .ant-select-selector .ant-select-selection-placeholder{
  height:calc(var(--control-height) - 2px)!important;
  min-height:0!important;
  max-height:none!important;
  padding-block:0!important;
  align-self:stretch!important;
  align-items:center!important;
  line-height:1.4!important;
}
body .main-content .ant-select.ant-select-single .ant-select-selector .ant-select-selection-search,
body .ant-modal .ant-select.ant-select-single .ant-select-selector .ant-select-selection-search,
body .ant-drawer .ant-select.ant-select-single .ant-select-selector .ant-select-selection-search{
  top:0!important;
  inset-block-start:0!important;
  bottom:0!important;
  height:calc(var(--control-height) - 2px)!important;
  display:flex!important;
  align-items:center!important;
}
body .main-content .ant-select.ant-select-single .ant-select-selection-search-input,
body .ant-modal .ant-select.ant-select-single .ant-select-selection-search-input,
body .ant-drawer .ant-select.ant-select-single .ant-select-selection-search-input{
  height:100%!important;
  line-height:normal!important;
}

body .main-content .filter-bar .ant-select.ant-select-single .ant-select-selector .ant-select-selection-item,
body .main-content .filter-bar .ant-select.ant-select-single .ant-select-selector .ant-select-selection-placeholder,
body .main-content .filter-bar .ant-select.ant-select-single .ant-select-selector .ant-select-selection-search{
  height:calc(var(--compact-control-height) - 2px)!important;
}

/* Batch operations intentionally use a 48px touch target. Keep every layer on
   that baseline instead of allowing the shared 42px rule to shrink only the
   outer Select container. */
body .main-content .batch-card[data-v-57970685] .ant-select{
  height:var(--v13-control-height)!important;
  min-height:var(--v13-control-height)!important;
}
body .main-content .batch-card[data-v-57970685] .ant-select.ant-select-single .ant-select-selector{
  height:var(--v13-control-height)!important;
  min-height:var(--v13-control-height)!important;
}
body .main-content .batch-card[data-v-57970685] .ant-select.ant-select-single .ant-select-selector .ant-select-selection-item,
body .main-content .batch-card[data-v-57970685] .ant-select.ant-select-single .ant-select-selector .ant-select-selection-placeholder,
body .main-content .batch-card[data-v-57970685] .ant-select.ant-select-single .ant-select-selector .ant-select-selection-search{
  height:calc(var(--v13-control-height) - 2px)!important;
}

/* Compact filters such as data statistics use one shorter baseline. */
body .main-content .filter-bar,
body .main-content .page:has(.stat-grid) .filter-bar{display:flex!important;min-height:56px!important;align-items:center!important;}
body .main-content .filter-bar .ant-select,
body .main-content .filter-bar .ant-picker,
body .main-content .filter-bar .ant-input-number,
body .main-content .filter-bar .ant-select-selector,
body .main-content .filter-bar .ant-picker{height:var(--compact-control-height)!important;min-height:var(--compact-control-height)!important;}
body .main-content .filter-bar .ant-select-single .ant-select-selection-item,
body .main-content .filter-bar .ant-select-single .ant-select-selection-placeholder,
body .main-content .filter-bar .ant-picker-input,
body .main-content .filter-bar .ant-picker-input>input{height:34px!important;min-height:34px!important;line-height:34px!important;}
body .main-content .filter-bar .ant-select-selection-search,
body .main-content .filter-bar .ant-select-selection-search-input{height:34px!important;line-height:34px!important;}
body .main-content .filter-bar .ant-select-selection-overflow{min-height:34px!important;align-items:center!important;}
body .main-content .filter-bar .ant-input-number-input,
body .main-content .filter-bar .ant-input-number-input-wrap{height:34px!important;line-height:34px!important;}
body .main-content .filter-bar .ant-checkbox-wrapper,
body .main-content .filter-bar .chk-label{min-height:var(--compact-control-height)!important;display:inline-flex!important;align-items:center!important;line-height:1.35!important;}
body .main-content .filter-bar .ant-checkbox{top:0!important;}

/* Buttons are flex controls so icon and label share the same optical center. */
body .main-content .ant-btn,
body .ant-modal .ant-btn,
body .ant-dropdown-trigger{display:inline-flex!important;align-items:center!important;justify-content:center!important;vertical-align:middle!important;line-height:1!important;}
body .main-content .ant-btn .ui-line-icon,
body .ant-modal .ant-btn .ui-line-icon{flex:0 0 auto!important;}
body .main-content .ant-switch,
body .main-content .ant-checkbox-wrapper,
body .main-content .ant-radio-wrapper,
body .ant-modal .ant-switch,
body .ant-modal .ant-checkbox-wrapper,
body .ant-modal .ant-radio-wrapper{vertical-align:middle!important;}

@media (max-width:768px){
  body .main-content .filter-bar,
  body .main-content .page:has(.stat-grid) .filter-bar{min-height:0!important;align-items:stretch!important;}
}
