/* ========================================================================== 
   EXCARRA V8.6 — measured floating UI stack
   The offsets are written by /site/floating-stack.js from real element sizes.
   ========================================================================== */
:root{
  --floating-stack-reserved:0px;
  --floating-keyboard-inset:0px;
}

[data-floating-stack-managed="true"]{
  bottom:calc(var(--floating-stack-offset,12px) + env(safe-area-inset-bottom,0px))!important;
  transition:opacity .2s ease,visibility .2s ease,transform .2s ease;
}

/* Modal overlays take precedence over secondary floating controls. Cookies are
   deliberately excluded: they now participate in the measured stack. */
body.dialog-open .exi-assistant,
body.mobile-sheet-open .exi-assistant,
body.filters-open .exi-assistant,
body.gallery-open .exi-assistant{
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transform:translateY(12px) scale(.96);
}
body.dialog-open .compare-tray,
body.mobile-sheet-open .compare-tray,
body.filters-open .compare-tray,
body.gallery-open .compare-tray{opacity:0;pointer-events:none}

.exi-assistant{bottom:max(18px,env(safe-area-inset-bottom));}
.exi-panel{
  bottom:calc(76px + var(--exi-keyboard-offset,0px));
  max-height:calc(100dvh - 118px - var(--exi-keyboard-offset,0px));
}
.exi-assistant.exi-keyboard-open{right:8px;left:8px}
.exi-assistant.exi-keyboard-open .exi-panel{left:0;right:0;width:auto}

.mobile-nav,
.mobile-booking-cta,
.compare-tray,
.reject-form,
.admin-reject form{bottom:max(10px,env(safe-area-inset-bottom));}
.form-submit-bar{bottom:18px}

@media(max-width:900px){
  body.floating-stack-ready{
    padding-bottom:max(18px,var(--floating-stack-reserved));
  }
  body.floating-stack-crowded .exi-launcher-copy{display:none}
  body.floating-stack-crowded .exi-launcher{padding:6px;min-height:56px}
  body.floating-stack-crowded .exi-launcher-avatar{width:44px;height:44px}
}

@media(max-width:760px){
  /* The mobile panel is fixed to the viewport, but inherits the launcher's
     measured offset so it always opens above the complete stack. */
  .exi-panel{
    bottom:calc(var(--floating-stack-offset,10px) + 66px + env(safe-area-inset-bottom,0px));
    max-height:calc(100dvh - var(--floating-stack-offset,10px) - 84px - env(safe-area-inset-bottom,0px));
  }
}

/* Sticky submit bars are promoted to fixed positioning only while they reach
   the bottom collision line. A JavaScript placeholder preserves document flow. */
.floating-stack-placeholder{visibility:hidden;pointer-events:none;box-sizing:border-box}
.floating-stack-sticky-fixed{
  position:fixed!important;
  left:var(--floating-stack-left)!important;
  right:auto!important;
  width:var(--floating-stack-width)!important;
  margin:0!important;
  z-index:168!important;
}
