{"version":3,"file":"BGTemplateKit.CViva_W2.mjs","names":["useState","fontOf","useState","useRef","_Fragment","useState","p","money","useState","useRef","useMemo"],"sources":["https:/framerusercontent.com/modules/LZdouB2ho2Sydc2pr4Xv/V5KbcBIG1pe7cBoNunfM/BGCartStore.js","https:/framerusercontent.com/modules/PSLynAGVztdESKpx7STN/3ciyDtjXx8MabbEdIrY7/BGMadeForYou.js","https:/framerusercontent.com/modules/5l0tRVFzu6PzPHeOqe5v/mNTFJOgRC1gEGVwnWPKs/BGDesignFlow.js","https:/framerusercontent.com/modules/hxLn7HiRi6r7P7iXVuIp/9YZjEFH1527QP2zUXHlV/BGDesignKit.js","https:/framerusercontent.com/modules/swxESGuB7CLky5aWf95K/2SsvvSbrq6KZzdgjTtG3/BGTemplateKit.js"],"sourcesContent":["// BGCartStore.ts - the one client for the platform cart (docs/site-commerce.md).\n// The platform holds the cart, every price and every fee; this file only\n// carries the token, calls the API and tells every component on the page when\n// the cart changed. Nothing here computes money.\n//\n// G4 (2026-09-25): only a 404 on the cart itself resets the token (W1); an\n// in-memory token when localStorage is blocked (W2); the cart's own PATCHes\n// (details, delivery, rush, promo, pay choice) go through one save queue that\n// merges, retries a failed save and is flushed before Place order (W3/W4);\n// patchLine answers {cart, line}; lineDesign opens a line's design; the\n// estimated turnaround and the editable-line fields are typed.\nfunction _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}export const DEFAULT_ORIGIN=\"https://studio.bendigographics.com\";const TOKEN_KEY=\"bg-cart\";const BACKUP_KEY=\"bg-cart-last\";const EVENT=\"bg-cart-update\";const SAVE_EVENT=\"bg-cart-save\";const ERROR_EVENT=\"bg-cart-error\";export class CartApiError extends Error{constructor(status,body){super(body?.message||body?.error||`Request failed (${status})`);_define_property(this,\"status\",void 0);_define_property(this,\"code\",void 0);_define_property(this,\"body\",void 0);this.status=status;this.code=body?.error||\"error\";this.body=body;}}/* localStorage, with an in-memory copy for a browser that blocks it (W2):\n   the cart then lasts as long as the page, and adding still works. */const mem={};const ls={get(k){try{if(typeof window===\"undefined\")return null;const v=window.localStorage.getItem(k);return v??mem[k]??null;}catch{return mem[k]??null;}},set(k,v){mem[k]=v;try{window.localStorage.setItem(k,v);}catch{}},del(k){delete mem[k];try{window.localStorage.removeItem(k);}catch{}}};let latest=null;export const cartToken=()=>ls.get(TOKEN_KEY);/** The last cart the platform answered with on this page. */export const latestCart=()=>latest;export const onCartChange=fn=>{const h=e=>fn(e.detail?.cart??null);window.addEventListener(EVENT,h);return()=>window.removeEventListener(EVENT,h);};const publish=cart0=>{/* Only the cart READ (with the site session) says who is signed in (account_state / signed_in_as - contract 8);\n       a write's answer leaves them out. Keep the last word for the same cart, so a staff member's first keystroke\n       on Details doesn't turn \"ordering as a guest\" into \"signed in - your account terms apply\". */const prev=latest;const cart=cart0&&prev&&prev.id===cart0.id&&!(\"account_state\"in cart0)&&\"account_state\"in prev&&!!cart0.account?.signed_in===!!prev.account?.signed_in?{...cart0,account_state:prev.account_state,signed_in_as:prev.signed_in_as??null}:cart0;latest=cart;if(cart)ls.set(BACKUP_KEY,JSON.stringify({at:Date.now(),cart}));window.dispatchEvent(new CustomEvent(EVENT,{detail:{cart}}));};export const lastKnownCart=()=>{try{return JSON.parse(ls.get(BACKUP_KEY)||\"null\")?.cart??null;}catch{return null;}};/** Every refused write (checkout_off, rate_limited, ...) is announced once for the page. */export const onCartError=fn=>{const h=e=>fn(e.detail);window.addEventListener(ERROR_EVENT,h);return()=>window.removeEventListener(ERROR_EVENT,h);};let noAcctHeader=false;let noDesignAcct=false;/* P-EDITOR contract 1 (polish 2): the site session rides the calls that start or reopen a design, so a\n   signed-in customer gets their brand kit and upload library in the editor. */const designAcct=()=>{const s=noDesignAcct?null:ls.get(\"bg-account-session\");return s?{\"x-bg-account\":s}:{};};async function call(origin,path,init={},attempt=0){const headers={\"content-type\":\"application/json\",...init.headers||{}};const token=init.token===undefined?cartToken():init.token;if(token)headers[\"x-bg-cart\"]=token;/* Contract 8: the cart READ carries the site session, so the platform links the person and answers\n       account_state. A platform that doesn't allow the header yet fails the preflight - retried once\n       without it, and it isn't sent again this page. */const sess=path===\"/api/public/cart\"&&(!init.method||init.method===\"GET\")&&!noAcctHeader?ls.get(\"bg-account-session\"):null;if(sess)headers[\"x-bg-account\"]=sess;let res;try{res=await fetch(`${origin}${path}`,{...init,headers});}catch(e){if(sess){noAcctHeader=true;return call(origin,path,init,attempt);}/* the design routes' own account header (below): a platform whose CORS doesn't allow it yet fails the\n           preflight - asked again at once without it, and not sent again this page */if(headers[\"x-bg-account\"]&&!sess){noDesignAcct=true;const h={...init.headers||{}};delete h[\"x-bg-account\"];return call(origin,path,{...init,headers:h},attempt);}// A dropped connection is retried twice with a short wait - never silently lost.\nif(attempt<2){await new Promise(r=>setTimeout(r,600*(attempt+1)));return call(origin,path,init,attempt+1);}throw new CartApiError(0,{error:\"offline\",message:\"We couldn't reach Bendigo Graphics. Check your connection and try again.\"});}const body=await res.json().catch(()=>({}));if(!res.ok){const err=new CartApiError(res.status,body);if(err.code===\"checkout_off\"&&typeof window!==\"undefined\")window.dispatchEvent(new CustomEvent(ERROR_EVENT,{detail:err}));throw err;}return body;}/** Only the cart itself going missing resets the token (W1) - a 404 for a\n    product, a line, an upload or a design never does. */const cartGone=e=>e instanceof CartApiError&&(e.status===404&&e.code===\"cart_not_found\"||e.code===\"cart_closed\");let creating=null;async function ensureToken(origin){const have=cartToken();if(have)return have;if(!creating){creating=call(origin,\"/api/public/cart\",{method:\"POST\",token:null,body:JSON.stringify({source:{origin:location.origin,referrer:document.referrer||null,path:location.pathname}})}).then(r=>{ls.set(TOKEN_KEY,r.token);publish(r.cart);// signed in on the site: the new cart runs on their terms from the start\nif(ls.get(\"bg-account-session\"))void linkNewCart(origin);return r.token;}).finally(()=>creating=null);}return creating;}/** A token the platform no longer knows (a finished order, an expired cart) is dropped and a fresh cart started. */async function withCart(origin,fn){await ensureToken(origin);try{return await fn();}catch(e){if(cartGone(e)){ls.del(TOKEN_KEY);await ensureToken(origin);return fn();}throw e;}}export async function getCart(origin=DEFAULT_ORIGIN){if(!cartToken())return null;try{const r=await call(origin,\"/api/public/cart\");publish(r.cart);return r.cart;}catch(e){// GET /cart answers 404 only for the cart itself.\nif(e instanceof CartApiError&&e.status===404){ls.del(TOKEN_KEY);publish(null);return null;}throw e;}}export async function addLine(origin,line){return withCart(origin,async()=>{const r=await call(origin,\"/api/public/cart/lines\",{method:\"POST\",body:JSON.stringify(line)});publish(r.cart);return r;});}/** PATCH a line: the platform prices it again and answers {cart, line}. *//* Writes in flight (polish 2026-09-26): the cart's money dims while any is out, then rolls to the\n   platform's figure. Per line, only the LAST write's answer is shown - a slower, older answer never\n   lands on top of a newer one. */const PENDING_EVENT=\"bg-cart-pending\";let pendingWrites=0;const pend1=d=>{pendingWrites=Math.max(0,pendingWrites+d);if(typeof window!==\"undefined\")window.dispatchEvent(new CustomEvent(PENDING_EVENT,{detail:{n:pendingWrites}}));};export const cartPending=()=>pendingWrites;export const onCartPending=fn=>{const h=e=>fn(e.detail?.n||0);window.addEventListener(PENDING_EVENT,h);return()=>window.removeEventListener(PENDING_EVENT,h);};const lineSeq=new Map;export async function patchLine(origin,id,patch,guess){const my=(lineSeq.get(id)||0)+1;lineSeq.set(id,my);/* a quantity whose price the page already knows (the pack's table or the ladder) shows at once */if(guess&&latest&&typeof patch.qty===\"number\")publish(withLineTotal(latest,id,patch.qty,guess.total_inc));pend1(1);try{const r=await call(origin,`/api/public/cart/lines/${id}`,{method:\"PATCH\",body:JSON.stringify(patch)});if(lineSeq.get(id)===my)publish(r.cart);const line=r.line||(r.cart?.lines||[]).find(l=>l.id===id)||null;return{cart:r.cart,line};}finally{pend1(-1);}}const round2=n=>Math.round(n*100)/100;function withLineTotal(cart,id,qty,total){const line=cart.lines.find(l=>l.id===id);if(!line||!line.priced||line.priced.incomplete||!(total>0))return cart;const was=Number(line.priced.total_inc)||0;const d=round2(total-was);const s={...cart.summary,subtotal:round2((Number(cart.summary.subtotal)||0)+d),total:round2((Number(cart.summary.total)||0)+d),_local:true};const priced={...line.priced,total_inc:total,per_unit_inc:qty?round2(total/qty):line.priced.per_unit_inc};return{...cart,lines:cart.lines.map(l=>l.id===id?{...l,qty,priced}:l),summary:s};}/* The cart as it will be without one line, worked out here so the row leaves and the totals move at\n   once: the line's total, its rush share and (when it was the last designer line) the design fee come\n   off. Everything else (deposit, surcharge) keeps its figure, dimmed, until the platform answers. */function withoutLine(cart,id){const line=cart.lines.find(l=>l.id===id);if(!line)return cart;const s={...cart.summary};const lt=line.priced&&!line.priced.incomplete?Number(line.priced.total_inc)||0:0;let off=lt;s.subtotal=round2(Math.max(0,(Number(s.subtotal)||0)-lt));s.line_count=Math.max(0,(Number(s.line_count)||1)-1);if(line.artwork?.mode===\"designer\"){/* design setup is per item (design_fee_each): one item's fee comes off */const before=Number(s.design_fee)||0;s.design_lines=Math.max(0,(Number(s.design_lines)||1)-1);s.design_fee=s.design_lines===0?0:Number(s.design_fee_each)>0?round2(s.design_lines*Number(s.design_fee_each)):before;s.design_label=s.design_lines?`Design setup (${s.design_lines} item${s.design_lines===1?\"\":\"s\"})`:\"\";off+=before-s.design_fee;}const rl=Array.isArray(s.rush_lines)?s.rush_lines.find(x=>x&&x.line_id===id):null;if(rl&&Number(rl.fee)){const before=Number(s.rush_fee)||0;s.rush_fee=round2(Math.max(0,before-Number(rl.fee)));off+=before-s.rush_fee;s.rush_lines=s.rush_lines.filter(x=>x!==rl);}s.total=round2(Math.max(0,(Number(s.total)||0)-off));s._local=true;return{...cart,lines:cart.lines.map(l=>l.id===id?{...l,_removing:true}:l),summary:s};}export async function updateLine(origin,id,patch){return(await patchLine(origin,id,patch)).cart;}/* Remove is optimistic: the row goes and the totals move now, the DELETE runs behind it. If the\n   platform refuses, the row comes back where it was (and the caller says so). */export async function removeLine(origin,id){const before=latest;if(before&&before.lines.some(l=>l.id===id))publish(withoutLine(before,id));lineSeq.set(id,(lineSeq.get(id)||0)+1);pend1(1);try{const r=await call(origin,`/api/public/cart/lines/${id}`,{method:\"DELETE\"});publish(r.cart);return r.cart;}catch(e){const now=latest;if(before&&now&&now.lines.some(l=>l.id===id&&l._removing))publish({...now,lines:before.lines.map(l=>now.lines.find(x=>x.id===l.id&&!x._removing)||l),summary:before.summary});throw e;}finally{pend1(-1);}}export async function patchCart(origin,patch){const r=await call(origin,\"/api/public/cart\",{method:\"PATCH\",body:JSON.stringify(patch)});publish(r.cart);return r;}let pend={};let saveTimer=null;let retryTimer=null;let inflight=null;let saveState=\"idle\";let saveOrigin=DEFAULT_ORIGIN;let failures=0;const setSave=(s,err)=>{saveState=s;if(typeof window!==\"undefined\")window.dispatchEvent(new CustomEvent(SAVE_EVENT,{detail:{state:s,error:err||null}}));};export const currentSaveState=()=>saveState;export const onSaveState=fn=>{const h=e=>fn(e.detail.state,e.detail.error);window.addEventListener(SAVE_EVENT,h);return()=>window.removeEventListener(SAVE_EVENT,h);};const mergeInto=(into,patch,keepExisting=false)=>{for(const[k,v]of Object.entries(patch)){const isObj=typeof v===\"object\"&&v&&!Array.isArray(v);if(keepExisting&&k in into){// a failed save goes back UNDER anything typed since\nif(isObj&&typeof into[k]===\"object\"&&into[k])into[k]={...v,...into[k]};continue;}into[k]=isObj?{...typeof into[k]===\"object\"&&into[k]?into[k]:{},...v}:v;}};async function sendPending(){if(inflight){await inflight;if(!Object.keys(pend).length)return saveState!==\"error\";}const body=pend;if(!Object.keys(body).length)return saveState!==\"error\";pend={};clearTimeout(retryTimer);setSave(\"saving\");inflight=patchCart(saveOrigin,body).then(()=>{failures=0;setSave(Object.keys(pend).length?\"saving\":\"saved\");return true;}).catch(e=>{mergeInto(pend,body,true);failures++;setSave(\"error\",e instanceof CartApiError?e:null);// keep trying quietly (not while ordering is switched off)\nif(!(e instanceof CartApiError&&(e.code===\"checkout_off\"||e.code===\"cart_closed\"||e.status===400)))retryTimer=setTimeout(()=>void sendPending(),Math.min(3e4,3e3*2**Math.min(failures-1,3)));return false;}).finally(()=>inflight=null);const ok=await inflight;if(ok&&Object.keys(pend).length)return sendPending();return ok;}/** Queue a cart PATCH (merged with anything still waiting), sent after `delay` ms. */export function queueCartPatch(origin,patch,delay=600){saveOrigin=origin;mergeInto(pend,patch);clearTimeout(saveTimer);setSave(\"saving\");saveTimer=setTimeout(()=>void sendPending(),delay);}/** Send everything waiting now; true when it all saved. */export async function flushCartPatches(origin){if(origin)saveOrigin=origin;clearTimeout(saveTimer);return sendPending();}/** Save one change now (rush, promo, pay choice): queued behind the typing, sent at once. */export async function saveCartNow(origin,patch){queueCartPatch(origin,patch,0);return flushCartPatches(origin);}export const pendingCartPatch=()=>({...pend});/** Upload straight to the platform's storage through a one-time signed URL. */export async function uploadFile(origin,file,onProgress){return withCart(origin,async()=>{const sign=await call(origin,\"/api/public/cart/uploads\",{method:\"POST\",body:JSON.stringify({name:file.name,size:file.size,type:file.type||null})});await new Promise((resolve,reject)=>{const xhr=new XMLHttpRequest;xhr.open(\"PUT\",sign.signed_url);if(file.type)xhr.setRequestHeader(\"content-type\",file.type);xhr.upload.onprogress=e=>e.lengthComputable&&onProgress?.(Math.round(e.loaded/e.total*100));xhr.onload=()=>xhr.status<300?resolve():reject(new CartApiError(xhr.status,{error:\"upload_failed\",message:\"The upload didn't finish. Try again.\"}));xhr.onerror=()=>reject(new CartApiError(0,{error:\"upload_failed\",message:\"The upload didn't finish. Try again.\"}));xhr.send(file);});await call(origin,`/api/public/cart/uploads/${sign.upload_id}/done`,{method:\"POST\",body:\"{}\"});return sign.upload_id;});}/** The platform's artwork check for an upload (again, now with the product), for the proof screen. */export async function checkUpload(origin,uploadId,slug,values){const scalar={};for(const[k,v]of Object.entries(values||{}))if(v===null||[\"string\",\"number\",\"boolean\"].includes(typeof v))scalar[k]=typeof v===\"string\"?v.slice(0,500):v;const r=await call(origin,`/api/public/cart/uploads/${encodeURIComponent(uploadId)}/done`,{method:\"POST\",body:JSON.stringify({slug,values:scalar})});return{preview:r.preview_url??null,preflight:r.preflight??null};}/** Start a design online. `review: \"site\"` (always sent from the site, CART-CONTRACT v2): the\n    editor's Finish skips its own review - the site's proof screen is the one approval. */export async function startDesign(origin,body){return withCart(origin,()=>call(origin,\"/api/public/cart/designs\",{method:\"POST\",headers:designAcct(),body:JSON.stringify({review:\"site\",...body})}));}/** The proof of a design made from this cart, before it is a line (CART-CONTRACT v2, 2a): the renders\n    drawn from the saved print file. null while there is nothing to draw yet (409 no_render). */export async function designProof(origin,designId,ctx){try{/* slug + values: the design is drawn on THIS product as chosen (on the product + its print layout). */const q=ctx?.slug?`?slug=${encodeURIComponent(ctx.slug)}&values=${encodeURIComponent(JSON.stringify(ctx.values||{}))}`:\"\";const r=await call(origin,`/api/public/cart/designs/${encodeURIComponent(designId)}/proof${q}`);return r.proof||r;}catch(e){if(e instanceof CartApiError&&(e.status===409||e.status===404))return null;throw e;}}/** Open a cart line's design again, or `start: true` a new one for it\n    (POST /api/public/cart/lines/:id/design). A started design is set on the\n    line by the platform and the answer carries the cart. */export async function lineDesign(origin,lineId,body){const r=await call(origin,`/api/public/cart/lines/${lineId}/design`,{method:\"POST\",headers:designAcct(),body:JSON.stringify({review:\"site\",...body})});if(r.cart)publish(r.cart);return r;}/**\n * Place the order. One idempotency key per press of \"Place order\", reused on\n * every retry, so a flaky connection can never place two orders. Anything the\n * customer typed is saved first (W3); a save that fails stops the order so it\n * is never filed with old details. The version sent is the cart's latest\n * (our own detail saves bump it).\n */export async function checkout(origin,version,idempotencyKey,extra){const saved=await flushCartPatches(origin);if(!saved)throw new CartApiError(0,{error:\"save_failed\",message:\"Your latest details haven't saved yet. Check your connection, then place your order.\"});const v=latest&&latest.version>version?latest.version:version;for(let attempt=0;attempt<6;attempt++){try{return await call(origin,\"/api/public/cart/checkout\",{method:\"POST\",body:JSON.stringify({version:v,idempotency_key:idempotencyKey,...extra||{}})});}catch(e){if(e instanceof CartApiError&&e.code===\"checkout_in_progress\"){await new Promise(r=>setTimeout(r,Math.max(1,Number(e.body?.retry_after)||2)*1e3));continue;}throw e;}}throw new CartApiError(503,{error:\"checkout_in_progress\",message:\"Your order is still being placed. Give it a moment and check your email.\"});}/** \"Save this card for next time\" switched on the pay step: the same payment on a fresh intent\n    that does (or doesn't) keep the card in their account. Answers the checkout result again. */export async function remintPayment(origin,saveCard){return await call(origin,\"/api/public/cart/checkout/intent\",{method:\"POST\",body:JSON.stringify({save_card:saveCard})});}/** Polish 2 (ask 27): the order page on THIS site for the platform's status link\n    (bendigographics.com/order/status?ref=&t=) - the same ref and token on whatever origin the cart runs on\n    (staging, a preview), plus any extra params (placed=1 after paying). null when there is no link. */export function orderPageHref(statusUrl,statusPath,extra={}){if(!statusUrl)return null;try{const u=new URL(statusUrl,typeof window!==\"undefined\"?window.location.href:\"https://bendigographics.com\");const ref=u.searchParams.get(\"ref\");const t=u.searchParams.get(\"t\");if(!ref||!t)return statusUrl;const path=statusPath&&statusPath.trim()?statusPath.trim():\"/order/status\";const q=new URLSearchParams({ref,t,...extra});return`${path}${path.includes(\"?\")?\"&\":\"?\"}${q.toString()}`;}catch{return statusUrl;}}export function finishOrder(){ls.del(TOKEN_KEY);publish(null);}const PURCHASE_KEY=\"bg-purchase-tracked\";const purchaseSeen=new Set;export function trackPurchase(ref,value,items){if(typeof window===\"undefined\"||!ref||purchaseSeen.has(ref))return;purchaseSeen.add(ref);let seen=[];try{const v=JSON.parse(window.localStorage.getItem(PURCHASE_KEY)||\"[]\");if(Array.isArray(v))seen=v.map(String);}catch{}if(seen.includes(ref))return;try{window.localStorage.setItem(PURCHASE_KEY,JSON.stringify([...seen,ref].slice(-50)));}catch{}try{const w=window;w.dataLayer=w.dataLayer||[];w.dataLayer.push({ecommerce:null});w.dataLayer.push({event:\"purchase\",ecommerce:{transaction_id:ref,value:Math.round((Number(value)||0)*100)/100,currency:\"AUD\",...items&&items.length?{items}:{}}});}catch{}}export const money=n=>n==null?\"\":new Intl.NumberFormat(\"en-AU\",{style:\"currency\",currency:\"AUD\",minimumFractionDigits:n%1?2:0,maximumFractionDigits:2}).format(n);// ------------------------------------------------------------ estimated dates\nconst MONTHS=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];const DAYS=[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"];const parseDay=iso=>{const m=/^(\\d{4})-(\\d{2})-(\\d{2})/.exec(iso||\"\");return m?new Date(Number(m[1]),Number(m[2])-1,Number(m[3])):null;};/** \"Thu 2 Oct\" */export const dayLabel=iso=>{const d=parseDay(iso);return d?`${DAYS[d.getDay()]} ${d.getDate()} ${MONTHS[d.getMonth()]}`:null;};/** The cart's one line about timing (H1 cart wave): \"Estimated ready by Thu 2 Oct\", or\n    \"Estimated delivery by Mon 6 Oct\" for a delivery - an estimate from the platform's\n    dates, never a promise, and nothing at all when the platform sends no date. */export function readyByText(t,delivery=false){if(!t)return null;if(delivery&&(t.deliver_by_label||t.deliver_by))return`Estimated delivery by ${t.deliver_by_label||dayLabel(t.deliver_by)}`;// the platform's own words when they are the date line (never a working-day range or proof wording)\nif(t.label&&/^Estimated (ready|delivery) by /.test(t.label)&&(delivery||/^Estimated ready by /.test(t.label)))return t.label;const r=t.ready_by_label||dayLabel(t.ready_by||t.ready_to||t.ready_from);return r?`Estimated ready by ${r}`:null;}/** What to show on the proof screen for a line; null when there is nothing to draw (409 no_render / designer_line - we proof those). */export async function lineProof(origin,lineId){try{/* the route answers { proof: {...} } (lib/site-cart-proof#lineProofView) - unwrapped here, so the cart reads\n           the platform's own renders (it had been falling back to the line's picture) */const r=await call(origin,`/api/public/cart/lines/${lineId}/proof`);return r&&r.proof||r;}catch(e){if(e instanceof CartApiError&&e.status===409)return null;throw e;}}/** Approve a line's proof: exactly the words the customer ticked. Answers {cart, line}. */export async function approveLine(origin,lineId,checkboxText,name){const r=await call(origin,`/api/public/cart/lines/${lineId}/approve`,{method:\"POST\",body:JSON.stringify({accept:true,checkbox_text:checkboxText,...name?{name}:{}})});if(r.cart)publish(r.cart);return r;}export async function withdrawApproval(origin,lineId){const r=await call(origin,`/api/public/cart/lines/${lineId}/approve`,{method:\"DELETE\"});if(r.cart)publish(r.cart);return r;}export const proofState=l=>(l.proof?.state)||null;export const lineApproved=l=>proofState(l)===\"approved\";// ------------------------------------------------------------ account (sign in from the site)\n/* Website accounts (2026-09-26). The customer signs in, creates an account and\n   resets a password without leaving the page, and stays signed in on every page:\n\n   - Sign in (modal or checkout): POST /api/public/account/login -> the account\n     payload. Nothing is set on any other site; the payload carries a 14-day\n     site session (kept here) and a 10-minute cart link token.\n   - Create account: POST /api/public/account/signup -> \"Check your email\". The\n     confirm email's button comes back to THIS page with #bg_account=... and the\n     cart as it was; this tab also waits (POST /status with the pending token)\n     and signs in by itself once they confirm, on this device or another.\n   - Forgot password: POST /forgot -> the email -> back here with #bg_reset=... ->\n     \"Choose a new password\" -> POST /reset -> signed in.\n   - Every page load: GET /api/public/account with the session (x-bg-account)\n     redraws the nav and links the cart, so checkout runs on their own terms.\n   - The redirect doors still work (Google, /auth/start, /auth/silent, the\n     same-site /api/cart-profile): they hand back the same payload.\n   The nav leads with display_name - the COMPANY when one is set up, else the\n   person - and its two initials. Endpoints: bg-platform lib/site-account.ts. */const ACCOUNT_KEY=\"bg-account\";const SESSION_KEY=\"bg-account-session\";const PENDING_KEY=\"bg-account-pending\";const ACCOUNT_EVENT=\"bg-account-update\";/** The kept site session (x-bg-account) - BGTemplateKit's saved templates read it. */export const accountSession=()=>ls.get(SESSION_KEY);/** The account menu's pages when the platform sent none (an older sign in). */export const DEFAULT_ACCOUNT_PAGES=[{key:\"orders\",label:\"Orders\",path:\"/production\",note:\"Track what we're making for you\"},{key:\"proofs\",label:\"Proofs to approve\",path:\"/production?tab=action\",note:\"Anything waiting on you\"},{key:\"billing\",label:\"Invoices and billing\",path:\"/billing\",note:\"Invoices, payments and receipts\"},{key:\"settings\",label:\"Settings\",path:\"/settings/account\",note:\"Your details and password\"}];/** What the nav shows for an account: the company when there is one, else the person. */export function accountLabel(a){if(!a)return\"\";return(a.display_name||a.company||a.name||a.email||\"\").trim();}export function accountInitials(a){if(!a)return\"\";if(a.initials)return a.initials;const words=accountLabel(a).replace(/@.*$/,\"\").split(/[\\s-]+/).filter(Boolean);return(words.length>=2?words[0][0]+words[1][0]:(words[0]||\"\").slice(0,2)).toUpperCase();}const WELCOME_KEY=\"bg-account-welcome\";/** True once, right after coming back from signing in - the account menu opens on \"You're signed in\". */export function takeWelcome(){try{if(!sessionStorage.getItem(WELCOME_KEY))return false;sessionStorage.removeItem(WELCOME_KEY);return true;}catch{return false;}}const markWelcome=()=>{try{sessionStorage.setItem(WELCOME_KEY,\"1\");}catch{}};export const siteAccount=()=>{try{return JSON.parse(ls.get(ACCOUNT_KEY)||\"null\");}catch{return null;}};const setSiteAccount=a=>{if(a)ls.set(ACCOUNT_KEY,JSON.stringify(a));else ls.del(ACCOUNT_KEY);if(typeof window!==\"undefined\")window.dispatchEvent(new CustomEvent(ACCOUNT_EVENT,{detail:{account:a}}));};export const onAccountChange=fn=>{const h=e=>fn(e.detail?.account??null);window.addEventListener(ACCOUNT_EVENT,h);return()=>window.removeEventListener(ACCOUNT_EVENT,h);};/** This page, without its hash - where every sign-in door comes back to. */export const hereUrl=()=>typeof window!==\"undefined\"?window.location.href.split(\"#\")[0]:\"/\";/** The platform's redirect sign in (Google, or the platform's own page), back to this page. */export function signInUrl(origin,back,provider){return`${origin}/auth/start?${provider?`provider=${provider}&`:\"\"}return_url=${encodeURIComponent(back||hereUrl())}`;}/* The account endpoints: JSON, the site session in x-bg-account, one error shape. */async function acct(origin,path,init={}){const headers={};if(init.body!==undefined)headers[\"content-type\"]=\"application/json\";if(init.session)headers[\"x-bg-account\"]=init.session;let res;try{res=await fetch(`${origin}${path}`,{method:init.method||\"GET\",headers,body:init.body===undefined?undefined:JSON.stringify(init.body)});}catch{throw new CartApiError(0,{error:\"offline\",message:\"We couldn't reach Bendigo Graphics. Check your connection and try again.\"});}const body=await res.json().catch(()=>({}));if(!res.ok)throw new CartApiError(res.status,body);return body;}const cleanPages=p=>Array.isArray(p)?p.filter(x=>x&&typeof x.path===\"string\"&&x.path.startsWith(\"/\")&&x.label):undefined;/* Only Pulse paths are ever opened (through the one-time handoff). */const okNext=x=>!!x&&typeof x.next===\"string\"&&x.next.startsWith(\"/\")&&!x.next.startsWith(\"//\")&&!!x.label;const cleanMenu=m=>{if(m===null)return null;if(!m||typeof m!==\"object\"||!Array.isArray(m.items))return undefined;return{greeting:typeof m.greeting===\"string\"?m.greeting:null,company:typeof m.company===\"string\"?m.company:null,terms_line:typeof m.terms_line===\"string\"?m.terms_line:null,kind:m.kind,needs_you:Number(m.needs_you)>0?Number(m.needs_you):0,items:m.items.filter(okNext),reorder:Array.isArray(m.reorder)?m.reorder.filter(r=>okNext({...r,label:r?.name})).slice(0,3):[],open_pulse:okNext(m.open_pulse)?m.open_pulse:null,settings:okNext(m.settings)?m.settings:null,saved_templates:cleanSaved(m.saved_templates)};};/* A site path only (never another host), a count, up to three http(s) or data:image thumbnails. */const cleanSaved=x=>{if(!x||typeof x!==\"object\"||!(Number(x.count)>0))return null;const path=typeof x.site_path===\"string\"&&x.site_path.startsWith(\"/\")&&!x.site_path.startsWith(\"//\")?x.site_path:\"/templates?saved=1\";const thumbs=(Array.isArray(x.thumbs)?x.thumbs:[]).filter(u=>typeof u===\"string\"&&/^(https?:\\/\\/|data:image\\/)/.test(u)).slice(0,3);return{count:Number(x.count),site_path:path,thumbs};};const fromPayload=(p,terms)=>{const pages=cleanPages(p.pages);const menu=\"menu\"in(p||{})?cleanMenu(p.menu):undefined;return{name:p.name||\"\",email:p.email||\"\",phone:p.phone||null,avatar_url:p.avatar_url||p.picture||null,company:p.company||null,display_name:p.display_name||p.company||p.name||p.email||\"\",initials:p.initials||\"\",first_name:p.first_name||(p.name||\"\").split(/\\s+/)[0]||\"\",shows:p.shows||(p.company?\"company\":\"person\"),terms_label:terms??siteAccount()?.terms_label??null,...pages?.length?{pages}:{},...menu!==undefined?{menu}:{}};};let lastNotice=null;export const accountNotice=()=>lastNotice;/** Signed in: keep the session, bind the cart (when there is one) so checkout\n    applies THEIR terms, then show them in the nav. A cart that can't be linked\n    (online ordering switched off) never keeps them signed out. */export async function acceptAccount(origin,p,opts={}){if(!p||!p.email&&!p.token)return null;if(p.session)ls.set(SESSION_KEY,p.session);ls.del(PENDING_KEY);lastNotice=null;if(opts.welcome)markWelcome();/* The cart first (a quick call), so \"signed in\" always means a cart on their terms - and\n       the cart linked to their account on another device or browser comes with them. */if(p.session&&(cartToken()||p.saved_cart&&p.saved_cart.lines>0))await restoreCart(origin,p.session);else if(p.token&&cartToken())await linkCart(origin,p.token);const acc=fromPayload(p,latest?.account?.terms?.label??null);setSiteAccount(acc);return acc;}/** CART-CONTRACT 3.3: link this cart to the signed-in customer (a 10-minute token from the platform). */async function linkCart(origin,token){try{const r=await call(origin,\"/api/public/cart/account\",{method:\"POST\",body:JSON.stringify({account_token:token})});if(r.cart)publish(r.cart);const a=r.cart?.account;const cur=siteAccount();if(a&&cur)setSiteAccount({...cur,terms_label:a.terms?.label??cur.terms_label??null});return true;}catch(e){lastNotice=e instanceof CartApiError?e.code===\"account_unverified\"?\"unverified\":e.code===\"staff_account\"?\"staff\":null:null;return false;}}let accountRead=false;/** Once per page: take what a platform door put on the URL - #bg_account= (signed\n    in), #bg_reset= (choose a new password), #bg_account_error= (a lapsed link),\n    #bg_account_open=signin (the \"you already have an account\" email). */export async function takeAccountFromUrl(origin){if(accountRead||typeof window===\"undefined\")return siteAccount();accountRead=true;const hash=window.location.hash||\"\";const m=/[#&]bg_account=([A-Za-z0-9_-]+)/.exec(hash);const reset=/[#&]bg_reset=([^&]+)/.exec(hash);const err=/[#&]bg_account_error=([a-z_]+)/.exec(hash);const open=/[#&]bg_account_open=([a-z]+)/.exec(hash);if(!m&&!reset&&!err&&!open)return siteAccount();try{const u=new URL(window.location.href);u.hash=\"\";window.history.replaceState(null,\"\",u.toString());}catch{}if(reset){pendingReset=decodeURIComponent(reset[1]);askAccount(\"reset\");return siteAccount();}if(err){lastNotice=\"link_expired\";askAccount(\"signin\");return siteAccount();}if(open){askAccount(\"signin\");return siteAccount();}let payload=null;try{const b64=m[1].replace(/-/g,\"+\").replace(/_/g,\"/\");const bin=atob(b64+\"===\".slice((b64.length+3)%4));payload=JSON.parse(new TextDecoder().decode(Uint8Array.from(bin,c=>c.charCodeAt(0))));}catch{return siteAccount();}if(!payload?.token&&!payload?.email)return siteAccount();return acceptAccount(origin,payload,{welcome:true});}/** Open the account modal on a view (\"signin\", \"create\", \"reset\", \"menu\", \"welcome\"). */export function askAccount(view){if(typeof window===\"undefined\")return;const fire=()=>window.dispatchEvent(new CustomEvent(\"bg:account-open\",{detail:{view},cancelable:true}));// the nav may not have mounted yet on a fresh page load\nsetTimeout(fire,0);}let pendingReset=null;export const hasPendingReset=()=>!!pendingReset;let refreshed=null;/** Every page load: who the kept session names now. Renews the session, links the\n    cart when it isn't yet, and signs the nav out when the platform says so (a\n    reset, an expired session). Once per page. */export function refreshAccount(origin,force=false,fresh=false){if(typeof window===\"undefined\")return Promise.resolve(null);if(refreshed&&!force)return refreshed;refreshed=(async()=>{const session=ls.get(SESSION_KEY);if(!session)return siteAccount();try{const r=await acct(origin,fresh?\"/api/public/account?fresh=1\":\"/api/public/account\",{session});if(r?.providers)providersSeen=r.providers;if(!r?.signed_in){ls.del(SESSION_KEY);if(siteAccount())await forgetAccount(origin);return null;}const p=r.account;if(p.session)ls.set(SESSION_KEY,p.session);setSiteAccount(fromPayload(p));const c=latest||lastKnownCart();const linked=c?.account;const mine=!!linked?.signed_in&&String(linked.email||\"\").toLowerCase()===String(p.email||\"\").toLowerCase();/* This browser's cart isn't theirs yet (or there is none and they have one): bring it over. */if(!mine&&(cartToken()||p.saved_cart&&p.saved_cart.lines>0))await restoreCart(origin,ls.get(SESSION_KEY));return siteAccount();}catch{return siteAccount()// offline: keep what we had\n;}})();return refreshed;}let providersSeen=null;/** Which sign-in buttons to show (the platform's ENABLED_PROVIDERS). */export async function accountProviders(origin){if(providersSeen)return providersSeen;try{const r=await acct(origin,\"/api/public/account\");providersSeen=Array.isArray(r?.providers)?r.providers:[\"email\"];}catch{providersSeen=[\"email\"];}return providersSeen;}/** A new cart made while signed in is the account's cart straight away (and brings theirs over). */async function linkNewCart(origin){const session=ls.get(SESSION_KEY);if(session)await restoreCart(origin,session);}/** The cart follows the account: this browser's cart (made now if there is none) takes the\n    lines of their cart on any other device - no duplicates, the newest wins - and is linked\n    to them. POST /api/public/cart/restore. */let restoring=null;export function restoreCart(origin,session){if(!session)return Promise.resolve(false);if(restoring)return restoring;restoring=(async()=>{try{await ensureToken(origin);let r;try{r=await call(origin,\"/api/public/cart/restore\",{method:\"POST\",headers:{\"x-bg-account\":session},body:\"{}\"});}catch(e){// this browser's cart went over to the account's cart elsewhere: start one and bring it back\nif(!cartGone(e))throw e;ls.del(TOKEN_KEY);await ensureToken(origin);r=await call(origin,\"/api/public/cart/restore\",{method:\"POST\",headers:{\"x-bg-account\":session},body:\"{}\"});}if(r.cart)publish(r.cart);const a=r.cart?.account;const cur=siteAccount();if(a&&cur)setSiteAccount({...cur,terms_label:a.terms?.label??cur.terms_label??null});return true;}catch(e){if(e instanceof CartApiError&&cartGone(e)){ls.del(TOKEN_KEY);return false;}return false;}finally{setTimeout(()=>restoring=null,0);}})();return restoring;}/** Open one of their account pages in Pulse already signed in: a one-time, 60-second code\n    bought with the site session (POST /api/public/account/handoff), traded by the platform\n    for its own sign in. Falls back to the plain page (Pulse asks them to sign in). */export async function openAccountPage(origin,path,newTab=false){const base=origin.replace(/\\/$/,\"\");const plain=`${base}${path}`;const session=ls.get(SESSION_KEY);let url=plain;if(session){try{const r=await acct(origin,\"/api/public/account/handoff\",{method:\"POST\",body:{next:path},session});if(r?.url)url=r.url;}catch{}}if(typeof window===\"undefined\")return;if(newTab)window.open(url,\"_blank\",\"noopener\");else window.location.assign(url);}/** Sign in with email and password (the modal and checkout). Throws CartApiError\n    with the platform's words: invalid_login, account_unverified, staff_account, rate_limited. */export async function signInWithPassword(origin,email,password){const r=await acct(origin,\"/api/public/account/login\",{method:\"POST\",body:{email,password}});return acceptAccount(origin,r.account);}/** Create an account. Answers the same whether or not the address has one; field\n    problems come back as CartApiError with body.fields. */export async function createAccount(origin,form){const r=await acct(origin,\"/api/public/account/signup\",{method:\"POST\",body:{...form,website:form.website||\"\",return_url:hereUrl()}});if(r?.pending_token)ls.set(PENDING_KEY,JSON.stringify({token:r.pending_token,email:r.email||form.email,at:Date.now()}));return{email:r?.email||form.email};}/** The sign up this browser is waiting on, if any (24 hours). */export function pendingSignup(){try{const p=JSON.parse(ls.get(PENDING_KEY)||\"null\");if(!p?.token||Date.now()-Number(p.at||0)>24*36e5)return null;return{email:p.email};}catch{return null;}}export const forgetPending=()=>ls.del(PENDING_KEY);/** Has the waiting sign up been confirmed? Signs in when it has (once). */export async function checkPending(origin){let p=null;try{p=JSON.parse(ls.get(PENDING_KEY)||\"null\");}catch{}if(!p?.token)return null;try{const r=await acct(origin,\"/api/public/account/status\",{method:\"POST\",body:{pending_token:p.token}});if(r?.state===\"verified\"&&r.account)return acceptAccount(origin,r.account,{welcome:true});}catch(e){if(e instanceof CartApiError&&e.status===401)ls.del(PENDING_KEY);}return null;}export async function resendConfirm(origin,email){return acct(origin,\"/api/public/account/resend\",{method:\"POST\",body:{email,return_url:hereUrl()}});}export async function forgotPassword(origin,email){return acct(origin,\"/api/public/account/forgot\",{method:\"POST\",body:{email,return_url:hereUrl()}});}/** Choose a new password with the token the reset email brought back (#bg_reset=). */export async function resetPassword(origin,password){if(!pendingReset)throw new CartApiError(401,{error:\"reset_expired\",message:\"That link has run out. Ask for a fresh one and we'll send it straight away.\"});const r=await acct(origin,\"/api/public/account/reset\",{method:\"POST\",body:{reset_token:pendingReset,password}});pendingReset=null;return acceptAccount(origin,r.account,{welcome:true});}/** On bendigographics.com the platform is same-site, so a customer signed in\n    there is found without a hop (GET /api/cart-profile, credentials included).\n    Once per browser session; quiet when it can't. */export async function quietSignIn(origin){if(typeof window===\"undefined\"||siteAccount())return siteAccount();try{if(sessionStorage.getItem(\"bg-account-checked\"))return null;sessionStorage.setItem(\"bg-account-checked\",\"1\");}catch{}try{const r=await fetch(`${origin}/api/cart-profile`,{credentials:\"include\"});if(!r.ok)return null;const j=await r.json();const p=j?.account||j;return p?.token?acceptAccount(origin,p):null;}catch{return null;}}/* Signed out (or the session ran out): the cart stays with the ACCOUNT on the platform - it\n   comes back when they sign in again, on any device - and this browser starts an empty guest\n   cart, so nobody else at this computer sees it. */async function forgetAccount(origin){/* unlink the cart from the account on the platform first (best effort - it stays theirs to restore) */if(cartToken()&&ls.get(SESSION_KEY)){try{await call(origin,\"/api/public/cart/account\",{method:\"DELETE\"});}catch{}}ls.del(SESSION_KEY);ls.del(TOKEN_KEY);ls.del(BACKUP_KEY);publish(null);setSiteAccount(null);}/** Sign out: forget the session and the name, leave an empty guest cart here; with\n    `pulse` also end the studio (Pulse) session in this browser and come back (CART-CONTRACT 3.4). *//* Contract 7: signing out on the site signs out of the SITE only (the session, the cart link) - never\n   Pulse. `pulse: true` is kept for an explicit \"sign out everywhere\", which the site no longer offers. */export async function signOutSite(origin,opts={pulse:false}){await forgetAccount(origin);ls.del(PENDING_KEY);forgetDetails();try{sessionStorage.setItem(\"bg-account-checked\",\"1\");}catch{}if(opts.pulse===true&&typeof window!==\"undefined\")window.location.href=`${origin}/auth/signout?return_url=${encodeURIComponent(hereUrl())}`;}/** Keep the nav honest with what the cart says. A cart linked to an account the\n    site has no session for (another tab signed in) shows it; the nav's own\n    session is the source of truth otherwise. */export function syncAccountFromCart(cart){const a=cart?.account;if(a===undefined)return;const cur=siteAccount();if(!a||!a.signed_in){if(cur&&!ls.get(SESSION_KEY))setSiteAccount(null);return;}const next={...cur||{},name:a.name||cur?.name,email:a.email||cur?.email,company:a.company??cur?.company??null,display_name:a.display_name||cur?.display_name,initials:a.initials||cur?.initials,terms_label:a.terms?.label??cur?.terms_label??null};if(JSON.stringify(cur)!==JSON.stringify(next))setSiteAccount(next);}export const BLOCKING_COPY={empty_cart:\"Your cart is empty.\",incomplete_line:\"Finish choosing options on every item.\",artwork_missing:\"Add artwork to every item, or let us design it for you.\",contact_missing:\"Add your name, email and phone.\",address_missing:\"Add your delivery address.\",promo_invalid:\"That promo code doesn't apply.\",price_changed:\"A price has changed since you last looked. Check the total.\"};export const CART_STAGES=[\"items\",\"details\",\"delivery\",\"pay\"];const STAGE_KEY=\"bg-cart-stage\";/* Signing up (confirm email, back to the page) or signing in can hand them a different cart id (their\n   account's cart follows them) - markStageCarry() before leaving says \"come back to this stage whatever\n   the cart is called then\", for 2 hours. */const CARRY_KEY=\"bg-cart-stage-carry\";export function savedStage(cartId){if(!cartId)return null;try{const v=JSON.parse(ls.get(STAGE_KEY)||\"null\");if(v&&v.cart===cartId&&CART_STAGES.includes(v.stage))return v.stage;const c=JSON.parse(ls.get(CARRY_KEY)||\"null\");if(c&&CART_STAGES.includes(c.stage)&&Date.now()-Number(c.at)<2*3600*1e3)return c.stage;}catch{}return null;}export function saveStage(cartId,stage){if(cartId)ls.set(STAGE_KEY,JSON.stringify({cart:cartId,stage,at:Date.now()}));// a carried stage is used once: the stage they are on now is the one to keep\nif(ls.get(CARRY_KEY))ls.del(CARRY_KEY);}export function markStageCarry(stage){ls.set(CARRY_KEY,JSON.stringify({stage,at:Date.now()}));/* contract 8: sign-up sends location.href (no #) as return_url - the stage rides in the query, so the\n       confirm link brings them back to it on any device */try{const u=new URL(window.location.href);u.searchParams.set(\"stage\",stage);window.history.replaceState(window.history.state,\"\",u.toString());}catch{}}/** ?stage= on landing (the confirm-email return): read once, then taken out of the address bar. */export function takeStageFromUrl(){try{const u=new URL(window.location.href);const v=u.searchParams.get(\"stage\");if(!v)return null;u.searchParams.delete(\"stage\");window.history.replaceState(window.history.state,\"\",u.toString());return CART_STAGES.includes(v)?v:null;}catch{return null;}}/** Change one line's production speed (contract 1). The platform answers with the tier the line GETS. *//* \"Your details\" kept for next time (owner 2026-09-28). A guest's name, business, email and phone, typed at\n   checkout, stay in THIS browser only (localStorage, a year) and fill the Details stage of their next cart.\n   Signed in, the account fills it instead. Signing out on the site forgets them (a shared computer). Staff\n   typing a customer's details never keep them (the cart doesn't call rememberDetails for staff). */const DETAILS_KEY=\"bg-details\";const cleanDetail=v=>typeof v===\"string\"?v.trim().slice(0,160):\"\";export function savedDetails(){try{const v=JSON.parse(ls.get(DETAILS_KEY)||\"null\");if(!v||typeof v!==\"object\")return null;if(Number(v.at)&&Date.now()-Number(v.at)>365*864e5){ls.del(DETAILS_KEY);return null;}const out={};for(const k of[\"name\",\"company\",\"email\",\"phone\"]){const x=cleanDetail(v[k]);if(x)out[k]=x;}return Object.keys(out).length?out:null;}catch{return null;}}export function rememberDetails(c){if(!c)return;const next={...savedDetails()||{}};for(const k of[\"name\",\"company\",\"email\",\"phone\"]){if(k in c){const x=cleanDetail(c[k]);if(x)next[k]=x;else delete next[k];}}if(!Object.keys(next).length)return ls.del(DETAILS_KEY);ls.set(DETAILS_KEY,JSON.stringify({...next,at:Date.now()}));}export function forgetDetails(){ls.del(DETAILS_KEY);}export async function setLineSpeed(origin,lineId,tier){return patchLine(origin,lineId,{turnaround:tier});}/** The delivery choice as the cart PATCH wants it (contract 2). */export function fulfilmentFor(choice){return choice===\"pickup\"?{method:\"pickup\"}:{method:\"delivery\",speed:choice};}/** Which of the three choices the cart is on now (v2 answers have no speed - standard). */export function deliveryChoiceOf(cart){const d=cart?.summary?.delivery;if(d?.option)return d.option;const f=cart?.fulfilment;if((f?.method||d?.method)!==\"delivery\")return\"pickup\";return(f?.speed||d?.speed)===\"express\"?\"express\":\"standard\";}/** Address autocomplete (contract 4). null = the service is not there (404 on today's platform, 503) -\n    the plain fields still work. [] = nothing matched. */export async function suggestAddress(origin,q,session){try{const r=await call(origin,`/api/public/address/suggest?q=${encodeURIComponent(q)}&session=${encodeURIComponent(session)}`,{token:null});return Array.isArray(r?.suggestions)?r.suggestions:[];}catch(e){if(e instanceof CartApiError&&(e.code===\"query_too_short\"||e.status===429))return[];return null;}}export async function placeAddress(origin,id,session){try{const r=await call(origin,`/api/public/address/place?id=${encodeURIComponent(id)}&session=${encodeURIComponent(session)}`,{token:null});return r?.address||null;}catch{return null;}}/** Products drawn with the customer's own artwork (contract 5). [] when there is nothing (or the route\n    is not there yet) - the section then hides. *//** Cart v3.1: the list plus whether it is drawn with THEIR artwork (has_artwork on the answer or on each\n    item; an older answer is read from image_kind). */export async function cartRecs(origin){if(!cartToken())return{items:[],hasArtwork:false};try{const r=await call(origin,\"/api/public/cart/recommendations\");const items=Array.isArray(r?.recommendations)?r.recommendations.filter(x=>x&&x.slug&&x.add&&x.add.slug):[];const top=typeof r?.has_artwork===\"boolean\"?r.has_artwork:null;const hasArtwork=top!=null?top:items.some(x=>typeof x.has_artwork===\"boolean\"?x.has_artwork:x.image_kind===\"mockup\");return{items,hasArtwork};}catch{return{items:[],hasArtwork:false};}}export async function cartRecommendations(origin){if(!cartToken())return[];try{const r=await call(origin,\"/api/public/cart/recommendations\");return Array.isArray(r?.recommendations)?r.recommendations.filter(x=>x&&x.slug&&x.add&&x.add.slug):[];}catch{return[];}}export async function paySetup(origin){if(!cartToken())return null;try{const r=await call(origin,\"/api/public/cart/pay-setup\");return r&&typeof r.state===\"string\"?r:null;}catch(e){return null;}}/** POST /api/public/cart/pay - never throws: the status and the answer, as the contract's table reads them. */export async function payCart(origin,body){const token=cartToken();try{const res=await fetch(`${origin}/api/public/cart/pay`,{method:\"POST\",headers:{\"content-type\":\"application/json\",...token?{\"x-bg-cart\":token}:{}},body:JSON.stringify(body)});const b=await res.json().catch(()=>({}));return{status:res.status,body:b};}catch{return{status:0,body:{error:\"offline\",message:\"We couldn't reach Bendigo Graphics. Check your connection and try again - you won't be charged twice.\"}};}}/* One idempotency key per order attempt, kept for this cart until it is paid - a retry, a second card after a\n   decline or a reload of an ordered-but-unpaid cart all send the same key (the order is placed once). */const PAYKEY=\"bg-pay-key\";export function payKey(cartId){try{const v=JSON.parse(ls.get(PAYKEY)||\"null\");if(v&&v.cart===cartId&&v.key)return v.key;}catch{}const key=`${cartId}-pay-${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`;ls.set(PAYKEY,JSON.stringify({cart:cartId,key}));return key;}export const forgetPayKey=()=>ls.del(PAYKEY);\nexport const __FramerMetadata__ = {\"exports\":{\"CartStage\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"forgetDetails\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SpeedOption\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CART_STAGES\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"savedStage\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"accountLabel\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"accountNotice\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"approveLine\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Money\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"deliveryChoiceOf\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"removeLine\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SaveState\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"onAccountChange\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SavedCard\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CartApiError\":{\"type\":\"class\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"restoreCart\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CheckoutResult\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"queueCartPatch\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"signOutSite\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"checkPending\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"money\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"hasPendingReset\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LineDesign\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withdrawApproval\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"acceptAccount\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"accountProviders\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"accountSession\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"savedDetails\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"pendingSignup\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CheckoutPayment\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LineProof\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DEFAULT_ORIGIN\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"patchLine\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"takeAccountFromUrl\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LinePatch\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"finishOrder\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"trackPurchase\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"resendConfirm\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"lineProof\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"remintPayment\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"dayLabel\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"onCartChange\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LinePriced\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DEFAULT_ACCOUNT_PAGES\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SpeedTier\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"proofState\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"cartRecommendations\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PaySetup\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"AccountNotice\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"updateLine\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"siteAccount\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CartFile\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"placeAddress\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"startDesign\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"AccountPage\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"forgetPending\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"cartPending\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"setLineSpeed\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"cartToken\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"signInUrl\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ResolvedAddress\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"currentSaveState\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SiteAccount\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"patchCart\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"orderPageHref\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"lineDesign\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"resetPassword\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"onSaveState\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"latestCart\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"hereUrl\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CartArtwork\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"cartRecs\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"accountInitials\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getCart\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"createAccount\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CartLine\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Cart\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"takeWelcome\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fulfilmentFor\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"markStageCarry\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"payKey\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"uploadFile\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"BLOCKING_COPY\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"pendingCartPatch\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"openAccountPage\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"readyByText\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"signInWithPassword\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"forgetPayKey\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"askAccount\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"onCartError\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PurchaseItem\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PaymentState\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"AccountMenuItem\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DeliveryChoice\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"saveCartNow\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"refreshAccount\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"forgotPassword\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"lineApproved\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"AccountReorder\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"checkUpload\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"checkout\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"saveStage\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"payCart\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"lastKnownCart\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"addLine\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"designProof\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"suggestAddress\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"onCartPending\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SavedDetails\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SignupForm\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"AddressSuggestion\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"rememberDetails\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"quietSignIn\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"flushCartPatches\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DeliveryOption\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"takeStageFromUrl\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Turnaround\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"syncAccountFromCart\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"paySetup\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"AccountMenu\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"AccountPayload\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CartSummary\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Recommendation\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./BGCartStore.map","// BGMadeForYou.tsx - \"made for you\" product pages (2026-09-29).\n// A campaign email links to a product page with ?fy=<token> (bg-platform lib/made-for-you-token.ts). This\n// file is the ONE reader of that token on the site, shared by BGProductBuy (the \"Made for <Business>\" note\n// and \"Use your artwork\"), Productslideshow (their mockup leads the gallery) and BGDesignFlow (their artwork\n// already in the Upload your design window):\n//   GET <platform>/api/public/made-for-you/<token>?slug=<page slug>\n//   -> { made_for_you: { product_slug, product_title, mockup_url, artwork_url, business, account_url, preview? } }\n// One read per page (kept on window.__bgFy); every component listens for \"bg:made-for-you\". A bad, expired or\n// wrong-product token (404), a network error or a timeout = null, and the page is the normal page - nothing\n// is said. The artwork goes to the cart the way an upload does: the picture is read as a file and sent through\n// the cart's own upload (POST /cart/uploads -> signed PUT -> done), then the proof - never a url on the line.\n// `?fy=preview` is the owner's look at any product: the platform answers it for a made-up business; where the\n// platform can't be reached (Framer's preview hosts, before the platform change is deployed) the same page\n// draws the built-in example below, marked preview.\n//\n// The default export is the note itself (0x0 when there is no made-for-you), placeable anywhere on a page.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useState}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";// @ts-ignore - Framer resolves sibling code files at runtime; the typechecker cannot see them\nimport{DEFAULT_ORIGIN}from\"https://framerusercontent.com/modules/LZdouB2ho2Sydc2pr4Xv/V5KbcBIG1pe7cBoNunfM/BGCartStore.js\";const EVENT=\"bg:made-for-you\";const PREVIEW=\"preview\";/* The built-in example for ?fy=preview when the platform can't be asked: an example logo and the platform's\n   own renders of it on three products (drawn by lib/product-mockup#renderArtworkOnProduct). Other products\n   show the logo itself as the lead picture. */const EXAMPLE_ART=\"https://framerusercontent.com/images/0Ld8s6BRIluBQbZlltmG8PL84f0.png\";const EXAMPLE_MOCKUPS={\"stock-cap\":\"https://framerusercontent.com/images/vw4slmqidCDUt76kgJm6mnQpzA.png\",\"stubby-holders\":\"https://framerusercontent.com/images/qU5d0yigy6Qg5YbthTgPOFvjk.png\",\"standard-business-cards\":\"https://framerusercontent.com/images/gdXLJ9drmQYjtCBQCBY5oHRIs.png\",\"business-cards\":\"https://framerusercontent.com/images/gdXLJ9drmQYjtCBQCBY5oHRIs.png\"};const isCanvasNow=()=>{try{return[RenderTarget.canvas,RenderTarget.export,RenderTarget.thumbnail].includes(RenderTarget.current());}catch{return false;}};/** The page's product slug (/products/<slug>). */export function pageSlug(){if(typeof window===\"undefined\")return\"\";const m=/\\/products\\/([^/?#]+)/.exec(window.location.pathname);return m?decodeURIComponent(m[1]).toLowerCase():\"\";}/** The ?fy token on this page, or null. */export function fyToken(){if(typeof window===\"undefined\")return null;try{const t=new URLSearchParams(window.location.search).get(\"fy\");return t&&t.length<=1024&&/^[A-Za-z0-9._-]+$/.test(t)?t:null;}catch{return null;}}const store=()=>typeof window===\"undefined\"?null:window.__bgFy||null;const httpsOk=u=>typeof u===\"string\"&&/^https:\\/\\//.test(u);const httpOk=u=>typeof u===\"string\"&&/^https?:\\/\\//.test(u);function clean(raw,slug,preview){if(!raw||typeof raw!==\"object\")return null;const art=httpOk(raw.artwork_url)?raw.artwork_url:null;const mock=httpOk(raw.mockup_url)?raw.mockup_url:null;if(!art&&!mock)return null;/* a token names ONE product: never show it on another page */if(raw.product_slug&&slug&&String(raw.product_slug).toLowerCase()!==slug)return null;const business=typeof raw.business===\"string\"&&raw.business.trim()?raw.business.trim().slice(0,80):null;return{product_slug:String(raw.product_slug||slug),product_title:String(raw.product_title||\"\"),mockup_url:mock,artwork_url:art,business,account_url:httpsOk(raw.account_url)?raw.account_url:null,preview:preview||raw.preview===true};}function example(slug){return{product_slug:slug,product_title:\"\",mockup_url:EXAMPLE_MOCKUPS[slug]||null,artwork_url:EXAMPLE_ART,business:\"Example & Co\",account_url:null,preview:true};}function announce(s){window.__bgFy=s;window.dispatchEvent(new CustomEvent(EVENT,{detail:{data:s.data,status:s.status}}));}/** Read this page's made-for-you once (every component shares the one answer). */export function loadMadeForYou(origin=DEFAULT_ORIGIN){if(typeof window===\"undefined\"||isCanvasNow())return Promise.resolve(null);const token=fyToken();const slug=pageSlug();if(!token||!slug)return Promise.resolve(null);const key=`${token}|${slug}`;const have=store();if(have&&have.key===key)return have.promise||Promise.resolve(have.data);const preview=token.toLowerCase()===PREVIEW;const s={key,status:\"loading\",data:null,promise:null};s.promise=(async()=>{let data=null;const ctrl=typeof AbortController!==\"undefined\"?new AbortController:null;const timer=window.setTimeout(()=>ctrl?.abort(),8e3);try{const r=await fetch(`${String(origin||DEFAULT_ORIGIN).replace(/\\/$/,\"\")}/api/public/made-for-you/${encodeURIComponent(token)}?slug=${encodeURIComponent(slug)}`,{signal:ctrl?.signal});if(r.ok)data=clean((await r.json().catch(()=>null))?.made_for_you,slug,preview);else if(preview&&r.status!==429)data=example(slug);}catch{/* the preview on a host the platform does not answer (Framer's preview): the built-in example */if(preview)data=example(slug);}finally{window.clearTimeout(timer);}const cur=store();if(cur&&cur.key!==key)return data;s.status=data?\"ready\":\"none\";s.data=data;announce(s);return data;})();window.__bgFy=s;return s.promise;}/** This page's made-for-you, or null (while loading, and for good when there is none). */export function useMadeForYou(origin=DEFAULT_ORIGIN){const now=()=>{const s=store();return s&&s.key===`${fyToken()}|${pageSlug()}`?s.data:null;};const[fy,setFy]=useState(()=>typeof window===\"undefined\"?null:now());useEffect(()=>{if(typeof window===\"undefined\"||isCanvasNow())return;let live=true;const on=()=>live&&setFy(now());window.addEventListener(EVENT,on);loadMadeForYou(origin).then(()=>on());/* Framer's client-side navigation: a new product page (or the same one without ?fy) reads again */const nav=()=>loadMadeForYou(origin).then(()=>on());window.addEventListener(\"popstate\",nav);return()=>{live=false;window.removeEventListener(EVENT,on);window.removeEventListener(\"popstate\",nav);};},[origin]);return fy;}const fileCache=new Map;const EXT={\"image/png\":\"png\",\"image/jpeg\":\"jpg\",\"image/svg+xml\":\"svg\",\"application/pdf\":\"pdf\",\"image/tiff\":\"tif\",\"image/webp\":\"png\"};/** Their artwork as a File, for the cart's own upload. null when it can't be read (the upload window then\n    simply opens empty, as it would for anyone). */export function madeForYouFile(fy){const url=fy?.artwork_url;if(!url||typeof window===\"undefined\"||typeof File===\"undefined\")return Promise.resolve(null);const hit=fileCache.get(url);if(hit)return hit;const p=(async()=>{try{const r=await fetch(url,{mode:\"cors\",credentials:\"omit\"});if(!r.ok)return null;let blob=await r.blob();let type=(blob.type||\"\").split(\";\")[0].trim().toLowerCase();if(!EXT[type]){const guess=/\\.(png|jpe?g|svg|pdf|tiff?)(\\?|$)/i.exec(url);type=guess?({png:\"image/png\",jpg:\"image/jpeg\",jpeg:\"image/jpeg\",svg:\"image/svg+xml\",pdf:\"application/pdf\",tif:\"image/tiff\",tiff:\"image/tiff\"})[guess[1].toLowerCase()]:\"\";if(!type)return null;blob=new Blob([blob],{type});}/* a webp is sent as a png (the upload takes pdf/ai/eps/svg/png/jpg/tif/psd/zip) */if(type===\"image/webp\"){const png=await toPng(blob);if(!png)return null;blob=png;type=\"image/png\";}const who=(fy?.business||\"Your\").replace(/[^A-Za-z0-9 &'-]+/g,\"\").trim().slice(0,60)||\"Your\";return new File([blob],`${who} artwork.${EXT[type]}`,{type});}catch{return null;}})();fileCache.set(url,p);p.then(f=>{if(!f)fileCache.delete(url);});return p;}function toPng(blob){return new Promise(resolve=>{const img=new Image;const u=URL.createObjectURL(blob);img.onload=()=>{try{const c=document.createElement(\"canvas\");c.width=img.naturalWidth;c.height=img.naturalHeight;c.getContext(\"2d\")?.drawImage(img,0,0);c.toBlob(b=>resolve(b),\"image/png\");}catch{resolve(null);}finally{URL.revokeObjectURL(u);}};img.onerror=()=>{URL.revokeObjectURL(u);resolve(null);};img.src=u;});}/** The words, one place: \"Made for Example & Co\". */export const madeForWords=fy=>fy?.business?`Made for ${fy.business}`:\"Made for you\";/** The note: their artwork in a small tile, \"Made for <Business>\" and one plain line. */export function MadeForYouNote({fy,T,line}){const pic=fy.artwork_url||fy.mockup_url;const sub=line===undefined?fy.mockup_url?\"Your artwork is already on it. Change anything before you order.\":\"Your artwork is ready to go on it. Change anything before you order.\":line;return /*#__PURE__*/_jsxs(\"div\",{className:\"bgfy-note\",\"data-bg-made-for-you\":true,style:{[\"--bgfy-accent\"]:T.accent,background:T.tint},children:[/*#__PURE__*/_jsx(\"style\",{children:NOTE_CSS}),pic?/*#__PURE__*/_jsx(\"span\",{className:\"bgfy-pic\",\"aria-hidden\":\"true\",style:{background:\"#fff\"},children:/*#__PURE__*/_jsx(\"img\",{src:pic,alt:\"\"})}):null,/*#__PURE__*/_jsxs(\"span\",{style:{display:\"grid\",gap:2,minWidth:0},children:[/*#__PURE__*/_jsxs(\"strong\",{style:{color:T.accent,fontFamily:T.font,fontWeight:600,fontSize:15,lineHeight:1.3},children:[madeForWords(fy),fy.preview?/*#__PURE__*/_jsx(\"span\",{className:\"bgfy-prev\",children:\"Preview\"}):null]}),sub?/*#__PURE__*/_jsx(\"span\",{style:{color:T.muted,fontFamily:T.font,fontSize:13.5,lineHeight:1.4},children:sub}):null]})]});}const NOTE_CSS=`\n.bgfy-note{display:flex;align-items:center;gap:12px;padding:8px 14px 8px 8px;border-radius:18px;opacity:0;transform:translateY(8px);animation:bgfyIn 480ms cubic-bezier(0,0,.58,1) forwards}\n.bgfy-pic{flex:none;width:44px;height:44px;border-radius:12px;overflow:hidden;display:grid;place-items:center}\n.bgfy-pic img{max-width:84%;max-height:84%;object-fit:contain}\n.bgfy-prev{margin-left:8px;display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:999px;background:var(--bgfy-accent);color:#fff;font-size:11.5px;font-weight:600;vertical-align:2px}\n@keyframes bgfyIn{to{opacity:1;transform:none}}\n@media (prefers-reduced-motion: reduce){.bgfy-note{animation:none;opacity:1;transform:none}}\n`;/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n */export default function BGMadeForYou(props){const{origin=DEFAULT_ORIGIN,accent=\"#304382\",ink=\"#1F1F1F\",muted=\"#6C6354\",tint=\"#E2EAF8\",line}=props;const fy=useMadeForYou(origin);const canvas=isCanvasNow();const shown=fy||(canvas&&props.canvasPreview?example(\"stock-cap\"):null);if(!shown)return null;return /*#__PURE__*/_jsx(MadeForYouNote,{fy:shown,T:{accent,ink,muted,tint},line:line||undefined});}addPropertyControls(BGMadeForYou,{origin:{type:ControlType.String,title:\"Platform\",defaultValue:DEFAULT_ORIGIN},accent:{type:ControlType.Color,title:\"Accent\",defaultValue:\"#304382\"},ink:{type:ControlType.Color,title:\"Ink\",defaultValue:\"#1F1F1F\"},muted:{type:ControlType.Color,title:\"Muted\",defaultValue:\"#6C6354\"},tint:{type:ControlType.Color,title:\"Tint\",defaultValue:\"#E2EAF8\"},line:{type:ControlType.String,title:\"Line\",defaultValue:\"\",placeholder:\"Your artwork is already on it.\"},canvasPreview:{type:ControlType.Boolean,title:\"Canvas\",defaultValue:false,enabledTitle:\"Example\",disabledTitle:\"Hidden\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"madeForYouFile\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fyToken\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"loadMadeForYou\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"madeForWords\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"pageSlug\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useMadeForYou\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"MadeForYouNote\":{\"type\":\"reactComponent\",\"name\":\"MadeForYouNote\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"MadeForYou\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"BGMadeForYou\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./BGMadeForYou.map","// BGDesignFlow.tsx - Upload your design, the editor overlay, and the proof.\n// Placed once per page (the product page, /templates). It claims the window\n// event \"bg:design-flow\" that BGProductBuy and BGTemplateBrowser fire:\n//   mode \"upload\"               -> the Upload your design modal: Front + Back\n//                                  drop zones, progress, the platform's\n//                                  artwork check, then \"Check your proof\".\n//   mode \"template\" + design_id -> \"Check your proof\" for that design (back\n//                                  from the full-page editor on a phone, or\n//                                  a template the customer finished).\n//   mode \"template\", no design  -> not claimed (BGProductBuy no longer fires\n//                                  it - \"send it later\" is gone, H1 cart wave).\n//   mode \"template\" + apparel   -> Design it online (no design yet): the\n//     {garment, garment_back,      design is made on the chosen garment\n//      colour}                     (POST /api/public/cart/designs), the editor\n//                                  opens over the page (900px and wider) or\n//                                  full page (narrower, back with ?design_id=),\n//                                  and Finish leads to \"Check your proof\".\n// \"Check your proof\" (BGProof.tsx ProofScreen - the proof portal's anatomy:\n// the render on a grey stage, a white rail, one required tick) is where the\n// customer approves their own artwork; the approval rides the cart line\n// (POST /cart/lines/:id/approve, CART-CONTRACT 4) so the job does not wait\n// for a proof from us.\n// Made for you (2026-09-29): an \"upload\" event carrying `fy` (BGProductBuy's \"Use your artwork\", the page's\n// ?fy= made-for-you, BGMadeForYou.tsx) opens the upload window with their artwork already sent as the Front\n// file - read as a file and put through the cart's own upload and check, exactly like a file they dropped.\n// If it can't be read the window is simply the usual empty one.\n// \"Edit my design\" reopens the same design in the editor; \"Change files\"\n// goes back to the upload. The platform prices the line again; this file\n// holds no price. Contract: vista/h1/CART-CONTRACT.md, bg-platform\n// docs/site-commerce.md section 4.\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useEffect,useRef,useState}from\"react\";import{createPortal}from\"react-dom\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";const generic=f=>/^(inter|sans-serif|serif|monospace|system-ui|-apple-system)$/i.test(f.split(\",\")[0].replace(/[\"']/g,\"\").trim());function fontOf(v,b){const fam=v&&typeof v.fontFamily===\"string\"&&v.fontFamily.trim()&&!generic(v.fontFamily)?v.fontFamily:b.family;const size=parseFloat(String(v?.fontSize));return{fontFamily:fam,fontWeight:(v?.fontWeight)||b.weight,fontStyle:(v?.fontStyle)||\"normal\",fontSize:Number.isFinite(size)&&size>0?size:b.size,lineHeight:(v?.lineHeight)||b.line,letterSpacing:v?.letterSpacing!=null&&v.letterSpacing!==\"\"?typeof v.letterSpacing===\"number\"?`${v.letterSpacing}px`:v.letterSpacing:b.tracking||\"normal\"};}// @ts-ignore - Framer resolves sibling code files at runtime; the typechecker cannot see them\nimport{addLine,uploadFile,cartToken,startDesign,readyByText,designProof}from\"https://framerusercontent.com/modules/LZdouB2ho2Sydc2pr4Xv/ZBvIrcV7v5AxZdb6EzAI/BGCartStore.js\";// @ts-ignore - Framer resolves sibling code files at runtime; the typechecker cannot see them\nimport{ProofScreen,embedOf}from\"https://framerusercontent.com/modules/j8bBM91UPuYU5SIQevwN/FzgKjeO9wcztnwBZmujk/BGProof.js\";// @ts-ignore - Framer resolves sibling code files at runtime; the typechecker cannot see them\nimport{madeForYouFile}from\"https://framerusercontent.com/modules/PSLynAGVztdESKpx7STN/3ciyDtjXx8MabbEdIrY7/BGMadeForYou.js\";const RESUME_DIRECT_MS=20*864e5;const RESUME_KEEP_MS=25*864e5;const signedNow=()=>{try{return!!localStorage.getItem(\"bg-account-session\");}catch{return false;}};const RESUME_KEY=\"bg-design-resume\";const resumeKey=(slug,ap)=>[slug,ap.template_id||\"\",ap.variant_id||\"\",ap.mode||\"\"].join(\"|\");const readResumes=()=>{try{return JSON.parse(localStorage.getItem(RESUME_KEY)||\"{}\")||{};}catch{return{};}};const writeResumes=all=>{try{const now=Date.now();const kept=Object.fromEntries(Object.entries(all).filter(([,r])=>r&&now-r.at<RESUME_KEEP_MS));localStorage.setItem(RESUME_KEY,JSON.stringify(kept));}catch{}};const saveResume=(key,r)=>writeResumes({...readResumes(),[key]:r});const dropResume=(key,designId)=>{const all=readResumes();for(const[k,r]of Object.entries(all))if(k===key||designId&&r.design_id===designId)delete all[k];writeResumes(all);};const DEFAULT_TYPES=[\"pdf\",\"ai\",\"eps\",\"svg\",\"png\",\"jpg\",\"tif\"];const MAX_BYTES=100*1024*1024;function rawPack(origin,slug){const w=typeof window!==\"undefined\"?window:{};if(!w.__bgPagePacks)w.__bgPagePacks=new Map;const store=w.__bgPagePacks;const k=origin+\"|\"+slug;if(!store.has(k)){const p=fetch(`${origin}/api/public/product-page/${encodeURIComponent(slug)}`).then(r=>r.ok?r.json():null).catch(()=>null);store.set(k,p);p.then(v=>v===null&&store.delete(k));}return store.get(k);}const extOf=name=>(name.split(\".\").pop()||\"\").toLowerCase().replace(\"jpeg\",\"jpg\").replace(\"tiff\",\"tif\");const sizeLabel=n=>n>=1024*1024?`${(n/1024/1024).toFixed(1)} MB`:`${Math.max(1,Math.round(n/1024))} KB`;const listTypes=t=>{const up=t.map(x=>x.toUpperCase());return up.length>1?`${up.slice(0,-1).join(\", \")} or ${up[up.length-1]}`:up[0]||\"\";};/* The done call takes scalar answers only. */const scalarValues=v=>{const out={};for(const[k,x]of Object.entries(v||{})){if(x===null||typeof x===\"number\"||typeof x===\"boolean\")out[k]=x;else if(typeof x===\"string\")out[k]=x.slice(0,500);}return out;};/* The chosen options in the customer's words, from the pack's own form. */const optionPairs=(pack,values)=>{const out=[];for(const i of pack?.form?.inputs||[]){const v=(values||{})[i.key];if(v==null||v===\"\"||typeof v===\"object\")continue;if(i.type===\"toggle\"){if(v===true)out.push([\"\",i.label]);continue;}const o=(i.options||[]).find(x=>String(x.value)===String(v));out.push([i.label,o?o.label:String(v)+(i.unit?` ${i.unit}`:\"\")]);}return out.slice(0,8);};/* One reader for every render the platform sends (editor message, design proof, upload check): the long\n   caption, the short switcher word (short_label), the side and the lines it carries (legend) - each\n   optional, so an older platform's renders still read. */const renderOf=x=>({label:String(x.label||(x.side?String(x.side)[0].toUpperCase()+String(x.side).slice(1):\"Front\")),url:x.url,kind:typeof x.kind===\"string\"?x.kind:undefined,side:typeof x.side===\"string\"?x.side:null,/* contract 9: `name` is the platform's own short, distinct chip name (\"As it's cut\", \"On the desk\"); short_label before it */short:typeof x.name===\"string\"&&x.name.trim()?x.name:typeof x.short_label===\"string\"&&x.short_label.trim()?x.short_label:null,legend:Array.isArray(x.legend)?x.legend.map(String):x.legend===null?null:undefined});const rendersOf=r=>Array.isArray(r)?r.filter(x=>x&&typeof x.url===\"string\"&&/^https:\\/\\//.test(x.url)).map(renderOf):undefined;/* Decorated, not printed edge to edge (no trim, no cut lines): the proof says so (proof.placement); until the\n   platform does, the pack's own answer - a garment, or a promotional / headwear / bag / drinkware product. */const packPlacement=pack=>{if(!pack)return null;if(typeof pack?.artwork?.placement===\"boolean\")return pack.artwork.placement;if(pack.apparel)return true;return/apparel|clothing|headwear|hats?|caps?|bags?|totes?|drinkware|mugs?|promotional/i.test(String(pack?.product?.category||\"\"))?true:false;};const unitOf=pack=>{const u=pack?.product?.unit;return u&&!/^each$/i.test(u)?String(u).toLowerCase():null;};/* The proof's pictures: the editor's renders, else its thumbnail; for an upload, each side's preview. */function proofFaces(f,files){if(f.kind===\"upload\")return[\"front\",\"back\"].filter(s=>files[s]&&files[s].phase===\"done\").flatMap(s=>{const word=s===\"front\"?\"Front\":\"Back\";/* the platform drew the artwork on the product and on its print layout (cut, bleed, safe area) */const drawn=(files[s].renders||[]).filter(r=>r&&r.url);/* each file's check draws it as its own \"Front\" - the back file's pictures are named for the back */if(drawn.length)return drawn.map((r,k)=>({label:(s===\"back\"&&r.label?String(r.label).replace(/^front\\b/i,\"Back\"):r.label)||(r.kind===\"scene\"?drawn.findIndex(x=>x.kind===\"scene\")===k?`${word} on the product`:`${word}, another view`:r.kind===\"sheet\"?`${word} print layout`:word),src:r.url,name:files[s].name,kind:r.kind,side:s,short:r.name||r.short_label||null,legend:Array.isArray(r.legend)?r.legend:r.legend===null?null:undefined}));return[{label:word,src:files[s].preview||null,name:files[s].name,side:s}];});if(f.renders&&f.renders.length)return f.renders.map(r=>({label:r.label,src:r.url,kind:r.kind,side:r.side,short:r.short,legend:r.legend}));return[{label:\"Front\",src:f.thumbnail||null}];}/* The upload's 3D / preview frame. Each file's check draws only its own face, so with a back file too the\n   front file's frame (preview.faces.back null) would show the front alone - then the proof draws both files'\n   own pictures with Front / Back instead. One file: its frame. (2026-09-29) */function uploadEmbed(files){const front=files.front&&files.front.phase===\"done\"?files.front:null;const back=files.back&&files.back.phase===\"done\"?files.back:null;if(front&&back)return[front.embed,back.embed].find(e=>!!e&&(!e.own||(e.faces?.length||0)>1))||null;return(front||back)?.embed||null;}function uploadFindings(files){const findings=[];const done=[\"front\",\"back\"].map(s=>files[s]).filter(x=>x&&x.phase===\"done\");for(const f of done)for(const x of f.preflight?.findings||[])if(!findings.some(y=>y.title===x.title))findings.push(x);const summary=done.length===1?done[0].preflight?.summary||null:null;return{findings,summary};}const GROUPS=[{key:\"error\",label:\"We'll check this with you before printing\",tone:\"error\"},{key:\"warn\",label:\"Worth a look\",tone:\"warn\"},{key:\"info\",label:\"Good to know\",tone:\"info\"},{key:\"ok\",label:\"Looks good\",tone:\"ok\"}];/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export default function BGDesignFlow(props){const{origin,cartHref,accent,ink,muted,line,tint,paper,radius,font,headingFont,canvasPreview}=props;const tf=fontOf(props.fontTitle,{family:headingFont,weight:400,size:32,line:1.05,tracking:\"-0.04em\"});const bf=fontOf(props.fontBody,{family:font,weight:500,size:16,line:1.4,tracking:\"-0.02em\"});const T={accent,ink,muted,line,tint,paper,radius:Number(radius)||16,font:bf.fontFamily,headingFont,tf,bf};const isCanvas=[RenderTarget.canvas,RenderTarget.export,RenderTarget.thumbnail].includes(RenderTarget.current());const[mounted,setMounted]=useState(false);const[flow,setFlow]=useState(null);const[step,setStep]=useState(\"upload\");const chooseRef=useRef(null);const[files,setFiles]=useState({});const[pack,setPack]=useState(null);const[tick,setTick]=useState(false);const[busy,setBusy]=useState(false);const[err,setErr]=useState(null);const[editor,setEditor]=useState(null);const editorRef=useRef(null);editorRef.current=editor;const frame=useRef(null);const finishTimer=useRef(undefined);const seq=useRef({front:0,back:0});const flowRef=useRef(null);flowRef.current=flow;const filesRef=useRef({});filesRef.current=files;const sendRef=useRef(()=>{});useEffect(()=>setMounted(true),[]);// claim the design flow\nuseEffect(()=>{if(isCanvas)return;const on=e=>{const d=e.detail||{};if(!d.slug)return;if(!d.design_id)lateValues.current=null;if(d.mode===\"choose\"){/* Apparel, step 1 of 4 (owner 2026-09-26: \"upload/templates page THEN editor then render then\n                   proof accept page then add to cart\"): choose how to start, on its own screen. */e.preventDefault();d.claim?.();chooseRef.current={pick:d.apparel||{},templates:Array.isArray(d.templates)?d.templates.slice(0,6):[],garment:typeof d.garment===\"boolean\"?d.garment:!!d.apparel};open({kind:\"design\",slug:d.slug,values:d.values||{},qty:Number(d.qty)||1,title:d.title},\"choose\");}else if(d.mode===\"upload\"){e.preventDefault();d.claim?.();const fy=d.fy&&typeof d.fy===\"object\"&&d.fy.artwork_url?d.fy:null;open({kind:\"upload\",slug:d.slug,values:d.values||{},qty:Number(d.qty)||1,title:d.title,madeFor:fy?fy.business||\"you\":null});/* their artwork, sent as the Front file the moment it is read (the window shows it uploading) */if(fy){const slug=d.slug;madeForYouFile(fy).then(file=>{if(!file)return;/* the window may not have rendered yet (a cached file answers at once): wait for it, briefly */const tryIt=n=>{const f=flowRef.current;if(f&&f.slug===slug&&f.kind===\"upload\"){if(!filesRef.current.front)sendRef.current(\"front\",file);}else if(n>0)window.setTimeout(()=>tryIt(n-1),60);};tryIt(30);});}}else if(d.mode===\"template\"&&!d.design_id&&(typeof d.template_id===\"string\"||d.apparel&&typeof d.apparel===\"object\")){/* Design it online (apparel) or Start from a template: the editor opens on the\n                   chosen garment and/or the template, then \"Check your proof\". */e.preventDefault();d.claim?.();openEditor({kind:\"design\",slug:d.slug,values:d.values||{},qty:Number(d.qty)||1,title:d.title},{...d.apparel||{},...typeof d.template_id===\"string\"?{template_id:d.template_id}:{},...typeof d.variant_id===\"string\"?{variant_id:d.variant_id}:{},...d.field_values&&typeof d.field_values===\"object\"?{field_values:d.field_values}:{}});}else if(d.mode===\"template\"&&d.design_id){e.preventDefault();d.claim?.();let thumb=d.thumbnail??null;if(!thumb)try{thumb=new URLSearchParams(window.location.search).get(\"thumbnail\");}catch{}open({kind:\"design\",slug:d.slug,values:d.values||{},qty:Number(d.qty)||1,design_id:String(d.design_id),thumbnail:thumb,files:Array.isArray(d.files)?d.files:[],title:d.title,approved:d.approved===true,editorUrl:typeof d.editor_url===\"string\"?d.editor_url:null,renders:rendersOf(d.renders)});}};window.addEventListener(\"bg:design-flow\",on);return()=>window.removeEventListener(\"bg:design-flow\",on);},[isCanvas,origin]);/* 2026-09-27: the product page's choices can change while the editor is open (a side added in the\n       editor moves the decoration and so the price) - \"bg:flow-values\" {slug, values} brings them here so\n       the proof and the cart line carry them. */const lateValues=useRef(null);useEffect(()=>{if(isCanvas)return;const on=e=>{const d=e.detail||{};if(!d.slug||!d.values||typeof d.values!==\"object\")return;lateValues.current={slug:String(d.slug),values:d.values};setFlow(x=>x&&x.slug===d.slug?{...x,values:d.values}:x);setEditor(x=>x&&x.flow.slug===d.slug?{...x,flow:{...x.flow,values:d.values}}:x);};window.addEventListener(\"bg:flow-values\",on);return()=>window.removeEventListener(\"bg:flow-values\",on);},[isCanvas]);const open=(fIn,first)=>{const f=lateValues.current&&lateValues.current.slug===fIn.slug&&fIn.kind===\"design\"&&fIn.design_id?{...fIn,values:lateValues.current.values}:fIn;seq.current={front:seq.current.front+1,back:seq.current.back+1};setFiles({});setTick(false);setErr(null);setBusy(false);setStep(first===\"choose\"?\"choose\":f.kind===\"upload\"?\"upload\":\"review\");setFlow(f);setPack(null);rawPack(origin,f.slug).then(p=>{if(flowRef.current?.slug===f.slug)setPack(p);});// a design's proof: the platform draws front (and back) from the saved print file - exactly what prints\nif(f.kind===\"design\"&&f.design_id){const want=f.design_id;const get=tries=>designProof(origin,want,{slug:f.slug,values:scalarValues(f.values)}).then(pf=>{if(flowRef.current?.design_id!==want)return;const renders=(pf?.renders||[]).filter(r=>r&&r.url).map(renderOf);const extra={...typeof pf?.placement===\"boolean\"?{placement:pf.placement}:{},...typeof pf?.cut_lines===\"boolean\"?{cutLines:pf.cut_lines}:{},...Array.isArray(pf?.checks)&&pf.checks.length&&pf.checks.every(c=>typeof c===\"string\")?{checks:pf.checks}:{},...embedOf(pf)?{embed:embedOf(pf)}:{}};if(renders.length||extra.embed)setFlow(x=>x&&x.design_id===want?{...x,...renders.length?{renders}:{},...extra}:x);else if(tries>0)setTimeout(()=>get(tries-1),1500);}).catch(()=>null);get(3);}};/* Design it online: make the design on the chosen garment, then the editor. */const openEditor=async(f,ap,fresh=false)=>{if(editorRef.current)return;const wide=window.innerWidth>=(Number(props.embedFrom)||900);const key=resumeKey(f.slug,ap);const saved=fresh?null:readResumes()[key]||null;if(fresh)dropResume(key);/* the same design, as they left it: straight back into its editor (the link is still good) */if(saved&&Date.now()-saved.at<RESUME_DIRECT_MS&&!!saved.signed===signedNow()){if(!wide){window.location.href=saved.editor_url;return;}setEditor({flow:f,design_id:saved.design_id,url:saved.editor_url,editorOrigin:saved.editor_origin||origin,loaded:false,finishing:false,notice:null,resumed:true,key,pick:ap});return;}const here=new URL(window.location.href);here.searchParams.delete(\"design_id\");here.searchParams.delete(\"thumbnail\");const body={slug:f.slug,qty:f.qty,values:f.values,...ap.garment?{garment:ap.garment,garment_back:ap.garment_back||ap.garment}:{},...ap.colour?{colour:ap.colour}:{},...ap.template_id?{template_id:ap.template_id}:{},...ap.template_id&&ap.variant_id?{variant_id:ap.variant_id}:{},...ap.template_id&&ap.field_values&&Object.keys(ap.field_values).length?{field_values:ap.field_values}:{},...ap.mode===\"upload\"?{mode:\"upload\"}:{},...ap.front?{front:ap.front}:{},...ap.back?{back:ap.back}:{},...ap.sizes&&Object.keys(ap.sizes).length?{sizes:ap.sizes}:{},...ap.side_prices&&typeof ap.side_prices===\"object\"?{side_prices:ap.side_prices}:{},...saved?{resume_design_id:saved.design_id}:{},embed:wide,return_url:here.toString()};if(wide)setEditor({flow:f,design_id:null,url:null,editorOrigin:origin,loaded:false,finishing:false,notice:null,key,pick:ap});try{const r=await startDesign(origin,body);let editorOrigin=origin;try{editorOrigin=new URL(r.editor_url).origin;}catch{}/* 200 + resumed:true = the same design; 201 / resumed:false = a fresh one (an older platform that\n               doesn't know resume_design_id answers a fresh one too) - either way this is the one kept now */const resumed=r.resumed===true||r.resumed===undefined&&!!saved&&r.design_id===saved.design_id;if(saved&&!resumed)dropResume(key,saved.design_id);if(r.design_id&&r.editor_url)saveResume(key,{design_id:String(r.design_id),editor_url:r.editor_url,editor_origin:editorOrigin,at:resumed&&saved?saved.at:Date.now(),signed:signedNow()});if(!wide){window.location.href=r.editor_url;return;}setEditor(x=>x?{...x,design_id:r.design_id,url:r.editor_url,editorOrigin,resumed}:x);}catch(e){const msg=e?.message||\"We couldn't open the editor. Try again.\";if(wide)setEditor(x=>x?{...x,notice:msg}:x);else window.alert(msg);}};// the editor's bridge\nuseEffect(()=>{if(isCanvas||!editor)return;const onMsg=e=>{const ed=editorRef.current;if(!ed||e.origin!==ed.editorOrigin&&e.origin!==origin)return;const d=e.data;if(!d||d.bgd!==1||typeof d.type!==\"string\")return;/* any word from the editor means it is up: the host's loading cover comes off (ask 12) */if(!ed.ready||!ed.loaded)setEditor(x=>x?{...x,ready:true,loaded:true}:x);if(d.type===\"preview\"){/* the editor's full-screen Preview (ask 14): our bar steps aside so it has the whole window */setEditor(x=>x?{...x,previewing:d.open!==false}:x);}else if(d.type===\"review\"){/* the editor's own \"Review your design\" step is open - Finish is theirs to press now */window.clearTimeout(finishTimer.current);setEditor(x=>x?{...x,finishing:false,reviewing:true,notice:null}:x);}else if(d.type===\"editing\"){window.clearTimeout(finishTimer.current);setEditor(x=>x?{...x,finishing:false,reviewing:false}:x);}else if(d.type===\"finished\"){window.clearTimeout(finishTimer.current);const designId=typeof d.designId===\"string\"&&d.designId?d.designId:ed.design_id;const thumb=typeof d.thumbnail===\"string\"&&d.thumbnail?d.thumbnail:null;dropResume(ed.key,designId);setEditor(null);const qty=Number(d.qty)>0?Number(d.qty):ed.flow.qty;if(designId)open({...ed.flow,kind:\"design\",design_id:designId,thumbnail:thumb,qty,approved:d.approved===true,editorUrl:ed.url,editorOrigin:ed.editorOrigin,renders:rendersOf(d.renders)});}else if(d.type===\"finish-error\"){window.clearTimeout(finishTimer.current);setEditor(x=>x?{...x,finishing:false,notice:\"We couldn't finish your design just then. Your work is saved.\"}:x);}};window.addEventListener(\"message\",onMsg);/* Escape belongs to the editor while its Preview is open */const esc=e=>e.key===\"Escape\"&&!editorRef.current?.previewing&&setEditor(null);document.addEventListener(\"keydown\",esc);const unlock=lockPage();return()=>{window.removeEventListener(\"message\",onMsg);document.removeEventListener(\"keydown\",esc);unlock();};},[!!editor,isCanvas,origin]);/* The embedded editor has no Finish of its own - ask for it over the bridge. */const finish=()=>{const ed=editorRef.current;if(!ed||ed.finishing||!ed.url)return;setEditor({...ed,finishing:true,notice:null});try{frame.current?.contentWindow?.postMessage({bgd:1,type:\"finish\"},ed.editorOrigin);}catch{}window.clearTimeout(finishTimer.current);finishTimer.current=window.setTimeout(()=>setEditor(x=>x&&x.finishing?{...x,finishing:false,notice:\"The editor is taking a while to finish. Your work is saved.\"}:x),9e4);};const close=()=>{seq.current={front:seq.current.front+1,back:seq.current.back+1};setFlow(null);};/* \"Edit my design\" on the proof: the same design, back in the editor over the page. */const reopenEditor=()=>{const f=flowRef.current;if(!f||!f.editorUrl)return;setFlow(null);let eo=f.editorOrigin||origin;try{eo=new URL(f.editorUrl).origin;}catch{}setEditor({flow:{...f,kind:\"design\"},design_id:f.design_id||null,url:f.editorUrl,editorOrigin:eo,loaded:false,finishing:false,notice:null});};const types=(pack?.artwork?.file_types?.length?pack.artwork.file_types:DEFAULT_TYPES).map(t=>extOf(\"x.\"+t));const title=pack?.product?.title||flow?.title||\"your order\";const spec=pack?.product?.print_spec;const sizeText=spec?.width_mm&&spec?.height_mm?`${spec.width_mm} x ${spec.height_mm} mm`:null;const patch=(side,token,p)=>setFiles(s=>seq.current[side]!==token||!s[side]?s:{...s,[side]:{...s[side],...p}});const send=async(side,file)=>{const f=flowRef.current;if(!f)return;setErr(null);setTick(false);const ext=extOf(file.name);const token=++seq.current[side];const base={name:file.name,size:file.size,pct:0,phase:\"uploading\"};if(!types.includes(ext)){setFiles(s=>({...s,[side]:{...base,phase:\"failed\",error:`That file type won't work here. Send a ${listTypes(types)} file.`}}));return;}if(file.size>MAX_BYTES){setFiles(s=>({...s,[side]:{...base,phase:\"failed\",error:\"That file is over 100 MB. Send a flattened PDF or a smaller file.\"}}));return;}setFiles(s=>({...s,[side]:base}));let id;try{id=await uploadFile(origin,file,pct=>patch(side,token,{pct}));}catch(e){patch(side,token,{phase:\"failed\",error:e?.message||\"The upload didn't finish. Try again.\"});return;}patch(side,token,{id,pct:100,phase:\"checking\"});let preflight=null;let preview=null;let renders=[];let embed=null;try{const headers={\"content-type\":\"application/json\"};const tok=cartToken();if(tok)headers[\"x-bg-cart\"]=tok;const r=await fetch(`${origin}/api/public/cart/uploads/${encodeURIComponent(id)}/done`,{method:\"POST\",headers,body:JSON.stringify({slug:f.slug,values:scalarValues(f.values)})});const j=await r.json().catch(()=>({}));if(r.ok){preflight=j.preflight??null;preview=j.preview_url??null;renders=Array.isArray(j.renders)?j.renders.filter(x=>x&&typeof x.url===\"string\"):[];embed=embedOf(j);}}catch{}// the file is in; a check that could not run still lets it through - every order gets a proof\npatch(side,token,{phase:\"done\",preflight,preview,renders,embed});};sendRef.current=send;const drop=side=>{seq.current[side]++;setFiles(s=>{const n={...s};delete n[side];return n;});setTick(false);};const front=files.front;const back=files.back;const inFlight=[front,back].some(f=>f&&(f.phase===\"uploading\"||f.phase===\"checking\"));const canReview=!!front&&front.phase===\"done\"&&!inFlight&&(!back||back.phase===\"done\"||back.phase===\"failed\");const add=async tickText=>{const f=flowRef.current;if(!f||!tickText||busy)return;setBusy(true);setErr(null);try{let artwork;if(f.kind===\"upload\"){const ids=[front,back].filter(x=>x&&x.phase===\"done\"&&x.id).map(x=>x.id);artwork={mode:\"upload\",files:ids};}else{artwork={mode:\"design\",design_id:f.design_id};if(f.thumbnail&&/^https:\\/\\//.test(f.thumbnail))artwork.design_thumb=f.thumbnail;if(f.files&&f.files.length)artwork.files=f.files;}// added AND approved in one write (CART-CONTRACT v2, 2b) - it prints as they saw it, no proof from us.\n// If the platform can't pin a render (409 no_render: a file it can't draw), the item still goes\n// in without the approval and our team proofs it.\ntry{await addLine(origin,{slug:f.slug,values:f.values,qty:f.qty,artwork,approve:{checkbox_text:tickText}});}catch(e){if(e&&e.status===409&&e.code===\"no_render\")await addLine(origin,{slug:f.slug,values:f.values,qty:f.qty,artwork});else throw e;}window.dispatchEvent(new CustomEvent(\"bg-cart-added\",{detail:{slug:f.slug,source:\"design-flow\"}}));// A page with the cart drawer shows it now; everywhere else this card offers the way on.\nconst drawer=typeof document!==\"undefined\"&&document.querySelector('button[aria-label^=\"Cart,\"]');if(drawer)close();else setStep(\"added\");}catch(e){setErr(e?.message||\"That didn't add. Try again.\");}finally{setBusy(false);}};// ------------------------------------------------------------ canvas\nif(isCanvas){if(canvasPreview!==\"upload\"&&canvasPreview!==\"review\")return null;const sample={front:{name:\"card-front.pdf\",size:412e3,pct:100,phase:\"done\",preview:null,preflight:SAMPLE_PREFLIGHT},back:{name:\"card-back.pdf\",size:388e3,pct:64,phase:\"uploading\"}};return /*#__PURE__*/_jsxs(\"div\",{style:{width:620,position:\"relative\"},children:[/*#__PURE__*/_jsx(\"style\",{children:css(T)}),/*#__PURE__*/_jsx(Dialog,{T:T,title:canvasPreview===\"upload\"?\"Upload your design\":\"Review your design\",onClose:()=>{},inline:true,children:canvasPreview===\"upload\"?/*#__PURE__*/_jsx(UploadStep,{T:T,title:\"Business Cards\",sizeText:\"90 x 55 mm\",types:DEFAULT_TYPES,files:sample,onFile:()=>{},onDrop:()=>{},downloads:[{label:\"Business card template (PDF)\",url:\"#\"}],canReview:false,onReview:()=>{}}):/*#__PURE__*/_jsx(ReviewStep,{T:T,kind:\"upload\",files:{front:sample.front},tick:true,setTick:()=>{},busy:false,err:null,onAdd:()=>{},onBack:()=>{}})})]});}if(!mounted)return null;return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{style:{position:\"relative\",width:0,height:0},\"aria-hidden\":\"true\"}),editor&&/*#__PURE__*/createPortal(/*#__PURE__*/_jsxs(\"div\",{className:\"bgdf-editor\"+(editor.previewing?\" previewing\":\"\"),role:\"dialog\",\"aria-modal\":\"true\",\"aria-label\":`Design your ${editor.flow.title||\"garment\"}`,children:[/*#__PURE__*/_jsx(\"style\",{children:css(T)}),/*#__PURE__*/_jsxs(\"div\",{className:\"bgdf-edbar\",children:[/*#__PURE__*/_jsxs(\"span\",{style:{display:\"grid\",minWidth:0},children:[/*#__PURE__*/_jsx(\"span\",{style:{fontWeight:600,fontSize:15,color:T.accent,overflow:\"hidden\",textOverflow:\"ellipsis\",whiteSpace:\"nowrap\"},children:editor.flow.title||title}),/*#__PURE__*/_jsx(\"span\",{style:{fontSize:13,color:muted},children:editor.reviewing?\"Check your design, then approve it in the editor.\":editor.resumed?\"Welcome back - this is the design you were working on.\":\"Your work saves as you go. Press Finish when it looks right.\"})]}),/*#__PURE__*/_jsxs(\"span\",{style:{display:\"flex\",gap:10,flex:\"none\",alignItems:\"center\"},children:[editor.resumed&&!editor.finishing?/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"bgdf-textbtn\",onClick:()=>{const ed=editorRef.current;if(!ed)return;setEditor(null);window.setTimeout(()=>openEditor(ed.flow,ed.pick||{},true),60);},\"data-bg-design-restart\":true,children:\"Start a new design\"}):null,/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"bgdf-btn bgdf-outline bgdf-sm\",onClick:()=>setEditor(null),children:\"Close\"}),editor.reviewing?null:/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:`bgdf-btn bgdf-primary bgdf-sm${editor.loaded&&!editor.finishing?\"\":\" bgdf-off\"}`,disabled:!editor.loaded||editor.finishing,onClick:finish,children:editor.finishing?\"Finishing\":\"Finish\"})]})]}),editor.notice?/*#__PURE__*/_jsxs(\"div\",{role:\"alert\",className:\"bgdf-ednote\",children:[/*#__PURE__*/_jsx(\"span\",{children:editor.notice}),editor.url?/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"bgdf-btn bgdf-primary bgdf-sm\",onClick:finish,children:\"Try again\"}):null]}):null,/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",flex:\"1 1 auto\",minHeight:0},children:[editor.url?/*#__PURE__*/_jsx(\"iframe\",{ref:frame,src:editor.url,title:\"Bendigo Graphics editor\",allow:\"clipboard-read; clipboard-write; fullscreen\",allowFullScreen:true,onLoad:()=>{setEditor(x=>x?{...x,loaded:true}:x);/* an editor that says nothing when it is up still shows after a moment */window.setTimeout(()=>setEditor(x=>x&&!x.ready?{...x,ready:true}:x),1500);},style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",border:0,background:\"#fff\"}}):null,!(editor.loaded&&editor.ready)?/* ask 12: the editor's own shape while it opens (rail, canvas, panel) - never a bare box *//*#__PURE__*/_jsx(\"div\",{className:\"bgdf-edload\",\"aria-busy\":\"true\",\"aria-label\":\"Opening the editor\",children:editor.notice&&!editor.url?null:/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"span\",{className:\"rail\",children:[0,1,2,3,4,5].map(i=>/*#__PURE__*/_jsx(\"i\",{},i))}),/*#__PURE__*/_jsxs(\"span\",{className:\"stage\",children:[/*#__PURE__*/_jsx(\"span\",{className:\"board\"}),/*#__PURE__*/_jsxs(\"span\",{className:\"word\",children:[\"Opening your \",editor.flow.title||\"design\"]})]}),/*#__PURE__*/_jsxs(\"span\",{className:\"side\",children:[/*#__PURE__*/_jsx(\"i\",{}),/*#__PURE__*/_jsx(\"i\",{}),/*#__PURE__*/_jsx(\"i\",{})]})]})}):null]})]}),document.body),flow&&step===\"review\"?/*#__PURE__*/_jsx(ProofScreen,{open:true,T:{accent,ink,muted,line,tint,font:T.font,titleFont:tf.fontFamily||headingFont,titleWeight:tf.fontWeight,canvas:props.canvas||\"#FFFDEB\",card:props.card||\"#F8F0D5\",headFont:T.font,headWeight:700},kind:flow.kind,placement:typeof flow.placement===\"boolean\"?flow.placement:packPlacement(pack),cutLines:flow.cutLines??null,checks:flow.checks||null,embed:flow.kind===\"upload\"?uploadEmbed(files):flow.embed||null,steps:STEPS,step:2,title:title,faces:proofFaces(flow,files),options:optionPairs(pack,flow.values),qty:flow.qty,unit:unitOf(pack),readyBy:readyByText(pack?.product?.turnaround),findings:flow.kind===\"upload\"?uploadFindings(files).findings:null,summary:flow.kind===\"upload\"?uploadFindings(files).summary:null,approveLabel:\"Approve and add to cart\",busy:busy,err:err,onApprove:text=>add(text),onBack:flow.kind===\"upload\"?()=>setStep(\"upload\"):flow.editorUrl?reopenEditor:null,onClose:close}):null,flow&&step!==\"review\"&&/*#__PURE__*/createPortal(/*#__PURE__*/_jsxs(\"div\",{className:\"bgdf\",children:[/*#__PURE__*/_jsx(\"style\",{children:css(T)}),/*#__PURE__*/_jsx(Dialog,{T:T,title:step===\"choose\"?\"Start your design\":step===\"upload\"?\"Upload your design\":\"Added to your cart\",onClose:close,children:step===\"choose\"?/*#__PURE__*/_jsx(ChooseStep,{T:T,title:title,garment:!!chooseRef.current?.garment,types:types,templates:chooseRef.current?.templates||[],onPick:extra=>{const f=flowRef.current;if(!f)return;/* a print-ready file for flat print goes through our file check, then the proof;\n                                           everything else (a garment upload, a template, from scratch) opens the editor */if(extra.mode===\"upload\"&&!chooseRef.current?.garment){open({...f,kind:\"upload\"});return;}const pick={...chooseRef.current?.pick||{},...extra};setFlow(null);openEditor(f,pick);}}):step===\"upload\"?/*#__PURE__*/_jsx(UploadStep,{T:T,madeFor:flow.madeFor||null,title:title,sizeText:sizeText,types:types,files:files,onFile:send,onDrop:drop,downloads:pack?.artwork?.template_downloads||[],canReview:canReview,onReview:()=>setStep(\"review\")}):/*#__PURE__*/_jsxs(\"div\",{style:{display:\"grid\",gap:18},children:[/*#__PURE__*/_jsxs(\"p\",{style:{margin:0,fontSize:16},children:[title,\" is in your cart with your approved \",flow.kind===\"upload\"?\"files\":\"design\",\". It goes to print as you saw it.\"]}),/*#__PURE__*/_jsxs(\"div\",{className:\"bgdf-actions\",children:[/*#__PURE__*/_jsx(\"a\",{className:\"bgdf-btn bgdf-primary\",href:cartHref,children:\"View cart\"}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"bgdf-btn bgdf-outline\",onClick:close,children:\"Keep browsing\"})]})]})})]}),document.body)]});}/* Lock the page behind an overlay without changing its layout (the same as BGProductBuy's): only\n   <html> stops scrolling - locking body too made it a scroll box and the sticky gallery jumped - and\n   the scrollbar gutter is kept. Nested locks share one counter on window. */function lockPage(){const w=window;const html=document.documentElement;w.__bgLocks=(w.__bgLocks||0)+1;if(w.__bgLocks===1){const gap=window.innerWidth-html.clientWidth;w.__bgLockBefore={o:html.style.overflow,g:html.style.scrollbarGutter,p:html.style.paddingRight};const gutter=typeof CSS!==\"undefined\"&&CSS.supports?.(\"scrollbar-gutter\",\"stable\");if(gutter)html.style.scrollbarGutter=\"stable\";else if(gap>0)html.style.paddingRight=`${gap}px`;html.style.overflow=\"hidden\";}let done=false;return()=>{if(done)return;done=true;w.__bgLocks=Math.max(0,(w.__bgLocks||1)-1);if(w.__bgLocks===0&&w.__bgLockBefore){html.style.overflow=w.__bgLockBefore.o;html.style.scrollbarGutter=w.__bgLockBefore.g;html.style.paddingRight=w.__bgLockBefore.p;}};}// ------------------------------------------------------------------ dialog\nfunction Dialog({T,title,onClose,inline,children}){const box=useRef(null);useEffect(()=>{if(inline)return;const prev=document.activeElement;const focusables=()=>Array.from(box.current?.querySelectorAll('a[href],button:not([disabled]),input:not([disabled]),[tabindex]:not([tabindex=\"-1\"])')||[]).filter(el=>el.offsetParent!==null||el===document.activeElement);const t=window.setTimeout(()=>{const f=focusables();(f[1]||f[0])?.focus();},30);const onKey=e=>{if(e.key===\"Escape\"){e.preventDefault();onClose();return;}if(e.key!==\"Tab\")return;const f=focusables();if(!f.length)return;const first=f[0];const last=f[f.length-1];if(e.shiftKey&&(document.activeElement===first||!box.current?.contains(document.activeElement))){e.preventDefault();last.focus();}else if(!e.shiftKey&&(document.activeElement===last||!box.current?.contains(document.activeElement))){e.preventDefault();first.focus();}};document.addEventListener(\"keydown\",onKey);const unlock=lockPage();return()=>{window.clearTimeout(t);document.removeEventListener(\"keydown\",onKey);unlock();prev?.focus?.({preventScroll:true});};},[inline]);const panel=/*#__PURE__*/_jsxs(\"div\",{ref:box,role:\"dialog\",\"aria-modal\":inline?undefined:true,\"aria-labelledby\":\"bgdf-title\",className:inline?\"bgdf-panel inline\":\"bgdf-panel\",onClick:e=>e.stopPropagation(),children:[/*#__PURE__*/_jsxs(\"div\",{className:\"bgdf-head\",children:[/*#__PURE__*/_jsx(\"h2\",{id:\"bgdf-title\",style:{margin:0,...T.tf,color:T.accent},children:title}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"bgdf-x\",\"aria-label\":\"Close\",onClick:onClose,children:/*#__PURE__*/_jsx(\"svg\",{width:\"18\",height:\"18\",viewBox:\"0 0 256 256\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"path\",{fill:T.ink,d:\"M208.49,191.51a12,12,0,0,1-17,17L128,145,64.49,208.49a12,12,0,0,1-17-17L111,128,47.51,64.49a12,12,0,0,1,17-17L128,111l63.51-63.52a12,12,0,0,1,17,17L145,128Z\"})})})]}),/*#__PURE__*/_jsx(\"div\",{className:\"bgdf-body\",children:children})]});if(inline)return panel;return /*#__PURE__*/_jsx(\"div\",{className:\"bgdf-back\",onClick:onClose,children:panel});}// ------------------------------------------------------------------ upload step\n/* The four steps a design takes on the site, drawn the same on every screen. */const STEPS=[\"Choose\",\"Design\",\"Proof\",\"Cart\"];function StepStrip({T,at}){return /*#__PURE__*/_jsx(\"ol\",{className:\"bgdf-steps\",\"aria-label\":`Step ${at+1} of ${STEPS.length}`,children:STEPS.map((s,i)=>/*#__PURE__*/_jsxs(\"li\",{className:i===at?\"on\":i<at?\"done\":\"\",\"aria-current\":i===at?\"step\":undefined,children:[/*#__PURE__*/_jsx(\"i\",{children:i<at?/*#__PURE__*/_jsx(\"svg\",{width:\"12\",height:\"12\",viewBox:\"0 0 24 24\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M5 12.5l4.5 4.5L19 7.5\",fill:\"none\",stroke:\"#fff\",strokeWidth:\"3.2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})}):i+1}),/*#__PURE__*/_jsx(\"span\",{children:s})]},s))});}/* Step 1 for every product (polish 2026-09-26 - a garment and a business card start the same way):\n   upload their artwork, start from a template, or start from scratch in the editor. A garment's upload\n   is placed on the garment in the editor; a flat print file goes through our file check. Then the proof. */function ChooseStep({T,title,garment,types,templates,onPick}){return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"grid\",gap:16},children:[/*#__PURE__*/_jsx(StepStrip,{T:T,at:0}),/*#__PURE__*/_jsxs(\"p\",{style:{margin:0,fontSize:16,color:T.ink},children:[\"How would you like to start? You check a proof of your \",title,\" before it goes in your cart.\"]}),/*#__PURE__*/_jsxs(\"button\",{type:\"button\",className:\"bgdf-choice\",onClick:()=>onPick({mode:\"upload\",template_id:null}),\"data-bg-choose\":\"upload\",children:[/*#__PURE__*/_jsx(\"strong\",{children:\"Upload your artwork\"}),/*#__PURE__*/_jsx(\"span\",{children:garment?\"Your logo or design. You place it on the garment next.\":`A print-ready ${listTypes(types.slice(0,4))} file. We check it against the print size.`})]}),templates.length?/*#__PURE__*/_jsxs(\"div\",{className:\"bgdf-choice\",style:{cursor:\"default\"},\"data-bg-choose\":\"templates\",children:[/*#__PURE__*/_jsx(\"strong\",{children:\"Start from a template\"}),/*#__PURE__*/_jsx(\"span\",{children:\"Pick one and make it yours in the editor.\"}),/*#__PURE__*/_jsx(\"div\",{className:\"bgdf-tpls\",children:templates.map(t=>/*#__PURE__*/_jsxs(\"button\",{type:\"button\",className:\"bgdf-tpl\",onClick:()=>onPick({template_id:t.id,mode:null}),\"aria-label\":`Start from ${t.name}`,\"data-bg-choose-template\":t.id,children:[/*#__PURE__*/_jsx(\"span\",{className:\"pic\",style:{backgroundImage:t.thumbnail_url?`url(\"${t.thumbnail_url}\")`:undefined}}),/*#__PURE__*/_jsx(\"span\",{className:\"n\",children:t.name})]},t.id))})]}):null,/*#__PURE__*/_jsxs(\"button\",{type:\"button\",className:\"bgdf-choice\",onClick:()=>onPick({mode:null,template_id:null}),\"data-bg-choose\":\"blank\",children:[/*#__PURE__*/_jsx(\"strong\",{children:\"Start from scratch\"}),/*#__PURE__*/_jsx(\"span\",{children:\"Add your own words, logo and photos in the editor.\"})]})]});}function UploadStep({T,title,sizeText,types,files,onFile,onDrop,downloads,canReview,onReview,madeFor}){return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"grid\",gap:20},children:[/*#__PURE__*/_jsx(StepStrip,{T:T,at:1}),madeFor?/*#__PURE__*/_jsxs(\"p\",{\"data-bg-made-for-you\":true,style:{margin:0,fontSize:16,color:T.ink,...{textWrap:\"pretty\"}},children:[\"We've added \",madeFor===\"you\"?\"your artwork\":`your ${madeFor} artwork`,sizeText?` to ${title} (${sizeText})`:\"\",\". Add a back if you want one, or swap the file, then review your design.\"]}):/*#__PURE__*/_jsxs(\"p\",{style:{margin:0,fontSize:16,color:T.ink,...{textWrap:\"pretty\"}},children:[\"Add your print-ready file\",sizeText?` for ${title} (${sizeText})`:\"\",\". We check it against the print size and show you what we found before it goes in your cart.\"]}),/*#__PURE__*/_jsxs(\"div\",{className:\"bgdf-zones\",children:[/*#__PURE__*/_jsx(Zone,{T:T,side:\"front\",label:\"Front\",hint:\"Required\",types:types,file:files.front,onFile:onFile,onDrop:onDrop}),/*#__PURE__*/_jsx(Zone,{T:T,side:\"back\",label:\"Back\",hint:\"Optional\",types:types,file:files.back,onFile:onFile,onDrop:onDrop})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexWrap:\"wrap\",justifyContent:\"space-between\",alignItems:\"center\",gap:\"8px 16px\",fontSize:14,color:T.muted},children:[/*#__PURE__*/_jsxs(\"span\",{children:[listTypes(types),\", up to 100 MB each.\"]}),downloads?.[0]?.url?/*#__PURE__*/_jsx(\"a\",{className:\"bgdf-link\",href:downloads[0].url,target:\"_blank\",rel:\"noopener\",children:downloads[0].label||\"Download a template\"}):null]}),/*#__PURE__*/_jsx(\"div\",{className:\"bgdf-actions\",children:/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:`bgdf-btn bgdf-primary${canReview?\"\":\" bgdf-off\"}`,disabled:!canReview,onClick:onReview,children:\"Review your design\"})})]});}function Zone({T,side,label,hint,types,file,onFile,onDrop}){const input=useRef(null);const[over,setOver]=useState(false);const f=file;const pick=()=>input.current?.click();const accept=types.map(t=>\".\"+t).join(\",\")+(types.includes(\"jpg\")?\",.jpeg\":\"\")+(types.includes(\"tif\")?\",.tiff\":\"\");return /*#__PURE__*/_jsxs(\"div\",{className:`bgdf-zone${over?\" over\":\"\"}${f?\" has\":\"\"}`,onDragOver:e=>{e.preventDefault();setOver(true);},onDragLeave:()=>setOver(false),onDrop:e=>{e.preventDefault();setOver(false);const x=e.dataTransfer?.files?.[0];if(x)onFile(side,x);},children:[/*#__PURE__*/_jsx(\"input\",{ref:input,type:\"file\",accept:accept,style:{display:\"none\"},\"aria-label\":`${label} file`,\"data-side\":side,onChange:e=>{const x=e.target.files?.[0];if(x)onFile(side,x);e.target.value=\"\";}}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",justifyContent:\"space-between\",alignItems:\"baseline\",gap:8},children:[/*#__PURE__*/_jsx(\"span\",{style:{fontWeight:600,fontSize:16,color:T.accent},children:label}),/*#__PURE__*/_jsx(\"span\",{style:{fontSize:13,color:T.muted},children:hint})]}),!f?/*#__PURE__*/_jsxs(\"button\",{type:\"button\",className:\"bgdf-drop\",onClick:pick,children:[/*#__PURE__*/_jsx(\"svg\",{width:\"26\",height:\"26\",viewBox:\"0 0 256 256\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"path\",{fill:T.accent,d:\"M178.83,109.17a4,4,0,0,1-5.66,5.66L132,73.66V168a4,4,0,0,1-8,0V73.66L82.83,114.83a4,4,0,0,1-5.66-5.66l48-48a4,4,0,0,1,5.66,0ZM224,164v44a12,12,0,0,1-12,12H44a12,12,0,0,1-12-12V164a4,4,0,0,1,8,0v44a4,4,0,0,0,4,4H212a4,4,0,0,0,4-4V164a4,4,0,0,1,8,0Z\",stroke:T.accent,strokeWidth:\"8\"})}),/*#__PURE__*/_jsxs(\"span\",{style:{fontWeight:500,fontSize:15,color:T.ink},children:[\"Drop your file here or \",/*#__PURE__*/_jsx(\"span\",{style:{textDecoration:\"underline\",textUnderlineOffset:3,color:T.accent},children:\"browse\"})]})]}):/*#__PURE__*/_jsxs(\"div\",{style:{display:\"grid\",gap:10,minHeight:112,alignContent:\"center\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:10,minWidth:0},children:[/*#__PURE__*/_jsx(\"span\",{className:\"bgdf-doc\",\"aria-hidden\":\"true\",children:extOf(f.name).toUpperCase().slice(0,4)}),/*#__PURE__*/_jsxs(\"span\",{style:{display:\"grid\",minWidth:0},children:[/*#__PURE__*/_jsx(\"span\",{style:{fontWeight:500,fontSize:14.5,overflow:\"hidden\",textOverflow:\"ellipsis\",whiteSpace:\"nowrap\"},children:f.name}),/*#__PURE__*/_jsx(\"span\",{style:{fontSize:13,color:f.phase===\"failed\"?\"#B3261E\":T.muted},\"aria-live\":\"polite\",children:f.phase===\"uploading\"?`Uploading ${f.pct}%`:f.phase===\"checking\"?\"Checking your file\":f.phase===\"failed\"?f.error:`${sizeLabel(f.size)}, checked`})]})]}),f.phase!==\"failed\"?/*#__PURE__*/_jsx(\"div\",{className:\"bgdf-bar\",role:\"progressbar\",\"aria-label\":`${label} upload`,\"aria-valuemin\":0,\"aria-valuemax\":100,\"aria-valuenow\":f.phase===\"uploading\"?f.pct:100,children:/*#__PURE__*/_jsx(\"span\",{className:f.phase===\"checking\"?\"pulse\":\"\",style:{width:`${f.phase===\"uploading\"?f.pct:100}%`,background:f.phase===\"done\"?\"#2D7A4D\":T.accent}})}):null,/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:16},children:[/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"bgdf-textbtn\",onClick:pick,children:\"Replace\"}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"bgdf-textbtn\",onClick:()=>onDrop(side),children:\"Remove\"})]})]})]});}// ------------------------------------------------------------------ review step (canvas preview only - the site uses BGProof's ProofScreen)\nfunction ReviewStep({T,kind,files,designId,thumbnail,extraFiles,tick,setTick,busy,err,onAdd,onBack}){const sides=[\"front\",\"back\"].filter(s=>files?.[s]&&files[s].phase===\"done\").map(s=>[s,files[s]]);const findings=[];let unread=false;for(const[,f]of sides){if(!f.preflight)unread=true;else for(const x of f.preflight.findings||[])if(!findings.some(y=>y.title===x.title))findings.push(x);}const summary=sides.length===1?sides[0][1].preflight?.summary:null;return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"grid\",gap:20},children:[/*#__PURE__*/_jsx(\"div\",{className:`bgdf-previews${kind===\"upload\"&&sides.length>1?\" two\":\"\"}`,children:kind===\"upload\"?sides.map(([s,f])=>/*#__PURE__*/_jsxs(\"figure\",{style:{margin:0,display:\"grid\",gap:6},children:[/*#__PURE__*/_jsx(\"div\",{className:\"bgdf-shot\",children:f.preview?/*#__PURE__*/_jsx(\"img\",{src:f.preview,alt:`Preview of the ${s}`}):/*#__PURE__*/_jsx(\"span\",{style:{fontSize:14,color:T.muted,padding:16,textAlign:\"center\"},children:f.name})}),/*#__PURE__*/_jsx(\"figcaption\",{style:{fontSize:13,color:T.muted},children:s===\"front\"?\"Front\":\"Back\"})]},s)):/*#__PURE__*/_jsx(\"figure\",{style:{margin:0},children:/*#__PURE__*/_jsx(\"div\",{className:\"bgdf-shot\",children:thumbnail?/*#__PURE__*/_jsx(\"img\",{src:thumbnail,alt:\"Your design\"}):/*#__PURE__*/_jsxs(\"span\",{style:{display:\"grid\",gap:6,justifyItems:\"center\",padding:20,textAlign:\"center\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{fontWeight:600,fontSize:16,color:T.accent},children:\"Your design is attached\"}),/*#__PURE__*/_jsxs(\"span\",{style:{fontSize:13,color:T.muted},children:[\"Design \",designId]})]})})})}),kind===\"upload\"?/*#__PURE__*/_jsxs(\"div\",{style:{display:\"grid\",gap:14},children:[summary?/*#__PURE__*/_jsx(\"p\",{style:{margin:0,fontWeight:600,fontSize:16,color:T.accent},children:summary}):null,GROUPS.map(g=>{const list=findings.filter(f=>(f.severity||\"info\")===g.key);if(!list.length)return null;return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"grid\",gap:8},children:[/*#__PURE__*/_jsx(\"span\",{style:{fontWeight:600,fontSize:14,color:T.muted},children:g.label}),/*#__PURE__*/_jsx(\"ul\",{style:{margin:0,padding:0,listStyle:\"none\",display:\"grid\",gap:8},children:list.map((f,i)=>/*#__PURE__*/_jsxs(\"li\",{className:`bgdf-find ${g.tone}`,children:[/*#__PURE__*/_jsx(\"span\",{className:\"dot\",\"aria-hidden\":\"true\"}),/*#__PURE__*/_jsxs(\"span\",{style:{display:\"grid\",gap:2},children:[/*#__PURE__*/_jsx(\"span\",{style:{fontWeight:500,fontSize:15,lineHeight:1.35},children:f.title}),f.detail?/*#__PURE__*/_jsx(\"span\",{style:{fontSize:13.5,lineHeight:1.4,color:T.muted},children:f.detail}):null]})]},i))})]},g.key);}),unread?/*#__PURE__*/_jsxs(\"p\",{style:{margin:0,fontSize:14.5,color:T.muted},children:[\"We couldn't read \",sides.length>1?\"one of your files\":\"your file\",\" automatically. Our team checks it by hand and sends you a proof before anything prints.\"]}):/*#__PURE__*/_jsx(\"p\",{style:{margin:0,fontSize:14.5,color:T.muted},children:\"Our team sends you a proof before anything prints.\"})]}):/*#__PURE__*/_jsxs(\"p\",{style:{margin:0,fontSize:15,color:T.ink},children:[\"Our team checks your design and sends you a proof before anything prints.\",extraFiles?\" The image you added goes with it for our team to place.\":\"\"]}),/*#__PURE__*/_jsxs(\"label\",{className:\"bgdf-tick\",children:[/*#__PURE__*/_jsx(\"input\",{type:\"checkbox\",checked:tick,onChange:e=>setTick(e.target.checked)}),/*#__PURE__*/_jsx(\"span\",{children:\"I've checked my design and I'm happy for it to print as shown\"})]}),err?/*#__PURE__*/_jsx(\"div\",{role:\"alert\",style:{fontSize:14,padding:\"10px 14px\",borderRadius:T.radius,background:T.tint},children:err}):null,/*#__PURE__*/_jsxs(\"div\",{className:\"bgdf-actions\",children:[/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:`bgdf-btn bgdf-primary${tick&&!busy?\"\":\" bgdf-off\"}`,disabled:!tick||busy,onClick:onAdd,children:busy?\"Adding\":\"Add to cart\"}),onBack?/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"bgdf-btn bgdf-outline\",onClick:onBack,children:\"Change files\"}):null]})]});}const SAMPLE_PREFLIGHT={summary:\"Ready to print, with 2 things to check.\",findings:[{severity:\"ok\",title:\"Your file is the right size (90 x 55 mm).\",detail:null},{severity:\"warn\",title:\"Some text is very close to the edge.\",detail:\"Keep words and logos at least 5 mm inside the cut.\"},{severity:\"info\",title:\"Your file has no bleed.\",detail:\"We've stretched your design 3 mm past the cut so nothing white shows at the edge.\"}]};function css(T){const f=T.bf||{};const B=`font-family:${f.fontFamily||T.font};font-weight:${f.fontWeight||500};font-size:${f.fontSize||16}px;line-height:${f.lineHeight||1.4};letter-spacing:${f.letterSpacing||\"-0.02em\"}`;return`\n.bgdf *,.bgdf-panel *{box-sizing:border-box}\n.bgdf-back{position:fixed;inset:0;z-index:1100;background:rgba(23,31,64,.45);display:flex;align-items:center;justify-content:center;padding:24px;${B};color:${T.ink}}\n.bgdf-panel{position:relative;width:min(640px,100%);max-height:calc(100vh - 48px);overflow:auto;background:#fff;border-radius:24px;${B};color:${T.ink}}\n.bgdf-panel.inline{border:1px solid ${T.line}}\n.bgdf-head{position:sticky;top:0;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:22px 24px 14px;background:#fff}\n.bgdf-body{padding:4px 24px 24px}\n.bgdf-x{flex:none;width:40px;height:40px;border-radius:999px;border:1px solid ${T.line};background:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:transform 200ms ease-out, box-shadow 200ms ease-out}\n.bgdf-x:hover{transform:translateY(-2px)}\n.bgdf-zones{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}\n.bgdf-zone{display:grid;gap:10px;padding:14px;border-radius:${T.radius}px;border:1px solid ${T.line};background:#fff;transition:border-color 160ms ease-out, background 160ms ease-out}\n.bgdf-zone.over{border-color:${T.accent};background:${T.tint}}\n.bgdf-drop{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;min-height:112px;padding:12px;border-radius:${Math.max(4,T.radius-4)}px;border:1.5px dashed ${T.line};background:${T.paper};cursor:pointer;font:inherit;text-align:center;transition:border-color 160ms ease-out, background 160ms ease-out}\n.bgdf-drop:hover{border-color:${T.accent};background:${T.tint}}\n.bgdf-doc{flex:none;width:40px;height:48px;border-radius:6px;background:${T.tint};color:${T.accent};display:inline-flex;align-items:center;justify-content:center;font:700 11px ${T.font};letter-spacing:.04em}\n.bgdf-bar{height:6px;border-radius:999px;background:${T.paper};overflow:hidden}\n.bgdf-bar span{display:block;height:100%;border-radius:999px;transition:width 200ms ease-out}\n.bgdf-bar span.pulse{animation:bgdfPulse 900ms ease-in-out infinite alternate}\n@keyframes bgdfPulse{from{opacity:.45}to{opacity:1}}\n.bgdf-previews{display:grid;gap:12px}\n.bgdf-previews.two{grid-template-columns:repeat(2,minmax(0,1fr))}\n.bgdf-shot{display:flex;align-items:center;justify-content:center;min-height:180px;max-height:340px;border-radius:${T.radius}px;background:${T.paper};overflow:hidden;padding:16px}\n.bgdf-shot img{display:block;max-width:100%;max-height:300px;object-fit:contain;border-radius:4px;box-shadow:0 0 0 1px rgba(23,31,64,.08)}\n.bgdf-find{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border-radius:${T.radius-2}px;background:${T.paper}}\n.bgdf-find .dot{flex:none;width:10px;height:10px;margin-top:6px;border-radius:999px}\n.bgdf-find.ok .dot{background:#2D7A4D}\n.bgdf-find.info .dot{background:${T.accent}}\n.bgdf-find.warn .dot{background:#C77700}\n.bgdf-find.error .dot{background:#B3261E}\n.bgdf-tick{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border-radius:${T.radius}px;border:1px solid ${T.line};cursor:pointer;font:500 15px/1.4 ${T.font}}\n.bgdf-tick input{flex:none;width:20px;height:20px;margin:0;accent-color:${T.accent};cursor:pointer}\n.bgdf-actions{display:flex;flex-wrap:wrap;gap:10px}\n/* the cart's step strip (numbered nodes joined by a rule, the word underneath) - one look on every step */\n.bgdf-steps{list-style:none;margin:0;padding:0;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;max-width:380px;font-size:12.5px;line-height:1.3;color:${T.muted}}\n.bgdf-steps li{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;min-width:0;text-align:center;font-weight:500}\n.bgdf-steps li+li::before{content:\"\";position:absolute;top:12px;left:-50%;right:50%;margin:0 20px;height:2px;border-radius:2px;background:${T.line}}\n.bgdf-steps li.done::before,.bgdf-steps li.on::before{background:${T.accent}}\n.bgdf-steps i{font-style:normal;position:relative;display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:999px;border:1.5px solid ${T.line};background:#fff;font-size:12px;font-weight:700}\n.bgdf-steps li.on{color:${T.accent};font-weight:600}\n.bgdf-steps li.on i{background:${T.tint};border-color:${T.accent};color:${T.accent}}\n.bgdf-steps li.done{color:${T.ink}}\n.bgdf-steps li.done i{background:${T.accent};border-color:${T.accent};color:#fff}\n.bgdf-choice{display:grid;gap:4px;text-align:left;padding:16px 18px;border-radius:${T.radius}px;border:1px solid ${T.line};background:${T.paper};font:inherit;color:${T.ink};cursor:pointer;transition:transform 200ms ease-out,border-color 160ms ease-out}\n.bgdf-choice strong{color:${T.accent};font-size:17px}\n.bgdf-choice span{color:${T.muted};font-size:14.5px}\nbutton.bgdf-choice:hover{transform:translateY(-2px);border-color:${T.accent}}\n.bgdf-choice:focus-visible,.bgdf-tpl:focus-visible{outline:2px solid ${T.accent};outline-offset:2px}\n.bgdf-tpls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:8px}\n.bgdf-tpl{display:grid;gap:6px;padding:6px;border-radius:14px;border:1px solid ${T.line};background:#fff;cursor:pointer;font:inherit;text-align:left;transition:transform 200ms ease-out,border-color 160ms ease-out}\n.bgdf-tpl:hover{transform:translateY(-2px);border-color:${T.accent}}\n.bgdf-tpl .pic{display:block;aspect-ratio:4/5;border-radius:10px;background:${T.paper} center / contain no-repeat}\n.bgdf-tpl .n{font-size:12.5px;color:${T.ink};overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n@media (max-width:520px){.bgdf-tpls{grid-template-columns:repeat(2,minmax(0,1fr))}}\n.bgdf-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;height:48px;padding:0 28px;border-radius:40px;${B};font-size:16px;line-height:1.2;text-decoration:none;cursor:pointer;transition:opacity 200ms ease-out}\n.bgdf-primary{background:${T.accent};color:#fff;border:0}\n.bgdf-outline{background:transparent;color:${T.accent};border:1px solid ${T.accent}}\n.bgdf-btn:hover:not(:disabled){opacity:.7}\n.bgdf-off{opacity:.45;cursor:not-allowed}\n.bgdf-link{color:${T.ink};text-decoration:underline;text-underline-offset:3px;text-decoration-color:${T.line}}\n.bgdf-link:hover{color:${T.accent};text-decoration-color:${T.accent}}\n.bgdf-textbtn{border:0;background:none;padding:0;color:${T.muted};font:500 14px ${T.font};text-decoration:underline;text-underline-offset:3px;cursor:pointer}\n.bgdf-textbtn:hover{color:${T.accent}}\n.bgdf-editor{position:fixed;inset:0;z-index:1050;display:flex;flex-direction:column;background:#fff;${B};color:${T.ink}}\n.bgdf-editor.previewing .bgdf-edbar,.bgdf-editor.previewing .bgdf-ednote{display:none}\n.bgdf-edload{position:absolute;inset:0;display:grid;grid-template-columns:56px minmax(0,1fr) 228px;background:#F7F6F2;overflow:hidden}\n.bgdf-edload i{display:block;border-radius:10px;background:linear-gradient(100deg,#ECEAE3 30%,#F6F5F0 50%,#ECEAE3 70%);background-size:300% 100%;animation:bgdfShim 1.3s linear infinite}\n.bgdf-edload .rail{display:grid;align-content:start;gap:12px;padding:16px 10px;background:#fff;border-right:1px solid #ECEAE3}\n.bgdf-edload .rail i{width:36px;height:36px}\n.bgdf-edload .stage{display:grid;place-items:center;align-content:center;gap:16px}\n.bgdf-edload .board{width:min(46vw,520px);aspect-ratio:1.4;border-radius:6px;background:#fff;box-shadow:0 0 0 1px #ECEAE3}\n.bgdf-edload .word{font-size:14.5px;color:${T.muted}}\n.bgdf-edload .side{display:grid;align-content:start;gap:12px;padding:16px;background:#fff;border-left:1px solid #ECEAE3}\n.bgdf-edload .side i{height:40px}\n@keyframes bgdfShim{from{background-position:100% 0}to{background-position:0 0}}\n@media (max-width:899px){.bgdf-edload{grid-template-columns:minmax(0,1fr)}.bgdf-edload .rail,.bgdf-edload .side{display:none}}\n.bgdf-editor *{box-sizing:border-box}\n.bgdf-edbar{flex:none;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 20px;border-bottom:1px solid ${T.line}}\n.bgdf-ednote{flex:none;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 20px;background:${T.tint};font-size:14.5px}\n.bgdf-sm{height:40px;padding:0 18px;font-size:14.5px}\n.bgdf-editor button:focus-visible{outline:2px solid ${T.accent};outline-offset:2px}\n.bgdf-panel button:focus-visible,.bgdf-panel a:focus-visible,.bgdf-tick:focus-within{outline:2px solid ${T.accent};outline-offset:2px}\n@media (max-width:809px){\n.bgdf-back{align-items:flex-end;padding:0}\n.bgdf-panel{width:100%;max-height:92vh;border-radius:24px 24px 0 0}\n.bgdf-head{padding:18px 20px 12px}\n.bgdf-body{padding:4px 20px 24px}\n.bgdf-zones{grid-template-columns:minmax(0,1fr)}\n.bgdf-btn{width:100%}\n}\n`;}BGDesignFlow.defaultProps={origin:\"https://studio.bendigographics.com\",cartHref:\"/cart\",canvasPreview:\"none\",embedFrom:900,accent:\"#304382\",ink:\"#171F40\",muted:\"#6C6354\",line:\"rgba(48, 67, 130, 0.18)\",tint:\"#E2EAF8\",paper:\"#F7F5EF\",canvas:\"#FFFDEB\",card:\"#F8F0D5\",radius:16,font:\"'Instrument Sans', 'Instrument Sans Medium', 'Instrument Sans SemiBold', system-ui, sans-serif\",headingFont:\"'Instrument Serif', Georgia, serif\"};addPropertyControls(BGDesignFlow,{origin:{type:ControlType.String,title:\"Platform\",defaultValue:\"https://studio.bendigographics.com\"},cartHref:{type:ControlType.String,title:\"Cart page\",defaultValue:\"/cart\"},canvasPreview:{type:ControlType.Enum,title:\"Canvas\",defaultValue:\"none\",options:[\"none\",\"upload\",\"review\"],optionTitles:[\"Nothing\",\"Upload\",\"Review\"],description:\"Nothing at rest; Upload or Review draws that panel on the canvas only\"},embedFrom:{type:ControlType.Number,title:\"Embed from\",defaultValue:900,min:0,max:2e3,step:10,unit:\"px\",description:\"Design it online opens the editor over the page at this width and wider\"},accent:{type:ControlType.Color,title:\"Accent\",defaultValue:\"#304382\"},ink:{type:ControlType.Color,title:\"Ink\",defaultValue:\"#171F40\"},muted:{type:ControlType.Color,title:\"Muted\",defaultValue:\"#6C6354\"},line:{type:ControlType.Color,title:\"Line\",defaultValue:\"rgba(48, 67, 130, 0.18)\"},tint:{type:ControlType.Color,title:\"Tint\",defaultValue:\"#EEF3FB\"},paper:{type:ControlType.Color,title:\"Paper\",defaultValue:\"#F7F5EF\"},canvas:{type:ControlType.Color,title:\"Canvas\",defaultValue:\"#FFFDEB\",description:\"The proof screen's rail - the site's Beige\"},card:{type:ControlType.Color,title:\"Card\",defaultValue:\"#F8F0D5\",description:\"Cards on the proof screen - Soft Grey on Beige (never white)\"},radius:{type:ControlType.Number,title:\"Radius\",defaultValue:16,min:0,max:24,step:1},fontTitle:{type:ControlType.Font,title:\"Title font\",controls:\"extended\",defaultFontType:\"serif\",defaultValue:{fontSize:32,lineHeight:\"1.05em\",letterSpacing:\"-0.04em\"}},fontBody:{type:ControlType.Font,title:\"Body font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:16,variant:\"Medium\",lineHeight:\"1.4em\",letterSpacing:\"-0.02em\"}},font:{type:ControlType.String,title:\"Font stack\",defaultValue:\"'Instrument Sans', 'Instrument Sans Medium', 'Instrument Sans SemiBold', system-ui, sans-serif\"},headingFont:{type:ControlType.String,title:\"Heading font\",defaultValue:\"'Instrument Serif', Georgia, serif\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"BGDesignFlow\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"auto\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./BGDesignFlow.map","// BGDesignKit.tsx - the \"Let us design it for you\" card and the avatar pieces it\n// is built from, shared by BGProductBuy (the buy column) and BGTemplateBrowser\n// (the /templates \"Work with a designer\" tile).\n//\n// The layout mirrors the \"Can't find your answer?\" section on the NHC site\n// (overlapping round faces, a heading, one line, a pill button) in BG colours and\n// type. Under it sits the rotating customer avatars - a port of the NHC site's\n// rotating avatar element (\"Across regional Victoria\": 3 visible, a new face\n// slides in from the right every 2.4 s, the oldest leaves on the left) with an\n// expanded pack of 11 faces, all on the same flat #DBEBF8 background.\n//\n// Faces: Xavier's photo is the one on the site's strategy call card (\"Let's hop\n// on a call!\", Process Card KsxSqKNBA). The two designer faces and the customer\n// faces are stock (Unsplash, plus the NHC pack), shown without names or titles.\n// Sources and credits: bg-website-v2-scripts/vista/avatars/credits.md.\n//\n// No framer-motion: the rotation is CSS transitions on keyed faces, so the same\n// file bundles in the local harness. It stands still on the canvas, in exports,\n// for reduced motion and while the tab is hidden.\n//\n// G1 (2026-09-25): the product page uses the COMPACT help card (DESIGN-DIRECTION\n// \"Help card\", compact form): one row - the three studio faces, \"Let us design\n// it for you\", \"From $X\", a link. The rotating customer strip is kept in code\n// but off everywhere for now (`showProof`, default false). Type comes from\n// ControlType.Font controls (fontOf / fontCss below, shared with BGProductBuy\n// and BGTemplateBrowser). i1: the card tone is Soft Grey (#F8F0D5) - white\n// cards on the Beige canvas are banned (DESIGN-DIRECTION rule 2).\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useState}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/* 2026-09-27: the blue-ground photo (the Help Card face) everywhere - never the orange one */export const XAVIER=\"https://framerusercontent.com/images/96oSU0DJKTPg9Ma732auG44p1M.jpg\";export const DESIGNERS=[\"https://framerusercontent.com/images/LjR8gu4zsdnzZdGm7lwDPyv7Q.jpg\",\"https://framerusercontent.com/images/5BMIm6vZW0stBZ5QEATZmnavK8.jpg\"];export const CUSTOMERS=[\"https://framerusercontent.com/images/7XZDPhJkffj4oxdcqAZ97ZGmLY.jpg\",\"https://framerusercontent.com/images/zkMH3dndAMkFYYJaZ5R8LPwU7LQ.jpg\",\"https://framerusercontent.com/images/agXySy3hscDHjkkmdEdryY2fZRs.jpg\",\"https://framerusercontent.com/images/hNLq3pQ3vUgnAHYNnAV2Qte7M.jpg\",\"https://framerusercontent.com/images/q9r9eY8ysN8Wdky5o4sNNxQ.jpg\",\"https://framerusercontent.com/images/nmf2z8KyuOXfjZA4N8KzLMcqfk.jpg\",\"https://framerusercontent.com/images/OEkJHtodf1GplDu35T56ZQ7pYY.jpg\",\"https://framerusercontent.com/images/lFCO8k1D6uBsMGlBIvlqvnLhSAY.jpg\",\"https://framerusercontent.com/images/LmLKMg3Bk1LC73xq76SCBQjwg.jpg\",\"https://framerusercontent.com/images/qwRWI2AdGKBBlSkzfgt5bcHCbM.jpg\",\"https://framerusercontent.com/images/UXvn5xrAapoImgFUq6Ihi9voV1s.jpg\"];const FACE_BG=\"#DBEBF8\"// the pack's flat background\n;const isStatic=()=>{try{const t=RenderTarget.current();return t===RenderTarget.canvas||t===RenderTarget.export||t===RenderTarget.thumbnail;}catch{return false;}};function Face({src,size,ring,style}){return /*#__PURE__*/_jsx(\"span\",{style:{position:\"absolute\",top:0,left:0,width:size,height:size,borderRadius:999,overflow:\"hidden\",boxShadow:`0 0 0 2px ${ring}`,background:FACE_BG,...style},children:/*#__PURE__*/_jsx(\"img\",{src:src,alt:\"\",width:size,height:size,decoding:\"async\",style:{width:\"100%\",height:\"100%\",objectFit:\"cover\",display:\"block\"}})});}/** A still row of overlapping faces; the first one sits on top. */export function FaceStack({images,size=48,overlap=14,ring=\"#FFFFFF\",label}){const step=size-overlap;return /*#__PURE__*/_jsx(\"span\",{role:label?\"img\":undefined,\"aria-label\":label,\"aria-hidden\":label?undefined:true,style:{position:\"relative\",display:\"inline-block\",flex:\"none\",width:size+step*(images.length-1),height:size},children:images.map((src,i)=>/*#__PURE__*/_jsx(Face,{src:src,size:size,ring:ring,style:{transform:`translateX(${step*i}px)`,zIndex:images.length-i}},src+i))});}/** Rotating customer faces: `visible` at a time, a new one every `interval` s. */export function AvatarRotator({images=CUSTOMERS,visible=3,size=36,overlap=10,interval=2.4,ring=\"#FFFFFF\",label=\"Customers of Bendigo Graphics\"}){const m=images.length;const h=Math.min(visible,m);const step=size-overlap;const[start,setStart]=useState(0);useEffect(()=>{if(isStatic()||m<=h||typeof window===\"undefined\")return;let reduce=false;try{reduce=window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;}catch{}if(reduce)return;const id=window.setInterval(()=>{if(typeof document!==\"undefined\"&&document.hidden)return;setStart(s=>s+1);},Math.max(.8,interval)*1e3);return()=>window.clearInterval(id);},[m,h,interval]);// keyed by the running index n: n - start is the slot (-1 leaving, h arriving)\nconst faces=[];for(let n=start-1;n<=start+h;n++)if(n>=0)faces.push({n,slot:n-start});return /*#__PURE__*/_jsx(\"span\",{role:\"img\",\"aria-label\":label,style:{position:\"relative\",display:\"inline-block\",flex:\"none\",width:size+step*(h-1),height:size},children:faces.map(({n,slot})=>{const shown=slot>=0&&slot<h;return /*#__PURE__*/_jsx(Face,{src:images[n%m],size:size,ring:ring,style:{zIndex:h-slot,opacity:shown?1:0,transform:`translateX(${step*(slot<0?-1:slot)}px) scale(${shown?1:.6})`,transition:\"transform 800ms cubic-bezier(.34,1.3,.64,1), opacity 500ms ease-out\",willChange:\"transform, opacity\"}},n);})});}export const SANS=\"'Instrument Sans', 'Instrument Sans Medium', 'Instrument Sans SemiBold', system-ui, sans-serif\";export const SERIF=\"'Instrument Serif', Georgia, serif\";const genericFamily=f=>/^(inter|sans-serif|serif|monospace|system-ui|-apple-system)$/i.test(f.split(\",\")[0].replace(/[\"']/g,\"\").trim());export function fontOf(v,base){const fam=v&&typeof v.fontFamily===\"string\"&&v.fontFamily.trim()&&!genericFamily(v.fontFamily)?v.fontFamily:base.family;const n=x=>{const f=parseFloat(String(x));return Number.isFinite(f)&&f>0?f:null;};const size=n(v?.fontSize)??base.size;const line=v?.lineHeight!=null&&v.lineHeight!==\"\"?v.lineHeight:base.line;const track=v?.letterSpacing!=null&&v.letterSpacing!==\"\"?typeof v.letterSpacing===\"number\"?`${v.letterSpacing}px`:v.letterSpacing:base.tracking??\"normal\";const weight=v?.fontWeight!=null&&v.fontWeight!==\"\"?v.fontWeight:base.weight;return{fontFamily:fam,fontWeight:weight,fontStyle:(v?.fontStyle)||base.style||\"normal\",fontSize:size,lineHeight:line,letterSpacing:track};}/** The same as a CSS declaration list, for <style> blocks. `size` overrides the px size. */export function fontCss(f,size){const px=size??f.fontSize;const lh=typeof f.lineHeight===\"number\"?String(f.lineHeight):String(f.lineHeight);return`font-family:${f.fontFamily};font-weight:${f.fontWeight};font-style:${f.fontStyle};font-size:${px}px;line-height:${lh};letter-spacing:${f.letterSpacing}`;}/* Site defaults (the native text styles): H1 = 2X Large, H2 = X Large, card\n   title = Medium (Instrument Sans 700 24/1.1, -0.02em) scaled to the card,\n   body = Paragraph (Instrument Sans 500 16/1.4, -0.02em). */export const TYPE={h1:{family:SERIF,weight:400,size:80,line:.95,tracking:\"-0.04em\"},h2:{family:SERIF,weight:400,size:64,line:1,tracking:\"-0.04em\"},card:{family:SANS,weight:700,size:18,line:1.3,tracking:\"-0.02em\"},body:{family:SANS,weight:500,size:16,line:1.4,tracking:\"-0.02em\"}};const money=n=>new Intl.NumberFormat(\"en-AU\",{style:\"currency\",currency:\"AUD\",minimumFractionDigits:n%1?2:0,maximumFractionDigits:2}).format(n);/** The \"Let us design it for you\" help card: compact (one row) by default. */export function DesignCard(p){if(p.compact!==false)return /*#__PURE__*/_jsx(CompactDesignCard,{...p});const faces=p.faces&&p.faces.length?p.faces:[XAVIER,...DESIGNERS];const from=p.fromAmount!=null?`From ${money(p.fromAmount)}`:p.fromLabel||\"\";const tf=fontOf(p.titleFont,{family:p.headingFont||SERIF,weight:400,size:32,line:1.05,tracking:\"-0.04em\"});const bf=fontOf(p.bodyFont,{...TYPE.body,family:p.font||SANS});return /*#__PURE__*/_jsxs(\"div\",{className:\"bgdk\",\"data-bg-design-card\":true,style:{position:\"relative\",display:\"flex\",flexDirection:\"column\",alignItems:\"center\",textAlign:\"center\",gap:12,padding:\"28px 24px\",borderRadius:p.radius??24,background:p.fill||\"#FFFFFF\",color:p.ink,...bf},children:[/*#__PURE__*/_jsx(\"style\",{children:`.bgdk-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:14px 28px;border-radius:40px;background:${p.accent};color:#fff;${fontCss(bf)};text-decoration:none;transition:opacity 200ms ease-out}.bgdk-btn:hover{opacity:.7}.bgdk-btn:focus-visible{outline:2px solid ${p.accent};outline-offset:2px}`}),/*#__PURE__*/_jsxs(\"span\",{style:{display:\"grid\",justifyItems:\"center\",gap:8},children:[/*#__PURE__*/_jsx(FaceStack,{images:faces.slice(0,3),size:48,overlap:14,label:p.facesCaption||\"Xavier and the studio team\"}),p.facesCaption!==\"\"?/*#__PURE__*/_jsx(\"span\",{style:{fontSize:13,lineHeight:1.3,color:p.muted},children:p.facesCaption||\"Xavier and the studio team\"}):null]}),/*#__PURE__*/_jsx(\"span\",{style:{...tf,color:p.accent,...{textWrap:\"balance\"}},children:p.heading||\"Let us design it for you\"}),/*#__PURE__*/_jsx(\"span\",{style:{maxWidth:380,color:p.muted,...{textWrap:\"pretty\"}},children:p.body||\"Tell us what you need. Our designers set it up and send you a proof to check before anything prints.\"}),/*#__PURE__*/_jsxs(\"span\",{style:{display:\"grid\",justifyItems:\"center\",gap:10,marginTop:4},children:[from?/*#__PURE__*/_jsx(\"span\",{style:{fontWeight:600,color:p.accent,fontVariantNumeric:\"tabular-nums\"},children:from}):null,/*#__PURE__*/_jsx(\"a\",{href:p.href,className:\"bgdk-btn\",\"data-bg-design-service\":true,children:p.button||\"Start a design brief\"})]}),p.showProof?/*#__PURE__*/_jsxs(\"span\",{style:{display:\"flex\",flexWrap:\"wrap\",alignItems:\"center\",justifyContent:\"center\",gap:\"8px 12px\",alignSelf:\"stretch\",marginTop:8,paddingTop:16,borderTop:`1px solid ${p.line}`},children:[/*#__PURE__*/_jsx(AvatarRotator,{size:36,overlap:10}),/*#__PURE__*/_jsx(\"span\",{style:{fontSize:14,lineHeight:1.3,color:p.muted},children:p.proof||\"Trusted by businesses across Central Victoria\"})]}):null]});}/* The compact help card: one row - faces, heading + \"From $X\", a link. It\n   wraps to two rows only when the column is narrower than ~340px. */export function CompactDesignCard(p){const faces=p.faces&&p.faces.length?p.faces:[XAVIER,...DESIGNERS];const from=p.fromAmount!=null?`From ${money(p.fromAmount)}`:p.fromLabel||\"\";const tf=fontOf(p.titleFont,{family:p.headingFont||SERIF,weight:400,size:24,line:1.05,tracking:\"-0.04em\"});const bf=fontOf(p.bodyFont,{...TYPE.body,family:p.font||SANS});const label=p.link||\"Start a brief\";return /*#__PURE__*/_jsxs(\"a\",{href:p.href,className:\"bgdk-c\",\"data-bg-design-card\":true,\"data-bg-design-service\":true,\"aria-label\":`${p.heading||\"Let us design it for you\"}${from?\", \"+from.toLowerCase():\"\"}. ${label}`,style:{position:\"relative\",display:\"flex\",flexWrap:\"wrap\",alignItems:\"center\",gap:\"12px 16px\",padding:\"16px 20px\",borderRadius:p.radius??24,background:p.fill||\"#F8F0D5\",color:p.ink,textDecoration:\"none\",...bf},children:[/*#__PURE__*/_jsx(\"style\",{children:`.bgdk-c{transition:transform 300ms ease-out, box-shadow 300ms ease-out}.bgdk-c:hover{transform:translateY(-4px);box-shadow:0 12px 20px -12px rgba(23,31,64,.25)}.bgdk-c:focus-visible{outline:2px solid ${p.accent};outline-offset:2px}.bgdk-c:hover .bgdk-go{opacity:.7}`}),/*#__PURE__*/_jsx(FaceStack,{images:faces.slice(0,3),size:40,overlap:12,label:p.facesCaption||\"Xavier and the studio team\"}),/*#__PURE__*/_jsxs(\"span\",{style:{flex:\"1 1 150px\",minWidth:0,display:\"grid\",gap:4},children:[/*#__PURE__*/_jsx(\"span\",{style:{...tf,color:p.accent},children:p.heading||\"Let us design it for you\"}),from?/*#__PURE__*/_jsx(\"span\",{style:{fontSize:14,lineHeight:1.3,color:p.muted,fontVariantNumeric:\"tabular-nums\"},children:from}):null]}),/*#__PURE__*/_jsxs(\"span\",{className:\"bgdk-go\",style:{flex:\"none\",display:\"inline-flex\",alignItems:\"center\",gap:6,fontWeight:600,fontSize:15,color:p.accent,transition:\"opacity 200ms ease-out\"},children:[label,/*#__PURE__*/_jsx(\"svg\",{width:\"14\",height:\"14\",viewBox:\"0 0 256 256\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"path\",{fill:p.accent,d:\"M224.49,136.49l-72,72a12,12,0,0,1-17-17L187,140H40a12,12,0,0,1,0-24H187L135.51,64.48a12,12,0,0,1,17-17l72,72A12,12,0,0,1,224.49,136.49Z\"})})]})]});}/**\n * The card on its own (for a canvas slot or a page that isn't a product).\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n */export default function BGDesignCard(props){return /*#__PURE__*/_jsx(DesignCard,{href:props.href||\"/order/design\",fromAmount:props.fromAmount>0?props.fromAmount:null,heading:props.heading,body:props.body,button:props.button,link:props.link,proof:props.proof,showProof:!!props.showProof,compact:props.layout!==\"Full\",accent:props.accent||\"#304382\",ink:props.ink||\"#171F40\",muted:props.muted||\"#6C6354\",line:props.line||\"rgba(48, 67, 130, 0.14)\",fill:props.fill,font:props.font||SANS,headingFont:props.headingFont||SERIF,titleFont:props.fontTitle,bodyFont:props.fontBody});}addPropertyControls(BGDesignCard,{layout:{type:ControlType.Enum,title:\"Layout\",options:[\"Compact\",\"Full\"],defaultValue:\"Compact\",displaySegmentedControl:true},href:{type:ControlType.String,title:\"Link\",defaultValue:\"/order/design\"},fromAmount:{type:ControlType.Number,title:\"From $\",defaultValue:50,min:0,step:1},heading:{type:ControlType.String,title:\"Heading\",defaultValue:\"Let us design it for you\"},link:{type:ControlType.String,title:\"Link text\",defaultValue:\"Start a brief\",hidden:p=>p.layout===\"Full\"},body:{type:ControlType.String,title:\"Line\",defaultValue:\"Tell us what you need. Our designers set it up and send you a proof to check before anything prints.\",displayTextArea:true,hidden:p=>p.layout!==\"Full\"},button:{type:ControlType.String,title:\"Button\",defaultValue:\"Start a design brief\",hidden:p=>p.layout!==\"Full\"},showProof:{type:ControlType.Boolean,title:\"Customer faces\",defaultValue:false,hidden:p=>p.layout!==\"Full\"},proof:{type:ControlType.String,title:\"Proof line\",defaultValue:\"Trusted by businesses across Central Victoria\",hidden:p=>!p.showProof||p.layout!==\"Full\"},fontTitle:{type:ControlType.Font,title:\"Title font\",controls:\"extended\",defaultFontType:\"serif\",defaultValue:{fontSize:24,lineHeight:\"1.05em\",letterSpacing:\"-0.04em\"}},fontBody:{type:ControlType.Font,title:\"Body font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:16,variant:\"Medium\",lineHeight:\"1.4em\",letterSpacing:\"-0.02em\"}},accent:{type:ControlType.Color,title:\"Blue\",defaultValue:\"#304382\"},ink:{type:ControlType.Color,title:\"Ink\",defaultValue:\"#171F40\"},muted:{type:ControlType.Color,title:\"Dark Grey\",defaultValue:\"#6C6354\"},line:{type:ControlType.Color,title:\"Line\",defaultValue:\"rgba(48, 67, 130, 0.14)\"},fill:{type:ControlType.Color,title:\"Fill\",defaultValue:\"#F8F0D5\",description:\"Soft Grey on the Beige canvas; White only inside a Sky or Blue panel\"},font:{type:ControlType.String,title:\"Font stack\",defaultValue:SANS,description:\"Used when the font controls have no family\"},headingFont:{type:ControlType.String,title:\"Heading font\",defaultValue:SERIF}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"BGDesignCard\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\"}},\"DesignCard\":{\"type\":\"reactComponent\",\"name\":\"DesignCard\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontOf\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"TYPE\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DesignCardProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CUSTOMERS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"FaceStack\":{\"type\":\"reactComponent\",\"name\":\"FaceStack\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"DESIGNERS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SANS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontCss\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CompactDesignCard\":{\"type\":\"reactComponent\",\"name\":\"CompactDesignCard\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"XAVIER\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SERIF\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"AvatarRotator\":{\"type\":\"reactComponent\",\"name\":\"AvatarRotator\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"FontBase\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"FontValue\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./BGDesignKit.map","// BGTemplateKit.tsx - the template pieces the gallery (BGTemplateBrowser) and\n// the product page rail (BGTemplatesRail) share, so a template looks and\n// behaves one way everywhere (bg-platform docs/template-library-v2.md s5).\n//\n// - Saved templates: a heart on every card. Signed in (the site session in\n//   localStorage \"bg-account-session\", sent as x-bg-account) it is the\n//   platform's list (GET/POST/DELETE /api/public/templates/saved); a guest's\n//   hearts live in localStorage \"bg-saved-templates\" (the older\n//   \"bg-favourites\" key is folded in once) with a small prompt to create an\n//   account, and are merged once (POST /saved/merge) the moment they sign in.\n// - TplCard: ONE card - one Soft Grey surface, the transparent picture cut to\n//   the trim floating on it with a drop shadow that follows its shape, the\n//   name in Blue, half-and-half colour swatches, the heart. The whole card\n//   lifts y -4 on hover, flat; nothing sits behind it.\n// - QuickView: the Vistaprint anatomy in the site's register - the platform\n//   embed (/embed/template/{id}) on a Soft Grey stage with Front / Open /\n//   Back, the name, price, swatches, heart and \"Edit my design\", then \"More\n//   templates like this\". Falls back to the transparent pictures when the\n//   embed errors or is not ready in 6 seconds.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useMemo,useRef,useState}from\"react\";import{createPortal}from\"react-dom\";// @ts-ignore - Framer resolves sibling code files at runtime; the typechecker cannot see them\nimport{accountSession,onAccountChange,refreshAccount}from\"https://framerusercontent.com/modules/LZdouB2ho2Sydc2pr4Xv/ZBvIrcV7v5AxZdb6EzAI/BGCartStore.js\";// ------------------------------------------------------------------ small helpers\nconst mem={};export const kitLs={get(k){try{if(typeof window===\"undefined\")return null;return window.localStorage.getItem(k)??mem[k]??null;}catch{return mem[k]??null;}},set(k,v){mem[k]=v;try{window.localStorage.setItem(k,v);}catch{}},del(k){delete mem[k];try{window.localStorage.removeItem(k);}catch{}}};const money=n=>n==null?\"\":new Intl.NumberFormat(\"en-AU\",{style:\"currency\",currency:\"AUD\",minimumFractionDigits:2,maximumFractionDigits:2}).format(n);const keyOf=vals=>vals.map(v=>String(v)).join(\"\\x01\");/** The page pack (GET /api/public/product-page/<slug>), shared in memory with BGProductBuy and the gallery. */export function loadPack(origin,slug){const w=typeof window!==\"undefined\"?window:{};if(!w.__bgPagePacks)w.__bgPagePacks=new Map;const store=w.__bgPagePacks;const k=origin+\"|\"+slug;if(!store.has(k)){const p=fetch(`${origin}/api/public/product-page/${encodeURIComponent(slug)}`).then(r=>r.ok?r.json():null).catch(()=>null);store.set(k,p);p.then(v=>v===null&&store.delete(k));}return store.get(k);}/** The price for a product from its page pack: the price table at the default options and quantity\n    (or the ones given), else the product's From price, else nothing. */export function packPrice(pack,qty,values){if(!pack)return null;const qd=pack.form?.quantity||{};const packs=qd.mode===\"packs\"&&qd.packs?.length?qd.packs:[];let q=qty||qd.default||qd.min||packs[0]||1;if(packs.length)q=packs.find(x=>x>=q)||packs[packs.length-1];const vals={};for(const i of pack.form?.inputs||[]){let v=i.default??null;if(v==null&&i.type===\"select\"&&i.required&&i.options?.length)v=(i.options.find(o=>!o.disabled)||i.options[0]).value;if(v==null&&i.type===\"toggle\")v=false;if(v!=null)vals[i.key]=v;}Object.assign(vals,values||{});const t=pack.price_table;if(t&&Array.isArray(t.rows)){const row=t.rows.find(r=>keyOf(r.values)===keyOf((t.keys||[]).map(k=>vals[k])));const at=(t.packs||[]).indexOf(q);const total=row&&at>=0?row.totals[at]:null;if(total!=null){const u=pack.product?.unit;const word=!u||/^each$/i.test(u)?\"\":` ${String(u).toLowerCase()}`;return{main:money(total),sub:`for ${Number(q).toLocaleString(\"en-AU\")}${word}`};}}if(pack.price_from?.label)return{main:pack.price_from.label,sub:null};return null;}// ------------------------------------------------------------------ template landing pages\n/* The indexable template pages (CMS \"Template Pages\" -> /templates/<page>, 2026-09-27). Every\n   link to a product's templates goes to its page when it has one; a product without one keeps\n   /templates?product=<slug>. KEEP IN STEP WITH THE CMS: a new Template Pages item needs its\n   product slug -> page slug pair here too (the gallery on /templates also sends old\n   ?product= links for these products on to their page). */export const TEMPLATE_PAGES={\"business-cards\":\"business-cards\",\"die-cut-stickers\":\"stickers\",\"roll-labels\":\"labels\",\"flyers-and-pamphlets\":\"flyers\",postcards:\"postcards\",brochures:\"brochures\",posters:\"posters\",menus:\"menus\",\"gift-vouchers\":\"gift-vouchers\",\"loyalty-and-appointment-cards\":\"loyalty-cards\",letterheads:\"letterheads\",certificates:\"certificates\",\"corflute-signs\":\"corflute-signs\",\"pull-up-banners\":\"pull-up-banners\",\"vinyl-banners\":\"vinyl-banners\",\"swinging-a-frame\":\"a-frame-signs\",\"classic-tee\":\"t-shirts\",\"magnet-signs\":\"car-magnets\"};/** The product slug a landing page shows (the reverse of TEMPLATE_PAGES). */export const productForPage=page=>Object.keys(TEMPLATE_PAGES).find(k=>TEMPLATE_PAGES[k]===page)||null;/** Where a product's templates live: /templates/<page> when it has a page, else /templates?product=<slug>.\n    `extra` (qty, v, template, variant ...) rides along as the query either way. */export function templatesPath(base,productSlug,extra){const root=(base||\"/templates\").replace(/\\/$/,\"\");const page=TEMPLATE_PAGES[productSlug];const q=new URLSearchParams;if(!page)q.set(\"product\",productSlug);for(const[k,v]of Object.entries(extra||{}))if(v!=null&&v!==\"\")q.set(k,String(v));const s=q.toString();return`${root}${page?`/${page}`:\"\"}${s?`?${s}`:\"\"}`;}// ------------------------------------------------------------------ thumbnails (small renditions)\n/* The library's pictures are ~900 px transparent PNGs (400-540 KB) drawn at 110-300 px. When the\n   platform sends `thumb_small_url` (a ~360 px WebP of the same picture through its thumb route,\n   cached for a year - bg-platform branch site-tpl-speed) the cards draw that, with the 2x rendition\n   in srcset; without it (or if it fails to load) they draw the PNG. */export const smallOf=(tp,variantId)=>{const v=variantsOf(tp).find(x=>x.id===variantId);if(tp.kind===\"garment\")return v?.mockup_small_url||tp.mockup_small_url||null;if(v&&v.thumbnail_url&&v.thumbnail_url!==tp.thumbnail_url)return v.thumb_small_url||null;return tp.thumb_small_url||v?.thumb_small_url||null;};const twoX=u=>/[?&]w=\\d+/.test(u)?u.replace(/([?&]w=)(\\d+)/,(_m,a,n)=>`${a}${Number(n)*2}`):null;/** A template picture: the small WebP (1x / 2x) when there is one, else the PNG; faded in once loaded. */export function ThumbImg({src,small,className,alt=\"\",eager=false}){const[failed,setFailed]=useState(false);const[shown,setShown]=useState(false);const useSmall=!!small&&!failed;const x2=useSmall?twoX(small):null;const ref=el=>{if(el&&el.complete&&el.naturalWidth>0&&!shown)setShown(true);};return /*#__PURE__*/_jsx(\"img\",{ref:ref,src:useSmall?small:src,srcSet:x2?`${small} 1x, ${x2} 2x`:undefined,alt:alt,loading:eager?\"eager\":\"lazy\",// @ts-ignore - fetchpriority passes straight through to the element\nfetchpriority:eager?\"high\":undefined,decoding:\"async\",draggable:false,className:`${className||\"\"} bgtk-fade${shown?\" in\":\"\"}`.trim(),onLoad:()=>setShown(true),onError:()=>useSmall?setFailed(true):setShown(true)});}/* A template's own finished size, matched against the product's size / orientation menus, so\n   \"Edit my design\" on an A5 flyer opens an A5 flyer rather than the product's default A6. */export function valuesForShape(pack,shape,chosen){const out={};if(!pack||!shape?.w_mm||!shape?.h_mm)return out;const w=Number(shape.w_mm);const h=Number(shape.h_mm);const lo=Math.min(w,h);const hi=Math.max(w,h);const mmOf=label=>{const s=String(label||\"\").replace(/,/g,\".\");const m=s.match(/(\\d+(?:\\.\\d+)?)\\s*(mm|cm|m)?\\s*(?:w)?\\s*[x×]\\s*(\\d+(?:\\.\\d+)?)\\s*(mm|cm|m)?/i);if(!m)return null;const unit=(m[4]||m[2]||\"mm\").toLowerCase();const k=unit===\"cm\"?10:unit===\"m\"?1e3:1;return[Number(m[1])*k,Number(m[3])*k];};for(const i of pack.form?.inputs||[]){if(i?.type!==\"select\"||!Array.isArray(i.options)||chosen?.[i.key]!=null)continue;const name=`${i.key||\"\"} ${i.label||\"\"}`.toLowerCase();if(/size/.test(name)){const hit=i.options.find(o=>{if(o?.disabled)return false;const d=mmOf(o.label||o.value);return!!d&&Math.abs(Math.min(d[0],d[1])-lo)<=2&&Math.abs(Math.max(d[0],d[1])-hi)<=2;});if(hit)out[i.key]=hit.value;}else if(/orientation/.test(name)&&Math.abs(w-h)>2){const want=w>h?/horizontal|landscape|wide/i:/vertical|portrait|tall/i;const hit=i.options.find(o=>!o?.disabled&&want.test(String(o.label||o.value)));if(hit)out[i.key]=hit.value;}}return out;}/* The first page of a product's templates, asked for once per page load: the gallery's first\n   render, an early inline script on the landing pages and the quick view all share it. */export function templatesListUrl(origin,slug,page=1){return`${origin.replace(/\\/$/,\"\")}/api/public/templates?${new URLSearchParams({product:slug,page:String(page)}).toString()}`;}export function firstPage(origin,slug){const w=typeof window!==\"undefined\"?window:null;if(!w)return Promise.resolve(null);const url=templatesListUrl(origin,slug,1);w.__bgTplPre=w.__bgTplPre||{};if(!w.__bgTplPre[url])w.__bgTplPre[url]=fetch(url).then(r=>r.ok?r.json():null).catch(()=>null);const p=w.__bgTplPre[url];/* a failed answer is never kept: the next ask goes to the network again */p.then(v=>{if(!v&&w.__bgTplPre[url]===p)delete w.__bgTplPre[url];});return p;}/** The inline script the landing pages ship in their HTML: it asks for the first page (and the\n    product's page pack) while the page's scripts are still loading. */export function earlyFetchScript(origin,slug){const list=JSON.stringify(templatesListUrl(origin,slug,1));const pack=JSON.stringify(`${origin.replace(/\\/$/,\"\")}/api/public/product-page/${encodeURIComponent(slug)}`);const key=JSON.stringify(`${origin}|${slug}`);return`(function(){try{var w=window,u=${list};w.__bgTplPre=w.__bgTplPre||{};if(!w.__bgTplPre[u])w.__bgTplPre[u]=fetch(u).then(function(r){return r.ok?r.json():null}).catch(function(){return null});w.__bgTplPre[u].then(function(j){try{var d=(w.devicePixelRatio||1)>1.5;((j&&j.templates)||[]).slice(0,8).forEach(function(t){var s=t.thumb_small_url;if(!s)return;if(d)s=s.replace(/([?&]w=)(\\\\d+)/,function(m,a,n){return a+(n*2)});var i=new Image();i.decoding='async';i.src=s})}catch(e){}});if(!w.__bgPagePacks)w.__bgPagePacks=new Map();var k=${key};if(!w.__bgPagePacks.has(k)){var p=fetch(${pack}).then(function(r){return r.ok?r.json():null}).catch(function(){return null});w.__bgPagePacks.set(k,p);p.then(function(v){if(v===null)w.__bgPagePacks.delete(k)})}}catch(e){}})();`;}// ------------------------------------------------------------------ Make it yours\n/** The \"Make it yours\" answers, typed once on the gallery (localStorage \"bg-make-it-yours\"). */export const MINE_KEY=\"bg-make-it-yours\";/* The platform's standard field keys (lib/template-fields-shared + contract s1) and the older keys the first\n   library used, so an answer typed once fills both. */const LEGACY={business_name:\"company\",full_name:\"name\",job_title:\"title\"};const FROM_LEGACY={company:\"business_name\",name:\"full_name\",title:\"job_title\"};export function readMine(){try{const m=JSON.parse(kitLs.get(MINE_KEY)||\"{}\");if(!m||typeof m!==\"object\")return{};const out={};for(const[k,v]of Object.entries(m))if(typeof v===\"string\")out[FROM_LEGACY[k]||k]=out[FROM_LEGACY[k]||k]||v;return out;}catch{return{};}}/** field_values for the design start: every answer under its key, plus the legacy key for the first library. */export function fieldValuesOf(mine){const out={};for(const[k,v]of Object.entries(mine||{})){if(typeof v!==\"string\"||!v.trim())continue;const val=v.trim().slice(0,2e3);out[k]=val;if(LEGACY[k]&&!out[LEGACY[k]])out[LEGACY[k]]=val;}return out;}/** base64url of the answers JSON - the embed's `fields` parameter (contract s3). */export function encodeFields(values){const clean={};for(const[k,v]of Object.entries(values||{}))if(!Object.values(LEGACY).includes(k)&&typeof v===\"string\"&&v.trim())clean[k]=v.trim().slice(0,400);if(!Object.keys(clean).length)return\"\";try{const bytes=new TextEncoder().encode(JSON.stringify(clean));let bin=\"\";for(let i=0;i<bytes.length;i+=1)bin+=String.fromCharCode(bytes[i]);return btoa(bin).replace(/\\+/g,\"-\").replace(/\\//g,\"_\").replace(/=+$/,\"\");}catch{return\"\";}}// ------------------------------------------------------------------ saved templates\nconst LOCAL_KEY=\"bg-saved-templates\";const OLD_KEY=\"bg-favourites\";let saved={ids:[],variants:{},signedIn:false,ready:false,prompt:null,count:0};const subs=new Set;const emit=patch=>{saved={...saved,...patch};subs.forEach(f=>f(saved));};const okId=x=>typeof x===\"string\"&&/^[A-Za-z0-9_-]{1,120}$/.test(x);/** The guest's hearts, oldest first (the order merge wants). The older \"bg-favourites\" list is folded in once. */function readLocal(){let items=[];try{const raw=JSON.parse(kitLs.get(LOCAL_KEY)||\"[]\");if(Array.isArray(raw))for(const x of raw){if(okId(x))items.push({template_id:x});else if(x&&okId(x.template_id))items.push({template_id:x.template_id,variant_id:okId(x.variant_id)?x.variant_id:null});}}catch{}try{const old=kitLs.get(OLD_KEY);if(old){const list=JSON.parse(old);if(Array.isArray(list)){for(const id of list)if(okId(id)&&!items.some(i=>i.template_id===id))items.push({template_id:id});}kitLs.del(OLD_KEY);kitLs.set(LOCAL_KEY,JSON.stringify(items));}}catch{}return items;}const writeLocal=items=>items.length?kitLs.set(LOCAL_KEY,JSON.stringify(items.slice(-200))):kitLs.del(LOCAL_KEY);const fromLocal=()=>{const items=readLocal();const variants={};for(const i of items)variants[i.template_id]=i.variant_id??null;emit({ids:items.map(i=>i.template_id).reverse(),variants,signedIn:false,ready:true,count:items.length});};const session=()=>{try{return accountSession&&accountSession()||kitLs.get(\"bg-account-session\");}catch{return kitLs.get(\"bg-account-session\");}};/** The site session (for the saved list read); null for a guest. */export const accountSessionOf=()=>session();async function savedApi(origin,path,init={}){const s=session();if(!s)throw Object.assign(new Error(\"signed_out\"),{status:401});const headers={\"x-bg-account\":s};if(init.body!==undefined)headers[\"content-type\"]=\"application/json\";const r=await fetch(`${origin}${path}`,{method:init.method||\"GET\",headers,body:init.body===undefined?undefined:JSON.stringify(init.body)});const j=await r.json().catch(()=>({}));if(!r.ok)throw Object.assign(new Error(j?.message||\"Request failed\"),{status:r.status,code:j?.error});return j;}let bootedFor=\"\";let lastSession=null;let refreshTimer=null;/** Signed in: fold any guest hearts in once, then read the list. */async function loadSignedIn(origin){lastSession=session();const local=readLocal();try{if(local.length){await savedApi(origin,\"/api/public/templates/saved/merge\",{method:\"POST\",body:{items:local.slice(-200)}});writeLocal([]);}const j=await savedApi(origin,\"/api/public/templates/saved\");const variants={};for(const it of j.items||[])if(it&&okId(it.template_id))variants[it.template_id]=it.variant_id??null;emit({ids:(j.ids||[]).filter(okId),variants,signedIn:true,ready:true,count:Number(j.count)||0});if(local.length)scheduleRefresh(origin);}catch(e){if(e?.status===401)fromLocal();else emit({ready:true});}}/** Once per origin: who is saving, then follow sign in / sign out on this page. */export function bootSaved(origin){if(typeof window===\"undefined\"||bootedFor===origin)return;bootedFor=origin;if(session())void loadSignedIn(origin);else fromLocal();try{onAccountChange(a=>{const s=session();if(a&&s&&(s!==lastSession||!saved.signedIn))void loadSignedIn(origin);else if(!a&&saved.signedIn){lastSession=null;fromLocal();}});}catch{}}/* The account modal's \"Saved templates\" row reads the platform fresh; nudge it after hearts settle. */function scheduleRefresh(origin){clearTimeout(refreshTimer);refreshTimer=setTimeout(()=>{try{void refreshAccount(origin,true,true);}catch{}},1500);}/** Heart or un-heart. Guests save on this device and see the account prompt (`from` names the card's host). */export async function toggleSaved(origin,id,variantId,from){const was=saved.ids.includes(id);const want=!was;const before={ids:saved.ids,variants:saved.variants,count:saved.count};const ids=want?[id,...saved.ids.filter(x=>x!==id)]:saved.ids.filter(x=>x!==id);const variants={...saved.variants};if(want)variants[id]=variantId;else delete variants[id];const guestSave=()=>{const items=readLocal().filter(i=>i.template_id!==id);if(want)items.push({template_id:id,variant_id:variantId});writeLocal(items);emit({ids,variants,count:items.length,signedIn:false,prompt:want?from:saved.prompt});};if(!saved.signedIn||!session()){guestSave();return want;}emit({ids,variants,count:Math.max(0,saved.count+(want?1:-1))});try{const j=want?await savedApi(origin,\"/api/public/templates/saved\",{method:\"POST\",body:{template_id:id,...variantId?{variant_id:variantId}:{}}}):await savedApi(origin,`/api/public/templates/saved?template_id=${encodeURIComponent(id)}`,{method:\"DELETE\"});emit({count:Number(j.count)||saved.count});scheduleRefresh(origin);return want;}catch(e){if(e?.status===401){guestSave();return want;}if(want&&e?.code===\"invalid_variant\"){/* a colourway that has gone: keep the template, drop the colour */try{await savedApi(origin,\"/api/public/templates/saved\",{method:\"POST\",body:{template_id:id}});return true;}catch{}}emit(before);return was;}}export const dismissSavePrompt=()=>emit({prompt:null});export const savedState=()=>saved;/** The saved templates, live: {ids, variants, signedIn, ready, prompt, count}. */export function useSaved(origin,enabled=true){const[s,setS]=useState(saved);useEffect(()=>{if(!enabled)return;bootSaved(origin);setS(saved);subs.add(setS);return()=>{subs.delete(setS);};},[origin,enabled]);return s;}/** Open the account modal (BGCart listens); with no account button on the page, the platform's sign in. */export function askForAccount(origin,view=\"create\"){const ev=new CustomEvent(\"bg:account-open\",{detail:{view},cancelable:true});const claimed=!window.dispatchEvent(ev);if(!claimed)window.location.href=`${origin}/auth/start?return_url=${encodeURIComponent(window.location.href.split(\"#\")[0])}`;}// ------------------------------------------------------------------ pieces\nexport const heartPath=\"M178,40c-20.65,0-38.73,8.88-50,23.89C116.73,48.88,98.65,40,78,40a62.07,62.07,0,0,0-62,62c0,70,103.79,126.66,108.21,129a8,8,0,0,0,7.58,0C136.21,228.66,240,172,240,102A62.07,62.07,0,0,0,178,40Z\";export function Heart({T,on,size=16}){return /*#__PURE__*/_jsx(\"svg\",{width:size,height:size,viewBox:\"0 0 256 256\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"path\",{fill:on?T.accent:\"none\",stroke:T.accent,strokeWidth:\"18\",d:heartPath})});}const variantsOf=tp=>(tp.variants||[]).filter(v=>v&&v.id);export const pictureOf=(tp,variantId)=>{const v=variantsOf(tp).find(x=>x.id===variantId);if(tp.kind===\"garment\")return v?.mockup_url||tp.mockup_url||v?.thumbnail_url||tp.thumbnail_url;return v?.thumbnail_url||tp.thumbnail_url;};/** The card's second picture on hover: the first shot that shows the piece another way (on the garment,\n    at an angle, in a scene) - Vistaprint's hover swap. Default colourway only (shots are drawn in it). */export const altShotOf=(tp,variantId)=>{const v=variantsOf(tp);if(variantId&&v.length&&variantId!==v[0].id)return null;const shots=Array.isArray(tp.shots)?tp.shots:[];return shots.find(x=>x&&x.url&&(x.kind===\"angle\"||x.kind===\"scene\"))||null;};export const colourName=s=>s?s.charAt(0).toUpperCase()+s.slice(1):\"\";const swatchBg=(v,fallback)=>{const[a,b]=Array.isArray(v.swatch)&&v.swatch.length?[v.swatch[0],v.swatch[1]||v.swatch[0]]:[fallback[0]||\"#ccc\",fallback[1]||fallback[0]||\"#eee\"];return`linear-gradient(135deg, ${a} 0 50%, ${b} 50% 100%)`;};/** Half-and-half discs for a template's colourways; the name shows on hover and to screen readers. */export function Swatches({T,tp,value,onPick,max=6,big=false}){const vs=variantsOf(tp);if(vs.length<2)return null;const shown=vs.slice(0,max);const more=vs.length-shown.length;const current=value||vs[0].id;return /*#__PURE__*/_jsxs(\"span\",{className:`bgtk-sw${big?\" big\":\"\"}`,role:\"radiogroup\",\"aria-label\":\"Colours\",children:[shown.map(v=>/*#__PURE__*/_jsx(\"button\",{type:\"button\",role:\"radio\",\"aria-checked\":current===v.id,\"aria-label\":colourName(v.name)||\"Colour option\",\"data-name\":colourName(v.name)||undefined,className:\"bgtk-dot\",onClick:e=>{e.stopPropagation();onPick(v.id);},children:/*#__PURE__*/_jsx(\"span\",{style:{background:swatchBg(v,tp.colors||[])}})},v.id)),more>0?/*#__PURE__*/_jsxs(\"span\",{className:\"bgtk-more\",children:[\"+\",more]}):null]});}/** THE template card: one surface, the picture floating on it, name, swatches, heart. */export function TplCard({T,tp,variantId,onVariant,saved:on,onSave,onOpen,onStart,ctaLabel=\"Customise\",busy,sizeLine,stage=\"1 / 1\",origin,eager}){const pic=pictureOf(tp,variantId);const alt=altShotOf(tp,variantId);const round=tp.shape?.dieline===\"circle\"||tp.shape?.dieline===\"oval\";return /*#__PURE__*/_jsxs(\"div\",{role:\"listitem\",className:\"bgtk-card\",\"data-bg-template\":tp.id,children:[/*#__PURE__*/_jsxs(\"div\",{className:\"bgtk-stagewrap\",children:[/*#__PURE__*/_jsxs(\"button\",{type:\"button\",className:\"bgtk-stage\",style:{aspectRatio:stage},onClick:onOpen,\"aria-haspopup\":\"dialog\",\"aria-label\":`Preview ${tp.name}`,children:[pic?/*#__PURE__*/_jsx(ThumbImg,{src:pic,small:smallOf(tp,variantId),eager:eager,className:round?\"round\":undefined},pic):/*#__PURE__*/_jsx(\"span\",{className:\"bgtk-noimg\",children:tp.name}),pic&&alt?/*#__PURE__*/_jsx(\"img\",{className:\"bgtk-alt\",src:alt.small_url||alt.url,alt:\"\",loading:\"lazy\",decoding:\"async\",draggable:false}):null]}),onStart?/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"bgtk-cta\",onClick:onStart,\"aria-label\":`${ctaLabel} ${tp.name}`,children:busy?\"Opening\":ctaLabel}):null,/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:`bgtk-heart${on?\" on\":\"\"}`,\"aria-pressed\":on,\"aria-label\":on?`Remove ${tp.name} from saved templates`:`Save ${tp.name}`,onClick:onSave,children:/*#__PURE__*/_jsx(Heart,{T:T,on:on})})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"bgtk-meta\",children:[/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"bgtk-name\",onClick:onOpen,tabIndex:-1,children:tp.name}),/*#__PURE__*/_jsx(Swatches,{T:T,tp:tp,value:variantId,onPick:onVariant}),sizeLine?/*#__PURE__*/_jsx(\"span\",{className:\"bgtk-small\",children:sizeLine}):null]})]});}/** The loading card: the SAME anatomy and box as TplCard (surface, square stage, two-line name,\n    swatch row, size line), so the grid never moves when the real cards land. */export function SkelCard({stage=\"1 / 1\",ratio=1.6,sizeLine=true}){const w=ratio>=1?82:Math.max(30,82*ratio);const h=ratio>=1?Math.max(30,82/ratio):82;return /*#__PURE__*/_jsxs(\"div\",{role:\"listitem\",className:\"bgtk-card bgtk-skelcard\",\"aria-hidden\":\"true\",children:[/*#__PURE__*/_jsx(\"div\",{className:\"bgtk-stagewrap\",children:/*#__PURE__*/_jsx(\"span\",{className:\"bgtk-stage\",style:{aspectRatio:stage},children:/*#__PURE__*/_jsx(\"span\",{className:\"bgtk-skelpiece\",style:{width:`${w}%`,height:`${h}%`}})})}),/*#__PURE__*/_jsxs(\"div\",{className:\"bgtk-meta\",children:[/*#__PURE__*/_jsxs(\"span\",{className:\"bgtk-name bgtk-skelname\",children:[/*#__PURE__*/_jsx(\"i\",{}),/*#__PURE__*/_jsx(\"i\",{})]}),/*#__PURE__*/_jsxs(\"span\",{className:\"bgtk-sw\",children:[/*#__PURE__*/_jsx(\"i\",{className:\"bgtk-skeldot\"}),/*#__PURE__*/_jsx(\"i\",{className:\"bgtk-skeldot\"}),/*#__PURE__*/_jsx(\"i\",{className:\"bgtk-skeldot\"})]}),sizeLine?/*#__PURE__*/_jsx(\"span\",{className:\"bgtk-small bgtk-skelline\"}):null]})]});}/** Upload your own design: the same card, a dashed outline of the piece in its place. */export function UploadCard({T,onClick,ratio,stage=\"1 / 1\"}){const w=ratio>=1?78:Math.max(40,78*ratio);const h=ratio>=1?Math.max(40,78/ratio):78;return /*#__PURE__*/_jsxs(\"div\",{role:\"listitem\",className:\"bgtk-card bgtk-upload\",children:[/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"bgtk-stage\",style:{aspectRatio:stage},onClick:onClick,\"aria-label\":\"Upload your own design\",children:/*#__PURE__*/_jsxs(\"span\",{className:\"bgtk-outline\",style:{width:`${w}%`,height:`${h}%`},children:[/*#__PURE__*/_jsx(\"svg\",{width:\"30\",height:\"30\",viewBox:\"0 0 256 256\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"path\",{fill:T.accent,d:\"M178.83,109.17a4,4,0,0,1-5.66,5.66L132,73.66V168a4,4,0,0,1-8,0V73.66L82.83,114.83a4,4,0,0,1-5.66-5.66l48-48a4,4,0,0,1,5.66,0ZM224,164v44a12,12,0,0,1-12,12H44a12,12,0,0,1-12-12V164a4,4,0,0,1,8,0v44a4,4,0,0,0,4,4H212a4,4,0,0,0,4-4V164a4,4,0,0,1,8,0Z\",stroke:T.accent,strokeWidth:\"8\"})}),/*#__PURE__*/_jsx(\"span\",{className:\"bgtk-upl-t\",\"aria-hidden\":\"true\",children:\"Upload\"})]})}),/*#__PURE__*/_jsxs(\"div\",{className:\"bgtk-meta\",children:[/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"bgtk-name\",onClick:onClick,tabIndex:-1,children:\"Upload your own design\"}),/*#__PURE__*/_jsx(\"span\",{className:\"bgtk-small\",children:\"Have a file ready? We check it before it goes in your cart.\"})]})]});}/** The guest's nudge after a heart: saved here, an account keeps them. */export function SavePrompt({T,origin,css}){const[on,setOn]=useState(false);useEffect(()=>{const t=setTimeout(()=>setOn(true),20);const hide=setTimeout(()=>dismissSavePrompt(),9e3);return()=>{clearTimeout(t);clearTimeout(hide);};},[]);if(typeof document===\"undefined\")return null;return /*#__PURE__*/createPortal(/*#__PURE__*/_jsxs(\"div\",{className:`bgtk-toast${on?\" on\":\"\"}`,role:\"status\",\"aria-live\":\"polite\",children:[/*#__PURE__*/_jsx(\"style\",{children:css}),/*#__PURE__*/_jsx(\"span\",{className:\"bgtk-toast-ic\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(Heart,{T:{...T,accent:\"#fff\"},on:true,size:16})}),/*#__PURE__*/_jsxs(\"span\",{className:\"bgtk-toast-t\",style:{display:\"grid\",gap:2,minWidth:0},children:[/*#__PURE__*/_jsx(\"strong\",{children:\"Saved on this device\"}),/*#__PURE__*/_jsx(\"span\",{children:\"Create an account to keep your saved templates.\"})]}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"bgtk-btn bgtk-primary bgtk-sm\",onClick:()=>{dismissSavePrompt();askForAccount(origin,\"create\");},children:\"Create account\"}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"bgtk-x sm\",\"aria-label\":\"Close\",onClick:dismissSavePrompt,children:/*#__PURE__*/_jsx(CloseIcon,{T:T})})]}),document.body);}function CloseIcon({T,size=14}){return /*#__PURE__*/_jsx(\"svg\",{width:size,height:size,viewBox:\"0 0 256 256\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"path\",{fill:T.accent,d:\"M208.49,191.51a12,12,0,0,1-17,17L128,145,64.49,208.49a12,12,0,0,1-17-17L111,128,47.51,64.49a12,12,0,0,1,17-17L128,111l63.51-63.52a12,12,0,0,1,17,17L145,128Z\"})});}const viewsFor=tp=>tp.fold?[\"front\",\"open\",\"back\"]:(tp.sides||1)>1||tp.panel_urls?.back?[\"front\",\"back\"]:[\"front\"];const viewLabel=(v,current)=>v===\"front\"?\"Front\":v===\"back\"?\"Back\":current===\"open\"?\"Close\":\"Open\";export function QuickView(props){const{T,origin,tp,variantId,onVariant,productSlug,fields,savedIds,onSave,onEdit,busy,onClose,onPick,css}=props;const embedOrigin=(props.embedOrigin||origin).replace(/\\/$/,\"\");const[detail,setDetail]=useState(null);const[pack,setPack]=useState(null);const[frame,setFrame]=useState(\"loading\");const[views,setViews]=useState(()=>viewsFor(tp));const[view,setView]=useState(\"front\");/* 3D | Print layout, then the template's product shots (from the embed's ready message) */const[modes,setModes]=useState([]);const[scenes,setScenes]=useState([]);const[mode,setMode]=useState(\"3d\");const viewRef=useRef(\"front\");viewRef.current=view;const iframe=useRef(null);const box=useRef(null);const titleId=`bgtk-qv-${tp.id}`;const vid=variantId||variantsOf(tp)[0]?.id||null;const vidRef=useRef(vid);vidRef.current=vid;// the template's own answer: product, similar, the fuller row\nuseEffect(()=>{let live=true;setDetail(null);fetch(`${origin}/api/public/templates/${encodeURIComponent(tp.id)}`).then(r=>r.ok?r.json():null).then(j=>live&&setDetail(j||{})).catch(()=>live&&setDetail({}));return()=>{live=false;};},[origin,tp.id]);const full={...tp,...detail?.template||{}};const slug=detail?.product?.slug||productSlug||null;/* a product other than the page's (the saved view): its own pack for the price */useEffect(()=>{if(!slug||slug===productSlug&&props.price)return;let live=true;loadPack(origin,slug).then(p=>live&&setPack(p));return()=>{live=false;};},[origin,slug,productSlug]);const price=slug&&slug===productSlug&&props.price?props.price:packPrice(pack);/* The embed: views go over postMessage. A colourway reloads it (the variant on its URL), with the\n       colourway's own picture standing in meanwhile - the colourway message alone does not repaint the\n       faces in the embed as built (2026-09-27); it is sent as well, so a fixed embed simply does both. */const src=useMemo(()=>{const q=new URLSearchParams({view:viewRef.current||\"front\",bg:props.ground||\"transparent\",controls:\"0\"});if(vid)q.set(\"variant\",vid);if(slug||productSlug)q.set(\"product\",String(slug||productSlug));const f=encodeFields(fields);if(f)q.set(\"fields\",f);return`${embedOrigin}/embed/template/${encodeURIComponent(tp.id)}?${q.toString()}`;// eslint-disable-next-line react-hooks/exhaustive-deps\n},[embedOrigin,tp.id,vid]);const firstFor=useRef(\"\");useEffect(()=>{setFrame(\"loading\");if(firstFor.current!==tp.id){firstFor.current=tp.id;setView(\"front\");setViews(viewsFor(tp));}/* 2026-09-28 (owner): the 3D view with its pills, never a flat picture that stood in after 6 s - three.js on a\n           phone connection takes longer. The drawing loader shows while it boots; only an error (or 20 s of nothing)\n           brings the pictures, and a \"ready\" after that still takes over. */const timer=window.setTimeout(()=>setFrame(f=>f===\"loading\"?\"failed\":f),2e4);const on=e=>{if(!iframe.current||e.source!==iframe.current.contentWindow)return;const d=e.data;if(!d||typeof d.type!==\"string\")return;if(d.type===\"bg:tpl-preview:ready\"){window.clearTimeout(timer);const vs=Array.isArray(d.views)?d.views.filter(x=>x===\"front\"||x===\"open\"||x===\"back\"):[];if(vs.length)setViews(vs);setModes(Array.isArray(d.modes)?d.modes.filter(m=>typeof m===\"string\"):[]);setScenes(Array.isArray(d.scenes)?d.scenes.filter(x=>x&&typeof x.id===\"string\").map(x=>({id:x.id,name:String(x.name||\"On the product\")})):[]);setMode(\"3d\");setFrame(\"ready\");/* the colourway may have changed while it loaded */try{iframe.current.contentWindow?.postMessage({type:\"bg:tpl-preview\",variant:vidRef.current,...vs.includes(viewRef.current)&&viewRef.current!==\"front\"?{view:viewRef.current}:{}},\"*\");}catch{}}else if(d.type===\"bg:tpl-preview:view\"){if(d.view===\"front\"||d.view===\"open\"||d.view===\"back\")setView(d.view);if(typeof d.mode===\"string\")setMode(d.mode);}else if(d.type===\"bg:tpl-preview:error\"){/* the pictures stand in; a \"ready\" that still comes later takes over again */setFrame(f=>f===\"ready\"?f:\"failed\");}};window.addEventListener(\"message\",on);return()=>{window.clearTimeout(timer);window.removeEventListener(\"message\",on);};},[src]);const send=msg=>{try{if(frame===\"ready\")iframe.current?.contentWindow?.postMessage({type:\"bg:tpl-preview\",...msg},\"*\");}catch{}};useEffect(()=>{send({variant:vid});},[vid]);const choose=v=>{const next=v===\"open\"&&view===\"open\"?\"front\":v;setView(next);send({view:next});};// modal plumbing: Escape, focus trap, scroll lock, focus back to the card\nuseEffect(()=>{const before=document.activeElement;const overflow=document.body.style.overflow;document.body.style.overflow=\"hidden\";const first=box.current?.querySelector(\"[data-qv-first]\");first?.focus({preventScroll:true});const key=e=>{if(e.key===\"Escape\"){e.stopPropagation();onClose();return;}if(e.key!==\"Tab\"||!box.current)return;const f=Array.from(box.current.querySelectorAll('button:not([disabled]),a[href],iframe:not([tabindex=\"-1\"]),[tabindex]:not([tabindex=\"-1\"])')).filter(el=>el.offsetParent!==null||el.tagName===\"IFRAME\");if(!f.length)return;const a=f[0];const z=f[f.length-1];if(e.shiftKey&&document.activeElement===a){e.preventDefault();z.focus();}else if(!e.shiftKey&&document.activeElement===z){e.preventDefault();a.focus();}};document.addEventListener(\"keydown\",key,true);return()=>{document.removeEventListener(\"keydown\",key,true);document.body.style.overflow=overflow;try{before?.focus?.({preventScroll:true});}catch{}};},[]);useEffect(()=>{box.current?.scrollTo?.({top:0});},[tp.id]);const vs=variantsOf(full);const current=vs.find(v=>v.id===vid);const panels=current?.panel_urls||full.panel_urls||{};const faceOf=v=>(v===\"open\"?panels.inside||panels.outside||null:v===\"back\"?panels.back||null:panels.front||null)||(v===\"front\"?pictureOf(full,vid):null);const fallbackViews=views.filter(v=>!!faceOf(v));const shownViews=frame===\"failed\"?fallbackViews:views;const isSaved=savedIds.includes(tp.id);const similar=(detail?.similar||[]).filter(s=>s.id!==tp.id).slice(0,8);const round=full.shape?.dieline===\"circle\"||full.shape?.dieline===\"oval\";return /*#__PURE__*/createPortal(/*#__PURE__*/_jsxs(\"div\",{className:\"bgtk-qvwrap\",onMouseDown:e=>e.target===e.currentTarget&&onClose(),children:[/*#__PURE__*/_jsx(\"style\",{children:css}),/*#__PURE__*/_jsxs(\"div\",{ref:box,className:\"bgtk-qv\",role:\"dialog\",\"aria-modal\":\"true\",\"aria-labelledby\":titleId,children:[/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"bgtk-x\",\"aria-label\":\"Close\",onClick:onClose,children:/*#__PURE__*/_jsx(CloseIcon,{T:T,size:16})}),/*#__PURE__*/_jsxs(\"div\",{className:\"bgtk-qvtop\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"bgtk-qvstage\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"bgtk-qvpiece\",children:[frame===\"loading\"?/*#__PURE__*/_jsxs(\"span\",{className:\"bgtk-qvload\",role:\"status\",\"aria-live\":\"polite\",children:[/*#__PURE__*/_jsxs(\"svg\",{width:\"112\",height:\"80\",viewBox:\"0 0 112 80\",\"aria-hidden\":\"true\",children:[/*#__PURE__*/_jsx(\"rect\",{className:\"o\",x:\"4\",y:\"4\",width:\"104\",height:\"72\",rx:\"12\",fill:\"none\",stroke:T.accent,strokeWidth:\"2\"}),/*#__PURE__*/_jsx(\"rect\",{className:\"l\",x:\"20\",y:\"28\",width:\"40\",height:\"7\",rx:\"3.5\",fill:T.accent}),/*#__PURE__*/_jsx(\"rect\",{className:\"l l2\",x:\"20\",y:\"43\",width:\"64\",height:\"7\",rx:\"3.5\",fill:T.accent})]}),/*#__PURE__*/_jsx(\"span\",{children:\"Getting your 3D preview ready\"})]}):null,/*#__PURE__*/_jsx(\"div\",{className:`bgtk-qvfaces${frame!==\"failed\"?\" gone\":\"\"}`,\"aria-hidden\":frame!==\"failed\",children:(frame===\"failed\"?fallbackViews:[]).map(v=>{const u=faceOf(v);return u?/*#__PURE__*/_jsx(\"img\",{src:u,alt:frame===\"failed\"&&v===view?`${full.name}, ${viewLabel(v,\"front\").toLowerCase()}`:\"\",className:`${frame!==\"failed\"||v===view?\"on\":\"\"}${round?\" round\":\"\"}`,draggable:false},v+u):null;})}),/*#__PURE__*/_jsx(\"iframe\",{ref:iframe,src:src,title:`${full.name} on the product`,className:`bgtk-qvframe${frame===\"ready\"?\" on\":\"\"}`,loading:\"eager\",tabIndex:frame===\"ready\"?0:-1,\"aria-hidden\":frame!==\"ready\",onError:()=>setFrame(f=>f===\"ready\"?f:\"failed\")},src)]}),shownViews.length>1?/*#__PURE__*/_jsx(\"div\",{className:\"bgtk-views\",role:\"group\",\"aria-label\":\"Show\",children:shownViews.map(v=>/*#__PURE__*/_jsx(\"button\",{type:\"button\",\"aria-pressed\":view===v||v===\"open\"&&view===\"open\",onClick:()=>choose(v),disabled:frame===\"loading\",children:viewLabel(v,view)},v))}):null,frame===\"ready\"&&modes.includes(\"layout\")?/*#__PURE__*/_jsx(\"div\",{className:\"bgtk-views bgtk-modes\",role:\"group\",\"aria-label\":\"View as\",children:[[\"3d\",\"3D\"],[\"layout\",\"Print layout\"]].map(([m,label])=>/*#__PURE__*/_jsx(\"button\",{type:\"button\",\"aria-pressed\":mode===m,onClick:()=>{setMode(m);send({mode:m});},children:label},m))}):null,frame===\"ready\"&&scenes.length?/*#__PURE__*/_jsx(\"div\",{className:\"bgtk-scenes\",role:\"group\",\"aria-label\":\"On the product\",children:scenes.map(sc=>/*#__PURE__*/_jsx(\"button\",{type:\"button\",\"aria-pressed\":mode===sc.id,onClick:()=>{setMode(sc.id);send({mode:sc.id});},children:sc.name},sc.id))}):null]}),/*#__PURE__*/_jsxs(\"div\",{className:\"bgtk-qvside\",children:[/*#__PURE__*/_jsx(\"h2\",{id:titleId,className:\"bgtk-qvname\",children:full.name}),detail?.product?.name?/*#__PURE__*/_jsx(\"span\",{className:\"bgtk-small\",children:detail.product.name}):null,price?/*#__PURE__*/_jsxs(\"div\",{className:\"bgtk-qvprice\",\"aria-live\":\"polite\",children:[/*#__PURE__*/_jsx(\"strong\",{children:price.main}),price.sub?/*#__PURE__*/_jsx(\"span\",{children:price.sub}):null]}):null,vs.length>1?/*#__PURE__*/_jsxs(\"div\",{style:{display:\"grid\",gap:10},children:[/*#__PURE__*/_jsxs(\"span\",{className:\"bgtk-sub\",children:[\"Colour\",current?.name?/*#__PURE__*/_jsxs(\"span\",{style:{fontWeight:500,color:T.muted},children:[\": \",colourName(current.name)]}):null]}),/*#__PURE__*/_jsx(Swatches,{T:T,tp:full,value:vid,onPick:onVariant,max:12,big:true})]}):null,/*#__PURE__*/_jsxs(\"div\",{className:\"bgtk-qvacts\",children:[/*#__PURE__*/_jsx(\"button\",{type:\"button\",\"data-qv-first\":true,className:`bgtk-btn bgtk-primary${busy?\" bgtk-off\":\"\"}`,disabled:busy,onClick:()=>onEdit(full,vid,slug),children:busy?\"Opening\":\"Edit my design\"}),/*#__PURE__*/_jsxs(\"button\",{type:\"button\",className:`bgtk-btn bgtk-outline bgtk-save${isSaved?\" on\":\"\"}`,\"aria-pressed\":isSaved,onClick:()=>onSave(full,vid),children:[/*#__PURE__*/_jsx(Heart,{T:T,on:isSaved,size:18}),isSaved?\"Saved\":\"Save\"]})]}),/*#__PURE__*/_jsxs(\"ul\",{className:\"bgtk-qvnotes\",children:[/*#__PURE__*/_jsx(\"li\",{children:\"Your details from Make it yours are filled in for you.\"}),/*#__PURE__*/_jsx(\"li\",{children:\"Change any words, colours and pictures in the editor.\"}),/*#__PURE__*/_jsx(\"li\",{children:\"Every order gets a proof from our team before it prints.\"})]})]})]}),similar.length?/*#__PURE__*/_jsxs(\"section\",{className:\"bgtk-qvmore\",\"aria-label\":\"More templates like this\",children:[/*#__PURE__*/_jsx(\"h3\",{className:\"bgtk-qvh\",children:\"More templates like this\"}),/*#__PURE__*/_jsx(\"div\",{className:\"bgtk-grid\",role:\"list\",children:similar.map(s=>/*#__PURE__*/_jsx(TplCard,{T:T,tp:s,origin:origin,variantId:null,onVariant:()=>onPick(s),saved:savedIds.includes(s.id),onSave:()=>onSave(s,null),onOpen:()=>onPick(s)},s.id))})]}):detail===null?/*#__PURE__*/_jsx(\"section\",{className:\"bgtk-qvmore\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"div\",{className:\"bgtk-grid\",children:[0,1,2,3].map(i=>/*#__PURE__*/_jsx(\"div\",{className:\"bgtk-skel\",style:{aspectRatio:\"4 / 5\"}},i))})}):null]})]}),document.body);}// ------------------------------------------------------------------ styles\n/** The kit's styles; hosts put them in their own <style> and the portals carry a copy. */export function kitCss(T){return`\n.bgtk-card,.bgtk-qvwrap,.bgtk-toast{--bgtk-lift:translateY(-4px)}\n.bgtk-card *,.bgtk-qvwrap *,.bgtk-toast *{box-sizing:border-box}\n.bgtk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:20px;align-items:stretch}\n.bgtk-card{position:relative;min-width:0;display:flex;flex-direction:column;gap:12px;padding:10px 10px 18px;border:0;border-radius:${T.radius}px;background:${T.card};color:inherit;text-align:left;transition:transform 300ms cubic-bezier(0,0,.58,1)}\n@media (hover:hover){.bgtk-card:hover{transform:var(--bgtk-lift)}}\n.bgtk-card:focus-within{transform:var(--bgtk-lift)}\n.bgtk-stagewrap{position:relative}\n.bgtk-stage{position:relative;display:flex;align-items:center;justify-content:center;width:100%;padding:9%;border:0;margin:0;border-radius:16px;background:transparent;cursor:pointer;font:inherit;color:inherit;-webkit-appearance:none;appearance:none}\n.bgtk-stage img{display:block;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 10px 12px rgba(23,31,64,.16)) drop-shadow(0 1px 2px rgba(23,31,64,.14));user-select:none;-webkit-user-drag:none}\n.bgtk-noimg{color:${T.muted};font:500 13px/1.3 ${T.font}}\n.bgtk-cta{position:absolute;left:12px;right:12px;bottom:10px;padding:10px 0;border:0;display:flex;align-items:center;justify-content:center;border-radius:40px;background:${T.accent};color:#fff;font:500 15px/1.2 ${T.font};letter-spacing:-0.02em;cursor:pointer;opacity:0;transform:translateY(6px);transition:opacity 160ms ease-out, transform 200ms ease-out}\n@media (hover:hover){.bgtk-card:hover .bgtk-cta{opacity:1;transform:none}}\n.bgtk-cta:focus-visible{opacity:1;transform:none}\n.bgtk-heart{position:absolute;top:6px;right:6px;width:36px;height:36px;border-radius:999px;border:0;padding:0;background:${T.field};display:inline-flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 0 0 1px ${T.line};transition:transform 200ms ease-out, background 160ms ease-out}\n.bgtk-heart:hover{transform:translateY(-2px)}\n.bgtk-heart.on{background:${T.sky};box-shadow:none}\n.bgtk-heart.on svg{animation:bgtkPop 320ms cubic-bezier(.3,1.6,.5,1)}\n@keyframes bgtkPop{0%{transform:scale(.6)}100%{transform:scale(1)}}\n.bgtk-meta{display:grid;gap:8px;padding:0 6px;min-width:0;justify-items:start}\n.bgtk-name{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;padding:0;border:0;background:none;text-align:left;cursor:pointer;${T.cardType};color:${T.accent}}\n.bgtk-small{font:500 14px/1.4 ${T.font};letter-spacing:-0.02em;color:${T.muted}}\n.bgtk-sub{font:600 14px/1.2 ${T.font};letter-spacing:-0.02em;color:${T.accent}}\n.bgtk-sw{display:flex;flex-wrap:wrap;align-items:center;gap:4px;min-height:24px}\n.bgtk-dot{position:relative;width:24px;height:24px;padding:3px;border-radius:999px;border:1.5px solid transparent;background:none;cursor:pointer;transition:border-color 160ms ease-out}\n.bgtk-dot span{display:block;width:100%;height:100%;border-radius:999px;box-shadow:inset 0 0 0 1px rgba(23,31,64,.18)}\n.bgtk-dot:hover{border-color:${T.line}}\n.bgtk-dot[aria-checked=true]{border-color:${T.accent}}\n.bgtk-dot[data-name]:hover::after,.bgtk-dot[data-name]:focus-visible::after{content:attr(data-name);position:absolute;left:50%;bottom:calc(100% + 6px);transform:translateX(-50%);padding:4px 10px;border-radius:999px;background:${T.ink};color:#fff;font:500 12.5px/1.2 ${T.font};white-space:nowrap;pointer-events:none;z-index:3}\n.bgtk-sw.big{gap:6px}\n.bgtk-sw.big .bgtk-dot{width:34px;height:34px;padding:4px;border-width:2px}\n.bgtk-more{font:500 13px ${T.font};color:${T.muted};padding-left:2px}\n.bgtk-upload .bgtk-outline{display:flex;flex-direction:column;gap:6px;align-items:center;justify-content:center;border-radius:10px;border:2px dashed ${T.line};background:${T.sky};transition:border-color 200ms ease-out}\n@media (hover:hover){.bgtk-upload:hover .bgtk-outline{border-color:${T.accent}}}\n.bgtk-upl-t{font:600 13px/1.2 ${T.font};color:${T.accent};letter-spacing:-0.01em;text-align:center;padding:0 6px}\n.bgtk-skel{border-radius:${T.radius}px;background:${T.card};animation:bgtkPulse 900ms ease-in-out infinite alternate}\n.bgtk-fade{opacity:0;transition:opacity 280ms ease-out}\n.bgtk-fade.in{opacity:1}\n.bgtk-skelcard{pointer-events:none}\n.bgtk-skelcard .bgtk-stage{cursor:default}\n.bgtk-skelpiece{display:block;border-radius:6px;background:${T.tile};animation:bgtkPulse 900ms ease-in-out infinite alternate}\n.bgtk-skelname{display:grid;gap:0;width:100%;cursor:default}\n.bgtk-skelname i{display:block;height:0.9em;margin:0.2em 0;border-radius:6px;background:${T.tile};animation:bgtkPulse 900ms ease-in-out infinite alternate}\n.bgtk-skelname i + i{width:62%}\n.bgtk-skeldot{display:block;width:18px;height:18px;margin:3px;border-radius:999px;background:${T.tile};animation:bgtkPulse 900ms ease-in-out infinite alternate}\n.bgtk-skelline{display:block;width:48%;height:1.4em;border-radius:6px;background:linear-gradient(${T.tile},${T.tile}) 0 50%/100% 0.9em no-repeat;animation:bgtkPulse 900ms ease-in-out infinite alternate}\n@keyframes bgtkPulse{from{opacity:.55}to{opacity:1}}\n.bgtk-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:14px 28px;border-radius:40px;font:500 16px/1.4 ${T.font};letter-spacing:-0.02em;text-decoration:none;cursor:pointer;transition:opacity 300ms ease-out, background 160ms ease-out}\n.bgtk-btn:hover:not(:disabled){opacity:.8}\n.bgtk-sm{padding:9px 18px;font-size:15px}\n.bgtk-primary{background:${T.accent};color:#fff;border:0}\n.bgtk-outline{background:transparent;color:${T.accent};border:1px solid ${T.accent}}\n.bgtk-off{opacity:.55;cursor:progress}\n.bgtk-card button:focus-visible,.bgtk-qv button:focus-visible,.bgtk-qv iframe:focus-visible,.bgtk-toast button:focus-visible{outline:2px solid ${T.accent};outline-offset:2px}\n.bgtk-x{position:absolute;top:16px;right:16px;z-index:4;width:40px;height:40px;border-radius:999px;border:1px solid ${T.line};background:${T.field};display:inline-flex;align-items:center;justify-content:center;cursor:pointer}\n.bgtk-x.sm{position:static;width:32px;height:32px;flex:none}\n/* the guest prompt */\n.bgtk-toast{position:fixed;left:50%;bottom:24px;z-index:1070;display:flex;align-items:center;gap:14px;width:min(560px,calc(100% - 32px));padding:14px 14px 14px 16px;border-radius:20px;background:${T.canvas};box-shadow:0 12px 20px -12px rgba(23,31,64,.45),0 0 0 1px rgba(48,67,130,.1);font:500 14.5px/1.35 ${T.font};color:${T.muted};transform:translate(-50%,16px);opacity:0;transition:transform 260ms cubic-bezier(.22,1,.36,1),opacity 200ms ease-out}\n.bgtk-toast.on{transform:translate(-50%,0);opacity:1}\n.bgtk-toast strong{color:${T.accent};font-weight:600;font-size:15px}\n.bgtk-toast-ic{flex:none;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:999px;background:${T.accent}}\n.bgtk-toast .bgtk-btn{flex:none;margin-left:auto}\n.bgtk-toast-t{flex:1 1 auto}\n@media (max-width:599px){.bgtk-toast{flex-wrap:wrap;bottom:16px;gap:12px}.bgtk-toast .bgtk-btn{order:4;flex:1 1 100%}.bgtk-toast .bgtk-x{position:absolute;top:10px;right:10px}.bgtk-toast-t{flex:1 1 0;padding-right:36px}}\n/* the quick view */\n.bgtk-qvwrap{position:fixed;inset:0;z-index:1060;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(23,31,64,.45);font:500 16px/1.4 ${T.font};letter-spacing:-0.02em;color:${T.muted};animation:bgtkFade 200ms ease-out}\n@keyframes bgtkFade{from{opacity:0}to{opacity:1}}\n.bgtk-qv{position:relative;width:min(1120px,100%);max-height:calc(100dvh - 48px);overflow-y:auto;overscroll-behavior:contain;border-radius:28px;background:${T.canvas};padding:28px;display:grid;gap:40px;box-shadow:0 24px 40px -24px rgba(23,31,64,.5);animation:bgtkRise 280ms cubic-bezier(.22,1,.36,1)}\n@keyframes bgtkRise{from{transform:translateY(16px);opacity:.4}to{transform:none;opacity:1}}\n.bgtk-qvtop{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(300px,1fr);gap:36px;align-items:start}\n.bgtk-qvstage{display:grid;gap:16px;justify-items:center;padding:20px 0}\n.bgtk-qvload{position:absolute;inset:0;display:grid;justify-items:center;align-content:center;gap:12px;font-size:14px;font-weight:500;color:${T.muted};pointer-events:none}\n.bgtk-qvload .o{stroke-dasharray:352;stroke-dashoffset:352;animation:bgtkDrawO 1.8s cubic-bezier(.45,0,.2,1) infinite}\n.bgtk-qvload .l{opacity:.14;animation:bgtkBreathe 1.8s ease-in-out infinite}\n.bgtk-qvload .l2{animation-delay:.25s}\n@keyframes bgtkDrawO{0%{stroke-dashoffset:352;opacity:.9}55%{stroke-dashoffset:0;opacity:.9}100%{stroke-dashoffset:0;opacity:0}}\n@keyframes bgtkBreathe{0%,100%{opacity:.1}50%{opacity:.3}}\n@media (prefers-reduced-motion: reduce){.bgtk-qvload .o{animation:none;stroke-dashoffset:0}.bgtk-qvload .l{animation:none}}\n.bgtk-qvpiece{position:relative;width:100%;aspect-ratio:1 / 1;max-height:min(600px,calc(100dvh - 200px))}\n.bgtk-qvfaces{position:absolute;inset:0;display:grid;grid-template:minmax(0,1fr) / minmax(0,1fr);place-items:center;padding:12%;pointer-events:none;overflow:hidden;transition:opacity 300ms ease-out}\n.bgtk-qvfaces.gone{opacity:0;pointer-events:none}\n.bgtk-qvfaces img{grid-area:1 / 1;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 18px 20px rgba(23,31,64,.18)) drop-shadow(0 2px 3px rgba(23,31,64,.14));opacity:0;transform:perspective(900px) rotateY(-12deg) scale(.96);transition:opacity 420ms ease-out, transform 700ms cubic-bezier(.45,0,.25,1)}\n.bgtk-qvfaces img.on{opacity:1;transform:none}\n.bgtk-qvframe{position:absolute;inset:0;width:100%;height:100%;border:0;background:transparent;opacity:0;pointer-events:none;transition:opacity 360ms ease-out;color-scheme:normal}\n.bgtk-qvframe.on{opacity:1;pointer-events:auto}\n.bgtk-views{display:inline-flex;gap:4px;padding:4px;border-radius:999px;background:${T.field};box-shadow:0 0 0 1px ${T.line}}\n.bgtk-views button{min-width:84px;padding:9px 18px;border:0;border-radius:999px;background:transparent;color:${T.accent};font:500 15px/1.2 ${T.font};letter-spacing:-0.02em;cursor:pointer;transition:background 160ms ease-out,color 160ms ease-out}\n.bgtk-views button[aria-pressed=true]{background:${T.accent};color:#fff}\n.bgtk-modes{margin-top:8px}\n.bgtk-scenes{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin-top:10px}\n.bgtk-scenes button{padding:6px 12px;border:0;border-radius:999px;background:transparent;color:${T.muted};font:500 13px/1.2 ${T.font};box-shadow:0 0 0 1px ${T.line};cursor:pointer;transition:color 160ms ease-out,box-shadow 160ms ease-out}\n.bgtk-scenes button[aria-pressed=true]{color:${T.accent};box-shadow:0 0 0 1.5px ${T.accent}}\n.bgtk-alt{position:absolute;inset:8%;width:84%;height:84%;object-fit:contain;opacity:0;pointer-events:none;transition:opacity 220ms ease-out}\n@media (hover:hover){.bgtk-stage:hover .bgtk-alt,.bgtk-stage:focus-visible .bgtk-alt{opacity:1}.bgtk-stage:hover:has(.bgtk-alt) > img:not(.bgtk-alt){opacity:0}.bgtk-stage > img{transition:opacity 220ms ease-out}}\n@media (prefers-reduced-motion:reduce){.bgtk-alt{transition:none}}\n.bgtk-views button:disabled{opacity:.5;cursor:default}\n.bgtk-qvside{display:grid;gap:20px;align-content:start;padding-top:8px;padding-right:44px}\n.bgtk-qvname{margin:0;${T.titleType};color:${T.accent};text-wrap:balance}\n.bgtk-qvprice{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;font-variant-numeric:tabular-nums}\n.bgtk-qvprice strong{font:700 26px/1.2 ${T.font};letter-spacing:-0.02em;color:${T.accent}}\n.bgtk-qvprice span{font-size:15px}\n.bgtk-qvacts{display:grid;gap:10px}\n.bgtk-qvacts .bgtk-btn{width:100%}\n.bgtk-save.on{background:${T.sky};border-color:transparent}\n.bgtk-qvnotes{margin:0;padding:0;list-style:none;display:grid;gap:8px;font-size:14.5px}\n.bgtk-qvnotes li{position:relative;padding-left:22px}\n.bgtk-qvnotes li::before{content:\"\";position:absolute;left:4px;top:.55em;width:8px;height:8px;border-radius:999px;background:${T.accent};opacity:.35}\n.bgtk-qvmore{display:grid;gap:24px}\n.bgtk-qvh{margin:0;font:400 40px/1 ${T.headingFont};letter-spacing:-0.04em;color:${T.accent}}\n.bgtk-qvmore .bgtk-grid{grid-template-columns:repeat(4,minmax(0,1fr))}\n@media (max-width:899px){.bgtk-qvtop{grid-template-columns:minmax(0,1fr) minmax(260px,1fr);gap:24px}.bgtk-qvmore .bgtk-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}\n@media (max-width:699px){\n.bgtk-qvwrap{padding:0;align-items:stretch}\n.bgtk-qv{max-height:none;height:100dvh;border-radius:0;padding:16px 16px calc(24px + env(safe-area-inset-bottom));gap:32px}\n.bgtk-qvtop{grid-template-columns:minmax(0,1fr);gap:20px}\n.bgtk-qvstage{padding:12px;margin-top:44px}\n.bgtk-qvpiece{max-height:52dvh}\n.bgtk-qvside{padding-right:0;padding-top:0}\n.bgtk-x{top:10px;right:12px}\n.bgtk-qvh{font-size:32px}\n.bgtk-qvname{font-size:34px}\n.bgtk-qvmore .bgtk-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}\n}\n@media (max-width:599px){.bgtk-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.bgtk-card{padding:6px 6px 14px;gap:10px}.bgtk-meta{padding:0 4px}.bgtk-name{font-size:16px}.bgtk-small{font-size:13px}.bgtk-heart{width:32px;height:32px;top:4px;right:4px}.bgtk-cta{display:none}.bgtk-sw{gap:2px}.bgtk-dot{width:22px;height:22px;padding:3px}}\n@media (prefers-reduced-motion:reduce){.bgtk-card,.bgtk-cta,.bgtk-qvfaces img,.bgtk-toast,.bgtk-qv,.bgtk-qvwrap,.bgtk-fade,.bgtk-skelpiece,.bgtk-skelname i,.bgtk-skeldot,.bgtk-skelline{transition:none!important;animation:none!important}}\n`;}\nexport const __FramerMetadata__ = {\"exports\":{\"MINE_KEY\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"savedState\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"templatesListUrl\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"TplVariant\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"readMine\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fieldValuesOf\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"templatesPath\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"KitTheme\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PriceLine\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"TplCardProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"dismissSavePrompt\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ThumbImg\":{\"type\":\"reactComponent\",\"name\":\"ThumbImg\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"TplShot\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"loadPack\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"kitLs\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"pictureOf\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useSaved\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"bootSaved\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"QuickView\":{\"type\":\"reactComponent\",\"name\":\"QuickView\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"accountSessionOf\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Swatches\":{\"type\":\"reactComponent\",\"name\":\"Swatches\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"SavePrompt\":{\"type\":\"reactComponent\",\"name\":\"SavePrompt\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"kitCss\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"askForAccount\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"TplShape\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"colourName\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"valuesForShape\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"earlyFetchScript\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"smallOf\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"TplCard\":{\"type\":\"reactComponent\",\"name\":\"TplCard\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"Heart\":{\"type\":\"reactComponent\",\"name\":\"Heart\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"firstPage\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SkelCard\":{\"type\":\"reactComponent\",\"name\":\"SkelCard\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"TEMPLATE_PAGES\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Tpl\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"toggleSaved\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"altShotOf\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"heartPath\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"QuickViewProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"encodeFields\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"UploadCard\":{\"type\":\"reactComponent\",\"name\":\"UploadCard\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"TplField\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"productForPage\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"packPrice\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}