:root{
  --ui-focus-color:#2563eb;
  --ui-focus-ring:0 0 0 3px rgba(37,99,235,.11);
}

/* Ant controls are composite widgets. Their outer shell owns the focus ring;
   the nested native input must remain visually transparent. */
body input.ant-input:focus-visible,
body textarea.ant-input:focus-visible{
  outline:0!important;
  outline-offset:0!important;
}

body .ant-select:focus-visible,
body .ant-picker:focus-visible,
body .ant-input-number:focus-visible,
body .ant-input-affix-wrapper:focus-visible{
  outline:0!important;
  outline-offset:0!important;
}

body .ant-select-selection-search-input:focus,
body .ant-select-selection-search-input:focus-visible,
body .ant-input-number-input:focus,
body .ant-input-number-input:focus-visible,
body .ant-picker-input>input:focus,
body .ant-picker-input>input:focus-visible,
body .ant-input-affix-wrapper>input.ant-input:focus,
body .ant-input-affix-wrapper>input.ant-input:focus-visible,
body .ant-input-group input.ant-input:focus,
body .ant-input-group input.ant-input:focus-visible{
  outline:0!important;
  outline-offset:0!important;
  box-shadow:none!important;
}

body .ant-select-focused .ant-select-selector,
body .ant-input-number-focused,
body .ant-input-number-affix-wrapper-focused,
body .ant-input-number-affix-wrapper:focus-within,
body .ant-picker-focused,
body .ant-input-affix-wrapper-focused,
body input.ant-input:focus,
body textarea.ant-input:focus{
  border-color:var(--ui-focus-color)!important;
  box-shadow:var(--ui-focus-ring)!important;
}

body .ant-input-number-affix-wrapper:focus-within>.ant-input-number{
  box-shadow:none!important;
}

/* Multiple Select keeps its placeholder centered while its zero-width search
   input receives focus. */
body .ant-select-multiple .ant-select-selector{
  align-items:center!important;
}
body .ant-select-multiple .ant-select-selection-overflow{
  min-height:calc(var(--control-height,42px) - 2px)!important;
  align-items:center!important;
}
body .ant-select-multiple .ant-select-selection-placeholder{
  inset-inline-start:12px!important;
  inset-inline-end:34px!important;
  top:50%!important;
  margin:0!important;
  transform:translateY(-50%)!important;
  line-height:1.4!important;
}

/* Empty option lists should read as a compact state, not a second modal. */
body .ant-select-dropdown .ant-empty-normal{
  margin:16px 0 12px!important;
}
body .ant-select-dropdown .ant-empty-normal .ant-empty-image{
  height:36px!important;
  margin-bottom:8px!important;
}
body .ant-select-dropdown .ant-empty-description{
  color:#7b8798!important;
  font-size:13px!important;
  line-height:20px!important;
}
