{"title":"CAMISOLA INTERIOR","description":"","products":[{"product_id":"castelli-espresso-r-a-d-sleevless-baselayer-twilight-blue","title":"CAMISOLA INTERIOR CASTELLI ESPRESSO R-A\/D CINZA","description":"\u003cdiv class=\"product-description\"\u003e\n  \u003ch2\u003eCASTELLI ESPRESSO R-A\/D SLEEVELESS BASELAYER\u003c\/h2\u003e\n\n  \u003cp\u003e\n    A \u003cstrong\u003eCastelli Espresso R-A\/D Sleeveless Baselayer\u003c\/strong\u003e é uma base de alto desempenho com um design exclusivo desenvolvido por \u003cstrong\u003eRichard Pearce\u003c\/strong\u003e.  \n    Criada para oferecer \u003cstrong\u003egestão térmica e de humidade superiores\u003c\/strong\u003e, esta base combina leveza, respirabilidade e estilo num só produto.\n  \u003c\/p\u003e\n\n  \u003ch3\u003eCaracterísticas\u003c\/h3\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n\u003cstrong\u003eTecido 3D Mesh\u003c\/strong\u003e para excelente controlo da humidade e secagem rápida.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eGráfico sublimado\u003c\/strong\u003e de edição limitada assinado por Richard Pearce.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eBainha plana na cintura\u003c\/strong\u003e que se mantém no lugar sob os calções ou bibtights.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003ePeso:\u003c\/strong\u003e 79 g\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eTemperatura:\u003c\/strong\u003e 15°C – 28°C \/ 59°F – 82°F\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eFIT:\u003c\/strong\u003e Tailored\u003c\/li\u003e\n  \u003c\/ul\u003e\n\n  \u003ch3\u003eEDIÇÃO LIMITADA COM DESIGN ARTÍSTICO\u003c\/h3\u003e\n  \u003cp\u003e\n    Desenvolvida para atletas que exigem o melhor desempenho, a \u003cstrong\u003eEspresso R-A\/D Baselayer\u003c\/strong\u003e garante uma regulação ideal da temperatura corporal,  \n    mantendo o corpo seco mesmo durante as subidas mais intensas.  \n    O tecido em malha 3D cria canais de ventilação que favorecem a respirabilidade e a dispersão da transpiração,  \n    enquanto o corte justo assegura um encaixe perfeito sob qualquer jersey.  \n    O toque final vem do \u003cstrong\u003edesign exclusivo de Richard Pearce\u003c\/strong\u003e, que dá a esta peça um caráter artístico e único —  \n    uma fusão perfeita entre performance e estilo italiano.\n  \u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- ===== GUIA DE TAMANHOS CASTELLI ===== --\u003e\n\u003cdiv class=\"cc-size-highlight-full\"\u003e\n  \u003ch3\u003e📏 Encontra o Teu Tamanho Ideal\u003c\/h3\u003e\n  \u003cp\u003e\n    Para garantir o melhor ajuste e conforto, mede o perímetro do teu \n    \u003cstrong\u003epeito (A)\u003c\/strong\u003e e da tua \u003cstrong\u003ecintura (B)\u003c\/strong\u003e em centímetros e compara \n    com o guia de tamanhos Castelli abaixo.\n  \u003c\/p\u003e\n\n  \u003cul\u003e\n    \u003cli\u003eMede o \u003cstrong\u003epeito (A)\u003c\/strong\u003e na parte mais larga do tórax, mantendo a fita horizontal e sem apertar.\u003c\/li\u003e\n    \u003cli\u003eMede a \u003cstrong\u003ecintura (B)\u003c\/strong\u003e na zona mais estreita do tronco.\u003c\/li\u003e\n    \u003cli\u003eUsa uma fita métrica flexível, mantendo uma posição natural e relaxada.\u003c\/li\u003e\n    \u003cli\u003eCompara as medidas com a tabela e, se estiveres entre dois tamanhos, considera escolher \n        \u003cstrong\u003eum tamanho acima\u003c\/strong\u003e, conforme a recomendação da Castelli para maior conforto.\u003c\/li\u003e\n  \u003c\/ul\u003e\n\n  \u003cbutton class=\"cc-size-btn\" type=\"button\" aria-haspopup=\"dialog\" aria-controls=\"cc-size-modal\"\u003e\n    Calcule o seu tamanho\n  \u003c\/button\u003e\n\u003c\/div\u003e\n\n\u003c!-- ===== MODAL ===== --\u003e\n\u003cdialog id=\"cc-size-modal\" class=\"cc-size-modal\" aria-label=\"Guia de tamanhos\"\u003e\n  \u003cbutton class=\"cc-close\" aria-label=\"Fechar\"\u003e✕\u003c\/button\u003e\n  \u003cdiv class=\"cc-loader\" aria-hidden=\"true\"\u003e\u003c\/div\u003e\n  \u003cdiv class=\"cc-size-box\" hidden\u003e\n    \u003cimg id=\"cc-size-img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0946\/1832\/1278\/files\/Size_Chart_Castelli_Men_2.0.png?v=1761056363\" alt=\"Guia de tamanhos Castelli\" loading=\"eager\" decoding=\"sync\"\u003e\n  \u003c\/div\u003e\n\u003c\/dialog\u003e\n\n\u003c!-- ===== STYLE ===== --\u003e\n\u003cstyle\u003e\n  .product-description {\n    font-family: Arial, Helvetica, sans-serif;\n    color: #222;\n    line-height: 1.6;\n    font-size: 15px;\n  }\n  .product-description h2 {\n    font-size: 22px;\n    text-transform: uppercase;\n    letter-spacing: .5px;\n    color: #111;\n    margin-bottom: 10px;\n  }\n\n  \/* Caixa do guia *\/\n  .cc-size-highlight-full{\n    background:#f9f9f9;border:1px solid #e2e2e2;border-radius:10px;\n    padding:20px 24px;margin-top:20px;\n    font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;\n    box-shadow:0 2px 8px rgba(0,0,0,0.04);\n  }\n  .cc-size-highlight-full h3{font-size:18px;margin:0 0 10px;color:#111;}\n  .cc-size-highlight-full p{font-size:15px;margin:0 0 10px;color:#333;}\n  .cc-size-highlight-full ul{margin:0 0 15px 20px;padding:0;}\n  .cc-size-highlight-full li{margin-bottom:5px;font-size:15px;color:#333;}\n\n  \/* Botão *\/\n  .cc-size-btn{\n    display:inline-flex;align-items:center;gap:.5rem;\n    background:#000;color:#fff;border:none;border-radius:6px;\n    padding:10px 16px;font-size:14px;font-weight:500;cursor:pointer;\n    transition:transform .2s ease-in-out, background .2s ease-in-out;\n  }\n  .cc-size-btn:hover{background:#222;transform:translateY(-1px);}\n\n  \/* ===== MODAL: reset do tema + centrado real ===== *\/\n  .cc-size-modal{\n    position: fixed !important;\n    inset: 0 !important;\n    background: transparent !important;\n    border: 0 !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    max-width: none !important;\n    width: 100vw !important;\n    height: 100vh !important;\n    display: none;\n    align-items: center !important;\n    justify-content: center !important;\n    z-index: 99999 !important;\n  }\n  .cc-size-modal[open]{ display:flex; }\n  .cc-size-modal::backdrop{ background: rgba(0,0,0,.6) !important; }\n\n  .cc-size-box{\n    position: relative;\n    box-sizing: border-box;\n    background: #fff;\n    border: 1px solid #e9e9e9;\n    border-radius: 10px;\n    box-shadow: 0 10px 25px rgba(0,0,0,.25);\n    padding: 8px;\n    overflow: hidden;\n    width: min(85vw, 1200px) !important;\n    max-height: 88vh !important;\n    display: flex;align-items:center;justify-content:center;\n  }\n  .cc-size-img{\n    display:block;\n    max-width:100% !important;\n    max-height:84vh !important;\n    width:auto !important;height:auto !important;\n    object-fit:contain !important;border-radius:6px;\n  }\n\n  .cc-close{\n    position:absolute;top:10px;right:10px;\n    background:#fff;border:1px solid #ddd;border-radius:6px;\n    padding:6px 9px;cursor:pointer;font-size:16px;line-height:1;\n    box-shadow:0 2px 6px rgba(0,0,0,.08);\n  }\n  .cc-close:hover{background:#f3f3f3;}\n\n  @media (max-width: 768px){\n    .cc-size-box{ width:95vw !important; max-height:95vh !important; padding:4px !important; }\n    .cc-size-img{ max-height:92vh !important; width:100% !important; }\n    .cc-close{ top:6px; right:6px; }\n  }\n\u003c\/style\u003e\n\n\u003c!-- ===== SCRIPT ===== --\u003e\n\u003cscript\u003e\n(function(){\n  const btn   = document.querySelector('.cc-size-btn');\n  const modal = document.getElementById('cc-size-modal');\n  if(!btn || !modal) return;\n\n  const close  = modal.querySelector('.cc-close');\n  const box    = modal.querySelector('.cc-size-box');\n  const img    = document.getElementById('cc-size-img');\n  const loader = modal.querySelector('.cc-loader');\n\n  function lockScroll(lock){\n    const el = document.documentElement;\n    if(lock){\n      el.style.overflow = 'hidden';\n      el.style.paddingRight = (window.innerWidth - document.documentElement.clientWidth) + 'px';\n    }else{\n      el.style.overflow = '';\n      el.style.paddingRight = '';\n    }\n  }\n\n  function openModal(e){\n    e \u0026\u0026 e.preventDefault();\n    if(modal.showModal){ modal.showModal(); } else { modal.setAttribute('open',''); }\n    lockScroll(true);\n    if(img \u0026\u0026 img.complete \u0026\u0026 img.naturalWidth\u003e0){\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n    }\n  }\n\n  function closeModal(){\n    if(modal.close){ modal.close(); } else { modal.removeAttribute('open'); }\n    lockScroll(false);\n  }\n\n  btn.addEventListener('click', openModal, { passive:true });\n  close.addEventListener('click', closeModal);\n  modal.addEventListener('cancel', e =\u003e { e.preventDefault(); closeModal(); });\n\n  modal.addEventListener('click', e =\u003e {\n    if(!box.contains(e.target)) closeModal();\n  });\n\n  document.addEventListener('keydown', e =\u003e {\n    if(e.key === 'Escape' \u0026\u0026 modal.hasAttribute('open')) closeModal();\n  });\n\n  if(img){\n    img.addEventListener('load', () =\u003e {\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n    });\n    img.addEventListener('error', () =\u003e {\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n      box.innerHTML = '\u003cdiv style=\"padding:24px;text-align:center;color:#444\"\u003eNão foi possível carregar a imagem do guia de tamanhos.\u003c\/div\u003e';\n    });\n  }\n})();\n\u003c\/script\u003e\n","brand":"Castelli","offers":[{"title":"S","offer_id":56456188952958,"sku":"4525083456 S","price":39.9,"currency_code":"EUR","in_stock":false},{"title":"M","offer_id":56456188985726,"sku":"4525083456 M","price":39.9,"currency_code":"EUR","in_stock":false},{"title":"L","offer_id":56456189018494,"sku":"4525083456 L","price":39.9,"currency_code":"EUR","in_stock":false},{"title":"XL","offer_id":56456189051262,"sku":"4525083456 XL","price":39.9,"currency_code":"EUR","in_stock":false},{"title":"2XL","offer_id":56456189084030,"sku":"4525083456 2XL","price":39.9,"currency_code":"EUR","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0946\/1832\/1278\/files\/167528884986-0.jpg?v=1761317591"},{"product_id":"castelli-espresso-r-a-d-sleevless-baselayer-vivid-orange","title":"CAMISOLA INTERIOR CASTELLI ESPRESSO R-A\/D LARANJA","description":"\u003cdiv class=\"product-description\"\u003e\n  \u003ch2\u003eCASTELLI ESPRESSO R-A\/D SLEEVELESS BASE LAYER – VIVID ORANGE\u003c\/h2\u003e\n\n  \u003cp\u003e\n    A \u003cstrong\u003eCastelli Espresso R-A\/D Sleeveless Base Layer\u003c\/strong\u003e combina desempenho profissional com um design exclusivo,  \n    apresentando um grafismo em edição limitada criado por \u003cstrong\u003eRichard Pearce\u003c\/strong\u003e.  \n    Ideal para dias quentes, esta base layer leve e respirável oferece conforto excecional e gestão de humidade de alto nível.\n  \u003c\/p\u003e\n\n  \u003ch3\u003eCaracterísticas\u003c\/h3\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n\u003cstrong\u003eTecido em malha 3D\u003c\/strong\u003e para excelente controlo da humidade e respirabilidade.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eEstampagem sublimada exclusiva\u003c\/strong\u003e com design de edição limitada.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eBainha inferior plana\u003c\/strong\u003e que permanece no lugar sob os calções.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003ePeso:\u003c\/strong\u003e 79 g\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eTemperatura:\u003c\/strong\u003e 15°C – 28°C \/ 59°F – 82°F\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eFIT:\u003c\/strong\u003e Tailored\u003c\/li\u003e\n  \u003c\/ul\u003e\n\n  \u003ch3\u003eEDIÇÃO LIMITADA COM PERFORMANCE PROFISSIONAL\u003c\/h3\u003e\n  \u003cp\u003e\n    Concebida para atletas e ciclistas exigentes, esta base layer garante \u003cstrong\u003egestão térmica eficiente\u003c\/strong\u003e e  \n    \u003cstrong\u003esecagem ultrarrápida\u003c\/strong\u003e durante os esforços intensos. O design moderno e o tecido elástico adaptam-se perfeitamente ao corpo,  \n    oferecendo total liberdade de movimento.  \n    A \u003cstrong\u003eEspresso R-A\/D Sleeveless Base Layer\u003c\/strong\u003e é a escolha ideal para quem quer combinar \u003cstrong\u003eestilo, leveza e desempenho\u003c\/strong\u003e  \n    nos treinos e competições de verão.\n  \u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- ===== GUIA DE TAMANHOS CASTELLI ===== --\u003e\n\u003cdiv class=\"cc-size-highlight-full\"\u003e\n  \u003ch3\u003e📏 Encontra o Teu Tamanho Ideal\u003c\/h3\u003e\n  \u003cp\u003e\n    Para garantir o melhor ajuste e conforto, mede o perímetro do teu \n    \u003cstrong\u003epeito (A)\u003c\/strong\u003e e da tua \u003cstrong\u003ecintura (B)\u003c\/strong\u003e em centímetros e compara \n    com o guia de tamanhos Castelli abaixo.\n  \u003c\/p\u003e\n\n  \u003cul\u003e\n    \u003cli\u003eMede o \u003cstrong\u003epeito (A)\u003c\/strong\u003e na parte mais larga do tórax, mantendo a fita horizontal e sem apertar.\u003c\/li\u003e\n    \u003cli\u003eMede a \u003cstrong\u003ecintura (B)\u003c\/strong\u003e na zona mais estreita do tronco.\u003c\/li\u003e\n    \u003cli\u003eUsa uma fita métrica flexível, mantendo uma posição natural e relaxada.\u003c\/li\u003e\n    \u003cli\u003eCompara as medidas com a tabela e, se estiveres entre dois tamanhos, considera escolher \n        \u003cstrong\u003eum tamanho acima\u003c\/strong\u003e, conforme a recomendação da Castelli para maior conforto.\u003c\/li\u003e\n  \u003c\/ul\u003e\n\n  \u003cbutton class=\"cc-size-btn\" type=\"button\" aria-haspopup=\"dialog\" aria-controls=\"cc-size-modal\"\u003e\n    Calcule o seu tamanho\n  \u003c\/button\u003e\n\u003c\/div\u003e\n\n\u003c!-- ===== MODAL ===== --\u003e\n\u003cdialog id=\"cc-size-modal\" class=\"cc-size-modal\" aria-label=\"Guia de tamanhos\"\u003e\n  \u003cbutton class=\"cc-close\" aria-label=\"Fechar\"\u003e✕\u003c\/button\u003e\n  \u003cdiv class=\"cc-loader\" aria-hidden=\"true\"\u003e\u003c\/div\u003e\n  \u003cdiv class=\"cc-size-box\" hidden\u003e\n    \u003cimg id=\"cc-size-img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0946\/1832\/1278\/files\/Size_Chart_Castelli_Men_2.0.png?v=1761056363\" alt=\"Guia de tamanhos Castelli\" loading=\"eager\" decoding=\"sync\"\u003e\n  \u003c\/div\u003e\n\u003c\/dialog\u003e\n\n\u003c!-- ===== STYLE ===== --\u003e\n\u003cstyle\u003e\n  .product-description {\n    font-family: Arial, Helvetica, sans-serif;\n    color: #222;\n    line-height: 1.6;\n    font-size: 15px;\n  }\n  .product-description h2 {\n    font-size: 22px;\n    text-transform: uppercase;\n    letter-spacing: .5px;\n    color: #111;\n    margin-bottom: 10px;\n  }\n\n  \/* Caixa do guia *\/\n  .cc-size-highlight-full{\n    background:#f9f9f9;border:1px solid #e2e2e2;border-radius:10px;\n    padding:20px 24px;margin-top:20px;\n    font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;\n    box-shadow:0 2px 8px rgba(0,0,0,0.04);\n  }\n  .cc-size-highlight-full h3{font-size:18px;margin:0 0 10px;color:#111;}\n  .cc-size-highlight-full p{font-size:15px;margin:0 0 10px;color:#333;}\n  .cc-size-highlight-full ul{margin:0 0 15px 20px;padding:0;}\n  .cc-size-highlight-full li{margin-bottom:5px;font-size:15px;color:#333;}\n\n  \/* Botão *\/\n  .cc-size-btn{\n    display:inline-flex;align-items:center;gap:.5rem;\n    background:#000;color:#fff;border:none;border-radius:6px;\n    padding:10px 16px;font-size:14px;font-weight:500;cursor:pointer;\n    transition:transform .2s ease-in-out, background .2s ease-in-out;\n  }\n  .cc-size-btn:hover{background:#222;transform:translateY(-1px);}\n\n  \/* ===== MODAL: reset do tema + centrado real ===== *\/\n  .cc-size-modal{\n    position: fixed !important;\n    inset: 0 !important;\n    background: transparent !important;\n    border: 0 !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    max-width: none !important;\n    width: 100vw !important;\n    height: 100vh !important;\n    display: none;\n    align-items: center !important;\n    justify-content: center !important;\n    z-index: 99999 !important;\n  }\n  .cc-size-modal[open]{ display:flex; }\n  .cc-size-modal::backdrop{ background: rgba(0,0,0,.6) !important; }\n\n  .cc-size-box{\n    position: relative;\n    box-sizing: border-box;\n    background: #fff;\n    border: 1px solid #e9e9e9;\n    border-radius: 10px;\n    box-shadow: 0 10px 25px rgba(0,0,0,.25);\n    padding: 8px;\n    overflow: hidden;\n    width: min(85vw, 1200px) !important;\n    max-height: 88vh !important;\n    display: flex;align-items:center;justify-content:center;\n  }\n  .cc-size-img{\n    display:block;\n    max-width:100% !important;\n    max-height:84vh !important;\n    width:auto !important;height:auto !important;\n    object-fit:contain !important;border-radius:6px;\n  }\n\n  .cc-close{\n    position:absolute;top:10px;right:10px;\n    background:#fff;border:1px solid #ddd;border-radius:6px;\n    padding:6px 9px;cursor:pointer;font-size:16px;line-height:1;\n    box-shadow:0 2px 6px rgba(0,0,0,.08);\n  }\n  .cc-close:hover{background:#f3f3f3;}\n\n  @media (max-width: 768px){\n    .cc-size-box{ width:95vw !important; max-height:95vh !important; padding:4px !important; }\n    .cc-size-img{ max-height:92vh !important; width:100% !important; }\n    .cc-close{ top:6px; right:6px; }\n  }\n\u003c\/style\u003e\n\n\u003c!-- ===== SCRIPT ===== --\u003e\n\u003cscript\u003e\n(function(){\n  const btn   = document.querySelector('.cc-size-btn');\n  const modal = document.getElementById('cc-size-modal');\n  if(!btn || !modal) return;\n\n  const close  = modal.querySelector('.cc-close');\n  const box    = modal.querySelector('.cc-size-box');\n  const img    = document.getElementById('cc-size-img');\n  const loader = modal.querySelector('.cc-loader');\n\n  function lockScroll(lock){\n    const el = document.documentElement;\n    if(lock){\n      el.style.overflow = 'hidden';\n      el.style.paddingRight = (window.innerWidth - document.documentElement.clientWidth) + 'px';\n    }else{\n      el.style.overflow = '';\n      el.style.paddingRight = '';\n    }\n  }\n\n  function openModal(e){\n    e \u0026\u0026 e.preventDefault();\n    if(modal.showModal){ modal.showModal(); } else { modal.setAttribute('open',''); }\n    lockScroll(true);\n    if(img \u0026\u0026 img.complete \u0026\u0026 img.naturalWidth\u003e0){\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n    }\n  }\n\n  function closeModal(){\n    if(modal.close){ modal.close(); } else { modal.removeAttribute('open'); }\n    lockScroll(false);\n  }\n\n  btn.addEventListener('click', openModal, { passive:true });\n  close.addEventListener('click', closeModal);\n  modal.addEventListener('cancel', e =\u003e { e.preventDefault(); closeModal(); });\n\n  modal.addEventListener('click', e =\u003e {\n    if(!box.contains(e.target)) closeModal();\n  });\n\n  document.addEventListener('keydown', e =\u003e {\n    if(e.key === 'Escape' \u0026\u0026 modal.hasAttribute('open')) closeModal();\n  });\n\n  if(img){\n    img.addEventListener('load', () =\u003e {\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n    });\n    img.addEventListener('error', () =\u003e {\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n      box.innerHTML = '\u003cdiv style=\"padding:24px;text-align:center;color:#444\"\u003eNão foi possível carregar a imagem do guia de tamanhos.\u003c\/div\u003e';\n    });\n  }\n})();\n\u003c\/script\u003e\n","brand":"Castelli","offers":[{"title":"S","offer_id":56456196391294,"sku":"4525083863 S","price":39.9,"currency_code":"EUR","in_stock":false},{"title":"M","offer_id":56456196424062,"sku":"4525083863 M","price":39.9,"currency_code":"EUR","in_stock":false},{"title":"L","offer_id":56456196456830,"sku":"4525083863 L","price":39.9,"currency_code":"EUR","in_stock":false},{"title":"XL","offer_id":56456196489598,"sku":"4525083863 XL","price":39.9,"currency_code":"EUR","in_stock":false},{"title":"2XL","offer_id":56456196522366,"sku":"4525083863 2XL","price":39.9,"currency_code":"EUR","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0946\/1832\/1278\/files\/167528882776-0.jpg?v=1761317661"},{"product_id":"castelli-prosecco-tech-long-sleeve-base-layer-color-black","title":"CAMISOLA INTERIOR CASTELLI PROSECCO TEC PRETO","description":"\u003cdiv class=\"product-description\"\u003e\n  \u003ch2\u003eCASTELLI PROSECCO TECH LONG SLEEVE BASE LAYER\u003c\/h2\u003e\n\n  \u003cp\u003e\n    A \u003cstrong\u003eCastelli Prosecco Tech Long Sleeve Base Layer\u003c\/strong\u003e foi desenvolvida para manter o corpo seco e confortável em condições frias,  \n    utilizando uma construção com \u003cstrong\u003emapeamento corporal\u003c\/strong\u003e e tecidos estrategicamente posicionados para otimizar o isolamento e a gestão da humidade.  \n    O tecido principal em poliéster elástico com tratamento \u003cstrong\u003eProsecco hidrofílico\u003c\/strong\u003e garante uma absorção eficaz do suor, enquanto os painéis em  \n    \u003cstrong\u003ePrimaLoft®\u003c\/strong\u003e proporcionam calor equilibrado nas zonas cobertas pelas alças do bibtight.\n  \u003c\/p\u003e\n\n  \u003ch3\u003eCaracterísticas\u003c\/h3\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n\u003cstrong\u003eTecido principal em malha elástica 100% poliéster\u003c\/strong\u003e com tratamento Prosecco hidrofílico para máxima transferência de humidade.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003ePainéis em PrimaLoft®\u003c\/strong\u003e na cintura e costas, sob as áreas cobertas pelas alças do bibtight, para reduzir o excesso de aquecimento.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eGola redonda\u003c\/strong\u003e para melhor integração com camisolas ou jerseys de gola baixa.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003ePeso:\u003c\/strong\u003e 151 g\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eTemperatura:\u003c\/strong\u003e 6°C – 16°C \/ 43°F – 61°F\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eFIT:\u003c\/strong\u003e Tailored\u003c\/li\u003e\n  \u003c\/ul\u003e\n\n  \u003ch3\u003eCONFORTO E TECNOLOGIA\u003c\/h3\u003e\n  \u003cp\u003e\n    A base layer \u003cstrong\u003eProsecco Tech\u003c\/strong\u003e foi pensada para maximizar o conforto durante saídas em tempo frio,  \n    mantendo o corpo seco e regulando a temperatura mesmo em esforço prolongado.  \n    A combinação dos tecidos \u003cstrong\u003eProsecco\u003c\/strong\u003e e \u003cstrong\u003ePrimaLoft®\u003c\/strong\u003e cria uma camada leve, respirável e termicamente eficiente —  \n    ideal para usar sob o seu jersey ou casaco de inverno \u003cstrong\u003eCastelli\u003c\/strong\u003e.\n  \u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- ===== GUIA DE TAMANHOS CASTELLI ===== --\u003e\n\u003cdiv class=\"cc-size-highlight-full\"\u003e\n  \u003ch3\u003e📏 Encontra o Teu Tamanho Ideal\u003c\/h3\u003e\n  \u003cp\u003e\n    Para garantir o melhor ajuste e conforto, mede o perímetro do teu \n    \u003cstrong\u003epeito (A)\u003c\/strong\u003e e da tua \u003cstrong\u003ecintura (B)\u003c\/strong\u003e em centímetros e compara \n    com o guia de tamanhos Castelli abaixo.\n  \u003c\/p\u003e\n\n  \u003cul\u003e\n    \u003cli\u003eMede o \u003cstrong\u003epeito (A)\u003c\/strong\u003e na parte mais larga do tórax, mantendo a fita horizontal e sem apertar.\u003c\/li\u003e\n    \u003cli\u003eMede a \u003cstrong\u003ecintura (B)\u003c\/strong\u003e na zona mais estreita do tronco.\u003c\/li\u003e\n    \u003cli\u003eUsa uma fita métrica flexível, mantendo uma posição natural e relaxada.\u003c\/li\u003e\n    \u003cli\u003eCompara as medidas com a tabela e, se estiveres entre dois tamanhos, considera escolher \n        \u003cstrong\u003eum tamanho acima\u003c\/strong\u003e, conforme a recomendação da Castelli para maior conforto.\u003c\/li\u003e\n  \u003c\/ul\u003e\n\n  \u003cbutton class=\"cc-size-btn\" type=\"button\" aria-haspopup=\"dialog\" aria-controls=\"cc-size-modal\"\u003e\n    Calcule o seu tamanho\n  \u003c\/button\u003e\n\u003c\/div\u003e\n\n\u003c!-- ===== MODAL ===== --\u003e\n\u003cdialog id=\"cc-size-modal\" class=\"cc-size-modal\" aria-label=\"Guia de tamanhos\"\u003e\n  \u003cbutton class=\"cc-close\" aria-label=\"Fechar\"\u003e✕\u003c\/button\u003e\n  \u003cdiv class=\"cc-loader\" aria-hidden=\"true\"\u003e\u003c\/div\u003e\n  \u003cdiv class=\"cc-size-box\" hidden\u003e\n    \u003cimg id=\"cc-size-img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0946\/1832\/1278\/files\/Size_Chart_Castelli_Men_2.0.png?v=1761056363\" alt=\"Guia de tamanhos Castelli\" loading=\"eager\" decoding=\"sync\"\u003e\n  \u003c\/div\u003e\n\u003c\/dialog\u003e\n\n\u003c!-- ===== STYLE ===== --\u003e\n\u003cstyle\u003e\n  .product-description {\n    font-family: Arial, Helvetica, sans-serif;\n    color: #222;\n    line-height: 1.6;\n    font-size: 15px;\n  }\n  .product-description h2 {\n    font-size: 22px;\n    text-transform: uppercase;\n    letter-spacing: .5px;\n    color: #111;\n    margin-bottom: 10px;\n  }\n\n  \/* Caixa do guia *\/\n  .cc-size-highlight-full{\n    background:#f9f9f9;border:1px solid #e2e2e2;border-radius:10px;\n    padding:20px 24px;margin-top:20px;\n    font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;\n    box-shadow:0 2px 8px rgba(0,0,0,0.04);\n  }\n  .cc-size-highlight-full h3{font-size:18px;margin:0 0 10px;color:#111;}\n  .cc-size-highlight-full p{font-size:15px;margin:0 0 10px;color:#333;}\n  .cc-size-highlight-full ul{margin:0 0 15px 20px;padding:0;}\n  .cc-size-highlight-full li{margin-bottom:5px;font-size:15px;color:#333;}\n\n  \/* Botão *\/\n  .cc-size-btn{\n    display:inline-flex;align-items:center;gap:.5rem;\n    background:#000;color:#fff;border:none;border-radius:6px;\n    padding:10px 16px;font-size:14px;font-weight:500;cursor:pointer;\n    transition:transform .2s ease-in-out, background .2s ease-in-out;\n  }\n  .cc-size-btn:hover{background:#222;transform:translateY(-1px);}\n\n  \/* ===== MODAL: reset do tema + centrado real ===== *\/\n  .cc-size-modal{\n    position: fixed !important;\n    inset: 0 !important;\n    background: transparent !important;\n    border: 0 !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    max-width: none !important;\n    width: 100vw !important;\n    height: 100vh !important;\n    display: none;\n    align-items: center !important;\n    justify-content: center !important;\n    z-index: 99999 !important;\n  }\n  .cc-size-modal[open]{ display:flex; }\n  .cc-size-modal::backdrop{ background: rgba(0,0,0,.6) !important; }\n\n  .cc-size-box{\n    position: relative;\n    box-sizing: border-box;\n    background: #fff;\n    border: 1px solid #e9e9e9;\n    border-radius: 10px;\n    box-shadow: 0 10px 25px rgba(0,0,0,.25);\n    padding: 8px;\n    overflow: hidden;\n    width: min(85vw, 1200px) !important;\n    max-height: 88vh !important;\n    display: flex;align-items:center;justify-content:center;\n  }\n  .cc-size-img{\n    display:block;\n    max-width:100% !important;\n    max-height:84vh !important;\n    width:auto !important;height:auto !important;\n    object-fit:contain !important;border-radius:6px;\n  }\n\n  .cc-close{\n    position:absolute;top:10px;right:10px;\n    background:#fff;border:1px solid #ddd;border-radius:6px;\n    padding:6px 9px;cursor:pointer;font-size:16px;line-height:1;\n    box-shadow:0 2px 6px rgba(0,0,0,.08);\n  }\n  .cc-close:hover{background:#f3f3f3;}\n\n  @media (max-width: 768px){\n    .cc-size-box{ width:95vw !important; max-height:95vh !important; padding:4px !important; }\n    .cc-size-img{ max-height:92vh !important; width:100% !important; }\n    .cc-close{ top:6px; right:6px; }\n  }\n\u003c\/style\u003e\n\n\u003c!-- ===== SCRIPT ===== --\u003e\n\u003cscript\u003e\n(function(){\n  const btn   = document.querySelector('.cc-size-btn');\n  const modal = document.getElementById('cc-size-modal');\n  if(!btn || !modal) return;\n\n  const close  = modal.querySelector('.cc-close');\n  const box    = modal.querySelector('.cc-size-box');\n  const img    = document.getElementById('cc-size-img');\n  const loader = modal.querySelector('.cc-loader');\n\n  function lockScroll(lock){\n    const el = document.documentElement;\n    if(lock){\n      el.style.overflow = 'hidden';\n      el.style.paddingRight = (window.innerWidth - document.documentElement.clientWidth) + 'px';\n    }else{\n      el.style.overflow = '';\n      el.style.paddingRight = '';\n    }\n  }\n\n  function openModal(e){\n    e \u0026\u0026 e.preventDefault();\n    if(modal.showModal){ modal.showModal(); } else { modal.setAttribute('open',''); }\n    lockScroll(true);\n    if(img \u0026\u0026 img.complete \u0026\u0026 img.naturalWidth\u003e0){\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n    }\n  }\n\n  function closeModal(){\n    if(modal.close){ modal.close(); } else { modal.removeAttribute('open'); }\n    lockScroll(false);\n  }\n\n  btn.addEventListener('click', openModal, { passive:true });\n  close.addEventListener('click', closeModal);\n  modal.addEventListener('cancel', e =\u003e { e.preventDefault(); closeModal(); });\n\n  modal.addEventListener('click', e =\u003e {\n    if(!box.contains(e.target)) closeModal();\n  });\n\n  document.addEventListener('keydown', e =\u003e {\n    if(e.key === 'Escape' \u0026\u0026 modal.hasAttribute('open')) closeModal();\n  });\n\n  if(img){\n    img.addEventListener('load', () =\u003e {\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n    });\n    img.addEventListener('error', () =\u003e {\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n      box.innerHTML = '\u003cdiv style=\"padding:24px;text-align:center;color:#444\"\u003eNão foi possível carregar a imagem do guia de tamanhos.\u003c\/div\u003e';\n    });\n  }\n})();\n\u003c\/script\u003e\n","brand":"Castelli","offers":[{"title":"S","offer_id":56456200421758,"sku":"4520529010 S","price":59.9,"currency_code":"EUR","in_stock":false},{"title":"M","offer_id":56456200454526,"sku":"4520529010 M","price":59.9,"currency_code":"EUR","in_stock":false},{"title":"L","offer_id":56456200487294,"sku":"4520529010 L","price":59.9,"currency_code":"EUR","in_stock":true},{"title":"XL","offer_id":56456200520062,"sku":"4520529010 XL","price":59.9,"currency_code":"EUR","in_stock":false},{"title":"2XL","offer_id":56456200552830,"sku":"4520529010 2XL","price":59.9,"currency_code":"EUR","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0946\/1832\/1278\/files\/167642955971-0.jpg?v=1761317701"},{"product_id":"castelli-prosecco-tech-short-sleeve-base-layer-color-black","title":"CAMISOLA INTERIOR CASTELLI PROSECCO TECH PRETA","description":"\u003cdiv class=\"product-description\"\u003e\n  \u003ch2\u003eCASTELLI PROSECCO TECH SHORT SLEEVE BASE LAYER\u003c\/h2\u003e\n\n  \u003cp\u003e\n    A \u003cstrong\u003eCastelli Prosecco Tech Base Layer\u003c\/strong\u003e foi criada para te manter seco e confortável em condições frias, graças à sua construção de mapeamento corporal e à combinação estratégica de tecidos técnicos.  \n    O tecido principal com \u003cstrong\u003etratamento hidrofílico Prosecco\u003c\/strong\u003e proporciona excelente gestão da humidade, enquanto os painéis \u003cstrong\u003ePrimaLoft®\u003c\/strong\u003e nas zonas cobertas pelos bretelles equilibram o isolamento térmico.\n  \u003c\/p\u003e\n\n  \u003ch3\u003eCaracterísticas\u003c\/h3\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n\u003cstrong\u003eTecido principal em malha elástica 100% poliéster\u003c\/strong\u003e com tratamento Prosecco para máxima eliminação da transpiração.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003ePainéis PrimaLoft®\u003c\/strong\u003e na cintura e nas costas para reduzir o isolamento desigual sob os bretelles do bibtight.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eGola redonda\u003c\/strong\u003e para se ajustar perfeitamente sob jerseys de gola curta.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003ePeso:\u003c\/strong\u003e 114 g\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eTemperatura:\u003c\/strong\u003e 10–20 °C \/ 50–68 °F\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eFIT:\u003c\/strong\u003e Tailored\u003c\/li\u003e\n  \u003c\/ul\u003e\n\n  \u003ch3\u003eConforto térmico e gestão inteligente da humidade\u003c\/h3\u003e\n  \u003cp\u003e\n    Desenvolvida com a tecnologia \u003cstrong\u003ebody mapping\u003c\/strong\u003e, esta base layer identifica as zonas do corpo que necessitam de maior ventilação ou isolamento.  \n    O tecido \u003cstrong\u003eProsecco\u003c\/strong\u003e absorve rapidamente o suor, mantendo o corpo seco, enquanto o \u003cstrong\u003ePrimaLoft®\u003c\/strong\u003e proporciona leve isolamento nas áreas mais sensíveis ao frio.  \n    O corte justo e a gola discreta tornam-na ideal para usar sob qualquer jersey Castelli durante os treinos e corridas em dias frescos.\n  \u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- ===== GUIA DE TAMANHOS CASTELLI ===== --\u003e\n\u003cdiv class=\"cc-size-highlight-full\"\u003e\n  \u003ch3\u003e📏 Encontra o Teu Tamanho Ideal\u003c\/h3\u003e\n  \u003cp\u003e\n    Para garantir o melhor ajuste e conforto, mede o perímetro do teu \n    \u003cstrong\u003epeito (A)\u003c\/strong\u003e e da tua \u003cstrong\u003ecintura (B)\u003c\/strong\u003e em centímetros e compara \n    com o guia de tamanhos Castelli abaixo.\n  \u003c\/p\u003e\n\n  \u003cul\u003e\n    \u003cli\u003eMede o \u003cstrong\u003epeito (A)\u003c\/strong\u003e na parte mais larga do tórax, mantendo a fita horizontal e sem apertar.\u003c\/li\u003e\n    \u003cli\u003eMede a \u003cstrong\u003ecintura (B)\u003c\/strong\u003e na zona mais estreita do tronco.\u003c\/li\u003e\n    \u003cli\u003eUsa uma fita métrica flexível, mantendo uma posição natural e relaxada.\u003c\/li\u003e\n    \u003cli\u003eCompara as medidas com a tabela e, se estiveres entre dois tamanhos, considera escolher \n        \u003cstrong\u003eum tamanho acima\u003c\/strong\u003e, conforme a recomendação da Castelli para maior conforto.\u003c\/li\u003e\n  \u003c\/ul\u003e\n\n  \u003cbutton class=\"cc-size-btn\" type=\"button\" aria-haspopup=\"dialog\" aria-controls=\"cc-size-modal\"\u003e\n    Calcule o seu tamanho\n  \u003c\/button\u003e\n\u003c\/div\u003e\n\n\u003c!-- ===== MODAL ===== --\u003e\n\u003cdialog id=\"cc-size-modal\" class=\"cc-size-modal\" aria-label=\"Guia de tamanhos\"\u003e\n  \u003cbutton class=\"cc-close\" aria-label=\"Fechar\"\u003e✕\u003c\/button\u003e\n  \u003cdiv class=\"cc-loader\" aria-hidden=\"true\"\u003e\u003c\/div\u003e\n  \u003cdiv class=\"cc-size-box\" hidden\u003e\n    \u003cimg id=\"cc-size-img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0946\/1832\/1278\/files\/Size_Chart_Castelli_Men_2.0.png?v=1761056363\" alt=\"Guia de tamanhos Castelli\" loading=\"eager\" decoding=\"sync\"\u003e\n  \u003c\/div\u003e\n\u003c\/dialog\u003e\n\n\u003c!-- ===== STYLE ===== --\u003e\n\u003cstyle\u003e\n  .product-description {\n    font-family: Arial, Helvetica, sans-serif;\n    color: #222;\n    line-height: 1.6;\n    font-size: 15px;\n  }\n  .product-description h2 {\n    font-size: 22px;\n    text-transform: uppercase;\n    letter-spacing: .5px;\n    color: #111;\n    margin-bottom: 10px;\n  }\n\n  \/* Caixa do guia *\/\n  .cc-size-highlight-full{\n    background:#f9f9f9;border:1px solid #e2e2e2;border-radius:10px;\n    padding:20px 24px;margin-top:20px;\n    font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;\n    box-shadow:0 2px 8px rgba(0,0,0,0.04);\n  }\n  .cc-size-highlight-full h3{font-size:18px;margin:0 0 10px;color:#111;}\n  .cc-size-highlight-full p{font-size:15px;margin:0 0 10px;color:#333;}\n  .cc-size-highlight-full ul{margin:0 0 15px 20px;padding:0;}\n  .cc-size-highlight-full li{margin-bottom:5px;font-size:15px;color:#333;}\n\n  \/* Botão *\/\n  .cc-size-btn{\n    display:inline-flex;align-items:center;gap:.5rem;\n    background:#000;color:#fff;border:none;border-radius:6px;\n    padding:10px 16px;font-size:14px;font-weight:500;cursor:pointer;\n    transition:transform .2s ease-in-out, background .2s ease-in-out;\n  }\n  .cc-size-btn:hover{background:#222;transform:translateY(-1px);}\n\n  \/* ===== MODAL: reset do tema + centrado real ===== *\/\n  .cc-size-modal{\n    position: fixed !important;\n    inset: 0 !important;\n    background: transparent !important;\n    border: 0 !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    max-width: none !important;\n    width: 100vw !important;\n    height: 100vh !important;\n    display: none;\n    align-items: center !important;\n    justify-content: center !important;\n    z-index: 99999 !important;\n  }\n  .cc-size-modal[open]{ display:flex; }\n  .cc-size-modal::backdrop{ background: rgba(0,0,0,.6) !important; }\n\n  .cc-size-box{\n    position: relative;\n    box-sizing: border-box;\n    background: #fff;\n    border: 1px solid #e9e9e9;\n    border-radius: 10px;\n    box-shadow: 0 10px 25px rgba(0,0,0,.25);\n    padding: 8px;\n    overflow: hidden;\n    width: min(85vw, 1200px) !important;\n    max-height: 88vh !important;\n    display: flex;align-items:center;justify-content:center;\n  }\n  .cc-size-img{\n    display:block;\n    max-width:100% !important;\n    max-height:84vh !important;\n    width:auto !important;height:auto !important;\n    object-fit:contain !important;border-radius:6px;\n  }\n\n  .cc-close{\n    position:absolute;top:10px;right:10px;\n    background:#fff;border:1px solid #ddd;border-radius:6px;\n    padding:6px 9px;cursor:pointer;font-size:16px;line-height:1;\n    box-shadow:0 2px 6px rgba(0,0,0,.08);\n  }\n  .cc-close:hover{background:#f3f3f3;}\n\n  @media (max-width: 768px){\n    .cc-size-box{ width:95vw !important; max-height:95vh !important; padding:4px !important; }\n    .cc-size-img{ max-height:92vh !important; width:100% !important; }\n    .cc-close{ top:6px; right:6px; }\n  }\n\u003c\/style\u003e\n\n\u003c!-- ===== SCRIPT ===== --\u003e\n\u003cscript\u003e\n(function(){\n  const btn   = document.querySelector('.cc-size-btn');\n  const modal = document.getElementById('cc-size-modal');\n  if(!btn || !modal) return;\n\n  const close  = modal.querySelector('.cc-close');\n  const box    = modal.querySelector('.cc-size-box');\n  const img    = document.getElementById('cc-size-img');\n  const loader = modal.querySelector('.cc-loader');\n\n  function lockScroll(lock){\n    const el = document.documentElement;\n    if(lock){\n      el.style.overflow = 'hidden';\n      el.style.paddingRight = (window.innerWidth - document.documentElement.clientWidth) + 'px';\n    }else{\n      el.style.overflow = '';\n      el.style.paddingRight = '';\n    }\n  }\n\n  function openModal(e){\n    e \u0026\u0026 e.preventDefault();\n    if(modal.showModal){ modal.showModal(); } else { modal.setAttribute('open',''); }\n    lockScroll(true);\n    if(img \u0026\u0026 img.complete \u0026\u0026 img.naturalWidth\u003e0){\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n    }\n  }\n\n  function closeModal(){\n    if(modal.close){ modal.close(); } else { modal.removeAttribute('open'); }\n    lockScroll(false);\n  }\n\n  btn.addEventListener('click', openModal, { passive:true });\n  close.addEventListener('click', closeModal);\n  modal.addEventListener('cancel', e =\u003e { e.preventDefault(); closeModal(); });\n\n  modal.addEventListener('click', e =\u003e {\n    if(!box.contains(e.target)) closeModal();\n  });\n\n  document.addEventListener('keydown', e =\u003e {\n    if(e.key === 'Escape' \u0026\u0026 modal.hasAttribute('open')) closeModal();\n  });\n\n  if(img){\n    img.addEventListener('load', () =\u003e {\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n    });\n    img.addEventListener('error', () =\u003e {\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n      box.innerHTML = '\u003cdiv style=\"padding:24px;text-align:center;color:#444\"\u003eNão foi possível carregar a imagem do guia de tamanhos.\u003c\/div\u003e';\n    });\n  }\n})();\n\u003c\/script\u003e\n","brand":"Castelli","offers":[{"title":"S","offer_id":56456218739070,"sku":"4520530010 S-1","price":59.9,"currency_code":"EUR","in_stock":false},{"title":"M","offer_id":56456218771838,"sku":"4520530010 M-1","price":59.9,"currency_code":"EUR","in_stock":false},{"title":"L","offer_id":56456218804606,"sku":"4520530010 L-1","price":59.9,"currency_code":"EUR","in_stock":false},{"title":"XL","offer_id":56456218837374,"sku":"4520530010 XL-1","price":59.9,"currency_code":"EUR","in_stock":false},{"title":"2XL","offer_id":56456218870142,"sku":"4520530010 2XL-1","price":59.9,"currency_code":"EUR","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0946\/1832\/1278\/files\/167642947491-0.jpg?v=1761317884"},{"product_id":"castelli-summer-base-layer-model-active-cooling-sleeveless-silver-gray","title":"CAMISOLA INTERIOR CASTELLI BASE LAYER","description":"\u003cdiv class=\"product-description\"\u003e\n  \u003ch2\u003eCASTELLI ACTIVE COOLING SLEEVELESS BASE LAYER – SILVER GRAY\u003c\/h2\u003e\n\n  \u003cp\u003e\n    A \u003cstrong\u003eCastelli Active Cooling Sleeveless Base Layer\u003c\/strong\u003e foi projetada para te manter fresco mesmo nos dias mais quentes.  \n    A sua tecnologia de arrefecimento ativo retém uma leve quantidade de humidade próxima da pele, promovendo um \u003cstrong\u003eefeito de evaporação natural\u003c\/strong\u003e que reduz a temperatura corporal durante o esforço.\n  \u003c\/p\u003e\n\n  \u003cp\u003e\n    O tecido \u003cstrong\u003ePolartec® Delta\u003c\/strong\u003e oferece um equilíbrio perfeito entre secagem rápida e retenção de humidade regulada,  \n    permitindo que o corpo se mantenha fresco sem acumular suor em excesso.  \n    O design sem mangas e a construção minimalista tornam esta base layer ideal para treinos e competições em clima quente,  \n    proporcionando \u003cstrong\u003eliberdade total de movimento\u003c\/strong\u003e e conforto durante toda a pedalada.\n  \u003c\/p\u003e\n\n  \u003ch3\u003eCaracterísticas\u003c\/h3\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n\u003cstrong\u003eBase layer projetada para arrefecer\u003c\/strong\u003e o corpo em dias quentes.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eTecido Polartec® Delta\u003c\/strong\u003e com secagem regulada para otimizar o arrefecimento por evaporação.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eDesign sem mangas\u003c\/strong\u003e com construção minimalista para máxima leveza.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eEstampa sublimada\u003c\/strong\u003e de alta durabilidade.\u003c\/li\u003e\n  \u003c\/ul\u003e\n\n  \u003ch3\u003eFrescura e Performance nas Altas Temperaturas\u003c\/h3\u003e\n  \u003cp\u003e\n    Leve, técnica e altamente funcional, a \u003cstrong\u003eActive Cooling Base Layer\u003c\/strong\u003e é essencial para os ciclistas que enfrentam o calor com intensidade.  \n    Mantém o corpo fresco e confortável, ajudando-te a dar o máximo mesmo nas condições mais exigentes.\n  \u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- ===== GUIA DE TAMANHOS CASTELLI ===== --\u003e\n\u003cdiv class=\"cc-size-highlight-full\"\u003e\n  \u003ch3\u003e📏 Encontra o Teu Tamanho Ideal\u003c\/h3\u003e\n  \u003cp\u003e\n    Para garantir o melhor ajuste e conforto, mede o perímetro do teu \n    \u003cstrong\u003epeito (A)\u003c\/strong\u003e e da tua \u003cstrong\u003ecintura (B)\u003c\/strong\u003e em centímetros e compara \n    com o guia de tamanhos Castelli abaixo.\n  \u003c\/p\u003e\n\n  \u003cul\u003e\n    \u003cli\u003eMede o \u003cstrong\u003epeito (A)\u003c\/strong\u003e na parte mais larga do tórax, mantendo a fita horizontal e sem apertar.\u003c\/li\u003e\n    \u003cli\u003eMede a \u003cstrong\u003ecintura (B)\u003c\/strong\u003e na zona mais estreita do tronco.\u003c\/li\u003e\n    \u003cli\u003eUsa uma fita métrica flexível, mantendo uma posição natural e relaxada.\u003c\/li\u003e\n    \u003cli\u003eCompara as medidas com a tabela e, se estiveres entre dois tamanhos, considera escolher \n        \u003cstrong\u003eum tamanho acima\u003c\/strong\u003e, conforme a recomendação da Castelli para maior conforto.\u003c\/li\u003e\n  \u003c\/ul\u003e\n\n  \u003cbutton class=\"cc-size-btn\" type=\"button\" aria-haspopup=\"dialog\" aria-controls=\"cc-size-modal\"\u003e\n    Calcule o seu tamanho\n  \u003c\/button\u003e\n\u003c\/div\u003e\n\n\u003c!-- ===== MODAL ===== --\u003e\n\u003cdialog id=\"cc-size-modal\" class=\"cc-size-modal\" aria-label=\"Guia de tamanhos\"\u003e\n  \u003cbutton class=\"cc-close\" aria-label=\"Fechar\"\u003e✕\u003c\/button\u003e\n  \u003cdiv class=\"cc-loader\" aria-hidden=\"true\"\u003e\u003c\/div\u003e\n  \u003cdiv class=\"cc-size-box\" hidden\u003e\n    \u003cimg id=\"cc-size-img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0946\/1832\/1278\/files\/Size_Chart_Castelli_Men_2.0.png?v=1761056363\" alt=\"Guia de tamanhos Castelli\" loading=\"eager\" decoding=\"sync\"\u003e\n  \u003c\/div\u003e\n\u003c\/dialog\u003e\n\n\u003c!-- ===== STYLE ===== --\u003e\n\u003cstyle\u003e\n  .product-description {\n    font-family: Arial, Helvetica, sans-serif;\n    color: #222;\n    line-height: 1.6;\n    font-size: 15px;\n  }\n  .product-description h2 {\n    font-size: 22px;\n    text-transform: uppercase;\n    letter-spacing: .5px;\n    color: #111;\n    margin-bottom: 10px;\n  }\n\n  \/* Caixa do guia *\/\n  .cc-size-highlight-full{\n    background:#f9f9f9;border:1px solid #e2e2e2;border-radius:10px;\n    padding:20px 24px;margin-top:20px;\n    font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;\n    box-shadow:0 2px 8px rgba(0,0,0,0.04);\n  }\n  .cc-size-highlight-full h3{font-size:18px;margin:0 0 10px;color:#111;}\n  .cc-size-highlight-full p{font-size:15px;margin:0 0 10px;color:#333;}\n  .cc-size-highlight-full ul{margin:0 0 15px 20px;padding:0;}\n  .cc-size-highlight-full li{margin-bottom:5px;font-size:15px;color:#333;}\n\n  \/* Botão *\/\n  .cc-size-btn{\n    display:inline-flex;align-items:center;gap:.5rem;\n    background:#000;color:#fff;border:none;border-radius:6px;\n    padding:10px 16px;font-size:14px;font-weight:500;cursor:pointer;\n    transition:transform .2s ease-in-out, background .2s ease-in-out;\n  }\n  .cc-size-btn:hover{background:#222;transform:translateY(-1px);}\n\n  \/* ===== MODAL: reset do tema + centrado real ===== *\/\n  .cc-size-modal{\n    position: fixed !important;\n    inset: 0 !important;\n    background: transparent !important;\n    border: 0 !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    max-width: none !important;\n    width: 100vw !important;\n    height: 100vh !important;\n    display: none;\n    align-items: center !important;\n    justify-content: center !important;\n    z-index: 99999 !important;\n  }\n  .cc-size-modal[open]{ display:flex; }\n  .cc-size-modal::backdrop{ background: rgba(0,0,0,.6) !important; }\n\n  .cc-size-box{\n    position: relative;\n    box-sizing: border-box;\n    background: #fff;\n    border: 1px solid #e9e9e9;\n    border-radius: 10px;\n    box-shadow: 0 10px 25px rgba(0,0,0,.25);\n    padding: 8px;\n    overflow: hidden;\n    width: min(85vw, 1200px) !important;\n    max-height: 88vh !important;\n    display: flex;align-items:center;justify-content:center;\n  }\n  .cc-size-img{\n    display:block;\n    max-width:100% !important;\n    max-height:84vh !important;\n    width:auto !important;height:auto !important;\n    object-fit:contain !important;border-radius:6px;\n  }\n\n  .cc-close{\n    position:absolute;top:10px;right:10px;\n    background:#fff;border:1px solid #ddd;border-radius:6px;\n    padding:6px 9px;cursor:pointer;font-size:16px;line-height:1;\n    box-shadow:0 2px 6px rgba(0,0,0,.08);\n  }\n  .cc-close:hover{background:#f3f3f3;}\n\n  @media (max-width: 768px){\n    .cc-size-box{ width:95vw !important; max-height:95vh !important; padding:4px !important; }\n    .cc-size-img{ max-height:92vh !important; width:100% !important; }\n    .cc-close{ top:6px; right:6px; }\n  }\n\u003c\/style\u003e\n\n\u003c!-- ===== SCRIPT ===== --\u003e\n\u003cscript\u003e\n(function(){\n  const btn   = document.querySelector('.cc-size-btn');\n  const modal = document.getElementById('cc-size-modal');\n  if(!btn || !modal) return;\n\n  const close  = modal.querySelector('.cc-close');\n  const box    = modal.querySelector('.cc-size-box');\n  const img    = document.getElementById('cc-size-img');\n  const loader = modal.querySelector('.cc-loader');\n\n  function lockScroll(lock){\n    const el = document.documentElement;\n    if(lock){\n      el.style.overflow = 'hidden';\n      el.style.paddingRight = (window.innerWidth - document.documentElement.clientWidth) + 'px';\n    }else{\n      el.style.overflow = '';\n      el.style.paddingRight = '';\n    }\n  }\n\n  function openModal(e){\n    e \u0026\u0026 e.preventDefault();\n    if(modal.showModal){ modal.showModal(); } else { modal.setAttribute('open',''); }\n    lockScroll(true);\n    if(img \u0026\u0026 img.complete \u0026\u0026 img.naturalWidth\u003e0){\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n    }\n  }\n\n  function closeModal(){\n    if(modal.close){ modal.close(); } else { modal.removeAttribute('open'); }\n    lockScroll(false);\n  }\n\n  btn.addEventListener('click', openModal, { passive:true });\n  close.addEventListener('click', closeModal);\n  modal.addEventListener('cancel', e =\u003e { e.preventDefault(); closeModal(); });\n\n  modal.addEventListener('click', e =\u003e {\n    if(!box.contains(e.target)) closeModal();\n  });\n\n  document.addEventListener('keydown', e =\u003e {\n    if(e.key === 'Escape' \u0026\u0026 modal.hasAttribute('open')) closeModal();\n  });\n\n  if(img){\n    img.addEventListener('load', () =\u003e {\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n    });\n    img.addEventListener('error', () =\u003e {\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n      box.innerHTML = '\u003cdiv style=\"padding:24px;text-align:center;color:#444\"\u003eNão foi possível carregar a imagem do guia de tamanhos.\u003c\/div\u003e';\n    });\n  }\n})();\n\u003c\/script\u003e\n","brand":"Castelli","offers":[{"title":"S","offer_id":56456241774974,"sku":"4520030870 S-1","price":69.9,"currency_code":"EUR","in_stock":true},{"title":"M","offer_id":56456241807742,"sku":"4520030870 M-1","price":69.9,"currency_code":"EUR","in_stock":false},{"title":"L","offer_id":56456241840510,"sku":"4520030870 L-1","price":69.9,"currency_code":"EUR","in_stock":true},{"title":"XL","offer_id":56456241873278,"sku":"4520030870 XL-1","price":69.9,"currency_code":"EUR","in_stock":true},{"title":"2XL","offer_id":56456241906046,"sku":"4520030870 2XL-1","price":69.9,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0946\/1832\/1278\/files\/167642924581-0.jpg?v=1761317964"},{"product_id":"castelli-base-layer-model-core-seamless-base-layer-black","title":"CAMISOLA INTERIOR CASTELLI CORE PRETO","description":"\u003cdiv class=\"product-description\"\u003e\n\u003ch2\u003eCASTELLI CORE BASE LAYER\u003c\/h2\u003e\n\u003cp\u003eA \u003cstrong\u003eCastelli Core Seamless Base Layer\u003c\/strong\u003e foi desenvolvida para oferecer o equilíbrio perfeito entre \u003cstrong\u003eleveza, aquecimento e conforto\u003c\/strong\u003e. Surpreendentemente quente para o seu peso, esta base layer é ideal para condições frescas, garantindo excelente \u003cstrong\u003egestão da humidade\u003c\/strong\u003e e um toque extremamente suave na pele.\u003c\/p\u003e\n\u003cp\u003eA construção \u003cstrong\u003esem costuras\u003c\/strong\u003e elimina pontos de fricção e assegura um ajuste justo e confortável. As zonas laterais e traseiras em tecido mais leve otimizam a respirabilidade, enquanto a abertura larga no pescoço permite um encaixe perfeito sob jerseys de gola baixa. Um essencial para pedalar nos dias mais frios com conforto e performance.\u003c\/p\u003e\n\u003ch3\u003eCaracterísticas\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eComposição:\u003c\/strong\u003e 84% poliéster \/ 16% polipropileno — macio, quente e com excelente elasticidade.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eConstrução Seamless\u003c\/strong\u003e (sem costuras) para máximo conforto.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMalha mais leve\u003c\/strong\u003e nas laterais e costas para melhor ventilação.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAbertura larga no pescoço\u003c\/strong\u003e para ajustar sob jerseys de gola baixa.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePeso:\u003c\/strong\u003e 135 g\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eTemperatura:\u003c\/strong\u003e 8–20 °C \/ 46–68 °F\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFIT:\u003c\/strong\u003e Regular\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eConforto e Aquecimento com Máxima Liberdade\u003c\/h3\u003e\n\u003cp\u003eA \u003cstrong\u003eCore Seamless\u003c\/strong\u003e é perfeita para quem procura uma base layer versátil, leve e eficiente. Proporciona isolamento térmico quando o frio aperta, sem comprometer a respirabilidade, tornando-se a escolha ideal para pedalar com conforto em qualquer ritmo.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- ===== GUIA DE TAMANHOS CASTELLI ===== --\u003e\n\u003cdiv class=\"cc-size-highlight-full\"\u003e\n\u003ch3\u003e📏 Encontra o Teu Tamanho Ideal\u003c\/h3\u003e\n\u003cp\u003ePara garantir o melhor ajuste e conforto, mede o perímetro do teu \u003cstrong\u003epeito (A)\u003c\/strong\u003e e da tua \u003cstrong\u003ecintura (B)\u003c\/strong\u003e em centímetros e compara com o guia de tamanhos Castelli abaixo.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eMede o \u003cstrong\u003epeito (A)\u003c\/strong\u003e na parte mais larga do tórax, mantendo a fita horizontal e sem apertar.\u003c\/li\u003e\n\u003cli\u003eMede a \u003cstrong\u003ecintura (B)\u003c\/strong\u003e na zona mais estreita do tronco.\u003c\/li\u003e\n\u003cli\u003eUsa uma fita métrica flexível, mantendo uma posição natural e relaxada.\u003c\/li\u003e\n\u003cli\u003eCompara as medidas com a tabela e, se estiveres entre dois tamanhos, considera escolher \u003cstrong\u003eum tamanho acima\u003c\/strong\u003e, conforme a recomendação da Castelli para maior conforto.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cbutton class=\"cc-size-btn\" type=\"button\" aria-haspopup=\"dialog\" aria-controls=\"cc-size-modal\"\u003e Calcule o seu tamanho \u003c\/button\u003e\n\u003c\/div\u003e\n\u003c!-- ===== MODAL ===== --\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e\u003c\/p\u003e\u003cdialog id=\"cc-size-modal\" class=\"cc-size-modal\" aria-label=\"Guia de tamanhos\"\u003e \u003cbutton class=\"cc-close\" aria-label=\"Fechar\"\u003e✕\u003c\/button\u003e\n\u003cdiv class=\"cc-loader\" aria-hidden=\"true\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"cc-size-box\" hidden=\"\"\u003e\u003cimg id=\"cc-size-img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0946\/1832\/1278\/files\/Size_Chart_Castelli_Men_2.0.png?v=1761056363\" alt=\"Guia de tamanhos Castelli\" loading=\"eager\" decoding=\"sync\"\u003e\u003c\/div\u003e\n\u003c\/dialog\u003e\u003cp\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003c!-- ===== STYLE ===== --\u003e\n\u003cstyle\u003e\n  .product-description {\n    font-family: Arial, Helvetica, sans-serif;\n    color: #222;\n    line-height: 1.6;\n    font-size: 15px;\n  }\n  .product-description h2 {\n    font-size: 22px;\n    text-transform: uppercase;\n    letter-spacing: .5px;\n    color: #111;\n    margin-bottom: 10px;\n  }\n\n  \/* Caixa do guia *\/\n  .cc-size-highlight-full{\n    background:#f9f9f9;border:1px solid #e2e2e2;border-radius:10px;\n    padding:20px 24px;margin-top:20px;\n    font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;\n    box-shadow:0 2px 8px rgba(0,0,0,0.04);\n  }\n  .cc-size-highlight-full h3{font-size:18px;margin:0 0 10px;color:#111;}\n  .cc-size-highlight-full p{font-size:15px;margin:0 0 10px;color:#333;}\n  .cc-size-highlight-full ul{margin:0 0 15px 20px;padding:0;}\n  .cc-size-highlight-full li{margin-bottom:5px;font-size:15px;color:#333;}\n\n  \/* Botão *\/\n  .cc-size-btn{\n    display:inline-flex;align-items:center;gap:.5rem;\n    background:#000;color:#fff;border:none;border-radius:6px;\n    padding:10px 16px;font-size:14px;font-weight:500;cursor:pointer;\n    transition:transform .2s ease-in-out, background .2s ease-in-out;\n  }\n  .cc-size-btn:hover{background:#222;transform:translateY(-1px);}\n\n  \/* ===== MODAL: reset do tema + centrado real ===== *\/\n  .cc-size-modal{\n    position: fixed !important;\n    inset: 0 !important;\n    background: transparent !important;\n    border: 0 !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    max-width: none !important;\n    width: 100vw !important;\n    height: 100vh !important;\n    display: none;\n    align-items: center !important;\n    justify-content: center !important;\n    z-index: 99999 !important;\n  }\n  .cc-size-modal[open]{ display:flex; }\n  .cc-size-modal::backdrop{ background: rgba(0,0,0,.6) !important; }\n\n  .cc-size-box{\n    position: relative;\n    box-sizing: border-box;\n    background: #fff;\n    border: 1px solid #e9e9e9;\n    border-radius: 10px;\n    box-shadow: 0 10px 25px rgba(0,0,0,.25);\n    padding: 8px;\n    overflow: hidden;\n    width: min(85vw, 1200px) !important;\n    max-height: 88vh !important;\n    display: flex;align-items:center;justify-content:center;\n  }\n  .cc-size-img{\n    display:block;\n    max-width:100% !important;\n    max-height:84vh !important;\n    width:auto !important;height:auto !important;\n    object-fit:contain !important;border-radius:6px;\n  }\n\n  .cc-close{\n    position:absolute;top:10px;right:10px;\n    background:#fff;border:1px solid #ddd;border-radius:6px;\n    padding:6px 9px;cursor:pointer;font-size:16px;line-height:1;\n    box-shadow:0 2px 6px rgba(0,0,0,.08);\n  }\n  .cc-close:hover{background:#f3f3f3;}\n\n  @media (max-width: 768px){\n    .cc-size-box{ width:95vw !important; max-height:95vh !important; padding:4px !important; }\n    .cc-size-img{ max-height:92vh !important; width:100% !important; }\n    .cc-close{ top:6px; right:6px; }\n  }\n\u003c\/style\u003e\n\u003c!-- ===== SCRIPT ===== --\u003e\n\u003cp\u003e \u003c\/p\u003e","brand":"Castelli","offers":[{"title":"S \/ M","offer_id":56456242135422,"sku":"4520575010 SM","price":69.9,"currency_code":"EUR","in_stock":false},{"title":"L \/ XL","offer_id":56456242168190,"sku":"4520575010 LXL","price":69.9,"currency_code":"EUR","in_stock":false},{"title":"2XL","offer_id":56456242200958,"sku":"4520575010 2XL","price":69.9,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0946\/1832\/1278\/files\/167642941908-0.jpg?v=1761317968"},{"product_id":"castelli-base-layer-model-core-seamless-base-layer-white","title":"CAMISOLA INTERIOR CASTELLI CORE","description":"\u003cdiv class=\"product-description\"\u003e\n  \u003ch2\u003eCASTELLI CORE SEAMLESS BASE LAYER\u003c\/h2\u003e\n\n  \u003cp\u003e\n    A \u003cstrong\u003eCastelli Core Seamless Base Layer\u003c\/strong\u003e foi desenvolvida para oferecer o equilíbrio perfeito entre  \n    \u003cstrong\u003eleveza, aquecimento e conforto\u003c\/strong\u003e. Surpreendentemente quente para o seu peso, esta base layer é ideal  \n    para condições frescas, garantindo excelente \u003cstrong\u003egestão da humidade\u003c\/strong\u003e e um toque extremamente suave na pele.\n  \u003c\/p\u003e\n\n  \u003cp\u003e\n    A construção \u003cstrong\u003esem costuras\u003c\/strong\u003e elimina pontos de fricção e assegura um ajuste justo e confortável.  \n    As zonas laterais e traseiras em tecido mais leve otimizam a respirabilidade, enquanto a abertura larga no pescoço  \n    permite um encaixe perfeito sob jerseys de gola baixa.  \n    Um essencial para pedalar nos dias mais frios com conforto e performance.\n  \u003c\/p\u003e\n\n  \u003ch3\u003eCaracterísticas\u003c\/h3\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n\u003cstrong\u003eComposição:\u003c\/strong\u003e 84% poliéster \/ 16% polipropileno — macio, quente e com excelente elasticidade.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eConstrução Seamless\u003c\/strong\u003e (sem costuras) para máximo conforto.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eMalha mais leve\u003c\/strong\u003e nas laterais e costas para melhor ventilação.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eAbertura larga no pescoço\u003c\/strong\u003e para ajustar sob jerseys de gola baixa.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003ePeso:\u003c\/strong\u003e 135 g\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eTemperatura:\u003c\/strong\u003e 8–20 °C \/ 46–68 °F\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eFIT:\u003c\/strong\u003e Regular\u003c\/li\u003e\n  \u003c\/ul\u003e\n\n  \u003ch3\u003eConforto e Aquecimento com Máxima Liberdade\u003c\/h3\u003e\n  \u003cp\u003e\n    A \u003cstrong\u003eCore Seamless\u003c\/strong\u003e é perfeita para quem procura uma base layer versátil, leve e eficiente.  \n    Proporciona isolamento térmico quando o frio aperta, sem comprometer a respirabilidade,  \n    tornando-se a escolha ideal para pedalar com conforto em qualquer ritmo.\n  \u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- ===== GUIA DE TAMANHOS CASTELLI ===== --\u003e\n\u003cdiv class=\"cc-size-highlight-full\"\u003e\n  \u003ch3\u003e📏 Encontra o Teu Tamanho Ideal\u003c\/h3\u003e\n  \u003cp\u003e\n    Para garantir o melhor ajuste e conforto, mede o perímetro do teu \n    \u003cstrong\u003epeito (A)\u003c\/strong\u003e e da tua \u003cstrong\u003ecintura (B)\u003c\/strong\u003e em centímetros e compara \n    com o guia de tamanhos Castelli abaixo.\n  \u003c\/p\u003e\n\n  \u003cul\u003e\n    \u003cli\u003eMede o \u003cstrong\u003epeito (A)\u003c\/strong\u003e na parte mais larga do tórax, mantendo a fita horizontal e sem apertar.\u003c\/li\u003e\n    \u003cli\u003eMede a \u003cstrong\u003ecintura (B)\u003c\/strong\u003e na zona mais estreita do tronco.\u003c\/li\u003e\n    \u003cli\u003eUsa uma fita métrica flexível, mantendo uma posição natural e relaxada.\u003c\/li\u003e\n    \u003cli\u003eCompara as medidas com a tabela e, se estiveres entre dois tamanhos, considera escolher \n        \u003cstrong\u003eum tamanho acima\u003c\/strong\u003e, conforme a recomendação da Castelli para maior conforto.\u003c\/li\u003e\n  \u003c\/ul\u003e\n\n  \u003cbutton class=\"cc-size-btn\" type=\"button\" aria-haspopup=\"dialog\" aria-controls=\"cc-size-modal\"\u003e\n    Calcule o seu tamanho\n  \u003c\/button\u003e\n\u003c\/div\u003e\n\n\u003c!-- ===== MODAL ===== --\u003e\n\u003cdialog id=\"cc-size-modal\" class=\"cc-size-modal\" aria-label=\"Guia de tamanhos\"\u003e\n  \u003cbutton class=\"cc-close\" aria-label=\"Fechar\"\u003e✕\u003c\/button\u003e\n  \u003cdiv class=\"cc-loader\" aria-hidden=\"true\"\u003e\u003c\/div\u003e\n  \u003cdiv class=\"cc-size-box\" hidden\u003e\n    \u003cimg id=\"cc-size-img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0946\/1832\/1278\/files\/Size_Chart_Castelli_Men_2.0.png?v=1761056363\" alt=\"Guia de tamanhos Castelli\" loading=\"eager\" decoding=\"sync\"\u003e\n  \u003c\/div\u003e\n\u003c\/dialog\u003e\n\n\u003c!-- ===== STYLE ===== --\u003e\n\u003cstyle\u003e\n  .product-description {\n    font-family: Arial, Helvetica, sans-serif;\n    color: #222;\n    line-height: 1.6;\n    font-size: 15px;\n  }\n  .product-description h2 {\n    font-size: 22px;\n    text-transform: uppercase;\n    letter-spacing: .5px;\n    color: #111;\n    margin-bottom: 10px;\n  }\n\n  \/* Caixa do guia *\/\n  .cc-size-highlight-full{\n    background:#f9f9f9;border:1px solid #e2e2e2;border-radius:10px;\n    padding:20px 24px;margin-top:20px;\n    font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;\n    box-shadow:0 2px 8px rgba(0,0,0,0.04);\n  }\n  .cc-size-highlight-full h3{font-size:18px;margin:0 0 10px;color:#111;}\n  .cc-size-highlight-full p{font-size:15px;margin:0 0 10px;color:#333;}\n  .cc-size-highlight-full ul{margin:0 0 15px 20px;padding:0;}\n  .cc-size-highlight-full li{margin-bottom:5px;font-size:15px;color:#333;}\n\n  \/* Botão *\/\n  .cc-size-btn{\n    display:inline-flex;align-items:center;gap:.5rem;\n    background:#000;color:#fff;border:none;border-radius:6px;\n    padding:10px 16px;font-size:14px;font-weight:500;cursor:pointer;\n    transition:transform .2s ease-in-out, background .2s ease-in-out;\n  }\n  .cc-size-btn:hover{background:#222;transform:translateY(-1px);}\n\n  \/* ===== MODAL: reset do tema + centrado real ===== *\/\n  .cc-size-modal{\n    position: fixed !important;\n    inset: 0 !important;\n    background: transparent !important;\n    border: 0 !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    max-width: none !important;\n    width: 100vw !important;\n    height: 100vh !important;\n    display: none;\n    align-items: center !important;\n    justify-content: center !important;\n    z-index: 99999 !important;\n  }\n  .cc-size-modal[open]{ display:flex; }\n  .cc-size-modal::backdrop{ background: rgba(0,0,0,.6) !important; }\n\n  .cc-size-box{\n    position: relative;\n    box-sizing: border-box;\n    background: #fff;\n    border: 1px solid #e9e9e9;\n    border-radius: 10px;\n    box-shadow: 0 10px 25px rgba(0,0,0,.25);\n    padding: 8px;\n    overflow: hidden;\n    width: min(85vw, 1200px) !important;\n    max-height: 88vh !important;\n    display: flex;align-items:center;justify-content:center;\n  }\n  .cc-size-img{\n    display:block;\n    max-width:100% !important;\n    max-height:84vh !important;\n    width:auto !important;height:auto !important;\n    object-fit:contain !important;border-radius:6px;\n  }\n\n  .cc-close{\n    position:absolute;top:10px;right:10px;\n    background:#fff;border:1px solid #ddd;border-radius:6px;\n    padding:6px 9px;cursor:pointer;font-size:16px;line-height:1;\n    box-shadow:0 2px 6px rgba(0,0,0,.08);\n  }\n  .cc-close:hover{background:#f3f3f3;}\n\n  @media (max-width: 768px){\n    .cc-size-box{ width:95vw !important; max-height:95vh !important; padding:4px !important; }\n    .cc-size-img{ max-height:92vh !important; width:100% !important; }\n    .cc-close{ top:6px; right:6px; }\n  }\n\u003c\/style\u003e\n\n\u003c!-- ===== SCRIPT ===== --\u003e\n\u003cscript\u003e\n(function(){\n  const btn   = document.querySelector('.cc-size-btn');\n  const modal = document.getElementById('cc-size-modal');\n  if(!btn || !modal) return;\n\n  const close  = modal.querySelector('.cc-close');\n  const box    = modal.querySelector('.cc-size-box');\n  const img    = document.getElementById('cc-size-img');\n  const loader = modal.querySelector('.cc-loader');\n\n  function lockScroll(lock){\n    const el = document.documentElement;\n    if(lock){\n      el.style.overflow = 'hidden';\n      el.style.paddingRight = (window.innerWidth - document.documentElement.clientWidth) + 'px';\n    }else{\n      el.style.overflow = '';\n      el.style.paddingRight = '';\n    }\n  }\n\n  function openModal(e){\n    e \u0026\u0026 e.preventDefault();\n    if(modal.showModal){ modal.showModal(); } else { modal.setAttribute('open',''); }\n    lockScroll(true);\n    if(img \u0026\u0026 img.complete \u0026\u0026 img.naturalWidth\u003e0){\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n    }\n  }\n\n  function closeModal(){\n    if(modal.close){ modal.close(); } else { modal.removeAttribute('open'); }\n    lockScroll(false);\n  }\n\n  btn.addEventListener('click', openModal, { passive:true });\n  close.addEventListener('click', closeModal);\n  modal.addEventListener('cancel', e =\u003e { e.preventDefault(); closeModal(); });\n\n  modal.addEventListener('click', e =\u003e {\n    if(!box.contains(e.target)) closeModal();\n  });\n\n  document.addEventListener('keydown', e =\u003e {\n    if(e.key === 'Escape' \u0026\u0026 modal.hasAttribute('open')) closeModal();\n  });\n\n  if(img){\n    img.addEventListener('load', () =\u003e {\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n    });\n    img.addEventListener('error', () =\u003e {\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n      box.innerHTML = '\u003cdiv style=\"padding:24px;text-align:center;color:#444\"\u003eNão foi possível carregar a imagem do guia de tamanhos.\u003c\/div\u003e';\n    });\n  }\n})();\n\u003c\/script\u003e\n","brand":"Castelli","offers":[{"title":"S\/M","offer_id":56456243446142,"sku":"4520575001 SM-1","price":69.9,"currency_code":"EUR","in_stock":false},{"title":"L\/XL","offer_id":56456243478910,"sku":"4520575001 LXL-1","price":69.9,"currency_code":"EUR","in_stock":false},{"title":"2XL","offer_id":56456243511678,"sku":"4520575001 2XL-1","price":69.9,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0946\/1832\/1278\/files\/167642939588-0.jpg?v=1761317980"},{"product_id":"cycling-base-layer-brand-castelli-pro-mesh-sleeveless-soudal-quick-step-2025","title":"CAMISOLA INTERIOR CASTELLI PRO MESH SOUDAL QUICK-STEP 2025","description":"\u003cdiv class=\"product-description\"\u003e\n  \u003ch2\u003eCASTELLI PRO MESH SLEEVELESS BASE LAYER – SOUDAL QUICK-STEP 2025\u003c\/h2\u003e\n\n  \u003cp\u003e\n    A \u003cstrong\u003eCastelli Pro Mesh Sleeveless Soudal Quick-Step 2025\u003c\/strong\u003e é a \u003cstrong\u003ecamada base vencedora do WorldTour\u003c\/strong\u003e,  \n    usada pelos ciclistas profissionais da \u003cstrong\u003eequipa Wolfpack\u003c\/strong\u003e.  \n    Concebida para oferecer \u003cstrong\u003egestão térmica e de humidade excecionais\u003c\/strong\u003e, mantém o corpo seco e confortável durante os esforços mais intensos,  \n    quer em dias quentes ou de meia-estação.\n  \u003c\/p\u003e\n\n  \u003cp\u003e\n    O seu \u003cstrong\u003etecido em malha 3D\u003c\/strong\u003e garante excelente ventilação e regulação da temperatura, enquanto a \u003cstrong\u003eestampa sublimada\u003c\/strong\u003e  \n    com o logótipo Wolfpack expressa o orgulho e a identidade da equipa — um detalhe que só quem faz parte do pelotão conhece.  \n    O corte sem mangas e a \u003cstrong\u003ecintura de perfil plano\u003c\/strong\u003e permitem um ajuste perfeito por baixo do jersey ou dos bibshorts,  \n    sem causar volume ou desconforto.\n  \u003c\/p\u003e\n\n  \u003ch3\u003eCaracterísticas\u003c\/h3\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n\u003cstrong\u003eTecido em malha 3D\u003c\/strong\u003e para excelente controlo da humidade.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eImpressão sublimada Wolfpack\u003c\/strong\u003e para um toque de identidade da equipa.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eBase layer de alto desempenho\u003c\/strong\u003e usada pelos ciclistas do WorldTour.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eBainha inferior plana\u003c\/strong\u003e que se mantém estável sob os calções.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003ePeso:\u003c\/strong\u003e 74 g\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eTemperatura ideal:\u003c\/strong\u003e 15–28 °C \/ 59–82 °F\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eFIT:\u003c\/strong\u003e Tailored\u003c\/li\u003e\n  \u003c\/ul\u003e\n\n  \u003ch3\u003eFeita para o Wolfpack\u003c\/h3\u003e\n  \u003cp\u003e\n    Criada para quem acredita no espírito \u003cstrong\u003e“The Wolfpack”\u003c\/strong\u003e, esta camada base combina \u003cstrong\u003etecnologia profissional\u003c\/strong\u003e  \n    com um design exclusivo que representa o ADN da \u003cstrong\u003eSoudal Quick-Step\u003c\/strong\u003e.  \n    Leve, respirável e elegante — a base perfeita para qualquer jersey Castelli.\n  \u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- ===== GUIA DE TAMANHOS CASTELLI ===== --\u003e\n\u003cdiv class=\"cc-size-highlight-full\"\u003e\n  \u003ch3\u003e📏 Encontra o Teu Tamanho Ideal\u003c\/h3\u003e\n  \u003cp\u003e\n    Para garantir o melhor ajuste e conforto, mede o perímetro do teu \n    \u003cstrong\u003epeito (A)\u003c\/strong\u003e e da tua \u003cstrong\u003ecintura (B)\u003c\/strong\u003e em centímetros e compara \n    com o guia de tamanhos Castelli abaixo.\n  \u003c\/p\u003e\n\n  \u003cul\u003e\n    \u003cli\u003eMede o \u003cstrong\u003epeito (A)\u003c\/strong\u003e na parte mais larga do tórax, mantendo a fita horizontal e sem apertar.\u003c\/li\u003e\n    \u003cli\u003eMede a \u003cstrong\u003ecintura (B)\u003c\/strong\u003e na zona mais estreita do tronco.\u003c\/li\u003e\n    \u003cli\u003eUsa uma fita métrica flexível, mantendo uma posição natural e relaxada.\u003c\/li\u003e\n    \u003cli\u003eCompara as medidas com a tabela e, se estiveres entre dois tamanhos, considera escolher \n        \u003cstrong\u003eum tamanho acima\u003c\/strong\u003e, conforme a recomendação da Castelli para maior conforto.\u003c\/li\u003e\n  \u003c\/ul\u003e\n\n  \u003cbutton class=\"cc-size-btn\" type=\"button\" aria-haspopup=\"dialog\" aria-controls=\"cc-size-modal\"\u003e\n    Calcule o seu tamanho\n  \u003c\/button\u003e\n\u003c\/div\u003e\n\n\u003c!-- ===== MODAL ===== --\u003e\n\u003cdialog id=\"cc-size-modal\" class=\"cc-size-modal\" aria-label=\"Guia de tamanhos\"\u003e\n  \u003cbutton class=\"cc-close\" aria-label=\"Fechar\"\u003e✕\u003c\/button\u003e\n  \u003cdiv class=\"cc-loader\" aria-hidden=\"true\"\u003e\u003c\/div\u003e\n  \u003cdiv class=\"cc-size-box\" hidden\u003e\n    \u003cimg id=\"cc-size-img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0946\/1832\/1278\/files\/Size_Chart_Castelli_Men_2.0.png?v=1761056363\" alt=\"Guia de tamanhos Castelli\" loading=\"eager\" decoding=\"sync\"\u003e\n  \u003c\/div\u003e\n\u003c\/dialog\u003e\n\n\u003c!-- ===== STYLE ===== --\u003e\n\u003cstyle\u003e\n  .product-description {\n    font-family: Arial, Helvetica, sans-serif;\n    color: #222;\n    line-height: 1.6;\n    font-size: 15px;\n  }\n  .product-description h2 {\n    font-size: 22px;\n    text-transform: uppercase;\n    letter-spacing: .5px;\n    color: #111;\n    margin-bottom: 10px;\n  }\n\n  \/* Caixa do guia *\/\n  .cc-size-highlight-full{\n    background:#f9f9f9;border:1px solid #e2e2e2;border-radius:10px;\n    padding:20px 24px;margin-top:20px;\n    font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;\n    box-shadow:0 2px 8px rgba(0,0,0,0.04);\n  }\n  .cc-size-highlight-full h3{font-size:18px;margin:0 0 10px;color:#111;}\n  .cc-size-highlight-full p{font-size:15px;margin:0 0 10px;color:#333;}\n  .cc-size-highlight-full ul{margin:0 0 15px 20px;padding:0;}\n  .cc-size-highlight-full li{margin-bottom:5px;font-size:15px;color:#333;}\n\n  \/* Botão *\/\n  .cc-size-btn{\n    display:inline-flex;align-items:center;gap:.5rem;\n    background:#000;color:#fff;border:none;border-radius:6px;\n    padding:10px 16px;font-size:14px;font-weight:500;cursor:pointer;\n    transition:transform .2s ease-in-out, background .2s ease-in-out;\n  }\n  .cc-size-btn:hover{background:#222;transform:translateY(-1px);}\n\n  \/* ===== MODAL: reset do tema + centrado real ===== *\/\n  .cc-size-modal{\n    position: fixed !important;\n    inset: 0 !important;\n    background: transparent !important;\n    border: 0 !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    max-width: none !important;\n    width: 100vw !important;\n    height: 100vh !important;\n    display: none;\n    align-items: center !important;\n    justify-content: center !important;\n    z-index: 99999 !important;\n  }\n  .cc-size-modal[open]{ display:flex; }\n  .cc-size-modal::backdrop{ background: rgba(0,0,0,.6) !important; }\n\n  .cc-size-box{\n    position: relative;\n    box-sizing: border-box;\n    background: #fff;\n    border: 1px solid #e9e9e9;\n    border-radius: 10px;\n    box-shadow: 0 10px 25px rgba(0,0,0,.25);\n    padding: 8px;\n    overflow: hidden;\n    width: min(85vw, 1200px) !important;\n    max-height: 88vh !important;\n    display: flex;align-items:center;justify-content:center;\n  }\n  .cc-size-img{\n    display:block;\n    max-width:100% !important;\n    max-height:84vh !important;\n    width:auto !important;height:auto !important;\n    object-fit:contain !important;border-radius:6px;\n  }\n\n  .cc-close{\n    position:absolute;top:10px;right:10px;\n    background:#fff;border:1px solid #ddd;border-radius:6px;\n    padding:6px 9px;cursor:pointer;font-size:16px;line-height:1;\n    box-shadow:0 2px 6px rgba(0,0,0,.08);\n  }\n  .cc-close:hover{background:#f3f3f3;}\n\n  @media (max-width: 768px){\n    .cc-size-box{ width:95vw !important; max-height:95vh !important; padding:4px !important; }\n    .cc-size-img{ max-height:92vh !important; width:100% !important; }\n    .cc-close{ top:6px; right:6px; }\n  }\n\u003c\/style\u003e\n\n\u003c!-- ===== SCRIPT ===== --\u003e\n\u003cscript\u003e\n(function(){\n  const btn   = document.querySelector('.cc-size-btn');\n  const modal = document.getElementById('cc-size-modal');\n  if(!btn || !modal) return;\n\n  const close  = modal.querySelector('.cc-close');\n  const box    = modal.querySelector('.cc-size-box');\n  const img    = document.getElementById('cc-size-img');\n  const loader = modal.querySelector('.cc-loader');\n\n  function lockScroll(lock){\n    const el = document.documentElement;\n    if(lock){\n      el.style.overflow = 'hidden';\n      el.style.paddingRight = (window.innerWidth - document.documentElement.clientWidth) + 'px';\n    }else{\n      el.style.overflow = '';\n      el.style.paddingRight = '';\n    }\n  }\n\n  function openModal(e){\n    e \u0026\u0026 e.preventDefault();\n    if(modal.showModal){ modal.showModal(); } else { modal.setAttribute('open',''); }\n    lockScroll(true);\n    if(img \u0026\u0026 img.complete \u0026\u0026 img.naturalWidth\u003e0){\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n    }\n  }\n\n  function closeModal(){\n    if(modal.close){ modal.close(); } else { modal.removeAttribute('open'); }\n    lockScroll(false);\n  }\n\n  btn.addEventListener('click', openModal, { passive:true });\n  close.addEventListener('click', closeModal);\n  modal.addEventListener('cancel', e =\u003e { e.preventDefault(); closeModal(); });\n\n  modal.addEventListener('click', e =\u003e {\n    if(!box.contains(e.target)) closeModal();\n  });\n\n  document.addEventListener('keydown', e =\u003e {\n    if(e.key === 'Escape' \u0026\u0026 modal.hasAttribute('open')) closeModal();\n  });\n\n  if(img){\n    img.addEventListener('load', () =\u003e {\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n    });\n    img.addEventListener('error', () =\u003e {\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n      box.innerHTML = '\u003cdiv style=\"padding:24px;text-align:center;color:#444\"\u003eNão foi possível carregar a imagem do guia de tamanhos.\u003c\/div\u003e';\n    });\n  }\n})();\n\u003c\/script\u003e\n","brand":"Castelli","offers":[{"title":"S","offer_id":56456247214462,"sku":"4232096104 S-1","price":49.9,"currency_code":"EUR","in_stock":false},{"title":"M","offer_id":56456247247230,"sku":"4232096104 M-1","price":49.9,"currency_code":"EUR","in_stock":false},{"title":"L","offer_id":56456247279998,"sku":"4232096104 L-1","price":49.9,"currency_code":"EUR","in_stock":false},{"title":"XL","offer_id":56456247312766,"sku":"4232096104 XL-1","price":49.9,"currency_code":"EUR","in_stock":false},{"title":"2XL","offer_id":56456247345534,"sku":"4232096104 2XL-1","price":49.9,"currency_code":"EUR","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0946\/1832\/1278\/files\/167350183555-0.jpg?v=1761318022"},{"product_id":"castelli-pro-mesh-sleeveless-quick-step-2024-the-professional-undergarment","title":"CAMISOLA INTERIOR CASTELLI PRO MESH SOUDAL QUICK-STEP 2024","description":"\u003cdiv class=\"product-description\"\u003e\n  \u003ch2\u003eCASTELLI PRO MESH SLEEVELESS – SOUDAL QUICK-STEP 2024 BELGIAN BLUE\u003c\/h2\u003e\n\n  \u003cp\u003e\n    A \u003cstrong\u003eCastelli Pro Mesh Sleeveless Quick-Step 2024\u003c\/strong\u003e é uma \u003cstrong\u003ecamisola interior profissional\u003c\/strong\u003e desenhada para ciclistas que exigem desempenho e conforto em todas as condições.  \n    Utilizada pelos atletas da \u003cstrong\u003eequipa Soudal Quick-Step\u003c\/strong\u003e, esta peça oferece gestão de humidade excecional e leveza extrema — ideal tanto para dias quentes como frios.\n  \u003c\/p\u003e\n\n  \u003cp\u003e\n    O \u003cstrong\u003etecido em malha 3D\u003c\/strong\u003e assegura uma \u003cstrong\u003etransferência eficaz da transpiração\u003c\/strong\u003e, mantendo o corpo seco e regulando a temperatura corporal durante o esforço.  \n    O corte sem mangas e a construção plana na cintura garantem um ajuste perfeito, sem criar volume debaixo do jersey ou dos bibshorts.  \n    A \u003cstrong\u003eestampa sublimada\u003c\/strong\u003e confere um toque distinto e moderno, permitindo mostrar o estilo Quick-Step quando o jersey está aberto.\n  \u003c\/p\u003e\n\n  \u003cp\u003e\n    Leve, funcional e projetada com a experiência dos profissionais, a Pro Mesh é a base perfeita para qualquer saída em estrada — seja em dias quentes de verão ou sob uma camada térmica no inverno.\n  \u003c\/p\u003e\n\n  \u003ch3\u003eCaracterísticas\u003c\/h3\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n\u003cstrong\u003eTecido em malha 3D\u003c\/strong\u003e para excelente controlo da humidade.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eGestão térmica eficiente\u003c\/strong\u003e em condições quentes ou frias.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eConstrução plana na cintura\u003c\/strong\u003e que evita desconforto dentro dos calções.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eEstampa sublimada exclusiva\u003c\/strong\u003e inspirada na equipa Soudal Quick-Step 2024.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eIdeal como camada base\u003c\/strong\u003e sob jerseys ou casacos térmicos.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003ePeso:\u003c\/strong\u003e 46 g\u003c\/li\u003e\n  \u003c\/ul\u003e\n\n  \u003ch3\u003eDesempenho Profissional\u003c\/h3\u003e\n  \u003cp\u003e\n    A \u003cstrong\u003ePro Mesh Sleeveless Quick-Step 2024 Belgian Blue\u003c\/strong\u003e foi criada com o conhecimento dos ciclistas profissionais  \n    para oferecer \u003cstrong\u003erespirabilidade, leveza e eficiência térmica\u003c\/strong\u003e em qualquer condição.  \n    Uma peça essencial para quem leva o ciclismo tão a sério quanto o \u003cstrong\u003eWolfpack\u003c\/strong\u003e.\n  \u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- ===== GUIA DE TAMANHOS CASTELLI ===== --\u003e\n\u003cdiv class=\"cc-size-highlight-full\"\u003e\n  \u003ch3\u003e📏 Encontra o Teu Tamanho Ideal\u003c\/h3\u003e\n  \u003cp\u003e\n    Para garantir o melhor ajuste e conforto, mede o perímetro do teu \n    \u003cstrong\u003epeito (A)\u003c\/strong\u003e e da tua \u003cstrong\u003ecintura (B)\u003c\/strong\u003e em centímetros e compara \n    com o guia de tamanhos Castelli abaixo.\n  \u003c\/p\u003e\n\n  \u003cul\u003e\n    \u003cli\u003eMede o \u003cstrong\u003epeito (A)\u003c\/strong\u003e na parte mais larga do tórax, mantendo a fita horizontal e sem apertar.\u003c\/li\u003e\n    \u003cli\u003eMede a \u003cstrong\u003ecintura (B)\u003c\/strong\u003e na zona mais estreita do tronco.\u003c\/li\u003e\n    \u003cli\u003eUsa uma fita métrica flexível, mantendo uma posição natural e relaxada.\u003c\/li\u003e\n    \u003cli\u003eCompara as medidas com a tabela e, se estiveres entre dois tamanhos, considera escolher \n        \u003cstrong\u003eum tamanho acima\u003c\/strong\u003e, conforme a recomendação da Castelli para maior conforto.\u003c\/li\u003e\n  \u003c\/ul\u003e\n\n  \u003cbutton class=\"cc-size-btn\" type=\"button\" aria-haspopup=\"dialog\" aria-controls=\"cc-size-modal\"\u003e\n    Calcule o seu tamanho\n  \u003c\/button\u003e\n\u003c\/div\u003e\n\n\u003c!-- ===== MODAL ===== --\u003e\n\u003cdialog id=\"cc-size-modal\" class=\"cc-size-modal\" aria-label=\"Guia de tamanhos\"\u003e\n  \u003cbutton class=\"cc-close\" aria-label=\"Fechar\"\u003e✕\u003c\/button\u003e\n  \u003cdiv class=\"cc-loader\" aria-hidden=\"true\"\u003e\u003c\/div\u003e\n  \u003cdiv class=\"cc-size-box\" hidden\u003e\n    \u003cimg id=\"cc-size-img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0946\/1832\/1278\/files\/Size_Chart_Castelli_Men_2.0.png?v=1761056363\" alt=\"Guia de tamanhos Castelli\" loading=\"eager\" decoding=\"sync\"\u003e\n  \u003c\/div\u003e\n\u003c\/dialog\u003e\n\n\u003c!-- ===== STYLE ===== --\u003e\n\u003cstyle\u003e\n  .product-description {\n    font-family: Arial, Helvetica, sans-serif;\n    color: #222;\n    line-height: 1.6;\n    font-size: 15px;\n  }\n  .product-description h2 {\n    font-size: 22px;\n    text-transform: uppercase;\n    letter-spacing: .5px;\n    color: #111;\n    margin-bottom: 10px;\n  }\n\n  \/* Caixa do guia *\/\n  .cc-size-highlight-full{\n    background:#f9f9f9;border:1px solid #e2e2e2;border-radius:10px;\n    padding:20px 24px;margin-top:20px;\n    font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;\n    box-shadow:0 2px 8px rgba(0,0,0,0.04);\n  }\n  .cc-size-highlight-full h3{font-size:18px;margin:0 0 10px;color:#111;}\n  .cc-size-highlight-full p{font-size:15px;margin:0 0 10px;color:#333;}\n  .cc-size-highlight-full ul{margin:0 0 15px 20px;padding:0;}\n  .cc-size-highlight-full li{margin-bottom:5px;font-size:15px;color:#333;}\n\n  \/* Botão *\/\n  .cc-size-btn{\n    display:inline-flex;align-items:center;gap:.5rem;\n    background:#000;color:#fff;border:none;border-radius:6px;\n    padding:10px 16px;font-size:14px;font-weight:500;cursor:pointer;\n    transition:transform .2s ease-in-out, background .2s ease-in-out;\n  }\n  .cc-size-btn:hover{background:#222;transform:translateY(-1px);}\n\n  \/* ===== MODAL: reset do tema + centrado real ===== *\/\n  .cc-size-modal{\n    position: fixed !important;\n    inset: 0 !important;\n    background: transparent !important;\n    border: 0 !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    max-width: none !important;\n    width: 100vw !important;\n    height: 100vh !important;\n    display: none;\n    align-items: center !important;\n    justify-content: center !important;\n    z-index: 99999 !important;\n  }\n  .cc-size-modal[open]{ display:flex; }\n  .cc-size-modal::backdrop{ background: rgba(0,0,0,.6) !important; }\n\n  .cc-size-box{\n    position: relative;\n    box-sizing: border-box;\n    background: #fff;\n    border: 1px solid #e9e9e9;\n    border-radius: 10px;\n    box-shadow: 0 10px 25px rgba(0,0,0,.25);\n    padding: 8px;\n    overflow: hidden;\n    width: min(85vw, 1200px) !important;\n    max-height: 88vh !important;\n    display: flex;align-items:center;justify-content:center;\n  }\n  .cc-size-img{\n    display:block;\n    max-width:100% !important;\n    max-height:84vh !important;\n    width:auto !important;height:auto !important;\n    object-fit:contain !important;border-radius:6px;\n  }\n\n  .cc-close{\n    position:absolute;top:10px;right:10px;\n    background:#fff;border:1px solid #ddd;border-radius:6px;\n    padding:6px 9px;cursor:pointer;font-size:16px;line-height:1;\n    box-shadow:0 2px 6px rgba(0,0,0,.08);\n  }\n  .cc-close:hover{background:#f3f3f3;}\n\n  @media (max-width: 768px){\n    .cc-size-box{ width:95vw !important; max-height:95vh !important; padding:4px !important; }\n    .cc-size-img{ max-height:92vh !important; width:100% !important; }\n    .cc-close{ top:6px; right:6px; }\n  }\n\u003c\/style\u003e\n\n\u003c!-- ===== SCRIPT ===== --\u003e\n\u003cscript\u003e\n(function(){\n  const btn   = document.querySelector('.cc-size-btn');\n  const modal = document.getElementById('cc-size-modal');\n  if(!btn || !modal) return;\n\n  const close  = modal.querySelector('.cc-close');\n  const box    = modal.querySelector('.cc-size-box');\n  const img    = document.getElementById('cc-size-img');\n  const loader = modal.querySelector('.cc-loader');\n\n  function lockScroll(lock){\n    const el = document.documentElement;\n    if(lock){\n      el.style.overflow = 'hidden';\n      el.style.paddingRight = (window.innerWidth - document.documentElement.clientWidth) + 'px';\n    }else{\n      el.style.overflow = '';\n      el.style.paddingRight = '';\n    }\n  }\n\n  function openModal(e){\n    e \u0026\u0026 e.preventDefault();\n    if(modal.showModal){ modal.showModal(); } else { modal.setAttribute('open',''); }\n    lockScroll(true);\n    if(img \u0026\u0026 img.complete \u0026\u0026 img.naturalWidth\u003e0){\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n    }\n  }\n\n  function closeModal(){\n    if(modal.close){ modal.close(); } else { modal.removeAttribute('open'); }\n    lockScroll(false);\n  }\n\n  btn.addEventListener('click', openModal, { passive:true });\n  close.addEventListener('click', closeModal);\n  modal.addEventListener('cancel', e =\u003e { e.preventDefault(); closeModal(); });\n\n  modal.addEventListener('click', e =\u003e {\n    if(!box.contains(e.target)) closeModal();\n  });\n\n  document.addEventListener('keydown', e =\u003e {\n    if(e.key === 'Escape' \u0026\u0026 modal.hasAttribute('open')) closeModal();\n  });\n\n  if(img){\n    img.addEventListener('load', () =\u003e {\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n    });\n    img.addEventListener('error', () =\u003e {\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n      box.innerHTML = '\u003cdiv style=\"padding:24px;text-align:center;color:#444\"\u003eNão foi possível carregar a imagem do guia de tamanhos.\u003c\/div\u003e';\n    });\n  }\n})();\n\u003c\/script\u003e\n","brand":"Castelli","offers":[{"title":"S","offer_id":56456251179390,"sku":"4232096424 S","price":49.9,"currency_code":"EUR","in_stock":false},{"title":"M","offer_id":56456251212158,"sku":"4232096424 M","price":49.9,"currency_code":"EUR","in_stock":false},{"title":"L","offer_id":56456251244926,"sku":"4232096424 L","price":49.9,"currency_code":"EUR","in_stock":false},{"title":"XL","offer_id":56456251277694,"sku":"4232096424 XL","price":49.9,"currency_code":"EUR","in_stock":false},{"title":"2XL","offer_id":56456251310462,"sku":"4232096424 2XL","price":49.9,"currency_code":"EUR","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0946\/1832\/1278\/files\/167643043570-0.jpg?v=1761318040"},{"product_id":"castelli-flanders-2-ls-cycling-base-layer-thermal-lightweight-breathable","title":"CAMISOLA INTERIOR CASTELLI FLANDERS 2 PRETO","description":"\u003cdiv class=\"product-description\"\u003e\n  \u003ch2\u003eCASTELLI FLANDERS 2 LONG SLEEVE CYCLING BASE LAYER\u003c\/h2\u003e\n\n  \u003cp\u003e\n    A \u003cstrong\u003eCastelli Flanders 2 Long Sleeve Base Layer\u003c\/strong\u003e é a camada base mais quente da Castelli,  \n    desenhada para enfrentar as condições mais frias do inverno.  \n    O tecido \u003cstrong\u003eSottoZero Fleece\u003c\/strong\u003e de poliéster 100% proporciona um excelente isolamento térmico,  \n    mantendo o corpo seco e confortável mesmo em temperaturas negativas.\n  \u003c\/p\u003e\n\n  \u003cp\u003e\n    Com uma \u003cstrong\u003egola de altura média\u003c\/strong\u003e que ajuda a proteger o pescoço do frio e um ajuste ergonómico,  \n    esta peça adapta-se perfeitamente sob qualquer jersey ou casaco.  \n    As \u003cstrong\u003ecosturas planas Merrow\u003c\/strong\u003e reduzem o atrito e aumentam o conforto,  \n    enquanto as \u003cstrong\u003einserções em malha nas axilas\u003c\/strong\u003e garantem ventilação e gestão ideal da humidade durante o esforço.\n  \u003c\/p\u003e\n\n  \u003cp\u003e\n    Ideal para ciclistas que não abdicam de pedalar em dias frios, a Flanders 2 é sinónimo de  \n    \u003cstrong\u003eaquecimento, conforto e performance\u003c\/strong\u003e em qualquer saída de inverno.\n  \u003c\/p\u003e\n\n  \u003ch3\u003eCaracterísticas\u003c\/h3\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n\u003cstrong\u003eTecido SottoZero Fleece\u003c\/strong\u003e 100% poliéster para isolamento térmico e gestão de humidade.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eGola de altura média\u003c\/strong\u003e para proteção adicional contra o frio.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eCosturas planas Merrow\u003c\/strong\u003e para maior conforto e durabilidade.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003ePainéis em malha nas axilas\u003c\/strong\u003e para ventilação e controlo da temperatura.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003ePeso:\u003c\/strong\u003e 181 g\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eTemperatura ideal:\u003c\/strong\u003e -2–10 °C \/ 28–50 °F\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eFIT:\u003c\/strong\u003e Regular\u003c\/li\u003e\n  \u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c!-- ===== GUIA DE TAMANHOS CASTELLI ===== --\u003e\n\u003cdiv class=\"cc-size-highlight-full\"\u003e\n  \u003ch3\u003e📏 Encontra o Teu Tamanho Ideal\u003c\/h3\u003e\n  \u003cp\u003e\n    Para garantir o melhor ajuste e conforto, mede o perímetro do teu \n    \u003cstrong\u003epeito (A)\u003c\/strong\u003e e da tua \u003cstrong\u003ecintura (B)\u003c\/strong\u003e em centímetros e compara \n    com o guia de tamanhos Castelli abaixo.\n  \u003c\/p\u003e\n\n  \u003cul\u003e\n    \u003cli\u003eMede o \u003cstrong\u003epeito (A)\u003c\/strong\u003e na parte mais larga do tórax, mantendo a fita horizontal e sem apertar.\u003c\/li\u003e\n    \u003cli\u003eMede a \u003cstrong\u003ecintura (B)\u003c\/strong\u003e na zona mais estreita do tronco.\u003c\/li\u003e\n    \u003cli\u003eUsa uma fita métrica flexível, mantendo uma posição natural e relaxada.\u003c\/li\u003e\n    \u003cli\u003eCompara as medidas com a tabela e, se estiveres entre dois tamanhos, considera escolher \n        \u003cstrong\u003eum tamanho acima\u003c\/strong\u003e, conforme a recomendação da Castelli para maior conforto.\u003c\/li\u003e\n  \u003c\/ul\u003e\n\n  \u003cbutton class=\"cc-size-btn\" type=\"button\" aria-haspopup=\"dialog\" aria-controls=\"cc-size-modal\"\u003e\n    Calcule o seu tamanho\n  \u003c\/button\u003e\n\u003c\/div\u003e\n\n\u003c!-- ===== MODAL ===== --\u003e\n\u003cdialog id=\"cc-size-modal\" class=\"cc-size-modal\" aria-label=\"Guia de tamanhos\"\u003e\n  \u003cbutton class=\"cc-close\" aria-label=\"Fechar\"\u003e✕\u003c\/button\u003e\n  \u003cdiv class=\"cc-loader\" aria-hidden=\"true\"\u003e\u003c\/div\u003e\n  \u003cdiv class=\"cc-size-box\" hidden\u003e\n    \u003cimg id=\"cc-size-img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0946\/1832\/1278\/files\/Size_Chart_Castelli_Men_2.0.png?v=1761056363\" alt=\"Guia de tamanhos Castelli\" loading=\"eager\" decoding=\"sync\"\u003e\n  \u003c\/div\u003e\n\u003c\/dialog\u003e\n\n\u003c!-- ===== STYLE ===== --\u003e\n\u003cstyle\u003e\n  .product-description {\n    font-family: Arial, Helvetica, sans-serif;\n    color: #222;\n    line-height: 1.6;\n    font-size: 15px;\n  }\n  .product-description h2 {\n    font-size: 22px;\n    text-transform: uppercase;\n    letter-spacing: .5px;\n    color: #111;\n    margin-bottom: 10px;\n  }\n\n  \/* Caixa do guia *\/\n  .cc-size-highlight-full{\n    background:#f9f9f9;border:1px solid #e2e2e2;border-radius:10px;\n    padding:20px 24px;margin-top:20px;\n    font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;\n    box-shadow:0 2px 8px rgba(0,0,0,0.04);\n  }\n  .cc-size-highlight-full h3{font-size:18px;margin:0 0 10px;color:#111;}\n  .cc-size-highlight-full p{font-size:15px;margin:0 0 10px;color:#333;}\n  .cc-size-highlight-full ul{margin:0 0 15px 20px;padding:0;}\n  .cc-size-highlight-full li{margin-bottom:5px;font-size:15px;color:#333;}\n\n  \/* Botão *\/\n  .cc-size-btn{\n    display:inline-flex;align-items:center;gap:.5rem;\n    background:#000;color:#fff;border:none;border-radius:6px;\n    padding:10px 16px;font-size:14px;font-weight:500;cursor:pointer;\n    transition:transform .2s ease-in-out, background .2s ease-in-out;\n  }\n  .cc-size-btn:hover{background:#222;transform:translateY(-1px);}\n\n  \/* ===== MODAL: reset do tema + centrado real ===== *\/\n  .cc-size-modal{\n    position: fixed !important;\n    inset: 0 !important;\n    background: transparent !important;\n    border: 0 !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    max-width: none !important;\n    width: 100vw !important;\n    height: 100vh !important;\n    display: none;\n    align-items: center !important;\n    justify-content: center !important;\n    z-index: 99999 !important;\n  }\n  .cc-size-modal[open]{ display:flex; }\n  .cc-size-modal::backdrop{ background: rgba(0,0,0,.6) !important; }\n\n  .cc-size-box{\n    position: relative;\n    box-sizing: border-box;\n    background: #fff;\n    border: 1px solid #e9e9e9;\n    border-radius: 10px;\n    box-shadow: 0 10px 25px rgba(0,0,0,.25);\n    padding: 8px;\n    overflow: hidden;\n    width: min(85vw, 1200px) !important;\n    max-height: 88vh !important;\n    display: flex;align-items:center;justify-content:center;\n  }\n  .cc-size-img{\n    display:block;\n    max-width:100% !important;\n    max-height:84vh !important;\n    width:auto !important;height:auto !important;\n    object-fit:contain !important;border-radius:6px;\n  }\n\n  .cc-close{\n    position:absolute;top:10px;right:10px;\n    background:#fff;border:1px solid #ddd;border-radius:6px;\n    padding:6px 9px;cursor:pointer;font-size:16px;line-height:1;\n    box-shadow:0 2px 6px rgba(0,0,0,.08);\n  }\n  .cc-close:hover{background:#f3f3f3;}\n\n  @media (max-width: 768px){\n    .cc-size-box{ width:95vw !important; max-height:95vh !important; padding:4px !important; }\n    .cc-size-img{ max-height:92vh !important; width:100% !important; }\n    .cc-close{ top:6px; right:6px; }\n  }\n\u003c\/style\u003e\n\n\u003c!-- ===== SCRIPT ===== --\u003e\n\u003cscript\u003e\n(function(){\n  const btn   = document.querySelector('.cc-size-btn');\n  const modal = document.getElementById('cc-size-modal');\n  if(!btn || !modal) return;\n\n  const close  = modal.querySelector('.cc-close');\n  const box    = modal.querySelector('.cc-size-box');\n  const img    = document.getElementById('cc-size-img');\n  const loader = modal.querySelector('.cc-loader');\n\n  function lockScroll(lock){\n    const el = document.documentElement;\n    if(lock){\n      el.style.overflow = 'hidden';\n      el.style.paddingRight = (window.innerWidth - document.documentElement.clientWidth) + 'px';\n    }else{\n      el.style.overflow = '';\n      el.style.paddingRight = '';\n    }\n  }\n\n  function openModal(e){\n    e \u0026\u0026 e.preventDefault();\n    if(modal.showModal){ modal.showModal(); } else { modal.setAttribute('open',''); }\n    lockScroll(true);\n    if(img \u0026\u0026 img.complete \u0026\u0026 img.naturalWidth\u003e0){\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n    }\n  }\n\n  function closeModal(){\n    if(modal.close){ modal.close(); } else { modal.removeAttribute('open'); }\n    lockScroll(false);\n  }\n\n  btn.addEventListener('click', openModal, { passive:true });\n  close.addEventListener('click', closeModal);\n  modal.addEventListener('cancel', e =\u003e { e.preventDefault(); closeModal(); });\n\n  modal.addEventListener('click', e =\u003e {\n    if(!box.contains(e.target)) closeModal();\n  });\n\n  document.addEventListener('keydown', e =\u003e {\n    if(e.key === 'Escape' \u0026\u0026 modal.hasAttribute('open')) closeModal();\n  });\n\n  if(img){\n    img.addEventListener('load', () =\u003e {\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n    });\n    img.addEventListener('error', () =\u003e {\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n      box.innerHTML = '\u003cdiv style=\"padding:24px;text-align:center;color:#444\"\u003eNão foi possível carregar a imagem do guia de tamanhos.\u003c\/div\u003e';\n    });\n  }\n})();\n\u003c\/script\u003e\n","brand":"Castelli","offers":[{"title":"XS","offer_id":56456257503614,"sku":"4525525010 XS","price":79.9,"currency_code":"EUR","in_stock":false},{"title":"S","offer_id":56456257536382,"sku":"4525525010 S","price":79.9,"currency_code":"EUR","in_stock":true},{"title":"M","offer_id":56456257569150,"sku":"4525525010 M","price":79.9,"currency_code":"EUR","in_stock":true},{"title":"L","offer_id":56456257601918,"sku":"4525525010 L","price":79.9,"currency_code":"EUR","in_stock":true},{"title":"XL","offer_id":56456257634686,"sku":"4525525010 XL","price":79.9,"currency_code":"EUR","in_stock":true},{"title":"2XL","offer_id":56456257667454,"sku":"4525525010 2XL","price":79.9,"currency_code":"EUR","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0946\/1832\/1278\/files\/167819878282-0.jpg?v=1761318090"},{"product_id":"castelli-flanders-2-w-warm-women-s-cycling-base-layer-thermal-fleece-winter","title":"CAMISOLA INTERIOR MULHER CASTELLI FLANDERS 2 W PRETO","description":"\u003cdiv class=\"cc-simple\"\u003e\n\u003ch2\u003eCASTELLI FLANDERS 2 W\u003c\/h2\u003e\n\u003cp\u003e\u003cstrong\u003eQuente, seca e incrivelmente suave: a camada base definitiva para enfrentar o inverno mais rigoroso.\u003c\/strong\u003e\u003cbr\u003eA Flanders 2 W Warm foi desenhada para as condições extremas das clássicas belgas. Este é o tipo de peça que sentes aquecer mal a vestes, graças ao seu interior em fleece de alto volume. Se procuras a melhor proteção para pedalar entre setembro e maio, esta camada base oferece o equilíbrio perfeito entre isolamento térmico e gestão de humidade.\u003c\/p\u003e\n\u003ch3\u003eTecnologia SottoZero para Frio Extremo\u003c\/h3\u003e\n\u003cp\u003eUtilizando o tecido multi-denier SottoZero, a Castelli criou uma peça que retém o calor corporal enquanto permite que a pele respire através de inserções em malha estratégica nas axilas. As costuras planas garantem que não existe fricção com as camadas superiores, enquanto o seu ajuste elástico e bainha plana asseguram que a peça se mantém no lugar sem criar volume indesejado sob os teus calções ou jersey.\u003c\/p\u003e\n\u003ch3\u003eEspecificações Técnicas\u003c\/h3\u003e\n\u003cul class=\"cc-list\"\u003e\n\u003cli\u003e\n\u003cstrong\u003eTecido SottoZero Fleece:\u003c\/strong\u003e Máximo isolamento térmico e suavidade\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eGestão de Humidade:\u003c\/strong\u003e Fibras multi-denier para secagem rápida\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eConforto:\u003c\/strong\u003e Costuras Flat-lock (planas) que eliminam a irritação\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRespirabilidade:\u003c\/strong\u003e Painéis de malha nas axilas para controlo de temperatura\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAjuste:\u003c\/strong\u003e Bainha plana para integração perfeita com calças térmicas\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePerformance Térmica:\u003c\/strong\u003e Ideal para temperaturas negativas (-2°C a 10°C)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCorte:\u003c\/strong\u003e Tailored Fit (Ajuste anatómico feminino)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp style=\"font-size: 13px; color: #555; margin-top: 10px;\"\u003eA base indispensável para qualquer ciclista que não deixa que o frio a impeça de sair para a estrada.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n  .cc-simple {\n    font-family: system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif;\n    color: #111;\n    line-height: 1.6;\n  }\n  .cc-simple h2 {\n    font-size: 1.5rem;\n    font-weight: 700;\n    letter-spacing: .5px;\n    margin-bottom: .75rem;\n    text-transform: uppercase;\n  }\n  .cc-simple h3 {\n    font-size: 1.1rem;\n    margin: 1.1rem 0 .5rem;\n    font-weight: 600;\n  }\n  .cc-simple p {\n    margin: .25rem 0 .75rem;\n  }\n  .cc-list {\n    margin: .5rem 0 1rem 1.25rem;\n  }\n  .cc-list li {\n    margin: .25rem 0;\n  }\n\u003c\/style\u003e","brand":"Castelli","offers":[{"title":"XS","offer_id":56456263696766,"sku":"4519547010 XS","price":49.9,"currency_code":"EUR","in_stock":false},{"title":"S","offer_id":56456263729534,"sku":"4519547010 S","price":49.9,"currency_code":"EUR","in_stock":false},{"title":"M","offer_id":56456263762302,"sku":"4519547010 M","price":49.9,"currency_code":"EUR","in_stock":false},{"title":"L","offer_id":56456263795070,"sku":"4519547010 L","price":49.9,"currency_code":"EUR","in_stock":false},{"title":"XL","offer_id":56456263827838,"sku":"4519547010 XL","price":49.9,"currency_code":"EUR","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0946\/1832\/1278\/files\/167819958222-0.jpg?v=1761318153"},{"product_id":"castelli-flanders-warm-ls-cycling-base-layer-thermal-comfortable-breathable","title":"CAMISOLA INTERIOR CASTELLI FLANDERS CINZA","description":"\u003cdiv class=\"product-description\"\u003e   \u003ch2\u003eCASTELLI FLANDERS WARM LS CYCLING BASE LAYER\u003c\/h2\u003e   \u003cp\u003e     A \u003cstrong\u003eFlanders Warm LS Base Layer\u003c\/strong\u003e é a camada base ideal para pedalar em \u003cstrong\u003etemperaturas frias\u003c\/strong\u003e.      Mantém-te \u003cstrong\u003equente, seco e confortável\u003c\/strong\u003e mesmo nos dias mais duros do inverno,      oferecendo isolamento térmico e excelente gestão da humidade.   \u003c\/p\u003e   \u003cp\u003e     Produzida em tecido \u003cstrong\u003eSottoZero Fleece\u003c\/strong\u003e 100% poliéster de \u003cstrong\u003efios multi-denier\u003c\/strong\u003e,      garante calor e respirabilidade superiores. As \u003cstrong\u003ecosturas planas (flat-lock)\u003c\/strong\u003e      eliminam atritos e asseguram conforto próximo da pele, enquanto os      \u003cstrong\u003epainéis em malha sob as axilas\u003c\/strong\u003e melhoram a ventilação e a regulação térmica.   \u003c\/p\u003e   \u003cp\u003e     A \u003cstrong\u003ebainha inferior plana\u003c\/strong\u003e encaixa facilmente dentro dos bibtights ou calças,      proporcionando um ajuste limpo e estável. Leve, quente e técnica, esta é a base layer de eleição      para enfrentar os meses frios com total conforto.   \u003c\/p\u003e   \u003ch3\u003eCaracterísticas\u003c\/h3\u003e   \u003cul\u003e     \u003cli\u003e\n\u003cstrong\u003eTecido SottoZero Fleece\u003c\/strong\u003e 100% poliéster de fios multi-denier para isolamento e respirabilidade.\u003c\/li\u003e     \u003cli\u003e\n\u003cstrong\u003eCosturas planas (flat-lock)\u003c\/strong\u003e para conforto próximo da pele.\u003c\/li\u003e     \u003cli\u003e\n\u003cstrong\u003ePainéis em malha\u003c\/strong\u003e sob as axilas para ventilação e gestão da temperatura.\u003c\/li\u003e     \u003cli\u003e\n\u003cstrong\u003eBainha inferior plana\u003c\/strong\u003e que se encaixa facilmente nos bibtights.\u003c\/li\u003e     \u003cli\u003e\n\u003cstrong\u003ePeso:\u003c\/strong\u003e 240 g\u003c\/li\u003e     \u003cli\u003e\n\u003cstrong\u003eTemperatura ideal:\u003c\/strong\u003e -2–10 °C \/ 28–50 °F\u003c\/li\u003e     \u003cli\u003e\n\u003cstrong\u003eFIT:\u003c\/strong\u003e Tailored\u003c\/li\u003e   \u003c\/ul\u003e \u003c\/div\u003e \u003c!-- ===== GUIA DE TAMANHOS CASTELLI ===== --\u003e \u003cdiv class=\"cc-size-highlight-full\"\u003e   \u003ch3\u003e📏 Encontra o Teu Tamanho Ideal\u003c\/h3\u003e   \u003cp\u003e     Para garantir o melhor ajuste e conforto, mede o perímetro do teu      \u003cstrong\u003epeito (A)\u003c\/strong\u003e e da tua \u003cstrong\u003ecintura (B)\u003c\/strong\u003e em centímetros e compara      com o guia de tamanhos Castelli abaixo.   \u003c\/p\u003e   \u003cul\u003e     \u003cli\u003eMede o \u003cstrong\u003epeito (A)\u003c\/strong\u003e na parte mais larga do tórax, mantendo a fita horizontal e sem apertar.\u003c\/li\u003e     \u003cli\u003eMede a \u003cstrong\u003ecintura (B)\u003c\/strong\u003e na zona mais estreita do tronco.\u003c\/li\u003e     \u003cli\u003eUsa uma fita métrica flexível, mantendo uma posição natural e relaxada.\u003c\/li\u003e     \u003cli\u003eCompara as medidas com a tabela e, se estiveres entre dois tamanhos, considera escolher          \u003cstrong\u003eum tamanho acima\u003c\/strong\u003e, conforme a recomendação da Castelli para maior conforto.\u003c\/li\u003e   \u003c\/ul\u003e   \u003cbutton class=\"cc-size-btn\" type=\"button\" aria-haspopup=\"dialog\" aria-controls=\"cc-size-modal\"\u003e     Calcule o seu tamanho   \u003c\/button\u003e \u003c\/div\u003e \u003c!-- ===== MODAL ===== --\u003e \u003cdialog id=\"cc-size-modal\" class=\"cc-size-modal\" aria-label=\"Guia de tamanhos\"\u003e   \u003cbutton class=\"cc-close\" aria-label=\"Fechar\"\u003e✕\u003c\/button\u003e   \u003cdiv class=\"cc-loader\" aria-hidden=\"true\"\u003e\u003c\/div\u003e   \u003cdiv class=\"cc-size-box\" hidden\u003e     \u003cimg id=\"cc-size-img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0946\/1832\/1278\/files\/Size_Chart_Castelli_Men_2.0.png?v=1761056363\" alt=\"Guia de tamanhos Castelli\" loading=\"eager\" decoding=\"sync\"\u003e   \u003c\/div\u003e \u003c\/dialog\u003e \u003c!-- ===== STYLE ===== --\u003e \u003cstyle\u003e   .product-description {     font-family: Arial, Helvetica, sans-serif;     color: #222;     line-height: 1.6;     font-size: 15px;   }   .product-description h2 {     font-size: 22px;     text-transform: uppercase;     letter-spacing: .5px;     color: #111;     margin-bottom: 10px;   }   \/* Caixa do guia *\/   .cc-size-highlight-full{     background:#f9f9f9;border:1px solid #e2e2e2;border-radius:10px;     padding:20px 24px;margin-top:20px;     font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;     box-shadow:0 2px 8px rgba(0,0,0,0.04);   }   .cc-size-highlight-full h3{font-size:18px;margin:0 0 10px;color:#111;}   .cc-size-highlight-full p{font-size:15px;margin:0 0 10px;color:#333;}   .cc-size-highlight-full ul{margin:0 0 15px 20px;padding:0;}   .cc-size-highlight-full li{margin-bottom:5px;font-size:15px;color:#333;}   \/* Botão *\/   .cc-size-btn{     display:inline-flex;align-items:center;gap:.5rem;     background:#000;color:#fff;border:none;border-radius:6px;     padding:10px 16px;font-size:14px;font-weight:500;cursor:pointer;     transition:transform .2s ease-in-out, background .2s ease-in-out;   }   .cc-size-btn:hover{background:#222;transform:translateY(-1px);}   \/* ===== MODAL: reset do tema + centrado real ===== *\/   .cc-size-modal{     position: fixed !important;     inset: 0 !important;     background: transparent !important;     border: 0 !important;     margin: 0 !important;     padding: 0 !important;     max-width: none !important;     width: 100vw !important;     height: 100vh !important;     display: none;     align-items: center !important;     justify-content: center !important;     z-index: 99999 !important;   }   .cc-size-modal[open]{ display:flex; }   .cc-size-modal::backdrop{ background: rgba(0,0,0,.6) !important; }   .cc-size-box{     position: relative;     box-sizing: border-box;     background: #fff;     border: 1px solid #e9e9e9;     border-radius: 10px;     box-shadow: 0 10px 25px rgba(0,0,0,.25);     padding: 8px;     overflow: hidden;     width: min(85vw, 1200px) !important;     max-height: 88vh !important;     display: flex;align-items:center;justify-content:center;   }   .cc-size-img{     display:block;     max-width:100% !important;     max-height:84vh !important;     width:auto !important;height:auto !important;     object-fit:contain !important;border-radius:6px;   }   .cc-close{     position:absolute;top:10px;right:10px;     background:#fff;border:1px solid #ddd;border-radius:6px;     padding:6px 9px;cursor:pointer;font-size:16px;line-height:1;     box-shadow:0 2px 6px rgba(0,0,0,.08);   }   .cc-close:hover{background:#f3f3f3;}   @media (max-width: 768px){     .cc-size-box{ width:95vw !important; max-height:95vh !important; padding:4px !important; }     .cc-size-img{ max-height:92vh !important; width:100% !important; }     .cc-close{ top:6px; right:6px; }   } \u003c\/style\u003e \u003c!-- ===== SCRIPT ===== --\u003e \u003cscript\u003e (function(){   const btn   = document.querySelector('.cc-size-btn');   const modal = document.getElementById('cc-size-modal');   if(!btn || !modal) return;   const close  = modal.querySelector('.cc-close');   const box    = modal.querySelector('.cc-size-box');   const img    = document.getElementById('cc-size-img');   const loader = modal.querySelector('.cc-loader');   function lockScroll(lock){     const el = document.documentElement;     if(lock){       el.style.overflow = 'hidden';       el.style.paddingRight = (window.innerWidth - document.documentElement.clientWidth) + 'px';     }else{       el.style.overflow = '';       el.style.paddingRight = '';     }   }   function openModal(e){     e \u0026\u0026 e.preventDefault();     if(modal.showModal){ modal.showModal(); } else { modal.setAttribute('open',''); }     lockScroll(true);     if(img \u0026\u0026 img.complete \u0026\u0026 img.naturalWidth\u003e0){       loader \u0026\u0026 (loader.style.display='none');       box \u0026\u0026 (box.hidden=false);     }   }   function closeModal(){     if(modal.close){ modal.close(); } else { modal.removeAttribute('open'); }     lockScroll(false);   }   btn.addEventListener('click', openModal, { passive:true });   close.addEventListener('click', closeModal);   modal.addEventListener('cancel', e =\u003e { e.preventDefault(); closeModal(); });   modal.addEventListener('click', e =\u003e {     if(!box.contains(e.target)) closeModal();   });   document.addEventListener('keydown', e =\u003e {     if(e.key === 'Escape' \u0026\u0026 modal.hasAttribute('open')) closeModal();   });   if(img){     img.addEventListener('load', () =\u003e {       loader \u0026\u0026 (loader.style.display='none');       box \u0026\u0026 (box.hidden=false);     });     img.addEventListener('error', () =\u003e {       loader \u0026\u0026 (loader.style.display='none');       box \u0026\u0026 (box.hidden=false);       box.innerHTML = '\u003cdiv style=\"padding:24px;text-align:center;color:#444\"\u003eNão foi possível carregar a imagem do guia de tamanhos.\u003c\/div\u003e';     });   } })(); \u003c\/script\u003e ","brand":"Castelli","offers":[{"title":"S","offer_id":56456266252670,"sku":"4514531008 S","price":79.9,"currency_code":"EUR","in_stock":false},{"title":"M","offer_id":56456266285438,"sku":"4514531008 M","price":79.9,"currency_code":"EUR","in_stock":true},{"title":"L","offer_id":56456266318206,"sku":"4514531008 L","price":79.9,"currency_code":"EUR","in_stock":false},{"title":"XL","offer_id":56456266350974,"sku":"4514531008 XL","price":79.9,"currency_code":"EUR","in_stock":false},{"title":"2XL","offer_id":56456266383742,"sku":"4514531008 2XL","price":79.9,"currency_code":"EUR","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0946\/1832\/1278\/files\/167819910722-0.jpg?v=1761318180"},{"product_id":"castelli-flanders-warm-ls-cycling-base-layer-thermal-comfortable-breathable-1","title":"CAMISOLA INTERIOR CASTELLI FLANDERS PRETO","description":"\u003cdiv class=\"product-description\"\u003e\n  \u003ch2\u003eCASTELLI FLANDERS WARM LS CYCLING BASE LAYER\u003c\/h2\u003e\n\n  \u003cp\u003e\n    A \u003cstrong\u003eFlanders Warm LS Base Layer\u003c\/strong\u003e é a camada base ideal para pedalar em \u003cstrong\u003etemperaturas frias\u003c\/strong\u003e. \n    Mantém-te \u003cstrong\u003equente, seco e confortável\u003c\/strong\u003e mesmo nos dias mais duros do inverno, \n    oferecendo isolamento térmico e excelente gestão da humidade.\n  \u003c\/p\u003e\n\n  \u003cp\u003e\n    Produzida em tecido \u003cstrong\u003eSottoZero Fleece\u003c\/strong\u003e 100% poliéster de \u003cstrong\u003efios multi-denier\u003c\/strong\u003e, \n    garante calor e respirabilidade superiores. As \u003cstrong\u003ecosturas planas (flat-lock)\u003c\/strong\u003e \n    eliminam atritos e asseguram conforto próximo da pele, enquanto os \n    \u003cstrong\u003epainéis em malha sob as axilas\u003c\/strong\u003e melhoram a ventilação e a regulação térmica.\n  \u003c\/p\u003e\n\n  \u003cp\u003e\n    A \u003cstrong\u003ebainha inferior plana\u003c\/strong\u003e encaixa facilmente dentro dos bibtights ou calças, \n    proporcionando um ajuste limpo e estável. Leve, quente e técnica, esta é a base layer de eleição \n    para enfrentar os meses frios com total conforto.\n  \u003c\/p\u003e\n\n  \u003ch3\u003eCaracterísticas\u003c\/h3\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n\u003cstrong\u003eTecido SottoZero Fleece\u003c\/strong\u003e 100% poliéster de fios multi-denier para isolamento e respirabilidade.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eCosturas planas (flat-lock)\u003c\/strong\u003e para conforto próximo da pele.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003ePainéis em malha\u003c\/strong\u003e sob as axilas para ventilação e gestão da temperatura.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eBainha inferior plana\u003c\/strong\u003e que se encaixa facilmente nos bibtights.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003ePeso:\u003c\/strong\u003e 240 g\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eTemperatura ideal:\u003c\/strong\u003e -2–10 °C \/ 28–50 °F\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eFIT:\u003c\/strong\u003e Tailored\u003c\/li\u003e\n  \u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c!-- ===== GUIA DE TAMANHOS CASTELLI ===== --\u003e\n\u003cdiv class=\"cc-size-highlight-full\"\u003e\n  \u003ch3\u003e📏 Encontra o Teu Tamanho Ideal\u003c\/h3\u003e\n  \u003cp\u003e\n    Para garantir o melhor ajuste e conforto, mede o perímetro do teu \n    \u003cstrong\u003epeito (A)\u003c\/strong\u003e e da tua \u003cstrong\u003ecintura (B)\u003c\/strong\u003e em centímetros e compara \n    com o guia de tamanhos Castelli abaixo.\n  \u003c\/p\u003e\n\n  \u003cul\u003e\n    \u003cli\u003eMede o \u003cstrong\u003epeito (A)\u003c\/strong\u003e na parte mais larga do tórax, mantendo a fita horizontal e sem apertar.\u003c\/li\u003e\n    \u003cli\u003eMede a \u003cstrong\u003ecintura (B)\u003c\/strong\u003e na zona mais estreita do tronco.\u003c\/li\u003e\n    \u003cli\u003eUsa uma fita métrica flexível, mantendo uma posição natural e relaxada.\u003c\/li\u003e\n    \u003cli\u003eCompara as medidas com a tabela e, se estiveres entre dois tamanhos, considera escolher \n        \u003cstrong\u003eum tamanho acima\u003c\/strong\u003e, conforme a recomendação da Castelli para maior conforto.\u003c\/li\u003e\n  \u003c\/ul\u003e\n\n  \u003cbutton class=\"cc-size-btn\" type=\"button\" aria-haspopup=\"dialog\" aria-controls=\"cc-size-modal\"\u003e\n    Calcule o seu tamanho\n  \u003c\/button\u003e\n\u003c\/div\u003e\n\n\u003c!-- ===== MODAL ===== --\u003e\n\u003cdialog id=\"cc-size-modal\" class=\"cc-size-modal\" aria-label=\"Guia de tamanhos\"\u003e\n  \u003cbutton class=\"cc-close\" aria-label=\"Fechar\"\u003e✕\u003c\/button\u003e\n  \u003cdiv class=\"cc-loader\" aria-hidden=\"true\"\u003e\u003c\/div\u003e\n  \u003cdiv class=\"cc-size-box\" hidden\u003e\n    \u003cimg id=\"cc-size-img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0946\/1832\/1278\/files\/Size_Chart_Castelli_Men_2.0.png?v=1761056363\" alt=\"Guia de tamanhos Castelli\" loading=\"eager\" decoding=\"sync\"\u003e\n  \u003c\/div\u003e\n\u003c\/dialog\u003e\n\n\u003c!-- ===== STYLE ===== --\u003e\n\u003cstyle\u003e\n  .product-description {\n    font-family: Arial, Helvetica, sans-serif;\n    color: #222;\n    line-height: 1.6;\n    font-size: 15px;\n  }\n  .product-description h2 {\n    font-size: 22px;\n    text-transform: uppercase;\n    letter-spacing: .5px;\n    color: #111;\n    margin-bottom: 10px;\n  }\n\n  \/* Caixa do guia *\/\n  .cc-size-highlight-full{\n    background:#f9f9f9;border:1px solid #e2e2e2;border-radius:10px;\n    padding:20px 24px;margin-top:20px;\n    font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;\n    box-shadow:0 2px 8px rgba(0,0,0,0.04);\n  }\n  .cc-size-highlight-full h3{font-size:18px;margin:0 0 10px;color:#111;}\n  .cc-size-highlight-full p{font-size:15px;margin:0 0 10px;color:#333;}\n  .cc-size-highlight-full ul{margin:0 0 15px 20px;padding:0;}\n  .cc-size-highlight-full li{margin-bottom:5px;font-size:15px;color:#333;}\n\n  \/* Botão *\/\n  .cc-size-btn{\n    display:inline-flex;align-items:center;gap:.5rem;\n    background:#000;color:#fff;border:none;border-radius:6px;\n    padding:10px 16px;font-size:14px;font-weight:500;cursor:pointer;\n    transition:transform .2s ease-in-out, background .2s ease-in-out;\n  }\n  .cc-size-btn:hover{background:#222;transform:translateY(-1px);}\n\n  \/* ===== MODAL: reset do tema + centrado real ===== *\/\n  .cc-size-modal{\n    position: fixed !important;\n    inset: 0 !important;\n    background: transparent !important;\n    border: 0 !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    max-width: none !important;\n    width: 100vw !important;\n    height: 100vh !important;\n    display: none;\n    align-items: center !important;\n    justify-content: center !important;\n    z-index: 99999 !important;\n  }\n  .cc-size-modal[open]{ display:flex; }\n  .cc-size-modal::backdrop{ background: rgba(0,0,0,.6) !important; }\n\n  .cc-size-box{\n    position: relative;\n    box-sizing: border-box;\n    background: #fff;\n    border: 1px solid #e9e9e9;\n    border-radius: 10px;\n    box-shadow: 0 10px 25px rgba(0,0,0,.25);\n    padding: 8px;\n    overflow: hidden;\n    width: min(85vw, 1200px) !important;\n    max-height: 88vh !important;\n    display: flex;align-items:center;justify-content:center;\n  }\n  .cc-size-img{\n    display:block;\n    max-width:100% !important;\n    max-height:84vh !important;\n    width:auto !important;height:auto !important;\n    object-fit:contain !important;border-radius:6px;\n  }\n\n  .cc-close{\n    position:absolute;top:10px;right:10px;\n    background:#fff;border:1px solid #ddd;border-radius:6px;\n    padding:6px 9px;cursor:pointer;font-size:16px;line-height:1;\n    box-shadow:0 2px 6px rgba(0,0,0,.08);\n  }\n  .cc-close:hover{background:#f3f3f3;}\n\n  @media (max-width: 768px){\n    .cc-size-box{ width:95vw !important; max-height:95vh !important; padding:4px !important; }\n    .cc-size-img{ max-height:92vh !important; width:100% !important; }\n    .cc-close{ top:6px; right:6px; }\n  }\n\u003c\/style\u003e\n\n\u003c!-- ===== SCRIPT ===== --\u003e\n\u003cscript\u003e\n(function(){\n  const btn   = document.querySelector('.cc-size-btn');\n  const modal = document.getElementById('cc-size-modal');\n  if(!btn || !modal) return;\n\n  const close  = modal.querySelector('.cc-close');\n  const box    = modal.querySelector('.cc-size-box');\n  const img    = document.getElementById('cc-size-img');\n  const loader = modal.querySelector('.cc-loader');\n\n  function lockScroll(lock){\n    const el = document.documentElement;\n    if(lock){\n      el.style.overflow = 'hidden';\n      el.style.paddingRight = (window.innerWidth - document.documentElement.clientWidth) + 'px';\n    }else{\n      el.style.overflow = '';\n      el.style.paddingRight = '';\n    }\n  }\n\n  function openModal(e){\n    e \u0026\u0026 e.preventDefault();\n    if(modal.showModal){ modal.showModal(); } else { modal.setAttribute('open',''); }\n    lockScroll(true);\n    if(img \u0026\u0026 img.complete \u0026\u0026 img.naturalWidth\u003e0){\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n    }\n  }\n\n  function closeModal(){\n    if(modal.close){ modal.close(); } else { modal.removeAttribute('open'); }\n    lockScroll(false);\n  }\n\n  btn.addEventListener('click', openModal, { passive:true });\n  close.addEventListener('click', closeModal);\n  modal.addEventListener('cancel', e =\u003e { e.preventDefault(); closeModal(); });\n\n  modal.addEventListener('click', e =\u003e {\n    if(!box.contains(e.target)) closeModal();\n  });\n\n  document.addEventListener('keydown', e =\u003e {\n    if(e.key === 'Escape' \u0026\u0026 modal.hasAttribute('open')) closeModal();\n  });\n\n  if(img){\n    img.addEventListener('load', () =\u003e {\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n    });\n    img.addEventListener('error', () =\u003e {\n      loader \u0026\u0026 (loader.style.display='none');\n      box \u0026\u0026 (box.hidden=false);\n      box.innerHTML = '\u003cdiv style=\"padding:24px;text-align:center;color:#444\"\u003eNão foi possível carregar a imagem do guia de tamanhos.\u003c\/div\u003e';\n    });\n  }\n})();\n\u003c\/script\u003e\n","brand":"Castelli","offers":[{"title":"S","offer_id":56456266940798,"sku":"4514531010 S","price":79.9,"currency_code":"EUR","in_stock":false},{"title":"M","offer_id":56456266973566,"sku":"4514531010 M","price":79.9,"currency_code":"EUR","in_stock":false},{"title":"L","offer_id":56456267006334,"sku":"4514531010 L","price":79.9,"currency_code":"EUR","in_stock":true},{"title":"XL","offer_id":56456267039102,"sku":"4514531010 XL","price":79.9,"currency_code":"EUR","in_stock":false},{"title":"2XL","offer_id":56456267071870,"sku":"4514531010 2XL","price":79.9,"currency_code":"EUR","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0946\/1832\/1278\/files\/167819905346-0.jpg?v=1761318187"},{"product_id":"castelli-flanders-2-ls-cycling-base-layer-thermal-lightweight-breathable-1","title":"CAMISOLA INTERIOR CASTELLI FLANDERS 2 CINZA","description":"\u003cdiv class=\"cc-simple\"\u003e\n\u003ch2\u003eCASTELLI FLANDERS 2\u003c\/h2\u003e\n\u003cp\u003e\u003cstrong\u003eA camada base definitiva para o frio extremo: calor imediato e gestão de humidade superior para os teus treinos de inverno.\u003c\/strong\u003e\u003cbr\u003eA Flanders 2 é a peça de eleição da Castelli para quando o termómetro desce abaixo de zero. Desenvolvida para as condições rigorosas das clássicas belgas, esta camada base utiliza o tecido SottoZero Fleece para criar uma barreira térmica eficaz, mantendo a pele seca e o corpo na temperatura ideal durante toda a pedalada.\u003c\/p\u003e\n\u003ch3\u003eConforto Térmico e Design Ergonómico\u003c\/h3\u003e\n\u003cp\u003eCom uma gola de altura média, esta peça oferece proteção extra para o pescoço, eliminando a necessidade de acessórios adicionais em dias de vento frio. As inserções em malha nas axilas garantem que, mesmo em esforços intensos, o excesso de calor possa escapar. As costuras Flat Merrow asseguram um toque suave, tornando esta camada base quase impercetível sob a tua jersey ou casaco favorito.\u003c\/p\u003e\n\u003ch3\u003eEspecificações Técnicas\u003c\/h3\u003e\n\u003cul class=\"cc-list\"\u003e\n\u003cli\u003e\n\u003cstrong\u003eTecido SottoZero Fleece:\u003c\/strong\u003e Máximo isolamento com interior escovado\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eGola Média:\u003c\/strong\u003e Proteção térmica reforçada para a zona do pescoço\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePainéis em Mesh:\u003c\/strong\u003e Ventilação estratégica nas axilas para controlo de humidade\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCosturas Flat Merrow:\u003c\/strong\u003e Construção plana para evitar irritações\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAlta Performance:\u003c\/strong\u003e Eficaz em intervalos de -2°C a 10°C\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eLeveza e Eficiência:\u003c\/strong\u003e Apenas 181g de engenharia térmica\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCorte:\u003c\/strong\u003e Regular Fit (Ajuste anatómico confortável)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp style=\"font-size: 13px; color: #555; margin-top: 10px;\"\u003eIndispensável para ciclistas que não param no inverno, a Flanders 2 é a base de todo o conforto em dias gélidos.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n  .cc-simple {\n    font-family: system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif;\n    color: #111;\n    line-height: 1.6;\n  }\n  .cc-simple h2 {\n    font-size: 1.5rem;\n    font-weight: 700;\n    letter-spacing: .5px;\n    margin-bottom: .75rem;\n    text-transform: uppercase;\n  }\n  .cc-simple h3 {\n    font-size: 1.1rem;\n    margin: 1.1rem 0 .5rem;\n    font-weight: 600;\n  }\n  .cc-simple p {\n    margin: .25rem 0 .75rem;\n  }\n  .cc-list {\n    margin: .5rem 0 1rem 1.25rem;\n  }\n  .cc-list li {\n    margin: .25rem 0;\n  }\n\u003c\/style\u003e","brand":"Castelli","offers":[{"title":"S","offer_id":56501472428414,"sku":"4525525008 S","price":79.9,"currency_code":"EUR","in_stock":true},{"title":"M","offer_id":56501472461182,"sku":"4525525008 M","price":79.9,"currency_code":"EUR","in_stock":true},{"title":"L","offer_id":56501472493950,"sku":"4525525008 L","price":79.9,"currency_code":"EUR","in_stock":true},{"title":"XL","offer_id":56501472526718,"sku":"4525525008 XL","price":79.9,"currency_code":"EUR","in_stock":false},{"title":"2XL","offer_id":56501472559486,"sku":"4525525008 2XL","price":79.9,"currency_code":"EUR","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0946\/1832\/1278\/files\/167819879606-0.jpg?v=1762015407"},{"product_id":"castelli-flanders-2-w-warm-women-s-cycling-base-layer-thermal-fleece-winter-1","title":"CAMISOLA INTERIOR MULHER CASTELLI FLANDERS 2 W CINZA","description":"\u003cdiv class=\"cc-simple\"\u003e\n\u003ch2\u003eCASTELLI FLANDERS 2 W\u003c\/h2\u003e\n\u003cp\u003e\u003cstrong\u003eQuente, seca e incrivelmente suave: a camada base definitiva para enfrentar o inverno mais rigoroso.\u003c\/strong\u003e\u003cbr\u003eA Flanders 2 W Warm foi desenhada para as condições extremas das clássicas belgas em fevereiro. É a peça que sentes aquecer mal a vestes, graças ao seu interior em fleece de alto volume. Se procuras a melhor proteção para pedalar entre setembro e maio, esta camada base oferece o equilíbrio perfeito entre isolamento térmico e gestão de humidade.\u003c\/p\u003e\n\u003ch3\u003eTecnologia SottoZero para Frio Extremo\u003c\/h3\u003e\n\u003cp\u003eUtilizando o tecido multi-denier SottoZero, a Castelli criou uma peça que retém o calor corporal enquanto permite que a pele respire através de inserções em malha estratégica nas axilas. As costuras planas garantem que não existe fricção com as camadas superiores, enquanto o seu ajuste elástico e bainha plana asseguram que a peça se mantém no lugar sem criar volume indesejado sob os teus sapatos ou calças térmicas.\u003c\/p\u003e\n\u003ch3\u003eEspecificações Técnicas\u003c\/h3\u003e\n\u003cul class=\"cc-list\"\u003e\n\u003cli\u003e\n\u003cstrong\u003eTecido SottoZero Fleece:\u003c\/strong\u003e Máximo isolamento térmico e suavidade superior\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eGestão de Humidade:\u003c\/strong\u003e Fibras multi-denier para secagem rápida\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eConforto:\u003c\/strong\u003e Costuras Flat-lock (planas) que eliminam a irritação\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRespirabilidade:\u003c\/strong\u003e Painéis de malha nas axilas para controlo de temperatura\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAjuste:\u003c\/strong\u003e Bainha plana para integração perfeita com calças térmicas\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePerformance Térmica:\u003c\/strong\u003e Ideal para temperaturas negativas (-2°C a 10°C)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCorte:\u003c\/strong\u003e Tailored Fit (Ajuste anatómico feminino)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp style=\"font-size: 13px; color: #555; margin-top: 10px;\"\u003eA base indispensável para qualquer ciclista que não deixa que o frio a impeça de sair para a estrada.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n  .cc-simple {\n    font-family: system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif;\n    color: #111;\n    line-height: 1.6;\n  }\n  .cc-simple h2 {\n    font-size: 1.5rem;\n    font-weight: 700;\n    letter-spacing: .5px;\n    margin-bottom: .75rem;\n    text-transform: uppercase;\n  }\n  .cc-simple h3 {\n    font-size: 1.1rem;\n    margin: 1.1rem 0 .5rem;\n    font-weight: 600;\n  }\n  .cc-simple p {\n    margin: .25rem 0 .75rem;\n  }\n  .cc-list {\n    margin: .5rem 0 1rem 1.25rem;\n  }\n  .cc-list li {\n    margin: .25rem 0;\n  }\n\u003c\/style\u003e","brand":"Castelli","offers":[{"title":"XS","offer_id":56885244068222,"sku":"4519547008 XS","price":49.9,"currency_code":"EUR","in_stock":false},{"title":"S","offer_id":56885244100990,"sku":"4519547008 S","price":49.9,"currency_code":"EUR","in_stock":false},{"title":"M","offer_id":56885244133758,"sku":"4519547008 M","price":49.9,"currency_code":"EUR","in_stock":false},{"title":"L","offer_id":56885244166526,"sku":"4519547008 L","price":49.9,"currency_code":"EUR","in_stock":false},{"title":"XL","offer_id":56885244199294,"sku":"4519547008 XL","price":49.9,"currency_code":"EUR","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0946\/1832\/1278\/files\/167819960951-0.jpg?v=1770132936"}],"url":"https:\/\/www.cyclistcloset.com\/en-us\/collections\/camisola-interior.oembed","provider":"Cyclist's Closet","version":"1.0","type":"link"}