{"id":1762847172,"date":"2026-04-05T15:13:23","date_gmt":"2026-04-05T15:13:23","guid":{"rendered":"https:\/\/www.veloexotique.fr\/?page_id=1762847172"},"modified":"2026-04-05T15:26:10","modified_gmt":"2026-04-05T15:26:10","slug":"how-to-choose-bike-size","status":"publish","type":"page","link":"https:\/\/www.veloexotique.fr\/en\/taille-velo-choisir\/","title":{"rendered":"What bike size should I choose?"},"content":{"rendered":"<div class=\"et_pb_section_0 et_pb_section et_section_regular et_flex_section\">\n<div class=\"et_pb_row_0 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_0 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_text_0 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><h1 style=\"text-align: center;\">Trouvez votre taille de v\u00e9lo id\u00e9ale<\/h1>\n<p style=\"text-align: center;\">Route ou gravel \u00b7 Bas\u00e9 sur votre morphologie et votre pratique \u00b7 R\u00e9sultat en 30 secondes<\/p>\n<\/div><\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_1 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_1 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_code_0 et_pb_code et_pb_module\"><div class=\"et_pb_code_inner\"><link href=\"https:\/\/fonts.googleapis.com\/css2?family=Barlow+Condensed:wght@700;800&family=DM+Sans:wght@400;500;600&display=swap\" rel=\"stylesheet\">\n\n<style>\n\/* \u2500\u2500 RESET \u2500\u2500 *\/\n.vsz *,.vsz *::before,.vsz *::after{box-sizing:border-box!important}\n.vsz{\n  font-family:'DM Sans',sans-serif;\n  color:#0d0d0d;\n  --g:#1db954;--gd:#159140;--gl:#e8f8ef;\n  --bk:#0d0d0d;--wh:#fff;--gr:#f5f5f3;--gm:#e0dedd;--mu:#888;\n  --fh:'Barlow Condensed',sans-serif;\n  --amber:#f9a825;--amber-lt:#fff8e1;\n}\n.vsz a{text-decoration:none!important}\n.vsz p{margin:0 0 .8em;line-height:1.6}\n.vsz p:last-child{margin-bottom:0}\n\n\/* \u2500\u2500 HERO \u2500\u2500 *\/\n.vsz-hero{\n  background:var(--bk);\n  border-radius:12px;\n  padding:36px 28px 32px;\n  text-align:center;\n  margin-bottom:24px;\n  position:relative;overflow:hidden;\n}\n.vsz-hero::before{\n  content:'';position:absolute;inset:0;\n  background:radial-gradient(ellipse 70% 60% at 50% 120%,rgba(29,185,84,.15),transparent);\n  pointer-events:none;\n}\n.vsz-hero-in{position:relative}\n.vsz-badge{\n  display:inline-block;\n  background:rgba(29,185,84,.12);color:var(--g);\n  border:1px solid rgba(29,185,84,.3);\n  font-family:var(--fh);font-size:10px;font-weight:700;letter-spacing:1.4px;text-transform:uppercase;\n  padding:4px 14px;border-radius:20px;margin-bottom:14px;\n}\n.vsz-hero h1{\n  font-family:var(--fh);\n  font-size:clamp(28px,5vw,46px);font-weight:800;\n  color:#fff;line-height:1;margin:0 0 10px;\n}\n.vsz-hero h1 em{font-style:normal;color:var(--g)}\n.vsz-hero p{font-size:14px;color:rgba(255,255,255,.5);margin:0}\n\n\/* \u2500\u2500 TOOL WRAPPER \u2500\u2500 *\/\n.vsz-tool{\n  background:var(--wh);\n  border:1px solid var(--gm);\n  border-radius:12px;\n  padding:28px;\n  margin-bottom:24px;\n}\n\n\/* \u2500\u2500 STEP \u2500\u2500 *\/\n.vsz-step{margin-bottom:28px}\n.vsz-step:last-child{margin-bottom:0}\n.vsz-step-title{\n  font-family:var(--fh);font-size:13px;font-weight:700;\n  letter-spacing:1px;text-transform:uppercase;\n  color:var(--mu);margin-bottom:16px;\n  display:flex;align-items:center;gap:10px;\n}\n.vsz-step-num{\n  width:22px;height:22px;border-radius:50%;\n  background:var(--bk);color:#fff;\n  font-size:11px;font-weight:700;\n  display:flex;align-items:center;justify-content:center;\n  flex-shrink:0;font-family:var(--fh);\n}\n\n\/* \u2500\u2500 S\u00c9LECTEUR TYPE \u2500\u2500 *\/\n.vsz-type-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}\n.vsz-type-btn{\n  border:2px solid var(--gm);border-radius:10px;\n  padding:18px 14px;text-align:center;\n  cursor:pointer;transition:all .18s;\n  background:var(--gr);\n  display:flex;flex-direction:column;align-items:center;gap:8px;\n}\n.vsz-type-btn:hover{border-color:#aaa}\n.vsz-type-btn.active{border-color:var(--g);background:var(--gl)}\n.vsz-type-icon{\n  width:48px;height:48px;\n  display:flex;align-items:center;justify-content:center;\n}\n.vsz-type-name{\n  font-family:var(--fh);font-size:17px;font-weight:700;color:var(--bk);\n}\n.vsz-type-desc{font-size:11px;color:var(--mu);line-height:1.4}\n\n\/* \u2500\u2500 CURSEUR TAILLE \u2500\u2500 *\/\n.vsz-slider-wrap{padding:0 4px}\n.vsz-slider-labels{\n  display:flex;justify-content:space-between;\n  font-family:var(--fh);font-size:11px;font-weight:700;\n  letter-spacing:.5px;color:var(--mu);\n  margin-bottom:8px;\n}\ninput.vsz-slider{\n  width:100%;accent-color:var(--g);\n  height:6px;cursor:pointer;\n  margin-bottom:10px;\n}\n.vsz-slider-val{\n  text-align:center;\n  font-family:var(--fh);font-size:42px;font-weight:800;\n  color:var(--bk);line-height:1;\n}\n.vsz-slider-val span{font-size:16px;color:var(--mu);font-weight:400;margin-left:4px}\n.vsz-slider-hint{text-align:center;font-size:12px;color:var(--mu);margin-top:4px}\n\n\/* \u2500\u2500 ENTR\u00c9E MANUELL \u2500\u2500 *\/\n.vsz-manual{\n  display:flex;align-items:center;gap:12px;\n  background:var(--gr);border-radius:8px;\n  padding:12px 16px;margin-top:12px;flex-wrap:wrap;\n}\n.vsz-manual label{font-size:13px;color:var(--mu);white-space:nowrap;flex-shrink:0}\n.vsz-manual input[type=number]{\n  width:80px;padding:6px 10px;\n  border:1.5px solid var(--gm);border-radius:6px;\n  font-size:15px;font-weight:600;\n  font-family:'DM Sans',sans-serif;\n  outline:none;transition:border .15s;\n}\n.vsz-manual input[type=number]:focus{border-color:var(--g)}\n.vsz-manual-unit{font-size:13px;color:var(--mu)}\n.vsz-manual-info{font-size:11px;color:var(--mu);line-height:1.4;flex:1;min-width:160px}\n\n\/* \u2500\u2500 S\u00c9LECTEUR PRATIQUE \u2500\u2500 *\/\n.vsz-prat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}\n.vsz-prat-btn{\n  border:2px solid var(--gm);border-radius:10px;\n  padding:14px 10px;text-align:center;\n  cursor:pointer;transition:all .18s;\n  background:var(--gr);\n}\n.vsz-prat-btn:hover{border-color:#aaa}\n.vsz-prat-btn.active{border-color:var(--g);background:var(--gl)}\n.vsz-prat-icon{font-size:22px;margin-bottom:6px;display:block}\n.vsz-prat-name{\n  font-family:var(--fh);font-size:14px;font-weight:700;\n  color:var(--bk);margin-bottom:3px;\n}\n.vsz-prat-desc{font-size:11px;color:var(--mu);line-height:1.4}\n\n\/* \u2500\u2500 BOUTON CALCULER \u2500\u2500 *\/\n.vsz-calc-btn{\n  width:100%;padding:16px;\n  background:var(--bk);color:#fff;\n  font-family:var(--fh);font-size:18px;font-weight:700;\n  letter-spacing:.8px;text-transform:uppercase;\n  border:none;border-radius:8px;cursor:pointer;\n  transition:all .15s;margin-top:4px;\n  display:flex;align-items:center;justify-content:center;gap:8px;\n}\n.vsz-calc-btn:hover{background:#222}\n.vsz-calc-btn:active{transform:scale(.99)}\n.vsz-calc-btn.ready{background:var(--g)}\n.vsz-calc-btn.ready:hover{background:var(--gd)}\n\n\/* \u2500\u2500 R\u00c9SULTATS \u2500\u2500 *\/\n.vsz-results{\n  background:var(--bk);border-radius:12px;\n  padding:28px;margin-bottom:24px;\n  display:none;\n}\n.vsz-results.show{display:block;animation:vsz-in .3s ease}\n@keyframes vsz-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}\n\n.vsz-res-header{margin-bottom:20px}\n.vsz-res-intro{\n  font-size:13px;color:rgba(255,255,255,.5);margin-bottom:4px;\n}\n.vsz-res-main{\n  display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;\n}\n.vsz-res-size{\n  font-family:var(--fh);font-size:clamp(52px,8vw,80px);font-weight:800;\n  color:var(--g);line-height:1;\n}\n.vsz-res-size-alt{\n  font-family:var(--fh);font-size:24px;font-weight:700;\n  color:rgba(255,255,255,.4);line-height:1;\n}\n.vsz-res-label{\n  font-family:var(--fh);font-size:12px;font-weight:700;\n  letter-spacing:1px;text-transform:uppercase;\n  color:rgba(255,255,255,.3);margin-top:4px;\n}\n\n\/* Grille de r\u00e9sultats d\u00e9taill\u00e9s *\/\n.vsz-res-grid{\n  display:grid;grid-template-columns:repeat(3,1fr);\n  gap:12px;margin:20px 0;\n}\n.vsz-res-card{\n  background:rgba(255,255,255,.05);\n  border:1px solid rgba(255,255,255,.08);\n  border-radius:8px;padding:14px;\n}\n.vsz-res-card-label{\n  font-family:var(--fh);font-size:10px;font-weight:700;\n  letter-spacing:1px;text-transform:uppercase;\n  color:rgba(255,255,255,.35);margin-bottom:6px;\n}\n.vsz-res-card-val{\n  font-family:var(--fh);font-size:22px;font-weight:700;\n  color:#fff;line-height:1;\n}\n.vsz-res-card-sub{font-size:11px;color:rgba(255,255,255,.4);margin-top:3px}\n\n\/* Conseil position *\/\n.vsz-res-tip{\n  background:rgba(29,185,84,.1);\n  border:1px solid rgba(29,185,84,.2);\n  border-radius:8px;padding:14px 16px;\n  margin-bottom:16px;\n}\n.vsz-res-tip-title{\n  font-family:var(--fh);font-size:11px;font-weight:700;\n  letter-spacing:1px;text-transform:uppercase;\n  color:var(--g);margin-bottom:6px;\n}\n.vsz-res-tip p{font-size:13px;color:rgba(255,255,255,.7);line-height:1.6}\n\n\/* Alerte entre-deux tailles *\/\n.vsz-res-alert{\n  background:rgba(249,168,37,.1);\n  border:1px solid rgba(249,168,37,.25);\n  border-radius:8px;padding:12px 16px;\n  margin-bottom:16px;\n  font-size:13px;color:rgba(255,255,255,.7);line-height:1.5;\n  display:none;\n}\n.vsz-res-alert.show{display:block}\n.vsz-res-alert strong{color:#f9a825}\n\n\/* Stack\/Reach rep\u00e8res *\/\n.vsz-sr-row{display:flex;gap:10px;margin-bottom:16px;flex-wrap:wrap}\n.vsz-sr{\n  flex:1;min-width:130px;\n  background:rgba(255,255,255,.04);\n  border:1px solid rgba(255,255,255,.08);\n  border-radius:8px;padding:12px 14px;\n}\n.vsz-sr-label{font-size:10px;color:rgba(255,255,255,.35);margin-bottom:4px;\n  font-family:var(--fh);font-weight:700;letter-spacing:.8px;text-transform:uppercase}\n.vsz-sr-val{font-family:var(--fh);font-size:20px;font-weight:700;color:#fff}\n.vsz-sr-unit{font-size:11px;color:rgba(255,255,255,.4)}\n.vsz-sr-bar{height:4px;background:rgba(255,255,255,.1);border-radius:2px;margin-top:6px;overflow:hidden}\n.vsz-sr-fill{height:100%;border-radius:2px;background:var(--g);transition:width .5s ease}\n\n\/* Bouton reset *\/\n.vsz-reset-btn{\n  width:100%;padding:10px;\n  background:rgba(255,255,255,.06);color:rgba(255,255,255,.6);\n  font-family:var(--fh);font-size:13px;font-weight:700;\n  letter-spacing:.6px;text-transform:uppercase;\n  border:1px solid rgba(255,255,255,.1);border-radius:6px;\n  cursor:pointer;transition:all .15s;margin-top:8px;\n}\n.vsz-reset-btn:hover{background:rgba(255,255,255,.1);color:#fff}\n\n\/* \u2500\u2500 EXPLICATIONS MESURE \u2500\u2500 *\/\n.vsz-how{\n  background:var(--gr);border:1px solid var(--gm);\n  border-radius:12px;padding:24px;margin-bottom:24px;\n}\n.vsz-how h3{\n  font-family:var(--fh);font-size:20px;font-weight:700;\n  margin-bottom:16px;color:var(--bk);\n}\n.vsz-how-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}\n.vsz-how-item{display:flex;gap:12px;align-items:flex-start}\n.vsz-how-num{\n  width:28px;height:28px;border-radius:50%;\n  background:var(--bk);color:#fff;\n  font-family:var(--fh);font-size:13px;font-weight:700;\n  display:flex;align-items:center;justify-content:center;flex-shrink:0;\n}\n.vsz-how-text{}\n.vsz-how-text strong{font-size:13px;font-weight:600;display:block;margin-bottom:2px}\n.vsz-how-text span{font-size:12px;color:var(--mu);line-height:1.5}\n\n\/* \u2500\u2500 TABLEAU R\u00c9CAP \u2500\u2500 *\/\n.vsz-table-wrap{\n  background:var(--wh);border:1px solid var(--gm);\n  border-radius:12px;overflow:hidden;margin-bottom:24px;\n}\n.vsz-table-title{\n  font-family:var(--fh);font-size:13px;font-weight:700;\n  letter-spacing:1px;text-transform:uppercase;\n  color:var(--mu);padding:16px 20px 12px;\n  border-bottom:1px solid var(--gm);\n}\n.vsz-table-wrap table{width:100%;border-collapse:collapse;font-size:12px}\n.vsz-table-wrap th{\n  font-family:var(--fh);font-size:10px;font-weight:700;\n  letter-spacing:.8px;text-transform:uppercase;\n  color:var(--mu);background:var(--gr);\n  padding:8px 14px;text-align:left;border-bottom:1px solid var(--gm);\n}\n.vsz-table-wrap td{\n  padding:9px 14px;border-bottom:1px solid var(--gm);vertical-align:middle;\n}\n.vsz-table-wrap tr:last-child td{border-bottom:none}\n.vsz-table-wrap tr.highlight td{background:#f7fefb;font-weight:600}\n.vsz-table-wrap tr.highlight td:first-child{color:var(--gd);font-weight:700}\n.vsz-tag-route{background:#e8f0ff;color:#185FA5;font-size:10px;font-weight:700;\n  padding:2px 7px;border-radius:3px;white-space:nowrap}\n.vsz-tag-gravel{background:var(--gl);color:var(--gd);font-size:10px;font-weight:700;\n  padding:2px 7px;border-radius:3px;white-space:nowrap}\n\n\/* \u2500\u2500 CTA FINAL \u2500\u2500 *\/\n.vsz-cta{\n  background:var(--bk);border-radius:12px;\n  padding:24px 28px;\n  display:flex;align-items:center;\n  justify-content:space-between;gap:16px;flex-wrap:wrap;\n}\n.vsz-cta-title{\n  font-family:var(--fh);font-size:20px;font-weight:700;\n  color:#fff;margin-bottom:4px;\n}\n.vsz-cta-sub{font-size:13px;color:rgba(255,255,255,.5)}\n.vsz-cta-btn{\n  display:inline-flex;align-items:center;gap:6px;\n  background:var(--g);color:#fff;\n  font-family:var(--fh);font-size:14px;font-weight:700;\n  letter-spacing:.7px;text-transform:uppercase;\n  padding:12px 22px;border-radius:6px;\n  white-space:nowrap;transition:background .15s;flex-shrink:0;\n}\n.vsz-cta-btn:hover{background:var(--gd)}\n\n\/* \u2500\u2500 RESPONSIVE \u2500\u2500 *\/\n@media(max-width:600px){\n  .vsz-type-row{grid-template-columns:1fr 1fr}\n  .vsz-prat-row{grid-template-columns:1fr}\n  .vsz-res-grid{grid-template-columns:1fr 1fr}\n  .vsz-how-grid{grid-template-columns:1fr}\n  .vsz-sr-row{flex-direction:column}\n}\n@media(max-width:400px){\n  .vsz-res-grid{grid-template-columns:1fr}\n  .vsz-type-row{grid-template-columns:1fr}\n}\n<\/style>\n\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     HERO\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div class=\"vsz\">\n\n\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     COMMENT MESURER\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div class=\"vsz-how\">\n  <h3>Comment mesurer votre entrejambe ?<\/h3>\n  <div class=\"vsz-how-grid\">\n    <div class=\"vsz-how-item\">\n      <div class=\"vsz-how-num\">1<\/div>\n      <div class=\"vsz-how-text\">\n        <strong>Pieds nus, dos au mur<\/strong>\n        <span>\u00c9cartez l\u00e9g\u00e8rement les jambes (5 \u00e0 10 cm). Restez droit contre le mur.<\/span>\n      <\/div>\n    <\/div>\n    <div class=\"vsz-how-item\">\n      <div class=\"vsz-how-num\">2<\/div>\n      <div class=\"vsz-how-text\">\n        <strong>Placez un livre entre les jambes<\/strong>\n        <span>Tranche vers le haut, fermement appuy\u00e9 comme une selle. Maintenez-le horizontal.<\/span>\n      <\/div>\n    <\/div>\n    <div class=\"vsz-how-item\">\n      <div class=\"vsz-how-num\">3<\/div>\n      <div class=\"vsz-how-text\">\n        <strong>Mesurez du sol au livre<\/strong>\n        <span>Utilisez un m\u00e8tre ruban. La distance du sol au bord sup\u00e9rieur du livre = votre entrejambe.<\/span>\n      <\/div>\n    <\/div>\n    <div class=\"vsz-how-item\">\n      <div class=\"vsz-how-num\">4<\/div>\n      <div class=\"vsz-how-text\">\n        <strong>Notez la valeur en cm<\/strong>\n        <span>Exemple : 82 cm. C'est cette mesure que vous utiliserez dans le calculateur ci-dessous.<\/span>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     OUTIL CALCULATEUR\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div class=\"vsz-tool\">\n\n  <!-- \u00c9TAPE 1 : TYPE DE V\u00c9LO -->\n  <div class=\"vsz-step\">\n    <div class=\"vsz-step-title\">\n      <span class=\"vsz-step-num\">1<\/span>\n      Quel type de v\u00e9lo cherchez-vous ?\n    <\/div>\n    <div class=\"vsz-type-row\">\n      <div class=\"vsz-type-btn active\" data-type=\"route\" onclick=\"setType('route',this)\">\n        <div class=\"vsz-type-icon\">\n          <svg width=\"48\" height=\"32\" viewBox=\"0 0 48 32\" fill=\"none\">\n            <circle cx=\"8\" cy=\"24\" r=\"6\" stroke=\"#0d0d0d\" stroke-width=\"2\" fill=\"none\"\/>\n            <circle cx=\"40\" cy=\"24\" r=\"6\" stroke=\"#0d0d0d\" stroke-width=\"2\" fill=\"none\"\/>\n            <path d=\"M8 24 L20 8 L32 8 L40 24\" stroke=\"#0d0d0d\" stroke-width=\"2\" fill=\"none\"\/>\n            <path d=\"M20 8 L8 24\" stroke=\"#0d0d0d\" stroke-width=\"1.5\" fill=\"none\"\/>\n            <path d=\"M32 8 L40 8\" stroke=\"#0d0d0d\" stroke-width=\"2\" stroke-linecap=\"round\"\/>\n            <circle cx=\"24\" cy=\"24\" r=\"3\" stroke=\"#1db954\" stroke-width=\"1.5\" fill=\"none\"\/>\n          <\/svg>\n        <\/div>\n        <div class=\"vsz-type-name\">V\u00e9lo de route<\/div>\n        <div class=\"vsz-type-desc\">Position plus basse, cadre a\u00e9ro, pneus fins<\/div>\n      <\/div>\n      <div class=\"vsz-type-btn\" data-type=\"gravel\" onclick=\"setType('gravel',this)\">\n        <div class=\"vsz-type-icon\">\n          <svg width=\"48\" height=\"32\" viewBox=\"0 0 48 32\" fill=\"none\">\n            <circle cx=\"8\" cy=\"24\" r=\"7\" stroke=\"#0d0d0d\" stroke-width=\"2\" fill=\"none\"\/>\n            <circle cx=\"40\" cy=\"24\" r=\"7\" stroke=\"#0d0d0d\" stroke-width=\"2\" fill=\"none\"\/>\n            <path d=\"M8 24 L18 10 L30 10 L40 24\" stroke=\"#0d0d0d\" stroke-width=\"2\" fill=\"none\"\/>\n            <path d=\"M18 10 L8 24\" stroke=\"#0d0d0d\" stroke-width=\"1.5\" fill=\"none\"\/>\n            <path d=\"M30 10 L38 10\" stroke=\"#0d0d0d\" stroke-width=\"2\" stroke-linecap=\"round\"\/>\n            <circle cx=\"24\" cy=\"24\" r=\"3.5\" stroke=\"#1db954\" stroke-width=\"1.5\" fill=\"none\"\/>\n          <\/svg>\n        <\/div>\n        <div class=\"vsz-type-name\">V\u00e9lo gravel<\/div>\n        <div class=\"vsz-type-desc\">Position plus droite, pneus larges, polyvalent<\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- \u00c9TAPE 2 : TAILLE CORPS -->\n  <div class=\"vsz-step\">\n    <div class=\"vsz-step-title\">\n      <span class=\"vsz-step-num\">2<\/span>\n      Quelle est votre taille ?\n    <\/div>\n    <div class=\"vsz-slider-wrap\">\n      <div class=\"vsz-slider-labels\">\n        <span>155 cm<\/span>\n        <span>195 cm<\/span>\n      <\/div>\n      <input class=\"vsz-slider\" type=\"range\" id=\"vsz-height-slider\"\n        min=\"155\" max=\"195\" step=\"1\" value=\"175\"\n        oninput=\"onHeightSlider(this.value)\">\n      <div class=\"vsz-slider-val\" id=\"vsz-height-display\">175 <span>cm<\/span><\/div>\n      <div class=\"vsz-slider-hint\">Glissez le curseur ou saisissez manuellement<\/div>\n    <\/div>\n    <div class=\"vsz-manual\">\n      <label for=\"vsz-height-input\">Taille exacte :<\/label>\n      <input type=\"number\" id=\"vsz-height-input\" min=\"140\" max=\"210\" value=\"175\"\n        oninput=\"onHeightInput(this.value)\">\n      <span class=\"vsz-manual-unit\">cm<\/span>\n    <\/div>\n  <\/div>\n\n  <!-- \u00c9TAPE 3 : ENTREJAMBE -->\n  <div class=\"vsz-step\">\n    <div class=\"vsz-step-title\">\n      <span class=\"vsz-step-num\">3<\/span>\n      Quelle est la longueur de votre entrejambe ?\n    <\/div>\n    <div class=\"vsz-slider-wrap\">\n      <div class=\"vsz-slider-labels\">\n        <span>65 cm<\/span>\n        <span>95 cm<\/span>\n      <\/div>\n      <input class=\"vsz-slider\" type=\"range\" id=\"vsz-inseam-slider\"\n        min=\"65\" max=\"95\" step=\"1\" value=\"80\"\n        oninput=\"onInseamSlider(this.value)\">\n      <div class=\"vsz-slider-val\" id=\"vsz-inseam-display\">80 <span>cm<\/span><\/div>\n      <div class=\"vsz-slider-hint\">Mesure du sol \u00e0 l'entrejambe (voir m\u00e9thode ci-dessus)<\/div>\n    <\/div>\n    <div class=\"vsz-manual\">\n      <label for=\"vsz-inseam-input\">Entrejambe exacte :<\/label>\n      <input type=\"number\" id=\"vsz-inseam-input\" min=\"55\" max=\"105\" value=\"80\"\n        oninput=\"onInseamInput(this.value)\">\n      <span class=\"vsz-manual-unit\">cm<\/span>\n      <span class=\"vsz-manual-info\">Si vous n'avez pas mesur\u00e9, utilisez la formule : Taille \u00d7 0,47 \u2248 entrejambe estim\u00e9e<\/span>\n    <\/div>\n  <\/div>\n\n  <!-- \u00c9TAPE 4 : PRATIQUE -->\n  <div class=\"vsz-step\">\n    <div class=\"vsz-step-title\">\n      <span class=\"vsz-step-num\">4<\/span>\n      Quel est votre style de pratique ?\n    <\/div>\n    <div class=\"vsz-prat-row\">\n      <div class=\"vsz-prat-btn\" data-prat=\"sport\" onclick=\"setPrat('sport',this)\">\n        <span class=\"vsz-prat-icon\">&#x26a1;<\/span>\n        <div class=\"vsz-prat-name\">Sportif<\/div>\n        <div class=\"vsz-prat-desc\">Position basse, allong\u00e9e. Comp\u00e9tition, training intensif.<\/div>\n      <\/div>\n      <div class=\"vsz-prat-btn active\" data-prat=\"normal\" onclick=\"setPrat('normal',this)\">\n        <span class=\"vsz-prat-icon\">&#x1f6b4;<\/span>\n        <div class=\"vsz-prat-name\">\u00c9quilibr\u00e9<\/div>\n        <div class=\"vsz-prat-desc\">Position interm\u00e9diaire. Sorties r\u00e9guli\u00e8res, cyclosport.<\/div>\n      <\/div>\n      <div class=\"vsz-prat-btn\" data-prat=\"confort\" onclick=\"setPrat('confort',this)\">\n        <span class=\"vsz-prat-icon\">&#x1f304;<\/span>\n        <div class=\"vsz-prat-name\">Confort<\/div>\n        <div class=\"vsz-prat-desc\">Position droite et rel\u00e2ch\u00e9e. Loisir, randonn\u00e9e, longues sorties.<\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- BOUTON CALCULER -->\n  <button class=\"vsz-calc-btn ready\" onclick=\"calculate()\">\n    Calculer ma taille de v\u00e9lo \u2192\n  <\/button>\n\n<\/div><!-- fin .vsz-tool -->\n\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     R\u00c9SULTATS\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div class=\"vsz-results\" id=\"vsz-results\">\n\n  <div class=\"vsz-res-header\">\n    <div class=\"vsz-res-intro\" id=\"vsz-res-intro\">Pour votre profil \u2014 V\u00e9lo de route \u00b7 \u00c9quilibr\u00e9<\/div>\n    <div class=\"vsz-res-main\">\n      <div class=\"vsz-res-size\" id=\"vsz-res-size\">54<\/div>\n      <div>\n        <div class=\"vsz-res-size-alt\" id=\"vsz-res-size-alt\">\/ M<\/div>\n        <div class=\"vsz-res-label\">Taille de cadre recommand\u00e9e<\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- Alerte entre-deux tailles -->\n  <div class=\"vsz-res-alert\" id=\"vsz-res-alert\">\n    <strong>&#x26a0; Vous \u00eates entre deux tailles.<\/strong>\n    <span id=\"vsz-res-alert-text\"> Choisissez la taille inf\u00e9rieure pour une position plus sportive et r\u00e9active, ou la taille sup\u00e9rieure pour plus de confort et d'espace.<\/span>\n  <\/div>\n\n  <!-- Conseil position -->\n  <div class=\"vsz-res-tip\">\n    <div class=\"vsz-res-tip-title\">Conseil position<\/div>\n    <p id=\"vsz-res-tip-text\">Position \u00e9quilibr\u00e9e : l\u00e9g\u00e8re inclinaison vers l'avant, bras semi-fl\u00e9chis. Id\u00e9ale pour les sorties de 2 \u00e0 5h.<\/p>\n  <\/div>\n\n  <!-- Grille de valeurs cl\u00e9s -->\n <div class=\"vsz-res-grid\">\n    <div class=\"vsz-res-card\">\n        <div class=\"vsz-res-card-label\">Taille cadre<\/div>\n        <div class=\"vsz-res-card-val\" id=\"vsz-r-cadre\">54 cm<\/div>\n        <div class=\"vsz-res-card-sub\" id=\"vsz-r-cadre-sub\">Tube de selle<\/div>\n    <\/div>\n    <div class=\"vsz-res-card\">\n        <div class=\"vsz-res-card-label\">Hauteur selle<\/div>\n        <div class=\"vsz-res-card-val\" id=\"vsz-r-selle\">72,6 cm<\/div>\n        <div class=\"vsz-res-card-sub\">BB \u2192 dessus selle<\/div>\n    <\/div>\n    <div class=\"vsz-res-card\">\n        <div class=\"vsz-res-card-label\">Taille Maillot<\/div>\n        <div class=\"vsz-res-card-val\" id=\"vsz-r-shirt\">M<\/div>\n        <div class=\"vsz-res-card-sub\">Maillot \/ Cuissard<\/div>\n    <\/div>\n<\/div>\n\n  <!-- Stack & Reach rep\u00e8res -->\n  <div style=\"margin-bottom:12px\">\n    <div style=\"font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:rgba(255,255,255,.35);margin-bottom:10px\">\n      Rep\u00e8res Stack & Reach \u2014 comparez avec la g\u00e9om\u00e9trie des cadres\n    <\/div>\n    <div class=\"vsz-sr-row\">\n      <div class=\"vsz-sr\">\n        <div class=\"vsz-sr-label\">Stack id\u00e9al<\/div>\n        <div class=\"vsz-sr-val\"><span id=\"vsz-r-stack\">560<\/span> <span class=\"vsz-sr-unit\">mm<\/span><\/div>\n        <div class=\"vsz-sr-bar\"><div class=\"vsz-sr-fill\" id=\"vsz-stack-fill\" style=\"width:60%\"><\/div><\/div>\n      <\/div>\n      <div class=\"vsz-sr\">\n        <div class=\"vsz-sr-label\">Reach id\u00e9al<\/div>\n        <div class=\"vsz-sr-val\"><span id=\"vsz-r-reach\">385<\/span> <span class=\"vsz-sr-unit\">mm<\/span><\/div>\n        <div class=\"vsz-sr-bar\"><div class=\"vsz-sr-fill\" id=\"vsz-reach-fill\" style=\"width:55%\"><\/div><\/div>\n      <\/div>\n      <div class=\"vsz-sr\">\n        <div class=\"vsz-sr-label\">Top tube eff.<\/div>\n        <div class=\"vsz-sr-val\"><span id=\"vsz-r-ett\">545<\/span> <span class=\"vsz-sr-unit\">mm<\/span><\/div>\n        <div class=\"vsz-sr-bar\"><div class=\"vsz-sr-fill\" id=\"vsz-ett-fill\" style=\"width:58%\"><\/div><\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <button class=\"vsz-reset-btn\" onclick=\"resetTool()\">\u21ba Recommencer le calcul<\/button>\n\n<\/div><!-- fin .vsz-results -->\n\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     TABLEAU DE R\u00c9F\u00c9RENCE\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div class=\"vsz-table-wrap\" id=\"vsz-table\">\n  <div class=\"vsz-table-title\">Tableau de correspondance \u2014 taille \/ cadre<\/div>\n  <table id=\"vsz-table-content\">\n    <thead>\n      <tr>\n        <th>Taille corps<\/th>\n        <th>Entrejambe<\/th>\n        <th>Cadre route (cm)<\/th>\n        <th>Cadre gravel (cm)<\/th>\n        <th>T-shirt<\/th>\n      <\/tr>\n    <\/thead>\n    <tbody id=\"vsz-tbody\"><\/tbody>\n  <\/table>\n<\/div>\n\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     CTA FINAL\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n\n<\/div><!-- fin .vsz -->\n\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     JAVASCRIPT\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<script>\n\/\/ \u2500\u2500 \u00c9TAT \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar TYPE   = 'route';\nvar PRAT   = 'normal';\nvar HEIGHT = 175;\nvar INSEAM = 80;\n\n\/\/ \u2500\u2500 DONN\u00c9ES TABLEAU \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar TABLE_DATA = [\n  {hMin:155, hMax:162, ejMin:65, ejMax:72, route:'47\u201349', gravel:'XS (45\u201347)', shirt:'XS'},\n  {hMin:162, hMax:167, ejMin:72, ejMax:76, route:'50\u201352', gravel:'XS-S (47\u201350)', shirt:'XS-S'},\n  {hMin:167, hMax:172, ejMin:75, ejMax:79, route:'52\u201354', gravel:'S (50\u201352)', shirt:'S'},\n  {hMin:172, hMax:177, ejMin:78, ejMax:82, route:'54\u201356', gravel:'S-M (52\u201354)', shirt:'S-M'},\n  {hMin:177, hMax:182, ejMin:80, ejMax:84, route:'56\u201358', gravel:'M (54\u201356)', shirt:'M'},\n  {hMin:182, hMax:187, ejMin:83, ejMax:87, route:'58\u201360', gravel:'M-L (56\u201358)', shirt:'L'},\n  {hMin:187, hMax:192, ejMin:86, ejMax:90, route:'60\u201362', gravel:'L (58\u201360)', shirt:'L-XL'},\n  {hMin:192, hMax:200, ejMin:89, ejMax:95, route:'62\u201364', gravel:'XL (60\u201362)', shirt:'XL'},\n];\n\n\/\/ \u2500\u2500 COEFFICIENTS DE CALCUL \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\/\/ Route : entrejambe \u00d7 0.665\n\/\/ Gravel : entrejambe \u00d7 0.655 (l\u00e9g\u00e8rement plus petit)\nvar COEF = {route:0.665, gravel:0.655};\n\n\/\/ Hauteur de selle : entrejambe \u00d7 0.885 (route) \/ 0.875 (gravel)\nvar SELLE_COEF = {route:0.885, gravel:0.875};\n\n\/\/ Ajustement pratique sur la taille recommand\u00e9e\nvar PRAT_ADJ = {sport:-0.5, normal:0, confort:+0.5};\n\n\/\/ Stack\/Reach approximatifs selon taille cadre (route)\nvar SR_TABLE = {\n  47:{stack:510,reach:360,ett:505},\n  49:{stack:525,reach:370,ett:515},\n  50:{stack:530,reach:375,ett:520},\n  51:{stack:535,reach:378,ett:525},\n  52:{stack:540,reach:380,ett:530},\n  53:{stack:548,reach:384,ett:537},\n  54:{stack:555,reach:388,ett:543},\n  55:{stack:563,reach:392,ett:550},\n  56:{stack:570,reach:396,ett:557},\n  57:{stack:577,reach:400,ett:563},\n  58:{stack:585,reach:404,ett:570},\n  59:{stack:592,reach:408,ett:577},\n  60:{stack:600,reach:412,ett:584},\n  61:{stack:608,reach:416,ett:591},\n  62:{stack:615,reach:420,ett:597},\n  63:{stack:622,reach:424,ett:604},\n  64:{stack:630,reach:428,ett:610},\n};\n\n\/\/ Gravel : stack plus \u00e9lev\u00e9 (position plus droite)\nvar SR_GRAVEL_ADJ = {stack:+20, reach:-8, ett:-10};\n\n\/\/ Shirt sizes\nvar SHIRTS = {\n  47:'XS',48:'XS',49:'XS-S',50:'S',51:'S',52:'S',\n  53:'S-M',54:'M',55:'M',56:'M',57:'M-L',58:'L',\n  59:'L',60:'L-XL',61:'XL',62:'XL',63:'XL',64:'XXL'\n};\n\n\/\/ Ajustement stack\/reach selon pratique\nvar SR_PRAT = {\n  sport:  {stack:-15, reach:+10},\n  normal: {stack:0,   reach:0},\n  confort:{stack:+20, reach:-8},\n};\n\n\/\/ \u2500\u2500 HELPERS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction round1(v){ return Math.round(v*10)\/10; }\nfunction roundN(v,n){ return Math.round(v\/n)*n; }\nfunction clamp(v,a,b){ return Math.max(a,Math.min(b,v)); }\n\n\/\/ \u2500\u2500 HANDLERS INPUTS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction setType(t, el){\n  TYPE = t;\n  document.querySelectorAll('.vsz-type-btn').forEach(function(b){b.classList.remove('active')});\n  el.classList.add('active');\n  refreshTable();\n}\nfunction setPrat(p, el){\n  PRAT = p;\n  document.querySelectorAll('.vsz-prat-btn').forEach(function(b){b.classList.remove('active')});\n  el.classList.add('active');\n}\nfunction onHeightSlider(v){\n  HEIGHT = parseInt(v);\n  document.getElementById('vsz-height-display').innerHTML = HEIGHT+' <span>cm<\/span>';\n  document.getElementById('vsz-height-input').value = HEIGHT;\n  \/\/ Estimer l'entrejambe si non modifi\u00e9 manuellement\n  if(!_inseamManual){\n    var est = Math.round(HEIGHT * 0.47);\n    INSEAM = est;\n    document.getElementById('vsz-inseam-slider').value = clamp(est,65,95);\n    document.getElementById('vsz-inseam-display').innerHTML = est+' <span>cm<\/span>';\n    document.getElementById('vsz-inseam-input').value = est;\n  }\n}\nfunction onHeightInput(v){\n  var h = parseInt(v)||175;\n  HEIGHT = clamp(h, 140, 210);\n  document.getElementById('vsz-height-slider').value = clamp(HEIGHT,155,195);\n  document.getElementById('vsz-height-display').innerHTML = HEIGHT+' <span>cm<\/span>';\n}\nvar _inseamManual = false;\nfunction onInseamSlider(v){\n  INSEAM = parseInt(v);\n  _inseamManual = true;\n  document.getElementById('vsz-inseam-display').innerHTML = INSEAM+' <span>cm<\/span>';\n  document.getElementById('vsz-inseam-input').value = INSEAM;\n}\nfunction onInseamInput(v){\n  var i = parseInt(v)||80;\n  INSEAM = clamp(i, 55, 105);\n  _inseamManual = true;\n  document.getElementById('vsz-inseam-slider').value = clamp(INSEAM,65,95);\n  document.getElementById('vsz-inseam-display').innerHTML = INSEAM+' <span>cm<\/span>';\n}\n\n\/\/ \u2500\u2500 CALCUL PRINCIPAL \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction calculate(){\n  var raw = INSEAM * COEF[TYPE] + PRAT_ADJ[PRAT];\n  var size = roundN(raw, 1);\n  size = clamp(Math.round(size), 44, 64);\n\n  \/\/ V\u00e9rifier si entre deux tailles\n  var between = (Math.abs(raw - size) > 0.3 && Math.abs(raw - size) < 0.8);\n\n  \/\/ Hauteur de selle\n  var selle = round1(INSEAM * SELLE_COEF[TYPE]);\n\n  \/\/ T-shirt\n  var shirt = SHIRTS[size] || 'M';\n\n  \/\/ Stack\/Reach\n  var sr = SR_TABLE[size] || SR_TABLE[54];\n  var adj = SR_PRAT[PRAT];\n  var grAdj = TYPE==='gravel' ? SR_GRAVEL_ADJ : {stack:0,reach:0,ett:0};\n  var stack = sr.stack + adj.stack + grAdj.stack;\n  var reach = sr.reach + adj.reach + grAdj.reach;\n  var ett   = sr.ett + grAdj.ett;\n\n  \/\/ Barres progression (relative \u00e0 la plage)\n  var stackPct = Math.round((stack - 490) \/ (650 - 490) * 100);\n  var reachPct = Math.round((reach - 340) \/ (430 - 340) * 100);\n  var ettPct   = Math.round((ett   - 490) \/ (615 - 490) * 100);\n\n  \/\/ Libell\u00e9 alternatif (XS\/S\/M\/L...)\n  var altLabel = shirt;\n\n  \/\/ Intros et conseils selon pratique\n  var tips = {\n    sport:   'Position sportive : buste bas, bras tendus vers l\\'avant. Optimale pour la vitesse et l\\'a\u00e9rodynamisme. Pensez \u00e0 un cintre compact et une potence allong\u00e9e (110\u2013130mm).',\n    normal:  'Position \u00e9quilibr\u00e9e : l\u00e9g\u00e8re inclinaison vers l\\'avant, bras semi-fl\u00e9chis. Id\u00e9ale pour les sorties de 2 \u00e0 5h. Compatible avec la plupart des pi\u00e8ces standard.',\n    confort: 'Position confort : buste plus droit, bras d\u00e9tendus. Parfaite pour les longues randonn\u00e9es et les cyclistes qui privil\u00e9gient le plaisir \u00e0 la performance. Potence courte recommand\u00e9e (80\u201390mm).',\n  };\n\n  \/\/ Libell\u00e9 du type\n  var typeLabel = TYPE==='route' ? 'V\u00e9lo de route' : 'V\u00e9lo gravel';\n  var pratLabel = {sport:'Pratique sportive', normal:'Pratique \u00e9quilibr\u00e9e', confort:'Pratique confort'}[PRAT];\n\n  \/\/ \u2500\u2500 Affichage \u2500\u2500\n  document.getElementById('vsz-res-intro').textContent = typeLabel+' \u00b7 '+pratLabel;\n  document.getElementById('vsz-res-size').textContent = size;\n  document.getElementById('vsz-res-size-alt').textContent = '\/ '+altLabel;\n  document.getElementById('vsz-r-cadre').textContent = size+' cm';\n  document.getElementById('vsz-r-cadre-sub').textContent = 'Tube de selle ('+typeLabel+')';\n  document.getElementById('vsz-r-selle').textContent = selle+' cm';\n  document.getElementById('vsz-r-shirt').textContent = shirt;\n  document.getElementById('vsz-res-tip-text').textContent = tips[PRAT];\n  document.getElementById('vsz-r-stack').textContent = stack;\n  document.getElementById('vsz-r-reach').textContent = reach;\n  document.getElementById('vsz-r-ett').textContent = ett;\n  document.getElementById('vsz-stack-fill').style.width = stackPct+'%';\n  document.getElementById('vsz-reach-fill').style.width = reachPct+'%';\n  document.getElementById('vsz-ett-fill').style.width = ettPct+'%';\n\n  \/\/ Alerte entre-deux\n  var alert = document.getElementById('vsz-res-alert');\n  if(between){\n    var sizeDown = size - 1;\n    var sizeUp   = size + 1;\n    document.getElementById('vsz-res-alert-text').textContent =\n      ' H\u00e9sitez entre '+sizeDown+' cm et '+(sizeDown+2)+' cm. Choisissez '+sizeDown+' cm pour une position plus sportive, ou '+(sizeDown+2)+' cm pour plus de confort.';\n    alert.classList.add('show');\n  } else {\n    alert.classList.remove('show');\n  }\n\n  \/\/ Surbrillance tableau\n  refreshTable(size);\n\n  \/\/ Afficher les r\u00e9sultats\n  var resEl = document.getElementById('vsz-results');\n  resEl.classList.add('show');\n  setTimeout(function(){\n    resEl.scrollIntoView({behavior:'smooth', block:'nearest'});\n  }, 100);\n}\n\n\/\/ \u2500\u2500 TABLEAU DE R\u00c9F\u00c9RENCE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction refreshTable(highlight){\n  var tbody = document.getElementById('vsz-tbody');\n  tbody.innerHTML = TABLE_DATA.map(function(row){\n    \/\/ D\u00e9tecter si c'est la ligne correspondante\n    var isHL = highlight && HEIGHT >= row.hMin && HEIGHT <= row.hMax;\n    return '<tr class=\"'+(isHL?'highlight':'')+'\">'+\n      '<td>'+(isHL?'<strong>':'')+row.hMin+'\u2013'+row.hMax+' cm'+(isHL?'<\/strong>':'')+'<\/td>'+\n      '<td>'+row.ejMin+'\u2013'+row.ejMax+' cm<\/td>'+\n      '<td><span class=\"vsz-tag-route\">'+row.route+'<\/span><\/td>'+\n      '<td><span class=\"vsz-tag-gravel\">'+row.gravel+'<\/span><\/td>'+\n      '<td>'+row.shirt+'<\/td>'+\n    '<\/tr>';\n  }).join('');\n}\n\n\/\/ \u2500\u2500 RESET \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction resetTool(){\n  document.getElementById('vsz-results').classList.remove('show');\n  window.scrollTo({top:document.querySelector('.vsz-tool').offsetTop - 80, behavior:'smooth'});\n}\n\n\/\/ \u2500\u2500 INIT \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nrefreshTable();\n<\/script>\n<\/div><\/div>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":1762847173,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-1762847172","page","type-page","status-publish","has-post-thumbnail","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Quelle taille de v\u00e9lo choisir? - VeloExotique.fr<\/title>\n<meta name=\"description\" content=\"Si vous avez besoin d&#039;un conseil pour trouver votre bonne taille de v\u00e9lo, vous \u00eates au bon endroit !\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.veloexotique.fr\/en\/how-to-choose-bike-size\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Quelle taille de v\u00e9lo choisir? - VeloExotique.fr\" \/>\n<meta property=\"og:description\" content=\"Si vous avez besoin d&#039;un conseil pour trouver votre bonne taille de v\u00e9lo, vous \u00eates au bon endroit !\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.veloexotique.fr\/en\/how-to-choose-bike-size\/\" \/>\n<meta property=\"og:site_name\" content=\"VeloExotique.fr\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-05T15:26:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.veloexotique.fr\/wp-content\/uploads\/2026\/04\/personnes-vehicule-loisirs-style-vie-gros-plan-homme-ajustant-selle-velo-pignon-fixe-haut_380164-122965.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1480\" \/>\n\t<meta property=\"og:image:height\" content=\"986\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.veloexotique.fr\\\/taille-velo-choisir\\\/\",\"url\":\"https:\\\/\\\/www.veloexotique.fr\\\/taille-velo-choisir\\\/\",\"name\":\"Quelle taille de v\u00e9lo choisir? - VeloExotique.fr\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.veloexotique.fr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.veloexotique.fr\\\/taille-velo-choisir\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.veloexotique.fr\\\/taille-velo-choisir\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.veloexotique.fr\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/personnes-vehicule-loisirs-style-vie-gros-plan-homme-ajustant-selle-velo-pignon-fixe-haut_380164-122965.jpg\",\"datePublished\":\"2026-04-05T15:13:23+00:00\",\"dateModified\":\"2026-04-05T15:26:10+00:00\",\"description\":\"Si vous avez besoin d'un conseil pour trouver votre bonne taille de v\u00e9lo, vous \u00eates au bon endroit !\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.veloexotique.fr\\\/taille-velo-choisir\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.veloexotique.fr\\\/taille-velo-choisir\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.veloexotique.fr\\\/taille-velo-choisir\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.veloexotique.fr\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/personnes-vehicule-loisirs-style-vie-gros-plan-homme-ajustant-selle-velo-pignon-fixe-haut_380164-122965.jpg\",\"contentUrl\":\"https:\\\/\\\/www.veloexotique.fr\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/personnes-vehicule-loisirs-style-vie-gros-plan-homme-ajustant-selle-velo-pignon-fixe-haut_380164-122965.jpg\",\"width\":1480,\"height\":986,\"caption\":\"reglage hauteur de selle v\u00e9lo\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.veloexotique.fr\\\/taille-velo-choisir\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.veloexotique.fr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Quelle taille de v\u00e9lo choisir?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.veloexotique.fr\\\/#website\",\"url\":\"https:\\\/\\\/www.veloexotique.fr\\\/\",\"name\":\"VeloExotique.fr\",\"description\":\"Le meilleur d&#039;ailleurs\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.veloexotique.fr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.veloexotique.fr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.veloexotique.fr\\\/#organization\",\"name\":\"VeloExotique.fr\",\"url\":\"https:\\\/\\\/www.veloexotique.fr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.veloexotique.fr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.veloexotique.fr\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/ChatGPT-Image-26-aout-2025-09_42_31.png\",\"contentUrl\":\"https:\\\/\\\/www.veloexotique.fr\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/ChatGPT-Image-26-aout-2025-09_42_31.png\",\"width\":1024,\"height\":1024,\"caption\":\"VeloExotique.fr\"},\"image\":{\"@id\":\"https:\\\/\\\/www.veloexotique.fr\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCizB2T3L7pbW-QG5BALTPRg\",\"https:\\\/\\\/www.instagram.com\\\/veloexotique.fr\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"What bike size to choose? - VeloExotique.fr","description":"If you need advice on finding the right bike size, you are in the right place!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.veloexotique.fr\/en\/how-to-choose-bike-size\/","og_locale":"en_US","og_type":"article","og_title":"Quelle taille de v\u00e9lo choisir? - VeloExotique.fr","og_description":"Si vous avez besoin d'un conseil pour trouver votre bonne taille de v\u00e9lo, vous \u00eates au bon endroit !","og_url":"https:\/\/www.veloexotique.fr\/en\/how-to-choose-bike-size\/","og_site_name":"VeloExotique.fr","article_modified_time":"2026-04-05T15:26:10+00:00","og_image":[{"width":1480,"height":986,"url":"https:\/\/www.veloexotique.fr\/wp-content\/uploads\/2026\/04\/personnes-vehicule-loisirs-style-vie-gros-plan-homme-ajustant-selle-velo-pignon-fixe-haut_380164-122965.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.veloexotique.fr\/taille-velo-choisir\/","url":"https:\/\/www.veloexotique.fr\/taille-velo-choisir\/","name":"What bike size to choose? - VeloExotique.fr","isPartOf":{"@id":"https:\/\/www.veloexotique.fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.veloexotique.fr\/taille-velo-choisir\/#primaryimage"},"image":{"@id":"https:\/\/www.veloexotique.fr\/taille-velo-choisir\/#primaryimage"},"thumbnailUrl":"https:\/\/www.veloexotique.fr\/wp-content\/uploads\/2026\/04\/personnes-vehicule-loisirs-style-vie-gros-plan-homme-ajustant-selle-velo-pignon-fixe-haut_380164-122965.jpg","datePublished":"2026-04-05T15:13:23+00:00","dateModified":"2026-04-05T15:26:10+00:00","description":"If you need advice on finding the right bike size, you are in the right place!","breadcrumb":{"@id":"https:\/\/www.veloexotique.fr\/taille-velo-choisir\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.veloexotique.fr\/taille-velo-choisir\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.veloexotique.fr\/taille-velo-choisir\/#primaryimage","url":"https:\/\/www.veloexotique.fr\/wp-content\/uploads\/2026\/04\/personnes-vehicule-loisirs-style-vie-gros-plan-homme-ajustant-selle-velo-pignon-fixe-haut_380164-122965.jpg","contentUrl":"https:\/\/www.veloexotique.fr\/wp-content\/uploads\/2026\/04\/personnes-vehicule-loisirs-style-vie-gros-plan-homme-ajustant-selle-velo-pignon-fixe-haut_380164-122965.jpg","width":1480,"height":986,"caption":"reglage hauteur de selle v\u00e9lo"},{"@type":"BreadcrumbList","@id":"https:\/\/www.veloexotique.fr\/taille-velo-choisir\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.veloexotique.fr\/"},{"@type":"ListItem","position":2,"name":"Quelle taille de v\u00e9lo choisir?"}]},{"@type":"WebSite","@id":"https:\/\/www.veloexotique.fr\/#website","url":"https:\/\/www.veloexotique.fr\/","name":"VeloExotique.fr","description":"The best of elsewhere","publisher":{"@id":"https:\/\/www.veloexotique.fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.veloexotique.fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.veloexotique.fr\/#organization","name":"VeloExotique.fr","url":"https:\/\/www.veloexotique.fr\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.veloexotique.fr\/#\/schema\/logo\/image\/","url":"https:\/\/www.veloexotique.fr\/wp-content\/uploads\/2025\/08\/ChatGPT-Image-26-aout-2025-09_42_31.png","contentUrl":"https:\/\/www.veloexotique.fr\/wp-content\/uploads\/2025\/08\/ChatGPT-Image-26-aout-2025-09_42_31.png","width":1024,"height":1024,"caption":"VeloExotique.fr"},"image":{"@id":"https:\/\/www.veloexotique.fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.youtube.com\/channel\/UCizB2T3L7pbW-QG5BALTPRg","https:\/\/www.instagram.com\/veloexotique.fr\/"]}]}},"_links":{"self":[{"href":"https:\/\/www.veloexotique.fr\/en\/wp-json\/wp\/v2\/pages\/1762847172","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.veloexotique.fr\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.veloexotique.fr\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.veloexotique.fr\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.veloexotique.fr\/en\/wp-json\/wp\/v2\/comments?post=1762847172"}],"version-history":[{"count":4,"href":"https:\/\/www.veloexotique.fr\/en\/wp-json\/wp\/v2\/pages\/1762847172\/revisions"}],"predecessor-version":[{"id":1762847177,"href":"https:\/\/www.veloexotique.fr\/en\/wp-json\/wp\/v2\/pages\/1762847172\/revisions\/1762847177"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.veloexotique.fr\/en\/wp-json\/wp\/v2\/media\/1762847173"}],"wp:attachment":[{"href":"https:\/\/www.veloexotique.fr\/en\/wp-json\/wp\/v2\/media?parent=1762847172"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}