Средства индивидуальной защиты

СИЗ — перчатки, каски, очки, респираторы, страховка | ГК «СтилКонстракшн» :root { —bg: #0e1013; —panel: #12151a; —muted: #1a1f26; —line: #2a313b; —text: #e7ecf3; —soft: #94a3b8; —accent: #56b6f7; —accent-2: #7cf1c9; —warn: #f7b956; —ok: #19d28b; —glass: rgba(255, 255, 255, .06); —blur: 12px; —radius: 18px; —radius-lg: 26px; —shadow: 0 18px 60px rgba(0, 0, 0, .35), 0 1px 0 rgba(255, 255, 255, .03) inset; —max: 1200px; —pad: clamp(16px, 2vw, 32px); } html, body { margin: 0; padding: 0; background: var(—bg); color: var(—text); -webkit-text-size-adjust: 100%; font-family: Inter, system-ui, Arial, sans-serif } *, *:before, *:after { box-sizing: border-box } a { color: inherit; text-decoration: none } /* layout */ .wrap { position: relative; isolation: isolate; overflow: hidden; padding-bottom: 70px } .wrap::before { content: «»; position: absolute; inset: -22% -12% auto -12%; height: 58vh; z-index: -1; filter: blur(22px); background: radial-gradient(60% 60% at 20% 30%, #56b6f71a 0, transparent 60%), radial-gradient(50% 50% at 80% 20%, #7cf1c918 0, transparent 60%) } .cont { max-width: var(—max); margin: 0 auto; padding: 0 var(—pad) } .sec { padding: clamp(40px, 6vw, 90px) 0 } hr.sep { border: 0; height: 1px; background: linear-gradient(90deg, transparent, var(—line), transparent); opacity: .5; margin: 34px 0 } /* progress */ .progress { position: sticky; top: 0; z-index: 50; height: 3px; background: linear-gradient(90deg, #56b6f7, #7cf1c9); width: 0% } /* HERO */ .hero { position: relative; padding: clamp(82px, 10vw, 120px) 0 28px; text-align: center; border-bottom: 1px solid var(—line); background: radial-gradient(900px 360px at 85% -10%, rgba(86, 182, 247, .10), transparent 60%), radial-gradient(1200px 420px at 20% -15%, rgba(124, 241, 201, .10), transparent 60%), var(—bg) } .hero h1 { margin: 0 0 10px; font-size: clamp(32px, 5.2vw, 64px); font-weight: 900; background: linear-gradient(180deg, #fff, #cfe7ff); -webkit-background-clip: text; background-clip: text; color: transparent } .hero p { margin: 0 auto; color: #cfd8e4; max-width: 84ch; font-size: clamp(15px, 1.4vw, 18px) } .hero .bullets { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin: 18px auto 0 } @media(max-width:980px) { .hero .bullets { grid-template-columns: 1fr 1fr } } @media(max-width:640px) { .hero .bullets { grid-template-columns: 1fr } } .b { border: 1px solid var(—line); border-radius: 14px; padding: 10px 12px; background: rgba(255, 255, 255, .04); color: #d6e6f6; font-size: 14px; position: relative; overflow: hidden } .b::after { content: «»; position: absolute; inset: auto -20% 0 -20%; height: 2px; background: linear-gradient(90deg, #7cf1c9, #56b6f7); opacity: .0; transition: .35s } .b:hover::after { opacity: .6 } .spot { position: absolute; inset: 0; pointer-events: none; mix-blend-mode: screen; opacity: .22; background: radial-gradient(200px 200px at var(—mx, 50%) var(—my, 20%), rgba(124, 241, 201, .35), rgba(86, 182, 247, .0) 70%) } /* CTAs */ .ctas { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; margin-top: 16px } .btn { position: relative; display: inline-flex; align-items: center; gap: 10px; height: 48px; padding: 0 18px; border-radius: 14px; border: 1px solid var(—line); background: linear-gradient(180deg, #19212a, #12161d); color: #eaf6ff; font-weight: 800; letter-spacing: .2px; box-shadow: var(—shadow); cursor: pointer; transition: .2s; will-change: transform } .btn:hover { transform: translateY(-2px); box-shadow: 0 18px 60px rgba(86, 182, 247, .25) } .btn.ghost { background: rgba(255, 255, 255, .06) } .btn:after { content: «»; position: absolute; inset: 0; border-radius: inherit; transform: scale(0); opacity: 0; background: radial-gradient(140px 140px at var(—rx, 50%) var(—ry, 50%), rgba(124, 241, 201, .22), transparent 45%); transition: transform .4s ease, opacity .5s ease } .btn.click:after { transform: scale(1); opacity: .9 } /* sticky chips */ .tabs-wrap { position: sticky; top: 0; z-index: 6; background: linear-gradient(180deg, rgba(14, 16, 19, .92), rgba(14, 16, 19, .7)); backdrop-filter: blur(10px); border-bottom: 1px solid var(—line) } .tabs { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; padding: 12px 0 } .tab { border: 1px solid var(—line); background: rgba(255, 255, 255, .06); padding: 10px 16px; border-radius: 999px; color: #eaf2ff; font-weight: 800; letter-spacing: .2px; cursor: pointer; transition: transform .12s ease, border-color .2s } .tab:hover { transform: translateY(-1px); border-color: #3f8bd6 } .tab[aria-pressed=»true»] { background: linear-gradient(90deg, var(—accent), var(—accent-2)); color: #0a1218; box-shadow: 0 6px 24px rgba(86, 182, 247, .35) } /* grid + cards */ .grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px } @media(max-width:1024px) { .grid { grid-template-columns: repeat(2, 1fr) } } @media(max-width:640px) { .grid { grid-template-columns: 1fr } } .card { —rx: 0deg; —ry: 0deg; —ang: 120deg; position: relative; border: 1px solid var(—line); border-radius: 18px; overflow: hidden; background: linear-gradient(180deg, rgba(255, 255, 255, .04), rgba(0, 0, 0, .22)); box-shadow: var(—shadow); padding: 18px; transform: perspective(900px) rotateX(var(—rx)) rotateY(var(—ry)) translateZ(0); transition: transform .14s ease, border-color .25s ease, box-shadow .25s ease } .card:hover { transform: translateY(0) scale(1); box-shadow: 0 30px 80px rgba(0, 0, 0, .45); border-color: #3b4654 } .card::after { content: «»; position: absolute; inset: -1px; border-radius: inherit; pointer-events: none; background: conic-gradient(from var(—ang), rgba(124, 241, 201, .0), rgba(124, 241, 201, .25), rgba(86, 182, 247, .18), rgba(124, 241, 201, .0)); opacity: .0; filter: blur(14px); transition: opacity .25s ease } .card:hover::after { opacity: .9 } .card h3 { margin: 6px 0 8px; font-size: 20px } .card p { margin: 0; color: #c8d3e0; line-height: 1.6 } .card ul { margin: 10px 0 0; padding-left: 18px; color: #cfd8e4 } .card li { margin: 6px 0 } .hidden { display: none !important } /* details mini-table */ .details { margin-top: 12px; border: 1px solid var(—line); border-radius: 12px; overflow: hidden; background: rgba(255, 255, 255, .02) } .details summary { cursor: pointer; padding: 10px 12px; font-weight: 800; color: #e7f2ff; border-bottom: 1px solid var(—line) } .details summary::-webkit-details-marker { display: none } .details table { width: 100%; border-collapse: collapse; font-size: 13px } .details th, .details td { padding: 8px 10px; border-bottom: 1px solid #24303d; color: #cbd7e6; text-align: left } .details thead { background: rgba(255, 255, 255, .04) } .details tr:last-child td { border-bottom: none } /* KPI */ .kpis { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px } @media(max-width:640px) { .kpis { grid-template-columns: 1fr } } .k { border: 1px solid var(—line); border-radius: 12px; background: rgba(255, 255, 255, .04); padding: 16px; text-align: center } .k .v { font-weight: 900; font-size: clamp(20px, 3vw, 32px) } .k .d { color: #9fb3c9; font-size: 12px } /* Nodes carousel */ .nodes { position: relative } .row { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 14px; overflow: hidden; scroll-behavior: smooth } @media(max-width:980px) { .row { grid-template-columns: 1fr 1fr } } @media(max-width:640px) { .row { grid-template-columns: 1fr } } .node { border: 1px solid var(—line); border-radius: 18px; background: linear-gradient(180deg, rgba(255, 255, 255, .04), rgba(0, 0, 0, .2)); padding: 16px; min-height: 140px } .nav { display: flex; justify-content: space-between; gap: 10px; margin-top: 10px } .nav button { border: 1px solid var(—line); background: rgba(255, 255, 255, .06); color: #eaf2ff; border-radius: 12px; padding: 8px 12px; cursor: pointer; transition: .2s } .nav button:hover { transform: translateY(-1px) } .nav button[disabled] { opacity: .4; pointer-events: none; cursor: default } /* CTA */ .cta { border: 1px solid var(—line); border-radius: 20px; background: linear-gradient(180deg, rgba(255, 255, 255, .03), rgba(0, 0, 0, .35)); box-shadow: var(—shadow); padding: 32px; text-align: center } .cta h3 { margin: 0 0 10px; font-size: clamp(22px, 3vw, 32px) } .cta p { margin: 0 auto 16px; color: #cdd8e6; max-width: 70ch } /* sticky mini-CTA */ .sticky { position: fixed; right: 16px; bottom: 16px; z-index: 9; display: none; gap: 10px; align-items: center; filter: drop-shadow(0 8px 24px rgba(0, 0, 0, .35)) } .sticky .btn { height: auto; padding: 10px 14px; border-radius: 999px } /* INFINITE MARQUEE */ .marq { —gap: 34px; —edge-fade: 24px; —duration: 24s; position: relative; overflow: hidden; border-top: 1px solid var(—line); border-bottom: 1px solid var(—line); background: rgba(255, 255, 255, .02); mask-image: linear-gradient(90deg, transparent 0, #000 var(—edge-fade), #000 calc(100% — var(—edge-fade)), transparent 100%) } .marq-track { display: inline-flex; align-items: center; gap: var(—gap); padding: 10px 0; min-width: max-content; animation: marq-move var(—duration) linear infinite; will-change: transform } .marq:hover .marq-track { animation-play-state: paused } .marq .tag { font-size: 13px; padding: 8px 12px; border-radius: 999px; border: 1px solid var(—line); background: rgba(255, 255, 255, .04); color: #d6e6f6; white-space: nowrap; flex: 0 0 auto } @keyframes marq-move { from { transform: translateX(0) } to { transform: translateX(-50%) } } /* reveal */ .reveal { opacity: 0; transform: translateY(14px); transition: opacity .7s cubic-bezier(.2, .7, .2, 1), transform .7s cubic-bezier(.2, .7, .2, 1) } .reveal.show { opacity: 1; transform: none } /* reduce motion */ @media (prefers-reduced-motion:reduce) { .marq { overflow: auto; mask-image: none } .marq-track { animation: none !important } .reveal, .btn, .card { transition: none } }

Средства индивидуальной защиты

Респираторы FFP2/FFP3, каски, очки/экраны, перчатки, спецобувь, защитная одежда, противошум, страховочные системы, аптечки и знаки. Комплектация под роли (монтажник/сварщик/бетонщик), размеры и маркировка, документы.

Нормативы: ГОСТ/EN/CE
Комплекты по ролям
Размеры и ростовка
Склад/под заказ
Сертификаты и СС
Ведомости и маркировка

Респираторы FFP2/FFP3

С клапаном/без, складные/формованные. EN 149, ГОСТ. Угольный слой при необходимости.

  • Размер: универсальный
  • Индивидуальная упаковка
  • Партии от 1 короба
Классы/утечки
Класс Фильтр Пропуск, %
FFP2 P2 ≤8%
FFP3 P3 ≤2%

Очки/экраны

Открытые, закрытые, экран лицевой. Антифог/антискретч, совместимость с каской.

  • EN 166
  • Вентиляция косв.
  • Ленты/дужки

Каски защитные

EN 397/12492, подбор оголовья, подбор цвета по зонам. Подшлемники/люверсы.

  • Регулировка 52–63 см
  • Щитки/козырьки
  • Крепление под наушники

Перчатки

Нитрил/латекс/ПВХ/спилок, мех/зима, диэлектрические. EN 388/374/60903.

  • 7–11 размеры
  • Защита от порезов
  • Сцепление/маслостойкость
EN 388 уровни
Испытание Диапазон
Абразив 0–4
Порез (Coup) 0–5
Срыв/прокол 0–4
ISO порез A–F

Спецобувь S1–S3

Подноски сталь/композит, антипрокол, антискольжение SRC. EN ISO 20345.

  • Размеры 36–47
  • Летняя/зимняя
  • Склад/под заказ

Одежда/Hi-Vis

Сигнальная EN ISO 20471, огнезащита, антистат, сварка. Куртки, брюки, комбинезоны.

  • Ростовка/размерные сетки
  • Нашивки/логотип
  • Классы видимости 1–3

Страховочные системы

Привязи, стропы, втягивающие устройства, анкерные линии. EN 361/358/360.

  • Комплекты по работам на высоте
  • Журналы учета
  • Инструкции

Противошум

Вкладыши/наушники, крепление на каску. SNR/NRR по задачам.

  • SNR 23–34
  • Сменные вкладки
  • Гигиенические наборы

Аптечки и знаки

Аптечки укладки А/Б, носилки, щиты, знаки безопасности, ленты ограждения.

  • ГОСТ/ТР ТС
  • Наборы объекта
  • Маркировка и опись
ГОСТEN 149FFP2FFP3
EN 397EN 166EN 388EN 374
EN ISO 20345EN 361CEEAC
0
часов — типовой цикл поставки
0
комплектов — отгружено
0
регионов РФ/ЕАЭС

Комплектация наборов

Монтажник
Каска, очки, перчатки порезостойкие, обувь S3, привязь EN 361, строп.
Сварщик
Щиток/маска, куртка/брюки ОПЗ, перчатки спилковые, обувь HRO, респиратор FFP3.
Бетонщик
Каска, очки закрытые, перчатки нитрил, сапоги S5, Hi-Vis жилет, наушники.
Складской
Каска легкая, перчатки PU, обувь S1P, беруши, жилет, аптечка поста.
Высота
Привязь, строп амортизир., втягивающее, каска EN 12492, наушники на каску.

Соберём СИЗ под штат и роли

Подбор по нормативам и рискам, размеры и ростовка, маркировка по подразделениям, документы.

{«@context»:»https://schema.org»,»@type»:»Service»,»name»:»Поставка средств индивидуальной защиты», «provider»:{«@type»:»Organization»,»name»:»ГК «СтилКонстракшн»»,»url»:»»}, «areaServed»:»RU», «serviceType»:[«Респираторы»,»Каски»,»Очки/экраны»,»Перчатки»,»Спецобувь»,»Одежда Hi-Vis»,»Страховка ППР»,»Противошум»,»Аптечки/знаки»], «offers»:{«@type»:»Offer»,»availability»:»https://schema.org/InStock»}} const prefersReduced = window.matchMedia && window.matchMedia(‘(prefers-reduced-motion: reduce)’).matches; /* reveal + stagger */ (function () { const els = […document.querySelectorAll(‘.reveal’)]; if (!(‘IntersectionObserver’ in window)) { els.forEach(e => e.classList.add(‘show’)); return; } const io = new IntersectionObserver((en, o) => { en.forEach(x => { if (x.isIntersecting) { x.target.classList.add(‘show’); if (x.target.dataset.stag && !prefersReduced) { const kids = x.target.querySelectorAll(‘:scope .card, :scope .b, :scope .k .v’); kids.forEach((el, i) => { el.style.opacity = 0; el.style.transform = ‘translateY(10px)’; setTimeout(() => { el.style.transition = ‘opacity .5s ease, transform .5s ease’; el.style.opacity = 1; el.style.transform = ‘none’; }, 70 * i); }); } o.unobserve(x.target); } }) }, { threshold: .16 }); els.forEach(e => io.observe(e)); })(); /* progress */ (function () { const bar = document.getElementById(‘prg’); const onScroll = () => { const h = document.documentElement; const pr = (h.scrollTop) / (h.scrollHeight — h.clientHeight); bar.style.width = (pr * 100) + ‘%’; }; window.addEventListener(‘scroll’, onScroll, { passive: true }); onScroll(); })(); /* hero spotlight */ (function () { const hero = document.querySelector(‘.hero’); const spot = hero && hero.querySelector(‘.spot’); if (!hero || !spot || prefersReduced) return; hero.addEventListener(‘pointermove’, (e) => { const r = hero.getBoundingClientRect(); const mx = ((e.clientX — r.left) / r.width) * 100; const my = ((e.clientY — r.top) / r.height) * 100; spot.style.setProperty(‘—mx’, mx + ‘%’); spot.style.setProperty(‘—my’, my + ‘%’); spot.style.opacity = .3; }); hero.addEventListener(‘pointerleave’, () => { spot.style.opacity = .18 }); })(); /* magnet buttons + ripple */ (function () { const mags = […document.querySelectorAll(‘.js-magnet’)]; if (prefersReduced) return; mags.forEach(btn => { btn.addEventListener(‘pointermove’, e => { const r = btn.getBoundingClientRect(); const x = e.clientX — (r.left + r.width / 2); const y = e.clientY — (r.top + r.height / 2); btn.style.transform = `translate(${x * 0.08}px, ${y * 0.08}px)`; }); btn.addEventListener(‘pointerleave’, () => btn.style.transform = »); btn.addEventListener(‘click’, e => { const r = e.currentTarget.getBoundingClientRect(); e.currentTarget.style.setProperty(‘—rx’, ((e.clientX — r.left) / r.width * 100) + ‘%’); e.currentTarget.style.setProperty(‘—ry’, ((e.clientY — r.top) / r.height * 100) + ‘%’); e.currentTarget.classList.add(‘click’); setTimeout(() => e.currentTarget.classList.remove(‘click’), 320); }); }); })(); /* 3D tilt cards */ (function () { const grid = document.getElementById(‘grid’); if (!grid || prefersReduced) return; grid.querySelectorAll(‘.card’).forEach(card => { const max = 6; const angBase = parseFloat(card.getAttribute(‘data-ang’) || ‘0’); card.addEventListener(‘pointermove’, e => { const r = card.getBoundingClientRect(); const px = (e.clientX — r.left) / r.width — .5; const py = (e.clientY — r.top) / r.height — .5; card.style.setProperty(‘—rx’, (-py * max) + ‘deg’); card.style.setProperty(‘—ry’, (px * max) + ‘deg’); card.style.setProperty(‘—ang’, (angBase + px * 40) + ‘deg’); }); card.addEventListener(‘pointerleave’, () => { card.style.setProperty(‘—rx’, ‘0deg’); card.style.setProperty(‘—ry’, ‘0deg’); card.style.setProperty(‘—ang’, angBase + ‘deg’); }); }); })(); /* tabs filter */ (function () { const tabs = […document.querySelectorAll(‘.tab’)]; const cards = […document.querySelectorAll(‘#grid .card’)]; function apply(cat) { cards.forEach(c => c.classList.toggle(‘hidden’, !(cat === ‘all’ || c.dataset.cat === cat))); } tabs.forEach(t => t.addEventListener(‘click’, () => { tabs.forEach(x => x.setAttribute(‘aria-pressed’, ‘false’)); t.setAttribute(‘aria-pressed’, ‘true’); apply(t.dataset.filter); const top = document.querySelector(‘.tabs-wrap’).offsetTop; window.scrollTo({ top: top + 1, behavior: prefersReduced ? ‘auto’ : ‘smooth’ }); if (!prefersReduced) { t.animate([{ transform: ‘scale(.9)’ }, { transform: ‘scale(1.04)’ }, { transform: ‘scale(1)’ }], { duration: 240, easing: ‘ease-out’ }); } })); })(); /* KPI counters */ (function () { const wrap = document.getElementById(‘kpis’); if (!wrap) return; const nums = wrap.querySelectorAll(‘.v’); let done = false; const run = () => { if (done) return; done = true; nums.forEach(n => { const target = parseInt(n.getAttribute(‘data-c’) || ‘0’, 10); const dur = 900; const t0 = performance.now(); function tick(t) { const p = Math.min(1, (t — t0) / dur); n.textContent = Math.floor(target * (0.2 + 0.8 * p)).toLocaleString(‘ru-RU’); if (p { if (e[0].isIntersecting) { run(); io.disconnect(); } }, { threshold: .3 }); io.observe(wrap); })(); /* Nodes carousel (finite) */ (function () { const row = document.getElementById(‘nodesRow’); if (!row) return; const prev = document.getElementById(‘prevN’); const next = document.getElementById(‘nextN’); const gap = 14; function step() { const el = row.querySelector(‘.node’); return (el ? el.getBoundingClientRect().width : 320) + gap; } function atStart() { return row.scrollLeft = row.scrollWidth — 1; } function update() { prev.disabled = atStart(); next.disabled = atEnd(); } function go(dir) { row.scrollBy({ left: dir * step(), behavior: prefersReduced ? ‘auto’ : ‘smooth’ }); setTimeout(update, 240); } update(); prev.addEventListener(‘click’, () => go(-1)); next.addEventListener(‘click’, () => go(+1)); row.addEventListener(‘scroll’, update, { passive: true }); window.addEventListener(‘resize’, () => setTimeout(update, 80), { passive: true }); })(); /* Sticky CTA + footer-aware */ (function () { const sticky = document.getElementById(‘sticky’); let shown = false; const show = () => { if (window.scrollY > 420 && !shown) { sticky.style.display = ‘flex’; shown = true; } if (window.scrollY { entries.forEach(e => { sticky.style.opacity = e.isIntersecting ? ‘.0’ : »; sticky.style.pointerEvents = e.isIntersecting ? ‘none’ : »; }); }, { threshold: 0.01 }); fIO.observe(footer); } })(); /* Widster lazy loader */ function widsterOpen(e) { if (e) e.preventDefault(); try { if (window.__widsterLoaded && window.widster && window.widster.open) { window.widster.open(); return; } if (document.getElementById(‘widsterScript’)) { return; } window.__widsterLoaded = false; window.wwidget = ‘837745a476e49072577bd5965e004260cb787b63525a84eb8931aee32562fed5’; const s = document.createElement(‘script’); s.id = ‘widsterScript’; s.async = true; s.charset = ‘UTF-8’; s.src = ‘https://widster.ru/embed/’ + window.wwidget; s.onload = function () { window.__widsterLoaded = true; try { window.widster && window.widster.open && window.widster.open(); } catch (e) { } }; document.body.appendChild(s); } catch (err) { location.href = ‘mailto:sales@gk-sc.ru?subject=’ + encodeURIComponent(‘Запрос КП (СИЗ)’) + ‘&body=’ + encodeURIComponent(‘Здравствуйте! Нужна комплектация СИЗ по ролям/размерам. Приложу ведомость.’); } } /* Quick picker */ (function () { const back = document.getElementById(‘pickBack’); if (!back) return; const open = document.getElementById(‘openPicker’); const close = document.getElementById(‘pickClose’); const mail = document.getElementById(‘pickMail’); const out = document.getElementById(‘pickOut’); function gather() { const mask = (document.querySelector(‘input[name=»mask»]:checked’) || {}).value || ‘—’; const valve = document.getElementById(‘maskValve’).checked ? ‘с клапаном’ : ‘без клапана’; const gl = […document.querySelectorAll(‘input[name=»gl»]:checked’)].map(i => i.value).join(‘, ‘) || ‘—’; const glSize = document.getElementById(‘glSize’).value || ‘—’; const boot = (document.querySelector(‘input[name=»boot»]:checked’) || {}).value || ‘—’; const bootSize = document.getElementById(‘bootSize’).value || ‘—’; const qty = (document.getElementById(‘qty’).value || ‘—’); const hi = document.getElementById(‘needHiVis’).checked ? ‘да’ : ‘нет’; const fall = document.getElementById(‘needFall’).checked ? ‘да’ : ‘нет’; out.textContent = `Респиратор: ${mask} (${valve}). Перчатки: ${gl}, размер ${glSize}. Обувь: ${boot}, размер ${bootSize}. Кол-во комплектов: ${qty}. Hi-Vis: ${hi}. Страховка: ${fall}.`; return { mask, valve, gl, glSize, boot, bootSize, qty, hi, fall }; } function openM(e) { if (e) e.preventDefault(); back.style.display = ‘flex’; gather(); } function closeM() { back.style.display = ‘none’; } open.addEventListener(‘click’, openM); close.addEventListener(‘click’, closeM); back.addEventListener(‘click’, e => { if (e.target === back) closeM(); }); [‘change’, ‘input’].forEach(ev => document.querySelectorAll(‘#pickBack input, #pickBack select’).forEach(i => i.addEventListener(ev, gather))); mail.addEventListener(‘click’, () => { const d = gather(); const body = `Быстрый подбор СИЗ:Респиратор: ${d.mask} (${d.valve})Перчатки: ${d.gl}, размер ${d.glSize}Обувь: ${d.boot}, размер ${d.bootSize}Кол-во комплектов: ${d.qty}Hi-Vis: ${d.hi}Страховка: ${d.fall}Прошу подготовить КП и сроки.`; location.href = ‘mailto:sales@gk-sc.ru?subject=’ + encodeURIComponent(‘Быстрый подбор СИЗ’) + ‘&body=’ + encodeURIComponent(body); closeM(); }); })(); /* INFINITE MARQUEE: автодубли для бесшовности */ (function () { const reduce = window.matchMedia && window.matchMedia(‘(prefers-reduced-motion: reduce)’).matches; const blocks = document.querySelectorAll(‘.marq’); if (!blocks.length) return; blocks.forEach(m => { const track = m.querySelector(‘.marq-track’); if (!track) return; m.style.setProperty(‘—duration’, (m.getAttribute(‘data-speed’) || ’24s’).trim()); if (reduce) return; const orig = track.innerHTML; track.innerHTML = orig + orig; let copies = 1; while (track.scrollWidth < m.clientWidth * 2.2 && copies { if (reduce) return; track.style.animation = ‘none’; track.innerHTML = orig + orig; let c = 1; while (track.scrollWidth < m.clientWidth * 2.2 && c { clearTimeout(to); to = setTimeout(rebuild, 120); }, { passive: true }); }); })();

Нужен расчёт стоимости?

Отправьте чертёж или ТЗ — подготовим КП за 2 часа

Смотрите также

Нужен расчёт стоимости?

Отправьте чертёж или ТЗ — рассчитаем за 2 часа

+7 (499) 350-85-45
Получить КП
Позвонить Получить КП

Подождите! У нас есть предложение

Оставьте заявку и получите расчёт стоимости в течение 2 часов

Нажимая кнопку, вы соглашаетесь с политикой конфиденциальности

Написать в Telegram