{"version":3,"file":"Interactions.DBPMRWUO.mjs","names":[],"sources":["https:/framerusercontent.com/modules/YMIcf8bYhTiCSeRHJdak/ueo5u49EFvPoln1Qhv6y/Interactions.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{RenderTarget}from\"framer\";import{useEffect}from\"react\";/**\n * Site interactions.\n *\n * Every Framer code override for this project lives here so the shared\n * helpers (element lookup, mount retry, cart storage) are defined once.\n * The price range slider stays in its own file because it is a code\n * *component* - canvas instances reference it by file id.\n *\n * Exports\n *   withCarouselPrev / withCarouselNext  - any horizontal product rail\n *   withProductGallery                   - PDP gallery: click select, zoom\n *   withProductOptions                   - PDP colour / size / quantity\n *   withAddToCart / withCartBadge        - cart state, nav badge, drawer\n *   withCartPage                         - cart page contents\n *   withFullWidthMenu                    - full-bleed Explore mega menu\n *//* =============================== cart =============================== */const KEY=\"bitpan-cart-v2\";const CHANGED=\"bitpan-cart-change\";const IDLE_LABEL=\"Add to cart\";const INK=\"rgb(0, 0, 0)\";const MUTED=\"rgb(75, 85, 99)\";const BORDER=\"rgb(229, 231, 235)\";const SUBTLE=\"rgb(212, 212, 219)\";const SANS='\"DM Sans\", ui-sans-serif, system-ui, sans-serif';const SERIF='\"Playfair Display\", ui-serif, Georgia, serif';const EASE=\"cubic-bezier(0.44, 0, 0.56, 1)\";const MINUS=\"−\";const CLOSE_X=\"✕\";const TRASH_SVG='<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" '+'stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">'+'<path d=\"M3 6h18\"/><path d=\"M8 6V4h8v2\"/><path d=\"M19 6l-1 14H6L5 6\"/>'+'<path d=\"M10 11v6\"/><path d=\"M14 11v6\"/></svg>';function q(name,root){const scope=root||document;return scope.querySelector('[data-framer-name=\"'+name+'\"]');}/** Everything about the product on screen lives inside this column. */function infoRoot(){return q(\"Product Info\");}function whenReady(run,cleanups){let tries=0;function attempt(){if(run())return;if(tries++>25)return;const t=window.setTimeout(attempt,120);cleanups.push(()=>window.clearTimeout(t));}attempt();}/**\n * Framer keeps more than one breakpoint copy of a layer in the published DOM\n * and hides the inactive ones with media queries, so an override placed on the\n * nav bar mounts more than once. Each copy was installing its own scroll\n * listener, MutationObserver and binder set, so the document-wide interaction\n * layer ran in duplicate and every scroll frame paid for it twice. These\n * binders are page-level singletons: the first copy installs, the last copy to\n * unmount tears down.\n */const singletons={};function acquire(key,install){let entry=singletons[key];if(!entry){entry={count:0,cleanup:install()};singletons[key]=entry;}entry.count+=1;let released=false;return()=>{if(released)return;released=true;entry.count-=1;if(entry.count>0)return;entry.cleanup();delete singletons[key];};}function readCart(){try{const raw=window.localStorage.getItem(KEY);if(!raw)return{};const parsed=JSON.parse(raw);if(!parsed||typeof parsed!==\"object\")return{};const out={};for(const k in parsed){const v=parsed[k];if(v&&typeof v===\"object\"&&typeof v.qty===\"number\"&&v.qty>0){out[k]=v;}}return out;}catch(e){return{};}}function writeCart(cart){try{window.localStorage.setItem(KEY,JSON.stringify(cart));window.dispatchEvent(new CustomEvent(CHANGED));}catch(e){}}function totalItems(cart){let n=0;for(const k in cart)n+=cart[k].qty;return n;}function priceOf(text){const m=String(text||\"\").match(/[\\d,]+(?:\\.\\d+)?/);return m?parseFloat(m[0].replace(/,/g,\"\")):0;}function money(n){return\"$\"+n.toFixed(2);}function deepestText(el2){if(!el2)return null;let node=el2;while(node.children.length>0)node=node.children[0];return node;}function textOf(el2){return el2&&el2.textContent?el2.textContent.trim():\"\";}/** Product name, scoped to the info column so related-product cards never match. */function productName(){const root=infoRoot();if(!root)return\"\";return textOf(q(\"Title\",root))||textOf(q(\"Current\",root));}function productKey(){return productName().toLowerCase();}function selectedIn(groupName,options){const root=infoRoot();const group=root?q(groupName,root):null;if(!group)return\"\";let fallback=\"\";for(let i=0;i<options.length;i++){const chip=q(options[i],group);if(!chip)continue;if(!fallback)fallback=options[i];const bordered=chip.getAttribute(\"data-border\")===\"true\"?chip:chip.querySelector('[data-border=\"true\"]')||chip;const c=bordered.style.getPropertyValue(\"--border-color\").trim();if(c===INK||c===\"#000000\"||c===\"black\")return options[i];}return fallback;}function currentQty(){const root=infoRoot();const qty=root?q(\"Qty\",root):null;if(!qty)return 1;const minus=q(\"Minus\",qty);const plus=q(\"Plus\",qty);const box=minus?minus.parentElement:plus?plus.parentElement:null;if(!box)return 1;const kids=Array.prototype.slice.call(box.children);const n=parseInt(textOf(deepestText(kids.length>=3?kids[1]:null))||\"1\",10);return isNaN(n)||n<1?1:n;}function currentPrice(){const root=infoRoot();return root?textOf(q(\"Price\",root)):\"\";}function currentImage(){const main=q(\"Main Image\");if(!main)return\"\";const cur=main.getAttribute(\"data-gallery-current\");if(cur)return cur;const img=main.querySelector(\"img\");return img?img.getAttribute(\"src\")||\"\":\"\";}/* ----------------------------- badge ----------------------------- */function badgeAnchor(){const el2=q(\"Cart\");if(!el2)return null;let anchor=el2;try{if(typeof SVGElement!==\"undefined\"&&el2 instanceof SVGElement)anchor=el2.parentElement;}catch(e){}if(anchor&&anchor.tagName&&anchor.tagName.toLowerCase()===\"svg\")anchor=anchor.parentElement;return anchor;}function paintBadge(total){const anchor=badgeAnchor();if(!anchor)return;anchor.style.position=\"relative\";anchor.style.overflow=\"visible\";let badge=anchor.querySelector(\"span[data-cart-badge]\");if(!badge){badge=document.createElement(\"span\");badge.setAttribute(\"data-cart-badge\",\"true\");const s=badge.style;s.position=\"absolute\";s.top=\"-7px\";s.right=\"-9px\";s.minWidth=\"17px\";s.height=\"17px\";s.padding=\"0 4px\";s.borderRadius=\"99px\";s.background=INK;s.color=\"#fff\";s.fontFamily=SANS;s.fontSize=\"10px\";s.lineHeight=\"17px\";s.textAlign=\"center\";s.fontWeight=\"500\";s.pointerEvents=\"none\";s.boxSizing=\"border-box\";s.zIndex=\"5\";anchor.appendChild(badge);}badge.textContent=String(total);badge.style.display=total>0?\"block\":\"none\";}/**\n * Navigate to a site page.\n *\n * Framer emits relative hrefs and does not necessarily serve the site from\n * the domain root (editor preview in particular), so a hardcoded absolute\n * path 404s. Reuse a real anchor Framer already rendered for that page so\n * its router handles the navigation; fall back to resolving against an\n * existing nav link, then to the raw path.\n */function goToPage(slug){if(typeof document===\"undefined\")return;const anchors=Array.prototype.slice.call(document.querySelectorAll(\"a[href]\"));for(let i=0;i<anchors.length;i++){let path=\"\";try{path=new URL(anchors[i].href,window.location.href).pathname.replace(/\\/+$/,\"\");}catch(e){path=\"\";}if(path&&path.split(\"/\").pop()===slug){// let Framer's router handle it - a hand-built URL 404s because the\n// site is not always served from the domain root\nanchors[i].click();return;}}for(let i=0;i<anchors.length;i++){let url=null;try{url=new URL(anchors[i].href,window.location.href);}catch(e){url=null;}if(!url)continue;const clean=url.pathname.replace(/\\/+$/,\"\");if(clean===\"\"||clean===\"/\"){window.location.href=url.origin+\"/\"+slug;return;}}window.location.href=\"/\"+slug;}/* ----------------------------- drawer ----------------------------- */function el(tag,style,text){const node=document.createElement(tag);for(const k in style)node.style[k]=style[k];if(text!==undefined)node.textContent=text;return node;}function roundBtn(label){return el(\"button\",{width:\"26px\",height:\"26px\",borderRadius:\"99px\",border:\"1px solid \"+BORDER,background:\"#fff\",color:INK,cursor:\"pointer\",fontFamily:SANS,fontSize:\"13px\",lineHeight:\"1\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",padding:\"0\",flex:\"none\"},label);}/* ------------------------- coupon disclosure ------------------------- */const CHEVRON_SVG='<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M6 9l6 6 6-6\"/></svg>';/**\n * \"Add coupons\" row on the cart totals. The header toggles a collapsible panel\n * holding the code field and its apply action, and rotates the chevron to match.\n */function couponSection(){const section=el(\"div\",{borderTop:\"1px solid \"+BORDER});const header=el(\"button\",{display:\"flex\",justifyContent:\"space-between\",alignItems:\"center\",width:\"100%\",padding:\"14px 0\",margin:\"0\",border:\"none\",background:\"transparent\",cursor:\"pointer\",textAlign:\"left\"});header.setAttribute(\"type\",\"button\");header.setAttribute(\"aria-expanded\",\"false\");header.appendChild(el(\"span\",{fontFamily:SANS,fontSize:\"12px\",color:MUTED,textTransform:\"uppercase\",letterSpacing:\"0.03em\"},\"Add coupons\"));const chev=el(\"span\",{color:INK,display:\"flex\",alignItems:\"center\",transition:\"transform 0.25s ease\"});chev.innerHTML=CHEVRON_SVG;header.appendChild(chev);const panel=el(\"div\",{overflow:\"hidden\",maxHeight:\"0px\",transition:\"max-height 0.28s ease\"});const inner=el(\"div\",{display:\"flex\",alignItems:\"stretch\",gap:\"10px\",paddingBottom:\"6px\"});const input=el(\"input\",{flex:\"1 1 auto\",minWidth:\"0\",height:\"52px\",boxSizing:\"border-box\",padding:\"0 16px\",borderRadius:\"8px\",border:\"1px solid \"+INK,background:\"#fff\",color:INK,fontFamily:SANS,fontSize:\"13px\",textTransform:\"uppercase\",letterSpacing:\"0.03em\",outline:\"none\"});input.setAttribute(\"type\",\"text\");input.setAttribute(\"placeholder\",\"Enter code\");input.setAttribute(\"aria-label\",\"Coupon code\");const apply=el(\"button\",{flex:\"0 0 auto\",width:\"130px\",height:\"52px\",borderRadius:\"6px\",border:\"none\",background:\"rgb(58, 58, 58)\",color:\"rgba(255, 255, 255, 0.72)\",cursor:\"pointer\",fontFamily:SANS,fontSize:\"12px\",textTransform:\"uppercase\",letterSpacing:\"0.04em\"},\"Apply\");apply.setAttribute(\"type\",\"button\");const note=el(\"div\",{display:\"none\",fontFamily:SANS,fontSize:\"12px\",lineHeight:\"1.5\",color:MUTED,paddingBottom:\"6px\"});inner.appendChild(input);inner.appendChild(apply);panel.appendChild(inner);panel.appendChild(note);let open=false;const measure=()=>{if(open)panel.style.maxHeight=panel.scrollHeight+\"px\";};const setOpen=next=>{open=next;header.setAttribute(\"aria-expanded\",String(open));chev.style.transform=open?\"rotate(180deg)\":\"rotate(0deg)\";panel.style.maxHeight=open?panel.scrollHeight+\"px\":\"0px\";if(open)input.focus();};header.addEventListener(\"click\",()=>setOpen(!open));const submit=()=>{const code=input.value.trim();note.textContent=code?\"“\"+code.toUpperCase()+\"” is not a valid coupon code.\":\"Enter a coupon code first.\";note.style.display=\"block\";measure();};apply.addEventListener(\"click\",submit);input.addEventListener(\"keydown\",ev=>{if(ev.key!==\"Enter\")return;ev.preventDefault();submit();});// keep the panel sized to its content when the viewport reflows it\nwindow.addEventListener(\"resize\",measure);section.appendChild(header);section.appendChild(panel);return section;}function buildDrawer(){let root=document.querySelector(\"div[data-cart-drawer]\");if(root)return root;root=el(\"div\",{position:\"fixed\",left:\"0\",top:\"0\",width:\"100%\",height:\"100%\",zIndex:\"99999\",visibility:\"hidden\",fontFamily:SANS});root.setAttribute(\"data-cart-drawer\",\"true\");const scrim=el(\"div\",{position:\"absolute\",left:\"0\",top:\"0\",width:\"100%\",height:\"100%\",background:\"rgba(0, 0, 0, 0.35)\",opacity:\"0\",transition:\"opacity 350ms \"+EASE});scrim.setAttribute(\"data-cart-scrim\",\"true\");const panel=el(\"aside\",{position:\"absolute\",right:\"0\",top:\"0\",height:\"100%\",width:\"min(480px, 100%)\",maxWidth:\"100%\",background:\"#fff\",display:\"flex\",flexDirection:\"column\",overflowX:\"hidden\",transform:\"translateX(100%)\",transition:\"transform 350ms \"+EASE,boxShadow:\"-8px 0 40px rgba(0,0,0,0.10)\",boxSizing:\"border-box\"});panel.setAttribute(\"data-cart-panel\",\"true\");const header=el(\"div\",{display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",gap:\"12px\",padding:\"26px 28px 18px 28px\",borderBottom:\"1px solid \"+BORDER,flex:\"none\"});const titleWrap=el(\"div\",{display:\"flex\",alignItems:\"baseline\",gap:\"10px\"});titleWrap.appendChild(el(\"h2\",{fontFamily:SERIF,fontStyle:\"italic\",fontWeight:\"400\",fontSize:\"26px\",margin:\"0\",color:INK},\"Your cart\"));const count=el(\"span\",{fontFamily:SERIF,fontStyle:\"italic\",fontSize:\"20px\",color:INK});count.setAttribute(\"data-cart-count\",\"true\");titleWrap.appendChild(count);const close=el(\"button\",{width:\"30px\",height:\"30px\",border:\"none\",background:\"transparent\",cursor:\"pointer\",fontSize:\"22px\",lineHeight:\"1\",color:INK,padding:\"0\",flex:\"none\"},CLOSE_X);close.setAttribute(\"aria-label\",\"Close cart\");header.appendChild(titleWrap);header.appendChild(close);const list=el(\"div\",{flex:\"1 1 auto\",overflowY:\"auto\",overflowX:\"hidden\",padding:\"0 28px\"});list.setAttribute(\"data-cart-items\",\"true\");const footer=el(\"div\",{flex:\"none\",borderTop:\"1px solid \"+BORDER,padding:\"20px 28px 26px 28px\"});footer.setAttribute(\"data-cart-footer\",\"true\");panel.appendChild(header);panel.appendChild(list);panel.appendChild(footer);root.appendChild(scrim);root.appendChild(panel);document.body.appendChild(root);scrim.addEventListener(\"click\",()=>closeDrawer());close.addEventListener(\"click\",()=>closeDrawer());return root;}function renderDrawer(){const root=buildDrawer();const cart=readCart();const keys=Object.keys(cart);const countEl=root.querySelector(\"[data-cart-count]\");if(countEl)countEl.textContent=\"(items: \"+totalItems(cart)+\")\";const list=root.querySelector(\"[data-cart-items]\");if(list){list.innerHTML=\"\";if(keys.length===0){list.appendChild(el(\"p\",{fontFamily:SANS,fontSize:\"13px\",color:MUTED,padding:\"34px 0\",textTransform:\"uppercase\"},\"Your cart is empty.\"));}keys.forEach(key=>{const item=cart[key];const row=el(\"div\",{display:\"flex\",gap:\"16px\",padding:\"22px 0\",borderBottom:\"1px solid \"+BORDER,minWidth:\"0\"});const thumb=el(\"div\",{width:\"80px\",height:\"96px\",flex:\"none\",background:\"#F5F0EC\",backgroundImage:item.image?'url(\"'+item.image+'\")':\"none\",backgroundSize:\"cover\",backgroundPosition:\"center\"});const info=el(\"div\",{flex:\"1 1 auto\",minWidth:\"0\"});const top=el(\"div\",{display:\"flex\",justifyContent:\"space-between\",gap:\"12px\",alignItems:\"flex-start\"});top.appendChild(el(\"span\",{fontFamily:SANS,fontSize:\"13px\",color:INK,textTransform:\"uppercase\",letterSpacing:\"0.02em\",minWidth:\"0\",overflowWrap:\"anywhere\"},item.name||key));top.appendChild(el(\"span\",{fontFamily:SANS,fontSize:\"13px\",color:INK,whiteSpace:\"nowrap\",flex:\"none\"},item.price||\"\"));const variant=[item.color,item.size].filter(Boolean).join(\" / \");const sub=el(\"div\",{fontFamily:SANS,fontSize:\"12px\",color:MUTED,textTransform:\"uppercase\",marginTop:\"4px\"},variant);const controls=el(\"div\",{display:\"flex\",alignItems:\"center\",gap:\"10px\",marginTop:\"14px\"});const minus=roundBtn(MINUS);const qtyEl=el(\"span\",{fontFamily:SANS,fontSize:\"13px\",minWidth:\"18px\",textAlign:\"center\"},String(item.qty));const plus=roundBtn(\"+\");const trash=el(\"button\",{border:\"none\",background:\"transparent\",cursor:\"pointer\",marginLeft:\"6px\",color:INK,padding:\"0\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",flex:\"none\"});trash.innerHTML=TRASH_SVG;trash.setAttribute(\"aria-label\",\"Remove \"+(item.name||key));minus.addEventListener(\"click\",()=>{const c=readCart();if(!c[key])return;c[key].qty-=1;if(c[key].qty<1)delete c[key];writeCart(c);});plus.addEventListener(\"click\",()=>{const c=readCart();if(!c[key])return;c[key].qty+=1;writeCart(c);});trash.addEventListener(\"click\",()=>{const c=readCart();delete c[key];writeCart(c);});controls.appendChild(minus);controls.appendChild(qtyEl);controls.appendChild(plus);controls.appendChild(trash);info.appendChild(top);if(variant)info.appendChild(sub);info.appendChild(controls);row.appendChild(thumb);row.appendChild(info);list.appendChild(row);});}const footer=root.querySelector(\"[data-cart-footer]\");if(footer){footer.innerHTML=\"\";let subtotal=0;keys.forEach(k=>subtotal+=priceOf(cart[k].price)*cart[k].qty);const line=el(\"div\",{display:\"flex\",justifyContent:\"space-between\",alignItems:\"baseline\"});line.appendChild(el(\"span\",{fontFamily:SANS,fontSize:\"13px\",color:INK,textTransform:\"uppercase\"},\"Subtotal\"));line.appendChild(el(\"span\",{fontFamily:SANS,fontSize:\"15px\",color:INK},money(subtotal)));const note=el(\"p\",{fontFamily:SANS,fontSize:\"11px\",color:MUTED,textTransform:\"uppercase\",margin:\"8px 0 18px 0\",lineHeight:\"1.5\"},\"Shipping, taxes, and discounts calculated at checkout.\");const row=el(\"div\",{display:\"flex\",gap:\"12px\"});const viewBtn=el(\"button\",{flex:\"1 1 0\",height:\"48px\",borderRadius:\"99px\",border:\"1px solid \"+INK,background:\"#fff\",color:INK,cursor:\"pointer\",fontFamily:SANS,fontSize:\"12px\",textTransform:\"uppercase\",letterSpacing:\"0.04em\"},\"View my cart\");viewBtn.addEventListener(\"click\",()=>{closeDrawer();goToPage(\"cart\");});row.appendChild(viewBtn);row.appendChild(el(\"button\",{flex:\"1 1 0\",height:\"48px\",borderRadius:\"99px\",border:\"1px solid \"+INK,background:INK,color:\"#fff\",cursor:\"pointer\",fontFamily:SANS,fontSize:\"12px\",textTransform:\"uppercase\",letterSpacing:\"0.04em\"},\"Go to checkout\"));footer.appendChild(line);footer.appendChild(note);const goBtn=row.lastElementChild;if(goBtn)goBtn.addEventListener(\"click\",()=>{closeDrawer();goToCheckout();});footer.appendChild(row);}}const CHECKOUT_URL=\"https://ecom-framer.myshopify.com/password\";function goToCheckout(){if(typeof window===\"undefined\")return;window.location.href=CHECKOUT_URL;}function openDrawer(){const root=buildDrawer();renderDrawer();root.style.visibility=\"visible\";const scrim=root.querySelector(\"[data-cart-scrim]\");const panel=root.querySelector(\"[data-cart-panel]\");requestAnimationFrame(()=>{if(scrim)scrim.style.opacity=\"1\";if(panel)panel.style.transform=\"translateX(0)\";});document.body.style.overflow=\"hidden\";}function closeDrawer(){const root=document.querySelector(\"div[data-cart-drawer]\");if(!root)return;const scrim=root.querySelector(\"[data-cart-scrim]\");const panel=root.querySelector(\"[data-cart-panel]\");if(scrim)scrim.style.opacity=\"0\";if(panel)panel.style.transform=\"translateX(100%)\";document.body.style.overflow=\"\";window.setTimeout(()=>{if(root)root.style.visibility=\"hidden\";},360);}/* ---------------------------- overrides ---------------------------- */export function withCartBadge(Component){return function CartBadge(props){useEffect(()=>{if(typeof document===\"undefined\"||typeof window===\"undefined\")return;const cleanups=[];whenReady(()=>{const anchor=badgeAnchor();if(!anchor)return false;const refresh=()=>{paintBadge(totalItems(readCart()));const root=document.querySelector(\"div[data-cart-drawer]\");if(root&&root.style.visibility===\"visible\")renderDrawer();};refresh();anchor.style.cursor=\"pointer\";const trigger=q(\"Cart\")||anchor;const onClick=e=>{e.preventDefault();e.stopPropagation();openDrawer();};trigger.addEventListener(\"click\",onClick);cleanups.push(()=>trigger.removeEventListener(\"click\",onClick));const onKey=e=>{if(e.key===\"Escape\")closeDrawer();};window.addEventListener(\"keydown\",onKey);cleanups.push(()=>window.removeEventListener(\"keydown\",onKey));window.addEventListener(CHANGED,refresh);cleanups.push(()=>window.removeEventListener(CHANGED,refresh));const onStorage=ev=>{if(ev.key===KEY)refresh();};window.addEventListener(\"storage\",onStorage);cleanups.push(()=>window.removeEventListener(\"storage\",onStorage));return true;},cleanups);return()=>cleanups.forEach(fn=>fn());},[]);return /*#__PURE__*/_jsx(Component,{...props});};}export function withAddToCart(Component){return function AddToCart(props){useEffect(()=>{if(typeof document===\"undefined\"||typeof window===\"undefined\")return;const cleanups=[];whenReady(()=>{const root=infoRoot();const button=root?q(\"Add To Cart\",root):null;if(!button)return false;const paintLabel=()=>{const cart=readCart();const item=cart[productKey()];const label=deepestText(button);if(label)label.textContent=item?item.qty+\" in cart\":IDLE_LABEL;paintBadge(totalItems(cart));};paintLabel();const onClick=()=>{const name=productName();if(!name)return;// never store an entry we cannot identify\nconst key=name.toLowerCase();const cart=readCart();const existing=cart[key];cart[key]={name:name,price:currentPrice(),image:currentImage(),color:selectedIn(\"Color\",[\"Beige\",\"Green\",\"Violet\"]),size:selectedIn(\"Pack Size\",[\"1 Sheet\",\"2 Sheet\",\"3 Sheet\",\"5 Sheet\"]),qty:(existing?existing.qty:0)+currentQty()};writeCart(cart);paintLabel();};button.addEventListener(\"click\",onClick);cleanups.push(()=>button.removeEventListener(\"click\",onClick));window.addEventListener(CHANGED,paintLabel);cleanups.push(()=>window.removeEventListener(CHANGED,paintLabel));const title=q(\"Title\",root);if(title&&typeof MutationObserver!==\"undefined\"){const mo=new MutationObserver(()=>paintLabel());mo.observe(title,{childList:true,subtree:true,characterData:true});cleanups.push(()=>mo.disconnect());}return true;},cleanups);return()=>cleanups.forEach(fn=>fn());},[]);return /*#__PURE__*/_jsx(Component,{...props});};}/* ---------------------------- cart page ---------------------------- */function setNewInStoreVisible(show){const sec=q(\"New In Store\");if(sec)sec.style.display=show?\"\":\"none\";}function renderCartPage(host){const cart=readCart();const keys=Object.keys(cart);host.innerHTML=\"\";setNewInStoreVisible(keys.length===0);if(keys.length===0){const empty=el(\"div\",{display:\"flex\",flexDirection:\"column\",alignItems:\"flex-start\",gap:\"22px\",width:\"100%\",padding:\"6px 0 30px 0\"});empty.appendChild(el(\"p\",{fontFamily:SANS,fontSize:\"14px\",color:MUTED,textTransform:\"uppercase\",letterSpacing:\"0.02em\",margin:\"0\"},\"Your cart is currently empty!\"));const shop=el(\"a\",{fontFamily:SANS,fontSize:\"12px\",textTransform:\"uppercase\",letterSpacing:\"0.04em\",color:INK,textDecoration:\"none\",border:\"1px solid \"+INK,borderRadius:\"99px\",padding:\"15px 34px\"},\"Continue shopping\");shop.href=\"#\";shop.addEventListener(\"click\",e2=>{e2.preventDefault();goToPage(\"shop\");});empty.appendChild(shop);host.appendChild(empty);return;}const wrap=el(\"div\",{display:\"flex\",gap:\"70px\",width:\"100%\",alignItems:\"flex-start\",flexWrap:\"wrap\"});/* ---- line items ---- */const table=el(\"div\",{flex:\"1 1 520px\",minWidth:\"0\",borderTop:\"1px solid \"+BORDER});keys.forEach(key=>{const item=cart[key];const row=el(\"div\",{display:\"flex\",gap:\"20px\",alignItems:\"flex-start\",padding:\"26px 0\",borderBottom:\"1px solid \"+BORDER});const thumb=el(\"div\",{width:\"88px\",height:\"112px\",flex:\"none\",background:\"#F5F0EC\",backgroundImage:item.image?'url(\"'+item.image+'\")':\"none\",backgroundSize:\"cover\",backgroundPosition:\"center\"});const info=el(\"div\",{flex:\"1 1 auto\",minWidth:\"0\"});const top=el(\"div\",{display:\"flex\",justifyContent:\"space-between\",gap:\"16px\",alignItems:\"flex-start\"});top.appendChild(el(\"span\",{fontFamily:SANS,fontSize:\"13px\",color:INK,textTransform:\"uppercase\",letterSpacing:\"0.02em\",minWidth:\"0\",overflowWrap:\"anywhere\"},item.name||key));top.appendChild(el(\"span\",{fontFamily:SANS,fontSize:\"13px\",color:INK,whiteSpace:\"nowrap\",flex:\"none\"},money(priceOf(item.price)*item.qty)));info.appendChild(top);const variant=[item.color,item.size].filter(Boolean).join(\" / \");if(variant){info.appendChild(el(\"div\",{fontFamily:SANS,fontSize:\"12px\",color:MUTED,textTransform:\"uppercase\",marginTop:\"5px\"},variant));}const controls=el(\"div\",{display:\"flex\",alignItems:\"center\",gap:\"10px\",marginTop:\"16px\"});const minus=roundBtn(MINUS);const qtyEl=el(\"span\",{fontFamily:SANS,fontSize:\"13px\",minWidth:\"18px\",textAlign:\"center\"},String(item.qty));const plus=roundBtn(\"+\");const remove=el(\"button\",{border:\"none\",background:\"transparent\",cursor:\"pointer\",color:INK,padding:\"0\",marginLeft:\"8px\",display:\"flex\",alignItems:\"center\",flex:\"none\"});remove.innerHTML=TRASH_SVG;remove.setAttribute(\"aria-label\",\"Remove \"+(item.name||key));minus.addEventListener(\"click\",()=>{const c2=readCart();if(!c2[key])return;c2[key].qty-=1;if(c2[key].qty<1)delete c2[key];writeCart(c2);});plus.addEventListener(\"click\",()=>{const c2=readCart();if(!c2[key])return;c2[key].qty+=1;writeCart(c2);});remove.addEventListener(\"click\",()=>{const c2=readCart();delete c2[key];writeCart(c2);});controls.appendChild(minus);controls.appendChild(qtyEl);controls.appendChild(plus);controls.appendChild(remove);info.appendChild(controls);row.appendChild(thumb);row.appendChild(info);table.appendChild(row);});/* ---- cart totals ---- */let subtotal=0;keys.forEach(k=>subtotal+=priceOf(cart[k].price)*cart[k].qty);const tax=subtotal*.1;const estimated=subtotal+tax;const totals=el(\"div\",{flex:\"0 1 340px\",minWidth:\"280px\",boxSizing:\"border-box\"});totals.appendChild(el(\"h3\",{fontFamily:SERIF,fontStyle:\"italic\",fontWeight:\"400\",fontSize:\"24px\",margin:\"0 0 16px 0\",color:INK},\"Cart totals\"));const rowLine=(label,value,opts)=>{const r2=el(\"div\",{display:\"flex\",justifyContent:\"space-between\",alignItems:\"center\",padding:\"14px 0\",borderTop:\"1px solid \"+BORDER});r2.appendChild(el(\"span\",{fontFamily:SANS,fontSize:\"12px\",color:opts.strong?INK:MUTED,textTransform:\"uppercase\",letterSpacing:\"0.03em\"},label));if(opts.chevron){const chev=el(\"span\",{color:INK,display:\"flex\",alignItems:\"center\"});chev.innerHTML='<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M6 9l6 6 6-6\"/></svg>';r2.appendChild(chev);}else{r2.appendChild(el(\"span\",{fontFamily:SANS,fontSize:opts.strong?\"15px\":\"13px\",color:INK},value));}return r2;};totals.appendChild(couponSection());totals.appendChild(rowLine(\"Tax\",money(tax),{}));totals.appendChild(rowLine(\"Estimated total\",money(estimated),{strong:true}));const checkout=el(\"button\",{width:\"100%\",height:\"52px\",marginTop:\"22px\",borderRadius:\"99px\",border:\"1px solid \"+INK,background:INK,color:\"#fff\",cursor:\"pointer\",fontFamily:SANS,fontSize:\"12px\",textTransform:\"uppercase\",letterSpacing:\"0.04em\"},\"Proceed to checkout\");checkout.addEventListener(\"click\",goToCheckout);totals.appendChild(checkout);wrap.appendChild(table);wrap.appendChild(totals);host.appendChild(wrap);}export function withCartPage(Component){return function CartPage(props){useEffect(()=>{if(typeof document===\"undefined\"||typeof window===\"undefined\")return;const cleanups=[];whenReady(()=>{const host=q(\"Cart Body\");if(!host)return false;const refresh=()=>renderCartPage(host);refresh();// you are already on the cart, so the nav cart entry is redundant\nconst navCart=q(\"Cart Link\");if(navCart){const previous=navCart.style.display;navCart.style.display=\"none\";cleanups.push(()=>{navCart.style.display=previous;});}window.addEventListener(CHANGED,refresh);cleanups.push(()=>window.removeEventListener(CHANGED,refresh));const onStorage=ev=>{if(ev.key===KEY)refresh();};window.addEventListener(\"storage\",onStorage);cleanups.push(()=>window.removeEventListener(\"storage\",onStorage));return true;},cleanups);return()=>cleanups.forEach(fn=>fn());},[]);return /*#__PURE__*/_jsx(Component,{...props});};}/* ============================ back to top ============================ *//**\n * Scrolls the window back to the top. The button stays out of the way until the\n * visitor is far enough down the page for it to be worth showing.\n */export function withBackToTop(Component){return function BackToTop(props){useEffect(()=>{if(typeof document===\"undefined\"||typeof window===\"undefined\")return;return acquire(\"backToTop\",()=>{const cleanups=[];whenReady(()=>{const host=q(\"Back To Top\");if(!host)return false;host.style.transition=\"opacity 0.25s ease, transform 0.25s ease\";// the scroll listener fires far more often than the button\n// changes state, so the style writes are gated behind an\n// actual flip and batched into a frame\nlet visible=null;const applyVisible=()=>{const shown=(window.scrollY||window.pageYOffset||0)>400;if(shown===visible)return;visible=shown;host.style.opacity=shown?\"1\":\"0\";host.style.pointerEvents=shown?\"auto\":\"none\";host.style.transform=shown?\"translateY(0)\":\"translateY(8px)\";};let syncQueued=false;const sync=()=>{if(syncQueued)return;syncQueued=true;requestAnimationFrame(()=>{syncQueued=false;applyVisible();});};applyVisible();const onClick=ev=>{ev.preventDefault();window.scrollTo({top:0,behavior:\"smooth\"});};host.addEventListener(\"click\",onClick);window.addEventListener(\"scroll\",sync,{passive:true});cleanups.push(()=>host.removeEventListener(\"click\",onClick));cleanups.push(()=>window.removeEventListener(\"scroll\",sync));return true;},cleanups);return()=>cleanups.forEach(fn=>fn());});},[]);return /*#__PURE__*/_jsx(Component,{...props});};}/* =========================== drag to scroll =========================== *//**\n * Lets a mouse user grab a horizontally overflowing strip and drag it sideways.\n * Touch already scrolls natively, so pointer input is only taken over for a\n * mouse. A drag past a few pixels swallows the click so the tab underneath\n * does not switch on release.\n */export function withDragScroll(Component){return function DragScroll(props){useEffect(()=>{if(typeof document===\"undefined\"||typeof window===\"undefined\")return;const cleanups=[];whenReady(()=>{const host=q(\"Tabs\");if(!host)return false;let down=false;let moved=false;let startX=0;let startLeft=0;const canScroll=()=>host.scrollWidth>host.clientWidth+1;const sync=()=>{host.style.cursor=canScroll()?\"grab\":\"\";};const onDown=e=>{if(e.pointerType!==\"mouse\"||!canScroll())return;down=true;moved=false;startX=e.clientX;startLeft=host.scrollLeft;host.style.cursor=\"grabbing\";host.style.userSelect=\"none\";};const onMove=e=>{if(!down)return;const dx=e.clientX-startX;if(Math.abs(dx)>4)moved=true;host.scrollLeft=startLeft-dx;};const stop=()=>{if(!down)return;down=false;host.style.userSelect=\"\";sync();};const onClick=e=>{if(!moved)return;e.preventDefault();e.stopPropagation();moved=false;};sync();host.addEventListener(\"pointerdown\",onDown);window.addEventListener(\"pointermove\",onMove);window.addEventListener(\"pointerup\",stop);host.addEventListener(\"click\",onClick,true);window.addEventListener(\"resize\",sync);cleanups.push(()=>host.removeEventListener(\"pointerdown\",onDown));cleanups.push(()=>window.removeEventListener(\"pointermove\",onMove));cleanups.push(()=>window.removeEventListener(\"pointerup\",stop));cleanups.push(()=>host.removeEventListener(\"click\",onClick,true));cleanups.push(()=>window.removeEventListener(\"resize\",sync));return true;},cleanups);return()=>cleanups.forEach(fn=>fn());},[]);return /*#__PURE__*/_jsx(Component,{...props});};}/* ========================= password visibility ========================= */const EYE_ATTRS='width=\"17\" height=\"17\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" '+'stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"';const EYE_SHOWN=\"<svg \"+EYE_ATTRS+\">\"+'<path d=\"M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7-10-7-10-7Z\"/>'+'<circle cx=\"12\" cy=\"12\" r=\"3\"/></svg>';const EYE_HIDDEN=\"<svg \"+EYE_ATTRS+\">\"+'<path d=\"M10.7 5.1A10.5 10.5 0 0 1 12 5c6.5 0 10 7 10 7a18 18 0 0 1-2.4 3.4\"/>'+'<path d=\"M6.3 6.3A17 17 0 0 0 2 12s3.5 7 10 7a10 10 0 0 0 5.2-1.4\"/>'+'<path d=\"M9.9 9.9a3 3 0 0 0 4.2 4.2\"/><path d=\"m3 3 18 18\"/></svg>';/**\n * The eye beside the password box is only a drawing on the canvas, so it\n * needs the show / hide behaviour wiring up by hand.\n */export function withPasswordToggle(Component){return function PasswordToggle(props){useEffect(()=>{if(typeof document===\"undefined\")return;const cleanups=[];whenReady(()=>{const toggle=q(\"Toggle Password\");const field=q(\"Password\");const input=field?field.querySelector(\"input\"):null;if(!toggle||!input)return false;// Framer form inputs offer no password type, so the field renders\n// as plain text - mask it here and let the eye reveal it\ninput.type=\"password\";input.setAttribute(\"autocomplete\",\"current-password\");let shown=false;const paint=()=>{toggle.innerHTML=shown?EYE_SHOWN:EYE_HIDDEN;toggle.setAttribute(\"aria-label\",shown?\"Hide password\":\"Show password\");toggle.setAttribute(\"aria-pressed\",String(shown));};toggle.setAttribute(\"role\",\"button\");toggle.setAttribute(\"tabindex\",\"0\");paint();const flip=()=>{shown=!shown;input.type=shown?\"text\":\"password\";paint();input.focus();};const onClick=e=>{e.preventDefault();e.stopPropagation();flip();};const onKey=e=>{if(e.key!==\"Enter\"&&e.key!==\" \")return;e.preventDefault();flip();};const enforce=()=>{const want=shown?\"text\":\"password\";if(input.type!==want)input.type=want;};input.addEventListener(\"focus\",enforce);cleanups.push(()=>input.removeEventListener(\"focus\",enforce));toggle.addEventListener(\"click\",onClick);toggle.addEventListener(\"keydown\",onKey);cleanups.push(()=>toggle.removeEventListener(\"click\",onClick));cleanups.push(()=>toggle.removeEventListener(\"keydown\",onKey));return true;},cleanups);return()=>cleanups.forEach(fn=>fn());},[]);return /*#__PURE__*/_jsx(Component,{...props});};}/* ======================= comment form checkbox ======================= */const CHECK_ID=\"bitpan-comment-check\";/**\n * Framer paints a checked box as a flat block of colour and draws no tick,\n * so the checked state reads as a plain black square. Draw the tick here.\n */const TICK_SVG=\"data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27\"+\"%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27white%27\"+\"%20stroke-width%3D%273%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E\"+\"%3Cpath%20d%3D%27M20%206%209%2017l-5-5%27/%3E%3C/svg%3E\";const CHECK_SEL='[data-framer-name=\"Save Details\"] input[type=checkbox],'+'[data-framer-name=\"Save\"] input[type=checkbox],'+'input[type=checkbox][data-framer-name=\"Save\"]';const CHECK_CSS=CHECK_SEL+\"{appearance:none;-webkit-appearance:none;cursor:pointer;margin:0;\"+\"width:16px;height:16px;border-radius:3px;box-sizing:border-box;\"+\"background-color:#fff;border:1px solid \"+BORDER+\";\"+\"background-repeat:no-repeat;background-position:center;background-size:11px 11px;\"+\"transition:background-color 120ms \"+EASE+\"}\"+CHECK_SEL.split(\",\").map(function(s){return s+\":checked\";}).join(\",\")+\"{background-color:\"+INK+\";border-color:\"+INK+\";\"+\"background-image:url(\"+TICK_SVG+\")}\";export function withCommentBox(Component){return function CommentBox(props){useEffect(()=>{if(typeof document===\"undefined\")return;if(document.getElementById(CHECK_ID))return;const style=document.createElement(\"style\");style.id=CHECK_ID;style.textContent=CHECK_CSS;document.head.appendChild(style);},[]);return /*#__PURE__*/_jsx(Component,{...props});};}/* ========================== post card hover ========================== */const CARD_HOVER_ID=\"bitpan-card-hover\";/**\n * The whole card is the link, so the title is not an anchor and cannot pick\n * up a link style. Underline it from the card's hover state instead.\n */const CARD_HOVER_CSS='[data-framer-name=\"Post Card\"] [data-framer-name=\"Title\"]'+\"{text-decoration:none;color:\"+INK+\"}\"+'[data-framer-name=\"Post Card\"]:hover [data-framer-name=\"Title\"],'+'[data-framer-name=\"Post Card\"]:focus-visible [data-framer-name=\"Title\"]'+\"{text-decoration:underline;text-decoration-color:\"+INK+\";\"+\"color:\"+INK+\";text-decoration-thickness:1px;\"+\"text-underline-offset:3px;text-decoration-skip-ink:auto}\";export function withCardHover(Component){return function CardHover(props){useEffect(()=>{if(typeof document===\"undefined\")return;if(document.getElementById(CARD_HOVER_ID))return;const style=document.createElement(\"style\");style.id=CARD_HOVER_ID;style.textContent=CARD_HOVER_CSS;document.head.appendChild(style);},[]);return /*#__PURE__*/_jsx(Component,{...props});};}/* ============================= carousels ============================= */function stepSize(rail){const list=rail.firstElementChild;const card=list?list.firstElementChild:null;if(!card)return rail.clientWidth;let gap=0;if(typeof window!==\"undefined\"&&list){const cs=window.getComputedStyle(list);gap=parseFloat(cs.columnGap||cs.gap||\"0\")||0;}const width=card.getBoundingClientRect().width;if(!width)return rail.clientWidth;return width+gap;}function isScrollableX(el){if(el.scrollWidth<=el.clientWidth+1)return false;if(typeof window===\"undefined\")return false;const cs=window.getComputedStyle(el);return cs.overflowX===\"auto\"||cs.overflowX===\"scroll\";}/** Find the carousel rail that belongs to the clicked arrow. */function findRail(start){let node=start;let depth=0;while(node&&depth<8){const all=node.querySelectorAll(\"*\");for(let i=0;i<all.length;i++){const el=all[i];if(isScrollableX(el))return el;}node=node.parentElement;depth+=1;}return null;}function scrollNearest(target,direction){const rail=findRail(target);if(!rail)return;rail.scrollBy({left:direction*stepSize(rail),behavior:\"smooth\"});}export function withCarouselPrev(Component){return function CarouselPrev(props){return /*#__PURE__*/_jsx(Component,{...props,onClick:e=>{if(props.onClick)props.onClick(e);scrollNearest(e&&e.currentTarget?e.currentTarget:null,-1);}});};}export function withCarouselNext(Component){return function CarouselNext(props){return /*#__PURE__*/_jsx(Component,{...props,onClick:e=>{if(props.onClick)props.onClick(e);scrollNearest(e&&e.currentTarget?e.currentTarget:null,1);}});};}/* ============================ pdp gallery ============================ */const DURATION=400;const EASING=\"cubic-bezier(0.44, 0, 0.56, 1)\";const ZOOM=1.3;const ZOOM_MS=100;const TRANS=\"opacity \"+DURATION+\"ms \"+EASING+\", transform \"+ZOOM_MS+\"ms linear\";const SCRIM=\"rgba(255, 255, 255, 0.55)\";function qa(name,root){const scope=root||document;return Array.prototype.slice.call(scope.querySelectorAll('[data-framer-name=\"'+name+'\"]'));}/* ------------------------------ gallery ------------------------------ */function imagesIn(main){return Array.prototype.slice.call(main.querySelectorAll(\"img\"));}function sourceOf(thumb){if(!thumb)return\"\";const img=thumb.querySelector(\"img\");if(!img)return\"\";return img.getAttribute(\"src\")||img.currentSrc||\"\";}function makeLayer(main,key){let layer=main.querySelector('img[data-gallery-layer=\"'+key+'\"]');if(layer)return layer;layer=document.createElement(\"img\");layer.setAttribute(\"data-gallery-layer\",key);layer.setAttribute(\"alt\",\"\");layer.setAttribute(\"decoding\",\"async\");layer.style.position=\"absolute\";layer.style.left=\"0\";layer.style.top=\"0\";layer.style.width=\"100%\";layer.style.height=\"100%\";layer.style.pointerEvents=\"none\";layer.style.opacity=\"0\";layer.style.zIndex=\"1\";let fit=\"cover\";let pos=\"50% 50%\";const base=main.querySelector(\"img\");if(base){try{const cs=window.getComputedStyle(base);fit=cs.objectFit||\"cover\";pos=cs.objectPosition||\"50% 50%\";}catch(e){}}layer.style.objectFit=fit;layer.style.objectPosition=pos;main.appendChild(layer);return layer;}function showFrom(main,thumb){if(!main||!thumb)return;const src=sourceOf(thumb);if(!src)return;if(main.getAttribute(\"data-gallery-current\")===src)return;main.setAttribute(\"data-gallery-current\",src);const a=makeLayer(main,\"a\");const b=makeLayer(main,\"b\");const frontIsA=main.getAttribute(\"data-gallery-front\")!==\"b\";const incoming=frontIsA?b:a;const outgoing=frontIsA?a:b;// carry the current zoom onto the incoming layer so it does not pop\nconst zoomOrigin=main.getAttribute(\"data-zoom-origin\")||\"50% 50%\";const zoomed=main.getAttribute(\"data-zoomed\")===\"true\";incoming.style.transition=\"none\";incoming.style.opacity=\"0\";incoming.style.zIndex=\"2\";incoming.style.transformOrigin=zoomOrigin;incoming.style.transform=zoomed?\"scale(\"+ZOOM+\")\":\"scale(1)\";outgoing.style.zIndex=\"1\";incoming.removeAttribute(\"srcset\");incoming.src=src;requestAnimationFrame(()=>{incoming.style.transition=TRANS;incoming.style.opacity=\"1\";outgoing.style.transition=TRANS;});main.setAttribute(\"data-gallery-front\",frontIsA?\"b\":\"a\");}function paintActive(thumbs,index){thumbs.forEach((thumb,i)=>{let scrim=thumb.querySelector(\"div[data-gallery-scrim]\");if(!scrim){scrim=document.createElement(\"div\");scrim.setAttribute(\"data-gallery-scrim\",\"true\");scrim.style.position=\"absolute\";scrim.style.left=\"0\";scrim.style.top=\"0\";scrim.style.width=\"100%\";scrim.style.height=\"100%\";scrim.style.pointerEvents=\"none\";scrim.style.zIndex=\"3\";scrim.style.background=SCRIM;scrim.style.opacity=\"0\";scrim.style.transition=\"opacity \"+DURATION+\"ms \"+EASING;thumb.appendChild(scrim);}scrim.style.opacity=i===index?\"1\":\"0\";});}export function withProductGallery(Component){return function ProductGallery(props){useEffect(()=>{if(typeof document===\"undefined\")return;const cleanups=[];whenReady(()=>{const root=q(\"Gallery\");if(!root)return false;const thumbs=qa(\"Thumb\",root);const main=q(\"Main Image\",root);if(thumbs.length===0||!main)return false;let selected=0;const apply=i=>{selected=(i%thumbs.length+thumbs.length)%thumbs.length;paintActive(thumbs,selected);showFrom(main,thumbs[selected]);};paintActive(thumbs,0);const first=sourceOf(thumbs[0]);if(first)main.setAttribute(\"data-gallery-current\",first);thumbs.forEach((thumb,i)=>{const h=()=>apply(i);thumb.addEventListener(\"click\",h);cleanups.push(()=>thumb.removeEventListener(\"click\",h));});const prev=q(\"Gallery Previous\",root);const next=q(\"Gallery Next\",root);if(prev){const h=e=>{e.stopPropagation();apply(selected-1);};prev.addEventListener(\"click\",h);cleanups.push(()=>prev.removeEventListener(\"click\",h));}if(next){const h=e=>{e.stopPropagation();apply(selected+1);};next.addEventListener(\"click\",h);cleanups.push(()=>next.removeEventListener(\"click\",h));}/* ---- hover zoom, cursor-tracked (as in the reference) ---- */main.style.cursor=\"zoom-in\";const onMove=e=>{const rect=main.getBoundingClientRect();if(!rect.width||!rect.height)return;const x=(e.clientX-rect.left)/rect.width*100;const y=(e.clientY-rect.top)/rect.height*100;const origin=Math.max(0,Math.min(100,x))+\"% \"+Math.max(0,Math.min(100,y))+\"%\";main.setAttribute(\"data-zoom-origin\",origin);main.setAttribute(\"data-zoomed\",\"true\");imagesIn(main).forEach(im=>{im.style.transition=TRANS;im.style.transformOrigin=origin;im.style.transform=\"scale(\"+ZOOM+\")\";});};const onLeave=()=>{main.setAttribute(\"data-zoomed\",\"false\");main.setAttribute(\"data-zoom-origin\",\"50% 50%\");imagesIn(main).forEach(im=>{im.style.transition=TRANS;im.style.transform=\"scale(1)\";});};main.addEventListener(\"mousemove\",onMove);main.addEventListener(\"mouseleave\",onLeave);cleanups.push(()=>main.removeEventListener(\"mousemove\",onMove));cleanups.push(()=>main.removeEventListener(\"mouseleave\",onLeave));return true;},cleanups);return()=>cleanups.forEach(fn=>fn());},[]);return /*#__PURE__*/_jsx(Component,{...props});};}/* ------------------------- options + quantity ------------------------- *//** Framer draws borders with a ::after pseudo-element fed by --border-color. */function paintBorder(el,color){const bordered=el.getAttribute(\"data-border\")===\"true\"?el:el.querySelector('[data-border=\"true\"]')||el;bordered.style.setProperty(\"--border-color\",color);bordered.style.borderColor=color;}const COLOR_OPTIONS=[\"Beige\",\"Green\",\"Violet\"];const SIZE_OPTIONS=[\"1 Sheet\",\"2 Sheet\",\"3 Sheet\",\"5 Sheet\"];export function withProductOptions(Component){return function ProductOptions(props){useEffect(()=>{if(typeof document===\"undefined\")return;const cleanups=[];whenReady(()=>{const colorGroup=q(\"Color\");const sizeGroup=q(\"Pack Size\");if(!colorGroup&&!sizeGroup)return false;const wire=(group,names)=>{if(!group)return;const chips=names.map(n=>q(n,group)).filter(Boolean);if(chips.length===0)return;chips.forEach(chip=>{const h=()=>{chips.forEach(other=>paintBorder(other,SUBTLE));paintBorder(chip,INK);};chip.addEventListener(\"click\",h);cleanups.push(()=>chip.removeEventListener(\"click\",h));});};wire(colorGroup,COLOR_OPTIONS);wire(sizeGroup,SIZE_OPTIONS);const qty=q(\"Qty\");if(qty){const minus=q(\"Minus\",qty);const plus=q(\"Plus\",qty);const box=minus?minus.parentElement:plus?plus.parentElement:null;const kids=box?Array.prototype.slice.call(box.children):[];const valueEl=kids.length>=3?kids[1]:null;const step=delta=>{const text=deepestText(valueEl);if(!text)return;const current=parseInt(text.textContent||\"1\",10);const safe=isNaN(current)?1:current;text.textContent=String(Math.max(1,safe+delta));};if(minus){const h=()=>step(-1);minus.addEventListener(\"click\",h);cleanups.push(()=>minus.removeEventListener(\"click\",h));}if(plus){const h=()=>step(1);plus.addEventListener(\"click\",h);cleanups.push(()=>plus.removeEventListener(\"click\",h));}}return true;},cleanups);return()=>cleanups.forEach(fn=>fn());},[]);return /*#__PURE__*/_jsx(Component,{...props});};}/* ============================= mega menu ============================= */const PANEL='[data-framer-name=\"Explore Menu\"]';const TRIGGER='[data-framer-name=\"Explore\"]';function panels(){return Array.prototype.slice.call(document.querySelectorAll(PANEL));}/* ----------------------------- full bleed ----------------------------- */function stretch(panel){panel.style.width=\"100vw\";panel.style.maxWidth=\"100vw\";panel.style.right=\"auto\";const applied=parseFloat(panel.getAttribute(\"data-bleed-ml\")||\"0\");const rect=panel.getBoundingClientRect();if(!rect.width)return;if(Math.abs(rect.left)<=.5)return;const next=applied-rect.left;panel.style.marginLeft=next+\"px\";panel.setAttribute(\"data-bleed-ml\",String(next));}/* ------------------------------- closing ------------------------------- */function fire(el,types){types.forEach(type=>{try{el.dispatchEvent(new MouseEvent(type,{bubbles:true,cancelable:true,view:window}));}catch(e){}});}function closeMenu(){// ask Framer to dismiss: the panel opens on hover, and it also closes on\n// an outside press, so replay both\nconst trigger=document.querySelector(TRIGGER);if(trigger)fire(trigger,[\"pointerleave\",\"mouseleave\",\"mouseout\"]);fire(document.body,[\"pointerdown\",\"mousedown\"]);// and hide right away so nothing lingers through the navigation\npanels().forEach(panel=>{panel.setAttribute(\"data-menu-hidden\",\"1\");panel.style.opacity=\"0\";panel.style.pointerEvents=\"none\";panel.style.visibility=\"hidden\";});}function reopenable(){panels().forEach(panel=>{if(panel.getAttribute(\"data-menu-hidden\")!==\"1\")return;panel.removeAttribute(\"data-menu-hidden\");panel.style.opacity=\"\";panel.style.pointerEvents=\"\";panel.style.visibility=\"\";});}/**\n * The reference underlines a menu link on hover rather than boxing it in a\n * grey rectangle. Framer cannot put a hover variant on a plain frame, so the\n * rule is injected once from the nav, which is shared by every page.\n */const MENU_HOVER_ID=\"bitpan-menu-hover\";const MENU_HOVER_CSS=['[data-framer-name=\"Home Skincare\"]:hover p,','[data-framer-name=\"Home Fashion\"]:hover p,','[data-framer-name=\"Home Hijab\"]:hover p,','[data-framer-name=\"Coming Soon\"]:hover p,','[data-framer-name=\"Demo pages\"] > *:not(:first-child):hover p,','[data-framer-name=\"Collections\"] > *:not(:first-child):hover p,','[data-framer-name=\"What’s new\"] > *:not(:first-child):hover p {',\"    text-decoration: underline;\",\"    text-decoration-color: rgb(0, 0, 0);\",\"    text-decoration-thickness: 1px;\",\"    text-underline-offset: 3px;\",\"}\",'[data-framer-name=\"Testimonial Rail\"] {',\"    scroll-snap-type: x mandatory;\",\"    scroll-behavior: smooth;\",\"    scrollbar-width: none;\",\"    -ms-overflow-style: none;\",\"}\",// the native scrollbar showed up under the slider\n'[data-framer-name=\"Testimonial Rail\"]::-webkit-scrollbar {',\"    display: none;\",\"}\",// one whole review per swipe rather than stopping between two\n'[data-framer-name=\"Testimonial Rail\"] > * {',\"    scroll-snap-align: start;\",\"    scroll-snap-stop: always;\",\"    flex: 0 0 100%;\",\"}\",'[data-framer-name=\"Portrait\"] img,','[data-framer-name=\"Dropper Image\"] img,','[data-framer-name=\"Squiggle\"] img {',\"    transition: transform 700ms cubic-bezier(0.44, 0, 0.56, 1);\",\"}\",// promoted only while the zoom runs; a permanent hint cost a composited,\n// layer per image and bought nothing between hovers,\n'[data-framer-name=\"Portrait\"]:hover img,','[data-framer-name=\"Dropper Image\"]:hover img,','[data-framer-name=\"Squiggle\"]:hover img {',\"    will-change: transform;\",\"}\",'[data-framer-name=\"Portrait\"]:hover img,','[data-framer-name=\"Dropper Image\"]:hover img {',\"    transform: scale(1.05);\",\"}\",\"@media (max-width: 985px) {\",'    [data-framer-name=\"Explore Menu\"] [data-framer-name=\"Category Cards\"] {',\"        display: none;\",\"    }\",\"}\",\"@media (max-width: 1499px) {\",'    [data-framer-name=\"Menu Inner\"] {',\"        gap: 24px !important;\",\"    }\",'    [data-framer-name=\"Menu Inner\"] > *:nth-child(-n+2) {',\"        width: 150px !important;\",\"        flex: 0 0 150px !important;\",\"    }\",'    [data-framer-name=\"Explore Menu\"] [data-framer-name=\"Category Cards\"] {',\"        gap: 12px !important;\",\"    }\",'    [data-framer-name=\"Explore Menu\"] [data-framer-name=\"Name Pill\"] {',\"        padding-left: 10px !important;\",\"        padding-right: 10px !important;\",\"    }\",'    [data-framer-name=\"Explore Menu\"] [data-framer-name=\"Name Pill\"] p {',\"        font-size: 10px !important;\",\"        letter-spacing: 0.02em !important;\",\"    }\",'    [data-framer-name=\"Explore Menu\"] [data-framer-name=\"Arrow Badge\"] {',\"        width: 30px !important;\",\"        height: 30px !important;\",\"    }\",\"}\",'[data-framer-name=\"Explore Menu\"] [data-framer-name=\"Name Pill\"] {',\"    min-width: 0;\",\"}\",'[data-framer-name=\"Explore Menu\"] [data-framer-name=\"Name Pill\"] > * {',\"    min-width: 0;\",\"    max-width: 100%;\",\"}\",'[data-framer-name=\"Explore Menu\"] [data-framer-name=\"Name Pill\"] p {',\"    white-space: nowrap;\",\"    overflow: hidden;\",\"    text-overflow: ellipsis;\",\"}\",'[data-framer-name=\"Solutions\"] > div:not(:first-child) p,','[data-framer-name=\"Support\"] > div:not(:first-child) p,','[data-framer-name=\"Company\"] > div:not(:first-child) p,','[data-framer-name=\"Legal\"] > div:not(:first-child) p {',\"    width: fit-content;\",\"    background-image: linear-gradient(currentColor, currentColor);\",\"    background-repeat: no-repeat;\",\"    background-position: 0 100%;\",\"    background-size: 0% 1px;\",\"    transition: background-size 260ms ease-out;\",\"}\",'[data-framer-name=\"Solutions\"] > div:not(:first-child):hover p,','[data-framer-name=\"Support\"] > div:not(:first-child):hover p,','[data-framer-name=\"Company\"] > div:not(:first-child):hover p,','[data-framer-name=\"Legal\"] > div:not(:first-child):hover p {',\"    background-size: 100% 1px;\",\"}\",'[data-framer-name=\"Socials\"] > * {',\"    transition: transform 240ms ease-out, opacity 240ms ease-out;\",\"}\",'[data-framer-name=\"Socials\"] > *:hover {',\"    transform: translateY(-2px);\",\"    opacity: 0.55;\",\"}\",'[data-framer-name=\"Filter Pill\"] {',\"    background-color: rgb(255, 255, 255);\",\"    transition: background-color 240ms cubic-bezier(0.44, 0, 0.56, 1);\",\"}\",// aria-current marks the pill for the page you are already on, so a\n// selected pill keeps its own state instead of picking up the hover.\n'[data-framer-name=\"Filter Pill\"]:not([aria-current]):hover {',\"    background-color: rgb(238, 238, 238);\",\"}\",'[data-framer-name=\"Explore Menu\"][data-border=\"true\"]::after {',\"    border-width: 0;\",\"}\",\"@media (min-width: 1200px) {\",'    [data-framer-name=\"Hero Content\"] {',\"        padding-left: max(32px, calc((100vw - 1472px) / 2)) !important;\",\"    }\",\"}\",'[data-framer-name=\"Explore Menu\"]::before {','    content: \"\";',\"    position: absolute;\",\"    top: 0;\",\"    left: 50%;\",\"    transform: translateX(-50%);\",\"    width: min(calc(100% - 64px), 1536px);\",\"    height: 1px;\",\"    background-color: \"+BORDER+\";\",\"    pointer-events: none;\",\"}\"].join(\"\\n\");/**\n * The stylesheet rule for this hover shipped but never took effect on the page,\n * so the zoom is driven from inline style instead: it outranks anything Framer\n * emits and does not depend on selector specificity. Only the <img> is scaled,\n * so the frame keeps its exact size and nothing reflows.\n */const ZOOM_SELECTOR='[data-framer-name=\"Portrait\"],[data-framer-name=\"Dropper Image\"],'+'[data-framer-name=\"Values\"] [data-framer-name=\"Product Image\"],'+'[data-framer-name=\"Skincare Story\"] [data-framer-name=\"Cleanser Image\"],'+'[data-framer-name=\"Skincare Story\"] [data-framer-name=\"Serum Image\"],'+'[data-framer-name=\"Texture\"],[data-framer-name=\"Hands\"],'+'[data-framer-name=\"Feature Image\"],'+'[data-framer-name=\"Post Card\"] [data-framer-name=\"Media\"],'+'[data-framer-name=\"Letter Media\"],'+'[data-framer-name=\"Letter Still\"]';/**\n * The reference lightens a statement and then brings each word up to full ink\n * as it scrolls through the viewport. Framer has no scroll-linked text effect,\n * so the words are wrapped at runtime. The dimmed state is applied by this code\n * rather than by the design, so if the script never runs the text still renders\n * normally instead of staying invisible.\n */const REVEAL_SELECTOR='[data-framer-name=\"Categories\"] [data-framer-name=\"Heading\"],'+'[data-framer-name=\"Conscious\"] [data-framer-name=\"Heading Wrap\"] [data-framer-name=\"Heading\"],'+'[data-framer-name=\"Skincare Story\"] [data-framer-name=\"Heading\"]';const REVEAL_DIM=\"0.16\";function splitWords(host){const walker=document.createTreeWalker(host,NodeFilter.SHOW_TEXT);const texts=[];let node=walker.nextNode();while(node){texts.push(node);node=walker.nextNode();}const words=[];texts.forEach(text=>{const value=text.nodeValue||\"\";if(!value.trim()||!text.parentNode)return;const frag=document.createDocumentFragment();// the whitespace is kept as-is so line breaking never shifts\nvalue.split(/(\\s+)/).forEach(part=>{if(!part)return;if(!part.trim()){frag.appendChild(document.createTextNode(part));return;}const span=document.createElement(\"span\");span.textContent=part;span.style.opacity=REVEAL_DIM;span.style.transition=\"opacity 420ms cubic-bezier(0.22, 1, 0.36, 1)\";frag.appendChild(span);words.push(span);});text.parentNode.replaceChild(frag,text);});return words;}function bindScrollTextReveal(){const tracked=[];const reduced=typeof window.matchMedia===\"function\"&&window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;if(reduced)return()=>{};/**\n     * Geometry is read for every tracked block in one batch and cached in\n     * document space. The paint below then derives each block's viewport\n     * position from scrollY alone, so it never touches the layout engine.\n     * Reading a rect from inside the paint loop - in between the opacity\n     * writes - forced a synchronous layout on every frame the page moved,\n     * which is what made the wheel and the touchpad feel notchy.\n     */const measure=()=>{const scrollY=window.scrollY||window.pageYOffset||0;for(let i=0;i<tracked.length;i++){const rect=tracked[i].host.getBoundingClientRect();tracked[i].docTop=rect.top+scrollY;tracked[i].height=rect.height;}};/**\n     * Pure arithmetic, plus writes for only the words that actually cross the\n     * threshold this frame. Rewriting every span every frame kept restarting\n     * each span's 420ms opacity transition, so the reveal never settled while\n     * the page was in motion and the style recalc cost scaled with word count.\n     */const paint=()=>{const vh=window.innerHeight||1;const scrollY=window.scrollY||window.pageYOffset||0;for(let e=0;e<tracked.length;e++){const entry=tracked[e];const count=entry.words.length;if(!count)continue;const top=entry.docTop-scrollY;// runs from the block entering the lower third to it clearing the middle\nconst span=vh*.3+entry.height;const progress=(vh*.8-top)/(span||1);const clamped=progress<0?0:progress>1?1:progress;const lit=Math.round(clamped*count);if(lit===entry.lit)continue;if(lit>entry.lit){for(let i=entry.lit;i<lit;i++){entry.words[i].style.opacity=\"1\";}}else{for(let i=lit;i<entry.lit;i++){entry.words[i].style.opacity=REVEAL_DIM;}}entry.lit=lit;}};const bind=()=>{const hosts=document.querySelectorAll(REVEAL_SELECTOR);for(let i=0;i<hosts.length;i++){const host=hosts[i];if(host.__revealBound)continue;host.__revealBound=true;const words=splitWords(host);if(!words.length)continue;// splitWords leaves every span dimmed, so lit starts at 0 to match\ntracked.push({host,words,docTop:0,height:0,lit:0});}measure();paint();};bind();let queued=false;const schedule=()=>{if(queued)return;queued=true;requestAnimationFrame(()=>{queued=false;paint();});};// geometry only moves on a resize or reflow, so re-measuring is kept off\n// the scroll path entirely\nlet measureQueued=false;const remeasure=()=>{if(measureQueued)return;measureQueued=true;requestAnimationFrame(()=>{measureQueued=false;measure();paint();});};/**\n     * Framer mutates the tree constantly while the page moves - appear effects,\n     * hover state, lazy images - and the previous observer answered every one\n     * of those by re-walking the whole document a frame later. Debouncing to\n     * the quiet moment after the churn keeps that walk off the scroll path\n     * while still picking up client-side navigation.\n     */let rebindTimer=0;const rebind=()=>{window.clearTimeout(rebindTimer);rebindTimer=window.setTimeout(bind,150);};const t1=window.setTimeout(bind,200);const t2=window.setTimeout(bind,900);window.addEventListener(\"scroll\",schedule,{passive:true});window.addEventListener(\"resize\",remeasure);// images and webfonts settle after bind() ran, which shifts every block\n// below them; re-measure instead of leaving the cache stale\nlet ro=null;if(typeof ResizeObserver!==\"undefined\"){ro=new ResizeObserver(remeasure);ro.observe(document.body);}const obs=new MutationObserver(records=>{if(outsideSearch(records))rebind();});obs.observe(document.body,{childList:true,subtree:true});return()=>{window.clearTimeout(t1);window.clearTimeout(t2);window.clearTimeout(rebindTimer);window.removeEventListener(\"scroll\",schedule);window.removeEventListener(\"resize\",remeasure);if(ro)ro.disconnect();obs.disconnect();tracked.forEach(entry=>{entry.words.forEach(w=>{w.style.opacity=\"\";w.style.transition=\"\";});entry.host.__revealBound=false;});};}/**\n * The search overlay rewrites its result list on every keystroke. Reacting to\n * those mutations made typing stutter, and they never contain anything these\n * binders care about, so they are skipped.\n */function outsideSearch(records){for(let i=0;i<records.length;i++){let node=records[i].target;if(node&&node.nodeType!==1)node=node.parentNode;const host=node;if(!host||typeof host.closest!==\"function\")return true;if(!host.closest(\"[data-search-modal]\"))return true;}return false;}/**\n * Rebinding only has to be correct once the DOM stops changing, and scrolling a\n * Framer page produces a steady trickle of mutations - lazy media, effects\n * mounting, breakpoint copies hydrating. Answering each of those a frame later\n * put a full document walk, and in a couple of cases a forced layout, directly\n * on the scroll path. Deferring to the first quiet moment keeps the work off\n * the scroll entirely while still catching client-side navigation.\n */function settleAfterChurn(run){let timer=0;return{call:()=>{window.clearTimeout(timer);timer=window.setTimeout(run,150);},cancel:()=>window.clearTimeout(timer)};}/* --------------------- product card hover actions --------------------- *//**\n * The reference reveals an add-to-cart bar and an eye button when a product\n * card is hovered, and splits that bar into ADD TO CART / VIEW CART once the\n * product is in the cart. Both are injected rather than added to the Framer\n * tree: they sit absolutely inside the card's Media frame, so nothing in the\n * card moves, the CMS bindings are untouched, and the card link keeps working.\n */const CARD_BAR=\"data-card-cart\";const CARD_EYE=\"data-card-eye\";const QUICK_MODAL=\"data-quick-modal\";const VIEW_LABEL=\"View cart\";const EYE_SVG='<svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" '+'stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\" '+'stroke-linejoin=\"round\"><path d=\"M2 12s3.6-6.8 10-6.8S22 12 22 12s-3.6 6.8-10 '+'6.8S2 12 2 12Z\"/><circle cx=\"12\" cy=\"12\" r=\"2.8\"/></svg>';function cardText(card,name){const found=card.querySelector('[data-framer-name=\"'+name+'\"]');return found?String(found.textContent||\"\").trim():\"\";}function readCard(card){const media=card.querySelector('[data-framer-name=\"Media\"]');const img=media?media.querySelector(\"img\"):null;const anchor=card.tagName===\"A\"?card:card.closest(\"a\");return{name:cardText(card,\"Name\"),price:cardText(card,\"Price\"),category:cardText(card,\"Label\"),image:img?img.getAttribute(\"src\")||\"\":\"\",href:anchor?anchor.getAttribute(\"href\")||\"\":\"\",anchor};}function inCart(name){if(!name)return false;return!!readCart()[name.toLowerCase()];}/** Writes exactly the entry shape the product page writes. */function addCardToCart(data){if(!data.name)return;const key=data.name.toLowerCase();const cart=readCart();const existing=cart[key];cart[key]={name:data.name,price:data.price,image:data.image,color:existing?existing.color:\"\",size:existing?existing.size:\"\",qty:(existing?existing.qty:0)+1};writeCart(cart);paintBadge(totalItems(cart));}/** Never build the cart URL by hand: click a real link the site already has. */function goToCart(){const icon=q(\"Cart\");const near=icon?icon.tagName.toLowerCase()===\"a\"?icon:icon.closest(\"a\"):null;if(near){near.click();return;}const links=document.querySelectorAll(\"a[href]\");for(let i=0;i<links.length;i++){const a=links[i];const href=a.getAttribute(\"href\")||\"\";if(href.charAt(href.length-1)===\"/\")continue;if(href.slice(-5)===\"/cart\"||href===\"./cart\"||href===\"cart\"){a.click();return;}}window.location.href=\"/cart\";}/* ------------------------------ quick view ------------------------------ */let quickRoot=null;const QUICK_RESPONSIVE_ID=\"bitpan-quick-responsive\";/**\n * The preview card is a flex row holding a fixed 300px image that cannot\n * shrink, so on a phone it pushes the detail panel past the viewport.\n * Stack the two on narrow screens instead.\n */const QUICK_RESPONSIVE_CSS=\"@media (max-width: 640px) {\"+\"[data-quick-card] { flex-direction: column; max-height: calc(100vh - 40px); overflow-y: auto; }\"+\"[data-quick-image] { width: 100% !important; min-height: 220px !important; align-self: auto !important; }\"+\"[data-quick-card] > div:last-child { padding: 22px 20px 24px 20px !important; }\"+\"}\";function installQuickResponsive(){if(document.getElementById(QUICK_RESPONSIVE_ID))return;const style=document.createElement(\"style\");style.id=QUICK_RESPONSIVE_ID;style.textContent=QUICK_RESPONSIVE_CSS;document.head.appendChild(style);}function buildQuick(){if(quickRoot)return quickRoot;installQuickResponsive();quickRoot=el(\"div\",{position:\"fixed\",left:\"0\",top:\"0\",width:\"100%\",height:\"100%\",zIndex:\"99997\",visibility:\"hidden\",fontFamily:SANS,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",padding:\"20px\",boxSizing:\"border-box\",overflowY:\"auto\"});quickRoot.setAttribute(QUICK_MODAL,\"true\");quickRoot.setAttribute(\"role\",\"dialog\");quickRoot.setAttribute(\"aria-modal\",\"true\");quickRoot.setAttribute(\"aria-label\",\"Product preview\");const scrim=el(\"div\",{position:\"fixed\",left:\"0\",top:\"0\",width:\"100%\",height:\"100%\",background:\"rgba(0, 0, 0, 0.45)\",opacity:\"0\",transition:\"opacity 260ms \"+EASE});scrim.setAttribute(\"data-quick-scrim\",\"true\");const card=el(\"div\",{position:\"relative\",display:\"flex\",width:\"100%\",maxWidth:\"760px\",background:\"#fff\",borderRadius:\"10px\",overflow:\"hidden\",opacity:\"0\",transform:\"translateY(-12px) scale(0.98)\",transition:\"opacity 300ms \"+EASE+\", transform 300ms \"+EASE});card.setAttribute(\"data-quick-card\",\"true\");const close=el(\"button\",{position:\"absolute\",top:\"12px\",right:\"12px\",width:\"30px\",height:\"30px\",borderRadius:\"99px\",border:\"none\",background:\"rgba(255, 255, 255, 0.9)\",color:INK,cursor:\"pointer\",fontSize:\"13px\",lineHeight:\"1\",zIndex:\"2\"},CLOSE_X);close.setAttribute(\"aria-label\",\"Close preview\");const media=el(\"div\",{flex:\"none\",width:\"300px\",alignSelf:\"stretch\",minHeight:\"380px\",background:\"#f4f4f5\",backgroundSize:\"cover\",backgroundPosition:\"center\"});media.setAttribute(\"data-quick-image\",\"true\");const body=el(\"div\",{flex:\"1 1 auto\",padding:\"34px 34px 30px 34px\",display:\"flex\",flexDirection:\"column\",gap:\"12px\",minWidth:\"0\"});const cat=el(\"p\",{margin:\"0\",fontFamily:SANS,fontSize:\"12px\",letterSpacing:\"0.08em\",textTransform:\"uppercase\",color:MUTED});cat.setAttribute(\"data-quick-cat\",\"true\");const name=el(\"p\",{margin:\"0\",fontFamily:SERIF,fontSize:\"26px\",lineHeight:\"1.2\",color:INK});name.setAttribute(\"data-quick-name\",\"true\");const price=el(\"p\",{margin:\"0\",fontFamily:SANS,fontSize:\"16px\",color:INK});price.setAttribute(\"data-quick-price\",\"true\");const rule=el(\"div\",{height:\"1px\",background:BORDER,margin:\"6px 0 2px 0\"});const add=el(\"button\",{marginTop:\"6px\",height:\"48px\",borderRadius:\"99px\",border:\"none\",background:INK,color:\"#fff\",cursor:\"pointer\",fontFamily:SANS,fontSize:\"12px\",letterSpacing:\"0.08em\",textTransform:\"uppercase\"},IDLE_LABEL);add.setAttribute(\"data-quick-add\",\"true\");const more=el(\"a\",{marginTop:\"2px\",fontFamily:SANS,fontSize:\"12px\",letterSpacing:\"0.06em\",textTransform:\"uppercase\",color:INK,textDecoration:\"underline\",textUnderlineOffset:\"3px\",textAlign:\"center\"},\"View full details\");more.setAttribute(\"data-quick-more\",\"true\");body.appendChild(cat);body.appendChild(name);body.appendChild(price);body.appendChild(rule);body.appendChild(add);body.appendChild(more);card.appendChild(close);card.appendChild(media);card.appendChild(body);quickRoot.appendChild(scrim);quickRoot.appendChild(card);document.body.appendChild(quickRoot);scrim.addEventListener(\"click\",()=>closeQuick());close.addEventListener(\"click\",()=>closeQuick());quickRoot.addEventListener(\"click\",e=>{if(e.target===quickRoot)closeQuick();});return quickRoot;}function openQuick(data){const root=buildQuick();const set=(attr,value)=>{const node=root.querySelector(\"[\"+attr+\"]\");if(node)node.textContent=value;};set(\"data-quick-cat\",data.category);set(\"data-quick-name\",data.name);set(\"data-quick-price\",data.price);const media=root.querySelector(\"[data-quick-image]\");if(media)media.style.backgroundImage=data.image?'url(\"'+data.image+'\")':\"none\";// getAttribute hands back Framer's raw relative href (\"./product/x\"), and\n// the modal lives on document.body, so it resolves against whatever path\n// the visitor is on rather than the card's. In the editor preview the site\n// is not served from the domain root, so that lands on a 404 - published\n// it happens to line up, which is why it only broke in preview.\n// Take the browser-resolved absolute URL for the visible link, and hand the\n// actual click back to the card's own anchor so Framer's router navigates\n// instead of forcing a full load. The listener is re-attached per open, so\n// the node is swapped for a clean clone first.\nconst more=root.querySelector(\"[data-quick-more]\");if(more){const src=data.anchor;const fresh=more.cloneNode(true);more.parentNode&&more.parentNode.replaceChild(fresh,more);fresh.href=src?src.href:data.href||\"#\";fresh.addEventListener(\"click\",e=>{if(!src)return;e.preventDefault();closeQuick();window.setTimeout(()=>src.click(),10);});}const add=root.querySelector(\"[data-quick-add]\");if(add){const fresh=add.cloneNode(true);add.parentNode&&add.parentNode.replaceChild(fresh,add);fresh.addEventListener(\"click\",()=>{addCardToCart(data);fresh.textContent=\"Added\";window.setTimeout(()=>fresh.textContent=IDLE_LABEL,1400);});}root.style.visibility=\"visible\";const scrim=root.querySelector(\"[data-quick-scrim]\");const card=root.querySelector(\"[data-quick-card]\");requestAnimationFrame(()=>{if(scrim)scrim.style.opacity=\"1\";if(card){card.style.opacity=\"1\";card.style.transform=\"translateY(0) scale(1)\";}});document.body.style.overflow=\"hidden\";}function closeQuick(){const root=document.querySelector(\"div[\"+QUICK_MODAL+\"]\");if(!root)return;const scrim=root.querySelector(\"[data-quick-scrim]\");const card=root.querySelector(\"[data-quick-card]\");if(scrim)scrim.style.opacity=\"0\";if(card){card.style.opacity=\"0\";card.style.transform=\"translateY(-12px) scale(0.98)\";}document.body.style.overflow=\"\";window.setTimeout(()=>{if(root)root.style.visibility=\"hidden\";},280);}/* ------------------------------- binding ------------------------------- */function cardButton(label){return el(\"div\",{flex:\"1 1 0\",minWidth:\"0\",height:\"46px\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",background:\"rgb(255, 255, 255)\",borderRadius:\"100px\",padding:\"0px 16px\",fontFamily:SANS,fontSize:\"12px\",letterSpacing:\"0.08em\",textTransform:\"uppercase\",color:INK,cursor:\"pointer\",userSelect:\"none\",whiteSpace:\"nowrap\"},label);}/* --------------------------- hero image swap --------------------------- *//**\n * The reference marks its large pictures with data-image-effect=\"on_swap\" and\n * feeds them a displacement map, so the two pictures do not fade or slide into\n * each other: a faceted texture drags their pixels apart and the shards trade\n * places. Neither a CSS mask nor a grid of tiles can do that, so this runs a\n * small WebGL program of its own. No library is pulled in.\n *\n * The shader reads a triangular map, pushes the outgoing picture along it and\n * pulls the incoming picture back along it, then mixes the two by the same\n * progress value. Both pictures are sampled with cover framing so the frame is\n * always filled.\n *\n * The canvas is injected on top of the frame's own image rather than replacing\n * it, and every step is guarded: if WebGL is missing, a texture fails to load,\n * or the program will not link, nothing is appended and the original picture\n * renders exactly as before.\n */const SWAP_TARGETS=[{selector:'[data-framer-name=\"Hero Image\"]',swap:\"https://framerusercontent.com/images/Z5ZDgXILImtAe7GOnCdTkkT2Tz4.jpg\"},{selector:'[data-framer-name=\"Conscious\"] [data-framer-name=\"Portrait\"]',swap:\"https://framerusercontent.com/images/7psEpGU83ZReLu25hLYtevP8.jpg\"},{selector:'[data-framer-name=\"Values\"] [data-framer-name=\"Product Image\"]',swap:\"https://framerusercontent.com/images/pNQH9LjM5IvfUroBynZFUzNhLY.jpg\"}];const SWAP_DISP=\"https://framerusercontent.com/images/EohDQ1ZyUgSvo4SlSWMpGBRieQw.png\";const SWAP_MS=900;const SWAP_STRENGTH=.24;const SWAP_VERT=\"attribute vec2 p;varying vec2 v;void main(){v=p*0.5+0.5;gl_Position=vec4(p,0.0,1.0);}\";const SWAP_FRAG=[\"precision mediump float;\",\"varying vec2 v;\",\"uniform sampler2D ta;\",\"uniform sampler2D tb;\",\"uniform sampler2D td;\",\"uniform float prog;\",\"uniform float str;\",\"uniform vec2 fa;\",\"uniform vec2 fb;\",\"vec2 cover(vec2 uv, vec2 f){return (uv - 0.5) * f + 0.5;}\",\"void main(){\",\"  vec4 d = texture2D(td, v);\",\"  vec2 off = (d.rg - 0.5) * str;\",// the outgoing picture is pushed along the map, the incoming one pulled back\n\"  vec2 ua = cover(v + off * prog, fa);\",\"  vec2 ub = cover(v - off * (1.0 - prog), fb);\",\"  vec4 ca = texture2D(ta, clamp(ua, 0.0, 1.0));\",\"  vec4 cb = texture2D(tb, clamp(ub, 0.0, 1.0));\",\"  gl_FragColor = mix(ca, cb, prog);\",\"}\"].join(\"\\n\");function swapLoadImage(url){return new Promise((resolve,reject)=>{const img=new Image;img.crossOrigin=\"anonymous\";img.onload=()=>resolve(img);img.onerror=()=>reject(new Error(\"image\"));img.src=url;});}function swapTexture(gl,img){const tex=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,tex);// WebGL reads textures from the bottom left, an <img> from the top left\ngl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL,true);// the sources are not powers of two, so clamp and stay on linear filtering\ngl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR);gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,img);return tex;}function swapShader(gl,type,src){const sh=gl.createShader(type);if(!sh)return null;gl.shaderSource(sh,src);gl.compileShader(sh);if(!gl.getShaderParameter(sh,gl.COMPILE_STATUS)){gl.deleteShader(sh);return null;}return sh;}/** cover framing: how much of the texture to sample on each axis */function swapFit(iw,ih,bw,bh){if(!iw||!ih||!bw||!bh)return[1,1];const ia=iw/ih;const ba=bw/bh;return ia>ba?[ba/ia,1]:[1,ia/ba];}function runHeroSwap(host,swapUrl){const source=host.querySelector(\"img\");const first=source?source.currentSrc||source.src||\"\":\"\";if(!first)return()=>{};let disposed=false;let canvas=null;let gl=null;let raf=0;const listeners=[];const start=async()=>{let images;try{images=await Promise.all([swapLoadImage(first),swapLoadImage(swapUrl),swapLoadImage(SWAP_DISP)]);}catch(e){return;// the plain picture stays exactly as it was\n}if(disposed)return;canvas=document.createElement(\"canvas\");const cs=canvas.style;cs.position=\"absolute\";cs.top=\"0\";cs.left=\"0\";cs.width=\"100%\";cs.height=\"100%\";cs.display=\"block\";cs.borderRadius=\"inherit\";cs.zIndex=\"1\";canvas.setAttribute(\"data-hero-swap\",\"true\");try{gl=canvas.getContext(\"webgl\",{alpha:false,antialias:false,premultipliedAlpha:false})||canvas.getContext(\"experimental-webgl\");}catch(e){gl=null;}if(!gl)return;const vs=swapShader(gl,gl.VERTEX_SHADER,SWAP_VERT);const fs=swapShader(gl,gl.FRAGMENT_SHADER,SWAP_FRAG);if(!vs||!fs)return;const prog=gl.createProgram();if(!prog)return;gl.attachShader(prog,vs);gl.attachShader(prog,fs);gl.linkProgram(prog);if(!gl.getProgramParameter(prog,gl.LINK_STATUS))return;gl.useProgram(prog);const buf=gl.createBuffer();gl.bindBuffer(gl.ARRAY_BUFFER,buf);gl.bufferData(gl.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,1,1]),gl.STATIC_DRAW);const loc=gl.getAttribLocation(prog,\"p\");gl.enableVertexAttribArray(loc);gl.vertexAttribPointer(loc,2,gl.FLOAT,false,0,0);const ta=swapTexture(gl,images[0]);const tb=swapTexture(gl,images[1]);const td=swapTexture(gl,images[2]);gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,ta);gl.activeTexture(gl.TEXTURE1);gl.bindTexture(gl.TEXTURE_2D,tb);gl.activeTexture(gl.TEXTURE2);gl.bindTexture(gl.TEXTURE_2D,td);gl.uniform1i(gl.getUniformLocation(prog,\"ta\"),0);gl.uniform1i(gl.getUniformLocation(prog,\"tb\"),1);gl.uniform1i(gl.getUniformLocation(prog,\"td\"),2);gl.uniform1f(gl.getUniformLocation(prog,\"str\"),SWAP_STRENGTH);const uProg=gl.getUniformLocation(prog,\"prog\");const uFa=gl.getUniformLocation(prog,\"fa\");const uFb=gl.getUniformLocation(prog,\"fb\");let progress=0;let target=0;let from=0;let began=0;let span=SWAP_MS;const resize=()=>{if(!gl||!canvas)return;const dpr=Math.min(window.devicePixelRatio||1,2);const w=Math.max(1,Math.round(host.offsetWidth*dpr));const h=Math.max(1,Math.round(host.offsetHeight*dpr));if(canvas.width!==w||canvas.height!==h){canvas.width=w;canvas.height=h;}gl.viewport(0,0,w,h);const fa=swapFit(images[0].naturalWidth,images[0].naturalHeight,w,h);const fb=swapFit(images[1].naturalWidth,images[1].naturalHeight,w,h);gl.uniform2f(uFa,fa[0],fa[1]);gl.uniform2f(uFb,fb[0],fb[1]);};const draw=()=>{if(!gl)return;gl.uniform1f(uProg,progress);gl.drawArrays(gl.TRIANGLE_STRIP,0,4);};resize();draw();host.appendChild(canvas);// smootherstep: velocity *and* acceleration are zero at both ends, so\n// the blend never starts or stops with a visible kick the way a plain\n// cubic in-out does\nconst ease=t=>t*t*t*(t*(t*6-15)+10);const tick=now=>{if(disposed)return;const t=Math.min(1,(now-began)/span);progress=from+(target-from)*ease(t);draw();if(t<1){raf=requestAnimationFrame(tick);}else{progress=target;draw();raf=0;}};const goto=value=>{if(target===value)return;// already heading there, do not restart\nfrom=progress;target=value;// a reversal caught mid-blend only has part of the distance left to\n// cover, so shorten the run to match - a full-length run from 0.1\n// reads as a stall, and snapping back reads as a cut\nspan=Math.max(220,SWAP_MS*Math.abs(target-from));began=performance.now();if(!raf)raf=requestAnimationFrame(tick);};const onEnter=()=>goto(1);const onLeave=()=>goto(0);host.addEventListener(\"pointerenter\",onEnter);host.addEventListener(\"pointerleave\",onLeave);listeners.push(()=>host.removeEventListener(\"pointerenter\",onEnter));listeners.push(()=>host.removeEventListener(\"pointerleave\",onLeave));let sizing=false;const onResize=()=>{if(sizing)return;sizing=true;requestAnimationFrame(()=>{sizing=false;resize();draw();});};window.addEventListener(\"resize\",onResize);listeners.push(()=>window.removeEventListener(\"resize\",onResize));};start();return()=>{disposed=true;if(raf)cancelAnimationFrame(raf);listeners.forEach(fn=>fn());if(canvas&&canvas.parentNode)canvas.parentNode.removeChild(canvas);};}/**\n * The three footer link groups collapse into disclosures on phones.\n *\n * On the canvas they are plain stacks, which on a phone means seventeen links\n * of dead scroll between the brand block and the signup form. Below\n * FOOTER_PHONE each group's heading becomes a button carrying a +/- marker and\n * its list collapses; above that width every change is undone, so the desktop\n * row and the tablet grid are untouched.\n *\n * The marker is drawn with two spans rather than a glyph so the cross rotates\n * into a minus instead of swapping characters, and the panel animates on\n * max-height off its measured scrollHeight - the lists are short, so the usual\n * objection to that trick (a wildly wrong duration on tall content) does not\n * apply here.\n */const FOOTER_PHONE=\"(max-width: 809px)\";const FOOTER_GROUPS=[\"Shop\",\"Help\",\"About\"];const FOOTER_MS=300;function footerBar(open){return\"position:absolute;right:0;top:50%;width:13px;height:1.5px;\"+\"background:currentColor;transition:transform \"+FOOTER_MS+\"ms ease;\"+\"transform:translateY(-50%)\"+(open?\"\":\" rotate(90deg)\");}function bindFooterAccordion(){if(typeof window===\"undefined\"||typeof document===\"undefined\"){return()=>{};}const mq=window.matchMedia(FOOTER_PHONE);let live=[];const collapse=()=>{const footers=document.querySelectorAll('[data-framer-name=\"Footer\"]');for(let f=0;f<footers.length;f++){FOOTER_GROUPS.forEach(label=>{const group=footers[f].querySelector('[data-framer-name=\"'+label+'\"]');if(!group||group.__footAcc)return;const head=group.querySelector('[data-framer-name=\"Head\"]');const panel=group.querySelector('[data-framer-name=\"Links\"]');if(!head||!panel)return;group.__footAcc=true;const headWas=head.getAttribute(\"style\")||\"\";const panelWas=panel.getAttribute(\"style\")||\"\";const mark=document.createElement(\"span\");mark.setAttribute(\"aria-hidden\",\"true\");// the title inside Head is a 1fr child; adding the marker as a\n// flex sibling pushed it a marker-width past the column edge,\n// so it is taken out of flow instead and Head keeps its own\n// layout exactly as the canvas defined it\nmark.style.cssText=\"position:absolute;right:0;top:50%;transform:translateY(-50%);\"+\"display:block;width:13px;height:13px;pointer-events:none\";const barA=document.createElement(\"span\");const barB=document.createElement(\"span\");barA.style.cssText=footerBar(true);barB.style.cssText=footerBar(false);mark.appendChild(barA);mark.appendChild(barB);head.style.position=\"relative\";head.style.paddingRight=\"28px\";head.style.cursor=\"pointer\";head.style.userSelect=\"none\";head.style.padding=\"12px 28px 12px 0\"/** room for the marker */;head.setAttribute(\"role\",\"button\");head.setAttribute(\"tabindex\",\"0\");head.setAttribute(\"aria-expanded\",\"false\");head.appendChild(mark);panel.style.overflow=\"hidden\";panel.style.maxHeight=\"0px\";panel.style.paddingTop=\"0px\";panel.style.transition=\"max-height \"+FOOTER_MS+\"ms ease, opacity \"+FOOTER_MS+\"ms ease\";panel.style.opacity=\"0\";let open=false;const setOpen=next=>{open=next;head.setAttribute(\"aria-expanded\",String(open));barB.style.cssText=footerBar(open);panel.style.opacity=open?\"1\":\"0\";if(open){// the padding has to land *before* the measurement:\n// measuring first leaves max-height short by exactly\n// that padding, which clips the last link off the list\npanel.style.paddingTop=\"12px\";panel.style.maxHeight=panel.scrollHeight+\"px\";}else{// \"none\" gives the transition nothing to move from, so\n// pin the real height for a frame before collapsing\npanel.style.maxHeight=panel.scrollHeight+\"px\";void panel.offsetHeight;panel.style.paddingTop=\"0px\";panel.style.maxHeight=\"0px\";}};// once it has finished opening, stop constraining it at all -\n// a late font swap or a text rewrap would otherwise be clipped\n// by a max-height measured before the reflow\nconst onEnd=e=>{if(e.target!==panel||e.propertyName!==\"max-height\")return;if(open)panel.style.maxHeight=\"none\";};panel.addEventListener(\"transitionend\",onEnd);const toggle=()=>setOpen(!open);const onKey=e=>{if(e.key!==\"Enter\"&&e.key!==\" \")return;e.preventDefault();toggle();};const onResize=()=>{if(open)panel.style.maxHeight=\"none\";};head.addEventListener(\"click\",toggle);head.addEventListener(\"keydown\",onKey);window.addEventListener(\"resize\",onResize);live.push({group,restore:()=>{head.removeEventListener(\"click\",toggle);head.removeEventListener(\"keydown\",onKey);panel.removeEventListener(\"transitionend\",onEnd);window.removeEventListener(\"resize\",onResize);if(mark.parentNode)mark.parentNode.removeChild(mark);head.setAttribute(\"style\",headWas);panel.setAttribute(\"style\",panelWas);head.removeAttribute(\"role\");head.removeAttribute(\"tabindex\");head.removeAttribute(\"aria-expanded\");group.__footAcc=false;}});});}};const expand=()=>{live.forEach(entry=>entry.restore());live=[];};const sync=()=>mq.matches?collapse():expand();sync();// the footer mounts with the rest of the page tree, so catch late arrivals\nconst t1=window.setTimeout(sync,300);const t2=window.setTimeout(sync,1200);const onChange=()=>sync();if(typeof mq.addEventListener===\"function\"){mq.addEventListener(\"change\",onChange);}else if(typeof mq.addListener===\"function\"){mq.addListener(onChange);}const settle=settleAfterChurn(sync);const mo=new MutationObserver(()=>settle.call());mo.observe(document.body,{childList:true,subtree:true});return()=>{window.clearTimeout(t1);window.clearTimeout(t2);mo.disconnect();settle.cancel();if(typeof mq.removeEventListener===\"function\"){mq.removeEventListener(\"change\",onChange);}else if(typeof mq.removeListener===\"function\"){mq.removeListener(onChange);}expand();};}function bindHeroSwap(){const undo=[];const bind=()=>{SWAP_TARGETS.forEach(target=>{const hosts=document.querySelectorAll(target.selector);for(let i=0;i<hosts.length;i++){const host=hosts[i];if(host.__swapBound)continue;if(!host.querySelector(\"img\"))continue;if(!host.offsetWidth)continue;host.__swapBound=true;if(!host.style.position)host.style.position=\"relative\";const stop=runHeroSwap(host,target.swap);undo.push(()=>{stop();host.__swapBound=false;});}});};bind();const settle=settleAfterChurn(bind);const schedule=()=>settle.call();const t1=window.setTimeout(bind,300);const t2=window.setTimeout(bind,1200);const obs=new MutationObserver(records=>{if(outsideSearch(records))schedule();});obs.observe(document.body,{childList:true,subtree:true});return()=>{window.clearTimeout(t1);window.clearTimeout(t2);obs.disconnect();settle.cancel();undo.forEach(fn=>fn());};}/* ------------------------- filters on small screens ------------------------- *//**\n * On a phone the sidebar sits between the toolbar and the grid, so the products\n * start a long way down the page. The reference keeps it behind a Filter\n * products button and opens it as a full screen sheet.\n *\n * Two things had to be understood to get this right.\n *\n * 1. The sheet would not scroll because the archive page wraps its content in\n *    the element carrying the page appear animation:\n *      <div data-framer-name=\"Content\" style=\"transform:translateY(16px)\">\n *    A transformed ancestor becomes the containing block for position:fixed, so\n *    the sheet was sized against the whole page rather than the viewport. It\n *    never overflowed, so there was nothing to scroll and the lower groups sat\n *    below the fold.\n *\n * 2. Lifting the sidebar out to document.body fixed that but destroyed the\n *    layout, because Framer scopes its rules as `.framer-<scope> .framer-<node>`\n *    and the scope class lives on an ancestor. Out of the scope the rules stop\n *    matching and every group collapses on top of the next.\n *\n * So the sidebar stays exactly where it is, and the cause is removed instead:\n * while the sheet is open every ancestor that creates a containing block has\n * its transform, filter and will-change neutralised, and they are restored on\n * close. The appear animation has already finished by then, so nothing moves.\n *\n * Because the element is never moved or cloned, the sheet shows precisely the\n * groups the desktop sidebar shows, in the same order, with the archive\n * engine's listeners intact.\n */const FILTER_PHONE=\"(max-width: 809px)\";const FILTER_ICON='<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" '+'stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\">'+'<path d=\"M3 6h18M6 12h12M10 18h4\"/></svg>';/** Anything that makes an element a containing block for position:fixed. */function blocksFixed(node){const cs=window.getComputedStyle(node);if(cs.transform&&cs.transform!==\"none\")return true;if(cs.perspective&&cs.perspective!==\"none\")return true;if(cs.filter&&cs.filter!==\"none\")return true;const wc=cs.willChange||\"\";return wc.indexOf(\"transform\")!==-1||wc.indexOf(\"filter\")!==-1||wc.indexOf(\"perspective\")!==-1;}function bindMobileFilters(){const cleanups=[];const setup=()=>{const panel=qa(\"Filters\").filter(onScreen)[0];if(!panel)return;if(panel.__filterBound)return;const anchor=q(\"Toolbar Rule\")||q(\"Body\");if(!anchor||!anchor.parentNode)return;panel.__filterBound=true;const trigger=el(\"button\",{display:\"none\",alignItems:\"center\",justifyContent:\"center\",gap:\"10px\",width:\"100%\",height:\"54px\",margin:\"18px 0 6px 0\",borderRadius:\"99px\",border:\"1px solid \"+BORDER,background:\"rgba(0, 0, 0, 0)\",color:INK,fontFamily:SANS,fontSize:\"13px\",letterSpacing:\"0.06em\",textTransform:\"uppercase\",cursor:\"pointer\"});trigger.setAttribute(\"data-filter-open\",\"true\");trigger.setAttribute(\"type\",\"button\");trigger.innerHTML=FILTER_ICON+\"<span>Filter products</span>\";anchor.parentNode.insertBefore(trigger,anchor.nextSibling);const head=el(\"div\",{display:\"none\",position:\"fixed\",top:\"0\",right:\"0\",left:\"0\",height:\"56px\",alignItems:\"center\",justifyContent:\"flex-end\",gap:\"8px\",padding:\"0 18px\",background:\"rgb(255, 255, 255)\",zIndex:\"99991\",fontFamily:SANS,fontSize:\"14px\",color:INK,cursor:\"pointer\"});head.setAttribute(\"data-filter-close\",\"true\");head.innerHTML=\"<span>Close</span><span>\"+CLOSE_X+\"</span>\";const foot=el(\"div\",{display:\"none\",position:\"fixed\",right:\"0\",bottom:\"0\",left:\"0\",padding:\"14px 18px 20px 18px\",background:\"rgb(255, 255, 255)\",zIndex:\"99991\"});const apply=el(\"button\",{width:\"100%\",height:\"54px\",borderRadius:\"99px\",border:\"none\",background:INK,color:\"rgb(255, 255, 255)\",fontFamily:SANS,fontSize:\"13px\",letterSpacing:\"0.06em\",textTransform:\"uppercase\",cursor:\"pointer\"},\"Apply\");apply.setAttribute(\"type\",\"button\");foot.appendChild(apply);document.body.appendChild(head);document.body.appendChild(foot);const phone=()=>window.matchMedia(FILTER_PHONE).matches;let open=false;let frozen=[];const freeze=()=>{frozen=[];let node=panel.parentElement;while(node&&node!==document.body){if(blocksFixed(node)){frozen.push({node:node,transform:node.style.transform,willChange:node.style.willChange,filter:node.style.filter,perspective:node.style.perspective});node.style.transform=\"none\";node.style.willChange=\"auto\";node.style.filter=\"none\";node.style.perspective=\"none\";}node=node.parentElement;}};const thaw=()=>{frozen.forEach(entry=>{entry.node.style.transform=entry.transform;entry.node.style.willChange=entry.willChange;entry.node.style.filter=entry.filter;entry.node.style.perspective=entry.perspective;});frozen=[];};const dress=()=>{const s=panel.style;s.position=\"fixed\";s.top=\"0\";s.right=\"0\";s.bottom=\"0\";s.left=\"0\";s.width=\"auto\";s.maxWidth=\"none\";s.height=\"100%\";s.maxHeight=\"none\";s.boxSizing=\"border-box\";s.margin=\"0\";s.padding=\"70px 18px 120px 18px\";s.background=\"rgb(255, 255, 255)\";s.overflowY=\"auto\";s.overscrollBehavior=\"contain\";s.zIndex=\"99990\";s.display=\"flex\";s.justifyContent=\"flex-start\";s.webkitOverflowScrolling=\"touch\";// a flex column squeezes its children before it will overflow\nfor(let i=0;i<panel.children.length;i++){panel.children[i].style.flexShrink=\"0\";}};const undress=()=>{const s=panel.style;s.position=\"\";s.top=\"\";s.right=\"\";s.bottom=\"\";s.left=\"\";s.width=\"\";s.maxWidth=\"\";s.height=\"\";s.maxHeight=\"\";s.boxSizing=\"\";s.margin=\"\";s.padding=\"\";s.background=\"\";s.overflowY=\"\";s.overscrollBehavior=\"\";s.zIndex=\"\";s.justifyContent=\"\";for(let i=0;i<panel.children.length;i++){panel.children[i].style.flexShrink=\"\";}};const show=()=>{open=true;freeze();dress();head.style.display=\"flex\";foot.style.display=\"block\";document.body.style.overflow=\"hidden\";};const hide=()=>{open=false;undress();thaw();head.style.display=\"none\";foot.style.display=\"none\";document.body.style.overflow=\"\";panel.style.display=phone()?\"none\":\"\";};const sync=()=>{if(phone()){trigger.style.display=\"flex\";if(!open)panel.style.display=\"none\";}else{trigger.style.display=\"none\";if(open)hide();panel.style.display=\"\";}};sync();const onOpen=()=>show();const onClose=()=>hide();trigger.addEventListener(\"click\",onOpen);head.addEventListener(\"click\",onClose);apply.addEventListener(\"click\",onClose);window.addEventListener(\"resize\",sync);cleanups.push(()=>{trigger.removeEventListener(\"click\",onOpen);head.removeEventListener(\"click\",onClose);apply.removeEventListener(\"click\",onClose);window.removeEventListener(\"resize\",sync);hide();panel.style.display=\"\";panel.__filterBound=false;if(trigger.parentNode)trigger.parentNode.removeChild(trigger);if(head.parentNode)head.parentNode.removeChild(head);if(foot.parentNode)foot.parentNode.removeChild(foot);});};setup();const t1=window.setTimeout(setup,300);const t2=window.setTimeout(setup,1200);const settle=settleAfterChurn(setup);const obs=new MutationObserver(records=>{if(outsideSearch(records))settle.call();});obs.observe(document.body,{childList:true,subtree:true});return()=>{window.clearTimeout(t1);window.clearTimeout(t2);obs.disconnect();settle.cancel();cleanups.forEach(fn=>fn());};}function bindProductCards(){const undo=[];const bind=()=>{const cards=document.querySelectorAll('[data-framer-name=\"Product Card\"]');for(let i=0;i<cards.length;i++){const card=cards[i];if(card.__cardBound)continue;const media=card.querySelector('[data-framer-name=\"Media\"]');if(!media)continue;card.__cardBound=true;// the injected controls are positioned against the picture\nif(!media.style.position)media.style.position=\"relative\";const row=el(\"div\",{position:\"absolute\",left:\"16px\",right:\"16px\",bottom:\"14px\",height:\"46px\",display:\"flex\",alignItems:\"stretch\",gap:\"8px\",opacity:\"0\",transform:\"translateY(10px)\",transition:\"opacity 320ms \"+EASE+\", transform 320ms \"+EASE,zIndex:\"3\",pointerEvents:\"none\"});row.setAttribute(CARD_BAR,\"true\");const addBtn=cardButton(IDLE_LABEL);const viewBtn=cardButton(VIEW_LABEL);// the second button only exists once the product is in the cart\nviewBtn.style.display=\"none\";row.appendChild(addBtn);row.appendChild(viewBtn);const eye=el(\"div\",{position:\"absolute\",right:\"16px\",top:\"50px\",width:\"28px\",height:\"28px\",borderRadius:\"99px\",background:\"rgb(255, 255, 255)\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",color:INK,cursor:\"pointer\",opacity:\"0\",transform:\"translateY(-6px)\",transition:\"opacity 320ms \"+EASE+\", transform 320ms \"+EASE,zIndex:\"3\",pointerEvents:\"none\"});eye.innerHTML=EYE_SVG;eye.setAttribute(CARD_EYE,\"true\");eye.setAttribute(\"role\",\"button\");eye.setAttribute(\"aria-label\",\"Quick view\");media.appendChild(row);media.appendChild(eye);const sync=()=>{viewBtn.style.display=inCart(cardText(card,\"Name\"))?\"flex\":\"none\";};sync();const show=()=>{// hovering only counts when the cursor moved, not the page\nif(isPageScrolling())return;sync();row.style.opacity=\"1\";row.style.transform=\"translateY(0)\";row.style.pointerEvents=\"auto\";eye.style.opacity=\"1\";eye.style.transform=\"translateY(0)\";eye.style.pointerEvents=\"auto\";};const hide=()=>{row.style.opacity=\"0\";row.style.transform=\"translateY(10px)\";row.style.pointerEvents=\"none\";eye.style.opacity=\"0\";eye.style.transform=\"translateY(-6px)\";eye.style.pointerEvents=\"none\";};// the whole card is a link, so every control has to swallow the tap\nconst onAdd=e=>{e.preventDefault();e.stopPropagation();addCardToCart(readCard(card));sync();};const onView=e=>{e.preventDefault();e.stopPropagation();goToCart();};const onEye=e=>{e.preventDefault();e.stopPropagation();openQuick(readCard(card));};card.addEventListener(\"pointerenter\",show);card.addEventListener(\"pointerleave\",hide);addBtn.addEventListener(\"click\",onAdd);viewBtn.addEventListener(\"click\",onView);eye.addEventListener(\"click\",onEye);window.addEventListener(CHANGED,sync);undo.push(()=>{card.removeEventListener(\"pointerenter\",show);card.removeEventListener(\"pointerleave\",hide);window.removeEventListener(CHANGED,sync);if(row.parentNode)row.parentNode.removeChild(row);if(eye.parentNode)eye.parentNode.removeChild(eye);card.__cardBound=false;});}};bind();const settle=settleAfterChurn(bind);const schedule=()=>settle.call();const t1=window.setTimeout(bind,200);const t2=window.setTimeout(bind,900);const obs=new MutationObserver(records=>{if(outsideSearch(records))schedule();});obs.observe(document.body,{childList:true,subtree:true});return()=>{window.clearTimeout(t1);window.clearTimeout(t2);obs.disconnect();settle.cancel();undo.forEach(fn=>fn());};}/* ==================== category section entrance ==================== *//**\n * The Categories section animates in with the appear effects set on the canvas.\n * The entrance itself lives there; this only decides when it may run.\n *\n * Appear effects re-arm on every mount, so a client-side page change back to a\n * page holding this section would replay the whole cascade. The entrance is a\n * first-impression moment: it should run on a real document load - a first\n * visit or a refresh - and never again for the life of that document. A\n * module-level flag has exactly that lifetime, because it is only reset when\n * the browser genuinely reparses the bundle. Scrolling back to the section is\n * already covered by the replay:false on the effect itself.\n *\n * Framer tags every element it animates with data-framer-appear-id, so\n * suppressing a replay means snapping only those elements to their settled\n * values. Card images and their arrow badges are excluded because the hover\n * zoom owns their transform. Nothing else in the section is touched, so the\n * slider, the layout and the responsive behaviour are unchanged.\n */const ENTRANCE_STYLE_ID=\"category-entrance-guard\";const ENTRANCE_SKIP=\"data-entrance-skip\";const ENTRANCE_CSS='[data-framer-name=\"Categories\"][data-entrance-skip] [data-framer-appear-id]:not(img):not([data-framer-name=\"Arrow Badge\"]),'+'[data-framer-name=\"Categories\"][data-entrance-skip][data-framer-appear-id] {'+\"    opacity: 1 !important;\"+\"    transform: none !important;\"+\"    animation: none !important;\"+\"    transition: none !important;\"+\"}\";// captured while the bundle is parsed, so a refresh always starts over\nconst entrancePath=typeof location===\"undefined\"?\"\":location.pathname;let entranceNavigated=false;function bindCategoryEntrance(){const marked=[];if(!document.getElementById(ENTRANCE_STYLE_ID)){const style=document.createElement(\"style\");style.id=ENTRANCE_STYLE_ID;style.textContent=ENTRANCE_CSS;document.head.appendChild(style);}const markSections=()=>{const sections=qa(\"Categories\");for(let i=0;i<sections.length;i++){const section=sections[i];if(section.hasAttribute(ENTRANCE_SKIP))continue;section.setAttribute(ENTRANCE_SKIP,\"\");marked.push(section);}};if(entranceNavigated)markSections();const settle=settleAfterChurn(markSections);/**\n     * Once any path change has been seen the flag stays set, so returning to\n     * the page the visitor landed on still counts as a navigation. The check\n     * is a string compare with no layout cost, which is why it can run on the\n     * mutation directly - only the DOM pass waits for the churn to settle.\n     */const check=()=>{if(!entranceNavigated){if(location.pathname===entrancePath)return;entranceNavigated=true;markSections();return;}settle.call();};const onPop=()=>check();window.addEventListener(\"popstate\",onPop);const obs=new MutationObserver(records=>{if(outsideSearch(records))check();});obs.observe(document.body,{childList:true,subtree:true});return()=>{window.removeEventListener(\"popstate\",onPop);obs.disconnect();settle.cancel();marked.forEach(section=>section.removeAttribute(ENTRANCE_SKIP));};}/**\n * Framer ships every element that has an appear effect with an inline\n * will-change:transform and never takes it back. On the published home page\n * that is 93 elements, each held on its own compositor layer for the life of\n * the document, all of them sitting at opacity:0 waiting their turn. Every\n * scroll frame pays for that in raster work and GPU memory.\n *\n * They are matched on the inline style rather than on data-framer-appear-id:\n * the published markup carries that attribute exactly once, on the Framer\n * badge, so keying off it reached nothing.\n *\n * Two tiers. Anything far outside the viewport loses the hint straight away -\n * it buys nothing there, and the browser promotes on its own the moment a\n * transform or opacity transition actually starts. Anything near or on screen\n * keeps it until it has had time to finish animating.\n *\n * All the rects are read in one batch before anything is written, so the pass\n * costs a single layout rather than one per element.\n */const APPEAR_LAYER_SELECTOR='[style*=\"will-change\"]';const APPEAR_SETTLE_MS=2200;/* how many viewports away counts as \"not worth a layer\" */const APPEAR_FAR_VIEWPORTS=1.5;const APPEAR_RELEASED=\"__appearLayerReleased\";const APPEAR_WATCHED=\"__appearLayerWatched\";function bindAppearLayerCleanup(){if(typeof IntersectionObserver===\"undefined\")return()=>{};const timers=[];const release=el=>{if(el[APPEAR_RELEASED])return;el[APPEAR_RELEASED]=true;el.style.willChange=\"auto\";};const io=new IntersectionObserver(entries=>{for(let i=0;i<entries.length;i++){if(!entries[i].isIntersecting)continue;const el=entries[i].target;io.unobserve(el);// long enough to outlast the slowest appear spring plus its delay\ntimers.push(window.setTimeout(()=>release(el),APPEAR_SETTLE_MS));}});const scan=()=>{const nodes=document.querySelectorAll(APPEAR_LAYER_SELECTOR);if(!nodes.length)return;const vh=window.innerHeight||1;const far=vh*APPEAR_FAR_VIEWPORTS;/* read everything first ... */const pending=[];const offscreen=[];for(let i=0;i<nodes.length;i++){const el=nodes[i];if(el[APPEAR_RELEASED])continue;if(el[APPEAR_WATCHED])continue;const rect=el.getBoundingClientRect();pending.push(el);offscreen.push(rect.top>vh+far||rect.bottom<-far);}/* ... then write, so the two never interleave */for(let i=0;i<pending.length;i++){const el=pending[i];el[APPEAR_WATCHED]=true;if(offscreen[i])release(el);else io.observe(el);}};scan();const settle=settleAfterChurn(scan);const t1=window.setTimeout(scan,400);const t2=window.setTimeout(scan,1600);const obs=new MutationObserver(records=>{if(outsideSearch(records))settle.call();});obs.observe(document.body,{childList:true,subtree:true});return()=>{window.clearTimeout(t1);window.clearTimeout(t2);timers.forEach(t=>window.clearTimeout(t));io.disconnect();obs.disconnect();settle.cancel();};}/* ========================= smooth scroll ========================= *//**\n * Native wheel scrolling is discrete - one notch moves the page about 100px at\n * once, and everything downstream inherits that step: sticky elements, parallax\n * and scroll-linked reveals all sample a position that jumps. This holds a\n * target and eases the *real* window scroll toward it, so every scroll-driven\n * effect on the page receives continuous input without being animated itself.\n *\n * Easing the real scroll rather than translating a wrapper is the choice that\n * matters. A transformed ancestor becomes the containing block for\n * position:fixed and breaks position:sticky, which would take out the sticky\n * filter sidebar on the Shop page.\n *\n * Duration and curve are the whole feel: 0.65s reads as premium without going\n * floaty, and the 2^(-11p) expo-out is quick off the mark and settles without\n * overshoot. Raise the duration for floatier, lower it for snappier.\n *\n * There is no static-renderer guard because this only ever runs from an\n * override effect, and effects do not run during static generation.\n *//**\n * Two knobs decide the feel.\n *\n * WHEEL_STEP is how far one notch travels: 1 is the browser default,\n * higher covers more ground per notch. SCROLL_DURATION is how long that\n * distance takes to settle. They move together - a longer step over the\n * same duration means a higher peak speed, which reads as abrupt, so the\n * duration is lifted alongside the step to keep the glide unhurried.\n */const SCROLL_DURATION=.8/* seconds */;const WHEEL_STEP=1.6/* multiplier on one wheel notch */;const scrollEasing=p=>Math.min(1,1.001-Math.pow(2,-11*p));/**\n * Lenis exempts elements marked data-lenis-prevent. This site has real inner\n * scrollers instead - the search results, the mobile filter sheet and the cart\n * drawer - and a blanket preventDefault would leave all three unscrollable, so\n * the wheel is only taken over when the pointer is not over something that can\n * still scroll itself in that direction. Horizontal-only rails are ignored on\n * purpose: hovering a product carousel must still scroll the page.\n */function scrollableAncestor(start,delta){let node=start;let depth=0;while(node&&node.nodeType===1&&depth<12){if(node===document.body||node===document.documentElement)break;// the cheap geometry check runs first so getComputedStyle stays rare\n/* 4px, not 1px. At fractional scaling sub-pixel layout rounding can\n         * leave scrollHeight a pixel or two above clientHeight on elements\n         * that do not actually scroll. A 1px tolerance treated those as\n         * scrollers, so the wheel was handed back to the browser and the\n         * glide silently stopped engaging - inconsistent scrolling that\n         * appears only at 125% and above. */if(node.scrollHeight>node.clientHeight+4){const overflowY=window.getComputedStyle(node).overflowY;if(overflowY===\"auto\"||overflowY===\"scroll\"){const atTop=node.scrollTop<=0;const atEnd=node.scrollTop+node.clientHeight>=node.scrollHeight-1;if(!(delta<0&&atTop)&&!(delta>0&&atEnd))return true;}}node=node.parentElement;depth+=1;}return false;}function bindSmoothScroll(){const noop=()=>{};if(typeof window===\"undefined\")return noop;/* Never hijack scrolling inside the Framer canvas. */if(RenderTarget.current()===RenderTarget.canvas)return noop;if(window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches)return noop;/* Coarse pointers already scroll smoothly; leave touch alone. */if(window.matchMedia(\"(pointer: coarse)\").matches)return noop;/**\n     * macOS is left completely native. Its trackpads already emit high\n     * frequency wheel events that carry the system momentum curve, and there\n     * are two separate problems with intercepting them.\n     *\n     * First, a non-passive wheel listener forces the compositor to wait on the\n     * main thread before it can scroll, for every single one of those events -\n     * that alone is enough to produce micro-stutter at 120Hz.\n     *\n     * Second, preventDefault throws away the momentum the OS already computed\n     * and this eases the result a second time. Easing an already-eased curve is\n     * what reads as sticky and jerky rather than smooth.\n     *\n     * A mouse wheel on Windows genuinely is stepped and benefits from the\n     * glide, so the engine stays there. Safari and Chrome on macOS get the\n     * native behaviour, which is the thing being matched in the first place.\n     */const ua=navigator.userAgent||\"\";const platform=navigator.userAgentData?.platform||navigator.platform||\"\";if(/Mac/i.test(platform)||/Mac OS X/i.test(ua))return noop;/* clientHeight, not innerHeight: both sides are then measured the same\n     * way and rounded the same way. innerHeight includes the scrollbar and\n     * can be fractional, so at 125% or 150% scaling it disagreed with\n     * scrollHeight by up to a pixel and the clamp landed just short of, or\n     * just past, the real bottom of the page. */const maxScroll=()=>{const doc=document.documentElement;return Math.max(0,doc.scrollHeight-doc.clientHeight);};const clamp=v=>Math.min(maxScroll(),Math.max(0,v));/* Read fresh each frame: it changes when the window moves to a second\n     * monitor or the scaling setting is altered while the page is open. */const dpr=()=>window.devicePixelRatio||1;let target=window.scrollY;let current=target;let from=target;let startedAt=0;let animating=false;let raf=0;let selfDriven=false;let lastWritten=target;const frame=now=>{raf=requestAnimationFrame(frame);if(!animating)return;const ratio=dpr();const elapsed=(now-startedAt)/1e3;/**\n         * Clamped at both ends. `startedAt` is stamped with performance.now()\n         * inside the wheel handler, but `now` is the rAF timestamp, which is\n         * the moment the frame *started* - and input is dispatched after that\n         * point. So on the first frame after a wheel event `elapsed` is\n         * routinely negative, and this easing curve returns a negative value\n         * for negative input: 1.001 - 2^(-11t) with t = -0.01 gives -0.078,\n         * which threw the page backwards by 8% of the pending distance on\n         * essentially every notch. That backward kick is the jerk.\n         */const t=Math.max(0,Math.min(1,elapsed/SCROLL_DURATION));let value=from+(target-from)*scrollEasing(t);/**\n         * The tail of an expo-out moves less than a device pixel per frame.\n         * The browser snaps scroll position to whole device pixels, so those\n         * frames write the same position over and over and the glide looks\n         * like it has stalled - then the next wheel event jerks it forward.\n         * That is the stepped feel at 125%, 150% and 175% scaling, where the\n         * device pixel grid no longer lines up with CSS pixels. Finish the\n         * glide instead of creeping through a sub-pixel tail.\n         */if(t>=1||Math.abs(target-value)<.5/ratio){value=target;animating=false;}/* Land exactly on the device pixel grid so the browser never has to\n         * round the write, and keep the unrounded position in `current` so\n         * nothing is lost between frames. */const snapped=Math.round(value*ratio)/ratio;selfDriven=true;window.scrollTo(0,snapped);selfDriven=false;current=value;lastWritten=snapped;};const onWheel=event=>{if(event.ctrlKey)return;/* pinch-zoom *//* Normalise line and page deltas to pixels. Firefox reports three\n         * lines per notch where Chrome and Edge report about 100px, so a line\n         * counts as 100/3 and one notch travels the same distance in all\n         * three browsers. The old multiplier of 16 made Firefox scroll less\n         * than half as far per notch. */let delta=event.deltaY;if(event.deltaMode===1)delta*=100/3;else if(event.deltaMode===2)delta*=window.innerHeight;/* applied after the mode is normalised, so a Firefox line notch and\n         * a Chrome pixel notch are lengthened by the same proportion */delta*=WHEEL_STEP;if(scrollableAncestor(event.target,delta))return;event.preventDefault();target=clamp(target+delta);/* Chain from the tracked float rather than the read-back: window.scrollY\n         * comes back snapped to a device pixel, and resetting to it on every\n         * event of a fast wheel or a trackpad throws away the sub-pixel\n         * position the glide had reached. That loss is what accumulates into\n         * inconsistent movement at fractional scaling. */from=animating?current:window.scrollY;startedAt=performance.now();animating=true;};/* Anything the browser scrolls itself - keyboard, scrollbar drag, anchor\n     * jump, a route change resetting to the top - becomes the new truth. */const onScroll=()=>{if(selfDriven)return;if(animating){/* Comfortably above any device-pixel rounding, which is at most\n             * half a device pixel, so this never misfires at 125% or 150%. */if(Math.abs(window.scrollY-lastWritten)>2){animating=false;target=window.scrollY;current=target;}return;}target=window.scrollY;current=target;};window.addEventListener(\"wheel\",onWheel,{passive:false});window.addEventListener(\"scroll\",onScroll,{passive:true});raf=requestAnimationFrame(frame);return()=>{cancelAnimationFrame(raf);window.removeEventListener(\"wheel\",onWheel);window.removeEventListener(\"scroll\",onScroll);};}/* ===================== category card cascade ===================== *//**\n * Framer's stagger does not reach the items of a CMS collection list once the\n * site is published: the whole list receives one transform and the cards move\n * as a single block, which is why they all arrived together. The cascade is\n * therefore driven here, one card at a time.\n *\n * The rail is watched rather than each card, because the cards sit side by side\n * and enter the viewport together - the running order has to come from their\n * position in the row, not from when each one is seen.\n *\n * Same gate as the rest of the entrance: it runs on a real document load and is\n * skipped once this document has navigated, so returning to the page does not\n * replay it. Setting the start state is safe despite running after hydration\n * because the rail is below the fold, so nothing is on screen to flash.\n */const CASCADE_CARD='[data-framer-name=\"Category Card\"]';const CASCADE_RAIL='[data-framer-name=\"Cards Rail\"]';const CASCADE_MS=750;const CASCADE_STEP_MS=220;const CASCADE_FROM=\"translateY(30px) scale(0.94) rotateY(-26deg)\";function bindCategoryCascade(){const noop=()=>{};if(typeof IntersectionObserver===\"undefined\")return noop;if(window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches)return noop;const undo=[];const run=rail=>{const cards=rail.querySelectorAll(CASCADE_CARD);for(let i=0;i<cards.length;i++){const card=cards[i];const delay=i*CASCADE_STEP_MS;card.style.transition=\"transform \"+CASCADE_MS+\"ms \"+EXPO_OUT+\" \"+delay+\"ms, \"+\"opacity \"+CASCADE_MS+\"ms \"+EXPO_OUT+\" \"+delay+\"ms\";card.style.opacity=\"1\";card.style.transform=\"none\";}};const io=new IntersectionObserver(entries=>{for(let i=0;i<entries.length;i++){if(!entries[i].isIntersecting)continue;const rail=entries[i].target;io.unobserve(rail);run(rail);}},/**\n         * The rail is only 430px tall, so a bare threshold fired it while a\n         * sliver was showing at the very bottom of the screen - by the time the\n         * section was actually in front of the visitor the cascade had already\n         * finished. The negative bottom margin pulls the trigger line a fifth of\n         * a viewport up from the bottom edge, and a quarter of the rail has to\n         * be past it, so the cards start arriving once the section is genuinely\n         * being looked at.\n         */{threshold:.25,rootMargin:\"0px 0px -20% 0px\"});const arm=()=>{// a navigation means this document has already had its one entrance\nif(entranceNavigated)return;const rails=document.querySelectorAll(CASCADE_RAIL);for(let r=0;r<rails.length;r++){const rail=rails[r];if(rail.__cascadeArmed)continue;const cards=rail.querySelectorAll(CASCADE_CARD);if(!cards.length)continue;rail.__cascadeArmed=true;// without a perspective the rotateY reads as a flat horizontal\n// squash instead of a card turning toward the viewer\nconst hadPerspective=rail.style.perspective;rail.style.perspective=\"1200px\";for(let i=0;i<cards.length;i++){const card=cards[i];card.style.opacity=\"0\";card.style.transform=CASCADE_FROM;card.style.willChange=\"transform, opacity\";const done=ev=>{if(ev.propertyName!==\"transform\")return;card.style.willChange=\"auto\";card.style.transition=\"\";card.removeEventListener(\"transitionend\",done);};card.addEventListener(\"transitionend\",done);undo.push(()=>{card.removeEventListener(\"transitionend\",done);card.style.opacity=\"\";card.style.transform=\"\";card.style.transition=\"\";card.style.willChange=\"\";});}io.observe(rail);undo.push(()=>{rail.style.perspective=hadPerspective;rail.__cascadeArmed=false;});}};arm();const settle=settleAfterChurn(arm);const t1=window.setTimeout(arm,300);const t2=window.setTimeout(arm,1200);const obs=new MutationObserver(records=>{if(outsideSearch(records))settle.call();});obs.observe(document.body,{childList:true,subtree:true});return()=>{window.clearTimeout(t1);window.clearTimeout(t2);obs.disconnect();settle.cancel();io.disconnect();undo.forEach(fn=>fn());};}/* ===================== footer entrance replay ===================== *//**\n * The newsletter block lives in the layout template, so it is mounted once and\n * survives every client-side page change. Framer fires appear effects on mount\n * and these are marked replay:false, which means they run on the first document\n * load and never again - going Home to Shop left the footer sitting in its\n * finished state, while a hard refresh played it properly.\n *\n * The first load is left to Framer. From the first navigation onward the block\n * is reset to its start state and re-armed, so every page view gets the\n * entrance once, on scroll, exactly as a refresh does. Scrolling up and back\n * down within the same page does not replay it.\n *\n * The timings mirror the values on the canvas, so nothing about the motion\n * changes - only when it is allowed to run again.\n */const FOOTER_EASE=\"cubic-bezier(0.22, 1, 0.36, 1)\";const FOOTER_PARTS=[{name:\"Letter Copy\",from:\"translateY(26px)\",ms:800,delay:0},{name:\"Letter Still\",from:\"scale(1.06)\",ms:900,delay:120},{name:\"Letter Media\",from:\"scale(1.06)\",ms:950,delay:220}];function bindFooterReplay(){const noop=()=>{};if(typeof IntersectionObserver===\"undefined\")return noop;if(window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches)return noop;let path=location.pathname;let io=null;let touched=[];/* Only the breakpoint copy that is actually rendered; the others are\n     * hidden by media queries and must be left alone. */const parts=()=>{const found=[];for(let s=0;s<FOOTER_PARTS.length;s++){const spec=FOOTER_PARTS[s];const list=document.querySelectorAll('[data-framer-name=\"'+spec.name+'\"]');for(let i=0;i<list.length;i++){const el=list[i];if(!onScreen(el))continue;found.push({el,spec});}}return found;};const play=(el,spec)=>{el.style.transition=\"transform \"+spec.ms+\"ms \"+FOOTER_EASE+\" \"+spec.delay+\"ms, \"+\"opacity \"+spec.ms+\"ms \"+FOOTER_EASE+\" \"+spec.delay+\"ms\";el.style.opacity=\"1\";el.style.transform=\"none\";};const settleLayer=ev=>{if(ev.propertyName!==\"transform\")return;const el=ev.currentTarget;el.style.willChange=\"auto\";};const replay=()=>{if(io)io.disconnect();const found=parts();if(!found.length)return;for(let i=0;i<found.length;i++){const el=found[i].el;el.style.transition=\"none\";el.style.opacity=\"0\";el.style.transform=found[i].spec.from;el.style.willChange=\"transform, opacity\";el.addEventListener(\"transitionend\",settleLayer);if(touched.indexOf(el)<0)touched.push(el);}/* One reflow so the browser registers the start state before the\n         * transition is attached. Without it both writes land in the same\n         * frame and the element simply appears already finished. */void found[0].el.offsetWidth;io=new IntersectionObserver(entries=>{for(let i=0;i<entries.length;i++){if(!entries[i].isIntersecting)continue;const el=entries[i].target;if(io)io.unobserve(el);for(let k=0;k<found.length;k++){if(found[k].el===el)play(el,found[k].spec);}}},/* same trigger line as the rest of the site: well inside the\n             * viewport, not the moment a sliver appears at the bottom */{threshold:.25,rootMargin:\"0px 0px -15% 0px\"});for(let i=0;i<found.length;i++)io.observe(found[i].el);};const check=()=>{if(location.pathname===path)return;path=location.pathname;/* the router swaps the page beneath a persistent layout, so give the\n         * new tree a beat to mount before measuring anything */window.setTimeout(replay,60);};const onPop=()=>check();window.addEventListener(\"popstate\",onPop);const obs=new MutationObserver(()=>check());obs.observe(document.body,{childList:true,subtree:true});return()=>{window.removeEventListener(\"popstate\",onPop);obs.disconnect();if(io)io.disconnect();for(let i=0;i<touched.length;i++){const el=touched[i];el.removeEventListener(\"transitionend\",settleLayer);el.style.transition=\"\";el.style.opacity=\"\";el.style.transform=\"\";el.style.willChange=\"\";}touched=[];};}/* ===================== scroll activity ===================== *//**\n * While the page is moving, cards slide underneath a stationary cursor and fire\n * pointerenter/pointerleave over and over. Each one writes inline styles and\n * promotes a compositor layer, and on the product cards it also reveals an\n * injected bar - a DOM mutation, which then wakes every MutationObserver on the\n * page and schedules a rebind. None of that is wanted while scrolling, and all\n * of it lands on the scroll frame.\n *\n * Hover work is therefore skipped while the page is in motion and resumes a\n * moment after it settles. A timestamp is used rather than a timer so the\n * listener stays a single assignment: no allocation and no clearTimeout churn\n * at trackpad event rates.\n */const SCROLL_QUIET_MS=140;let lastScrollAt=-1e9;function isPageScrolling(){return performance.now()-lastScrollAt<SCROLL_QUIET_MS;}function bindScrollActivity(){const mark=()=>{lastScrollAt=performance.now();};window.addEventListener(\"scroll\",mark,{passive:true});return()=>window.removeEventListener(\"scroll\",mark);}/* ===================== category card hover ===================== *//**\n * Hovering anywhere over a category card grows that card to 1.05 while every\n * neighbour stays at 1.00, so the hovered one is visibly larger than the rest\n * and lifts above them.\n *\n * The growth is a transform, so nothing reflows and the rail keeps its exact\n * spacing. The one obstacle is the rail itself: it clips with overflow-y hidden\n * and its height matches the card height exactly, so a scaled card would have\n * about 11px cut off its top and bottom along with the rounded corners. The\n * rail is therefore given a little vertical breathing room and an equal\n * negative margin to cancel it, which leaves the visual spacing pixel-identical\n * while giving the growth somewhere to go. That is done here in code, so the\n * canvas is untouched and it all reverses on cleanup.\n *\n * Cards outside the rail - the three in the nav mega menu - sit in a different,\n * tighter container, so they keep the original picture zoom instead of growing.\n */const CARD_HOVER_SCALE=1.05;const CARD_IMAGE_SCALE=1.05;const CARD_HOVER_MS=550;/* expo out - quick off the mark, settling without overshoot */const EXPO_OUT=\"cubic-bezier(0.16, 1, 0.3, 1)\";const CARD_HOVER_SELECTOR='[data-framer-name=\"Category Card\"]';const CARD_RAIL_SELECTOR='[data-framer-name=\"Cards Rail\"]';/* 430px card at 1.05 overflows ~10.75px each side; 14px clears it */const CARD_RAIL_HEADROOM=14;function bindCategoryCardHover(){const undo=[];/** Room for a grown card to show, with the layout position unchanged. */const openRail=rail=>{if(rail.__railHeadroom)return;rail.__railHeadroom=true;const was={paddingTop:rail.style.paddingTop,paddingBottom:rail.style.paddingBottom,marginTop:rail.style.marginTop,marginBottom:rail.style.marginBottom};rail.style.paddingTop=CARD_RAIL_HEADROOM+\"px\";rail.style.paddingBottom=CARD_RAIL_HEADROOM+\"px\";rail.style.marginTop=-CARD_RAIL_HEADROOM+\"px\";rail.style.marginBottom=-CARD_RAIL_HEADROOM+\"px\";undo.push(()=>{rail.style.paddingTop=was.paddingTop;rail.style.paddingBottom=was.paddingBottom;rail.style.marginTop=was.marginTop;rail.style.marginBottom=was.marginBottom;rail.__railHeadroom=false;});};const bind=()=>{const cards=document.querySelectorAll(CARD_HOVER_SELECTOR);for(let i=0;i<cards.length;i++){const card=cards[i];if(card.__cardHoverBound)continue;card.__cardHoverBound=true;const rail=card.closest(CARD_RAIL_SELECTOR);// only the rail cards grow; the mega menu keeps the picture zoom\nconst target=rail?card:card.querySelector(\"img\");if(!target)continue;if(rail)openRail(rail);const scale=rail?CARD_HOVER_SCALE:CARD_IMAGE_SCALE;target.style.transformOrigin=\"center center\";target.style.transition=\"transform \"+CARD_HOVER_MS+\"ms \"+EXPO_OUT;let hovered=false;const enter=()=>{// the page is moving under the cursor, not the other way round\nif(isPageScrolling())return;hovered=true;target.style.willChange=\"transform\";// raised so the growth is never covered by a neighbour\nif(rail)card.style.zIndex=\"2\";target.style.transform=\"scale(\"+scale+\")\";};const leave=()=>{if(!hovered)return;hovered=false;target.style.transform=\"scale(1)\";};// released only once the transition has finished, so the layer and\n// the raised stacking are never dropped mid-animation\nconst settleLayer=ev=>{if(ev.propertyName!==\"transform\")return;if(card.matches(\":hover\"))return;target.style.willChange=\"auto\";if(rail)card.style.zIndex=\"\";};card.addEventListener(\"mouseenter\",enter);card.addEventListener(\"mouseleave\",leave);target.addEventListener(\"transitionend\",settleLayer);undo.push(()=>{card.removeEventListener(\"mouseenter\",enter);card.removeEventListener(\"mouseleave\",leave);target.removeEventListener(\"transitionend\",settleLayer);target.style.transition=\"\";target.style.transform=\"\";target.style.willChange=\"\";card.style.zIndex=\"\";card.__cardHoverBound=false;});}};bind();const settle=settleAfterChurn(bind);const t1=window.setTimeout(bind,300);const t2=window.setTimeout(bind,1200);const obs=new MutationObserver(records=>{if(outsideSearch(records))settle.call();});obs.observe(document.body,{childList:true,subtree:true});return()=>{window.clearTimeout(t1);window.clearTimeout(t2);obs.disconnect();settle.cancel();undo.forEach(fn=>fn());};}function bindImageZoom(){const undo=[];const bind=()=>{const frames=document.querySelectorAll(ZOOM_SELECTOR);for(let i=0;i<frames.length;i++){const frame=frames[i];if(frame.__zoomBound)continue;const img=frame.querySelector(\"img\");if(!img)continue;frame.__zoomBound=true;// the picture has to stay inside its frame while it grows\nframe.style.overflow=\"hidden\";img.style.transition=\"transform 620ms cubic-bezier(0.22, 1, 0.36, 1)\";const badge=frame.querySelector('[data-framer-name=\"Arrow Badge\"]');if(badge){badge.style.transition=\"transform 420ms cubic-bezier(0.22, 1, 0.36, 1)\";}let hovered=false;const enter=()=>{// the page is moving under the cursor, not the other way round\nif(isPageScrolling())return;hovered=true;// the layer is only worth holding while the zoom actually runs\nimg.style.willChange=\"transform\";if(badge)badge.style.willChange=\"transform\";img.style.transform=\"scale(1.06)\";if(badge)badge.style.transform=\"scale(1.1)\";};const leave=()=>{if(!hovered)return;hovered=false;img.style.transform=\"scale(1)\";if(badge)badge.style.transform=\"scale(1)\";};/**\n             * Released only once the transition has finished, so the layer is\n             * never dropped mid-animation. Holding it from bind time promoted\n             * every zoomable image on the page for the life of the document.\n             */const settleLayer=ev=>{if(ev.propertyName!==\"transform\")return;if(frame.matches(\":hover\"))return;img.style.willChange=\"auto\";if(badge)badge.style.willChange=\"auto\";};frame.addEventListener(\"pointerenter\",enter);frame.addEventListener(\"pointerleave\",leave);img.addEventListener(\"transitionend\",settleLayer);undo.push(()=>{frame.removeEventListener(\"pointerenter\",enter);frame.removeEventListener(\"pointerleave\",leave);img.removeEventListener(\"transitionend\",settleLayer);img.style.willChange=\"\";frame.__zoomBound=false;});}};bind();// breakpoint copies hydrate after the nav mounts, so rebind on a settle pass\nconst settle=settleAfterChurn(bind);const schedule=()=>settle.call();const t1=window.setTimeout(bind,200);const t2=window.setTimeout(bind,900);const obs=new MutationObserver(records=>{if(outsideSearch(records))schedule();});obs.observe(document.body,{childList:true,subtree:true});return()=>{window.clearTimeout(t1);window.clearTimeout(t2);obs.disconnect();settle.cancel();undo.forEach(fn=>fn());};}function installMenuHover(){if(document.getElementById(MENU_HOVER_ID))return;const style=document.createElement(\"style\");style.id=MENU_HOVER_ID;style.textContent=MENU_HOVER_CSS;document.head.appendChild(style);}export function withFullWidthMenu(Component){return function FullWidthMenu(props){useEffect(()=>{if(typeof document===\"undefined\"||typeof window===\"undefined\")return;const cleanups=[];installMenuHover();cleanups.push(acquire(\"scrollActivity\",bindScrollActivity));cleanups.push(acquire(\"imageZoom\",bindImageZoom));cleanups.push(acquire(\"productCards\",bindProductCards));cleanups.push(acquire(\"mobileFilters\",bindMobileFilters));cleanups.push(acquire(\"heroSwap\",bindHeroSwap));cleanups.push(acquire(\"scrollTextReveal\",bindScrollTextReveal));cleanups.push(acquire(\"footerAccordion\",bindFooterAccordion));cleanups.push(acquire(\"categoryEntrance\",bindCategoryEntrance));cleanups.push(acquire(\"categoryCascade\",bindCategoryCascade));cleanups.push(acquire(\"footerReplay\",bindFooterReplay));cleanups.push(acquire(\"appearLayers\",bindAppearLayerCleanup));cleanups.push(acquire(\"cardHover\",bindCategoryCardHover));cleanups.push(acquire(\"smoothScroll\",bindSmoothScroll));const apply=()=>panels().forEach(stretch);const settle=()=>{apply();requestAnimationFrame(apply);window.setTimeout(apply,120);window.setTimeout(apply,320);};settle();if(typeof MutationObserver!==\"undefined\"){// A client-side page change replaces the whole content tree, which fires\n// hundreds of mutations. Running settle() per mutation meant four forced\n// layout passes each time, so navigation stalled. Coalesce into one pass\n// per frame and do nothing at all while no menu panel is mounted.\nlet queued=false;const mo=new MutationObserver(()=>{if(queued)return;queued=true;requestAnimationFrame(()=>{queued=false;const open=panels();if(open.length)open.forEach(stretch);});});mo.observe(document.body,{childList:true,subtree:true});cleanups.push(()=>mo.disconnect());}const onResize=()=>{panels().forEach(p=>{p.style.marginLeft=\"0px\";p.setAttribute(\"data-bleed-ml\",\"0\");});settle();};window.addEventListener(\"resize\",onResize);cleanups.push(()=>window.removeEventListener(\"resize\",onResize));// every clickable item inside the panel closes it, then navigates\nconst onClick=e=>{const target=e.target;if(!target||!target.closest)return;const open=panels().filter(p=>p.contains(target));if(open.length===0)return;if(!target.closest(\"a\"))return;requestAnimationFrame(closeMenu);};document.addEventListener(\"click\",onClick,true);cleanups.push(()=>document.removeEventListener(\"click\",onClick,true));// let it open again on the next hover / after a back-forward nav\nconst onEnter=()=>reopenable();const trigger=document.querySelector(TRIGGER);if(trigger){trigger.addEventListener(\"mouseenter\",onEnter);trigger.addEventListener(\"pointerenter\",onEnter);cleanups.push(()=>{trigger.removeEventListener(\"mouseenter\",onEnter);trigger.removeEventListener(\"pointerenter\",onEnter);});}window.addEventListener(\"popstate\",onEnter);cleanups.push(()=>window.removeEventListener(\"popstate\",onEnter));// fresh page, closed state\ncloseMenu();reopenable();return()=>cleanups.forEach(fn=>fn());},[]);return /*#__PURE__*/_jsx(Component,{...props});};}/* =============================== search =============================== */const GRAY=\"rgb(107, 114, 128)\";const CARD=\"rgb(245, 243, 240)\";const RECOMMENDED=[{label:\"green hat\",query:\"mask\"},{label:\"Life styles\",query:\"serum\"},{label:\"winter collection\",query:\"clay\"}];const SEARCH_SVG='<svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M17 17L21 21\"/><path d=\"M19 11A8 8 0 1 1 3 11a8 8 0 0 1 16 0z\"/></svg>';const CLOCK_SVG='<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M12 7v5l3 2\"/></svg>';const SMALL_SEARCH_SVG='<svg width=\"17\" height=\"17\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"11\" cy=\"11\" r=\"7\"/><path d=\"M20 20l-3.5-3.5\"/></svg>';const CLOSE_SVG='<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\"><path d=\"M6 6l12 12M18 6L6 18\"/></svg>';function indexText(root,name){const n=root.querySelector('[data-framer-name=\"'+name+'\"]');return n&&n.textContent?n.textContent.trim():\"\";}/** Read the CMS-driven hidden index the layout renders. */function readProducts(){const items=Array.prototype.slice.call(document.querySelectorAll('[data-framer-name=\"Search Item\"]'));return items.map(item=>{const img=item.querySelector(\"img\");const anchor=item.tagName.toLowerCase()===\"a\"?item:item.closest(\"a\");return{name:indexText(item,\"SI Name\"),price:indexText(item,\"SI Price\"),category:indexText(item,\"SI Category\"),image:img?img.getAttribute(\"src\")||\"\":\"\",anchor:anchor};}).filter(p=>p.name);}function readCategories(){const items=Array.prototype.slice.call(document.querySelectorAll('[data-framer-name=\"Search Cat\"]'));return items.map(item=>{const anchor=item.tagName.toLowerCase()===\"a\"?item:item.closest(\"a\");return{name:indexText(item,\"SC Name\"),anchor:anchor};}).filter(c=>c.name);}/* ------------------------------- build ------------------------------- */function follow(anchor){if(!anchor)return;closeSearch();window.setTimeout(()=>anchor.click(),10);}function pill(label,anchor){const a=el(\"a\",{display:\"inline-flex\",alignItems:\"center\",padding:\"13px 24px\",borderRadius:\"99px\",border:\"1px solid \"+INK,background:\"#fff\",color:INK,fontFamily:SANS,fontSize:\"12px\",textTransform:\"uppercase\",letterSpacing:\"0.03em\",textDecoration:\"none\",whiteSpace:\"nowrap\"},label);a.href=anchor?anchor.getAttribute(\"href\")||\"#\":\"#\";a.addEventListener(\"click\",e=>{e.preventDefault();follow(anchor);});return a;}function sectionLabel(text){return el(\"p\",{fontFamily:SANS,fontSize:\"12px\",fontWeight:\"500\",color:GRAY,textTransform:\"uppercase\",letterSpacing:\"0.04em\",margin:\"0 0 12px 0\"},text);}function build(){let root=document.querySelector(\"div[data-search-modal]\");if(root)return root;root=el(\"div\",{position:\"fixed\",left:\"0\",top:\"0\",width:\"100%\",height:\"100%\",zIndex:\"99998\",visibility:\"hidden\",fontFamily:SANS,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",padding:\"20px\",boxSizing:\"border-box\",overflowY:\"auto\"});root.setAttribute(\"data-search-modal\",\"true\");root.setAttribute(\"role\",\"dialog\");root.setAttribute(\"aria-modal\",\"true\");root.setAttribute(\"aria-label\",\"Search\");const scrim=el(\"div\",{position:\"fixed\",left:\"0\",top:\"0\",width:\"100%\",height:\"100%\",background:\"rgba(0, 0, 0, 0.45)\",opacity:\"0\",transition:\"opacity 260ms \"+EASE});scrim.setAttribute(\"data-search-scrim\",\"true\");const card=el(\"div\",{position:\"relative\",width:\"100%\",maxWidth:\"900px\",background:CARD,borderRadius:\"12px\",padding:\"28px\",boxSizing:\"border-box\",opacity:\"0\",transform:\"translateY(-12px) scale(0.98)\",transition:\"opacity 260ms \"+EASE+\", transform 260ms \"+EASE,boxShadow:\"0 24px 60px rgba(0,0,0,0.18)\"});card.setAttribute(\"data-search-card\",\"true\");const close=el(\"button\",{position:\"absolute\",top:\"8px\",right:\"8px\",width:\"40px\",height:\"40px\",borderRadius:\"50%\",border:\"none\",background:\"rgba(255, 255, 255, 0.125)\",color:INK,cursor:\"pointer\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",padding:\"0\",transition:\"background-color 200ms ease-in-out\",zIndex:\"2\"});close.innerHTML=CLOSE_SVG;close.setAttribute(\"aria-label\",\"Close search\");close.addEventListener(\"click\",()=>closeSearch());/* search bar */const form=el(\"form\",{display:\"flex\",alignItems:\"center\",gap:\"10px\",background:\"#fff\",borderRadius:\"100px\",padding:\"0 8px 0 18px\",height:\"60px\",boxShadow:\"0 4px 16px rgba(0,0,0,0.08)\",marginTop:\"8px\"});const leadIcon=el(\"span\",{color:MUTED,display:\"flex\",alignItems:\"center\",flex:\"none\"});leadIcon.innerHTML=SEARCH_SVG;const input=el(\"input\",{flex:\"1 1 auto\",border:\"none\",outline:\"none\",background:\"transparent\",fontFamily:SANS,fontSize:\"15px\",color:INK,minWidth:\"0\"});input.type=\"search\";input.name=\"s\";input.placeholder=\"Search products…\";input.setAttribute(\"data-search-input\",\"true\");input.setAttribute(\"aria-label\",\"Search products\");const submit=el(\"button\",{flex:\"none\",width:\"44px\",height:\"44px\",borderRadius:\"99px\",border:\"none\",background:INK,color:\"#fff\",cursor:\"pointer\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",padding:\"0\"});submit.innerHTML=SEARCH_SVG;submit.setAttribute(\"aria-label\",\"Search\");submit.setAttribute(\"type\",\"submit\");form.appendChild(leadIcon);form.appendChild(input);form.appendChild(submit);const results=el(\"div\",{marginTop:\"22px\"});results.setAttribute(\"data-search-results\",\"true\");const suggestions=el(\"div\",{marginTop:\"22px\"});suggestions.setAttribute(\"data-search-suggestions\",\"true\");card.appendChild(close);card.appendChild(form);card.appendChild(results);card.appendChild(suggestions);root.appendChild(scrim);root.appendChild(card);document.body.appendChild(root);scrim.addEventListener(\"click\",()=>closeSearch());root.addEventListener(\"click\",e=>{if(e.target===root)closeSearch();});form.addEventListener(\"submit\",e=>{e.preventDefault();goToSearchResults(input.value);});input.addEventListener(\"input\",()=>renderResults(input.value));return root;}/* ------------------------------ rendering ------------------------------ */function search(query){const q=String(query||\"\").trim().toLowerCase();if(!q)return[];return readProducts().filter(p=>(p.name+\" \"+p.category).toLowerCase().indexOf(q)!==-1);}function renderSuggestions(){const root=build();const host=root.querySelector(\"[data-search-suggestions]\");if(!host)return;host.innerHTML=\"\";host.appendChild(sectionLabel(\"Recommended searches\"));const list=el(\"div\",{display:\"flex\",flexDirection:\"column\",gap:\"12px\",marginBottom:\"26px\"});RECOMMENDED.forEach(entry=>{const row=el(\"div\",{display:\"flex\",alignItems:\"center\",gap:\"12px\",cursor:\"pointer\"});const ico=el(\"span\",{color:GRAY,display:\"flex\",alignItems:\"center\",flex:\"none\"});ico.innerHTML=SMALL_SEARCH_SVG;row.appendChild(ico);row.appendChild(el(\"span\",{fontFamily:SANS,fontSize:\"13px\",color:INK,textTransform:\"uppercase\",letterSpacing:\"0.03em\",textDecoration:\"underline\",textUnderlineOffset:\"3px\"},entry.label));row.addEventListener(\"click\",()=>{const input=root.querySelector(\"[data-search-input]\");if(!input)return;input.value=entry.query;input.focus();renderResults(entry.query);});list.appendChild(row);});host.appendChild(list);const cats=readCategories();if(cats.length){host.appendChild(sectionLabel(\"Featured product categories\"));const row=el(\"div\",{display:\"flex\",flexWrap:\"wrap\",gap:\"10px\"});cats.forEach(c=>row.appendChild(pill(c.name,c.anchor)));host.appendChild(row);}}function renderResults(query){const root=build();const host=root.querySelector(\"[data-search-results]\");const suggestions=root.querySelector(\"[data-search-suggestions]\");if(!host)return;const q=String(query||\"\").trim();host.innerHTML=\"\";// a single letter matches almost everything, which reads as a dump of\n// the whole catalogue, so the suggestions stay up until there are two\nconst live=q.length>=2;if(suggestions)suggestions.style.display=live?\"none\":\"\";if(!live)return;const matches=search(q);if(matches.length===0){host.appendChild(el(\"p\",{fontFamily:SANS,fontSize:\"14px\",color:MUTED,textTransform:\"uppercase\",letterSpacing:\"0.02em\",margin:\"18px 0 6px 0\"},\"No results found\"));return;}host.appendChild(sectionLabel(matches.length+(matches.length===1?\" result\":\" results\")));const list=el(\"div\",{display:\"flex\",flexDirection:\"column\"});// the popup is a preview; the results page carries the full set\nmatches.slice(0,5).forEach(p=>{const row=el(\"a\",{display:\"flex\",alignItems:\"center\",gap:\"14px\",padding:\"12px 8px\",borderRadius:\"8px\",textDecoration:\"none\",color:INK,transition:\"background-color 200ms ease\"});row.href=p.anchor?p.anchor.getAttribute(\"href\")||\"#\":\"#\";row.addEventListener(\"mouseenter\",()=>row.style.backgroundColor=\"rgba(0,0,0,0.04)\");row.addEventListener(\"mouseleave\",()=>row.style.backgroundColor=\"transparent\");const thumb=el(\"span\",{width:\"48px\",height:\"60px\",flex:\"none\",borderRadius:\"4px\",background:\"#fff\",backgroundImage:p.image?'url(\"'+p.image+'\")':\"none\",backgroundSize:\"cover\",backgroundPosition:\"center\"});const meta=el(\"span\",{display:\"flex\",flexDirection:\"column\",gap:\"3px\",minWidth:\"0\"});meta.appendChild(el(\"span\",{fontFamily:SANS,fontSize:\"13px\",textTransform:\"uppercase\",letterSpacing:\"0.02em\"},p.name));if(p.category){meta.appendChild(el(\"span\",{fontFamily:SANS,fontSize:\"12px\",color:GRAY,textTransform:\"uppercase\"},p.category));}const price=el(\"span\",{marginLeft:\"auto\",fontFamily:SANS,fontSize:\"13px\",whiteSpace:\"nowrap\"},p.price);row.appendChild(thumb);row.appendChild(meta);row.appendChild(price);row.addEventListener(\"click\",e=>{e.preventDefault();follow(p.anchor);});list.appendChild(row);});host.appendChild(list);}/**\n * Send the visitor to the search results page. Framer emits relative hrefs, so\n * the path is resolved against the page currently open rather than assumed.\n */const SEARCH_HANDOFF=\"bitpan-search-query\";const SEARCH_EVENT=\"bitpan:search:go\";function goToSearchResults(value){const query=String(value||\"\").trim();if(!query)return;closeSearch();// With the results page already open, clicking the nav anchor is a\n// same-route navigation: nothing remounts and the stored query is never\n// read. Hand it straight to the archive that is already running.\nlet here=window.location.pathname;if(here.charAt(here.length-1)===\"/\")here=here.slice(0,-1);if(here.slice(-7)===\"/search\"){window.dispatchEvent(new CustomEvent(SEARCH_EVENT,{detail:query}));return;}// otherwise the query rides in session storage across the navigation\ntry{window.sessionStorage.setItem(SEARCH_HANDOFF,query);}catch(err){}const link=q(\"Search Page Link\");const anchor=link&&link.tagName===\"A\"?link:link?link.querySelector(\"a\"):null;if(anchor){anchor.click();return;}window.location.href=\"/search?s=\"+encodeURIComponent(query);}/* ------------------------------ open/close ------------------------------ */function openSearch(){const root=build();const input=root.querySelector(\"[data-search-input]\");if(input)input.value=\"\";renderSuggestions();renderResults(\"\");root.style.visibility=\"visible\";const scrim=root.querySelector(\"[data-search-scrim]\");const card=root.querySelector(\"[data-search-card]\");requestAnimationFrame(()=>{if(scrim)scrim.style.opacity=\"1\";if(card){card.style.opacity=\"1\";card.style.transform=\"translateY(0) scale(1)\";}});document.body.style.overflow=\"hidden\";window.setTimeout(()=>{if(input)input.focus();},60);}function closeSearch(){const root=document.querySelector(\"div[data-search-modal]\");if(!root)return;const scrim=root.querySelector(\"[data-search-scrim]\");const card=root.querySelector(\"[data-search-card]\");if(scrim)scrim.style.opacity=\"0\";if(card){card.style.opacity=\"0\";card.style.transform=\"translateY(-12px) scale(0.98)\";}document.body.style.overflow=\"\";window.setTimeout(()=>{if(root)root.style.visibility=\"hidden\";},280);}export function withSearch(Component){return function Search(props){useEffect(()=>{if(typeof document===\"undefined\"||typeof window===\"undefined\")return;const cleanups=[];let tries=0;const attach=()=>{const icon=document.querySelector('[data-framer-name=\"Search\"]');if(!icon){if(tries++>25)return;const t=window.setTimeout(attach,120);cleanups.push(()=>window.clearTimeout(t));return;}icon.style.cursor=\"pointer\";const onClick=e=>{e.preventDefault();e.stopPropagation();openSearch();};icon.addEventListener(\"click\",onClick);cleanups.push(()=>icon.removeEventListener(\"click\",onClick));};attach();const onKey=e=>{if(e.key===\"Escape\")closeSearch();};window.addEventListener(\"keydown\",onKey);cleanups.push(()=>window.removeEventListener(\"keydown\",onKey));return()=>cleanups.forEach(fn=>fn());},[]);return /*#__PURE__*/_jsx(Component,{...props});};}/* ------------------------------------------------------------------ archive\n * One filtering + sorting engine shared by every product listing page: Shop,\n * product categories, brands, and any archive added later. Nothing here is\n * page-specific - it reads the sidebar that is on the page and the cards the\n * CMS list rendered, so a new attribute group or a new archive page works\n * without touching this file.\n * -------------------------------------------------------------------------- */const PRICE_EVENT=\"bitpan:price\";const PRICE_SET_EVENT=\"bitpan:price:set\";/** Sidebar group name -> the query key the reference site uses. */const FILTER_GROUPS=[{group:\"Status\",param:\"status\"},{group:\"Rating\",param:\"rating\"},{group:\"Size\",param:\"pack-size\"},{group:\"Color\",param:\"color\"},{group:\"Category\",param:\"category\"}];function slugValue(value){return value.trim().toLowerCase().replace(/&/g,\"and\").replace(/[^a-z0-9]+/g,\"-\").replace(/^-+|-+$/g,\"\");}function isArchiveParam(key){return key===\"s\"||key===\"orderby\"||key===\"min_price\"||key===\"max_price\"||key.indexOf(\"filter_\")===0||key.indexOf(\"query_type_\")===0;}/* --------------------------------------------------------------- URL state */function readArchiveState(){const params=new URLSearchParams(window.location.search);const select=sortSelect();const resting=select?select.options[0]?.value||\"menu_order\":\"menu_order\";const filters={};FILTER_GROUPS.forEach(g=>{const raw=params.get(\"filter_\"+g.param);filters[g.param]=raw?raw.split(\",\").map(v=>v.trim()).filter(Boolean):[];});let handoff=\"\";try{handoff=window.sessionStorage.getItem(SEARCH_HANDOFF)||\"\";if(handoff)window.sessionStorage.removeItem(SEARCH_HANDOFF);}catch(err){}if(handoff&&!params.get(\"s\"))params.set(\"s\",handoff);const lo=parseFloat(params.get(\"min_price\")||\"\");const hi=parseFloat(params.get(\"max_price\")||\"\");return{orderby:params.get(\"orderby\")||resting,filters,price:{lo:isNaN(lo)?null:lo,hi:isNaN(hi)?null:hi},query:(params.get(\"s\")||\"\").trim()};}function archiveUrl(state){const current=new URLSearchParams(window.location.search);const keep=[];current.forEach((v,k)=>{if(!isArchiveParam(k))keep.push([k,v]);});const out=new URLSearchParams;if(state.query)out.set(\"s\",state.query);if(state.orderby&&state.orderby!==\"menu_order\"&&state.orderby!==\"relevance\")out.set(\"orderby\",state.orderby);FILTER_GROUPS.forEach(g=>{const vals=state.filters[g.param]||[];if(!vals.length)return;out.set(\"filter_\"+g.param,vals.join(\",\"));// WooCommerce marks a multi-value attribute query as an OR match.\nif(vals.length>1)out.set(\"query_type_\"+g.param,\"or\");});if(state.price.lo!==null)out.set(\"min_price\",String(state.price.lo));if(state.price.hi!==null)out.set(\"max_price\",String(state.price.hi));keep.forEach(pair=>out.append(pair[0],pair[1]));// The reference leaves the commas between attribute values unescaped.\nconst query=out.toString().replace(/%2C/g,\",\");return window.location.pathname+(query?\"?\"+query:\"\")+window.location.hash;}/* ------------------------------------------------------------------ reading */function archiveGrid(){return q(\"Product Grid\");}/** The direct grid children, so reordering moves whatever wrapper Framer made. */function archiveShells(grid){return qa(\"Product Card\",grid).map(card=>{let node=card;while(node.parentElement&&node.parentElement!==grid)node=node.parentElement;return node.parentElement===grid?node:card;});}function optionRows(group){return qa(\"Option\",group);}/** A rating row has no label - its value is how many stars it draws. */function optionValue(row,groupName){if(groupName===\"Rating\"){const stars=q(\"Stars\",row);return stars?String(stars.childElementCount):\"\";}return slugValue(textOf(q(\"Label\",row)));}function readArchiveCard(shell,index){const card=q(\"Product Card\",shell)||shell;const priceText=textOf(q(\"Price\",card));const numbers=priceText.match(/\\d+(?:[.,]\\d+)?/g)||[];// A variable product prints a range; the reference sorts on its lowest price.\nconst first=numbers[0];const price=first?parseFloat(first.replace(/,/g,\"\")):0;const rating=parseFloat(textOf(q(\"M Rating\",card)))||0;const pill=q(\"Category Pill\",card);const values={};values[\"status\"]=[slugValue(textOf(q(\"M Stock\",card)))].filter(Boolean);values[\"rating\"]=[String(Math.floor(rating))];values[\"pack-size\"]=textOf(q(\"M Pack\",card)).split(\",\").map(v=>slugValue(v)).filter(Boolean);values[\"color\"]=[slugValue(textOf(q(\"Color\",card)))].filter(Boolean);values[\"category\"]=[slugValue(textOf(pill?q(\"Label\",pill):null))].filter(Boolean);return{shell,haystack:(textOf(q(\"Name\",card))+\" \"+textOf(pill?q(\"Label\",pill):null)+\" \"+textOf(q(\"Color\",card))).toLowerCase(),order:index,price,rating,reviews:parseFloat(textOf(q(\"M Reviews\",card)))||0,added:Date.parse(textOf(q(\"M Added\",card)))||0,values};}/* ---------------------------------------------------------- match and order *//** Like matchesArchive but ignoring one attribute, for counting availability. */function matchesExcept(card,state,skip){if(state.query&&card.haystack.indexOf(state.query.toLowerCase())===-1)return false;for(let i=0;i<FILTER_GROUPS.length;i++){const param=FILTER_GROUPS[i].param;if(param===skip)continue;const wanted=state.filters[param]||[];if(!wanted.length)continue;const has=card.values[param]||[];let hit=false;for(let j=0;j<wanted.length;j++)if(has.indexOf(wanted[j])!==-1)hit=true;if(!hit)return false;}if(state.price.lo!==null&&card.price<state.price.lo)return false;if(state.price.hi!==null&&card.price>state.price.hi)return false;return true;}/**\n * The reference only lists filter values that exist in the current results and\n * prints a live count next to each rating. Options with nothing behind them are\n * hidden rather than left as dead ends.\n */function paintSidebarAvailability(cards,state){FILTER_GROUPS.forEach(g=>{const group=q(g.group);if(!group)return;let anyVisible=false;optionRows(group).forEach(row=>{const value=optionValue(row,g.group);if(!value)return;let count=0;cards.forEach(c=>{if(!matchesExcept(c,state,g.param))return;if((c.values[g.param]||[]).indexOf(value)!==-1)count++;});const input=row.querySelector('input[type=\"checkbox\"]');const checked=!!input&&input.checked;// never hide a row the visitor has ticked, or they cannot untick it\nconst show=count>0||checked;row.style.display=show?\"\":\"none\";if(show)anyVisible=true;const badge=q(\"Count\",row);const badgeText=deepestText(badge);if(badgeText)badgeText.textContent=\"(\"+count+\")\";});group.style.display=anyVisible?\"\":\"none\";});}function matchesArchive(card,state){if(state.query&&card.haystack.indexOf(state.query.toLowerCase())===-1)return false;for(let i=0;i<FILTER_GROUPS.length;i++){const param=FILTER_GROUPS[i].param;const wanted=state.filters[param]||[];if(!wanted.length)continue;const has=card.values[param]||[];// OR inside one attribute, AND between attributes - same as the reference.\nlet hit=false;for(let j=0;j<wanted.length;j++)if(has.indexOf(wanted[j])!==-1)hit=true;if(!hit)return false;}if(state.price.lo!==null&&card.price<state.price.lo)return false;if(state.price.hi!==null&&card.price>state.price.hi)return false;return true;}function compareArchive(a,b,orderby){if(orderby===\"popularity\")return b.reviews-a.reviews||a.order-b.order;if(orderby===\"rating\")return b.rating-a.rating||a.order-b.order;if(orderby===\"date\")return b.added-a.added||a.order-b.order;if(orderby===\"price\")return a.price-b.price||a.order-b.order;if(orderby===\"price-desc\")return b.price-a.price||a.order-b.order;return a.order-b.order;}/* ----------------------------------------------------------------- painting */function sortSelect(){const byName=document.querySelector('select[name=\"orderby\"]');if(byName)return byName;const wrap=q(\"Sorting\");if(!wrap)return null;if(wrap.tagName===\"SELECT\")return wrap;return wrap.querySelector(\"select\");}/** Only the search page carries these nodes; every other archive skips this. */function paintSearchHeading(query){const crumb=q(\"Search Crumb\");const title=q(\"Title\");if(!crumb&&!title)return;const label=query?\"Search results for “\"+query+\"”\":\"Search results\";const crumbText=deepestText(crumb);if(crumbText)crumbText.textContent=label;const titleText=deepestText(title);if(titleText&&crumb)titleText.textContent=query?\"Search results for: “\"+query+\"”\":\"Search results\";}function paintResultCount(shown){const wrap=q(\"Result Count\");if(!wrap)return;// Category and brand archives split the sentence up so the number can bind.\nconst slot=q(\"Count\",wrap);if(slot){const target=deepestText(slot);if(target)target.textContent=String(shown);return;}const target=deepestText(wrap);if(!target)return;target.textContent=shown===1?\"Showing the single result\":\"Showing all \"+shown+\" results\";}/**\n * The reference's empty search page: a centred message with the search box\n * underneath so the visitor can try again without reopening the popup.\n */const SEARCH_AGAIN=\"data-search-again\";function clearSearchAgain(grid){const host=grid.parentElement||grid;const existing=host.querySelector(\"[\"+SEARCH_AGAIN+\"]\");if(existing&&existing.parentElement)existing.parentElement.removeChild(existing);grid.style.display=\"\";}function paintSearchAgain(grid,query){const host=grid.parentElement||grid;grid.style.display=\"none\";let box=host.querySelector(\"[\"+SEARCH_AGAIN+\"]\");if(!box){box=el(\"div\",{display:\"flex\",flexDirection:\"column\",alignItems:\"center\",gap:\"26px\",padding:\"72px 0 96px 0\",width:\"100%\"});box.setAttribute(SEARCH_AGAIN,\"\");const note=el(\"p\",{fontFamily:SANS,fontSize:\"14px\",color:INK,textTransform:\"uppercase\",letterSpacing:\"0.04em\",margin:\"0\",textAlign:\"center\"},\"No products were found matching your selection!\");const form=el(\"form\",{display:\"flex\",alignItems:\"center\",gap:\"10px\",width:\"100%\",maxWidth:\"620px\"});const input=el(\"input\",{flex:\"1 1 auto\",height:\"52px\",padding:\"0 22px\",borderRadius:\"100px\",border:\"1px solid \"+BORDER,outline:\"none\",fontFamily:SANS,fontSize:\"13px\",color:INK,textTransform:\"uppercase\",letterSpacing:\"0.04em\"});input.setAttribute(\"type\",\"search\");input.setAttribute(\"aria-label\",\"Search products\");const submit=el(\"button\",{width:\"46px\",height:\"46px\",flex:\"none\",borderRadius:\"100px\",border:\"none\",background:INK,color:\"#fff\",cursor:\"pointer\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\"});submit.setAttribute(\"type\",\"submit\");submit.innerHTML=SMALL_SEARCH_SVG;form.appendChild(input);form.appendChild(submit);form.addEventListener(\"submit\",e=>{e.preventDefault();goToSearchResults(input.value);});box.appendChild(note);box.appendChild(form);host.appendChild(box);}const field=box.querySelector(\"input\");if(field&&field.value!==query)field.value=query;}function paintEmptyState(grid,shown,query){// A search that found nothing drops the whole archive UI and offers the\n// search box again, the way the reference does.\nconst onSearchPage=!!q(\"Search Crumb\");const bare=onSearchPage&&shown===0;const chrome=[q(\"Filters\"),q(\"Toolbar\"),q(\"Toolbar Rule\")];chrome.forEach(part=>{if(part)part.style.display=bare?\"none\":\"\";});if(bare){paintSearchAgain(grid,query);return;}clearSearchAgain(grid);const results=grid.parentElement||grid;let note=results.querySelector(\"[data-archive-empty]\");if(!note){note=el(\"p\",{fontFamily:SANS,fontSize:\"14px\",color:MUTED,textTransform:\"uppercase\",letterSpacing:\"0.04em\",margin:\"0\",padding:\"40px 0\"},\"No products were found matching your selection.\");note.setAttribute(\"data-archive-empty\",\"\");results.appendChild(note);}note.style.display=shown===0?\"block\":\"none\";}function paintArchive(state,animate){const grid=archiveGrid();if(!grid)return;const cards=archiveShells(grid).map(readArchiveCard);if(!cards.length)return;const visible=cards.filter(c=>matchesArchive(c,state));visible.sort((a,b)=>compareArchive(a,b,state.orderby));const hidden=cards.filter(c=>visible.indexOf(c)===-1);visible.forEach(c=>{c.shell.style.display=\"\";grid.appendChild(c.shell);});hidden.forEach(c=>{c.shell.style.display=\"none\";grid.appendChild(c.shell);});if(animate){visible.forEach(c=>{c.shell.style.transition=\"none\";c.shell.style.opacity=\"0\";});window.requestAnimationFrame(()=>{visible.forEach((c,i)=>{c.shell.style.transition=\"opacity 260ms \"+EASE+\" \"+Math.min(i*24,200)+\"ms\";c.shell.style.opacity=\"1\";});});}paintResultCount(visible.length);paintEmptyState(grid,visible.length,state.query);paintSidebarAvailability(cards,state);}/* ------------------------------------------------------------ sidebar state */function eachFilterInput(run){FILTER_GROUPS.forEach(g=>{const group=q(g.group);if(!group)return;optionRows(group).forEach(row=>{const input=row.querySelector('input[type=\"checkbox\"]');if(!input)return;run(input,g.param,optionValue(row,g.group));});});}function readSidebar(){const filters={};FILTER_GROUPS.forEach(g=>filters[g.param]=[]);eachFilterInput((input,param,value)=>{if(input.checked&&value)filters[param].push(value);});return filters;}function restoreSidebar(state,guard){const select=sortSelect();if(select&&select.value!==state.orderby){guard.syncing=true;select.value=state.orderby;guard.syncing=false;}eachFilterInput((input,param,value)=>{const want=(state.filters[param]||[]).indexOf(value)!==-1;if(input.checked===want)return;guard.syncing=true;// Click rather than assign so Framer's own input state follows along.\ninput.click();guard.syncing=false;});}/* ----------------------------------------------------------------- override */export function withProductArchive(Component){return function ProductArchive(props){useEffect(()=>{if(typeof document===\"undefined\"||typeof window===\"undefined\")return;const cleanups=[];const guard={syncing:false};let price={lo:null,hi:null};let bounds={lo:null,hi:null};let query=\"\";let repainting=false;function currentState(){const select=sortSelect();return{orderby:select?select.value:\"menu_order\",filters:readSidebar(),price,query};}/** Reordering the grid trips our own observer, so flag it. */function repaint(state,animate){repainting=true;paintArchive(state,animate);const t=window.setTimeout(()=>repainting=false,0);cleanups.push(()=>window.clearTimeout(t));}function commit(){if(guard.syncing)return;const state=currentState();const next=archiveUrl(state);const here=window.location.pathname+window.location.search+window.location.hash;if(next!==here)window.history.pushState(null,\"\",next);repaint(state,true);}function restore(animate){const state=readArchiveState();price=state.price;query=state.query;paintSearchHeading(state.query);restoreSidebar(state,guard);repaint(state,animate);}/* A repeat search never remounts this page, so the new query\n               arrives as an event rather than through the URL. */function onSearchAgain(e){const next=String(e.detail||\"\").trim();if(!next)return;query=next;const state=currentState();const url=archiveUrl(state);const at=window.location.pathname+window.location.search+window.location.hash;if(url!==at)window.history.pushState(null,\"\",url);paintSearchHeading(next);repaint(state,true);}window.addEventListener(SEARCH_EVENT,onSearchAgain);cleanups.push(()=>window.removeEventListener(SEARCH_EVENT,onSearchAgain));whenReady(()=>{const grid=archiveGrid();if(!grid||!archiveShells(grid).length)return false;restore(false);const panel=q(\"Filters\");function onChange(e){const target=e.target;if(!target)return;const isSort=target===sortSelect();const isFilter=target.type===\"checkbox\"&&!!panel&&panel.contains(target);if(isSort||isFilter)commit();}document.addEventListener(\"change\",onChange);cleanups.push(()=>document.removeEventListener(\"change\",onChange));// The whole option row is a hit area, like the reference.\nfunction onClick(e){const target=e.target;if(!target||target.tagName===\"INPUT\")return;const row=target.closest('[data-framer-name=\"Option\"]');if(!row)return;const input=row.querySelector('input[type=\"checkbox\"]');if(!input)return;e.preventDefault();input.click();}if(panel){panel.addEventListener(\"click\",onClick);cleanups.push(()=>panel.removeEventListener(\"click\",onClick));}function onPrice(e){const d=e.detail||{};if(typeof d.min===\"number\"&&typeof d.max===\"number\")bounds={lo:d.min,hi:d.max};const lo=typeof d.lo===\"number\"?d.lo:null;const hi=typeof d.hi===\"number\"?d.hi:null;// Only carry the range in the URL once it is narrower than full.\nconst next={lo:lo!==null&&lo!==bounds.lo?lo:null,hi:hi!==null&&hi!==bounds.hi?hi:null};if(next.lo===price.lo&&next.hi===price.hi)return;price=next;commit();}window.addEventListener(PRICE_EVENT,onPrice);cleanups.push(()=>window.removeEventListener(PRICE_EVENT,onPrice));function onPop(){restore(true);const state=readArchiveState();window.dispatchEvent(new CustomEvent(PRICE_SET_EVENT,{detail:{lo:state.price.lo===null?bounds.lo:state.price.lo,hi:state.price.hi===null?bounds.hi:state.price.hi}}));}window.addEventListener(\"popstate\",onPop);cleanups.push(()=>window.removeEventListener(\"popstate\",onPop));// The CMS list can re-render; re-apply so the view never drifts.\nconst observer=new MutationObserver(()=>{if(repainting||guard.syncing)return;repaint(currentState(),false);});observer.observe(grid,{childList:true});cleanups.push(()=>observer.disconnect());return true;},cleanups);return()=>cleanups.forEach(fn=>fn());},[]);return /*#__PURE__*/_jsx(Component,{...props});};}/* --------------------------------------------------------------- pill hover\n * The category pills are plain frames, and Framer drops a hoverEffect that only\n * changes the fill, so the hover is driven here instead. Inline styles win over\n * every stylesheet, and an active pill is left alone.\n * -------------------------------------------------------------------------- */const PILL_IDLE=\"rgb(255, 255, 255)\";const PILL_HOVER=\"rgb(238, 238, 238)\";const PILL_WIRED=\"data-pill-hover\";/** The pill for the category you are already on keeps its own styling. */function pillIsActive(pill){if(pill.getAttribute(\"aria-current\"))return true;if(pill.getAttribute(\"data-active\")===\"true\")return true;const href=pill.getAttribute(\"href\")||\"\";if(!href)return false;const target=href.split(\"?\")[0].split(\"/\").filter(Boolean).pop()||\"\";const here=window.location.pathname.split(\"/\").filter(Boolean).pop()||\"\";return target!==\"\"&&target===here;}export function withCategoryPills(Component){return function CategoryPills(props){useEffect(()=>{if(typeof document===\"undefined\"||typeof window===\"undefined\")return;const cleanups=[];function paint(pill,hovered){if(pillIsActive(pill))return;pill.style.backgroundColor=hovered?PILL_HOVER:PILL_IDLE;}function wire(pill){if(pill.getAttribute(PILL_WIRED)===\"on\")return;pill.setAttribute(PILL_WIRED,\"on\");pill.style.transition=\"background-color 240ms \"+EASE;paint(pill,false);const enter=()=>paint(pill,true);const leave=()=>paint(pill,false);pill.addEventListener(\"mouseenter\",enter);pill.addEventListener(\"mouseleave\",leave);cleanups.push(()=>{pill.removeEventListener(\"mouseenter\",enter);pill.removeEventListener(\"mouseleave\",leave);pill.removeAttribute(PILL_WIRED);});}let observer=null;function wireAll(){const pills=qa(\"Filter Pill\");if(!pills.length)return false;pills.forEach(wire);// The CMS list can re-render and hand back fresh nodes.\nif(!observer){const row=pills[0].parentElement;if(row){observer=new MutationObserver(()=>{qa(\"Filter Pill\").forEach(wire);});observer.observe(row,{childList:true});cleanups.push(()=>{if(observer)observer.disconnect();});}}return true;}whenReady(wireAll,cleanups);return()=>cleanups.forEach(fn=>fn());},[]);return /*#__PURE__*/_jsx(Component,{...props});};}/* ------------------------------------------------------------ mobile drawer\n * The drawer's Home and Explore rows are accordions: a \"Top\" bar with a chevron\n * and a \"Submenu\" panel underneath that starts collapsed. Framer cannot animate\n * height:auto, so the panel is measured and driven in pixels.\n * -------------------------------------------------------------------------- */const DRAWER_OPEN=\"data-drawer-open\";function collapse(panel){panel.style.height=panel.scrollHeight+\"px\";void panel.offsetHeight;panel.style.height=\"0px\";}function expand(panel){panel.style.height=panel.scrollHeight+\"px\";const done=()=>{// let it grow with its content once the animation has finished\nif(panel.getAttribute(DRAWER_OPEN)===\"true\")panel.style.height=\"auto\";panel.removeEventListener(\"transitionend\",done);};panel.addEventListener(\"transitionend\",done);}export function withDrawerMenu(Component){return function DrawerMenu(props){useEffect(()=>{if(typeof document===\"undefined\"||typeof window===\"undefined\")return;const cleanups=[];whenReady(()=>{const panels=qa(\"Submenu\");if(!panels.length)return false;panels.forEach(panel=>{if(panel.getAttribute(DRAWER_OPEN)!==null)return;panel.setAttribute(DRAWER_OPEN,\"false\");panel.style.height=\"0px\";panel.style.overflow=\"hidden\";panel.style.transition=\"height 300ms \"+EASE;const row=panel.parentElement;const top=row?q(\"Top\",row):null;const chevron=top?top.querySelector(\"svg\"):null;if(chevron){chevron.style.transition=\"transform 300ms \"+EASE;chevron.style.transformOrigin=\"50% 50%\";}if(!top)return;const toggle=e=>{e.preventDefault();e.stopPropagation();const open=panel.getAttribute(DRAWER_OPEN)===\"true\";panel.setAttribute(DRAWER_OPEN,open?\"false\":\"true\");if(open)collapse(panel);else expand(panel);if(chevron)chevron.style.transform=open?\"none\":\"rotate(180deg)\";};top.addEventListener(\"click\",toggle);cleanups.push(()=>top.removeEventListener(\"click\",toggle));});/* Framer keeps the nav on its open variant across a\n                   client-side navigation, so the drawer was still expanded\n                   on the page that had just been opened. Tapping the toggle\n                   puts the nav back to its closed variant. The tap has to\n                   replay real pointer events because framer-motion ignores\n                   a synthetic click. */const closeDrawer=()=>{const toggles=qa(\"Menu Toggle\").filter(onScreen);const toggle=toggles[toggles.length-1];if(toggle)tapElement(toggle);};qa(\"Drawer\").forEach(drawer=>{const links=Array.prototype.slice.call(drawer.querySelectorAll(\"a\"));links.forEach(link=>{const onNav=()=>window.setTimeout(closeDrawer,60);link.addEventListener(\"click\",onNav);cleanups.push(()=>link.removeEventListener(\"click\",onNav));});});return true;},cleanups);return()=>cleanups.forEach(fn=>fn());},[]);return /*#__PURE__*/_jsx(Component,{...props});};}/* --------------------------------------------------------------- accordion\n * Framer gives every accordion item its own open/closed variant, so nothing\n * stops several being open at once. The reference allows exactly one.\n *\n * Two things make this harder than it looks:\n *\n *  1. The header toggles on a framer-motion tap gesture, which listens for\n *     pointerdown/pointerup. A synthetic .click() never reaches it, so closing\n *     a row has to replay the whole pointer sequence.\n *  2. Framer ships an ssr-variant copy of the section per breakpoint, so the\n *     document holds hidden duplicates of every item. Only the ones actually\n *     laid out (offsetParent set) are the ones on screen.\n * -------------------------------------------------------------------------- */function accordionTitle(item){return textOf(q(\"Title\",item));}/**\n * Replay a tap the way framer-motion expects one.\n *\n * Motion ignores non-primary pointers, and a PointerEvent built without an\n * init object defaults to isPrimary:false with no pointerId - which is why a\n * bare dispatch looked like it did nothing. Buttons have to be set too: down\n * carries buttons:1, up carries buttons:0.\n *\n * Framer also wires these headers for the keyboard, so Enter is replayed as a\n * fallback in case the gesture path is unavailable.\n */function tapElement(el){const base={bubbles:true,cancelable:true,composed:true,view:window,button:0,pointerId:1,pointerType:\"mouse\",isPrimary:true};try{el.dispatchEvent(new PointerEvent(\"pointerdown\",Object.assign({},base,{buttons:1})));el.dispatchEvent(new PointerEvent(\"pointerup\",Object.assign({},base,{buttons:0})));}catch(err){el.dispatchEvent(new MouseEvent(\"mousedown\",{bubbles:true,cancelable:true}));el.dispatchEvent(new MouseEvent(\"mouseup\",{bubbles:true,cancelable:true}));}el.dispatchEvent(new MouseEvent(\"click\",{bubbles:true,cancelable:true,composed:true,view:window,button:0}));// keyboard path, for when the gesture handler is not the one listening\nconst key={bubbles:true,cancelable:true,key:\"Enter\",code:\"Enter\",keyCode:13,which:13};el.dispatchEvent(new KeyboardEvent(\"keydown\",key));el.dispatchEvent(new KeyboardEvent(\"keyup\",key));}/** Hidden breakpoint copies have no offsetParent. */function onScreen(el){return!!el.offsetParent||el.getClientRects().length>0;}export function withAccordion(Component){return function Accordion(props){useEffect(()=>{if(typeof document===\"undefined\"||typeof window===\"undefined\")return;const cleanups=[];let keep=\"\";whenReady(()=>{const group=q(\"Accordion\");if(!group)return false;function openItems(){return qa(\"Open\",group).filter(onScreen);}/** Close every open row except the one the visitor just used. */function enforce(){const open=openItems();if(open.length<=1)return;const winner=keep||accordionTitle(open[0]);open.forEach(item=>{if(accordionTitle(item)===winner)return;const header=q(\"Header\",item);if(header)tapElement(header);});}const onPointer=e=>{// our own replayed taps are untrusted, so they never\n// re-enter here and cascade the group open\nif(!e.isTrusted)return;const target=e.target;if(!target)return;const header=target.closest('[data-framer-name=\"Header\"]');if(!header||!group.contains(header))return;const item=header.closest('[data-framer-name=\"Open\"], [data-framer-name=\"Closed\"]');// the node is replaced when the variant flips, so the row\n// is remembered by its label rather than by element\nkeep=item?accordionTitle(item):\"\";};group.addEventListener(\"pointerup\",onPointer,true);group.addEventListener(\"click\",onPointer,true);cleanups.push(()=>{group.removeEventListener(\"pointerup\",onPointer,true);group.removeEventListener(\"click\",onPointer,true);});const observer=new MutationObserver(()=>enforce());observer.observe(group,{childList:true,subtree:true,attributes:true,attributeFilter:[\"data-framer-name\",\"class\"]});cleanups.push(()=>observer.disconnect());enforce();return true;},cleanups);return()=>cleanups.forEach(fn=>fn());},[]);return /*#__PURE__*/_jsx(Component,{...props});};}\nexport const __FramerMetadata__ = {\"exports\":{\"withSearch\":{\"type\":\"reactHoc\",\"name\":\"withSearch\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withDrawerMenu\":{\"type\":\"reactHoc\",\"name\":\"withDrawerMenu\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withProductArchive\":{\"type\":\"reactHoc\",\"name\":\"withProductArchive\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withAccordion\":{\"type\":\"reactHoc\",\"name\":\"withAccordion\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withCartBadge\":{\"type\":\"reactHoc\",\"name\":\"withCartBadge\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withCategoryPills\":{\"type\":\"reactHoc\",\"name\":\"withCategoryPills\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withAddToCart\":{\"type\":\"reactHoc\",\"name\":\"withAddToCart\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withCarouselPrev\":{\"type\":\"reactHoc\",\"name\":\"withCarouselPrev\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withBackToTop\":{\"type\":\"reactHoc\",\"name\":\"withBackToTop\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withProductOptions\":{\"type\":\"reactHoc\",\"name\":\"withProductOptions\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withDragScroll\":{\"type\":\"reactHoc\",\"name\":\"withDragScroll\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withCartPage\":{\"type\":\"reactHoc\",\"name\":\"withCartPage\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withPasswordToggle\":{\"type\":\"reactHoc\",\"name\":\"withPasswordToggle\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withCommentBox\":{\"type\":\"reactHoc\",\"name\":\"withCommentBox\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withProductGallery\":{\"type\":\"reactHoc\",\"name\":\"withProductGallery\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withCardHover\":{\"type\":\"reactHoc\",\"name\":\"withCardHover\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withFullWidthMenu\":{\"type\":\"reactHoc\",\"name\":\"withFullWidthMenu\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withCarouselNext\":{\"type\":\"reactHoc\",\"name\":\"withCarouselNext\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Interactions.map"],"mappings":"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"}