{"product_id":"castelli-alpha-150-cycling-jacket-polartec-windproof-insulated-breathable","title":"CASACO CASTELLI ALPHA 150 PRETO","description":"\u003cdiv class=\"product-description\"\u003e\n  \u003ch2\u003eCASTELLI ALPHA 150 CYCLING JACKET – POLARTEC CORTA-VENTO ISOLADO RESPIRÁVEL\u003c\/h2\u003e\n\n  \u003cp\u003e\n    O \u003cstrong\u003eAlpha 150 Jacket\u003c\/strong\u003e é o melhor casaco de inverno alguma vez criado pela Castelli — \n    concebido para que possas pedalar \u003cstrong\u003etodo o inverno com conforto e proteção total\u003c\/strong\u003e. \n    Utilizando os melhores tecidos \u003cstrong\u003ePolartec®\u003c\/strong\u003e e uma construção inovadora, \n    oferece isolamento térmico, resistência ao vento e à chuva, e respirabilidade sem precedentes.\n  \u003c\/p\u003e\n\n  \u003cp\u003e\n    A camada exterior em \u003cstrong\u003ePolartec® AirCore™\u003c\/strong\u003e de 150 g é uma membrana eletrofiada \n    com \u003cstrong\u003epermeabilidade ao ar\u003c\/strong\u003e e respirabilidade líderes na indústria, \n    bloqueando vento e chuva ligeira sem comprometer a ventilação. \n    No interior, o \u003cstrong\u003eforro Polartec® Alpha™\u003c\/strong\u003e proporciona isolamento eficaz \n    com peso mínimo e excelente gestão da humidade, mantendo o corpo seco e aquecido mesmo durante o esforço.\n  \u003c\/p\u003e\n\n  \u003cp\u003e\n    O casaco inclui um \u003cstrong\u003efecho YKK® Vislon® bidirecional\u003c\/strong\u003e para regulação fácil, \n    protegido por uma aba contra vento e chuva, além de um \u003cstrong\u003ebolso frontal com fecho\u003c\/strong\u003e \n    para chave ou dinheiro e \u003cstrong\u003etrês bolsos traseiros\u003c\/strong\u003e espaçosos. \n    O \u003cstrong\u003edebrum refletor\u003c\/strong\u003e sob os bolsos melhora a visibilidade em estrada. \n    Com um corte técnico e elástico, adapta-se ao corpo sem restringir o movimento, \n    proporcionando o equilíbrio ideal entre proteção e leveza.\n  \u003c\/p\u003e\n\n  \u003cp\u003e\n    Fabricado com \u003cstrong\u003efios reciclados\u003c\/strong\u003e e totalmente \u003cstrong\u003elivre de PFAS\u003c\/strong\u003e, \n    o Alpha 150 define o novo padrão de casacos de ciclismo de inverno — quente, respirável e sustentável.\n  \u003c\/p\u003e\n\n  \u003ch3\u003eCaracterísticas\u003c\/h3\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n\u003cstrong\u003eCasaco ideal\u003c\/strong\u003e para condições frias a muito frias.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eCamada exterior Polartec® AirCore™ 150 g\u003c\/strong\u003e com respirabilidade e proteção contra o vento e chuva.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eForro interno Polartec® Alpha™\u003c\/strong\u003e para isolamento leve e gestão térmica superior.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eFecho YKK® Vislon® bidirecional\u003c\/strong\u003e com aba protetora contra vento e chuva.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eBolso frontal com fecho\u003c\/strong\u003e para chave ou dinheiro.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003e3 bolsos traseiros\u003c\/strong\u003e para armazenamento funcional.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eDebrum refletor\u003c\/strong\u003e sob os bolsos para maior visibilidade.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eTecido elástico\u003c\/strong\u003e para ajuste ergonómico e conforto dinâmico.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003eMateriais reciclados\u003c\/strong\u003e e \u003cstrong\u003ePFAS-free\u003c\/strong\u003e para sustentabilidade ambiental.\u003c\/li\u003e\n    \u003cli\u003e\n\u003cstrong\u003ePeso:\u003c\/strong\u003e 352 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","brand":"Castelli","offers":[{"title":"S","offer_id":56456265793918,"sku":"4525502085 S-3","price":269.9,"currency_code":"EUR","in_stock":false},{"title":"M","offer_id":56456265826686,"sku":"4525502085 M-3","price":269.9,"currency_code":"EUR","in_stock":true},{"title":"L","offer_id":56456265859454,"sku":"4525502085 L-3","price":269.9,"currency_code":"EUR","in_stock":true},{"title":"XL","offer_id":56456265892222,"sku":"4525502085 XL-3","price":269.9,"currency_code":"EUR","in_stock":true},{"title":"2XL","offer_id":56456265924990,"sku":"4525502085 2XL-3","price":269.9,"currency_code":"EUR","in_stock":true},{"title":"3XL","offer_id":56456265957758,"sku":"4525502085 3XL-3","price":269.9,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0946\/1832\/1278\/files\/167818937014-0.jpg?v=1763491442","url":"https:\/\/www.cyclistcloset.pt\/products\/castelli-alpha-150-cycling-jacket-polartec-windproof-insulated-breathable","provider":"Cyclist's Closet","version":"1.0","type":"link"}