/* Only the iOS wrapper's public pages reserve the native status-bar region.
   The native bridge is installed at document start, before this page paints. */
html.studiverse-ios-public body.external-page {
  --public-ios-safe-top: env(safe-area-inset-top, 0px);
}

/* The header itself supplies the status-bar background. Its 70px content row
   starts below the inset; sticky positioning keeps it there while scrolling. */
html.studiverse-ios-public body.external-page .navbar {
  box-sizing: border-box;
  height: auto !important;
  min-height: calc(70px + var(--public-ios-safe-top)) !important;
  padding-top: var(--public-ios-safe-top) !important;
}

html.studiverse-ios-public body.external-page .mobile-menu {
  top: calc(70px + var(--public-ios-safe-top)) !important;
  max-height: calc(100dvh - 70px - var(--public-ios-safe-top)) !important;
}

/* Auth and checkout result screens have no navbar. Preserve their existing
   visual gutter and add only the portion occupied by the status bar. */
html.studiverse-ios-public body.external-page.tw-login {
  padding-top: calc(20px + var(--public-ios-safe-top)) !important;
}

html.studiverse-ios-public body.external-page.checkout-result-page {
  padding-top: calc(2rem + var(--public-ios-safe-top)) !important;
}
