/* V4 mobile input/keyboard stability; presentation-only overrides.
   Avoids iOS Safari focus zoom and lets the active viewport contain forms. */
@media (max-width: 559px) {
  #auth-screen {
    box-sizing: border-box;
    width: 100%;
    max-width: 100%;
    min-height: 0;
    height: 100dvh;
    overflow-x: hidden;
    overflow-y: auto;
    align-items: flex-start;
    justify-content: center;
    overscroll-behavior-y: contain;
    -webkit-overflow-scrolling: touch;
    scroll-padding-block: 12px;
  }

  #auth-screen .login-shell {
    box-sizing: border-box;
    width: 100%;
    height: auto !important;
    min-height: 100% !important;
    max-width: 480px;
    min-width: 0;
    margin-inline: auto;
    padding: max(12px, env(safe-area-inset-top)) 16px
             max(14px, env(safe-area-inset-bottom));
    justify-content: safe center;
  }

  #auth-screen .login-panel,
  #auth-screen .auth-extra,
  #auth-screen .auth-result,
  #auth-screen form,
  #auth-screen label,
  #linsumi-app .setting-expand,
  #linsumi-app .live-form,
  #linsumi-app .auth-extra-form {
    box-sizing: border-box;
    min-width: 0;
    max-width: 100%;
  }

  #auth-screen .password-wrap {
    display: block;
    position: relative;
    width: 100%;
    min-width: 0;
  }

  /* Inputs below 16px trigger Safari's automatic zoom on focus.
     Covers Login, 2FA, recovery, account setup, Settings, Chat and dialogs. */
  #auth-screen input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
  #auth-screen textarea,
  #auth-screen select,
  #linsumi-app input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
  #linsumi-app textarea,
  #linsumi-app select,
  .job-actions-dialog input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
  .job-actions-dialog textarea,
  .job-actions-dialog select {
    box-sizing: border-box;
    min-width: 0;
    max-width: 100%;
    font-size: 16px !important;
  }

  #auth-screen .login-form input,
  #auth-screen .auth-extra-form input,
  #auth-screen .live-form input,
  #linsumi-app .live-form input,
  #linsumi-app .live-form select {
    width: 100%;
  }

  #auth-screen .login-form input,
  #auth-screen .auth-extra-form input {
    scroll-margin-block: 15px;
  }

  #page-settings .settings-content,
  #page-logs .settings-content {
    scroll-padding-bottom: calc(24px + env(safe-area-inset-bottom));
  }

  /* On iOS, 100dvh can remain taller than the visual viewport while the
     keyboard is open. JS only adds this class when a real viewport shrink
     is detected; normal desktop/mobile layout remains untouched. */
  html.linsumi-keyboard-visible #auth-screen,
  html.linsumi-keyboard-visible #linsumi-app {
    position: fixed !important;
    top: var(--linsumi-view-top, 0px) !important;
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    height: var(--linsumi-view-height, 100dvh) !important;
    min-height: 0 !important;
    max-height: var(--linsumi-view-height, 100dvh) !important;
  }

  html.linsumi-keyboard-visible #linsumi-app .page,
  html.linsumi-keyboard-visible #linsumi-app .page.is-current,
  html.linsumi-keyboard-visible #linsumi-app .page.is-leaving {
    height: 100% !important;
    min-height: 0 !important;
    max-height: 100% !important;
  }

  html.linsumi-keyboard-visible #auth-screen {
    overflow-y: auto;
    overscroll-behavior-y: contain;
  }

  html.linsumi-keyboard-visible #page-chat .chat-layout {
    min-height: 0;
    overflow: hidden;
  }
}
