{"product_id":"fafrees-f20-mate","title":"Fafrees F20 Mate – Elektryczny Rower Trójkołowy 250 W, 48 V 20 Ah","description":"\u003c!-- Fafrees F20 Mate | Shopify Product Content | Polish --\u003e\n\u003cdiv class=\"f20m-page\"\u003e\n\u003c!-- =====================================================\n       HERO\n  ====================================================== --\u003e\n\u003csection class=\"f20m-hero\"\u003e\n\u003cdiv class=\"f20m-hero-media\"\u003e\u003cvideo autoplay=\"autoplay\" muted=\"\" loop=\"loop\" playsinline=\"\" preload=\"metadata\" poster=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0974\/5704\/5777\/files\/eu-f20-mate-triciclo-electrico-cesta-trasera-portada..jpg?v=1786694062\"\u003e\n        \u003csource src=\"https:\/\/cdn.shopify.com\/videos\/c\/o\/v\/172868150e9f446a96fd58e9c5be93fb.mp4\" type=\"video\/mp4\"\u003e\u003c\/video\u003e\u003c\/div\u003e\n\u003cdiv class=\"f20m-hero-copy\"\u003e\n\u003cspan class=\"f20m-eyebrow\"\u003e Składany trójkołowy rower elektryczny \u003c\/span\u003e\n\u003ch2\u003eFafrees F20 Mate\u003c\/h2\u003e\n\u003cp\u003eTrójkołowy rower elektryczny stworzony z myślą o większej stabilności, komforcie i dużej możliwości przewożenia ładunku na co dzień. Wyposażony w silnik 250 W, wyjmowany akumulator 48 V 20 Ah oraz szerokie opony 20 × 3,0\".\u003c\/p\u003e\n\u003cdiv class=\"f20m-hero-specs\"\u003e\n\u003cdiv\u003e\n\u003cstrong\u003e250 W\u003c\/strong\u003e \u003cspan\u003eSilnik\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cstrong\u003e65 N·m\u003c\/strong\u003e \u003cspan\u003eMaks. moment obrotowy\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cstrong\u003e48 V 20 Ah\u003c\/strong\u003e \u003cspan\u003eAkumulator\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cstrong\u003e60–80 km\u003c\/strong\u003e \u003cspan\u003eZasięg\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003c!-- =====================================================\n       FEATURES\n  ====================================================== --\u003e\n\u003csection class=\"f20m-features\"\u003e\n\u003cdiv class=\"f20m-container\"\u003e\n\u003ch2\u003ePoznaj Fafrees F20 Mate\u003c\/h2\u003e\n\u003cdiv class=\"f20m-divider\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv id=\"f20mFeatureCards\" class=\"f20m-card-track\"\u003e\n\u003c!-- 01 --\u003e\n\u003carticle class=\"f20m-card\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0974\/5704\/5777\/files\/eu-f20-mate-triciclo-electrico-cesta-trasera-portada..jpg?v=1786694062\" alt=\"Widok elektrycznego trójkołowca Fafrees F20 Mate pokazujący jego trzykołową konstrukcję.\" loading=\"lazy\" decoding=\"async\"\u003e\n\u003ch3\u003eStabilność na trzech kołach\u003c\/h3\u003e\n\u003cp\u003eTrzy koła zapewniają większą stabilność i pewniejsze prowadzenie podczas codziennych przejazdów.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003c!-- 02 --\u003e\n\u003carticle class=\"f20m-card\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0974\/5704\/5777\/files\/eu-f20-mate-triciclo-electrico-motor-transmision..png?v=1786695974\" alt=\"Silnik i tylny układ napędowy elektrycznego trójkołowca Fafrees F20 Mate.\" loading=\"lazy\" decoding=\"async\"\u003e\n\u003ch3\u003eSilnik 250 W + tylny mechanizm różnicowy\u003c\/h3\u003e\n\u003cp\u003e65 N·m momentu obrotowego oraz tylny mechanizm różnicowy zapewniają płynne oddawanie mocy i bardziej naturalne pokonywanie zakrętów.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003c!-- 03 --\u003e\n\u003carticle class=\"f20m-card\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0974\/5704\/5777\/files\/eu-f20-mate-triciclo-electrico-bateria-extraible..jpg?v=1786696778\" alt=\"Wyjmowany akumulator 48 V 20 Ah elektrycznego trójkołowca Fafrees F20 Mate.\" loading=\"lazy\" decoding=\"async\"\u003e\n\u003ch3\u003eAkumulator 48 V 20 Ah\u003c\/h3\u003e\n\u003cp\u003eWyjmowany akumulator 960 Wh oferuje deklarowany zasięg 60–80 km.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003c!-- 04 --\u003e\n\u003carticle class=\"f20m-card\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0974\/5704\/5777\/files\/eu-f20-mate-triciclo-electrico-frenos-hidraulicos..png?v=1786695882\" alt=\"Hydrauliczne hamulce tarczowe elektrycznego trójkołowca Fafrees F20 Mate.\" loading=\"lazy\" decoding=\"async\"\u003e\n\u003ch3\u003eHydrauliczne hamulce 180 mm\u003c\/h3\u003e\n\u003cp\u003ePłynna, przewidywalna siła hamowania i większa kontrola podczas każdego przejazdu.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003c!-- 05 --\u003e\n\u003carticle class=\"f20m-card\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0974\/5704\/5777\/files\/eu-f20-mate-triciclo-electrico-faro-sillin-suspension..jpg?v=1786695900\" alt=\"Siodełko i układ amortyzacji elektrycznego trójkołowca Fafrees F20 Mate.\" loading=\"lazy\" decoding=\"async\"\u003e\n\u003ch3\u003ePodwójna amortyzacja\u003c\/h3\u003e\n\u003cp\u003eAmortyzowany przedni widelec i amortyzowana sztyca siodła skuteczniej tłumią nierówności nawierzchni.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003c!-- 06 --\u003e\n\u003carticle class=\"f20m-card\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0974\/5704\/5777\/files\/eu-f20-mate-triciclo-electrico-neumaticos-anchos-freno-disco.jpg?v=1786696407\" alt=\"Szeroka opona 20 × 3 cale elektrycznego trójkołowca Fafrees F20 Mate.\" loading=\"lazy\" decoding=\"async\"\u003e\n\u003ch3\u003eOpony 20 × 3,0\"\u003c\/h3\u003e\n\u003cp\u003eSzerokie opony zapewniają lepszą przyczepność i większy komfort na różnych rodzajach nawierzchni.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003c!-- 07 --\u003e\n\u003carticle class=\"f20m-card\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0974\/5704\/5777\/files\/eu-f20-mate-triciclo-electrico-pantalla-lcd-manillar..jpg?v=1786696425\" alt=\"Kolorowy wyświetlacz LCD IPS zamontowany na kierownicy elektrycznego trójkołowca Fafrees F20 Mate.\" loading=\"lazy\" decoding=\"async\"\u003e\n\u003ch3\u003eWyświetlacz IPS 3,5\"\u003c\/h3\u003e\n\u003cp\u003eCzytelny podgląd prędkości, poziomu akumulatora, przebiegu i poziomu wspomagania.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003c!-- 08 --\u003e\n\u003carticle class=\"f20m-card\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0974\/5704\/5777\/files\/eu-f20-mate-triciclo-electrico-plegable-gris..webp?v=1786694026\" alt=\"Szary Fafrees F20 Mate po złożeniu, ułatwiającym przechowywanie.\" loading=\"lazy\" decoding=\"async\"\u003e\n\u003ch3\u003eSkładany i łatwy do przechowywania\u003c\/h3\u003e\n\u003cp\u003eSkładana rama i kierownica pozwalają znacząco ograniczyć przestrzeń potrzebną do przechowywania.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003c!-- 09 --\u003e\n\u003carticle class=\"f20m-card\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0974\/5704\/5777\/files\/eu-f20-mate-triciclo-electrico-capacidad-carga-cestas..jpg?v=1786696469\" alt=\"Fafrees F20 Mate z widoczną przestrzenią ładunkową i tylnym koszem.\" loading=\"lazy\" decoding=\"async\"\u003e\n\u003ch3\u003eDo 180 kg maksymalnego obciążenia\u003c\/h3\u003e\n\u003cp\u003eDuża ładowność sprawdza się przy zakupach, bagażu i codziennym użytkowaniu.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003c!-- 10 --\u003e\n\u003carticle class=\"f20m-card\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0974\/5704\/5777\/files\/eu-f20-mate-triciclo-electrico-luces-delantera-trasera.jpg?v=1786696484\" alt=\"Przednie i tylne oświetlenie elektrycznego trójkołowca Fafrees F20 Mate.\" loading=\"lazy\" decoding=\"async\"\u003e\n\u003ch3\u003ePrzednie i tylne oświetlenie\u003c\/h3\u003e\n\u003cp\u003eZintegrowane światła i odblaski zwiększają widoczność podczas jazdy.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003c\/div\u003e\n\u003c!-- Mobile progress --\u003e\n\u003cdiv class=\"f20m-scrollbar\"\u003e\n\u003cspan\u003e\u003c\/span\u003e\u003cbr\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003c!-- =====================================================\n       SIZE\n  ====================================================== --\u003e\n\u003csection class=\"f20m-size\"\u003e\n\u003cdiv class=\"f20m-container\"\u003e\n\u003ch2\u003eGeometria i wymiary\u003c\/h2\u003e\n\u003cdiv class=\"f20m-size-grid\"\u003e\n\u003cdiv class=\"f20m-size-image\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0974\/5704\/5777\/files\/eu-f20-mate-triciclo-electrico-dimensiones-medidas.jpg?v=1786697341\" alt=\"Wymiary elektrycznego trójkołowca Fafrees F20 Mate.\" loading=\"lazy\" decoding=\"async\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"f20m-measures\"\u003e\n\u003cdiv\u003e\n\u003cspan\u003eA. Maksymalna wysokość siodełka\u003c\/span\u003e \u003cstrong\u003e106 cm\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003eB. Minimalna wysokość siodełka\u003c\/span\u003e \u003cstrong\u003e82 cm\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003eC. Wysokość przekroku\u003c\/span\u003e \u003cstrong\u003e40 cm\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003eD. Rozmiar ramy\u003c\/span\u003e \u003cstrong\u003e43 cm\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003eE. Maksymalna wysokość kierownicy\u003c\/span\u003e \u003cstrong\u003e116 cm\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003eF. Minimalna wysokość kierownicy\u003c\/span\u003e \u003cstrong\u003e109 cm\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003eG. Wysokość osi suportu\u003c\/span\u003e \u003cstrong\u003e20 cm\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003eH. Długość górnej rury\u003c\/span\u003e \u003cstrong\u003e68 cm\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003eI. Rozstaw osi\u003c\/span\u003e \u003cstrong\u003e118 cm\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003eJ. Długość całkowita\u003c\/span\u003e \u003cstrong\u003e174 cm\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003eSzerokość całkowita\u003c\/span\u003e \u003cstrong\u003e74 cm\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003eWymiary po złożeniu\u003c\/span\u003e \u003cstrong\u003e100 × 74 × 82 cm\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003c!-- =====================================================\n       SPECIFICATIONS\n  ====================================================== --\u003e\n\u003csection class=\"f20m-specs\"\u003e\n\u003cdiv class=\"f20m-container\"\u003e\n\u003ch2\u003eSpecyfikacja techniczna\u003c\/h2\u003e\n\u003cdiv class=\"f20m-spec-grid\"\u003e\n\u003c!-- GENERAL --\u003e\n\u003cdiv class=\"f20m-spec-column is-open\"\u003e\n\u003cbutton class=\"f20m-spec-title\" type=\"button\"\u003e Ogólne \u003cspan\u003e\u003c\/span\u003e \u003c\/button\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cb\u003eZasięg\u003c\/b\u003e \u003cem\u003e60–80 km\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003ePrędkość\u003c\/b\u003e \u003cem\u003eMaks. 25 km\/h\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eWspomaganie pedałowania\u003c\/b\u003e \u003cem\u003e5 poziomów\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eElementy składane\u003c\/b\u003e \u003cem\u003eKierownica i rama\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eMasa\u003c\/b\u003e \u003cem\u003e40 kg\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eMaksymalne obciążenie\u003c\/b\u003e \u003cem\u003e180 kg\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eZalecany wzrost użytkownika\u003c\/b\u003e \u003cem\u003e160–200 cm\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eWodoodporność\u003c\/b\u003e \u003cem\u003eIPX5\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eCertyfikaty\u003c\/b\u003e \u003cem\u003eEN15194 + CE + E-Mark\u003c\/em\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c!-- ELECTRONICS --\u003e\n\u003cdiv class=\"f20m-spec-column\"\u003e\n\u003cbutton class=\"f20m-spec-title\" type=\"button\"\u003e Układ elektryczny \u003cspan\u003e\u003c\/span\u003e \u003c\/button\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cb\u003eSilnik\u003c\/b\u003e \u003cem\u003eTylny, 48 V, 250 W mocy ciągłej\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eDeklarowana moc szczytowa\u003c\/b\u003e \u003cem\u003e750 W\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eMaks. moment obrotowy\u003c\/b\u003e \u003cem\u003e65 N·m\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eAkumulator\u003c\/b\u003e \u003cem\u003e48 V 20 Ah \/ 960 Wh\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eTyp akumulatora\u003c\/b\u003e \u003cem\u003eLitowy, wyjmowany\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eMasa akumulatora\u003c\/b\u003e \u003cem\u003e4,5 kg\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eŁadowarka\u003c\/b\u003e \u003cem\u003eWyjście 54,6 V \/ 3 A\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eCzas ładowania\u003c\/b\u003e \u003cem\u003eOkoło 7 godzin\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eWyświetlacz\u003c\/b\u003e \u003cem\u003eKolorowy LCD IPS 3,5\", IP65\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eCzujnik\u003c\/b\u003e \u003cem\u003eCzujnik kadencji\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eOświetlenie\u003c\/b\u003e \u003cem\u003ePrzednie i tylne ze światłem hamowania\u003c\/em\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c!-- COMPONENTS --\u003e\n\u003cdiv class=\"f20m-spec-column\"\u003e\n\u003cbutton class=\"f20m-spec-title\" type=\"button\"\u003e Komponenty \u003cspan\u003e\u003c\/span\u003e \u003c\/button\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cb\u003eRama\u003c\/b\u003e \u003cem\u003eStop aluminium 6061\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eKierownica\u003c\/b\u003e \u003cem\u003eAluminium 31,8 mm \/ 660 mm\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eWidelec\u003c\/b\u003e \u003cem\u003eAmortyzowany, 35 mm, z blokadą\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eHamulce\u003c\/b\u003e \u003cem\u003eHydrauliczne tarczowe\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eTarcze hamulcowe\u003c\/b\u003e \u003cem\u003e180 mm, 6 śrub\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eNapęd\u003c\/b\u003e \u003cem\u003eJednobiegowy\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eZębatka tylna\u003c\/b\u003e \u003cem\u003e16T\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eZębatka przednia\u003c\/b\u003e \u003cem\u003e36T\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eKoła\u003c\/b\u003e \u003cem\u003e20\", aluminiowe, dwuścienne\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eOpony\u003c\/b\u003e \u003cem\u003e20 × 3,0\", odporne na przebicia\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eDętki\u003c\/b\u003e \u003cem\u003eKauczuk butylowy, zawór Schradera\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eKorby\u003c\/b\u003e \u003cem\u003e165 mm\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003ePedały\u003c\/b\u003e \u003cem\u003e9\/16\"\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eSiodełko\u003c\/b\u003e \u003cem\u003eKomfortowa pianka\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eSztyca siodła\u003c\/b\u003e \u003cem\u003eAmortyzowana, Ø27,2 mm, skok 15 mm\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eTylny bagażnik\u003c\/b\u003e \u003cem\u003eW zestawie\u003c\/em\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cb\u003eBłotniki\u003c\/b\u003e \u003cem\u003eW zestawie\u003c\/em\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003c!-- =====================================================\n       GALLERY\n  ====================================================== --\u003e\n\u003csection class=\"f20m-gallery-section\"\u003e\n\u003cdiv class=\"f20m-container\"\u003e\n\u003ch2\u003eZobacz więcej\u003c\/h2\u003e\n\u003cdiv class=\"f20m-gallery\"\u003e\n\u003c!-- Main image area --\u003e\n\u003cdiv class=\"f20m-main\"\u003e\n\u003cimg class=\"f20m-main-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0974\/5704\/5777\/files\/eu-f20-mate-triciclo-electrico-uso-urbano..webp?v=1786693673\" alt=\"Fafrees F20 Mate podczas jazdy miejskiej.\" loading=\"lazy\" decoding=\"async\"\u003e \u003cbutton class=\"f20m-arrow f20m-prev\" type=\"button\"\u003e ‹ \u003c\/button\u003e \u003cbutton class=\"f20m-arrow f20m-next\" type=\"button\"\u003e › \u003c\/button\u003e\n\u003c\/div\u003e\n\u003c!-- Thumbnails --\u003e\n\u003cdiv class=\"f20m-thumbs\"\u003e\n\u003c!-- 01 --\u003e \u003cbutton class=\"f20m-thumb is-active\" type=\"button\"\u003e \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0974\/5704\/5777\/files\/eu-f20-mate-triciclo-electrico-uso-urbano..webp?v=1786693673\" alt=\"\" loading=\"lazy\" decoding=\"async\"\u003e \u003c\/button\u003e \u003c!-- 02 --\u003e \u003cbutton class=\"f20m-thumb\" type=\"button\"\u003e \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0974\/5704\/5777\/files\/eu-f20-mate-triciclo-electrico-azul-uso-real-exterior..webp?v=1786699011\" alt=\"\" loading=\"lazy\" decoding=\"async\"\u003e \u003c\/button\u003e \u003c!-- 03 --\u003e \u003cbutton class=\"f20m-thumb\" type=\"button\"\u003e \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0974\/5704\/5777\/files\/eu-f20-mate-triciclo-electrico-azul-vista-frontal-exterior..webp?v=1786699035\" alt=\"\" loading=\"lazy\" decoding=\"async\"\u003e \u003c\/button\u003e \u003c!-- 04 --\u003e \u003cbutton class=\"f20m-thumb\" type=\"button\"\u003e \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0974\/5704\/5777\/files\/eu-f20-mate-triciclo-electrico-doble-cesta-exterior..webp?v=1786699061\" alt=\"\" loading=\"lazy\" decoding=\"async\"\u003e \u003c\/button\u003e \u003c!-- 05 --\u003e \u003cbutton class=\"f20m-thumb\" type=\"button\"\u003e \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0974\/5704\/5777\/files\/eu-f20-mate-triciclo-electrico-cesta-trasera-carga.jpg?v=1786699638\" alt=\"\" loading=\"lazy\" decoding=\"async\"\u003e \u003c\/button\u003e \u003c!-- 06 --\u003e \u003cbutton class=\"f20m-thumb\" type=\"button\"\u003e \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0974\/5704\/5777\/files\/eu-f20-mate-triciclo-electrico-cesta-delantera-trasera..webp?v=1786699076\" alt=\"\" loading=\"lazy\" decoding=\"async\"\u003e \u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n\n\/* =====================================================\n   BASE\n====================================================== *\/\n\n.f20m-page,\n.f20m-page * {\n  box-sizing: border-box;\n}\n\n.f20m-page {\n  width: 100%;\n  margin: 0;\n  padding: 0;\n  color: #171717;\n  background: #fff;\n  font-family: inherit;\n}\n\n.f20m-container {\n  width: 100%;\n  max-width: 1200px;\n  margin: 0 auto;\n  padding-left: 16px;\n  padding-right: 16px;\n}\n\n\n\/* =====================================================\n   HERO\n====================================================== *\/\n\n.f20m-hero {\n  display: grid;\n  grid-template-columns:\n    minmax(0, 1.35fr)\n    minmax(340px, .65fr);\n\n  min-height: clamp(440px, 43vw, 570px);\n  background: #f4f4f4;\n  overflow: hidden;\n}\n\n.f20m-hero-media {\n  min-width: 0;\n  min-height: 0;\n  overflow: hidden;\n  background: #ececec;\n}\n\n.f20m-hero-media video {\n  display: block;\n  width: 100%;\n  height: 100%;\n  min-height: 0;\n\n  object-fit: cover;\n  object-position: center;\n}\n\n.f20m-hero-copy {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n\n  padding:\n    38px\n    clamp(28px, 4vw, 60px);\n}\n\n.f20m-eyebrow {\n  display: block;\n\n  margin: 0 0 12px;\n\n  color: #666;\n\n  font-size: 13px;\n  line-height: 1.4;\n  font-weight: 650;\n\n  letter-spacing: .08em;\n  text-transform: uppercase;\n}\n\n.f20m-hero-copy h2 {\n  margin: 0 0 18px;\n\n  font-size:\n    clamp(36px, 4vw, 58px);\n\n  line-height: 1.05;\n  font-weight: 750;\n}\n\n.f20m-hero-copy \u003e p {\n  max-width: 600px;\n\n  margin: 0;\n\n  color: #3c3c3c;\n\n  font-size: 16px;\n  line-height: 1.75;\n}\n\n.f20m-hero-specs {\n  display: grid;\n\n  grid-template-columns:\n    repeat(2, minmax(0, 1fr));\n\n  gap: 10px;\n\n  margin-top: 26px;\n}\n\n.f20m-hero-specs div {\n  min-width: 0;\n\n  padding: 13px 14px;\n\n  background:\n    rgba(255,255,255,.72);\n\n  border:\n    1px solid rgba(0,0,0,.06);\n\n  border-radius: 8px;\n}\n\n.f20m-hero-specs strong,\n.f20m-hero-specs span {\n  display: block;\n}\n\n.f20m-hero-specs strong {\n  font-size: 17px;\n  line-height: 1.25;\n}\n\n.f20m-hero-specs span {\n  margin-top: 3px;\n\n  color: #666;\n\n  font-size: 12px;\n  line-height: 1.4;\n}\n\n\n\/* =====================================================\n   SHARED HEADINGS\n====================================================== *\/\n\n.f20m-features h2,\n.f20m-size h2,\n.f20m-specs h2,\n.f20m-gallery-section h2 {\n  margin: 0 0 14px;\n\n  font-size: 30px;\n  line-height: 1.2;\n  font-weight: 720;\n}\n\n.f20m-divider {\n  width: 54px;\n  height: 3px;\n\n  margin-bottom: 28px;\n\n  background: #f5a400;\n}\n\n\n\/* =====================================================\n   FEATURES\n====================================================== *\/\n\n.f20m-features {\n  padding: 54px 0;\n  background: #fff;\n}\n\n.f20m-card-track {\n  display: grid;\n\n  grid-template-columns:\n    repeat(4, minmax(0, 1fr));\n\n  gap: 20px;\n}\n\n.f20m-card {\n  min-width: 0;\n\n  display: flex;\n  flex-direction: column;\n\n  overflow: hidden;\n\n  background: #fff;\n\n  border-radius: 8px;\n\n  box-shadow:\n    0 2px 14px rgba(0,0,0,.11);\n}\n\n.f20m-card img {\n  display: block;\n\n  width: 100%;\n\n  aspect-ratio: 4 \/ 3;\n\n  object-fit: cover;\n  object-position: center;\n\n  background: #f6f6f6;\n}\n\n.f20m-card h3 {\n  margin:\n    18px\n    17px\n    8px;\n\n  font-size: 18px;\n  line-height: 1.35;\n  font-weight: 700;\n}\n\n.f20m-card p {\n  margin:\n    0\n    17px\n    22px;\n\n  color: #444;\n\n  font-size: 14px;\n  line-height: 1.65;\n}\n\n\n\/*\n  10 cards:\n  center the final two cards on desktop.\n*\/\n.f20m-card:nth-child(9) {\n  grid-column: 2;\n}\n\n.f20m-card:nth-child(10) {\n  grid-column: 3;\n}\n\n\n.f20m-scrollbar {\n  display: none;\n}\n\n\n\/* =====================================================\n   SIZE\n====================================================== *\/\n\n.f20m-size {\n  padding: 48px 0;\n  background: #fff;\n}\n\n.f20m-size h2 {\n  margin-bottom: 28px;\n  text-align: center;\n}\n\n.f20m-size-grid {\n  display: grid;\n\n  grid-template-columns:\n    minmax(0, 1.2fr)\n    minmax(320px, .8fr);\n\n  gap: 34px;\n\n  align-items: center;\n}\n\n.f20m-size-image {\n  min-width: 0;\n}\n\n.f20m-size-image img {\n  display: block;\n\n  width: 100%;\n  height: auto;\n\n  background: #fff;\n}\n\n.f20m-measures {\n  min-width: 0;\n\n  padding: 10px 24px;\n\n  background: #fff;\n\n  border-radius: 8px;\n\n  box-shadow:\n    0 2px 12px rgba(0,0,0,.08);\n}\n\n.f20m-measures div {\n  display: flex;\n\n  justify-content: space-between;\n  align-items: flex-start;\n\n  gap: 20px;\n\n  padding: 12px 0;\n\n  border-bottom:\n    1px solid #ececec;\n\n  font-size: 13px;\n  line-height: 1.45;\n}\n\n.f20m-measures div:last-child {\n  border-bottom: 0;\n}\n\n.f20m-measures span {\n  min-width: 0;\n  color: #454545;\n}\n\n.f20m-measures strong {\n  flex: 0 0 auto;\n\n  text-align: right;\n  white-space: nowrap;\n}\n\n\n\/* =====================================================\n   SPECIFICATIONS\n====================================================== *\/\n\n.f20m-specs {\n  padding: 54px 0;\n  background: #f8f8f8;\n}\n\n.f20m-specs h2 {\n  margin-bottom: 30px;\n  text-align: center;\n}\n\n.f20m-spec-grid {\n  display: grid;\n\n  grid-template-columns:\n    repeat(3, minmax(0, 1fr));\n\n  gap: 28px;\n}\n\n.f20m-spec-column {\n  min-width: 0;\n}\n\n.f20m-spec-title {\n  width: 100%;\n\n  margin: 0;\n  padding: 0 0 13px;\n\n  border: 0;\n  border-bottom: 2px solid #111;\n\n  background: none;\n\n  color: #111;\n\n  text-align: left;\n\n  font: inherit;\n  font-size: 20px;\n  font-weight: 720;\n\n  cursor: default;\n}\n\n.f20m-spec-title span {\n  display: none;\n}\n\n.f20m-spec-column ul {\n  list-style: none;\n\n  margin: 0;\n  padding: 10px 0;\n}\n\n.f20m-spec-column li {\n  display: flex;\n\n  justify-content: space-between;\n  align-items: flex-start;\n\n  gap: 16px;\n\n  padding: 11px 0;\n\n  border-bottom:\n    1px solid #e4e4e4;\n\n  font-size: 13px;\n  line-height: 1.45;\n}\n\n.f20m-spec-column b {\n  min-width: 0;\n  font-weight: 650;\n}\n\n.f20m-spec-column em {\n  max-width: 58%;\n\n  color: #454545;\n\n  font-style: normal;\n  text-align: right;\n\n  overflow-wrap: anywhere;\n}\n\n\n\/* =====================================================\n   GALLERY\n====================================================== *\/\n\n.f20m-gallery-section {\n  padding: 50px 0 70px;\n  background: #fff;\n}\n\n.f20m-gallery-section h2 {\n  margin-bottom: 24px;\n  text-align: center;\n}\n\n.f20m-gallery {\n  width: 100%;\n}\n\n.f20m-main {\n  position: relative;\n\n  width: 100%;\n  height: clamp(420px, 46vw, 650px);\n\n  overflow: hidden;\n\n  background: #f7f7f7;\n}\n\n.f20m-main-image {\n  display: block;\n\n  width: 100%;\n  height: 100%;\n\n  object-fit: contain;\n  object-position: center;\n\n  background: #f7f7f7;\n\n  transition: opacity .18s ease;\n}\n\n\n\/* Gallery arrows *\/\n\n.f20m-arrow {\n  position: absolute;\n\n  z-index: 4;\n\n  top: 50%;\n\n  width: 40px;\n  height: 40px;\n\n  padding: 0;\n\n  transform:\n    translateY(-50%);\n\n  border: 0;\n  border-radius: 50%;\n\n  background:\n    rgba(0,0,0,.52);\n\n  color: #fff;\n\n  display: flex;\n  align-items: center;\n  justify-content: center;\n\n  font-size: 29px;\n  line-height: 1;\n\n  cursor: pointer;\n\n  transition:\n    background .18s ease,\n    transform .18s ease;\n}\n\n.f20m-arrow:hover {\n  background:\n    rgba(0,0,0,.72);\n}\n\n.f20m-arrow:active {\n  transform:\n    translateY(-50%)\n    scale(.94);\n}\n\n.f20m-prev {\n  left: 16px;\n}\n\n.f20m-next {\n  right: 16px;\n}\n\n\n\/* Thumbnails *\/\n\n.f20m-thumbs {\n  display: grid;\n\n  grid-template-columns:\n    repeat(6, minmax(0, 1fr));\n\n  gap: 6px;\n\n  margin-top: 6px;\n}\n\n.f20m-thumb {\n  position: relative;\n\n  width: 100%;\n\n  margin: 0;\n  padding: 0;\n\n  overflow: hidden;\n\n  border: 2px solid transparent;\n\n  background: none;\n\n  opacity: .5;\n\n  cursor: pointer;\n\n  transition:\n    opacity .18s ease,\n    border-color .18s ease;\n}\n\n.f20m-thumb:hover {\n  opacity: .8;\n}\n\n.f20m-thumb.is-active {\n  opacity: 1;\n  border-color: #171717;\n}\n\n.f20m-thumb img {\n  display: block;\n\n  width: 100%;\n  height: 108px;\n\n  object-fit: cover;\n  object-position: center;\n\n  background: #f6f6f6;\n\n  pointer-events: none;\n}\n\n\n\/* =====================================================\n   FOCUS\n====================================================== *\/\n\n.f20m-arrow:focus-visible,\n.f20m-thumb:focus-visible,\n.f20m-spec-title:focus-visible {\n  outline: 2px solid #f5a400;\n  outline-offset: 2px;\n}\n\n\n\/* =====================================================\n   TABLET\n====================================================== *\/\n\n@media (max-width: 1024px) {\n\n  .f20m-hero {\n    grid-template-columns:\n      minmax(0, 1fr)\n      minmax(300px, 1fr);\n\n    min-height: 430px;\n  }\n\n\n  .f20m-card-track {\n    grid-template-columns:\n      repeat(2, minmax(0, 1fr));\n  }\n\n\n  .f20m-card:nth-child(9),\n  .f20m-card:nth-child(10) {\n    grid-column: auto;\n  }\n\n\n  .f20m-size-grid {\n    grid-template-columns: 1fr;\n  }\n\n\n  .f20m-size-image {\n    max-width: 900px;\n    margin: 0 auto;\n  }\n\n\n  .f20m-spec-grid {\n    gap: 18px;\n  }\n\n}\n\n\n\/* =====================================================\n   MOBILE\n====================================================== *\/\n\n@media (max-width: 768px) {\n\n\n  \/* -----------------\n     Hero\n  ------------------ *\/\n\n  .f20m-hero {\n    display: block;\n\n    min-height: 0;\n\n    overflow: visible;\n  }\n\n\n  .f20m-hero-media {\n    width: 100%;\n\n    aspect-ratio: 4 \/ 3;\n  }\n\n\n  .f20m-hero-media video {\n    width: 100%;\n    height: 100%;\n\n    object-fit: cover;\n    object-position: center;\n  }\n\n\n  .f20m-hero-copy {\n    padding:\n      27px\n      18px\n      32px;\n  }\n\n\n  .f20m-eyebrow {\n    margin-bottom: 9px;\n\n    font-size: 11px;\n  }\n\n\n  .f20m-hero-copy h2 {\n    margin-bottom: 12px;\n\n    font-size: 32px;\n    line-height: 1.08;\n  }\n\n\n  .f20m-hero-copy \u003e p {\n    font-size: 14px;\n    line-height: 1.7;\n  }\n\n\n  .f20m-hero-specs {\n    gap: 8px;\n\n    margin-top: 20px;\n  }\n\n\n  .f20m-hero-specs div {\n    padding: 11px 12px;\n  }\n\n\n  .f20m-hero-specs strong {\n    font-size: 15px;\n  }\n\n\n  .f20m-hero-specs span {\n    font-size: 11px;\n  }\n\n\n\n  \/* -----------------\n     Features\n  ------------------ *\/\n\n  .f20m-features {\n    padding: 36px 0;\n\n    overflow: hidden;\n  }\n\n\n  .f20m-features .f20m-container {\n    padding: 0;\n  }\n\n\n  .f20m-features h2 {\n    padding: 0 16px;\n\n    font-size: 24px;\n  }\n\n\n  .f20m-divider {\n    margin-left: 16px;\n    margin-bottom: 20px;\n  }\n\n\n  .f20m-card-track {\n    display: flex;\n\n    gap: 14px;\n\n    overflow-x: auto;\n    overflow-y: hidden;\n\n    padding:\n      0\n      16px\n      16px;\n\n    scroll-snap-type:\n      x mandatory;\n\n    overscroll-behavior-inline:\n      contain;\n\n    scrollbar-width: none;\n\n    -webkit-overflow-scrolling:\n      touch;\n  }\n\n\n  .f20m-card-track::-webkit-scrollbar {\n    display: none;\n  }\n\n\n  .f20m-card {\n    flex:\n      0 0\n      min(82vw, 340px);\n\n    scroll-snap-align: start;\n    scroll-snap-stop: always;\n\n    grid-column: auto !important;\n  }\n\n\n  .f20m-card img {\n    aspect-ratio: 1 \/ 1;\n\n    object-fit: cover;\n  }\n\n\n  .f20m-card h3 {\n    margin:\n      15px\n      14px\n      7px;\n\n    font-size: 17px;\n  }\n\n\n  .f20m-card p {\n    margin:\n      0\n      14px\n      18px;\n\n    font-size: 13px;\n    line-height: 1.6;\n  }\n\n\n  \/* Dynamic mobile progress bar *\/\n\n  .f20m-scrollbar {\n    position: relative;\n\n    display: block;\n\n    height: 5px;\n\n    margin:\n      3px\n      16px\n      0;\n\n    overflow: hidden;\n\n    border-radius: 999px;\n\n    background: #e9e9e9;\n  }\n\n\n  .f20m-scrollbar span {\n    position: absolute;\n\n    left: 0;\n    top: 0;\n\n    display: block;\n\n    width: 22%;\n    height: 100%;\n\n    border-radius: 999px;\n\n    background: #f5a400;\n\n    transform: translate3d(0,0,0);\n\n    will-change:\n      transform,\n      width;\n  }\n\n\n\n  \/* -----------------\n     Size\n  ------------------ *\/\n\n  .f20m-size {\n    padding: 36px 0;\n  }\n\n\n  .f20m-size h2,\n  .f20m-specs h2,\n  .f20m-gallery-section h2 {\n    font-size: 25px;\n  }\n\n\n  .f20m-size h2 {\n    margin-bottom: 20px;\n  }\n\n\n  .f20m-size-grid {\n    gap: 18px;\n  }\n\n\n  .f20m-size-image img {\n    width: 100%;\n    height: auto;\n  }\n\n\n  .f20m-measures {\n    padding: 5px 16px;\n  }\n\n\n  .f20m-measures div {\n    gap: 12px;\n\n    padding: 11px 0;\n\n    font-size: 12px;\n  }\n\n\n  .f20m-measures strong {\n    white-space: normal;\n  }\n\n\n\n  \/* -----------------\n     Specifications\n  ------------------ *\/\n\n  .f20m-specs {\n    padding: 36px 0;\n  }\n\n\n  .f20m-specs h2 {\n    margin-bottom: 22px;\n  }\n\n\n  .f20m-spec-grid {\n    display: block;\n  }\n\n\n  .f20m-spec-column {\n    margin-bottom: 10px;\n\n    overflow: hidden;\n\n    border:\n      1px solid #e5e5e5;\n\n    border-radius: 8px;\n\n    background: #fff;\n  }\n\n\n  .f20m-spec-title {\n    display: flex;\n\n    align-items: center;\n    justify-content: space-between;\n\n    width: 100%;\n\n    padding: 16px;\n\n    border-bottom: 0;\n\n    font-size: 17px;\n\n    cursor: pointer;\n  }\n\n\n  .f20m-spec-title span {\n    position: relative;\n\n    display: block;\n\n    width: 18px;\n    height: 18px;\n\n    flex:\n      0 0\n      18px;\n  }\n\n\n  .f20m-spec-title span::before,\n  .f20m-spec-title span::after {\n    content: \"\";\n\n    position: absolute;\n\n    left: 50%;\n    top: 50%;\n\n    width: 14px;\n    height: 2px;\n\n    background: #111;\n\n    transform:\n      translate(-50%, -50%);\n\n    transition:\n      transform .18s ease;\n  }\n\n\n  .f20m-spec-title span::after {\n    transform:\n      translate(-50%, -50%)\n      rotate(90deg);\n  }\n\n\n  .f20m-spec-title[aria-expanded=\"true\"]\n  span::after {\n    transform:\n      translate(-50%, -50%)\n      rotate(0deg);\n  }\n\n\n  .f20m-spec-column ul {\n    display: none;\n\n    padding:\n      0\n      16px\n      12px;\n  }\n\n\n  .f20m-spec-column.is-open ul {\n    display: block;\n  }\n\n\n  .f20m-spec-column li {\n    gap: 12px;\n\n    font-size: 12px;\n  }\n\n\n  .f20m-spec-column em {\n    max-width: 56%;\n  }\n\n\n\n  \/* -----------------\n     Gallery\n  ------------------ *\/\n\n  .f20m-gallery-section {\n    padding: 36px 0 44px;\n  }\n\n\n  .f20m-gallery-section .f20m-container {\n    padding: 0;\n  }\n\n\n  .f20m-gallery-section h2 {\n    margin-bottom: 16px;\n\n    padding:\n      0\n      16px;\n  }\n\n\n  \/*\n    Fixed mobile image area prevents\n    vertical page jumping when switching\n    between landscape and portrait images.\n  *\/\n  .f20m-main {\n    width: 100%;\n\n    height: 75vw;\n    max-height: 430px;\n    min-height: 280px;\n\n    background: #f7f7f7;\n  }\n\n\n  .f20m-main-image {\n    width: 100%;\n    height: 100%;\n\n    object-fit: contain;\n  }\n\n\n  .f20m-arrow {\n    width: 34px;\n    height: 34px;\n\n    font-size: 26px;\n\n    background:\n      rgba(0,0,0,.46);\n  }\n\n\n  .f20m-prev {\n    left: 8px;\n  }\n\n\n  .f20m-next {\n    right: 8px;\n  }\n\n\n  .f20m-thumbs {\n    display: flex;\n\n    gap: 8px;\n\n    overflow-x: auto;\n    overflow-y: hidden;\n\n    margin-top: 0;\n\n    padding:\n      8px\n      8px\n      2px;\n\n    scroll-snap-type:\n      x proximity;\n\n    overscroll-behavior-inline:\n      contain;\n\n    scrollbar-width: none;\n\n    -webkit-overflow-scrolling:\n      touch;\n\n    scroll-behavior: smooth;\n  }\n\n\n  .f20m-thumbs::-webkit-scrollbar {\n    display: none;\n  }\n\n\n  .f20m-thumb {\n    flex:\n      0 0\n      27%;\n\n    scroll-snap-align: center;\n  }\n\n\n  .f20m-thumb img {\n    height: 78px;\n  }\n\n}\n\n\n\/* =====================================================\n   SMALL MOBILE\n====================================================== *\/\n\n@media (max-width: 420px) {\n\n  .f20m-hero-copy {\n    padding-left: 15px;\n    padding-right: 15px;\n  }\n\n\n  .f20m-hero-copy h2 {\n    font-size: 29px;\n  }\n\n\n  .f20m-hero-specs {\n    grid-template-columns:\n      repeat(2, minmax(0,1fr));\n  }\n\n\n  .f20m-card {\n    flex-basis: 84vw;\n  }\n\n\n  .f20m-measures {\n    padding:\n      4px\n      13px;\n  }\n\n\n  .f20m-main {\n    min-height: 260px;\n  }\n\n\n  .f20m-thumb {\n    flex-basis: 30%;\n  }\n\n}\n\n\n\/* =====================================================\n   REDUCED MOTION\n====================================================== *\/\n\n@media (prefers-reduced-motion: reduce) {\n\n  .f20m-page *,\n  .f20m-page *::before,\n  .f20m-page *::after {\n    scroll-behavior: auto !important;\n    transition-duration: .01ms !important;\n    animation-duration: .01ms !important;\n  }\n\n}\n\n\u003c\/style\u003e\n\n\u003cscript\u003e\n(function () {\n  function initF20MatePage(page) {\n    if (!page || page.dataset.f20mInitialized === 'true') return;\n    page.dataset.f20mInitialized = 'true';\n\n    \/* =====================================================\n       GALLERY\n    ====================================================== *\/\n    const gallery = page.querySelector('.f20m-gallery');\n\n    if (gallery) {\n      const mainImage = gallery.querySelector('.f20m-main-image');\n      const thumbs = Array.from(gallery.querySelectorAll('.f20m-thumb'));\n      const prevBtn = gallery.querySelector('.f20m-prev');\n      const nextBtn = gallery.querySelector('.f20m-next');\n      const mainArea = gallery.querySelector('.f20m-main');\n\n      let currentIndex = thumbs.findIndex(function (thumb) {\n        return thumb.classList.contains('is-active');\n      });\n\n      if (currentIndex \u003c 0) currentIndex = 0;\n\n      function getImageData(index) {\n        const thumb = thumbs[index];\n        if (!thumb) return null;\n\n        const img = thumb.querySelector('img');\n        if (!img) return null;\n\n        return {\n          src: img.currentSrc || img.src,\n          alt: img.alt || ''\n        };\n      }\n\n      function setActiveThumb(index) {\n        thumbs.forEach(function (thumb, i) {\n          const active = i === index;\n          thumb.classList.toggle('is-active', active);\n          thumb.setAttribute('aria-current', active ? 'true' : 'false');\n        });\n      }\n\n      function showImage(index) {\n        if (!mainImage || !thumbs.length) return;\n\n        if (index \u003c 0) index = thumbs.length - 1;\n        if (index \u003e= thumbs.length) index = 0;\n\n        const imageData = getImageData(index);\n        if (!imageData) return;\n\n        currentIndex = index;\n        setActiveThumb(currentIndex);\n\n        mainImage.style.opacity = '0';\n\n        const preload = new Image();\n\n        preload.onload = function () {\n          mainImage.src = imageData.src;\n          if (imageData.alt) mainImage.alt = imageData.alt;\n\n          requestAnimationFrame(function () {\n            mainImage.style.opacity = '1';\n          });\n        };\n\n        preload.onerror = function () {\n          mainImage.src = imageData.src;\n          mainImage.style.opacity = '1';\n        };\n\n        preload.src = imageData.src;\n\n        const activeThumb = thumbs[currentIndex];\n        if (activeThumb \u0026\u0026 typeof activeThumb.scrollIntoView === 'function') {\n          activeThumb.scrollIntoView({\n            behavior: 'smooth',\n            block: 'nearest',\n            inline: 'center'\n          });\n        }\n      }\n\n      thumbs.forEach(function (thumb, index) {\n        thumb.addEventListener('click', function (event) {\n          event.preventDefault();\n          showImage(index);\n        });\n      });\n\n      if (prevBtn) {\n        prevBtn.addEventListener('click', function (event) {\n          event.preventDefault();\n          showImage(currentIndex - 1);\n        });\n      }\n\n      if (nextBtn) {\n        nextBtn.addEventListener('click', function (event) {\n          event.preventDefault();\n          showImage(currentIndex + 1);\n        });\n      }\n\n      gallery.setAttribute('tabindex', '0');\n\n      gallery.addEventListener('keydown', function (event) {\n        if (event.key === 'ArrowLeft') {\n          event.preventDefault();\n          showImage(currentIndex - 1);\n        }\n\n        if (event.key === 'ArrowRight') {\n          event.preventDefault();\n          showImage(currentIndex + 1);\n        }\n      });\n\n      let touchStartX = 0;\n      let touchStartY = 0;\n\n      if (mainArea) {\n        mainArea.addEventListener('touchstart', function (event) {\n          if (!event.touches || !event.touches[0]) return;\n          touchStartX = event.touches[0].clientX;\n          touchStartY = event.touches[0].clientY;\n        }, { passive: true });\n\n        mainArea.addEventListener('touchend', function (event) {\n          if (!event.changedTouches || !event.changedTouches[0]) return;\n\n          const touchEndX = event.changedTouches[0].clientX;\n          const touchEndY = event.changedTouches[0].clientY;\n          const diffX = touchEndX - touchStartX;\n          const diffY = touchEndY - touchStartY;\n\n          if (Math.abs(diffX) \u003e 45 \u0026\u0026 Math.abs(diffX) \u003e Math.abs(diffY)) {\n            if (diffX \u003c 0) {\n              showImage(currentIndex + 1);\n            } else {\n              showImage(currentIndex - 1);\n            }\n          }\n        }, { passive: true });\n      }\n\n      setActiveThumb(currentIndex);\n    }\n\n    \/* =====================================================\n       MOBILE SPEC ACCORDION\n    ====================================================== *\/\n    const specColumns = page.querySelectorAll('.f20m-spec-column');\n\n    specColumns.forEach(function (column) {\n      const button = column.querySelector('.f20m-spec-title');\n      if (!button) return;\n\n      const isOpen = column.classList.contains('is-open');\n      button.setAttribute('aria-expanded', isOpen ? 'true' : 'false');\n\n      button.addEventListener('click', function () {\n        if (window.innerWidth \u003e 768) return;\n\n        const currentlyOpen = column.classList.contains('is-open');\n        column.classList.toggle('is-open', !currentlyOpen);\n        button.setAttribute('aria-expanded', currentlyOpen ? 'false' : 'true');\n      });\n    });\n\n    \/* =====================================================\n       MOBILE FEATURE SCROLL PROGRESS\n    ====================================================== *\/\n    const cardTrack = page.querySelector('#f20mFeatureCards');\n    const progressBar = page.querySelector('.f20m-scrollbar span');\n\n    if (cardTrack \u0026\u0026 progressBar) {\n      function updateProgress() {\n        const maxScroll = cardTrack.scrollWidth - cardTrack.clientWidth;\n\n        if (maxScroll \u003c= 0) {\n          progressBar.style.width = '100%';\n          progressBar.style.transform = 'translate3d(0,0,0)';\n          return;\n        }\n\n        const visibleRatio = cardTrack.clientWidth \/ cardTrack.scrollWidth;\n        const barWidth = Math.max(18, visibleRatio * 100);\n        const progress = Math.min(1, Math.max(0, cardTrack.scrollLeft \/ maxScroll));\n        const travel = 100 - barWidth;\n\n        progressBar.style.width = barWidth + '%';\n        progressBar.style.transform = 'translate3d(' + (progress * travel) + '%,0,0)';\n      }\n\n      cardTrack.addEventListener('scroll', updateProgress, { passive: true });\n      window.addEventListener('resize', updateProgress);\n      updateProgress();\n    }\n  }\n\n  function initAllF20MatePages() {\n    document.querySelectorAll('.f20m-page').forEach(initF20MatePage);\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', initAllF20MatePages);\n  } else {\n    initAllF20MatePages();\n  }\n\n  document.addEventListener('shopify:section:load', initAllF20MatePages);\n})();\n\u003c\/script\u003e\n\n\u003cp\u003e \u003c\/p\u003e","brand":"Velomenu","offers":[{"title":"Czarny Gunmetal","offer_id":43981806633078,"sku":null,"price":6569.99,"currency_code":"PLN","in_stock":true},{"title":"Azul Haze","offer_id":43981806665846,"sku":null,"price":6569.99,"currency_code":"PLN","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0688\/2086\/1046\/files\/fafrees-f20-mate-trojkolowiec-elektryczny-niebieski-widok-boczny..jpg?v=1786758962","url":"https:\/\/velomenu.pl\/products\/fafrees-f20-mate","provider":"Velomenu","version":"1.0","type":"link"}