• Kominiarka polarowa Brandit z pojedynczym otworem, 100% poliester fleece, pełna ochrona głowy szyi ust i nosa, pasuje pod kask i hełm, rozmiar uniwersalny, Niemcy

    KOMINIARKA BRANDIT STORM

    69,99 

    MISSION BRIEFING – KOMINIARKA BRANDIT POLAR ⚙️ CECHY TAKTYCZNE: POJEDYNCZY OTWÓR – pełna ochrona twarzy z otworem na twarz MATERIAŁ POLAROWY – delikatny, ciepły polar 100% poliester PEŁNA OCHRONA – skutecznie chroni usta, nos, szyję i podbródek KOMPATYBILNOŚĆ Z KASKIEM – pasuje pod kask i hełm ROZCIĄGLIWY MATERIAŁ – dopasowuje się do każdej głowy ROZMIAR…

    Wybierz opcjeWczytywanie Gotowe Ten produkt ma wiele wariantów. Opcje można wybrać na stronie produktu
  • Klasyczna czapka wartownicza Brandit Watch Cap niskoprofilowy krój z podwiniętym mankietem, 100% poliakryl szybkoschnący oddychający, idealna pod kask i hełm, rozmiar uniwersalny, Niemcy

    Czapka Brandit Watch Cap

    39,99 

    MISSION BRIEFING – CZAPKA BRANDIT WATCH CAP ⚙️ CECHY TAKTYCZNE: NISKOPROFILOWY KRÓJ – klasyczny design idealny pod hełm lub kask PODWINIĘTY MANKIET – zwiększona ochrona uszu i skroni SZYBKOSCHNĄCY – poliakryl odprowadzający wilgoć ODDYCHAJĄCY – komfort podczas aktywności ZACHOWUJE KSZTAŁT – nie gniecie się, nie odkształca HIPOALERGICZNY – bezpieczny dla wrażliwej skóry ? PODSTAWOWE DANE:…

    Wybierz opcjeWczytywanie Gotowe Ten produkt ma wiele wariantów. Opcje można wybrać na stronie produktu
  • Elastyczna czapka zimowa Brandit Shield Cap z daszkiem, podwójna warstwa poliakrylu, możliwość noszenia pod kaskiem i hełmem, rozciągliwy materiał, Niemcy

    CZAPKA BRANDIT SHIELD CAP

    34,99 

    MISSION BRIEFING – CZAPKA BRANDIT SHIELD CAP ⚙️ CECHY TAKTYCZNE: PODWÓJNA WARSTWA – zwiększona izolacja termiczna i wytrzymałość DASZEK OCHRONNY – osłona przed słońcem i deszczem KOMPATYBILNOŚĆ Z KASKIEM – może być noszona pod kaskiem lub hełmem POLIAKRYL – ciepły, elastyczny materiał syntetyczny ROZCIĄGLIWA KONSTRUKCJA – doskonałe dopasowanie do głowy SKUTECZNA IZOLACJA – ochrona przed…

    Wybierz opcjeWczytywanie Gotowe Ten produkt ma wiele wariantów. Opcje można wybrać na stronie produktu
  • Lekka czapka akrylowa Brandit w kolorze czarnym, 100% akryl dzianina, rozciągliwy materiał, ochrona przed mrozem i wiatrem, rozmiar uniwersalny, Niemcy

    CZAPKA BRANDIT MOVER BEANIE

    32,95 

    MISSION BRIEFING – CZAPKA BRANDIT AKRYLOWA ⚙️ CECHY TAKTYCZNE: AKRYLOWA DZIANINA – lekki, ciepły materiał 100% akryl EFEKTYWNA IZOLACJA – doskonała ochrona przed mrozem i wiatrem LEKKA KONSTRUKCJA – komfortowa podczas długotrwałego noszenia ROZCIĄGLIWY MATERIAŁ – dopasowuje się do kształtu głowy ROZMIAR UNIWERSALNY – pasuje do większości użytkowników WSZECHSTRONNA – outdoor, sporty zimowe, codzienny strój…

    Wybierz opcjeWczytywanie Gotowe Ten produkt ma wiele wariantów. Opcje można wybrać na stronie produktu
  • Lekka czapka polarowa Brandit Fleece w, 100% poliester fleece, rozciągliwy materiał, ochrona przed zimnem i wiatrem, rozmiar uniwersalny, Niemcy

    CZAPKA BRANDIT FLEECE CAP ICE

    32,95 

    MISSION BRIEFING – CZAPKA BRANDIT FLEECE ⚙️ CECHY TAKTYCZNE: MATERIAŁ POLAROWY – miękki, giętki polar 100% poliester EFEKTYWNA IZOLACJA – doskonała ochrona przed zimnem i wiatrem LEKKA KONSTRUKCJA – komfortowa nawet podczas długotrwałego noszenia ROZCIĄGLIWY MATERIAŁ – dopasowuje się do kształtu głowy ROZMIAR UNIWERSALNY – pasuje do większości użytkowników WSZECHSTRONNA – outdoor, sporty zimowe, codzienne…

    Wybierz opcjeWczytywanie Gotowe Ten produkt ma wiele wariantów. Opcje można wybrać na stronie produktu
  • Niskoprofilowa czapka taktyczna Brandit styl Bundeswehry, idealna pod kask i hełm, płaskie szwy, podszewka polarowa, 100% poliester, rozmiar uniwersalny, Niemcy

    CZAPKA BRANDIT BW FLEECE

    39,99 

    MISSION BRIEFING – CZAPKA BRANDIT BUNDESWEHR STYLE ⚙️ CECHY TAKTYCZNE: NISKOPROFILOWY KRÓJ – idealna do noszenia pod kaskiem lub hełmem WZÓR BUNDESWEHRY – inspirowana niemieckim wojskowym designem PŁASKIE SZWY – komfortowe, nie ocierają skóry PODSZEWKA POLAROWA – efektywna izolacja termiczna ROZCIĄGLIWY MATERIAŁ – elastyczny poliester dopasowujący się do głowy ROZMIAR UNIWERSALNY – jeden rozmiar pasujący…

    Wybierz opcjeWczytywanie Gotowe Ten produkt ma wiele wariantów. Opcje można wybrać na stronie produktu
  • Bluza Troyer taktyczna Brandit Tactical Sweat Troyer pullover z quarter-zip pod szyją, 2 kieszeniami na zamki z trokami, panelami velcro na piersi i ramionach, elastycznymi ściągaczami, luźny krój bawełna-poliester

    Bluza Brandit Tactical Sweat Troyer

    149,99 

    /* Stylowanie scrollbara w militarnym stylu */
    .military-popup-content::-webkit-scrollbar {
    width: 12px;
    }

    .military-popup-content::-webkit-scrollbar-track {
    background: rgba(45, 74, 45, 0.3);
    border-radius: 10px;
    }

    .military-popup-content::-webkit-scrollbar-thumb {
    background: linear-gradient(145deg, #4a6b4a, #3a5a3a);
    border-radius: 10px;
    border: 2px solid rgba(74, 107, 74, 0.5);
    }

    .military-popup-content::-webkit-scrollbar-thumb:hover {
    background: linear-gradient(145deg, #5a7b5a, #4a6a4a);
    }

    /* Blokowanie scrollowania strony gdy popup otwarty */
    body.military-popup-open {
    overflow: hidden !important;
    }

    /* STICKY COLUMN DLA MOBILE - WZMOCNIONE */
    @media (max-width: 768px) {
    /* Kontener tabeli z poziomym scrollem */
    .table-wrapper {
    position: relative !important;
    overflow-x: auto !important;
    overflow-y: visible !important;
    -webkit-overflow-scrolling: touch !important;
    display: block !important;
    }

    /* Reset dla tabeli */
    .military-table {
    position: relative !important;
    display: table !important;
    }

    /* Sticky pierwsza kolumna - WZMOCNIONE */
    .military-table thead th:first-child,
    .military-table tbody td:first-child {
    position: -webkit-sticky !important; /* Safari */
    position: sticky !important;
    left: 0px !important;
    z-index: 100 !important;
    background: linear-gradient(145deg, #4a6b4a, #3a5a3a) !important;
    }

    /* Alternatywna metoda dla starszych przeglądarek */
    @supports not (position: sticky) {
    .military-table thead th:first-child,
    .military-table tbody td:first-child {
    position: fixed !important;
    left: 0 !important;
    background: linear-gradient(145deg, #4a6b4a, #3a5a3a) !important;
    }
    }

    /* Dodatkowy cień dla lepszej widoczności */
    .military-table tbody td:first-child {
    box-shadow: 3px 0 8px rgba(0, 0, 0, 0.4) !important;
    border-right: 2px solid #2d4a2d !important;
    }

    .military-table thead th:first-child {
    box-shadow: 3px 0 8px rgba(0, 0, 0, 0.6) !important;
    border-right: 2px solid #2d4a2d !important;
    }

    /* Zapewnienie minimalnej szerokości dla pozostałych kolumn */
    .military-table th:not(:first-child),
    .military-table td:not(:first-child) {
    min-width: 100px;
    }

    /* Wymuszenie szerokości pierwszej kolumny */
    .military-table thead th:first-child,
    .military-table tbody td:first-child {
    min-width: 80px !important;
    max-width: 100px !important;
    }
    }

    /* Dodatkowe style dla lepszej responsywności */
    @media (max-width: 480px) {
    .military-popup-content {
    padding: 15px !important;
    margin: 20px auto !important;
    }

    .military-table {
    font-size: 10px !important;
    }

    .military-table th,
    .military-table td {
    padding: 6px !important;
    }
    }

    TABELA WYMIARÓW

    ⚠️ Tabela wymiarów

    TABELA WYMIARÓW KURTEK

    ⚠️ Tolerancja dla podanych wymiarów może wynosić +/- 2 cm
    📱 Na urządzeniach mobilnych: przewijaj tabelę w poziomie, kolumna z rozmiarami pozostanie widoczna

    JAK MIERZYĆ KURTKI

    🔍 Kliknij na zdjęcie aby powiększyć

    Jak mierzyć kurtki - instrukcja

    📏 INSTRUKCJA MIERZENIA KURTEK
    A – SZEROKOŚĆ KLATKI PIERSIOWEJ:
    • Połóż kurtkę płasko na powierzchni
    • Zmierz szerokość od pachy do pachy w najszerszym miejscu
    B – DŁUGOŚĆ RĘKAWA:
    • Mierz od szwu ramienia (punkt łączenia z korpusem)
    • Do końca mankietu rękawa
    C – DŁUGOŚĆ CAŁKOWITA:
    • Od najwyższego punktu kołnierza z tyłu
    • Do najniższego punktu kurtki
    ⚠️ TOLERANCJA: +/- 2cm dla wszystkich wymiarów

    ROZMIAR SZEROKOŚĆ
    W KLATCE
    PIERSIOWEJ
    (CM)
    DŁUGOŚĆ
    RĘKAWA
    (CM)
    DŁUGOŚĆ
    CAŁKOWITA
    PLECY
    (CM)
    S 56 68 84
    M 59 69 85
    L 62 70 86
    XL 65 70 87
    XXL 68 71 88
    3XL 71 71 89
    4XL 75 71 91
    5XL 78 71 91
    6XL 83 71 92
    7XL 88 71 93




    Przewijaj kółkiem myszy lub użyj przycisków • Przeciągnij aby przesunąć • Kliknij poza zdjęciem aby zamknąć

    Powiększona instrukcja

    let currentZoom = 1; let isDragging = false; let startX, startY, scrollLeft, scrollTop;

    function handleJacketImageError(img) { console.log('Próbuję alternatywne formaty obrazka...');

    const alternatives = [ 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.jpg', 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.jpeg', 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.png', 'https://militariapro.pl/wp-content/uploads/2025/09/kurtki-brandit.jpg', 'https://militariapro.pl/wp-content/uploads/2025/09/kurtki-brandit.png' ];

    let currentIndex = 0;

    function tryNextFormat() { if (currentIndex < alternatives.length) { img.onerror = function() { currentIndex++; setTimeout(tryNextFormat, 100); }; img.src = alternatives[currentIndex]; } else { img.style.display = 'none'; img.onclick = null; img.style.cursor = 'default'; document.getElementById('jacket-text-fallback').style.display = 'block'; } } tryNextFormat(); } function openImageZoom(imageSrc) { const modal = document.getElementById('image-zoom-modal'); const zoomedImg = document.getElementById('zoomed-image'); zoomedImg.src = 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.webp'; zoomedImg.onerror = function() { const fallbacks = [ 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.png', 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.jpg', imageSrc ]; let index = 0; function tryNext() { if (index < fallbacks.length) { zoomedImg.src = fallbacks[index]; index++; if (index < fallbacks.length) { zoomedImg.onerror = tryNext; } } } tryNext(); }; modal.style.display = 'block'; currentZoom = 1; zoomedImg.style.transform = `scale(${currentZoom})`; const container = document.getElementById('zoom-container'); container.addEventListener('mousedown', startDragging); container.addEventListener('mousemove', drag); container.addEventListener('mouseup', stopDragging); container.addEventListener('mouseleave', stopDragging); container.addEventListener('wheel', handleWheel); } function closeImageZoom() { const modal = document.getElementById('image-zoom-modal'); modal.style.display = 'none'; const container = document.getElementById('zoom-container'); container.removeEventListener('mousedown', startDragging); container.removeEventListener('mousemove', drag); container.removeEventListener('mouseup', stopDragging); container.removeEventListener('mouseleave', stopDragging); container.removeEventListener('wheel', handleWheel); } function zoomIn() { currentZoom = Math.min(currentZoom + 0.5, 5); document.getElementById('zoomed-image').style.transform = `scale(${currentZoom})`; } function zoomOut() { currentZoom = Math.max(currentZoom - 0.5, 0.5); document.getElementById('zoomed-image').style.transform = `scale(${currentZoom})`; } function resetZoom() { currentZoom = 1; document.getElementById('zoomed-image').style.transform = `scale(${currentZoom})`; document.getElementById('zoom-container').scrollLeft = 0; document.getElementById('zoom-container').scrollTop = 0; } function handleWheel(e) { e.preventDefault(); if (e.deltaY < 0) { zoomIn(); } else { zoomOut(); } } function startDragging(e) { isDragging = true; const container = document.getElementById('zoom-container'); startX = e.pageX - container.offsetLeft; startY = e.pageY - container.offsetTop; scrollLeft = container.scrollLeft; scrollTop = container.scrollTop; e.preventDefault(); } function drag(e) { if (!isDragging) return; e.preventDefault(); const container = document.getElementById('zoom-container'); const x = e.pageX - container.offsetLeft; const y = e.pageY - container.offsetTop; const walkX = (x - startX) * 2; const walkY = (y - startY) * 2; container.scrollLeft = scrollLeft - walkX; container.scrollTop = scrollTop - walkY; } function stopDragging() { isDragging = false; } // ROZWIĄZANIE JAVASCRIPT DLA STICKY COLUMN document.addEventListener('DOMContentLoaded', function() { // Funkcja do klonowania pierwszej kolumny function createStickyColumn() { const wrapper = document.querySelector('.table-wrapper'); const table = document.querySelector('.military-table'); if (!wrapper || !table) return; // Sprawdź czy jesteśmy na mobile if (window.innerWidth { const clonedRow = document.createElement('tr'); const firstCell = row.querySelector('td:first-child'); if (firstCell) { const clonedCell = firstCell.cloneNode(true); clonedCell.style.cssText = firstCell.style.cssText + ` box-shadow: 3px 0 8px rgba(0, 0, 0, 0.4) !important; border-right: 2px solid #2d4a2d !important; `; clonedRow.appendChild(clonedCell); } clonedTbody.appendChild(clonedRow); }); clonedTable.appendChild(clonedTbody); }

    // Dodaj sklonowaną tabelę do wrappera wrapper.style.position = 'relative'; wrapper.appendChild(clonedTable);

    // Synchronizuj wysokości wierszy setTimeout(() => { const originalRows = table.querySelectorAll('tr'); const clonedRows = clonedTable.querySelectorAll('tr');

    originalRows.forEach((row, index) => { if (clonedRows[index]) { const originalHeight = row.offsetHeight; clonedRows[index].style.height = originalHeight + 'px'; } }); }, 100);

    // Ukryj oryginalną pierwszą kolumnę podczas scrollowania wrapper.addEventListener('scroll', function() { if (wrapper.scrollLeft > 0) { table.style.marginLeft = '0px'; clonedTable.style.display = 'table'; } else { clonedTable.style.display = 'table'; } }); } }

    // Uruchom funkcję createStickyColumn();

    // Uruchom ponownie przy zmianie rozmiaru okna let resizeTimer; window.addEventListener('resize', function() { clearTimeout(resizeTimer); resizeTimer = setTimeout(createStickyColumn, 250); });

    // Dodatkowa obsługa dla urządzeń dotykowych const tableWrapper = document.querySelector('.table-wrapper'); if (tableWrapper) { let touchStartX = 0;

    tableWrapper.addEventListener('touchstart', function(e) { touchStartX = e.touches[0].clientX; }, { passive: true });

    tableWrapper.addEventListener('touchmove', function(e) { if (!touchStartX) return;

    const touchEndX = e.touches[0].clientX; const diff = touchStartX - touchEndX;

    // Przewijanie tylko w poziomie if (Math.abs(diff) > 5) { e.stopPropagation(); } }, { passive: true }); } });

    Wybierz opcjeWczytywanie Gotowe Ten produkt ma wiele wariantów. Opcje można wybrać na stronie produktu
  • Bluza taktyczna Brandit Tactical Sweat Jacket z pełnym zamkiem błyskawicznym, kapturem, 4 kieszeniami, panelami velcro na ramieniu i piersi, elastycznymi ściągaczami, sportowy krój bawełna-poliester

    Bluza Brandit Tactical Sweat Jacket

    149,99 

    /* Stylowanie scrollbara w militarnym stylu */
    .military-popup-content::-webkit-scrollbar {
    width: 12px;
    }

    .military-popup-content::-webkit-scrollbar-track {
    background: rgba(45, 74, 45, 0.3);
    border-radius: 10px;
    }

    .military-popup-content::-webkit-scrollbar-thumb {
    background: linear-gradient(145deg, #4a6b4a, #3a5a3a);
    border-radius: 10px;
    border: 2px solid rgba(74, 107, 74, 0.5);
    }

    .military-popup-content::-webkit-scrollbar-thumb:hover {
    background: linear-gradient(145deg, #5a7b5a, #4a6a4a);
    }

    /* Blokowanie scrollowania strony gdy popup otwarty */
    body.military-popup-open {
    overflow: hidden !important;
    }

    /* STICKY COLUMN DLA MOBILE - WZMOCNIONE */
    @media (max-width: 768px) {
    /* Kontener tabeli z poziomym scrollem */
    .table-wrapper {
    position: relative !important;
    overflow-x: auto !important;
    overflow-y: visible !important;
    -webkit-overflow-scrolling: touch !important;
    display: block !important;
    }

    /* Reset dla tabeli */
    .military-table {
    position: relative !important;
    display: table !important;
    }

    /* Sticky pierwsza kolumna - WZMOCNIONE */
    .military-table thead th:first-child,
    .military-table tbody td:first-child {
    position: -webkit-sticky !important; /* Safari */
    position: sticky !important;
    left: 0px !important;
    z-index: 100 !important;
    background: linear-gradient(145deg, #4a6b4a, #3a5a3a) !important;
    }

    /* Alternatywna metoda dla starszych przeglądarek */
    @supports not (position: sticky) {
    .military-table thead th:first-child,
    .military-table tbody td:first-child {
    position: fixed !important;
    left: 0 !important;
    background: linear-gradient(145deg, #4a6b4a, #3a5a3a) !important;
    }
    }

    /* Dodatkowy cień dla lepszej widoczności */
    .military-table tbody td:first-child {
    box-shadow: 3px 0 8px rgba(0, 0, 0, 0.4) !important;
    border-right: 2px solid #2d4a2d !important;
    }

    .military-table thead th:first-child {
    box-shadow: 3px 0 8px rgba(0, 0, 0, 0.6) !important;
    border-right: 2px solid #2d4a2d !important;
    }

    /* Zapewnienie minimalnej szerokości dla pozostałych kolumn */
    .military-table th:not(:first-child),
    .military-table td:not(:first-child) {
    min-width: 100px;
    }

    /* Wymuszenie szerokości pierwszej kolumny */
    .military-table thead th:first-child,
    .military-table tbody td:first-child {
    min-width: 80px !important;
    max-width: 100px !important;
    }
    }

    /* Dodatkowe style dla lepszej responsywności */
    @media (max-width: 480px) {
    .military-popup-content {
    padding: 15px !important;
    margin: 20px auto !important;
    }

    .military-table {
    font-size: 10px !important;
    }

    .military-table th,
    .military-table td {
    padding: 6px !important;
    }
    }

    TABELA WYMIARÓW

    ⚠️ Tabela wymiarów

    TABELA WYMIARÓW KURTEK

    ⚠️ Tolerancja dla podanych wymiarów może wynosić +/- 2 cm
    📱 Na urządzeniach mobilnych: przewijaj tabelę w poziomie, kolumna z rozmiarami pozostanie widoczna

    JAK MIERZYĆ KURTKI

    🔍 Kliknij na zdjęcie aby powiększyć

    Jak mierzyć kurtki - instrukcja

    📏 INSTRUKCJA MIERZENIA KURTEK
    A – SZEROKOŚĆ KLATKI PIERSIOWEJ:
    • Połóż kurtkę płasko na powierzchni
    • Zmierz szerokość od pachy do pachy w najszerszym miejscu
    B – DŁUGOŚĆ RĘKAWA:
    • Mierz od szwu ramienia (punkt łączenia z korpusem)
    • Do końca mankietu rękawa
    C – DŁUGOŚĆ CAŁKOWITA:
    • Od najwyższego punktu kołnierza z tyłu
    • Do najniższego punktu kurtki
    ⚠️ TOLERANCJA: +/- 2cm dla wszystkich wymiarów

    ROZMIAR SZEROKOŚĆ
    W KLATCE
    PIERSIOWEJ
    (CM)
    DŁUGOŚĆ
    RĘKAWA
    (CM)
    DŁUGOŚĆ
    CAŁKOWITA
    PLECY
    (CM)
    S 56 68 84
    M 59 69 85
    L 62 70 86
    XL 65 70 87
    XXL 68 71 88
    3XL 71 71 89
    4XL 75 71 91
    5XL 78 71 91
    6XL 83 71 92
    7XL 88 71 93




    Przewijaj kółkiem myszy lub użyj przycisków • Przeciągnij aby przesunąć • Kliknij poza zdjęciem aby zamknąć

    Powiększona instrukcja

    let currentZoom = 1; let isDragging = false; let startX, startY, scrollLeft, scrollTop;

    function handleJacketImageError(img) { console.log('Próbuję alternatywne formaty obrazka...');

    const alternatives = [ 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.jpg', 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.jpeg', 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.png', 'https://militariapro.pl/wp-content/uploads/2025/09/kurtki-brandit.jpg', 'https://militariapro.pl/wp-content/uploads/2025/09/kurtki-brandit.png' ];

    let currentIndex = 0;

    function tryNextFormat() { if (currentIndex < alternatives.length) { img.onerror = function() { currentIndex++; setTimeout(tryNextFormat, 100); }; img.src = alternatives[currentIndex]; } else { img.style.display = 'none'; img.onclick = null; img.style.cursor = 'default'; document.getElementById('jacket-text-fallback').style.display = 'block'; } } tryNextFormat(); } function openImageZoom(imageSrc) { const modal = document.getElementById('image-zoom-modal'); const zoomedImg = document.getElementById('zoomed-image'); zoomedImg.src = 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.webp'; zoomedImg.onerror = function() { const fallbacks = [ 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.png', 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.jpg', imageSrc ]; let index = 0; function tryNext() { if (index < fallbacks.length) { zoomedImg.src = fallbacks[index]; index++; if (index < fallbacks.length) { zoomedImg.onerror = tryNext; } } } tryNext(); }; modal.style.display = 'block'; currentZoom = 1; zoomedImg.style.transform = `scale(${currentZoom})`; const container = document.getElementById('zoom-container'); container.addEventListener('mousedown', startDragging); container.addEventListener('mousemove', drag); container.addEventListener('mouseup', stopDragging); container.addEventListener('mouseleave', stopDragging); container.addEventListener('wheel', handleWheel); } function closeImageZoom() { const modal = document.getElementById('image-zoom-modal'); modal.style.display = 'none'; const container = document.getElementById('zoom-container'); container.removeEventListener('mousedown', startDragging); container.removeEventListener('mousemove', drag); container.removeEventListener('mouseup', stopDragging); container.removeEventListener('mouseleave', stopDragging); container.removeEventListener('wheel', handleWheel); } function zoomIn() { currentZoom = Math.min(currentZoom + 0.5, 5); document.getElementById('zoomed-image').style.transform = `scale(${currentZoom})`; } function zoomOut() { currentZoom = Math.max(currentZoom - 0.5, 0.5); document.getElementById('zoomed-image').style.transform = `scale(${currentZoom})`; } function resetZoom() { currentZoom = 1; document.getElementById('zoomed-image').style.transform = `scale(${currentZoom})`; document.getElementById('zoom-container').scrollLeft = 0; document.getElementById('zoom-container').scrollTop = 0; } function handleWheel(e) { e.preventDefault(); if (e.deltaY < 0) { zoomIn(); } else { zoomOut(); } } function startDragging(e) { isDragging = true; const container = document.getElementById('zoom-container'); startX = e.pageX - container.offsetLeft; startY = e.pageY - container.offsetTop; scrollLeft = container.scrollLeft; scrollTop = container.scrollTop; e.preventDefault(); } function drag(e) { if (!isDragging) return; e.preventDefault(); const container = document.getElementById('zoom-container'); const x = e.pageX - container.offsetLeft; const y = e.pageY - container.offsetTop; const walkX = (x - startX) * 2; const walkY = (y - startY) * 2; container.scrollLeft = scrollLeft - walkX; container.scrollTop = scrollTop - walkY; } function stopDragging() { isDragging = false; } // ROZWIĄZANIE JAVASCRIPT DLA STICKY COLUMN document.addEventListener('DOMContentLoaded', function() { // Funkcja do klonowania pierwszej kolumny function createStickyColumn() { const wrapper = document.querySelector('.table-wrapper'); const table = document.querySelector('.military-table'); if (!wrapper || !table) return; // Sprawdź czy jesteśmy na mobile if (window.innerWidth { const clonedRow = document.createElement('tr'); const firstCell = row.querySelector('td:first-child'); if (firstCell) { const clonedCell = firstCell.cloneNode(true); clonedCell.style.cssText = firstCell.style.cssText + ` box-shadow: 3px 0 8px rgba(0, 0, 0, 0.4) !important; border-right: 2px solid #2d4a2d !important; `; clonedRow.appendChild(clonedCell); } clonedTbody.appendChild(clonedRow); }); clonedTable.appendChild(clonedTbody); }

    // Dodaj sklonowaną tabelę do wrappera wrapper.style.position = 'relative'; wrapper.appendChild(clonedTable);

    // Synchronizuj wysokości wierszy setTimeout(() => { const originalRows = table.querySelectorAll('tr'); const clonedRows = clonedTable.querySelectorAll('tr');

    originalRows.forEach((row, index) => { if (clonedRows[index]) { const originalHeight = row.offsetHeight; clonedRows[index].style.height = originalHeight + 'px'; } }); }, 100);

    // Ukryj oryginalną pierwszą kolumnę podczas scrollowania wrapper.addEventListener('scroll', function() { if (wrapper.scrollLeft > 0) { table.style.marginLeft = '0px'; clonedTable.style.display = 'table'; } else { clonedTable.style.display = 'table'; } }); } }

    // Uruchom funkcję createStickyColumn();

    // Uruchom ponownie przy zmianie rozmiaru okna let resizeTimer; window.addEventListener('resize', function() { clearTimeout(resizeTimer); resizeTimer = setTimeout(createStickyColumn, 250); });

    // Dodatkowa obsługa dla urządzeń dotykowych const tableWrapper = document.querySelector('.table-wrapper'); if (tableWrapper) { let touchStartX = 0;

    tableWrapper.addEventListener('touchstart', function(e) { touchStartX = e.touches[0].clientX; }, { passive: true });

    tableWrapper.addEventListener('touchmove', function(e) { if (!touchStartX) return;

    const touchEndX = e.touches[0].clientX; const diff = touchStartX - touchEndX;

    // Przewijanie tylko w poziomie if (Math.abs(diff) > 5) { e.stopPropagation(); } }, { passive: true }); } });

    Wybierz opcjeWczytywanie Gotowe Ten produkt ma wiele wariantów. Opcje można wybrać na stronie produktu
  • Bluza kangurka Brandit Army Hoody z nadrukiem ARMY i głębokim kapturem

    Bluza Brandit Army Hoody

    129,99 

    /* Stylowanie scrollbara w militarnym stylu */
    .military-popup-content::-webkit-scrollbar {
    width: 12px;
    }

    .military-popup-content::-webkit-scrollbar-track {
    background: rgba(45, 74, 45, 0.3);
    border-radius: 10px;
    }

    .military-popup-content::-webkit-scrollbar-thumb {
    background: linear-gradient(145deg, #4a6b4a, #3a5a3a);
    border-radius: 10px;
    border: 2px solid rgba(74, 107, 74, 0.5);
    }

    .military-popup-content::-webkit-scrollbar-thumb:hover {
    background: linear-gradient(145deg, #5a7b5a, #4a6a4a);
    }

    /* Blokowanie scrollowania strony gdy popup otwarty */
    body.military-popup-open {
    overflow: hidden !important;
    }

    /* STICKY COLUMN DLA MOBILE - WZMOCNIONE */
    @media (max-width: 768px) {
    /* Kontener tabeli z poziomym scrollem */
    .table-wrapper {
    position: relative !important;
    overflow-x: auto !important;
    overflow-y: visible !important;
    -webkit-overflow-scrolling: touch !important;
    display: block !important;
    }

    /* Reset dla tabeli */
    .military-table {
    position: relative !important;
    display: table !important;
    }

    /* Sticky pierwsza kolumna - WZMOCNIONE */
    .military-table thead th:first-child,
    .military-table tbody td:first-child {
    position: -webkit-sticky !important; /* Safari */
    position: sticky !important;
    left: 0px !important;
    z-index: 100 !important;
    background: linear-gradient(145deg, #4a6b4a, #3a5a3a) !important;
    }

    /* Alternatywna metoda dla starszych przeglądarek */
    @supports not (position: sticky) {
    .military-table thead th:first-child,
    .military-table tbody td:first-child {
    position: fixed !important;
    left: 0 !important;
    background: linear-gradient(145deg, #4a6b4a, #3a5a3a) !important;
    }
    }

    /* Dodatkowy cień dla lepszej widoczności */
    .military-table tbody td:first-child {
    box-shadow: 3px 0 8px rgba(0, 0, 0, 0.4) !important;
    border-right: 2px solid #2d4a2d !important;
    }

    .military-table thead th:first-child {
    box-shadow: 3px 0 8px rgba(0, 0, 0, 0.6) !important;
    border-right: 2px solid #2d4a2d !important;
    }

    /* Zapewnienie minimalnej szerokości dla pozostałych kolumn */
    .military-table th:not(:first-child),
    .military-table td:not(:first-child) {
    min-width: 100px;
    }

    /* Wymuszenie szerokości pierwszej kolumny */
    .military-table thead th:first-child,
    .military-table tbody td:first-child {
    min-width: 80px !important;
    max-width: 100px !important;
    }
    }

    /* Dodatkowe style dla lepszej responsywności */
    @media (max-width: 480px) {
    .military-popup-content {
    padding: 15px !important;
    margin: 20px auto !important;
    }

    .military-table {
    font-size: 10px !important;
    }

    .military-table th,
    .military-table td {
    padding: 6px !important;
    }
    }

    TABELA WYMIARÓW

    ⚠️ Tabela wymiarów

    TABELA WYMIARÓW KURTEK

    ⚠️ Tolerancja dla podanych wymiarów może wynosić +/- 2 cm
    📱 Na urządzeniach mobilnych: przewijaj tabelę w poziomie, kolumna z rozmiarami pozostanie widoczna

    JAK MIERZYĆ KURTKI

    🔍 Kliknij na zdjęcie aby powiększyć

    Jak mierzyć kurtki - instrukcja

    📏 INSTRUKCJA MIERZENIA KURTEK
    A – SZEROKOŚĆ KLATKI PIERSIOWEJ:
    • Połóż kurtkę płasko na powierzchni
    • Zmierz szerokość od pachy do pachy w najszerszym miejscu
    B – DŁUGOŚĆ RĘKAWA:
    • Mierz od szwu ramienia (punkt łączenia z korpusem)
    • Do końca mankietu rękawa
    C – DŁUGOŚĆ CAŁKOWITA:
    • Od najwyższego punktu kołnierza z tyłu
    • Do najniższego punktu kurtki
    ⚠️ TOLERANCJA: +/- 2cm dla wszystkich wymiarów

    ROZMIAR SZEROKOŚĆ
    W KLATCE
    PIERSIOWEJ
    (CM)
    DŁUGOŚĆ
    RĘKAWA
    (CM)
    DŁUGOŚĆ
    CAŁKOWITA
    PLECY
    (CM)
    S 56 68 84
    M 59 69 85
    L 62 70 86
    XL 65 70 87
    XXL 68 71 88
    3XL 71 71 89
    4XL 75 71 91
    5XL 78 71 91
    6XL 83 71 92
    7XL 88 71 93




    Przewijaj kółkiem myszy lub użyj przycisków • Przeciągnij aby przesunąć • Kliknij poza zdjęciem aby zamknąć

    Powiększona instrukcja

    let currentZoom = 1; let isDragging = false; let startX, startY, scrollLeft, scrollTop;

    function handleJacketImageError(img) { console.log('Próbuję alternatywne formaty obrazka...');

    const alternatives = [ 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.jpg', 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.jpeg', 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.png', 'https://militariapro.pl/wp-content/uploads/2025/09/kurtki-brandit.jpg', 'https://militariapro.pl/wp-content/uploads/2025/09/kurtki-brandit.png' ];

    let currentIndex = 0;

    function tryNextFormat() { if (currentIndex < alternatives.length) { img.onerror = function() { currentIndex++; setTimeout(tryNextFormat, 100); }; img.src = alternatives[currentIndex]; } else { img.style.display = 'none'; img.onclick = null; img.style.cursor = 'default'; document.getElementById('jacket-text-fallback').style.display = 'block'; } } tryNextFormat(); } function openImageZoom(imageSrc) { const modal = document.getElementById('image-zoom-modal'); const zoomedImg = document.getElementById('zoomed-image'); zoomedImg.src = 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.webp'; zoomedImg.onerror = function() { const fallbacks = [ 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.png', 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.jpg', imageSrc ]; let index = 0; function tryNext() { if (index < fallbacks.length) { zoomedImg.src = fallbacks[index]; index++; if (index < fallbacks.length) { zoomedImg.onerror = tryNext; } } } tryNext(); }; modal.style.display = 'block'; currentZoom = 1; zoomedImg.style.transform = `scale(${currentZoom})`; const container = document.getElementById('zoom-container'); container.addEventListener('mousedown', startDragging); container.addEventListener('mousemove', drag); container.addEventListener('mouseup', stopDragging); container.addEventListener('mouseleave', stopDragging); container.addEventListener('wheel', handleWheel); } function closeImageZoom() { const modal = document.getElementById('image-zoom-modal'); modal.style.display = 'none'; const container = document.getElementById('zoom-container'); container.removeEventListener('mousedown', startDragging); container.removeEventListener('mousemove', drag); container.removeEventListener('mouseup', stopDragging); container.removeEventListener('mouseleave', stopDragging); container.removeEventListener('wheel', handleWheel); } function zoomIn() { currentZoom = Math.min(currentZoom + 0.5, 5); document.getElementById('zoomed-image').style.transform = `scale(${currentZoom})`; } function zoomOut() { currentZoom = Math.max(currentZoom - 0.5, 0.5); document.getElementById('zoomed-image').style.transform = `scale(${currentZoom})`; } function resetZoom() { currentZoom = 1; document.getElementById('zoomed-image').style.transform = `scale(${currentZoom})`; document.getElementById('zoom-container').scrollLeft = 0; document.getElementById('zoom-container').scrollTop = 0; } function handleWheel(e) { e.preventDefault(); if (e.deltaY < 0) { zoomIn(); } else { zoomOut(); } } function startDragging(e) { isDragging = true; const container = document.getElementById('zoom-container'); startX = e.pageX - container.offsetLeft; startY = e.pageY - container.offsetTop; scrollLeft = container.scrollLeft; scrollTop = container.scrollTop; e.preventDefault(); } function drag(e) { if (!isDragging) return; e.preventDefault(); const container = document.getElementById('zoom-container'); const x = e.pageX - container.offsetLeft; const y = e.pageY - container.offsetTop; const walkX = (x - startX) * 2; const walkY = (y - startY) * 2; container.scrollLeft = scrollLeft - walkX; container.scrollTop = scrollTop - walkY; } function stopDragging() { isDragging = false; } // ROZWIĄZANIE JAVASCRIPT DLA STICKY COLUMN document.addEventListener('DOMContentLoaded', function() { // Funkcja do klonowania pierwszej kolumny function createStickyColumn() { const wrapper = document.querySelector('.table-wrapper'); const table = document.querySelector('.military-table'); if (!wrapper || !table) return; // Sprawdź czy jesteśmy na mobile if (window.innerWidth { const clonedRow = document.createElement('tr'); const firstCell = row.querySelector('td:first-child'); if (firstCell) { const clonedCell = firstCell.cloneNode(true); clonedCell.style.cssText = firstCell.style.cssText + ` box-shadow: 3px 0 8px rgba(0, 0, 0, 0.4) !important; border-right: 2px solid #2d4a2d !important; `; clonedRow.appendChild(clonedCell); } clonedTbody.appendChild(clonedRow); }); clonedTable.appendChild(clonedTbody); }

    // Dodaj sklonowaną tabelę do wrappera wrapper.style.position = 'relative'; wrapper.appendChild(clonedTable);

    // Synchronizuj wysokości wierszy setTimeout(() => { const originalRows = table.querySelectorAll('tr'); const clonedRows = clonedTable.querySelectorAll('tr');

    originalRows.forEach((row, index) => { if (clonedRows[index]) { const originalHeight = row.offsetHeight; clonedRows[index].style.height = originalHeight + 'px'; } }); }, 100);

    // Ukryj oryginalną pierwszą kolumnę podczas scrollowania wrapper.addEventListener('scroll', function() { if (wrapper.scrollLeft > 0) { table.style.marginLeft = '0px'; clonedTable.style.display = 'table'; } else { clonedTable.style.display = 'table'; } }); } }

    // Uruchom funkcję createStickyColumn();

    // Uruchom ponownie przy zmianie rozmiaru okna let resizeTimer; window.addEventListener('resize', function() { clearTimeout(resizeTimer); resizeTimer = setTimeout(createStickyColumn, 250); });

    // Dodatkowa obsługa dla urządzeń dotykowych const tableWrapper = document.querySelector('.table-wrapper'); if (tableWrapper) { let touchStartX = 0;

    tableWrapper.addEventListener('touchstart', function(e) { touchStartX = e.touches[0].clientX; }, { passive: true });

    tableWrapper.addEventListener('touchmove', function(e) { if (!touchStartX) return;

    const touchEndX = e.touches[0].clientX; const diff = touchStartX - touchEndX;

    // Przewijanie tylko w poziomie if (Math.abs(diff) > 5) { e.stopPropagation(); } }, { passive: true }); } });

    Wybierz opcjeWczytywanie Gotowe Ten produkt ma wiele wariantów. Opcje można wybrać na stronie produktu
  • Bluza kangurka Brandit Tom Sweathoody olive z głębokim kapturem i kieszenią kangurka

    Bluza Brandit Tom Sweathoody

    119,99 

    /* Stylowanie scrollbara w militarnym stylu */
    .military-popup-content::-webkit-scrollbar {
    width: 12px;
    }

    .military-popup-content::-webkit-scrollbar-track {
    background: rgba(45, 74, 45, 0.3);
    border-radius: 10px;
    }

    .military-popup-content::-webkit-scrollbar-thumb {
    background: linear-gradient(145deg, #4a6b4a, #3a5a3a);
    border-radius: 10px;
    border: 2px solid rgba(74, 107, 74, 0.5);
    }

    .military-popup-content::-webkit-scrollbar-thumb:hover {
    background: linear-gradient(145deg, #5a7b5a, #4a6a4a);
    }

    /* Blokowanie scrollowania strony gdy popup otwarty */
    body.military-popup-open {
    overflow: hidden !important;
    }

    /* STICKY COLUMN DLA MOBILE - WZMOCNIONE */
    @media (max-width: 768px) {
    /* Kontener tabeli z poziomym scrollem */
    .table-wrapper {
    position: relative !important;
    overflow-x: auto !important;
    overflow-y: visible !important;
    -webkit-overflow-scrolling: touch !important;
    display: block !important;
    }

    /* Reset dla tabeli */
    .military-table {
    position: relative !important;
    display: table !important;
    }

    /* Sticky pierwsza kolumna - WZMOCNIONE */
    .military-table thead th:first-child,
    .military-table tbody td:first-child {
    position: -webkit-sticky !important; /* Safari */
    position: sticky !important;
    left: 0px !important;
    z-index: 100 !important;
    background: linear-gradient(145deg, #4a6b4a, #3a5a3a) !important;
    }

    /* Alternatywna metoda dla starszych przeglądarek */
    @supports not (position: sticky) {
    .military-table thead th:first-child,
    .military-table tbody td:first-child {
    position: fixed !important;
    left: 0 !important;
    background: linear-gradient(145deg, #4a6b4a, #3a5a3a) !important;
    }
    }

    /* Dodatkowy cień dla lepszej widoczności */
    .military-table tbody td:first-child {
    box-shadow: 3px 0 8px rgba(0, 0, 0, 0.4) !important;
    border-right: 2px solid #2d4a2d !important;
    }

    .military-table thead th:first-child {
    box-shadow: 3px 0 8px rgba(0, 0, 0, 0.6) !important;
    border-right: 2px solid #2d4a2d !important;
    }

    /* Zapewnienie minimalnej szerokości dla pozostałych kolumn */
    .military-table th:not(:first-child),
    .military-table td:not(:first-child) {
    min-width: 100px;
    }

    /* Wymuszenie szerokości pierwszej kolumny */
    .military-table thead th:first-child,
    .military-table tbody td:first-child {
    min-width: 80px !important;
    max-width: 100px !important;
    }
    }

    /* Dodatkowe style dla lepszej responsywności */
    @media (max-width: 480px) {
    .military-popup-content {
    padding: 15px !important;
    margin: 20px auto !important;
    }

    .military-table {
    font-size: 10px !important;
    }

    .military-table th,
    .military-table td {
    padding: 6px !important;
    }
    }

    TABELA WYMIARÓW

    ⚠️ Tabela wymiarów

    TABELA WYMIARÓW KURTEK

    ⚠️ Tolerancja dla podanych wymiarów może wynosić +/- 2 cm
    📱 Na urządzeniach mobilnych: przewijaj tabelę w poziomie, kolumna z rozmiarami pozostanie widoczna

    JAK MIERZYĆ KURTKI

    🔍 Kliknij na zdjęcie aby powiększyć

    Jak mierzyć kurtki - instrukcja

    📏 INSTRUKCJA MIERZENIA KURTEK
    A – SZEROKOŚĆ KLATKI PIERSIOWEJ:
    • Połóż kurtkę płasko na powierzchni
    • Zmierz szerokość od pachy do pachy w najszerszym miejscu
    B – DŁUGOŚĆ RĘKAWA:
    • Mierz od szwu ramienia (punkt łączenia z korpusem)
    • Do końca mankietu rękawa
    C – DŁUGOŚĆ CAŁKOWITA:
    • Od najwyższego punktu kołnierza z tyłu
    • Do najniższego punktu kurtki
    ⚠️ TOLERANCJA: +/- 2cm dla wszystkich wymiarów

    ROZMIAR SZEROKOŚĆ
    W KLATCE
    PIERSIOWEJ
    (CM)
    DŁUGOŚĆ
    RĘKAWA
    (CM)
    DŁUGOŚĆ
    CAŁKOWITA
    PLECY
    (CM)
    S 56 68 84
    M 59 69 85
    L 62 70 86
    XL 65 70 87
    XXL 68 71 88
    3XL 71 71 89
    4XL 75 71 91
    5XL 78 71 91
    6XL 83 71 92
    7XL 88 71 93




    Przewijaj kółkiem myszy lub użyj przycisków • Przeciągnij aby przesunąć • Kliknij poza zdjęciem aby zamknąć

    Powiększona instrukcja

    let currentZoom = 1; let isDragging = false; let startX, startY, scrollLeft, scrollTop;

    function handleJacketImageError(img) { console.log('Próbuję alternatywne formaty obrazka...');

    const alternatives = [ 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.jpg', 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.jpeg', 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.png', 'https://militariapro.pl/wp-content/uploads/2025/09/kurtki-brandit.jpg', 'https://militariapro.pl/wp-content/uploads/2025/09/kurtki-brandit.png' ];

    let currentIndex = 0;

    function tryNextFormat() { if (currentIndex < alternatives.length) { img.onerror = function() { currentIndex++; setTimeout(tryNextFormat, 100); }; img.src = alternatives[currentIndex]; } else { img.style.display = 'none'; img.onclick = null; img.style.cursor = 'default'; document.getElementById('jacket-text-fallback').style.display = 'block'; } } tryNextFormat(); } function openImageZoom(imageSrc) { const modal = document.getElementById('image-zoom-modal'); const zoomedImg = document.getElementById('zoomed-image'); zoomedImg.src = 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.webp'; zoomedImg.onerror = function() { const fallbacks = [ 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.png', 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.jpg', imageSrc ]; let index = 0; function tryNext() { if (index < fallbacks.length) { zoomedImg.src = fallbacks[index]; index++; if (index < fallbacks.length) { zoomedImg.onerror = tryNext; } } } tryNext(); }; modal.style.display = 'block'; currentZoom = 1; zoomedImg.style.transform = `scale(${currentZoom})`; const container = document.getElementById('zoom-container'); container.addEventListener('mousedown', startDragging); container.addEventListener('mousemove', drag); container.addEventListener('mouseup', stopDragging); container.addEventListener('mouseleave', stopDragging); container.addEventListener('wheel', handleWheel); } function closeImageZoom() { const modal = document.getElementById('image-zoom-modal'); modal.style.display = 'none'; const container = document.getElementById('zoom-container'); container.removeEventListener('mousedown', startDragging); container.removeEventListener('mousemove', drag); container.removeEventListener('mouseup', stopDragging); container.removeEventListener('mouseleave', stopDragging); container.removeEventListener('wheel', handleWheel); } function zoomIn() { currentZoom = Math.min(currentZoom + 0.5, 5); document.getElementById('zoomed-image').style.transform = `scale(${currentZoom})`; } function zoomOut() { currentZoom = Math.max(currentZoom - 0.5, 0.5); document.getElementById('zoomed-image').style.transform = `scale(${currentZoom})`; } function resetZoom() { currentZoom = 1; document.getElementById('zoomed-image').style.transform = `scale(${currentZoom})`; document.getElementById('zoom-container').scrollLeft = 0; document.getElementById('zoom-container').scrollTop = 0; } function handleWheel(e) { e.preventDefault(); if (e.deltaY < 0) { zoomIn(); } else { zoomOut(); } } function startDragging(e) { isDragging = true; const container = document.getElementById('zoom-container'); startX = e.pageX - container.offsetLeft; startY = e.pageY - container.offsetTop; scrollLeft = container.scrollLeft; scrollTop = container.scrollTop; e.preventDefault(); } function drag(e) { if (!isDragging) return; e.preventDefault(); const container = document.getElementById('zoom-container'); const x = e.pageX - container.offsetLeft; const y = e.pageY - container.offsetTop; const walkX = (x - startX) * 2; const walkY = (y - startY) * 2; container.scrollLeft = scrollLeft - walkX; container.scrollTop = scrollTop - walkY; } function stopDragging() { isDragging = false; } // ROZWIĄZANIE JAVASCRIPT DLA STICKY COLUMN document.addEventListener('DOMContentLoaded', function() { // Funkcja do klonowania pierwszej kolumny function createStickyColumn() { const wrapper = document.querySelector('.table-wrapper'); const table = document.querySelector('.military-table'); if (!wrapper || !table) return; // Sprawdź czy jesteśmy na mobile if (window.innerWidth { const clonedRow = document.createElement('tr'); const firstCell = row.querySelector('td:first-child'); if (firstCell) { const clonedCell = firstCell.cloneNode(true); clonedCell.style.cssText = firstCell.style.cssText + ` box-shadow: 3px 0 8px rgba(0, 0, 0, 0.4) !important; border-right: 2px solid #2d4a2d !important; `; clonedRow.appendChild(clonedCell); } clonedTbody.appendChild(clonedRow); }); clonedTable.appendChild(clonedTbody); }

    // Dodaj sklonowaną tabelę do wrappera wrapper.style.position = 'relative'; wrapper.appendChild(clonedTable);

    // Synchronizuj wysokości wierszy setTimeout(() => { const originalRows = table.querySelectorAll('tr'); const clonedRows = clonedTable.querySelectorAll('tr');

    originalRows.forEach((row, index) => { if (clonedRows[index]) { const originalHeight = row.offsetHeight; clonedRows[index].style.height = originalHeight + 'px'; } }); }, 100);

    // Ukryj oryginalną pierwszą kolumnę podczas scrollowania wrapper.addEventListener('scroll', function() { if (wrapper.scrollLeft > 0) { table.style.marginLeft = '0px'; clonedTable.style.display = 'table'; } else { clonedTable.style.display = 'table'; } }); } }

    // Uruchom funkcję createStickyColumn();

    // Uruchom ponownie przy zmianie rozmiaru okna let resizeTimer; window.addEventListener('resize', function() { clearTimeout(resizeTimer); resizeTimer = setTimeout(createStickyColumn, 250); });

    // Dodatkowa obsługa dla urządzeń dotykowych const tableWrapper = document.querySelector('.table-wrapper'); if (tableWrapper) { let touchStartX = 0;

    tableWrapper.addEventListener('touchstart', function(e) { touchStartX = e.touches[0].clientX; }, { passive: true });

    tableWrapper.addEventListener('touchmove', function(e) { if (!touchStartX) return;

    const touchEndX = e.touches[0].clientX; const diff = touchStartX - touchEndX;

    // Przewijanie tylko w poziomie if (Math.abs(diff) > 5) { e.stopPropagation(); } }, { passive: true }); } });

    Wybierz opcjeWczytywanie Gotowe Ten produkt ma wiele wariantów. Opcje można wybrać na stronie produktu
  • Polar Brandit Fleecejacket Ripstop

    Polar Brandit Fleecejacket Ripstop

    239,00 

    /* Stylowanie scrollbara w militarnym stylu */
    .military-popup-content::-webkit-scrollbar {
    width: 12px;
    }

    .military-popup-content::-webkit-scrollbar-track {
    background: rgba(45, 74, 45, 0.3);
    border-radius: 10px;
    }

    .military-popup-content::-webkit-scrollbar-thumb {
    background: linear-gradient(145deg, #4a6b4a, #3a5a3a);
    border-radius: 10px;
    border: 2px solid rgba(74, 107, 74, 0.5);
    }

    .military-popup-content::-webkit-scrollbar-thumb:hover {
    background: linear-gradient(145deg, #5a7b5a, #4a6a4a);
    }

    /* Blokowanie scrollowania strony gdy popup otwarty */
    body.military-popup-open {
    overflow: hidden !important;
    }

    /* STICKY COLUMN DLA MOBILE - WZMOCNIONE */
    @media (max-width: 768px) {
    /* Kontener tabeli z poziomym scrollem */
    .table-wrapper {
    position: relative !important;
    overflow-x: auto !important;
    overflow-y: visible !important;
    -webkit-overflow-scrolling: touch !important;
    display: block !important;
    }

    /* Reset dla tabeli */
    .military-table {
    position: relative !important;
    display: table !important;
    }

    /* Sticky pierwsza kolumna - WZMOCNIONE */
    .military-table thead th:first-child,
    .military-table tbody td:first-child {
    position: -webkit-sticky !important; /* Safari */
    position: sticky !important;
    left: 0px !important;
    z-index: 100 !important;
    background: linear-gradient(145deg, #4a6b4a, #3a5a3a) !important;
    }

    /* Alternatywna metoda dla starszych przeglądarek */
    @supports not (position: sticky) {
    .military-table thead th:first-child,
    .military-table tbody td:first-child {
    position: fixed !important;
    left: 0 !important;
    background: linear-gradient(145deg, #4a6b4a, #3a5a3a) !important;
    }
    }

    /* Dodatkowy cień dla lepszej widoczności */
    .military-table tbody td:first-child {
    box-shadow: 3px 0 8px rgba(0, 0, 0, 0.4) !important;
    border-right: 2px solid #2d4a2d !important;
    }

    .military-table thead th:first-child {
    box-shadow: 3px 0 8px rgba(0, 0, 0, 0.6) !important;
    border-right: 2px solid #2d4a2d !important;
    }

    /* Zapewnienie minimalnej szerokości dla pozostałych kolumn */
    .military-table th:not(:first-child),
    .military-table td:not(:first-child) {
    min-width: 100px;
    }

    /* Wymuszenie szerokości pierwszej kolumny */
    .military-table thead th:first-child,
    .military-table tbody td:first-child {
    min-width: 80px !important;
    max-width: 100px !important;
    }
    }

    /* Dodatkowe style dla lepszej responsywności */
    @media (max-width: 480px) {
    .military-popup-content {
    padding: 15px !important;
    margin: 20px auto !important;
    }

    .military-table {
    font-size: 10px !important;
    }

    .military-table th,
    .military-table td {
    padding: 6px !important;
    }
    }

    TABELA WYMIARÓW

    ⚠️ Tabela wymiarów

    TABELA WYMIARÓW KURTEK

    ⚠️ Tolerancja dla podanych wymiarów może wynosić +/- 2 cm
    📱 Na urządzeniach mobilnych: przewijaj tabelę w poziomie, kolumna z rozmiarami pozostanie widoczna

    JAK MIERZYĆ KURTKI

    🔍 Kliknij na zdjęcie aby powiększyć

    Jak mierzyć kurtki - instrukcja

    📏 INSTRUKCJA MIERZENIA KURTEK
    A – SZEROKOŚĆ KLATKI PIERSIOWEJ:
    • Połóż kurtkę płasko na powierzchni
    • Zmierz szerokość od pachy do pachy w najszerszym miejscu
    B – DŁUGOŚĆ RĘKAWA:
    • Mierz od szwu ramienia (punkt łączenia z korpusem)
    • Do końca mankietu rękawa
    C – DŁUGOŚĆ CAŁKOWITA:
    • Od najwyższego punktu kołnierza z tyłu
    • Do najniższego punktu kurtki
    ⚠️ TOLERANCJA: +/- 2cm dla wszystkich wymiarów

    ROZMIAR SZEROKOŚĆ
    W KLATCE
    PIERSIOWEJ
    (CM)
    DŁUGOŚĆ
    RĘKAWA
    (CM)
    DŁUGOŚĆ
    CAŁKOWITA
    PLECY
    (CM)
    S 56 68 84
    M 59 69 85
    L 62 70 86
    XL 65 70 87
    XXL 68 71 88
    3XL 71 71 89
    4XL 75 71 91
    5XL 78 71 91
    6XL 83 71 92
    7XL 88 71 93




    Przewijaj kółkiem myszy lub użyj przycisków • Przeciągnij aby przesunąć • Kliknij poza zdjęciem aby zamknąć

    Powiększona instrukcja

    let currentZoom = 1; let isDragging = false; let startX, startY, scrollLeft, scrollTop;

    function handleJacketImageError(img) { console.log('Próbuję alternatywne formaty obrazka...');

    const alternatives = [ 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.jpg', 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.jpeg', 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.png', 'https://militariapro.pl/wp-content/uploads/2025/09/kurtki-brandit.jpg', 'https://militariapro.pl/wp-content/uploads/2025/09/kurtki-brandit.png' ];

    let currentIndex = 0;

    function tryNextFormat() { if (currentIndex < alternatives.length) { img.onerror = function() { currentIndex++; setTimeout(tryNextFormat, 100); }; img.src = alternatives[currentIndex]; } else { img.style.display = 'none'; img.onclick = null; img.style.cursor = 'default'; document.getElementById('jacket-text-fallback').style.display = 'block'; } } tryNextFormat(); } function openImageZoom(imageSrc) { const modal = document.getElementById('image-zoom-modal'); const zoomedImg = document.getElementById('zoomed-image'); zoomedImg.src = 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.webp'; zoomedImg.onerror = function() { const fallbacks = [ 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.png', 'https://militariapro.pl/wp-content/uploads/2025/09/Kurtki_brandit.jpg', imageSrc ]; let index = 0; function tryNext() { if (index < fallbacks.length) { zoomedImg.src = fallbacks[index]; index++; if (index < fallbacks.length) { zoomedImg.onerror = tryNext; } } } tryNext(); }; modal.style.display = 'block'; currentZoom = 1; zoomedImg.style.transform = `scale(${currentZoom})`; const container = document.getElementById('zoom-container'); container.addEventListener('mousedown', startDragging); container.addEventListener('mousemove', drag); container.addEventListener('mouseup', stopDragging); container.addEventListener('mouseleave', stopDragging); container.addEventListener('wheel', handleWheel); } function closeImageZoom() { const modal = document.getElementById('image-zoom-modal'); modal.style.display = 'none'; const container = document.getElementById('zoom-container'); container.removeEventListener('mousedown', startDragging); container.removeEventListener('mousemove', drag); container.removeEventListener('mouseup', stopDragging); container.removeEventListener('mouseleave', stopDragging); container.removeEventListener('wheel', handleWheel); } function zoomIn() { currentZoom = Math.min(currentZoom + 0.5, 5); document.getElementById('zoomed-image').style.transform = `scale(${currentZoom})`; } function zoomOut() { currentZoom = Math.max(currentZoom - 0.5, 0.5); document.getElementById('zoomed-image').style.transform = `scale(${currentZoom})`; } function resetZoom() { currentZoom = 1; document.getElementById('zoomed-image').style.transform = `scale(${currentZoom})`; document.getElementById('zoom-container').scrollLeft = 0; document.getElementById('zoom-container').scrollTop = 0; } function handleWheel(e) { e.preventDefault(); if (e.deltaY < 0) { zoomIn(); } else { zoomOut(); } } function startDragging(e) { isDragging = true; const container = document.getElementById('zoom-container'); startX = e.pageX - container.offsetLeft; startY = e.pageY - container.offsetTop; scrollLeft = container.scrollLeft; scrollTop = container.scrollTop; e.preventDefault(); } function drag(e) { if (!isDragging) return; e.preventDefault(); const container = document.getElementById('zoom-container'); const x = e.pageX - container.offsetLeft; const y = e.pageY - container.offsetTop; const walkX = (x - startX) * 2; const walkY = (y - startY) * 2; container.scrollLeft = scrollLeft - walkX; container.scrollTop = scrollTop - walkY; } function stopDragging() { isDragging = false; } // ROZWIĄZANIE JAVASCRIPT DLA STICKY COLUMN document.addEventListener('DOMContentLoaded', function() { // Funkcja do klonowania pierwszej kolumny function createStickyColumn() { const wrapper = document.querySelector('.table-wrapper'); const table = document.querySelector('.military-table'); if (!wrapper || !table) return; // Sprawdź czy jesteśmy na mobile if (window.innerWidth { const clonedRow = document.createElement('tr'); const firstCell = row.querySelector('td:first-child'); if (firstCell) { const clonedCell = firstCell.cloneNode(true); clonedCell.style.cssText = firstCell.style.cssText + ` box-shadow: 3px 0 8px rgba(0, 0, 0, 0.4) !important; border-right: 2px solid #2d4a2d !important; `; clonedRow.appendChild(clonedCell); } clonedTbody.appendChild(clonedRow); }); clonedTable.appendChild(clonedTbody); }

    // Dodaj sklonowaną tabelę do wrappera wrapper.style.position = 'relative'; wrapper.appendChild(clonedTable);

    // Synchronizuj wysokości wierszy setTimeout(() => { const originalRows = table.querySelectorAll('tr'); const clonedRows = clonedTable.querySelectorAll('tr');

    originalRows.forEach((row, index) => { if (clonedRows[index]) { const originalHeight = row.offsetHeight; clonedRows[index].style.height = originalHeight + 'px'; } }); }, 100);

    // Ukryj oryginalną pierwszą kolumnę podczas scrollowania wrapper.addEventListener('scroll', function() { if (wrapper.scrollLeft > 0) { table.style.marginLeft = '0px'; clonedTable.style.display = 'table'; } else { clonedTable.style.display = 'table'; } }); } }

    // Uruchom funkcję createStickyColumn();

    // Uruchom ponownie przy zmianie rozmiaru okna let resizeTimer; window.addEventListener('resize', function() { clearTimeout(resizeTimer); resizeTimer = setTimeout(createStickyColumn, 250); });

    // Dodatkowa obsługa dla urządzeń dotykowych const tableWrapper = document.querySelector('.table-wrapper'); if (tableWrapper) { let touchStartX = 0;

    tableWrapper.addEventListener('touchstart', function(e) { touchStartX = e.touches[0].clientX; }, { passive: true });

    tableWrapper.addEventListener('touchmove', function(e) { if (!touchStartX) return;

    const touchEndX = e.touches[0].clientX; const diff = touchStartX - touchEndX;

    // Przewijanie tylko w poziomie if (Math.abs(diff) > 5) { e.stopPropagation(); } }, { passive: true }); } });

    Wybierz opcjeWczytywanie Gotowe Ten produkt ma wiele wariantów. Opcje można wybrać na stronie produktu
  • Koszulka męska Brandit Tropenshirt z krótkim rękawem, mieszanka bawełna i polietylen, dwa panele velcro na klatce piersiowej pod naszywki, luźny krój, wytrzymała konstrukcja outdoor, widok na przód koszulki na neutralnym tle.

    Koszulka T-Shirt Brandit Tropenshirt

    69,99 

    MISSION BRIEFING – KOSZULKA BRANDIT TROPENSHIRT TACTICAL FEATURES: MIESZANKA BAWEŁNA + POLIETYLEN – oddychająca, szybkoschnąca i odporna na przetarcia. DWA PANELE VELCRO NA KLATCE PIERSIOWEJ – montaż flag, emblematów, morale patches. PŁASKIE SZWY I ŚCIĄGACZ – ochrona przed otarciami i rozciąganiem. LUŹNY KOMFORTOWY KRÓJ – nie krępuje ruchów podczas aktywności. WYTRZYMAŁA KONSTRUKCJA – outdoor, survival,…

    Wybierz opcjeWczytywanie Gotowe Ten produkt ma wiele wariantów. Opcje można wybrać na stronie produktu
  • Koszulka męska Brandit QuickDry z krótkim rękawem, technologia szybkiego schnięcia, panele velcro na ramionach pod naszywki, luźny krój, poliester 100%, taktyczna warstwa bazowa, widok na przód koszulki na neutralnym tle.

    Koszulka T-shirt Brandit Quickdry Short Sleeve

    79,95 

    MISSION BRIEFING – KOSZULKA BRANDIT QUICKDRY T-SHIRT TACTICAL FEATURES: TECHNOLOGIA QUICKDRY – szybkie odprowadzanie wilgoci, skóra pozostaje sucha. POLIESTER 100% – trwały, szybkoschnący, idealny do intensywnego wysiłku. PANELE VELCRO NA RĘKAWACH – montaż naszywek i identyfikatorów. LUŹNY ERGONOMICZNY KRÓJ – pełna swoboda ruchów. MIĘKKA TAŚMA WOKÓŁ SZYI – ochrona przed otarciami. PODSTAWOWE DANE: Model: Brandit…

    Wybierz opcjeWczytywanie Gotowe Ten produkt ma wiele wariantów. Opcje można wybrać na stronie produktu
  • Koszulka męska Brandit Army T-shirt z krótkim rękawem, regularny krój, bawełna 160g/m², nadruk ARMY na klatce piersiowej, militarny styl casual, widok na przód koszulki na neutralnym tle.

    Koszulka T-Shirt Brandit Army

    69,99 

    MISSION BRIEFING – KOSZULKA BRANDIT ARMY T-SHIRT TACTICAL FEATURES: BAWEŁNA 160 G/M² – wysoki komfort noszenia i dobra przewiewność. REGULARNY KRÓJ – swoboda ruchu bez opinania. TRWAŁY NADRUK ARMY – odporny na pranie i długotrwałe użytkowanie. MIĘKKI ŚCIĄGACZ SZYI – chroni przed rozciąganiem i otarciami. PODSTAWOWE DANE: Model: Brandit Army T-Shirt – męska koszulka z…

    Wybierz opcjeWczytywanie Gotowe Ten produkt ma wiele wariantów. Opcje można wybrać na stronie produktu
  • Spodnie bojówki Brandit Savannah z odpinanymi nogawkami 3w1, męski krój cargo, szerokie nogawki, liczne kieszenie zapinane na zamek i rzep, militarny styl outdoor, widok na cały przód spodni na neutralnym tle

    Spodnie Brandit Savannah

    169,99 

    /* Stylowanie scrollbara w militarnym stylu */ .military-popup-content::-webkit-scrollbar { width: 12px; }

    .military-popup-content::-webkit-scrollbar-track { background: rgba(45, 74, 45, 0.3); border-radius: 10px; }

    .military-popup-content::-webkit-scrollbar-thumb { background: linear-gradient(145deg, #4a6b4a, #3a5a3a); border-radius: 10px; border: 2px solid rgba(74, 107, 74, 0.5); }

    .military-popup-content::-webkit-scrollbar-thumb:hover { background: linear-gradient(145deg, #5a7b5a, #4a6a4a); }

    /* Blokowanie scrollowania strony gdy popup otwarty */ body.military-popup-open { overflow: hidden !important; }

    /* STICKY COLUMN DLA MOBILE - WZMOCNIONE */ @media (max-width: 768px) { /* Kontener tabeli z poziomym scrollem */ .table-wrapper { position: relative !important; overflow-x: auto !important; overflow-y: visible !important; -webkit-overflow-scrolling: touch !important; display: block !important; }

    /* Reset dla tabeli */ .military-table { position: relative !important; display: table !important; }

    /* Sticky pierwsza kolumna - WZMOCNIONE */ .military-table thead th:first-child, .military-table tbody td:first-child { position: -webkit-sticky !important; /* Safari */ position: sticky !important; left: 0px !important; z-index: 100 !important; background: linear-gradient(145deg, #4a6b4a, #3a5a3a) !important; }

    /* Alternatywna metoda dla starszych przeglądarek */ @supports not (position: sticky) { .military-table thead th:first-child, .military-table tbody td:first-child { position: fixed !important; left: 0 !important; background: linear-gradient(145deg, #4a6b4a, #3a5a3a) !important; } }

    /* Dodatkowy cień dla lepszej widoczności */ .military-table tbody td:first-child { box-shadow: 3px 0 8px rgba(0, 0, 0, 0.4) !important; border-right: 2px solid #2d4a2d !important; }

    .military-table thead th:first-child { box-shadow: 3px 0 8px rgba(0, 0, 0, 0.6) !important; border-right: 2px solid #2d4a2d !important; }

    /* Zapewnienie minimalnej szerokości dla pozostałych kolumn */ .military-table th:not(:first-child), .military-table td:not(:first-child) { min-width: 100px; }

    /* Wymuszenie szerokości pierwszej kolumny */ .military-table thead th:first-child, .military-table tbody td:first-child { min-width: 80px !important; max-width: 100px !important; } }

    /* Dodatkowe style dla lepszej responsywności */ @media (max-width: 480px) { .military-popup-content { padding: 15px !important; margin: 20px auto !important; }

    .military-table { font-size: 10px !important; }

    .military-table th, .military-table td { padding: 6px !important; } }

    TABELA WYMIARÓW

    ⚠️ Tabela wymiarów

    TABELA WYMIARÓW SPODNI

    ⚠️ Tolerancja dla podanych wymiarów może wynosić +/- 2 cm
    📱 Na urządzeniach mobilnych: przewijaj tabelę w poziomie, kolumna z rozmiarami pozostanie widoczna

    JAK MIERZYĆ SPODNIE

    🔍 Kliknij na zdjęcie aby powiększyć

    Jak mierzyć spodnie - instrukcja

    📏 INSTRUKCJA MIERZENIA SPODNI
    A – OBWÓD W PASIE:
    • Połóż spodnie płasko na powierzchni
    • Zmierz szerokość pasa i pomnóż przez 2
    E – DŁUGOŚĆ NOGAWKI OD KROKU:
    • Mierz od szwu krokowego do końca nogawki
    F – DŁUGOŚĆ CAŁKOWITA:
    • Od góry pasa do końca nogawki
    ⚠️ TOLERANCJA: +/- 2cm dla wszystkich wymiarów

    ROZMIAR OBWÓD
    W PASIE
    (CM)
    DŁUGOŚĆ
    NOGAWKI
    OD KROKU
    (CM)
    DŁUGOŚĆ
    CAŁKOWITA
    (CM)
    S 79 78 108
    M 84 78 108,5
    L 89 81 112
    XL 94 81 112,5
    XXL 100 84 116
    3XL 106 84 117
    4XL 111 84 117,5
    5XL 116 84 118
    6XL 121 84 118,5




    Przewijaj kółkiem myszy lub użyj przycisków • Przeciągnij aby przesunąć • Kliknij poza zdjęciem aby zamknąć

    Powiększona instrukcja

    let currentZoomSpodnie = 1; let isDraggingSpodnie = false; let startXSpodnie, startYSpodnie, scrollLeftSpodnie, scrollTopSpodnie;

    function handlePantsImageError(img) { console.log('Próbuję alternatywne formaty obrazka...');

    const alternatives = [ 'https://militariapro.pl/wp-content/uploads/2025/11/rozmiar-spodni.webp' ];

    let currentIndex = 0;

    function tryNextFormat() { if (currentIndex < alternatives.length) { img.onerror = function() { currentIndex++; setTimeout(tryNextFormat, 100); }; img.src = alternatives[currentIndex]; } else { img.style.display = 'none'; img.onclick = null; img.style.cursor = 'default'; document.getElementById('pants-text-fallback').style.display = 'block'; } } tryNextFormat(); } function openImageZoomSpodnie(imageSrc) { const modal = document.getElementById('image-function openImageZoomSpodnie(imageSrc) { const modal = document.getElementById('image-zoom-modal-spodnie'); const zoomedImg = document.getElementById('zoomed-image-spodnie'); zoomedImg.src = 'https://militariapro.pl/wp-content/uploads/2025/11/rozmiar-spodni.webp'; zoomedImg.onerror = function() { const fallbacks = [ 'https://militariapro.pl/wp-content/uploads/2025/11/rozmiar-spodni.webp', imageSrc ]; let index = 0; function tryNext() { if (index < fallbacks.length) { zoomedImg.src = fallbacks[index]; index++; if (index < fallbacks.length) { zoomedImg.onerror = tryNext; } } } tryNext(); }; modal.style.display = 'block'; currentZoomSpodnie = 1; zoomedImg.style.transform = `scale(${currentZoomSpodnie})`; const container = document.getElementById('zoom-container-spodnie'); container.addEventListener('mousedown', startDraggingSpodnie); container.addEventListener('mousemove', dragSpodnie); container.addEventListener('mouseup', stopDraggingSpodnie); container.addEventListener('mouseleave', stopDraggingSpodnie); container.addEventListener('wheel', handleWheelSpodnie); } function closeImageZoomSpodnie() { const modal = document.getElementById('image-zoom-modal-spodnie'); modal.style.display = 'none'; const container = document.getElementById('zoom-container-spodnie'); container.removeEventListener('mousedown', startDraggingSpodnie); container.removeEventListener('mousemove', dragSpodnie); container.removeEventListener('mouseup', stopDraggingSpodnie); container.removeEventListener('mouseleave', stopDraggingSpodnie); container.removeEventListener('wheel', handleWheelSpodnie); } function zoomInSpodnie() { currentZoomSpodnie = Math.min(currentZoomSpodnie + 0.5, 5); document.getElementById('zoomed-image-spodnie').style.transform = `scale(${currentZoomSpodnie})`; } function zoomOutSpodnie() { currentZoomSpodnie = Math.max(currentZoomSpodnie - 0.5, 0.5); document.getElementById('zoomed-image-spodnie').style.transform = `scale(${currentZoomSpodnie})`; } function resetZoomSpodnie() { currentZoomSpodnie = 1; document.getElementById('zoomed-image-spodnie').style.transform = `scale(${currentZoomSpodnie})`; document.getElementById('zoom-container-spodnie').scrollLeft = 0; document.getElementById('zoom-container-spodnie').scrollTop = 0; } function handleWheelSpodnie(e) { e.preventDefault(); if (e.deltaY < 0) { zoomInSpodnie(); } else { zoomOutSpodnie(); } } function startDraggingSpodnie(e) { isDraggingSpodnie = true; const container = document.getElementById('zoom-container-spodnie'); startXSpodnie = e.pageX - container.offsetLeft; startYSpodnie = e.pageY - container.offsetTop; scrollLeftSpodnie = container.scrollLeft; scrollTopSpodnie = container.scrollTop; e.preventDefault(); } function dragSpodnie(e) { if (!isDraggingSpodnie) return; e.preventDefault(); const container = document.getElementById('zoom-container-spodnie'); const x = e.pageX - container.offsetLeft; const y = e.pageY - container.offsetTop; const walkX = (x - startXSpodnie) * 2; const walkY = (y - startYSpodnie) * 2; container.scrollLeft = scrollLeftSpodnie - walkX; container.scrollTop = scrollTopSpodnie - walkY; } function stopDraggingSpodnie() { isDraggingSpodnie = false; }

    Wybierz opcjeWczytywanie Gotowe Ten produkt ma wiele wariantów. Opcje można wybrać na stronie produktu
  • Spodnie damskie Brandit M65 w akcji - kultowy krój militarny z damskim dopasowaniem i funkcjonalnymi kieszeniami cargo

    Spodnie damskie Brandit M65

    Zakres cen: od 130,00 zł do 190,00 zł

    MISSION BRIEFING – BRANDIT M65 WOMEN’S PANTS TACTICAL FEATURES: LEGENDARNY KRÓJ M65 – KULTOWY WZÓR MILITARNY 100% WYSOKOGATUNKOWA BAWEŁNA DAMSKI ERGONOMICZNY KRÓJ DOPASOWANY DO SYLWETKI 6 KIESZENI ZAPINANYCH NA NAPY (ZATRZASKI) TAŚMY REGULACYJNE DO OBWIĄZANIA NA BUCIE SZEROKIE NOGAWKI NIE KRĘPUJĄCE RUCHÓW PODSTAWOWE DANE: KATEGORIA: DAMSKIE SPODNIE MILITARNE / FIELD PANTS MATERIAŁ: 100% BAWEŁNA (TWILL…

    Wybierz opcjeWczytywanie Gotowe Ten produkt ma wiele wariantów. Opcje można wybrać na stronie produktu