/* Shared compatibility for this site's custom overlay plugins.
 * Reserve a classic scrollbar's gutter before any overlay opens. Overlay scrollbars use no gutter.
 * Lock the root only: overflow:hidden on body creates a new scroll ancestor and unsticks #header.
 * Existing lock classes remain owned by their plugins, including nested overlays and close/focus logic. */
html { scrollbar-gutter: stable; }
html:is(.abhf-lock, .abhf-choice-open, .absc-locked, .aspd-lock, .abrv-lock, .abch-lock, .abpvc-lock, .abms-lock, .abtc-lock, .abco-lock, .abspk-modal-open, .autool-review-modal-open) {
 overflow: hidden !important;
}
html:is(.abhf-lock, .abhf-choice-open, .absc-locked, .aspd-lock, .abrv-lock, .abch-lock, .abpvc-lock, .abms-lock, .abtc-lock, .abco-lock, .abspk-modal-open, .autool-review-modal-open) body {
 /* Fallback for browsers without overflow:clip: do not introduce a body scroll container. */
 overflow: visible !important;
}
@supports (overflow: clip) {
 html:is(.abhf-lock, .abhf-choice-open, .absc-locked, .aspd-lock, .abrv-lock, .abch-lock, .abpvc-lock, .abms-lock, .abtc-lock, .abco-lock, .abspk-modal-open, .autool-review-modal-open) body {
  overflow: clip !important;
 }
}
@supports (scrollbar-gutter: stable) {
 /* The side cart's JS compensation is redundant once the root keeps its native gutter. */
 html.absc-locked { padding-right: 0 !important; }
}

/* Imported product description viewers keep their state on body instead of html. */
@supports selector(html:has(> body.autool-lightbox-open)) {
 html:has(> body:is(.autool-lightbox-open,.autool-compare-picker-open,.autool-slider-dialog-open,.autool-modal-open)) { overflow: hidden !important; }
 body:is(.autool-lightbox-open,.autool-compare-picker-open,.autool-slider-dialog-open,.autool-modal-open) { overflow: visible !important; }
 @supports (overflow: clip) {
  body:is(.autool-lightbox-open,.autool-compare-picker-open,.autool-slider-dialog-open,.autool-modal-open) { overflow: clip !important; }
 }
}
