/* Rails owns menu visibility and account state; the shell supplies back/title chrome. */
.native-tools { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 6px 16px; border-bottom: 1px solid var(--line); background: var(--cream); }
.native-menu > summary { display: flex; align-items: center; gap: 8px; min-height: 44px; cursor: pointer; font-weight: 700; list-style: none; }
.native-menu > summary::-webkit-details-marker { display: none; }
.native-menu > summary svg { width: 20px; height: 20px; }
.native-menu nav { position: absolute; z-index: 100; top: 100%; left: 12px; right: 12px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px; padding: 12px; background: var(--cream); border: 1px solid var(--line); box-shadow: 0 12px 28px #0002; max-height: 65vh; overflow-y: auto; }
.native-menu nav a, .native-menu nav button { display: flex; align-items: center; min-height: 44px; width: 100%; padding: 8px 10px; border: 0; border-radius: 6px; color: var(--olive); background: transparent; font: inherit; font-size: 14px; text-align: left; }
.native-menu nav a:hover, .native-menu nav button:hover { background: var(--yellow); }
.native-menu nav form { margin: 0; }
.native-menu summary:focus-visible, .native-menu a:focus-visible, .native-menu button:focus-visible { outline: 3px solid var(--olive); outline-offset: 2px; }
.hotwire-native .partner-app .host-sidebar, .hotwire-native .partner-app .host-topbar { display: none; }
.hotwire-native .partner-app .host-main { margin-left: 0; width: 100%; }
.hotwire-native .partner-app .host-page-head .button { font-size: 13px; min-height: 44px; }
.hotwire-native .button { -webkit-appearance: none; appearance: none; min-height: 44px; }
.hotwire-native .guest-account-page .map-control { min-height: 44px; }
.hotwire-native .button--secondary { color: var(--olive); background: var(--sand); border: 1px solid var(--line); }
.hotwire-native .button--outline { color: var(--olive); }
.hotwire-native .text-button { -webkit-appearance: none; appearance: none; min-height: 44px; padding: 8px; border: 0; background: transparent; color: var(--olive); font: inherit; font-size: 13px; text-decoration: underline; }
/* Keep UIKit from zooming small text fields when the keyboard opens. */
.hotwire-native input:not([type="submit"]):not([type="button"]):not([type="hidden"]), .hotwire-native select, .hotwire-native textarea { font-size: 16px; }
/* WebKit's automatic date appearance adds padding outside the requested width. */
.hotwire-native input[type="date"] { -webkit-appearance: none; appearance: none; box-sizing: border-box; min-width: 0; max-width: 100%; min-height: 44px; }
/* Native navigation restores scroll positions itself; CSS scrolling must not animate a second time. */
html:has(> body.hotwire-native) { scroll-behavior: auto; }
/* Hidden horizontal overflow makes vertical overflow compute to auto. Hotwire
   Android then mistakes the document for an inner scroller and blocks refresh. */
html:has(> body.hotwire-native), body.hotwire-native { overflow-x: clip; }
.hotwire-native .auth-panel__top, .hotwire-native .auth-visual { display: none; }
.hotwire-native .auth-shell { display: block; min-height: auto; }
.hotwire-native .auth-panel { min-height: auto; width: 100%; }
/* The native menu already contains account links and the currency picker. */
.hotwire-native .map-search-header > .brand, .hotwire-native .map-account-nav { display: none; }
.hotwire-native .map-search-header { grid-template-columns: minmax(0, 1fr); }
.hotwire-native .map-location-search { grid-column: 1; grid-row: 1; }
/* Let the page scroll the whole input into view when the native keyboard opens.
   A viewport-capped overlay can shrink below the height of one input. */
@media (max-width: 900px) {
  .hotwire-native .search-popover__panel { position: static; width: 100%; max-height: none; margin-top: 10px; overflow: visible; }
  .hotwire-native .map-filter-bar .search-popover[open] { flex-basis: 100%; }
}
