Wyświetlanie 1–16 z 32 wynikówPosortowane według najnowszych

  • 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

    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

    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

    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

    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

    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

    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