/* v467: iOS/Android app shell (html.native-app, set by native-app.js). The WebView runs edge-to-edge under the status bar and
   Dynamic Island (Capacitor ios.contentInset "never" + viewport-fit=cover), so every top-anchored surface reserves var(--app-safe-top,env(safe-area-inset-top)).
   Surfaces that already add the inset (app-chrome top bar/sheets, chat, first profile setup, toasts, loading bar) are left alone.
   No outer rounded frames in the app: the device's own display corners do the rounding. Web browsers are unaffected. */
html.native-app,html.native-app body{border-radius:0;border:0;box-shadow:none;overscroll-behavior-y:none}
/* Public / login / sign-up / Konto erstellen header */
html.native-app .nav{box-sizing:border-box;height:calc(68px + var(--app-safe-top,env(safe-area-inset-top,0px)));padding-top:calc(12px + var(--app-safe-top,env(safe-area-inset-top,0px)))}
@media(min-width:761px){html.native-app .nav{height:calc(80px + var(--app-safe-top,env(safe-area-inset-top,0px)))}}
/* First profile setup already pads #app with the inset; with the header visible above it that would double up */
html.native-app body.app-host:has(.profile-first-setup):not(:has(.app-chrome)) #app{padding-top:24px}
/* Full-screen overlays */
html.native-app :is(.consent-layer,#platform-maintenance,.view-once-overlay,.demo-match-modal){padding-top:calc(22px + var(--app-safe-top,env(safe-area-inset-top,0px)));padding-bottom:calc(22px + env(safe-area-inset-bottom,0px))}
/* Centered dialogs never reach into the status bar / home indicator */
html.native-app :is(.portal-dialog,.welcome-tour,.checkout-dialog,.checkin-experience,dialog.be-removed-sheet,.chat-action-sheet,.incoming-likes-dialog){max-height:calc(100dvh - 24px - var(--app-safe-top,env(safe-area-inset-top,0px)) - env(safe-area-inset-bottom,0px))!important}
/* Phones: the near-full-screen sheets become true full-screen pages without an inner rounded frame */
@media(max-width:650px){
 html.native-app :is(.checkout-dialog,.checkin-experience,.chat-action-sheet.chat-profile-dialog,.incoming-likes-dialog){box-sizing:border-box;width:100%!important;max-width:100%!important;height:100dvh;max-height:100dvh!important;margin:0!important;inset:0;border:0!important;border-radius:0!important;box-shadow:none!important;padding-top:calc(12px + var(--app-safe-top,env(safe-area-inset-top,0px)))!important;padding-bottom:calc(12px + env(safe-area-inset-bottom,0px))!important}
 html.native-app dialog.be-removed-sheet{max-height:calc(100dvh - var(--app-safe-top,env(safe-area-inset-top,0px)) - 12px)!important}
}
/* No page zoom in the app: iOS auto-zooms on focus below 16px; pinch only inside the map */
html.native-app :is(input,textarea,select){font-size:max(16px,1em)!important}
html.native-app,html.native-app body{touch-action:pan-x pan-y;-webkit-text-size-adjust:100%;text-size-adjust:100%}
html.native-app :is(.leaflet-container,.maplibregl-map){touch-action:none}
/* Chat (WhatsApp-style): no black area behind the keyboard; list scrolls under the home indicator, composer carries the inset */
html.native-app,html.native-app body{background-color:#fff8fa}
html.native-app body.app-host #app>.shell.product-chat{padding-bottom:0}
html.native-app #app>.product-chat>form{padding-bottom:calc(12px + env(safe-area-inset-bottom,0px))}
html.native-app.chat-keyboard-open #app>.product-chat>form{padding-bottom:8px}
html.native-app.chat-keyboard-open .chrome-dock{display:none}
/* v470: cards follow the display corners: radius concentric to the iPhone screen corner (~55px) minus the 16px side inset */
@media(max-width:650px){html.native-app :is(.auth-shell>.panel,.auth-shell>.auth-footer,.shell>.panel){border-radius:39px}html.native-app .auth-shell :is(input,.button,button.ghost){border-radius:20px}}
/* v470: chat composer sits directly on the keyboard (the WebView ends at the keyboard top) */
html.native-app.chat-keyboard-open #app>.product-chat{height:var(--chat-viewport-height,100dvh)}
