{"product_id":"ukiyo-wave-pro-jersey","title":"Ukiyo Wave Pro Jersey","description":"\u003cp\u003eAvailability\u003cbr\u003eFounder Launch 2026\u003cbr\u003eThis product is currently part of the ARVENTO Founder Launch.\u003cbr\u003eAvailability will be announced after the Founder Launch.\u003c\/p\u003e\n\u003cp\u003ePlanned Availability\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e🇺🇸 United States  \u003cbr\u003e\u003ca href=\"https:\/\/a.co\/d\/0drrqtCt\" rel=\"noopener\" target=\"_blank\"\u003eAvailable on \u003cspan style=\"color: rgb(255, 128, 0);\"\u003e\u003cstrong\u003eAmazon\u003c\/strong\u003e\u003c\/span\u003e US  \u003c\/a\u003e\u003c\/p\u003e\n\u003cp\u003e🇯🇵 Japan\u003cbr\u003eAmazon (Planned)\u003c\/p\u003e\n\u003cp\u003e🇪🇺 Europe\u003cbr\u003eAmazon (Planned)\u003c\/p\u003e\n\u003cp\u003e🇹🇼 Taiwan\u003cbr\u003eOfficial Store (Planned)\u003c\/p\u003e\n\u003cp\u003eFounder Note\u003cbr\u003eThank you for visiting ARVENTO.\u003cbr\u003eThis jersey is currently showcased as part of the Founder Launch journey.\u003cbr\u003eWe are focusing on building the brand, expanding ARVENTO LIFE, and preparing future availability through regional marketplaces.\u003cbr\u003eStay tuned for future updates.\u003c\/p\u003e\n\u003cp\u003e— Matthias\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eThe Surge of Ukiyo-e Art\u003c\/b\u003e Inspired by the timeless masterpiece of traditional Ukiyo-e art, this jersey captures the raw power and elegant motion of breaking ocean waves. The dynamic, hand-drawn brushstrokes in deep indigo create a striking contrast against the crisp white fabric, symbolizing a cyclist's unstoppable momentum against the wind.\u003cbr\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003eNot an inspired-by design, but the official jersey featured in the Hawaii \u0026amp;  chapter video.\u003cbr\u003e\u003cstrong\u003e\u003ca href=\"https:\/\/www.instagram.com\/reel\/DXd5fK2gfbH\/?utm_source=ig_web_copy_link\u0026amp;igsh=NTc4MTIwNjQ2YQ==\" title=\"Hawaii\" rel=\"noopener\" target=\"_blank\"\u003eExplore the Hawaii Chapter\u003c\/a\u003e\u003c\/strong\u003e\u003cbr\u003e\u003cstrong\u003e\u003ca href=\"https:\/\/www.instagram.com\/reel\/DVelVl6k5dc\/?utm_source=ig_web_copy_link\u0026amp;igsh=MzRlODBiNWFlZA==\" title=\"Connecticut\" rel=\"noopener\" target=\"_blank\"\u003eExplore the Connecticut Chapter\u003c\/a\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003cdiv id=\"arvento-size-finder\" class=\"asf\"\u003e\n\u003cdiv class=\"asf__wrap\"\u003e\n\u003ch3 class=\"asf__header\"\u003e\u003cstrong\u003eARVENTO Size Finder\u003c\/strong\u003e\u003c\/h3\u003e\n\u003cp\u003eFind your recommended cycling jersey size.\u003c\/p\u003e\n\u003csection class=\"asf__notice\"\u003e\u003cstrong\u003eFIT REMINDER\u003c\/strong\u003e\n\u003cp\u003eARVENTO jerseys are designed with an aerodynamic, close-to-body cycling fit. If you prefer a casual or loose fit, please consider sizing up or choose based on your personal comfort preference.\u003c\/p\u003e\n\u003c\/section\u003e\n\u003cform id=\"asf-form\" novalidate=\"\"\u003e\n\u003cdiv class=\"asf__grid\"\u003e\n\u003cdiv class=\"asf__field\"\u003e\n\u003clabel for=\"asf-height\"\u003eHEIGHT \u003cspan\u003eCM\u003c\/span\u003e\u003c\/label\u003e \u003cinput id=\"asf-height\" type=\"number\" inputmode=\"numeric\" min=\"140\" max=\"210\" placeholder=\"e.g. 175\" required=\"\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"asf__field\"\u003e\n\u003clabel for=\"asf-weight\"\u003eWEIGHT \u003cspan\u003eKG\u003c\/span\u003e\u003c\/label\u003e \u003cinput id=\"asf-weight\" type=\"number\" inputmode=\"decimal\" min=\"35\" max=\"150\" placeholder=\"e.g. 68\" required=\"\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"asf__field\"\u003e\n\u003clabel for=\"asf-usual-size\"\u003eUSUAL CYCLING JERSEY SIZE\u003c\/label\u003e\u003cselect id=\"asf-usual-size\" required=\"\"\u003e\n\u003coption value=\"\" selected disabled\u003eSelect your usual size\u003c\/option\u003e\n\u003coption value=\"XS\"\u003eXS\u003c\/option\u003e\n\u003coption value=\"S\"\u003eS\u003c\/option\u003e\n\u003coption value=\"M\"\u003eM\u003c\/option\u003e\n\u003coption value=\"L\"\u003eL\u003c\/option\u003e\n\u003coption value=\"XL\"\u003eXL\u003c\/option\u003e\n\u003coption value=\"XXL\"\u003eXXL \/ 2XL\u003c\/option\u003e\n\u003c\/select\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"asf__field\"\u003e\n\u003clabel for=\"asf-preference\"\u003eFIT PREFERENCE\u003c\/label\u003e\u003cselect id=\"asf-preference\" required=\"\"\u003e\n\u003coption value=\"\" selected disabled\u003eSelect your fit preference\u003c\/option\u003e\n\u003coption value=\"race\"\u003eRace Fit — Tight and aerodynamic\u003c\/option\u003e\n\u003coption value=\"regular\"\u003eRegular Fit — Balanced cycling fit\u003c\/option\u003e\n\u003coption value=\"comfort\"\u003eComfort Fit — Slightly more room\u003c\/option\u003e\n\u003c\/select\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"asf__comfort-note\"\u003eComfort Fit means a slightly more relaxed cycling fit, not a loose casual T-shirt fit.\u003c\/div\u003e\n\u003cp id=\"asf-error\" class=\"asf__error\" role=\"alert\"\u003e\u003c\/p\u003e\n\u003cbutton type=\"submit\" class=\"asf__button\"\u003e \u003cspan\u003eFIND MY SIZE\u003c\/span\u003e \u003cspan\u003e→\u003c\/span\u003e \u003c\/button\u003e\n\u003c\/form\u003e\n\u003csection id=\"asf-result\" class=\"asf__result\" hidden=\"\"\u003e\n\u003cdiv class=\"asf__result-head\"\u003e\n\u003cdiv\u003e\n\u003cp\u003eRECOMMENDED SIZE\u003c\/p\u003e\n\u003cdiv id=\"asf-size\" class=\"asf__size\"\u003eM\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"asf-confidence\" class=\"asf__confidence\"\u003eHigh Confidence\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"asf__profile\"\u003e\n\u003cspan\u003eFIT PROFILE\u003c\/span\u003e \u003cstrong\u003eAero Performance Fit\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"asf__rows\"\u003e\n\u003cdiv class=\"asf__row\"\u003e\n\u003cspan\u003eFIT FEELING\u003c\/span\u003e \u003cstrong id=\"asf-feeling\"\u003e\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"asf__row\"\u003e\n\u003cspan\u003eALTERNATIVE SIZE\u003c\/span\u003e \u003cstrong id=\"asf-alternative\"\u003e\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"asf__row\"\u003e\n\u003cspan\u003eRECOMMENDED RANGE\u003c\/span\u003e \u003cstrong id=\"asf-range\"\u003e\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"asf-fit-copy\" class=\"asf__copy\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"asf__copy\"\u003e\n\u003cstrong\u003eABOUT THE FIT\u003c\/strong\u003e\n\u003cp\u003eARVENTO jerseys are made for road cycling and performance riding. The fit is naturally closer to the body than casual sportswear.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"asf-measurements\" class=\"asf__measurements\"\u003e\u003c\/div\u003e\n\u003cdiv id=\"asf-result-note\" class=\"asf__copy\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"asf__notice asf__notice--result\"\u003e\n\u003cstrong\u003eFIT REMINDER\u003c\/strong\u003e\n\u003cp\u003eARVENTO jerseys are designed with an aerodynamic, close-to-body cycling fit. If you prefer a casual or loose fit, please consider sizing up or choose based on your personal comfort preference.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"asf__disclaimer\"\u003eThis recommendation is based on general fit data and rider preference. ARVENTO jerseys are designed with an aerodynamic cycling fit. If you are between two sizes, choose the smaller size for a tighter race fit or the larger size for more comfort.\u003c\/div\u003e\n\u003c\/section\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n  #arvento-size-finder {\n    --black: #111111;\n    --grey: #f3f3f1;\n    --line: #d8d8d4;\n    --muted: #6f6f6b;\n    --white: #ffffff;\n    width: 100%;\n    color: var(--black);\n    background: var(--white);\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  #arvento-size-finder * {\n    box-sizing: border-box;\n  }\n\n  #arvento-size-finder .asf__wrap {\n    width: 100%;\n    max-width: 720px;\n    margin: 0 auto;\n    padding: 30px 18px 48px;\n  }\n\n  #arvento-size-finder .asf__header {\n    margin-bottom: 24px;\n  }\n\n  #arvento-size-finder h2 {\n    margin: 0;\n    color: var(--black);\n    font-size: clamp(21px, 5.6vw, 31px);\n    font-weight: 800;\n    letter-spacing: -0.05em;\n    line-height: 1.05;\n  }\n\n  #arvento-size-finder .asf__header \u003e p {\n    margin: 10px 0 0;\n    color: var(--muted);\n    font-size: 14px;\n  }\n\n  #arvento-size-finder .asf__notice {\n    margin-bottom: 24px;\n    border: 1px solid var(--line);\n    background: #fafafa;\n    padding: 16px;\n  }\n\n  #arvento-size-finder .asf__notice strong,\n  #arvento-size-finder .asf__copy strong {\n    display: block;\n    margin-bottom: 8px;\n    font-size: 10px;\n    letter-spacing: 0.12em;\n  }\n\n  #arvento-size-finder .asf__notice p,\n  #arvento-size-finder .asf__copy p {\n    margin: 0;\n    font-size: 13px;\n    line-height: 1.6;\n  }\n\n  #arvento-size-finder .asf__grid {\n    display: grid;\n    grid-template-columns: 1fr;\n    gap: 14px;\n    align-items: start;\n  }\n\n  #arvento-size-finder .asf__field {\n    margin-bottom: 15px;\n  }\n\n  #arvento-size-finder .asf__grid .asf__field {\n    align-self: start;\n    margin-bottom: 0;\n  }\n\n  #arvento-size-finder label {\n    display: block;\n    margin-bottom: 7px;\n    font-size: 11px;\n    font-weight: 700;\n    letter-spacing: 0.08em;\n  }\n\n  #arvento-size-finder .asf__grid .asf__field label {\n    display: flex;\n    align-items: center;\n    height: 16px;\n    margin-bottom: 7px;\n    white-space: nowrap;\n  }\n\n  #arvento-size-finder label span {\n    margin-left: 4px;\n    color: var(--muted);\n    font-weight: 400;\n  }\n\n  #arvento-size-finder input,\n  #arvento-size-finder select {\n    appearance: none;\n    width: 100%;\n    height: 53px;\n    margin: 0;\n    border: 1px solid #cfcfcb;\n    border-radius: 9px;\n    outline: none;\n    background: var(--white);\n    color: var(--black);\n    padding: 0 14px;\n    font: inherit;\n    font-size: 15px;\n  }\n\n  #arvento-size-finder select {\n    background-image:\n      linear-gradient(45deg, transparent 50%, #111 50%),\n      linear-gradient(135deg, #111 50%, transparent 50%);\n    background-position: calc(100% - 18px) 22px, calc(100% - 13px) 22px;\n    background-size: 5px 5px, 5px 5px;\n    background-repeat: no-repeat;\n    padding-right: 38px;\n  }\n\n  #arvento-size-finder input:focus,\n  #arvento-size-finder select:focus {\n    border-color: var(--black);\n    box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.08);\n  }\n\n  #arvento-size-finder .asf__comfort-note {\n    margin: 2px 0 18px;\n    border-left: 2px solid var(--black);\n    padding: 3px 0 3px 12px;\n    color: var(--muted);\n    font-size: 13px;\n    line-height: 1.55;\n  }\n\n  #arvento-size-finder .asf__error {\n    min-height: 18px;\n    margin: 0 0 9px;\n    color: #b00020;\n    font-size: 13px;\n  }\n\n  #arvento-size-finder .asf__button {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    width: 100%;\n    min-height: 56px;\n    border: 1px solid var(--black);\n    border-radius: 9px;\n    background: var(--black);\n    color: var(--white);\n    cursor: pointer;\n    padding: 0 18px;\n    font: inherit;\n    font-size: 12px;\n    font-weight: 700;\n    letter-spacing: 0.11em;\n    transition: 0.2s ease;\n  }\n\n  #arvento-size-finder .asf__button:hover {\n    background: var(--white);\n    color: var(--black);\n  }\n\n  #arvento-size-finder .asf__result {\n    margin-top: 24px;\n    background: var(--grey);\n    padding: 20px;\n  }\n\n  #arvento-size-finder .asf__result-head {\n    display: flex;\n    justify-content: space-between;\n    gap: 16px;\n    border-bottom: 1px solid var(--line);\n    padding-bottom: 18px;\n  }\n\n  #arvento-size-finder .asf__result-head p {\n    margin: 0 0 4px;\n    font-size: 10px;\n    font-weight: 700;\n    letter-spacing: 0.1em;\n  }\n\n  #arvento-size-finder .asf__size {\n    font-size: 64px;\n    font-weight: 800;\n    letter-spacing: -0.08em;\n    line-height: 0.95;\n  }\n\n  #arvento-size-finder .asf__confidence {\n    align-self: flex-start;\n    max-width: 125px;\n    border: 1px solid var(--black);\n    border-radius: 100px;\n    padding: 5px 9px;\n    font-size: 10px;\n    font-weight: 700;\n    line-height: 1.2;\n    text-align: center;\n  }\n\n  #arvento-size-finder .asf__profile {\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    gap: 8px;\n    padding: 16px 0;\n  }\n\n  #arvento-size-finder .asf__profile span {\n    font-size: 10px;\n    font-weight: 700;\n    letter-spacing: 0.11em;\n  }\n\n  #arvento-size-finder .asf__profile strong {\n    border-radius: 100px;\n    background: var(--black);\n    color: var(--white);\n    padding: 4px 9px;\n    font-size: 11px;\n  }\n\n  #arvento-size-finder .asf__rows {\n    border-top: 1px solid var(--line);\n  }\n\n  #arvento-size-finder .asf__row {\n    display: flex;\n    justify-content: space-between;\n    gap: 16px;\n    border-bottom: 1px solid var(--line);\n    padding: 12px 0;\n    font-size: 12px;\n  }\n\n  #arvento-size-finder .asf__row span {\n    color: var(--muted);\n    font-weight: 700;\n    letter-spacing: 0.04em;\n  }\n\n  #arvento-size-finder .asf__row strong {\n    text-align: right;\n  }\n\n  #arvento-size-finder .asf__copy,\n  #arvento-size-finder .asf__measurements {\n    border-bottom: 1px solid var(--line);\n    padding: 17px 0;\n  }\n\n  #arvento-size-finder .asf__measurements h3 {\n    margin: 0 0 10px;\n    font-size: 10px;\n    letter-spacing: 0.12em;\n  }\n\n  #arvento-size-finder .asf__measurements-grid {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 8px;\n  }\n\n  #arvento-size-finder .asf__measurements-item {\n    border: 1px solid var(--line);\n    background: rgba(255, 255, 255, 0.45);\n    padding: 9px;\n  }\n\n  #arvento-size-finder .asf__measurements-item span {\n    display: block;\n    margin-bottom: 2px;\n    color: var(--muted);\n    font-size: 9px;\n    font-weight: 700;\n    letter-spacing: 0.06em;\n  }\n\n  #arvento-size-finder .asf__measurements-item strong {\n    font-size: 13px;\n  }\n\n  #arvento-size-finder .asf__notice--result {\n    margin-top: 18px;\n    margin-bottom: 0;\n  }\n\n  #arvento-size-finder .asf__disclaimer {\n    margin-top: 17px;\n    color: var(--muted);\n    font-size: 12px;\n    line-height: 1.6;\n  }\n\n  @media (min-width: 600px) {\n    #arvento-size-finder .asf__wrap {\n      padding: 46px 28px 60px;\n    }\n\n    #arvento-size-finder .asf__grid {\n      grid-template-columns: 1fr 1fr;\n      column-gap: 14px;\n      row-gap: 0;\n      align-items: start;\n    }\n\n    #arvento-size-finder .asf__result {\n      padding: 28px;\n    }\n  }\n\u003c\/style\u003e\n\u003cp\u003e\u003cscript\u003e\n  (function () {\n    var finder = document.getElementById(\"arvento-size-finder\");\n    if (!finder || finder.dataset.ready) return;\n    finder.dataset.ready = \"true\";\n\n    var sizeData = [\n      {\n        size: \"XS\",\n        height: [155, 165],\n        weight: [45, 55],\n        garment: { front: \"43.5 cm\", sleeve: \"28 cm\", chest: \"40 cm\", shoulder: \"28 cm\", back: \"56.5 cm\" }\n      },\n      {\n        size: \"S\",\n        height: [160, 170],\n        weight: [55, 65],\n        garment: { front: \"46.4 cm\", sleeve: \"29 cm\", chest: \"42 cm\", shoulder: \"30 cm\", back: \"59 cm\" }\n      },\n      {\n        size: \"M\",\n        height: [168, 176],\n        weight: [63, 73],\n        garment: { front: \"48 cm\", sleeve: \"29 cm\", chest: \"44 cm\", shoulder: \"32 cm\", back: \"62 cm\" }\n      },\n      {\n        size: \"L\",\n        height: [174, 182],\n        weight: [70, 82],\n        garment: { front: \"49 cm\", sleeve: \"29 cm\", chest: \"47 cm\", shoulder: \"34 cm\", back: \"63 cm\" }\n      },\n      {\n        size: \"XL\",\n        height: [180, 188],\n        weight: [80, 92],\n        garment: { front: \"49 cm\", sleeve: \"29 cm\", chest: \"50 cm\", shoulder: \"36 cm\", back: \"63 cm\" }\n      },\n      {\n        size: \"XXL\",\n        height: [185, 195],\n        weight: [90, 105],\n        garment: { front: \"51.5 cm\", sleeve: \"29 cm\", chest: \"54 cm\", shoulder: \"38 cm\", back: \"65 cm\" }\n      }\n    ];\n\n    function inside(value, range) {\n      return value \u003e= range[0] \u0026\u0026 value \u003c= range[1];\n    }\n\n    function rangeDistance(value, range) {\n      if (value \u003c range[0]) return (range[0] - value) \/ (range[1] - range[0]);\n      if (value \u003e range[1]) return (value - range[1]) \/ (range[1] - range[0]);\n      return 0;\n    }\n\n    function centerDistance(value, range) {\n      var center = (range[0] + range[1]) \/ 2;\n      var half = (range[1] - range[0]) \/ 2;\n      return Math.abs(value - center) \/ half;\n    }\n\n    function calculateScore(item, height, weight) {\n      return (\n        rangeDistance(height, item.height) * 4 +\n        rangeDistance(weight, item.weight) * 4 +\n        centerDistance(height, item.height) * 0.22 +\n        centerDistance(weight, item.weight) * 0.22\n      );\n    }\n\n    function getFitContent(preference) {\n      if (preference === \"race\") {\n        return {\n          feeling: \"Tight, aerodynamic race fit\",\n          content:\n            \"\u003cstrong\u003eRACE FIT\u003c\/strong\u003e\" +\n            \"\u003cp\u003eThis recommendation intentionally selects one size smaller than the closest body-data size for a tighter, more aerodynamic riding feel.\u003c\/p\u003e\"\n        };\n      }\n\n      if (preference === \"comfort\") {\n        return {\n          feeling: \"Slightly more room within a cycling fit\",\n          content:\n            \"\u003cstrong\u003eCOMFORT FIT\u003c\/strong\u003e\" +\n            \"\u003cp\u003eThis size gives you slightly more room within a cycling jersey fit. It is still not a loose casual fit.\u003c\/p\u003e\"\n        };\n      }\n\n      return {\n        feeling: \"Balanced close-to-body cycling fit\",\n        content:\n          \"\u003cstrong\u003eREGULAR FIT\u003c\/strong\u003e\" +\n          \"\u003cp\u003eThis size gives you a balanced cycling fit — close to the body, but not overly tight.\u003c\/p\u003e\"\n      };\n    }\n\n    finder.querySelector(\"#asf-form\").addEventListener(\"submit\", function (event) {\n      event.preventDefault();\n\n      var height = Number(finder.querySelector(\"#asf-height\").value);\n      var weight = Number(finder.querySelector(\"#asf-weight\").value);\n      var usualSize = finder.querySelector(\"#asf-usual-size\").value;\n      var preference = finder.querySelector(\"#asf-preference\").value;\n      var error = finder.querySelector(\"#asf-error\");\n      var result = finder.querySelector(\"#asf-result\");\n\n      error.textContent = \"\";\n\n      if (!height || !weight || !usualSize || !preference) {\n        error.textContent = \"Please complete all fields before viewing your recommendation.\";\n        result.hidden = true;\n        return;\n      }\n\n      if (height \u003c 140 || height \u003e 210 || weight \u003c 35 || weight \u003e 150) {\n        error.textContent = \"Please enter a valid height and weight.\";\n        result.hidden = true;\n        return;\n      }\n\n      var ranked = sizeData.map(function (item, index) {\n        return {\n          item: item,\n          index: index,\n          score: calculateScore(item, height, weight)\n        };\n      }).sort(function (a, b) {\n        return a.score - b.score;\n      });\n\n      var first = ranked[0];\n      var second = ranked[1];\n\n      var isBorderline =\n        Math.abs(first.score - second.score) \u003c= 0.26 ||\n        (\n          inside(height, first.item.height) \u0026\u0026\n          inside(weight, first.item.weight) \u0026\u0026\n          inside(height, second.item.height) \u0026\u0026\n          inside(weight, second.item.weight)\n        );\n\n      var recommended = first;\n      var alternative = second;\n\n      \/*\n        Race Fit:\n        Always move down one size from the closest body-data recommendation.\n        XS remains XS because it is the smallest available size.\n      *\/\n      if (preference === \"race\" \u0026\u0026 first.index \u003e 0) {\n        recommended = {\n          item: sizeData[first.index - 1],\n          index: first.index - 1,\n          score: first.score\n        };\n        alternative = first;\n      }\n\n      \/*\n        Comfort Fit:\n        Move up only when body measurements sit between two sizes.\n      *\/\n      if (preference === \"comfort\" \u0026\u0026 isBorderline) {\n        recommended = first.index \u003e second.index ? first : second;\n        alternative = first.index \u003e second.index ? second : first;\n      }\n\n      var usualIndex = sizeData.findIndex(function (item) {\n        return item.size === usualSize;\n      });\n\n      var usualDifference = Math.abs(usualIndex - recommended.index);\n\n      var isInsideRecommended =\n        inside(height, recommended.item.height) \u0026\u0026\n        inside(weight, recommended.item.weight);\n\n      var confidence = \"High Confidence\";\n\n      if (isBorderline || !isInsideRecommended || usualDifference \u003e 1) {\n        confidence = \"Medium Confidence\";\n      }\n\n      if ((!isInsideRecommended \u0026\u0026 first.score \u003e 1.25) || usualDifference \u003e 2) {\n        confidence = \"Borderline Fit\";\n      }\n\n      var alternativeText = \"—\";\n\n      if (preference === \"race\" \u0026\u0026 first.index \u003e 0) {\n        alternativeText = alternative.item.size + \" — Base body-data recommendation\";\n      } else if (isBorderline) {\n        if (preference === \"comfort\") {\n          alternativeText = alternative.item.size + \" — More aerodynamic\";\n        } else {\n          alternativeText = alternative.item.size + \" — Also suitable by preference\";\n        }\n      }\n\n      var note;\n\n      if (preference === \"race\" \u0026\u0026 first.index \u003e 0) {\n        note =\n          \"\u003cstrong\u003eNOTE\u003c\/strong\u003e\" +\n          \"\u003cp\u003eRace Fit has intentionally selected one size smaller than your closest body-data recommendation. This creates a tighter, more aerodynamic jersey feel.\u003c\/p\u003e\";\n      } else if (confidence === \"Borderline Fit\") {\n        note =\n          \"\u003cstrong\u003eNOTE\u003c\/strong\u003e\" +\n          \"\u003cp\u003eYour measurements sit near or beyond the temporary reference ranges. Please use this as guidance and consider your preferred riding feel.\u003c\/p\u003e\";\n      } else if (isBorderline) {\n        note =\n          \"\u003cstrong\u003eNOTE\u003c\/strong\u003e\" +\n          \"\u003cp\u003eYou are between two cycling jersey sizes. Your selected fit preference was used to determine the main recommendation.\u003c\/p\u003e\";\n      } else if (usualDifference \u003e 1) {\n        note =\n          \"\u003cstrong\u003eNOTE\u003c\/strong\u003e\" +\n          \"\u003cp\u003eYour usual cycling jersey size differs from this recommendation. ARVENTO jerseys are intentionally more fitted than casual sportswear.\u003c\/p\u003e\";\n      } else {\n        note =\n          \"\u003cstrong\u003eNOTE\u003c\/strong\u003e\" +\n          \"\u003cp\u003eYour height, weight, and selected riding preference align well with this recommendation.\u003c\/p\u003e\";\n      }\n\n      var fit = getFitContent(preference);\n      var garment = recommended.item.garment;\n\n      var measurementHTML =\n        \"\u003ch3\u003eGARMENT MEASUREMENTS — \" + recommended.item.size + \"\u003c\/h3\u003e\" +\n        \"\u003cdiv class='asf__measurements-grid'\u003e\" +\n          \"\u003cdiv class='asf__measurements-item'\u003e\u003cspan\u003eFRONT LENGTH\u003c\/span\u003e\u003cstrong\u003e\" + garment.front + \"\u003c\/strong\u003e\u003c\/div\u003e\" +\n          \"\u003cdiv class='asf__measurements-item'\u003e\u003cspan\u003eSLEEVE LENGTH\u003c\/span\u003e\u003cstrong\u003e\" + garment.sleeve + \"\u003c\/strong\u003e\u003c\/div\u003e\" +\n          \"\u003cdiv class='asf__measurements-item'\u003e\u003cspan\u003eCHEST WIDTH\u003c\/span\u003e\u003cstrong\u003e\" + garment.chest + \"\u003c\/strong\u003e\u003c\/div\u003e\" +\n          \"\u003cdiv class='asf__measurements-item'\u003e\u003cspan\u003eSHOULDER WIDTH\u003c\/span\u003e\u003cstrong\u003e\" + garment.shoulder + \"\u003c\/strong\u003e\u003c\/div\u003e\" +\n          \"\u003cdiv class='asf__measurements-item'\u003e\u003cspan\u003eBACK LENGTH\u003c\/span\u003e\u003cstrong\u003e\" + garment.back + \"\u003c\/strong\u003e\u003c\/div\u003e\" +\n          \"\u003cdiv class='asf__measurements-item'\u003e\u003cspan\u003eMEASUREMENT TYPE\u003c\/span\u003e\u003cstrong\u003eFlat garment\u003c\/strong\u003e\u003c\/div\u003e\" +\n        \"\u003c\/div\u003e\";\n\n      finder.querySelector(\"#asf-size\").textContent = recommended.item.size;\n      finder.querySelector(\"#asf-confidence\").textContent = confidence;\n      finder.querySelector(\"#asf-feeling\").textContent = fit.feeling;\n      finder.querySelector(\"#asf-alternative\").textContent = alternativeText;\n      finder.querySelector(\"#asf-range\").textContent =\n        recommended.item.height[0] + \"–\" + recommended.item.height[1] + \" cm \/ \" +\n        recommended.item.weight[0] + \"–\" + recommended.item.weight[1] + \" kg\";\n      finder.querySelector(\"#asf-fit-copy\").innerHTML = fit.content;\n      finder.querySelector(\"#asf-measurements\").innerHTML = measurementHTML;\n      finder.querySelector(\"#asf-result-note\").innerHTML = note;\n\n      result.hidden = false;\n      result.scrollIntoView({\n        behavior: \"smooth\",\n        block: \"start\"\n      });\n    });\n  })();\n\u003c\/script\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cdiv id=\"arvento-size-finder\" class=\"asf\"\u003e\n\u003cdiv class=\"asf__wrap\"\u003e\n\u003cheader class=\"asf__header\"\u003e\u003c\/header\u003e\u003cbr\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch3\u003e\u003cem\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003cstrong\u003eFeatures      \u003c\/strong\u003e\u003c\/span\u003e\u003c\/em\u003e\u003c\/h3\u003e\n\u003cp\u003e✓ High-stretch performance fabric \u003cbr\u003e✓ Breathability tested: ASTM D737 \/ 168 CFM \u003cbr\u003e✓ Three rear pockets  \u003cbr\u003e✓ Anti-slip hem  \u003cbr\u003e✓ Race-inspired fit  \u003cbr\u003e✓ Designed for road cycling and training\u003c\/p\u003e\n\u003ch3\u003e\n\u003cbr\u003e\u003cbr\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003cem\u003e\u003cstrong\u003eReal Rider Fit Reference    \u003c\/strong\u003e\u003c\/em\u003e\u003c\/span\u003e\u003cbr\u003e\n\u003c\/h3\u003e\n\u003cp\u003eRider A \u003cbr\u003eHeight: 168 cm \u003cbr\u003eWeight: 60 kg (132lbs) \u003cbr\u003eWearing Size: S\u003cbr\u003eFit Feeling: Comfortable close fit\u003cbr\u003e\u003cstrong\u003eThis rider can also wear XS for a tighter race fit. Size S provides a more comfortable fit while still maintaining a clean cycling silhouette.\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003eRider B \u003cbr\u003eHeight: 174 cm  \u003cbr\u003eWeight: 70 kgs  (154.3lbs\u003cmo\u003e\u003c\/mo\u003e\u003cmn\u003e154.3\u003c\/mn\u003e\u003cmo\u003e\u003c\/mo\u003e\u003cmn\u003e154.3\u003c\/mn\u003e) \u003cbr\u003eWearing Size: M  \u003cbr\u003eFit Feeling: REGULAR close fit\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003eRider C\u003cbr\u003eHeight: 170 cm  \u003cbr\u003eWeight: 79 kgs  (173.8lbs\u003cmo\u003e\u003c\/mo\u003e\u003cmn\u003e154.3\u003c\/mn\u003e\u003cmo\u003e\u003c\/mo\u003e\u003cmn\u003e154.3\u003c\/mn\u003e) \u003cbr\u003eWearing Size: L \u003cbr\u003eFit Feeling: REGULAR close fit\u003cbr\u003e\u003cbr\u003e\u003cstrong\u003eKindly note that this style is designed for a slim fit. For a looser, more comfortable fit, we recommend selecting one size larger.\u003c\/strong\u003e\u003cbr\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch3\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003cem\u003e\u003cstrong\u003eCustom Program CTA     \u003c\/strong\u003e\u003c\/em\u003e\u003c\/span\u003e\u003c\/h3\u003e\n\u003cp\u003eNeed this design for your team?\u003c\/p\u003e\n\u003cp\u003eARVENTO offers custom cycling jersey support for teams, clubs, events, and brand projects.\u003c\/p\u003e\n\u003cp\u003eMOQ 20 pcs  \u003cbr\u003eSingle custom jersey service available with design service fee.\u003c\/p\u003e\n\u003cp\u003eContact ARVENTO\u003c\/p\u003e","brand":"ARVENTO","offers":[{"title":"XS","offer_id":48328667529461,"sku":null,"price":2500.0,"currency_code":"TWD","in_stock":false},{"title":"S","offer_id":48328667562229,"sku":null,"price":2500.0,"currency_code":"TWD","in_stock":false},{"title":"M","offer_id":48328667594997,"sku":null,"price":2500.0,"currency_code":"TWD","in_stock":false},{"title":"L","offer_id":48328667627765,"sku":null,"price":2500.0,"currency_code":"TWD","in_stock":false},{"title":"XL","offer_id":48328667660533,"sku":null,"price":2500.0,"currency_code":"TWD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0806\/0964\/0693\/files\/ChatGPT_Image_2026_6_14_02_51_46_1.png?v=1781420469","url":"https:\/\/www.arventolife.com\/products\/ukiyo-wave-pro-jersey","provider":"ARVENTO","version":"1.0","type":"link"}