{
  "version": 3,
  "sources": ["/cdn/shop/t/111/assets/saunamo-force-en-1778230700.js?smv=1778418300"],
  "sourcesContent": ["// saunamo-force-en build 2026-05-08T19:00 task5b \u2014 runtime hardening + late re-walks\n/* Saunamo forced English cache version 1778269100 */\n(function() {\n  var SAUNAMO_FORCE_EN_PATCH_VERSION = '20260508-shop-english-only-guard';\n  var SaunamoForceESViaEN = false;\n  if (SaunamoForceESViaEN) {\n    window.SaunamoForceEN = true;\n    window.SaunamoForceENSilent = true;\n    window.SaunamoForceENCatalogURL = window.SaunamoForceESCatalogURL ||\n      (window.location.protocol + '//' + window.location.host + '/cdn/shop/t/102/assets/saunamo-force-es-catalog.json?smv=1777925200');\n  }\n  if (!window.SaunamoForceEN) return;\n\n  var catalog = null;\n  var common = null;\n  var applying = false;\n  var skipTags = { SCRIPT: true, STYLE: true, NOSCRIPT: true, TEXTAREA: true, TEMPLATE: true };\n\n  if (!SaunamoForceESViaEN) {\n    scheduleSurgicalFallbacks();\n  }\n\n  fetch(window.SaunamoForceENCatalogURL, { credentials: 'omit', cache: 'no-store' })\n    .then(function(response) {\n      return response.json();\n    })\n    .then(function(json) {\n      catalog = json || {};\n      common = catalog.common || {};\n      applyAll();\n      watchChanges();\n    })\n    .catch(function(error) {\n      console.warn(SaunamoForceESViaEN ? '[SaunamoForceES] catalog load failed' : '[SaunamoForceEN] catalog load failed', error);\n    });\n\n  function normalise(value) {\n    return String(value || '').replace(/\\s+/g, ' ').trim();\n  }\n\n  function scheduleSurgicalFallbacks() {\n    var attempts = 0;\n    function tick() {\n      attempts += 1;\n      try { applySurgicalFallbacks(); }\n      catch (err) { /* swallow \u2014 keep ticking even if catalog is null mid-load */ }\n      if (attempts < 60) window.setTimeout(tick, 500);\n    }\n    if (document.readyState === 'loading') {\n      document.addEventListener('DOMContentLoaded', tick, { once: true });\n    } else {\n      tick();\n    }\n  }\n\n  function applySurgicalFallbacks() {\n    fixEnglishShopLinks();\n    fixQuotePopupEnglishCopy();\n    fixDeliverySectionCopy();\n    fixApprovedSaunaCopy();\n    applyVisiblePolish(document.body || document.documentElement);\n    applyEmergencyShopEnglishTextFixes(document.body || document.documentElement);\n    var exact = {\n      'Nome completo *': 'Full name *',\n      'Telefone *': 'Phone *',\n      'seguidores': 'followers',\n      'CLIENTE VERIFICADO': 'VERIFIED CUSTOMER',\n      'Centenas de clientes felizes na Europa': 'Hundreds of happy customers across Europe',\n      'Centenas de clientes felizes em toda a Europa': 'Hundreds of happy customers across Europe',\n      'Preencha os seus dados e entramos em contacto em': 'Fill in your details and we will contact you within',\n      'menos de 24 horas.': '24 hours.',\n      '* Campos obrigat\u00F3rios': '* Required fields',\n      'Segunda a sexta-feira: 9:00 - 18:00': 'Monday to Friday: 9:00 - 18:00',\n      'Informacoes de contacto': 'Contact information',\n      'Informa\u00E7\u00F5es de contacto': 'Contact information',\n      'Empresa': 'Company',\n      'Influenciadores': 'Influencers',\n      'Revendedores': 'Dealers',\n      'Saunas Personalizadas': 'Custom Saunas',\n      'Acess\u00F3rios': 'Accessories',\n      'Acessorios': 'Accessories',\n      'Artigos do Blog': 'Blog Posts',\n      'Siga-nos no Instagram': 'Follow us on Instagram',\n      'Aquecimento': 'Heating',\n      'Tempo at\u00E9 aquecer': 'Heat-up time',\n      'Materiais e ambiente': 'Materials and environment',\n      'Precisa de ajuda a escolher o modelo certo?': 'Need help choosing the right model?',\n      'Fale com os nossos especialistas em aquecedores!': 'Talk to our heater specialists!',\n      'Talk to our specialists em aquecedores!': 'Talk to our heater specialists!',\n      'Aquecedor a lenha': 'Wood-fired heater',\n      'Desinfe\u00E7\u00E3o UV': 'UV disinfection',\n      'Filtra\u00E7\u00E3o de areia': 'Sand filtration',\n      'Aquecimento el\u00E9trico': 'Electric heating',\n      'Jatos de \u00E1gua potentes': 'Powerful water jets',\n      'Forma redonda': 'Round shape',\n      'Forma c\u00FAbica': 'Cube shape',\n      'Forma oval': 'Oval shape',\n      'Arrefece a \u00E1gua at\u00E9 3\u00B0C / 37\u00B0F': 'Cools water to 3\u00B0C / 37\u00B0F',\n      'Desintoxicacao': 'Detoxification',\n      'Desintoxica\u00E7\u00E3o': 'Detoxification',\n      'Spas Exteriores': 'Hot Tubs',\n      'Spas exteriores': 'Hot Tubs',\n      'Login account': 'Sign in',\n      'Cart empty': 'Your cart is empty',\n      'Speak to our specialist': 'Talk to a sauna specialist',\n      'Request your complimentary quote': 'Request your free quote',\n      \"Fill in your details and we'll be in touch within less than 24 hours.\": \"Fill in your details and we'll be in touch within 24 hours.\",\n      'Helps us prepare a more accurate proposal for you.': 'Help us prepare a more accurate proposal for you.',\n      'Enjoy Premium Support': 'Premium support included',\n      'Unlock Personalized Experiences': 'Personalised recommendations',\n      'Early Access to New Drops': 'Early access to new releases',\n      'Seamless Checkout & Order Tracking': 'Faster checkout. Order tracking from purchase to install.',\n      'O seu carrinho est\u00E1 vazio, mas podemos ajud\u00E1-lo a preench\u00EA-lo with produtos incr\u00EDveis.': 'Your cart is empty, but we can help you fill it with something worthwhile.'\n    };\n    var walker = document.createTreeWalker(document.body || document.documentElement, NodeFilter.SHOW_TEXT, {\n      acceptNode: function(node) {\n        if (shouldSkip(node)) return NodeFilter.FILTER_REJECT;\n        return exact[normalise(node.nodeValue)] ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n      }\n    });\n    var nodes = [];\n    var node;\n    while ((node = walker.nextNode())) nodes.push(node);\n    nodes.forEach(function(textNode) {\n      var original = textNode.nodeValue || '';\n      var translated = exact[normalise(original)];\n      if (!translated) return;\n      var leading = (original.match(/^\\s*/) || [''])[0];\n      var trailing = (original.match(/\\s*$/) || [''])[0];\n      textNode.nodeValue = leading + translated + trailing;\n    });\n  }\n\n  function applyEmergencyShopEnglishTextFixes(root) {\n    if (!root) return;\n    var replacements = [\n      [/Design e Fabrico de Saunas Personalizadas/g, 'Custom Sauna Design and Manufacturing'],\n      [/Precisa de ajuda a escolher o modelo certo\\\\?/g, 'Need help choosing the right model?'],\n      [/Tempo at\u00E9 aquecer/g, 'Heat-up time'],\n      [/Materiais e ambiente/g, 'Materials and environment'],\n      [/Informacoes de contacto/g, 'Contact information'],\n      [/Informa\u00E7\u00F5es de contacto/g, 'Contact information'],\n      [/Segunda a sexta-feira: 9:00 - 18:00/g, 'Monday to Friday: 9:00 - 18:00'],\n      [/Escolha de Aquecimento/g, 'Heating choice'],\n      [/Aquecimento eletrico/g, 'Electric heating'],\n      [/Aquecimento el\u00E9trico/g, 'Electric heating'],\n      [/Arrefece a \u00E1gua at\u00E9 3\u00B0C \\/ 37\u00B0F/g, 'Cools water to 3\u00B0C / 37\u00B0F'],\n      [/Arrefece a agua ate 3\u00B0C \\/ 37\u00B0F/g, 'Cools water to 3\u00B0C / 37\u00B0F'],\n      [/Saunas Personalizadas/g, 'Custom Saunas'],\n      [/Acess\u00F3rios/g, 'Accessories'],\n      [/Acessorios/g, 'Accessories'],\n      [/Empresa/g, 'Company'],\n      [/Influenciadores/g, 'Influencers'],\n      [/Revendedores/g, 'Dealers'],\n      [/Artigos do Blog/g, 'Blog Posts'],\n      [/Siga-nos no Instagram/g, 'Follow us on Instagram'],\n      [/Confiada por Empresas/g, 'Trusted by Businesses'],\n      [/Confiada por Particulares e Empresas/g, 'Trusted by Private Clients and Businesses'],\n      [/\\\\b([0-9]+(?:[.,][0-9]+)?[MK]?)\\\\s+seguidores\\\\b/g, '$1 followers'],\n      [/\\\\bseguidores\\\\b/g, 'followers'],\n      [/\\\\bAquecimento\\\\b/g, 'Heating']\n    ];\n    function replaceValue(value) {\n      var next = String(value || '');\n      replacements.forEach(function(rule) {\n        next = next.replace(rule[0], rule[1]);\n      });\n      return next;\n    }\n    var walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, {\n      acceptNode: function(node) {\n        if (shouldSkip(node)) return NodeFilter.FILTER_REJECT;\n        return normalise(node.nodeValue) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n      }\n    });\n    var nodes = [];\n    var node;\n    while ((node = walker.nextNode())) nodes.push(node);\n    nodes.forEach(function(textNode) {\n      var original = textNode.nodeValue || '';\n      var next = replaceValue(original);\n      if (next !== original) textNode.nodeValue = next;\n    });\n    if (root.querySelectorAll) {\n      root.querySelectorAll('[alt], [title], [placeholder], [aria-label]').forEach(function(element) {\n        if (element.closest && element.closest('#dyn-configurador, [data-saunamo-force-en-skip=\"true\"]')) return;\n        ['alt', 'title', 'placeholder', 'aria-label'].forEach(function(attribute) {\n          var original = element.getAttribute(attribute);\n          if (!original) return;\n          var next = replaceValue(original);\n          if (next !== original) element.setAttribute(attribute, next);\n        });\n      });\n    }\n  }\n\n  function fixDeliverySectionCopy() {\n    var handle = String(window.SaunamoForceENProductHandle || '').toLowerCase();\n    if (!handle) return;\n    var root = document.querySelector('.sauna-pdp-delivery');\n    if (!root) return;\n    var cards = root.querySelectorAll('.sm-cube220-del-card');\n    if (!cards.length) return;\n    function setText(el, value) {\n      if (el) el.textContent = value;\n    }\n    function setChips(card, values) {\n      var chips = card ? card.querySelectorAll('.sm-cube220-del-chip') : [];\n      values.forEach(function(value, index) { setText(chips[index], value); });\n    }\n    function setCard(index, title, body, chips) {\n      var card = cards[index];\n      if (!card) return;\n      setText(card.querySelector('h4'), title);\n      setText(card.querySelector('p'), body);\n      if (chips) setChips(card, chips);\n    }\n    if (handle === 'sauna-infravermelho-aura-110' || handle === 'sauna-infravermelho-aura-150') {\n      setCard(0, 'Initial planning', 'We review the room, measurements and access with you before ordering. Aura only needs a level floor, suitable ventilation and a standard 230 V socket near the installation point.', ['Available space', 'Standard 230 V socket', 'Site access']);\n      setCard(1, 'Home delivery', 'The sauna arrives in flat modules that fit together, delivered directly to the address provided. We confirm the date and access route with you in advance.');\n      setCard(2, 'Simple assembly', 'Assembly takes 1-2 hours and can be done by one person \u2014 the modules fit together without special tools. If you prefer, the Saunamo team can also provide professional assembly. Connection is plug-and-play: just plug it into a 230 V socket. No electrician, no building work.');\n      setCard(3, 'Ongoing support', 'After installation, we remain available \u2014 with a 3-year factory warranty, replacement parts and technical support whenever you need it.');\n    } else if (handle === 'indoor-sauna-aisti-150') {\n      setCard(0, 'Initial planning', 'We review the room, measurements and electrical requirements with you before ordering. Aisti requires a dedicated circuit and connection by a certified electrician \u2014 we send the complete electrical diagram for the model.', ['Available space', 'Dedicated electrical connection', 'Site access']);\n      setCard(1, 'Home delivery', 'The sauna arrives in flat modules that fit together, delivered directly to the address provided. We confirm the date and access route with you in advance.');\n      setCard(2, 'Assembly', 'You can assemble the Aisti yourself \u2014 we provide detailed manuals with step-by-step instructions. If you prefer, you can add Saunamo professional assembly, where our team takes care of everything. For the electrical connection, you can use your own electrician or add Saunamo\u2019s electrical installation service.');\n      setCard(3, 'Ongoing support', 'After installation, we remain available \u2014 with a 3-year factory warranty, replacement parts and technical support whenever you need it.');\n    }\n  }\n\n  function fixApprovedSaunaCopy() {\n    var product = currentProduct();\n    if (!product) return;\n    var topfold = product.sauna_topfold || null;\n    var qualification = product.sauna_qualification || null;\n\n    if (topfold) {\n      document.querySelectorAll('.sm-cube220-topfold__title, .sm-cube220-buybar__name').forEach(function(element) {\n        if (topfold.title && normalise(element.textContent)) element.textContent = topfold.title;\n      });\n      document.querySelectorAll('.sm-cube220-topfold__subtitle').forEach(function(element) {\n        if (topfold.subtitle) element.textContent = topfold.subtitle;\n      });\n      var benefits = document.querySelectorAll('.sm-cube220-topfold__benefit-text');\n      (topfold.benefits || []).forEach(function(value, index) {\n        if (benefits[index]) benefits[index].textContent = value;\n      });\n    }\n\n    if (qualification) {\n      document.querySelectorAll('.sm-cube220-qualification-intro h3').forEach(function(element) {\n        if (qualification.heading) element.textContent = qualification.heading;\n      });\n      var cards = document.querySelectorAll('.sm-cube220-qualification-highlights .sm-cube220-highlight');\n      (qualification.highlights || []).forEach(function(item, index) {\n        var card = cards[index];\n        if (!card || !item) return;\n        var eyebrow = card.querySelector('.sm-cube220-highlight-eyebrow');\n        var title = card.querySelector('h5, h4');\n        var body = card.querySelector('.sm-cube220-mobile-fold__body p, p');\n        if (eyebrow && item.eyebrow) eyebrow.textContent = item.eyebrow;\n        if (title && item.title) title.textContent = item.title;\n        if (body && item.body) body.textContent = item.body;\n      });\n    }\n  }\n\n  function lookup(value) {\n    var key = normalise(value);\n    if (!key || !common) return '';\n    var mapped = common[key];\n    if (mapped) return polishLookupResult(mapped);\n    return dynamicLookup(key) || '';\n  }\n\n  function polishLookupResult(value) {\n    var polished = String(value || '');\n    var rules = [\n      [/^Recursos$/i, 'Resources'],\n      [/^Contactos$/i, 'Contact'],\n      [/^SALTAR PARA O CONTE\u00DADO$/i, 'SKIP TO CONTENT'],\n      [/^Traga clareza e equil\u00EDbrio \u00E0 sua rotina di\u00E1ria com solu\u00E7\u00F5es de bem-estar feitas para a vida moderna\\.$/i, 'Bring clarity and balance to your daily routine with wellness solutions made for modern living.'],\n      [/^BANHEIRAS DE GELO$/i, 'Ice Baths'],\n      [/^A Nossa Cole\u00E7\u00E3o de Bem-Estar$/i, 'Our Wellness Collection'],\n      [/^Fabricante de Saunas e Solu\u00E7\u00F5es de Hidromassagem e Banheiras de Gelo$/i, 'Manufacturer of Saunas, Hot Tubs and Ice Baths'],\n      [/^Saunas Interiores$/i, 'Indoor Saunas'],\n      [/^Saunas Exteriores$/i, 'Outdoor Saunas'],\n      [/^Banheiras Exteriores$/i, 'Hot Tubs'],\n      [/^Banheiras de Hidromassagem$/i, 'Hot Tubs'],\n      [/^Banheiras de Hidromassagem para Bem-Estar Exterior$/i, 'Hot Tubs for Outdoor Wellness'],\n      [/^Banheiras de Gelo$/i, 'Ice Baths'],\n      [/^Aquecedores$/i, 'Heaters'],\n      [/^Aquecedores de Sauna$/i, 'Sauna Heaters'],\n      [/^Aquecedores de Sauna para uma Experi\u00EAncia Verdadeira$/i, 'Sauna Heaters for a True Sauna Experience'],\n      [/^Aquecedor Wood-fired$/i, 'Wood-fired heater'],\n      [/^Saunas Interiores para uma Vida Refinada$/i, 'Indoor Saunas for Refined Living'],\n      [/^Saunas Exteriores Constru\u00EDdas para Durar$/i, 'Outdoor Saunas Built to Last'],\n      [/^Banheiras de Gelo para a Terapia de Frio Definitiva$/i, 'Ice Baths for the Ultimate Cold-Therapy Routine'],\n      [/^Pe\u00E7a o seu or\u00E7amento gr\u00E1tis$/i, 'Request your free quote'],\n      [/^Localiza\u00E7\u00E3o \\*$/i, 'Location *'],\n      [/^CONTINUAR$/i, 'CONTINUE'],\n      [/^([0-9.,]+ L \u00B7 )1 pessoa$/i, '$11 person'],\n      [/^1 pessoa$/i, '1 person'],\n      [/^([0-9]+(?:-[0-9]+)?) pessoas$/i, '$1 people'],\n      [/^At\u00E9 ([0-9]+) pessoas$/i, 'Up to $1 people'],\n      [/^\u00C1lamo termotatado$/i, 'Thermo-treated aspen'],\n      [/^\u00C1lamo termotratado$/i, 'Thermo-treated aspen'],\n      [/^Constru\u00EDdo em amieiro$/i, 'Built in alder'],\n      [/^Requer aquecedor de ([0-9,.]+(?:\\s*[-\\u2013]\\s*[0-9,.]+)?\\s*kW)$/i, 'Requires $1 heater'],\n      [/^Compat\u00EDvel com aquecedor de ([0-9,.]+(?:\\s*[-\\u2013]\\s*[0-9,.]+)?\\s*kW)$/i, 'Compatible with $1 heater'],\n      [/^Radiadores de espectro total$/i, 'Full-spectrum heaters'],\n      [/^COMPRAR AGORA$/i, 'BUY NOW'],\n      [/^Pedir or\u00E7amento gratuito$/i, 'Request a free quote'],\n      [/^In\u00EDcio$/i, 'Home'],\n      [/^Sauna Exterior$/i, 'Outdoor Sauna'],\n      [/^Sauna Interior$/i, 'Indoor Sauna'],\n      [/^Banheira de Gelo$/i, 'Ice Bath'],\n      [/^Fabrica\u00E7\u00E3o Europeia$/i, 'European manufacturing'],\n      [/^Resistente \u00E0s intemp\u00E9ries$/i, 'Weather-resistant'],\n      [/^Aquecedor a lenha$/i, 'Wood-fired heater'],\n      [/^Aquecimento el\u00E9trico$/i, 'Electric heating'],\n      [/^Tipo de aquecimento$/i, 'Heating type'],\n      [/^Forma c\u00FAbica$/i, 'Cube shape'],\n      [/^Para quantas pessoas\\? \\*$/i, 'For how many people? *'],\n      [/^\\(pode escolher mais de um\\)$/i, '(you can choose more than one)'],\n      [/^A sua pergunta$/i, 'Your question'],\n      [/^Tire as suas d\u00FAvidas \u2014 respondemos brevemente\\.$/i, 'Ask us anything \u2014 we will get back to you shortly.'],\n      [/^Ajuda-nos a preparar uma proposta mais precisa para si\\.$/i, 'Help us prepare a more accurate quote for you.'],\n      [/^A nossa equipa entrar\u00E1 em contacto consigo brevemente com uma proposta personalizada\\.$/i, 'Our team will get back to you shortly with a tailored quote.'],\n      [/^Por favor indique a sua localiza\u00E7\u00E3o\\.$/i, 'Please enter your location.'],\n      [/^Por favor indique o seu nome\\.$/i, 'Please enter your name.'],\n      [/^Por favor indique o seu n\u00FAmero\\.$/i, 'Please enter your phone number.'],\n      [/^Por favor indique um email v\u00E1lido\\.$/i, 'Please enter a valid email.'],\n      [/^N\u00E3o$/i, 'No'],\n      [/^Servi\u00E7o de montagem\\?$/i, 'Assembly service?'],\n      [/^Ecossistema de Bem-Estar Completo$/i, 'A Complete Wellness Ecosystem'],\n      [/^Heran\u00E7a Finlandesa do Bem-Estar$/i, 'Finnish Wellness Heritage'],\n      [/^Confiada por Particulares e Empresas$/i, 'Trusted by Individuals and Businesses'],\n      [/^Fabrica\u00E7\u00E3o europeia, constru\u00EDda para durar, com confian\u00E7a em todo o mundo\\.$/i, 'European craftsmanship, built to last, trusted worldwide.'],\n      [/^Concebidos com os aut\u00EAnticos princ\u00EDpios finlandeses da sauna \u2014 circula\u00E7\u00E3o de ar adequada, distribui\u00E7\u00E3o correta do calor, madeiras premium e o ritual completo calor\u2013frio\u2013repouso\\.$/i, 'Designed around authentic Finnish sauna principles \u2014 proper air circulation, correct heat distribution, premium woods and the full hot-cold-rest ritual.'],\n      [/^Oferecemos um ecossistema de bem-estar de inspira\u00E7\u00E3o finlandesa: saunas, mergulhos a frio e spas\\. Uma marca, uma experi\u00EAncia, um parceiro de confian\u00E7a\\.$/i, 'We offer a Finnish-inspired wellness ecosystem: saunas, cold plunges and hot tubs. One brand, one experience, one trusted partner.'],\n      [/^Materiais selecionados especificamente para ambientes extremos: calor intenso, humidade, exposi\u00E7\u00E3o ao frio, vibra\u00E7\u00E3o e durabilidade em instala\u00E7\u00F5es exteriores\\.$/i, 'Materials selected specifically for extreme environments: intense heat, humidity, cold exposure, vibration and long-term outdoor durability.'],\n      [/^Fabricada na UE com materiais de alta qualidade, trabalho artesanal preciso e est\u00E9tica atemporal\\.$/i, 'Made in the EU with high-quality materials, precise craftsmanship and timeless design.'],\n      [/^Desde hot\u00E9is boutique a centros de treino de elite, os produtos Saunamo s\u00E3o reconhecidos pela sua durabilidade, estabilidade e desempenho ao longo do dia\\.$/i, 'From boutique hotels to elite training centres, Saunamo products are recognised for their durability, stability and all-day performance.'],\n      [/^Desde interiores de sauna personalizados a configura\u00E7\u00F5es de bem-estar exterior \u00E0 medida, a Saunamo cria ambientes que se adaptam ao seu espa\u00E7o, \u00E0 sua vis\u00E3o e aos seus rituais\\.$/i, 'From custom indoor sauna interiors to bespoke outdoor wellness setups, Saunamo creates environments that adapt to your space, your vision and your rituals.'],\n      [/^Instaladores, eletricistas e carpinteiros especializados garantem que cada sauna, spa e mergulho a frio \u00E9 instalado corretamente e em seguran\u00E7a \u2014 sem improviso, sem atalhos\\.$/i, 'Specialised installers, electricians and carpenters ensure every sauna, hot tub and cold plunge is installed correctly and safely \u2014 no improvising, no shortcuts.'],\n      [/^Oferecemos log\u00EDstica personalizada, envio global e assist\u00EAncia p\u00F3s-venda cuidada para garantir que a sua instala\u00E7\u00E3o \u2014 seja sauna, spa ou banho de gelo \u2014 decorra sem complica\u00E7\u00F5es do in\u00EDcio ao fim\\.$/i, 'We offer tailored logistics, worldwide shipping and attentive after-sales support to make sure your installation \u2014 sauna, hot tub or cold plunge \u2014 runs smoothly from start to finish.'],\n      [/^Entre no processo de instala\u00E7\u00E3o e veja como a nossa equipa transforma mat\u00E9rias-primas numa sauna completamente acabada \u2014 fabricada com precis\u00E3o, expertise finlandesa e absoluta aten\u00E7\u00E3o ao detalhe\\.$/i, 'Step inside the installation process and see how our team turns raw materials into a fully finished sauna \u2014 built with precision, Finnish expertise and absolute attention to detail.'],\n      [/^Ver v\u00EDdeo completo aqui$/i, 'Watch the full video here'],\n      [/^FALAR COM VENDAS$/i, 'TALK TO SALES'],\n      [/^Fale com o nosso especialista$/i, 'Talk to our specialist'],\n      [/^Fale com a equipa$/i, 'Talk to our team'],\n      [/^FALE COM A EQUIPA$/i, 'TALK TO OUR TEAM'],\n      [/^Fale com um especialista$/i, 'Talk to a specialist'],\n      [/^FALE COM UM ESPECIALISTA$/i, 'TALK TO A SPECIALIST'],\n      [/^For Indoor and Utiliza[c\u00E7][a\u00E3]o exterior$/i, 'For Indoor and Outdoor Use'],\n      [/^Para utiliza[c\u00E7][a\u00E3]o interior e exterior$/i, 'For Indoor and Outdoor Use'],\n      [/^O servi\u00E7o da Saunamo foi excelente, a sauna foi uma compra fant\u00E1stica, trazendo consigo melhoria da condi\u00E7\u00E3o cardiovascular, metabolismo acelerado, melhor sono, recupera\u00E7\u00E3o muscular, elimina\u00E7\u00E3o de toxinas, redu\u00E7\u00E3o do stress e conte\u00FAdo poderoso para o Instagram\\.$/i, \"Saunamo's service was excellent. The sauna was a fantastic purchase, supporting cardiovascular health, metabolism, sleep, muscle recovery, toxin elimination, stress reduction \u2014 and content worth sharing.\"],\n      [/^Depois de procurar durante algum tempo uma banheira de hidromassagem norueguesa para o anivers\u00E1rio da minha esposa, optei finalmente pela qualidade e decidi trabalhar com a Saunamo\\.$/i, \"After searching for a Norwegian hot tub for my wife's birthday, I finally chose quality and decided to work with Saunamo.\"],\n      [/^\u26A1 El\u00E9trico$/i, '\u26A1 Electric'],\n      [/^Constru\u00E7\u00E3o modular$/i, 'Modular construction'],\n      [/^Energia e apoio$/i, 'Energy and support'],\n      [/^Quer comprar uma sauna interior para a sua casa\\?.*$/i, 'Looking to buy an indoor sauna for your home? Saunamo offers a selected collection of premium indoor saunas designed for private bathrooms, home gyms, wellness rooms and refined interiors.'],\n      [/^Quer comprar uma sauna exterior para o seu jardim ou terraco\\?.*$/i, 'Looking to buy an outdoor sauna for your garden or terrace? Saunamo offers a selected collection of premium outdoor saunas built from weather-resistant thermo-treated wood and designed to last outdoors for decades.'],\n      [/^Concebidas para quem compreende o poder do frio,.*$/i, 'Designed for people who understand the power of cold, Saunamo ice baths offer a refined approach to cold-water therapy. Built with durable materials and high-performance cooling systems, they are ideal for regular home, wellness and professional use.'],\n      [/^O aquecedor e o coracao da sauna\\..*$/i, 'The heater is the heart of the sauna. Whether wood-fired or electric, the right heater should deliver balanced heat, durability and an authentic experience. Saunamo offers a selected range of high-quality sauna heaters.'],\n      [/^Concebida para at\u00E9 seis pessoas, equilibra momentos de conv\u00EDvio com instantes de relaxamento individual\\..*$/i, 'Designed for up to six people, the Cube 200 balances shared moments with individual relaxation. Wood-fired heating gives the experience a more authentic ritual feel, with optional electric support for added convenience.'],\n      [/^Com a sua forma cil\u00EDndrica e acabamento em madeira, a Ergo traz uma presen\u00E7a natural e discreta a qualquer espa\u00E7o exterior\\..*$/i, 'With its cylindrical shape and wood finish, the Ergo brings a natural, understated presence to any outdoor space. Designed for a regular cold-water ritual, it offers a simple way to wake the body, recover energy and build a steady routine.'],\n      [/Outdoor hot bathing with real heat and a clear format\\./g, 'A wood-fired hot tub for relaxed outdoor living.'],\n      [/^Desinfe[c\u00E7][a\u00E3]o UV$/i, 'UV disinfection'],\n      [/^Filtra[c\u00E7][a\u00E3]o de areia$/i, 'Sand filtration'],\n      [/^Aquecimento el[e\u00E9]trico$/i, 'Electric heating'],\n      [/^Jatos de [\u00E1a]gua potentes$/i, 'Powerful water jets'],\n      [/^Arrefece a [\u00E1a]gua at[e\u00E9] 3\u00B0C \\/ 37\u00B0F$/i, 'Cools water to 3\u00B0C / 37\u00B0F'],\n      [/^Preencha os seus dados e entramos em contacto em$/i, 'Fill in your details and we will contact you within'],\n      [/^Depois de procurar durante algum tempo uma banheira de hidromassagem.*$/i, \"After searching for a Norwegian hot tub for my wife's birthday, I finally chose quality and decided to work with Saunamo.\"],\n      [/^\"?It became a daily ritual\\. I ordered from real Finns because I wanted the real sauna experience\\.?\"?$/i, \"\\\"It's become a daily ritual. I ordered from real Finns at Saunamo \u2014 one of the best saunas I've ever seen. It's an investment in health, longevity and quality of life.\\\"\"],\n      [/^\"?Tornou-se um ritual di\u00E1rio.*$/i, \"\\\"It's become a daily ritual. I ordered from real Finns at Saunamo \u2014 one of the best saunas I've ever seen. It's an investment in health, longevity and quality of life.\\\"\"],\n      [/^O servi\u00E7o da Saunamo foi excelente.*$/i, \"Saunamo's service was excellent. The sauna was a fantastic purchase, supporting cardiovascular health, metabolism, sleep, muscle recovery, toxin elimination and stress reduction.\"],\n      [/No surprises\\\\nFrom start to finish\\./g, 'No surprises.<br>From start to finish.'],\n      [/No surprises\\.\\\\nFrom start to finish\\./g, 'No surprises.<br>From start to finish.'],\n      [/Wood-fired character, social capacity, and site preparation confirmed before ordering\\./g, 'Wood-fired warmth, comfortable seating and practical setup details confirmed before you order.'],\n      [/^Outdoor bathing format$/i, 'Made for outdoor spaces'],\n      [/Designed for terraces, patios, gardens, and regular outdoor use\\./g, 'Built for terraces, patios and gardens, with a square layout that is easy to place.'],\n      [/^Social capacity$/i, 'Comfortable seating'],\n      [/Choose the size by available space, seating needs, and preferred layout\\./g, 'Choose the model that fits your space, group size and preferred seating layout.'],\n      [/A real flame heats the water and creates an authentic outdoor bathing ritual\\./g, 'A real flame warms the water and gives every soak a calm, traditional feel.'],\n      [/The Cube Outdoor Bathtub is a square wood-fired outdoor tub for terraces, decks, patios, and architectural outdoor spaces\\. Its clean geometric shape creates a strong visual presence, while the included wood heater gives an authentic hot-bathing ritual outdoors\\./g, 'The Cube 200 is a square, wood-fired outdoor hot tub for terraces, decks, patios and architectural outdoor spaces. Its clean geometric shape creates a strong visual presence, while the included wood heater brings an authentic outdoor bathing ritual.'],\n      [/Compact round design for social bathing/g, 'Compact round design for shared use'],\n      [/A compact social format designed for frequent outdoor use\\./g, 'A compact layout designed for regular outdoor use with family or friends.'],\n      [/Clean lines, real fire and a compact social format\\./g, 'Clean lines, real fire and a compact shape made for shared outdoor moments.'],\n      [/\\breal sauna volume\\b/gi, 'actual sauna volume'],\n      [/\\breal heated volume\\b/gi, 'actual heated volume'],\n      [/The right output depends on real sauna volume/g, \"The right output depends on the sauna's actual volume\"],\n      [/Choose the heater by the real sauna volume\\./g, \"Choose the heater by the sauna's actual volume.\"],\n      [/Column format with a strong sauna presence/g, 'Freestanding column design with a strong presence in the sauna'],\n      [/Real flame in a compact format/g, 'Real flame in a compact heater'],\n      [/simple format for smaller spaces/g, 'simple design for smaller spaces'],\n      [/Electric outdoor spa for regular use\\./g, 'An electric outdoor spa for everyday relaxation.'],\n      [/Choose by scale, seating, and available space\\./g, 'Choose the model by seating needs, available space, and how you plan to use it.'],\n      [/Everyday comfort without a wood-fired ritual\\./g, 'Easy day-to-day comfort without lighting a fire.'],\n      [/Comfortable seating by model/g, 'Seating that fits your routine'],\n      [/Vellamo models range from compact use to larger family sessions\\./g, 'Vellamo models range from compact personal use to larger family sessions.'],\n      [/Compact format for terraces, gardens, and wellness areas/g, 'Compact footprint for terraces, gardens and wellness areas'],\n      [/Plug & Play setup for simple daily use/g, 'Plug-and-play setup for simple daily use'],\n      [/A dedicated tub format for controlled cold-water routines at home\\./g, 'A dedicated cold-plunge tub for controlled cold-water routines at home.'],\n      [/Elongated two-person format/g, 'Elongated shape with room for two'],\n      [/An elongated format for a roomier cold plunge/g, 'An elongated shape for a roomier cold plunge'],\n      [/elongated format creates/g, 'elongated shape creates'],\n      [/A classic format for an outdoor routine/g, 'A classic setup for an outdoor routine'],\n      [/Comfortable format for home use/g, 'Comfortable home layout'],\n      [/Plug-and-play format for home/g, 'Plug-and-play layout for home'],\n      [/in a barrel format, designed/g, 'with a barrel design, made'],\n      [/Comfortable format for shared use/g, 'Comfortable layout for shared use'],\n      [/^Kerbside delivery$/i, 'Pallet delivery'],\n      [/We agree the date and delivery window\\. The tub arrives on a pallet; weight varies between 300 and 350 kg depending on the model\\./g, 'We agree the date and delivery window. The tub arrives on a pallet, so please make sure there is clear access for unloading. Weight varies from 300 to 350 kg depending on the model.'],\n      [/Enough space to unload the pallet at the kerbside\\./g, 'Enough space to unload the pallet near the delivery point.'],\n      [/\"?O servi\u00E7o da Saunamo foi excelente, a sauna foi uma compra fant\u00E1stica, trazendo consigo melhoria da condi\u00E7\u00E3o cardiovascular, metabolismo acelerado, melhor sono, (?:recovery|recupera\u00E7\u00E3o) muscular, elimina\u00E7\u00E3o de toxinas, redu\u00E7\u00E3o do stress\\.?\"?/gi, \"\\\"Saunamo's service was excellent; the sauna was a fantastic purchase, supporting cardiovascular health, metabolism, sleep, muscle recovery, toxin elimination and stress reduction.\\\"\"],\n      [/\\bbarrel format\\b/gi, 'barrel design'],\n      [/^Desinfecao UV$/i, 'UV disinfection'],\n      [/^Aquecimento eletrico$/i, 'Electric heating'],\n      [/^Arrefece a agua ate 3 graus C$/i, 'Cools water down to 3 \u00B0C'],\n      [/^Controls manuais$/i, 'Manual controls'],\n      [/^Controlos manuais$/i, 'Manual controls'],\n      [/^Comandos manuais$/i, 'Manual controls'],\n      [/^Painel\\s*\\+\\s*comando remoto$/i, 'Control panel + remote'],\n      [/^Painel\\s*\\+\\s*comando \u00E0 dist\u00E2ncia$/i, 'Control panel + remote'],\n      [/^Painel de controlo\\s*\\+\\s*comando remoto$/i, 'Control panel + remote'],\n      [/^Comando remoto$/i, 'Remote control'],\n      [/^Comando \u00E0 dist\u00E2ncia$/i, 'Remote control'],\n      [/^Controlo integrado$/i, 'Built-in control'],\n      [/^Controlos integrados$/i, 'Built-in controls'],\n      [/^Kit de chamin\u00E9 vendido separadamente$/i, 'Chimney set separate'],\n      [/^A lenha$/i, 'Wood-fired'],\n      [/^Disponivel em 9kW and 10\\.5kW$/i, 'Available in 9 kW and 10.5 kW'],\n      [/^CONTACTAR VENDAS$/i, 'CONTACT SALES'],\n      [/^Relaxamento Profundo$/i, 'Deep relaxation'],\n      [/^Recuperacao$/i, 'Recovery'],\n      [/^Momentos Partilhados$/i, 'Shared moments'],\n      [/^Instalacao Simples$/i, 'Simple installation'],\n      [/^Saude Cardiovascular$/i, 'Cardiovascular health'],\n      [/^Ligacao Social$/i, 'Social connection'],\n      [/^Construcao Duravel e Isolada$/i, 'Durable insulated construction'],\n      [/^Instalacao Plug and Play$/i, 'Plug-and-play installation'],\n      [/^Design Finlandes$/i, 'Finnish design'],\n      [/^Orientacao Especializada$/i, 'Expert guidance'],\n      [/\\btampaing\\b/gi, 'covering'],\n      [/\\brecupera\u00E7\u00E3o\\b/gi, 'recovery'],\n      [/A Ofuro inspira-se na calma e na inten\u00E7\u00E3o dos rituais de banho japoneses, reinterpretados para a recovery em \u00E1gua fria\\. O seu formato alongado cria uma forma mais aberta e natural de imers\u00E3o, with espa\u00E7o para esticar, partilhar e viver a experi\u00EAncia with conforto\\. with acabamento em madeira quente, integra-se facilmente em jardins, terra\u00E7os e espa\u00E7os wellness modernos\\./g, 'The Ofuro is inspired by the calm and intention of Japanese bathing rituals, reinterpreted for cold-water recovery. Its elongated format creates a more open and natural immersion experience, with room to stretch out, share the moment and enjoy the cold plunge in comfort. With a warm wood finish, it fits easily into gardens, terraces and modern wellness spaces.'],\n      [/A Ofuro inspira-se na calma e na inten\u00E7\u00E3o dos rituais de banho japoneses, reinterpretados para a recupera\u00E7\u00E3o em \u00E1gua fria\\. O seu formato alongado cria uma forma mais aberta e natural de imers\u00E3o, com espa\u00E7o para esticar, partilhar e viver a experi\u00EAncia com conforto\\. Com acabamento em madeira quente, integra-se facilmente em jardins, terra\u00E7os e espa\u00E7os wellness modernos\\./g, 'The Ofuro is inspired by the calm and intention of Japanese bathing rituals, reinterpreted for cold-water recovery. Its elongated format creates a more open and natural immersion experience, with room to stretch out, share the moment and enjoy the cold plunge in comfort. With a warm wood finish, it fits easily into gardens, terraces and modern wellness spaces.']\n    ];\n    rules.forEach(function(rule) {\n      polished = polished.replace(rule[0], rule[1]);\n    });\n    return polished;\n  }\n\n  function applyVisiblePolish(root) {\n    if (!root) return;\n    var walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, {\n      acceptNode: function(node) {\n        if (shouldSkip(node)) return NodeFilter.FILTER_REJECT;\n        if (!normalise(node.nodeValue)) return NodeFilter.FILTER_REJECT;\n        return NodeFilter.FILTER_ACCEPT;\n      }\n    });\n\n    var nodes = [];\n    var node;\n    while ((node = walker.nextNode())) nodes.push(node);\n\n    nodes.forEach(function(textNode) {\n      var original = textNode.nodeValue || '';\n      var polished = polishLookupResult(original);\n      if (polished !== original) textNode.nodeValue = polished;\n    });\n  }\n\n  function dynamicLookup(key) {\n    if (SaunamoForceESViaEN) return '';\n    var translated = key;\n    var changed = false;\n    var configuratorMissingPrefix = 'Translation missing: en.theme.cube220_configurator.html.';\n    var configuratorMissingLabels = {\n      a_carregar: 'Loading',\n      a_enviar: 'Sending',\n      a_sua_configuracao_label: 'Your configuration',\n      a_sua_proposta_foi_enviada_para_email: 'Your proposal has been sent to your email',\n      aromas: 'Aromas',\n      banco_encostos_2x_2_5m_led: 'Bench backrests 2 x 2.5 m with LED',\n      banco_encostos_4x_2_5m_led: 'Bench backrests 4 x 2.5 m with LED',\n      banheira_de_gelo: 'Cold plunge',\n      banheira_de_gelo_cube: 'Cube cold plunge',\n      banheira_de_gelo_ergo: 'Ergo cold plunge',\n      banheira_de_gelo_ofuro: 'Ofuro cold plunge',\n      como_prefere_a_parede_traseira: 'How do you prefer the rear wall?',\n      configure_o_seu_produto_placeholder: 'Configure your product',\n      de: 'of',\n      editar: 'Edit',\n      email_asterisco: 'Email *',\n      entrega: 'Delivery',\n      entrega_internacional: 'International delivery',\n      entrega_standard: 'Standard delivery',\n      estamos_a_preparar_o_configurador_placeholder: 'We are preparing the configurator',\n      expandir_configurador: 'Expand configurator',\n      extras: 'Extras',\n      fechar_configurador: 'Close configurator',\n      iva_incluido_pct: 'VAT included',\n      kit_de_aromas: 'Aroma kit',\n      montagem: 'Assembly',\n      nome_asterisco: 'Full name *',\n      parede_traseira: 'Rear wall',\n      passo: 'Step',\n      personalize_cada_detalhe_placeholder: 'Personalize every detail',\n      produto_selecionado: 'Selected product',\n      resumo: 'Summary',\n      sauna: 'Sauna',\n      se_adicionar_pedras_incluimos_count: 'If you add stones, we include the right quantity',\n      seguinte: 'Next',\n      spa: 'Hot tub',\n      spa_cube_200: 'Cube 200 hot tub',\n      spa_therma_200: 'Therma 200 hot tub',\n      spa_therma_220: 'Therma 220 hot tub',\n      spa_vellamo_l: 'Vellamo L hot tub',\n      spa_vellamo_m: 'Vellamo M hot tub',\n      spa_vellamo_s: 'Vellamo S hot tub',\n      telefone_asterisco: 'Phone *',\n      tentar_novamente: 'Try again',\n      total_estimado: 'Estimated total',\n      transporte: 'Transport',\n      tratamento_de_madeira_exterior: 'Exterior wood treatment',\n      tratamento_de_madeira_interior: 'Interior wood treatment',\n      ver_resumo: 'View summary',\n      ver_total_e_receber_proposta: 'View total and receive proposal',\n      vidro_meia_lua_traseiro: 'Rear half-moon glass'\n    };\n    Object.keys(configuratorMissingLabels).forEach(function(configuratorKey) {\n      var marker = configuratorMissingPrefix + configuratorKey;\n      if (translated.indexOf(marker) !== -1) {\n        translated = translated.split(marker).join(configuratorMissingLabels[configuratorKey]);\n        changed = true;\n      }\n    });\n\n    var rules = [\n      [/^Traga clareza e equil\u00EDbrio \u00E0 sua rotina di\u00E1ria com solu\u00E7\u00F5es de bem-estar feitas para a vida moderna\\.$/i, 'Bring clarity and balance to your daily routine with wellness solutions made for modern living.'],\n      [/^BANHEIRAS DE GELO$/i, 'Ice Baths'],\n      [/^A Nossa Cole\u00E7\u00E3o de Bem-Estar$/i, 'Our Wellness Collection'],\n      [/^Fabricante de Saunas e Solu\u00E7\u00F5es de Hidromassagem e Banheiras de Gelo$/i, 'Manufacturer of Saunas, Hot Tubs and Ice Baths'],\n      [/^Saunas Interiores$/i, 'Indoor Saunas'],\n      [/^Saunas Exteriores$/i, 'Outdoor Saunas'],\n      [/^Banheiras Exteriores$/i, 'Hot Tubs'],\n      [/^Banheiras de Hidromassagem$/i, 'Hot Tubs'],\n      [/^Banheiras de Hidromassagem para Bem-Estar Exterior$/i, 'Hot Tubs for Outdoor Wellness'],\n      [/^Banheiras de Gelo$/i, 'Ice Baths'],\n      [/^Aquecedores$/i, 'Heaters'],\n      [/^Aquecedores de Sauna$/i, 'Sauna Heaters'],\n      [/^Aquecedores de Sauna para uma Experi\u00EAncia Verdadeira$/i, 'Sauna Heaters for a True Sauna Experience'],\n      [/^Saunas Interiores para uma Vida Refinada$/i, 'Indoor Saunas for Refined Living'],\n      [/^Saunas Exteriores Constru\u00EDdas para Durar$/i, 'Outdoor Saunas Built to Last'],\n      [/^Banheiras de Gelo para a Terapia de Frio Definitiva$/i, 'Ice Baths for the Ultimate Cold-Therapy Routine'],\n      [/^Quer comprar uma sauna interior para a sua casa\\?.*$/i, 'Looking to buy an indoor sauna for your home? Saunamo offers a selected collection of premium indoor saunas designed for private bathrooms, home gyms, wellness rooms and refined interiors.'],\n      [/^Quer comprar uma sauna exterior para o seu jardim ou terraco\\?.*$/i, 'Looking to buy an outdoor sauna for your garden or terrace? Saunamo offers a selected collection of premium outdoor saunas built from weather-resistant thermo-treated wood and designed to last outdoors for decades.'],\n      [/^Concebidas para quem compreende o poder do frio,.*$/i, 'Designed for people who understand the power of cold, Saunamo ice baths offer a refined approach to cold-water therapy. Built with durable materials and high-performance cooling systems, they are ideal for regular home, wellness and professional use.'],\n      [/^O aquecedor e o coracao da sauna\\..*$/i, 'The heater is the heart of the sauna. Whether wood-fired or electric, the right heater should deliver balanced heat, durability and an authentic experience. Saunamo offers a selected range of high-quality sauna heaters.'],\n      [/^Aquecedores Wood-fired para a Experiencia Tradicional$/i, 'Wood-Fired Heaters for the Traditional Experience'],\n      [/^Os aquecedores Wood-fired oferecem a forma mais tradicional.*$/i, 'Wood-fired heaters offer the most traditional way to heat a sauna, valued for their natural heat, wood aroma and authentic experience. They are ideal for outdoor saunas and for anyone looking for the classic Finnish sauna ritual.'],\n      [/^Aquecedores Eletricos para a Vida Moderna$/i, 'Electric Heaters for Modern Living'],\n      [/^Recursos$/i, 'Resources'],\n      [/^Contactos$/i, 'Contact'],\n      [/^SALTAR PARA O CONTE\u00DADO$/i, 'SKIP TO CONTENT'],\n      [/^Pe\u00E7a o seu or\u00E7amento gr\u00E1tis$/i, 'Request your free quote'],\n      [/^Localiza\u00E7\u00E3o \\*$/i, 'Location *'],\n      [/^CONTINUAR$/i, 'CONTINUE'],\n      [/^A Saunamo tem anos de experiencia na concepcao e construcao de espacos de bem-estar para clientes privados e profissionais em toda a Europa\\. A nossa equipa esta disponivel para o ajudar a encontrar a solucao certa\\.$/i, 'Saunamo has years of experience designing and building wellness spaces for private and professional clients across Europe. Our team is available to help you find the right solution.'],\n      [/^Concebida para at\u00E9 seis pessoas, equilibra momentos de conv\u00EDvio com instantes de relaxamento individual\\..*$/i, 'Designed for up to six people, the Cube 200 balances shared moments with individual relaxation. Wood-fired heating gives the experience a more authentic ritual feel, with optional electric support for added convenience.'],\n      [/^Combine a \u00E1gua quente da Cube 200 com uma banheira de gelo para criar uma rotina simples de calor e frio, ajustada ao espa\u00E7o dispon\u00EDvel\\.$/i, 'Combine the warm water of the Cube 200 with an ice bath to create a simple hot-and-cold routine adapted to your available space.'],\n      [/^Banheira de Gelo Cube$/i, 'Cube Ice Bath'],\n      [/^Banheira de Gelo Ofuro$/i, 'Ofuro Ice Bath'],\n      [/^A equipa Saunamo ajuda a escolher a banheira de gelo certa para a Cube 200, considerando o espa\u00E7o dispon\u00EDvel, a rotina de utiliza\u00E7\u00E3o e a prepara\u00E7\u00E3o do local\\.$/i, 'The Saunamo team helps you choose the right ice bath for the Cube 200, taking available space, use routine and site preparation into account.'],\n      [/^Capacidade, sistema e pacote base seguem a informa\u00E7\u00E3o atualmente confirmada por modelo\\. O aquecedor el\u00E9trico de 3 kW \u00E9 opcional nos modelos Wood-fired\\.$/i, 'Capacity, system and base package follow the currently confirmed information for each model. The 3 kW electric heater is optional on wood-fired models.'],\n      [/^Com a sua forma cil\u00EDndrica e acabamento em madeira, a Ergo traz uma presen\u00E7a natural e discreta a qualquer espa\u00E7o exterior\\..*$/i, 'With its cylindrical shape and wood finish, the Ergo brings a natural, understated presence to any outdoor space. Designed for a regular cold-water ritual, it offers a simple way to wake the body, recover energy and build a steady routine.'],\n      [/^Sauna exterior compacta, com presen\u00E7a arquitet\u00F3nica, para acrescentar calor ao lado da banheira de gelo\\.$/i, 'A compact outdoor sauna with architectural presence, made to add heat beside the ice bath.'],\n      [/^Mais espa\u00E7o interior e uso at\u00E9 2 pessoas\\.$/i, 'More interior space and use for up to 2 people.'],\n      [/^Energia e apoio$/i, 'Energy and support'],\n      [/^([0-9.,]+ L \u00B7 )1 pessoa$/i, '$11 person'],\n      [/^1 pessoa$/i, '1 person'],\n      [/^([0-9]+(?:-[0-9]+)?) pessoas$/i, '$1 people'],\n      [/^At\u00E9 ([0-9]+) pessoas$/i, 'Up to $1 people'],\n      [/^\u00C1lamo termotatado$/i, 'Thermo-treated aspen'],\n      [/^\u00C1lamo termotratado$/i, 'Thermo-treated aspen'],\n      [/^Constru\u00EDdo em amieiro$/i, 'Built in alder'],\n      [/^Requer aquecedor de ([0-9,.]+(?:\\s*[-\\u2013]\\s*[0-9,.]+)?\\s*kW)$/i, 'Requires $1 heater'],\n      [/^Compat\u00EDvel com aquecedor de ([0-9,.]+(?:\\s*[-\\u2013]\\s*[0-9,.]+)?\\s*kW)$/i, 'Compatible with $1 heater'],\n      [/^Radiadores de espectro total$/i, 'Full-spectrum heaters'],\n      [/^COMPRAR AGORA$/i, 'BUY NOW'],\n      [/^Pedir or\u00E7amento gratuito$/i, 'Request a free quote'],\n      [/^In\u00EDcio$/i, 'Home'],\n      [/^Sauna Exterior$/i, 'Outdoor Sauna'],\n      [/^Sauna Interior$/i, 'Indoor Sauna'],\n      [/^Banheira de Gelo$/i, 'Ice Bath'],\n      [/^Fabrica\u00E7\u00E3o Europeia$/i, 'European manufacturing'],\n      [/^Resistente \u00E0s intemp\u00E9ries$/i, 'Weather-resistant'],\n      [/^Aquecedor a lenha$/i, 'Wood-fired heater'],\n      [/^Aquecimento el\u00E9trico$/i, 'Electric heating'],\n      [/^Tipo de aquecimento$/i, 'Heating type'],\n      [/^Forma c\u00FAbica$/i, 'Cube shape'],\n      [/^Para quantas pessoas\\? \\*$/i, 'For how many people? *'],\n      [/^\\(pode escolher mais de um\\)$/i, '(you can choose more than one)'],\n      [/^A sua pergunta$/i, 'Your question'],\n      [/^Tire as suas d\u00FAvidas \u2014 respondemos brevemente\\.$/i, 'Ask us anything \u2014 we will get back to you shortly.'],\n      [/^Ajuda-nos a preparar uma proposta mais precisa para si\\.$/i, 'Help us prepare a more accurate quote for you.'],\n      [/^A nossa equipa entrar\u00E1 em contacto consigo brevemente com uma proposta personalizada\\.$/i, 'Our team will get back to you shortly with a tailored quote.'],\n      [/^Por favor indique a sua localiza\u00E7\u00E3o\\.$/i, 'Please enter your location.'],\n      [/^Por favor indique o seu nome\\.$/i, 'Please enter your name.'],\n      [/^Por favor indique o seu n\u00FAmero\\.$/i, 'Please enter your phone number.'],\n      [/^Por favor indique um email v\u00E1lido\\.$/i, 'Please enter a valid email.'],\n      [/^N\u00E3o$/i, 'No'],\n      [/^Servi\u00E7o de montagem\\?$/i, 'Assembly service?'],\n      [/^Ecossistema de Bem-Estar Completo$/i, 'A Complete Wellness Ecosystem'],\n      [/^Heran\u00E7a Finlandesa do Bem-Estar$/i, 'Finnish Wellness Heritage'],\n      [/^Confiada por Particulares e Empresas$/i, 'Trusted by Individuals and Businesses'],\n      [/^Fabrica\u00E7\u00E3o europeia, constru\u00EDda para durar, com confian\u00E7a em todo o mundo\\.$/i, 'European craftsmanship, built to last, trusted worldwide.'],\n      [/^Concebidos com os aut\u00EAnticos princ\u00EDpios finlandeses da sauna \u2014 circula\u00E7\u00E3o de ar adequada, distribui\u00E7\u00E3o correta do calor, madeiras premium e o ritual completo calor\u2013frio\u2013repouso\\.$/i, 'Designed around authentic Finnish sauna principles \u2014 proper air circulation, correct heat distribution, premium woods and the full hot-cold-rest ritual.'],\n      [/^Oferecemos um ecossistema de bem-estar de inspira\u00E7\u00E3o finlandesa: saunas, mergulhos a frio e spas\\. Uma marca, uma experi\u00EAncia, um parceiro de confian\u00E7a\\.$/i, 'We offer a Finnish-inspired wellness ecosystem: saunas, cold plunges and hot tubs. One brand, one experience, one trusted partner.'],\n      [/^Materiais selecionados especificamente para ambientes extremos: calor intenso, humidade, exposi\u00E7\u00E3o ao frio, vibra\u00E7\u00E3o e durabilidade em instala\u00E7\u00F5es exteriores\\.$/i, 'Materials selected specifically for extreme environments: intense heat, humidity, cold exposure, vibration and long-term outdoor durability.'],\n      [/^Fabricada na UE com materiais de alta qualidade, trabalho artesanal preciso e est\u00E9tica atemporal\\.$/i, 'Made in the EU with high-quality materials, precise craftsmanship and timeless design.'],\n      [/^Desde hot\u00E9is boutique a centros de treino de elite, os produtos Saunamo s\u00E3o reconhecidos pela sua durabilidade, estabilidade e desempenho ao longo do dia\\.$/i, 'From boutique hotels to elite training centres, Saunamo products are recognised for their durability, stability and all-day performance.'],\n      [/^Desde interiores de sauna personalizados a configura\u00E7\u00F5es de bem-estar exterior \u00E0 medida, a Saunamo cria ambientes que se adaptam ao seu espa\u00E7o, \u00E0 sua vis\u00E3o e aos seus rituais\\.$/i, 'From custom indoor sauna interiors to bespoke outdoor wellness setups, Saunamo creates environments that adapt to your space, your vision and your rituals.'],\n      [/^Instaladores, eletricistas e carpinteiros especializados garantem que cada sauna, spa e mergulho a frio \u00E9 instalado corretamente e em seguran\u00E7a \u2014 sem improviso, sem atalhos\\.$/i, 'Specialised installers, electricians and carpenters ensure every sauna, hot tub and cold plunge is installed correctly and safely \u2014 no improvising, no shortcuts.'],\n      [/^Oferecemos log\u00EDstica personalizada, envio global e assist\u00EAncia p\u00F3s-venda cuidada para garantir que a sua instala\u00E7\u00E3o \u2014 seja sauna, spa ou banho de gelo \u2014 decorra sem complica\u00E7\u00F5es do in\u00EDcio ao fim\\.$/i, 'We offer tailored logistics, worldwide shipping and attentive after-sales support to make sure your installation \u2014 sauna, hot tub or cold plunge \u2014 runs smoothly from start to finish.'],\n      [/^Entre no processo de instala\u00E7\u00E3o e veja como a nossa equipa transforma mat\u00E9rias-primas numa sauna completamente acabada \u2014 fabricada com precis\u00E3o, expertise finlandesa e absoluta aten\u00E7\u00E3o ao detalhe\\.$/i, 'Step inside the installation process and see how our team turns raw materials into a fully finished sauna \u2014 built with precision, Finnish expertise and absolute attention to detail.'],\n      [/^Ver v\u00EDdeo completo aqui$/i, 'Watch the full video here'],\n      [/^FALAR COM VENDAS$/i, 'TALK TO SALES'],\n      [/^Fale com o nosso especialista$/i, 'Talk to our specialist'],\n      [/^Fale com a equipa$/i, 'Talk to our team'],\n      [/^FALE COM A EQUIPA$/i, 'TALK TO OUR TEAM'],\n      [/^Fale com um especialista$/i, 'Talk to a specialist'],\n      [/^FALE COM UM ESPECIALISTA$/i, 'TALK TO A SPECIALIST'],\n      [/^For Indoor and Utiliza[c\u00E7][a\u00E3]o exterior$/i, 'For Indoor and Outdoor Use'],\n      [/^Para utiliza[c\u00E7][a\u00E3]o interior e exterior$/i, 'For Indoor and Outdoor Use'],\n      [/^O servi\u00E7o da Saunamo foi excelente, a sauna foi uma compra fant\u00E1stica, trazendo consigo melhoria da condi\u00E7\u00E3o cardiovascular, metabolismo acelerado, melhor sono, recupera\u00E7\u00E3o muscular, elimina\u00E7\u00E3o de toxinas, redu\u00E7\u00E3o do stress e conte\u00FAdo poderoso para o Instagram\\.$/i, \"Saunamo's service was excellent. The sauna was a fantastic purchase, supporting cardiovascular health, metabolism, sleep, muscle recovery, toxin elimination, stress reduction \u2014 and content worth sharing.\"],\n      [/^Depois de procurar durante algum tempo uma banheira de hidromassagem norueguesa para o anivers\u00E1rio da minha esposa, optei finalmente pela qualidade e decidi trabalhar com a Saunamo\\.$/i, \"After searching for a Norwegian hot tub for my wife's birthday, I finally chose quality and decided to work with Saunamo.\"],\n      [/^\u26A1 El\u00E9trico$/i, '\u26A1 Electric'],\n      [/^Constru\u00E7\u00E3o modular$/i, 'Modular construction'],\n      [/^Aquecedor Wood-fired$/i, 'Wood-fired heater'],\n      [/^EXPLORE A NOSSA GAMA$/i, 'EXPLORE OUR RANGE'],\n      [/^Explore a nossa gama$/i, 'Explore our range'],\n      [/^EXPLORAR A NOSSA GAMA$/i, 'EXPLORE OUR RANGE'],\n      [/^Explorar a nossa gama$/i, 'Explore our range'],\n      [/^A Empresa$/i, 'Company'],\n      [/^Spas Exteriores$/i, 'Hot Tubs'],\n      [/^Spas exteriores$/i, 'Hot Tubs'],\n      [/^A Saunamo \u00E9 uma empresa de bem-estar sediada em Portugal que ajuda people a transformar as suas casas or neg\u00F3cios em espa\u00E7os de calma, recovery e bem-estar\\. Inspirada na aut\u00EAntica cultura finlandesa da sauna e no artesanato europeu de alta qualidade, criamos saunas, banheiras de gelo e spas que tornam a vida quotidiana melhor\\.$/i, 'Saunamo is a wellness company based in Portugal that helps people transform homes and businesses into spaces for calm, recovery and wellbeing. Inspired by authentic Finnish sauna culture and high-quality European craftsmanship, we create saunas, cold plunges and spas that make everyday life better.'],\n      [/^A Saunamo \u00E9 uma empresa de bem-estar sediada em Portugal que ajuda pessoas a transformar as suas casas ou neg\u00F3cios em espa\u00E7os de calma, recupera\u00E7\u00E3o e bem-estar\\. Inspirada na aut\u00EAntica cultura finlandesa da sauna e no artesanato europeu de alta qualidade, criamos saunas, banheiras de gelo e spas que tornam a vida quotidiana melhor\\.$/i, 'Saunamo is a wellness company based in Portugal that helps people transform homes and businesses into spaces for calm, recovery and wellbeing. Inspired by authentic Finnish sauna culture and high-quality European craftsmanship, we create saunas, cold plunges and spas that make everyday life better.'],\n      [/^A Saunamo foi fundada em 2023 por uma equipa finlandesa-portuguesa with uma miss\u00E3o clara: levar o aut\u00EAntico bem-estar n\u00F3rdico para al\u00E9m dos pa\u00EDses n\u00F3rdicos e torn\u00E1-lo acess\u00EDvel a um p\u00FAblico mais vasto\\.$/i, 'Saunamo was founded in 2023 by a Finnish-Portuguese team with a clear mission: to bring authentic Nordic wellbeing beyond the Nordic countries and make it accessible to a wider audience.'],\n      [/^Hoje essa miss\u00E3o evoluiu para algo maior\\. A Saunamo projeta e entrega solu\u00E7\u00F5es de sauna standard e totalmente personalizadas, juntamente with banheiras de gelo e spas, para casas particulares, espa\u00E7os de hotelaria e empresas em toda a Europa\\.$/i, 'Today, that mission has grown into something larger. Saunamo designs and delivers both standard and fully customised sauna solutions, together with cold plunges and hot tubs, for private homes, hospitality spaces and businesses across Europe.'],\n      [/^Na Saunamo, temos um forte sentido de responsabilidade e uma abordagem orientada para o cliente, raz\u00E3o pela qual a Saunamo cresceu rapidamente para se tornar uma das principais marcas de bem-estar do setor\\.$/i, 'At Saunamo, we work with a strong sense of responsibility and a customer-first approach, which has helped Saunamo grow quickly into one of the leading wellbeing brands in the sector.'],\n      [/^Responsabilidade$/i, 'Responsibility'],\n      [/^Autenticidade$/i, 'Authenticity'],\n      [/^Sede$/i, 'Headquarters'],\n      [/^A sede da Saunamo est\u00E1 localizada em Our\u00E9m, Portugal, onde gerimos o nosso showroom, log\u00EDstica, control de qualidade e distribui\u00E7\u00E3o pelos nossos mercados\\.$/i, 'Saunamo is headquartered in Ourem, Portugal, where we manage our showroom, logistics, quality control and distribution across our markets.'],\n      [/^As instala\u00E7\u00F5es incluem aproximadamente 1\\.500 m\u00B2 de espa\u00E7o de f\u00E1brica dispon\u00EDvel para suportar as nossas opera\u00E7\u00F5es atuais\\.$/i, 'The facilities include approximately 1,500 m\u00B2 of factory space available to support our current operations.'],\n      [/^Para al\u00E9m da nossa unidade em Our\u00E9m, os produtos Saunamo s\u00E3o fabricados no Norte da Europa, with produ\u00E7\u00E3o na Finl\u00E2ndia e nos pa\u00EDses b\u00E1lticos\\.$/i, 'In addition to our site in Ourem, Saunamo products are manufactured in Northern Europe, with production in Finland and the Baltic countries.'],\n      [/^Entre no nosso showroom em Our\u00E9m, Portugal, e experiencie as nossas solu\u00E7\u00F5es de bem-estar num ambiente calmo e cuidadosamente concebido\\. Explore materiais, acabamentos e layouts ao vivo, sinta a qualidade do artesanato e compreenda o que define um espa\u00E7o de bem-estar bem constru\u00EDdo\\.$/i, 'Step into our showroom in Ourem, Portugal, and experience our wellbeing solutions in a calm, carefully designed setting. Explore materials, finishes and layouts in person, feel the quality of the craftsmanship and understand what defines a well-built wellbeing space.'],\n      [/^Os nossos especialistas est\u00E3o dispon\u00EDveis para o guiar pelas op\u00E7\u00F5es e ajud\u00E1-lo a criar uma solu\u00E7\u00E3o que se adapte ao seu espa\u00E7o, necessidades e estilo de vida\\.$/i, 'Our specialists are available to guide you through the options and help you create a solution that fits your space, needs and lifestyle.'],\n      [/^Nome completo \\*$/i, 'Full name *'],\n      [/^Telefone \\*$/i, 'Phone *'],\n      [/^([0-9.,]+[MK]?)\\s*seguidores$/i, '$1 followers'],\n      [/^CLIENTE VERIFICADO$/i, 'VERIFIED CUSTOMER'],\n      [/^Segunda a sexta-feira: 9:00 - 18:00$/i, 'Monday to Friday: 9:00 - 18:00'],\n      [/^What defines the Circulo$/i, 'What defines the Circle'],\n      [/^Integracao$/i, 'Integration'],\n      [/^Valores$/i, 'Values'],\n      [/^Habitos Diarios$/i, 'Daily Habits'],\n      [/^Inspirar$/i, 'Inspiration'],\n      [/^Arquitetos e Designers$/i, 'Architects and Designers'],\n      [/^Empreiteiros$/i, 'Contractors'],\n      [/^Como Trabalhamos$/i, 'How We Work'],\n      [/^O seu carrinho est\u00E1 vazio, mas podemos ajud\u00E1-lo a preench\u00EA-lo with produtos incr\u00EDveis\\.$/i, 'Your cart is empty, but we can help you fill it with something worthwhile.'],\n      [/^The data to be registered are obtained from the customer through messages sent via the forms on the saunamo\\.pt website, by email, telephone, social media services, contracts, customer meetings and other situations in which the customer provides their information\\.$/i, 'The data to be registered are obtained from the customer through messages sent via the forms on the saunamo.shop website, by email, telephone, social media services, contracts, customer meetings and other situations in which the customer provides their information.'],\n      [/^Nordic Homesteads LDA, NIF PT517939126$/i, 'Arbor Eco LDA, NIF PT517939126'],\n      [/^info@saunamo\\.pt$/i, 'info@saunamo.shop'],\n      [/^Quer esteja a criar um espa\u00E7o de bem-estar privado em casa ou uma instala\u00E7\u00E3o profissional para o seu neg\u00F3cio, a Saunamo projeta e fabrica saunas, banhos de gelo e banheiras de hidromassagem para desempenho a longo prazo\\.$/i, 'Whether you are creating a private wellness space at home or a professional installation for your business, Saunamo designs and builds saunas, cold plunges and hot tubs for long-term performance.'],\n      [/^Baseados nos princ\u00EDpios finlandeses da sauna e fabricados na Europa, todos os produtos Saunamo s\u00E3o concebidos para durabilidade, conforto e desempenho t\u00E9rmico consistente em ambientes residenciais e comerciais\\.$/i, 'Based on Finnish sauna principles and made in Europe, every Saunamo product is designed for durability, comfort and consistent thermal performance in residential and commercial settings.'],\n      [/^OR\u00C7AMENTO$/i, 'QUOTE'],\n      [/^Or\u00E7amento$/i, 'Quote'],\n      [/^Desde$/i, 'From'],\n      [/^SHOP NOW$/i, 'BUY NOW'],\n      [/^Shop now$/i, 'Buy now'],\n      [/^Talk To Sales$/i, 'Talk to sales'],\n      [/^Iniciar Whatsapp$/i, 'Start WhatsApp'],\n      [/^Saunas Personalizadas$/i, 'Custom Saunas'],\n      [/^Outdoor tubs$/i, 'Hot Tubs'],\n      [/^Forma redonda$/i, 'Round shape'],\n      [/^Forma oval$/i, 'Oval shape'],\n      [/^Nome completo$/i, 'Full name'],\n      [/^Nome completo \\*$/i, 'Full name *'],\n      [/^Telefone$/i, 'Phone'],\n      [/^Telefone \\*$/i, 'Phone *'],\n      [/^([0-9]+(?:[.,][0-9]+)?[MK]?) seguidores$/i, '$1 followers'],\n      [/^seguidores$/i, 'followers'],\n      [/^CLIENTE VERIFICADO$/i, 'VERIFIED CUSTOMER'],\n      [/^Enviar mensagem$/i, 'Send message'],\n      [/^Mensagem enviada!$/i, 'Message sent!'],\n      [/^A few moredetalhes$/i, 'A few more details'],\n      [/^A few moredetails$/i, 'A few more details'],\n      [/\\bdetalhes\\b/gi, 'details'],\n      [/^Sauna \u00E0 Medida$/i, 'Custom sauna'],\n      [/^Sauna Infravermelhos$/i, 'Infrared sauna'],\n      [/^Outro$/i, 'Other'],\n      [/^Sim$/i, 'Yes'],\n      [/^\"It became a daily ritual\\. I ordered from real Finns because I wanted the real sauna experience\\.\"$/i, \"\\\"It's become a daily ritual. I ordered from real Finns at Saunamo \u2014 one of the best saunas I've ever seen. It's an investment in health, longevity and quality of life.\\\"\"],\n      [/^\"Tornou-se um ritual di\u00E1rio.*$/i, \"\\\"It's become a daily ritual. I ordered from real Finns at Saunamo \u2014 one of the best saunas I've ever seen. It's an investment in health, longevity and quality of life.\\\"\"],\n      [/^\"O servi\u00E7o da Saunamo foi excelente, a sauna foi uma compra fant\u00E1stica, trazendo consigo melhoria da condi\u00E7\u00E3o cardiovascular, metabolismo acelerado, melhor sono, recupera\u00E7\u00E3o muscular, elimina\u00E7\u00E3o de toxinas, redu\u00E7\u00E3o do stress\\.\"$/i, \"\\\"Saunamo's service was excellent; the sauna was a fantastic purchase, supporting cardiovascular health, metabolism, sleep, muscle recovery, toxin elimination and stress reduction.\\\"\"],\n      [/^\"O servi\u00E7o da Saunamo foi excelente, a sauna foi uma compra fant\u00E1stica, trazendo consigo melhoria da condi\u00E7\u00E3o cardiovascular, metabolismo acelerado, melhor sono, recovery muscular, elimina\u00E7\u00E3o de toxinas, redu\u00E7\u00E3o do stress\\.\"$/i, \"\\\"Saunamo's service was excellent; the sauna was a fantastic purchase, supporting cardiovascular health, metabolism, sleep, muscle recovery, toxin elimination and stress reduction.\\\"\"],\n      [/^Refr(?:ig(?:eration|dferation)|idgeration) unit included$/i, 'Cooling unit included'],\n      [/^External refr(?:ig(?:eration|dferation)|idgeration) unit included$/i, 'External cooling unit included'],\n      [/\\bRefr(?:ig(?:eration|dferation)|idgeration)\\b/gi, 'Cooling'],\n      [/^([0-9]+) itens$/i, '$1 items'],\n      [/^Want to plan a complete heating and cooling schedule\\?$/i, 'Want to plan a complete hot-and-cold setup?'],\n      [/^Planning for (?:cold and heat|heat and cold)$/i, 'Plan a hot-and-cold setup'],\n      [/^O uso regular da sauna oferece profundos benef\u00EDcios para a sa\u00FAde que v\u00E3o muito al\u00E9m do relaxamento\\. Desde a sa\u00FAde cardiovascular \u00E0 recovery muscular, a ci\u00EAncia confirma o que as culturas n\u00F3rdicas sabem h\u00E1 s\u00E9culos\\.$/i, 'Regular sauna use offers profound health benefits that go far beyond relaxation. From cardiovascular health to muscle recovery, science confirms what Nordic cultures have known for centuries.'],\n      [/^O uso regular da sauna oferece profundos benef\u00EDcios para a sa\u00FAde que v\u00E3o muito al\u00E9m do relaxamento\\. Desde a sa\u00FAde cardiovascular \u00E0 recupera\u00E7\u00E3o muscular, a ci\u00EAncia confirma o que as culturas n\u00F3rdicas sabem h\u00E1 s\u00E9culos\\.$/i, 'Regular sauna use offers profound health benefits that go far beyond relaxation. From cardiovascular health to muscle recovery, science confirms what Nordic cultures have known for centuries.'],\n      [/^Quanto tempo demora a sauna exterior a aquecer\\?$/i, 'How long does an outdoor sauna take to heat up?'],\n      [/^Quanto tempo demora a sauna a aquecer\\?$/i, 'How long does the sauna take to heat up?'],\n      [/^The Saunamo team can help you choose the right sauna to go with (?:the |your )?(Cube|Ergo|Ofuro), taking into account the available space and how you plan to use the set\\.$/i, 'The Saunamo team can help you pair the right sauna with your $1, based on your space and how you want to use it.'],\n      [/^Recursos$/i, 'Resources'],\n      [/^Contactos$/i, 'Contact'],\n      [/^Termina 30 Abr$/i, 'Ends 30 April'],\n      [/^Expandir tudo$/i, 'Expand all'],\n      [/^Recolher tudo$/i, 'Collapse all'],\n      [/^Fechar tudo$/i, 'Collapse all'],\n      [/^([0-9]+) modelos$/i, '$1 models'],\n      [/\\bExpandir tudo\\b/gi, 'Expand all'],\n      [/\\bRecolher tudo\\b/gi, 'Collapse all'],\n      [/\\bFechar tudo\\b/gi, 'Collapse all'],\n      [/\\b([0-9]+) modelos\\b/gi, '$1 models'],\n      [/^SHOP NOW$/i, 'BUY NOW'],\n      [/^Comprar agora \u2014 (.+)$/i, 'Buy now \u2014 $1'],\n      [/^Comprar agora$/i, 'Buy now'],\n      [/^Esgotado$/i, 'Sold out'],\n      [/^Desde$/i, 'From'],\n      [/^3 anos$/i, '3 years'],\n      [/^Garantia de 3 Anos$/i, '3-Year Warranty'],\n      [/^Garantia de 3 anos$/i, '3-year warranty'],\n      [/^Madeira termotatada negra$/i, 'Black thermo-treated wood'],\n      [/^Madeira termotatada$/i, 'Thermo-treated wood'],\n      [/^Madeira termotratada negra$/i, 'Black thermo-treated wood'],\n      [/^Madeira termotratada$/i, 'Thermo-treated wood'],\n      [/^Vidro frontal total$/i, 'Full glass front'],\n      [/^Desinfecao UV$/i, 'UV disinfection'],\n      [/^Desinfe[c\u00E7][a\u00E3]o UV$/i, 'UV disinfection'],\n      [/^Filtra[c\u00E7][a\u00E3]o de areia$/i, 'Sand filtration'],\n      [/^Aquecimento eletrico$/i, 'Electric heating'],\n      [/^Aquecimento el[e\u00E9]trico$/i, 'Electric heating'],\n      [/^Aquecedor a lenha$/i, 'Wood-fired heater'],\n      [/^Jatos de [\u00E1a]gua potentes$/i, 'Powerful water jets'],\n      [/^Forma redonda$/i, 'Round shape'],\n      [/^Forma c[u\u00FA]bica$/i, 'Cube shape'],\n      [/^Forma oval$/i, 'Oval shape'],\n      [/^Arrefece a [\u00E1a]gua at[e\u00E9] 3\u00B0C \\/ 37\u00B0F$/i, 'Cools water to 3\u00B0C / 37\u00B0F'],\n      [/^Aquecimento$/i, 'Heating'],\n      [/^Tempo at[e\u00E9] aquecer$/i, 'Heat-up time'],\n      [/^Materiais e ambiente$/i, 'Materials and environment'],\n      [/^Precisa de ajuda a escolher o modelo certo\\\\?$/i, 'Need help choosing the right model?'],\n      [/^Empresa$/i, 'Company'],\n      [/^Influenciadores$/i, 'Influencers'],\n      [/^Revendedores$/i, 'Dealers'],\n      [/^Saunas Personalizadas$/i, 'Custom Saunas'],\n      [/^Acess[o\u00F3]rios$/i, 'Accessories'],\n      [/^Informacoes de contacto$/i, 'Contact information'],\n      [/^Informa\u00E7\u00F5es de contacto$/i, 'Contact information'],\n      [/^Segunda a sexta-feira: 9:00 - 18:00$/i, 'Monday to Friday: 9:00 - 18:00'],\n      [/^Centenas de clientes felizes (?:na|em toda a) Europa$/i, 'Hundreds of happy customers across Europe'],\n      [/^Preencha os seus dados e entramos em contacto em$/i, 'Fill in your details and we will contact you within'],\n      [/^menos de 24 horas\\\\.$/i, '24 hours.'],\n      [/^\\\\* Campos obrigat\u00F3rios$/i, '* Required fields'],\n      [/^seguidores$/i, 'followers'],\n      [/^Artigos do Blog$/i, 'Blog Posts'],\n      [/^Siga-nos no Instagram$/i, 'Follow us on Instagram'],\n      [/^Arrefece a agua ate 3 graus C$/i, 'Cools water to 3 degrees C'],\n      [/^Controls manuais$/i, 'Manual controls'],\n      [/^Controlos manuais$/i, 'Manual controls'],\n      [/^Comandos manuais$/i, 'Manual controls'],\n      [/^Painel\\s*\\+\\s*comando remoto$/i, 'Control panel + remote'],\n      [/^Painel\\s*\\+\\s*comando \u00E0 dist\u00E2ncia$/i, 'Control panel + remote'],\n      [/^Painel de controlo\\s*\\+\\s*comando remoto$/i, 'Control panel + remote'],\n      [/^Comando remoto$/i, 'Remote control'],\n      [/^Comando \u00E0 dist\u00E2ncia$/i, 'Remote control'],\n      [/^Controlo integrado$/i, 'Built-in control'],\n      [/^Controlos integrados$/i, 'Built-in controls'],\n      [/^Kit de chamin\u00E9 vendido separadamente$/i, 'Chimney set separate'],\n      [/^A lenha$/i, 'Wood-fired'],\n      [/^Disponivel em 9kW and 10\\.5kW$/i, 'Available in 9 kW and 10.5 kW'],\n      [/^CONTACTAR VENDAS$/i, 'CONTACT SALES'],\n      [/^Relaxamento Profundo$/i, 'Deep relaxation'],\n      [/^Recuperacao$/i, 'Recovery'],\n      [/^Momentos Partilhados$/i, 'Shared moments'],\n      [/^Instalacao Simples$/i, 'Simple installation'],\n      [/^Saude Cardiovascular$/i, 'Cardiovascular health'],\n      [/^Ligacao Social$/i, 'Social connection'],\n      [/^Construcao Duravel e Isolada$/i, 'Durable insulated construction'],\n      [/^Instalacao Plug and Play$/i, 'Plug-and-play installation'],\n      [/^Design Finlandes$/i, 'Finnish design'],\n      [/^Orientacao Especializada$/i, 'Expert guidance'],\n      [/\\btampaing\\b/gi, 'covering'],\n      [/\\brecupera\u00E7\u00E3o\\b/gi, 'recovery'],\n      [/^MODELOS$/i, 'MODELS'],\n      [/^COMANDO$/i, 'CONTROL'],\n      [/^CONTROLO$/i, 'CONTROL'],\n      [/^USO$/i, 'USAGE'],\n      [/^ENCAIXE$/i, 'FIT'],\n      [/^RESPOSTA$/i, 'RESPONSE'],\n      [/^PORQU\u00CA AAVA$/i, 'WHY AAVA?'],\n      [/^PORQU\u00CA KAJO$/i, 'WHY KAJO?'],\n      [/^PORQU\u00CA TAIKA$/i, 'WHY TAIKA?'],\n      [/^PORQU\u00CA PYROS$/i, 'WHY PYROS?'],\n      [/^PORQU\u00CA NOKI$/i, 'WHY NOKI?'],\n      [/^PORQU\u00CA TULI$/i, 'WHY TULI?'],\n      [/^Bot\u00F5es integrados$/i, 'Built-in buttons'],\n      [/^Bot\u00F5es integrados no aquecedor$/i, 'Buttons built into the heater'],\n      [/^Integrado$/i, 'Integrated'],\n      [/^Controlo$/i, 'Control'],\n      [/^Tipo de controlo$/i, 'Control type'],\n      [/^Controlo do modelo$/i, 'Model control'],\n      [/^Antes de encomendar$/i, 'Before ordering'],\n      [/^Especifica\u00E7\u00F5es$/i, 'Specifications'],\n      [/^Instala\u00E7\u00E3o e suporte$/i, 'Installation and support'],\n      [/^Alimenta\u00E7\u00E3o el\u00E9trica$/i, 'Electrical supply'],\n      [/^Instala\u00E7\u00E3o qualificada$/i, 'Qualified installation'],\n      [/^Pot\u00EAncia e dados$/i, 'Power and details'],\n      [/^Modelos \\/ pot\u00EAncia$/i, 'Models / power'],\n      [/^Liga\u00E7\u00E3o el\u00E9trica por eletricista certificado$/i, 'Electrical connection by a certified electrician'],\n      [/^Pre\u00E7o base \u00B7 IVA inclu\u00EDdo \u00B7 escolha a pot\u00EAncia e confirme o que entra na proposta$/i, 'Base price \u00B7 VAT included \u00B7 choose the power rating and confirm what is included in the quote'],\n      [/^INCLUI$/i, 'INCLUDED'],\n      [/^Chamin\u00E9$/i, 'Chimney'],\n      [/^Chamin\u00E9, when listed on the package$/i, 'Chimney, when listed in the quote'],\n      [/^Chamin\u00E9, when specified in the proposal$/i, 'Chimney, when listed in the quote'],\n      [/^Control settings for the selected model$/i, 'Control configuration for the selected model'],\n      [/^Safety guidelines and minimum distances$/i, 'Safety and clearance guidance'],\n      [/^Sauna stones, unless otherwise specified in the proposal$/i, 'Sauna stones, unless stated in the quote'],\n      [/^Not included in the base price; can be purchased separately:$/i, 'Not included in the base price; can be bought separately:'],\n      [/^Modelo \\/ pot\u00EAncia$/i, 'Model / power'],\n      [/\\bcaixas\\b/gi, 'boxes'],\n      [/\\bcaixa\\b/gi, 'box'],\n      [/\\bcontrolo\\b/gi, 'control'],\n      [/\\bControlo\\b/g, 'Control'],\n      [/\\balimenta\u00E7\u00E3o el\u00E9trica\\b/gi, 'electrical supply'],\n      [/\\bAlimenta\u00E7\u00E3o el\u00E9trica\\b/g, 'Electrical supply'],\n      [/\\bkg de pedras\\b/gi, 'kg of stones'],\n      [/\\bde pedras\\b/gi, 'of stones'],\n      [/\\bpedras\\b/gi, 'stones'],\n      [/\\bPedras\\b/g, 'Stones'],\n      [/\\blaterais\\/traseira\\b/gi, 'sides/rear'],\n      [/\\bLateral\\b/g, 'Side'],\n      [/\\blaterais\\b/gi, 'sides'],\n      [/\\btraseira\\b/gi, 'rear'],\n      [/\\bao teto\\b/gi, 'to ceiling'],\n      [/\\bacima\\b/gi, 'above'],\n      [/\\baltura m\u00EDnima\\b/gi, 'minimum height'],\n      [/\\bfrente\\b/gi, 'front'],\n      [/\\bporta met\u00E1lica\\b/gi, 'metal door'],\n      [/\\bporta de vidro\\b/gi, 'glass door'],\n      [/\\bpedras ao teto\\b/gi, 'stones to ceiling'],\n      [/\\bchamin\u00E9 ao teto\\b/gi, 'chimney to ceiling'],\n      [/\\bisolamento de piso\\b/gi, 'floor insulation'],\n      [/\\bat\u00E9\\b/gi, 'up to'],\n      [/\\bAt\u00E9\\b/g, 'Up to'],\n      [/\\bou\\b/gi, 'or'],\n      [/\\bcom\\b/gi, 'with'],\n      [/^Aquecedor(\\s|$)/i, 'Heater$1'],\n      [/^Heater a Lenha (.+)$/i, '$1 Wood-Burning Heater'],\n      [/^Heater El\u00E9trico (.+)$/i, '$1 Electric Heater'],\n      [/^Sauna para ([0-9]+(?:[\u2013-][0-9]+)?) pessoas$/i, 'Sauna for $1 people'],\n      [/\\b([0-9]+) pessoas\\b/gi, '$1 people'],\n      [/\\bpessoas\\b/gi, 'people'],\n      [/\\bpessoa\\b/gi, 'person'],\n      [/\\bgarantia\\b/gi, 'warranty'],\n      [/\\banos\\b/gi, 'years'],\n      [/\\bano\\b/gi, 'year'],\n      [/\\bPre\u00E7o\\b/g, 'Price'],\n      [/\\bpre\u00E7o\\b/g, 'price'],\n      [/\\bDimens\u00F5es\\b/g, 'Dimensions'],\n      [/\\bCapacidade\\b/g, 'Capacity'],\n      [/\\bEntrega\\b/g, 'Delivery'],\n      [/\\bInstala\u00E7\u00E3o\\b/g, 'Installation'],\n      [/\\bConfigura\u00E7\u00E3o\\b/g, 'Configuration']\n    ];\n\n    rules.forEach(function(rule) {\n      var next = translated.replace(rule[0], rule[1]);\n      if (next !== translated) {\n        translated = next;\n        changed = true;\n      }\n    });\n\n    return changed ? translated : '';\n  }\n\n  function applyAll() {\n    if (applying || !catalog) return;\n    applying = true;\n    try {\n      document.documentElement.lang = SaunamoForceESViaEN ? 'es' : 'en';\n      addBanner();\n      addEnglishPolishStyles();\n      updateDomainSwitcherForPreview();\n      applyProductOverrides();\n      fixApprovedSaunaCopy();\n      walkAndReplace(document.body);\n      applyVisiblePolish(document.body);\n      applyEmergencyShopEnglishTextFixes(document.body || document.documentElement);\n      replaceAttributes();\n      fixCompareExpandControls();\n      fixEnglishShopLinks();\n      fixQuotePopupEnglishCopy();\n      fixResidualEnglishCopy();\n      document.documentElement.classList.remove('saunamo-force-en-booting');\n    } finally {\n      applying = false;\n    }\n  }\n\n  function addBanner() {\n    if (window.SaunamoForceENSilent) {\n      document.body.classList.add('saunamo-force-en-active', 'saunamo-force-en-silent');\n      return;\n    }\n    if (document.querySelector('.saunamo-force-en-banner')) return;\n    var banner = document.createElement('div');\n    banner.className = 'saunamo-force-en-banner';\n    banner.innerHTML = '<b>DRAFT EN PREVIEW</b> &nbsp; forced-English mode &nbsp;\u00B7&nbsp; theme 199512392019 &nbsp;\u00B7&nbsp; add force_en=0 to return to PT';\n    document.body.insertBefore(banner, document.body.firstChild);\n    document.body.classList.add('saunamo-force-en-active');\n  }\n\n  function addEnglishPolishStyles() {\n    if (document.getElementById('saunamo-force-en-polish-styles')) return;\n    var style = document.createElement('style');\n    style.id = 'saunamo-force-en-polish-styles';\n    style.textContent = '.icetub-buttons .secondButton{text-transform:none!important;}';\n    document.head.appendChild(style);\n  }\n\n  function fixEnglishShopLinks() {\n    var host = (window.location.hostname || '').replace(/^www\\./, '');\n    if (host !== 'saunamo.shop') return;\n    document.querySelectorAll('a[href]').forEach(function(link) {\n      if (link.closest && link.closest('.saunamo-native-language, .country-selector, .wg-drop, .weglot-container')) return;\n      var label = normalise(link.textContent);\n      var rawHref = link.getAttribute('href') || '';\n\n      if (/saunamo\\.pthttps:\\/\\/saunamo\\.shop/i.test(rawHref)) {\n        rawHref = rawHref.replace(/saunamo\\.pthttps:\\/\\/saunamo\\.shop/gi, 'saunamo.shop');\n        try {\n          var shareUrl = new URL(rawHref, window.location.origin);\n          if (/pinterest\\.com$/i.test(shareUrl.hostname) && /Liquid error/i.test(shareUrl.searchParams.get('media') || '')) {\n            shareUrl.searchParams.delete('media');\n          }\n          link.setAttribute('href', shareUrl.toString());\n        } catch (error) {\n          link.setAttribute('href', rawHref);\n        }\n        return;\n      }\n\n      if (label === '+351 917 002 672') {\n        link.setAttribute('href', 'tel:+351917002672');\n        return;\n      }\n      if (label === 'info@saunamo.shop') {\n        link.setAttribute('href', 'mailto:info@saunamo.shop');\n        return;\n      }\n      if (/^https?:\\/\\/www\\.instagram\\.pt\\/saunamo\\.wellness\\/?$/i.test(rawHref)) {\n        link.setAttribute('href', 'https://www.instagram.com/saunamo.wellness/');\n        return;\n      }\n\n      var url;\n      try {\n        url = new URL(rawHref, window.location.origin);\n      } catch (error) {\n        return;\n      }\n\n      var urlHost = (url.hostname || '').replace(/^www\\./, '');\n      var path = url.pathname.replace(/\\/$/, '');\n      var internalPtPath = {\n        '/pages/sobre-nos': true,\n        '/pages/influencers': true,\n        '/pages/sauna-manufacturer-b2b': true\n      };\n\n      if ((urlHost === 'saunamo.pt' || urlHost === 'saunamo.es') && internalPtPath[path]) {\n        url.protocol = window.location.protocol;\n        url.hostname = window.location.hostname;\n        url.port = window.location.port;\n        if (path === '/pages/sobre-nos') url.pathname = '/pages/about-us';\n        link.setAttribute('href', url.toString());\n        return;\n      }\n\n      if (urlHost === 'saunamo.pt' || urlHost === 'saunamo.es') {\n        url.protocol = window.location.protocol;\n        url.hostname = window.location.hostname;\n        url.port = window.location.port;\n        link.setAttribute('href', url.toString());\n        return;\n      }\n\n      if (urlHost === host && path === '/pages/contato') {\n        url.pathname = '/pages/contact';\n        link.setAttribute('href', url.toString());\n      }\n    });\n  }\n\n  function fixQuotePopupEnglishCopy() {\n    if ((window.location.hostname || '').replace(/^www\\./, '') !== 'saunamo.shop') return;\n    document.querySelectorAll('#indentPopupOverlay [data-t=\"step1_sub\"], .indent-popup-overlay [data-t=\"step1_sub\"]').forEach(function(element) {\n      var text = normalise(element.textContent);\n      if (/Fill in your details and we'll be in touch within less than 24 hours\\./i.test(text) ||\n          /Fill in your details and we'll get back to you within 24 hours\\./i.test(text) ||\n          /Preencha os seus dados e entraremos em contacto em menos de\\s+24 horas/i.test(text)) {\n        element.innerHTML = \"Fill in your details and we'll get back to you within <strong>24 hours</strong>.\";\n      }\n    });\n    document.querySelectorAll('#indentPopupOverlay .snm-title, .indent-popup-overlay .snm-title').forEach(function(element) {\n      if (normalise(element.textContent) === 'A few moredetails') {\n        element.textContent = 'A few more details';\n      }\n    });\n    document.querySelectorAll('#indentPopupOverlay .snm-testi-quote, .indent-popup-overlay .snm-testi-quote').forEach(function(element) {\n      if (/^\"O servi\u00E7o da Saunamo foi excelente/i.test(normalise(element.textContent))) {\n        element.textContent = \"\\\"Saunamo's service was excellent; the sauna was a fantastic purchase, supporting cardiovascular health, metabolism, sleep, muscle recovery, toxin elimination and stress reduction.\\\"\";\n      }\n    });\n  }\n\n  function fixResidualEnglishCopy() {\n    if ((window.location.hostname || '').replace(/^www\\./, '') !== 'saunamo.shop') return;\n    var exact = {\n      'Recursos': 'Resources',\n      'Contactos': 'Contact',\n      'Aquecedor Wood-fired': 'Wood-fired heater',\n      'Fabrica\u00E7\u00E3o Europeia': 'European manufacturing',\n      'Entrega Mundial e Suporte Dedicado': 'Worldwide delivery and dedicated support',\n      'EXPLORAR A NOSSA GAMA': 'EXPLORE OUR RANGE',\n      'Instala\u00E7\u00E3o de uma Sauna Exterior': 'Outdoor Sauna Installation',\n      'VER V\u00CDDEO COMPLETO AQUI': 'WATCH THE FULL VIDEO HERE',\n      'Ver v\u00EDdeo completo aqui': 'WATCH THE FULL VIDEO HERE',\n      'Sauna Exterior': 'Outdoor Sauna',\n      'Confiada por Empresas': 'Trusted by Businesses',\n      'Instala\u00E7\u00E3o e Funda\u00E7\u00F5es': 'Installation and foundations',\n      'Instalacao Plug and Play': 'Plug-and-play installation',\n      'Utiliza\u00E7\u00E3o exterior': 'Outdoor use',\n      'Concebida': 'Designed',\n      'Fale com os nossos especialistas em aquecedores!': 'Talk to our heater specialists!',\n      'Talk to our specialists em aquecedores!': 'Talk to our heater specialists!',\n      'Controls manuais': 'Manual controls',\n      'Fale with os nossos especialistas': 'Talk to our specialists',\n      'Fale with a equipa': 'Talk to the team',\n      'FALE WITH A EQUIPA': 'TALK TO THE TEAM',\n      'Porque Comprar uma Sauna Exterior na Saunamo?': 'Why buy an outdoor sauna from Saunamo?',\n      'Porque Comprar uma Banheira de Hidromassagem na Saunamo?': 'Why buy a hot tub from Saunamo?',\n      '1 pessoa': '1 person',\n      '2 pessoas': '2 people',\n      '3 pessoas': '3 people',\n      '4 pessoas': '4 people',\n      '5 pessoas': '5 people',\n      '6 pessoas': '6 people',\n      '8 pessoas': '8 people',\n      'Amieiro': 'Alder',\n      'Aquecedor de 4.7 kW': '4.7 kW heater',\n      'Aquecedor de 6 kW': '6 kW heater',\n      'Aquecedor de 6.6 kW': '6.6 kW heater'\n    };\n    var regexRules = [\n      [/^Entre no processo de instala\u00E7\u00E3o e veja como a nossa equipa transforma mat\u00E9rias-primas numa sauna completamente acabada.*$/i, 'Step inside the installation process and see how our team turns raw materials into a finished sauna, made with precision, Finnish expertise and close attention to detail.'],\n      [/^Fabrica\u00E7\u00E3o europeia, constru\u00EDda para durar, com confian\u00E7a em todo o mundo\\.$/i, 'European manufacturing, built to last and trusted worldwide.'],\n      [/^Fabricada na UE com materiais de alta qualidade.*$/i, 'Made in the EU with high-quality materials, precise craftsmanship and timeless aesthetics.'],\n      [/^Concebidos com os aut\u00EAnticos princ\u00EDpios finlandeses.*$/i, 'Designed around authentic Finnish sauna principles: proper airflow, correct heat distribution, premium woods and the complete heat-cold-rest ritual.'],\n      [/^Materiais selecionados especificamente para ambientes extremos.*$/i, 'Materials selected specifically for demanding conditions: intense heat, humidity, cold exposure, vibration and long-term durability in outdoor installations.'],\n      [/^Instaladores, eletricistas e carpinteiros especializados.*$/i, 'Specialist installers, electricians and carpenters make sure every sauna, spa and cold plunge is installed correctly and safely, with no improvisation and no shortcuts.'],\n      [/^Instaladores, eletricistas e carpinteiros certificados garantem que cada sauna interior.*$/i, 'Certified installers, electricians and carpenters make sure every indoor sauna is installed correctly and safely.'],\n      [/^Instaladores, eletricistas e carpinteiros certificados garantem que cada produto.*$/i, 'Certified installers, electricians and carpenters make sure every product is installed correctly and safely.'],\n      [/^Todas as saunas de exterior da Saunamo incluem.*$/i, 'All Saunamo outdoor saunas include a 3-year warranty covering manufacturing and workmanship defects for long-term peace of mind.'],\n      [/^O banho de gelo e amplamente utilizado.*$/i, 'Ice baths are widely used to help manage inflammation after intense activity and support healthier balance.'],\n      [/^Fornecemos orientacoes claras.*$/i, 'We provide clear guidance for your electrician and recommend suitable ventilation for ideal performance and safety.'],\n      [/^Oferecemos um ecossistema de bem-estar de inspira\u00E7\u00E3o finlandesa:.*$/i, 'We offer a Finnish-inspired wellness ecosystem: saunas, cold plunges and hot tubs. One brand, one experience, one trusted partner.'],\n      [/^Obrigado \u00E0 Saunamo pela sauna\\..*$/i, 'Thank you to Saunamo for the sauna. From the many sauna options presented by the company, I chose the one that best fit my needs. The sauna was manufactured and delivered on time. There was a setback with the required wood-fired heater delivery, but Saunamo resolved that too. The company employs experienced Finnish specialists who understand sauna culture deeply. Keep going!'],\n      [/^A Saunamo construiu uma sauna para n\u00F3s.*$/i, 'Saunamo built a sauna for us last winter and what can I say: we were surprised by the quality, customer service, design and functionality. It was not an easy job because we live in a very remote location, but they were not put off and made it happen. We use the sauna frequently, 3-4 times per week, and we are absolutely satisfied. Last summer the wood moved slightly due to temperature changes and a small gap appeared. Saunamo solved it immediately, which is quite rare in customer service today. Communication was always fast and reliable and questions were solved right away. So if you want a sauna, choose this team!'],\n      [/^Quer comprar uma sauna interior para a sua casa\\?.*$/i, 'Looking to buy an indoor sauna for your home? Saunamo offers a selected collection of premium indoor saunas designed for private bathrooms, home gyms, wellness rooms and refined interiors. Rooted in Finnish sauna culture, each sauna is built with sauna-grade, non-toxic materials chosen for stability, comfort and timeless design.'],\n      [/^Quer comprar uma sauna exterior para o seu jardim ou terraco\\?.*$/i, 'Looking to buy an outdoor sauna for your garden or terrace? Saunamo offers a selected collection of premium outdoor saunas built from weather-resistant thermo-treated wood and designed to last outdoors for decades.'],\n      [/^Concebidas para quem compreende o poder do frio,.*$/i, 'Designed for people who understand the power of cold, Saunamo ice baths offer a refined approach to cold-water therapy. Built with durable materials and high-performance cooling systems, they are ideal for regular home, wellness and professional use.'],\n      [/^O aquecedor e o coracao da sauna\\..*$/i, 'The heater is the heart of the sauna. Whether wood-fired or electric, the right heater should deliver balanced heat, durability and an authentic experience. Saunamo offers a selected range of high-quality sauna heaters.'],\n      [/^A Saunamo tem anos de experiencia na concepcao.*$/i, 'Saunamo has years of experience designing and building wellness spaces for private and professional clients across Europe. Our team is available to help you find the right solution.'],\n      [/^O nosso showroom esta localizado na sede da Saunamo.*$/i, 'Our showroom is located at Saunamo headquarters in Ourem, Portugal, where you can experience our wellness solutions in a calm, carefully designed setting. Explore materials, finishes and layouts in person.'],\n      [/^Concebida para at\u00E9 seis pessoas,.*$/i, 'Designed for up to six people, the Cube 200 balances shared moments with individual relaxation. Wood-fired heating gives the experience a more authentic ritual feel, with optional electric support for added convenience.'],\n      [/^Com a sua forma cil\u00EDndrica e acabamento em madeira,.*$/i, 'With its cylindrical shape and wood finish, the Ergo brings a natural, understated presence to any outdoor space. Designed for a regular cold-water ritual, it offers a simple way to wake the body, recover energy and build a steady routine.'],\n      [/^Quanto tempo demora a sauna a aquecer\\?$/i, 'How long does the sauna take to heat up?'],\n      [/^Quanto tempo demora a sauna exterior a aquecer\\?$/i, 'How long does an outdoor sauna take to heat up?'],\n      [/^Fale with os nossos especialistas$/i, 'Talk to our specialists'],\n      [/^Fale com os nossos especialistas em aquecedores!$/i, 'Talk to our heater specialists!'],\n      [/^Talk to our specialists em aquecedores!$/i, 'Talk to our heater specialists!'],\n      [/^Fale with a equipa$/i, 'Talk to the team'],\n      [/^FALE WITH A EQUIPA$/i, 'TALK TO THE TEAM'],\n      [/^Fale with (.+)$/i, 'Talk to $1'],\n      [/^Concebida para utiliza[c\u00E7][a\u00E3]o exterior$/i, 'Designed for outdoor use'],\n      [/^Concebida para Viver em Interiores$/i, 'Designed for indoor living'],\n      [/^Fale com a equipa$/i, 'Talk to our team'],\n      [/^FALE COM A EQUIPA$/i, 'TALK TO OUR TEAM'],\n      [/^Fale com um especialista$/i, 'Talk to a specialist'],\n      [/^FALE COM UM ESPECIALISTA$/i, 'TALK TO A SPECIALIST'],\n      [/^For Indoor and Utiliza[c\u00E7][a\u00E3]o exterior$/i, 'For Indoor and Outdoor Use'],\n      [/^Para utiliza[c\u00E7][a\u00E3]o interior e exterior$/i, 'For Indoor and Outdoor Use']\n    ];\n    function replacementFor(value) {\n      var key = normalise(value);\n      if (exact[key]) return exact[key];\n      for (var i = 0; i < regexRules.length; i += 1) {\n        if (regexRules[i][0].test(key)) return key.replace(regexRules[i][0], regexRules[i][1]);\n      }\n      return '';\n    }\n    document.querySelectorAll('a, button, span, p, h1, h2, h3, h4, h5, h6, li, label, summary, div').forEach(function(element) {\n      if (element.closest && element.closest('#dyn-configurador, [data-saunamo-force-en-skip=\"true\"], .saunamo-force-en-banner')) return;\n      if (element.children.length > 0) return;\n      var next = replacementFor(element.textContent || '');\n      if (next) element.textContent = next;\n    });\n    var walker = document.createTreeWalker(document.body || document.documentElement, NodeFilter.SHOW_TEXT, {\n      acceptNode: function(node) {\n        if (shouldSkip(node)) return NodeFilter.FILTER_REJECT;\n        return replacementFor(node.nodeValue || '') ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n      }\n    });\n    var nodes = [];\n    var node;\n    while ((node = walker.nextNode())) nodes.push(node);\n    nodes.forEach(function(textNode) {\n      var original = textNode.nodeValue || '';\n      var next = replacementFor(original);\n      if (!next) return;\n      var leading = (original.match(/^\\s*/) || [''])[0];\n      var trailing = (original.match(/\\s*$/) || [''])[0];\n      textNode.nodeValue = leading + next + trailing;\n    });\n    document.querySelectorAll('[alt], [title], [placeholder], [aria-label], [value]').forEach(function(element) {\n      ['alt', 'title', 'placeholder', 'aria-label', 'value'].forEach(function(attribute) {\n        var current = element.getAttribute(attribute);\n        var next = replacementFor(current);\n        if (!next) return;\n        element.setAttribute(attribute, next);\n        if (attribute === 'value' && 'value' in element) element.value = next;\n      });\n    });\n  }\n\n  function updateDomainSwitcherForPreview() {\n    document.querySelectorAll('.saunamo-native-language').forEach(function(switcher) {\n      var buttonFlagNew = switcher.querySelector('.saunamo-native-language__button .saunamo-native-language__flag');\n      var buttonFlagOld = switcher.querySelector('.saunamo-native-language__button .countryflags');\n      var code = switcher.querySelector('.saunamo-native-language__code');\n      var flagEmojiSupported = (function() {\n        try {\n          var canvas = document.createElement('canvas');\n          canvas.width = 32;\n          canvas.height = 24;\n          var ctx = canvas.getContext('2d');\n          if (!ctx) return true;\n          ctx.font = '18px Arial, sans-serif';\n          ctx.fillText('\uD83C\uDDEC\uD83C\uDDE7', 2, 18);\n          var data = ctx.getImageData(0, 0, canvas.width, canvas.height).data;\n          var coloredPixels = 0;\n          for (var i = 0; i < data.length; i += 4) {\n            if (data[i + 3] < 20) continue;\n            var max = Math.max(data[i], data[i + 1], data[i + 2]);\n            var min = Math.min(data[i], data[i + 1], data[i + 2]);\n            if (max - min > 50) coloredPixels += 1;\n          }\n          return coloredPixels > 12;\n        } catch (e) {\n          return true;\n        }\n      })();\n      function setGbFlag(flag) {\n        if (!flag) return;\n        flag.setAttribute('data-iso', 'en');\n        flag.setAttribute('data-flag', 'GB');\n        Array.prototype.slice.call(flag.classList).forEach(function(className) {\n          if (/^countryflag__/.test(className)) flag.classList.remove(className);\n        });\n        if (flagEmojiSupported) {\n          flag.textContent = '\uD83C\uDDEC\uD83C\uDDE7';\n          flag.classList.remove('countryflags');\n        } else {\n          flag.textContent = '';\n          flag.classList.add('countryflags');\n          flag.classList.add('countryflag__GB');\n        }\n      }\n      if (buttonFlagNew) {\n        setGbFlag(buttonFlagNew);\n      } else if (buttonFlagOld) {\n        setGbFlag(buttonFlagOld);\n      }\n      if (code) code.textContent = 'EN';\n      switcher.querySelectorAll('.saunamo-native-language__link').forEach(function(link) {\n        var isEnglish = (link.getAttribute('hreflang') || '').toLowerCase() === 'en';\n        link.classList.toggle('is-active', isEnglish);\n        if (isEnglish) link.setAttribute('aria-current', 'true');\n        else link.removeAttribute('aria-current');\n      });\n    });\n  }\n\n  function currentProduct() {\n    if (!catalog) return null;\n    var handle = window.SaunamoForceENProductHandle || '';\n    return (catalog.products || {})[handle] || null;\n  }\n\n  function applyProductOverrides() {\n    var product = currentProduct();\n    if (!product) return;\n\n    if (product.title) {\n      document.querySelectorAll([\n        '[data-saunamo-product-field=\"title\"]',\n        '.product-information__title',\n        '.product__title',\n        '.product-title',\n        '.main-product__title',\n        '.sm-cube220-buybar__name',\n        '.sm-wellness-topfold__title'\n      ].join(',')).forEach(function(element) {\n        if (element && normalise(element.textContent)) {\n          element.textContent = product.title;\n        }\n      });\n\n      var firstHeading = document.querySelector('main h1, h1');\n      if (firstHeading && normalise(firstHeading.textContent)) {\n        firstHeading.textContent = product.title;\n      }\n    }\n\n    if (product.meta_title) {\n      document.title = product.meta_title;\n    } else if (product.title) {\n      document.title = product.title + ' | Saunamo';\n    }\n\n    if (product.meta_description) {\n      var metaDescription = document.querySelector('meta[name=\"description\"]');\n      if (metaDescription) metaDescription.setAttribute('content', product.meta_description);\n    }\n\n    if (product.body_html) {\n      document.querySelectorAll([\n        '[data-saunamo-product-field=\"body_html\"]',\n        '.product-information__description',\n        '.product__description',\n        '.product-description',\n        '.rte.product__description'\n      ].join(',')).forEach(function(element) {\n        if (element) element.innerHTML = product.body_html;\n      });\n    }\n  }\n\n  function shouldSkip(node) {\n    var parent = node && node.parentNode;\n    if (!parent || !parent.tagName) return true;\n    if (skipTags[parent.tagName]) return true;\n    if (parent.closest && parent.closest('#dyn-configurador, [data-saunamo-force-en-skip=\"true\"], .saunamo-force-en-banner')) return true;\n    return false;\n  }\n\n  function walkAndReplace(root) {\n    if (!root || !common) return;\n    var walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, {\n      acceptNode: function(node) {\n        if (shouldSkip(node)) return NodeFilter.FILTER_REJECT;\n        if (!normalise(node.nodeValue)) return NodeFilter.FILTER_REJECT;\n        return NodeFilter.FILTER_ACCEPT;\n      }\n    });\n\n    var nodes = [];\n    var node;\n    while ((node = walker.nextNode())) nodes.push(node);\n\n    nodes.forEach(function(textNode) {\n      var original = textNode.nodeValue || '';\n      var translated = lookup(original);\n      if (!translated) return;\n      var leading = (original.match(/^\\s*/) || [''])[0];\n      var trailing = (original.match(/\\s*$/) || [''])[0];\n      textNode.nodeValue = leading + translated + trailing;\n    });\n\n    replaceWholeElementText(root);\n  }\n\n  function replaceWholeElementText(root) {\n    root.querySelectorAll('button, a, span, p, h1, h2, h3, h4, h5, h6, li, summary, label, th, td').forEach(function(element) {\n      if (element.closest && element.closest('#dyn-configurador, [data-saunamo-force-en-skip=\"true\"], .saunamo-force-en-banner')) return;\n      if (element.children.length > 0) return;\n      var original = element.textContent || '';\n      var translated = lookup(original);\n      if (translated) element.textContent = translated;\n    });\n  }\n\n  function replaceAttributes() {\n    document.querySelectorAll('[alt], [title], [placeholder], [aria-label]').forEach(function(element) {\n      if (element.closest && element.closest('#dyn-configurador, [data-saunamo-force-en-skip=\"true\"]')) return;\n      ['alt', 'title', 'placeholder', 'aria-label'].forEach(function(attribute) {\n        var value = element.getAttribute(attribute);\n        var translated = lookup(value);\n        if (translated) element.setAttribute(attribute, translated);\n      });\n    });\n  }\n\n  function fixCompareExpandControls() {\n    document.querySelectorAll('[data-compare-expand-all]').forEach(function(button) {\n      var translated = lookup(button.textContent || '');\n      if (translated) button.textContent = translated;\n      if (button.dataset.saunamoForceEnCompareBound === 'true') return;\n      button.dataset.saunamoForceEnCompareBound = 'true';\n      button.addEventListener('click', function() {\n        [0, 50, 150, 400].forEach(function(delay) {\n          window.setTimeout(function() {\n            var next = lookup(button.textContent || '');\n            if (next) button.textContent = next;\n          }, delay);\n        });\n      });\n    });\n  }\n\n  function watchChanges() {\n    document.addEventListener('shopify:section:load', function() {\n      window.setTimeout(applyAll, 50);\n    });\n\n    if (!window.MutationObserver) return;\n    var observer = new MutationObserver(function() {\n      if (applying) return;\n      window.clearTimeout(observer._saunamoTimer);\n      observer._saunamoTimer = window.setTimeout(applyAll, 120);\n    });\n    observer.observe(document.body, { childList: true, subtree: true, characterData: true });\n\n    // Belt-and-braces: late-rendering carousels (.phs-card, swipers) can\n    // populate after our initial walks. Force three more full applyAll\n    // passes at 1.5s / 4s / 8s so static text inside late-injected DOM\n    // gets rewritten. Each pass respects the `applying` guard.\n    [1500, 4000, 8000, 14000].forEach(function(ms){\n      window.setTimeout(function(){ if (catalog) applyAll(); }, ms);\n    });\n  }\n})();\n"],
  "mappings": "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",
  "names": ["node"]
}
