{"product_id":"personalised-baptism-keepsake-box-o6","title":"Personalised Baptism Keepsake Box — O6","description":"\u003cdiv class=\"o6x-root\" id=\"o6x-root\"\u003e\n\u003clink rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\"\u003e\n\u003clink rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin\u003e\n\u003clink href=\"https:\/\/fonts.googleapis.com\/css2?family=Great+Vibes\u0026amp;family=Cormorant+Garamond:ital,wght@0,500;0,600;1,500\u0026amp;family=Inter:wght@400;500;600;700\u0026amp;display=swap\" rel=\"stylesheet\"\u003e\n\u003cstyle\u003e\n.o6x-root{--o6x-red:#a42325;--o6x-red-dark:#821c1e;--o6x-cream:#faf6f1;--o6x-sand:#f0eae2;--o6x-ink:#2b2622;--o6x-muted:#6b5d4a;--o6x-hair:#e2d7c6;--o6x-gold:#c9a94f;--o6x-gold-deep:#a9832f;container-type:inline-size;font-family:'Inter',-apple-system,BlinkMacSystemFont,sans-serif;color:var(--o6x-ink);line-height:1.4;background:radial-gradient(60cqw 40cqh at 90% -10%,rgba(164,35,37,.10),transparent 60%),radial-gradient(50cqw 40cqh at -10% 110%,rgba(201,169,79,.18),transparent 60%),linear-gradient(160deg,#faf6f1,#f3ece0 60%,#efe2d0);border-radius:20px;padding:clamp(16px,5cqi,24px);margin:0 0 20px}\n.o6x-root *{box-sizing:border-box}\n.o6x-root img,.o6x-root svg{max-width:100%;display:block}\n.o6x-root button{font-family:inherit}\n.o6x-vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n.o6x-head{text-align:center;padding:0 2px clamp(10px,3cqi,16px)}\n.o6x-h1{font-family:'Cormorant Garamond',Georgia,serif;font-weight:600;font-size:clamp(1.2rem,5.5cqi,1.5rem);color:var(--o6x-ink);margin:0 0 4px}\n.o6x-sub{font-size:.82rem;color:var(--o6x-muted);margin:0}\n.o6x-layout{display:flex;flex-direction:column;gap:clamp(10px,3cqi,16px)}\n.o6x-mini{display:none;align-items:center;gap:10px;padding:8px 10px;border-radius:12px;background:rgba(255,255,255,.72);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.6);margin:0 0 10px}\n.o6x-kb .o6x-mini{display:flex}\n.o6x-mini-thumb{width:40px;height:40px;border-radius:9px;background:var(--o6x-sand) url('https:\/\/ae01.alicdn.com\/kf\/Scb53a96a00ed42b6ac97597dabcfcf3eh.jpg') center\/cover;flex:0 0 auto;box-shadow:0 2px 6px rgba(0,0,0,.18)}\n.o6x-mini-text{font-family:'Cormorant Garamond',Georgia,serif;font-weight:600;font-size:.92rem;color:var(--o6x-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.o6x-kb .o6x-hero,.o6x-kb .o6x-cap{display:none}\n.o6x-hero{position:relative;width:100%;aspect-ratio:1\/1;border-radius:16px;overflow:hidden;box-shadow:0 10px 26px rgba(107,74,47,.22);margin:0 0 8px;background:var(--o6x-sand)}\n.o6x-photo{position:absolute;inset:0;background:url('https:\/\/ae01.alicdn.com\/kf\/Scb53a96a00ed42b6ac97597dabcfcf3eh.jpg') center\/cover;transform-origin:62% 69%}\n.o6x-photo.o6x-zoomed{transform:scale(1.8)}\n.o6x-patch{position:absolute;left:46.5%;top:63.9%;width:31.5%;height:11.4%;background:linear-gradient(180deg,#f0e2c3 0%,#ecdcba 55%,#e7d5b0 100%);border-radius:5px;box-shadow:0 0 5px 3px #ecdcba}\n.o6x-empty-hint{position:absolute;left:46.5%;top:63.9%;width:31.5%;height:11.4%;display:none;align-items:center;justify-content:center;text-align:center;border:1.5px dashed rgba(139,106,69,.6);border-radius:5px;color:#8b6a45;font:600 clamp(8.5px,2.5cqi,11px)\/1.18 'Inter',sans-serif;padding:5%}\n.o6x-blank .o6x-empty-hint{display:flex}\n.o6x-pv-name{position:absolute;left:62.3%;top:63.9%;transform:translateX(-50%);font-family:'Great Vibes',cursive;color:#3a2a1a;white-space:nowrap;line-height:1;text-shadow:-1px -1px 0 rgba(255,233,182,.55),1px 1px 1.5px rgba(46,27,10,.6),0 2px 4px rgba(46,27,10,.28)}\n.o6x-pv-date{position:absolute;left:62.3%;top:70.1%;transform:translateX(-50%);font-family:'Cormorant Garamond',Georgia,serif;font-weight:600;color:#3a2a1a;white-space:nowrap;line-height:1;letter-spacing:.02em;text-shadow:-.6px -.6px 0 rgba(255,233,182,.5),.8px .8px 1px rgba(46,27,10,.55),0 1.5px 2.5px rgba(46,27,10,.22)}\n.o6x-blank .o6x-pv-name,.o6x-blank .o6x-pv-date{opacity:0}\n.o6x-zoom-btn{position:absolute;inset:0;width:100%;height:100%;padding:0;margin:0;border:0;background:transparent;cursor:zoom-in;-webkit-tap-highlight-color:transparent}\n.o6x-zoom-btn[aria-pressed=\"true\"]{cursor:zoom-out}\n.o6x-zoom-btn:focus-visible{outline:3px solid var(--o6x-gold);outline-offset:-3px}\n.o6x-zoom-badge{position:absolute;right:4%;bottom:4%;width:42px;height:42px;border-radius:50%;background:rgba(43,38,34,.72);color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 10px rgba(0,0,0,.25)}\n.o6x-zoom-badge svg{width:20px;height:20px}\n.o6x-zoom-btn[aria-pressed=\"true\"] .o6x-plus-v{display:none}\n.o6x-cap{font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:#8b6a45;margin:6px 0 0;text-align:center}\n.o6x-form-pane{display:flex;flex-direction:column;justify-content:center}\n.o6x-card{background:rgba(255,255,255,.64);backdrop-filter:blur(16px) saturate(160%);-webkit-backdrop-filter:blur(16px) saturate(160%);border:1px solid rgba(255,255,255,.75);border-radius:18px;padding:clamp(14px,4cqi,20px);box-shadow:0 8px 30px rgba(107,74,47,.16)}\n.o6x-fieldset{border:0;padding:0;margin:0;min-width:0}\n.o6x-price-row{display:flex;align-items:baseline;flex-wrap:wrap;gap:8px;margin:0 0 12px}\n.o6x-price-now{font-family:'Cormorant Garamond',Georgia,serif;font-weight:600;font-size:clamp(1.3rem,6cqi,1.6rem);color:var(--o6x-red)}\n.o6x-field-label{display:flex;justify-content:space-between;align-items:baseline;margin:0 0 6px}\n.o6x-field-label label{font-size:.7rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--o6x-muted)}\n.o6x-counter{font-size:.68rem;color:#8b7a5f;font-variant-numeric:tabular-nums}\n.o6x-counter.o6x-max{color:var(--o6x-red);font-weight:700}\n.o6x-root input[type=text],.o6x-root textarea{width:100%;min-height:48px;font-size:16px;padding:12px 14px;border:1px solid #d8cbb8;border-radius:10px;background:#fff;color:var(--o6x-ink);font-family:'Inter',sans-serif;margin:0 0 14px}\n.o6x-root textarea{min-height:56px;resize:none;line-height:1.35;padding-top:10px}\n.o6x-root input[type=text]:focus-visible,.o6x-root textarea:focus-visible{outline:2px solid var(--o6x-red);outline-offset:1px;border-color:var(--o6x-red)}\n.o6x-root input[type=text].o6x-err{border-color:var(--o6x-red);background:#fdf0ef}\n.o6x-style-fieldset{border:0;padding:0;margin:0 0 14px}\n.o6x-style-legend{font-size:.7rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--o6x-muted);padding:0;margin:0 0 8px}\n.o6x-chips{display:flex;gap:8px;flex-wrap:wrap}\n.o6x-chip{position:relative;display:flex}\n.o6x-chip input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}\n.o6x-chip-face{min-height:48px;display:flex;align-items:center;padding:0 16px;border-radius:999px;border:1.5px solid #d8cbb8;background:#fff;font-size:.86rem;color:var(--o6x-ink)}\n.o6x-chip input:checked+.o6x-chip-face{border-color:var(--o6x-red);background:var(--o6x-red);color:#fff}\n.o6x-chip input:focus-visible+.o6x-chip-face{outline:2px solid var(--o6x-gold-deep);outline-offset:2px}\n.o6x-date-chips{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 14px}\n.o6x-date-chip{min-height:48px;padding:0 14px;border-radius:999px;border:1.5px solid #d8cbb8;background:#fff;font:600 .8rem\/1 'Inter',sans-serif;color:var(--o6x-ink);cursor:pointer}\n.o6x-date-chip:hover{border-color:var(--o6x-gold-deep)}\n.o6x-date-chip:focus-visible{outline:2px solid var(--o6x-red);outline-offset:2px}\n.o6x-gift-wrap{margin:0 0 14px}\n.o6x-gift-toggle{min-height:44px;padding:2px 4px;border:0;background:transparent;color:var(--o6x-gold-deep);font:700 .78rem\/1 'Inter',sans-serif;letter-spacing:.03em;cursor:pointer;display:inline-flex;align-items:center;gap:6px}\n.o6x-gift-toggle:focus-visible{outline:2px solid var(--o6x-red);outline-offset:2px;border-radius:4px}\n.o6x-gift-panel{margin-top:8px}\n.o6x-gift-panel[hidden]{display:none}\n.o6x-trust{font-size:.78rem;color:var(--o6x-muted);margin:2px 0 12px}\n.o6x-ready{font-size:.84rem;font-weight:600;color:var(--o6x-ink);margin:0;padding:10px 12px;border-radius:10px;background:rgba(240,234,226,.7);border:1px solid var(--o6x-hair)}\n.o6x-ready.o6x-ready-on{background:rgba(201,169,79,.16);border-color:var(--o6x-gold);color:#5c4a1e}\n.o6x-error{margin:8px 0 0;padding:8px 12px;border-radius:10px;background:#fdf0ef;border:1px solid var(--o6x-red);color:var(--o6x-red-dark);font-size:.8rem;font-weight:600}\n.o6x-error[hidden]{display:none}\n.o6x-cta{position:sticky;bottom:0;margin:16px 0 0;background:rgba(43,38,34,.97);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-radius:14px;box-shadow:0 10px 26px rgba(0,0,0,.24);padding:10px 14px;display:flex;align-items:center;justify-content:space-between;gap:12px;z-index:5}\n.o6x-cta-info{font-family:'Cormorant Garamond',Georgia,serif;color:#f0e6d6;font-size:.8rem;line-height:1.15}\n.o6x-cta-info strong{display:block;font-size:1.25rem;color:#fff}\n.o6x-cta-btn{flex:0 0 auto;min-height:48px;padding:0 20px;border:none;border-radius:12px;background:var(--o6x-red);color:#fff;font:700 .88rem\/1 'Inter',sans-serif;letter-spacing:.01em;cursor:pointer}\n.o6x-cta-btn:hover{background:var(--o6x-red-dark)}\n.o6x-cta-btn:focus-visible{outline:2px solid #fff;outline-offset:2px}\n@media (prefers-reduced-motion:no-preference){\n  .o6x-photo{transition:transform .3s ease}\n  .o6x-root input[type=text],.o6x-root textarea{transition:border-color .12s ease}\n  .o6x-chip-face{transition:background .12s ease,border-color .12s ease}\n  .o6x-date-chip{transition:border-color .12s ease}\n  .o6x-ready{transition:background .2s ease,border-color .2s ease}\n  .o6x-cta-btn{transition:transform .08s ease,background .12s ease}\n  .o6x-cta-btn:active{transform:scale(.97)}\n}\n@container (min-width:560px){\n  .o6x-layout{flex-direction:row;align-items:center}\n  .o6x-hero-pane,.o6x-form-pane{flex:1 1 0;min-width:0}\n  .o6x-card{padding:clamp(18px,3cqi,26px)}\n  .o6x-h1{font-size:1.5rem}\n}\n@container (max-width:559.98px){\n  .o6x-kb .o6x-mini{display:flex}\n}\n\u003c\/style\u003e\n\u003cheader class=\"o6x-head\"\u003e\n  \u003ch1 class=\"o6x-h1\"\u003eThe Personalised Baptism Keepsake Box\u003c\/h1\u003e\n  \u003cp class=\"o6x-sub\"\u003eThe box their wristband, candle stub and first curl live in for years — solid pine, engraved beside the wreath.\u003c\/p\u003e\n\u003c\/header\u003e\n\u003cdiv class=\"o6x-layout\"\u003e\n  \u003csection class=\"o6x-hero-pane\" aria-label=\"Live engraving preview\"\u003e\n    \u003cdiv class=\"o6x-mini\" id=\"o6x-mini\" aria-hidden=\"true\"\u003e\n      \u003cspan class=\"o6x-mini-thumb\"\u003e\u003c\/span\u003e\n      \u003cspan class=\"o6x-mini-text\" id=\"o6x-miniText\"\u003eStart typing to preview your engraving\u003c\/span\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"o6x-hero\" id=\"o6x-hero\"\u003e\n      \u003cdiv class=\"o6x-photo\" id=\"o6x-photo\" aria-hidden=\"true\"\u003e\n        \u003cdiv class=\"o6x-patch\"\u003e\u003c\/div\u003e\n        \u003cdiv class=\"o6x-empty-hint\"\u003eType a name to see it engraved\u003c\/div\u003e\n        \u003cspan class=\"o6x-pv-name\" id=\"o6x-pvName\"\u003e\u003c\/span\u003e\n        \u003cspan class=\"o6x-pv-date\" id=\"o6x-pvDate\"\u003e\u003c\/span\u003e\n      \u003c\/div\u003e\n      \u003cbutton type=\"button\" class=\"o6x-zoom-btn\" id=\"o6x-zoomBtn\" aria-pressed=\"false\" aria-label=\"Zoom into the engraving\"\u003e\n        \u003cspan class=\"o6x-zoom-badge\"\u003e\n          \u003csvg viewbox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"\u003e\n            \u003ccircle cx=\"11\" cy=\"11\" r=\"6.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\u003e\u003c\/circle\u003e\n            \u003cline x1=\"16\" y1=\"16\" x2=\"21\" y2=\"21\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\u003e\u003c\/line\u003e\n            \u003cline class=\"o6x-plus-v\" x1=\"11\" y1=\"8\" x2=\"11\" y2=\"14\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\"\u003e\u003c\/line\u003e\n            \u003cline x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\"\u003e\u003c\/line\u003e\n          \u003c\/svg\u003e\n        \u003c\/span\u003e\n      \u003c\/button\u003e\n    \u003c\/div\u003e\n    \u003cp class=\"o6x-cap\"\u003eLive preview — engraved keepsake box · tap photo to zoom\u003c\/p\u003e\n  \u003c\/section\u003e\n  \u003csection class=\"o6x-form-pane\" aria-label=\"Personalise your box\"\u003e\n    \u003cdiv class=\"o6x-card\"\u003e\n      \u003cfieldset class=\"o6x-fieldset\"\u003e\n        \u003clegend class=\"o6x-vh\"\u003ePersonalise this box\u003c\/legend\u003e\n        \u003cdiv class=\"o6x-price-row\"\u003e\u003cspan class=\"o6x-price-now\"\u003e£48\u003c\/span\u003e\u003c\/div\u003e\n\n        \u003cdiv class=\"o6x-field-label\"\u003e\n          \u003clabel for=\"o6x-name\"\u003eChild's name\u003c\/label\u003e\n          \u003cspan class=\"o6x-counter\" id=\"o6x-cc1\"\u003e0\/18\u003c\/span\u003e\n        \u003c\/div\u003e\n        \u003cinput id=\"o6x-name\" type=\"text\" maxlength=\"18\" placeholder=\"e.g. Olivia\" autocomplete=\"off\" inputmode=\"text\" aria-describedby=\"o6x-cc1 o6x-trust\"\u003e\n\n        \u003cfieldset class=\"o6x-style-fieldset\"\u003e\n          \u003clegend class=\"o6x-style-legend\"\u003eEngraving style\u003c\/legend\u003e\n          \u003cdiv class=\"o6x-chips\"\u003e\n            \u003clabel class=\"o6x-chip\"\u003e\n              \u003cinput type=\"radio\" name=\"o6x-style\" value=\"script\" checked\u003e\n              \u003cspan class=\"o6x-chip-face\" style=\"font-family:'Great Vibes',cursive;font-size:1.05rem\"\u003eScript\u003c\/span\u003e\n            \u003c\/label\u003e\n            \u003clabel class=\"o6x-chip\"\u003e\n              \u003cinput type=\"radio\" name=\"o6x-style\" value=\"classic\"\u003e\n              \u003cspan class=\"o6x-chip-face\" style=\"font-family:'Cormorant Garamond',Georgia,serif;font-weight:600\"\u003eClassic\u003c\/span\u003e\n            \u003c\/label\u003e\n            \u003clabel class=\"o6x-chip\"\u003e\n              \u003cinput type=\"radio\" name=\"o6x-style\" value=\"modern\"\u003e\n              \u003cspan class=\"o6x-chip-face\" style=\"font-family:'Inter',sans-serif;letter-spacing:.04em;font-weight:600\"\u003eModern\u003c\/span\u003e\n            \u003c\/label\u003e\n          \u003c\/div\u003e\n        \u003c\/fieldset\u003e\n\n        \u003cdiv class=\"o6x-field-label\"\u003e\n          \u003clabel for=\"o6x-date\"\u003eBaptism date\u003c\/label\u003e\n          \u003cspan class=\"o6x-counter\" id=\"o6x-cc2\"\u003e0\/24\u003c\/span\u003e\n        \u003c\/div\u003e\n        \u003cinput id=\"o6x-date\" type=\"text\" maxlength=\"24\" placeholder=\"e.g. 14 September 2026\" autocomplete=\"off\" inputmode=\"text\" aria-describedby=\"o6x-cc2 o6x-trust\"\u003e\n        \u003cdiv class=\"o6x-date-chips\" role=\"group\" aria-label=\"Quick date formats\"\u003e\n          \u003cbutton type=\"button\" class=\"o6x-date-chip\" data-date=\"14 September 2026\"\u003e14 September 2026\u003c\/button\u003e\n          \u003cbutton type=\"button\" class=\"o6x-date-chip\" data-date=\"14 · 09 · 2026\"\u003e14 · 09 · 2026\u003c\/button\u003e\n          \u003cbutton type=\"button\" class=\"o6x-date-chip\" data-date=\"14.09.2026\"\u003e14.09.2026\u003c\/button\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"o6x-gift-wrap\"\u003e\n          \u003cbutton type=\"button\" class=\"o6x-gift-toggle\" id=\"o6x-giftToggle\" aria-expanded=\"false\" aria-controls=\"o6x-giftPanel\"\u003e+ Add a gift note (optional)\u003c\/button\u003e\n          \u003cdiv class=\"o6x-gift-panel\" id=\"o6x-giftPanel\" hidden\u003e\n            \u003cdiv class=\"o6x-field-label\"\u003e\n              \u003clabel for=\"o6x-gift\"\u003eGift note\u003c\/label\u003e\n              \u003cspan class=\"o6x-counter\" id=\"o6x-giftCounter\"\u003e0\/120\u003c\/span\u003e\n            \u003c\/div\u003e\n            \u003ctextarea id=\"o6x-gift\" maxlength=\"120\" rows=\"2\" placeholder=\"A short note for the gift card (optional)\" aria-describedby=\"o6x-giftCounter\"\u003e\u003c\/textarea\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n\n        \u003cp class=\"o6x-trust\" id=\"o6x-trust\"\u003eWe email you a proof before anything is engraved. · EU dispatch — typically 4–8 working days.\u003c\/p\u003e\n\n        \u003cp class=\"o6x-ready\" id=\"o6x-ready\" aria-live=\"polite\" aria-atomic=\"true\"\u003eAdd a name and date to personalise the box.\u003c\/p\u003e\n        \u003cp class=\"o6x-error\" id=\"o6x-error\" role=\"alert\" hidden\u003e\u003c\/p\u003e\n      \u003c\/fieldset\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"o6x-cta\"\u003e\n  \u003cspan class=\"o6x-cta-info\"\u003ePersonalised box\u003cstrong\u003e£48\u003c\/strong\u003e\u003c\/span\u003e\n  \u003cbutton type=\"button\" class=\"o6x-cta-btn\" id=\"o6x-add\"\u003e£48 · Add the box\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  function init(){\n    var root=document.getElementById('o6x-root');\n    if(!root) return;\n    var hero=document.getElementById('o6x-hero'),\n        photo=document.getElementById('o6x-photo'),\n        zoomBtn=document.getElementById('o6x-zoomBtn'),\n        pvName=document.getElementById('o6x-pvName'),\n        pvDate=document.getElementById('o6x-pvDate'),\n        miniText=document.getElementById('o6x-miniText'),\n        N=document.getElementById('o6x-name'),\n        D=document.getElementById('o6x-date'),\n        cc1=document.getElementById('o6x-cc1'),\n        cc2=document.getElementById('o6x-cc2'),\n        styleRadios=root.querySelectorAll('input[name=\"o6x-style\"]'),\n        dateChips=root.querySelectorAll('.o6x-date-chip'),\n        giftToggle=document.getElementById('o6x-giftToggle'),\n        giftPanel=document.getElementById('o6x-giftPanel'),\n        giftInput=document.getElementById('o6x-gift'),\n        giftCounter=document.getElementById('o6x-giftCounter'),\n        readyRow=document.getElementById('o6x-ready'),\n        errorEl=document.getElementById('o6x-error'),\n        addBtn=document.getElementById('o6x-add');\n    if(!hero||!photo||!N||!D||!pvName||!pvDate||!readyRow) return;\n\n    var STYLES={\n      script:{family:\"'Great Vibes',cursive\",weight:400,spacing:'0',sizeMul:1,label:'Script'},\n      classic:{family:\"'Cormorant Garamond',Georgia,serif\",weight:600,spacing:'.01em',sizeMul:.82,label:'Classic'},\n      modern:{family:\"'Inter',-apple-system,sans-serif\",weight:700,spacing:'.04em',sizeMul:.68,label:'Modern'}\n    };\n    var DATE_FAMILY=\"'Cormorant Garamond',Georgia,serif\";\n\n    function currentStyleKey(){\n      for(var i=0;i\u003cstyleRadios.length;i++){ if(styleRadios[i].checked) return styleRadios[i].value; }\n      return 'script';\n    }\n\n    function setP(f,k,v){\n      var el=f.querySelector('input[data-af=\"'+k+'\"]');\n      if(!v){ if(el) el.remove(); return; }\n      if(!el){ el=document.createElement('input'); el.type='hidden'; el.name='properties['+k+']'; el.setAttribute('data-af',k); f.appendChild(el); }\n      el.value=v;\n    }\n    function inject(){\n      var forms=document.querySelectorAll('form[action*=\"\/cart\/add\"]');\n      var st=STYLES[currentStyleKey()]||STYLES.script;\n      for(var i=0;i\u003cforms.length;i++){\n        setP(forms[i],'Engraved name',N.value.trim());\n        setP(forms[i],'Baptism date',D.value.trim());\n        setP(forms[i],'Engraving style',st.label);\n        setP(forms[i],'Gift note',giftInput?giftInput.value.trim():'');\n      }\n    }\n\n    function render(){\n      var nameVal=N.value.trim(), dateVal=D.value.trim();\n      var st=STYLES[currentStyleKey()]||STYLES.script;\n      var blank=nameVal.length===0;\n      root.classList.toggle('o6x-blank', blank);\n\n      pvName.textContent=nameVal;\n      pvDate.textContent=dateVal;\n      pvName.style.fontFamily=st.family;\n      pvName.style.fontWeight=String(st.weight);\n      pvName.style.letterSpacing=st.spacing;\n      pvDate.style.fontFamily=(st.family===\"'Great Vibes',cursive\")?DATE_FAMILY:st.family;\n      pvDate.style.letterSpacing=(st.spacing==='0')?'.02em':st.spacing;\n\n      var w=hero.clientWidth||340;\n      var ns=nameVal.length\u003e14?.55:nameVal.length\u003e10?.72:1;\n      var ds=dateVal.length\u003e18?.8:1;\n      pvName.style.fontSize=(w*.064*ns*st.sizeMul)+'px';\n      pvDate.style.fontSize=(w*.028*ds*st.sizeMul)+'px';\n\n      if(cc1){ cc1.textContent=N.value.length+'\/18'; cc1.classList.toggle('o6x-max', N.value.length\u003e=18); }\n      if(cc2){ cc2.textContent=D.value.length+'\/24'; cc2.classList.toggle('o6x-max', D.value.length\u003e=24); }\n\n      var readyText;\n      if(nameVal \u0026\u0026 dateVal){ readyText=\"✓ Ready — we'll email your proof before engraving\"; readyRow.classList.add('o6x-ready-on'); }\n      else if(nameVal){ readyText='Add a baptism date to finish personalising.'; readyRow.classList.remove('o6x-ready-on'); }\n      else if(dateVal){ readyText=\"Add the child's name to finish personalising.\"; readyRow.classList.remove('o6x-ready-on'); }\n      else { readyText='Add a name and date to personalise the box.'; readyRow.classList.remove('o6x-ready-on'); }\n      readyRow.textContent=readyText;\n\n      if(miniText) miniText.textContent=(nameVal||dateVal)?(nameVal+(nameVal\u0026\u0026dateVal?' · ':'')+dateVal):'Start typing to preview your engraving';\n\n      if(giftCounter \u0026\u0026 giftInput){ giftCounter.textContent=giftInput.value.length+'\/120'; giftCounter.classList.toggle('o6x-max', giftInput.value.length\u003e=120); }\n\n      if(errorEl \u0026\u0026 !errorEl.hidden) errorEl.hidden=true;\n\n      inject();\n    }\n\n    function setCompact(on){ root.classList.toggle('o6x-kb', on); }\n    [N,D].forEach(function(f){\n      f.addEventListener('focus', function(){ setCompact(true); });\n      f.addEventListener('blur', function(){ setTimeout(function(){ if(document.activeElement!==N \u0026\u0026 document.activeElement!==D) setCompact(false); }, 60); });\n    });\n\n    N.addEventListener('input', render);\n    D.addEventListener('input', render);\n    for(var i=0;i\u003cstyleRadios.length;i++){ styleRadios[i].addEventListener('change', render); }\n    for(var j=0;j\u003cdateChips.length;j++){\n      dateChips[j].addEventListener('click', function(e){\n        var val=e.currentTarget.getAttribute('data-date')||'';\n        D.value=val;\n        render();\n        D.focus();\n      });\n    }\n    if(giftToggle \u0026\u0026 giftPanel){\n      giftToggle.addEventListener('click', function(){\n        var expanded=giftToggle.getAttribute('aria-expanded')==='true';\n        giftToggle.setAttribute('aria-expanded', String(!expanded));\n        if(expanded){ giftPanel.setAttribute('hidden',''); } else { giftPanel.removeAttribute('hidden'); if(giftInput) giftInput.focus(); }\n      });\n    }\n    if(giftInput){ giftInput.addEventListener('input', render); }\n    if(zoomBtn \u0026\u0026 photo){\n      zoomBtn.addEventListener('click', function(){\n        var on=zoomBtn.getAttribute('aria-pressed')!=='true';\n        zoomBtn.setAttribute('aria-pressed', String(on));\n        photo.classList.toggle('o6x-zoomed', on);\n      });\n    }\n    window.addEventListener('resize', render);\n    document.addEventListener('submit', inject, true);\n    document.addEventListener('click', inject, true);\n    setInterval(inject, 1500);\n\n    if(addBtn){\n      addBtn.addEventListener('click', function(){\n        var nameOk=N.value.trim().length\u003e0, dateOk=D.value.trim().length\u003e0;\n        if(!nameOk||!dateOk){\n          var target=!nameOk?N:D;\n          target.classList.add('o6x-err');\n          target.focus();\n          setTimeout(function(){ target.classList.remove('o6x-err'); }, 1200);\n          if(errorEl){ errorEl.textContent=!nameOk?\"Please add the child's name to continue.\":'Please add the baptism date to continue.'; errorEl.hidden=false; }\n          return;\n        }\n        if(errorEl) errorEl.hidden=true;\n        inject();\n        var form=document.querySelector('form[action*=\"\/cart\/add\"]');\n        if(form){ if(typeof form.requestSubmit==='function') form.requestSubmit(); else form.submit(); }\n        else { var reduce=window.matchMedia \u0026\u0026 window.matchMedia('(prefers-reduced-motion: reduce)').matches; window.scrollTo({top:0,left:0,behavior:reduce?'auto':'smooth'}); }\n      });\n    }\n\n    render();\n  }\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded', init); else init();\n})();\n\u003c\/script\u003e\n\u003c\/div\u003e\n","brand":"Aurea Faith","offers":[{"title":"Default Title","offer_id":58514871714127,"sku":null,"price":48.0,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1000\/9175\/6879\/files\/Scb53a96a00ed42b6ac97597dabcfcf3eh_f6252658-e83f-4829-a008-59cece7ad865.webp?v=1787136313","url":"https:\/\/www.aureafaith.com\/products\/personalised-baptism-keepsake-box-o6","provider":"Aurea Faith","version":"1.0","type":"link"}