Dandy Horse AR 60 ARV
Aerodynamiczne koła o piórkowo niskiej masie. To model dla zadeklarowanych szosowców, którzy nie uznają półśrodków.
Masa: od 1515 g
Zakres cen: od 6.799 zł do 8.149 zł
Dandy Horse ARX 60
Koła o wysokim profilu to w pewnym sensie manifest, a zarazem zobowiązanie. Jazda z wysoką prędkością to ich żywioł.
Masa: od 1575 g
Zakres cen: od 5.599 zł do 6.949 zł
Dandy Horse ARX 60
Twoja szosówka zasługuje na aerodynamiczne koła, niezależnie od tego, czy jeździsz dla wyników, czy dla przyjemności.
Masa: od 1605 g
Zakres cen: od 4.999 zł do 5.859 zł
Dandy Horse ARV 45
Topowe koła na obręczach hooked, z dyskretnym, grawerowanym logo. Jedne z najlżejszych w swojej klasie.
Masa: od 1365 g
Zakres cen: od 6.499 zł do 8.049 zł
Dandy Horse ARX 45
Koła ARX 45 poniosą cię z zapierającą dech lekkością niezależnie od tego, czy jeździsz dla przyjemności, czy się ścigasz. Jeżeli doposażysz w nie swój rower, to gwarantujemy, że dzięki nim zmieni się diametralnie, tak że nie będziesz chciał z niego zsiadać.
Masa: od 1415 g
Zakres cen: od 5.399 zł do 6.949 zł
Dandy Horse ARX 45
AR 45 to koła szosowe z tradycyjnym rantem z haczykiem. Zaprojektowaliśmy je bez zbędnych bajerów, ale priorytety pozostały te same – lekkość, sztywność, bezawaryjność.
Masa: od 1440 g
Zakres cen: od 4.799 zł do 5.659 zł
Dandy Horse ARV 30
Topowe koła do szosy i gravela — bezkompromisowo szybkie zarówno na asfalcie, jak i w terenie.
Masa: od 1305 g
Zakres cen: od 6.499 zł do 8.049 zł
Dandy Horse ARX 30
Szybkie i responsywne koła o sportowym rodowodzie, które pozwolą Ci w pełni wykorzystać potencjał Twoich nóg.
Masa: od 1385 g
Zakres cen: od 5.399 zł do 6.949 zł
Dandy Horse ARX 30
Wszechstronny model kół szosowo-gravelowych. Sprawdzą się doskonale zarówno na asfalcie, jak i w terenie.
Masa: od 1450 g
Zakres cen: od 4.799 zł do 5.659 zł

SZOSA

W ofercie posiadamy koła szosowe dla wszystkich zawodników. Zarówno dla osób, które regularnie trenują i biorą udział w wyścigach, dla podróżników, a także rekreacyjnych kolarzy. Składamy koła z najwyższą starannością na komponentach topowej jakości. Znajdziesz u nas koła na obręczach karbonowych i aluminiowych, na wysokim i niskim profilu, pod tubeless, a także z rantem hookless. Budujemy koła na piastach Dandy Horse oraz DT Swiss. Na indywidualne zamówienie możemy złożyć koła na dostarczonych komponentach od różnych producentów. Szprychy są często pomijanym komponentem, podczas gdy mają one kluczowe znaczenie dla trwałości i bezawaryjności kół. Używamy tylko i wyłącznie szprych Sapim oraz DT, ponieważ uważamy, że tylko do tych dwóch producentów można mieć pełne zaufanie w kwestii jakości. Nasze koła szosowe są szybkie, lekkie i sztywne. Dla cięższych zawodników mamy w ofercie wzmocnione modele ze zwiększonym limitem wagowym.

Zgarnij dodatkowe 5% rabatu

Zapisz się do newslettera, by jako pierwszy dowiedzieć się o promocjach

