{"product_id":"keytuck-the-original-key-fob-cover","title":"Keytuck – The Original Key Fob Cover","description":"\u003cstyle\u003e\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Fredoka:wght@600;700\u0026family=Poppins:wght@400;500;600\u0026display=swap');\n.kt-page{font-family:'Poppins',Helvetica,Arial,sans-serif;color:#2B2723;line-height:1.5;max-width:960px;margin:0 auto;}\n.kt-page h1,.kt-page h2,.kt-page h3,.kt-page .kt-display{font-family:'Fredoka',Helvetica,Arial,sans-serif;}\n.kt-page a{text-decoration:none;}\n.kt-page *{box-sizing:border-box;}\n.kt-swatch{cursor:pointer;transition:transform .15s ease;}\n.kt-swatch:hover{transform:translateY(-2px);}\n\u003c\/style\u003e\n\u003cdiv class=\"kt-page\"\u003e\n\u003c!-- Announcement strip --\u003e\n\u003cdiv style=\"text-align: center; background: #2B2723; color: #faf3ea; font-size: 12px; letter-spacing: 1px; padding: 9px 16px; border-radius: 999px; margin-bottom: 24px; font-weight: 600;\"\u003eNEW — KEY TUCK IN 6 COLOURS\u003c\/div\u003e\n\u003c!-- HERO --\u003e\n\u003cdiv style=\"border: 3px solid #2B2723; border-radius: 24px; padding: 44px 24px 40px; margin-bottom: 22px; text-align: center; background: #F6C9C6;\"\u003e\n\u003ch1 class=\"kt-display\" style=\"font-size: 46px; line-height: 1.05; font-weight: bold; text-transform: uppercase; margin: 0 0 14px; color: #2b2723;\"\u003eTuck your key.\u003c\/h1\u003e\n\u003cp style=\"font-size: 17px; font-weight: 500; color: #2b2723; margin: 0 0 26px;\"\u003eSturdy. Never break a fob key again.\u003c\/p\u003e\n\u003ca href=\"#kt-3d\" style=\"display: inline-flex; align-items: center; gap: 8px; background: #FAF3EA; color: #2b2723; font-family: 'Fredoka',sans-serif; font-weight: bold; font-size: 15px; padding: 13px 24px; border-radius: 999px; border: 3px solid #2B2723; box-shadow: 4px 4px 0 #2B2723;\"\u003e See it in 3D \u003c\/a\u003e\n\u003c\/div\u003e\n\u003c!-- 3D VIEWER --\u003e\n\u003cdiv id=\"kt-3d\" style=\"border: 3px solid #2B2723; border-radius: 24px; padding: 20px 20px 26px; margin-bottom: 22px; background: #FAF6F0;\"\u003e\n\u003cdiv slot=\"progress-bar\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cp style=\"text-align: center; font-size: 12px; color: #7a7266; margin: 6px 0 16px;\"\u003eDrag to spin. Tap a colour — it updates your selection too.\u003c\/p\u003e\n\u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 22px; justify-content: center;\"\u003e\n\u003cbutton type=\"button\" class=\"kt-swatch\" style=\"border: none; background: none; padding: 0; text-align: center; width: 82px;\"\u003e \u003cspan style=\"display: block; width: 64px; height: 64px; border-radius: 50%; background: #bfb285; border: 3px solid #2B2723; margin: 0 auto 8px;\"\u003e\u003c\/span\u003e \u003cspan style=\"font-size: 12px; color: #2b2723; font-weight: 600;\"\u003eKhaki\u003c\/span\u003e \u003c\/button\u003e \u003cbutton type=\"button\" class=\"kt-swatch\" style=\"border: none; background: none; padding: 0; text-align: center; width: 82px;\"\u003e \u003cspan style=\"display: block; width: 64px; height: 64px; border-radius: 50%; background: #dea4b9; border: 3px solid #2B2723; margin: 0 auto 8px;\"\u003e\u003c\/span\u003e \u003cspan style=\"font-size: 12px; color: #2b2723; font-weight: 600;\"\u003eDusty Rose\u003c\/span\u003e \u003c\/button\u003e \u003cbutton type=\"button\" class=\"kt-swatch\" style=\"border: none; background: none; padding: 0; text-align: center; width: 82px;\"\u003e \u003cspan style=\"display: block; width: 64px; height: 64px; border-radius: 50%; background: #cee488; border: 3px solid #2B2723; margin: 0 auto 8px;\"\u003e\u003c\/span\u003e \u003cspan style=\"font-size: 12px; color: #2b2723; font-weight: 600;\"\u003ePistachio\u003c\/span\u003e \u003c\/button\u003e \u003cbutton type=\"button\" class=\"kt-swatch\" style=\"border: none; background: none; padding: 0; text-align: center; width: 82px;\"\u003e \u003cspan style=\"display: block; width: 64px; height: 64px; border-radius: 50%; background: #88cdf1; border: 3px solid #2B2723; margin: 0 auto 8px;\"\u003e\u003c\/span\u003e \u003cspan style=\"font-size: 12px; color: #2b2723; font-weight: 600;\"\u003eSky Blue\u003c\/span\u003e \u003c\/button\u003e \u003cbutton type=\"button\" class=\"kt-swatch\" style=\"border: none; background: none; padding: 0; text-align: center; width: 82px;\"\u003e \u003cspan style=\"display: block; width: 64px; height: 64px; border-radius: 50%; background: #363e48; border: 3px solid #2B2723; margin: 0 auto 8px;\"\u003e\u003c\/span\u003e \u003cspan style=\"font-size: 12px; color: #2b2723; font-weight: 600;\"\u003eSlate\u003c\/span\u003e \u003c\/button\u003e \u003cbutton type=\"button\" class=\"kt-swatch\" style=\"border: none; background: none; padding: 0; text-align: center; width: 82px;\"\u003e \u003cspan style=\"display: block; width: 64px; height: 64px; border-radius: 50%; background: #aa3e6b; border: 3px solid #2B2723; margin: 0 auto 8px;\"\u003e\u003c\/span\u003e \u003cspan style=\"font-size: 12px; color: #2b2723; font-weight: 600;\"\u003eBerry\u003c\/span\u003e \u003c\/button\u003e\n\u003c\/div\u003e\n\u003cp style=\"text-align: center; font-size: 11px; color: #9a9187; margin: 14px 0 0;\"\u003ePistachio uses a colour-matched preview until its own 3D file is ready.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- STRATA PAIN POINT --\u003e\n\u003cdiv style=\"border: 3px solid #2B2723; border-radius: 24px; padding: 30px 26px; margin-bottom: 22px; text-align: center; background: #BDD2DE;\"\u003e\n\u003cp class=\"kt-display\" style=\"font-size: 23px; font-weight: bold; color: #2b2723; margin: 0; line-height: 1.25;\"\u003eNever pay strata a replacement fee for a broken key again.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- FEATURE CHIPS --\u003e\n\u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; margin: 34px 0 30px;\"\u003e\n\u003cdiv style=\"border: 2.5px solid #2B2723; border-radius: 14px; padding: 14px 18px; background: #F6C9C6; box-shadow: 3px 3px 0 #2B2723; display: flex; align-items: center; gap: 8px;\"\u003e\n\u003csvg width=\"20\" height=\"20\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"#2B2723\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003cpath d=\"M12 2 L20 5.5 V11 C20 16 16.5 20 12 22 C7.5 20 4 16 4 11 V5.5 Z\"\u003e\u003c\/path\u003e\u003cpath d=\"M9 12 L11 14 L15 9\"\u003e\u003c\/path\u003e\u003c\/svg\u003e \u003cspan style=\"font-size: 13.5px; font-weight: 600; color: #2b2723;\"\u003eCushions every drop\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"border: 2.5px solid #2B2723; border-radius: 14px; padding: 14px 18px; background: #C7D9BA; box-shadow: 3px 3px 0 #2B2723; display: flex; align-items: center; gap: 8px;\"\u003e\n\u003csvg width=\"20\" height=\"20\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"#2B2723\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003ccircle cx=\"8\" cy=\"8\" r=\"4\"\u003e\u003c\/circle\u003e\u003cpath d=\"M11 11 L21 21 M17 17 L20 14 M14.5 19.5 L17 17\"\u003e\u003c\/path\u003e\u003c\/svg\u003e \u003cspan style=\"font-size: 13.5px; font-weight: 600; color: #2b2723;\"\u003eFits your fob\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"border: 2.5px solid #2B2723; border-radius: 14px; padding: 14px 18px; background: #EFDFBE; box-shadow: 3px 3px 0 #2B2723; display: flex; align-items: center; gap: 8px;\"\u003e\n\u003csvg width=\"20\" height=\"20\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"#2B2723\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003ccircle cx=\"12\" cy=\"12\" r=\"9\"\u003e\u003c\/circle\u003e\u003ccircle cx=\"9\" cy=\"10\" r=\"1\" fill=\"#2B2723\" stroke=\"none\"\u003e\u003c\/circle\u003e\u003ccircle cx=\"15\" cy=\"10\" r=\"1\" fill=\"#2B2723\" stroke=\"none\"\u003e\u003c\/circle\u003e\u003ccircle cx=\"12\" cy=\"15\" r=\"1\" fill=\"#2B2723\" stroke=\"none\"\u003e\u003c\/circle\u003e\u003c\/svg\u003e \u003cspan style=\"font-size: 13.5px; font-weight: 600; color: #2b2723;\"\u003e6 colourways\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"border: 2.5px solid #2B2723; border-radius: 14px; padding: 14px 18px; background: #BDD2DE; box-shadow: 3px 3px 0 #2B2723; display: flex; align-items: center; gap: 8px;\"\u003e\n\u003csvg width=\"20\" height=\"20\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"#2B2723\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003cpath d=\"M4 12 L10 18 L20 6\"\u003e\u003c\/path\u003e\u003c\/svg\u003e \u003cspan style=\"font-size: 13.5px; font-weight: 600; color: #2b2723;\"\u003eOn in 2 seconds\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- B2B SECTION --\u003e\n\u003cdiv style=\"margin-bottom: 26px;\"\u003e\n\u003ch3 style=\"font-size: 12px; letter-spacing: 3px; text-transform: uppercase; color: #7a726699; text-align: center; margin: 0 0 16px; font-weight: 600;\"\u003eFor agents \u0026amp; strata\u003c\/h3\u003e\n\u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 14px;\"\u003e\n\u003cdiv style=\"flex: 1; min-width: 260px; border: 3px solid #2B2723; border-radius: 20px; padding: 24px; background: #EFDFBE; box-shadow: 5px 5px 0 #2B2723;\"\u003e\n\u003cp class=\"kt-display\" style=\"font-size: 17px; font-weight: bold; color: #2b2723; margin: 0 0 8px;\"\u003eReal estate agent?\u003c\/p\u003e\n\u003cp style=\"font-size: 14px; color: #2b2723; margin: 0 0 16px;\"\u003eGet branded custom keys for your rentals.\u003c\/p\u003e\n\u003ca href=\"mailto:hello@keytuck.com.au\" style=\"display: inline-block; background: #2B2723; color: #faf3ea; font-family: 'Fredoka',sans-serif; font-weight: bold; font-size: 13.5px; padding: 10px 18px; border-radius: 999px;\"\u003eGet in touch\u003c\/a\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"flex: 1; min-width: 260px; border: 3px solid #2B2723; border-radius: 20px; padding: 24px; background: #C7D9BA; box-shadow: 5px 5px 0 #2B2723;\"\u003e\n\u003cp class=\"kt-display\" style=\"font-size: 17px; font-weight: bold; color: #2b2723; margin: 0 0 8px;\"\u003eStrata \/ building manager?\u003c\/p\u003e\n\u003cp style=\"font-size: 14px; color: #2b2723; margin: 0 0 16px;\"\u003eCustom access keys you can sell to residents.\u003c\/p\u003e\n\u003ca href=\"mailto:hello@keytuck.com.au\" style=\"display: inline-block; background: #2B2723; color: #faf3ea; font-family: 'Fredoka',sans-serif; font-weight: bold; font-size: 13.5px; padding: 10px 18px; border-radius: 999px;\"\u003eGet in touch\u003c\/a\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- CLOSING BANNER --\u003e\n\u003cdiv style=\"text-align: center; border: 3px solid #2B2723; border-radius: 24px; padding: 34px 24px; background: #F6C9C6;\"\u003e\n\u003cp class=\"kt-display\" style=\"font-size: 22px; color: #2b2723; margin: 0; font-weight: bold; text-transform: uppercase;\"\u003eGive your key a little tuck.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cscript type=\"module\" src=\"https:\/\/cdn.jsdelivr.net\/npm\/@google\/model-viewer@3.5.0\/dist\/model-viewer.min.js\"\u003e\u003c\/script\u003e \u003cscript\u003e\n(function(){\n  var KT_MODELS = {\n    'Khaki':      { glb:'https:\/\/cdn.shopify.com\/3d\/models\/o\/0ec089118c677d18\/sand_keyycover.glb',  usdz:'https:\/\/cdn.shopify.com\/3d\/models\/o\/a22a74a7aa73e175\/sand_keyycover.usdz',  tint:null },\n    'Dusty Rose': { glb:'https:\/\/cdn.shopify.com\/3d\/models\/o\/69178f3f73e0a4f5\/pink_keyycover.glb',   usdz:'https:\/\/cdn.shopify.com\/3d\/models\/o\/9e034036f5ad24f8\/pink_keyycover.usdz',   tint:null },\n    'Pistachio':  { glb:'https:\/\/cdn.shopify.com\/3d\/models\/o\/f1e22571a11e35c6\/keyycover.glb',        usdz:'https:\/\/cdn.shopify.com\/3d\/models\/o\/e5aa0b1677ab4da8\/keyycover.usdz',        tint:'#cee488' },\n    'Sky Blue':   { glb:'https:\/\/cdn.shopify.com\/3d\/models\/o\/aaef085f326c1654\/blue_keyycover.glb',   usdz:'https:\/\/cdn.shopify.com\/3d\/models\/o\/5ea8e93643b4daa3\/blue_keyycover.usdz',   tint:null },\n    'Slate':      { glb:'https:\/\/cdn.shopify.com\/3d\/models\/o\/55581bfc9a1436ca\/black_keyycover.glb',  usdz:'https:\/\/cdn.shopify.com\/3d\/models\/o\/7164307d31967c87\/black_keyycover.usdz',  tint:null },\n    'Berry':      { glb:'https:\/\/cdn.shopify.com\/3d\/models\/o\/28a3339b48f8b897\/plum_keyycover.glb',   usdz:'https:\/\/cdn.shopify.com\/3d\/models\/o\/6bd5e96130eb04c0\/plum_keyycover.usdz',   tint:null }\n  };\n\n  function hexToRgba(hex){\n    var h = hex.replace('#','');\n    var r = parseInt(h.substring(0,2),16)\/255;\n    var g = parseInt(h.substring(2,4),16)\/255;\n    var b = parseInt(h.substring(4,6),16)\/255;\n    return [r,g,b,1];\n  }\n  function highlight(name){\n    var all = document.querySelectorAll('.kt-swatch span:first-child');\n    all.forEach(function(s){ s.style.boxShadow = 'none'; });\n    var btn = document.querySelector('.kt-swatch[data-colour=\"'+name+'\"]');\n    if (btn) {\n      var circle = btn.querySelector('span:first-child');\n      if (circle) circle.style.boxShadow = '0 0 0 3px #FAF3EA, 0 0 0 6px #2B2723';\n    }\n  }\n  function applyColor(mv, hex){\n    try {\n      var rgba = hexToRgba(hex);\n      mv.model.materials.forEach(function(mat){\n        mat.pbrMetallicRoughness.setBaseColorFactor(rgba);\n      });\n    } catch(e) {}\n  }\n  function findColourInputs(){\n    var fieldsets = document.querySelectorAll('fieldset');\n    for (var i=0;i\u003cfieldsets.length;i++){\n      var legend = fieldsets[i].querySelector('legend');\n      if (legend \u0026\u0026 \/colou?r\/i.test(legend.textContent)) {\n        return fieldsets[i].querySelectorAll('input[type=\"radio\"]');\n      }\n    }\n    return document.querySelectorAll('input[type=\"radio\"][name*=\"Colour\"], input[type=\"radio\"][name*=\"Color\"]');\n  }\n\n  var syncingFromNative = false;\n\n  window.ktSelectColour = function(name, syncNative){\n    var data = KT_MODELS[name];\n    if (!data) return;\n    var mv = document.getElementById('kt-model');\n    if (mv) {\n      var onLoad = function(){\n        if (data.tint) applyColor(mv, data.tint);\n        mv.removeEventListener('load', onLoad);\n      };\n      mv.addEventListener('load', onLoad);\n      mv.setAttribute('src', data.glb);\n      mv.setAttribute('ios-src', data.usdz);\n    }\n    highlight(name);\n    if (syncNative \u0026\u0026 !syncingFromNative) {\n      var inputs = findColourInputs();\n      inputs.forEach(function(inp){\n        if (inp.value === name \u0026\u0026 !inp.checked) {\n          inp.click();\n        }\n      });\n    }\n  };\n\n  document.addEventListener('change', function(e){\n    if (e.target \u0026\u0026 e.target.matches('input[type=\"radio\"]')) {\n      var fs = e.target.closest('fieldset');\n      var legend = fs \u0026\u0026 fs.querySelector('legend');\n      if (legend \u0026\u0026 \/colou?r\/i.test(legend.textContent) \u0026\u0026 KT_MODELS[e.target.value]) {\n        syncingFromNative = true;\n        window.ktSelectColour(e.target.value, false);\n        syncingFromNative = false;\n      }\n    }\n  });\n\n  document.addEventListener('DOMContentLoaded', function(){\n    var inputs = findColourInputs();\n    var checked = Array.prototype.find.call(inputs, function(i){ return i.checked; });\n    if (checked \u0026\u0026 KT_MODELS[checked.value]) {\n      window.ktSelectColour(checked.value, false);\n    } else {\n      highlight('Khaki');\n    }\n  });\n})();\n\u003c\/script\u003e\u003c\/p\u003e","brand":"Keytuck","offers":[{"title":"Dusty Rose","offer_id":51437644382244,"sku":"KEYTUCK-DUSTYROSE","price":24.95,"currency_code":"AUD","in_stock":true},{"title":"Pistachio","offer_id":51437644415012,"sku":"KEYTUCK-PISTACHIO","price":24.95,"currency_code":"AUD","in_stock":true},{"title":"Khaki","offer_id":51437644447780,"sku":"KEYTUCK-KHAKI","price":24.95,"currency_code":"AUD","in_stock":true},{"title":"Sky Blue","offer_id":51437644480548,"sku":"KEYTUCK-SKYBLUE","price":24.95,"currency_code":"AUD","in_stock":true},{"title":"Slate","offer_id":51437644513316,"sku":"KEYTUCK-SLATE","price":24.95,"currency_code":"AUD","in_stock":true},{"title":"Berry","offer_id":51438128857124,"sku":"KEYTUCK-BERRY","price":24.95,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0809\/2676\/9188\/files\/pink_key_cbc6d2ce-7daf-4647-b225-e96509d7335d.png?v=1789048319","url":"https:\/\/keytuck.com\/products\/keytuck-the-original-key-fob-cover","provider":"My Store","version":"1.0","type":"link"}