/* Entrata contact button (ppcb) — keep it clear of the jump-links bar.
 *
 * At rest, #thr-jumplink-cont sits in normal flow at the bottom of the first
 * viewport; the vendor's corner button is fixed at bottom:8px and lands on top
 * of it. Measured on Moore's Edge, 390x844, scrollY 0:
 *
 *   #thr-jumplink-cont   top 781  bottom 844   (63px tall, sticky, z 4)
 *   #ppcb_btn            top 772  bottom 836   (64px, fixed, z 1000)
 *   -> 55px of vertical overlap
 *
 * Once the page scrolls, the bar sticks to top:80px and the conflict ends on
 * its own, so the lift only needs to apply while the bar is still down there.
 * js/entrata-widget.js sets --ppcb-lift from the bar's measured height.
 *
 * transform, NOT bottom: the vendor writes bottom/right/z-index as INLINE
 * styles and ships no stylesheet of its own (verified 2026-08-04). Restating
 * its offsets here would silently pin them if a future build changes them.
 * Translating leaves the vendor's own positioning authoritative, and neither
 * element carries an inline transform, so no !important is needed.
 */

:root {
  --ppcb-lift: 0px;
}

/* Above the sticky nav.
 *
 * Measured competitors on this site (low to high):
 *
 *   #global-shadowbox   (floorplan modal)      999999  fixed
 *   header#brx-header   (sticky nav)         99999999  sticky
 *   #footer-drawer/-bg  (form drawer)       999999999  fixed
 *   #notification-…     (promo bar)        2147483647  fixed
 *   #ppcb_*             (vendor default)         1000  fixed
 *
 * 100000000 clears the nav while staying under the form drawer and promo bar,
 * so those still cover the widget — correct for a focused input surface.
 *
 * NOTE: clearing the nav necessarily also clears #global-shadowbox, because the
 * floorplan modal sits *below* the nav in this site's stack. There is no value
 * that beats the nav but loses to the shadowbox. So the corner button now
 * floats over an open floorplan modal; if that reads wrong, the fix is raising
 * the shadowbox rather than lowering this.
 *
 * Deliberately not max-int like the Elise widget — that was needed because its
 * chat goes full-screen on mobile and had to cover everything. This one doesn't.
 *
 * !important: the vendor writes z-index inline and ships no stylesheet of its
 * own, so an author sheet only wins by being important.
 */
#ppcb_btn,
#ppcb_notification,
#ppcb_container {
  z-index: 100000000 !important;
}

#ppcb_btn,
#ppcb_notification {
  transform: translateY(calc(-1 * var(--ppcb-lift, 0px)));
  transition: transform 0.25s ease;
}

/* #ppcb_notification carries an inline `transition: 0.2s ease-in-out` (all
 * properties), which outranks the un-important rule above — it animates on its
 * own timing. Left deliberately: matching the two exactly is not worth an
 * !important on a vendor transition.
 *
 * It also mounts with a `growNotification` keyframe animation. If that
 * animation ever touches transform, the bubble will sit unlifted for its 0.4s
 * run before settling into place. Cosmetic, first appearance only.
 */

@media (prefers-reduced-motion: reduce) {
  #ppcb_btn,
  #ppcb_notification {
    transition: none;
  }
}
