/* Native document scroll: no viewport-height shell, scroll lock or JS offsets. */
@media(max-width:991.98px){
body.page-singleitem{--one-star-item-bottom-space:4px}
body.page-singleitem>.one-star-item-dock-space{height:calc(55px + var(--one-star-item-bottom-space) + env(safe-area-inset-bottom));pointer-events:none}
html body.page-singleitem>.one-star-item-dock{position:fixed!important;inset:auto 0 0!important;width:100%;max-width:none;margin:0!important;padding:8px max(15px,env(safe-area-inset-right)) calc(var(--one-star-item-bottom-space) + env(safe-area-inset-bottom)) max(15px,env(safe-area-inset-left))!important;background:#f8f9fa!important;opacity:1!important;border:0;border-top:1px solid #dee2e6;border-radius:0!important;box-sizing:border-box;z-index:1020;transform:none!important;transition:none!important;animation:none!important;isolation:isolate}
/* Cover transient WebKit space below the fixed layer while browser chrome moves.
   This paint-only extension neither moves the button nor intercepts touches. */
html body.page-singleitem>.one-star-item-dock::after{content:"";position:absolute;top:100%;left:0;right:0;height:100vh;background:#f8f9fa;pointer-events:none}
html body.page-singleitem>.one-star-item-dock[hidden]{display:none!important}
html body.page-singleitem .one-star-item-dock-button{box-sizing:border-box!important;display:block!important;width:100%!important;height:46px!important;min-height:46px!important;margin:0!important;padding:0 17.5px!important;border:1px solid #005e85!important;border-radius:999px!important;background:#005e85!important;color:#fff!important;font-size:17.5px!important;font-weight:500!important;line-height:1.33333!important}
html.one-star-item-shell-active #overlay.preview-overlay{bottom:calc(var(--one-star-item-dock-height,0px) + 8px)!important}
}

@media(max-width:575.98px){html.one-star-ios-standalone body.page-singleitem{--one-star-item-bottom-space:16px}}

@media(max-width:991.98px){
html body.page-singleitem>.one-star-item-dock-pair{display:flex;gap:8px}
html body.page-singleitem .one-star-item-dock-button[hidden]{display:none!important}
html body.page-singleitem .one-star-item-dock-pair>.one-star-item-dock-button{flex:1 1 0;min-width:0;width:0!important;padding:0 8px!important;font-size:14px!important}
html body.page-singleitem .one-star-item-dock-pair>.one-star-item-dock-button i{display:none}
html body.page-singleitem .one-star-item-dock-pair>.one-star-item-dock-button[aria-busy="true"]{opacity:.65}
}

@media(max-width:991.98px){
html body.page-singleitem .one-star-item-dock-pair>.one-star-item-dock-button[aria-busy="true"]::after{content:"";display:inline-block;width:12px;height:12px;margin-left:6px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:one-star-dock-spin .7s linear infinite}
html body.page-singleitem .one-star-dock-checkout-pending>.one-star-item-dock-button:first-child{color:#fff!important}
html body.page-singleitem .one-star-dock-checkout-pending .one-star-atc-status{display:none!important}
}
@keyframes one-star-dock-spin{to{transform:rotate(360deg)}}

@media(max-width:991.98px){
html body.page-singleitem .one-star-item-dock-button.one-star-item-dock-checkout{background:#e9ecef!important;border-color:#d2d2d7!important;color:#1d1d1f!important}
html body.page-singleitem .one-star-item-dock-button.one-star-item-dock-checkout:is(:hover,:focus-visible):not(:disabled){background:#dee2e6!important}
html body.page-singleitem .one-star-item-dock-button .fa-shopping-cart:not(.fa-spin){display:none!important}
/* The dock owns its busy indicator; the copied article spinner stays hidden. */
html body.page-singleitem .one-star-item-dock-button .one-star-direct-spinner{display:none!important}
}

/* The mobile dock is the only visible purchase control. Keep Vue's original
   handlers mounted. A pending intersect must enter the viewport to initialise
   even when the customer has not scrolled to the article purchase section. */
@media(max-width:991.98px){
html.one-star-item-shell-active body.page-singleitem #page-body .single .widget-add-to-basket.widget-primary>.w-100:has(.add-to-basket-container){display:none!important}
html.one-star-item-shell-active body.page-singleitem #page-body .single .widget-add-to-basket.widget-primary>intersect{position:fixed!important;bottom:0!important;left:0!important;width:1px!important;height:1px!important;min-height:0!important;margin:0!important;opacity:0!important;pointer-events:none!important}
html body.page-singleitem .single .one-star-item-payment-options{display:none!important}
}

/* Only the purchase buttons stick; payment marks stay in document flow. */
@media(min-width:992px){
html body.page-singleitem #page-body .single .widget-inner>div:has(>.product-title):has(>.widget-add-to-basket)>.widget-add-to-basket.widget-primary>.w-100{position:sticky!important;top:var(--one-star-header-height,112px)!important;z-index:20;background:#fff;isolation:isolate;box-shadow:none!important}
/* Opaque paint extension: global shadow reset must not remove this cover.
   The lower cover matches the header breadcrumb band (header minus 112px).
   Out-of-flow so the purchase reservation and button heights stay unchanged. */
html body.page-singleitem #page-body .single .widget-inner>div:has(>.product-title):has(>.widget-add-to-basket)>.widget-add-to-basket.widget-primary>.w-100::before{content:"";position:absolute;inset:-8px -15px calc(112px - var(--one-star-header-height,138px));z-index:-1;background:#fff;pointer-events:none}
}

/* Keep delivery text at the start of its reservation, directly below the
   country selector. Never move spare countdown space above the delivery date. */
@media(max-width:991.98px){
html.one-star-item-shell-active body.page-singleitem #page-body .single #arrivedate{display:block}
}

@media(min-width:992px){
/* 14px of the reserved icon footprint plus 21px give the 35px gap. */
}

/* Desktop icons load asynchronously. Reserve their footprint in the following
   benefits widget, so inserting the row does not move the line or accordions. */
@media(min-width:992px){
html body.page-singleitem:has(#one-star-item-payment-options-template) #page-body .single .widget-add-to-basket .one-star-item-payment-options{height:var(--one-star-payment-row-height,14px)!important;min-height:var(--one-star-payment-row-height,14px)!important;margin-bottom:calc(-1 * var(--one-star-payment-row-height,14px))!important}
html body.page-singleitem:has(#one-star-item-payment-options-template) #page-body .single .widget-add-to-basket+.widget-code:has(.shop-benefits-modern){padding-top:var(--one-star-desktop-payment-space,28px)!important}
}

/* Mobile delivery uses the same 14px text size as the adjacent metadata.
   Reserve its actual two/three line rhythm, not a taller generic rem block. */
@media(max-width:991.98px){
html body.page-singleitem #page-body .single #arrivedate{min-height:42px}
html body.page-singleitem #page-body .single #arrivedate:empty::before{height:42px}
html body.page-singleitem #page-body .single #arrivedate .ppp{font-size:14px;line-height:21px}
html body.page-singleitem #page-body .single .widget-code:has(.shop-benefits-modern)+.one-star-accordion{margin-top:calc(35px - 1.5rem)!important}
@container one-star-delivery (max-width:334px){html[lang^="de"] body.page-singleitem #page-body .single #arrivedate{min-height:63px}}
@container one-star-delivery (max-width:314px){html[lang^="fr"] body.page-singleitem #page-body .single #arrivedate{min-height:63px}}
}
