{"title":"Mobilité","description":null,"products":[{"product_id":"g63-off-road-electric-scooter","title":"Trottinette Électrique Tout-Terrain G63 Off-Road","description":"\u003cp\u003eAffrontez tous les terrains avec la trottinette électrique tout-terrain G63 Off-Road. Profitez d'une fusion parfaite entre puissance et robustesse : la G63 Off-Road est conçue pour les aventuriers qui refusent de se limiter au bitume. Que vous grimpiez des pentes raides ou rouliez sur des chemins accidentés, cette machine haute performance offre une conduite exaltante avec une stabilité inégalée.\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003eCaractéristiques et avantages clés :\u003c\/p\u003e\n\u003cp\u003ePolyvalence tout-terrain : des pneus renforcés et une construction robuste permettent de passer sans effort de la ville aux chemins de terre.\u003c\/p\u003e\n\u003cp\u003ePerformance à couple élevé : conçue pour une accélération rapide et la puissance nécessaire pour affronter les côtes difficiles.\u003c\/p\u003e\n\u003cp\u003eAmortissement supérieur : un système de suspension avancé assure une conduite fluide et maîtrisée, même sur des surfaces irrégulières.\u003c\/p\u003e\n\u003cp\u003eFreinage précis : une technologie de freinage réactive garantit une sécurité et un contrôle maximum, y compris en descente.\u003c\/p\u003e\n\u003cp\u003eConception ergonomique : pensée pour le confort sur de longues distances, avec une interface intuitive et un cadre renforcé.\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003eCaractéristiques techniques :\u003c\/p\u003e\n\u003cp\u003eModèle : Série G63 Off-Road\u003c\/p\u003e\n\u003cp\u003eConstruction : châssis renforcé haute résistance\u003c\/p\u003e\n\u003cp\u003ePneus : pneus tout-terrain spécialisés\u003c\/p\u003e\n\u003cp\u003eÉclairage : système LED haute visibilité pour la conduite de nuit\u003c\/p\u003e","brand":"tousetriens.com","offers":[{"title":"Default Title","offer_id":64193330086265,"sku":null,"price":555.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0961\/8404\/1849\/files\/H8eb816cde7534707a65d56980e21f22bN.webp?v=1786193982"},{"product_id":"sisigad-bluetooth-led-hoverboard-6-5","title":"Hoverboard Bluetooth LED SISIGAD 6,5 pouces","description":"\u003cp\u003eHoverboard SISIGAD, gyropode électrique auto-équilibré 6,5 pouces avec musique Bluetooth et lumières LED, pour enfants et adolescents\u003c\/p\u003e","brand":"tousetriens.com","offers":[{"title":"Default Title","offer_id":64193330119033,"sku":null,"price":161.24,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0961\/8404\/1849\/files\/81Wh51g2xHL._AC_SL1500.jpg?v=1786193982"},{"product_id":"trottinette-electrique-tout-terrain-g63-gyroor-1200w","title":"Trottinette électrique tout-terrain G63 Gyroor 1200W","description":"\u003cp class=\"!mt-2 !mb-2 leading-relaxed\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eG63 — La trottinette tout-terrain qui domine tous les terrains\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp class=\"!mt-2 !mb-2 leading-relaxed\"\u003eConçue pour les aventuriers et les trajets exigeants, la trottinette électrique tout-terrain G63 combine une puissance brute de 1200 W et une robustesse à toute épreuve. Côtes raides, chemins de terre, pavés ou graviers : elle avale les obstacles avec aisance, sans jamais sacrifier votre confort.\u003c\/p\u003e\n\u003cp class=\"!mt-2 !mb-2 leading-relaxed\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eCe qui fait la différence\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul class=\"my-5 space-y-3 leading-[1.85] pl-5\"\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003e\n\u003cp class=\"!mt-2 !mb-2 leading-relaxed\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eCe qui fait la différence\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul class=\"my-5 space-y-3 leading-[1.85] pl-5\"\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003e\n\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003ePuissance 1200 W\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e: franchissez les côtes et les terrains exigeants sans perdre en vivacité.\u003c\/li\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003e\n\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eAutonomie jusqu'à 50 km\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e: la batterie 48 V 15 Ah tient la distance, même en usage intensif.\u003c\/li\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003e\n\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eBatterie amovible\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e: retirez-la en quelques secondes et rechargez-la à la maison, au bureau ou où vous voulez — sans avoir à déplacer la trottinette.\u003c\/li\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003e\n\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eConfort de conduite optimal\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e: amortisseurs avant et arrière et roues de 11 pouces à crampons profonds absorbent les chocs et garantissent une excellente adhérence sur toutes les surfaces.\u003c\/li\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003e\n\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eStabilité maîtrisée\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e: garde au sol élevée pour franchir les obstacles et large plateau antidérapant pour une position de conduite sûre.\u003c\/li\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003e\n\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eSécurité intelligente\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e: démarrage sans clé via l'application Tuya, verrouillage antivol du moteur et interface homme-machine intuitive.\u003c\/li\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003e\n\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eAdaptée à votre taille\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e: colonne de direction télescopique double, réglable en hauteur pour un confort accru\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp class=\"!mt-2 !mb-2 leading-relaxed\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eUne construction pensée pour durer\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp class=\"!mt-2 !mb-2 leading-relaxed\"\u003eLe cadre associe acier au carbone A3, alliage d'aluminium 6061 et revêtement plastique PA66 : un trio de matériaux qui garantit robustesse et légèreté. Avec ses 35,4 kg, la G63 offre une stabilité exemplaire, même à haute vitesse.\u003c\/p\u003e\n\u003cp class=\"!mt-2 !mb-2 leading-relaxed\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eSpécifications techniques\u003c\/strong\u003e\u003c\/p\u003e\n\u003cdiv class=\"my-5 relative flex-1 min-h-0 min-w-0 hover:cursor-default overflow-x-auto overflow-y-hidden phoenix-scrollbar\"\u003e\n\u003cdiv\u003e\n\u003ctable class=\"min-w-full border-collapse text-sm\"\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2 bg-zinc-50 dark:bg-zinc-800\/80 font-semibold text-left text-zinc-700 dark:text-zinc-300\"\u003eCaractéristique\u003c\/th\u003e\n\u003cth class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2 bg-zinc-50 dark:bg-zinc-800\/80 font-semibold text-left text-zinc-700 dark:text-zinc-300\"\u003eDétail\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eMoteur\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e1200 W\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eBatterie\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e48 V 15 Ah\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eVitesse maximale\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e50 km\/h (bridée à 25 km\/h pour la conformité légale)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eAutonomie maximale\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e50 km\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eRoues\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e11 pouces, crampons profonds\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eSuspensions\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eAmortisseurs avant et arrière\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003ePlateau\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eLarge, revêtement antidérapant\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eSystème intelligent\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eDémarrage sans clé (app Tuya), antivol moteur, IHM\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eDirection\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eColonne télescopique double réglable\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eMatériaux\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eAcier A3, aluminium 6061, PA66\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003ePoids net\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e≈ 35,4 kg\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp class=\"!mt-2 !mb-2 leading-relaxed\"\u003eConforme à la réglementation en vigueur : la G63 est bridée à 25 km\/h pour une utilisation légale sur la voie publique, tout en conservant la puissance nécessaire pour affronter les terrains difficiles.\u003c\/p\u003e\n\u003cp class=\"!mt-2 !mb-2 leading-relaxed\"\u003eLa G63 est le choix idéal pour celles et ceux qui recherchent une trottinette fiable, confortable et capable d'encaisser les terrains variés — du trajet quotidien à l'escapade du week-end.\u003c\/p\u003e\n\u003cp class=\"!mt-2 !mb-2 leading-relaxed\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003ePrêt à passer au tout-terrain ?\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003eCommandez la G63 et découvrez une nouvelle façon de vous déplacer.\u003c\/p\u003e","brand":"tousetriens.com","offers":[{"title":"CM","offer_id":64239050424697,"sku":null,"price":649.8,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0961\/8404\/1849\/files\/top.png?v=1786577254"},{"product_id":"1800w-folding-electric-snow-scooter","title":"Trottinette Électrique Neige Pliable 1800W","description":"\u003cp\u003eConquérez les terrains enneigés avec le frisson hivernal ultime grâce à la trottinette électrique neige pliable 1800W. Conçue pour la performance et la portabilité, cette machine puissante transforme les paysages enneigés en votre terrain de jeu personnel, en offrant une alternative silencieuse et respectueuse de l'environnement aux motoneiges traditionnelles.\u003c\/p\u003e\u003cp\u003e\u003cstrong\u003eCaractéristiques principales\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eMoteur 1800W à couple élevé\u003c\/strong\u003e : délivre une puissance robuste pour évoluer facilement dans la neige fraîche ou tassée.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDesign pliable et compact\u003c\/strong\u003e : se replie rapidement pour un transport pratique dans votre véhicule ou un rangement compact hors saison.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eTraction tout-terrain\u003c\/strong\u003e : dotée d'un système de chenille arrière spécialisé et d'un ski avant pour une stabilité et un contrôle supérieurs sur surfaces glacées.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePerformance écologique\u003c\/strong\u003e : profitez d'une conduite puissante sans le bruit ni les émissions d'un moteur thermique.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePrise en main intuitive\u003c\/strong\u003e : conçue pour les utilisateurs recherchant une expérience de déplacement hivernal ou de loisir réactive et agile.\u003c\/li\u003e\n\u003c\/ul\u003e\u003cp\u003e\u003cstrong\u003eSpécifications techniques\u003c\/strong\u003e\u003c\/p\u003e\u003cul\u003e\n\u003cli\u003ePuissance : moteur haute performance 1800W.\u003c\/li\u003e\n\u003cli\u003eConfiguration : ski avant directionnel avec chenille de traction arrière.\u003c\/li\u003e\n\u003cli\u003ePortabilité : cadre entièrement pliable.\u003c\/li\u003e\n\u003cli\u003eTerrain : optimisée pour la neige et la glace.\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"tousetriens.com","offers":[{"title":"Default Title","offer_id":64193330184569,"sku":null,"price":1032.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0961\/8404\/1849\/files\/H980bf89f2c2941898cbe7d102d679921J.webp?v=1786193987"},{"product_id":"anti-theft-waterproof-motorcycle-phone-mount","title":"Support de Téléphone Antivol et Étanche pour Moto","description":"\u003cp\u003eSupport de téléphone étanche et antivol pour moto - Support pour vélo avec rotule en aluminium de 2,5 cm (1 pouce) pour guidon, rotation à 720°, compatible avec les téléphones de 5,5\" à 6,8\" (taille L)\u003c\/p\u003e","brand":"tousetriens.com","offers":[{"title":"S - pour telephones 3.5 a 6.1 pouces","offer_id":64193330217337,"sku":null,"price":35.99,"currency_code":"EUR","in_stock":true},{"title":"L - pour telephones 5.5 a 6.8 pouces","offer_id":64193330250105,"sku":null,"price":35.99,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0961\/8404\/1849\/files\/71Tz5WFUjZL._AC_SL1500.jpg?v=1786193987"},{"product_id":"trottinette-electrique-tout-terrain-g63-gyroor-1200w-copie","title":"Trottinette électrique G63 Double Moteur –2400W nominal \/ 3000W crête","description":"\u003cdiv id='\"__root\"'\u003e\u003c\/div\u003e\n\u003ch1 class=\"text-[1.375rem] font-bold mt-4 pt-5 mb-5 text-zinc-900 dark:text-zinc-100 first:mt-0 first:pt-0 tracking-tight\"\u003e[G63 DUAL MOTOR] La Force Brute Tout-Terrain — 2400W ⚡\u003c\/h1\u003e\n\u003cp class=\"!mt-2 !mb-2 leading-relaxed\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eDominez chaque relief. Sans compromis.\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp class=\"!mt-2 !mb-2 leading-relaxed\"\u003eLa G63 Dual Motor n'est pas une simple trottinette électrique ; c'est un engin de franchissement conçu pour ceux qui ne veulent pas choisir entre puissance urbaine et aventure tout-terrain. Avec ses deux moteurs haute performance, elle redéfinit les standards du segment \"Heavy Duty\".\u003c\/p\u003e\n\u003chr class=\"my-6 border-zinc-200\/80 dark:border-zinc-700\/80\"\u003e\n\u003ch2 class=\"text-[1.2rem] font-bold mt-4 pt-4 mb-4 text-zinc-800 dark:text-zinc-200 first:mt-0 first:pt-0 tracking-tight\"\u003e🏗️ L'ADN \"TANK\" : CONSTRUITE POUR DURER\u003c\/h2\u003e\n\u003cp class=\"!mt-2 !mb-2 leading-relaxed\"\u003eFidèle à son héritage, la G63 conserve sa structure en alliage d'aluminium de qualité aéronautique. Son design robuste et agressif n'est pas seulement esthétique : il est conçu pour encaisser les chocs et les vibrations des terrains les plus difficiles.\u003c\/p\u003e\n\u003ch3 class=\"text-base font-semibold mt-3 pt-3 mb-3 text-zinc-800 dark:text-zinc-200 first:mt-0 first:pt-0 tracking-tight\"\u003e🚀 Puissance X2 : La Motricité Intégrale\u003c\/h3\u003e\n\u003cp class=\"!mt-2 !mb-2 leading-relaxed\"\u003eÉquipée de\u003cspan\u003e \u003c\/span\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003edeux moteurs Brushless de 1200W\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e(2400W nominal \/ 3000W crête), la G63 Dual Motor offre un couple instantané capable de vous propulser en haut des pentes les plus raides (jusqu'à 35°) sans aucune perte de régime.\u003c\/p\u003e\n\u003cul class=\"my-5 space-y-3 leading-[1.85] pl-5\"\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003e\n\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eMode Single\/Dual\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e: Passez d'une conduite fluide et économique à une puissance dévastatrice d'une simple pression sur le commutateur.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3 class=\"text-base font-semibold mt-3 pt-3 mb-3 text-zinc-800 dark:text-zinc-200 first:mt-0 first:pt-0 tracking-tight\"\u003e🔋 Modularité \u0026amp; Endurance\u003c\/h3\u003e\n\u003cul class=\"my-5 space-y-3 leading-[1.85] pl-5\"\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003e\n\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eBatterie Amovible 48V 20Ah (ou 60V)\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e: Système de verrouillage sécurisé permettant de recharger votre batterie n'importe où sans transporter la trottinette.\u003c\/li\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003e\n\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eDesign Étanche IP54\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e: Roulez sereinement sous la pluie fine ou sur sol humide grâce à la protection renforcée des composants électroniques.\n\u003cdiv id='\"__root\"'\u003e\u003c\/div\u003e\n\u003cscript\u003e(function(){\nvar root=document.getElementById('__root');\nvar _t=null,_gt=null,_st=null,_first=true;\nfunction scheduleGeometry(){if(_gt)clearTimeout(_gt);_gt=setTimeout(_geo,60);}\nfunction scheduleHeight(){if(_st)return;_st=setTimeout(function(){_st=null;_h();},60);}\nvar _finalized=false;\nvar _frozen=false;\n\/\/ Runaway layout-loop detector (e.g. a Chart.js responsive canvas reflowing\n\/\/ every frame). Freeze only when the high reflow rate PERSISTS across several\n\/\/ consecutive windows: a cold-load settle is a one-off burst that then stops,\n\/\/ so requiring persistence avoids freezing healthy widgets mid-settle at a\n\/\/ too-small height.\nvar _hWinStart=0,_hCalls=0,_hBusyWins=0;\nvar _HOT_PER_WIN=20,_HOT_WINS=4;\nvar _fSamples=[],_fInt=null,_fRecs=0;\nvar _pinned=[];\nvar _evalStability=(function Mi(e,t,r){if(typeof r\u003e\u0026quot;u\u0026quot;\u0026amp;\u0026amp;(r=20),e.length\u003c2)return{status:\u0026quot;undecided\u0026quot;};var a=e[e.length-1],o=e[e.length-2];return a-o\u003e20?{status:\u0026quot;runaway\u0026quot;}:Math.abs(a-o)\u003c4\u0026amp;\u0026amp;Math.abs(a-t)\u003e8?{status:\u0026quot;stable\u0026quot;,stableHeight:a}:e.length\u003e=r?{status:\u0026quot;runaway\u0026quot;}:e.length\u003c5?{status:\u0026quot;undecided\u0026quot;}:{status:\u0026quot;runaway\u0026quot;}});\nfunction _thaw(){\n_frozen=false;\ntry{\nfor(var j=0;j\u003c_pinned.length;j++){\nvar item=_pinned[j];\nfor(var k=0;k\u003citem.p.length;k++)item.el.style.removeProperty(item.p[k]);\n}\n}catch(e){}finally{\n_pinned=[];\n_hBusyWins=0;_hCalls=0;_hWinStart=0;\nif(_fInt){clearInterval(_fInt);_fInt=null;}\n_fSamples=[];\ntry{\n_ro.observe(document.body);\n_ro.observe(document.documentElement);\nif(root)_ro.observe(root);\n}catch(e2){}\n}\n}\nfunction _selfFreeze(){\nif(_frozen)return;\n_frozen=true;\nif(_t){clearTimeout(_t);_t=null;}\ntry{_ro.disconnect();}catch(_e){}\n\/\/ The feedback engine is the chart library's OWN ResizeObserver, which\n\/\/ watches the canvas's PARENT (responsive:true). By the time we get here\n\/\/ the loop has already inflated the canvas\/ancestors to a huge height, so\n\/\/ we must NOT pin them at their current (runaway) size — that locks in the\n\/\/ giant empty box seen in the wild. Instead: (1) cap each canvas to a sane\n\/\/ height derived from its own width (a chart wider than tall is the norm),\n\/\/ (2) reflow so ancestors collapse to fit, (3) THEN pin the collapsed\n\/\/ ancestors so the library reads a constant parent size and the circular\n\/\/ reference resolves.\ntry{\n_pinned=[];\nvar cs=root?root.querySelectorAll('canvas'):[];\nfor(var i=0;i\u003ccs.length;i++){\nvar node=cs[i];\nvar cw=node.getBoundingClientRect().width||node.offsetWidth||0;\n\/\/ Cap to the canvas width but never taller than 420px; a runaway chart is\n\/\/ always inflated past this, a healthy one never reaches freeze at all.\nvar cap=cw\u003e0?Math.min(cw,420):360;\nnode.style.setProperty('height',cap+'px','important');\nnode.style.setProperty('max-height',cap+'px','important');\n_pinned.push({el:node,p:['height','max-height']});\n}\n\/\/ Force reflow so ancestor heights recompute against the capped canvases.\nif(root)void root.getBoundingClientRect();\nfor(var k=0;k\u003ccs.length;k++){\nvar anc=cs[k].parentElement;\nwhile(anc\u0026amp;\u0026amp;anc!==root.parentElement){\nvar ah=anc.getBoundingClientRect().height||anc.offsetHeight||0;\nif(ah\u003e0){\nanc.style.setProperty('height',ah+'px','important');\nanc.style.setProperty('overflow','hidden','important');\n_pinned.push({el:anc,p:['height','overflow']});\n}\nif(anc===root)break;\nanc=anc.parentElement;\n}\n}\n}catch(_e2){}\nif(root){\nroot.style.setProperty('overflow','hidden','important');\n_pinned.push({el:root,p:['overflow']});\n}\n\/\/ Report the now-stable height once so the host locks the iframe.\nvar fh=root?Math.max(root.getBoundingClientRect().height,root.scrollHeight,root.offsetHeight):0;\nif(fh\u003e0)parent.postMessage({type:'widget:resize',height:fh,frozen:true},'*');\n\n\/\/ Recovery mechanism: check if layout stabilizes at a different height after freeze.\n\/\/ Why: pin 后完全定格的布局对 scrollHeight 采样是盲的（样本恒等于冻结高度），\n\/\/ 此机制只能恢复 freeze 误落在 settle 进行中的场景。\nif(_fRecs\u003c2\u0026amp;\u0026amp;!_fInt){\n_fSamples=[];\n_fInt=setInterval(function(){\nif(!root)return;\nvar sh=root.scrollHeight;\n_fSamples.push(sh);\nvar res=_evalStability(_fSamples,fh);\nif(res.status==='stable'){\n_fRecs++;\n_thaw();\nparent.postMessage({type:'widget:resize',height:res.stableHeight,recovered:true},'*');\n}else if(res.status==='runaway'){\nclearInterval(_fInt);_fInt=null;\n}\n},1000);\n}\n}\nfunction _h(){\nif(_frozen)return;\nvar _now=Date.now();\nif(_now-_hWinStart\u003e400){\n\/\/ Window closed: extend the hot streak if it was hot, else reset it.\nif(_hCalls\u003e_HOT_PER_WIN)_hBusyWins++;else _hBusyWins=0;\n_hWinStart=_now;_hCalls=1;\n}else{\n_hCalls++;\nif(_hCalls\u003e_HOT_PER_WIN\u0026amp;\u0026amp;_hBusyWins\u003e=_HOT_WINS-1){_selfFreeze();return;}\n}\nif(_t)clearTimeout(_t);\n_t=setTimeout(function(){\nvar bodyStyle=document.body ? getComputedStyle(document.body) : null;\nvar bodyPadding=bodyStyle\n  ? (parseFloat(bodyStyle.paddingTop||'0')||0) + (parseFloat(bodyStyle.paddingBottom||'0')||0)\n  : 0;\nvar rootH=Math.max(\n  root ? root.getBoundingClientRect().height : 0,\n  root ? root.scrollHeight : 0,\n  root ? root.offsetHeight : 0\n);\nvar bodyH=Math.max(\n  document.body ? document.body.scrollHeight : 0,\n  document.body ? document.body.offsetHeight : 0\n);\nvar h=rootH\u003e0 ? rootH + bodyPadding : Math.min(bodyH,360);\nif(h\u003c=0){\n  var vh=Math.max(\n    window.innerHeight||0,\n    document.documentElement ? document.documentElement.clientHeight : 0\n  );\n  h=Math.min(vh,360);\n}\nif(h\u003e0)parent.postMessage({type:'widget:resize',height:h,first:_first},'*');\n_first=false;\n},60);\n}\nvar _ro=new ResizeObserver(_h);\n_ro.observe(document.body);\n_ro.observe(document.documentElement);\nif(root)_ro.observe(root);\n\nfunction _geo(){\ntry{\nvar svgs=root.querySelectorAll('svg[viewBox]');\nvar issues=[];\nfor(var i=0;i\u003csvgs.length;i++){\nvar svg=svgs[i];\nif(svg.parentElement\u0026amp;\u0026amp;svg.parentElement.closest('svg'))continue;\ntry{\nvar bb=svg.getBBox();\nvar vbStr=svg.getAttribute('viewBox');\nvar vb=vbStr.split(\/[\\s,]+\/).map(parseFloat);\nif(vb.length!==4||isNaN(vb[0])||isNaN(vb[1])||isNaN(vb[2])||isNaN(vb[3]))continue;\nvar E=0;\ntry{\nvar els=svg.querySelectorAll('*');\nvar maxSW=0;\nfor(var j=0;j\u003cels.length;j++){\nvar swStr=els[j].getAttribute('stroke-width')||els[j].style.strokeWidth;\nif(swStr){\nvar sw=parseFloat(swStr);\nif(!isNaN(sw)\u0026amp;\u0026amp;sw\u003emaxSW)maxSW=sw;\n}\n}\nE=maxSW\/2;\nif(svg.querySelector('[marker-end],[marker-start],[marker-mid]'))E+=12;\n}catch(e){E=0;}\nvar vx=vb[0],vy=vb[1],vw=vb[2],vh=vb[3],PAD=24,EPS=2;\nvar left=bb.x-E,top=bb.y-E,right=bb.x+bb.width+E,bottom=bb.y+bb.height+E;\nvar isOv=left\u003cvx-EPS||top\u003cvy-EPS||right\u003evx+vw+EPS||bottom\u003evy+vh+EPS;\nif(isOv){\nvar nvx=Math.min(vx,left-PAD),nvy=Math.min(vy,top-PAD);\nvar nvw=Math.max(vx+vw,right+PAD)-nvx,nvh=Math.max(vy+vh,bottom+PAD)-nvy;\nvar nvbStr=[nvx,nvy,nvw,nvh].join(' ');\nif(nvbStr!==vbStr){\nsvg.setAttribute('viewBox',nvbStr);\nif(left\u003cvx-EPS)issues.push({kind:'overflow',direction:'left',amount:Math.round(vx-left)});\nif(top\u003cvy-EPS)issues.push({kind:'overflow',direction:'top',amount:Math.round(vy-top)});\nif(right\u003evx+vw+EPS)issues.push({kind:'overflow',direction:'right',amount:Math.round(right-(vx+vw))});\nif(bottom\u003evy+vh+EPS)issues.push({kind:'overflow',direction:'bottom',amount:Math.round(bottom-(vy+vh))});\n}\n}\n}catch(e){}\n}\nif(issues.length)parent.postMessage({type:'widget:geometry',fixed:true,issues:issues},'*');\n}catch(e){}\n}\n\nfunction applyHtml(html){\nif(_finalized)return;\nroot.innerHTML=html;\n_h();\n}\n\nfunction finalizeHtml(html){\n_finalized=true;\n_thaw();\n\/\/ Parse finalized HTML in a temp container to separate scripts from content\nvar tmp=document.createElement('div');\ntmp.innerHTML=html;\nvar ss=tmp.querySelectorAll('script');\nvar scripts=[];\nfor(var i=0;i\u003css.length;i++){\nscripts.push({src:ss[i].src||'',text:ss[i].textContent||'',attrs:[]});\nfor(var j=0;j\u003css[i].attributes.length;j++){\nvar a=ss[i].attributes[j];\nif(a.name!=='src')scripts[scripts.length-1].attrs.push({name:a.name,value:a.value});\n}\nss[i].remove();\n}\n\/\/ Update non-script content only if it differs (avoids repaint flash)\nvar visualHtml=tmp.innerHTML;\nif(root.innerHTML!==visualHtml)root.innerHTML=visualHtml;\n\/\/ Execute scripts in sequence so inline init code waits for external CDNs.\nfunction runNext(idx){\nif(idx\u003e=scripts.length){\nscheduleGeometry();\n_h();\nparent.postMessage({type:'widget:styled'},'*');\nreturn;\n}\nvar s=scripts[idx];\nvar n=document.createElement('script');\nfor(var j=0;j\u003cs.attrs.length;j++)n.setAttribute(s.attrs[j].name,s.attrs[j].value);\nif(s.src){\nn.onload=function(){runNext(idx+1);};\nn.onerror=function(){runNext(idx+1);};\nn.src=s.src;\nroot.appendChild(n);\nreturn;\n}\nif(s.text)n.textContent=s.text;\nroot.appendChild(n);\nrunNext(idx+1);\n}\nrunNext(0);\n}\n\nwindow.addEventListener('message',function(e){\nif(!e.data)return;\nswitch(e.data.type){\ncase 'widget:update':\napplyHtml(e.data.html);\nbreak;\ncase 'widget:finalize':\nfinalizeHtml(e.data.html);\nsetTimeout(_h,150);\nbreak;\ncase 'widget:theme':\nif(typeof e.data.isDark==='boolean')document.documentElement.className=e.data.isDark?'dark':'';\nsetTimeout(_h,100);\nbreak;\ncase 'widget:measure':\n_thaw();\n_h();\nbreak;\ncase 'widget:screenshot':\n(function(){\nif(!root){parent.postMessage({type:'widget:screenshotData',error:'empty'},'*');return;}\ntry{\nvar clone=root.cloneNode(true);\nvar origCanvases=root.querySelectorAll('canvas');\nvar cloneCanvases=clone.querySelectorAll('canvas');\nfor(var ci=0;ci\u003corigCanvases.length;ci++){\ntry{\nvar cImg=document.createElement('img');\ncImg.src=origCanvases[ci].toDataURL('image\/png');\ncImg.width=origCanvases[ci].offsetWidth||origCanvases[ci].width;\ncImg.height=origCanvases[ci].offsetHeight||origCanvases[ci].height;\ncImg.style.cssText=cloneCanvases[ci].style.cssText;\ncImg.className=cloneCanvases[ci].className;\ncloneCanvases[ci].parentNode.replaceChild(cImg,cloneCanvases[ci]);\n}catch(ce){}\n}\nvar origImgs=root.querySelectorAll('img');\nvar cloneImgs=clone.querySelectorAll('img');\nfor(var ii=0;ii\u003corigImgs.length;ii++){\ntry{\nif(origImgs[ii].src\u0026amp;\u0026amp;origImgs[ii].src.indexOf('data:')!==0\u0026amp;\u0026amp;origImgs[ii].naturalWidth\u003e0){\nvar cv=document.createElement('canvas');\ncv.width=origImgs[ii].naturalWidth;\ncv.height=origImgs[ii].naturalHeight;\ncv.getContext('2d').drawImage(origImgs[ii],0,0);\ncloneImgs[ii].src=cv.toDataURL('image\/png');\n}\n}catch(ie){}\n}\nvar styles='';\nvar sheets=document.styleSheets;\nfor(var si=0;si\u003csheets.length;si++){\ntry{\nvar rules=sheets[si].cssRules;\nfor(var ri=0;ri\u003crules.length;ri++)styles+=rules[ri].cssText+' ';\n}catch(se){}\n}\nvar rect=root.getBoundingClientRect();\nparent.postMessage({type:'widget:screenshotData',html:clone.innerHTML,css:styles,width:Math.ceil(rect.width),height:Math.ceil(rect.height)},'*');\n}catch(ex){\nparent.postMessage({type:'widget:screenshotData',error:String(ex)},'*');\n}\n})();\nbreak;\n}\n});\n\ndocument.addEventListener('click',function(e){\nvar a=e.target\u0026amp;\u0026amp;e.target.closest?e.target.closest('a[href]'):null;\nif(!a)return;var h=a.getAttribute('href');\nif(!h||h.charAt(0)==='#')return;\ne.preventDefault();\nparent.postMessage({type:'widget:link',href:h},'*');\n});\n\nwindow.__widgetSendMessage=function(t){\nif(typeof t!=='string'||t.length\u003e500)return;\nparent.postMessage({type:'widget:sendMessage',text:t},'*');\n};\n\ntry{\nvar _mo=new MutationObserver(function(muts){\nvar sh=false,gh=false;\nfor(var i=0;i\u003cmuts.length;i++){\nvar m=muts[i];\nif(m.type==='attributes'\u0026amp;\u0026amp;m.attributeName){\nvar an=m.attributeName.toLowerCase();\nif(an.indexOf('data-')===0||an.indexOf('aria-')===0)continue;\nif(an==='title'||an==='alt'||an==='role'||an==='placeholder')continue;\n          if(m.target\u0026amp;\u0026amp;m.target.closest\u0026amp;\u0026amp;m.target.closest('svg')\u0026amp;\u0026amp;an==='viewbox')continue;\n}\nsh=true;\nif(m.target\u0026amp;\u0026amp;m.target.closest\u0026amp;\u0026amp;m.target.closest('svg'))gh=true;\n}\nif(sh)scheduleHeight();if(gh)scheduleGeometry();\n});\n_mo.observe(root,{childList:true,subtree:true,attributes:true,characterData:true});\n}catch(e){}\nwindow.addEventListener('load',function(e){\nvar tn=e.target\u0026amp;\u0026amp;e.target.tagName?e.target.tagName.toUpperCase():'';\nif(tn==='IMG'||tn==='IFRAME')_h();\n},true);\nif(document.fonts\u0026amp;\u0026amp;document.fonts.ready)document.fonts.ready.then(function(){_h();scheduleGeometry();});\n\nparent.postMessage({type:'widget:ready'},'*');\n})();\u003c\/script\u003e\n\u003cdiv id='\"__root\"'\u003e\u003c\/div\u003e\n\u003cscript\u003e(function(){\nvar root=document.getElementById('__root');\nvar _t=null,_gt=null,_st=null,_first=true;\nfunction scheduleGeometry(){if(_gt)clearTimeout(_gt);_gt=setTimeout(_geo,60);}\nfunction scheduleHeight(){if(_st)return;_st=setTimeout(function(){_st=null;_h();},60);}\nvar _finalized=false;\nvar _frozen=false;\n\/\/ Runaway layout-loop detector (e.g. a Chart.js responsive canvas reflowing\n\/\/ every frame). Freeze only when the high reflow rate PERSISTS across several\n\/\/ consecutive windows: a cold-load settle is a one-off burst that then stops,\n\/\/ so requiring persistence avoids freezing healthy widgets mid-settle at a\n\/\/ too-small height.\nvar _hWinStart=0,_hCalls=0,_hBusyWins=0;\nvar _HOT_PER_WIN=20,_HOT_WINS=4;\nvar _fSamples=[],_fInt=null,_fRecs=0;\nvar _pinned=[];\nvar _evalStability=(function Mi(e,t,r){if(typeof r\u003e\u0026quot;u\u0026quot;\u0026amp;\u0026amp;(r=20),e.length\u003c2)return{status:\u0026quot;undecided\u0026quot;};var a=e[e.length-1],o=e[e.length-2];return a-o\u003e20?{status:\u0026quot;runaway\u0026quot;}:Math.abs(a-o)\u003c4\u0026amp;\u0026amp;Math.abs(a-t)\u003e8?{status:\u0026quot;stable\u0026quot;,stableHeight:a}:e.length\u003e=r?{status:\u0026quot;runaway\u0026quot;}:e.length\u003c5?{status:\u0026quot;undecided\u0026quot;}:{status:\u0026quot;runaway\u0026quot;}});\nfunction _thaw(){\n_frozen=false;\ntry{\nfor(var j=0;j\u003c_pinned.length;j++){\nvar item=_pinned[j];\nfor(var k=0;k\u003citem.p.length;k++)item.el.style.removeProperty(item.p[k]);\n}\n}catch(e){}finally{\n_pinned=[];\n_hBusyWins=0;_hCalls=0;_hWinStart=0;\nif(_fInt){clearInterval(_fInt);_fInt=null;}\n_fSamples=[];\ntry{\n_ro.observe(document.body);\n_ro.observe(document.documentElement);\nif(root)_ro.observe(root);\n}catch(e2){}\n}\n}\nfunction _selfFreeze(){\nif(_frozen)return;\n_frozen=true;\nif(_t){clearTimeout(_t);_t=null;}\ntry{_ro.disconnect();}catch(_e){}\n\/\/ The feedback engine is the chart library's OWN ResizeObserver, which\n\/\/ watches the canvas's PARENT (responsive:true). By the time we get here\n\/\/ the loop has already inflated the canvas\/ancestors to a huge height, so\n\/\/ we must NOT pin them at their current (runaway) size — that locks in the\n\/\/ giant empty box seen in the wild. Instead: (1) cap each canvas to a sane\n\/\/ height derived from its own width (a chart wider than tall is the norm),\n\/\/ (2) reflow so ancestors collapse to fit, (3) THEN pin the collapsed\n\/\/ ancestors so the library reads a constant parent size and the circular\n\/\/ reference resolves.\ntry{\n_pinned=[];\nvar cs=root?root.querySelectorAll('canvas'):[];\nfor(var i=0;i\u003ccs.length;i++){\nvar node=cs[i];\nvar cw=node.getBoundingClientRect().width||node.offsetWidth||0;\n\/\/ Cap to the canvas width but never taller than 420px; a runaway chart is\n\/\/ always inflated past this, a healthy one never reaches freeze at all.\nvar cap=cw\u003e0?Math.min(cw,420):360;\nnode.style.setProperty('height',cap+'px','important');\nnode.style.setProperty('max-height',cap+'px','important');\n_pinned.push({el:node,p:['height','max-height']});\n}\n\/\/ Force reflow so ancestor heights recompute against the capped canvases.\nif(root)void root.getBoundingClientRect();\nfor(var k=0;k\u003ccs.length;k++){\nvar anc=cs[k].parentElement;\nwhile(anc\u0026amp;\u0026amp;anc!==root.parentElement){\nvar ah=anc.getBoundingClientRect().height||anc.offsetHeight||0;\nif(ah\u003e0){\nanc.style.setProperty('height',ah+'px','important');\nanc.style.setProperty('overflow','hidden','important');\n_pinned.push({el:anc,p:['height','overflow']});\n}\nif(anc===root)break;\nanc=anc.parentElement;\n}\n}\n}catch(_e2){}\nif(root){\nroot.style.setProperty('overflow','hidden','important');\n_pinned.push({el:root,p:['overflow']});\n}\n\/\/ Report the now-stable height once so the host locks the iframe.\nvar fh=root?Math.max(root.getBoundingClientRect().height,root.scrollHeight,root.offsetHeight):0;\nif(fh\u003e0)parent.postMessage({type:'widget:resize',height:fh,frozen:true},'*');\n\n\/\/ Recovery mechanism: check if layout stabilizes at a different height after freeze.\n\/\/ Why: pin 后完全定格的布局对 scrollHeight 采样是盲的（样本恒等于冻结高度），\n\/\/ 此机制只能恢复 freeze 误落在 settle 进行中的场景。\nif(_fRecs\u003c2\u0026amp;\u0026amp;!_fInt){\n_fSamples=[];\n_fInt=setInterval(function(){\nif(!root)return;\nvar sh=root.scrollHeight;\n_fSamples.push(sh);\nvar res=_evalStability(_fSamples,fh);\nif(res.status==='stable'){\n_fRecs++;\n_thaw();\nparent.postMessage({type:'widget:resize',height:res.stableHeight,recovered:true},'*');\n}else if(res.status==='runaway'){\nclearInterval(_fInt);_fInt=null;\n}\n},1000);\n}\n}\nfunction _h(){\nif(_frozen)return;\nvar _now=Date.now();\nif(_now-_hWinStart\u003e400){\n\/\/ Window closed: extend the hot streak if it was hot, else reset it.\nif(_hCalls\u003e_HOT_PER_WIN)_hBusyWins++;else _hBusyWins=0;\n_hWinStart=_now;_hCalls=1;\n}else{\n_hCalls++;\nif(_hCalls\u003e_HOT_PER_WIN\u0026amp;\u0026amp;_hBusyWins\u003e=_HOT_WINS-1){_selfFreeze();return;}\n}\nif(_t)clearTimeout(_t);\n_t=setTimeout(function(){\nvar bodyStyle=document.body ? getComputedStyle(document.body) : null;\nvar bodyPadding=bodyStyle\n  ? (parseFloat(bodyStyle.paddingTop||'0')||0) + (parseFloat(bodyStyle.paddingBottom||'0')||0)\n  : 0;\nvar rootH=Math.max(\n  root ? root.getBoundingClientRect().height : 0,\n  root ? root.scrollHeight : 0,\n  root ? root.offsetHeight : 0\n);\nvar bodyH=Math.max(\n  document.body ? document.body.scrollHeight : 0,\n  document.body ? document.body.offsetHeight : 0\n);\nvar h=rootH\u003e0 ? rootH + bodyPadding : Math.min(bodyH,360);\nif(h\u003c=0){\n  var vh=Math.max(\n    window.innerHeight||0,\n    document.documentElement ? document.documentElement.clientHeight : 0\n  );\n  h=Math.min(vh,360);\n}\nif(h\u003e0)parent.postMessage({type:'widget:resize',height:h,first:_first},'*');\n_first=false;\n},60);\n}\nvar _ro=new ResizeObserver(_h);\n_ro.observe(document.body);\n_ro.observe(document.documentElement);\nif(root)_ro.observe(root);\n\nfunction _geo(){\ntry{\nvar svgs=root.querySelectorAll('svg[viewBox]');\nvar issues=[];\nfor(var i=0;i\u003csvgs.length;i++){\nvar svg=svgs[i];\nif(svg.parentElement\u0026amp;\u0026amp;svg.parentElement.closest('svg'))continue;\ntry{\nvar bb=svg.getBBox();\nvar vbStr=svg.getAttribute('viewBox');\nvar vb=vbStr.split(\/[\\s,]+\/).map(parseFloat);\nif(vb.length!==4||isNaN(vb[0])||isNaN(vb[1])||isNaN(vb[2])||isNaN(vb[3]))continue;\nvar E=0;\ntry{\nvar els=svg.querySelectorAll('*');\nvar maxSW=0;\nfor(var j=0;j\u003cels.length;j++){\nvar swStr=els[j].getAttribute('stroke-width')||els[j].style.strokeWidth;\nif(swStr){\nvar sw=parseFloat(swStr);\nif(!isNaN(sw)\u0026amp;\u0026amp;sw\u003emaxSW)maxSW=sw;\n}\n}\nE=maxSW\/2;\nif(svg.querySelector('[marker-end],[marker-start],[marker-mid]'))E+=12;\n}catch(e){E=0;}\nvar vx=vb[0],vy=vb[1],vw=vb[2],vh=vb[3],PAD=24,EPS=2;\nvar left=bb.x-E,top=bb.y-E,right=bb.x+bb.width+E,bottom=bb.y+bb.height+E;\nvar isOv=left\u003cvx-EPS||top\u003cvy-EPS||right\u003evx+vw+EPS||bottom\u003evy+vh+EPS;\nif(isOv){\nvar nvx=Math.min(vx,left-PAD),nvy=Math.min(vy,top-PAD);\nvar nvw=Math.max(vx+vw,right+PAD)-nvx,nvh=Math.max(vy+vh,bottom+PAD)-nvy;\nvar nvbStr=[nvx,nvy,nvw,nvh].join(' ');\nif(nvbStr!==vbStr){\nsvg.setAttribute('viewBox',nvbStr);\nif(left\u003cvx-EPS)issues.push({kind:'overflow',direction:'left',amount:Math.round(vx-left)});\nif(top\u003cvy-EPS)issues.push({kind:'overflow',direction:'top',amount:Math.round(vy-top)});\nif(right\u003evx+vw+EPS)issues.push({kind:'overflow',direction:'right',amount:Math.round(right-(vx+vw))});\nif(bottom\u003evy+vh+EPS)issues.push({kind:'overflow',direction:'bottom',amount:Math.round(bottom-(vy+vh))});\n}\n}\n}catch(e){}\n}\nif(issues.length)parent.postMessage({type:'widget:geometry',fixed:true,issues:issues},'*');\n}catch(e){}\n}\n\nfunction applyHtml(html){\nif(_finalized)return;\nroot.innerHTML=html;\n_h();\n}\n\nfunction finalizeHtml(html){\n_finalized=true;\n_thaw();\n\/\/ Parse finalized HTML in a temp container to separate scripts from content\nvar tmp=document.createElement('div');\ntmp.innerHTML=html;\nvar ss=tmp.querySelectorAll('script');\nvar scripts=[];\nfor(var i=0;i\u003css.length;i++){\nscripts.push({src:ss[i].src||'',text:ss[i].textContent||'',attrs:[]});\nfor(var j=0;j\u003css[i].attributes.length;j++){\nvar a=ss[i].attributes[j];\nif(a.name!=='src')scripts[scripts.length-1].attrs.push({name:a.name,value:a.value});\n}\nss[i].remove();\n}\n\/\/ Update non-script content only if it differs (avoids repaint flash)\nvar visualHtml=tmp.innerHTML;\nif(root.innerHTML!==visualHtml)root.innerHTML=visualHtml;\n\/\/ Execute scripts in sequence so inline init code waits for external CDNs.\nfunction runNext(idx){\nif(idx\u003e=scripts.length){\nscheduleGeometry();\n_h();\nparent.postMessage({type:'widget:styled'},'*');\nreturn;\n}\nvar s=scripts[idx];\nvar n=document.createElement('script');\nfor(var j=0;j\u003cs.attrs.length;j++)n.setAttribute(s.attrs[j].name,s.attrs[j].value);\nif(s.src){\nn.onload=function(){runNext(idx+1);};\nn.onerror=function(){runNext(idx+1);};\nn.src=s.src;\nroot.appendChild(n);\nreturn;\n}\nif(s.text)n.textContent=s.text;\nroot.appendChild(n);\nrunNext(idx+1);\n}\nrunNext(0);\n}\n\nwindow.addEventListener('message',function(e){\nif(!e.data)return;\nswitch(e.data.type){\ncase 'widget:update':\napplyHtml(e.data.html);\nbreak;\ncase 'widget:finalize':\nfinalizeHtml(e.data.html);\nsetTimeout(_h,150);\nbreak;\ncase 'widget:theme':\nif(typeof e.data.isDark==='boolean')document.documentElement.className=e.data.isDark?'dark':'';\nsetTimeout(_h,100);\nbreak;\ncase 'widget:measure':\n_thaw();\n_h();\nbreak;\ncase 'widget:screenshot':\n(function(){\nif(!root){parent.postMessage({type:'widget:screenshotData',error:'empty'},'*');return;}\ntry{\nvar clone=root.cloneNode(true);\nvar origCanvases=root.querySelectorAll('canvas');\nvar cloneCanvases=clone.querySelectorAll('canvas');\nfor(var ci=0;ci\u003corigCanvases.length;ci++){\ntry{\nvar cImg=document.createElement('img');\ncImg.src=origCanvases[ci].toDataURL('image\/png');\ncImg.width=origCanvases[ci].offsetWidth||origCanvases[ci].width;\ncImg.height=origCanvases[ci].offsetHeight||origCanvases[ci].height;\ncImg.style.cssText=cloneCanvases[ci].style.cssText;\ncImg.className=cloneCanvases[ci].className;\ncloneCanvases[ci].parentNode.replaceChild(cImg,cloneCanvases[ci]);\n}catch(ce){}\n}\nvar origImgs=root.querySelectorAll('img');\nvar cloneImgs=clone.querySelectorAll('img');\nfor(var ii=0;ii\u003corigImgs.length;ii++){\ntry{\nif(origImgs[ii].src\u0026amp;\u0026amp;origImgs[ii].src.indexOf('data:')!==0\u0026amp;\u0026amp;origImgs[ii].naturalWidth\u003e0){\nvar cv=document.createElement('canvas');\ncv.width=origImgs[ii].naturalWidth;\ncv.height=origImgs[ii].naturalHeight;\ncv.getContext('2d').drawImage(origImgs[ii],0,0);\ncloneImgs[ii].src=cv.toDataURL('image\/png');\n}\n}catch(ie){}\n}\nvar styles='';\nvar sheets=document.styleSheets;\nfor(var si=0;si\u003csheets.length;si++){\ntry{\nvar rules=sheets[si].cssRules;\nfor(var ri=0;ri\u003crules.length;ri++)styles+=rules[ri].cssText+' ';\n}catch(se){}\n}\nvar rect=root.getBoundingClientRect();\nparent.postMessage({type:'widget:screenshotData',html:clone.innerHTML,css:styles,width:Math.ceil(rect.width),height:Math.ceil(rect.height)},'*');\n}catch(ex){\nparent.postMessage({type:'widget:screenshotData',error:String(ex)},'*');\n}\n})();\nbreak;\n}\n});\n\ndocument.addEventListener('click',function(e){\nvar a=e.target\u0026amp;\u0026amp;e.target.closest?e.target.closest('a[href]'):null;\nif(!a)return;var h=a.getAttribute('href');\nif(!h||h.charAt(0)==='#')return;\ne.preventDefault();\nparent.postMessage({type:'widget:link',href:h},'*');\n});\n\nwindow.__widgetSendMessage=function(t){\nif(typeof t!=='string'||t.length\u003e500)return;\nparent.postMessage({type:'widget:sendMessage',text:t},'*');\n};\n\ntry{\nvar _mo=new MutationObserver(function(muts){\nvar sh=false,gh=false;\nfor(var i=0;i\u003cmuts.length;i++){\nvar m=muts[i];\nif(m.type==='attributes'\u0026amp;\u0026amp;m.attributeName){\nvar an=m.attributeName.toLowerCase();\nif(an.indexOf('data-')===0||an.indexOf('aria-')===0)continue;\nif(an==='title'||an==='alt'||an==='role'||an==='placeholder')continue;\n          if(m.target\u0026amp;\u0026amp;m.target.closest\u0026amp;\u0026amp;m.target.closest('svg')\u0026amp;\u0026amp;an==='viewbox')continue;\n}\nsh=true;\nif(m.target\u0026amp;\u0026amp;m.target.closest\u0026amp;\u0026amp;m.target.closest('svg'))gh=true;\n}\nif(sh)scheduleHeight();if(gh)scheduleGeometry();\n});\n_mo.observe(root,{childList:true,subtree:true,attributes:true,characterData:true});\n}catch(e){}\nwindow.addEventListener('load',function(e){\nvar tn=e.target\u0026amp;\u0026amp;e.target.tagName?e.target.tagName.toUpperCase():'';\nif(tn==='IMG'||tn==='IFRAME')_h();\n},true);\nif(document.fonts\u0026amp;\u0026amp;document.fonts.ready)document.fonts.ready.then(function(){_h();scheduleGeometry();});\n\nparent.postMessage({type:'widget:ready'},'*');\n})();\u003c\/script\u003e\n\u003ch2 class=\"text-[1.2rem] font-bold mt-4 pt-4 mb-4 text-zinc-800 dark:text-zinc-200 first:mt-0 first:pt-0 tracking-tight\"\u003e🛠️ SPÉCIFICATIONS TECHNIQUES\u003c\/h2\u003e\n\u003cdiv class=\"my-5 relative flex-1 min-h-0 min-w-0 hover:cursor-default overflow-x-auto overflow-y-hidden phoenix-scrollbar\"\u003e\n\u003cdiv\u003e\n\u003ctable class=\"min-w-full border-collapse text-sm\"\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2 bg-zinc-50 dark:bg-zinc-800\/80 font-semibold text-left text-zinc-700 dark:text-zinc-300\"\u003eCaractéristique\u003c\/th\u003e\n\u003cth class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2 bg-zinc-50 dark:bg-zinc-800\/80 font-semibold text-left text-zinc-700 dark:text-zinc-300\"\u003eSpécification G63 Dual Motor\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003ePuissance Moteur\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e2 x 1200W (Total 2400W Nominal \/ 3000W+ Crête)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eBatterie\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e48V 20Ah (Cellules haute densité, amovible)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eVitesse Max\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e25 km\/h (Légal) \/ Débridable sur voie privée\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eAutonomie\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eJusqu'à 60-70 km (Selon mode et terrain)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eFreinage\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eDouble disques hydrauliques + E-ABS\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eSuspensions\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eSystème Triple C-Spring avant\/arrière\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003ePneus\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e11 pouces Off-Road (Vacuum Tubeless)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eCharge Max\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e150 kg\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003ePoids\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e38 kg\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003chr class=\"my-6 border-zinc-200\/80 dark:border-zinc-700\/80\"\u003e\n\u003ch2 class=\"text-[1.2rem] font-bold mt-4 pt-4 mb-4 text-zinc-800 dark:text-zinc-200 first:mt-0 first:pt-0 tracking-tight\"\u003e🛡️ SÉCURITÉ \u0026amp; CONFORMITÉ LÉGALE (FRANCE)\u003c\/h2\u003e\n\u003cp class=\"!mt-2 !mb-2 leading-relaxed\"\u003eChez\u003cspan\u003e \u003c\/span\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eTous et Riens\u003c\/strong\u003e, nous ne transigeons pas avec la sécurité.\u003c\/p\u003e\n\u003cul class=\"my-5 space-y-3 leading-[1.85] pl-5\"\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003e\n\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eConformité EDPM\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e: La trottinette est livrée bridée électroniquement à\u003cspan\u003e \u003c\/span\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003e25 km\/h\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003econformément au décret n° 2019-1082.\u003c\/li\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003e\n\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eÉclairage 360°\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e: Phares LED ultra-puissants à l'avant, feux de position latéraux et feu stop arrière pour une visibilité maximale.\u003c\/li\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003e\n\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eAssurance\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e: Nous vous rappelons que l'assurance Responsabilité Civile (RC) est obligatoire pour circuler sur la voie publique en France.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003chr class=\"my-6 border-zinc-200\/80 dark:border-zinc-700\/80\"\u003e\n\u003ch3 class=\"text-base font-semibold mt-3 pt-3 mb-3 text-zinc-800 dark:text-zinc-200 first:mt-0 first:pt-0 tracking-tight\"\u003e📦 Contenu du pack :\u003c\/h3\u003e\n\u003col class=\"my-5 space-y-3 leading-[1.85] [\u0026amp;_li\u0026gt;p:first-child]:inline [\u0026amp;_li\u0026gt;p:first-child]:m-0\" style=\"box-sizing: border-box; border: 0px solid; margin: 0px; padding: 0px 0px 0px 20px; list-style: decimal; margin-block: calc(var(--spacing)*1.5); --tw-leading: 1.85; line-height: 1.85; scrollbar-width: none; overflow-wrap: break-word; max-width: 100%; color: oklch(0.274 0.006 286.033); font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'SF Pro', Inter, 'Segoe UI', 'PingFang SC', 'Noto Sans CJK SC', 'Source Han Sans SC', 'WenQuanYi Micro Hei', 'Noto Sans', Roboto, 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;\"\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003eTrottinette G63 Dual Motor\u003c\/li\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003eBatterie amovible\u003c\/li\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003eChargeur rapide intelligent\u003c\/li\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003eKit d'outils de maintenance\u003c\/li\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003eManuel d'utilisation (FR)\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"tousetriens.com","offers":[{"title":"CM","offer_id":64239665742201,"sku":null,"price":945.88,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0961\/8404\/1849\/files\/ChatGPTImage16aout2026_00_20_30.png?v=1786903075"},{"product_id":"gyroor-g63-diy-hybride-chenille-motrice-amp-tout-terrain-copie","title":"GYROOR G63 DIY HYBRIDE — Chenille Motrice \u0026 Tout-Terrain","description":"\u003cdiv id='\"__root\"'\u003e\u003c\/div\u003e\n\u003ch1 class=\"text-[1.375rem] font-bold mt-4 pt-5 mb-5 text-zinc-900 dark:text-zinc-100 first:mt-0 first:pt-0 tracking-tight\"\u003eGYROOR G63 DIY HYBRIDE — Chenille Motrice \u0026amp; Tout-Terrain ⚡❄️\u003c\/h1\u003e\n\u003cp class=\"!mt-2 !mb-2 leading-relaxed\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eLa motoneige électrique qui se plie dans votre coffre.\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003eLa G63 DIY Hybride combine la puissance d'une chenille motrice arrière et l'agilité d'un pneu tout-terrain avant : un seul engin pour dominer la neige, la boue, le gravier et la route — toute l'année.\u003c\/p\u003e\n\u003chr class=\"my-6 border-zinc-200\/80 dark:border-zinc-700\/80\"\u003e\n\u003ch2 class=\"text-[1.2rem] font-bold mt-4 pt-4 mb-4 text-zinc-800 dark:text-zinc-200 first:mt-0 first:pt-0 tracking-tight\"\u003e🏗️ L'ADN \"TANK\" : CONSTRUITE POUR DURER\u003c\/h2\u003e\n\u003cp class=\"!mt-2 !mb-2 leading-relaxed\"\u003eFidèle à la gamme G63, la DIY Hybride repose sur un châssis renforcé en alliage, testé pour affronter les conditions extrêmes (jusqu'à\u003cspan\u003e \u003c\/span\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003e-5 °C\u003c\/strong\u003e). Sa structure pliable se range en quelques secondes — l'hiver devient un terrain de jeu, pas une contrainte.\u003c\/p\u003e\n\u003ch3 class=\"text-base font-semibold mt-3 pt-3 mb-3 text-zinc-800 dark:text-zinc-200 first:mt-0 first:pt-0 tracking-tight\"\u003e❄️ Chenille Motrice Arrière : La Traction Absolue\u003c\/h3\u003e\n\u003cp class=\"!mt-2 !mb-2 leading-relaxed\"\u003eLe cœur du système : une\u003cspan\u003e \u003c\/span\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003echenille motrice en caoutchouc\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003eremplace la roue arrière et propulse l'engin sur la neige, la glace et les terrains meubles avec une adhérence inégalée. Inspirée des transmissions de motoneige à échelle réduite, elle offre un couple constant qui creuse sa trace là où les pneus patinent.\u003c\/p\u003e\n\u003ch3 class=\"text-base font-semibold mt-3 pt-3 mb-3 text-zinc-800 dark:text-zinc-200 first:mt-0 first:pt-0 tracking-tight\"\u003e🛞 Pneu Tout-Terrain Avant 11 Pouces : Le Contrôle\u003c\/h3\u003e\n\u003cp class=\"!mt-2 !mb-2 leading-relaxed\"\u003eÀ l'avant, un\u003cspan\u003e \u003c\/span\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003epneu pneumatique tout-terrain de 11 pouces\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003eassure la direction et l'équilibre, avec une excellente flottaison sur neige tassée. Cette configuration hybride (chenille + pneu) est le choix des pilotes exigeants : traction maximale à l'arrière, maniabilité précise à l'avant.\u003c\/p\u003e\n\u003ch3 class=\"text-base font-semibold mt-3 pt-3 mb-3 text-zinc-800 dark:text-zinc-200 first:mt-0 first:pt-0 tracking-tight\"\u003e🚀 Puissance \u0026amp; Endurance\u003c\/h3\u003e\n\u003cul class=\"my-5 space-y-3 leading-[1.85] pl-5\"\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003e\n\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eMoteur Brushless 1500 W nominal \/ 1800 W crête\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e: un couple brutal, disponible immédiatement, même en pleine montée.\u003c\/li\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003e\n\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eBatterie 48V 30Ah (1440 Wh)\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e: une réserve massive pour enchaîner les sorties.\u003c\/li\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003e\n\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eAutonomie annoncée : environ 50 km\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003epar charge.\u003c\/li\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003e\n\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eTemps de charge : 4 à 5 heures\u003c\/strong\u003e.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003chr class=\"my-6 border-zinc-200\/80 dark:border-zinc-700\/80\"\u003e\n\u003ch2 class=\"text-[1.2rem] font-bold mt-4 pt-4 mb-4 text-zinc-800 dark:text-zinc-200 first:mt-0 first:pt-0 tracking-tight\"\u003e📋 CARACTÉRISTIQUES PRINCIPALES\u003c\/h2\u003e\n\u003cdiv class=\"my-5 relative flex-1 min-h-0 min-w-0 hover:cursor-default overflow-x-auto overflow-y-hidden phoenix-scrollbar\"\u003e\n\u003cdiv\u003e\n\u003ctable class=\"min-w-full border-collapse text-sm\"\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2 bg-zinc-50 dark:bg-zinc-800\/80 font-semibold text-left text-zinc-700 dark:text-zinc-300\"\u003eCaractéristique\u003c\/th\u003e\n\u003cth class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2 bg-zinc-50 dark:bg-zinc-800\/80 font-semibold text-left text-zinc-700 dark:text-zinc-300\"\u003eSpécification\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eModèle\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eGYROOR G63 DIY Hybride\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eMotorisation\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eMoteur Brushless 1500 W nominal \/ 1800 W crête\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eTraction\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eChenille motrice arrière (caoutchouc)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eRoue avant\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003ePneu tout-terrain pneumatique 11 pouces\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eBatterie\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e48 V 30 Ah (Lithium, 1440 Wh)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eBatterie amovible\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eOui\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eAutonomie annoncée\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eEnviron 50 km\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eVitesse maximale\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e25 km\/h (bridée, conforme EDPM)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eSuspensions\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eAvant et arrière\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eFreinage\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eFrein mécanique + EABS\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eÉtanchéité\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eImperméable, testé à -5 °C\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eStructure pliable\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eOui\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eÉcran\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eAffichage numérique\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eApplication\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eContrôle via application (smart)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eCharge maximale\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e150 kg\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eTemps de charge\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eEnviron 4 à 5 heures\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eSiège amovible\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"border border-zinc-200 dark:border-zinc-700 px-3 py-2\"\u003eOui (mode assis)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003chr class=\"my-6 border-zinc-200\/80 dark:border-zinc-700\/80\"\u003e\n\u003ch2 class=\"text-[1.2rem] font-bold mt-4 pt-4 mb-4 text-zinc-800 dark:text-zinc-200 first:mt-0 first:pt-0 tracking-tight\"\u003e🛡️ SÉCURITÉ \u0026amp; CONFORMITÉ LÉGALE (FRANCE)\u003c\/h2\u003e\n\u003cp class=\"!mt-2 !mb-2 leading-relaxed\"\u003eChez\u003cspan\u003e \u003c\/span\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eTous et Riens\u003c\/strong\u003e, la sécurité ne se négocie pas :\u003c\/p\u003e\n\u003cul class=\"my-5 space-y-3 leading-[1.85] pl-5\"\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003e\n\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eConformité EDPM\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e: livrée bridée électroniquement à\u003cspan\u003e \u003c\/span\u003e\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003e25 km\/h\u003c\/strong\u003e, conforme au décret n° 2019-1082 pour la circulation sur voie publique.\u003c\/li\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003e\n\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eAssurance\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e: rappel — l'assurance Responsabilité Civile (RC) est obligatoire pour circuler en France.\u003c\/li\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003e\n\u003cstrong class=\"font-semibold text-zinc-900 dark:text-zinc-100\"\u003eÉtanchéité certifiée\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e: composants protégés contre l'humidité et le froid pour rouler sereinement sous la neige ou la pluie.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3 class=\"text-base font-semibold mt-3 pt-3 mb-3 text-zinc-800 dark:text-zinc-200 first:mt-0 first:pt-0 tracking-tight\"\u003e📱 CONNECTIVITÉ SMART\u003c\/h3\u003e\n\u003cp class=\"!mt-2 !mb-2 leading-relaxed\"\u003ePilotez la G63 DIY depuis votre smartphone : verrouillage à distance, suivi du parcours, niveau de batterie et réglages personnalisés via l'application dédiée.\u003c\/p\u003e\n\u003chr class=\"my-6 border-zinc-200\/80 dark:border-zinc-700\/80\"\u003e\n\u003ch3 class=\"text-base font-semibold mt-3 pt-3 mb-3 text-zinc-800 dark:text-zinc-200 first:mt-0 first:pt-0 tracking-tight\"\u003e📦 Contenu du pack :\u003c\/h3\u003e\n\u003col class=\"my-5 space-y-3 leading-[1.85] [\u0026amp;_li\u0026gt;p:first-child]:inline [\u0026amp;_li\u0026gt;p:first-child]:m-0\" style=\"box-sizing: border-box; border: 0px solid; margin: 0px; padding: 0px 0px 0px 20px; list-style: decimal; margin-block: calc(var(--spacing)*1.5); --tw-leading: 1.85; line-height: 1.85; scrollbar-width: none; overflow-wrap: break-word; max-width: 100%; color: oklch(0.274 0.006 286.033); font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'SF Pro', Inter, 'Segoe UI', 'PingFang SC', 'Noto Sans CJK SC', 'Source Han Sans SC', 'WenQuanYi Micro Hei', 'Noto Sans', Roboto, 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;\"\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003eGYROOR G63 DIY Hybride (chenille motrice + roue avant 11 pouces)\u003c\/li\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003eBatterie amovible 48V 30Ah\u003c\/li\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003eChargeur (prise UE)\u003c\/li\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003eSiège amovible (mode assis)\u003c\/li\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003eManuel d'utilisation (FR)\u003c\/li\u003e\n\u003cli class=\"leading-[1.85] pl-1\"\u003eKit d'outils de maintenance\u003c\/li\u003e\n\u003c\/ol\u003e","brand":"tousetriens.com","offers":[{"title":"CM","offer_id":64260294214009,"sku":null,"price":1480.45,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0961\/8404\/1849\/files\/ChatGPT_Image_16_aout_2026_22_49_09.png?v=1786919163"}],"url":"https:\/\/www.tousetriens.com\/collections\/mobilite.oembed","provider":"tousetriens.com","version":"1.0","type":"link"}