Miara miernicza
@import url('https://fonts.googleapis.com/css2?family=Anton&display=swap'); .mistrz-product-desc { --red: #ff0000; --dark-red: #9b0000; --black: #0f0f0f; --white: #ffffff; --light: #f4f4f4; position: relative; width: 100%; max-width: 1150px; margin: 36px auto; padding: 18px; font-family: 'Anton', sans-serif; box-sizing: border-box; } .mistrz-blood-frame { position: relative; border-radius: 22px; padding: 5px; background: #ffffff; overflow: hidden; box-shadow: 0 16px 38px rgba(0, 0, 0, 0.10), 0 0 0 1px rgba(255, 0, 0, 0.12); transform-style: preserve-3d; perspective: 900px; transition: transform 0.45s ease; } .mistrz-blood-frame::before { content: ""; position: absolute; inset: 0; border-radius: 22px; background: linear-gradient(120deg, rgba(255, 0, 0, 0.08), transparent 30%, rgba(255, 0, 0, 0.07) 58%, transparent 82%), radial-gradient(circle at 15% 25%, rgba(255, 0, 0, 0.09), transparent 24%), radial-gradient(circle at 85% 70%, rgba(255, 0, 0, 0.08), transparent 26%); animation: mistrzFramePulse 8s ease-in-out infinite; pointer-events: none; z-index: 1; } .mistrz-blood-canvas { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 2; pointer-events: none; } .mistrz-desc-inner { position: relative; z-index: 3; overflow: hidden; border-radius: 18px; background: linear-gradient(135deg, #ffffff 0%, #f4f4f4 52%, #ffffff 100%); padding: 38px; min-height: 440px; box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.04); } .mistrz-desc-inner::before { content: ""; position: absolute; top: -120px; right: -130px; width: 330px; height: 330px; background: radial-gradient(circle, rgba(255, 0, 0, 0.08), transparent 62%); filter: blur(8px); animation: mistrzRedGlow 10s ease-in-out infinite alternate; pointer-events: none; } .mistrz-desc-inner::after { content: ""; position: absolute; inset: 0; background: linear-gradient(110deg, transparent 0%, transparent 44%, rgba(255,255,255,0.45) 49%, transparent 55%, transparent 100%); transform: translateX(-130%); animation: mistrzShine 12s ease-in-out infinite; pointer-events: none; } .mistrz-top-label { display: inline-flex; align-items: center; gap: 10px; margin-bottom: 18px; padding: 9px 16px; border-radius: 999px; background: #111111; color: #ffffff; font-size: 15px; letter-spacing: 0.7px; text-transform: uppercase; box-shadow: 0 8px 22px rgba(0,0,0,0.14); } .mistrz-top-label span { color: var(--red); } .mistrz-title { margin: 0 0 14px; color: #111111; font-size: clamp(38px, 5vw, 70px); line-height: 0.98; letter-spacing: 0.3px; text-transform: none; } .mistrz-title strong { color: var(--red); font-weight: 400; } .mistrz-lead { margin: 0 0 24px; max-width: 850px; font-size: clamp(22px, 2.4vw, 34px); line-height: 1.15; color: #111111; } .mistrz-lead span { color: var(--red); } .mistrz-copy { max-width: 950px; position: relative; z-index: 4; } .mistrz-copy p { margin: 0 0 18px; font-family: Arial, sans-serif; font-size: 17px; line-height: 1.75; font-weight: 700; color: #222222; } .mistrz-copy b { color: #000000; } .mistrz-info-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-top: 28px; position: relative; z-index: 4; } .mistrz-info-box { position: relative; overflow: hidden; padding: 20px; border-radius: 16px; background: #ffffff; border: 2px solid rgba(255, 0, 0, 0.10); box-shadow: 0 10px 24px rgba(0,0,0,0.06); transform: translateZ(0); transition: transform 0.35s ease, box-shadow 0.35s ease; } .mistrz-info-box:hover { transform: translateY(-2px); box-shadow: 0 14px 28px rgba(0,0,0,0.10); } .mistrz-info-box::before { content: ""; position: absolute; top: 0; left: -90%; width: 55%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255,0,0,0.06), transparent); animation: mistrzBoxMove 9s ease-in-out infinite; } .mistrz-info-label { margin-bottom: 8px; color: var(--red); font-size: 18px; line-height: 1; text-transform: uppercase; } .mistrz-info-value { font-family: Arial, sans-serif; font-size: 16px; line-height: 1.55; font-weight: 800; color: #111111; } .mistrz-price { font-size: 28px; font-family: 'Anton', sans-serif; color: #111111; font-weight: 400; } .mistrz-tags { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 24px; position: relative; z-index: 4; } .mistrz-tag { padding: 10px 14px; border-radius: 999px; background: #111111; color: #ffffff; font-size: 15px; letter-spacing: 0.4px; box-shadow: 0 8px 18px rgba(0,0,0,0.12); } .mistrz-tag.red { background: var(--red); color: #ffffff; } @keyframes mistrzFramePulse { 0%, 100% { opacity: 0.45; transform: scale(1); } 50% { opacity: 0.75; transform: scale(1.006); } } @keyframes mistrzRedGlow { 0% { opacity: 0.25; transform: translate3d(0, 0, 0) scale(1); } 100% { opacity: 0.45; transform: translate3d(-18px, 12px, 0) scale(1.08); } } @keyframes mistrzShine { 0% { transform: translateX(-130%); opacity: 0; } 42% { transform: translateX(-130%); opacity: 0; } 55% { opacity: 0.45; } 72% { transform: translateX(130%); opacity: 0; } 100% { transform: translateX(130%); opacity: 0; } } @keyframes mistrzBoxMove { 0% { left: -90%; opacity: 0; } 35% { opacity: 0; } 50% { opacity: 0.8; } 70% { left: 130%; opacity: 0; } 100% { left: 130%; opacity: 0; } } @media (max-width: 850px) { .mistrz-product-desc { padding: 10px; margin: 24px auto; } .mistrz-desc-inner { padding: 26px 20px; min-height: auto; } .mistrz-info-grid { grid-template-columns: 1fr; } .mistrz-copy p { font-size: 15.5px; line-height: 1.7; } .mistrz-top-label { font-size: 13px; } } Produkt MISTRZ Miara miernicza 3m lub 5m MISTRZ Niezbędnik w każdej kieszeni spodni roboczych. Szybki pomiar, zero kombinowania! Klasyczna, automatycznie zwijana miarka dostępna w wersji 3 metry lub 5 metrów, która idealnie leży w dłoni. Wyposażona w solidny hamulec, metalowy zaczep i porządną obudowę, która nie rozsypie się po pierwszym upadku na beton. Sygnowana czerwonym logo MISTRZ - żeby na budowie nikt Ci jej przez przypadek nie „pożyczył”. Niezastąpiona przy murowaniu, montażu i szybkich pomiarach „na już”. Prosty, niezawodny sprzęt od Mistrza Jarosława. Cena 30 zł Długość Do wyboru: 3 metry albo 5 metrów - idealna do codziennych prac. Wygoda Wytrzymała obudowa z poręczną smyczą na nadgarstek. 3m lub 5m Automatyczne zwijanie Solidny hamulec Metalowy zaczep Smycz na nadgarstek (function () { var canvas = document.getElementById('mistrzBloodCanvasMiara'); var frame = document.getElementById('mistrzBloodFrameMiara'); if (!canvas || !frame) return; var ctx = canvas.getContext('2d'); var width = 0; var height = 0; var dpr = window.devicePixelRatio || 1; var drops = []; var running = true; function resizeCanvas() { var rect = frame.getBoundingClientRect(); width = rect.width; height = rect.height; canvas.width = width * dpr; canvas.height = height * dpr; canvas.style.width = width + 'px'; canvas.style.height = height + 'px'; ctx.setTransform(dpr, 0, 0, dpr, 0, 0); createDrops(); } function createDrops() { drops = []; var count = Math.max(18, Math.floor((width + height) / 62)); for (var i = 0; i < count; i++) { drops.push({ t: Math.random(), speed: 0.00018 + Math.random() * 0.00032, size: 2 + Math.random() * 4, length: 18 + Math.random() * 38, alpha: 0.12 + Math.random() * 0.18 }); } } function getPointOnRect(t) { var pad = 9; var w = width - pad * 2; var h = height - pad * 2; var perimeter = 2 * (w + h); var p = (t % 1) * perimeter; if (p < w) { return { x: pad + p, y: pad }; } p -= w; if (p < h) { return { x: pad + w, y: pad + p }; } p -= h; if (p < w) { return { x: pad + w - p, y: pad + h }; } p -= w; return { x: pad, y: pad + h - p }; } function draw() { if (!running) return; ctx.clearRect(0, 0, width, height); ctx.lineWidth = 1.2; ctx.strokeStyle = 'rgba(255, 0, 0, 0.16)'; ctx.shadowColor = 'rgba(255, 0, 0, 0.25)'; ctx.shadowBlur = 8; roundRect(ctx, 8, 8, width - 16, height - 16, 20); ctx.stroke(); drops.forEach(function (drop) { drop.t += drop.speed; var p = getPointOnRect(drop.t); var back = getPointOnRect(drop.t - drop.length / (2 * (width + height))); var gradient = ctx.createLinearGradient(back.x, back.y, p.x, p.y); gradient.addColorStop(0, 'rgba(255, 0, 0, 0)'); gradient.addColorStop(0.55, 'rgba(255, 0, 0,' + drop.alpha + ')'); gradient.addColorStop(1, 'rgba(150, 0, 0,' + (drop.alpha + 0.08) + ')'); ctx.beginPath(); ctx.lineCap = 'round'; ctx.lineWidth = drop.size; ctx.strokeStyle = gradient; ctx.shadowColor = 'rgba(255, 0, 0, 0.28)'; ctx.shadowBlur = 9; ctx.moveTo(back.x, back.y); ctx.lineTo(p.x, p.y); ctx.stroke(); ctx.beginPath(); ctx.fillStyle = 'rgba(255, 0, 0,' + Math.min(0.42, drop.alpha + 0.12) + ')'; ctx.shadowColor = 'rgba(255, 0, 0, 0.35)'; ctx.shadowBlur = 8; ctx.arc(p.x, p.y, drop.size * 0.45, 0, Math.PI * 2); ctx.fill(); }); requestAnimationFrame(draw); } function roundRect(ctx, x, y, w, h, r) { ctx.beginPath(); ctx.moveTo(x + r, y); ctx.lineTo(x + w - r, y); ctx.quadraticCurveTo(x + w, y, x + w, y + r); ctx.lineTo(x + w, y + h - r); ctx.quadraticCurveTo(x + w, y + h, x + w - r, y + h); ctx.lineTo(x + r, y + h); ctx.quadraticCurveTo(x, y + h, x, y + h - r); ctx.lineTo(x, y + r); ctx.quadraticCurveTo(x, y, x + r, y); ctx.closePath(); } frame.addEventListener('mousemove', function (e) { var rect = frame.getBoundingClientRect(); var x = (e.clientX - rect.left) / rect.width - 0.5; var y = (e.clientY - rect.top) / rect.height - 0.5; frame.style.transform = 'rotateX(' + (-y * 1.1).toFixed(2) + 'deg) rotateY(' + (x * 1.1).toFixed(2) + 'deg)'; }); frame.addEventListener('mouseleave', function () { frame.style.transform = 'rotateX(0deg) rotateY(0deg)'; }); if ('IntersectionObserver' in window) { var observer = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { running = entry.isIntersecting; if (running) requestAnimationFrame(draw); }); }, { threshold: 0.1 }); observer.observe(frame); } window.addEventListener('resize', resizeCanvas); resizeCanvas(); requestAnimationFrame(draw); })();