{"id":1355,"date":"2026-01-19T23:45:38","date_gmt":"2026-01-19T23:45:38","guid":{"rendered":"https:\/\/shinwa-br.com.br\/?page_id=1355"},"modified":"2026-03-27T11:31:26","modified_gmt":"2026-03-27T11:31:26","slug":"patlite","status":"publish","type":"page","link":"https:\/\/shinwa-br.com.br\/en\/patlite\/","title":{"rendered":"Patlite"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1355\" class=\"elementor elementor-1355\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d543966 e-con-full e-flex e-con e-parent\" data-id=\"d543966\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e9dd6a6 elementor-widget elementor-widget-html\" data-id=\"e9dd6a6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- SHINWA \/ PATLITE \u2014 HEADER + HERO (VIDEO MP4 LOCAL) -->\r\n\r\n<style>\r\n.shinwa-wrapper, .shinwa-wrapper *{ box-sizing:border-box; }\r\n.shinwa-wrapper{ position:relative; }\r\n\r\n.shinwa-header{\r\n  position:absolute;\r\n  top:0; left:0; right:0;\r\n  z-index:20;\r\n  background: rgba(255,255,255,0.15);\r\n  backdrop-filter: blur(16px);\r\n  -webkit-backdrop-filter: blur(16px);\r\n  border-bottom: 1px solid rgba(255,255,255,0.30);\r\n}\r\n\r\n.shinwa-header-container{\r\n  max-width:1280px;\r\n  margin:0 auto;\r\n  padding:24px 16px;\r\n}\r\n\r\n.shinwa-header-content{\r\n  display:flex;\r\n  align-items:center;\r\n  justify-content:space-between;\r\n  gap:16px;\r\n}\r\n\r\n.shinwa-header-left{\r\n  display:flex;\r\n  align-items:center;\r\n  gap:32px;\r\n  min-width:0;\r\n  flex:1;\r\n  overflow:hidden;\r\n}\r\n\r\n.shinwa-logo{\r\n  height:40px !important;\r\n  width:auto !important;\r\n  max-width:180px !important;\r\n  object-fit:contain !important;\r\n  filter: brightness(0) invert(1) !important;\r\n  display:block;\r\n  flex:0 0 auto;\r\n}\r\n\r\n.shinwa-divider{\r\n  display:none;\r\n  height:40px;\r\n  width:1px;\r\n  background: rgba(255,255,255,0.30);\r\n  flex:0 0 auto;\r\n}\r\n\r\n.shinwa-patlite-info{\r\n  display:none;\r\n  align-items:center;\r\n  gap:16px;\r\n  min-width:0;\r\n  flex:1;\r\n  overflow:hidden;\r\n}\r\n\r\n.shinwa-patlite-text{\r\n  color: rgba(255,255,255,0.90);\r\n  font-size:14px;\r\n  letter-spacing:0.025em;\r\n  white-space:nowrap;\r\n  overflow:hidden;\r\n  text-overflow:ellipsis;\r\n}\r\n\r\n.patlite-logo{\r\n  height:26px !important;\r\n  width:auto !important;\r\n  max-width:160px !important;\r\n  object-fit:contain !important;\r\n  filter: brightness(0) invert(1) !important;\r\n  display:block;\r\n  flex:0 1 auto;\r\n}\r\n\r\n.shinwa-header-right{\r\n  display:flex;\r\n  align-items:center;\r\n  gap:12px;\r\n  flex:0 0 auto;\r\n  white-space:nowrap;\r\n}\r\n\r\n.language-selector{ position:relative; }\r\n\r\n.language-btn{\r\n  display:flex;\r\n  align-items:center;\r\n  gap:8px;\r\n  background:transparent;\r\n  border:none;\r\n  color:#fff !important;\r\n  padding:8px 12px;\r\n  border-radius:6px;\r\n  cursor:pointer;\r\n  transition: background .3s ease, color .3s ease;\r\n  font-size:14px;\r\n  line-height:1;\r\n}\r\n\r\n.language-btn:hover{\r\n  background: rgba(255,255,255,0.10) !important;\r\n  color:#fff !important;\r\n}\r\n\r\n.language-icon{ width:16px; height:16px; display:block; }\r\n.language-name{ display:none; }\r\n\r\n.language-dropdown{\r\n  position:absolute;\r\n  top:100%;\r\n  right:0;\r\n  margin-top:8px;\r\n  background:#fff;\r\n  border-radius:8px;\r\n  box-shadow:0 10px 25px rgba(0,0,0,0.15);\r\n  min-width:150px;\r\n  display:none;\r\n  z-index:100;\r\n  overflow:hidden;\r\n}\r\n.language-dropdown.active{ display:block; }\r\n\r\n.language-option{\r\n  padding:12px 16px;\r\n  cursor:pointer;\r\n  transition: background .2s;\r\n  display:flex;\r\n  align-items:center;\r\n  gap:8px;\r\n  color:#111827;\r\n  user-select:none;\r\n}\r\n.language-option:hover{ background:#f3f4f6; }\r\n.language-option.active{ background:#e5e7eb; }\r\n\r\n.shinwa-header-cta{\r\n  background:#fff !important;\r\n  color:#111827 !important;\r\n  padding:10px 20px;\r\n  border:none;\r\n  border-radius:6px;\r\n  font-size:14px;\r\n  font-weight:500;\r\n  cursor:pointer;\r\n  transition: all .3s ease;\r\n  box-shadow:0 10px 15px -3px rgba(0,0,0,0.10);\r\n  white-space:nowrap;\r\n}\r\n.shinwa-header-cta:hover{\r\n  background:#f3f4f6 !important;\r\n  color:#111827 !important;\r\n  box-shadow:0 20px 25px -5px rgba(0,0,0,0.10);\r\n}\r\n\r\n.shinwa-hero{\r\n  position:relative;\r\n  min-height:100vh;\r\n  display:flex;\r\n  align-items:center;\r\n  justify-content:center;\r\n  overflow:hidden;\r\n}\r\n\r\n.shinwa-hero-video{\r\n  position:absolute;\r\n  inset:0;\r\n  z-index:0;\r\n}\r\n\r\n.shinwa-hero-video video{\r\n  position:absolute;\r\n  top:50%;\r\n  left:50%;\r\n  transform: translate(-50%,-50%);\r\n  width:100vw;\r\n  height:56.25vw;\r\n  min-height:100vh;\r\n  min-width:177.77vh;\r\n  object-fit:cover;\r\n}\r\n\r\n.shinwa-hero-overlay{\r\n  position:absolute;\r\n  inset:0;\r\n  background: rgba(0,0,0,0.50);\r\n  z-index:1;\r\n}\r\n\r\n.shinwa-hero-content{\r\n  position:relative;\r\n  z-index:10;\r\n  text-align:center;\r\n  padding:0 16px;\r\n  max-width:896px;\r\n  margin:0 auto;\r\n}\r\n\r\n.shinwa-hero-title{\r\n  font-size:48px;\r\n  font-weight:700;\r\n  color:#fff;\r\n  line-height:1.1;\r\n  margin-bottom:32px;\r\n}\r\n\r\n.shinwa-hero-subtitle{\r\n  font-size:20px;\r\n  color:#e5e7eb;\r\n  line-height:1.625;\r\n  max-width:768px;\r\n  margin:0 auto 32px;\r\n}\r\n\r\n.shinwa-hero-buttons{\r\n  display:flex;\r\n  flex-direction:column;\r\n  gap:16px;\r\n  justify-content:center;\r\n  align-items:center;\r\n  margin-bottom:64px;\r\n}\r\n\r\n.shinwa-btn-primary{\r\n  display:inline-flex;\r\n  align-items:center;\r\n  justify-content:center;\r\n  gap:8px;\r\n  background:#fff !important;\r\n  color:#111827 !important;\r\n  padding:16px 32px;\r\n  font-size:18px;\r\n  font-weight:500;\r\n  border-radius:6px;\r\n  border:none;\r\n  cursor:pointer;\r\n  transition: all .3s ease;\r\n}\r\n.shinwa-btn-primary:hover{ background:#f3f4f6 !important; color:#111827 !important; }\r\n\r\n.shinwa-btn-secondary{\r\n  display:inline-flex;\r\n  align-items:center;\r\n  justify-content:center;\r\n  background:transparent !important;\r\n  color:#fff !important;\r\n  padding:16px 32px;\r\n  font-size:18px;\r\n  font-weight:500;\r\n  border:2px solid #fff !important;\r\n  border-radius:6px;\r\n  cursor:pointer;\r\n  transition: all .3s ease;\r\n}\r\n.shinwa-btn-secondary:hover{ background:#fff !important; color:#111827 !important; }\r\n\r\n.arrow-icon{ width:20px; height:20px; display:block; }\r\n\r\n.shinwa-scroll-indicator{\r\n  position:absolute;\r\n  bottom:8px;\r\n  left:50%;\r\n  transform: translateX(-50%);\r\n  z-index:10;\r\n}\r\n\r\n.scroll-mouse{\r\n  width:24px;\r\n  height:40px;\r\n  border:2px solid #fff;\r\n  border-radius:9999px;\r\n  display:flex;\r\n  justify-content:center;\r\n  padding-top:8px;\r\n}\r\n\r\n.scroll-dot{\r\n  width:4px;\r\n  height:12px;\r\n  background:#fff;\r\n  border-radius:9999px;\r\n  animation: shinwa-bounce 1s infinite;\r\n}\r\n@keyframes shinwa-bounce{\r\n  0%,100%{ transform: translateY(0); animation-timing-function:cubic-bezier(.8,0,1,1); }\r\n  50%{ transform: translateY(6px); animation-timing-function:cubic-bezier(0,0,.2,1); }\r\n}\r\n\r\n@media (min-width:640px){\r\n  .shinwa-header-container{ padding:24px 24px; }\r\n  .shinwa-hero-content{ padding:0 24px; }\r\n  .shinwa-hero-title{ font-size:60px; }\r\n  .shinwa-hero-subtitle{ font-size:24px; }\r\n  .shinwa-hero-buttons{ flex-direction:row; }\r\n  .language-name{ display:inline; }\r\n}\r\n\r\n@media (min-width:1024px){\r\n  .shinwa-header-container{ padding:24px 32px; }\r\n  .shinwa-hero-content{ padding:0 32px; }\r\n  .shinwa-hero-title{ font-size:72px; }\r\n  .shinwa-divider, .shinwa-patlite-info{ display:flex; }\r\n}\r\n\r\n\/* Mobile: s\u00f3 logo Shinwa + actions, logo menor pra n\u00e3o cortar *\/\r\n@media (max-width:639px){\r\n  .shinwa-header-container{ padding:14px 12px; }\r\n  .shinwa-logo{\r\n    height:34px !important;\r\n    max-width:150px !important;\r\n  }\r\n  .shinwa-divider,\r\n  .shinwa-patlite-info{\r\n    display:none !important;\r\n  }\r\n  .shinwa-header-left{ gap:12px; }\r\n  .shinwa-header-cta{ padding:9px 14px; }\r\n}\r\n<\/style>\r\n\r\n<div class=\"shinwa-wrapper\">\r\n  <header class=\"shinwa-header\">\r\n    <div class=\"shinwa-header-container\">\r\n      <div class=\"shinwa-header-content\">\r\n        <div class=\"shinwa-header-left\">\r\n          <img\r\n            src=\"https:\/\/shinwa-br.com.br\/wp-content\/uploads\/2025\/11\/7c66578d-4990-4205-8ab7-50aa7eefea56.png\"\r\n            alt=\"Shinwa do Brasil\"\r\n            class=\"shinwa-logo\"\r\n            loading=\"eager\"\r\n            decoding=\"async\"\r\n          >\r\n          <div class=\"shinwa-divider\"><\/div>\r\n          <div class=\"shinwa-patlite-info\">\r\n            <span class=\"shinwa-patlite-text\" data-translate=\"hero.subtitle\">Representante oficial PATLITE no Brasil<\/span>\r\n            <img\r\n              src=\"https:\/\/shinwa-br.com.br\/wp-content\/uploads\/2025\/11\/image-removebg-preview.png\"\r\n              alt=\"PATLITE\"\r\n              class=\"patlite-logo\"\r\n              loading=\"eager\"\r\n              decoding=\"async\"\r\n            >\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"shinwa-header-right\">\r\n          <div class=\"language-selector\">\r\n            <button class=\"language-btn\" id=\"languageBtn\" type=\"button\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n              <svg class=\"language-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\r\n                <circle cx=\"12\" cy=\"12\" r=\"10\"><\/circle>\r\n                <line x1=\"2\" y1=\"12\" x2=\"22\" y2=\"12\"><\/line>\r\n                <path d=\"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z\"><\/path>\r\n              <\/svg>\r\n              <span id=\"currentLanguage\">\ud83c\udde7\ud83c\uddf7 <span class=\"language-name\">Portugu\u00eas<\/span><\/span>\r\n            <\/button>\r\n\r\n            <div class=\"language-dropdown\" id=\"languageDropdown\" role=\"menu\" aria-label=\"Language selector\">\r\n              <div class=\"language-option\" data-lang=\"pt-br\" role=\"menuitem\"><span>\ud83c\udde7\ud83c\uddf7<\/span> Portugu\u00eas<\/div>\r\n              <div class=\"language-option\" data-lang=\"en\" role=\"menuitem\"><span>\ud83c\uddfa\ud83c\uddf8<\/span> English<\/div>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <button class=\"shinwa-header-cta\" type=\"button\" onclick=\"shinwaScrollToContact()\" data-translate=\"nav.quote\">\r\n            Solicitar Or\u00e7amento\r\n          <\/button>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/header>\r\n\r\n  <section class=\"shinwa-hero\">\r\n    <div class=\"shinwa-hero-video\" aria-hidden=\"true\">\r\n      <video id=\"shinwaHeroVideo\" autoplay muted playsinline loop preload=\"metadata\">\r\n        <source src=\"https:\/\/shinwa-br.com.br\/wp-content\/uploads\/2026\/01\/Hero-Patlite.mp4\" type=\"video\/mp4\" \/>\r\n      <\/video>\r\n    <\/div>\r\n\r\n    <div class=\"shinwa-hero-overlay\" aria-hidden=\"true\"><\/div>\r\n\r\n    <div class=\"shinwa-hero-content\">\r\n      <h1 class=\"shinwa-hero-title\" data-translate=\"hero.title\">Sinaliza\u00e7\u00e3o Industrial Inteligente<\/h1>\r\n      <p class=\"shinwa-hero-subtitle\" data-translate=\"hero.description\">\r\n        Representante oficial PATLITE no Brasil. Sinalizadores que transformam a comunica\u00e7\u00e3o visual em ambientes industriais.\r\n      <\/p>\r\n\r\n      <div class=\"shinwa-hero-buttons\">\r\n        <button class=\"shinwa-btn-primary\" type=\"button\" onclick=\"shinwaScrollToProducts()\">\r\n          <span data-translate=\"hero.cta\">Descobrir Produtos<\/span>\r\n          <svg class=\"arrow-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\r\n            <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n            <polyline points=\"12 5 19 12 12 19\"><\/polyline>\r\n          <\/svg>\r\n        <\/button>\r\n\r\n        <button class=\"shinwa-btn-secondary\" type=\"button\" onclick=\"shinwaScrollToContact()\">\r\n          <span data-translate=\"nav.contact\">Contato<\/span>\r\n        <\/button>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"shinwa-scroll-indicator\" aria-hidden=\"true\">\r\n      <div class=\"scroll-mouse\"><div class=\"scroll-dot\"><\/div><\/div>\r\n    <\/div>\r\n  <\/section>\r\n<\/div>\r\n\r\n<script>\r\nconst shinwaTranslations = {\r\n  \"pt-br\": {\r\n    \"hero.title\": \"Sinaliza\u00e7\u00e3o Industrial Inteligente\",\r\n    \"hero.subtitle\": \"Representante oficial PATLITE no Brasil\",\r\n    \"hero.description\": \"Representante oficial PATLITE no Brasil. Sinalizadores que transformam a comunica\u00e7\u00e3o visual em ambientes industriais.\",\r\n    \"hero.cta\": \"Descobrir Produtos\",\r\n    \"nav.contact\": \"Contato\",\r\n    \"nav.quote\": \"Solicitar Or\u00e7amento\"\r\n  },\r\n  \"en\": {\r\n    \"hero.title\": \"Smart Industrial Signaling\",\r\n    \"hero.subtitle\": \"Official PATLITE representative in Brazil\",\r\n    \"hero.description\": \"Official PATLITE representative in Brazil. Signaling devices that transform visual communication in industrial environments.\",\r\n    \"hero.cta\": \"Discover Products\",\r\n    \"nav.contact\": \"Contact\",\r\n    \"nav.quote\": \"Request Quote\"\r\n  }\r\n};\r\n\r\nfunction shinwaApplyLang(lang){\r\n  const l = shinwaTranslations[lang] ? lang : \"pt-br\";\r\n  document.querySelectorAll(\"[data-translate]\").forEach(el=>{\r\n    const key = el.getAttribute(\"data-translate\");\r\n    const val = shinwaTranslations[l] && shinwaTranslations[l][key];\r\n    if(val != null) el.textContent = val;\r\n  });\r\n}\r\n\r\nfunction shinwaBroadcastLang(lang){\r\n  const l = shinwaTranslations[lang] ? lang : \"pt-br\";\r\n  try{ localStorage.setItem(\"shinwa_lang\", l); }catch(e){}\r\n  window.dispatchEvent(new CustomEvent(\"languageChange\", { detail:{ language:l } }));\r\n}\r\n\r\n(function initLanguageSelector(){\r\n  const languageBtn = document.getElementById(\"languageBtn\");\r\n  const languageDropdown = document.getElementById(\"languageDropdown\");\r\n  const languageOptions = Array.from(document.querySelectorAll(\".language-option\"));\r\n  const currentLanguage = document.getElementById(\"currentLanguage\");\r\n\r\n  if(!languageBtn || !languageDropdown || languageOptions.length === 0) return;\r\n\r\n  const initial = (function(){\r\n    const saved = (function(){ try{ return (localStorage.getItem(\"shinwa_lang\")||\"\").toLowerCase(); }catch(e){ return \"\"; }})();\r\n    const docLang = (document.documentElement.getAttribute(\"lang\")||\"\").toLowerCase();\r\n    const guess = saved || docLang || \"pt-br\";\r\n    return shinwaTranslations[guess] ? guess : \"pt-br\";\r\n  })();\r\n\r\n  function setActiveUI(lang){\r\n    const flag = lang === \"pt-br\" ? \"\ud83c\udde7\ud83c\uddf7\" : \"\ud83c\uddfa\ud83c\uddf8\";\r\n    const name = lang === \"pt-br\" ? \"Portugu\u00eas\" : \"English\";\r\n    if(currentLanguage) currentLanguage.innerHTML = `${flag} <span class=\"language-name\">${name}<\/span>`;\r\n    languageOptions.forEach(o => o.classList.toggle(\"active\", o.getAttribute(\"data-lang\") === lang));\r\n  }\r\n\r\n  function setLang(lang){\r\n    setActiveUI(lang);\r\n    shinwaApplyLang(lang);\r\n    shinwaBroadcastLang(lang);\r\n  }\r\n\r\n  languageBtn.addEventListener(\"click\", (e)=>{\r\n    e.stopPropagation();\r\n    const isOpen = languageDropdown.classList.toggle(\"active\");\r\n    languageBtn.setAttribute(\"aria-expanded\", isOpen ? \"true\" : \"false\");\r\n  });\r\n\r\n  document.addEventListener(\"click\", ()=>{\r\n    languageDropdown.classList.remove(\"active\");\r\n    languageBtn.setAttribute(\"aria-expanded\", \"false\");\r\n  });\r\n\r\n  languageOptions.forEach(opt=>{\r\n    opt.addEventListener(\"click\", ()=>{\r\n      const lang = (opt.getAttribute(\"data-lang\")||\"\").toLowerCase();\r\n      if(!shinwaTranslations[lang]) return;\r\n      setLang(lang);\r\n      languageDropdown.classList.remove(\"active\");\r\n      languageBtn.setAttribute(\"aria-expanded\", \"false\");\r\n    });\r\n  });\r\n\r\n  setLang(initial);\r\n})();\r\n\r\n(function initHeroVideo(){\r\n  const v = document.getElementById(\"shinwaHeroVideo\");\r\n  if(!v) return;\r\n\r\n  v.addEventListener(\"ended\", ()=>{ try{ v.currentTime = 0; v.play(); }catch(e){} });\r\n\r\n  const tryPlay = () => { if (v.paused) v.play().catch(()=>{}); };\r\n  tryPlay();\r\n  window.addEventListener(\"pointerdown\", tryPlay, { once:true });\r\n  window.addEventListener(\"touchstart\", tryPlay, { once:true });\r\n})();\r\n\r\n\/* =========================\r\n   SCROLL (ATUALIZADO)\r\n   - Agora prioriza #contato (se\u00e7\u00e3o do formul\u00e1rio)\r\n   - Fallback: #contact-section\r\n========================= *\/\r\nfunction shinwaScrollToContact(){\r\n  const el =\r\n    document.getElementById(\"contato\") ||\r\n    document.querySelector(\"#contato\") ||\r\n    document.getElementById(\"contact-section\") ||\r\n    document.querySelector(\"#contact-section\");\r\n\r\n  if(el) el.scrollIntoView({ behavior:\"smooth\", block:\"start\" });\r\n}\r\n\r\nfunction shinwaScrollToProducts(){\r\n  const el = document.getElementById(\"products-section\") || document.querySelector(\"#products-section\");\r\n  if(el) el.scrollIntoView({ behavior:\"smooth\", block:\"start\" });\r\n}\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-033f932 e-con-full e-flex e-con e-parent\" data-id=\"033f932\" data-element_type=\"container\" data-e-type=\"container\" id=\"catalogo\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a36d444 elementor-widget elementor-widget-html\" data-id=\"a36d444\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- =========================================================\r\n  SE\u00c7\u00c3O DE PRODUTOS\r\n========================================================= -->\r\n\r\n<style>\r\n  \/* =========================\r\n     SE\u00c7\u00c3O (container)\r\n  ========================= *\/\r\n  .shinwa-products-section{\r\n    padding:80px 16px;\r\n    background: transparent !important;\r\n    position:relative;\r\n    overflow:hidden;\r\n  }\r\n  .shinwa-products-container{\r\n    max-width:1280px;\r\n    margin:0 auto;\r\n  }\r\n  @media(min-width:640px){\r\n    .shinwa-products-section{ padding:80px 24px; }\r\n  }\r\n  @media(min-width:1024px){\r\n    .shinwa-products-section{ padding:80px 32px; }\r\n  }\r\n\r\n  \/* =========================\r\n     HEADER DA SE\u00c7\u00c3O\r\n  ========================= *\/\r\n  .shinwa-products-header{\r\n    text-align:center;\r\n    margin-bottom:28px;\r\n  }\r\n  .shinwa-products-title{\r\n    font-size:30px;\r\n    font-weight:700;\r\n    color:#111827;\r\n    line-height:1.2;\r\n    margin:0 0 16px;\r\n  }\r\n  .shinwa-products-subtitle{\r\n    font-size:20px;\r\n    font-weight:400;\r\n    color:#4b5563;\r\n    line-height:1.6;\r\n    max-width:768px;\r\n    margin:0 auto 32px;\r\n  }\r\n  @media(min-width:1024px){\r\n    .shinwa-products-title{ font-size:36px; }\r\n  }\r\n  @media(max-width:480px){\r\n    .shinwa-products-title{ font-size:26px; }\r\n    .shinwa-products-subtitle{ font-size:18px; padding:0 8px; }\r\n  }\r\n\r\n  \/* =========================\r\n     ESPA\u00c7AMENTO ENTRE ITENS\r\n  ========================= *\/\r\n  .shinwa-products-stack{\r\n    display:flex;\r\n    flex-direction:column;\r\n    gap:22px;\r\n  }\r\n\r\n  \/* =========================================================\r\n     CARD 1 \u2014 FEATURE (RESPONSIVO + i18n)\r\n  ========================================================= *\/\r\n  .lr-feature, .lr-feature *{ box-sizing:border-box; }\r\n\r\n  .lr-feature-card{\r\n    background:#fff;\r\n    border-radius:16px;\r\n    overflow:hidden;\r\n    border:1px solid #f3f4f6;\r\n    box-shadow:0 10px 18px rgba(0,0,0,.08);\r\n    cursor:pointer;\r\n    transition:.35s ease;\r\n  }\r\n  .lr-feature-card:hover{\r\n    box-shadow:0 22px 40px rgba(0,0,0,.16);\r\n    transform:translateY(-2px);\r\n  }\r\n\r\n  .lr-feature-row{ display:grid; grid-template-columns:1fr; }\r\n  @media(min-width:900px){\r\n    .lr-feature-row{ grid-template-columns:0.9fr 1.1fr; }\r\n  }\r\n\r\n  .lr-feature-media{\r\n    position:relative;\r\n    min-height:260px;\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    background:linear-gradient(135deg,#F9FAFB,#F3F4F6,#F9FAFB);\r\n    padding:14px;\r\n  }\r\n\r\n  \/* \ud83d\udd27 mant\u00e9m imagem grande mas segura no mobile *\/\r\n  .lr-feature-img img{\r\n    height:320px; \/* desktop *\/\r\n    width:auto;\r\n    max-width:100%;\r\n    object-fit:contain;\r\n    display:block;\r\n    filter:drop-shadow(0 16px 16px rgba(0,0,0,.2));\r\n  }\r\n  @media(max-width:480px){\r\n    .lr-feature-media{ min-height:220px; }\r\n    .lr-feature-img img{ height:240px; }\r\n  }\r\n\r\n  .lr-feature-header{\r\n    padding:16px 22px;\r\n    background:linear-gradient(135deg,#2563EB,#1D4ED8,#1E40AF);\r\n  }\r\n  .lr-feature-badge-hot{\r\n    display:inline-block;\r\n    padding:8px 14px;\r\n    border-radius:999px;\r\n    background:linear-gradient(135deg,#F59E0B,#F97316,#EF4444);\r\n    color:#111827;\r\n    font-size:12px;\r\n    font-weight:900;\r\n    letter-spacing:.1em;\r\n    text-transform:uppercase;\r\n  }\r\n  .lr-feature-title{\r\n    margin:10px 0 4px;\r\n    color:#fff;\r\n    font-size:20px;\r\n    font-weight:900;\r\n  }\r\n  .lr-feature-sub{\r\n    margin:0;\r\n    color:rgba(255,255,255,.85);\r\n    font-size:14px;\r\n    line-height:1.35;\r\n  }\r\n\r\n  .lr-feature-body{ padding:16px 22px 18px; }\r\n  .lr-feature-list{\r\n    display:grid;\r\n    grid-template-columns:1fr 1fr;\r\n    gap:10px 16px;\r\n  }\r\n  @media(max-width:520px){\r\n    .lr-feature-list{ grid-template-columns:1fr; }\r\n  }\r\n  .lr-feature-item{ font-size:14px; color:#374151; }\r\n  .lr-feature-item b{ color:#111827; }\r\n\r\n  .lr-feature-cta{\r\n    margin-top:12px;\r\n    padding-top:10px;\r\n    border-top:1px dashed #e5e7eb;\r\n    font-size:14px;\r\n    font-weight:700;\r\n    color:#2563EB;\r\n  }\r\n\r\n  \/* highlight destino (quando existir configurador) *\/\r\n  #configurador-torre.lr-highlight{\r\n    outline:2px solid rgba(37,99,235,.35);\r\n    outline-offset:6px;\r\n    border-radius:16px;\r\n  }\r\n<\/style>\r\n\r\n<section class=\"shinwa-products-section\" id=\"products-section\">\r\n  <div class=\"shinwa-products-container\">\r\n\r\n    <!-- T\u00cdTULO + SUB -->\r\n    <div class=\"shinwa-products-header\">\r\n      <h2 class=\"shinwa-products-title\" data-translate=\"products.title\">\r\n        Linha Completa de Produtos PATLITE\r\n      <\/h2>\r\n      <p class=\"shinwa-products-subtitle\" data-translate=\"products.subtitle\">\r\n        Oferecemos toda a gama de sinalizadores PATLITE, desde torres b\u00e1sicas at\u00e9 sistemas inteligentes conectados, atendendo todas as necessidades industriais.\r\n      <\/p>\r\n    <\/div>\r\n\r\n    <div class=\"shinwa-products-stack\">\r\n\r\n      <!-- CARD 1 -->\r\n      <article class=\"lr-feature-card lr-feature\" id=\"lr-card-1\">\r\n        <div class=\"lr-feature-row\">\r\n\r\n          <!-- IMAGEM -->\r\n          <section class=\"lr-feature-media\">\r\n            <div class=\"lr-feature-img\">\r\n              <img decoding=\"async\"\r\n                src=\"https:\/\/shinwa-br.com.br\/wp-content\/uploads\/2026\/01\/Modular.png\"\r\n                alt=\"PATLITE LR modular\"\r\n                loading=\"lazy\"\r\n              \/>\r\n            <\/div>\r\n          <\/section>\r\n\r\n          <!-- TEXTO -->\r\n          <div>\r\n            <header class=\"lr-feature-header\">\r\n              <div class=\"lr-feature-badge-hot\" data-translate=\"lr1.badge\">\r\n                Modular \u2022 100% Program\u00e1vel\r\n              <\/div>\r\n              <h3 class=\"lr-feature-title\" data-translate=\"lr1.title\">\r\n                Configure do seu jeito\r\n              <\/h3>\r\n              <p class=\"lr-feature-sub\" data-translate=\"lr1.sub\">\r\n                Combine m\u00f3dulos de <b>luz<\/b> e <b>som<\/b> com encaixe r\u00e1pido e controle total.\r\n              <\/p>\r\n            <\/header>\r\n\r\n            <div class=\"lr-feature-body\">\r\n              <div class=\"lr-feature-list\">\r\n                <div class=\"lr-feature-item\" data-translate=\"lr1.item1\">\r\n                  <b>Visibilidade<\/b><br>Luz forte e uniforme\r\n                <\/div>\r\n                <div class=\"lr-feature-item\" data-translate=\"lr1.item2\">\r\n                  <b>Audibilidade<\/b><br>Som alto e omnidirecional\r\n                <\/div>\r\n                <div class=\"lr-feature-item\" data-translate=\"lr1.item3\">\r\n                  <b>Simplicidade<\/b><br>Girar e travar\r\n                <\/div>\r\n                <div class=\"lr-feature-item\" data-translate=\"lr1.item4\">\r\n                  <b>Durabilidade<\/b><br>Robusta para ambientes hostis\r\n                <\/div>\r\n              <\/div>\r\n\r\n              <div class=\"lr-feature-cta\" data-translate=\"lr1.cta\">\r\n                Clique para montar sua torre\r\n              <\/div>\r\n            <\/div>\r\n          <\/div>\r\n\r\n        <\/div>\r\n      <\/article>\r\n\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<script>\r\n\/* =========================================================\r\n   i18n (sincroniza com seletor do header)\r\n   - Ouve: window.dispatchEvent(new CustomEvent('languageChange', {detail:{language:'pt-br'}}))\r\n   - Fallback: localStorage 'shinwa_lang' ou 'lang'\r\n========================================================= *\/\r\n(function(){\r\n  const dict = {\r\n    \"pt-br\": {\r\n      \"products.title\": \"Linha Completa de Produtos PATLITE\",\r\n      \"products.subtitle\": \"Oferecemos toda a gama de sinalizadores PATLITE, desde torres b\u00e1sicas at\u00e9 sistemas inteligentes conectados, atendendo todas as necessidades industriais.\",\r\n\r\n      \"lr1.badge\": \"Modular \u2022 100% Program\u00e1vel\",\r\n      \"lr1.title\": \"Configure do seu jeito\",\r\n      \"lr1.sub\": \"Combine m\u00f3dulos de <b>luz<\/b> e <b>som<\/b> com encaixe r\u00e1pido e controle total.\",\r\n      \"lr1.item1\": \"<b>Visibilidade<\/b><br>Luz forte e uniforme\",\r\n      \"lr1.item2\": \"<b>Audibilidade<\/b><br>Som alto e omnidirecional\",\r\n      \"lr1.item3\": \"<b>Simplicidade<\/b><br>Girar e travar\",\r\n      \"lr1.item4\": \"<b>Durabilidade<\/b><br>Robusta para ambientes hostis\",\r\n      \"lr1.cta\": \"Clique para montar sua torre\"\r\n    },\r\n    \"en\": {\r\n      \"products.title\": \"Complete PATLITE Product Line\",\r\n      \"products.subtitle\": \"We offer the complete range of PATLITE signaling devices, from basic towers to smart connected systems, meeting all industrial needs.\",\r\n\r\n      \"lr1.badge\": \"Modular \u2022 100% Programmable\",\r\n      \"lr1.title\": \"Configure it your way\",\r\n      \"lr1.sub\": \"Combine <b>light<\/b> and <b>sound<\/b> modules with quick locking and total control.\",\r\n      \"lr1.item1\": \"<b>Visibility<\/b><br>Strong, uniform light\",\r\n      \"lr1.item2\": \"<b>Audibility<\/b><br>Loud, omnidirectional sound\",\r\n      \"lr1.item3\": \"<b>Simplicity<\/b><br>Twist and lock\",\r\n      \"lr1.item4\": \"<b>Durability<\/b><br>Built for harsh environments\",\r\n      \"lr1.cta\": \"Click to build your tower\"\r\n    }\r\n  };\r\n\r\n  function getInitialLang(){\r\n    const a = (localStorage.getItem(\"shinwa_lang\") || \"\").toLowerCase();\r\n    const b = (localStorage.getItem(\"lang\") || \"\").toLowerCase();\r\n    const c = (document.documentElement.getAttribute(\"lang\") || \"\").toLowerCase();\r\n    const guess = a || b || c || \"pt-br\";\r\n    return dict[guess] ? guess : \"pt-br\";\r\n  }\r\n\r\n  function applyLang(lang){\r\n    const l = dict[lang] ? lang : \"pt-br\";\r\n    document.querySelectorAll(\"[data-translate]\").forEach(el=>{\r\n      const key = el.getAttribute(\"data-translate\");\r\n      const val = dict[l] && dict[l][key];\r\n      if(val == null) return;\r\n\r\n      \/\/ mant\u00e9m <b>, <br> nos textos do card\r\n      el.innerHTML = val;\r\n    });\r\n  }\r\n\r\n  \/\/ init\r\n  applyLang(getInitialLang());\r\n\r\n  \/\/ ouve o mesmo evento do header\r\n  window.addEventListener(\"languageChange\", (e)=>{\r\n    const lang = e && e.detail && e.detail.language ? String(e.detail.language).toLowerCase() : \"pt-br\";\r\n    applyLang(lang);\r\n  });\r\n})();\r\n<\/script>\r\n\r\n<script>\r\n\/* =========================================================\r\n   Scroll do card -> configurador (quando existir)\r\n========================================================= *\/\r\n(function(){\r\n  const targetId = \"configurador-torre\";\r\n\r\n  document.addEventListener(\"click\", function(e){\r\n    const card = e.target.closest(\".lr-feature-card\");\r\n    if(!card) return;\r\n\r\n    const target = document.getElementById(targetId);\r\n    if(!target) return;\r\n\r\n    e.preventDefault();\r\n    target.scrollIntoView({ behavior:\"smooth\", block:\"start\" });\r\n    target.classList.add(\"lr-highlight\");\r\n    setTimeout(()=>target.classList.remove(\"lr-highlight\"), 900);\r\n  }, true);\r\n})();\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e6ed1c9 e-flex e-con-boxed e-con e-parent\" data-id=\"e6ed1c9\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d3c984d elementor-widget elementor-widget-html\" data-id=\"d3c984d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- PATLITE LR - COMPARA\u00c7\u00c3O DE DI\u00c2METRO-->\r\n\r\n<style>\r\n.lr-diam, .lr-diam *{ box-sizing:border-box; }\r\n\r\n.lr-diam-card{\r\n  background:#fff;\r\n  border-radius:16px;\r\n  overflow:hidden;\r\n  border:1px solid #f3f4f6;\r\n  box-shadow:0 10px 18px rgba(0,0,0,.08);\r\n  cursor:pointer;\r\n  transition:.4s;\r\n}\r\n.lr-diam-card:hover{\r\n  box-shadow:0 22px 40px rgba(0,0,0,.16);\r\n  transform:translateY(-2px);\r\n}\r\n\r\n\/* Mesmo header do card 1 *\/\r\n.lr-diam-header{\r\n  padding:16px 22px;\r\n  background:linear-gradient(135deg,#2563EB,#1D4ED8,#1E40AF);\r\n}\r\n.lr-diam-title{\r\n  margin:10px 0 4px;\r\n  color:#fff;\r\n  font-size:20px;\r\n  font-weight:900;\r\n}\r\n.lr-diam-sub{\r\n  margin:0;\r\n  color:rgba(255,255,255,.85);\r\n  font-size:14px;\r\n}\r\n\r\n\/* Mesmo background do card 1 *\/\r\n.lr-diam-body{\r\n  padding:16px 22px 18px;\r\n  background:linear-gradient(135deg,#F9FAFB,#F3F4F6,#F9FAFB);\r\n}\r\n\r\n\/* GRID *\/\r\n.lr-diam-grid{\r\n  display:grid;\r\n  grid-template-columns: 1fr 1fr;\r\n  gap: 12px;\r\n}\r\n@media (min-width: 900px){\r\n  .lr-diam-grid{\r\n    grid-template-columns: repeat(4, 1fr);\r\n    gap: 14px;\r\n  }\r\n}\r\n\r\n\/* ITEM *\/\r\n.lr-diam-item{\r\n  background:rgba(255,255,255,.85);\r\n  border:1px solid rgba(229,231,235,.9);\r\n  border-radius:14px;\r\n  padding: 10px 10px 12px;\r\n  display:flex;\r\n  flex-direction:column;\r\n  align-items:center;\r\n}\r\n\r\n\/* LABEL *\/\r\n.lr-diam-model{\r\n  font-size:13px;\r\n  font-weight:900;\r\n  letter-spacing:.12em;\r\n  text-transform:uppercase;\r\n  color:#111827;\r\n}\r\n.lr-diam-badge{\r\n  margin-top:4px;\r\n  padding:6px 12px;\r\n  border-radius:999px;\r\n  background:rgba(37,99,235,.15);\r\n  color:#1E40AF;\r\n  font-size:13px;\r\n  font-weight:900;\r\n  border:1px solid rgba(37,99,235,.25);\r\n}\r\n\r\n\/* IMAGE *\/\r\n.lr-diam-img{ margin-top: 10px; }\r\n.lr-diam-img img{\r\n  height: 200px;\r\n  width:auto;\r\n  object-fit:contain;\r\n  display:block;\r\n  filter: drop-shadow(0 18px 18px rgba(0,0,0,.20));\r\n}\r\n\r\n\/* CTA *\/\r\n.lr-diam-cta{\r\n  margin-top: 12px;\r\n  padding-top: 10px;\r\n  border-top:1px dashed #e5e7eb;\r\n  display:flex;\r\n  justify-content:space-between;\r\n  align-items:center;\r\n  gap:12px;\r\n}\r\n.lr-diam-cta strong{\r\n  font-size:14px;\r\n  color:#111827;\r\n}\r\n.lr-diam-cta span{\r\n  font-size:13px;\r\n  color:#6b7280;\r\n  white-space:nowrap;\r\n}\r\n\r\n\/* Highlight destino *\/\r\n#configurador-torre.lr-highlight{\r\n  outline:2px solid rgba(37,99,235,.35);\r\n  outline-offset:6px;\r\n  border-radius:16px;\r\n}\r\n<\/style>\r\n\r\n<article class=\"lr-diam-card lr-diam\">\r\n  <header class=\"lr-diam-header\">\r\n    <h3 class=\"lr-diam-title\" data-translate=\"lrdiam.title\">\r\n      Compara\u00e7\u00e3o visual de di\u00e2metro \u2014 S\u00e9rie LR\r\n    <\/h3>\r\n    <p class=\"lr-diam-sub\" data-translate=\"lrdiam.sub\">\r\n      A diferen\u00e7a est\u00e1 no tamanho f\u00edsico: 40mm \u2022 50mm \u2022 60mm \u2022 70mm\r\n    <\/p>\r\n  <\/header>\r\n\r\n  <div class=\"lr-diam-body\">\r\n    <div class=\"lr-diam-grid\">\r\n\r\n      <div class=\"lr-diam-item\">\r\n        <div class=\"lr-diam-model\">LR4<\/div>\r\n        <div class=\"lr-diam-badge\">40mm<\/div>\r\n        <div class=\"lr-diam-img\">\r\n          <img decoding=\"async\" src=\"https:\/\/shinwa-br.com.br\/wp-content\/uploads\/2026\/01\/LR4-Up.png\" alt=\"LR4 40mm\">\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"lr-diam-item\">\r\n        <div class=\"lr-diam-model\">LR5<\/div>\r\n        <div class=\"lr-diam-badge\">50mm<\/div>\r\n        <div class=\"lr-diam-img\">\r\n          <img decoding=\"async\" src=\"https:\/\/shinwa-br.com.br\/wp-content\/uploads\/2026\/01\/LR5-Up.png\" alt=\"LR5 50mm\">\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"lr-diam-item\">\r\n        <div class=\"lr-diam-model\">LR6<\/div>\r\n        <div class=\"lr-diam-badge\">60mm<\/div>\r\n        <div class=\"lr-diam-img\">\r\n          <img decoding=\"async\" src=\"https:\/\/shinwa-br.com.br\/wp-content\/uploads\/2026\/01\/LR6-Up.png\" alt=\"LR6 60mm\">\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"lr-diam-item\">\r\n        <div class=\"lr-diam-model\">LR7<\/div>\r\n        <div class=\"lr-diam-badge\">70mm<\/div>\r\n        <div class=\"lr-diam-img\">\r\n          <img decoding=\"async\" src=\"https:\/\/shinwa-br.com.br\/wp-content\/uploads\/2026\/01\/LR7-Up.png\" alt=\"LR7 70mm\">\r\n        <\/div>\r\n      <\/div>\r\n\r\n    <\/div>\r\n\r\n    <div class=\"lr-diam-cta\">\r\n      <strong data-translate=\"lrdiam.ctaStrong\">Clique para configurar sua torre<\/strong>\r\n      <span data-translate=\"lrdiam.ctaHint\">Ir para o configurador<\/span>\r\n    <\/div>\r\n  <\/div>\r\n<\/article>\r\n\r\n<script>\r\n(function(){\r\n  const targetId = 'configurador-torre';\r\n\r\n  function getLang(){\r\n    try{\r\n      const ls = (localStorage.getItem(\"shinwa_lang\")||\"\").toLowerCase();\r\n      if(ls) return ls;\r\n    }catch(e){}\r\n    return (window.shinwaCurrentLang||\"pt-br\").toLowerCase();\r\n  }\r\n\r\n  function getDict(lang){\r\n    const pt = {\r\n      \"lrdiam.title\": \"Compara\u00e7\u00e3o visual de di\u00e2metro \u2014 S\u00e9rie LR\",\r\n      \"lrdiam.sub\": \"A diferen\u00e7a est\u00e1 no tamanho f\u00edsico: 40mm \u2022 50mm \u2022 60mm \u2022 70mm\",\r\n      \"lrdiam.ctaStrong\": \"Clique para configurar sua torre\",\r\n      \"lrdiam.ctaHint\": \"Ir para o configurador\"\r\n    };\r\n    const en = {\r\n      \"lrdiam.title\": \"Visual diameter comparison \u2014 LR Series\",\r\n      \"lrdiam.sub\": \"The difference is the physical size: 40mm \u2022 50mm \u2022 60mm \u2022 70mm\",\r\n      \"lrdiam.ctaStrong\": \"Click to configure your tower\",\r\n      \"lrdiam.ctaHint\": \"Go to the configurator\"\r\n    };\r\n    return (lang === \"en\") ? en : pt;\r\n  }\r\n\r\n  function applyLang(lang){\r\n    const dict = getDict(lang);\r\n    document.querySelectorAll('[data-translate]').forEach(el=>{\r\n      const key = el.getAttribute('data-translate');\r\n      if(dict[key]) el.textContent = dict[key];\r\n    });\r\n  }\r\n\r\n  window.addEventListener(\"languageChange\", (e)=>{\r\n    const lang = (e && e.detail && e.detail.language) ? e.detail.language : getLang();\r\n    applyLang((lang||\"pt-br\").toLowerCase());\r\n  });\r\n\r\n  applyLang(getLang());\r\n\r\n  document.addEventListener('click', function(e){\r\n    const card = e.target.closest('.lr-diam-card');\r\n    if(!card) return;\r\n\r\n    const target = document.getElementById(targetId);\r\n    if(!target) return;\r\n\r\n    e.preventDefault();\r\n    target.scrollIntoView({ behavior:'smooth', block:'start' });\r\n    target.classList.add('lr-highlight');\r\n    setTimeout(()=>target.classList.remove('lr-highlight'),900);\r\n  }, true);\r\n})();\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-cdd2438 e-flex e-con-boxed e-con e-parent\" data-id=\"cdd2438\" data-element_type=\"container\" data-e-type=\"container\" id=\"configurador-torre\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e0d9681 elementor-widget elementor-widget-html\" data-id=\"e0d9681\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t\r\n<div id=\"patlite-configurator\" class=\"pc-wrap\">\r\n  <div class=\"pc-header\">\r\n    <span class=\"pc-badge\" data-translate=\"pc.badge\">PATLITE LR Series<\/span>\r\n    <h2 class=\"pc-h1\" data-translate=\"pc.h1\">Configurador de Torres de Sinaliza\u00e7\u00e3o<\/h2>\r\n    <p class=\"pc-sub\" data-translate=\"pc.sub\">Monte sua torre personalizada passo a passo e gere o c\u00f3digo do produto automaticamente<\/p>\r\n  <\/div>\r\n\r\n  <div class=\"pc-progress-card\">\r\n    <div class=\"pc-progress-top\">\r\n      <strong data-translate=\"pc.progressTitle\">Progresso da Configura\u00e7\u00e3o<\/strong>\r\n      <span><span id=\"pcCompleted\">0<\/span> <span data-translate=\"pc.progressSuffix\">\/ 8 passos completos<\/span><\/span>\r\n    <\/div>\r\n    <div class=\"pc-progress-track\">\r\n      <div class=\"pc-progress-bar\" id=\"pcProgressBar\" style=\"width:0%\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"pc-grid\">\r\n    <div class=\"pc-left\">\r\n      <div class=\"pc-card pc-card-blue\">\r\n        <div class=\"pc-card-title\">\r\n          <div class=\"pc-ico\">\ud83d\udc41\ufe0f<\/div>\r\n          <div>\r\n            <div class=\"pc-card-h\" data-translate=\"pc.previewTitle\">Visualiza\u00e7\u00e3o em Tempo Real<\/div>\r\n            <div class=\"pc-card-s\" data-translate=\"pc.previewSub\">Sua torre personalizada<\/div>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"pc-preview\">\r\n          <div class=\"pc-buzzer\" id=\"pcBuzzer\" data-i18n-title=\"pc.buzzerTitle\" title=\"Buzzer ativo\">\ud83d\udd14<\/div>\r\n\r\n          <div class=\"pc-tower\">\r\n            <div class=\"pc-modules\" id=\"pcModules\"><\/div>\r\n            <div class=\"pc-base\" id=\"pcBase\"><\/div>\r\n            <div class=\"pc-base-line\"><\/div>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"pc-mini-info\">\r\n          <div class=\"pc-mini\"><span>\ud83d\udca1<\/span><span data-translate=\"pc.infoModelLabel\">Modelo:<\/span><strong id=\"pcInfoModel\">-<\/strong><\/div>\r\n          <div class=\"pc-mini\"><span>\ud83d\udcda<\/span><span data-translate=\"pc.infoModulesLabel\">M\u00f3dulos:<\/span><strong id=\"pcInfoTiers\">-<\/strong><\/div>\r\n          <div class=\"pc-mini\"><span>\u26a1<\/span><span data-translate=\"pc.infoVoltageLabel\">Tens\u00e3o:<\/span><strong id=\"pcInfoVoltage\">-<\/strong><\/div>\r\n          <div class=\"pc-mini\"><span>\ud83d\udd27<\/span><span data-translate=\"pc.infoMountingLabel\">Montagem:<\/span><strong id=\"pcInfoMounting\">-<\/strong><\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"pc-card pc-card-green\">\r\n        <div class=\"pc-card-title\">\r\n          <div class=\"pc-ico\">\u2705<\/div>\r\n          <div>\r\n            <div class=\"pc-card-h\" data-translate=\"pc.partTitle\">C\u00f3digo do Produto (Part Number)<\/div>\r\n            <div class=\"pc-card-s\" data-translate=\"pc.partSub\">Gerado automaticamente<\/div>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"pc-partbox\">\r\n          <div class=\"pc-part\" id=\"pcPartNumber\" data-translate=\"pc.partIncomplete\">Complete todos os passos obrigat\u00f3rios<\/div>\r\n        <\/div>\r\n\r\n        <div class=\"pc-buy-row\">\r\n          <div class=\"pc-qty-wrap\">\r\n            <label class=\"pc-qty-label\" for=\"pcQtyInput\" data-translate=\"pc.qtyLabel\">Quantidade<\/label>\r\n            <input class=\"pc-qty-input\" id=\"pcQtyInput\" type=\"number\" min=\"1\" step=\"1\" value=\"1\" inputmode=\"numeric\" \/>\r\n          <\/div>\r\n\r\n          <button class=\"pc-quote-btn\" id=\"pcQuoteBtn\" type=\"button\">\r\n          <svg class=\"pc-btn-ico\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\r\n            <path d=\"M6.5 6.5h14l-1.3 6.6a2 2 0 0 1-2 1.6H9.3a2 2 0 0 1-2-1.6L5.4 3.9A1.5 1.5 0 0 0 3.9 3H2.8\"\r\n                  fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\r\n            <path d=\"M9.6 20a1.4 1.4 0 1 0 0-2.8 1.4 1.4 0 0 0 0 2.8ZM17.6 20a1.4 1.4 0 1 0 0-2.8 1.4 1.4 0 0 0 0 2.8Z\"\r\n                  fill=\"currentColor\"\/>\r\n          <\/svg>\r\n          <span data-translate=\"pc.addToCart\">Adicionar ao carrinho<\/span>\r\n        <\/button>\r\n        <\/div>\r\n\r\n        <input type=\"hidden\" id=\"pcHiddenPart\" value=\"\">\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"pc-right\">\r\n      <div class=\"pc-right-head\">\r\n        <div class=\"pc-right-h\" data-translate=\"pc.stepsTitle\">Configura\u00e7\u00e3o Passo a Passo<\/div>\r\n        <div class=\"pc-right-s\" data-translate=\"pc.stepsSub\">Selecione cada op\u00e7\u00e3o para montar sua torre personalizada<\/div>\r\n      <\/div>\r\n\r\n      <div class=\"pc-steps\">\r\n        <details class=\"pc-step\" open>\r\n          <summary>\r\n            <div class=\"pc-step-left\">\r\n              <span class=\"pc-step-status\" id=\"st1\"><\/span>\r\n              <div class=\"pc-step-text\">\r\n                <div class=\"pc-step-title\" data-translate=\"pc.step1Title\">1. Sele\u00e7\u00e3o de Modelo (Di\u00e2metro)<\/div>\r\n                <div class=\"pc-step-desc\" data-translate=\"pc.step1Desc\">Escolha o di\u00e2metro da torre<\/div>\r\n              <\/div>\r\n            <\/div>\r\n            <span class=\"pc-step-chevron\">\u2304<\/span>\r\n          <\/summary>\r\n          <div class=\"pc-step-body\"><div class=\"pc-grid-2\" id=\"pcModelGrid\"><\/div><\/div>\r\n        <\/details>\r\n\r\n        <details class=\"pc-step\">\r\n          <summary>\r\n            <div class=\"pc-step-left\">\r\n              <span class=\"pc-step-status\" id=\"st2\"><\/span>\r\n              <div class=\"pc-step-text\">\r\n                <div class=\"pc-step-title\" data-translate=\"pc.step2Title\">2. N\u00famero de M\u00f3dulos<\/div>\r\n                <div class=\"pc-step-desc\" data-translate=\"pc.step2Desc\">Defina quantos m\u00f3dulos a torre ter\u00e1<\/div>\r\n              <\/div>\r\n            <\/div>\r\n            <span class=\"pc-step-chevron\">\u2304<\/span>\r\n          <\/summary>\r\n          <div class=\"pc-step-body\">\r\n            <div class=\"pc-tier-top\">\r\n              <div class=\"pc-tier-num\"><span id=\"pcTierNum\">-<\/span><\/div>\r\n              <div class=\"pc-tier-label\" data-translate=\"pc.modulesLabel\">m\u00f3dulos<\/div>\r\n            <\/div>\r\n            <input class=\"pc-slider\" id=\"pcTierSlider\" type=\"range\" min=\"1\" max=\"5\" step=\"1\" value=\"3\" \/>\r\n            <div class=\"pc-slider-marks\"><span>1<\/span><span>2<\/span><span>3<\/span><span>4<\/span><span>5<\/span><\/div>\r\n          <\/div>\r\n        <\/details>\r\n\r\n        <details class=\"pc-step\">\r\n          <summary>\r\n            <div class=\"pc-step-left\">\r\n              <span class=\"pc-step-status\" id=\"st3\"><\/span>\r\n              <div class=\"pc-step-text\">\r\n                <div class=\"pc-step-title\" data-translate=\"pc.step3Title\">3. Tens\u00e3o Nominal<\/div>\r\n                <div class=\"pc-step-desc\" data-translate=\"pc.step3Desc\">Selecione a tens\u00e3o de opera\u00e7\u00e3o<\/div>\r\n              <\/div>\r\n            <\/div>\r\n            <span class=\"pc-step-chevron\">\u2304<\/span>\r\n          <\/summary>\r\n          <div class=\"pc-step-body\" id=\"pcVoltageList\"><\/div>\r\n        <\/details>\r\n\r\n        <details class=\"pc-step\">\r\n          <summary>\r\n            <div class=\"pc-step-left\">\r\n              <span class=\"pc-step-status\" id=\"st4\"><\/span>\r\n              <div class=\"pc-step-text\">\r\n                <div class=\"pc-step-title\" data-translate=\"pc.step4Title\">4. Montagem e Conex\u00e3o<\/div>\r\n                <div class=\"pc-step-desc\" data-translate=\"pc.step4Desc\">Escolha o tipo de montagem e conex\u00e3o<\/div>\r\n              <\/div>\r\n            <\/div>\r\n            <span class=\"pc-step-chevron\">\u2304<\/span>\r\n          <\/summary>\r\n          <div class=\"pc-step-body\" id=\"pcMountingList\"><\/div>\r\n        <\/details>\r\n\r\n        <details class=\"pc-step\">\r\n          <summary>\r\n            <div class=\"pc-step-left\">\r\n              <span class=\"pc-step-status\" id=\"st5\"><\/span>\r\n              <div class=\"pc-step-text\">\r\n                <div class=\"pc-step-title\" data-translate=\"pc.step5Title\">5. Funcionalidade de Zumbido\/Flashes<\/div>\r\n                <div class=\"pc-step-desc\" data-translate=\"pc.step5Desc\">Adicionar sinaliza\u00e7\u00e3o ac\u00fastica<\/div>\r\n              <\/div>\r\n            <\/div>\r\n            <span class=\"pc-step-chevron\">\u2304<\/span>\r\n          <\/summary>\r\n          <div class=\"pc-step-body\"><div class=\"pc-grid-2\" id=\"pcBuzzerGrid\"><\/div><\/div>\r\n        <\/details>\r\n\r\n        <details class=\"pc-step\">\r\n          <summary>\r\n            <div class=\"pc-step-left\">\r\n              <span class=\"pc-step-status\" id=\"st6\"><\/span>\r\n              <div class=\"pc-step-text\">\r\n                <div class=\"pc-step-title\" data-translate=\"pc.step6Title\">6. Cor do Corpo<\/div>\r\n                <div class=\"pc-step-desc\" data-translate=\"pc.step6Desc\">Escolha a cor do corpo da torre<\/div>\r\n              <\/div>\r\n            <\/div>\r\n            <span class=\"pc-step-chevron\">\u2304<\/span>\r\n          <\/summary>\r\n          <div class=\"pc-step-body\"><div class=\"pc-grid-3\" id=\"pcBodyGrid\"><\/div><\/div>\r\n        <\/details>\r\n\r\n        <details class=\"pc-step\">\r\n          <summary>\r\n            <div class=\"pc-step-left\">\r\n              <span class=\"pc-step-status\" id=\"st7\"><\/span>\r\n              <div class=\"pc-step-text\">\r\n                <div class=\"pc-step-title\" data-translate=\"pc.step7Title\">7. Configura\u00e7\u00e3o de M\u00f3dulos LED<\/div>\r\n                <div class=\"pc-step-desc\" data-translate=\"pc.step7Desc\">Defina a cor de cada m\u00f3dulo<\/div>\r\n              <\/div>\r\n            <\/div>\r\n            <span class=\"pc-step-chevron\">\u2304<\/span>\r\n          <\/summary>\r\n          <div class=\"pc-step-body\" id=\"pcLedStep\"><\/div>\r\n        <\/details>\r\n\r\n        <details class=\"pc-step\">\r\n          <summary>\r\n            <div class=\"pc-step-left\">\r\n              <span class=\"pc-step-status\" id=\"st8\"><\/span>\r\n              <div class=\"pc-step-text\">\r\n                <div class=\"pc-step-title\" data-translate=\"pc.step8Title\">8. Tipo de Lente<\/div>\r\n                <div class=\"pc-step-desc\" data-translate=\"pc.step8Desc\">Escolha o tipo de lente<\/div>\r\n              <\/div>\r\n            <\/div>\r\n            <span class=\"pc-step-chevron\">\u2304<\/span>\r\n          <\/summary>\r\n          <div class=\"pc-step-body\"><div class=\"pc-grid-2\" id=\"pcGlobeGrid\"><\/div><\/div>\r\n        <\/details>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<div id=\"pcCartOverlay\" class=\"pc-cart-overlay\" aria-hidden=\"true\"><\/div>\r\n\r\n<aside id=\"pcCartDrawer\" class=\"pc-cart-drawer\" aria-hidden=\"true\">\r\n  <header class=\"pc-cart-header\">\r\n    <strong data-translate=\"pc.cartTitle\">\ud83d\uded2 Seu pedido<\/strong>\r\n    <button id=\"pcCartClose\" class=\"pc-cart-close\" type=\"button\" data-i18n-aria=\"pc.cartCloseAria\" aria-label=\"Fechar carrinho\">\u2715<\/button>\r\n  <\/header>\r\n\r\n  <div class=\"pc-cart-sub\" data-translate=\"pc.cartSub\">\r\n    Adicione uma ou mais configura\u00e7\u00f5es (de qualquer configurador). Depois envie tudo no formul\u00e1rio.\r\n  <\/div>\r\n\r\n  <div class=\"pc-cart-list\" id=\"pcCartList\">\r\n    <p class=\"pc-cart-empty\" data-translate=\"pc.cartEmpty\">Seu carrinho est\u00e1 vazio.<\/p>\r\n  <\/div>\r\n\r\n  <footer class=\"pc-cart-footer\">\r\n    <button id=\"pcCartClear\" class=\"pc-cart-clear\" type=\"button\" data-translate=\"pc.cartClear\">Limpar<\/button>\r\n    <button id=\"pcCartSend\" class=\"pc-cart-send\" type=\"button\" data-translate=\"pc.cartSend\">Enviar pedido<\/button>\r\n  <\/footer>\r\n<\/aside>\r\n\r\n<button id=\"pcCartFab\" class=\"pc-cart-fab\" type=\"button\" data-i18n-aria=\"pc.cartFabAria\" aria-label=\"Abrir carrinho\">\r\n  <svg class=\"pc-cart-ico\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\r\n    <path d=\"M6.5 6.5h14l-1.3 6.6a2 2 0 0 1-2 1.6H9.3a2 2 0 0 1-2-1.6L5.4 3.9A1.5 1.5 0 0 0 3.9 3H2.8\"\r\n          fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\r\n    <path d=\"M9.6 20a1.4 1.4 0 1 0 0-2.8 1.4 1.4 0 0 0 0 2.8ZM17.6 20a1.4 1.4 0 1 0 0-2.8 1.4 1.4 0 0 0 0 2.8Z\"\r\n          fill=\"currentColor\"\/>\r\n  <\/svg>\r\n  <span id=\"pcCartBadge\">0<\/span>\r\n<\/button>\r\n\r\n<style>\r\n  .pc-wrap{\r\n    font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;\r\n    background: transparent !important;\r\n    padding:80px 16px;\r\n  }\r\n\r\n  .pc-header{max-width:1280px;margin:0 auto 24px;text-align:center}\r\n  .pc-badge{display:inline-block;background:#2563EB;color:#fff;padding:8px 14px;border-radius:999px;font-weight:800;font-size:13px}\r\n  .pc-h1{margin:14px 0 6px;font-size:40px;line-height:1.1;font-weight:900;color:#111827}\r\n  .pc-sub{margin:0;font-size:18px;color:#4B5563}\r\n\r\n  .pc-progress-card{max-width:1280px;margin:0 auto 20px;background:#fff;border-radius:14px;box-shadow:0 10px 15px -3px rgba(0,0,0,.10);padding:14px 16px}\r\n  .pc-progress-top{display:flex;justify-content:space-between;align-items:center;gap:12px;color:#111827;font-size:13px}\r\n  .pc-progress-track{margin-top:10px;height:8px;border-radius:999px;background:#E5E7EB;overflow:hidden}\r\n  .pc-progress-bar{height:100%;background:#2563EB;border-radius:999px;transition:width .25s ease,background .25s ease}\r\n\r\n  .pc-grid{max-width:1280px;margin:0 auto;display:grid;grid-template-columns:40% 60%;gap:22px}\r\n  @media (max-width:1024px){.pc-grid{grid-template-columns:1fr}}\r\n\r\n  .pc-left{display:flex;flex-direction:column;gap:18px}\r\n\r\n  .pc-card{background:#fff;border-radius:16px;box-shadow:0 10px 15px -3px rgba(0,0,0,.10);overflow:hidden;border:1px solid rgba(15,23,42,.06)}\r\n  .pc-card-title{display:flex;gap:12px;align-items:center;padding:16px 16px 10px}\r\n  .pc-ico{width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center}\r\n\r\n  .pc-card-blue .pc-card-title{background:linear-gradient(90deg,#2563EB,#1D4ED8);color:#fff}\r\n  .pc-card-blue .pc-card-h{font-weight:900}\r\n  .pc-card-blue .pc-card-s{opacity:.85;font-size:12px}\r\n\r\n  .pc-card-green{background:linear-gradient(180deg,#ECFDF5,#D1FAE5);border:1px solid #10B981}\r\n  .pc-card-green .pc-card-h{font-weight:900;color:#064E3B}\r\n  .pc-card-green .pc-card-s{font-size:12px;color:#065F46;opacity:.9}\r\n\r\n  .pc-preview{position:relative;padding:64px 16px 10px;min-height:280px;display:flex;align-items:center;justify-content:center;background:#F8FAFC;margin:14px 16px;border-radius:14px;border:1px solid rgba(15,23,42,.06);overflow:visible}\r\n  .pc-buzzer{position:absolute;top:18px;left:50%;transform:translateX(-50%);width:64px;height:32px;border-radius:0 0 999px 999px;background:#EAB308;color:#111827;display:none;align-items:center;justify-content:center;box-shadow:0 10px 15px -3px rgba(0,0,0,.15);font-size:18px;z-index:50}\r\n  .pc-tower{display:flex;flex-direction:column;align-items:center;gap:10px;position:relative;z-index:1;margin-top:6px}\r\n  .pc-modules{display:flex;flex-direction:column;align-items:center;gap:10px}\r\n  .pc-module{width:80px;height:48px;border-radius:12px;border:2px dashed #CBD5E1;background:rgba(255,255,255,.45);position:relative;overflow:hidden}\r\n  .pc-module::before{content:\"\";position:absolute;inset:0;background:linear-gradient(90deg,rgba(255,255,255,.35),rgba(255,255,255,0))}\r\n  .pc-module::after{content:\"\";position:absolute;left:50%;top:50%;width:10px;height:10px;border-radius:999px;background:rgba(255,255,255,.95);transform:translate(-50%,-50%);opacity:0}\r\n  .pc-module.is-on{border:2px solid rgba(255,255,255,.55);box-shadow:0 10px 15px -3px rgba(0,0,0,.12)}\r\n  .pc-module.is-on::after{opacity:1;animation:pcPulse 2s cubic-bezier(.4,0,.6,1) infinite}\r\n  @keyframes pcPulse{0%,100%{opacity:1}50%{opacity:.45}}\r\n\r\n  .pc-base{width:96px;height:48px;border-radius:14px;background:#E5E7EB;box-shadow:0 12px 20px -10px rgba(0,0,0,.25);position:relative;overflow:hidden}\r\n  .pc-base::before{content:\"\";position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.35),rgba(0,0,0,0))}\r\n  .pc-base-line{width:64px;height:4px;border-radius:999px;background:#334155;margin-top:-2px;opacity:.9}\r\n\r\n  .pc-mini-info{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px;padding:8px 16px 16px;border-top:1px solid rgba(15,23,42,.06);background:#fff}\r\n  .pc-mini{display:flex;align-items:center;gap:8px;font-size:12px;color:#475569}\r\n  .pc-mini strong{color:#111827}\r\n\r\n  .pc-partbox{padding:6px 16px 0}\r\n  .pc-part{background:#fff;border:1px solid rgba(16,185,129,.35);border-radius:12px;padding:14px 16px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",monospace;font-size:20px;color:#065F46;font-weight:900;word-break:break-word}\r\n\r\n  .pc-buy-row{display:grid;grid-template-columns:minmax(160px,220px) minmax(0,1fr);gap:16px;align-items:end;padding:16px}\r\n  .pc-qty-wrap,.pc-qty-wrap *{box-sizing:border-box}\r\n  .pc-qty-wrap{min-width:0;display:flex;flex-direction:column;gap:8px}\r\n  .pc-qty-label{display:block;margin:0;font-size:14px;line-height:1.2;font-weight:800;color:#065F46}\r\n  .pc-qty-input,\r\n  input.pc-qty-input,\r\n  .elementor input.pc-qty-input,\r\n  .pc-wrap input.pc-qty-input,\r\n  .pc-card input.pc-qty-input{\r\n    appearance:textfield;\r\n    -webkit-appearance:none;\r\n    -moz-appearance:textfield;\r\n    display:block;\r\n    box-sizing:border-box !important;\r\n    width:100% !important;\r\n    min-width:0 !important;\r\n    max-width:none !important;\r\n    min-height:58px !important;\r\n    height:58px !important;\r\n    line-height:56px !important;\r\n    margin:0 !important;\r\n    padding:0 16px !important;\r\n    vertical-align:middle;\r\n    border:1px solid rgba(6,95,70,.18) !important;\r\n    border-radius:12px !important;\r\n    background:#fff !important;\r\n    color:#111827 !important;\r\n    font:700 28px\/1 Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif !important;\r\n    letter-spacing:-.02em;\r\n    text-align:left;\r\n    box-shadow:none !important;\r\n    outline:none;\r\n  }\r\n  .pc-qty-input::-webkit-outer-spin-button,\r\n  .pc-qty-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}\r\n  .pc-qty-input:focus,\r\n  input.pc-qty-input:focus,\r\n  .elementor input.pc-qty-input:focus,\r\n  .pc-wrap input.pc-qty-input:focus{\r\n    border-color:#10B981 !important;\r\n    box-shadow:0 0 0 4px rgba(16,185,129,.14) !important;\r\n  }\r\n\r\n  .pc-quote-btn{\r\n    width:100%;\r\n    margin:0;\r\n    height:58px;\r\n    border:0;\r\n    border-radius:12px;\r\n    background:#16A34A;\r\n    color:#fff;\r\n    font-weight:900;\r\n    cursor:pointer;\r\n    box-shadow:0 10px 15px -3px rgba(0,0,0,.10);\r\n    transition:filter .2s ease;\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    gap:10px;\r\n    padding:0 18px;\r\n  }\r\n  .pc-quote-btn:hover{filter:brightness(.95)}\r\n  .pc-btn-ico{width:18px;height:18px;display:block;color:#fff;flex:0 0 auto}\r\n\r\n  .pc-right-head{background:#fff;border-radius:16px;box-shadow:0 10px 15px -3px rgba(0,0,0,.10);padding:16px;margin-bottom:14px;border:1px solid rgba(15,23,42,.06)}\r\n  .pc-right-h{font-weight:900;color:#111827}\r\n  .pc-right-s{font-size:12px;color:#6B7280;margin-top:4px}\r\n\r\n  .pc-steps{background:#fff;border-radius:16px;box-shadow:0 10px 15px -3px rgba(0,0,0,.10);border:1px solid rgba(15,23,42,.06);overflow:hidden}\r\n  .pc-step{border-top:1px solid rgba(15,23,42,.06)}\r\n  .pc-step:first-child{border-top:0}\r\n  .pc-step>summary{padding:16px;display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;list-style:none}\r\n  .pc-step>summary::-webkit-details-marker{display:none}\r\n  .pc-step-left{display:flex;align-items:flex-start;gap:12px;min-width:0}\r\n  .pc-step-title{font-weight:900;color:#111827;font-size:14px;line-height:1.2}\r\n  .pc-step-desc{font-size:12px;color:#6B7280;line-height:1.2}\r\n  .pc-step-status{width:22px;height:22px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:#F3F4F6;color:#9CA3AF;border:2px solid #D1D5DB;font-weight:900;flex:0 0 auto}\r\n  .pc-step-status.is-done{background:#16A34A;border-color:#16A34A;color:#fff}\r\n  .pc-step-chevron{color:#6B7280;font-size:18px;line-height:1;flex:0 0 auto;transition:transform .2s ease}\r\n  .pc-step[open] .pc-step-chevron{transform:rotate(180deg)}\r\n  .pc-step[open]>summary{background:#F8FAFC}\r\n  .pc-step-body{padding:0 16px 16px}\r\n\r\n  .pc-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}\r\n  .pc-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}\r\n  @media (max-width:768px){.pc-grid-2,.pc-grid-3{grid-template-columns:1fr}.pc-buy-row{grid-template-columns:1fr;gap:12px;padding:14px}.pc-qty-input,input.pc-qty-input,.elementor input.pc-qty-input,.pc-wrap input.pc-qty-input,.pc-card input.pc-qty-input{min-height:54px !important;height:54px !important;line-height:52px !important;font-size:24px}}\r\n\r\n  .pc-opt{border:1px solid rgba(15,23,42,.10);background:#fff;border-radius:14px;padding:12px;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}\r\n  .pc-opt:hover{transform:translateY(-2px);box-shadow:0 20px 25px -5px rgba(0,0,0,.12)}\r\n  .pc-opt.is-active{border-color:#2563EB;box-shadow:0 20px 25px -5px rgba(37,99,235,.20)}\r\n  .pc-opt.is-disabled{opacity:.5;cursor:not-allowed;transform:none!important;box-shadow:none!important}\r\n  .pc-opt-top{display:flex;align-items:center;justify-content:space-between;gap:10px}\r\n  .pc-opt-title{font-weight:900;color:#111827}\r\n  .pc-opt-sub{margin-top:4px;font-size:12px;color:#6B7280}\r\n  .pc-code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",monospace;font-weight:900;font-size:12px;background:#F1F5F9;border-radius:10px;padding:6px 10px;color:#111827}\r\n\r\n  .pc-tier-top{display:flex;align-items:baseline;gap:10px;margin-bottom:10px}\r\n  .pc-tier-num{font-size:34px;font-weight:900;color:#111827}\r\n  .pc-tier-label{color:#6B7280;font-size:13px;font-weight:700}\r\n  .pc-slider{width:100%}\r\n  .pc-slider-marks{display:flex;justify-content:space-between;color:#64748B;font-size:12px;margin-top:6px}\r\n\r\n  .pc-led-card{border:1px solid rgba(15,23,42,.10);border-radius:14px;padding:10px;background:#fff;margin-bottom:10px}\r\n  .pc-led-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}\r\n  .pc-led-dot{width:14px;height:14px;border-radius:999px;background:#E5E7EB;border:1px solid rgba(15,23,42,.12)}\r\n  .pc-led-label{font-weight:900;color:#111827;font-size:13px}\r\n  .pc-led-select{width:100%;padding:10px;border-radius:12px;border:1px solid rgba(15,23,42,.12);font-weight:700}\r\n\r\n  .pc-cart-overlay{position:fixed;inset:0;background:rgba(15,23,42,.45);opacity:0;pointer-events:none;transition:opacity .25s ease;z-index:9998}\r\n  .pc-cart-overlay.open{opacity:1;pointer-events:auto}\r\n  .pc-cart-drawer{position:fixed;top:0;right:0;height:100vh;width:380px;max-width:92%;background:#fff;box-shadow:-20px 0 40px rgba(0,0,0,.25);transform:translateX(100%);transition:transform .25s ease;z-index:9999;display:flex;flex-direction:column}\r\n  .pc-cart-drawer.open{transform:translateX(0)}\r\n  .pc-cart-header{padding:16px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid rgba(15,23,42,.08);font-weight:900}\r\n  .pc-cart-close{border:0;background:transparent;cursor:pointer;font-size:18px;padding:6px 10px;border-radius:10px}\r\n  .pc-cart-close:hover{background:#F1F5F9}\r\n  .pc-cart-sub{padding:0 16px 12px;color:#6B7280;font-size:12px;border-bottom:1px solid rgba(15,23,42,.08)}\r\n  .pc-cart-list{flex:1;padding:16px;overflow:auto}\r\n  .pc-cart-empty{color:#6B7280;font-size:14px;text-align:center;margin-top:40px}\r\n  .pc-cart-item{border:1px solid rgba(15,23,42,.10);border-radius:12px;padding:12px;margin-bottom:10px;display:flex;justify-content:space-between;align-items:flex-start;gap:10px;background:#fff}\r\n  .pc-cart-meta{min-width:0}\r\n  .pc-cart-code{font-family:ui-monospace,monospace;font-weight:900;font-size:13px;color:#111827;word-break:break-word}\r\n  .pc-cart-qty{display:inline-flex;align-items:center;gap:6px;margin-top:8px;padding:5px 9px;border-radius:999px;background:#ECFDF5;color:#065F46;font-size:11px;font-weight:800;border:1px solid rgba(16,185,129,.22)}\r\n  .pc-cart-time{font-size:11px;color:#6B7280;margin-top:6px}\r\n  .pc-cart-remove{background:none;border:0;cursor:pointer;font-size:16px;padding:6px 10px;border-radius:10px}\r\n  .pc-cart-remove:hover{background:#F1F5F9}\r\n  .pc-cart-footer{padding:16px;display:flex;gap:10px;border-top:1px solid rgba(15,23,42,.08);background:#fff}\r\n  .pc-cart-footer button{flex:1;height:44px;border-radius:12px;border:0;font-weight:900;cursor:pointer}\r\n  .pc-cart-clear{background:#E5E7EB}\r\n  .pc-cart-clear:hover{filter:brightness(.97)}\r\n  .pc-cart-send{background:#2563EB;color:#fff}\r\n  .pc-cart-send:hover{filter:brightness(.97)}\r\n\r\n  .pc-cart-fab{\r\n    position:fixed;bottom:24px;right:24px;z-index:9997;\r\n    width:54px;height:54px;border-radius:50%;\r\n    display:flex;align-items:center;justify-content:center;\r\n    background:#2563EB;color:#fff;border:0;cursor:pointer;\r\n    box-shadow:0 10px 24px rgba(37,99,235,.35);\r\n    transition:transform .2s ease, box-shadow .2s ease;\r\n    overflow:visible;\r\n  }\r\n  .pc-cart-fab:hover{transform:translateY(-2px);box-shadow:0 16px 32px rgba(37,99,235,.45)}\r\n  .pc-cart-ico{width:30px;height:30px;display:block}\r\n  #pcCartBadge{\r\n    position:absolute;top:-4px;right:-4px;\r\n    min-width:18px;height:18px;padding:0 6px;\r\n    background:#111827;color:#fff;border-radius:999px;\r\n    font-size:11px;font-weight:800;line-height:18px;text-align:center;\r\n    box-shadow:0 4px 10px rgba(0,0,0,.25);\r\n  }\r\n  @media (max-width:480px){.pc-cart-fab{bottom:16px;right:16px}}\r\n\r\n  .pc-toast-wrap{position:fixed;right:18px;top:18px;z-index:10050;display:flex;flex-direction:column;gap:10px;pointer-events:none}\r\n  .pc-toast{pointer-events:auto;min-width:260px;max-width:360px;background:#111827;color:#fff;border-radius:14px;padding:12px 12px;box-shadow:0 20px 40px rgba(0,0,0,.22);display:flex;gap:10px;align-items:flex-start;transform:translateY(-8px);opacity:0;animation:pcToastIn .22s ease forwards;border:1px solid rgba(255,255,255,.08)}\r\n  @keyframes pcToastIn{to{transform:translateY(0);opacity:1}}\r\n  .pc-toast.pc-ok{border-color:rgba(16,185,129,.35)}\r\n  .pc-toast.pc-warn{border-color:rgba(245,158,11,.45)}\r\n  .pc-toast.pc-err{border-color:rgba(239,68,68,.45)}\r\n  .pc-toast-ico{width:34px;height:34px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.08);flex:0 0 auto;font-size:16px}\r\n  .pc-toast-title{font-weight:900;font-size:13px;margin:0}\r\n  .pc-toast-msg{font-size:12px;margin:4px 0 0;opacity:.9;line-height:1.35}\r\n  .pc-toast-x{margin-left:auto;border:0;background:transparent;color:#fff;opacity:.75;cursor:pointer;font-size:16px;line-height:1;padding:6px 8px;border-radius:10px}\r\n  .pc-toast-x:hover{background:rgba(255,255,255,.08);opacity:1}\r\n<\/style>\r\n\r\n<script>\r\n(function(){\r\n  \"use strict\";\r\n  const $ = (sel) => document.querySelector(sel);\r\n\r\n  function normalizeLang(lang){\r\n    const raw = String(lang || \"\").trim().toLowerCase();\r\n    if(!raw) return \"pt-br\";\r\n    if(raw === \"en\" || raw.startsWith(\"en-\")) return \"en\";\r\n    if(raw === \"pt\" || raw === \"pt-br\" || raw.startsWith(\"pt-\")) return \"pt-br\";\r\n    return raw;\r\n  }\r\n\r\n  function getLang(){\r\n    try{\r\n      const ls = normalizeLang(localStorage.getItem(\"shinwa_lang\") || \"\");\r\n      if(ls && (ls === \"en\" || ls === \"pt-br\")) return ls;\r\n    }catch(e){}\r\n    return normalizeLang(window.shinwaCurrentLang || document.documentElement.lang || navigator.language || \"pt-br\");\r\n  }\r\n\r\n  const i18n = {\r\n    \"pt-br\": {\r\n      \"pc.badge\":\"PATLITE LR Series\",\r\n      \"pc.h1\":\"Configurador de Torres de Sinaliza\u00e7\u00e3o\",\r\n      \"pc.sub\":\"Monte sua torre personalizada passo a passo e gere o c\u00f3digo do produto automaticamente\",\r\n      \"pc.progressTitle\":\"Progresso da Configura\u00e7\u00e3o\",\r\n      \"pc.progressSuffix\":\"\/ 8 passos completos\",\r\n      \"pc.previewTitle\":\"Visualiza\u00e7\u00e3o em Tempo Real\",\r\n      \"pc.previewSub\":\"Sua torre personalizada\",\r\n      \"pc.buzzerTitle\":\"Buzzer ativo\",\r\n      \"pc.infoModelLabel\":\"Modelo:\",\r\n      \"pc.infoModulesLabel\":\"M\u00f3dulos:\",\r\n      \"pc.infoVoltageLabel\":\"Tens\u00e3o:\",\r\n      \"pc.infoMountingLabel\":\"Montagem:\",\r\n      \"pc.partTitle\":\"C\u00f3digo do Produto (Part Number)\",\r\n      \"pc.partSub\":\"Gerado automaticamente\",\r\n      \"pc.partIncomplete\":\"Complete todos os passos obrigat\u00f3rios\",\r\n      \"pc.partNeedLeds\":\"Configure todos os m\u00f3dulos LED\",\r\n      \"pc.partNeedLens\":\"Selecione o tipo de lente\",\r\n      \"pc.qtyLabel\":\"Quantidade\",\r\n      \"pc.addToCart\":\"Adicionar ao carrinho\",\r\n      \"pc.removeItem\":\"Remover item\",\r\n      \"pc.qtyShort\":\"Qtd\",\r\n      \"pc.stepsTitle\":\"Configura\u00e7\u00e3o Passo a Passo\",\r\n      \"pc.stepsSub\":\"Selecione cada op\u00e7\u00e3o para montar sua torre personalizada\",\r\n      \"pc.step1Title\":\"1. Sele\u00e7\u00e3o de Modelo (Di\u00e2metro)\",\r\n      \"pc.step1Desc\":\"Escolha o di\u00e2metro da torre\",\r\n      \"pc.step2Title\":\"2. N\u00famero de M\u00f3dulos\",\r\n      \"pc.step2Desc\":\"Defina quantos m\u00f3dulos a torre ter\u00e1\",\r\n      \"pc.modulesLabel\":\"m\u00f3dulos\",\r\n      \"pc.step3Title\":\"3. Tens\u00e3o Nominal\",\r\n      \"pc.step3Desc\":\"Selecione a tens\u00e3o de opera\u00e7\u00e3o\",\r\n      \"pc.step4Title\":\"4. Montagem e Conex\u00e3o\",\r\n      \"pc.step4Desc\":\"Escolha o tipo de montagem e conex\u00e3o\",\r\n      \"pc.step5Title\":\"5. Funcionalidade de Zumbido\/Flashes\",\r\n      \"pc.step5Desc\":\"Adicionar sinaliza\u00e7\u00e3o ac\u00fastica\",\r\n      \"pc.step6Title\":\"6. Cor do Corpo\",\r\n      \"pc.step6Desc\":\"Escolha a cor do corpo da torre\",\r\n      \"pc.step7Title\":\"7. Configura\u00e7\u00e3o de M\u00f3dulos LED\",\r\n      \"pc.step7Desc\":\"Defina a cor de cada m\u00f3dulo\",\r\n      \"pc.step8Title\":\"8. Tipo de Lente\",\r\n      \"pc.step8Desc\":\"Escolha o tipo de lente\",\r\n      \"pc.ledHint\":\"Selecione o n\u00famero de m\u00f3dulos para configurar as cores.\",\r\n      \"pc.ledModule\":\"M\u00f3dulo {n} (do topo)\",\r\n      \"pc.select\":\"Selecione...\",\r\n      \"pc.unavailable\":\"Indispon\u00edvel para este modelo\",\r\n      \"pc.available\":\"Dispon\u00edvel\",\r\n      \"pc.unavailableSuffix\":\" (indispon\u00edvel)\",\r\n      \"pc.unavailableForVoltage\":\"Indispon\u00edvel para tens\u00e3o nominal escolhida\",\r\n      \"pc.bodyHint\":\"Cor do corpo\",\r\n      \"pc.cartTitle\":\"\ud83d\uded2 Seu pedido\",\r\n      \"pc.cartCloseAria\":\"Fechar carrinho\",\r\n      \"pc.cartSub\":\"Adicione uma ou mais configura\u00e7\u00f5es (de qualquer configurador). Depois envie tudo no formul\u00e1rio.\",\r\n      \"pc.cartEmpty\":\"Seu carrinho est\u00e1 vazio.\",\r\n      \"pc.cartClear\":\"Limpar\",\r\n      \"pc.cartSend\":\"Enviar pedido\",\r\n      \"pc.cartFabAria\":\"Abrir carrinho\",\r\n      \"toast.removedTitle\":\"Removido\",\r\n      \"toast.removedMsg\":\"Item removido do carrinho.\",\r\n      \"toast.clearedTitle\":\"Carrinho limpo\",\r\n      \"toast.clearedMsg\":\"Voc\u00ea pode adicionar novas configura\u00e7\u00f5es.\",\r\n      \"toast.emptyTitle\":\"Carrinho vazio\",\r\n      \"toast.emptyMsg\":\"Adicione pelo menos 1 item antes de enviar.\",\r\n      \"toast.formNotFoundTitle\":\"Formul\u00e1rio n\u00e3o encontrado\",\r\n      \"toast.formNotFoundMsg\":\"Verifique se o WPForms 512 est\u00e1 nesta p\u00e1gina (Mensagem field_9).\",\r\n      \"toast.insertedTitle\":\"Pedido inserido\",\r\n      \"toast.insertedMsg\":\"Seu pedido foi colocado na Mensagem. Agora \u00e9 s\u00f3 clicar em Enviar.\",\r\n      \"toast.incompleteTitle\":\"Configura\u00e7\u00e3o incompleta\",\r\n      \"toast.incompleteMsg\":\"Finalize as op\u00e7\u00f5es para gerar o Part Number.\",\r\n      \"toast.addedTitle\":\"Adicionado ao carrinho\",\r\n      \"toast.addedMsg\":\"Configura\u00e7\u00e3o adicionada com sucesso.\"\r\n    },\r\n    \"en\": {\r\n      \"pc.badge\":\"PATLITE LR Series\",\r\n      \"pc.h1\":\"Signal Tower Configurator\",\r\n      \"pc.sub\":\"Build your custom tower step by step and generate the product code automatically\",\r\n      \"pc.progressTitle\":\"Configuration Progress\",\r\n      \"pc.progressSuffix\":\"\/ 8 steps completed\",\r\n      \"pc.previewTitle\":\"Real-Time Preview\",\r\n      \"pc.previewSub\":\"Your customized tower\",\r\n      \"pc.buzzerTitle\":\"Buzzer enabled\",\r\n      \"pc.infoModelLabel\":\"Model:\",\r\n      \"pc.infoModulesLabel\":\"Modules:\",\r\n      \"pc.infoVoltageLabel\":\"Voltage:\",\r\n      \"pc.infoMountingLabel\":\"Mounting:\",\r\n      \"pc.partTitle\":\"Product Code (Part Number)\",\r\n      \"pc.partSub\":\"Auto-generated\",\r\n      \"pc.partIncomplete\":\"Complete all required steps\",\r\n      \"pc.partNeedLeds\":\"Configure all LED modules\",\r\n      \"pc.partNeedLens\":\"Select the lens type\",\r\n      \"pc.qtyLabel\":\"Quantity\",\r\n      \"pc.addToCart\":\"Add to cart\",\r\n      \"pc.removeItem\":\"Remove item\",\r\n      \"pc.qtyShort\":\"Qty\",\r\n      \"pc.stepsTitle\":\"Step-by-step configuration\",\r\n      \"pc.stepsSub\":\"Select each option to build your custom tower\",\r\n      \"pc.step1Title\":\"1. Model selection (Diameter)\",\r\n      \"pc.step1Desc\":\"Choose the tower diameter\",\r\n      \"pc.step2Title\":\"2. Number of modules\",\r\n      \"pc.step2Desc\":\"Set how many modules the tower will have\",\r\n      \"pc.modulesLabel\":\"modules\",\r\n      \"pc.step3Title\":\"3. Rated voltage\",\r\n      \"pc.step3Desc\":\"Select operating voltage\",\r\n      \"pc.step4Title\":\"4. Mounting & connection\",\r\n      \"pc.step4Desc\":\"Choose mounting and connection type\",\r\n      \"pc.step5Title\":\"5. Buzzer\/Flashes function\",\r\n      \"pc.step5Desc\":\"Add acoustic signaling\",\r\n      \"pc.step6Title\":\"6. Body color\",\r\n      \"pc.step6Desc\":\"Choose the tower body color\",\r\n      \"pc.step7Title\":\"7. LED module setup\",\r\n      \"pc.step7Desc\":\"Set the color of each module\",\r\n      \"pc.step8Title\":\"8. Lens type\",\r\n      \"pc.step8Desc\":\"Choose the lens type\",\r\n      \"pc.ledHint\":\"Select the number of modules to configure colors.\",\r\n      \"pc.ledModule\":\"Module {n} (top)\",\r\n      \"pc.select\":\"Select...\",\r\n      \"pc.unavailable\":\"Unavailable for this model\",\r\n      \"pc.available\":\"Available\",\r\n      \"pc.unavailableSuffix\":\" (unavailable)\",\r\n      \"pc.unavailableForVoltage\":\"Unavailable for selected rated voltage\",\r\n      \"pc.bodyHint\":\"Body color\",\r\n      \"pc.cartTitle\":\"\ud83d\uded2 Your request\",\r\n      \"pc.cartCloseAria\":\"Close cart\",\r\n      \"pc.cartSub\":\"Add one or more configurations (from any configurator). Then send everything in the form.\",\r\n      \"pc.cartEmpty\":\"Your cart is empty.\",\r\n      \"pc.cartClear\":\"Clear\",\r\n      \"pc.cartSend\":\"Send request\",\r\n      \"pc.cartFabAria\":\"Open cart\",\r\n      \"toast.removedTitle\":\"Removed\",\r\n      \"toast.removedMsg\":\"Item removed from cart.\",\r\n      \"toast.clearedTitle\":\"Cart cleared\",\r\n      \"toast.clearedMsg\":\"You can add new configurations.\",\r\n      \"toast.emptyTitle\":\"Cart is empty\",\r\n      \"toast.emptyMsg\":\"Add at least 1 item before sending.\",\r\n      \"toast.formNotFoundTitle\":\"Form not found\",\r\n      \"toast.formNotFoundMsg\":\"Make sure WPForms 512 is on this page (Message field_9).\",\r\n      \"toast.insertedTitle\":\"Request inserted\",\r\n      \"toast.insertedMsg\":\"Your request was placed in the Message field. Now just click Submit.\",\r\n      \"toast.incompleteTitle\":\"Incomplete configuration\",\r\n      \"toast.incompleteMsg\":\"Finish the options to generate the Part Number.\",\r\n      \"toast.addedTitle\":\"Added to cart\",\r\n      \"toast.addedMsg\":\"Configuration added successfully.\"\r\n    }\r\n  };\r\n\r\n  function t(key){\r\n    const lang = getLang();\r\n    return (i18n[lang] && i18n[lang][key]) ? i18n[lang][key] : (i18n[\"pt-br\"][key] || key);\r\n  }\r\n\r\n  function applyI18n(){\r\n    const lang = getLang();\r\n\r\n    document.querySelectorAll('[data-translate]').forEach(el=>{\r\n      const key = el.getAttribute('data-translate');\r\n      const val = (i18n[lang] && i18n[lang][key]) ? i18n[lang][key] : (i18n[\"pt-br\"][key] || \"\");\r\n      if(val) el.textContent = val;\r\n    });\r\n\r\n    document.querySelectorAll('[data-i18n-title]').forEach(el=>{\r\n      const key = el.getAttribute('data-i18n-title');\r\n      const val = (i18n[lang] && i18n[lang][key]) ? i18n[lang][key] : (i18n[\"pt-br\"][key] || \"\");\r\n      if(val) el.setAttribute(\"title\", val);\r\n    });\r\n\r\n    document.querySelectorAll('[data-i18n-aria]').forEach(el=>{\r\n      const key = el.getAttribute('data-i18n-aria');\r\n      const val = (i18n[lang] && i18n[lang][key]) ? i18n[lang][key] : (i18n[\"pt-br\"][key] || \"\");\r\n      if(val) el.setAttribute(\"aria-label\", val);\r\n    });\r\n\r\n    renderCart();\r\n  }\r\n\r\n  window.addEventListener(\"languageChange\", (e)=>{\r\n    const lang = (e && e.detail && e.detail.language) ? e.detail.language : getLang();\r\n    try{ localStorage.setItem(\"shinwa_lang\", (lang||\"pt-br\").toLowerCase()); }catch(err){}\r\n    applyI18n();\r\n    try{ refreshAll(); }catch(err){}\r\n  });\r\n\r\n  applyI18n();\r\n\r\n  function toast(type, title, msg, duration=2600){\r\n    let wrap = document.querySelector(\".pc-toast-wrap\");\r\n    if(!wrap){\r\n      wrap = document.createElement(\"div\");\r\n      wrap.className = \"pc-toast-wrap\";\r\n      document.body.appendChild(wrap);\r\n    }\r\n    const ico = type===\"ok\"?\"\u2705\":type===\"warn\"?\"\u26a0\ufe0f\":type===\"err\"?\"\u274c\":\"\u2139\ufe0f\";\r\n    const tt = document.createElement(\"div\");\r\n    tt.className = \"pc-toast \" + (type===\"ok\"?\"pc-ok\":type===\"warn\"?\"pc-warn\":type===\"err\"?\"pc-err\":\"\");\r\n    tt.innerHTML = `\r\n      <div class=\"pc-toast-ico\">${ico}<\/div>\r\n      <div>\r\n        <p class=\"pc-toast-title\">${escapeHtml(title||\"\")}<\/p>\r\n        <p class=\"pc-toast-msg\">${escapeHtml(msg||\"\")}<\/p>\r\n      <\/div>\r\n      <button class=\"pc-toast-x\" type=\"button\" aria-label=\"Fechar\">\u2715<\/button>\r\n    `;\r\n    const close = ()=>{\r\n      tt.style.transition = \"opacity .18s ease, transform .18s ease\";\r\n      tt.style.opacity = \"0\";\r\n      tt.style.transform = \"translateY(-6px)\";\r\n      setTimeout(()=>tt.remove(),200);\r\n    };\r\n    tt.querySelector(\".pc-toast-x\").addEventListener(\"click\", close);\r\n    wrap.appendChild(tt);\r\n    if(duration>0) setTimeout(close, duration);\r\n  }\r\n  function escapeHtml(s){\r\n    return String(s)\r\n      .replaceAll(\"&\",\"&amp;\")\r\n      .replaceAll(\"<\",\"&lt;\")\r\n      .replaceAll(\">\",\"&gt;\")\r\n      .replaceAll('\"',\"&quot;\")\r\n      .replaceAll(\"'\",\"&#039;\");\r\n  }\r\n\r\n  const config = {\r\n    model: null,\r\n    tiers: null,\r\n    voltage: null,\r\n    mounting: null,\r\n    buzzer: null,\r\n    bodyColor: null,\r\n    ledColors: [],\r\n    globe: null\r\n  };\r\n\r\n  const models = [\r\n    { value:'LR4', diameter:'40mm', description:{'pt-br':'Compacto e econ\u00f4mico','en':'Compact and cost-effective'} },\r\n    { value:'LR5', diameter:'50mm', description:{'pt-br':'Equil\u00edbrio perfeito','en':'Perfect balance'} },\r\n    { value:'LR6', diameter:'60mm', description:{'pt-br':'Alta visibilidade','en':'High visibility'} },\r\n    { value:'LR7', diameter:'70mm', description:{'pt-br':'M\u00e1xima visibilidade','en':'Maximum visibility'} }\r\n  ];\r\n\r\n  const voltages = [\r\n    { value:'01', label:'12V DC', onlyModels:['LR5'] },\r\n    { value:'02', label:'24V DC', onlyModels:null },\r\n    { value:'M2', label:'100-240V AC', onlyModels:['LR4','LR6'] }\r\n  ];\r\n\r\n  const mountingOptions = [\r\n    { value:'WJ', name:{'pt-br':'Montagem direta na parede','en':'Direct wall mount'}, description:{'pt-br':'Fia\u00e7\u00e3o direta...','en':'Direct wiring...'} },\r\n    { value:'LJ', name:{'pt-br':'Suporte em L (parede)','en':'L-bracket wall mount'}, description:{'pt-br':'Suporte em L...','en':'L-bracket...'}, onlyModels:['LR4','LR5','LR6'] },\r\n    { value:'PJ', name:{'pt-br':'Montagem em poste','en':'Pole mount'}, description:{'pt-br':'Montagem em poste...','en':'Pole mounting...'}, onlyModels:['LR4','LR5','LR6'] },\r\n    { value:'QJ', name:{'pt-br':'Trilho DIN','en':'DIN rail mount'}, description:{'pt-br':'Apenas LR4 e LR6','en':'LR4 and LR6 only'}, onlyModels:['LR4','LR6'], onlyVoltage:'02' },\r\n    { value:'WC', name:{'pt-br':'Parede com conector','en':'Wall with connector'}, description:{'pt-br':'Com conector...','en':'With connector...'}, onlyModels:['LR5','LR7'] }\r\n  ];\r\n\r\n  const buzzerOptions = [\r\n    { value:'B', label:{'pt-br':'Com Buzzer','en':'With buzzer'}, description:{'pt-br':'Inclui buzzer de 85dB','en':'Includes 85dB buzzer'} },\r\n    { value:'N', label:{'pt-br':'Sem Buzzer','en':'No buzzer'}, description:{'pt-br':'Apenas sinaliza\u00e7\u00e3o visual','en':'Visual signaling only'} }\r\n  ];\r\n\r\n  const bodyColors = [\r\n    { value:'W', label:{'pt-br':'Branco','en':'White'}, color:'#F3F4F6', border:'#D1D5DB' },\r\n    { value:'U', label:{'pt-br':'Cinza Prata','en':'Silver gray'}, color:'#9CA3AF', border:'#6B7280' },\r\n    { value:'K', label:{'pt-br':'Preto','en':'Black'}, color:'#111827', border:'#111827' }\r\n  ];\r\n\r\n  const ledColors = [\r\n    { value:'R', label:{'pt-br':'Vermelho','en':'Red'}, color:'#DC2626' },\r\n    { value:'Y', label:{'pt-br':'Amarelo','en':'Yellow'},  color:'#EAB308' },\r\n    { value:'G', label:{'pt-br':'Verde','en':'Green'},    color:'#16A34A' },\r\n    { value:'B', label:{'pt-br':'Azul','en':'Blue'},     color:'#2563EB' },\r\n    { value:'C', label:{'pt-br':'Branco','en':'White'},   color:'#E5E7EB' }\r\n  ];\r\n\r\n  const globeOptions = [\r\n    { value:'', label:{'pt-br':'Lente Colorida','en':'Colored lens'}, description:{'pt-br':'Lente na cor do LED','en':'Lens matches LED color'}, onlyModels:null },\r\n    { value:'Z', label:{'pt-br':'Lente Transparente','en':'Clear lens'}, description:{'pt-br':'Lente transparente (clear)','en':'Clear lens'}, onlyModels:['LR4','LR6'] }\r\n  ];\r\n\r\n  function getLedColorHex(code){\r\n    const item = ledColors.find(l=>l.value===code);\r\n    return item ? item.color : null;\r\n  }\r\n\r\n  function ensureLedArraySize(){\r\n    if(!Number.isFinite(config.tiers) || config.tiers <= 0){\r\n      config.ledColors = [];\r\n      return;\r\n    }\r\n    const newArr = Array(config.tiers).fill(\"\");\r\n    for(let i=0;i<Math.min(config.tiers, config.ledColors.length);i++){\r\n      newArr[i] = config.ledColors[i] || \"\";\r\n    }\r\n    config.ledColors = newArr;\r\n  }\r\n\r\n  const CART_KEY = \"lp_shinwa_cart_v1\";\r\n  function getCart(){ try { return JSON.parse(localStorage.getItem(CART_KEY) || \"[]\"); } catch(e){ return []; } }\r\n  function setCart(arr){ localStorage.setItem(CART_KEY, JSON.stringify(arr)); }\r\n  function fmtTime(ts){\r\n    try{\r\n      const d = new Date(ts);\r\n      return d.toLocaleString(undefined, { day:\"2-digit\", month:\"2-digit\", year:\"numeric\", hour:\"2-digit\", minute:\"2-digit\" });\r\n    } catch(e){ return \"\"; }\r\n  }\r\n\r\n  function normalizeQty(value){\r\n    const n = Number(value);\r\n    if(!Number.isFinite(n) || n <= 0) return 1;\r\n    return Math.max(1, Math.floor(n));\r\n  }\r\n\r\n  function getCartTotalQty(){\r\n    return getCart().reduce((sum, item)=> sum + normalizeQty(item && item.qty), 0);\r\n  }\r\n\r\n  function updateBadge(){\r\n    const badge = $(\"#pcCartBadge\");\r\n    if(badge) badge.textContent = String(getCartTotalQty());\r\n  }\r\n\r\n  function renderCart(){\r\n    const host = $(\"#pcCartList\");\r\n    if(!host) return;\r\n\r\n    const cart = getCart();\r\n    if(!cart.length){\r\n      host.innerHTML = `<p class=\"pc-cart-empty\">${escapeHtml(t(\"pc.cartEmpty\"))}<\/p>`;\r\n      updateBadge();\r\n      return;\r\n    }\r\n\r\n    host.innerHTML = cart.map((item, idx)=>`\r\n      <div class=\"pc-cart-item\">\r\n        <div class=\"pc-cart-meta\">\r\n          <div class=\"pc-cart-code\">${escapeHtml(item.part || \"\")}<\/div>\r\n          <div class=\"pc-cart-qty\">${escapeHtml(t(\"pc.qtyShort\"))}: ${normalizeQty(item.qty)}<\/div>\r\n          <div class=\"pc-cart-time\">${escapeHtml(item.product || \"PATLITE LR\")} \u2022 ${escapeHtml(fmtTime(item.ts))}<\/div>\r\n        <\/div>\r\n        <button class=\"pc-cart-remove\" type=\"button\" data-idx=\"${idx}\" title=\"${escapeHtml(t(\"pc.removeItem\"))}\" aria-label=\"${escapeHtml(t(\"pc.removeItem\"))}\">\ud83d\uddd1\ufe0f<\/button>\r\n      <\/div>\r\n    `).join(\"\");\r\n\r\n    host.querySelectorAll(\".pc-cart-remove\").forEach(btn=>{\r\n      btn.addEventListener(\"click\", ()=>{\r\n        const i = Number(btn.dataset.idx);\r\n        const cart2 = getCart();\r\n        cart2.splice(i,1);\r\n        setCart(cart2);\r\n        renderCart();\r\n        window.dispatchEvent(new CustomEvent(\"lpCartUpdated\"));\r\n        toast(\"ok\", t(\"toast.removedTitle\"), t(\"toast.removedMsg\"));\r\n      });\r\n    });\r\n\r\n    updateBadge();\r\n  }\r\n\r\n  function openCart(){ $(\"#pcCartOverlay\")?.classList.add(\"open\"); $(\"#pcCartDrawer\")?.classList.add(\"open\"); }\r\n  function closeCart(){ $(\"#pcCartOverlay\")?.classList.remove(\"open\"); $(\"#pcCartDrawer\")?.classList.remove(\"open\"); }\r\n\r\n  function addToCart(part, product, qty){\r\n    if(!part) return;\r\n    const safeQty = normalizeQty(qty);\r\n    const cart = getCart();\r\n    const safeProduct = product || \"PATLITE LR\";\r\n    const existing = cart.find(item => (item.part || \"\") === part && (item.product || \"\") === safeProduct);\r\n\r\n    if(existing){\r\n      existing.qty = normalizeQty(existing.qty) + safeQty;\r\n      existing.ts = Date.now();\r\n    } else {\r\n      cart.push({ part, product: safeProduct, qty: safeQty, ts: Date.now() });\r\n    }\r\n\r\n    setCart(cart);\r\n    renderCart();\r\n    window.dispatchEvent(new CustomEvent(\"lpCartUpdated\"));\r\n  }\r\n\r\n  function clearCart(){\r\n    setCart([]);\r\n    renderCart();\r\n    window.dispatchEvent(new CustomEvent(\"lpCartUpdated\"));\r\n  }\r\n\r\n  window.lpCartAddItem = function(part, product, qty){\r\n    if(!part) return;\r\n    addToCart(part, product || \"Produto\", qty);\r\n  };\r\n\r\n  const WPFORMS_FORM_ID = 512;\r\n  const WPFORMS_MESSAGE_FIELD_ID = 9;\r\n\r\n  function getWpMessageField(){\r\n    return document.querySelector(`#wpforms-${WPFORMS_FORM_ID}-field_${WPFORMS_MESSAGE_FIELD_ID}`);\r\n  }\r\n\r\n  function buildCartMessage(){\r\n  const cart = getCart();\r\n\r\n  const lang = getLang();\r\n  const isEn = lang === \"en\" || lang === \"en-us\" || lang === \"en_us\";\r\n\r\n  const intro = isEn\r\n    ? `Hello! Below is my request for a quote:\\n\\n`\r\n    : `Ol\u00e1! Segue abaixo o meu pedido para or\u00e7amento:\\n\\n`;\r\n\r\n  if(!cart.length){\r\n    return intro + (isEn ? \"(Empty cart)\" : \"(Carrinho vazio)\");\r\n  }\r\n\r\n  const qtyLabel = isEn ? \"Qty\" : \"Qtd\";\r\n\r\n  const items = cart.map((x, i) => {\r\n    const qty = Number(x.qty ?? x.quantity ?? x.qtd ?? 1) || 1;\r\n    const part = x.part || \"-\";\r\n    const product = x.product || \"PATLITE LR\";\r\n    return `${i + 1}. ${part} \u2014 ${product} \u2014 ${qtyLabel}: ${qty}`;\r\n  }).join(\"\\n\");\r\n\r\n  return intro + items;\r\n}\r\n\r\n  function fillWpMessage(text){\r\n    const ta = getWpMessageField();\r\n    if(!ta) return false;\r\n    ta.value = text;\r\n    ta.dispatchEvent(new Event(\"input\", { bubbles:true }));\r\n    ta.dispatchEvent(new Event(\"change\", { bubbles:true }));\r\n    return true;\r\n  }\r\n\r\n  function scrollToQuoteForm(){\r\n    const formEl = document.querySelector(`#wpforms-${WPFORMS_FORM_ID}`);\r\n    if(formEl){ formEl.scrollIntoView({ behavior: \"smooth\", block: \"start\" }); return; }\r\n    const anchor = document.querySelector(\"#quote-form\");\r\n    if(anchor){ anchor.scrollIntoView({ behavior: \"smooth\", block: \"start\" }); return; }\r\n    location.hash = \"#quote-form\";\r\n  }\r\n\r\n  function resetConfig(){\r\n    config.model = null;\r\n    config.tiers = null;\r\n    config.voltage = null;\r\n    config.mounting = null;\r\n    config.buzzer = null;\r\n    config.bodyColor = null;\r\n    config.globe = null;\r\n    config.ledColors = [];\r\n\r\n    const slider = $(\"#pcTierSlider\");\r\n    if(slider) slider.value = 3;\r\n    const qtyInput = $(\"#pcQtyInput\");\r\n    if(qtyInput) qtyInput.value = 1;\r\n    refreshAll();\r\n  }\r\n\r\n  function isVoltageAllowedForModel(voltageValue, model){\r\n    const v = voltages.find(x=>x.value===voltageValue);\r\n    if(!v) return false;\r\n    if(!model) return false;\r\n    if(!v.onlyModels) return true;\r\n    return v.onlyModels.includes(model);\r\n  }\r\n\r\n  function isMountingAllowed(model, voltage, mountingValue){\r\n    const o = mountingOptions.find(x=>x.value===mountingValue);\r\n    if(!o) return false;\r\n    if(!model) return false;\r\n\r\n    if(o.onlyModels && !o.onlyModels.includes(model)) return false;\r\n    if(o.onlyVoltage && voltage !== o.onlyVoltage) return false;\r\n\r\n    if(model === \"LR6\" && voltage === \"M2\"){\r\n      return (mountingValue === \"WJ\" || mountingValue === \"LJ\" || mountingValue === \"PJ\");\r\n    }\r\n\r\n    return true;\r\n  }\r\n\r\n  function isGlobeAllowed(model, globeValue){\r\n    if(globeValue === \"\") return true;\r\n    if(!model) return false;\r\n    return (model === \"LR4\" || model === \"LR6\");\r\n}\r\n\r\n  function sanitizeAfterRuleChanges(){\r\n    if(config.voltage && !isVoltageAllowedForModel(config.voltage, config.model)){\r\n    config.voltage = null;\r\n  }\r\n\r\n    if(config.mounting && !isMountingAllowed(config.model, config.voltage, config.mounting)){\r\n    config.mounting = null;\r\n  }\r\n\r\n    if(config.globe !== null && !isGlobeAllowed(config.model, config.globe)){\r\n    config.globe = null;\r\n  }\r\n}\r\n\r\n  function renderModels(){\r\n    const host = $(\"#pcModelGrid\");\r\n    if(!host) return;\r\n    host.innerHTML = \"\";\r\n    const lang = getLang();\r\n\r\n    models.forEach(m=>{\r\n      const div = document.createElement(\"div\");\r\n      div.className = \"pc-opt\";\r\n      div.innerHTML = `\r\n        <div class=\"pc-opt-top\">\r\n          <div class=\"pc-opt-title\">${escapeHtml(m.value)}<\/div>\r\n          <div class=\"pc-code\">${escapeHtml(m.diameter)}<\/div>\r\n        <\/div>\r\n        <div class=\"pc-opt-sub\">${escapeHtml(m.description[lang] || m.description[\"pt-br\"])}<\/div>\r\n      `;\r\n      div.addEventListener(\"click\", ()=>{\r\n        config.model = (config.model === m.value) ? null : m.value;\r\n\r\n        if(!config.model){\r\n          config.voltage = null;\r\n          config.mounting = null;\r\n          config.globe = null;\r\n        }\r\n\r\n        sanitizeAfterRuleChanges();\r\n        refreshAll();\r\n      });\r\n      host.appendChild(div);\r\n    });\r\n  }\r\n\r\n  function renderVoltages(){\r\n    const host = $(\"#pcVoltageList\");\r\n    if(!host) return;\r\n    host.innerHTML = \"\";\r\n\r\n    voltages.forEach(v=>{\r\n      const disabled = !isVoltageAllowedForModel(v.value, config.model);\r\n      const wrap = document.createElement(\"div\");\r\n      wrap.className = \"pc-opt\" + (disabled ? \" is-disabled\" : \"\");\r\n      wrap.innerHTML = `\r\n        <div class=\"pc-opt-top\">\r\n          <div class=\"pc-opt-title\">${escapeHtml(v.label)}<\/div>\r\n          <div class=\"pc-code\">${escapeHtml(v.value)}<\/div>\r\n        <\/div>\r\n        <div class=\"pc-opt-sub\">${escapeHtml(disabled ? t(\"pc.unavailable\") : t(\"pc.available\"))}<\/div>\r\n      `;\r\n      if(!disabled){\r\n        wrap.addEventListener(\"click\", ()=>{\r\n          config.voltage = (config.voltage === v.value) ? null : v.value;\r\n          sanitizeAfterRuleChanges();\r\n          refreshAll();\r\n        });\r\n      }\r\n      host.appendChild(wrap);\r\n    });\r\n  }\r\n\r\n  function renderMounting(){\r\n    const host = $(\"#pcMountingList\");\r\n    if(!host) return;\r\n    host.innerHTML = \"\";\r\n    const lang = getLang();\r\n\r\n    mountingOptions.forEach(o=>{\r\n      let disabled = false;\r\n      let reasonVoltage = false;\r\n\r\n      if(!config.model){\r\n        disabled = true;\r\n      } else {\r\n        if(o.onlyModels && !o.onlyModels.includes(config.model)){\r\n          disabled = true;\r\n        }\r\n\r\n        if(!disabled && o.onlyVoltage && config.voltage && config.voltage !== o.onlyVoltage){\r\n          disabled = true;\r\n          reasonVoltage = true;\r\n        }\r\n\r\n        if(!disabled && o.onlyVoltage && !config.voltage){\r\n          disabled = true;\r\n        }\r\n\r\n        if(!disabled && config.model === \"LR6\" && config.voltage === \"M2\"){\r\n          if(!(o.value === \"WJ\" || o.value === \"LJ\" || o.value === \"PJ\")){\r\n            disabled = true;\r\n            reasonVoltage = true;\r\n          }\r\n        }\r\n\r\n        if(!disabled && !isMountingAllowed(config.model, config.voltage, o.value)){\r\n          disabled = true;\r\n        }\r\n      }\r\n\r\n      const title = (o.name && (o.name[lang] || o.name[\"pt-br\"])) || \"\";\r\n      const baseDesc = (o.description && (o.description[lang] || o.description[\"pt-br\"])) || \"\";\r\n\r\n      const sub = disabled\r\n        ? (reasonVoltage ? t(\"pc.unavailableForVoltage\") : (baseDesc + t(\"pc.unavailableSuffix\")))\r\n        : baseDesc;\r\n\r\n      const wrap = document.createElement(\"div\");\r\n      wrap.className = \"pc-opt\" + (disabled ? \" is-disabled\" : \"\");\r\n      wrap.innerHTML = `\r\n        <div class=\"pc-opt-top\">\r\n          <div class=\"pc-opt-title\">${escapeHtml(title)}<\/div>\r\n          <div class=\"pc-code\">${escapeHtml(o.value)}<\/div>\r\n        <\/div>\r\n        <div class=\"pc-opt-sub\">${escapeHtml(sub)}<\/div>\r\n      `;\r\n\r\n      if(!disabled){\r\n        wrap.addEventListener(\"click\", ()=>{\r\n          config.mounting = (config.mounting === o.value) ? null : o.value;\r\n          refreshAll();\r\n        });\r\n      }\r\n      host.appendChild(wrap);\r\n    });\r\n  }\r\n\r\n  function renderBuzzer(){\r\n    const host = $(\"#pcBuzzerGrid\");\r\n    if(!host) return;\r\n    host.innerHTML = \"\";\r\n    const lang = getLang();\r\n\r\n    buzzerOptions.forEach(b=>{\r\n      const wrap = document.createElement(\"div\");\r\n      wrap.className = \"pc-opt\";\r\n      wrap.innerHTML = `\r\n        <div class=\"pc-opt-top\">\r\n          <div class=\"pc-opt-title\">${escapeHtml(b.label[lang] || b.label[\"pt-br\"])}<\/div>\r\n          <div class=\"pc-code\">${escapeHtml(b.value)}<\/div>\r\n        <\/div>\r\n        <div class=\"pc-opt-sub\">${escapeHtml(b.description[lang] || b.description[\"pt-br\"])}<\/div>\r\n      `;\r\n      wrap.addEventListener(\"click\", ()=>{\r\n        config.buzzer = (config.buzzer === b.value) ? null : b.value;\r\n        refreshAll();\r\n      });\r\n      host.appendChild(wrap);\r\n    });\r\n  }\r\n\r\n  function renderBody(){\r\n    const host = $(\"#pcBodyGrid\");\r\n    if(!host) return;\r\n    host.innerHTML = \"\";\r\n    const lang = getLang();\r\n\r\n    bodyColors.forEach(c=>{\r\n      const wrap = document.createElement(\"div\");\r\n      wrap.className = \"pc-opt\";\r\n      wrap.innerHTML = `\r\n        <div class=\"pc-opt-top\">\r\n          <div class=\"pc-opt-title\">${escapeHtml(c.label[lang] || c.label[\"pt-br\"])}<\/div>\r\n          <div class=\"pc-code\">${escapeHtml(c.value)}<\/div>\r\n        <\/div>\r\n        <div class=\"pc-opt-sub\">\r\n          <span style=\"display:inline-flex;align-items:center;gap:8px;\">\r\n            <span style=\"width:14px;height:14px;border-radius:999px;background:${c.color};border:1px solid ${c.border};display:inline-block;\"><\/span>\r\n            ${escapeHtml(t(\"pc.bodyHint\"))}\r\n          <\/span>\r\n        <\/div>\r\n      `;\r\n      wrap.addEventListener(\"click\", ()=>{\r\n        config.bodyColor = (config.bodyColor === c.value) ? null : c.value;\r\n        refreshAll();\r\n      });\r\n      host.appendChild(wrap);\r\n    });\r\n  }\r\n\r\n  function renderGlobe(){\r\n    const host = $(\"#pcGlobeGrid\");\r\n    if(!host) return;\r\n    host.innerHTML = \"\";\r\n    const lang = getLang();\r\n\r\n    globeOptions.forEach(g=>{\r\n      const disabled = !isGlobeAllowed(config.model, g.value);\r\n      const wrap = document.createElement(\"div\");\r\n      wrap.className = \"pc-opt\" + (disabled ? \" is-disabled\" : \"\");\r\n      wrap.innerHTML = `\r\n        <div class=\"pc-opt-top\">\r\n          <div class=\"pc-opt-title\">${escapeHtml(g.label[lang] || g.label[\"pt-br\"])}<\/div>\r\n          <div class=\"pc-code\">${g.value===\"\" ? \"\u2014\" : escapeHtml(g.value)}<\/div>\r\n        <\/div>\r\n        <div class=\"pc-opt-sub\">${escapeHtml(disabled ? t(\"pc.unavailable\") : (g.description[lang] || g.description[\"pt-br\"]))}<\/div>\r\n      `;\r\n      if(!disabled){\r\n        wrap.addEventListener(\"click\", ()=>{\r\n          const next = (config.globe === g.value) ? null : g.value;\r\n          config.globe = next;\r\n          refreshAll();\r\n        });\r\n      }\r\n      host.appendChild(wrap);\r\n    });\r\n  }\r\n\r\n  function renderLedStep(){\r\n    const host = $(\"#pcLedStep\");\r\n    if(!host) return;\r\n\r\n    if(!Number.isFinite(config.tiers)){\r\n      host.innerHTML = `<div style=\"color:#6B7280;font-size:12px;padding:6px 0\">${escapeHtml(t(\"pc.ledHint\"))}<\/div>`;\r\n      return;\r\n    }\r\n\r\n    const lang = getLang();\r\n    host.innerHTML = \"\";\r\n    for(let i=0;i<config.tiers;i++){\r\n      const card = document.createElement(\"div\");\r\n      card.className = \"pc-led-card\";\r\n      const dotColor = getLedColorHex(config.ledColors[i]) || \"#E5E7EB\";\r\n      card.innerHTML = `\r\n        <div class=\"pc-led-head\">\r\n          <div class=\"pc-led-label\">${escapeHtml(t(\"pc.ledModule\").replace(\"{n}\", String(i+1)))}<\/div>\r\n          <div class=\"pc-led-dot\" style=\"background:${dotColor}\"><\/div>\r\n        <\/div>\r\n        <select class=\"pc-led-select\" data-idx=\"${i}\">\r\n          <option value=\"\">${escapeHtml(t(\"pc.select\"))}<\/option>\r\n          ${ledColors.map(l=>`<option value=\"${l.value}\">${escapeHtml(l.label[lang] || l.label[\"pt-br\"])}<\/option>`).join(\"\")}\r\n        <\/select>\r\n      `;\r\n      host.appendChild(card);\r\n    }\r\n\r\n    host.querySelectorAll(\"select\").forEach(sel=>{\r\n      const idx = Number(sel.dataset.idx);\r\n      sel.value = config.ledColors[idx] || \"\";\r\n      sel.addEventListener(\"change\", ()=>{\r\n        config.ledColors[idx] = sel.value;\r\n        refreshAll();\r\n      });\r\n    });\r\n  }\r\n\r\n  function renderPreviewTower(){\r\n    const modulesHost = $(\"#pcModules\");\r\n    if(!modulesHost) return;\r\n    modulesHost.innerHTML = \"\";\r\n\r\n    const tiers = Number.isFinite(config.tiers) ? config.tiers : 0;\r\n\r\n    for(let i=0;i<tiers;i++){\r\n      const m = document.createElement(\"div\");\r\n      m.className = \"pc-module\";\r\n      const code = config.ledColors[i];\r\n      if(code){\r\n        m.classList.add(\"is-on\");\r\n        const hex = getLedColorHex(code);\r\n        m.style.background = hex ? `linear-gradient(180deg, rgba(255,255,255,.20), rgba(0,0,0,0)), ${hex}` : \"\";\r\n        m.style.border = \"2px solid rgba(255,255,255,.55)\";\r\n      } else {\r\n        m.style.background = \"rgba(255,255,255,.45)\";\r\n      }\r\n      modulesHost.appendChild(m);\r\n    }\r\n\r\n    const buzzer = $(\"#pcBuzzer\");\r\n    if(buzzer) buzzer.style.display = (config.buzzer === \"B\") ? \"flex\" : \"none\";\r\n\r\n    const base = $(\"#pcBase\");\r\n    if(base){\r\n      const body = bodyColors.find(b=>b.value===config.bodyColor);\r\n      if(body){\r\n        base.style.background = body.color;\r\n        base.style.border = `1px solid ${body.border}`;\r\n      } else {\r\n        base.style.background = \"#E5E7EB\";\r\n        base.style.border = \"none\";\r\n      }\r\n    }\r\n  }\r\n\r\n  function generatePartNumber(){\r\n    const { model, tiers, voltage, mounting, buzzer, bodyColor, ledColors: leds, globe } = config;\r\n\r\n    if(!model || !Number.isFinite(tiers) || !voltage || !mounting || !buzzer || !bodyColor){\r\n      return t(\"pc.partIncomplete\");\r\n    }\r\n    if(!leds.slice(0,tiers).every(c=>c !== \"\")){\r\n      return t(\"pc.partNeedLeds\");\r\n    }\r\n    if(globe === null){\r\n      return t(\"pc.partNeedLens\");\r\n    }\r\n\r\n    const ledCode = leds.slice(0,tiers).join(\"\");\r\n    const globeCode = globe || \"\";\r\n    return `${model}-${tiers}${voltage}${mounting}${buzzer}${bodyColor}-${ledCode}${globeCode}`;\r\n  }\r\n\r\n  function updatePartNumber(){\r\n    const part = generatePartNumber();\r\n    const partEl = $(\"#pcPartNumber\");\r\n    partEl.textContent = part;\r\n\r\n    $(\"#pcHiddenPart\").value =\r\n      (part === t(\"pc.partIncomplete\") || part === t(\"pc.partNeedLeds\") || part === t(\"pc.partNeedLens\"))\r\n      ? \"\"\r\n      : part;\r\n  }\r\n\r\n  function canProceed(stepIndex){\r\n    switch(stepIndex){\r\n      case 1: return !!config.model;\r\n      case 2: return Number.isFinite(config.tiers);\r\n      case 3: return !!config.voltage;\r\n      case 4: return !!config.mounting;\r\n      case 5: return !!config.buzzer;\r\n      case 6: return !!config.bodyColor;\r\n      case 7: return Number.isFinite(config.tiers) && config.ledColors.slice(0,config.tiers).every(c=>c !== \"\");\r\n      case 8: return config.globe !== null;\r\n      default: return false;\r\n    }\r\n  }\r\n\r\n  function updateProgress(){\r\n    const completed = [1,2,3,4,5,6,7,8].filter(canProceed).length;\r\n    $(\"#pcCompleted\").textContent = completed;\r\n\r\n    const pct = Math.round((completed \/ 8) * 100);\r\n    const bar = $(\"#pcProgressBar\");\r\n    bar.style.width = pct + \"%\";\r\n    bar.style.background = (completed === 8) ? \"#16A34A\" : \"#2563EB\";\r\n\r\n    for(let i=1;i<=8;i++){\r\n      const el = $(\"#st\"+i);\r\n      if(!el) continue;\r\n      const done = canProceed(i);\r\n      el.classList.toggle(\"is-done\", done);\r\n      el.textContent = done ? \"\u2713\" : \"\";\r\n    }\r\n  }\r\n\r\n  function setActiveByValue(containerSel, value){\r\n    if(value === null || value === undefined) return;\r\n    document.querySelectorAll(containerSel+\" .pc-opt\").forEach(c=>{\r\n      const code = c.querySelector(\".pc-code\")?.textContent?.trim();\r\n      const title = c.querySelector(\".pc-opt-title\")?.textContent?.trim();\r\n      if(code === value || title === value){\r\n        c.classList.add(\"is-active\");\r\n      }\r\n    });\r\n  }\r\n\r\n  function markActiveOptions(){\r\n    [\"#pcModelGrid\",\"#pcVoltageList\",\"#pcMountingList\",\"#pcBuzzerGrid\",\"#pcBodyGrid\",\"#pcGlobeGrid\"].forEach(sel=>{\r\n      document.querySelectorAll(sel+\" .pc-opt\").forEach(x=>x.classList.remove(\"is-active\"));\r\n    });\r\n\r\n    setActiveByValue(\"#pcModelGrid\", config.model);\r\n    setActiveByValue(\"#pcVoltageList\", config.voltage);\r\n    setActiveByValue(\"#pcMountingList\", config.mounting);\r\n    setActiveByValue(\"#pcBuzzerGrid\", config.buzzer);\r\n    setActiveByValue(\"#pcBodyGrid\", config.bodyColor);\r\n\r\n    if(config.globe !== null){\r\n      const cards = document.querySelectorAll(\"#pcGlobeGrid .pc-opt\");\r\n      if(cards[0] && config.globe === \"\") cards[0].classList.add(\"is-active\");\r\n      if(cards[1] && config.globe === \"Z\") cards[1].classList.add(\"is-active\");\r\n    }\r\n  }\r\n\r\n  function updateInfo(){\r\n    $(\"#pcInfoModel\").textContent = config.model || \"-\";\r\n    $(\"#pcInfoTiers\").textContent = Number.isFinite(config.tiers) ? String(config.tiers) : \"-\";\r\n\r\n    const v = voltages.find(x=>x.value===config.voltage);\r\n    $(\"#pcInfoVoltage\").textContent = v ? v.label : \"-\";\r\n\r\n    $(\"#pcInfoMounting\").textContent = config.mounting || \"-\";\r\n    $(\"#pcTierNum\").textContent = Number.isFinite(config.tiers) ? String(config.tiers) : \"-\";\r\n  }\r\n\r\n  function refreshAll(){\r\n  sanitizeAfterRuleChanges();\r\n  ensureLedArraySize();\r\n\r\n  renderModels();\r\n  renderVoltages();\r\n  renderMounting();\r\n  renderBuzzer();\r\n  renderBody();\r\n  renderGlobe();\r\n  renderLedStep();\r\n\r\n  renderPreviewTower();\r\n  updateInfo();\r\n  markActiveOptions();\r\n  updatePartNumber();\r\n  updateProgress();\r\n  applyI18n();\r\n}\r\n\r\n  function init(){\r\n    renderModels();\r\n    renderBuzzer();\r\n    renderBody();\r\n    renderGlobe();\r\n\r\n    const slider = $(\"#pcTierSlider\");\r\n    slider.value = 3;\r\n    config.tiers = null;\r\n\r\n    const qtyInput = $(\"#pcQtyInput\");\r\n    if(qtyInput){\r\n      qtyInput.value = \"1\";\r\n      const sanitizeQtyInput = ()=>{ qtyInput.value = String(normalizeQty(qtyInput.value)); };\r\n      qtyInput.addEventListener(\"change\", sanitizeQtyInput);\r\n      qtyInput.addEventListener(\"blur\", sanitizeQtyInput);\r\n    }\r\n\r\n    slider.addEventListener(\"input\", ()=>{\r\n      config.tiers = Number(slider.value);\r\n      refreshAll();\r\n    });\r\n\r\n    $(\"#pcCartFab\").addEventListener(\"click\", ()=>{ renderCart(); openCart(); });\r\n    $(\"#pcCartClose\").addEventListener(\"click\", closeCart);\r\n    $(\"#pcCartOverlay\").addEventListener(\"click\", closeCart);\r\n\r\n    $(\"#pcCartClear\").addEventListener(\"click\", ()=>{\r\n      clearCart();\r\n      toast(\"ok\", t(\"toast.clearedTitle\"), t(\"toast.clearedMsg\"));\r\n    });\r\n\r\n    $(\"#pcCartSend\").addEventListener(\"click\", ()=>{\r\n      const cart = getCart();\r\n      if(!cart.length){\r\n        toast(\"warn\", t(\"toast.emptyTitle\"), t(\"toast.emptyMsg\"));\r\n        return;\r\n      }\r\n      const text = buildCartMessage();\r\n      const ok = fillWpMessage(text);\r\n      closeCart();\r\n      scrollToQuoteForm();\r\n\r\n      if(!ok){\r\n        toast(\"err\", t(\"toast.formNotFoundTitle\"), t(\"toast.formNotFoundMsg\"));\r\n        return;\r\n      }\r\n      toast(\"ok\", t(\"toast.insertedTitle\"), t(\"toast.insertedMsg\"));\r\n    });\r\n\r\n    $(\"#pcQuoteBtn\").addEventListener(\"click\", ()=>{\r\n      const part = $(\"#pcHiddenPart\").value;\r\n      const qtyInput = $(\"#pcQtyInput\");\r\n      const qtyValue = qtyInput ? Number(qtyInput.value) : 1;\r\n\r\n      if(!part){\r\n        toast(\"warn\", t(\"toast.incompleteTitle\"), t(\"toast.incompleteMsg\"));\r\n        return;\r\n      }\r\n      if(!Number.isFinite(qtyValue) || qtyValue <= 0){\r\n        toast(\"warn\", t(\"toast.invalidQtyTitle\"), t(\"toast.invalidQtyMsg\"));\r\n        return;\r\n      }\r\n\r\n      addToCart(part, \"PATLITE LR\", qtyValue);\r\n      openCart();\r\n      toast(\"ok\", t(\"toast.addedTitle\"), t(\"toast.addedMsg\"));\r\n      resetConfig();\r\n    });\r\n\r\n    window.addEventListener(\"lpCartUpdated\", ()=>{\r\n      updateBadge();\r\n      if($(\"#pcCartDrawer\").classList.contains(\"open\")) renderCart();\r\n    });\r\n\r\n    updateBadge();\r\n    renderCart();\r\n    refreshAll();\r\n  }\r\n\r\n  if(document.readyState === \"loading\"){\r\n    document.addEventListener(\"DOMContentLoaded\", init, { once:true });\r\n  } else {\r\n    init();\r\n  }\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-bb6965b e-flex e-con-boxed e-con e-parent\" data-id=\"bb6965b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7d38a51 elementor-widget elementor-widget-html\" data-id=\"7d38a51\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t\r\n<section class=\"shinwa-sksfsl-config\" id=\"shinwa-sksfsl-config\" data-skcfg-root>\r\n  <div class=\"skcfg-wrap\">\r\n\r\n    <div class=\"skcfg-head\">\r\n      <span class=\"skcfg-badge\" data-translate=\"skcfg.badge\">PATLITE<\/span>\r\n      <h2 class=\"skcfg-title\" data-translate=\"skcfg.title\">Configurador SK \/ SF \/ SL Series<\/h2>\r\n      <p class=\"skcfg-sub\" data-translate=\"skcfg.sub\">\r\n        Selecione a s\u00e9rie, escolha os atributos e gere automaticamente o part number para adicionar ao carrinho.\r\n      <\/p>\r\n    <\/div>\r\n\r\n    <div class=\"skcfg-grid\">\r\n\r\n      <article class=\"skcfg-card skcfg-previewCard\">\r\n        <div class=\"skcfg-previewTop\">\r\n          <div class=\"skcfg-previewBadge\" id=\"skcfgSeriesBadge\">SK<\/div>\r\n          <div>\r\n            <h3 class=\"skcfg-previewTitle\" id=\"skcfgSeriesTitle\">SK Series<\/h3>\r\n            <p class=\"skcfg-previewDesc\" id=\"skcfgSeriesDesc\">\r\n              Sinalizador rotativo com motor interno e alta visibilidade.\r\n            <\/p>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"skcfg-videoBox\" id=\"skcfgVideoBox\"><\/div>\r\n\r\n        <div class=\"skcfg-summary\">\r\n          <div class=\"skcfg-summaryRow\">\r\n            <span class=\"skcfg-summaryK\" data-translate=\"skcfg.summary.series\">S\u00e9rie<\/span>\r\n            <span class=\"skcfg-summaryV\" id=\"skcfgSummarySeries\">SK<\/span>\r\n          <\/div>\r\n          <div class=\"skcfg-summaryRow\">\r\n            <span class=\"skcfg-summaryK\" data-translate=\"skcfg.summary.part\">Part Number<\/span>\r\n            <span class=\"skcfg-summaryV skcfg-part\" id=\"skcfgPart\">\u2014<\/span>\r\n          <\/div>\r\n          <div class=\"skcfg-summaryRow\">\r\n            <span class=\"skcfg-summaryK\" data-translate=\"skcfg.summary.qty\">Quantidade<\/span>\r\n            <span class=\"skcfg-summaryV\" id=\"skcfgQtyLabel\">1<\/span>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"skcfg-qtyBox\">\r\n          <label class=\"skcfg-fieldLabel\" for=\"skcfgQty\" data-translate=\"skcfg.qtyLabel\">Quantidade<\/label>\r\n          <div class=\"skcfg-qtyCtrl\">\r\n            <button type=\"button\" class=\"skcfg-qtyBtn\" id=\"skcfgQtyMinus\" aria-label=\"Decrease quantity\">\u2212<\/button>\r\n            <input id=\"skcfgQty\" class=\"skcfg-qtyInput\" type=\"number\" min=\"1\" max=\"999\" value=\"1\" inputmode=\"numeric\">\r\n            <button type=\"button\" class=\"skcfg-qtyBtn\" id=\"skcfgQtyPlus\" aria-label=\"Increase quantity\">+<\/button>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <button type=\"button\" class=\"skcfg-addBtn\" id=\"skcfgAddBtn\" data-i18n-aria=\"skcfg.addBtnAria\">\r\n          <span class=\"skcfg-addBtnIcon\" aria-hidden=\"true\">\r\n            <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n              <path d=\"M6 6h15l-1.6 8.1a2 2 0 0 1-2 1.6H9.1a2 2 0 0 1-2-1.6L5.3 3.9A1.5 1.5 0 0 0 3.8 3H2\"\r\n                    stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\r\n              <path d=\"M9.5 20a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z\" fill=\"white\"\/>\r\n              <path d=\"M17.5 20a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z\" fill=\"white\"\/>\r\n            <\/svg>\r\n          <\/span>\r\n          <span data-translate=\"skcfg.addToCart\">Adicionar ao carrinho<\/span>\r\n        <\/button>\r\n      <\/article>\r\n\r\n      <article class=\"skcfg-card skcfg-configCard\">\r\n        <div class=\"skcfg-step\">\r\n          <label class=\"skcfg-fieldLabel\" data-translate=\"skcfg.seriesLabel\">S\u00e9rie<\/label>\r\n          <div class=\"skcfg-seriesTabs\" id=\"skcfgSeriesTabs\">\r\n            <button type=\"button\" class=\"skcfg-seriesTab active\" data-series=\"SK\">SK<\/button>\r\n            <button type=\"button\" class=\"skcfg-seriesTab\" data-series=\"SF\">SF<\/button>\r\n            <button type=\"button\" class=\"skcfg-seriesTab\" data-series=\"SL\">SL<\/button>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"skcfg-formGrid\">\r\n          <div class=\"skcfg-step\">\r\n            <label class=\"skcfg-fieldLabel\" for=\"skcfgDiameter\" data-translate=\"skcfg.diameterLabel\">Di\u00e2metro<\/label>\r\n            <select id=\"skcfgDiameter\" class=\"skcfg-select\"><\/select>\r\n          <\/div>\r\n\r\n          <div class=\"skcfg-step\">\r\n            <label class=\"skcfg-fieldLabel\" for=\"skcfgVoltage\" data-translate=\"skcfg.voltageLabel\">Tens\u00e3o \/ Alimenta\u00e7\u00e3o<\/label>\r\n            <select id=\"skcfgVoltage\" class=\"skcfg-select\"><\/select>\r\n          <\/div>\r\n\r\n          <div class=\"skcfg-step\" id=\"skcfgConnWrap\">\r\n            <label class=\"skcfg-fieldLabel\" for=\"skcfgConn\" id=\"skcfgConnLabel\" data-translate=\"skcfg.connLabelSk\">Conex\u00e3o \/ montagem<\/label>\r\n            <select id=\"skcfgConn\" class=\"skcfg-select\"><\/select>\r\n          <\/div>\r\n\r\n          <div class=\"skcfg-step\" id=\"skcfgSoundWrap\">\r\n            <label class=\"skcfg-fieldLabel\" for=\"skcfgSound\" data-translate=\"skcfg.soundLabel\">Som<\/label>\r\n            <select id=\"skcfgSound\" class=\"skcfg-select\"><\/select>\r\n          <\/div>\r\n\r\n          <div class=\"skcfg-step\">\r\n            <label class=\"skcfg-fieldLabel\" for=\"skcfgColor\" data-translate=\"skcfg.colorLabel\">Cor<\/label>\r\n            <select id=\"skcfgColor\" class=\"skcfg-select\"><\/select>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"skcfg-noteBox\" id=\"skcfgNoteBox\"><\/div>\r\n        <div class=\"skcfg-infoPanel\" id=\"skcfgInfoPanel\"><\/div>\r\n      <\/article>\r\n\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<style>\r\n  [data-skcfg-root], [data-skcfg-root] *{ box-sizing:border-box; }\r\n\r\n  .shinwa-sksfsl-config{\r\n    padding:80px 16px;\r\n    background:transparent !important;\r\n    position:relative;\r\n  }\r\n\r\n  .skcfg-wrap{\r\n    max-width:1280px;\r\n    margin:0 auto;\r\n    font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;\r\n    color:#111827;\r\n  }\r\n\r\n  .skcfg-head{\r\n    max-width:860px;\r\n    margin:0 auto 28px;\r\n    text-align:center;\r\n  }\r\n\r\n  .skcfg-badge{\r\n    display:inline-flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    padding:8px 12px;\r\n    border-radius:999px;\r\n    background:#eff6ff;\r\n    border:1px solid #bfdbfe;\r\n    color:#1d4ed8;\r\n    font-size:12px;\r\n    font-weight:800;\r\n    letter-spacing:.08em;\r\n    text-transform:uppercase;\r\n    margin-bottom:14px;\r\n  }\r\n\r\n  .skcfg-title{\r\n    margin:0 0 12px;\r\n    font-size:38px;\r\n    line-height:1.08;\r\n    font-weight:900;\r\n    letter-spacing:-.02em;\r\n    color:#0f172a;\r\n  }\r\n\r\n  .skcfg-sub{\r\n    margin:0;\r\n    color:#475569;\r\n    font-size:16px;\r\n    line-height:1.75;\r\n  }\r\n\r\n  .skcfg-grid{\r\n    display:grid;\r\n    grid-template-columns:1fr;\r\n    gap:22px;\r\n  }\r\n\r\n  .skcfg-card{\r\n    background:linear-gradient(180deg,#ffffff 0%,#f8fafc 100%);\r\n    border:1px solid #e5e7eb;\r\n    border-radius:24px;\r\n    padding:24px;\r\n    box-shadow:0 16px 30px rgba(15,23,42,.06);\r\n  }\r\n\r\n  .skcfg-previewTop{\r\n    display:flex;\r\n    gap:14px;\r\n    align-items:flex-start;\r\n    margin-bottom:18px;\r\n  }\r\n\r\n  .skcfg-previewBadge{\r\n    min-width:56px;\r\n    height:40px;\r\n    padding:0 14px;\r\n    border-radius:999px;\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    background:linear-gradient(135deg,#0f172a,#334155);\r\n    color:#fff;\r\n    font-size:14px;\r\n    font-weight:900;\r\n    letter-spacing:.06em;\r\n  }\r\n\r\n  .skcfg-previewTitle{\r\n    margin:0 0 6px;\r\n    font-size:24px;\r\n    font-weight:900;\r\n    color:#0f172a;\r\n  }\r\n\r\n  .skcfg-previewDesc{\r\n    margin:0;\r\n    color:#64748b;\r\n    font-size:14px;\r\n    line-height:1.65;\r\n  }\r\n\r\n  .skcfg-videoBox{\r\n    margin-bottom:16px;\r\n  }\r\n\r\n  .skcfg-videoCard{\r\n    background:#fff;\r\n    border:1px solid #e5e7eb;\r\n    border-radius:18px;\r\n    padding:14px;\r\n  }\r\n\r\n  .skcfg-videoCardHead{\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:space-between;\r\n    gap:10px;\r\n    margin-bottom:10px;\r\n  }\r\n\r\n  .skcfg-videoCardTitle{\r\n    margin:0;\r\n    font-size:15px;\r\n    font-weight:900;\r\n    color:#0f172a;\r\n  }\r\n\r\n  .skcfg-videoBadge{\r\n    display:inline-flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    border-radius:999px;\r\n    padding:7px 10px;\r\n    background:#ecfdf5;\r\n    border:1px solid #bbf7d0;\r\n    color:#15803d;\r\n    font-size:11px;\r\n    font-weight:800;\r\n    white-space:nowrap;\r\n  }\r\n\r\n  .skcfg-video,\r\n  .skcfg-iframe{\r\n    width:100%;\r\n    display:block;\r\n    border:0;\r\n    border-radius:12px;\r\n    background:#0f172a;\r\n    aspect-ratio:16\/9;\r\n  }\r\n\r\n  .skcfg-summary{\r\n    background:#fff;\r\n    border:1px solid #e5e7eb;\r\n    border-radius:18px;\r\n    padding:16px;\r\n    margin-bottom:16px;\r\n  }\r\n\r\n  .skcfg-summaryRow{\r\n    display:flex;\r\n    align-items:flex-start;\r\n    justify-content:space-between;\r\n    gap:12px;\r\n  }\r\n\r\n  .skcfg-summaryRow + .skcfg-summaryRow{\r\n    margin-top:10px;\r\n    padding-top:10px;\r\n    border-top:1px solid #eef2f7;\r\n  }\r\n\r\n  .skcfg-summaryK{\r\n    color:#64748b;\r\n    font-size:13px;\r\n  }\r\n\r\n  .skcfg-summaryV{\r\n    text-align:right;\r\n    color:#111827;\r\n    font-size:13px;\r\n    font-weight:800;\r\n  }\r\n\r\n  .skcfg-part{\r\n    font-size:16px;\r\n    color:#1d4ed8;\r\n    word-break:break-word;\r\n  }\r\n\r\n  .skcfg-qtyBox{\r\n    background:#fff;\r\n    border:1px solid #e5e7eb;\r\n    border-radius:18px;\r\n    padding:16px;\r\n    margin-bottom:16px;\r\n  }\r\n\r\n  .skcfg-fieldLabel{\r\n    display:block;\r\n    margin:0 0 8px;\r\n    font-size:13px;\r\n    font-weight:800;\r\n    color:#0f172a;\r\n  }\r\n\r\n  .skcfg-qtyCtrl{\r\n    display:grid;\r\n    grid-template-columns:40px minmax(0,1fr) 40px;\r\n    align-items:center;\r\n    gap:10px;\r\n  }\r\n\r\n  .skcfg-qtyBtn,\r\n  button.skcfg-qtyBtn{\r\n    width:40px !important;\r\n    min-width:40px !important;\r\n    max-width:40px !important;\r\n    height:44px !important;\r\n    border-radius:12px !important;\r\n    border:1px solid #e5e7eb !important;\r\n    background:#f8fafc !important;\r\n    color:#111827 !important;\r\n    font-size:20px !important;\r\n    font-weight:900 !important;\r\n    cursor:pointer;\r\n    padding:0 !important;\r\n    line-height:1 !important;\r\n    box-shadow:none !important;\r\n  }\r\n\r\n  .skcfg-qtyInput,\r\n  input.skcfg-qtyInput,\r\n  .elementor input.skcfg-qtyInput,\r\n  .elementor-widget-html input.skcfg-qtyInput,\r\n  [data-skcfg-root] input.skcfg-qtyInput{\r\n    appearance:textfield;\r\n    -webkit-appearance:none;\r\n    -moz-appearance:textfield;\r\n    display:block;\r\n    width:100% !important;\r\n    min-width:0 !important;\r\n    max-width:none !important;\r\n    height:44px !important;\r\n    min-height:44px !important;\r\n    margin:0 !important;\r\n    padding:0 12px !important;\r\n    border-radius:12px !important;\r\n    border:1px solid #e5e7eb !important;\r\n    background:#fff !important;\r\n    text-align:center !important;\r\n    font-size:15px !important;\r\n    font-weight:900 !important;\r\n    color:#111827 !important;\r\n    outline:none !important;\r\n    box-shadow:none !important;\r\n  }\r\n\r\n  .skcfg-qtyInput::-webkit-outer-spin-button,\r\n  .skcfg-qtyInput::-webkit-inner-spin-button{\r\n    -webkit-appearance:none;\r\n    appearance:none;\r\n    margin:0;\r\n  }\r\n\r\n  .skcfg-qtyInput:focus,\r\n  input.skcfg-qtyInput:focus,\r\n  .elementor input.skcfg-qtyInput:focus{\r\n    border-color:#1d4ed8 !important;\r\n    box-shadow:0 0 0 4px rgba(29,78,216,.10) !important;\r\n  }\r\n\r\n  .skcfg-addBtn{\r\n    width:100%;\r\n    min-height:52px;\r\n    border:0;\r\n    border-radius:14px;\r\n    cursor:pointer;\r\n    font-weight:900;\r\n    color:#fff;\r\n    background:linear-gradient(90deg,#ea580c,#c2410c);\r\n    box-shadow:0 14px 24px rgba(234,88,12,.22);\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    gap:10px;\r\n    padding:12px 18px;\r\n  }\r\n\r\n  .skcfg-addBtnIcon{\r\n    display:inline-flex;\r\n  }\r\n\r\n  .skcfg-seriesTabs{\r\n    display:flex;\r\n    flex-wrap:wrap;\r\n    gap:10px;\r\n  }\r\n\r\n  .skcfg-seriesTab{\r\n    min-width:74px;\r\n    height:42px;\r\n    border-radius:12px;\r\n    border:1px solid #dbeafe;\r\n    background:#eff6ff;\r\n    color:#1d4ed8;\r\n    font-size:14px;\r\n    font-weight:900;\r\n    cursor:pointer;\r\n    transition:.2s ease;\r\n  }\r\n\r\n  .skcfg-seriesTab.active{\r\n    background:linear-gradient(135deg,#0f172a,#334155);\r\n    border-color:#0f172a;\r\n    color:#fff;\r\n  }\r\n\r\n  .skcfg-formGrid{\r\n    display:grid;\r\n    grid-template-columns:1fr;\r\n    gap:16px;\r\n    margin-top:18px;\r\n  }\r\n\r\n  .skcfg-select,\r\n  select.skcfg-select,\r\n  .elementor select.skcfg-select,\r\n  [data-skcfg-root] select.skcfg-select{\r\n    width:100% !important;\r\n    min-height:46px !important;\r\n    border-radius:14px !important;\r\n    border:1px solid #e5e7eb !important;\r\n    background:#fff !important;\r\n    color:#111827 !important;\r\n    font-size:14px !important;\r\n    font-weight:700 !important;\r\n    padding:0 14px !important;\r\n    outline:none !important;\r\n    box-shadow:none !important;\r\n  }\r\n\r\n  .skcfg-noteBox{\r\n    margin-top:16px;\r\n    background:#fff7ed;\r\n    border:1px solid #fed7aa;\r\n    color:#9a3412;\r\n    border-radius:16px;\r\n    padding:14px 16px;\r\n    font-size:13px;\r\n    line-height:1.6;\r\n    display:none;\r\n  }\r\n\r\n  .skcfg-infoPanel{\r\n    margin-top:16px;\r\n    background:#fff;\r\n    border:1px solid #e5e7eb;\r\n    border-radius:18px;\r\n    padding:20px;\r\n  }\r\n\r\n  .skcfg-infoHead{\r\n    margin:0 0 14px;\r\n    font-size:20px;\r\n    line-height:1.2;\r\n    font-weight:900;\r\n    color:#0f172a;\r\n  }\r\n\r\n  .skcfg-infoSection + .skcfg-infoSection{\r\n    margin-top:18px;\r\n    padding-top:18px;\r\n    border-top:1px solid #eef2f7;\r\n  }\r\n\r\n  .skcfg-infoTitle{\r\n    margin:0 0 10px;\r\n    font-size:16px;\r\n    line-height:1.35;\r\n    font-weight:800;\r\n    color:#0f172a;\r\n  }\r\n\r\n  .skcfg-infoList{\r\n    margin:0;\r\n    padding-left:22px;\r\n    color:#334155;\r\n    font-size:14px;\r\n    line-height:1.8;\r\n  }\r\n\r\n  .skcfg-infoText{\r\n    margin:10px 0 0;\r\n    color:#475569;\r\n    font-size:14px;\r\n    line-height:1.7;\r\n  }\r\n\r\n  @media (min-width:980px){\r\n    .skcfg-grid{\r\n      grid-template-columns:.94fr 1.06fr;\r\n      align-items:start;\r\n    }\r\n\r\n    .skcfg-formGrid{\r\n      grid-template-columns:1fr 1fr;\r\n    }\r\n  }\r\n\r\n  @media (max-width:640px){\r\n    .shinwa-sksfsl-config{\r\n      padding:64px 16px;\r\n    }\r\n\r\n    .skcfg-title{\r\n      font-size:30px;\r\n    }\r\n\r\n    .skcfg-card{\r\n      padding:20px;\r\n    }\r\n\r\n    .skcfg-previewTop,\r\n    .skcfg-videoCardHead{\r\n      flex-direction:column;\r\n      align-items:flex-start;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<script>\r\n(function(){\r\n  \"use strict\";\r\n\r\n  function normalizeLang(lang){\r\n    const raw = String(lang || \"\").trim().toLowerCase();\r\n    if(!raw) return \"pt-br\";\r\n    if(raw === \"en\" || raw.startsWith(\"en-\") || raw.startsWith(\"en_\")) return \"en\";\r\n    if(raw === \"pt\" || raw === \"pt-br\" || raw.startsWith(\"pt-\") || raw.startsWith(\"pt_\")) return \"pt-br\";\r\n    return raw;\r\n  }\r\n\r\n  function getLang(){\r\n    try{\r\n      const ls = normalizeLang(localStorage.getItem(\"shinwa_lang\") || \"\");\r\n      if(ls) return ls;\r\n    }catch(e){}\r\n    return normalizeLang(window.shinwaCurrentLang || document.documentElement.lang || navigator.language || \"pt-br\");\r\n  }\r\n\r\n  const i18n = {\r\n    \"pt-br\": {\r\n      \"skcfg.badge\": \"PATLITE\",\r\n      \"skcfg.title\": \"Configurador SK \/ SF \/ SL Series\",\r\n      \"skcfg.sub\": \"Selecione a s\u00e9rie, escolha os atributos e gere automaticamente o part number para adicionar ao carrinho.\",\r\n      \"skcfg.summary.series\": \"S\u00e9rie\",\r\n      \"skcfg.summary.part\": \"Part Number\",\r\n      \"skcfg.summary.qty\": \"Quantidade\",\r\n      \"skcfg.qtyLabel\": \"Quantidade\",\r\n      \"skcfg.addToCart\": \"Adicionar ao carrinho\",\r\n      \"skcfg.addBtnAria\": \"Adicionar ao carrinho\",\r\n      \"skcfg.seriesLabel\": \"S\u00e9rie\",\r\n      \"skcfg.diameterLabel\": \"Di\u00e2metro\",\r\n      \"skcfg.voltageLabel\": \"Tens\u00e3o \/ Alimenta\u00e7\u00e3o\",\r\n      \"skcfg.connLabelSk\": \"Conex\u00e3o \/ montagem\",\r\n      \"skcfg.connLabelSfSl\": \"Fixa\u00e7\u00e3o \/ conex\u00e3o\",\r\n      \"skcfg.soundLabel\": \"Som\",\r\n      \"skcfg.colorLabel\": \"Cor\",\r\n      \"skcfg.select\": \"Selecione...\",\r\n      \"skcfg.emptyMsg\": \"Complete todas as op\u00e7\u00f5es para adicionar ao carrinho.\",\r\n      \"skcfg.invalidMsg\": \"A combina\u00e7\u00e3o escolhida n\u00e3o \u00e9 v\u00e1lida para esta s\u00e9rie.\",\r\n      \"skcfg.note.sk\": \"* Em SK, a op\u00e7\u00e3o de cabo flex\u00edvel de borracha est\u00e1 dispon\u00edvel somente para \u03a6100mm.\",\r\n      \"skcfg.note.sl15\": \"* Para SL com \u00d8150mm, somente JN e KTN s\u00e3o permitidos.\",\r\n      \"skcfg.videoTitle\": \"V\u00eddeo da s\u00e9rie\",\r\n      \"skcfg.videoBadge\": \"Boa integra\u00e7\u00e3o visual\",\r\n      \"skcfg.sound.none\": \"Sem som\",\r\n      \"skcfg.sound.with\": \"Com som\",\r\n      \"skcfg.color.R\": \"Vermelho\",\r\n      \"skcfg.color.G\": \"Verde\",\r\n      \"skcfg.color.Y\": \"Amarelo\",\r\n      \"skcfg.color.B\": \"Azul\",\r\n      \"skcfg.series.SK.title\": \"SK Series\",\r\n      \"skcfg.series.SK.desc\": \"Sinalizador rotativo com motor interno e alta visibilidade.\",\r\n      \"skcfg.series.SF.title\": \"SF Series\",\r\n      \"skcfg.series.SF.desc\": \"Sinalizador LED multifuncional com v\u00e1rios padr\u00f5es de ilumina\u00e7\u00e3o.\",\r\n      \"skcfg.series.SL.title\": \"SL Series\",\r\n      \"skcfg.series.SL.desc\": \"Sinalizador LED piscante para alerta visual simples e eficiente.\",\r\n      \"skcfg.product.SK\": \"PATLITE SK Series\",\r\n      \"skcfg.product.SF\": \"PATLITE SF Series\",\r\n      \"skcfg.product.SL\": \"PATLITE SL Series\",\r\n      \"skcfg.added\": \"Produto adicionado ao carrinho\"\r\n    },\r\n    \"en\": {\r\n      \"skcfg.badge\": \"PATLITE\",\r\n      \"skcfg.title\": \"SK \/ SF \/ SL Series Configurator\",\r\n      \"skcfg.sub\": \"Select the series, choose the attributes, and automatically generate the part number to add to the cart.\",\r\n      \"skcfg.summary.series\": \"Series\",\r\n      \"skcfg.summary.part\": \"Part Number\",\r\n      \"skcfg.summary.qty\": \"Quantity\",\r\n      \"skcfg.qtyLabel\": \"Quantity\",\r\n      \"skcfg.addToCart\": \"Add to cart\",\r\n      \"skcfg.addBtnAria\": \"Add to cart\",\r\n      \"skcfg.seriesLabel\": \"Series\",\r\n      \"skcfg.diameterLabel\": \"Diameter\",\r\n      \"skcfg.voltageLabel\": \"Voltage \/ Power\",\r\n      \"skcfg.connLabelSk\": \"Connection \/ mounting\",\r\n      \"skcfg.connLabelSfSl\": \"Mounting \/ connection\",\r\n      \"skcfg.soundLabel\": \"Buzzer\",\r\n      \"skcfg.colorLabel\": \"Color\",\r\n      \"skcfg.select\": \"Select...\",\r\n      \"skcfg.emptyMsg\": \"Complete all options before adding to the cart.\",\r\n      \"skcfg.invalidMsg\": \"The selected combination is not valid for this series.\",\r\n      \"skcfg.note.sk\": \"* For SK, the flexible rubber cable option is available only for \u03a6100mm.\",\r\n      \"skcfg.note.sl15\": \"* For SL with \u00d8150mm, only JN and KTN are allowed.\",\r\n      \"skcfg.videoTitle\": \"Series video\",\r\n      \"skcfg.videoBadge\": \"Clean visual fit\",\r\n      \"skcfg.sound.none\": \"No buzzer\",\r\n      \"skcfg.sound.with\": \"With buzzer\",\r\n      \"skcfg.color.R\": \"Red\",\r\n      \"skcfg.color.G\": \"Green\",\r\n      \"skcfg.color.Y\": \"Yellow\",\r\n      \"skcfg.color.B\": \"Blue\",\r\n      \"skcfg.series.SK.title\": \"SK Series\",\r\n      \"skcfg.series.SK.desc\": \"Motor-driven rotating beacon with high visibility.\",\r\n      \"skcfg.series.SF.title\": \"SF Series\",\r\n      \"skcfg.series.SF.desc\": \"Multi-function LED beacon with multiple lighting patterns.\",\r\n      \"skcfg.series.SL.title\": \"SL Series\",\r\n      \"skcfg.series.SL.desc\": \"Flashing LED beacon for simple and efficient visual warning.\",\r\n      \"skcfg.product.SK\": \"PATLITE SK Series\",\r\n      \"skcfg.product.SF\": \"PATLITE SF Series\",\r\n      \"skcfg.product.SL\": \"PATLITE SL Series\",\r\n      \"skcfg.added\": \"Product added to cart\"\r\n    }\r\n  };\r\n\r\n  function t(key){\r\n    const lang = getLang();\r\n    const dict = i18n[lang] || i18n[\"pt-br\"];\r\n    return dict[key] || i18n[\"pt-br\"][key] || key;\r\n  }\r\n\r\n  function applyI18n(root){\r\n    if(!root) return;\r\n    root.querySelectorAll(\"[data-translate]\").forEach(function(el){\r\n      const key = el.getAttribute(\"data-translate\");\r\n      el.textContent = t(key);\r\n    });\r\n    root.querySelectorAll(\"[data-i18n-aria]\").forEach(function(el){\r\n      const key = el.getAttribute(\"data-i18n-aria\");\r\n      el.setAttribute(\"aria-label\", t(key));\r\n    });\r\n  }\r\n\r\n  const root = document.querySelector(\"[data-skcfg-root]\");\r\n  if(!root) return;\r\n\r\n  const CART_KEY = \"lp_shinwa_cart_v1\";\r\n\r\n  const DATA = {\r\n    SK: {\r\n      videoType: \"video\",\r\n      videoSrc: \"https:\/\/shinwa-br.com.br\/wp-content\/uploads\/2026\/03\/26_SK_kaiten_120RPM.mp4\",\r\n      diameter: [\r\n        { value:\"S\", label:\"\u03a680mm = S\" },\r\n        { value:\"H\", label:\"\u03a6100mm = H\" },\r\n        { value:\"P\", label:\"\u03a6150mm = P\" }\r\n      ],\r\n      voltage: [\r\n        { value:\"M1J\", label:\"DC12\u201324V = M1J\" },\r\n        { value:\"M1T\", label:\"DC12\u201324V = M1T\" },\r\n        { value:\"M2J\", label:\"AC100\u2013240V = M2J\" },\r\n        { value:\"M2T\", label:\"AC100\u2013240V = M2T\" },\r\n        { value:\"M2\",  label:\"AC100V = M2\" }\r\n      ],\r\n      connection: [],\r\n      sound: [\r\n        { value:\"\", labelKey:\"skcfg.sound.none\" },\r\n        { value:\"B\", labelKey:\"skcfg.sound.with\" }\r\n      ],\r\n      color: [\r\n        { value:\"R\", labelKey:\"skcfg.color.R\" },\r\n        { value:\"G\", labelKey:\"skcfg.color.G\" },\r\n        { value:\"Y\", labelKey:\"skcfg.color.Y\" },\r\n        { value:\"B\", labelKey:\"skcfg.color.B\" }\r\n      ]\r\n    },\r\n    SF: {\r\n      videoType: \"video\",\r\n      videoSrc: \"https:\/\/shinwa-br.com.br\/wp-content\/uploads\/2026\/03\/PATLITE-SF-Multi-function-Beacon-Series-_Media_yzez_nP4mY0_001_1080p.mp4\",\r\n      diameter: [\r\n        { value:\"08\", label:\"\u03a680mm = 08\" },\r\n        { value:\"10\", label:\"\u03a6100mm = 10\" }\r\n      ],\r\n      voltage: [\r\n        { value:\"M1\", label:\"DC12\u201324V = M1\" },\r\n        { value:\"M2\", label:\"AC100\u2013240V = M2\" }\r\n      ],\r\n      connection: [\r\n        { value:\"JN\",  label:\"JN \u2014 3 parafusos + cabo tipo cabtire \/ sem som\" },\r\n        { value:\"KTN\", label:\"KTN \u2014 2 furos + borne \/ sem som\" },\r\n        { value:\"KTB\", label:\"KTB \u2014 2 furos + borne \/ com som\" }\r\n      ],\r\n      sound: [],\r\n      color: [\r\n        { value:\"R\", labelKey:\"skcfg.color.R\" },\r\n        { value:\"G\", labelKey:\"skcfg.color.G\" },\r\n        { value:\"Y\", labelKey:\"skcfg.color.Y\" },\r\n        { value:\"B\", labelKey:\"skcfg.color.B\" }\r\n      ]\r\n    },\r\n    SL: {\r\n      videoType: \"video\",\r\n      videoSrc: \"https:\/\/shinwa-br.com.br\/wp-content\/uploads\/2026\/03\/patlite_Rt2N65SN4Rk_001_720p.mp4\",\r\n      diameter: [\r\n        { value:\"08\", label:\"\u03a680mm = 08\" },\r\n        { value:\"10\", label:\"\u03a6100mm = 10\" },\r\n        { value:\"15\", label:\"\u03a6150mm = 15\" }\r\n      ],\r\n      voltage: [\r\n        { value:\"M1\", label:\"DC12\u201324V = M1\" },\r\n        { value:\"M2\", label:\"AC100\u2013240V = M2\" }\r\n      ],\r\n      connection: [\r\n        { value:\"JN\",  label:\"JN \u2014 3 parafusos + cabo tipo cabtire \/ sem som\" },\r\n        { value:\"KTN\", label:\"KTN \u2014 2 furos + borne \/ sem som\" },\r\n        { value:\"KTB\", label:\"KTB \u2014 2 furos + borne \/ com som\" }\r\n      ],\r\n      sound: [],\r\n      color: [\r\n        { value:\"R\", labelKey:\"skcfg.color.R\" },\r\n        { value:\"G\", labelKey:\"skcfg.color.G\" },\r\n        { value:\"Y\", labelKey:\"skcfg.color.Y\" },\r\n        { value:\"B\", labelKey:\"skcfg.color.B\" }\r\n      ]\r\n    }\r\n  };\r\n\r\n  const PRODUCT_INFO = {\r\n    SK: {\r\n      \"pt-br\": `\r\n        <h4 class=\"skcfg-infoHead\">Informa\u00e7\u00f5es do produto<\/h4>\r\n        <div class=\"skcfg-infoSection\">\r\n          <h5 class=\"skcfg-infoTitle\">Dur\u00e1vel e confi\u00e1vel<\/h5>\r\n          <ul class=\"skcfg-infoList\">\r\n            <li>O SK \u00e9 equipado com motor sem escovas, que gera menos aquecimento do que um motor convencional e oferece maior vida \u00fatil ao conjunto.<\/li>\r\n            <li>Os rolamentos de esferas em a\u00e7o, localizados na base do refletor, foram projetados para reduzir muito o desgaste ao longo do tempo e proporcionar uma rota\u00e7\u00e3o mais silenciosa.<\/li>\r\n          <\/ul>\r\n        <\/div>\r\n        <div class=\"skcfg-infoSection\">\r\n          <h5 class=\"skcfg-infoTitle\">Maior visibilidade<\/h5>\r\n          <ul class=\"skcfg-infoList\">\r\n            <li>O refletor duplo rec\u00e9m-desenvolvido distribui a luz do LED com efici\u00eancia, criando uma emiss\u00e3o luminosa brilhante e uniforme.<\/li>\r\n            <li>A superf\u00edcie emissora foi projetada para oferecer m\u00e1xima visibilidade e sinais visuais mais eficazes.<\/li>\r\n          <\/ul>\r\n        <\/div>\r\n      `,\r\n      \"en\": `\r\n        <h4 class=\"skcfg-infoHead\">Product information<\/h4>\r\n        <div class=\"skcfg-infoSection\">\r\n          <h5 class=\"skcfg-infoTitle\">Durable and reliable<\/h5>\r\n          <ul class=\"skcfg-infoList\">\r\n            <li>The SK is equipped with a brushless motor, which produces less heat than a conventional motor and offers longer service life.<\/li>\r\n            <li>The steel ball bearings at the base of the reflector are designed to greatly reduce wear over time and provide quieter reflector rotation.<\/li>\r\n          <\/ul>\r\n        <\/div>\r\n        <div class=\"skcfg-infoSection\">\r\n          <h5 class=\"skcfg-infoTitle\">Higher visibility<\/h5>\r\n          <ul class=\"skcfg-infoList\">\r\n            <li>The newly developed dual reflector efficiently distributes LED light, creating bright and even light output.<\/li>\r\n            <li>The light-emitting surface is designed to provide maximum visibility and more effective visual signaling.<\/li>\r\n          <\/ul>\r\n        <\/div>\r\n      `\r\n    },\r\n    SF: {\r\n      \"pt-br\": `\r\n        <h4 class=\"skcfg-infoHead\">Informa\u00e7\u00f5es do produto<\/h4>\r\n        <div class=\"skcfg-infoSection\">\r\n          <h5 class=\"skcfg-infoTitle\">Alta efici\u00eancia<\/h5>\r\n          <ul class=\"skcfg-infoList\">\r\n            <li>O design sem motor e livre de manuten\u00e7\u00e3o produz anima\u00e7\u00f5es em LED com efeitos de rota\u00e7\u00e3o simulada, flash e pulsa\u00e7\u00e3o.<\/li>\r\n            <li>O SF utiliza a nova lente multi-Fresnel da PATLITE, fina e r\u00edgida, capaz de captar e difundir a luz com mais efici\u00eancia do que uma lente convencional.<\/li>\r\n          <\/ul>\r\n        <\/div>\r\n        <div class=\"skcfg-infoSection\">\r\n          <h5 class=\"skcfg-infoTitle\">Ampla sele\u00e7\u00e3o de padr\u00f5es<\/h5>\r\n          <ul class=\"skcfg-infoList\">\r\n            <li>Selecione entre 22 padr\u00f5es luminosos para indicar diferentes estados no campo de trabalho.<\/li>\r\n            <li>O padr\u00e3o de luz pode ser configurado com facilidade ajustando a chave rotativa e os canais de liga\u00e7\u00e3o.<\/li>\r\n          <\/ul>\r\n        <\/div>\r\n      `,\r\n      \"en\": `\r\n        <h4 class=\"skcfg-infoHead\">Product information<\/h4>\r\n        <div class=\"skcfg-infoSection\">\r\n          <h5 class=\"skcfg-infoTitle\">High efficiency<\/h5>\r\n          <ul class=\"skcfg-infoList\">\r\n            <li>This motorless, maintenance-free design produces LED animations with simulated rotation, flashing, and pulsing effects.<\/li>\r\n            <li>The SF uses PATLITE's newly developed multi-Fresnel lens, which is thin, rigid, and capable of collecting and diffusing light more effectively than a conventional lens.<\/li>\r\n          <\/ul>\r\n        <\/div>\r\n        <div class=\"skcfg-infoSection\">\r\n          <h5 class=\"skcfg-infoTitle\">Wide selection of light patterns<\/h5>\r\n          <ul class=\"skcfg-infoList\">\r\n            <li>Select from 22 light patterns to indicate various statuses in the work area.<\/li>\r\n            <li>The light pattern can be configured easily by adjusting the rotary switch and wiring channels.<\/li>\r\n          <\/ul>\r\n        <\/div>\r\n      `\r\n    },\r\n    SL: {\r\n      \"pt-br\": `\r\n        <h4 class=\"skcfg-infoHead\">Informa\u00e7\u00f5es do produto<\/h4>\r\n        <div class=\"skcfg-infoSection\">\r\n          <h5 class=\"skcfg-infoTitle\">Visibilidade total<\/h5>\r\n          <ul class=\"skcfg-infoList\">\r\n            <li>A lente Fresnel rec\u00e9m-desenvolvida distribui luz ambiente e uniforme por toda a c\u00fapula, inclusive na parte superior.<\/li>\r\n            <li>Em compara\u00e7\u00e3o com produtos concorrentes, o SL possui uma \u00e1rea emissora mais ampla, com mais de 5 vezes a intensidade luminosa.<\/li>\r\n          <\/ul>\r\n        <\/div>\r\n        <div class=\"skcfg-infoSection\">\r\n          <h5 class=\"skcfg-infoTitle\">Montagem f\u00e1cil<\/h5>\r\n          <ul class=\"skcfg-infoList\">\r\n            <li>Grau de prote\u00e7\u00e3o IP66 (tipo KT).<\/li>\r\n            <li>Rosqueie o suporte de montagem.<\/li>\r\n            <li>Conecte os fios ao borne push-in.<\/li>\r\n            <li>Monte o corpo no suporte.<\/li>\r\n            <li>Trave no lugar.<\/li>\r\n          <\/ul>\r\n          <p class=\"skcfg-infoText\">H\u00e1 tamb\u00e9m v\u00eddeos de apoio para montagem e para os 3 tipos de padr\u00f5es luminosos da s\u00e9rie SL.<\/p>\r\n        <\/div>\r\n        <div class=\"skcfg-infoSection\">\r\n          <h5 class=\"skcfg-infoTitle\">Exemplos de aplica\u00e7\u00e3o<\/h5>\r\n          <ul class=\"skcfg-infoList\">\r\n            <li>Em uma esta\u00e7\u00e3o de trem, uma combina\u00e7\u00e3o de luz piscante e som do SL alerta as pessoas na plataforma sobre a aproxima\u00e7\u00e3o dos trens.<\/li>\r\n            <li>Em um painel de controle, o SL alterna entre luz cont\u00ednua, piscante e triplo flash para indicar condi\u00e7\u00f5es normais, de alerta e cr\u00edticas.<\/li>\r\n            <li>Em lojas e ambientes amplos, o SL instalado no teto sinaliza emerg\u00eancias com luz piscante vis\u00edvel \u00e0 dist\u00e2ncia.<\/li>\r\n          <\/ul>\r\n        <\/div>\r\n      `,\r\n      \"en\": `\r\n        <h4 class=\"skcfg-infoHead\">Product information<\/h4>\r\n        <div class=\"skcfg-infoSection\">\r\n          <h5 class=\"skcfg-infoTitle\">Full visibility<\/h5>\r\n          <ul class=\"skcfg-infoList\">\r\n            <li>The newly developed Fresnel lens distributes ambient, uniform light from all surfaces of the globe, including the top.<\/li>\r\n            <li>Compared to competing products, the SL has a wider light-emitting surface with over 5 times the luminous intensity.<\/li>\r\n          <\/ul>\r\n        <\/div>\r\n        <div class=\"skcfg-infoSection\">\r\n          <h5 class=\"skcfg-infoTitle\">Easy mounting<\/h5>\r\n          <ul class=\"skcfg-infoList\">\r\n            <li>IP66 rating (KT type).<\/li>\r\n            <li>Screw in the mounting bracket.<\/li>\r\n            <li>Connect wires to the push-in terminal block.<\/li>\r\n            <li>Mount the body onto the mounting bracket.<\/li>\r\n            <li>Lock it into place.<\/li>\r\n          <\/ul>\r\n          <p class=\"skcfg-infoText\">There are also support videos for mounting and for the 3 SL series light patterns.<\/p>\r\n        <\/div>\r\n        <div class=\"skcfg-infoSection\">\r\n          <h5 class=\"skcfg-infoTitle\">Application examples<\/h5>\r\n          <ul class=\"skcfg-infoList\">\r\n            <li>At a train station, a combination of flashing light and sound from the SL warns people on the platform of approaching trains.<\/li>\r\n            <li>On a control panel, the SL alternates between steady, blinking, and triple-flash light to indicate normal, warning, and critical conditions.<\/li>\r\n            <li>Mounted on the ceiling of a store or large area, the SL indicates emergencies with flashing light that remains visible from a distance.<\/li>\r\n          <\/ul>\r\n        <\/div>\r\n      `\r\n    }\r\n  };\r\n\r\n  const els = {\r\n    tabs: root.querySelectorAll(\".skcfg-seriesTab\"),\r\n    videoBox: root.querySelector(\"#skcfgVideoBox\"),\r\n    seriesBadge: root.querySelector(\"#skcfgSeriesBadge\"),\r\n    seriesTitle: root.querySelector(\"#skcfgSeriesTitle\"),\r\n    seriesDesc: root.querySelector(\"#skcfgSeriesDesc\"),\r\n    summarySeries: root.querySelector(\"#skcfgSummarySeries\"),\r\n    summaryPart: root.querySelector(\"#skcfgPart\"),\r\n    qtyInput: root.querySelector(\"#skcfgQty\"),\r\n    qtyMinus: root.querySelector(\"#skcfgQtyMinus\"),\r\n    qtyPlus: root.querySelector(\"#skcfgQtyPlus\"),\r\n    qtyLabel: root.querySelector(\"#skcfgQtyLabel\"),\r\n    addBtn: root.querySelector(\"#skcfgAddBtn\"),\r\n    diameter: root.querySelector(\"#skcfgDiameter\"),\r\n    voltage: root.querySelector(\"#skcfgVoltage\"),\r\n    conn: root.querySelector(\"#skcfgConn\"),\r\n    sound: root.querySelector(\"#skcfgSound\"),\r\n    color: root.querySelector(\"#skcfgColor\"),\r\n    connWrap: root.querySelector(\"#skcfgConnWrap\"),\r\n    soundWrap: root.querySelector(\"#skcfgSoundWrap\"),\r\n    connLabel: root.querySelector(\"#skcfgConnLabel\"),\r\n    noteBox: root.querySelector(\"#skcfgNoteBox\"),\r\n    infoPanel: root.querySelector(\"#skcfgInfoPanel\")\r\n  };\r\n\r\n  const state = {\r\n    series: \"SK\",\r\n    diameter: \"\",\r\n    voltage: \"\",\r\n    conn: \"\",\r\n    sound: \"\",\r\n    color: \"\",\r\n    qty: 1\r\n  };\r\n\r\n  function makeOption(value, text){\r\n    const opt = document.createElement(\"option\");\r\n    opt.value = value;\r\n    opt.textContent = text;\r\n    return opt;\r\n  }\r\n\r\n  function fillSelect(select, items, placeholder){\r\n    select.innerHTML = \"\";\r\n    select.appendChild(makeOption(\"\", placeholder));\r\n    items.forEach(function(item){\r\n      select.appendChild(makeOption(item.value, item.labelKey ? t(item.labelKey) : item.label));\r\n    });\r\n  }\r\n\r\n  function sanitizeRules(){\r\n    const s = state.series;\r\n\r\n    if(s === \"SK\"){\r\n      state.conn = \"\";\r\n      if(state.sound !== \"\" && state.sound !== \"B\") state.sound = \"\";\r\n      if(state.sound === undefined || state.sound === null) state.sound = \"\";\r\n    }\r\n\r\n    if(s === \"SF\" || s === \"SL\"){\r\n      state.sound = \"\";\r\n      if(!DATA[s].connection.some(function(c){ return c.value === state.conn; })){\r\n        state.conn = \"\";\r\n      }\r\n    }\r\n\r\n    if(s === \"SL\" && state.diameter === \"15\" && state.conn === \"KTB\"){\r\n      state.conn = \"\";\r\n    }\r\n\r\n    if(!DATA[s].voltage.some(function(v){ return v.value === state.voltage; })){\r\n      state.voltage = \"\";\r\n    }\r\n\r\n    if(!DATA[s].diameter.some(function(d){ return d.value === state.diameter; })){\r\n      state.diameter = \"\";\r\n    }\r\n\r\n    if(!DATA[s].color.some(function(c){ return c.value === state.color; })){\r\n      state.color = \"\";\r\n    }\r\n  }\r\n\r\n  function buildPartNumber(){\r\n    const s = state.series;\r\n\r\n    if(s === \"SK\"){\r\n      if(!state.diameter || !state.voltage || state.sound === null || state.sound === undefined || !state.color) return \"\";\r\n      return \"SK\" + state.diameter + \"-\" + state.voltage + state.sound + \"-\" + state.color;\r\n    }\r\n\r\n    if(s === \"SF\"){\r\n      if(!state.diameter || !state.voltage || !state.conn || !state.color) return \"\";\r\n      return \"SF\" + state.diameter + \"-\" + state.voltage + state.conn + \"-\" + state.color;\r\n    }\r\n\r\n    if(s === \"SL\"){\r\n      if(!state.diameter || !state.voltage || !state.conn || !state.color) return \"\";\r\n      if(state.diameter === \"15\" && state.conn === \"KTB\") return \"\";\r\n      return \"SL\" + state.diameter + \"-\" + state.voltage + state.conn + \"-\" + state.color;\r\n    }\r\n\r\n    return \"\";\r\n  }\r\n\r\n  function renderMedia(){\r\n    const d = DATA[state.series];\r\n\r\n    if(d.videoType === \"video\"){\r\n      els.videoBox.innerHTML = `\r\n        <div class=\"skcfg-videoCard\">\r\n          <div class=\"skcfg-videoCardHead\">\r\n            <h4 class=\"skcfg-videoCardTitle\">${t(\"skcfg.videoTitle\")}<\/h4>\r\n            <span class=\"skcfg-videoBadge\">${t(\"skcfg.videoBadge\")}<\/span>\r\n          <\/div>\r\n          <video class=\"skcfg-video\" controls preload=\"metadata\" playsinline src=\"${d.videoSrc}\"><\/video>\r\n        <\/div>\r\n      `;\r\n      return;\r\n    }\r\n\r\n    if(d.videoType === \"iframe\"){\r\n      els.videoBox.innerHTML = `\r\n        <div class=\"skcfg-videoCard\">\r\n          <div class=\"skcfg-videoCardHead\">\r\n            <h4 class=\"skcfg-videoCardTitle\">${t(\"skcfg.videoTitle\")}<\/h4>\r\n            <span class=\"skcfg-videoBadge\">${t(\"skcfg.videoBadge\")}<\/span>\r\n          <\/div>\r\n          <iframe\r\n            class=\"skcfg-iframe\"\r\n            src=\"${d.videoSrc}\"\r\n            title=\"${t(\"skcfg.series.\" + state.series + \".title\")}\"\r\n            loading=\"lazy\"\r\n            allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\r\n            allowfullscreen\r\n          ><\/iframe>\r\n        <\/div>\r\n      `;\r\n      return;\r\n    }\r\n\r\n    els.videoBox.innerHTML = \"\";\r\n  }\r\n\r\n  function renderNote(){\r\n    let note = \"\";\r\n    if(state.series === \"SK\") note = t(\"skcfg.note.sk\");\r\n    if(state.series === \"SL\" && state.diameter === \"15\") note = t(\"skcfg.note.sl15\");\r\n\r\n    if(note){\r\n      els.noteBox.style.display = \"block\";\r\n      els.noteBox.textContent = note;\r\n    }else{\r\n      els.noteBox.style.display = \"none\";\r\n      els.noteBox.textContent = \"\";\r\n    }\r\n  }\r\n\r\n  function renderInfo(){\r\n    const lang = getLang();\r\n    const seriesInfo = PRODUCT_INFO[state.series];\r\n    if(!seriesInfo || !els.infoPanel){\r\n      return;\r\n    }\r\n    els.infoPanel.innerHTML = seriesInfo[lang] || seriesInfo[\"pt-br\"] || \"\";\r\n  }\r\n\r\n  function renderControls(){\r\n    const d = DATA[state.series];\r\n    const selectPlaceholder = t(\"skcfg.select\");\r\n\r\n    els.seriesBadge.textContent = state.series;\r\n    els.seriesTitle.textContent = t(\"skcfg.series.\" + state.series + \".title\");\r\n    els.seriesDesc.textContent = t(\"skcfg.series.\" + state.series + \".desc\");\r\n    els.summarySeries.textContent = state.series;\r\n    els.qtyLabel.textContent = String(state.qty);\r\n\r\n    fillSelect(els.diameter, d.diameter, selectPlaceholder);\r\n    fillSelect(els.voltage, d.voltage, selectPlaceholder);\r\n    fillSelect(els.color, d.color, selectPlaceholder);\r\n\r\n    els.diameter.value = state.diameter;\r\n    els.voltage.value = state.voltage;\r\n    els.color.value = state.color;\r\n\r\n    if(state.series === \"SK\"){\r\n      els.connWrap.style.display = \"none\";\r\n      els.soundWrap.style.display = \"\";\r\n      els.connLabel.textContent = t(\"skcfg.connLabelSk\");\r\n      fillSelect(els.sound, d.sound, selectPlaceholder);\r\n      els.sound.value = state.sound;\r\n    }else{\r\n      els.connWrap.style.display = \"\";\r\n      els.soundWrap.style.display = \"none\";\r\n      els.connLabel.textContent = t(\"skcfg.connLabelSfSl\");\r\n\r\n      let connItems = d.connection.slice();\r\n      if(state.series === \"SL\" && state.diameter === \"15\"){\r\n        connItems = connItems.filter(function(item){ return item.value !== \"KTB\"; });\r\n      }\r\n\r\n      fillSelect(els.conn, connItems, selectPlaceholder);\r\n      if(!connItems.some(function(item){ return item.value === state.conn; })){\r\n        state.conn = \"\";\r\n      }\r\n      els.conn.value = state.conn;\r\n    }\r\n\r\n    root.querySelectorAll(\".skcfg-seriesTab\").forEach(function(btn){\r\n      btn.classList.toggle(\"active\", btn.getAttribute(\"data-series\") === state.series);\r\n    });\r\n\r\n    renderMedia();\r\n    renderNote();\r\n    renderInfo();\r\n\r\n    const part = buildPartNumber();\r\n    els.summaryPart.textContent = part || \"\u2014\";\r\n  }\r\n\r\n  function setSeries(nextSeries){\r\n    state.series = nextSeries;\r\n    state.diameter = \"\";\r\n    state.voltage = \"\";\r\n    state.conn = \"\";\r\n    state.sound = \"\";\r\n    state.color = \"\";\r\n    sanitizeRules();\r\n    renderControls();\r\n  }\r\n\r\n  function getCart(){\r\n    try{\r\n      const parsed = JSON.parse(localStorage.getItem(CART_KEY) || \"[]\");\r\n      return Array.isArray(parsed) ? parsed : [];\r\n    }catch(e){\r\n      return [];\r\n    }\r\n  }\r\n\r\n  function setCart(arr){\r\n    localStorage.setItem(CART_KEY, JSON.stringify(arr));\r\n  }\r\n\r\n  function tryOpenCartDrawer(){\r\n    if(typeof window.lpCartOpen === \"function\"){\r\n      try{\r\n        window.lpCartOpen();\r\n        return true;\r\n      }catch(e){}\r\n    }\r\n\r\n    const evNames = [\"lpCartOpen\",\"openCart\",\"cart:open\",\"lp_cart_open\"];\r\n    evNames.forEach(function(name){\r\n      try{ window.dispatchEvent(new CustomEvent(name)); }catch(e){}\r\n    });\r\n\r\n    const btn =\r\n      document.querySelector(\"[data-lp-cart-fab]\") ||\r\n      document.querySelector(\".lp-cart-fab\") ||\r\n      document.querySelector(\"#lpCartFab\") ||\r\n      document.querySelector(\"[aria-controls='lpCartDrawer']\") ||\r\n      document.querySelector(\"[data-open-cart]\") ||\r\n      document.querySelector(\"[data-cart-open]\");\r\n\r\n    if(btn){\r\n      try{\r\n        btn.click();\r\n        return true;\r\n      }catch(e){}\r\n    }\r\n\r\n    const drawer =\r\n      document.querySelector(\"#lpCartDrawer\") ||\r\n      document.querySelector(\".lp-cart-drawer\") ||\r\n      document.querySelector(\"[data-lp-cart-drawer]\") ||\r\n      document.querySelector(\"[data-cart-drawer]\");\r\n\r\n    if(drawer){\r\n      drawer.classList.add(\"is-open\",\"open\",\"active\",\"shown\");\r\n      drawer.setAttribute(\"aria-hidden\",\"false\");\r\n      return true;\r\n    }\r\n\r\n    return false;\r\n  }\r\n\r\n  function addToGlobalCart(){\r\n    const part = buildPartNumber();\r\n\r\n    if(!part){\r\n      alert(t(\"skcfg.emptyMsg\"));\r\n      return false;\r\n    }\r\n\r\n    if(state.series === \"SL\" && state.diameter === \"15\" && state.conn === \"KTB\"){\r\n      alert(t(\"skcfg.invalidMsg\"));\r\n      return false;\r\n    }\r\n\r\n    const productName = t(\"skcfg.product.\" + state.series);\r\n    const quantity = state.qty;\r\n\r\n    const item = {\r\n      part: part,\r\n      product: productName,\r\n      qty: quantity,\r\n      ts: Date.now(),\r\n      meta: {\r\n        series: state.series,\r\n        diameter: state.diameter,\r\n        voltage: state.voltage,\r\n        connection: state.conn,\r\n        sound: state.series === \"SK\" ? state.sound : \"\",\r\n        color: state.color\r\n      },\r\n      description: productName + \" | \" + part + \" | qty: \" + quantity\r\n    };\r\n\r\n    if(typeof window.lpCartAddItem === \"function\"){\r\n      try{\r\n        window.lpCartAddItem(item.part, item.product, item.qty, item);\r\n        try{ window.dispatchEvent(new CustomEvent(\"lpCartUpdated\", { detail: item })); }catch(e){}\r\n        return true;\r\n      }catch(e){}\r\n    }\r\n\r\n    const cart = getCart();\r\n    const existingIndex = cart.findIndex(function(cartItem){\r\n      return cartItem && cartItem.part === item.part && (cartItem.product || \"\") === item.product;\r\n    });\r\n\r\n    if(existingIndex > -1){\r\n      const prevQty = parseInt(cart[existingIndex].qty, 10) || 0;\r\n      cart[existingIndex].qty = prevQty + quantity;\r\n      cart[existingIndex].ts = Date.now();\r\n      cart[existingIndex].meta = item.meta;\r\n      cart[existingIndex].description = cart[existingIndex].product + \" | \" + cart[existingIndex].part + \" | qty: \" + cart[existingIndex].qty;\r\n    }else{\r\n      cart.push(item);\r\n    }\r\n\r\n    setCart(cart);\r\n\r\n    try{\r\n      window.dispatchEvent(new CustomEvent(\"lpCartUpdated\", { detail: item }));\r\n    }catch(e){}\r\n\r\n    return true;\r\n  }\r\n\r\n  els.tabs.forEach(function(tab){\r\n    tab.addEventListener(\"click\", function(){\r\n      setSeries(tab.getAttribute(\"data-series\"));\r\n    });\r\n  });\r\n\r\n  els.diameter.addEventListener(\"change\", function(){\r\n    state.diameter = this.value;\r\n    sanitizeRules();\r\n    renderControls();\r\n  });\r\n\r\n  els.voltage.addEventListener(\"change\", function(){\r\n    state.voltage = this.value;\r\n    sanitizeRules();\r\n    renderControls();\r\n  });\r\n\r\n  els.conn.addEventListener(\"change\", function(){\r\n    state.conn = this.value;\r\n    sanitizeRules();\r\n    renderControls();\r\n  });\r\n\r\n  els.sound.addEventListener(\"change\", function(){\r\n    state.sound = this.value;\r\n    sanitizeRules();\r\n    renderControls();\r\n  });\r\n\r\n  els.color.addEventListener(\"change\", function(){\r\n    state.color = this.value;\r\n    sanitizeRules();\r\n    renderControls();\r\n  });\r\n\r\n  function syncQty(v){\r\n    const n = Math.max(1, Math.min(999, parseInt(v,10) || 1));\r\n    state.qty = n;\r\n    els.qtyInput.value = String(n);\r\n    els.qtyLabel.textContent = String(n);\r\n  }\r\n\r\n  els.qtyMinus.addEventListener(\"click\", function(){\r\n    syncQty(state.qty - 1);\r\n  });\r\n\r\n  els.qtyPlus.addEventListener(\"click\", function(){\r\n    syncQty(state.qty + 1);\r\n  });\r\n\r\n  els.qtyInput.addEventListener(\"input\", function(){\r\n    syncQty(this.value);\r\n  });\r\n\r\n  els.qtyInput.addEventListener(\"change\", function(){\r\n    syncQty(this.value);\r\n  });\r\n\r\n  els.qtyInput.addEventListener(\"blur\", function(){\r\n    syncQty(this.value);\r\n  });\r\n\r\n  els.addBtn.addEventListener(\"click\", function(){\r\n    const ok = addToGlobalCart();\r\n    if(!ok) return;\r\n\r\n    const openedNow = tryOpenCartDrawer();\r\n    if(!openedNow){\r\n      setTimeout(tryOpenCartDrawer, 60);\r\n      setTimeout(tryOpenCartDrawer, 180);\r\n    }\r\n  });\r\n\r\n  applyI18n(root);\r\n  syncQty(1);\r\n  renderControls();\r\n\r\n  window.addEventListener(\"languageChange\", function(e){\r\n    const lang = normalizeLang(e && e.detail && e.detail.language ? e.detail.language : getLang());\r\n    try{ localStorage.setItem(\"shinwa_lang\", lang); }catch(err){}\r\n    applyI18n(root);\r\n    renderControls();\r\n  });\r\n})();\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6900d9c e-flex e-con-boxed e-con e-parent\" data-id=\"6900d9c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-d699761 e-con-full e-flex e-con e-child\" data-id=\"d699761\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-cd4a8f9 elementor-widget elementor-widget-html\" data-id=\"cd4a8f9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- =========================================================\r\n     SHINWA \u2014 ABOUT CONTENT (PT-BR \/ EN)\r\n     \u2705 Compat\u00edvel com seu sistema (shinwa_lang + languageChange)\r\n     \u2705 Sem texto fixo: data-translate + i18n\r\n     Cole tudo no widget HTML do Elementor\r\n========================================================= -->\r\n\r\n<div class=\"about-content\" data-about-root>\r\n  <h2 class=\"about-title\" data-translate=\"about.title\">Sobre a Shinwa do Brasil<\/h2>\r\n\r\n  <div class=\"content-spacing\">\r\n    <div class=\"partnership-badge\" data-translate=\"about.badge\">\r\n      Parceria oficial com a PATLITE desde 2025\r\n    <\/div>\r\n\r\n    <p class=\"about-description\" data-translate=\"about.desc\">\r\n      A Shinwa do Brasil \u00e9 representante oficial da PATLITE no mercado brasileiro, oferecendo solu\u00e7\u00f5es\r\n      completas em sinaliza\u00e7\u00e3o industrial. Nossa parceria garante produtos originais, suporte t\u00e9cnico\r\n      especializado e atendimento personalizado para cada projeto.\r\n    <\/p>\r\n\r\n    <div class=\"differentials-section\">\r\n      <h3 class=\"differentials-title\" data-translate=\"about.diffTitle\">Nossos Diferenciais:<\/h3>\r\n\r\n      <ul class=\"differentials-list\">\r\n        <li class=\"differential-item\">\r\n          <span class=\"bullet\" aria-hidden=\"true\"><\/span>\r\n          <span class=\"differential-text\" data-translate=\"about.diff1\">Representa\u00e7\u00e3o oficial PATLITE<\/span>\r\n        <\/li>\r\n        <li class=\"differential-item\">\r\n          <span class=\"bullet\" aria-hidden=\"true\"><\/span>\r\n          <span class=\"differential-text\" data-translate=\"about.diff2\">Suporte t\u00e9cnico especializado<\/span>\r\n        <\/li>\r\n        <li class=\"differential-item\">\r\n          <span class=\"bullet\" aria-hidden=\"true\"><\/span>\r\n          <span class=\"differential-text\" data-translate=\"about.diff3\">Garantia e assist\u00eancia t\u00e9cnica<\/span>\r\n        <\/li>\r\n        <li class=\"differential-item\">\r\n          <span class=\"bullet\" aria-hidden=\"true\"><\/span>\r\n          <span class=\"differential-text\" data-translate=\"about.diff4\">Estoque permanente no Brasil<\/span>\r\n        <\/li>\r\n      <\/ul>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<style>\r\n  .about-content{\r\n    font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;\r\n  }\r\n\r\n  .about-title{\r\n    font-size:1.875rem; \/* 30px *\/\r\n    font-weight:700;\r\n    color:#111827;\r\n    margin:0 0 1.5rem; \/* 24px *\/\r\n  }\r\n  @media (min-width:1024px){\r\n    .about-title{font-size:2.25rem;} \/* 36px *\/\r\n  }\r\n\r\n  .content-spacing{\r\n    display:flex;\r\n    flex-direction:column;\r\n    gap:1.5rem; \/* 24px *\/\r\n  }\r\n\r\n  .partnership-badge{\r\n    display:inline-block;\r\n    width:max-content;\r\n    padding:.5rem 1rem; \/* 8px 16px *\/\r\n    background:#DBEAFE;\r\n    color:#1E40AF;\r\n    font-size:.875rem; \/* 14px *\/\r\n    font-weight:500;\r\n    border-radius:9999px;\r\n  }\r\n\r\n  .about-description{\r\n    margin:0;\r\n    font-size:1.125rem; \/* 18px *\/\r\n    color:#4B5563;\r\n    line-height:1.625;\r\n    max-width: 720px;\r\n  }\r\n\r\n  .differentials-section{\r\n    display:flex;\r\n    flex-direction:column;\r\n    gap:1rem; \/* 16px *\/\r\n  }\r\n\r\n  .differentials-title{\r\n    margin:0;\r\n    font-weight:600;\r\n    color:#111827;\r\n    font-size:1rem; \/* 16px *\/\r\n  }\r\n\r\n  .differentials-list{\r\n    list-style:none;\r\n    padding:0;\r\n    margin:0;\r\n    display:flex;\r\n    flex-direction:column;\r\n    gap:.75rem; \/* 12px *\/\r\n  }\r\n\r\n  .differential-item{\r\n    display:flex;\r\n    align-items:center;\r\n    gap:.75rem; \/* 12px *\/\r\n  }\r\n\r\n  .bullet{\r\n    width:8px;\r\n    height:8px;\r\n    background:#2563EB;\r\n    border-radius:50%;\r\n    flex-shrink:0;\r\n  }\r\n\r\n  .differential-text{\r\n    color:#4B5563;\r\n    font-size:1rem; \/* 16px *\/\r\n  }\r\n<\/style>\r\n\r\n<script>\r\n(function(){\r\n  \"use strict\";\r\n\r\n  \/* =========================\r\n     Idioma (padr\u00e3o do projeto)\r\n  ========================= *\/\r\n  function getLang(){\r\n    try{\r\n      const ls = (localStorage.getItem(\"shinwa_lang\") || \"\").toLowerCase();\r\n      if(ls) return ls;\r\n    }catch(e){}\r\n    return (window.shinwaCurrentLang || \"pt-br\").toLowerCase();\r\n  }\r\n\r\n  const i18n = {\r\n    \"pt-br\": {\r\n      \"about.title\": \"Sobre a Shinwa do Brasil\",\r\n      \"about.badge\": \"Parceria oficial com a PATLITE desde 2025\",\r\n      \"about.desc\": \"A Shinwa do Brasil \u00e9 representante oficial da PATLITE no mercado brasileiro, oferecendo solu\u00e7\u00f5es completas em sinaliza\u00e7\u00e3o industrial. Nossa parceria garante produtos originais, suporte t\u00e9cnico especializado e atendimento personalizado para cada projeto.\",\r\n      \"about.diffTitle\": \"Nossos Diferenciais:\",\r\n      \"about.diff1\": \"Representa\u00e7\u00e3o oficial PATLITE\",\r\n      \"about.diff2\": \"Suporte t\u00e9cnico especializado\",\r\n      \"about.diff3\": \"Garantia e assist\u00eancia t\u00e9cnica\",\r\n      \"about.diff4\": \"Estoque permanente no Brasil\"\r\n    },\r\n    \"en\": {\r\n      \"about.title\": \"About Shinwa do Brasil\",\r\n      \"about.badge\": \"Official partnership with PATLITE since 2025\",\r\n      \"about.desc\": \"Shinwa do Brasil is PATLITE\u2019s official representative in the Brazilian market, providing complete industrial signaling solutions. Our partnership ensures genuine products, specialized technical support, and personalized service for each project.\",\r\n      \"about.diffTitle\": \"Our Differentials:\",\r\n      \"about.diff1\": \"Official PATLITE representation\",\r\n      \"about.diff2\": \"Specialized technical support\",\r\n      \"about.diff3\": \"Warranty and technical assistance\",\r\n      \"about.diff4\": \"Permanent stock in Brazil\"\r\n    }\r\n  };\r\n\r\n  function t(key){\r\n    const lang = getLang();\r\n    const dict = i18n[lang] || i18n[\"pt-br\"];\r\n    return (dict && dict[key]) ? dict[key] : (i18n[\"pt-br\"][key] || key);\r\n  }\r\n\r\n  function applyI18n(root){\r\n    const scope = root || document;\r\n    scope.querySelectorAll(\"[data-translate]\").forEach(el=>{\r\n      const key = el.dataset.translate;\r\n      el.textContent = t(key);\r\n    });\r\n  }\r\n\r\n  const root = document.querySelector(\"[data-about-root]\");\r\n  if(!root) return;\r\n\r\n  \/\/ inicial\r\n  applyI18n(root);\r\n\r\n  \/\/ troca global de idioma\r\n  window.addEventListener(\"languageChange\", ()=> applyI18n(root));\r\n})();\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-637074c e-con-full e-flex e-con e-child\" data-id=\"637074c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-595efa4 elementor-widget elementor-widget-image\" data-id=\"595efa4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"683\" height=\"1024\" src=\"https:\/\/shinwa-br.com.br\/wp-content\/uploads\/2026\/01\/Shinwa-Fachada-2-683x1024.jpg\" class=\"attachment-large size-large wp-image-439\" alt=\"\" srcset=\"https:\/\/shinwa-br.com.br\/wp-content\/uploads\/2026\/01\/Shinwa-Fachada-2-683x1024.jpg 683w, https:\/\/shinwa-br.com.br\/wp-content\/uploads\/2026\/01\/Shinwa-Fachada-2-200x300.jpg 200w, https:\/\/shinwa-br.com.br\/wp-content\/uploads\/2026\/01\/Shinwa-Fachada-2-768x1152.jpg 768w, https:\/\/shinwa-br.com.br\/wp-content\/uploads\/2026\/01\/Shinwa-Fachada-2.jpg 1024w\" sizes=\"(max-width: 683px) 100vw, 683px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-604dae7 e-con-full e-flex e-con e-parent\" data-id=\"604dae7\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c85bac9 elementor-widget elementor-widget-html\" data-id=\"c85bac9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- =========================================================\r\n     SHINWA \u2014 STATS SECTION (PT-BR \/ EN)\r\n     \u2705 Compat\u00edvel com seu sistema (shinwa_lang + languageChange)\r\n     \u2705 Sem texto fixo nos labels: data-translate + i18n\r\n     Cole tudo no widget HTML do Elementor\r\n========================================================= -->\r\n\r\n<style>\r\n  \/* ===============================\r\n     SE\u00c7\u00c3O DE ESTAT\u00cdSTICAS (1140px)\r\n     =============================== *\/\r\n\r\n  .stats-section{\r\n    width: 100%;\r\n  }\r\n\r\n  \/* Container com largura real de 1140px *\/\r\n  .stats-container{\r\n    width: 100%;\r\n    max-width: 1200px;\r\n    margin: 0 auto;\r\n    padding: 0; \/* \ud83d\udd25 sem padding lateral *\/\r\n  }\r\n\r\n  \/* Grid *\/\r\n  .stats-grid{\r\n    display: grid;\r\n    grid-template-columns: repeat(4, 1fr);\r\n    gap: 1.5rem; \/* 24px *\/\r\n  }\r\n\r\n  \/* Card *\/\r\n  .stat-card{\r\n    background: #ffffff;\r\n    border: 1px solid #E5E7EB;\r\n    border-radius: 8px;\r\n    box-shadow: 0 1px 3px rgba(0,0,0,.1),\r\n                0 1px 2px rgba(0,0,0,.06);\r\n    transition: box-shadow .3s ease;\r\n  }\r\n\r\n  \/* Hover igual aos outros cards *\/\r\n  .stat-card:hover{\r\n    box-shadow: 0 10px 15px rgba(0,0,0,.1),\r\n                0 4px 6px rgba(0,0,0,.05);\r\n  }\r\n\r\n  \/* Conte\u00fado interno *\/\r\n  .card-content{\r\n    padding: 1.5rem; \/* padding interno do card *\/\r\n    text-align: center;\r\n  }\r\n\r\n  \/* \u00cdcone *\/\r\n  .icon-container{\r\n    background: #DBEAFE;\r\n    padding: .75rem; \/* 12px *\/\r\n    border-radius: 8px;\r\n    width: fit-content;\r\n    margin: 0 auto 1rem;\r\n  }\r\n\r\n  .icon-container svg{\r\n    width: 24px;\r\n    height: 24px;\r\n    stroke: #2563EB;\r\n    stroke-width: 2;\r\n    fill: none;\r\n  }\r\n\r\n  \/* N\u00famero *\/\r\n  .stat-number{\r\n    font-size: 1.5rem; \/* 24px *\/\r\n    font-weight: 700;\r\n    color: #111827;\r\n    margin-bottom: .5rem;\r\n  }\r\n\r\n  \/* Label *\/\r\n  .stat-label{\r\n    font-size: .875rem; \/* 14px *\/\r\n    color: #4B5563;\r\n    line-height: 1.25rem;\r\n  }\r\n\r\n  \/* Responsivo *\/\r\n  @media (max-width: 1024px){\r\n    .stats-grid{\r\n      grid-template-columns: repeat(2, 1fr);\r\n    }\r\n  }\r\n\r\n  @media (max-width: 640px){\r\n    .stats-grid{\r\n      grid-template-columns: 1fr;\r\n    }\r\n\r\n    \/* padding s\u00f3 no mobile para n\u00e3o colar na tela *\/\r\n    .stats-container{\r\n      padding: 0 1rem;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<section class=\"stats-section\" data-stats-root>\r\n  <div class=\"stats-container\">\r\n    <div class=\"stats-grid\">\r\n\r\n      <!-- Card 1 -->\r\n      <div class=\"stat-card\">\r\n        <div class=\"card-content\">\r\n          <div class=\"icon-container\" aria-hidden=\"true\">\r\n            <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\">\r\n              <path d=\"M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z\"\/>\r\n              <path d=\"M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2\"\/>\r\n              <path d=\"M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2\"\/>\r\n              <path d=\"M10 6h4\"\/>\r\n              <path d=\"M10 10h4\"\/>\r\n              <path d=\"M10 14h4\"\/>\r\n              <path d=\"M10 18h4\"\/>\r\n            <\/svg>\r\n          <\/div>\r\n          <div class=\"stat-number\">500+<\/div>\r\n          <div class=\"stat-label\" data-translate=\"stats.1\">Projetos Realizados<\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <!-- Card 2 -->\r\n      <div class=\"stat-card\">\r\n        <div class=\"card-content\">\r\n          <div class=\"icon-container\" aria-hidden=\"true\">\r\n            <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\">\r\n              <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\"\/>\r\n              <circle cx=\"9\" cy=\"7\" r=\"4\"\/>\r\n              <path d=\"M22 21v-2a4 4 0 0 0-3-3.87\"\/>\r\n              <path d=\"M16 3.13a4 4 0 0 1 0 7.75\"\/>\r\n            <\/svg>\r\n          <\/div>\r\n          <div class=\"stat-number\">1000+<\/div>\r\n          <div class=\"stat-label\" data-translate=\"stats.2\">Clientes Atendidos<\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <!-- Card 3 -->\r\n      <div class=\"stat-card\">\r\n        <div class=\"card-content\">\r\n          <div class=\"icon-container\" aria-hidden=\"true\">\r\n            <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\">\r\n              <circle cx=\"12\" cy=\"8\" r=\"6\"\/>\r\n              <path d=\"M15.477 12.89 17 22l-5-3-5 3 1.523-9.11\"\/>\r\n            <\/svg>\r\n          <\/div>\r\n          <div class=\"stat-number\">10+<\/div>\r\n          <div class=\"stat-label\" data-translate=\"stats.3\">Anos de Experi\u00eancia<\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <!-- Card 4 -->\r\n      <div class=\"stat-card\">\r\n        <div class=\"card-content\">\r\n          <div class=\"icon-container\" aria-hidden=\"true\">\r\n            <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\">\r\n              <path d=\"M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0Z\"\/>\r\n              <circle cx=\"12\" cy=\"10\" r=\"3\"\/>\r\n            <\/svg>\r\n          <\/div>\r\n          <div class=\"stat-number\">50+<\/div>\r\n          <div class=\"stat-label\" data-translate=\"stats.4\">Cidades<\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<script>\r\n(function(){\r\n  \"use strict\";\r\n\r\n  \/* =========================\r\n     Idioma (padr\u00e3o do seu projeto)\r\n  ========================= *\/\r\n  function getLang(){\r\n    try{\r\n      const ls = (localStorage.getItem(\"shinwa_lang\") || \"\").toLowerCase();\r\n      if(ls) return ls;\r\n    }catch(e){}\r\n    return (window.shinwaCurrentLang || \"pt-br\").toLowerCase();\r\n  }\r\n\r\n  const i18n = {\r\n    \"pt-br\": {\r\n      \"stats.1\": \"Projetos Realizados\",\r\n      \"stats.2\": \"Clientes Atendidos\",\r\n      \"stats.3\": \"Anos de Experi\u00eancia\",\r\n      \"stats.4\": \"Cidades\"\r\n    },\r\n    \"en\": {\r\n      \"stats.1\": \"Projects Delivered\",\r\n      \"stats.2\": \"Clients Served\",\r\n      \"stats.3\": \"Years of Experience\",\r\n      \"stats.4\": \"Cities\"\r\n    }\r\n  };\r\n\r\n  function t(key){\r\n    const lang = getLang();\r\n    const dict = i18n[lang] || i18n[\"pt-br\"];\r\n    return (dict && dict[key]) ? dict[key] : (i18n[\"pt-br\"][key] || key);\r\n  }\r\n\r\n  function applyI18n(root){\r\n    const scope = root || document;\r\n    scope.querySelectorAll(\"[data-translate]\").forEach(el=>{\r\n      const key = el.dataset.translate;\r\n      el.textContent = t(key);\r\n    });\r\n  }\r\n\r\n  const root = document.querySelector(\"[data-stats-root]\");\r\n  if(!root) return;\r\n\r\n  \/\/ inicial\r\n  applyI18n(root);\r\n\r\n  \/\/ troca global de idioma\r\n  window.addEventListener(\"languageChange\", ()=> applyI18n(root));\r\n})();\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-01bae49 e-con-full e-flex e-con e-parent\" data-id=\"01bae49\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-748279e elementor-widget elementor-widget-html\" data-id=\"748279e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- =========================================================\r\n     SHINWA \u2014 CERTIFICATIONS SECTION (PT-BR \/ EN)\r\n     \u2705 Compat\u00edvel com seu sistema (shinwa_lang + languageChange)\r\n     \u2705 Sem texto fixo: data-translate + i18n\r\n     Cole tudo no widget HTML do Elementor\r\n========================================================= -->\r\n\r\n<style>\r\n  \/* ===== CERTIFICA\u00c7\u00d5ES (1140px, sem padding lateral) ===== *\/\r\n  .certs-section{\r\n    width: 100%;\r\n  }\r\n\r\n  \/* Container REAL (SEM padding lateral) *\/\r\n  .certs-container{\r\n    width: 100%;\r\n    max-width: 1200px;\r\n    margin: 0 auto;\r\n    padding: 0; \/* \ud83d\udd25 sem padding lateral *\/\r\n  }\r\n\r\n  \/* Card *\/\r\n  .certifications-card{\r\n    background: #FFFFFF;\r\n    border: 1px solid #E5E7EB;\r\n    border-radius: 12px;\r\n    box-shadow: 0 1px 3px rgba(0,0,0,0.08);\r\n    overflow: hidden;\r\n  }\r\n\r\n  \/* Header *\/\r\n  .certs-header{\r\n    padding: 1.5rem 1.5rem 0.75rem 1.5rem; \/* 24px *\/\r\n    text-align: center;\r\n  }\r\n\r\n  .certs-title{\r\n    margin: 0;\r\n    font-size: 1rem; \/* 16px *\/\r\n    font-weight: 500;\r\n    color: #111827;\r\n  }\r\n\r\n  \/* Content *\/\r\n  .certs-content{\r\n    padding: 0.75rem 1.5rem 1.5rem 1.5rem;\r\n    text-align: center;\r\n  }\r\n\r\n  .certs-desc{\r\n    margin: 0 0 1rem 0;\r\n    font-size: 0.95rem;\r\n    color: #4B5563;\r\n    line-height: 1.6;\r\n  }\r\n\r\n  \/* Badges *\/\r\n  .badges-container{\r\n    display: flex;\r\n    flex-wrap: wrap;\r\n    justify-content: center;\r\n    gap: 0.75rem; \/* 12px *\/\r\n  }\r\n\r\n  .certification-badge{\r\n    background: #F3F4F6;\r\n    border: 1px solid #E5E7EB;\r\n    color: #111827;\r\n    font-size: 0.75rem; \/* 12px *\/\r\n    font-weight: 600;\r\n    padding: 0.5rem 0.9rem; \/* 8px 14px *\/\r\n    border-radius: 8px;\r\n    display: inline-flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    white-space: nowrap;\r\n  }\r\n\r\n  \/* Responsivo *\/\r\n  @media (max-width: 640px){\r\n    .certs-container{\r\n      padding: 0 1rem;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<section class=\"certs-section\" data-certs-root>\r\n  <div class=\"certs-container\">\r\n\r\n    <div class=\"certifications-card\">\r\n      <div class=\"certs-header\">\r\n        <h3 class=\"certs-title\" data-translate=\"certs.title\">\r\n          Certifica\u00e7\u00f5es e Qualidade\r\n        <\/h3>\r\n      <\/div>\r\n\r\n      <div class=\"certs-content\">\r\n        <p class=\"certs-desc\" data-translate=\"certs.desc\">\r\n          Todos os produtos PATLITE s\u00e3o certificados pelos principais \u00f3rg\u00e3os reguladores nacionais e internacionais.\r\n        <\/p>\r\n\r\n        <div class=\"badges-container\" aria-hidden=\"true\">\r\n          <!-- Certifica\u00e7\u00f5es n\u00e3o precisam de tradu\u00e7\u00e3o -->\r\n          <span class=\"certification-badge\">ISO 9001<\/span>\r\n          <span class=\"certification-badge\">INMETRO<\/span>\r\n          <span class=\"certification-badge\">CE<\/span>\r\n          <span class=\"certification-badge\">UL<\/span>\r\n          <span class=\"certification-badge\">ANATEL<\/span>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n  <\/div>\r\n<\/section>\r\n\r\n<script>\r\n(function(){\r\n  \"use strict\";\r\n\r\n  \/* =========================\r\n     Idioma (padr\u00e3o do projeto)\r\n  ========================= *\/\r\n  function getLang(){\r\n    try{\r\n      const ls = (localStorage.getItem(\"shinwa_lang\") || \"\").toLowerCase();\r\n      if(ls) return ls;\r\n    }catch(e){}\r\n    return (window.shinwaCurrentLang || \"pt-br\").toLowerCase();\r\n  }\r\n\r\n  const i18n = {\r\n    \"pt-br\": {\r\n      \"certs.title\": \"Certifica\u00e7\u00f5es e Qualidade\",\r\n      \"certs.desc\": \"Todos os produtos PATLITE s\u00e3o certificados pelos principais \u00f3rg\u00e3os reguladores nacionais e internacionais.\"\r\n    },\r\n    \"en\": {\r\n      \"certs.title\": \"Certifications & Quality\",\r\n      \"certs.desc\": \"All PATLITE products are certified by major national and international regulatory bodies.\"\r\n    }\r\n  };\r\n\r\n  function t(key){\r\n    const lang = getLang();\r\n    const dict = i18n[lang] || i18n[\"pt-br\"];\r\n    return (dict && dict[key]) ? dict[key] : (i18n[\"pt-br\"][key] || key);\r\n  }\r\n\r\n  function applyI18n(root){\r\n    const scope = root || document;\r\n    scope.querySelectorAll(\"[data-translate]\").forEach(el=>{\r\n      const key = el.dataset.translate;\r\n      el.textContent = t(key);\r\n    });\r\n  }\r\n\r\n  const root = document.querySelector(\"[data-certs-root]\");\r\n  if(!root) return;\r\n\r\n  \/\/ inicial\r\n  applyI18n(root);\r\n\r\n  \/\/ troca global de idioma\r\n  window.addEventListener(\"languageChange\", ()=> applyI18n(root));\r\n})();\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4d55675 e-con-full contato e-flex e-con e-parent\" data-id=\"4d55675\" data-element_type=\"container\" data-e-type=\"container\" id=\"contato\">\n\t\t\t\t<div class=\"elementor-element elementor-element-80b82aa elementor-widget elementor-widget-html\" data-id=\"80b82aa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- =========================================================\r\n     CONTACT \u2014 TITLE + SUBTITLE (Elementor HTML)\r\n     - Troca PT-BR \/ EN\r\n     - Leve (sem watcher pesado)\r\n     - Usa localStorage \"shinwa_lang\" (pt-br | en)\r\n     - Voc\u00ea pode for\u00e7ar manualmente: window.shinwaSetContactLang(\"en\")\r\n     ========================================================= -->\r\n\r\n<div class=\"contact-head\" data-contact-head-root>\r\n  <h2 class=\"contact-title\" data-translate=\"contact.title\">Entre em Contato<\/h2>\r\n  <p class=\"contact-subtitle\" data-translate=\"contact.subtitle\">\r\n    Fale conosco para saber mais sobre as solu\u00e7\u00f5es PATLITE\r\n  <\/p>\r\n<\/div>\r\n\r\n<style>\r\n  .contact-head{\r\n    font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;\r\n    text-align: center;\r\n    margin: 0;\r\n  }\r\n\r\n  .contact-title{\r\n    margin: 0 0 10px 0;\r\n    font-weight: 800;\r\n    letter-spacing: -0.02em;\r\n    color: #111827;\r\n    font-size: 40px; \/* parecido com o print *\/\r\n    line-height: 1.1;\r\n  }\r\n\r\n  .contact-subtitle{\r\n    margin: 0;\r\n    color: #6B7280;\r\n    font-size: 18px;\r\n    line-height: 1.5;\r\n  }\r\n\r\n  @media (max-width: 768px){\r\n    .contact-title{ font-size: 32px; }\r\n    .contact-subtitle{ font-size: 16px; }\r\n  }\r\n<\/style>\r\n\r\n<script>\r\n(function(){\r\n  \"use strict\";\r\n\r\n  const root = document.querySelector(\"[data-contact-head-root]\");\r\n  if(!root) return;\r\n\r\n  const dict = {\r\n    \"pt-br\": {\r\n      \"contact.title\": \"Entre em Contato\",\r\n      \"contact.subtitle\": \"Fale conosco para saber mais sobre as solu\u00e7\u00f5es PATLITE\"\r\n    },\r\n    \"en\": {\r\n      \"contact.title\": \"Get in Touch\",\r\n      \"contact.subtitle\": \"Talk to us to learn more about PATLITE solutions\"\r\n    }\r\n  };\r\n\r\n  function getLang(){\r\n    try{\r\n      const ls = (localStorage.getItem(\"shinwa_lang\") || \"\").toLowerCase();\r\n      if(ls) return ls;\r\n    }catch(e){}\r\n    return \"pt-br\";\r\n  }\r\n\r\n  function apply(lang){\r\n    const l = (lang || \"pt-br\").toLowerCase();\r\n    const d = dict[l] || dict[\"pt-br\"];\r\n\r\n    root.querySelectorAll(\"[data-translate]\").forEach(el=>{\r\n      const key = el.getAttribute(\"data-translate\");\r\n      if(d[key]) el.textContent = d[key];\r\n    });\r\n  }\r\n\r\n  \/\/ para voc\u00ea conseguir disparar a troca sem watcher pesado:\r\n  window.shinwaSetContactLang = function(lang){\r\n    apply(lang);\r\n  };\r\n\r\n  apply(getLang());\r\n})();\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-02ba6fa e-con-full contact-eq-row e-flex e-con e-parent\" data-id=\"02ba6fa\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-e6ffd58 e-con-full patlite-contact e-flex e-con e-child\" data-id=\"e6ffd58\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fd1bbd3 elementor-widget elementor-widget-shortcode\" data-id=\"fd1bbd3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><style id=\"wpforms-css-vars-512\">\n\t\t\t\t#wpforms-512 {\n\t\t\t\t--wpforms-container-padding: 0px;\n--wpforms-container-border-width: 1px;\n--wpforms-container-border-radius: 3px;\n--wpforms-background-color: rgba(0, 0, 0, 0);\n--wpforms-field-size-input-height: 43px;\n--wpforms-field-size-input-spacing: 15px;\n--wpforms-field-size-font-size: 16px;\n--wpforms-field-size-line-height: 19px;\n--wpforms-field-size-padding-h: 14px;\n--wpforms-field-size-checkbox-size: 16px;\n--wpforms-field-size-sublabel-spacing: 5px;\n--wpforms-field-size-icon-size: 1;\n--wpforms-label-size-font-size: 16px;\n--wpforms-label-size-line-height: 19px;\n--wpforms-label-size-sublabel-font-size: 14px;\n--wpforms-label-size-sublabel-line-height: 17px;\n--wpforms-button-size-font-size: 17px;\n--wpforms-button-size-height: 41px;\n--wpforms-button-size-padding-h: 15px;\n--wpforms-button-size-margin-top: 10px;\n--wpforms-container-shadow-size-box-shadow: none;\n\t\t\t}\n\t\t\t<\/style><div class=\"wpforms-container wpforms-container-full wpforms-render-modern\" id=\"wpforms-512\"><form id=\"wpforms-form-512\" class=\"wpforms-validate wpforms-form wpforms-ajax-form\" data-formid=\"512\" method=\"post\" enctype=\"multipart\/form-data\" action=\"\/en\/wp-json\/wp\/v2\/pages\/1355\" data-token=\"ec25edcf36ede5c58975dee0f40d2dfd\" data-token-time=\"1778263176\"><noscript class=\"wpforms-error-noscript\">Please enable JavaScript in your browser to complete this form.<\/noscript><div id=\"wpforms-error-noscript\" style=\"display: none;\">Please enable JavaScript in your browser to complete this form.<\/div><div class=\"wpforms-field-container\"><div id=\"wpforms-512-field_1-container\" class=\"wpforms-field wpforms-field-name\" data-field-id=\"1\"><label class=\"wpforms-field-label\" for=\"wpforms-512-field_1\">Nome <span class=\"wpforms-required-label\" aria-hidden=\"true\">*<\/span><\/label><input type=\"text\" id=\"wpforms-512-field_1\" class=\"wpforms-field-large wpforms-field-required\" name=\"wpforms[fields][1]\" placeholder=\"Nome\" aria-errormessage=\"wpforms-512-field_1-error\" required><\/div><div id=\"wpforms-512-field_2-container\" class=\"wpforms-field wpforms-field-text\" data-field-id=\"2\"><label class=\"wpforms-field-label\" for=\"wpforms-512-field_2\">Empresa <span class=\"wpforms-required-label\" aria-hidden=\"true\">*<\/span><\/label><input type=\"text\" id=\"wpforms-512-field_2\" class=\"wpforms-field-large wpforms-field-required\" name=\"wpforms[fields][2]\" placeholder=\"Nome da Empresa\" aria-errormessage=\"wpforms-512-field_2-error\" required><\/div>\t\t<div id=\"wpforms-512-field_4-container\"\n\t\t\tclass=\"wpforms-field wpforms-field-text\"\n\t\t\tdata-field-type=\"text\"\n\t\t\tdata-field-id=\"4\"\n\t\t\t>\n\t\t\t<label class=\"wpforms-field-label\" for=\"wpforms-512-field_4\" >Assunto Telefone Nome<\/label>\n\t\t\t<input type=\"text\" id=\"wpforms-512-field_4\" class=\"wpforms-field-medium\" name=\"wpforms[fields][4]\" >\n\t\t<\/div>\n\t\t<div id=\"wpforms-512-field_3-container\" class=\"wpforms-field wpforms-field-email\" data-field-id=\"3\"><label class=\"wpforms-field-label\" for=\"wpforms-512-field_3\">E-mail <span class=\"wpforms-required-label\" aria-hidden=\"true\">*<\/span><\/label><input type=\"email\" id=\"wpforms-512-field_3\" class=\"wpforms-field-large wpforms-field-required\" name=\"wpforms[fields][3]\" placeholder=\"Email\" spellcheck=\"false\" aria-errormessage=\"wpforms-512-field_3-error\" required><\/div><div id=\"wpforms-512-field_8-container\" class=\"wpforms-field wpforms-field-text\" data-field-id=\"8\"><label class=\"wpforms-field-label\" for=\"wpforms-512-field_8\">Telefone <span class=\"wpforms-required-label\" aria-hidden=\"true\">*<\/span><\/label><input type=\"text\" id=\"wpforms-512-field_8\" class=\"wpforms-field-large wpforms-field-required\" name=\"wpforms[fields][8]\" placeholder=\"(11) 99999-9999\" aria-errormessage=\"wpforms-512-field_8-error\" required><\/div><div id=\"wpforms-512-field_6-container\" class=\"wpforms-field wpforms-field-text\" data-field-id=\"6\"><label class=\"wpforms-field-label\" for=\"wpforms-512-field_6\">Assunto <span class=\"wpforms-required-label\" aria-hidden=\"true\">*<\/span><\/label><input type=\"text\" id=\"wpforms-512-field_6\" class=\"wpforms-field-large wpforms-field-required\" name=\"wpforms[fields][6]\" placeholder=\"Assunto da sua mensagem\" aria-errormessage=\"wpforms-512-field_6-error\" required><\/div><div id=\"wpforms-512-field_9-container\" class=\"wpforms-field wpforms-field-textarea campo-mensagem\" data-field-id=\"9\"><label class=\"wpforms-field-label\" for=\"wpforms-512-field_9\">Mensagem <span class=\"wpforms-required-label\" aria-hidden=\"true\">*<\/span><\/label><textarea id=\"wpforms-512-field_9\" class=\"wpforms-field-large wpforms-field-required\" name=\"wpforms[fields][9]\" placeholder=\"Mensagem\" aria-errormessage=\"wpforms-512-field_9-error\" required><\/textarea><\/div><script>\n\t\t\t\t( function() {\n\t\t\t\t\tconst style = document.createElement( 'style' );\n\t\t\t\t\tstyle.appendChild( document.createTextNode( '#wpforms-512-field_4-container { position: absolute !important; overflow: hidden !important; display: inline !important; height: 1px !important; width: 1px !important; z-index: -1000 !important; padding: 0 !important; } #wpforms-512-field_4-container input { visibility: hidden; } #wpforms-conversational-form-page #wpforms-512-field_4-container label { counter-increment: none; }' ) );\n\t\t\t\t\tdocument.head.appendChild( style );\n\t\t\t\t\tdocument.currentScript?.remove();\n\t\t\t\t} )();\n\t\t\t<\/script><\/div><!-- .wpforms-field-container --><div class=\"wpforms-submit-container\" ><input type=\"hidden\" name=\"wpforms[id]\" value=\"512\"><input type=\"hidden\" name=\"page_title\" value=\"\"><input type=\"hidden\" name=\"page_url\" value=\"https:\/\/shinwa-br.com.br\/en\/wp-json\/wp\/v2\/pages\/1355\"><input type=\"hidden\" name=\"url_referer\" value=\"\"><button type=\"submit\" name=\"wpforms[submit]\" id=\"wpforms-submit-512\" class=\"wpforms-submit\" data-alt-text=\"Enviando\u2026\" data-submit-text=\"Enviar\" aria-live=\"assertive\" value=\"wpforms-submit\">Enviar<\/button><img decoding=\"async\" src=\"https:\/\/shinwa-br.com.br\/wp-content\/plugins\/wpforms-lite\/assets\/images\/submit-spin.svg\" class=\"wpforms-submit-spinner\" style=\"display: none;\" width=\"26\" height=\"26\" alt=\"Loading\"><\/div><\/form><\/div>  <!-- .wpforms-container --><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c96068d e-con-full e-flex e-con e-child\" data-id=\"c96068d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8c2d700 elementor-widget elementor-widget-html\" data-id=\"8c2d700\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- =========================================================\r\n     SHINWA \u2014 CONTACT INFO CARDS (I18N READY)\r\n     \u2705 PT-BR \/ EN (data-translate)\r\n     \u2705 Escuta languageChange\r\n     \u2705 Sem watcher infinito\r\n     Cole em um widget HTML do Elementor\r\n     ========================================================= -->\r\n\r\n<style>\r\n\/* ========= WRAP ========= *\/\r\n.contact-info-container{\r\n  display:flex;\r\n  flex-direction:column;\r\n  gap:24px;\r\n  width:100%;\r\n  height:100%;\r\n  min-height:100%;\r\n}\r\n\r\n\/* ========= CARDS ========= *\/\r\n.info-card,\r\n.support-card{\r\n  border:1px solid #E5E7EB;\r\n  border-radius:12px;\r\n  box-shadow:0 1px 3px rgba(0,0,0,.08);\r\n  overflow:hidden;\r\n  background:#fff;\r\n}\r\n\r\n\/* >>> faz o card 1 esticar e virar layout de coluna *\/\r\n.info-card{\r\n  flex:1;\r\n  display:flex;\r\n  flex-direction:column;\r\n}\r\n\r\n\/* ========= CARD 1 ========= *\/\r\n.info-card .card-header{\r\n  padding:22px 22px 12px 22px;\r\n}\r\n.info-card .card-title{\r\n  margin:0;\r\n  font-size:18px;\r\n  font-weight:600;\r\n  color:#111827;\r\n  text-align:left;\r\n}\r\n\r\n\/* conte\u00fado do card 1 ocupa o espa\u00e7o restante *\/\r\n.info-card .card-content{\r\n  padding:10px 17px 22px 22px;\r\n  display:flex;\r\n  flex-direction:column;\r\n  gap:22px;\r\n  flex:1;\r\n  min-height:0;\r\n}\r\n\r\n\/* itens *\/\r\n.contact-item{\r\n  display:flex;\r\n  gap:16px;\r\n  align-items:flex-start;\r\n  text-align:left !important;\r\n}\r\n\r\n\/* quadrado azul do \u00edcone *\/\r\n.icon-container{\r\n  width:42px;\r\n  height:42px;\r\n  border-radius:10px;\r\n  background:#DBEAFE;\r\n  display:flex;\r\n  align-items:center;\r\n  justify-content:center;\r\n  flex-shrink:0;\r\n}\r\n\r\n\/* TRAVA o SVG no centro e evita CSS global quebrar *\/\r\n.icon-container svg{\r\n  width:22px !important;\r\n  height:22px !important;\r\n  display:block !important;\r\n  stroke:currentColor !important;\r\n  fill:none !important;\r\n  stroke-width:2 !important;\r\n  stroke-linecap:round !important;\r\n  stroke-linejoin:round !important;\r\n  color:#2563EB !important;\r\n}\r\n\r\n.text-content{\r\n  flex:1;\r\n  min-width:0;\r\n  text-align:left !important;\r\n}\r\n\r\n.label{\r\n  font-weight:600;\r\n  color:#111827;\r\n  font-size:16px;\r\n  margin-bottom:4px;\r\n  text-align:left !important;\r\n}\r\n\r\n.value{\r\n  color:#4B5563;\r\n  font-size:15px;\r\n  line-height:1.55;\r\n  overflow-wrap:anywhere;\r\n  text-align:left !important;\r\n}\r\n\r\n\/* ========= CARD 2 (SUPORTE) ========= *\/\r\n.support-card{\r\n  background:#EFF6FF;\r\n  flex:0 0 auto;\r\n}\r\n\r\n.support-content{\r\n  padding:22px;\r\n  text-align:center;\r\n}\r\n\r\n.support-icon-container{\r\n  width:54px;\r\n  height:54px;\r\n  border-radius:12px;\r\n  background:#DBEAFE;\r\n  margin:0 auto 14px auto;\r\n  display:flex;\r\n  align-items:center;\r\n  justify-content:center;\r\n}\r\n\r\n.support-icon-container svg{\r\n  width:26px !important;\r\n  height:26px !important;\r\n  display:block !important;\r\n  stroke:currentColor !important;\r\n  fill:none !important;\r\n  stroke-width:2 !important;\r\n  stroke-linecap:round !important;\r\n  stroke-linejoin:round !important;\r\n  color:#2563EB !important;\r\n}\r\n\r\n.support-title{\r\n  margin:0 0 8px 0;\r\n  font-size:16px;\r\n  font-weight:600;\r\n  color:#111827;\r\n}\r\n\r\n.support-description{\r\n  margin:0 0 14px 0;\r\n  font-size:14px;\r\n  color:#4B5563;\r\n  line-height:1.45;\r\n}\r\n\r\n.support-button{\r\n  width:100%;\r\n  background:transparent !important;\r\n  border:1px solid #D1D5DB;\r\n  color:#374151 !important;\r\n  padding:10px 16px;\r\n  border-radius:8px;\r\n  font-size:14px;\r\n  font-weight:500;\r\n  cursor:pointer;\r\n  transition: background-color .2s ease, border-color .2s ease, color .2s ease;\r\n}\r\n.support-button:hover{\r\n  background:#DBEAFE !important;\r\n  border-color:#93C5FD !important;\r\n  color:#1D4ED8 !important;\r\n}\r\n.support-button:focus{\r\n  outline:none;\r\n  box-shadow:0 0 0 3px rgba(59,130,246,.25);\r\n}\r\n<\/style>\r\n\r\n<div class=\"contact-info-container\" data-contact-root>\r\n\r\n  <!-- CARD 1: Informa\u00e7\u00f5es -->\r\n  <div class=\"info-card\">\r\n    <div class=\"card-header\">\r\n      <h3 class=\"card-title\" data-translate=\"contact.cardTitle\">Informa\u00e7\u00f5es de Contato<\/h3>\r\n    <\/div>\r\n\r\n    <div class=\"card-content\">\r\n\r\n      <!-- Telefone -->\r\n      <div class=\"contact-item\">\r\n        <div class=\"icon-container\">\r\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\r\n            <path d=\"M22 16.92v3a2 2 0 0 1-2.18 2A19.79 19.79 0 0 1 3 5.11 2 2 0 0 1 5.11 3h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L9.09 10.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"\/>\r\n          <\/svg>\r\n        <\/div>\r\n        <div class=\"text-content\">\r\n          <div class=\"label\" data-translate=\"contact.phoneLabel\">Telefone<\/div>\r\n          <div class=\"value\">(15) 3212-9100<\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <!-- Email -->\r\n      <div class=\"contact-item\">\r\n        <div class=\"icon-container\">\r\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\r\n            <rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\"><\/rect>\r\n            <path d=\"m22 7-10 6L2 7\"><\/path>\r\n          <\/svg>\r\n        <\/div>\r\n        <div class=\"text-content\">\r\n          <div class=\"label\" data-translate=\"contact.emailLabel\">Email<\/div>\r\n          <div class=\"value\">contato@shinwa-br.com.br<\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <!-- Endere\u00e7o -->\r\n      <div class=\"contact-item\">\r\n        <div class=\"icon-container\">\r\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\r\n            <path d=\"M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0Z\"><\/path>\r\n            <circle cx=\"12\" cy=\"10\" r=\"3\"><\/circle>\r\n          <\/svg>\r\n        <\/div>\r\n        <div class=\"text-content\">\r\n          <div class=\"label\" data-translate=\"contact.addrLabel\">Endere\u00e7o<\/div>\r\n          <div class=\"value\">\r\n            <span data-translate=\"contact.addrLine1\">R. Jo\u00e3o Antunes do Nascimento, 77<\/span><br>\r\n            <span data-translate=\"contact.addrLine2\">Jd. Santa Ros\u00e1lia<\/span><br>\r\n            <span data-translate=\"contact.addrLine3\">Sorocaba - SP, 18095-470<\/span>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <!-- Hor\u00e1rio -->\r\n      <div class=\"contact-item\">\r\n        <div class=\"icon-container\">\r\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\r\n            <circle cx=\"12\" cy=\"12\" r=\"10\"><\/circle>\r\n            <path d=\"M12 6v6l4 2\"><\/path>\r\n          <\/svg>\r\n        <\/div>\r\n        <div class=\"text-content\">\r\n          <div class=\"label\" data-translate=\"contact.hoursLabel\">Hor\u00e1rio<\/div>\r\n          <div class=\"value\" data-translate=\"contact.hoursValue\">Segunda a Sexta - 8:00 \u00e0s 18:00<\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- CARD 2: Suporte -->\r\n  <div class=\"support-card\">\r\n    <div class=\"support-content\">\r\n\r\n      <div class=\"support-icon-container\">\r\n        <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\r\n          <path d=\"M22 16.92v3a2 2 0 0 1-2.18 2A19.79 19.79 0 0 1 3 5.11 2 2 0 0 1 5.11 3h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L9.09 10.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"\/>\r\n          <path d=\"M14 2a8 8 0 0 1 8 8\"><\/path>\r\n          <path d=\"M14 6a4 4 0 0 1 4 4\"><\/path>\r\n        <\/svg>\r\n      <\/div>\r\n\r\n      <h3 class=\"support-title\" data-translate=\"contact.supportTitle\">Suporte T\u00e9cnico<\/h3>\r\n      <p class=\"support-description\" data-translate=\"contact.supportDesc\">\r\n        Precisando de ajuda t\u00e9cnica? Nossa equipe especializada est\u00e1 pronta para atender.\r\n      <\/p>\r\n\r\n<a class=\"support-button\" href=\"https:\/\/wa.me\/5515997689138?text=Ol%C3%A1%2C%20preciso%20de%20suporte%20t%C3%A9cnico.\" target=\"_blank\" rel=\"noopener\" data-translate=\"contact.supportBtn\">\r\n  Falar com T\u00e9cnico\r\n<\/a>\r\n\r\n\r\n    <\/div>\r\n  <\/div>\r\n\r\n<\/div>\r\n\r\n<script>\r\n(function(){\r\n  \"use strict\";\r\n\r\n  \/* =========================\r\n     Idioma (padr\u00e3o do seu projeto)\r\n  ========================= *\/\r\n  function getLang(){\r\n    try{\r\n      const ls = (localStorage.getItem(\"shinwa_lang\") || \"\").toLowerCase();\r\n      if(ls) return ls;\r\n    }catch(e){}\r\n    return (window.shinwaCurrentLang || \"pt-br\").toLowerCase();\r\n  }\r\n\r\n  const i18n = {\r\n    \"pt-br\": {\r\n      \"contact.cardTitle\":\"Informa\u00e7\u00f5es de Contato\",\r\n      \"contact.phoneLabel\":\"Telefone\",\r\n      \"contact.emailLabel\":\"Email\",\r\n      \"contact.addrLabel\":\"Endere\u00e7o\",\r\n      \"contact.addrLine1\":\"R. Jo\u00e3o Antunes do Nascimento, 77\",\r\n      \"contact.addrLine2\":\"Jd. Santa Ros\u00e1lia\",\r\n      \"contact.addrLine3\":\"Sorocaba - SP, 18095-470\",\r\n      \"contact.hoursLabel\":\"Hor\u00e1rio\",\r\n      \"contact.hoursValue\":\"Segunda a Sexta - 8:00 \u00e0s 18:00\",\r\n\r\n      \"contact.supportTitle\":\"Suporte T\u00e9cnico\",\r\n      \"contact.supportDesc\":\"Precisando de ajuda t\u00e9cnica? Nossa equipe especializada est\u00e1 pronta para atender.\",\r\n      \"contact.supportBtn\":\"Falar com T\u00e9cnico\"\r\n    },\r\n    \"en\": {\r\n      \"contact.cardTitle\":\"Contact Information\",\r\n      \"contact.phoneLabel\":\"Phone\",\r\n      \"contact.emailLabel\":\"Email\",\r\n      \"contact.addrLabel\":\"Address\",\r\n      \"contact.addrLine1\":\"R. Jo\u00e3o Antunes do Nascimento, 77\",\r\n      \"contact.addrLine2\":\"Jardim Santa Ros\u00e1lia\",\r\n      \"contact.addrLine3\":\"Sorocaba - SP, 18095-470\",\r\n      \"contact.hoursLabel\":\"Hours\",\r\n      \"contact.hoursValue\":\"Monday to Friday - 8:00 AM to 6:00 PM\",\r\n\r\n      \"contact.supportTitle\":\"Technical Support\",\r\n      \"contact.supportDesc\":\"Need technical help? Our specialized team is ready to assist you.\",\r\n      \"contact.supportBtn\":\"Talk to a Technician\"\r\n    }\r\n  };\r\n\r\n  function t(key){\r\n    const lang = getLang();\r\n    return (i18n[lang] && i18n[lang][key]) || (i18n[\"pt-br\"][key]) || \"\";\r\n  }\r\n\r\n  function applyI18n(root){\r\n    const scope = root || document;\r\n    scope.querySelectorAll(\"[data-translate]\").forEach(el=>{\r\n      const key = el.dataset.translate;\r\n      const val = t(key);\r\n      if(val) el.textContent = val;\r\n    });\r\n  }\r\n\r\n  const root = document.querySelector(\"[data-contact-root]\");\r\n  if(!root) return;\r\n\r\n  \/\/ aplica j\u00e1\r\n  applyI18n(root);\r\n\r\n  \/\/ troca de idioma\r\n  window.addEventListener(\"languageChange\", ()=>{\r\n    applyI18n(root);\r\n  });\r\n\r\n})();\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6474146 e-con-full e-flex e-con e-parent\" data-id=\"6474146\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fb0f1d0 elementor-widget elementor-widget-html\" data-id=\"fb0f1d0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- =========================================================\r\n     SHINWA \/ PATLITE \u2014 WPForms 512 (I18N + M\u00e1scara Telefone BR)\r\n     \u2705 PT-BR \/ EN (labels + placeholders + t\u00edtulo + bot\u00e3o)\r\n     \u2705 Telefone (ID #8): m\u00e1scara inteligente (fixo 10d \/ celular 11d)\r\n     \u2705 Sem watcher infinito (retry curto)\r\n     \u2705 Escuta languageChange\r\n     \u2705 Cole no FOOTER (Elementor Custom Code \/ tema \/ plugin)\r\n     ========================================================= -->\r\n\r\n<script>\r\n(function(){\r\n  \"use strict\";\r\n\r\n  \/* =========================\r\n     Idioma (padr\u00e3o do seu projeto)\r\n  ========================= *\/\r\n  function getLang(){\r\n    try{\r\n      const ls = (localStorage.getItem(\"shinwa_lang\") || \"\").toLowerCase();\r\n      if(ls) return ls;\r\n    }catch(e){}\r\n    return (window.shinwaCurrentLang || \"pt-br\").toLowerCase();\r\n  }\r\n\r\n  \/* =========================\r\n     Dicion\u00e1rio (WPForms 512)\r\n  ========================= *\/\r\n  const I18N = {\r\n    \"pt-br\": {\r\n      \"form.title\": \"Solicite seu or\u00e7amento\",\r\n      \"submit\": \"Enviar\",\r\n\r\n      \"f_1.label\": \"Nome\",\r\n      \"f_1.ph\": \"Seu nome completo\",\r\n\r\n      \"f_2.label\": \"Empresa\",\r\n      \"f_2.ph\": \"Nome da empresa\",\r\n\r\n      \"f_3.label\": \"E-mail\",\r\n      \"f_3.ph\": \"seuemail@empresa.com\",\r\n\r\n      \"f_8.label\": \"Telefone\",\r\n      \"f_8.ph\": \"(11) 99999-9999\",\r\n\r\n      \"f_6.label\": \"Assunto\",\r\n      \"f_6.ph\": \"Como podemos ajudar?\",\r\n\r\n      \"f_9.label\": \"Mensagem\",\r\n      \"f_9.ph\": \"Descreva sua necessidade (produtos, quantidades, aplica\u00e7\u00e3o, etc.)\"\r\n    },\r\n\r\n    \"en\": {\r\n      \"form.title\": \"Request a Quote\",\r\n      \"submit\": \"Send\",\r\n\r\n      \"f_1.label\": \"Name\",\r\n      \"f_1.ph\": \"Your full name\",\r\n\r\n      \"f_2.label\": \"Company\",\r\n      \"f_2.ph\": \"Company name\",\r\n\r\n      \"f_3.label\": \"Email\",\r\n      \"f_3.ph\": \"you@company.com\",\r\n\r\n      \"f_8.label\": \"Phone\",\r\n      \"f_8.ph\": \"+55 (11) 99999-9999\",\r\n\r\n      \"f_6.label\": \"Subject\",\r\n      \"f_6.ph\": \"How can we help?\",\r\n\r\n      \"f_9.label\": \"Message\",\r\n      \"f_9.ph\": \"Describe your request (products, quantities, application, etc.)\"\r\n    }\r\n  };\r\n\r\n  function t(key, lang){\r\n    const L = (lang || getLang());\r\n    return (I18N[L] && I18N[L][key]) || (I18N[\"pt-br\"][key]) || \"\";\r\n  }\r\n\r\n  \/* =========================\r\n     Helpers: i18n no WPForms\r\n  ========================= *\/\r\n  function ensureTitle(form){\r\n    let title = form.querySelector(\":scope > .patlite-form-title\");\r\n    if(!title){\r\n      title = document.createElement(\"div\");\r\n      title.className = \"patlite-form-title\";\r\n      form.insertBefore(title, form.firstChild);\r\n    }\r\n    return title;\r\n  }\r\n\r\n  function setLabel(fieldEl, value){\r\n    if(!value) return;\r\n    const lbl = fieldEl.querySelector(\".wpforms-field-label\");\r\n    if(!lbl) return;\r\n\r\n    const req = lbl.querySelector(\".wpforms-required-label\");\r\n\r\n    Array.from(lbl.childNodes).forEach(n=>{\r\n      if(n.nodeType === 3) n.remove();\r\n    });\r\n\r\n    if(req){\r\n      lbl.insertBefore(document.createTextNode(value + \" \"), req);\r\n    }else{\r\n      lbl.textContent = value;\r\n    }\r\n  }\r\n\r\n  function setPlaceholder(fieldEl, value){\r\n    if(!value) return;\r\n    const input = fieldEl.querySelector(\"input[type='text'],input[type='email'],input[type='tel'],input[type='number'],textarea\");\r\n    if(input) input.setAttribute(\"placeholder\", value);\r\n  }\r\n\r\n  function setSubmitText(form, value){\r\n    if(!value) return;\r\n    const btn = form.querySelector(\"button[type='submit'], .wpforms-submit\");\r\n    if(btn) btn.textContent = value;\r\n  }\r\n\r\n  \/* =========================\r\n     M\u00e1scara BR: fixo\/celular\r\n     - Aceita 10 (fixo) ou 11 (celular) d\u00edgitos\r\n     - Formata em tempo real:\r\n       (AA) NNNN-NNNN  (10)\r\n       (AA) NNNNN-NNNN (11)\r\n     - Aceita colar com +55, espa\u00e7os, etc.\r\n  ========================= *\/\r\n  function onlyDigits(v){ return String(v || \"\").replace(\/\\D+\/g, \"\"); }\r\n\r\n  function formatBRPhone(digits){\r\n    \/\/ remove 55 se usu\u00e1rio colar com DDI\r\n    if(digits.length >= 12 && digits.startsWith(\"55\")) digits = digits.slice(2);\r\n\r\n    \/\/ limita a 11 (DDD + 9 d\u00edgitos)\r\n    digits = digits.slice(0, 11);\r\n\r\n    const ddd = digits.slice(0, 2);\r\n    const rest = digits.slice(2);\r\n\r\n    if(digits.length === 0) return \"\";\r\n    if(digits.length < 3) return \"(\" + digits;                  \/\/ \"(\" + \"1\" \/ \"11\"\r\n    if(digits.length < 7) return \"(\" + ddd + \") \" + rest;       \/\/ \"(11) 9\"...\r\n    \/\/ 10 d\u00edgitos -> 4-4 \/ 11 d\u00edgitos -> 5-4\r\n    const isMobile = rest.length > 8; \/\/ 9 d\u00edgitos ap\u00f3s DDD\r\n    const p1 = isMobile ? rest.slice(0, 5) : rest.slice(0, 4);\r\n    const p2 = isMobile ? rest.slice(5)    : rest.slice(4);\r\n    return \"(\" + ddd + \") \" + p1 + (p2 ? \"-\" + p2 : \"\");\r\n  }\r\n\r\n  function setCaretToEnd(el){\r\n    try{\r\n      const len = el.value.length;\r\n      el.setSelectionRange(len, len);\r\n    }catch(e){}\r\n  }\r\n\r\n  function attachPhoneMask(scope){\r\n    \/\/ Campo Telefone = ID 8\r\n    const form = scope.querySelector(\"form#wpforms-form-512\");\r\n    if(!form) return;\r\n\r\n    const field = form.querySelector(\".wpforms-field[data-field-id='8']\");\r\n    if(!field) return;\r\n\r\n    const input = field.querySelector(\"input[type='tel'], input[type='text'], input\");\r\n    if(!input) return;\r\n\r\n    \/\/ evita duplicar listeners\r\n    if(input.dataset.phoneMaskAttached === \"1\") return;\r\n    input.dataset.phoneMaskAttached = \"1\";\r\n\r\n    \/\/ sugere teclado num\u00e9rico no mobile\r\n    input.setAttribute(\"inputmode\", \"tel\");\r\n    input.setAttribute(\"autocomplete\", \"tel\");\r\n\r\n    \/\/ formata valor existente\r\n    const initial = onlyDigits(input.value);\r\n    input.value = formatBRPhone(initial);\r\n\r\n    const onInput = ()=>{\r\n      const digits = onlyDigits(input.value);\r\n      input.value = formatBRPhone(digits);\r\n      setCaretToEnd(input);\r\n    };\r\n\r\n    \/\/ input = digita\u00e7\u00e3o; paste = colagem\r\n    input.addEventListener(\"input\", onInput);\r\n    input.addEventListener(\"paste\", ()=>{\r\n      setTimeout(onInput, 0);\r\n    });\r\n\r\n    \/\/ valida\u00e7\u00e3o leve ao sair (opcional)\r\n    input.addEventListener(\"blur\", ()=>{\r\n      const digits = onlyDigits(input.value);\r\n      \/\/ remove 55 se colado\r\n      const d = (digits.startsWith(\"55\") && digits.length >= 12) ? digits.slice(2) : digits;\r\n      \/\/ se ficou com tamanho inv\u00e1lido (n\u00e3o 10\/11), mant\u00e9m mas n\u00e3o quebra nada\r\n      input.value = formatBRPhone(d);\r\n    });\r\n  }\r\n\r\n  \/* =========================\r\n     Apply translations + mask\r\n  ========================= *\/\r\n  function apply(langOverride){\r\n    const lang = (langOverride || getLang());\r\n    const scopes = document.querySelectorAll(\".patlite-contact\");\r\n    if(!scopes.length) return false;\r\n\r\n    let applied = false;\r\n\r\n    scopes.forEach(scope=>{\r\n      const form = scope.querySelector(\"form#wpforms-form-512\");\r\n      if(!form) return;\r\n\r\n      \/\/ t\u00edtulo\r\n      ensureTitle(form).textContent = t(\"form.title\", lang);\r\n\r\n      \/\/ fields ids\r\n      const fieldIds = [1,2,3,8,6,9];\r\n      fieldIds.forEach(id=>{\r\n        const fieldEl = form.querySelector(\".wpforms-field[data-field-id='\"+id+\"']\");\r\n        if(!fieldEl) return;\r\n        setLabel(fieldEl, t(\"f_\"+id+\".label\", lang));\r\n        setPlaceholder(fieldEl, t(\"f_\"+id+\".ph\", lang));\r\n      });\r\n\r\n      \/\/ submit\r\n      setSubmitText(form, t(\"submit\", lang));\r\n\r\n      \/\/ m\u00e1scara telefone\r\n      attachPhoneMask(scope);\r\n\r\n      applied = true;\r\n    });\r\n\r\n    return applied;\r\n  }\r\n\r\n  \/* =========================\r\n     Boot (sem watcher infinito)\r\n  ========================= *\/\r\n  function boot(){\r\n    if(apply()) return;\r\n\r\n    let tries = 0;\r\n    const maxTries = 30; \/\/ 3s\r\n    const timer = setInterval(()=>{\r\n      tries++;\r\n      if(apply() || tries >= maxTries){\r\n        clearInterval(timer);\r\n      }\r\n    }, 100);\r\n  }\r\n\r\n  if(document.readyState === \"loading\"){\r\n    document.addEventListener(\"DOMContentLoaded\", boot, { once:true });\r\n  }else{\r\n    boot();\r\n  }\r\n\r\n  window.addEventListener(\"languageChange\", (e)=>{\r\n    const lang = e && e.detail && e.detail.language ? e.detail.language : null;\r\n    apply(lang);\r\n  });\r\n\r\n})();\r\n<\/script>\r\n\r\n<style>\r\n\/* T\u00edtulo \"falso\" criado pelo JS (traduz\u00edvel) *\/\r\n.patlite-contact form#wpforms-form-512 > .patlite-form-title{\r\n  display:block;\r\n  font-size:18px;\r\n  font-weight:600;\r\n  color:#111827;\r\n  padding: 22px 22px 12px 22px;\r\n}\r\n<\/style>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f516a5f e-con-full e-flex e-con e-parent\" data-id=\"f516a5f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-30ccc34 elementor-widget elementor-widget-html\" data-id=\"30ccc34\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- =========================================================\r\n     SHINWA FOOTER \u2014 PATLITE (Elementor HTML)\r\n     - Remove Facebook\/Instagram\r\n     - Add WhatsApp (opens app + starts chat)\r\n     - Keep LinkedIn\r\n     - PT-BR \/ EN via data-translate (optional)\r\n     ========================================================= -->\r\n\r\n<style>\r\n\/* ========================================\r\n   FOOTER - ESTILOS\r\n   ======================================== *\/\r\n\r\n.shinwa-footer {\r\n  background: #111827;\r\n  color: #ffffff;\r\n}\r\n\r\n.shinwa-footer-container {\r\n  max-width: 1280px;\r\n  margin: 0 auto;\r\n  padding: 64px 16px;\r\n}\r\n\r\n\/* GRID PRINCIPAL *\/\r\n.footer-grid {\r\n  display: grid;\r\n  grid-template-columns: 1fr;\r\n  gap: 32px;\r\n  margin-bottom: 32px;\r\n}\r\n\r\n@media (min-width: 768px) {\r\n  .footer-grid { grid-template-columns: repeat(2, 1fr); }\r\n}\r\n\r\n@media (min-width: 1024px) {\r\n  .footer-grid { grid-template-columns: repeat(4, 1fr); }\r\n}\r\n\r\n\/* COLUNA 1 *\/\r\n.footer-col-1 {\r\n  display: flex;\r\n  flex-direction: column;\r\n  gap: 24px;\r\n}\r\n\r\n.footer-logos {\r\n  display: flex;\r\n  flex-direction: column;\r\n  gap: 16px;\r\n}\r\n\r\n.footer-logo-shinwa {\r\n  height: auto;\r\n  width: 200px;\r\n  filter: brightness(0) invert(1);\r\n}\r\n\r\n.footer-description {\r\n  color: #d1d5db;\r\n  font-size: 14px;\r\n  line-height: 1.625;\r\n  margin: 0;\r\n}\r\n\r\n.footer-patlite-area {\r\n  display: flex;\r\n  align-items: center;\r\n  gap: 12px;\r\n}\r\n\r\n.footer-patlite-text {\r\n  color: #9ca3af;\r\n  font-size: 14px;\r\n  margin: 0;\r\n}\r\n\r\n.footer-logo-patlite {\r\n  height: auto;\r\n  width: 90px;\r\n  filter: brightness(0) invert(1);\r\n}\r\n\r\n\/* COLUNAS 2\/3\/4 *\/\r\n.footer-section-title {\r\n  font-weight: 600;\r\n  font-size: 16px;\r\n  color: #ffffff;\r\n  margin: 0 0 24px;\r\n}\r\n\r\n.footer-links-list {\r\n  display: flex;\r\n  flex-direction: column;\r\n  gap: 12px;\r\n  list-style: none;\r\n  padding: 0;\r\n  margin: 0;\r\n}\r\n\r\n.footer-link-item { font-size: 14px; }\r\n\r\n.footer-link {\r\n  color: #d1d5db;\r\n  text-decoration: none;\r\n  transition: color 0.2s ease;\r\n}\r\n\r\n.footer-link:hover { color: #ffffff; }\r\n\r\n\/* CONTATO *\/\r\n.footer-contact-list {\r\n  display: flex;\r\n  flex-direction: column;\r\n  gap: 16px;\r\n  font-size: 14px;\r\n  margin-bottom: 24px;\r\n}\r\n\r\n.footer-contact-item {\r\n  display: flex;\r\n  align-items: flex-start;\r\n  gap: 12px;\r\n  color: #d1d5db;\r\n}\r\n\r\n.footer-contact-item.centered { align-items: center; }\r\n\r\n.footer-contact-icon {\r\n  width: 16px;\r\n  height: 16px;\r\n  flex-shrink: 0;\r\n  margin-top: 2px;\r\n  color: #d1d5db;\r\n}\r\n\r\n.footer-contact-icon.no-margin { margin-top: 0; }\r\n\r\n.footer-address { display: flex; flex-direction: column; }\r\n\r\n\/* SOCIAL *\/\r\n.footer-social {\r\n  display: flex;\r\n  gap: 12px;\r\n}\r\n\r\n.footer-social-btn {\r\n  width: 36px;\r\n  height: 36px;\r\n  padding: 0;\r\n  background: transparent;\r\n  border: none;\r\n  border-radius: 8px;\r\n  transition: background 0.2s ease;\r\n  cursor: pointer;\r\n  display: inline-flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n  text-decoration: none;\r\n}\r\n\r\n.footer-social-btn:hover { background: rgba(255, 255, 255, 0.1); }\r\n\r\n.footer-social-icon {\r\n  width: 16px;\r\n  height: 16px;\r\n  color: #d1d5db;\r\n}\r\n\r\n\/* SEPARADOR *\/\r\n.footer-separator {\r\n  height: 1px;\r\n  background: #374151;\r\n  margin: 32px 0;\r\n  width: 100%;\r\n  border: none;\r\n}\r\n\r\n\/* COPYRIGHT *\/\r\n.footer-copyright {\r\n  display: flex;\r\n  flex-direction: column;\r\n  align-items: center;\r\n  gap: 16px;\r\n  font-size: 14px;\r\n  color: #9ca3af;\r\n  text-align: center;\r\n}\r\n\r\n@media (min-width: 768px) {\r\n  .footer-copyright {\r\n    flex-direction: row;\r\n    justify-content: space-between;\r\n    text-align: left;\r\n  }\r\n}\r\n\r\n.footer-copyright-text,\r\n.footer-disclaimer {\r\n  margin: 0;\r\n}\r\n\r\n@media (min-width: 640px) {\r\n  .shinwa-footer-container { padding: 64px 24px; }\r\n}\r\n\r\n@media (min-width: 1024px) {\r\n  .shinwa-footer-container { padding: 64px 32px; }\r\n}\r\n<\/style>\r\n\r\n<footer class=\"shinwa-footer\" data-footer-root>\r\n  <div class=\"shinwa-footer-container\">\r\n\r\n    <div class=\"footer-grid\">\r\n\r\n      <!-- COLUNA 1 -->\r\n      <div class=\"footer-col-1\">\r\n        <div class=\"footer-logos\">\r\n          <img decoding=\"async\"\r\n            src=\"https:\/\/shinwa-br.com.br\/wp-content\/uploads\/2025\/11\/7c66578d-4990-4205-8ab7-50aa7eefea56.png\"\r\n            alt=\"Shinwa do Brasil\"\r\n            class=\"footer-logo-shinwa\"\r\n          \/>\r\n\r\n          <p class=\"footer-description\" data-translate=\"about.description\">\r\n            A Shinwa do Brasil \u00e9 representante oficial da PATLITE no mercado brasileiro, oferecendo solu\u00e7\u00f5es completas em sinaliza\u00e7\u00e3o industrial. Nossa parceria garante produtos originais, suporte t\u00e9cnico especializado e atendimento personalizado para cada projeto.\r\n          <\/p>\r\n        <\/div>\r\n\r\n        <div class=\"footer-patlite-area\">\r\n          <p class=\"footer-patlite-text\" data-translate=\"hero.subtitle\">\r\n            Representante oficial PATLITE no Brasil\r\n          <\/p>\r\n\r\n          <!-- Troque a URL abaixo pela logo da PATLITE quando tiver -->\r\n          <img decoding=\"async\"\r\n            src=\"https:\/\/shinwa-br.com.br\/wp-content\/uploads\/2025\/11\/image-removebg-preview.png\"\r\n            alt=\"PATLITE\"\r\n            class=\"footer-logo-patlite\"\r\n          \/>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <!-- COLUNA 2: PRODUTOS -->\r\n      <div>\r\n        <h3 class=\"footer-section-title\" data-translate=\"footer.products\">Produtos<\/h3>\r\n        <ul class=\"footer-links-list\">\r\n          <li class=\"footer-link-item\"><a href=\"#products-section\" class=\"footer-link\" data-translate=\"footer.towers\">Torres de Sinaliza\u00e7\u00e3o<\/a><\/li>\r\n          <li class=\"footer-link-item\"><a href=\"#products-section\" class=\"footer-link\" data-translate=\"footer.audible\">Sinalizadores Sonoros<\/a><\/li>\r\n          <li class=\"footer-link-item\"><a href=\"#products-section\" class=\"footer-link\" data-translate=\"footer.visual\">Sinalizadores Visuais<\/a><\/li>\r\n          <li class=\"footer-link-item\"><a href=\"#products-section\" class=\"footer-link\" data-translate=\"footer.smart\">Sistemas Inteligentes<\/a><\/li>\r\n          <li class=\"footer-link-item\"><a href=\"#products-section\" class=\"footer-link\" data-translate=\"footer.accessories\">Acess\u00f3rios<\/a><\/li>\r\n        <\/ul>\r\n      <\/div>\r\n\r\n      <!-- COLUNA 3: EMPRESA -->\r\n      <div>\r\n        <h3 class=\"footer-section-title\" data-translate=\"footer.company\">Empresa<\/h3>\r\n        <ul class=\"footer-links-list\">\r\n          <li class=\"footer-link-item\"><a href=\"#about-section\" class=\"footer-link\" data-translate=\"footer.about\">Sobre N\u00f3s<\/a><\/li>\r\n          <li class=\"footer-link-item\"><a href=\"#certs-section\" class=\"footer-link\" data-translate=\"footer.certs\">Certifica\u00e7\u00f5es<\/a><\/li>\r\n          <li class=\"footer-link-item\"><a href=\"#contact-section\" class=\"footer-link\" data-translate=\"footer.tech\">Suporte T\u00e9cnico<\/a><\/li>\r\n          <li class=\"footer-link-item\"><a href=\"#warranty-section\" class=\"footer-link\" data-translate=\"footer.warranty\">Garantia<\/a><\/li>\r\n          <li class=\"footer-link-item\"><a href=\"#privacy-section\" class=\"footer-link\" data-translate=\"footer.privacy\">Pol\u00edtica de Privacidade<\/a><\/li>\r\n        <\/ul>\r\n      <\/div>\r\n\r\n      <!-- COLUNA 4: CONTATO -->\r\n      <div>\r\n        <h3 class=\"footer-section-title\" data-translate=\"footer.contact\">Contato<\/h3>\r\n\r\n        <div class=\"footer-contact-list\">\r\n          <div class=\"footer-contact-item centered\">\r\n            <svg class=\"footer-contact-icon no-margin\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\r\n              <path d=\"M22 16.92v3a2 2 0 0 1-2.18 2A19.79 19.79 0 0 1 3 5.11 2 2 0 0 1 5.11 3h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L9.09 10.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"\/>\r\n            <\/svg>\r\n            <span>(15) 3212-9100<\/span>\r\n          <\/div>\r\n\r\n          <div class=\"footer-contact-item centered\">\r\n            <svg class=\"footer-contact-icon no-margin\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\r\n              <rect width=\"20\" height=\"16\" x=\"2\" y=\"4\" rx=\"2\"\/>\r\n              <path d=\"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7\"\/>\r\n            <\/svg>\r\n            <span>contato@shinwa-br.com.br<\/span>\r\n          <\/div>\r\n\r\n          <div class=\"footer-contact-item\">\r\n            <svg class=\"footer-contact-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\r\n              <path d=\"M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0Z\"\/>\r\n              <circle cx=\"12\" cy=\"10\" r=\"3\"\/>\r\n            <\/svg>\r\n            <div class=\"footer-address\">\r\n              <div>R. Jo\u00e3o Antunes do Nascimento, 77<\/div>\r\n              <div>Jd. Santa Ros\u00e1lia<\/div>\r\n              <div>Sorocaba - SP, 18095-470<\/div>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <!-- SOCIAL: LinkedIn + WhatsApp -->\r\n        <div class=\"footer-social\">\r\n          <!-- LinkedIn (troque o href) -->\r\n          <a href=\"https:\/\/www.linkedin.com\/\" class=\"footer-social-btn\" aria-label=\"LinkedIn\" target=\"_blank\" rel=\"noopener\">\r\n            <svg class=\"footer-social-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\r\n              <path d=\"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z\"\/>\r\n              <rect width=\"4\" height=\"12\" x=\"2\" y=\"9\"\/>\r\n              <circle cx=\"4\" cy=\"4\" r=\"2\"\/>\r\n            <\/svg>\r\n          <\/a>\r\n\r\n          <!-- WhatsApp: abre app e j\u00e1 inicia conversa -->\r\n          <!-- IMPORTANTE: troque o n\u00famero abaixo se necess\u00e1rio (formato: 55 + DDD + numero) -->\r\n          <a href=\"https:\/\/wa.me\/5515997689138?text=Ol%C3%A1%21%20Gostaria%20de%20um%20or%C3%A7amento%20de%20solu%C3%A7%C3%B5es%20PATLITE.\" class=\"footer-social-btn\" aria-label=\"WhatsApp\" target=\"_blank\" rel=\"noopener\">\r\n            <!-- \u00cdcone WhatsApp (inline) -->\r\n            <svg class=\"footer-social-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 32 32\" fill=\"currentColor\">\r\n              <path d=\"M19.11 17.59c-.27-.14-1.62-.8-1.87-.89-.25-.09-.43-.14-.61.14-.18.27-.7.89-.86 1.07-.16.18-.32.2-.59.07-.27-.14-1.15-.42-2.2-1.34-.82-.73-1.37-1.63-1.53-1.9-.16-.27-.02-.41.12-.55.12-.12.27-.32.41-.48.14-.16.18-.27.27-.45.09-.18.05-.34-.02-.48-.07-.14-.61-1.48-.84-2.03-.22-.53-.45-.46-.61-.47l-.52-.01c-.18 0-.48.07-.73.34-.25.27-.95.93-.95 2.28 0 1.34.97 2.64 1.11 2.82.14.18 1.92 2.93 4.65 4.11.65.28 1.16.45 1.56.58.66.21 1.27.18 1.74.11.53-.08 1.62-.66 1.85-1.3.23-.64.23-1.19.16-1.3-.07-.11-.25-.18-.52-.32z\"\/>\r\n              <path d=\"M26.4 5.6A13.48 13.48 0 0 0 16 1.5C8.55 1.5 2.5 7.55 2.5 15c0 2.37.62 4.69 1.8 6.73L2.4 30.5l9-1.86A13.44 13.44 0 0 0 16 28.5c7.45 0 13.5-6.05 13.5-13.5 0-3.6-1.4-6.98-3.6-9.4zM16 26.5c-2.1 0-4.16-.56-5.96-1.62l-.43-.25-5.34 1.11 1.14-5.2-.28-.45A11.42 11.42 0 0 1 4.5 15C4.5 8.66 9.66 3.5 16 3.5S27.5 8.66 27.5 15 22.34 26.5 16 26.5z\"\/>\r\n            <\/svg>\r\n          <\/a>\r\n        <\/div>\r\n\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <hr class=\"footer-separator\" \/>\r\n\r\n    <div class=\"footer-copyright\">\r\n      <p class=\"footer-copyright-text\">\r\n        \u00a9 2025 Shinwa do Brasil. <span data-translate=\"footer.rights\">Todos os direitos reservados.<\/span>\r\n      <\/p>\r\n      <p class=\"footer-disclaimer\">\r\n        PATLITE\u00ae \u00e9 marca registrada da PATLITE Corporation\r\n      <\/p>\r\n    <\/div>\r\n\r\n  <\/div>\r\n<\/footer>\r\n\r\n<script>\r\n\/* =========================================================\r\n   i18n leve do FOOTER (SEM watcher pesado)\r\n   - Por padr\u00e3o, tenta ler localStorage(\"shinwa_lang\")\r\n   - Voc\u00ea pode chamar manualmente:\r\n     window.shinwaSetFooterLang(\"en\") ou (\"pt-br\")\r\n   ========================================================= *\/\r\n(function(){\r\n  \"use strict\";\r\n\r\n  const root = document.querySelector(\"[data-footer-root]\");\r\n  if(!root) return;\r\n\r\n  const translations = {\r\n    \"pt-br\": {\r\n      \"footer.products\":\"Produtos\",\r\n      \"footer.company\":\"Empresa\",\r\n      \"footer.contact\":\"Contato\",\r\n      \"footer.towers\":\"Torres de Sinaliza\u00e7\u00e3o\",\r\n      \"footer.audible\":\"Sinalizadores Sonoros\",\r\n      \"footer.visual\":\"Sinalizadores Visuais\",\r\n      \"footer.smart\":\"Sistemas Inteligentes\",\r\n      \"footer.accessories\":\"Acess\u00f3rios\",\r\n      \"footer.about\":\"Sobre N\u00f3s\",\r\n      \"footer.certs\":\"Certifica\u00e7\u00f5es\",\r\n      \"footer.tech\":\"Suporte T\u00e9cnico\",\r\n      \"footer.warranty\":\"Garantia\",\r\n      \"footer.privacy\":\"Pol\u00edtica de Privacidade\",\r\n      \"footer.rights\":\"Todos os direitos reservados.\",\r\n      \"hero.subtitle\":\"Representante oficial PATLITE no Brasil\",\r\n      \"about.description\":\"A Shinwa do Brasil \u00e9 representante oficial da PATLITE no mercado brasileiro, oferecendo solu\u00e7\u00f5es completas em sinaliza\u00e7\u00e3o industrial. Nossa parceria garante produtos originais, suporte t\u00e9cnico especializado e atendimento personalizado para cada projeto.\"\r\n    },\r\n    \"en\": {\r\n      \"footer.products\":\"Products\",\r\n      \"footer.company\":\"Company\",\r\n      \"footer.contact\":\"Contact\",\r\n      \"footer.towers\":\"Signal Towers\",\r\n      \"footer.audible\":\"Audible Indicators\",\r\n      \"footer.visual\":\"Visual Indicators\",\r\n      \"footer.smart\":\"Smart Systems\",\r\n      \"footer.accessories\":\"Accessories\",\r\n      \"footer.about\":\"About Us\",\r\n      \"footer.certs\":\"Certifications\",\r\n      \"footer.tech\":\"Technical Support\",\r\n      \"footer.warranty\":\"Warranty\",\r\n      \"footer.privacy\":\"Privacy Policy\",\r\n      \"footer.rights\":\"All rights reserved.\",\r\n      \"hero.subtitle\":\"Official PATLITE representative in Brazil\",\r\n      \"about.description\":\"Shinwa do Brasil is the official representative of PATLITE in the Brazilian market, offering complete industrial signaling solutions. Our partnership ensures original products, specialized technical support, and personalized service for each project.\"\r\n    }\r\n  };\r\n\r\n  function getLang(){\r\n    try{\r\n      const ls = (localStorage.getItem(\"shinwa_lang\") || \"\").toLowerCase();\r\n      if(ls) return ls;\r\n    }catch(e){}\r\n    return \"pt-br\";\r\n  }\r\n\r\n  function apply(lang){\r\n    const dict = translations[lang] || translations[\"pt-br\"];\r\n    root.querySelectorAll(\"[data-translate]\").forEach(el=>{\r\n      const key = el.getAttribute(\"data-translate\");\r\n      if(dict[key]) el.textContent = dict[key];\r\n    });\r\n  }\r\n\r\n  \/\/ Exposi\u00e7\u00e3o manual (pra voc\u00ea trocar sem watcher)\r\n  window.shinwaSetFooterLang = function(lang){\r\n    apply((lang||\"\").toLowerCase());\r\n  };\r\n\r\n  \/\/ aplica uma vez no load\r\n  apply(getLang());\r\n})();\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Representante oficial PATLITE no Brasil \ud83c\udde7\ud83c\uddf7 Portugu\u00eas \ud83c\udde7\ud83c\uddf7 Portugu\u00eas \ud83c\uddfa\ud83c\uddf8 English Solicitar Or\u00e7amento Sinaliza\u00e7\u00e3o Industrial Inteligente Representante oficial PATLITE no Brasil. Sinalizadores que transformam a comunica\u00e7\u00e3o visual em ambientes industriais. Descobrir Produtos Contato Linha Completa de Produtos PATLITE Oferecemos toda a gama de sinalizadores PATLITE, desde torres b\u00e1sicas at\u00e9 sistemas inteligentes conectados, atendendo todas as [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-1355","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/shinwa-br.com.br\/en\/wp-json\/wp\/v2\/pages\/1355","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/shinwa-br.com.br\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/shinwa-br.com.br\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/shinwa-br.com.br\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/shinwa-br.com.br\/en\/wp-json\/wp\/v2\/comments?post=1355"}],"version-history":[{"count":270,"href":"https:\/\/shinwa-br.com.br\/en\/wp-json\/wp\/v2\/pages\/1355\/revisions"}],"predecessor-version":[{"id":1832,"href":"https:\/\/shinwa-br.com.br\/en\/wp-json\/wp\/v2\/pages\/1355\/revisions\/1832"}],"wp:attachment":[{"href":"https:\/\/shinwa-br.com.br\/en\/wp-json\/wp\/v2\/media?parent=1355"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}