(function() { const popupID = 4091; // <- Twoje ID popupu const requiredMs = 60000; // 60 sekund const startKey = "popupTimerStart_" + popupID; const closedKey = "popupClosed_" + popupID; const shownSessionKey = "popupShownSession_" + popupID; const maxWaitForElementorMs = 10000; // ile maksymalnie czekamy na elementorProFrontend // Jeśli zamknięto już popup (localStorage) — nie pokazuj więcej if (localStorage.getItem(closedKey)) return; // Ustal moment rozpoczęcia liczenia (persistuje między podstronami) let start = localStorage.getItem(startKey); if (!start) { start = Date.now(); localStorage.setItem(startKey, start); } else { start = parseInt(start, 10); } // Oblicz ile jeszcze brakuje do wymaganych 60s function msRemaining() { return Math.max(0, requiredMs - (Date.now() - start)); } // Funkcja pokazująca popup (gdy elementorProFrontend już gotowy) function tryShowPopup() { // jeśli użytkownik zamknął popup w międzyczasie — przerwij if (localStorage.getItem(closedKey)) return; // jeśli już pokazano w tej sesji — nie pokazuj ponownie if (sessionStorage.getItem(shownSessionKey)) return; // upewnij się, że obiekt elementora jest dostępny if (typeof elementorProFrontend !== "undefined" && elementorProFrontend && elementorProFrontend.modules && elementorProFrontend.modules.popup) { elementorProFrontend.modules.popup.showPopup({ id: popupID }); sessionStorage.setItem(shownSessionKey, "1"); } else { // jeśli elementor jeszcze nie załadowany — nic nie robimy tutaj console.warn("Elementor Pro popup module not ready yet."); } } // Czekaj na elementorProFrontend (polling), ale nie dłużej niż maxWaitForElementorMs function waitForElementorReady(cb) { const interval = 200; let waited = 0; const t = setInterval(function() { if (typeof elementorProFrontend !== "undefined" && elementorProFrontend && elementorProFrontend.modules && elementorProFrontend.modules.popup) { clearInterval(t); cb(true); } else { waited += interval; if (waited >= maxWaitForElementorMs) { clearInterval(t); cb(false); } } }, interval); } // Gdy popup zostanie zamknięty — zapisz to na stałe w localStorage (function bindCloseListener() { if (window.jQuery) { jQuery(document).on('elementor/popup/hide', function(event, id) { if (id === popupID) { localStorage.setItem(closedKey, "1"); } }); } else { // jeśli jQuery jeszcze nie dostępne, spróbuj za chwilę let tries = 0; const t = setInterval(function() { tries++; if (window.jQuery) { clearInterval(t); jQuery(document).on('elementor/popup/hide', function(event, id) { if (id === popupID) { localStorage.setItem(closedKey, "1"); } }); } else if (tries > 50) { clearInterval(t); } }, 200); } })(); // Teraz ustaw timeout — jeśli pozostały czas 0 => pokaż natychmiast (po upewnieniu się, że elementor jest gotowy) const remaining = msRemaining(); if (remaining <= 0) { waitForElementorReady(function(ready) { if (ready) tryShowPopup(); else { // jeśli elementor nie gotowy — spróbuj jeszcze raz po krótkim timeout setTimeout(tryShowPopup, 500); } }); } else { // ustaw timeout na pozostały czas; po upływie — spróbuj pokazać popup setTimeout(function() { waitForElementorReady(function(ready) { if (ready) tryShowPopup(); else { // jeśli elementor nie gotowy — spróbuj z małym opóźnieniem setTimeout(tryShowPopup, 500); } }); }, remaining); } // Dodatkowo: jeśli użytkownik zamknął popup w innej karcie/oknie, ten skrypt też to zauważy dzięki storage event window.addEventListener('storage', function(e) { if (e.key === closedKey && e.newValue) { // nic do zrobienia tutaj — warunki wyżej sprawią, że nic się nie pokaże } }); })();