/* Shared iOS keyboard ownership. Hardware safe areas never store viewport pan. */
html.gsfc-ios-keyboard .gsfc-input-min-font {
  font-size: 16px !important;
}
html.gsfc-ios-keyboard .gsfc-input-font-measure {
  transition: none !important;
}
/* Current Ant FormItem renders an unclassed flex wrapper for its ErrorList.
   Keep a second grid row even before that wrapper is created. Two-line hints
   cannot move later fields; longer messages may grow normally without overlap. */
html.gsfc-ios-keyboard :is(.login-password, .transaction-password) .ant-form-item:has(input) {
  margin-bottom: 12px !important;
}
html.gsfc-ios-keyboard :is(.login-password, .transaction-password) .ant-form-item:has(input) .ant-form-item-control {
  display: grid;
  grid-template-rows: auto minmax(44px, auto);
}
html.gsfc-ios-keyboard :is(.login-password, .transaction-password) .ant-form-item:has(input) .ant-form-item-control-input {
  grid-row: 1;
}
html.gsfc-ios-keyboard :is(.login-password, .transaction-password) .ant-form-item:has(input) .ant-form-item-control > div:has(> .ant-form-item-explain) {
  grid-row: 2;
  min-height: 44px;
  margin: 0;
}
html.gsfc-ios-keyboard :is(.login-password, .transaction-password) .ant-form-item:has(input) > .ant-form-margin-offset {
  display: none;
}
html.gsfc-ios-keyboard :is(.login-password, .transaction-password) .ant-form-item:has(input) :is(.ant-form-item-explain, .ant-form-item-extra) {
  font-size: 13px;
  line-height: 20px;
  overflow-wrap: anywhere;
}
