(function(){try{var search=window.location.search||'';var hasInquiryParam=/[?&](inquiry_nonce|inquiry_id|product_id|_cb|_cb_retry)=/.test(search);var cookies=document.cookie||'';var hasSessionCookie=cookies.indexOf('cxb_b2b_session_')!==-1;if(hasInquiryParam||hasSessionCookie){var r=document.documentElement;if(r&&r.classList){r.classList.add('cxb-b2b-needs-verification')}else if(r){r.className+=' cxb-b2b-needs-verification'}}}catch(e){}})() /* v2.2.2 — Suppress the empty-state flash while quote.js reconciles.
Scoped to html.cxb-b2b-needs-verification so only visitors who might
have items (URL params / session cookie) see the spinner substitution.
Plain anonymous visitors don't match the selector and see the empty
message immediately. quote.js removes the class once it has rendered
the real state (or confirmed the basket is genuinely empty). */
html.cxb-b2b-needs-verification .cxb-b2b-quote-request-empty {
position: relative;
min-height: 120px;
}
html.cxb-b2b-needs-verification .cxb-b2b-quote-request-empty > * {
visibility: hidden;
}
html.cxb-b2b-needs-verification .cxb-b2b-quote-request-empty::after {
content: "";
position: absolute;
top: 50%; left: 50%;
margin: -16px 0 0 -16px;
width: 32px; height: 32px;
border: 3px solid #eee;
border-top-color: #666;
border-radius: 50%;
animation: cxb-b2b-quote-loading-spin 0.8s linear infinite;
}
/* Keyframe duplicated here (also in the main