{"id":43316,"date":"2025-06-26T17:15:54","date_gmt":"2025-06-26T15:15:54","guid":{"rendered":"https:\/\/wildsuits.eu\/?page_id=43316"},"modified":"2026-08-25T14:10:17","modified_gmt":"2026-08-25T12:10:17","slug":"size-guide-sml","status":"publish","type":"page","link":"https:\/\/wildsuits.eu\/en\/size-guide-sml\/","title":{"rendered":"Size Guide Wetsuits"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"43316\" class=\"elementor elementor-43316\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-33a8274 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"33a8274\" data-element_type=\"section\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-13939fc\" data-id=\"13939fc\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3ed45ff elementor-widget elementor-widget-spacer\" data-id=\"3ed45ff\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-05f527a elementor-widget elementor-widget-spacer\" data-id=\"05f527a\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c04843c elementor-widget elementor-widget-html\" data-id=\"c04843c\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<!--\n  WILDSUITS FIT FINDER \u2014 bloco para colar numa p\u00e1gina (Elementor: widget HTML).\n  Sem etiquetas de documento; fontes por @import dentro do CSS.\n-->\n\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Lato:wght@400;700;900&family=Inter:wght@400;500;600;700&display=swap');\n\/* ===========================================================================\n   WILDSUITS FIT FINDER v3\n   data-lang for\u00e7a a l\u00edngua (fr\/pt\/es\/en). Sem ele, \u00e9 detectada na p\u00e1gina.\n   data-url-sync=\"off\" (por omiss\u00e3o) mant\u00e9m o endere\u00e7o limpo. O bot\u00e3o\n   \"Copiar a minha recomenda\u00e7\u00e3o\" continua a dar um link completo.\n   data-contact aponta o \"Falar connosco\" para a p\u00e1gina de contacto.\n   data-cart-url \u00e9 a p\u00e1gina do carrinho onde o cliente aterra.\n   data-tables=\"off\" esconde as tabelas de tamanhos, data-why=\"off\" esconde\n   o detalhe do c\u00e1lculo. Ambos continuam no c\u00f3digo.\n   Verde #223E36 medido directamente no log\u00f3tipo oficial da marca; areia\n   #EFE6D4 como acento quente. O monograma \u00e9 o tra\u00e7ado vectorial extra\u00eddo do\n   ficheiro .ai \u2014 n\u00e3o \u00e9 um redesenho. Tudo scoped em .wsf \u2014 nada toca no tema\n   da loja.\n   Para embeber: copiar o bloco .wsf, a folha de estilo e o script.\n   =========================================================================== *\/\n\n.wsf {\n  \/* Fundo #0C222C \u2014 medido directamente no rodap\u00e9 de wildsuits.eu.\n     A ferramenta \u00e9 escura POR OMISS\u00c3O, para assentar na sec\u00e7\u00e3o escura do\n     site sem depender do tema do sistema operativo do visitante.\n     O verde do log\u00f3tipo (#223E36) n\u00e3o serve de texto sobre este fundo:\n     em cima do azul-noite fica ileg\u00edvel. A areia passa a ser a cor\n     principal, tal como na vers\u00e3o do log\u00f3tipo em fundo escuro. *\/\n  --bg:        #0C222C;   \/* rodap\u00e9 do site, valor exacto *\/\n  --surface:   #12303C;\n  --surface-2: #17394A;\n  --line:      #234B5D;\n  --line-soft: #17333F;\n  --ink:       #EFE6D4;   \/* areia \u2014 t\u00edtulos, bot\u00f5es, monograma *\/\n  --on-ink:    #0C222C;   \/* texto POR CIMA de --ink *\/\n  --ocean:     #AEC8D3;   \/* texto corrido *\/\n  --ocean-2:   #CBDEE6;\n  --sand:      #EFE6D4;\n  --sand-deep: #8A7A5C;\n  --dim:       #8BA5B2;\n  --ok:        #7FD8B6;\n  --ok-bg:     #103A3C;\n  --warn:      #F0B673;\n  --warn-bg:   #3A2A12;\n  --shadow:    0 1px 2px rgba(0,0,0,.30), 0 12px 34px -16px rgba(0,0,0,.65);\n  --r:         5px;\n\n  background: var(--bg);\n  color: var(--ink);\n  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n  font-size: 16px; line-height: 1.5;\n  -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;\n  font-variant-numeric: tabular-nums;\n}\n\n\/* Variante clara, se um dia for preciso embeber numa p\u00e1gina branca.\n   N\u00e3o \u00e9 autom\u00e1tica: basta p\u00f4r data-theme=\"light\" no <div class=\"wsf\">. *\/\n.wsf[data-theme=\"light\"] {\n  --bg:#ffffff; --surface:#F7F5EF; --surface-2:#F0ECE1;\n  --line:#E2DDD0; --line-soft:#EFEBE0;\n  --ink:#223E36; --on-ink:#EFE6D4; --ocean:#3E6154; --ocean-2:#16302A;\n  --sand:#EFE6D4; --sand-deep:#D9C9A8; --dim:#5B7268;\n  --ok:#22624F; --ok-bg:#E3F0EA; --warn:#8A4A05; --warn-bg:#FBF0DF;\n  --shadow:0 1px 2px rgba(34,62,54,.05), 0 10px 30px -14px rgba(34,62,54,.26);\n}\n\n.wsf, .wsf *, .wsf *::before, .wsf *::after { box-sizing: border-box; }\n.wsf h1,.wsf h2,.wsf h3,.wsf p,.wsf table,.wsf figure { margin:0; padding:0; }\n.wsf button,.wsf input,.wsf select { font:inherit; color:inherit; }\n.wsf :focus-visible { outline:2px solid var(--ocean); outline-offset:2px; border-radius:3px; }\n.wsf .sr { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden;\n           clip:rect(0 0 0 0); white-space:nowrap; border:0; }\n\n.wsf .wrap { max-width:1180px; margin:0 auto; padding:56px 24px 40px; }\n\n\/* ---------- topo ---------- *\/\n.wsf .topbar { display:flex; justify-content:space-between; align-items:center; gap:16px;\n               flex-wrap:wrap; margin-bottom:40px; }\n.wsf .brand { display:flex; align-items:center; gap:11px; font-family:'Lato',sans-serif;\n              color:var(--ink); }\n.wsf .brand .mark { width:26px; height:auto; flex:none; display:block; color:var(--ink); }\n.wsf .brand .wordmark { font-size:13px; font-weight:900; letter-spacing:.22em;\n              text-transform:uppercase; }\n.wsf .brand .tagline { font-size:10.5px; font-weight:700; letter-spacing:.16em;\n              text-transform:uppercase; color:var(--dim); padding-left:11px;\n              border-left:1px solid var(--line); }\n@media (max-width:620px) { .wsf .brand .tagline { display:none; } }\n.wsf .switches { display:flex; gap:8px; }\n.wsf .seg { display:inline-flex; background:var(--surface); border:1px solid var(--line);\n            border-radius:var(--r); padding:2px; }\n.wsf .seg button { border:0; background:transparent; cursor:pointer; border-radius:3px;\n                   padding:6px 12px; font-size:12px; font-weight:700; color:var(--dim);\n                   transition:background .15s, color .15s; }\n.wsf .seg button:hover { color:var(--ink); }\n.wsf .seg button[aria-pressed=\"true\"] { background:var(--ink); color:var(--on-ink); }\n\n.wsf .eyebrow { font-size:11px; font-weight:700; letter-spacing:.22em; text-transform:uppercase;\n                color:var(--dim); margin-bottom:18px; display:flex; align-items:center; gap:12px; }\n.wsf .eyebrow::after { content:''; flex:1; height:1px; background:var(--line); max-width:180px; }\n.wsf h1 { font-family:'Lato',sans-serif; font-size:clamp(36px,5.4vw,62px); font-weight:900;\n          line-height:.99; letter-spacing:-.028em; max-width:14ch; margin-bottom:18px; }\n.wsf .lead { font-size:17.5px; color:var(--ocean); max-width:52ch; margin-bottom:48px;\n             line-height:1.55; }\n\n\/* ---------- grelha ---------- *\/\n.wsf .cols { display:grid; grid-template-columns:minmax(300px,1fr) minmax(350px,.95fr);\n             gap:60px; align-items:start; }\n@media (max-width:940px) {\n  .wsf .cols { grid-template-columns:1fr; gap:36px; }\n  .wsf .wrap { padding:36px 18px 40px; }\n  .wsf .lead { margin-bottom:32px; }\n}\n\n\/* ---------- campos ---------- *\/\n.wsf .field { margin-bottom:36px; }\n.wsf .field:last-child { margin-bottom:0; }\n.wsf .field-head { display:flex; justify-content:space-between; align-items:baseline;\n                   gap:12px; margin-bottom:13px; }\n.wsf .label { font-size:11px; font-weight:700; letter-spacing:.18em; text-transform:uppercase;\n              color:var(--dim); }\n.wsf .label .opt { font-weight:500; letter-spacing:.05em; text-transform:none; }\n.wsf .numbox { display:flex; align-items:baseline; gap:4px; border-bottom:1px solid var(--line);\n               padding-bottom:2px; }\n.wsf .numbox input { width:5.4ch; border:0; background:transparent; text-align:right; padding:0;\n                     font-size:19px; font-weight:700; font-family:'Lato',sans-serif; }\n.wsf .numbox input.wide { width:7.5ch; }\n.wsf .numbox input::-webkit-outer-spin-button,\n.wsf .numbox input::-webkit-inner-spin-button { -webkit-appearance:none; margin:0; }\n.wsf .numbox span { font-size:12px; color:var(--dim); font-weight:500; }\n\n.wsf .track { position:relative; height:20px; display:flex; align-items:center; }\n.wsf input[type=range] { -webkit-appearance:none; appearance:none; width:100%; height:3px;\n  padding:0; margin:0; border-radius:2px; outline:none; cursor:pointer;\n  background:linear-gradient(to right, var(--ink) 0%, var(--ink) var(--p,50%),\n             var(--line) var(--p,50%), var(--line) 100%); }\n.wsf input[type=range].sea { height:6px; border-radius:3px;\n  background:linear-gradient(to right,#1D4557 0%,#2F6B7E 28%,#7BA9AE 54%,#C9BE9C 78%,#E0A35C 100%); }\n.wsf input[type=range]::-webkit-slider-thumb { -webkit-appearance:none; appearance:none;\n  width:20px; height:20px; border-radius:50%; background:var(--ink);\n  border:3px solid var(--bg); box-shadow:0 0 0 1px var(--ink); cursor:grab;\n  transition:transform .12s ease; }\n.wsf input[type=range].sea::-webkit-slider-thumb { background:var(--bg); border-width:4px;\n  border-color:var(--ink); box-shadow:0 1px 4px rgba(34,62,54,.35); }\n.wsf input[type=range]::-webkit-slider-thumb:hover { transform:scale(1.12); }\n.wsf input[type=range]::-moz-range-thumb { width:20px; height:20px; border-radius:50%;\n  background:var(--ink); border:3px solid var(--bg); box-shadow:0 0 0 1px var(--ink); cursor:grab; }\n.wsf input[type=range].sea::-moz-range-thumb { background:var(--bg); border:4px solid var(--ink);\n  box-shadow:0 1px 4px rgba(34,62,54,.35); }\n.wsf .ends { display:flex; justify-content:space-between; font-size:11px; color:var(--dim); margin-top:9px; }\n\n.wsf .chips { display:flex; flex-wrap:wrap; gap:7px; margin-top:12px; }\n.wsf .chip { border:1px solid var(--line); background:var(--bg); color:var(--ocean);\n  border-radius:var(--r); padding:8px 14px; font-size:12.5px; font-weight:600; cursor:pointer;\n  transition:border-color .15s, color .15s, background .15s; }\n.wsf .chip:hover { border-color:var(--ink); color:var(--ink); }\n.wsf .chip[aria-pressed=\"true\"] { background:var(--ink); border-color:var(--ink); color:var(--on-ink); }\n.wsf .help { font-size:12.5px; color:var(--dim); margin-top:10px; max-width:46ch; }\n\n.wsf .selects { display:grid; grid-template-columns:1.55fr 1fr; gap:10px; margin-bottom:16px; }\n.wsf select { width:100%; appearance:none; -webkit-appearance:none; border:1px solid var(--line);\n  background:var(--bg); border-radius:var(--r); padding:11px 34px 11px 12px; font-size:14px;\n  font-weight:500; cursor:pointer; transition:border-color .15s;\n  background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),\n                   linear-gradient(135deg,currentColor 50%,transparent 50%);\n  background-position:calc(100% - 17px) 50%, calc(100% - 12px) 50%;\n  background-size:5px 5px,5px 5px; background-repeat:no-repeat; }\n.wsf select:hover { border-color:var(--ink); }\n.wsf select:disabled { opacity:.55; cursor:default; }\n\n.wsf .scale { position:relative; height:7px; border-radius:4px; margin:16px 0 9px;\n  background:linear-gradient(to right,#1D4557 0%,#2F6B7E 30%,#7BA9AE 56%,#C9BE9C 80%,#E0A35C 100%); }\n.wsf .scale i { position:absolute; top:50%; left:var(--p,50%); width:15px; height:15px;\n  background:var(--bg); border:3px solid var(--ink); border-radius:50%;\n  transform:translate(-50%,-50%); box-shadow:0 1px 4px rgba(34,62,54,.3); }\n\n\/* ---------- cart\u00e3o de resultado ---------- *\/\n.wsf .result { position:sticky; top:20px; border:1px solid var(--line); border-radius:10px;\n  background:var(--bg); box-shadow:var(--shadow); overflow:hidden; }\n.wsf .result::before { content:''; display:block; height:4px; background:var(--ink); }\n@media (max-width:940px) { .wsf .result { position:static; } }\n.wsf .result-top { padding:24px 24px 20px; }\n.wsf .result-eyebrow { font-size:11px; font-weight:700; letter-spacing:.2em; text-transform:uppercase;\n  color:var(--dim); margin-bottom:16px; }\n.wsf .duo { display:grid; grid-template-columns:1.15fr 1fr; gap:16px; }\n.wsf .duo > div { min-width:0; }\n.wsf .duo-k { font-size:10.5px; font-weight:700; letter-spacing:.15em; text-transform:uppercase;\n  color:var(--dim); margin-bottom:6px; }\n.wsf .duo-v { font-family:'Lato',sans-serif; font-size:clamp(31px,4.6vw,48px); font-weight:900;\n  line-height:1; letter-spacing:-.035em; white-space:nowrap; transition:opacity .18s ease;\n  color:var(--ink); }\n.wsf .duo-v.sm { font-size:clamp(19px,2.6vw,24px); letter-spacing:-.005em; white-space:normal; color:var(--warn); }\n.wsf .duo-s { font-size:12.5px; color:var(--dim); margin-top:8px; line-height:1.45; }\n\n.wsf .badge { display:inline-flex; align-items:center; gap:7px; margin-top:20px;\n  border-radius:999px; padding:6px 12px 6px 10px; font-size:12.5px; font-weight:700; }\n.wsf .badge i { width:7px; height:7px; border-radius:50%; background:currentColor; flex:none; }\n.wsf .badge.ok   { color:var(--ok);   background:var(--ok-bg); }\n.wsf .badge.edge { color:var(--warn); background:var(--warn-bg); }\n.wsf .note { font-size:13.5px; color:var(--ocean); margin-top:12px; line-height:1.5; }\n.wsf .promo { display:flex; align-items:baseline; gap:9px; flex-wrap:wrap; margin-top:14px;\n  padding:10px 12px; border-radius:var(--r); background:var(--warn-bg); color:var(--warn);\n  font-size:13px; }\n.wsf .promo[hidden] { display:none; }\n.wsf .promo b { font-family:'Lato',sans-serif; font-size:10.5px; font-weight:900;\n  letter-spacing:.14em; text-transform:uppercase; }\n.wsf .promo s { opacity:.75; }\n.wsf .promo strong { font-weight:700; }\n.wsf .caveat { font-size:12.5px; color:var(--warn); background:var(--warn-bg); border-radius:var(--r);\n  padding:10px 12px; margin-top:14px; line-height:1.45; }\n\n.wsf .alt { margin-top:16px; padding-top:14px; border-top:1px solid var(--line-soft);\n  font-size:13px; color:var(--dim); }\n.wsf .alt a { color:var(--ink); font-weight:600; text-underline-offset:3px; }\n\n.wsf .addon { margin-top:12px; display:flex; align-items:baseline; gap:7px; flex-wrap:wrap;\n  font-size:12.5px; color:var(--dim); background:var(--surface); border-radius:var(--r);\n  padding:9px 11px; }\n.wsf .addon b { font-weight:700; color:var(--ocean); font-size:10.5px; letter-spacing:.12em;\n  text-transform:uppercase; }\n.wsf .addon a { color:var(--ink); font-weight:600; text-underline-offset:3px; }\n\n\/* \"Como cheg\u00e1mos aqui\" continua no c\u00f3digo, apenas n\u00e3o \u00e9 mostrado: expunha a\n   mec\u00e2nica interna (zonas, linha e coluna da tabela) a quem s\u00f3 quer comprar.\n   Para o voltar a mostrar: data-why=\"on\" no <div class=\"wsf\">. *\/\n.wsf[data-why=\"off\"] details.why { display:none; }\n.wsf details.why { margin-top:18px; border-top:1px solid var(--line-soft); padding-top:14px; }\n.wsf details.why summary { cursor:pointer; font-size:12.5px; font-weight:600; color:var(--dim); list-style:none; }\n.wsf details.why summary::-webkit-details-marker { display:none; }\n.wsf details.why summary::after { content:' \u2193'; }\n.wsf details.why[open] summary::after { content:' \u2191'; }\n.wsf details.why p { font-size:13px; color:var(--ocean); margin-top:10px; line-height:1.55; }\n\n.wsf .actions { border-top:1px solid var(--line-soft); background:var(--surface); padding:16px 24px 20px; }\n.wsf .cta { display:flex; align-items:center; justify-content:center; gap:10px; width:100%;\n  border:0; border-radius:var(--r); padding:15px 18px; cursor:pointer; background:var(--ink);\n  color:var(--on-ink); font-family:'Lato',sans-serif; font-size:13px; font-weight:900;\n  letter-spacing:.12em; text-transform:uppercase; text-decoration:none;\n  transition:transform .12s ease, filter .15s; }\n.wsf .cta:hover { filter:brightness(1.18); }\n.wsf .cta:active { transform:scale(.985); }\n.wsf .subactions { display:flex; gap:16px; margin-top:13px; flex-wrap:wrap; justify-content:center; }\n.wsf .link { background:none; border:0; padding:0; cursor:pointer; font-size:12.5px; font-weight:500;\n  color:var(--dim); text-decoration:underline; text-underline-offset:3px; transition:color .15s; }\n.wsf .link:hover { color:var(--ink); }\n\n\/* ---------- tabelas ---------- *\/\n\/* As tabelas continuam no HTML e a ser constru\u00eddas pelo script \u2014 apenas n\u00e3o\n   s\u00e3o mostradas. Demasiada informa\u00e7\u00e3o afastava o cliente da decis\u00e3o.\n   Para as voltar a mostrar: data-tables=\"on\" no <div class=\"wsf\">. *\/\n.wsf[data-tables=\"off\"] .tables { display:none; }\n.wsf .tables { margin-top:64px; border-top:1px solid var(--line); padding-top:32px; }\n.wsf .tabs { display:flex; gap:8px; margin-bottom:20px; flex-wrap:wrap; }\n.wsf .tabs button { border:1px solid var(--line); background:var(--bg); color:var(--dim);\n  border-radius:var(--r); padding:9px 16px; font-family:'Lato',sans-serif; font-size:11.5px;\n  font-weight:900; letter-spacing:.12em; text-transform:uppercase; cursor:pointer; transition:all .15s; }\n.wsf .tabs button:hover { color:var(--ink); border-color:var(--ink); }\n.wsf .tabs button[aria-selected=\"true\"] { background:var(--ink); border-color:var(--ink); color:var(--on-ink); }\n.wsf .nojs { margin:0 0 26px; padding:13px 15px; border-radius:var(--r);\n  background:var(--warn-bg); color:var(--warn); font-size:13.5px; line-height:1.5; }\n.wsf .nojs span { display:block; margin-top:4px; font-size:12px; opacity:.85; }\n.wsf .tbl-hint { font-size:12.5px; color:var(--dim); margin-bottom:12px; }\n.wsf .tbl-h { font-family:'Lato',sans-serif; font-size:12px; font-weight:900; letter-spacing:.14em;\n  text-transform:uppercase; color:var(--dim); margin:26px 0 10px; display:flex; align-items:center; gap:9px; }\n.wsf .tbl-h:first-of-type { margin-top:4px; }\n.wsf .tbl-h.on { color:var(--ink); }\n.wsf .tbl-h.on::after { content:''; width:7px; height:7px; border-radius:50%; background:var(--ocean); }\n.wsf .tbl-scroll { overflow-x:auto; -webkit-overflow-scrolling:touch; }\n.wsf table { width:100%; border-collapse:collapse; font-size:13px; min-width:540px; }\n.wsf th, .wsf td { padding:0; text-align:center; border-bottom:1px solid var(--line-soft); }\n.wsf thead th { font-family:'Lato',sans-serif; font-size:10.5px; font-weight:900;\n  letter-spacing:.14em; text-transform:uppercase; color:var(--ink);\n  background:var(--surface-2); border-bottom:2px solid var(--ink); padding:11px 6px; }\n.wsf tbody th { font-size:13px; font-weight:700; color:var(--ink); text-align:left; padding:10px 8px 10px 0; white-space:nowrap; }\n.wsf td { padding:2px; }\n.wsf .cellbtn { width:100%; border:0; background:transparent; cursor:pointer; padding:9px 4px;\n  border-radius:var(--r); font-size:13px; font-weight:600; color:var(--ocean);\n  font-family:inherit; transition:background .12s,color .12s; }\n.wsf .cellbtn:hover { background:var(--surface); color:var(--ink); }\n.wsf tbody th .cellbtn { font-weight:700; color:var(--ink); }\n.wsf td.na { color:var(--dim); padding:11px 4px; }\n.wsf .cellbtn[aria-pressed=\"true\"] { background:var(--ink); color:var(--on-ink); }\n.wsf tbody tr.on th { color:var(--ink); }\n.wsf tbody tr.on { background:var(--surface); }\n.wsf td.tcell { padding:11px 6px; color:var(--ocean); }\n.wsf tbody tr.zrow th .cellbtn { text-align:left; padding-left:0; white-space:nowrap; }\n\n\/* ---------- rodap\u00e9 ---------- *\/\n.wsf .foot { margin-top:48px; padding-top:24px; border-top:2px solid var(--ink);\n  display:flex; justify-content:space-between; gap:20px; flex-wrap:wrap; font-size:12.5px; color:var(--dim); }\n.wsf .foot strong { color:var(--ink); font-weight:700; }\n.wsf .foot a { color:var(--ink); text-underline-offset:3px; }\n.wsf .disclaimer { font-size:11.5px; color:var(--dim); margin-top:12px; max-width:80ch; line-height:1.5; }\n.wsf .disclaimer a { color:var(--ink); font-weight:600; text-underline-offset:3px; }\n.wsf .foot-eco { display:flex; align-items:flex-start; gap:9px; max-width:62ch; }\n.wsf .mark-sm { width:17px; height:auto; flex:none; color:var(--ink); opacity:.8; margin-top:1px; }\n.wsf .signature { margin-top:26px; padding-top:16px; border-top:1px solid var(--line-soft);\n  display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap;\n  font-family:'Lato',sans-serif; font-size:10.5px; font-weight:900; letter-spacing:.24em;\n  text-transform:uppercase; color:var(--ink); }\n.wsf .signature .coords { color:var(--dim); letter-spacing:.14em; }\n\n\/* ---------- barra fixa ---------- *\/\n.wsf .sticky { position:fixed; left:0; right:0; bottom:0; z-index:20; display:none;\n  align-items:center; gap:12px; padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px));\n  background:var(--bg); border-top:1px solid var(--line);\n  box-shadow:0 -6px 24px -14px rgba(34,62,54,.45);\n  transform:translateY(110%); visibility:hidden; transition:transform .25s ease, visibility 0s .25s; }\n.wsf .sticky.show { transform:translateY(0); visibility:visible; transition:transform .25s ease, visibility 0s 0s; }\n.wsf .sticky-txt { flex:1; min-width:0; }\n.wsf .sticky-k { font-size:10px; font-weight:700; letter-spacing:.15em; text-transform:uppercase; color:var(--dim); }\n.wsf .sticky-v { font-family:'Lato',sans-serif; font-size:16px; font-weight:900;\n  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }\n.wsf .sticky .cta { width:auto; padding:11px 16px; font-size:13.5px; flex:none; }\n@media (max-width:940px) { .wsf .sticky { display:flex; } .wsf .wrap { padding-bottom:92px; } }\n\n@media (prefers-reduced-motion: reduce) {\n  .wsf *, .wsf *::before, .wsf *::after { animation-duration:.001ms !important; transition-duration:.001ms !important; }\n}\n<\/style>\n\n<div class=\"wsf\" data-wsf-root\n data-shop=\"https:\/\/wildsuits.eu\"\n     data-email=\"contact@wildsuits.eu\"\n     data-url-sync=\"off\"\n     data-contact=\"https:\/\/wildsuits.eu\/contact\/\"\n     data-cart=\"direct\"\n     data-cart-url=\"https:\/\/wildsuits.eu\/panier\/\"\n     data-size-attr=\"attribute_pa_taille\"\n     data-tables=\"off\"\n     data-why=\"off\">\n\n  <!-- S\u00f3 aparece se o JavaScript n\u00e3o correr: pr\u00e9-visualiza\u00e7\u00e3o de anexos\n       (WhatsApp, Mail, Ficheiros no iPhone), leitores de documentos.\n       Num navegador normal, o script apaga-o de imediato. -->\n  <div class=\"nojs\" data-el=\"nojs\">\n    L\u2019aper\u00e7u de fichier n\u2019ex\u00e9cute pas l\u2019outil. Ouvre cette page dans un\n    navigateur (Safari, Chrome) ou sur le site : l\u00e0, \u00e7a fonctionne.\n    <span>This preview can\u2019t run the tool. Open it in a browser or on the website.<\/span>\n  <\/div>\n  <div class=\"wrap\">\n\n    <div class=\"topbar\">\n      <div class=\"brand\"><svg class=\"mark\" viewbox=\"0 0 80.3 59.7\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M 79.25 5.85 C 78.43 7.25 77.70 8.76 76.97 10.24 C 76.62 10.95 76.28 11.65 75.92 12.36 C 75.74 12.71 75.35 12.87 75.14 12.90 C 74.94 12.93 74.75 12.93 74.55 12.92 L 39.00 12.92 L 49.72 34.36 L 50.17 33.47 C 51.87 30.08 53.57 26.69 55.26 23.30 C 55.92 21.98 56.57 20.65 57.22 19.32 L 57.58 18.57 C 57.85 18.02 58.25 17.77 58.87 17.76 C 60.86 17.78 62.85 17.78 64.84 17.78 L 73.21 17.78 L 72.39 19.46 C 72.16 19.95 71.93 20.43 71.69 20.91 C 71.51 21.26 71.33 21.60 71.11 22.02 C 70.97 22.28 70.84 22.53 70.71 22.78 L 53.78 55.98 C 53.18 57.17 52.67 58.13 52.20 59.00 C 52.01 59.33 51.61 59.58 51.23 59.59 C 50.35 59.61 49.43 59.61 48.32 59.59 C 47.95 59.58 47.61 59.30 47.47 59.04 C 47.00 58.16 46.54 57.27 46.09 56.38 L 44.88 53.98 C 44.17 52.59 43.46 51.19 42.75 49.80 C 41.98 48.30 41.20 46.82 40.46 45.42 L 40.01 44.56 L 39.57 45.43 C 38.43 47.68 37.30 49.93 36.16 52.19 L 34.98 54.54 C 34.23 56.04 33.47 57.54 32.71 59.03 C 32.55 59.35 32.19 59.58 31.85 59.59 C 30.63 59.61 29.69 59.61 28.80 59.59 C 28.41 59.58 27.97 59.30 27.80 58.96 C 27.26 57.90 26.74 56.84 26.21 55.78 L 26.15 55.65 C 25.65 54.64 25.15 53.64 24.64 52.63 C 23.65 50.68 22.65 48.73 21.65 46.78 L 20.01 43.57 C 19.81 43.18 19.61 42.78 19.41 42.38 L 12.11 28.02 C 11.31 26.47 10.52 24.93 9.74 23.38 C 9.38 22.66 9.02 21.94 8.67 21.22 L 8.61 21.11 C 8.21 20.29 7.80 19.47 7.39 18.66 C 6.84 17.58 6.29 16.51 5.73 15.43 C 5.21 14.43 4.69 13.42 4.18 12.41 C 3.73 11.53 3.28 10.63 2.84 9.74 C 2.44 8.95 2.05 8.16 1.64 7.37 C 1.39 6.85 1.12 6.35 0.85 5.84 L 0.79 5.73 C 0.59 5.36 0.40 4.98 0.20 4.61 C 0.11 4.44 0.01 4.21 0.01 3.95 L 0.01 2.52 C 0.01 2.02 0.01 1.52 -0.00 1.02 C -0.00 0.69 0.08 0.45 0.26 0.27 C 0.43 0.09 0.67 -0.00 0.99 -0.00 L 5.54 0.01 C 7.86 0.01 10.17 0.01 12.48 0.02 C 12.93 0.02 13.26 0.37 13.38 0.61 C 14.84 3.47 16.28 6.34 17.72 9.22 C 18.95 11.67 20.18 14.12 21.40 16.58 L 23.86 21.51 C 24.78 23.35 25.70 25.20 26.62 27.04 C 27.51 28.82 28.40 30.60 29.31 32.39 L 30.30 34.36 L 30.73 33.40 C 30.90 33.00 31.08 32.60 31.26 32.21 C 31.55 31.59 31.86 30.92 32.22 30.29 L 32.36 30.05 C 32.49 29.79 32.36 29.53 32.27 29.37 C 32.06 28.97 31.84 28.57 31.62 28.18 C 31.32 27.63 31.02 27.09 30.74 26.53 C 30.25 25.55 29.76 24.56 29.28 23.58 L 29.18 23.39 C 28.71 22.44 28.24 21.48 27.76 20.53 C 26.72 18.46 25.66 16.39 24.60 14.33 L 19.71 4.77 C 19.59 4.54 19.53 4.32 19.53 4.11 L 19.53 2.80 C 19.53 2.22 19.53 1.63 19.52 1.04 C 19.51 0.69 19.60 0.43 19.80 0.24 C 19.98 0.07 20.25 -0.01 20.57 0.01 C 20.76 0.02 20.95 0.02 21.13 0.01 L 80.17 0.01 L 80.16 0.97 C 80.16 1.14 80.16 1.30 80.17 1.46 C 80.27 3.23 79.99 4.59 79.25 5.85 Z\" fill=\"currentColor\" fill-rule=\"evenodd\"\/><\/svg><span class=\"wordmark\">Wildsuits<\/span><span class=\"tagline\">On the wave, be wild<\/span><\/div>\n      <div class=\"switches\">\n        <div class=\"seg\" role=\"group\" data-role=\"lang\">\n          <button type=\"button\" data-lang=\"fr\" aria-pressed=\"true\">FR<\/button>\n          <button type=\"button\" data-lang=\"pt\" aria-pressed=\"false\">PT<\/button>\n          <button type=\"button\" data-lang=\"es\" aria-pressed=\"false\">ES<\/button>\n          <button type=\"button\" data-lang=\"en\" aria-pressed=\"false\">EN<\/button>\n        <\/div>\n        <div class=\"seg\" role=\"group\" data-role=\"units\">\n          <button type=\"button\" data-units=\"metric\" aria-pressed=\"true\">cm \u00b7 kg<\/button>\n          <button type=\"button\" data-units=\"imperial\" aria-pressed=\"false\">ft \u00b7 lb<\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"eyebrow\" data-i18n=\"eyebrow\">En 30 secondes<\/div>\n    <h1 data-i18n=\"h1\">Trouve ta combi.<\/h1>\n    <p class=\"lead\" data-i18n=\"lead\">Fini le stress de commander la mauvaise combi. Ta stature, ton poids, ton spot : on te trouve le perfect match.<\/p>\n\n    <div class=\"cols\">\n\n      <div role=\"group\" data-el=\"controls\">\n\n        <div class=\"field\">\n          <div class=\"field-head\">\n            <label class=\"label\" for=\"wsf-h\" data-i18n=\"height\">Taille (stature)<\/label>\n            <span class=\"numbox\">\n              <input id=\"wsf-h-num\" type=\"text\" inputmode=\"decimal\" value=\"178\" data-el=\"hNum\">\n              <span data-el=\"uH\">cm<\/span>\n            <\/span>\n          <\/div>\n          <div class=\"track\"><input type=\"range\" id=\"wsf-h\" min=\"160\" max=\"200\" step=\"1\" value=\"178\" data-el=\"hR\"><\/div>\n          <div class=\"ends\"><span data-el=\"eh0\">160 cm<\/span><span data-el=\"eh1\">200 cm<\/span><\/div>\n        <\/div>\n\n        <div class=\"field\">\n          <div class=\"field-head\">\n            <label class=\"label\" for=\"wsf-w\" data-i18n=\"weight\">Poids<\/label>\n            <span class=\"numbox\">\n              <input id=\"wsf-w-num\" type=\"text\" inputmode=\"decimal\" value=\"76\" data-el=\"wNum\">\n              <span data-el=\"uW\">kg<\/span>\n            <\/span>\n          <\/div>\n          <div class=\"track\"><input type=\"range\" id=\"wsf-w\" min=\"55\" max=\"105\" step=\"1\" value=\"76\" data-el=\"wR\"><\/div>\n          <div class=\"ends\"><span data-el=\"ew0\">55 kg<\/span><span data-el=\"ew1\">105 kg<\/span><\/div>\n        <\/div>\n\n        <div class=\"field\">\n          <div class=\"field-head\">\n            <span class=\"label\" id=\"wsf-fit-lbl\" data-i18n=\"fit\">Pr\u00e9f\u00e9rence de coupe<span class=\"opt\" data-i18n=\"optional\">\u00b7 facultatif<\/span><\/span>\n          <\/div>\n          <div class=\"chips\" role=\"group\" aria-labelledby=\"wsf-fit-lbl\" data-el=\"gFit\">\n            <button type=\"button\" class=\"chip\" data-fit=\"snug\" aria-pressed=\"true\" data-i18n=\"fit_snug\">Serr\u00e9e<\/button>\n            <button type=\"button\" class=\"chip\" data-fit=\"balanced\" aria-pressed=\"false\" data-i18n=\"fit_bal\">\u00c9quilibr\u00e9e<\/button>\n          <\/div>\n          <p class=\"help\" data-i18n=\"fit_help\">Une combi doit tomber comme une seconde peau. Pars sur du serr\u00e9 : le n\u00e9opr\u00e8ne a de la m\u00e9moire et s\u2019adapte vite. \u00c9quilibr\u00e9 si tu penses prendre du poids.<\/p>\n        <\/div>\n\n        <div class=\"field\">\n          <div class=\"field-head\">\n            <label class=\"label\" for=\"wsf-t\" data-i18n=\"water\">Eau<\/label>\n            <span class=\"numbox\">\n              <input id=\"wsf-t-num\" type=\"text\" inputmode=\"decimal\" value=\"16\" data-el=\"tNum\">\n              <span data-el=\"uT\">\u00b0C<\/span>\n            <\/span>\n          <\/div>\n          <div class=\"selects\">\n            <select data-el=\"spot\"><\/select>\n            <select data-el=\"month\"><\/select>\n          <\/div>\n          <div class=\"track\" style=\"height:24px\"><input type=\"range\" class=\"sea\" id=\"wsf-t\" min=\"6\" max=\"30\" step=\"1\" value=\"16\" data-el=\"tR\"><\/div>\n          <div class=\"ends\"><span data-el=\"et0\">6 \u00b0C<\/span><span data-el=\"et1\">30 \u00b0C<\/span><\/div>\n          <p class=\"help\" data-i18n=\"spot_help\">Moyennes approximatives de la surface. Tu connais la temp\u00e9rature exacte de ton spot ? Bouge le curseur pour une r\u00e9ponse encore plus pr\u00e9cise.<\/p>\n        <\/div>\n\n        <div class=\"field\">\n          <div class=\"field-head\">\n            <span class=\"label\" id=\"wsf-cold-lbl\" data-i18n=\"cold\">Tol\u00e9rance au froid<\/span>\n          <\/div>\n          <div class=\"chips\" role=\"group\" aria-labelledby=\"wsf-cold-lbl\" data-el=\"gCold\">\n            <button type=\"button\" class=\"chip\" data-cold=\"cold\" aria-pressed=\"false\" data-i18n=\"cold_c\">Je suis frileux<\/button>\n            <button type=\"button\" class=\"chip\" data-cold=\"normal\" aria-pressed=\"true\" data-i18n=\"cold_n\">Normale<\/button>\n            <button type=\"button\" class=\"chip\" data-cold=\"warm\" aria-pressed=\"false\" data-i18n=\"cold_w\">Je supporte bien<\/button>\n          <\/div>\n          <p class=\"help\" data-i18n=\"cold_help\">D\u00e9cale la recommandation d\u2019environ 2 \u00b0C. Si tes sessions durent en moyenne deux heures ou plus, on te conseille de te compter comme frileux.<\/p>\n        <\/div>\n\n      <\/div>\n\n      <div>\n        <div class=\"result\" data-el=\"card\">\n          <div class=\"result-top\">\n            <div class=\"result-eyebrow\" data-i18n=\"rec\">Ta recommandation<\/div>\n\n            <div class=\"duo\">\n              <div>\n                <div class=\"duo-k\" data-i18n=\"model\">Mod\u00e8le<\/div>\n                <div class=\"duo-v\" data-el=\"rModel\">4\/3 mm<\/div>\n                <div class=\"duo-s\" data-el=\"rModelS\"><\/div>\n              <\/div>\n              <div>\n                <div class=\"duo-k\" data-i18n=\"size\">Taille de combi<\/div>\n                <div class=\"duo-v\" data-el=\"rSize\">M<\/div>\n                <div class=\"duo-s\" data-el=\"rSizeS\"><\/div>\n              <\/div>\n            <\/div>\n\n            <div class=\"badge ok\" data-el=\"badge\"><i><\/i><span data-el=\"badgeT\">Encaixe seguro<\/span><\/div>\n            <div class=\"promo\" data-el=\"promo\" hidden><\/div>\n            <p class=\"note\" data-el=\"note\"><\/p>\n            <div class=\"caveat\" data-el=\"caveat\" hidden><\/div>\n            <div class=\"alt\" data-el=\"alt\"><\/div>\n            <div class=\"addon\" data-el=\"addon\"><\/div>\n\n            <details class=\"why\">\n              <summary data-i18n=\"why\">Comment on y arrive<\/summary>\n              <p data-el=\"why\"><\/p>\n            <\/details>\n          <\/div>\n\n          <div class=\"actions\">\n            <a class=\"cta\" data-el=\"cta\" href=\"#\"><span data-el=\"ctaT\">Ver fato<\/span><span aria-hidden=\"true\">\u2192<\/span><\/a>\n            <div class=\"subactions\">\n              <button type=\"button\" class=\"link\" data-el=\"copy\" data-i18n=\"copy\">Copier ma recommandation<\/button>\n              <a class=\"link\" data-el=\"mail\" href=\"#\" data-i18n=\"ask\">Nous \u00e9crire<\/a>\n            <\/div>\n          <\/div>\n        <\/div>\n        <p class=\"sr\" role=\"status\" aria-live=\"polite\" data-el=\"live\"><\/p>\n      <\/div>\n\n    <\/div>\n\n    <div class=\"tables\">\n      <div class=\"tabs\" role=\"tablist\" data-el=\"tabs\">\n        <button type=\"button\" role=\"tab\" data-el=\"tabSize\" data-tab=\"size\" aria-selected=\"true\" data-i18n=\"tab_size\">Guide des tailles<\/button>\n        <button type=\"button\" role=\"tab\" data-el=\"tabTemp\" data-tab=\"temp\" aria-selected=\"false\" data-i18n=\"tab_temp\">Eau et mod\u00e8le<\/button>\n      <\/div>\n\n      <div role=\"tabpanel\" data-el=\"pSize\">\n        <p class=\"tbl-hint\" data-i18n=\"tbl_hint\">Tableau officiel Wildsuits. Clique sur une taille pour essayer ce gabarit.<\/p>\n        <h3 class=\"tbl-h\" data-el=\"hFull\"><\/h3>\n        <div class=\"tbl-scroll\"><table data-el=\"tSize\"><thead><\/thead><tbody><\/tbody><\/table><\/div>\n        <h3 class=\"tbl-h\" data-el=\"hLight\"><\/h3>\n        <p class=\"tbl-hint\" data-el=\"lightHint\"><\/p>\n        <div class=\"tbl-scroll\"><table data-el=\"tLight\"><thead><\/thead><tbody><\/tbody><\/table><\/div>\n      <\/div>\n\n      <div role=\"tabpanel\" data-el=\"pTemp\" hidden>\n        <p class=\"tbl-hint\" data-i18n=\"tbl_hint2\">Clique sur une ligne pour aller \u00e0 cette temp\u00e9rature.<\/p>\n        <div class=\"tbl-scroll\"><table data-el=\"tTemp\"><thead><\/thead><tbody><\/tbody><\/table><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"foot\">\n      <span class=\"foot-eco\">\n        <svg class=\"mark-sm\" viewbox=\"0 0 80.3 59.7\" aria-hidden=\"true\" focusable=\"false\">\n          <path d=\"M 79.25 5.85 C 78.43 7.25 77.70 8.76 76.97 10.24 C 76.62 10.95 76.28 11.65 75.92 12.36 C 75.74 12.71 75.35 12.87 75.14 12.90 C 74.94 12.93 74.75 12.93 74.55 12.92 L 39.00 12.92 L 49.72 34.36 L 50.17 33.47 C 51.87 30.08 53.57 26.69 55.26 23.30 C 55.92 21.98 56.57 20.65 57.22 19.32 L 57.58 18.57 C 57.85 18.02 58.25 17.77 58.87 17.76 C 60.86 17.78 62.85 17.78 64.84 17.78 L 73.21 17.78 L 72.39 19.46 C 72.16 19.95 71.93 20.43 71.69 20.91 C 71.51 21.26 71.33 21.60 71.11 22.02 C 70.97 22.28 70.84 22.53 70.71 22.78 L 53.78 55.98 C 53.18 57.17 52.67 58.13 52.20 59.00 C 52.01 59.33 51.61 59.58 51.23 59.59 C 50.35 59.61 49.43 59.61 48.32 59.59 C 47.95 59.58 47.61 59.30 47.47 59.04 C 47.00 58.16 46.54 57.27 46.09 56.38 L 44.88 53.98 C 44.17 52.59 43.46 51.19 42.75 49.80 C 41.98 48.30 41.20 46.82 40.46 45.42 L 40.01 44.56 L 39.57 45.43 C 38.43 47.68 37.30 49.93 36.16 52.19 L 34.98 54.54 C 34.23 56.04 33.47 57.54 32.71 59.03 C 32.55 59.35 32.19 59.58 31.85 59.59 C 30.63 59.61 29.69 59.61 28.80 59.59 C 28.41 59.58 27.97 59.30 27.80 58.96 C 27.26 57.90 26.74 56.84 26.21 55.78 L 26.15 55.65 C 25.65 54.64 25.15 53.64 24.64 52.63 C 23.65 50.68 22.65 48.73 21.65 46.78 L 20.01 43.57 C 19.81 43.18 19.61 42.78 19.41 42.38 L 12.11 28.02 C 11.31 26.47 10.52 24.93 9.74 23.38 C 9.38 22.66 9.02 21.94 8.67 21.22 L 8.61 21.11 C 8.21 20.29 7.80 19.47 7.39 18.66 C 6.84 17.58 6.29 16.51 5.73 15.43 C 5.21 14.43 4.69 13.42 4.18 12.41 C 3.73 11.53 3.28 10.63 2.84 9.74 C 2.44 8.95 2.05 8.16 1.64 7.37 C 1.39 6.85 1.12 6.35 0.85 5.84 L 0.79 5.73 C 0.59 5.36 0.40 4.98 0.20 4.61 C 0.11 4.44 0.01 4.21 0.01 3.95 L 0.01 2.52 C 0.01 2.02 0.01 1.52 -0.00 1.02 C -0.00 0.69 0.08 0.45 0.26 0.27 C 0.43 0.09 0.67 -0.00 0.99 -0.00 L 5.54 0.01 C 7.86 0.01 10.17 0.01 12.48 0.02 C 12.93 0.02 13.26 0.37 13.38 0.61 C 14.84 3.47 16.28 6.34 17.72 9.22 C 18.95 11.67 20.18 14.12 21.40 16.58 L 23.86 21.51 C 24.78 23.35 25.70 25.20 26.62 27.04 C 27.51 28.82 28.40 30.60 29.31 32.39 L 30.30 34.36 L 30.73 33.40 C 30.90 33.00 31.08 32.60 31.26 32.21 C 31.55 31.59 31.86 30.92 32.22 30.29 L 32.36 30.05 C 32.49 29.79 32.36 29.53 32.27 29.37 C 32.06 28.97 31.84 28.57 31.62 28.18 C 31.32 27.63 31.02 27.09 30.74 26.53 C 30.25 25.55 29.76 24.56 29.28 23.58 L 29.18 23.39 C 28.71 22.44 28.24 21.48 27.76 20.53 C 26.72 18.46 25.66 16.39 24.60 14.33 L 19.71 4.77 C 19.59 4.54 19.53 4.32 19.53 4.11 L 19.53 2.80 C 19.53 2.22 19.53 1.63 19.52 1.04 C 19.51 0.69 19.60 0.43 19.80 0.24 C 19.98 0.07 20.25 -0.01 20.57 0.01 C 20.76 0.02 20.95 0.02 21.13 0.01 L 80.17 0.01 L 80.16 0.97 C 80.16 1.14 80.16 1.30 80.17 1.46 C 80.27 3.23 79.99 4.59 79.25 5.85 Z\" fill=\"currentColor\" fill-rule=\"evenodd\"\/>\n        <\/svg>\n        <span data-i18n=\"eco\">Toutes nos combinaisons sont en n\u00e9opr\u00e8ne Limestone, fabriqu\u00e9 \u00e0 partir de roche calcaire.<\/span>\n      <\/span>\n      <span data-el=\"footq\"><\/span>\n    <\/div>\n    <p class=\"disclaimer\" data-i18n=\"disclaimer\"><\/p>\n    <div class=\"signature\">\n      <span>On the wave, be wild<\/span>\n      <span class=\"coords\" data-el=\"coverage\"><\/span>\n    <\/div>\n  <\/div>\n\n  <div class=\"sticky\" data-el=\"sticky\" aria-hidden=\"true\">\n    <div class=\"sticky-txt\">\n      <div class=\"sticky-k\" data-i18n=\"rec\">Ta recommandation<\/div>\n      <div class=\"sticky-v\" data-el=\"sTxt\">4\/3 mm \u00b7 M<\/div>\n    <\/div>\n    <a class=\"cta\" data-el=\"sCta\" href=\"#\"><span data-i18n=\"see\">Voir<\/span><span aria-hidden=\"true\">\u2192<\/span><\/a>\n  <\/div>\n<\/div>\n\n<script>\n(function () {\n  'use strict';\n\n  \/* =========================================================================\n     1. DADOS \u2014 verificados em wildsuits.eu (cat\u00e1logo + guia de tamanhos)\n     ========================================================================= *\/\n\n  \/\/ Produtos reais. Os caminhos s\u00e3o os do site franc\u00eas; o TranslatePress\n  \/\/ redirecciona automaticamente para PT\/EN.\n  \/\/ id    = ID do produto no WooCommerce. NECESS\u00c1RIO para o carrinho directo.\n  \/\/         V\u00ea-se no admin do WooCommerce, na lista de produtos (coluna ID).\n  \/\/ price = pre\u00e7o a mostrar no bot\u00e3o, tal como deve aparecer (\"249 \u20ac\").\n  \/\/         Enquanto estiver vazio, o bot\u00e3o mant\u00e9m o texto sem pre\u00e7o.\n  \/\/ NENHUM destes valores foi inventado: ficam vazios at\u00e9 a Wildsuits os dar.\n  \/\/ id = produto pai no WooCommerce. price = pre\u00e7o de refer\u00eancia, usado s\u00f3\n  \/\/ quando n\u00e3o h\u00e1 tamanho (fora de tabela). O pre\u00e7o real de cada tamanho est\u00e1\n  \/\/ em VARIANTS, mais abaixo.\n  var P = {\n    w54h:    { path:'\/produit\/5-4mm-cagoule\/',              id:42684, price:'450 \u20ac' },\n    w54:     { path:'\/produit\/combinaison-5-4mm\/',          id:160,   price:'390 \u20ac' },\n    w43h:    { path:'\/produit\/4-3-mm-cagoule\/',             id:41793, price:'395 \u20ac' },\n    w43:     { path:'\/produit\/combinaison-4-3mm\/',          id:147,   price:'350 \u20ac' },\n    w43f:    { path:'\/produit\/combinaison-femme-4-3-mm\/',   id:42617, price:'350 \u20ac' },\n    w32:     { path:'\/produit\/combinaison-3-2-mm\/',         id:24,    price:'310 \u20ac' },\n    shortyL: { path:'\/produit\/shorty-manches-longues\/',     id:41798, price:'215 \u20ac' },  \/\/ mangas compridas + pernas curtas\n    shortyJL:{ path:'\/produit\/shorty-jambes-longues-neoprene\/', id:41800, price:'215 \u20ac' },\/\/ mangas curtas + pernas compridas\n    shortyC: { path:'\/produit\/shorty-neoprene\/',            id:41320, price:'190 \u20ac' },  \/\/ mangas curtas + pernas curtas\n    longjohn:{ path:'\/produit\/longjohn-neoprene\/',          id:41332, price:'190 \u20ac' },\n    top:     { path:'\/produit\/top-neoprene\/',               id:41326, price:'125 \u20ac' },\n    poncho:  { path:'\/produit\/poncho-eco-responsable\/',     id:37990, price:'80 \u20ac'  }\n  };\n\n  \/\/ VARIA\u00c7\u00d5ES: id, pre\u00e7o actual e, se estiver em saldo, o pre\u00e7o normal.\n  \/\/   [id, pre\u00e7o]                -> pre\u00e7o de sempre\n  \/\/   [id, pre\u00e7o, pre\u00e7o normal]  -> em saldo\n  \/\/ O pre\u00e7o N\u00c3O \u00e9 por produto: no mesmo modelo h\u00e1 tamanhos em saldo e\n  \/\/ tamanhos a pre\u00e7o cheio. Por isso vive aqui, ao n\u00edvel do tamanho.\n  \/\/ Fonte: export WooCommerce de 24\/08\/2026 (segunda vers\u00e3o, pre\u00e7os actualizados).\n  var VARIANTS = {\n    w54h:     {xs:[42685,450],s:[42686,450],st:[42687,450],ms:[42688,450],m:[42689,450],mt:[42690,450],ls:[42691,450],l:[42692,450],lt:[42693,450],xl:[42694,450],xxl:[43237,450]},\n    w54:      {xs:[161,390],s:[162,390],st:[41730,390],ms:[163,390],m:[164,390],mt:[165,390],ls:[166,390],l:[168,390],lt:[41729,390],xl:[169,390],xxl:[43240,390]},\n    w43h:     {xs:[41814,395],s:[41815,395],st:[41816,395],ms:[41817,395],m:[41818,395],mt:[41819,395],ls:[41820,395],l:[41821,395],lt:[41822,395],xl:[41823,395],xxl:[43238,395]},\n    w43:      {xs:[148,199,350],s:[149,199,350],st:[40395,350],ms:[150,199,350],m:[151,199,350],mt:[152,350],ls:[153,350],l:[154,350],lt:[156,199,350],xl:[155,199,350],xxl:[43241,350]},\n    w43f:     {xs:[43115,350],s:[43116,350],st:[43117,350],ms:[43235,350],m:[43118,350],mt:[43119,350],ls:[43236,350],l:[43120,350],lt:[43121,350],xl:[43129,350]},\n    w32:      {xs:[112,310],s:[113,310],st:[41732,310],ms:[115,310],m:[114,199,310],mt:[116,310],ls:[43242,310],l:[118,199,310],lt:[41733,310],xl:[119,310],xxl:[43243,310]},\n    shortyL:  {s:[41808,215],m:[41809,215],l:[41810,215],xl:[41811,215]},\n    shortyJL: {s:[41802,215],m:[41803,215],l:[41804,215],xl:[41805,215]},\n    shortyC:  {s:[41322,190],m:[41323,190],l:[41324,190],xl:[41325,190]},\n    longjohn: {s:[41333,190],m:[41334,190],l:[41335,190],xl:[41336,190]},\n    top:      {s:[41327,125],m:[41328,125],l:[41329,99,125],xl:[41330,125]}\n  };\n\n  \/\/ Tabela oficial (wildsuits.eu\/en\/size-guide\/). \u00daltimos escal\u00f5es inclusivos.\n  var CHART = {\n    heights: [[160,170],[170,180],[180,190],[190,200]],\n    weights: [[55,60],[60,70],[70,80],[80,90],[90,100],[100,105]],\n    grid: [\n      \/\/ coluna 80\u201390 kg: LS (\"Large Short\") \u00e9 para quem \u00e9 pesado mas n\u00e3o\n      \/\/ muito alto \u2014 cobre as linhas mais baixas, L s\u00f3 a partir dos 180 cm.\n      \/\/ coluna 100\u2013105 kg: o XXL passou a ser uma c\u00e9lula real da tabela, em\n      \/\/ vez do caso especial \"a confirmar\" que existia acima dos 100 kg.\n      \/\/ coluna 55\u201360 kg, linhas 180+: a tabela publicada estava vazia. ST\n      \/\/ (\"Small Tall\") \u00e9 exactamente isso \u2014 magro e alto. Preenchido aqui.\n      ['XS','S', 'M', 'LS','L', 'XXL'],\n      ['ST','MS','M', 'LS','XL','XXL'],\n      ['ST','ST','MT','L', 'XL','XXL'],\n      ['ST','MT','LT','XL','XL','XXL']\n    ]\n  };\n  \/\/ O XXL existe na loja (4\/3 mm) e passou a constar desta tabela.\n  \/\/ O XXL passou a ser uma coluna real da tabela (100\u2013105 kg), por isso este\n  \/\/ caso especial j\u00e1 n\u00e3o dispara. Fica como rede de seguran\u00e7a se um dia o\n  \/\/ limite de peso subir acima da \u00faltima coluna.\n  var XXL_ABOVE_KG = 105;\n\n  \/\/ ---------------------------------------------------------------------\n  \/\/ Segunda tabela: produtos de Ver\u00e3o em 2\/2 mm (shorties, long john, top).\n  \/\/ O neoprene 2\/2 estica muito mais, por isso a grelha \u00e9 bem mais curta \u2014\n  \/\/ quatro tamanhos, com escal\u00f5es que SE SOBREP\u00d5EM de prop\u00f3sito.\n  \/\/ N\u00e3o usa a grelha altura \u00d7 peso dos integrais.\n  \/\/ ---------------------------------------------------------------------\n  var LIGHT = [\n    { size:'S',  h:[164,171], w:[60,68] },\n    { size:'M',  h:[170,177], w:[67,77] },\n    { size:'L',  h:[176,183], w:[76,85] },\n    { size:'XL', h:[181,189], w:[84,Infinity] }\n  ];\n\n  \/\/ Produtos que seguem a tabela oficial altura \u00d7 peso (fatos integrais).\n  \/\/ Todos os outros seguem a tabela LIGHT.\n  var FULL_SUIT = { w54h:1, w54:1, w43h:1, w43:1, w43f:1, w32:1 };\n  function usesFullChart(prod){ return !!FULL_SUIT[prod]; }\n\n  \/\/ \u00c1gua \u2192 modelo. S\u00f3 produtos que a Wildsuits realmente vende.\n  \/\/ `extras` marca as zonas em que botas\/luvas fariam diferen\u00e7a \u2014 n\u00e3o \u00e9 mostrado\n  \/\/ em lado nenhum; est\u00e1 aqui s\u00f3 se um dia quiserem us\u00e1-lo.\n  \/\/ O poncho n\u00e3o \u00e9 um produto de surf \u2014 \u00e9 para o antes e o depois. Por isso\n  \/\/ n\u00e3o entra em nenhuma zona: aparece como complemento em todas (ver ADDON).\n  \/\/ Tabela \u00e1gua \u2192 produto fornecida pela Wildsuits.\n  \/\/ `equals` = op\u00e7\u00f5es com a MESMA validade t\u00e9rmica, \u00e0 escolha do cliente.\n  \/\/ `alt`    = o produto da zona vizinha, mais quente ou mais fresco.\n  var ZONES = [\n    { t:[6,9],   model:'5\/4 mm', prod:'w54h',    alt:'w54',  extras:true  },\n    { t:[9,12],  model:'5\/4 mm', prod:'w54',     alt:'w54h', extras:true  },\n    { t:[12,15], model:'4\/3 mm', prod:'w43',     alt:'w43h', extras:true  },\n    { t:[15,18], model:'3\/2 mm', prod:'w32',     equals:['w43'], alt:null, extras:false },\n    { t:[18,20], model:'3\/2 mm', prod:'w32',     alt:'shortyL', extras:false },\n    { t:[20,23], model:'Shorty', prod:'shortyL', equals:['shortyJL','shortyC','longjohn'], alt:'w32', extras:false },\n    { t:[23,24], model:'Shorty', prod:'shortyC', alt:'top',  extras:false },\n    { t:[24,31], model:null,     prod:'top',     alt:null,   extras:false }\n  ];\n\n  \/\/ Complemento sugerido em todas as zonas, com ou sem fato.\n  var ADDON = 'poncho';\n\n  \/\/ ---------------------------------------------------------------------\n  \/\/ \u00c1GUA POR ZONA MAR\u00cdTIMA\n  \/\/\n  \/\/ Dois blocos separados de prop\u00f3sito. Departamentos vizinhos partilham\n  \/\/ a mesma \u00e1gua \u2014 o Nord e o Pas-de-Calais n\u00e3o t\u00eam temperaturas\n  \/\/ diferentes. Por isso as 12 m\u00e9dias mensais vivem na ZONA, e cada\n  \/\/ divis\u00e3o administrativa aponta para uma zona.\n  \/\/\n  \/\/ Corrigir uma temperatura = mudar UMA linha em SEAS.\n  \/\/ Acrescentar um departamento = mudar UMA linha em AREAS.\n  \/\/\n  \/\/ ATEN\u00c7\u00c3O: estas m\u00e9dias s\u00e3o APROXIMADAS e n\u00e3o t\u00eam fonte publicada.\n  \/\/ A costa oeste ib\u00e9rica reflecte o upwelling de Ver\u00e3o. Havendo dados\n  \/\/ reais (NOAA OISST, Copernicus Marine, boias locais), substituir.\n  \/\/ ---------------------------------------------------------------------\n  var SEAS = {\n    'fr-nord':[7,6,7,9,12,15,17,18,17,15,12,9],\n    'fr-manche-e':[8,7,7,9,12,15,17,18,17,15,12,9],\n    'fr-manche-c':[9,8,8,10,12,15,17,18,17,15,12,10],\n    'fr-bzh-n':[10,9,9,11,13,15,17,18,17,15,13,11],\n    'fr-bzh-o':[11,10,10,11,13,15,16,17,17,15,13,12],\n    'fr-bzh-s':[11,10,10,12,14,16,18,19,18,16,14,12],\n    'fr-vendee':[11,10,11,12,15,18,20,21,20,17,14,12],\n    'fr-gironde':[12,11,11,13,15,18,20,21,20,18,15,13],\n    'fr-basque':[13,12,12,13,15,18,20,21,21,19,17,15],\n    'fr-lion':[13,12,13,14,17,21,23,24,22,19,17,14],\n    'fr-provence':[13,13,13,15,17,21,23,24,22,20,17,15],\n    'fr-azur':[14,13,14,15,18,21,24,25,23,21,18,15],\n    'fr-corse':[14,13,14,15,18,22,24,26,24,21,18,16],\n    'es-vasco':[13,12,12,13,15,18,20,21,21,19,16,14],\n    'es-asturias':[13,12,12,13,15,17,19,20,20,18,16,14],\n    'es-galicia-n':[13,12,12,13,14,16,18,19,19,17,15,14],\n    'es-galicia-s':[13,13,13,14,15,17,18,19,19,18,16,14],\n    'es-cadiz':[16,15,16,17,18,20,21,22,22,21,19,17],\n    'es-malaga':[16,15,16,17,19,21,23,24,23,21,19,17],\n    'es-almeria':[15,14,15,16,18,21,24,25,24,21,18,16],\n    'es-valencia':[14,13,14,16,18,22,24,26,24,21,18,16],\n    'es-catalunya':[13,12,13,14,17,21,24,25,23,20,17,15],\n    'es-balears':[15,14,14,15,18,22,25,26,24,22,19,16],\n    'es-canarias':[19,18,18,19,20,21,22,23,24,23,22,20],\n    'pt-norte':[14,13,13,14,14,15,16,17,17,17,16,15],\n    'pt-centro':[14,14,14,14,15,16,16,17,18,18,16,15],\n    'pt-lisboa':[15,15,15,16,16,17,18,19,19,19,17,16],\n    'pt-alentejo':[15,15,15,15,16,17,17,18,19,19,18,16],\n    'pt-algarve':[16,16,16,17,18,20,21,22,22,21,19,17],\n    'pt-madeira':[19,18,18,18,19,21,22,23,24,23,22,20],\n    'pt-acores':[18,17,17,17,18,20,22,23,23,22,20,19],\n    'uk-sw':[11,10,10,11,13,15,17,18,17,16,14,12],\n    'uk-south':[8,7,8,10,12,15,17,18,17,15,12,10],\n    'uk-wales':[9,8,8,10,12,14,16,17,16,14,12,10],\n    'uk-nw':[8,7,7,9,11,14,16,17,16,14,11,9],\n    'uk-ne':[7,6,6,8,10,12,15,16,15,13,11,9],\n    'uk-scotland':[8,7,7,8,10,12,13,14,14,12,10,9],\n    'ie-west':[10,9,9,10,11,13,15,16,15,14,12,11],\n    'ie-southeast':[10,9,9,10,12,14,15,16,16,14,12,11],\n    'be-nl':[6,5,6,9,12,15,17,18,17,15,12,9],\n    'de-nordsee':[5,4,5,8,11,15,17,18,17,14,10,7],\n    'dk-baltic':[4,3,3,6,10,14,17,18,16,13,9,6],\n    'no-south':[6,5,5,7,10,13,15,16,15,13,10,8],\n    'se-west':[4,3,3,6,10,14,17,18,16,13,9,6],\n    'it-tirreno':[14,13,14,15,18,22,24,25,24,21,18,16],\n    'it-adriatico':[11,10,11,14,18,22,25,26,24,20,17,13],\n    'it-sud':[15,15,15,16,19,23,25,27,25,22,19,17],\n    'hr-adriatico':[13,12,13,15,19,23,25,26,24,21,18,15],\n    'gr-egee':[16,15,15,17,20,23,25,26,25,22,20,18],\n    'gr-ionien':[16,15,16,17,20,23,25,26,25,22,20,18],\n    'cy-mt':[18,17,17,19,21,25,27,28,27,25,22,20]\n  };\n\n  \/\/ Pa\u00eds ISO, nome da divis\u00e3o costeira, zona mar\u00edtima\n  var AREAS = [\n    ['FR','Nord (59)','fr-nord'],\n    ['FR','Pas-de-Calais (62)','fr-nord'],\n    ['FR','Somme (80)','fr-manche-e'],\n    ['FR','Seine-Maritime (76)','fr-manche-e'],\n    ['FR','Calvados (14)','fr-manche-c'],\n    ['FR','Manche (50)','fr-manche-c'],\n    ['FR','Ille-et-Vilaine (35)','fr-bzh-n'],\n    ['FR','C\u00f4tes-d\u2019Armor (22)','fr-bzh-n'],\n    ['FR','Finist\u00e8re (29)','fr-bzh-o'],\n    ['FR','Morbihan (56)','fr-bzh-s'],\n    ['FR','Loire-Atlantique (44)','fr-bzh-s'],\n    ['FR','Vend\u00e9e (85)','fr-vendee'],\n    ['FR','Charente-Maritime (17)','fr-vendee'],\n    ['FR','Gironde (33)','fr-gironde'],\n    ['FR','Landes (40)','fr-basque'],\n    ['FR','Pyr\u00e9n\u00e9es-Atlantiques (64)','fr-basque'],\n    ['FR','Pyr\u00e9n\u00e9es-Orientales (66)','fr-lion'],\n    ['FR','Aude (11)','fr-lion'],\n    ['FR','H\u00e9rault (34)','fr-lion'],\n    ['FR','Gard (30)','fr-lion'],\n    ['FR','Bouches-du-Rh\u00f4ne (13)','fr-provence'],\n    ['FR','Var (83)','fr-provence'],\n    ['FR','Alpes-Maritimes (06)','fr-azur'],\n    ['FR','Corse-du-Sud (2A)','fr-corse'],\n    ['FR','Haute-Corse (2B)','fr-corse'],\n    ['ES','Gipuzkoa','es-vasco'],\n    ['ES','Bizkaia','es-vasco'],\n    ['ES','Cantabria','es-vasco'],\n    ['ES','Asturias','es-asturias'],\n    ['ES','Lugo','es-galicia-n'],\n    ['ES','A Coru\u00f1a','es-galicia-n'],\n    ['ES','Pontevedra','es-galicia-s'],\n    ['ES','Huelva','es-cadiz'],\n    ['ES','C\u00e1diz','es-cadiz'],\n    ['ES','M\u00e1laga','es-malaga'],\n    ['ES','Granada','es-malaga'],\n    ['ES','Almer\u00eda','es-almeria'],\n    ['ES','Murcia','es-almeria'],\n    ['ES','Alicante','es-valencia'],\n    ['ES','Valencia','es-valencia'],\n    ['ES','Castell\u00f3n','es-valencia'],\n    ['ES','Tarragona','es-catalunya'],\n    ['ES','Barcelona','es-catalunya'],\n    ['ES','Girona','es-catalunya'],\n    ['ES','Illes Balears','es-balears'],\n    ['ES','Las Palmas','es-canarias'],\n    ['ES','Santa Cruz de Tenerife','es-canarias'],\n    ['PT','Viana do Castelo','pt-norte'],\n    ['PT','Braga','pt-norte'],\n    ['PT','Porto','pt-norte'],\n    ['PT','Aveiro','pt-centro'],\n    ['PT','Coimbra','pt-centro'],\n    ['PT','Leiria','pt-centro'],\n    ['PT','Lisboa','pt-lisboa'],\n    ['PT','Set\u00fabal','pt-alentejo'],\n    ['PT','Beja','pt-alentejo'],\n    ['PT','Faro','pt-algarve'],\n    ['PT','Madeira','pt-madeira'],\n    ['PT','A\u00e7ores','pt-acores'],\n    ['GB','Cornwall','uk-sw'],\n    ['GB','Devon','uk-sw'],\n    ['GB','Dorset','uk-south'],\n    ['GB','Hampshire','uk-south'],\n    ['GB','Isle of Wight','uk-south'],\n    ['GB','West Sussex','uk-south'],\n    ['GB','East Sussex','uk-south'],\n    ['GB','Kent','uk-south'],\n    ['GB','Essex','uk-south'],\n    ['GB','Suffolk','uk-ne'],\n    ['GB','Norfolk','uk-ne'],\n    ['GB','Lincolnshire','uk-ne'],\n    ['GB','East Riding of Yorkshire','uk-ne'],\n    ['GB','North Yorkshire','uk-ne'],\n    ['GB','Durham','uk-ne'],\n    ['GB','Northumberland','uk-ne'],\n    ['GB','Somerset','uk-sw'],\n    ['GB','Merseyside','uk-nw'],\n    ['GB','Lancashire','uk-nw'],\n    ['GB','Cumbria','uk-nw'],\n    ['GB','Pembrokeshire','uk-wales'],\n    ['GB','Ceredigion','uk-wales'],\n    ['GB','Gwynedd','uk-wales'],\n    ['GB','Swansea \u00b7 Gower','uk-wales'],\n    ['GB','Highland','uk-scotland'],\n    ['GB','Argyll and Bute','uk-scotland'],\n    ['GB','Aberdeenshire','uk-scotland'],\n    ['GB','Fife','uk-scotland'],\n    ['GB','Outer Hebrides','uk-scotland'],\n    ['GB','Orkney \u00b7 Shetland','uk-scotland'],\n    ['GB','County Antrim','ie-southeast'],\n    ['GB','County Down','ie-southeast'],\n    ['IE','Donegal','ie-west'],\n    ['IE','Sligo','ie-west'],\n    ['IE','Mayo','ie-west'],\n    ['IE','Galway','ie-west'],\n    ['IE','Clare','ie-west'],\n    ['IE','Kerry','ie-west'],\n    ['IE','Cork','ie-southeast'],\n    ['IE','Waterford','ie-southeast'],\n    ['IE','Wexford','ie-southeast'],\n    ['IE','Wicklow','ie-southeast'],\n    ['IE','Dublin','ie-southeast'],\n    ['BE','Flandre-Occidentale','be-nl'],\n    ['NL','Zeeland','be-nl'],\n    ['NL','Zuid-Holland','be-nl'],\n    ['NL','Noord-Holland','be-nl'],\n    ['NL','Friesland','be-nl'],\n    ['DE','Niedersachsen \u00b7 Mer du Nord','de-nordsee'],\n    ['DE','Schleswig-Holstein \u00b7 Mer du Nord','de-nordsee'],\n    ['DE','Schleswig-Holstein \u00b7 Baltique','dk-baltic'],\n    ['DE','Mecklenburg-Vorpommern','dk-baltic'],\n    ['DK','Jutland \u00b7 Mer du Nord','de-nordsee'],\n    ['DK','Sj\u00e6lland \u00b7 Baltique','dk-baltic'],\n    ['NO','Rogaland','no-south'],\n    ['NO','Vestland','no-south'],\n    ['NO','Agder','no-south'],\n    ['SE','Bohusl\u00e4n \u00b7 V\u00e4stra G\u00f6taland','se-west'],\n    ['SE','Sk\u00e5ne','dk-baltic'],\n    ['IT','Liguria','it-tirreno'],\n    ['IT','Toscana','it-tirreno'],\n    ['IT','Lazio','it-tirreno'],\n    ['IT','Campania','it-tirreno'],\n    ['IT','Emilia-Romagna','it-adriatico'],\n    ['IT','Marche','it-adriatico'],\n    ['IT','Abruzzo','it-adriatico'],\n    ['IT','Puglia','it-adriatico'],\n    ['IT','Calabria','it-sud'],\n    ['IT','Sicilia','it-sud'],\n    ['IT','Sardegna','it-sud'],\n    ['SI','Primorska','hr-adriatico'],\n    ['HR','Istra','hr-adriatico'],\n    ['HR','Dalmacija','hr-adriatico'],\n    ['ME','Montenegro','hr-adriatico'],\n    ['GR','Attique \u00b7 Cyclades','gr-egee'],\n    ['GR','Cr\u00e8te','gr-egee'],\n    ['GR','Dod\u00e9can\u00e8se','gr-egee'],\n    ['GR','Corfou \u00b7 Ionienne','gr-ionien'],\n    ['GR','P\u00e9loponn\u00e8se','gr-ionien'],\n    ['MT','Malta','cy-mt'],\n    ['CY','Cyprus','cy-mt']\n  ];\n\n  \/\/ Ordem de apresenta\u00e7\u00e3o dos pa\u00edses no menu\n  var COUNTRY_ORDER = ['PT','FR','ES','GB','IE','BE','NL','DE','DK','NO','SE','IT','SI','HR','ME','GR','MT','CY'];\n\n  function areaIndex(name){\n    for (var i=0;i<AREAS.length;i++) if (AREAS[i][1] === name) return i;\n    return '-';\n  }\n  function areaSea(name){\n    for (var i=0;i<AREAS.length;i++) if (AREAS[i][1] === name) return SEAS[AREAS[i][2]];\n    return null;\n  }\n\n  var LIMITS = { h:[160,200], w:[55,105], t:[6,30] };\n\n  \/* =========================================================================\n     2. TEXTOS\n     ========================================================================= *\/\n\n  var T = {\n    pt: {\n      eyebrow:'Em 30 segundos', h1:'Encontra o teu fato.',\n      lead:'Acabou o stress de encomendar o fato errado. A tua altura, o teu peso, o teu spot: encontramos o teu perfect match.',\n      height:'Altura', weight:'Peso', water:'\u00c1gua', optional:'\u00b7 opcional',\n      fit:'Prefer\u00eancia de encaixe', fit_snug:'Justo', fit_bal:'Equilibrado',\n      fit_help:'Um fato deve assentar como segunda pele. Vai pelo justo: o neoprene tem mem\u00f3ria e adapta-se depressa. Equilibrado se contas ganhar peso.',\n      cold:'Toler\u00e2ncia ao frio', cold_c:'Sou friorento', cold_n:'Normal', cold_w:'Aguento bem',\n      cold_help:'Desloca a recomenda\u00e7\u00e3o cerca de 2 \u00b0C. Se as tuas sess\u00f5es duram em m\u00e9dia duas horas ou mais, aconselhamos-te a contar como friorento.',\n      spot_custom:'Temperatura manual',\n      countries:{PT:'Portugal',FR:'Fran\u00e7a',ES:'Espanha',GB:'Reino Unido',IE:'Irlanda',BE:'B\u00e9lgica',NL:'Pa\u00edses Baixos',DE:'Alemanha',DK:'Dinamarca',NO:'Noruega',SE:'Su\u00e9cia',IT:'It\u00e1lia',SI:'Eslov\u00e9nia',HR:'Cro\u00e1cia',ME:'Montenegro',GR:'Gr\u00e9cia',MT:'Malta',CY:'Chipre'},\n      spot_help:'M\u00e9dias aproximadas da superf\u00edcie do mar. Sabes a temperatura exacta do teu spot? Ajusta o cursor para uma resposta ainda mais precisa.',\n      rec:'A tua recomenda\u00e7\u00e3o', model:'Modelo', size:'Tamanho',\n      why:'Como cheg\u00e1mos aqui', copy:'Copiar a minha recomenda\u00e7\u00e3o', copied:'Link copiado \u2713',\n      ask:'Falar connosco', see:'Ver', alt_label:'Tamb\u00e9m serve:', equal_label:'\u00c0 mesma temperatura, \u00e0 escolha:',\n      addon_label:'A juntar', addon_note:'Para te trocares no parque de estacionamento e ficares quente:',\n      tab_size:'Tabela de tamanhos', tab_temp:'\u00c1gua e modelo',\n      tbl_hint:'Tabela oficial Wildsuits. Clica num tamanho para experimentar esse corpo.',\n      tbl_hint2:'Clica numa linha para saltar para essa temperatura.',\n      th_hw:'Altura \\\\ Peso', th_temp:'Temperatura', th_model:'Modelo',\n      th_size:'Tamanho', th_height:'Altura', th_weight:'Peso',\n      chart_full_h:'Fatos integrais e com capuz',\n      chart_light_h:'Shorties, long john e top \u00b7 2\/2 mm',\n      chart_light_hint:'O neoprene 2\/2 mm estica muito mais e adapta-se \u00e0 morfologia, por isso bastam quatro tamanhos. Os escal\u00f5es sobrep\u00f5em-se de prop\u00f3sito: se ca\u00edres em dois, \u00e9 a prefer\u00eancia de encaixe que decide.',\n      eco:'Todos os nossos fatos s\u00e3o em neoprene Limestone, feito a partir de rocha calc\u00e1ria.',\n      coverage:'Wildsuits, keeping you warm since 2016',\n      footq:'Nada te serve?', footcta:'Falamos contigo \u2192', contact_link:'Fala connosco',\n      ok:'\u00c9 o teu tamanho', edge:'Dois tamanhos poss\u00edveis', confirm:'A confirmar', custom:'Falamos contigo',\n      ok_note:'Cais em cheio dentro deste tamanho. Podes encomendar sem hesitar.',\n      light_ok_note:'O 2\/2 mm estica muito e molda-se ao corpo. Este tamanho \u00e9 o teu.',\n      light_near_note:'O {a} \u00e9 o teu tamanho. Neste neoprene o peso manda mais do que a altura.',\n      why_light:'\u00c1gua a {t} {u}{off} \u2192 zona {z} \u2192 {model}. {h} {uh} e {w} {uw} \u2192 tabela 2\/2 mm (quatro tamanhos) \u2192 {size}.',\n      edge_note:'Ficas entre o {a} e o {b}. ',\n      snug_note:'Como preferes justo, vamos de {a}. Mais quente, com menos \u00e1gua a circular.',\n      bal_low:'Se gostas de fatos bem colados ao corpo, o {b} tamb\u00e9m te serve.',\n      bal_high:'Se costumas ficar apertado nos ombros ou no peito, o {b} tamb\u00e9m te serve.',\n      xxl_note:'A tabela publicada da Wildsuits vai at\u00e9 aos 100 kg, mas o XXL existe no 4\/3 mm. Confirma connosco antes de comprares.',\n      oob_note:'A tua combina\u00e7\u00e3o fica fora da tabela publicada. O mais pr\u00f3ximo \u00e9 o {a}. Fala connosco antes de decidires.',\n      gap_note:'Esta combina\u00e7\u00e3o n\u00e3o tem tamanho de s\u00e9rie na tabela. O mais pr\u00f3ximo \u00e9 o {a}. Fala connosco.',\n      t_edge:'Est\u00e1s a {t} {u} da fronteira com {b}. Se as tuas sess\u00f5es duram duas horas ou mais em m\u00e9dia, n\u00e3o hesites: escolhe o modelo mais quente.',\n      promo_label:'Destock', promo_note:'{price} em vez de {regular}. N\u00e3o \u00e9 o pre\u00e7o de sempre: aproveita.', t_edge_promo:'Est\u00e1s a {t} {u} da fronteira com {b}, que est\u00e1 em destock a {price} em vez de {regular}. Mais quente e mais barata: se as tuas sess\u00f5es duram duas horas ou mais, \u00e9 a escolha \u00f3bvia.',\n      women_note:'Este modelo tamb\u00e9m existe em corte de senhora.',\n      cta:'Escolher {name}', cta_price:'Ver {name} \u00b7 {price}', cta_cart:'Juntar ao carrinho', cta_custom:'Falar connosco',\n      no_suit:'Sem fato',\n      why_txt:'\u00c1gua a {t} {u}{off} \u2192 zona {z} \u2192 {model}. {h} {uh} e {w} {uw} \u2192 linha {hr}, coluna {wr} da tabela \u2192 {size}.',\n      why_off:' (ajustada {sign}2\u00b0 pela toler\u00e2ncia ao frio)',\n      mail_sub:'Ajuda com o tamanho',\n      mail_body:'Ol\u00e1 Wildsuits,\\n\\nA vossa ferramenta sugeriu: {model}, tamanho {size}.\\nOs meus dados: {h} cm, {w} kg, \u00e1gua a {t} \u00b0C.\\n\\nQueria confirmar antes de comprar.\\n\\nObrigado,',\n      disclaimer:'Recomenda\u00e7\u00e3o orientativa. As temperaturas por spot s\u00e3o m\u00e9dias hist\u00f3ricas aproximadas da superf\u00edcie do mar e podem variar v\u00e1rios graus com upwelling, vento e \u00e9poca do ano. Tens d\u00favidas? {contact}, aconselhamos-te.',\n      months:['Janeiro','Fevereiro','Mar\u00e7o','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],\n      zsub:['\u00c1gua gelada. O capuz n\u00e3o \u00e9 opcional.','\u00c1gua muito fria. Integral espessa.','\u00c1gua fria. Integral cl\u00e1ssica.','\u00c1gua fresca. A espessura fica \u00e0 tua escolha.','\u00c1gua temperada. Integral leve.','\u00c1gua amena. Quatro cortes, o mesmo calor.','\u00c1gua quente. Bra\u00e7os e pernas livres.','\u00c1gua tropical. Cal\u00e7\u00f5es bastam.'],\n      prod:{w54h:'Fato 5\/4 mm com capuz',w54:'Fato 5\/4 mm',w43h:'Fato 4\/3 mm com capuz',w43:'Fato 4\/3 mm',w43f:'Fato 4\/3 mm de senhora',w32:'Fato 3\/2 mm',shortyL:'Shorty de mangas compridas',shortyJL:'Shorty de pernas compridas',shortyC:'Shorty curto',longjohn:'Long John de neoprene',top:'Top de neoprene',poncho:'Poncho eco'},\n      sizes:{XS:'Corte ajustado, estrutura ligeira.',S:'Corte regular, estrutura ligeira.',MS:'Corte regular, tronco mais curto.',M:'Corte regular, standard.',LS:'Corte largo, tronco mais curto.',L:'Corte largo, standard.',XL:'Corte largo, estrutura forte.',XXL:'O maior tamanho de s\u00e9rie.',ST:'Small Tall. Alto e magro.',MT:'Medium Tall. Alto, estrutura m\u00e9dia.',LT:'Large Tall. Alto e robusto.'}\n    },\n    fr: {\n      eyebrow:'En 30 secondes', h1:'Trouve ta combi.',\n      lead:'Fini le stress de commander la mauvaise combi. Ta stature, ton poids, ton spot : on te trouve le perfect match.',\n      height:'Taille (stature)', weight:'Poids', water:'Eau', optional:'\u00b7 facultatif',\n      fit:'Pr\u00e9f\u00e9rence de coupe', fit_snug:'Serr\u00e9e', fit_bal:'\u00c9quilibr\u00e9e',\n      fit_help:'Une combi doit tomber comme une seconde peau. Pars sur du serr\u00e9 : le n\u00e9opr\u00e8ne a de la m\u00e9moire et s\u2019adapte vite. \u00c9quilibr\u00e9 si tu penses prendre du poids.',\n      cold:'Tol\u00e9rance au froid', cold_c:'Je suis frileux', cold_n:'Normale', cold_w:'Je supporte bien',\n      cold_help:'D\u00e9cale la recommandation d\u2019environ 2 \u00b0C. Si tes sessions durent en moyenne deux heures ou plus, on te conseille de te compter comme frileux.',\n      spot_custom:'Temp\u00e9rature manuelle',\n      countries:{PT:'Portugal',FR:'France',ES:'Espagne',GB:'Royaume-Uni',IE:'Irlande',BE:'Belgique',NL:'Pays-Bas',DE:'Allemagne',DK:'Danemark',NO:'Norv\u00e8ge',SE:'Su\u00e8de',IT:'Italie',SI:'Slov\u00e9nie',HR:'Croatie',ME:'Mont\u00e9n\u00e9gro',GR:'Gr\u00e8ce',MT:'Malte',CY:'Chypre'},\n      spot_help:'Moyennes approximatives de la surface. Tu connais la temp\u00e9rature exacte de ton spot ? Bouge le curseur pour une r\u00e9ponse encore plus pr\u00e9cise.',\n      rec:'Ta recommandation', model:'Mod\u00e8le', size:'Taille de combi',\n      why:'Comment on y arrive', copy:'Copier ma recommandation', copied:'Lien copi\u00e9 \u2713',\n      ask:'Nous \u00e9crire', see:'Voir', alt_label:'Va aussi :', equal_label:'\u00c0 la m\u00eame temp\u00e9rature, au choix :',\n      addon_label:'\u00c0 ajouter', addon_note:'Pour te changer sur le parking et rester au chaud :',\n      tab_size:'Guide des tailles', tab_temp:'Eau et mod\u00e8le',\n      tbl_hint:'Tableau officiel Wildsuits. Clique sur une taille pour essayer ce gabarit.',\n      tbl_hint2:'Clique sur une ligne pour aller \u00e0 cette temp\u00e9rature.',\n      th_hw:'Stature \\\\ Poids', th_temp:'Temp\u00e9rature', th_model:'Mod\u00e8le',\n      th_size:'Taille', th_height:'Stature', th_weight:'Poids',\n      chart_full_h:'Combinaisons int\u00e9grales et \u00e0 cagoule',\n      chart_light_h:'Shorties, long john et top \u00b7 2\/2 mm',\n      chart_light_hint:'Le n\u00e9opr\u00e8ne 2\/2 mm est bien plus stretch et \u00e9pouse la morphologie : quatre tailles suffisent. Les \u00e9chelons se chevauchent volontairement : si tu tombes dans deux, c\u2019est la pr\u00e9f\u00e9rence de coupe qui tranche.',\n      eco:'Toutes nos combinaisons sont en n\u00e9opr\u00e8ne Limestone, fabriqu\u00e9 \u00e0 partir de roche calcaire.',\n      coverage:'Wildsuits, keeping you warm since 2016',\n      footq:'Rien ne colle ?', footcta:'Parle-nous \u2192', contact_link:'Contacte-nous',\n      ok:'C\u2019est ta taille', edge:'Deux tailles possibles', confirm:'\u00c0 confirmer', custom:'Parlons-en',\n      ok_note:'Tu tombes en plein dans cette taille. Tu peux commander les yeux ferm\u00e9s.',\n      light_ok_note:'Le 2\/2 mm est ultra stretch et \u00e9pouse le corps. Cette taille est la bonne.',\n      light_near_note:'Le {a} est ta taille. Sur ce n\u00e9opr\u00e8ne, le poids compte plus que la stature.',\n      why_light:'Eau \u00e0 {t} {u}{off} \u2192 zone {z} \u2192 {model}. {h} {uh} et {w} {uw} \u2192 tableau 2\/2 mm (quatre tailles) \u2192 {size}.',\n      edge_note:'Tu es entre le {a} et le {b}. ',\n      snug_note:'Comme tu pr\u00e9f\u00e8res serr\u00e9, on part sur le {a}. Plus chaud, moins d\u2019eau qui circule.',\n      bal_low:'Si tu aimes les combis bien collantes, le {b} te va aussi.',\n      bal_high:'Si tu es souvent serr\u00e9 aux \u00e9paules ou au torse, le {b} te va aussi.',\n      xxl_note:'Le tableau publi\u00e9 s\u2019arr\u00eate \u00e0 100 kg, mais le XXL existe en 4\/3 mm. Confirme avec nous avant d\u2019acheter.',\n      oob_note:'Ta combinaison sort du tableau publi\u00e9. Le plus proche est le {a}. Parle-nous avant de d\u00e9cider.',\n      gap_note:'Cette combinaison n\u2019a pas de taille de s\u00e9rie dans le tableau. Le plus proche est le {a}. Parle-nous.',\n      t_edge:'Tu es \u00e0 {t} {u} de la fronti\u00e8re avec {b}. Si tes sessions durent deux heures ou plus en moyenne, n\u2019h\u00e9site pas : prends le mod\u00e8le le plus chaud.',\n      promo_label:'D\u00e9stockage', promo_note:'{price} au lieu de {regular}. Ce n\u2019est pas le prix habituel, profites-en.', t_edge_promo:'Tu es \u00e0 {t} {u} de la fronti\u00e8re avec {b}, actuellement en d\u00e9stockage \u00e0 {price} au lieu de {regular}. Plus chaude et moins ch\u00e8re : si tes sessions durent deux heures ou plus, le choix est vite vu.',\n      women_note:'Ce mod\u00e8le existe aussi en coupe femme.',\n      cta:'Choisir {name}', cta_price:'Voir {name} \u00b7 {price}', cta_cart:'Ajouter au panier', cta_custom:'Parle-nous',\n      no_suit:'Sans combi',\n      why_txt:'Eau \u00e0 {t} {u}{off} \u2192 zone {z} \u2192 {model}. {h} {uh} et {w} {uw} \u2192 ligne {hr}, colonne {wr} du tableau \u2192 {size}.',\n      why_off:' (d\u00e9cal\u00e9e de {sign}2\u00b0 selon ta tol\u00e9rance au froid)',\n      mail_sub:'Aide pour la taille',\n      mail_body:'Bonjour Wildsuits,\\n\\nVotre outil propose : {model}, taille {size}.\\nMes donn\u00e9es : {h} cm, {w} kg, eau \u00e0 {t} \u00b0C.\\n\\nJe voudrais confirmer avant d\u2019acheter.\\n\\nMerci,',\n      disclaimer:'Recommandation indicative. Les temp\u00e9ratures par spot sont des moyennes historiques approximatives de la surface et peuvent varier de plusieurs degr\u00e9s selon l\u2019upwelling, le vent et la saison. Un doute ? {contact}, on te conseillera.',\n      months:['Janvier','F\u00e9vrier','Mars','Avril','Mai','Juin','Juillet','Ao\u00fbt','Septembre','Octobre','Novembre','D\u00e9cembre'],\n      zsub:['Eau glaciale. La cagoule n\u2019est pas une option.','Eau tr\u00e8s froide. Int\u00e9grale \u00e9paisse.','Eau froide. Int\u00e9grale classique.','Eau fra\u00eeche. L\u2019\u00e9paisseur est ton choix.','Eau temp\u00e9r\u00e9e. Int\u00e9grale l\u00e9g\u00e8re.','Eau douce. Quatre coupes, la m\u00eame chaleur.','Eau chaude. Bras et jambes libres.','Eau tropicale. Un boardshort suffit.'],\n      prod:{w54h:'Combinaison 5\/4 mm \u00e0 cagoule',w54:'Combinaison 5\/4 mm',w43h:'Combinaison 4\/3 mm \u00e0 cagoule',w43:'Combinaison 4\/3 mm',w43f:'Combinaison femme 4\/3 mm',w32:'Combinaison 3\/2 mm',shortyL:'Shorty manches longues',shortyJL:'Shorty jambes longues',shortyC:'Shorty',longjohn:'Long John n\u00e9opr\u00e8ne',top:'Top n\u00e9opr\u00e8ne',poncho:'Poncho \u00e9co-responsable'},\n      sizes:{XS:'Coupe ajust\u00e9e, gabarit l\u00e9ger.',S:'Coupe classique, gabarit l\u00e9ger.',MS:'Coupe classique, buste plus court.',M:'Coupe classique, standard.',LS:'Coupe ample, buste plus court.',L:'Coupe ample, standard.',XL:'Coupe ample, gabarit fort.',XXL:'La plus grande taille de s\u00e9rie.',ST:'Small Tall. Grand et mince.',MT:'Medium Tall. Grand, gabarit moyen.',LT:'Large Tall. Grand et costaud.'}\n    },\n    en: {\n      eyebrow:'In 30 seconds', h1:'Find your suit.',\n      lead:'No more stress about ordering the wrong wetsuit. Your height, your weight, your spot: we find your perfect match.',\n      height:'Height', weight:'Weight', water:'Water', optional:'\u00b7 optional',\n      fit:'Fit preference', fit_snug:'Snug', fit_bal:'Balanced',\n      fit_help:'A wetsuit should sit like a second skin. Go snug: neoprene has a memory and adapts fast. Balanced if you expect to put on weight.',\n      cold:'Cold tolerance', cold_c:'I feel the cold', cold_n:'Normal', cold_w:'I run warm',\n      cold_help:'Shifts the recommendation by about 2 \u00b0C. If your sessions average two hours or more, we suggest counting yourself as feeling the cold.',\n      spot_custom:'Set temperature manually',\n      countries:{PT:'Portugal',FR:'France',ES:'Spain',GB:'United Kingdom',IE:'Ireland',BE:'Belgium',NL:'Netherlands',DE:'Germany',DK:'Denmark',NO:'Norway',SE:'Sweden',IT:'Italy',SI:'Slovenia',HR:'Croatia',ME:'Montenegro',GR:'Greece',MT:'Malta',CY:'Cyprus'},\n      spot_help:'Approximate sea-surface averages. Know your spot\u2019s exact temperature? Move the slider for an even sharper answer.',\n      rec:'Your recommendation', model:'Model', size:'Size',\n      why:'How we got here', copy:'Copy my recommendation', copied:'Link copied \u2713',\n      ask:'Talk to us', see:'View', alt_label:'Also works:', equal_label:'Same water, your choice:',\n      addon_label:'Add to it', addon_note:'To change in the car park and stay warm:',\n      tab_size:'Size chart', tab_temp:'Water and model',\n      tbl_hint:'Official Wildsuits chart. Click a size to try that body.',\n      tbl_hint2:'Click a row to jump to that temperature.',\n      th_hw:'Height \\\\ Weight', th_temp:'Temperature', th_model:'Model',\n      th_size:'Size', th_height:'Height', th_weight:'Weight',\n      chart_full_h:'Full and hooded wetsuits',\n      chart_light_h:'Shorties, long john and top \u00b7 2\/2 mm',\n      chart_light_hint:'2\/2 mm neoprene stretches far more and moulds to your shape, so four sizes cover it. The bands overlap on purpose: if you land in two, your fit preference decides.',\n      eco:'All our wetsuits are made from Limestone neoprene, derived from limestone rock.',\n      coverage:'Wildsuits, keeping you warm since 2016',\n      footq:'Nothing fits?', footcta:'Talk to us \u2192', contact_link:'Get in touch',\n      ok:'This is your size', edge:'Two sizes work', confirm:'To confirm', custom:'Let\u2019s talk',\n      ok_note:'You land squarely inside this size. Order with confidence.',\n      light_ok_note:'2\/2 mm stretches hard and moulds to your body. This size is yours.',\n      light_near_note:'{a} is your size. In this neoprene, weight matters more than height.',\n      why_light:'{t} {u} water{off} \u2192 zone {z} \u2192 {model}. {h} {uh} and {w} {uw} \u2192 2\/2 mm chart (four sizes) \u2192 {size}.',\n      edge_note:'You land between {a} and {b}. ',\n      snug_note:'Since you like it snug, we went with {a}. Warmer, with less water moving inside.',\n      bal_low:'If you like a really tight suit, {b} works for you too.',\n      bal_high:'If you often feel tight across the shoulders or chest, {b} works for you too.',\n      xxl_note:'The published chart stops at 100 kg, but XXL exists in the 4\/3 mm. Confirm with us before buying.',\n      oob_note:'Your combination falls outside the published chart. Closest is {a}. Talk to us before deciding.',\n      gap_note:'This combination has no stock size in the chart. Closest is {a}. Talk to us.',\n      t_edge:'You are {t} {u} from the line with {b}. If your sessions average two hours or more, don\u2019t hesitate: take the warmer model.',\n      promo_label:'Clearance', promo_note:'{price} instead of {regular}. Not the usual price, make the most of it.', t_edge_promo:'You are {t} {u} from the line with {b}, currently on clearance at {price} instead of {regular}. Warmer and cheaper: if your sessions average two hours or more, it is an easy call.',\n      women_note:'This model also comes in a women\u2019s cut.',\n      cta:'Choose {name}', cta_price:'View {name} \u00b7 {price}', cta_cart:'Add to cart', cta_custom:'Talk to us',\n      no_suit:'No wetsuit',\n      why_txt:'{t} {u} water{off} \u2192 zone {z} \u2192 {model}. {h} {uh} and {w} {uw} \u2192 row {hr}, column {wr} of the chart \u2192 {size}.',\n      why_off:' (shifted {sign}2\u00b0 for your cold tolerance)',\n      mail_sub:'Sizing help',\n      mail_body:'Hi Wildsuits,\\n\\nYour finder suggested: {model}, size {size}.\\nMy details: {h} cm, {w} kg, water at {t} \u00b0C.\\n\\nI would like to confirm before buying.\\n\\nThanks,',\n      disclaimer:'Guidance only. Spot temperatures are approximate historical sea-surface averages and can move several degrees with upwelling, wind and season. Not sure? {contact} and we\u2019ll advise you.',\n      months:['January','February','March','April','May','June','July','August','September','October','November','December'],\n      zsub:['Freezing water. The hood is not optional.','Very cold water. Thick full suit.','Cold water. Classic full suit.','Cool water. The thickness is your call.','Mild water. Light full suit.','Warm water. Four cuts, the same warmth.','Hot water. Arms and legs free.','Tropical water. Boardshorts are enough.'],\n      prod:{w54h:'5\/4 mm hooded wetsuit',w54:'5\/4 mm wetsuit',w43h:'4\/3 mm hooded wetsuit',w43:'4\/3 mm wetsuit',w43f:'Women\u2019s 4\/3 mm wetsuit',w32:'3\/2 mm wetsuit',shortyL:'Long-sleeve shorty',shortyJL:'Long-leg shorty',shortyC:'Shorty',longjohn:'Neoprene long john',top:'Neoprene top',poncho:'Eco poncho'},\n      sizes:{XS:'Close fit, light build.',S:'Regular fit, light build.',MS:'Regular fit, shorter torso.',M:'Regular fit, standard.',LS:'Roomy fit, shorter torso.',L:'Roomy fit, standard.',XL:'Roomy fit, strong build.',XXL:'The largest stock size.',ST:'Small Tall. Tall and lean.',MT:'Medium Tall. Tall, medium build.',LT:'Large Tall. Tall and solid.'}\n    },\n    es: {\n      eyebrow:'En 30 segundos',\n      h1:'Encuentra tu neopreno.',\n      lead:'Se acab\u00f3 el estr\u00e9s de pedir el neopreno equivocado. Tu altura, tu peso, tu spot: te encontramos el perfect match.',\n      height:'Altura',\n      weight:'Peso',\n      water:'Agua',\n      optional:'\u00b7 opcional',\n      fit:'Preferencia de corte',\n      fit_snug:'Ajustado',\n      fit_bal:'Equilibrado',\n      fit_help:'Un neopreno debe sentarse como una segunda piel. Ve a por el ajustado: el neopreno tiene memoria y se adapta r\u00e1pido. Equilibrado si crees que vas a ganar peso.',\n      cold:'Tolerancia al fr\u00edo',\n      cold_c:'Soy friolero',\n      cold_n:'Normal',\n      cold_w:'Aguanto bien',\n      cold_help:'Desplaza la recomendaci\u00f3n unos 2 \u00b0C. Si tus sesiones duran de media dos horas o m\u00e1s, te aconsejamos contarte como friolero.',\n      spot_custom:'Temperatura manual',\n      spot_help:'Medias aproximadas de la superficie del mar. \u00bfSabes la temperatura exacta de tu spot? Mueve el cursor para una respuesta a\u00fan m\u00e1s precisa.',\n      rec:'Tu recomendaci\u00f3n',\n      model:'Modelo',\n      size:'Talla de neopreno',\n      why:'C\u00f3mo llegamos aqu\u00ed',\n      copy:'Copiar mi recomendaci\u00f3n',\n      copied:'Enlace copiado \u2713',\n      ask:'Escr\u00edbenos',\n      see:'Ver',\n      alt_label:'Tambi\u00e9n te vale:',\n      equal_label:'A la misma temperatura, a tu elecci\u00f3n:',\n      addon_label:'Para a\u00f1adir',\n      addon_note:'Para cambiarte en el parking y no coger fr\u00edo:',\n      tab_size:'Gu\u00eda de tallas',\n      tab_temp:'Agua y modelo',\n      tbl_hint:'Tabla oficial Wildsuits. Toca una talla para probar ese cuerpo.',\n      tbl_hint2:'Toca una fila para ir a esa temperatura.',\n      th_hw:'Altura \\\\\\\\ Peso',\n      th_temp:'Temperatura',\n      th_model:'Modelo',\n      th_size:'Talla',\n      th_height:'Altura',\n      th_weight:'Peso',\n      chart_full_h:'Trajes enteros y con capucha',\n      chart_light_h:'Shorties, long john y top \u00b7 2\/2 mm',\n      chart_light_hint:'El neopreno de 2\/2 mm estira mucho m\u00e1s y se adapta al cuerpo: bastan cuatro tallas. Los escalones se solapan a prop\u00f3sito: si caes en dos, decide tu preferencia de corte.',\n      eco:'Todos nuestros neoprenos son de neopreno Limestone, fabricado a partir de roca caliza.',\n      coverage:'Wildsuits, keeping you warm since 2016',\n      footq:'\u00bfNo te encaja nada?',\n      footcta:'Habla con nosotros \u2192',\n      contact_link:'Escr\u00edbenos',\n      ok:'Es tu talla',\n      edge:'Dos tallas posibles',\n      confirm:'A confirmar',\n      custom:'Habl\u00e9moslo',\n      ok_note:'Caes de lleno dentro de esta talla. Puedes pedirla sin dudar.',\n      light_ok_note:'El 2\/2 mm estira mucho y se amolda al cuerpo. Esta talla es la tuya.',\n      light_near_note:'La {a} es tu talla. En este neopreno el peso manda m\u00e1s que la altura.',\n      why_light:'Agua a {t} {u}{off} \u2192 zona {z} \u2192 {model}. {h} {uh} y {w} {uw} \u2192 tabla 2\/2 mm (cuatro tallas) \u2192 {size}.',\n      edge_note:'Est\u00e1s entre la {a} y la {b}. ',\n      snug_note:'Como prefieres ajustado, vamos con la {a}. M\u00e1s caliente, con menos agua circulando.',\n      bal_low:'Si te gustan los neoprenos bien pegados, la {b} tambi\u00e9n te vale.',\n      bal_high:'Si sueles ir apretado de hombros o de pecho, la {b} tambi\u00e9n te vale.',\n      xxl_note:'La tabla publicada acaba en 100 kg, pero la XXL existe en 4\/3 mm. Conf\u00edrmalo con nosotros antes de comprar.',\n      oob_note:'Tu neopreno se sale de la tabla publicada. Lo m\u00e1s cercano es la {a}. Habla con nosotros antes de decidir.',\n      gap_note:'Este neopreno no tiene talla de serie en la tabla. Lo m\u00e1s cercano es la {a}. Habla con nosotros.',\n      t_edge:'Est\u00e1s a {t} {u} de la frontera con {b}. Si tus sesiones duran dos horas o m\u00e1s de media, no lo dudes: coge el modelo m\u00e1s caliente.',\n      promo_label:'Liquidaci\u00f3n',\n      promo_note:'{price} en vez de {regular}. No es el precio de siempre, aprovecha.',\n      t_edge_promo:'Est\u00e1s a {t} {u} de la frontera con {b}, ahora en liquidaci\u00f3n a {price} en vez de {regular}. M\u00e1s caliente y m\u00e1s barato: si tus sesiones duran dos horas o m\u00e1s, la elecci\u00f3n est\u00e1 clara.',\n      women_note:'Este modelo tambi\u00e9n existe en corte de mujer.',\n      cta:'Elegir {name}',\n      cta_price:'Ver {name} \u00b7 {price}',\n      cta_cart:'A\u00f1adir a la cesta',\n      cta_custom:'Habla con nosotros',\n      no_suit:'Sin neopreno',\n      why_txt:'Agua a {t} {u}{off} \u2192 zona {z} \u2192 {model}. {h} {uh} y {w} {uw} \u2192 fila {hr}, columna {wr} de la tabla \u2192 {size}.',\n      why_off:' (desplazada {sign}2\u00b0 seg\u00fan tu tolerancia al fr\u00edo)',\n      mail_sub:'Ayuda con la talla',\n      mail_body:'Hola Wildsuits,\\\\n\\\\nVuestra herramienta propone: {model}, talla {size}.\\\\nMis datos: {h} cm, {w} kg, agua a {t} \u00b0C.\\\\n\\\\nQuerr\u00eda confirmarlo antes de comprar.\\\\n\\\\nGracias,',\n      disclaimer:'Recomendaci\u00f3n orientativa. Las temperaturas por spot son medias hist\u00f3ricas aproximadas de la superficie y pueden variar varios grados seg\u00fan el afloramiento, el viento y la \u00e9poca del a\u00f1o. \u00bfTienes dudas? {contact}, te aconsejamos.',\n      prod:{w54h:'Traje 5\/4 mm con capucha',w54:'Traje 5\/4 mm',w43h:'Traje 4\/3 mm con capucha',w43:'Traje 4\/3 mm',w43f:'Traje mujer 4\/3 mm',w32:'Traje 3\/2 mm',shortyL:'Shorty manga larga',shortyJL:'Shorty pierna larga',shortyC:'Shorty',longjohn:'Long John de neopreno',top:'Top de neopreno',poncho:'Poncho ecorresponsable'},\n      sizes:{XS:'Corte ce\u00f1ido, complexi\u00f3n ligera.',S:'Corte cl\u00e1sico, complexi\u00f3n ligera.',MS:'Corte cl\u00e1sico, torso m\u00e1s corto.',M:'Corte cl\u00e1sico, est\u00e1ndar.',LS:'Corte amplio, torso m\u00e1s corto.',L:'Corte amplio, est\u00e1ndar.',XL:'Corte amplio, complexi\u00f3n fuerte.',XXL:'La talla de serie m\u00e1s grande.',ST:'Small Tall. Alto y delgado.',MT:'Medium Tall. Alto, complexi\u00f3n media.',LT:'Large Tall. Alto y corpulento.'},\n      months:['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],\n      countries:{PT:'Portugal',FR:'Francia',ES:'Espa\u00f1a',GB:'Reino Unido',IE:'Irlanda',BE:'B\u00e9lgica',NL:'Pa\u00edses Bajos',DE:'Alemania',DK:'Dinamarca',NO:'Noruega',SE:'Suecia',IT:'Italia',SI:'Eslovenia',HR:'Croacia',ME:'Montenegro',GR:'Grecia',MT:'Malta',CY:'Chipre'},\n      zsub:['Agua helada. La capucha no es opcional.','Agua muy fr\u00eda. Traje entero grueso.','Agua fr\u00eda. Traje entero cl\u00e1sico.','Agua fresca. El grosor lo eliges t\u00fa.','Agua templada. Traje entero ligero.','Agua suave. Cuatro cortes, el mismo calor.','Agua caliente. Brazos y piernas libres.','Agua tropical. Basta un ba\u00f1ador.']\n    }\n  };\n\n  \/* =========================================================================\n     3. ESTADO E UNIDADES\n     ========================================================================= *\/\n\n  \/\/ ---------------------------------------------------------------------\n  \/\/ ARRANQUE ROBUSTO\n  \/\/ Antes, o script corria de imediato e, se n\u00e3o encontrasse o <div>, sa\u00eda\n  \/\/ em sil\u00eancio. Chegava um plugin de optimiza\u00e7\u00e3o a adiar o JavaScript, ou\n  \/\/ um construtor de p\u00e1ginas a inserir o bloco mais tarde, para a ferramenta\n  \/\/ n\u00e3o aparecer sem qualquer erro vis\u00edvel. Agora espera pelo DOM e, se\n  \/\/ preciso, volta a tentar durante alguns segundos.\n  \/\/ ---------------------------------------------------------------------\n  var root = null;\n\n  function boot(){\n    root = document.querySelector('[data-wsf-root]:not([data-wsf-on])');\n    if (!root) return false;\n    root.setAttribute('data-wsf-on', '1');   \/\/ evita arrancar duas vezes\n    var nj = root.querySelector('[data-el=\"nojs\"]');\n    if (nj) nj.parentNode.removeChild(nj);   \/\/ o JS corre: aviso fora\n    start();\n    return true;\n  }\n\n  function waitForRoot(){\n    if (boot()) return;\n    var tries = 0;\n    var timer = setInterval(function(){\n      if (boot() || ++tries > 40) clearInterval(timer);   \/\/ at\u00e9 ~8 s\n    }, 200);\n  }\n\n  if (document.readyState === 'loading')\n    document.addEventListener('DOMContentLoaded', waitForRoot);\n  else\n    waitForRoot();\n\n  function start(){\n  function E(n) { return root.querySelector('[data-el=\"' + n + '\"]'); }\n  function EA(n) { return root.querySelectorAll('[data-el=\"' + n + '\"]'); }\n\n  var SHOP     = (root.getAttribute('data-shop') || 'https:\/\/wildsuits.eu').replace(\/\\\/$\/, '');\n  var EMAIL    = root.getAttribute('data-email') || 'contact@wildsuits.eu';\n  \/\/ P\u00e1gina de contacto. Se ficar vazia, os links caem outra vez no mailto\n  \/\/ com o modelo, o tamanho e as medidas j\u00e1 preenchidos.\n  var CONTACT  = (root.getAttribute('data-contact') || '').trim();\n\n  \/\/ Comportamento do bot\u00e3o principal:\n  \/\/   \"off\"       -> p\u00e1gina do produto (comportamento antigo)\n  \/\/   \"preselect\" -> p\u00e1gina do produto com o tamanho j\u00e1 escolhido no menu.\n  \/\/                  S\u00f3 precisa do nome do atributo, funciona j\u00e1 hoje.\n  \/\/   \"direct\"    -> junta ao carrinho num clique. EXIGE o id de cada produto\n  \/\/                  em P; sem id, cai automaticamente em \"preselect\".\n  var CART      = (root.getAttribute('data-cart') || 'preselect').trim();\n  var SIZE_ATTR = (root.getAttribute('data-size-attr') || 'attribute_pa_taille').trim();\n  \/\/ P\u00e1gina onde o cliente aterra depois de o produto entrar no carrinho.\n  \/\/ O WooCommerce aceita ?add-to-cart em qualquer p\u00e1gina: apontando-o para\n  \/\/ o carrinho, junta o produto E mostra-o, num s\u00f3 clique.\n  var CART_URL  = (root.getAttribute('data-cart-url') || (SHOP + '\/panier\/')).replace(\/\\\/$\/, '') + '\/';\n  var URL_SYNC = root.getAttribute('data-url-sync') !== 'off';\n\n  var S = { h:178, w:76, t:16, fit:'snug', cold:'normal',\n            units:'metric', lang:'fr', langSet:false, spot:'', month:new Date().getMonth() };\n  var touched = false;\n\n  function clamp(v,a,b){ return Math.min(Math.max(v,a),b); }\n  \/\/ ---------------------------------------------------------------------\n  \/\/ L\u00cdNGUA POR OMISS\u00c3O\n  \/\/ O site \u00e9 multilingue (TranslatePress). Quem est\u00e1 em \/en\/ deve ver a\n  \/\/ ferramenta em ingl\u00eas sem carregar em nada. Ordem de decis\u00e3o:\n  \/\/   1. data-lang no <div>            (for\u00e7ado \u00e0 m\u00e3o)\n  \/\/   2. <html lang=\"...\">             (o que o TranslatePress escreve)\n  \/\/   3. \/pt\/ \/fr\/ \/en\/ no endere\u00e7o    (rede de seguran\u00e7a)\n  \/\/   4. l\u00edngua do navegador\n  \/\/   5. portugu\u00eas\n  \/\/ Uma escolha expl\u00edcita do visitante (bot\u00e3o PT\/FR\/EN) ou um link\n  \/\/ partilhado passam \u00e0 frente de tudo isto.\n  \/\/ ---------------------------------------------------------------------\n  function detectLang(){\n    var forced = (root.getAttribute('data-lang') || '').toLowerCase().slice(0,2);\n    if (T[forced]) return forced;\n\n    var htmlLang = (document.documentElement.getAttribute('lang') || '').toLowerCase().slice(0,2);\n    if (T[htmlLang]) return htmlLang;\n\n    \/\/ O site \u00e9 franc\u00eas por omiss\u00e3o, por isso o franc\u00eas N\u00c3O tem prefixo:\n    \/\/ wildsuits.eu\/produit\/... \u00e9 franc\u00eas, wildsuits.eu\/en\/... \u00e9 ingl\u00eas.\n    var path = (location.pathname || '').toLowerCase();\n    var byPath = path.match(\/^\\\/(pt|fr|en|es)(\\\/|$)\/);\n    if (byPath && T[byPath[1]]) return byPath[1];\n    if (!byPath && path !== '\/' ) return 'fr';   \/\/ caminho sem prefixo = franc\u00eas\n\n    var nav = ((navigator.language || navigator.userLanguage || '')).toLowerCase().slice(0,2);\n    if (T[nav]) return nav;\n\n    return 'fr';\n  }\n\n  function t(){ return T[S.lang] || T.fr; }\n  function fill(str,map){ return String(str).replace(\/\\{(\\w+)\\}\/g,function(_,k){ return map[k]!=null?map[k]:''; }); }\n  function esc(s){ return String(s).replace(\/&\/g,'&amp;').replace(\/<\/g,'&lt;').replace(\/>\/g,'&gt;'); }\n\n  function fmtHeight(cm){\n    if (S.units==='metric') return String(cm);\n    var inch = cm\/2.54, ft = Math.floor(inch\/12), i = Math.round(inch-ft*12);\n    if (i===12){ ft++; i=0; }\n    return ft + \"'\" + i + '\"';\n  }\n  function parseHeight(str){\n    str = String(str).trim().toLowerCase().replace(',', '.');\n    var m = str.match(\/^(\\d+)\\s*(?:'|\u2019|ft|f)\\s*(\\d+(?:\\.\\d+)?)?\/);\n    if (m) return Math.round((parseInt(m[1],10)*12 + (m[2]?parseFloat(m[2]):0)) * 2.54);\n    var n = parseFloat(str);\n    if (!isFinite(n)) return null;\n    if (\/cm\/.test(str)) return Math.round(n);\n    if (\/\\bm\\b|^[0-2]\\.\\d+$\/.test(str) && n > 0.9 && n < 2.6) return Math.round(n*100); \/\/ \"1,78\"\n    if (\/in|\"|\u201d\/.test(str)) return Math.round(n*2.54);\n    if (S.units==='imperial') return Math.round((n<=8 ? n*12 : n) * 2.54);\n    return Math.round(n);\n  }\n  function fmtWeight(kg){ return S.units==='metric' ? String(kg) : String(Math.round(kg*2.20462)); }\n  function parseWeight(str){\n    var low = String(str).toLowerCase(), n = parseFloat(low.replace(',', '.'));\n    if (!isFinite(n)) return null;\n    if (\/lb|lbs|pound\/.test(low)) return Math.round(n\/2.20462);\n    if (\/kg|quilo|kilo\/.test(low)) return Math.round(n);\n    return S.units==='imperial' ? Math.round(n\/2.20462) : Math.round(n);\n  }\n  var c2f = function(c){ return Math.round(c*9\/5+32); };\n  function fmtTemp(c){ return S.units==='metric' ? String(c) : String(c2f(c)); }\n  function parseTemp(str){\n    var low = String(str).toLowerCase(), n = parseFloat(low.replace(',', '.'));\n    if (!isFinite(n)) return null;\n    if (\/f\/.test(low) && !\/c\/.test(low)) return Math.round((n-32)*5\/9);\n    if (\/c\/.test(low)) return Math.round(n);\n    return S.units==='imperial' ? Math.round((n-32)*5\/9) : Math.round(n);\n  }\n  var uH = function(){ return S.units==='metric' ? 'cm' : 'ft\/in'; };\n  var uW = function(){ return S.units==='metric' ? 'kg' : 'lb'; };\n  var uT = function(){ return S.units==='metric' ? '\u00b0C' : '\u00b0F'; };\n  var uTd = function(){ return S.units==='metric' ? '\u00b0C' : '\u00b0F'; };\n\n  \/\/ Vers\u00e3o da chave: subir sempre que os dados mudarem (limites, zonas,\n  \/\/ tabelas, op\u00e7\u00f5es de encaixe). Um estado gravado antes destas mudan\u00e7as\n  \/\/ sobrepunha-se aos novos valores por omiss\u00e3o \u2014 nomeadamente ao \"justo\".\n  var KEY = 'wildsuits.finder.v4';\n  \/\/ Endere\u00e7o partilh\u00e1vel, constru\u00eddo a pedido. Antes, a ferramenta escrevia\n  \/\/ isto na barra de endere\u00e7o a cada gesto \u2014 o URL ficava sujo e, pior, a\n  \/\/ l\u00edngua guardada no endere\u00e7o passava \u00e0 frente da l\u00edngua da p\u00e1gina: quem\n  \/\/ abrisse \/pt\/ com um endere\u00e7o antigo via a ferramenta em espanhol.\n  function shareHash(){\n    return 'wsf=' + [S.h,S.w,S.t,S.fit,S.cold,S.units,S.lang,\n                     areaIndex(S.spot),S.month+1].join('.');\n  }\n  function shareUrl(){\n    return location.origin + location.pathname + location.search + '#' + shareHash();\n  }\n\n  var saveTimer = null;\n  function save(){\n    try { localStorage.setItem(KEY, JSON.stringify(S)); } catch(e){}\n    if (!URL_SYNC) return;              \/\/ por omiss\u00e3o est\u00e1 desligado\n    clearTimeout(saveTimer);\n    saveTimer = setTimeout(function(){\n      try { history.replaceState(null, '', '#' + shareHash()); } catch(e){}\n    }, 500);\n  }\n  function load(){\n    S.lang = detectLang();\n    try {\n      var raw = localStorage.getItem(KEY);\n      if (raw){\n        var o = JSON.parse(raw);\n        for (var k in S) if (Object.prototype.hasOwnProperty.call(o,k)) S[k] = o[k];\n        \/\/ A l\u00edngua da P\u00c1GINA ganha \u00e0 guardada, excepto se o visitante tiver\n        \/\/ mesmo carregado num dos bot\u00f5es: a\u00ed \u00e9 uma escolha, respeita-se.\n        if (!o.langSet) S.lang = detectLang();\n      }\n    } catch(e){}\n    var hash = '';\n    try { hash = decodeURIComponent((location.hash||'').replace(\/^#\/,'')); } catch(e){ hash = (location.hash||'').replace(\/^#\/,''); }\n    var m = hash.match(\/(?:^|&)wsf=([^&]+)\/);\n    if (!m) return;\n    var p = m[1].split('.');\n    if (p.length < 9) return;\n    S.h = +p[0]; S.w = +p[1]; S.t = +p[2];\n    if (\/^(snug|balanced)$\/.test(p[3])) S.fit = p[3];\n    else if (p[3] === 'roomy') S.fit = 'balanced';   \/\/ links antigos\n    if (\/^(cold|normal|warm)$\/.test(p[4])) S.cold = p[4];\n    if (\/^(metric|imperial)$\/.test(p[5])) S.units = p[5];\n    \/\/ A L\u00cdNGUA N\u00c3O VEM DO ENDERE\u00c7O. Quem est\u00e1 em \/pt\/ v\u00ea portugu\u00eas, mesmo que\n    \/\/ o link partilhado tenha sido criado noutra l\u00edngua. O campo p[6] fica no\n    \/\/ formato por compatibilidade com links antigos, mas \u00e9 ignorado.\n    \/\/ Tudo o resto (medidas, \u00e1gua, m\u00eas, spot) \u00e9 restaurado normalmente.\n    var ai = parseInt(p[7],10);\n    S.spot = (p[7] !== '-' && ai >= 0 && ai < AREAS.length) ? AREAS[ai][1] : '';\n    S.month = clamp((+p[8]|0) - 1, 0, 11);\n  }\n\n  \/* =========================================================================\n     4. MOTOR\n     ========================================================================= *\/\n\n  var LAST_H = CHART.heights.length - 1, LAST_W = CHART.weights.length - 1;\n\n  function rowOf(h){\n    for (var i=0;i<CHART.heights.length;i++){\n      var r = CHART.heights[i];\n      if (h >= r[0] && (i === LAST_H ? h <= r[1] : h < r[1])) return i;\n    }\n    return -1;\n  }\n  function colOf(w){\n    for (var i=0;i<CHART.weights.length;i++){\n      var c = CHART.weights[i];\n      if (w >= c[0] && (i === LAST_W ? w <= c[1] : w < c[1])) return i;\n    }\n    return -1;\n  }\n  function cellAt(r,c){\n    if (r<0||c<0||r>=CHART.grid.length||c>=CHART.grid[r].length) return null;\n    return CHART.grid[r][c];\n  }\n  function nearestCell(h,w){\n    var hc = clamp(h, CHART.heights[0][0], CHART.heights[LAST_H][1]);\n    var wc = clamp(w, CHART.weights[0][0], CHART.weights[LAST_W][1]);\n    var r0 = rowOf(hc), c0 = colOf(wc), best = null, bd = Infinity;\n    for (var r=0;r<CHART.grid.length;r++)\n      for (var c=0;c<CHART.grid[r].length;c++){\n        if (!CHART.grid[r][c]) continue;\n        var d = Math.abs(r-r0)+Math.abs(c-c0);\n        if (d < bd){ bd = d; best = { size:CHART.grid[r][c], r:r, c:c }; }\n      }\n    return best;\n  }\n\n  \/\/ ---------------------------------------------------------------------\n  \/\/ REGRA DE OURO do \"entre dois tamanhos\"\n  \/\/\n  \/\/ A altura escolhe a LINHA da tabela e mais nada. S\u00f3 o PESO pode criar um\n  \/\/ entre-dois.\n  \/\/\n  \/\/ Porqu\u00ea: a altura estava a armar um vizinho permanente. Algu\u00e9m com 178 cm\n  \/\/ fica a 2 cm da fronteira dos 180, por isso o MT aparecia sempre, e bastava\n  \/\/ 1 kg a mais para o desmascarar \u2014 a recomenda\u00e7\u00e3o saltava de MS para MT sem\n  \/\/ que o corpo tivesse mudado. Pior: MT n\u00e3o \u00e9 \"um tamanho acima\" de M, \u00e9\n  \/\/ outra fam\u00edlia de corte (Tall). Os tamanhos Tall ganham-se por estar mesmo\n  \/\/ na tranche 180\u2013190, n\u00e3o por ro\u00e7ar os 180.\n  \/\/\n  \/\/ Assim, o vizinho \u00e9 sempre a coluna de peso ao lado: um degrau real, na\n  \/\/ mesma linha, e sempre no mesmo sentido.\n  \/\/ ---------------------------------------------------------------------\n  var EDGE_RATIO = 0.2;   \/\/ 20% da largura do escal\u00e3o (2 kg num escal\u00e3o de 10)\n\n  function sizeResult(){\n    var h = S.h, w = S.w;\n    var r = rowOf(h), c = colOf(w);\n    var o = { status:'ok', size:null, alt:null, moved:null, r:r, c:c, baseR:r, baseC:c };\n\n    \/\/ acima dos 100 kg a tabela publicada acaba, mas o XXL existe na loja\n    if (r >= 0 && c < 0 && w > XXL_ABOVE_KG && w <= LIMITS.w[1]){\n      o.status = 'confirm'; o.size = 'XXL'; o.r = -1; o.c = -1;\n      return o;\n    }\n    if (r < 0 || c < 0){\n      var n1 = nearestCell(h,w);\n      o.status = 'oob'; o.near = n1 ? n1.size : null;\n      o.r = o.c = o.baseR = o.baseC = -1;\n      return o;\n    }\n    var base = cellAt(r,c);\n    if (!base){\n      var n2 = nearestCell(h,w);\n      o.status = 'gap'; o.near = n2 ? n2.size : null;\n      return o;\n    }\n\n    var W = CHART.weights[c];\n    var mw = Math.max(1, (W[1]-W[0]) * EDGE_RATIO);\n    var low = null, lowRC = null, high = null, highRC = null;\n    if (w - W[0] <= mw){ var d = cellAt(r,c-1); if (d && d!==base){ low = d; lowRC = [r,c-1]; } }\n    if (W[1] - w <= mw){ var e = cellAt(r,c+1); if (e && e!==base){ high = e; highRC = [r,c+1]; } }\n\n    if (S.fit==='snug' && low){ o.size = low; o.alt = base; o.moved='snug'; o.r=lowRC[0]; o.c=lowRC[1]; }\n    else { o.size = base; o.alt = low || high; o.altDir = low ? 'low' : (high ? 'high' : null); }\n\n    o.base = base;\n    o.status = (low || high) ? 'edge' : 'ok';\n    return o;\n  }\n\n  \/\/ Tabela LIGHT: os escal\u00f5es sobrep\u00f5em-se de prop\u00f3sito e n\u00e3o cobrem todas as\n  \/\/ combina\u00e7\u00f5es. Quem cai fora de todas as linhas \u2014 178 cm \/ 73 kg, por\n  \/\/ exemplo \u2014 n\u00e3o \u00e9 um caso \"por medida\": \u00e9 um M. Por isso a dist\u00e2ncia conta\n  \/\/ mais no peso do que na altura (o 2\/2 estica, e as pernas s\u00e3o curtas).\n  var LIGHT_HW     = 0.4;   \/\/ quanto pesa 1 cm face a 1 kg\n  var LIGHT_TOL    = 5.5;   \/\/ al\u00e9m disto, \u00e9 mesmo fora de tabela\n  var LIGHT_MARGIN = 1.5;   \/\/ abaixo disto, os dois tamanhos empatam\n  var LIGHT_SLACK  = 6;     \/\/ folga dura em cm\/kg fora dos extremos\n\n  function lightScore(L,h,w){\n    var dh = h < L.h[0] ? L.h[0]-h : (h > L.h[1] ? h-L.h[1] : 0);\n    var dw = w < L.w[0] ? L.w[0]-w : (w > L.w[1] ? w-L.w[1] : 0);\n    return dw + dh*LIGHT_HW;\n  }\n\n  function lightResult(){\n    var h = S.h, w = S.w, i;\n    var o = { status:'ok', size:null, alt:null, moved:null, r:-1, c:-1, baseR:-1, baseC:-1, light:true };\n\n    var hits = [];\n    for (i=0;i<LIGHT.length;i++){\n      var L = LIGHT[i];\n      if (h >= L.h[0] && h <= L.h[1] && w >= L.w[0] && w <= L.w[1]) hits.push(i);\n    }\n\n    if (hits.length === 1){ o.size = LIGHT[hits[0]].size; return o; }\n\n    if (hits.length > 1) return lightPair(o, LIGHT[hits[0]].size, LIGHT[hits[hits.length-1]].size);\n\n    \/\/ nenhuma linha coincide: ordenar por dist\u00e2ncia ponderada\n    var sc = LIGHT.map(function(L2){ return { size:L2.size, v:lightScore(L2,h,w) }; })\n                  .sort(function(a,b){ return a.v - b.v; });\n\n    var far = h < LIGHT[0].h[0]-LIGHT_SLACK || h > LIGHT[LIGHT.length-1].h[1]+LIGHT_SLACK ||\n              w < LIGHT[0].w[0]-LIGHT_SLACK;\n    if (far || sc[0].v > LIGHT_TOL){ o.status='oob'; o.near=sc[0].size; return o; }\n\n    if (sc[1].v - sc[0].v < LIGHT_MARGIN){\n      var order = LIGHT.map(function(L3){ return L3.size; });\n      var two = [sc[0].size, sc[1].size].sort(function(a,b){ return order.indexOf(a)-order.indexOf(b); });\n      o.approx = true;\n      return lightPair(o, two[0], two[1]);\n    }\n\n    o.size = sc[0].size; o.approx = true;\n    return o;\n  }\n\n  \/\/ entre dois tamanhos: a prefer\u00eancia de encaixe decide\n  function lightPair(o, small, big){\n    o.status = 'edge';\n    if (S.fit === 'snug'){ o.size = small; o.alt = big; o.moved = 'snug'; }\n    else { o.size = big; o.alt = small; o.altDir = 'low'; }\n    return o;\n  }\n\n  function tempResult(){\n    \/\/ seguran\u00e7a: \"aguento bem\" nunca te tira de \u00e1gua verdadeiramente fria\n    var off = S.cold==='cold' ? -2 : (S.cold==='warm' && S.t >= 12 ? 2 : 0);\n    var eff = clamp(S.t + off, LIMITS.t[0], LIMITS.t[1]);\n    var zi = ZONES.length - 1;\n    for (var i=0;i<ZONES.length;i++){\n      if (eff >= ZONES[i].t[0] && eff < ZONES[i].t[1]){ zi = i; break; }\n    }\n    var z = ZONES[zi], edge = null;\n    if (eff === z.t[0] && zi > 0 && ZONES[zi-1].prod !== z.prod)\n      edge = { d:1, other:ZONES[zi-1] };\n    else if (eff === z.t[1]-1 && zi < ZONES.length-1 && ZONES[zi+1].prod !== z.prod)\n      edge = { d:1, other:ZONES[zi+1], colder:true };\n    return { zi:zi, zone:z, eff:eff, off:off, edge:edge };\n  }\n\n  \/* =========================================================================\n     5. CONSTRU\u00c7\u00c3O E RENDER\n     ========================================================================= *\/\n\n  var el = {};\n  ['controls','hR','wR','tR','hNum','wNum','tNum','uH','uW','uT','eh0','eh1','ew0','ew1','et0','et1',\n   'spot','month','rModel','rModelS','rSize','rSizeS','badge','badgeT','note','caveat','alt',\n   'why','cta','ctaT','copy','mail','tSize','tTemp','tabSize','tabTemp','pSize','pTemp','sticky',\n   'sTxt','sCta','card','live','footq','addon','promo','coverage','tLight','hFull','hLight','lightHint'].forEach(function(n){ el[n] = E(n); });\n\n  function hLabel(i){\n    var H = CHART.heights[i], hi = (i===LAST_H ? H[1] : H[1]-1);\n    return S.units==='metric' ? H[0]+'\u2013'+hi+' cm' : fmtHeight(H[0])+'\u2013'+fmtHeight(hi);\n  }\n  function wLabel(i){\n    var W = CHART.weights[i], last = (i===LAST_W);\n    if (S.units==='metric') return W[0]+'\u2013'+(last ? W[1] : W[1]-1)+' kg';\n    \/\/ em lb o topo \u00e9 (in\u00edcio do escal\u00e3o seguinte \u2212 1), para n\u00e3o deixar buracos\n    var lo = Math.round(W[0]*2.20462);\n    var hi = last ? Math.round(W[1]*2.20462) : Math.round(W[1]*2.20462)-1;\n    return lo+'\u2013'+hi+' lb';\n  }\n  function zLabel(z,i){\n    if (i === ZONES.length-1) return fmtTemp(z.t[0]) + '+ ' + uT();\n    var hi = S.units==='metric' ? z.t[1]-1 : c2f(z.t[1])-1;\n    return fmtTemp(z.t[0]) + '\u2013' + hi + ' ' + uT();\n  }\n  function prodName(k){ return t().prod[k] || k; }\n  function zProds(z){\n    return [z.prod].concat(z.equals || []).map(prodName).join('  \u00b7  ');\n  }\n  function prodUrl(k){ return P[k] ? SHOP + P[k].path : SHOP; }\n\n  \/\/ Link de compra. O tamanho vai sempre junto, para o cliente n\u00e3o ter de o\n  \/\/ reescolher na p\u00e1gina do produto \u2014 \u00e9 a\u00ed que se perdem as vendas.\n  \/\/ Sem id de produto, \"direct\" desce sozinho para \"preselect\": mais vale um\n  \/\/ clique a mais do que um link partido.\n  function buyUrl(k, size){\n    var base = prodUrl(k);\n    if (CART === 'off' || !size) return base;\n    var attr = SIZE_ATTR + '=' + encodeURIComponent(String(size).toLowerCase());\n    var v = variantOf(k, size);\n    if (CART === 'direct' && P[k] && P[k].id && v)\n      return CART_URL + '?add-to-cart=' + P[k].id + '&variation_id=' + v.id +\n             '&quantity=1&' + attr;\n    \/\/ Sem varia\u00e7\u00e3o correspondente (ex.: o 4\/3 de senhora n\u00e3o existe em XXL),\n    \/\/ mais vale abrir a ficha com o tamanho escolhido do que um carrinho vazio.\n    return base + (base.indexOf('?') > -1 ? '&' : '?') + attr;\n  }\n  function prodPrice(k){ return (P[k] && P[k].price) ? P[k].price : ''; }\n  var EUR = function(n){ return n + ' \u20ac'; };\n  \/\/ Varia\u00e7\u00e3o exacta: id, pre\u00e7o actual e pre\u00e7o normal se estiver em saldo.\n  function variantOf(k, size){\n    var row = VARIANTS[k] && VARIANTS[k][String(size || '').toLowerCase()];\n    if (!row) return null;\n    return { id: row[0], price: EUR(row[1]), regular: row.length > 2 ? EUR(row[2]) : '' };\n  }\n\n  function applyI18n(){\n    var txt = t();\n    root.setAttribute('lang', S.lang);\n    var nodes = root.querySelectorAll('[data-i18n]');\n    for (var i=0;i<nodes.length;i++){\n      var k = nodes[i].getAttribute('data-i18n');\n      if (k === 'optional') continue;\n      if (k === 'fit'){ nodes[i].innerHTML = esc(txt.fit) + ' <span class=\"opt\">' + esc(txt.optional) + '<\/span>'; continue; }\n      if (k === 'disclaimer' && txt.disclaimer.indexOf('{contact}') > -1){\n        var parts = txt.disclaimer.split('{contact}');\n        nodes[i].innerHTML = esc(parts[0]) +\n          '<a href=\"' + esc(CONTACT || ('mailto:' + EMAIL)) + '\">' + esc(txt.contact_link) + '<\/a>' +\n          esc(parts[1] || '');\n        continue;\n      }\n      if (txt[k] != null) nodes[i].textContent = txt[k];\n    }\n    el.footq.innerHTML = esc(txt.footq) + ' <a data-el=\"footMail\" href=\"#\">' + esc(txt.footcta) + '<\/a>';\n\n    el.coverage.textContent = txt.coverage;\n\n    el.spot.innerHTML = '';\n    var o0 = document.createElement('option'); o0.value=''; o0.textContent = txt.spot_custom;\n    el.spot.appendChild(o0);\n    COUNTRY_ORDER.forEach(function(cc){\n      var list = AREAS.filter(function(a){ return a[0] === cc; });\n      if (!list.length) return;\n      var g = document.createElement('optgroup');\n      g.label = (txt.countries && txt.countries[cc]) || cc;\n      list.forEach(function(a){\n        var o = document.createElement('option'); o.value = a[1]; o.textContent = a[1];\n        g.appendChild(o);\n      });\n      el.spot.appendChild(g);\n    });\n    el.spot.value = S.spot;\n    el.month.innerHTML = '';\n    txt.months.forEach(function(m,i){\n      var o = document.createElement('option'); o.value = String(i); o.textContent = m;\n      el.month.appendChild(o);\n    });\n    el.month.value = String(S.month);\n    el.spot.setAttribute('aria-label', txt.water);\n    el.month.setAttribute('aria-label', txt.months[0].length ? txt.tab_temp : 'month');\n    el.hNum.setAttribute('aria-label', txt.height + ' (' + uH() + ')');\n    el.wNum.setAttribute('aria-label', txt.weight + ' (' + uW() + ')');\n    el.tNum.setAttribute('aria-label', txt.water + ' (' + uT() + ')');\n    el.tR.setAttribute('aria-label', txt.water);\n    root.querySelectorAll('[data-lang]').forEach(function(b){ b.setAttribute('aria-pressed', String(b.getAttribute('data-lang')===S.lang)); });\n    root.querySelectorAll('[data-units]').forEach(function(b){ b.setAttribute('aria-pressed', String(b.getAttribute('data-units')===S.units)); });\n    root.querySelectorAll('[data-fit]').forEach(function(b){ b.setAttribute('aria-pressed', String(b.getAttribute('data-fit')===S.fit)); });\n    root.querySelectorAll('[data-cold]').forEach(function(b){ b.setAttribute('aria-pressed', String(b.getAttribute('data-cold')===S.cold)); });\n  }\n\n  function buildTables(){\n    var txt = t();\n    \/\/ tamanhos\n    var th = el.tSize.querySelector('thead'), tb = el.tSize.querySelector('tbody');\n    th.innerHTML = ''; tb.innerHTML = '';\n    var tr = document.createElement('tr');\n    tr.innerHTML = '<th scope=\"col\">' + esc(txt.th_hw) + '<\/th>';\n    CHART.weights.forEach(function(_,c){\n      var e = document.createElement('th'); e.scope='col'; e.textContent = wLabel(c); tr.appendChild(e);\n    });\n    th.appendChild(tr);\n    CHART.grid.forEach(function(row,r){\n      var trr = document.createElement('tr');\n      var rh = document.createElement('th'); rh.scope='row'; rh.textContent = hLabel(r);\n      trr.appendChild(rh);\n      row.forEach(function(sz,c){\n        var td = document.createElement('td');\n        if (sz){\n          var b = document.createElement('button');\n          b.type='button'; b.className='cellbtn'; b.textContent = sz;\n          b.setAttribute('data-r', r); b.setAttribute('data-c', c);\n          b.setAttribute('aria-pressed','false');\n          b.setAttribute('aria-label', sz + ' \u2014 ' + hLabel(r) + ', ' + wLabel(c));\n          td.appendChild(b);\n        } else { td.className='na'; td.textContent='\u2014'; }\n        trr.appendChild(td);\n      });\n      tb.appendChild(trr);\n    });\n    \/\/ tamanhos 2\/2 mm\n    el.hFull.textContent  = txt.chart_full_h;\n    el.hLight.textContent = txt.chart_light_h;\n    el.lightHint.textContent = txt.chart_light_hint;\n    var th3 = el.tLight.querySelector('thead'), tb3 = el.tLight.querySelector('tbody');\n    th3.innerHTML = '<tr><th scope=\"col\">' + esc(txt.th_size) + '<\/th><th scope=\"col\">' +\n      esc(txt.th_height) + '<\/th><th scope=\"col\">' + esc(txt.th_weight) + '<\/th><\/tr>';\n    tb3.innerHTML = '';\n    LIGHT.forEach(function(L){\n      var r = document.createElement('tr');\n      var rh = document.createElement('th'); rh.scope='row'; rh.textContent = L.size;\n      r.appendChild(rh);\n      var th_ = document.createElement('td'); th_.className='tcell';\n      th_.textContent = fmtHeight(L.h[0]) + '\u2013' + fmtHeight(L.h[1]) + ' ' + uH();\n      r.appendChild(th_);\n      var tw = document.createElement('td'); tw.className='tcell';\n      tw.textContent = (L.w[1]===Infinity)\n        ? '\u2265 ' + fmtWeight(L.w[0]) + ' ' + uW()\n        : fmtWeight(L.w[0]) + '\u2013' + fmtWeight(L.w[1]) + ' ' + uW();\n      r.appendChild(tw);\n      tb3.appendChild(r);\n    });\n    \/\/ \u00e1gua\n    var th2 = el.tTemp.querySelector('thead'), tb2 = el.tTemp.querySelector('tbody');\n    th2.innerHTML = '<tr><th scope=\"col\">' + esc(txt.th_temp) + '<\/th><th scope=\"col\">' +\n      esc(txt.th_model) + '<\/th><\/tr>';\n    tb2.innerHTML = '';\n    ZONES.forEach(function(z,i){\n      var tr2 = document.createElement('tr'); tr2.className='zrow';\n      var rh = document.createElement('th'); rh.scope='row';\n      var b = document.createElement('button');\n      b.type='button'; b.className='cellbtn'; b.textContent = zLabel(z,i);\n      b.setAttribute('data-z', i);\n      b.setAttribute('aria-label', zLabel(z,i) + ' \u2014 ' + zProds(z));\n      rh.appendChild(b); tr2.appendChild(rh);\n      var td1 = document.createElement('td'); td1.className='tcell'; td1.textContent = zProds(z);\n      tr2.appendChild(td1);\n      tb2.appendChild(tr2);\n    });\n  }\n\n  var liveTimer = null, trackTimer = null, lastKey = '';\n\n  function announce(s){\n    clearTimeout(liveTimer);\n    liveTimer = setTimeout(function(){ el.live.textContent = s; }, 600);\n  }\n  function track(p){\n    clearTimeout(trackTimer);\n    trackTimer = setTimeout(function(){\n      try {\n        root.dispatchEvent(new CustomEvent('wildsuits:recommendation',{bubbles:true, detail:p}));\n        if (window.dataLayer && window.dataLayer.push)\n          window.dataLayer.push({ event:'wildsuits_recommendation', ws_size:p.size, ws_model:p.model,\n            ws_product:p.product, ws_height_cm:p.height_cm, ws_weight_kg:p.weight_kg,\n            ws_water_c:p.water_c, ws_status:p.status, ws_lang:p.lang });\n      } catch(e){}\n    }, 800);\n  }\n  function setP(input,min,max){ input.style.setProperty('--p', ((+input.value-min)\/(max-min))*100 + '%'); }\n\n  function render(){\n    var txt = t();\n\n    el.hR.min=LIMITS.h[0]; el.hR.max=LIMITS.h[1]; el.hR.value=S.h;\n    el.wR.min=LIMITS.w[0]; el.wR.max=LIMITS.w[1]; el.wR.value=S.w;\n    el.tR.min=LIMITS.t[0]; el.tR.max=LIMITS.t[1]; el.tR.value=S.t;\n    setP(el.hR,LIMITS.h[0],LIMITS.h[1]); setP(el.wR,LIMITS.w[0],LIMITS.w[1]);\n    el.hR.setAttribute('aria-valuetext', fmtHeight(S.h) + ' ' + uH());\n    el.wR.setAttribute('aria-valuetext', fmtWeight(S.w) + ' ' + uW());\n    el.tR.setAttribute('aria-valuetext', fmtTemp(S.t) + ' ' + uT());\n\n    if (document.activeElement !== el.hNum) el.hNum.value = fmtHeight(S.h);\n    if (document.activeElement !== el.wNum) el.wNum.value = fmtWeight(S.w);\n    if (document.activeElement !== el.tNum) el.tNum.value = fmtTemp(S.t);\n    el.hNum.classList.toggle('wide', S.units==='imperial');\n    el.uH.textContent=uH(); el.uW.textContent=uW(); el.uT.textContent=uT();\n    el.eh0.textContent = fmtHeight(LIMITS.h[0]) + (S.units==='metric'?' cm':'');\n    el.eh1.textContent = fmtHeight(LIMITS.h[1]) + (S.units==='metric'?' cm':'');\n    el.ew0.textContent = fmtWeight(LIMITS.w[0]) + ' ' + uW();\n    el.ew1.textContent = fmtWeight(LIMITS.w[1]) + ' ' + uW();\n    el.et0.textContent = fmtTemp(LIMITS.t[0]) + ' ' + uT();\n    el.et1.textContent = fmtTemp(LIMITS.t[1]) + ' ' + uT();\n    el.month.disabled = !S.spot;\n\n    var tr = tempResult(), z = tr.zone;\n    var fullChart = usesFullChart(z.prod);\n    var sz = fullChart ? sizeResult() : lightResult();\n    var noSize = (sz.status==='oob' || sz.status==='gap');\n    var sizeTxt = noSize ? txt.custom : sz.size;\n\n    el.rModel.textContent = z.model || txt.no_suit;\n    el.rModel.classList.toggle('sm', !z.model);\n    el.rModelS.textContent = txt.zsub[tr.zi];\n    el.rSize.textContent = sizeTxt;\n    el.rSize.classList.toggle('sm', noSize);\n    el.rSizeS.textContent = noSize ? '' : (txt.sizes[sz.size] || '');\n\n    var buyable = !noSize && sz.status !== 'confirm';\n    var vNow = buyable ? variantOf(z.prod, sz.size) : null;   \/\/ varia\u00e7\u00e3o exacta\n    var st = noSize ? 'custom' : sz.status;\n    el.badge.className = 'badge ' + (st==='ok' ? 'ok' : 'edge');\n    el.badgeT.textContent = st==='ok' ? txt.ok : st==='edge' ? txt.edge\n                          : st==='confirm' ? txt.confirm : txt.custom;\n\n    var note = '';\n    if (sz.status==='oob')      note = fill(txt.oob_note, { a: sz.near || '\u2014' });\n    else if (sz.status==='gap') note = fill(txt.gap_note, { a: sz.near || '\u2014' });\n    else if (sz.status==='confirm') note = '';\n    else if (sz.status==='edge'){\n      note = fill(txt.edge_note, { a: sz.moved ? sz.alt : sz.size, b: sz.moved ? sz.size : sz.alt });\n      if (sz.moved==='snug') note += fill(txt.snug_note, { a: sz.size });\n      else note += fill(sz.altDir==='low' ? txt.bal_low : txt.bal_high, { b: sz.alt });\n    } else if (sz.light) note = sz.approx ? fill(txt.light_near_note, { a: sz.size }) : txt.light_ok_note;\n    else note = txt.ok_note;\n    if (tr.edge && !tr.edge.colder){\n      var ob = tr.edge.other.prod, oreg = prodRegular(ob), opr = prodPrice(ob);\n      \/\/ Se o vizinho mais quente estiver em promo\u00e7\u00e3o, vale mesmo a pena diz\u00ea-lo:\n      \/\/ \u00e9 mais quente E mais barato. Sem promo\u00e7\u00e3o, mant\u00e9m-se a frase normal.\n      note += (note ? ' ' : '') + ((oreg && opr)\n        ? fill(txt.t_edge_promo, { t:1, u:uTd(), b: prodName(ob), price: opr, regular: oreg })\n        : fill(txt.t_edge, { t:1, u:uTd(), b: prodName(ob) }));\n    }\n    \/\/ NOTA: aqui existia um aviso de saldo no tamanho VIZINHO. Foi removido.\n    \/\/ A nota acabava de explicar porque \u00e9 que ESTE tamanho \u00e9 o certo e, na\n    \/\/ frase seguinte, dava uma raz\u00e3o financeira para escolher o outro.\n    \/\/ A ferramenta contradizia-se, e empurrava para uma compra pelo pre\u00e7o em\n    \/\/ vez do encaixe \u2014 a origem das devolu\u00e7\u00f5es que ela existe para evitar.\n    \/\/ O saldo do tamanho recomendado continua vis\u00edvel na faixa de promo\u00e7\u00e3o.\n    el.note.textContent = note;\n    el.note.hidden = !note;\n\n    \/\/ Promo\u00e7\u00e3o do produto recomendado: mostrar o antes\/depois, para o cliente\n    \/\/ perceber que apanhou um bom momento e n\u00e3o um pre\u00e7o de sempre.\n    var reg = vNow ? vNow.regular : '', now = vNow ? vNow.price : '';\n    if (reg && now){\n      el.promo.innerHTML = '<b>' + esc(txt.promo_label) + '<\/b><span>' +\n        fill(esc(txt.promo_note), { price:'<strong>'+esc(now)+'<\/strong>', regular:'<s>'+esc(reg)+'<\/s>' }) +\n        '<\/span>';\n      el.promo.hidden = false;\n    } else {\n      el.promo.innerHTML = ''; el.promo.hidden = true;\n    }\n\n    el.caveat.textContent = sz.status==='confirm' ? txt.xxl_note : '';\n    el.caveat.hidden = sz.status!=='confirm';\n\n    var altBits = [];\n    if (z.equals && z.equals.length){\n      var eqs = z.equals.map(function(k){\n        return '<a href=\"' + prodUrl(k) + '\">' + esc(prodName(k)) + '<\/a>';\n      }).join(', ');\n      altBits.push('<strong>' + esc(txt.equal_label) + '<\/strong> ' + eqs);\n    }\n    if (z.alt)\n      altBits.push('<strong>' + esc(txt.alt_label) + '<\/strong> <a href=\"' + prodUrl(z.alt) + '\">' +\n                   esc(prodName(z.alt)) + '<\/a>');\n    if (z.prod==='w43' || z.prod==='w43h')\n      altBits.push(esc(txt.women_note) + ' <a href=\"' + prodUrl('w43f') + '\">' + esc(prodName('w43f')) + '<\/a>');\n    el.alt.innerHTML = altBits.join('<br>');\n    el.alt.hidden = !altBits.length;\n\n    \/\/ O poncho \u00e9 sempre um complemento, nunca a recomenda\u00e7\u00e3o principal.\n    el.addon.innerHTML = '<b>' + esc(txt.addon_label) + '<\/b><span>' + esc(txt.addon_note) +\n                         ' <a href=\"' + prodUrl(ADDON) + '\">' + esc(prodName(ADDON)) + ' \u2192<\/a><\/span>';\n\n    var offTxt = tr.off ? fill(txt.why_off, { sign: tr.off<0 ? '\u2212' : '+' }) : '';\n    el.why.textContent = fullChart ? fill(txt.why_txt, {\n      t: fmtTemp(S.t), u: uT(), off: offTxt, z: zLabel(z,tr.zi), model: prodName(z.prod),\n      h: fmtHeight(S.h), uh: uH(), w: fmtWeight(S.w), uw: uW(),\n      hr: sz.baseR>=0 ? hLabel(sz.baseR) : '\u2014',\n      wr: sz.baseC>=0 ? wLabel(sz.baseC) : '\u2014',\n      size: sizeTxt\n    }) : fill(txt.why_light, {\n      t: fmtTemp(S.t), u: uT(), off: offTxt, z: zLabel(z,tr.zi), model: prodName(z.prod),\n      h: fmtHeight(S.h), uh: uH(), w: fmtWeight(S.w), uw: uW(), size: sizeTxt\n    });\n\n    var mailBody = fill(txt.mail_body, { model: prodName(z.prod), size: sizeTxt, h:S.h, w:S.w, t:S.t });\n    var mailHref = 'mailto:' + EMAIL + '?subject=' + encodeURIComponent('Wildsuits \u00b7 ' + txt.mail_sub) +\n                   '&body=' + encodeURIComponent(mailBody);\n    var contactHref = CONTACT || mailHref;\n    el.mail.href = contactHref;\n    var fm = E('footMail'); if (fm) fm.href = contactHref;\n\n    el.cta.href = buyable ? buyUrl(z.prod, sz.size) : prodUrl(z.prod);\n    var pr = (vNow && vNow.price) || prodPrice(z.prod);\n    \/\/ No modo carrinho o bot\u00e3o diz o que vai mesmo acontecer, e n\u00e3o leva o\n    \/\/ nome do produto: \"la Shorty\" \/ \"la Top\" davam erros de g\u00e9nero.\n    if (CART === 'direct' && buyable)\n      el.ctaT.textContent = txt.cta_cart + (pr ? ' \u00b7 ' + pr : '');\n    else\n      el.ctaT.textContent = pr\n        ? fill(txt.cta_price, { name: prodName(z.prod), price: pr })\n        : fill(txt.cta, { name: prodName(z.prod) });\n    el.sCta.href = el.cta.href;\n    el.sTxt.textContent = (z.model || txt.no_suit) + ' \u00b7 ' + sizeTxt;\n\n    el.hFull.classList.toggle('on', fullChart);\n    el.hLight.classList.toggle('on', !fullChart);\n\n    var btns = el.tSize.querySelectorAll('.cellbtn');\n    for (var i=0;i<btns.length;i++)\n      btns[i].setAttribute('aria-pressed', String(fullChart && !noSize && sz.status!=='confirm' &&\n        +btns[i].getAttribute('data-r')===sz.r && +btns[i].getAttribute('data-c')===sz.c));\n    var lrows = el.tLight.querySelectorAll('tbody tr');\n    for (var k=0;k<lrows.length;k++)\n      lrows[k].classList.toggle('on', !fullChart && !noSize && LIGHT[k].size===sz.size);\n    var rows = el.tTemp.querySelectorAll('tr.zrow');\n    for (var j=0;j<rows.length;j++) rows[j].classList.toggle('on', j===tr.zi);\n\n    announce(txt.rec + ': ' + prodName(z.prod) + ', ' + txt.size + ' ' + sizeTxt + '. ' + el.badgeT.textContent + '.');\n    save();\n    var key = [S.h,S.w,S.t,S.fit,S.cold].join('|');\n    if (key !== lastKey){\n      lastKey = key;\n      track({ size: noSize ? null : sz.size, model: z.model, product: z.prod, status: st,\n              height_cm:S.h, weight_kg:S.w, water_c:S.t, fit:S.fit, cold:S.cold,\n              spot:S.spot||null, lang:S.lang });\n    }\n  }\n\n  function rebuild(){ applyI18n(); buildTables(); render(); }\n\n  \/* =========================================================================\n     6. EVENTOS\n     ========================================================================= *\/\n\n  function mark(){ touched = true; }\n\n  el.hR.addEventListener('input', function(){ mark(); S.h = clamp(+this.value, LIMITS.h[0], LIMITS.h[1]); render(); });\n  el.wR.addEventListener('input', function(){ mark(); S.w = clamp(+this.value, LIMITS.w[0], LIMITS.w[1]); render(); });\n  el.tR.addEventListener('input', function(){ mark(); S.t = clamp(+this.value, LIMITS.t[0], LIMITS.t[1]); render(); });\n\n  function bindNum(node, parser, key, lo, hi){\n    function commit(){\n      mark();\n      var v = parser(node.value);\n      if (v == null){ render(); return; }\n      S[key] = clamp(v, lo, hi);\n      render();\n    }\n    node.addEventListener('change', commit);\n    node.addEventListener('blur', commit);\n    node.addEventListener('keydown', function(e){\n      if (e.key === 'Enter'){ e.preventDefault(); commit(); node.blur(); }\n    });\n  }\n  bindNum(el.hNum, parseHeight, 'h', LIMITS.h[0], LIMITS.h[1]);\n  bindNum(el.wNum, parseWeight, 'w', LIMITS.w[0], LIMITS.w[1]);\n  bindNum(el.tNum, parseTemp,   't', LIMITS.t[0], LIMITS.t[1]);\n\n  root.addEventListener('click', function(e){\n    var b = e.target.closest ? e.target.closest('button') : null;\n    if (!b || !root.contains(b)) return;\n\n    if (b.hasAttribute('data-lang')){ S.lang = b.getAttribute('data-lang'); S.langSet = true; rebuild(); return; }\n    if (b.hasAttribute('data-units')){ S.units = b.getAttribute('data-units'); rebuild(); return; }\n    if (b.hasAttribute('data-fit')){ mark(); S.fit = b.getAttribute('data-fit');\n      root.querySelectorAll('[data-fit]').forEach(function(x){ x.setAttribute('aria-pressed', String(x===b)); });\n      render(); return; }\n    if (b.hasAttribute('data-cold')){ mark(); S.cold = b.getAttribute('data-cold');\n      root.querySelectorAll('[data-cold]').forEach(function(x){ x.setAttribute('aria-pressed', String(x===b)); });\n      render(); return; }\n    if (b.hasAttribute('data-r')){ mark();\n      var r = +b.getAttribute('data-r'), c = +b.getAttribute('data-c');\n      S.h = Math.round((CHART.heights[r][0]+CHART.heights[r][1])\/2);\n      S.w = Math.round((CHART.weights[c][0]+CHART.weights[c][1])\/2);\n      render(); return; }\n    if (b.hasAttribute('data-z')){ mark();\n      var z = ZONES[+b.getAttribute('data-z')];\n      var mid = Math.round((z.t[0] + z.t[1] - 1)\/2);\n      var back = S.cold==='cold' ? 2 : (S.cold==='warm' && mid >= 12 ? -2 : 0);\n      S.t = clamp(mid + back, LIMITS.t[0], LIMITS.t[1]);\n      render(); return; }\n    if (b.hasAttribute('data-tab')){ selectTab(b); return; }\n    if (b === el.copy){ doCopy(); return; }\n  });\n\n  el.spot.addEventListener('change', function(){ mark(); S.spot = this.value; applySpot(); });\n  el.month.addEventListener('change', function(){ mark(); S.month = +this.value; applySpot(); });\n  function applySpot(){\n    if (S.spot){\n      var sea = areaSea(S.spot);\n      if (sea) S.t = clamp(sea[S.month], LIMITS.t[0], LIMITS.t[1]);\n    }\n    render();\n  }\n\n  function selectTab(btn){\n    var isSize = btn.getAttribute('data-tab') === 'size';\n    el.tabSize.setAttribute('aria-selected', String(isSize));\n    el.tabTemp.setAttribute('aria-selected', String(!isSize));\n    el.tabSize.tabIndex = isSize ? 0 : -1;\n    el.tabTemp.tabIndex = isSize ? -1 : 0;\n    el.pSize.hidden = !isSize;\n    el.pTemp.hidden = isSize;\n    btn.focus();\n  }\n  [el.tabSize, el.tabTemp].forEach(function(b){\n    b.addEventListener('keydown', function(e){\n      if (e.key === 'ArrowRight' || e.key === 'ArrowLeft'){\n        e.preventDefault();\n        selectTab(b === el.tabSize ? el.tabTemp : el.tabSize);\n      }\n    });\n  });\n\n  function doCopy(){\n    var txt = t(), url = shareUrl();   \/\/ j\u00e1 n\u00e3o depende da barra de endere\u00e7o\n    function done(){ el.copy.textContent = txt.copied;\n      setTimeout(function(){ el.copy.textContent = t().copy; }, 1800); }\n    function fallback(){\n      var ta = document.createElement('textarea');\n      ta.value = url; ta.setAttribute('readonly','');\n      ta.style.cssText = 'position:absolute;left:-9999px';\n      document.body.appendChild(ta); ta.select();\n      try { document.execCommand('copy'); done(); } catch(e){}\n      document.body.removeChild(ta);\n    }\n    if (navigator.clipboard && navigator.clipboard.writeText)\n      navigator.clipboard.writeText(url).then(done, fallback);\n    else fallback();\n  }\n\n  \/* =========================================================================\n     7. BARRA FIXA + ALTURA EM IFRAME\n     ========================================================================= *\/\n\n  if ('IntersectionObserver' in window && el.card){\n    new IntersectionObserver(function(entries){\n      var e0 = entries[0];\n      \/\/ s\u00f3 depois de o cart\u00e3o j\u00e1 ter passado para cima do ecr\u00e3, e s\u00f3 depois\n      \/\/ de o utilizador ter mexido em alguma coisa\n      var show = touched && !e0.isIntersecting && e0.boundingClientRect.top < 0;\n      el.sticky.classList.toggle('show', show);\n      el.sticky.setAttribute('aria-hidden', String(!show));\n    }, { threshold: 0.12 }).observe(el.card);\n  }\n\n  function postHeight(){\n    if (window.parent === window) return;\n    try { window.parent.postMessage({ type:'wildsuits:height', height: root.scrollHeight }, '*'); } catch(e){}\n  }\n  if ('ResizeObserver' in window) new ResizeObserver(postHeight).observe(root);\n  window.addEventListener('load', postHeight);\n\n  \/* =========================================================================\n     8. ARRANQUE\n     ========================================================================= *\/\n\n  load();\n  if (!isFinite(S.h)) S.h = 178;\n  if (!isFinite(S.w)) S.w = 76;\n  if (!isFinite(S.t)) S.t = 16;\n  S.h = clamp(S.h, LIMITS.h[0], LIMITS.h[1]);\n  S.w = clamp(S.w, LIMITS.w[0], LIMITS.w[1]);\n  S.t = clamp(S.t, LIMITS.t[0], LIMITS.t[1]);\n  if (!(S.month >= 0 && S.month <= 11)) S.month = new Date().getMonth();\n  el.tabTemp.tabIndex = -1;\n  rebuild();\n  }   \/\/ fin de start()\n})();\n<\/script>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7a399d2 elementor-widget elementor-widget-heading\" data-id=\"7a399d2\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Contact Us<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8928b5e elementor-button-align-stretch elementor-widget elementor-widget-form\" data-id=\"8928b5e\" data-element_type=\"widget\" data-settings=\"{&quot;step_next_label&quot;:&quot;Suivant&quot;,&quot;step_previous_label&quot;:&quot;Pr\\u00e9c\\u00e9dent&quot;,&quot;button_width&quot;:&quot;100&quot;,&quot;step_type&quot;:&quot;number_text&quot;,&quot;step_icon_shape&quot;:&quot;circle&quot;}\" data-widget_type=\"form.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<form class=\"elementor-form\" method=\"post\" name=\"Formulaire de contact\" action=\"\">\n\t\t\t<input type=\"hidden\" name=\"post_id\" value=\"43316\"\/>\n\t\t\t<input type=\"hidden\" name=\"form_id\" value=\"8928b5e\"\/>\n\t\t\t<input type=\"hidden\" name=\"referer_title\" value=\"\" \/>\n\n\t\t\t\n\t\t\t<div class=\"elementor-form-fields-wrapper elementor-labels-above\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-text elementor-field-group elementor-column elementor-field-group-name elementor-col-50 elementor-field-required elementor-mark-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-name\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tName\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"text\" name=\"form_fields[name]\" id=\"form-field-name\" class=\"elementor-field elementor-size-sm  elementor-field-textual\" placeholder=\"Your First name\" required=\"required\" aria-required=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-text elementor-field-group elementor-column elementor-field-group-field_85af973 elementor-col-50 elementor-field-required elementor-mark-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-field_85af973\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tLast Name\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"text\" name=\"form_fields[field_85af973]\" id=\"form-field-field_85af973\" class=\"elementor-field elementor-size-sm  elementor-field-textual\" placeholder=\"Your Name\" required=\"required\" aria-required=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-tel elementor-field-group elementor-column elementor-field-group-email elementor-col-100 elementor-field-required elementor-mark-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-email\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tPhone\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t<input size=\"1\" type=\"tel\" name=\"form_fields[email]\" id=\"form-field-email\" class=\"elementor-field elementor-size-sm  elementor-field-textual\" placeholder=\"+33 6 25 08 12 73\" required=\"required\" aria-required=\"true\" pattern=\"[0-9()#&amp;+*-=.]+\" title=\"Only numbers and phone characters (#, -, *, etc) are accepted.\">\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-email elementor-field-group elementor-column elementor-field-group-field_9a6a487 elementor-col-100 elementor-field-required elementor-mark-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-field_9a6a487\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tE-mail\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"email\" name=\"form_fields[field_9a6a487]\" id=\"form-field-field_9a6a487\" class=\"elementor-field elementor-size-sm  elementor-field-textual\" placeholder=\"wild@mail.com\" required=\"required\" aria-required=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-textarea elementor-field-group elementor-column elementor-field-group-message elementor-col-100 elementor-field-required elementor-mark-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-message\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tWrite on the below box\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t<textarea class=\"elementor-field-textual elementor-field  elementor-size-sm\" name=\"form_fields[message]\" id=\"form-field-message\" rows=\"4\" placeholder=\"Hello Wildsuits team, I don&#039;t fit into the size chart. I measure ... cm and weigh ... kg. Could you advise me on an appropriate size or suggest making a custom suit?\" required=\"required\" aria-required=\"true\"><\/textarea>\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-recaptcha_v3 elementor-field-group elementor-column elementor-field-group-field_3b3c529 elementor-col-100 recaptcha_v3-bottomleft\">\n\t\t\t\t\t<div class=\"elementor-field\" id=\"form-field-field_3b3c529\"><div class=\"elementor-g-recaptcha\" data-sitekey=\"6LfoU-AoAAAAAPEWPqy81E9DJF8myRGJKX_LtPbY\" data-type=\"v3\" data-action=\"Form\" data-badge=\"bottomleft\" data-size=\"invisible\"><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-group elementor-column elementor-field-type-submit elementor-col-100 e-form__buttons\">\n\t\t\t\t\t<button type=\"submit\" class=\"elementor-button elementor-size-sm\">\n\t\t\t\t\t\t<span >\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Send<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/button>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<input type=\"hidden\" name=\"trp-form-language\" value=\"en\"\/><\/form>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bdd74c9 elementor-list-item-link-inline elementor-align-center elementor-icon-list--layout-traditional elementor-widget elementor-widget-icon-list\" data-id=\"bdd74c9\" data-element_type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<ul class=\"elementor-icon-list-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-map-marker-alt\"><\/i>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\"> Nantes, France | Ericeira, Portugal<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"mailto:hello@wildsuits.fr\">\n\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-envelope\"><\/i>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">hello@wildsuits.fr<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"tel: 351913132080\">\n\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-phone-square-alt\"><\/i>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">(Portugal) +35 19 13 13 20 80<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"tel: 33625081273\">\n\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-phone-square-alt\"><\/i>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">(France) +33 6 25 08 12 73<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>L\u2019aper\u00e7u de fichier n\u2019ex\u00e9cute pas l\u2019outil. Ouvre cette page dans un navigateur (Safari, Chrome) ou sur le site : l\u00e0, \u00e7a fonctionne. This preview can\u2019t run the tool. Open it in a browser or on the website. WildsuitsOn the wave, be wild FR PT ES EN cm \u00b7 kg ft \u00b7 lb En 30 secondes [&hellip;]<\/p>","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"_links":{"self":[{"href":"https:\/\/wildsuits.eu\/en\/wp-json\/wp\/v2\/pages\/43316"}],"collection":[{"href":"https:\/\/wildsuits.eu\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/wildsuits.eu\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/wildsuits.eu\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/wildsuits.eu\/en\/wp-json\/wp\/v2\/comments?post=43316"}],"version-history":[{"count":26,"href":"https:\/\/wildsuits.eu\/en\/wp-json\/wp\/v2\/pages\/43316\/revisions"}],"predecessor-version":[{"id":44234,"href":"https:\/\/wildsuits.eu\/en\/wp-json\/wp\/v2\/pages\/43316\/revisions\/44234"}],"wp:attachment":[{"href":"https:\/\/wildsuits.eu\/en\/wp-json\/wp\/v2\/media?parent=43316"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}