:root {
  --pm-viewport-height: 100vh;
  --pm-visual-viewport-height: 100vh;
  --pm-safe-top: env(safe-area-inset-top, 0px);
  --pm-safe-right: env(safe-area-inset-right, 0px);
  --pm-safe-bottom: env(safe-area-inset-bottom, 0px);
  --pm-safe-left: env(safe-area-inset-left, 0px);
}

@supports (height: 100dvh) {
  :root {
    --pm-viewport-height: 100dvh;
    --pm-visual-viewport-height: 100dvh;
  }
}

html.pm-has-visual-viewport {
  --pm-viewport-height: var(--pm-visual-viewport-height);
}

html.pm-is-webkit {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

html.pm-is-webkit,
html.pm-is-webkit body {
  min-height: var(--pm-viewport-height);
}

html.pm-is-webkit body {
  padding-right: var(--pm-safe-right);
  padding-left: var(--pm-safe-left);
  overscroll-behavior-x: none;
}

html.pm-is-webkit input,
html.pm-is-webkit select,
html.pm-is-webkit textarea {
  font-size: 16px;
}

html.pm-is-webkit textarea,
html.pm-is-webkit [class*="scroll"],
html.pm-is-webkit [class*="modal"],
html.pm-is-webkit [class*="dialog"],
html.pm-is-webkit .booking-slot-grid,
html.pm-is-webkit .address-suggestions,
html.pm-is-webkit .customer-segments {
  -webkit-overflow-scrolling: touch;
}

html.pm-is-webkit .site-header,
html.pm-is-webkit .customer-topbar,
html.pm-is-webkit .fake-checkout-header {
  transform: translateZ(0);
  backface-visibility: hidden;
}

html.pm-is-webkit .form-aurora-stage,
html.pm-is-webkit .manage-modal,
html.pm-is-webkit .manage-reschedule-modal,
html.pm-is-webkit .customer-dialog,
html.pm-is-webkit .fake-checkout-card {
  transform: translateZ(0);
}

html.pm-is-webkit .service-card,
html.pm-is-webkit .bento-card,
html.pm-is-webkit .location-card,
html.pm-is-webkit .review-card {
  position: relative;
  isolation: isolate;
  transform: translateZ(0);
}

html.pm-is-webkit .service-card > img {
  position: relative;
  z-index: 0;
  opacity: 1;
  transform: translateZ(0);
}

html.pm-is-webkit .service-card > div {
  position: relative;
  z-index: 1;
  opacity: 1;
  background: var(--surface, #fff);
}

html.pm-is-webkit.pm-keyboard-open .customer-cta-repair {
  position: static;
  display: block;
  margin: 0 12px max(12px, var(--pm-safe-bottom));
}

@supports (-webkit-touch-callout: none) {
  html.pm-is-webkit .booking-page-main,
  html.pm-is-webkit .fake-checkout-main,
  html.pm-is-webkit .customer-shell,
  html.pm-is-webkit .manage-main {
    min-height: var(--pm-viewport-height);
  }

  html.pm-is-webkit .customer-dialog,
  html.pm-is-webkit .manage-reschedule-card {
    max-height: calc(var(--pm-viewport-height) - max(24px, var(--pm-safe-top)) - max(24px, var(--pm-safe-bottom)));
  }
}

