{"product_id":"smycz-na-klucze","title":"Smycz na klucze","description":"\u003cstyle\u003e\n  @import url('https:\/\/fonts.googleapis.com\/css2?family=Anton\u0026display=swap');\n\n  .mistrz-product-desc {\n    --red: #ff0000;\n    --dark-red: #9b0000;\n    --black: #0f0f0f;\n    --white: #ffffff;\n    --light: #f4f4f4;\n\n    position: relative;\n    width: 100%;\n    max-width: 1150px;\n    margin: 36px auto;\n    padding: 18px;\n    font-family: 'Anton', sans-serif;\n    box-sizing: border-box;\n  }\n\n  .mistrz-blood-frame {\n    position: relative;\n    border-radius: 22px;\n    padding: 5px;\n    background: #ffffff;\n    overflow: hidden;\n    box-shadow:\n      0 16px 38px rgba(0, 0, 0, 0.10),\n      0 0 0 1px rgba(255, 0, 0, 0.12);\n    transform-style: preserve-3d;\n    perspective: 900px;\n    transition: transform 0.45s ease;\n  }\n\n  .mistrz-blood-frame::before {\n    content: \"\";\n    position: absolute;\n    inset: 0;\n    border-radius: 22px;\n    background:\n      linear-gradient(120deg, rgba(255, 0, 0, 0.08), transparent 30%, rgba(255, 0, 0, 0.07) 58%, transparent 82%),\n      radial-gradient(circle at 15% 25%, rgba(255, 0, 0, 0.09), transparent 24%),\n      radial-gradient(circle at 85% 70%, rgba(255, 0, 0, 0.08), transparent 26%);\n    animation: mistrzFramePulse 8s ease-in-out infinite;\n    pointer-events: none;\n    z-index: 1;\n  }\n\n  .mistrz-blood-canvas {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    z-index: 2;\n    pointer-events: none;\n  }\n\n  .mistrz-desc-inner {\n    position: relative;\n    z-index: 3;\n    overflow: hidden;\n    border-radius: 18px;\n    background:\n      linear-gradient(135deg, #ffffff 0%, #f4f4f4 52%, #ffffff 100%);\n    padding: 38px;\n    min-height: 440px;\n    box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.04);\n  }\n\n  .mistrz-desc-inner::before {\n    content: \"\";\n    position: absolute;\n    top: -120px;\n    right: -130px;\n    width: 330px;\n    height: 330px;\n    background: radial-gradient(circle, rgba(255, 0, 0, 0.08), transparent 62%);\n    filter: blur(8px);\n    animation: mistrzRedGlow 10s ease-in-out infinite alternate;\n    pointer-events: none;\n  }\n\n  .mistrz-desc-inner::after {\n    content: \"\";\n    position: absolute;\n    inset: 0;\n    background:\n      linear-gradient(110deg, transparent 0%, transparent 44%, rgba(255,255,255,0.45) 49%, transparent 55%, transparent 100%);\n    transform: translateX(-130%);\n    animation: mistrzShine 12s ease-in-out infinite;\n    pointer-events: none;\n  }\n\n  .mistrz-top-label {\n    display: inline-flex;\n    align-items: center;\n    gap: 10px;\n    margin-bottom: 18px;\n    padding: 9px 16px;\n    border-radius: 999px;\n    background: #111111;\n    color: #ffffff;\n    font-size: 15px;\n    letter-spacing: 0.7px;\n    text-transform: uppercase;\n    box-shadow: 0 8px 22px rgba(0,0,0,0.14);\n  }\n\n  .mistrz-top-label span {\n    color: var(--red);\n  }\n\n  .mistrz-title {\n    margin: 0 0 14px;\n    color: #111111;\n    font-size: clamp(38px, 5vw, 70px);\n    line-height: 0.98;\n    letter-spacing: 0.3px;\n    text-transform: none;\n  }\n\n  .mistrz-title strong {\n    color: var(--red);\n    font-weight: 400;\n  }\n\n  .mistrz-lead {\n    margin: 0 0 24px;\n    max-width: 850px;\n    font-size: clamp(22px, 2.4vw, 34px);\n    line-height: 1.15;\n    color: #111111;\n  }\n\n  .mistrz-lead span {\n    color: var(--red);\n  }\n\n  .mistrz-copy {\n    max-width: 950px;\n    position: relative;\n    z-index: 4;\n  }\n\n  .mistrz-copy p {\n    margin: 0 0 18px;\n    font-family: Arial, sans-serif;\n    font-size: 17px;\n    line-height: 1.75;\n    font-weight: 700;\n    color: #222222;\n  }\n\n  .mistrz-copy b {\n    color: #000000;\n  }\n\n  \/* --- Feature highlights --- *\/\n  .mistrz-section-head {\n    margin: 28px 0 14px;\n    font-family: 'Anton', sans-serif;\n    font-size: clamp(20px, 2.4vw, 28px);\n    line-height: 1;\n    text-transform: uppercase;\n    letter-spacing: 0.4px;\n    color: #111111;\n    position: relative;\n    z-index: 4;\n  }\n\n  .mistrz-section-head span {\n    color: var(--red);\n  }\n\n  .mistrz-features {\n    display: grid;\n    grid-template-columns: repeat(2, 1fr);\n    gap: 14px;\n    position: relative;\n    z-index: 4;\n  }\n\n  .mistrz-feature {\n    position: relative;\n    overflow: hidden;\n    padding: 24px 22px;\n    border-radius: 16px;\n    background: #ffffff;\n    border: 2px solid rgba(255, 0, 0, 0.15);\n    box-shadow: 0 10px 24px rgba(0,0,0,0.06);\n    display: flex;\n    gap: 18px;\n    align-items: flex-start;\n    transition: transform 0.3s ease, box-shadow 0.3s ease;\n  }\n\n  .mistrz-feature:hover {\n    transform: translateY(-2px);\n    box-shadow: 0 14px 28px rgba(0,0,0,0.12);\n  }\n\n  .mistrz-feature-icon {\n    flex-shrink: 0;\n    width: 56px;\n    height: 56px;\n    border-radius: 14px;\n    background: linear-gradient(135deg, #ff2a2a 0%, #b70000 100%);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    box-shadow: 0 8px 20px rgba(255,0,0,0.28);\n  }\n\n  .mistrz-feature-icon svg {\n    width: 32px;\n    height: 32px;\n    color: #ffffff;\n  }\n\n  .mistrz-feature-body {\n    flex: 1;\n  }\n\n  .mistrz-feature-name {\n    margin-bottom: 6px;\n    font-family: 'Anton', sans-serif;\n    font-size: 20px;\n    letter-spacing: 0.4px;\n    text-transform: uppercase;\n    color: #111111;\n    line-height: 1.05;\n  }\n\n  .mistrz-feature-desc {\n    font-family: Arial, sans-serif;\n    font-size: 14.5px;\n    line-height: 1.5;\n    font-weight: 700;\n    color: #333333;\n  }\n\n  .mistrz-info-grid {\n    display: grid;\n    grid-template-columns: 1fr 2fr;\n    gap: 14px;\n    margin-top: 22px;\n    position: relative;\n    z-index: 4;\n  }\n\n  .mistrz-info-box {\n    position: relative;\n    overflow: hidden;\n    padding: 20px;\n    border-radius: 16px;\n    background: #ffffff;\n    border: 2px solid rgba(255, 0, 0, 0.10);\n    box-shadow: 0 10px 24px rgba(0,0,0,0.06);\n    transform: translateZ(0);\n    transition: transform 0.35s ease, box-shadow 0.35s ease;\n  }\n\n  .mistrz-info-box:hover {\n    transform: translateY(-2px);\n    box-shadow: 0 14px 28px rgba(0,0,0,0.10);\n  }\n\n  .mistrz-info-box::before {\n    content: \"\";\n    position: absolute;\n    top: 0;\n    left: -90%;\n    width: 55%;\n    height: 100%;\n    background: linear-gradient(90deg, transparent, rgba(255,0,0,0.06), transparent);\n    animation: mistrzBoxMove 9s ease-in-out infinite;\n  }\n\n  .mistrz-info-label {\n    margin-bottom: 8px;\n    color: var(--red);\n    font-size: 18px;\n    line-height: 1;\n    text-transform: uppercase;\n  }\n\n  .mistrz-info-value {\n    font-family: Arial, sans-serif;\n    font-size: 16px;\n    line-height: 1.55;\n    font-weight: 800;\n    color: #111111;\n  }\n\n  .mistrz-price {\n    font-size: 28px;\n    font-family: 'Anton', sans-serif;\n    color: #111111;\n    font-weight: 400;\n  }\n\n  .mistrz-tags {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px;\n    margin-top: 24px;\n    position: relative;\n    z-index: 4;\n  }\n\n  .mistrz-tag {\n    padding: 10px 14px;\n    border-radius: 999px;\n    background: #111111;\n    color: #ffffff;\n    font-size: 15px;\n    letter-spacing: 0.4px;\n    box-shadow: 0 8px 18px rgba(0,0,0,0.12);\n  }\n\n  .mistrz-tag.red {\n    background: var(--red);\n    color: #ffffff;\n  }\n\n  @keyframes mistrzFramePulse {\n    0%, 100% { opacity: 0.45; transform: scale(1); }\n    50% { opacity: 0.75; transform: scale(1.006); }\n  }\n\n  @keyframes mistrzRedGlow {\n    0% { opacity: 0.25; transform: translate3d(0, 0, 0) scale(1); }\n    100% { opacity: 0.45; transform: translate3d(-18px, 12px, 0) scale(1.08); }\n  }\n\n  @keyframes mistrzShine {\n    0% { transform: translateX(-130%); opacity: 0; }\n    42% { transform: translateX(-130%); opacity: 0; }\n    55% { opacity: 0.45; }\n    72% { transform: translateX(130%); opacity: 0; }\n    100% { transform: translateX(130%); opacity: 0; }\n  }\n\n  @keyframes mistrzBoxMove {\n    0% { left: -90%; opacity: 0; }\n    35% { opacity: 0; }\n    50% { opacity: 0.8; }\n    70% { left: 130%; opacity: 0; }\n    100% { left: 130%; opacity: 0; }\n  }\n\n  @media (max-width: 850px) {\n    .mistrz-product-desc {\n      padding: 10px;\n      margin: 24px auto;\n    }\n\n    .mistrz-desc-inner {\n      padding: 26px 20px;\n      min-height: auto;\n    }\n\n    .mistrz-features,\n    .mistrz-info-grid {\n      grid-template-columns: 1fr;\n    }\n\n    .mistrz-copy p {\n      font-size: 15.5px;\n      line-height: 1.7;\n    }\n\n    .mistrz-top-label {\n      font-size: 13px;\n    }\n  }\n\u003c\/style\u003e\n\n\u003csection class=\"mistrz-product-desc\"\u003e\n  \u003cdiv class=\"mistrz-blood-frame\" id=\"mistrzBloodFrameSmycz\"\u003e\n    \u003ccanvas class=\"mistrz-blood-canvas\" id=\"mistrzBloodCanvasSmycz\"\u003e\u003c\/canvas\u003e\n\n    \u003cdiv class=\"mistrz-desc-inner\"\u003e\n      \u003cdiv class=\"mistrz-top-label\"\u003e\n        Produkt \u003cspan\u003eMISTRZ\u003c\/span\u003e\n      \u003c\/div\u003e\n\n      \u003ch2 class=\"mistrz-title\"\u003e\n        Smycz na klucze \u003cstrong\u003eMISTRZ\u003c\/strong\u003e\n      \u003c\/h2\u003e\n\n      \u003cdiv class=\"mistrz-lead\"\u003e\n        Zgubiłeś znowu klucze do busa w stercie styropianu? \u003cspan\u003eZ tą smyczą to już przeszłość!\u003c\/span\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"mistrz-copy\"\u003e\n        \u003cp\u003e\n          Znasz ten ból, kiedy stoisz pod kontenerem albo próbujesz odpalić auto po robocie, a \u003cb\u003ekluczyki wcięło?\u003c\/b\u003e Ta smycz rozwiązuje problem.\n        \u003c\/p\u003e\n\n        \u003cp\u003e\n          Jest na tyle jaskrawa, że \u003cb\u003erzuca się w oczy z drugiego końca placu budowy\u003c\/b\u003e - nawet jak wpadnie w gruz.\n        \u003c\/p\u003e\n\n        \u003cp\u003e\n          Wyposażyliśmy ją w mega praktyczną, czarną klamrę (szybkozłączkę). Co to daje? Jak musisz na szybko otworzyć drzwi, po prostu \u003cb\u003eodpinasz sam dół jednym kliknięciem\u003c\/b\u003e - bez ściągania całej smyczy przez głowę (co bywa uciążliwe, jak masz na niej kask albo uwaloną czapkę).\n        \u003c\/p\u003e\n\n        \u003cp\u003e\n          Całość wieńczy \u003cb\u003emocny, metalowy karabińczyk\u003c\/b\u003e, który utrzyma pęk kluczy, identyfikator czy pendrive'a z projektami.\n        \u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"mistrz-section-head\"\u003e\n        Konkretne \u003cspan\u003erozwiązania\u003c\/span\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"mistrz-features\"\u003e\n        \u003cdiv class=\"mistrz-feature\"\u003e\n          \u003cdiv class=\"mistrz-feature-icon\"\u003e\n            \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\u003e\n              \u003cpath d=\"M7 4h10a3 3 0 0 1 3 3v4a3 3 0 0 1-3 3h-3v6h-4v-6H7a3 3 0 0 1-3-3V7a3 3 0 0 1 3-3zm0 2a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V7a1 1 0 0 0-1-1H7z\" fill=\"currentColor\"\u003e\u003c\/path\u003e\n            \u003c\/svg\u003e\n          \u003c\/div\u003e\n          \u003cdiv class=\"mistrz-feature-body\"\u003e\n            \u003cdiv class=\"mistrz-feature-name\"\u003eSzybkozłączka\u003c\/div\u003e\n            \u003cdiv class=\"mistrz-feature-desc\"\u003e\n              Czarna klamra do odpinania samego dołu jednym kliknięciem - nie musisz zdejmować smyczy przez głowę.\n            \u003c\/div\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"mistrz-feature\"\u003e\n          \u003cdiv class=\"mistrz-feature-icon\"\u003e\n            \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\u003e\n              \u003cpath d=\"M12 2C7.5 2 5 5 5 9v6a5 5 0 0 0 10 0V9c0-1.66 1.34-3 3-3s3 1.34 3 3v9h2V9c0-2.76-2.24-5-5-5s-5 2.24-5 5v6a3 3 0 0 1-6 0V9c0-3 1.5-5 5-5 1.66 0 3 1.34 3 3h2c0-2.76-2.24-5-5-5z\" fill=\"currentColor\"\u003e\u003c\/path\u003e\n            \u003c\/svg\u003e\n          \u003c\/div\u003e\n          \u003cdiv class=\"mistrz-feature-body\"\u003e\n            \u003cdiv class=\"mistrz-feature-name\"\u003eMetalowy karabińczyk\u003c\/div\u003e\n            \u003cdiv class=\"mistrz-feature-desc\"\u003e\n              Mocny, solidny - utrzyma pęk kluczy, identyfikator czy pendrive'a z projektami. Nic nie odpadnie.\n            \u003c\/div\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"mistrz-info-grid\"\u003e\n        \u003cdiv class=\"mistrz-info-box\"\u003e\n          \u003cdiv class=\"mistrz-info-label\"\u003eCena\u003c\/div\u003e\n          \u003cdiv class=\"mistrz-info-value mistrz-price\"\u003e10 zł \/ szt.\u003c\/div\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"mistrz-info-box\"\u003e\n          \u003cdiv class=\"mistrz-info-label\"\u003eWygląd\u003c\/div\u003e\n          \u003cdiv class=\"mistrz-info-value\"\u003e\n            Ognista, mistrzowska czerwień z gęsto rozsianym białym logo MISTRZ - nie da się przejść obok niej obojętnie.\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"mistrz-tags\"\u003e\n        \u003cdiv class=\"mistrz-tag red\"\u003eSzybkozłączka\u003c\/div\u003e\n        \u003cdiv class=\"mistrz-tag\"\u003eMetalowy karabińczyk\u003c\/div\u003e\n        \u003cdiv class=\"mistrz-tag red\"\u003eCzerwień MISTRZ\u003c\/div\u003e\n        \u003cdiv class=\"mistrz-tag\"\u003eBiałe logo\u003c\/div\u003e\n        \u003cdiv class=\"mistrz-tag red\"\u003eWidać z daleka\u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003cscript\u003e\n  (function () {\n    var canvas = document.getElementById('mistrzBloodCanvasSmycz');\n    var frame = document.getElementById('mistrzBloodFrameSmycz');\n\n    if (!canvas || !frame) return;\n\n    var ctx = canvas.getContext('2d');\n    var width = 0;\n    var height = 0;\n    var dpr = window.devicePixelRatio || 1;\n    var drops = [];\n    var running = true;\n\n    function resizeCanvas() {\n      var rect = frame.getBoundingClientRect();\n      width = rect.width;\n      height = rect.height;\n\n      canvas.width = width * dpr;\n      canvas.height = height * dpr;\n      canvas.style.width = width + 'px';\n      canvas.style.height = height + 'px';\n\n      ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n      createDrops();\n    }\n\n    function createDrops() {\n      drops = [];\n      var count = Math.max(18, Math.floor((width + height) \/ 62));\n\n      for (var i = 0; i \u003c count; i++) {\n        drops.push({\n          t: Math.random(),\n          speed: 0.00018 + Math.random() * 0.00032,\n          size: 2 + Math.random() * 4,\n          length: 18 + Math.random() * 38,\n          alpha: 0.12 + Math.random() * 0.18\n        });\n      }\n    }\n\n    function getPointOnRect(t) {\n      var pad = 9;\n      var w = width - pad * 2;\n      var h = height - pad * 2;\n      var perimeter = 2 * (w + h);\n      var p = (t % 1) * perimeter;\n\n      if (p \u003c w) return { x: pad + p, y: pad };\n      p -= w;\n\n      if (p \u003c h) return { x: pad + w, y: pad + p };\n      p -= h;\n\n      if (p \u003c w) return { x: pad + w - p, y: pad + h };\n      p -= w;\n\n      return { x: pad, y: pad + h - p };\n    }\n\n    function draw() {\n      if (!running) return;\n\n      ctx.clearRect(0, 0, width, height);\n\n      ctx.lineWidth = 1.2;\n      ctx.strokeStyle = 'rgba(255, 0, 0, 0.16)';\n      ctx.shadowColor = 'rgba(255, 0, 0, 0.25)';\n      ctx.shadowBlur = 8;\n      roundRect(ctx, 8, 8, width - 16, height - 16, 20);\n      ctx.stroke();\n\n      drops.forEach(function (drop) {\n        drop.t += drop.speed;\n\n        var p = getPointOnRect(drop.t);\n        var back = getPointOnRect(drop.t - drop.length \/ (2 * (width + height)));\n\n        var gradient = ctx.createLinearGradient(back.x, back.y, p.x, p.y);\n        gradient.addColorStop(0, 'rgba(255, 0, 0, 0)');\n        gradient.addColorStop(0.55, 'rgba(255, 0, 0,' + drop.alpha + ')');\n        gradient.addColorStop(1, 'rgba(150, 0, 0,' + (drop.alpha + 0.08) + ')');\n\n        ctx.beginPath();\n        ctx.lineCap = 'round';\n        ctx.lineWidth = drop.size;\n        ctx.strokeStyle = gradient;\n        ctx.shadowColor = 'rgba(255, 0, 0, 0.28)';\n        ctx.shadowBlur = 9;\n        ctx.moveTo(back.x, back.y);\n        ctx.lineTo(p.x, p.y);\n        ctx.stroke();\n\n        ctx.beginPath();\n        ctx.fillStyle = 'rgba(255, 0, 0,' + Math.min(0.42, drop.alpha + 0.12) + ')';\n        ctx.shadowColor = 'rgba(255, 0, 0, 0.35)';\n        ctx.shadowBlur = 8;\n        ctx.arc(p.x, p.y, drop.size * 0.45, 0, Math.PI * 2);\n        ctx.fill();\n      });\n\n      requestAnimationFrame(draw);\n    }\n\n    function roundRect(ctx, x, y, w, h, r) {\n      ctx.beginPath();\n      ctx.moveTo(x + r, y);\n      ctx.lineTo(x + w - r, y);\n      ctx.quadraticCurveTo(x + w, y, x + w, y + r);\n      ctx.lineTo(x + w, y + h - r);\n      ctx.quadraticCurveTo(x + w, y + h, x + w - r, y + h);\n      ctx.lineTo(x + r, y + h);\n      ctx.quadraticCurveTo(x, y + h, x, y + h - r);\n      ctx.lineTo(x, y + r);\n      ctx.quadraticCurveTo(x, y, x + r, y);\n      ctx.closePath();\n    }\n\n    frame.addEventListener('mousemove', function (e) {\n      var rect = frame.getBoundingClientRect();\n      var x = (e.clientX - rect.left) \/ rect.width - 0.5;\n      var y = (e.clientY - rect.top) \/ rect.height - 0.5;\n\n      frame.style.transform =\n        'rotateX(' + (-y * 1.1).toFixed(2) + 'deg) rotateY(' + (x * 1.1).toFixed(2) + 'deg)';\n    });\n\n    frame.addEventListener('mouseleave', function () {\n      frame.style.transform = 'rotateX(0deg) rotateY(0deg)';\n    });\n\n    if ('IntersectionObserver' in window) {\n      var observer = new IntersectionObserver(function(entries) {\n        entries.forEach(function(entry) {\n          running = entry.isIntersecting;\n          if (running) requestAnimationFrame(draw);\n        });\n      }, { threshold: 0.1 });\n\n      observer.observe(frame);\n    }\n\n    window.addEventListener('resize', resizeCanvas);\n\n    resizeCanvas();\n    requestAnimationFrame(draw);\n  })();\n\u003c\/script\u003e","brand":"Mistrz Jarosław","offers":[{"title":"Default Title","offer_id":54194794758482,"sku":null,"price":10.0,"currency_code":"PLN","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1079\/3939\/7970\/files\/D3460962-34BF-4A5B-98B5-8706504A650F.png?v=1786000399","url":"https:\/\/mistrzjaroslaw.pl\/products\/smycz-na-klucze","provider":"Mistrz Jarosław","version":"1.0","type":"link"}