Conte com uma instituição financeira cooperativa diferente de tudo que você já viu para cuidar do seu dinheiro

Com uma conta no Sicoob, você tem acesso a soluções financeiras completas, crédito facilitado, atendimento personalizado e benefícios que só uma cooperativa de crédito pode oferecer.

Confira as vantagens de se tornar cooperado:

  • Portfólio completo de produtos e serviços
  • Tarifas e taxas muito mais atrativas*
  • Ampla rede de atendimento em todo país
  • Canais digitais que agilizam sua rotina de forma gratuita e segura

Baixe o App Sicoob e abra hoje sua conta no Sicoob.

* Operação sujeita à análise aprovação de crédito. Informe-se sobre as condições e disponibilidade dos produtos na sua cooperativa de crédito ou na Cooperativa Sicoob mais próxima.
Para mais informações, consulte:
- Cláusulas e Condições Gerais de relacionamento, de produtos e serviços e de abertura, manutenção e encerramento de conta de depósito na modalidade CONTA CORRENTE do sistema Sicoob: clique aqui.
- Cláusulas e Condições Gerais de relacionamento e de abertura, manutenção e encerramento de conta de depósito na modalidade CONTA POUPANÇA do sistema Sicoob: clique aqui.
- Contrato de Prestação de Serviços de Crédito de Salário entre a fonte pagadora e cooperativa de crédito do Sistema Sicoob, com base na legislação em vigor. Para saber mais, clique aqui.

Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> Fieldset67243883  [in template "20102#20128#189538129" at line 811, column 8]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #list Fieldset67243883.getSiblings() ...  [in template "20102#20128#189538129" at line 811, column 1]
----
1<style type="text/css"> 
2/* ========================================================= 
3   PARCEIROS SIPAG - LAYOUT PRINCIPAL 
4========================================================= */ 
5 
6.sipag-parceiros { 
7  background-color: #fff; 
8  color: #003641; 
9  padding: 34px 0 56px; 
10
11 
12.sipag-parceiros > .container { 
13  max-width: 1440px; 
14  padding-left: 24px; 
15  padding-right: 24px; 
16  width: 100%; 
17
18 
19/* ========================================================= 
20   FILTROS 
21========================================================= */ 
22 
23.sipag-parceiros .parceiros-filtros-area { 
24  margin-bottom: 34px; 
25
26 
27.sipag-parceiros .parceiros-intro { 
28  color: #003641; 
29  font-size: 17px; 
30  line-height: 1.4; 
31  margin: 0 0 26px; 
32  text-align: center; 
33
34 
35.sipag-parceiros .filtros { 
36  align-items: center; 
37  display: flex; 
38  flex-wrap: wrap; 
39  gap: 12px; 
40  justify-content: center; 
41  margin: 0 auto; 
42  width: 100%; 
43
44 
45.sipag-parceiros .btn-pill { 
46  align-items: center; 
47  background-color: #fff; 
48  border: 1px solid #d9dcdf; 
49  border-radius: 10px; 
50  box-shadow: none; 
51  color: #272833; 
52  cursor: pointer; 
53  display: inline-flex; 
54  flex: 0 0 auto; 
55  font-size: 18px; 
56  font-weight: 700; 
57  justify-content: center; 
58  line-height: 1.2; 
59  min-height: 64px; 
60  min-width: 250px; 
61  padding: 14px 22px; 
62  text-align: center; 
63  text-transform: uppercase; 
64  transition: 
65    background-color .2s ease, 
66    border-color .2s ease, 
67    color .2s ease; 
68  white-space: nowrap; 
69
70 
71.sipag-parceiros .btn-pill:hover { 
72  background-color: #f5fffd; 
73  border-color: #00ae9d; 
74  color: #003641; 
75
76 
77.sipag-parceiros .btn-pill.active { 
78  background-color: #003641; 
79  border-color: #003641; 
80  color: #fff; 
81
82 
83.sipag-parceiros .btn-pill:focus { 
84  box-shadow: 0 0 0 3px rgba(0, 174, 157, .16); 
85  outline: none; 
86
87 
88/* ========================================================= 
89   BUSCA 
90========================================================= */ 
91 
92.sipag-parceiros .parceiros-busca { 
93  margin: 0 auto 56px; 
94  max-width: none; 
95  position: relative; 
96  width: 100%; 
97
98 
99.sipag-parceiros .parceiros-busca-icone { 
100  color: #00ae9d; 
101  height: 28px; 
102  left: 21px; 
103  pointer-events: none; 
104  position: absolute; 
105  top: 50%; 
106  transform: translateY(-50%); 
107  width: 28px; 
108
109 
110.sipag-parceiros .parceiros-busca-campo { 
111  background-color: #fff; 
112  border: 2px solid #00ae9d; 
113  border-radius: 7px; 
114  color: #003641; 
115  font-size: 16px; 
116  height: 68px; 
117  outline: none; 
118  padding: 0 24px 0 62px; 
119  transition: 
120    border-color .2s ease, 
121    box-shadow .2s ease; 
122  width: 100%; 
123
124 
125.sipag-parceiros .parceiros-busca-campo::placeholder { 
126  color: #b1bbc8; 
127  opacity: 1; 
128
129 
130.sipag-parceiros .parceiros-busca-campo:focus { 
131  border-color: #00ae9d; 
132  box-shadow: 0 0 0 3px rgba(0, 174, 157, .12); 
133
134 
135/* ========================================================= 
136   GRID 
137========================================================= */ 
138 
139.sipag-parceiros #grid-parceiros { 
140  align-items: stretch; 
141
142 
143.sipag-parceiros .parceiro { 
144  display: flex; 
145
146 
147/* ========================================================= 
148   CARD 
149========================================================= */ 
150 
151.sipag-parceiros .card-parceiro { 
152  background-color: #fff; 
153  border: 1px solid #dedede; 
154  border-radius: 14px; 
155  box-shadow: none; 
156  display: flex; 
157  flex-direction: column; 
158  min-height: 510px; 
159  padding: 18px; 
160  transition: 
161    border-color .2s ease, 
162    box-shadow .2s ease; 
163  width: 100%; 
164
165 
166.sipag-parceiros .card-parceiro:hover { 
167  border-color: #d1d8d7; 
168  box-shadow: 0 8px 22px rgba(0, 54, 65, .08); 
169  transform: none; 
170
171 
172/* ========================================================= 
173   LOGO 
174========================================================= */ 
175 
176.sipag-parceiros .parceiro-logo { 
177  align-items: center; 
178  display: flex; 
179  height: 255px; 
180  justify-content: center; 
181  margin-bottom: 0; 
182  overflow: hidden; 
183  width: 100%; 
184
185 
186.sipag-parceiros .parceiro-logo img { 
187  display: block; 
188  max-height: 169px; 
189  max-width: 230px; 
190  object-fit: contain; 
191  width: auto; 
192
193 
194/* ========================================================= 
195   TEXTO DO CARD 
196========================================================= */ 
197 
198.sipag-parceiros .card-parceiro h6 { 
199  color: #00ae9d; 
200  font-size: 23px; 
201  font-weight: 700; 
202  line-height: 1.25; 
203  margin: 0 0 10px; 
204
205 
206.sipag-parceiros .parceiro-segmento { 
207  color: #5b5b5b; 
208  font-size: 15px; 
209  line-height: 1.55; 
210  margin: 0 0 24px; 
211
212 
213/* ========================================================= 
214   AÇÕES DO CARD 
215========================================================= */ 
216 
217.sipag-parceiros .parceiro-acoes { 
218  display: flex; 
219  flex-direction: column; 
220  gap: 10px; 
221  margin-top: auto; 
222  width: 100%; 
223
224 
225.sipag-parceiros .btn-parceiro { 
226  align-items: center; 
227  border-radius: 9px; 
228  cursor: pointer; 
229  display: inline-flex; 
230  flex: none; 
231  font-size: 18px; 
232  font-weight: 700; 
233  justify-content: center; 
234  min-height: 62px; 
235  padding: 10px 14px; 
236  text-align: center; 
237  text-decoration: none !important; 
238  transition: 
239    background-color .2s ease, 
240    border-color .2s ease, 
241    color .2s ease; 
242  width: 100%; 
243
244 
245.sipag-parceiros .btn-site { 
246  background-color: #fff; 
247  border: 1px solid #00ae9d; 
248  color: #00ae9d; 
249
250 
251.sipag-parceiros .btn-site:hover { 
252  background-color: #f3fffd; 
253  border-color: #00ae9d; 
254  color: #008f83; 
255
256 
257.sipag-parceiros .btn-saiba { 
258  background-color: #00ae9d; 
259  border: 1px solid #00ae9d; 
260  color: #fff; 
261
262 
263.sipag-parceiros .btn-saiba:hover { 
264  background-color: #008f83; 
265  border-color: #008f83; 
266  color: #fff; 
267
268 
269/* ========================================================= 
270   NENHUM RESULTADO 
271========================================================= */ 
272 
273.sipag-parceiros .parceiros-vazio { 
274  color: #536463; 
275  font-size: 18px; 
276  margin: 40px 0; 
277  text-align: center; 
278
279 
280@media (max-width: 1199.98px) { 
281  .sipag-parceiros > .container { 
282    max-width: 1140px; 
283
284 
285  .sipag-parceiros .btn-pill { 
286    font-size: 16px; 
287    min-height: 58px; 
288    min-width: 210px; 
289
290 
291  .sipag-parceiros .card-parceiro { 
292    min-height: 545px; 
293
294 
295  .sipag-parceiros .parceiro-logo { 
296    height: 235px; 
297
298 
299  .sipag-parceiros .parceiro-logo img { 
300    max-height: 140px; 
301    max-width: 210px; 
302
303
304 
305/* ========================================================= 
306   MODAL - FUNDO 
307========================================================= */ 
308 
309.modal-parceiro-sipag { 
310  align-items: center; 
311  background-color: rgba(0, 0, 0, .55); 
312  bottom: 0; 
313  display: flex; 
314  justify-content: center; 
315  left: 0; 
316  overflow-y: auto; 
317  padding: 14px; 
318  position: fixed; 
319  right: 0; 
320  top: 0; 
321  z-index: 11000; 
322
323 
324.modal-parceiro-sipag[hidden] { 
325  display: none !important; 
326
327 
328/* ========================================================= 
329   MODAL - CONTAINER 
330========================================================= */ 
331 
332.modal-parceiro-sipag .modal-parceiro-dialog { 
333  background-color: #fff; 
334  border-radius: 18px; 
335  box-shadow: 0 16px 45px rgba(0, 54, 65, .25); 
336  margin: auto; 
337  max-width: 1265px; 
338  overflow: hidden; 
339  width: 100%; 
340
341 
342/* ========================================================= 
343   MODAL - CABEÇALHO 
344========================================================= */ 
345 
346.modal-parceiro-sipag .modal-parceiro-header { 
347  align-items: center; 
348  border-bottom: 1px solid #dfe5e4; 
349  display: flex; 
350  justify-content: space-between; 
351  min-height: 68px; 
352  padding: 12px 38px; 
353
354 
355.modal-parceiro-sipag .modal-parceiro-header h4 { 
356  color: #00ae9d; 
357  font-size: 34px; 
358  font-weight: 700; 
359  line-height: 1.2; 
360  margin: 0; 
361
362 
363/* ========================================================= 
364   MODAL - FECHAR 
365========================================================= */ 
366 
367.modal-parceiro-sipag .close-modal { 
368  align-items: center; 
369  background-color: #fff; 
370  border: 2px solid #005461; 
371  border-radius: 50%; 
372  color: #005461; 
373  cursor: pointer; 
374  display: flex; 
375  flex: 0 0 38px; 
376  font-size: 28px; 
377  font-weight: 400; 
378  height: 38px; 
379  justify-content: center; 
380  line-height: 1; 
381  padding: 0 0 3px; 
382  transition: 
383    background-color .2s ease, 
384    color .2s ease; 
385  width: 38px; 
386
387 
388.modal-parceiro-sipag .close-modal:hover { 
389  background-color: #005461; 
390  color: #fff; 
391
392 
393.modal-parceiro-sipag .close-modal:focus { 
394  box-shadow: 0 0 0 3px rgba(0, 174, 157, .2); 
395  outline: none; 
396
397 
398/* ========================================================= 
399   MODAL - CORPO 
400========================================================= */ 
401 
402.modal-parceiro-sipag .modal-parceiro-body { 
403  max-height: calc(100vh - 100px); 
404  overflow-y: auto; 
405  padding: 24px 28px 34px; 
406
407 
408/* ========================================================= 
409   MODAL - BLOCOS 
410========================================================= */ 
411 
412.modal-parceiro-sipag .modal-bloco { 
413  border: 1px solid #00ae9d; 
414  border-radius: 9px; 
415  box-sizing: border-box; 
416  margin: 0; 
417  padding: 22px 24px; 
418
419 
420.modal-parceiro-sipag .modal-bloco h6 { 
421  color: #00ae9d; 
422  font-size: 20px; 
423  font-weight: 700; 
424  line-height: 1.3; 
425  margin: 0 0 20px; 
426
427 
428/* ========================================================= 
429   DESCRIÇÃO 
430========================================================= */ 
431 
432.modal-parceiro-sipag #modalBlocoDescricao { 
433  margin-bottom: 16px; 
434  min-height: 145px; 
435
436 
437.modal-parceiro-sipag #modalDescricao, 
438.modal-parceiro-sipag #modalDescricao p { 
439  color: #004653; 
440  font-size: 21px; 
441  line-height: 1.7; 
442
443 
444.modal-parceiro-sipag #modalDescricao p { 
445  margin: 0 0 8px; 
446
447 
448.modal-parceiro-sipag #modalDescricao p:last-child { 
449  margin-bottom: 0; 
450
451 
452/* ========================================================= 
453   GRID DO MODAL 
454========================================================= */ 
455 
456.modal-parceiro-sipag .modal-detalhes-grid { 
457  display: grid; 
458  gap: 16px 20px; 
459  grid-template-columns: repeat(2, minmax(0, 1fr)); 
460
461 
462.modal-parceiro-sipag #modalBlocoSegmentos, 
463.modal-parceiro-sipag #modalBlocoTerminais { 
464  min-height: 280px; 
465
466 
467.modal-parceiro-sipag #modalBlocoContato, 
468.modal-parceiro-sipag #modalBlocoSite { 
469  min-height: 170px; 
470
471 
472/* ========================================================= 
473   SEGMENTOS DO MODAL 
474========================================================= */ 
475 
476.modal-parceiro-sipag .modal-segmentos { 
477  align-items: flex-start; 
478  display: flex; 
479  flex-wrap: wrap; 
480  gap: 12px; 
481
482 
483.modal-parceiro-sipag .modal-segmento-tag { 
484  background-color: #fafafa; 
485  border: 1px solid #cfcfcf; 
486  border-radius: 6px; 
487  color: #5d6262; 
488  display: inline-flex; 
489  font-size: 15px; 
490  font-weight: 400; 
491  line-height: 1.2; 
492  padding: 10px 12px; 
493  text-transform: uppercase; 
494
495 
496/* ========================================================= 
497   TERMINAIS 
498========================================================= */ 
499 
500.modal-parceiro-sipag #modalTerminais, 
501.modal-parceiro-sipag #modalTerminais p { 
502  color: #004653; 
503  font-size: 21px; 
504  line-height: 1.8; 
505
506 
507.modal-parceiro-sipag #modalTerminais p { 
508  margin: 0 0 6px; 
509
510 
511.modal-parceiro-sipag #modalTerminais p:last-child { 
512  margin-bottom: 0; 
513
514 
515/* ========================================================= 
516   CONTATO 
517========================================================= */ 
518 
519.modal-parceiro-sipag #modalContato { 
520  color: #004653; 
521  font-size: 21px; 
522  line-height: 1.8; 
523
524 
525.modal-parceiro-sipag #modalContato p { 
526  color: #004653; 
527  font-size: 21px; 
528  line-height: 1.8; 
529  margin: 0; 
530
531 
532.modal-parceiro-sipag #modalContato strong { 
533  color: #004653; 
534  font-weight: 400; 
535
536 
537.modal-parceiro-sipag #modalContato a { 
538  color: #00a99d; 
539  text-decoration: none; 
540
541 
542.modal-parceiro-sipag #modalContato a:hover { 
543  text-decoration: underline; 
544
545 
546/* ========================================================= 
547   WEBSITE 
548========================================================= */ 
549 
550.modal-parceiro-sipag #modalSite { 
551  font-size: 21px; 
552  line-height: 1.7; 
553
554 
555.modal-parceiro-sipag #modalSite a { 
556  color: #00a99d; 
557  overflow-wrap: anywhere; 
558  text-decoration: none; 
559
560 
561.modal-parceiro-sipag #modalSite a:hover { 
562  text-decoration: underline; 
563
564 
565/* ========================================================= 
566   RICH TEXT 
567========================================================= */ 
568 
569.modal-parceiro-sipag .modal-bloco ul, 
570.modal-parceiro-sipag .modal-bloco ol { 
571  color: #004653; 
572  margin-bottom: 0; 
573  padding-left: 20px; 
574
575 
576.modal-parceiro-sipag .modal-bloco li { 
577  color: #004653; 
578  line-height: 1.7; 
579  margin-bottom: 5px; 
580
581 
582/* ========================================================= 
583   MOBILE 
584========================================================= */ 
585 
586@media (max-width: 767.98px) { 
587  .sipag-parceiros { 
588    padding: 28px 0 40px; 
589
590 
591  .sipag-parceiros > .container { 
592    padding-left: 15px; 
593    padding-right: 15px; 
594
595 
596  .sipag-parceiros .parceiros-filtros-area { 
597    margin-bottom: 24px; 
598
599 
600  .sipag-parceiros .parceiros-intro { 
601    font-size: 16px; 
602    margin-bottom: 18px; 
603
604 
605  .sipag-parceiros .filtros { 
606    flex-wrap: nowrap; 
607    gap: 10px; 
608    justify-content: flex-start; 
609    margin-left: -15px; 
610    margin-right: -15px; 
611    overflow-x: auto; 
612    padding: 3px 15px 12px; 
613    width: auto; 
614    -webkit-overflow-scrolling: touch; 
615
616 
617  .sipag-parceiros .filtros::-webkit-scrollbar { 
618    height: 4px; 
619
620 
621  .sipag-parceiros .filtros::-webkit-scrollbar-thumb { 
622    background-color: #b5c7c5; 
623    border-radius: 10px; 
624
625 
626  .sipag-parceiros .btn-pill { 
627    border-radius: 8px; 
628    flex: 0 0 auto; 
629    font-size: 14px; 
630    min-height: 54px; 
631    min-width: 205px; 
632    padding: 12px 16px; 
633
634 
635  .sipag-parceiros .parceiros-busca { 
636    margin-bottom: 34px; 
637
638 
639  .sipag-parceiros .parceiros-busca-campo { 
640    font-size: 16px; 
641    height: 56px; 
642    padding-left: 52px; 
643
644 
645  .sipag-parceiros .parceiros-busca-icone { 
646    height: 22px; 
647    left: 18px; 
648    width: 22px; 
649
650 
651  .sipag-parceiros .card-parceiro { 
652    border-radius: 12px; 
653    min-height: auto; 
654    padding: 20px; 
655
656 
657  .sipag-parceiros .parceiro-logo { 
658    height: 200px; 
659
660 
661  .sipag-parceiros .parceiro-logo img { 
662    max-height: 130px; 
663    max-width: 200px; 
664
665 
666  .sipag-parceiros .card-parceiro h6 { 
667    font-size: 21px; 
668
669 
670  .sipag-parceiros .parceiro-segmento { 
671    font-size: 14px; 
672
673 
674  .sipag-parceiros .parceiro-acoes { 
675    flex-direction: column; 
676
677 
678  .sipag-parceiros .btn-parceiro { 
679    font-size: 17px; 
680    min-height: 54px; 
681    width: 100%; 
682
683 
684  .modal-parceiro-sipag { 
685    align-items: flex-end; 
686    padding: 0; 
687
688 
689  .modal-parceiro-sipag .modal-parceiro-dialog { 
690    border-radius: 16px 16px 0 0; 
691    max-height: 95vh; 
692
693 
694  .modal-parceiro-sipag .modal-parceiro-header { 
695    min-height: 65px; 
696    padding: 14px 20px; 
697
698 
699  .modal-parceiro-sipag .modal-parceiro-header h4 { 
700    font-size: 24px; 
701
702 
703  .modal-parceiro-sipag .close-modal { 
704    flex: 0 0 36px; 
705    height: 36px; 
706    width: 36px; 
707
708 
709  .modal-parceiro-sipag .modal-parceiro-body { 
710    max-height: calc(95vh - 65px); 
711    padding: 18px 15px 25px; 
712
713 
714  .modal-parceiro-sipag .modal-detalhes-grid { 
715    grid-template-columns: 1fr; 
716
717 
718  .modal-parceiro-sipag .modal-bloco { 
719    min-height: auto !important; 
720    padding: 20px; 
721
722 
723  .modal-parceiro-sipag #modalBlocoDescricao { 
724    min-height: auto; 
725
726 
727  .modal-parceiro-sipag .modal-bloco h6 { 
728    margin-bottom: 15px; 
729
730
731</style> 
732 
733<div class="col-12 px-0"> 
734  <section class="sipag-parceiros" id="sipag-parceiros"> 
735 
736<div class="container"> 
737 
738  <!-- ===================================================== 
739       FILTROS 
740  ====================================================== --> 
741 
742  <div 
743    class="parceiros-filtros-area" 
744    id="parceiros-filtros-area" 
745
746 
747<p class="parceiros-intro"> 
748  Filtre abaixo os segmentos que deseja visualizar: 
749</p> 
750 
751<div 
752  aria-label="Filtrar parceiros por segmento" 
753  class="filtros" 
754  id="filtros-parceiros" 
755  role="group" 
756></div> 
757 
758  </div> 
759 
760  <!-- ===================================================== 
761       BUSCA 
762  ====================================================== --> 
763 
764  <div class="parceiros-busca" role="search"> 
765 
766<label 
767  class="sr-only" 
768  for="busca-parceiros" 
769
770  Pesquisar parceiros por nome ou categoria 
771</label> 
772 
773<svg 
774  aria-hidden="true" 
775  class="parceiros-busca-icone" 
776  fill="none" 
777  viewBox="0 0 24 24" 
778
779  <circle 
780    cx="11" 
781    cy="11" 
782    r="7" 
783    stroke="currentColor" 
784    stroke-width="2" 
785  ></circle> 
786 
787  <path 
788    d="M16 16L21 21" 
789    stroke="currentColor" 
790    stroke-linecap="round" 
791    stroke-width="2" 
792  ></path> 
793</svg> 
794 
795<input 
796  autocomplete="off" 
797  class="parceiros-busca-campo" 
798  id="busca-parceiros" 
799  placeholder="Pesquise por nome do anexo ou categoria" 
800  type="search" 
801/> 
802 
803  </div> 
804 
805  <!-- ===================================================== 
806       GRID DE PARCEIROS 
807  ====================================================== --> 
808 
809  <div class="row" id="grid-parceiros"> 
810 
811<#list Fieldset67243883.getSiblings() as parceiro> 
812 
813  <#assign nome = parceiro.Text51037391.getData()!"" /> 
814  <#assign segmentos = parceiro.CheckboxMultiple15617005.getData()!"" /> 
815  <#assign site = parceiro.Text51612886.getData()!"" /> 
816 
817  <#assign siteUrl = site /> 
818 
819  <#if site?has_content 
820    && !site?starts_with("http://") 
821    && !site?starts_with("https://")> 
822 
823    <#assign siteUrl = "https://" + site /> 
824 
825  </#if> 
826 
827 
828  <div 
829    class="col-sm-6 col-lg-4 col-xl-3 mb-4 parceiro" 
830    data-category="${segmentos?html}" 
831    data-name="${nome?html}" 
832
833 
834    <div class="card-parceiro"> 
835 
836      <!-- LOGO --> 
837      <div class="parceiro-logo"> 
838 
839        <#if parceiro.Image82450298.getData()?? 
840          && parceiro.Image82450298.getData() != ""> 
841 
842          <img 
843            alt="${nome?html}" 
844            class="img-fluid" 
845            loading="lazy" 
846            src="${parceiro.Image82450298.getData()}" 
847          /> 
848 
849        </#if> 
850 
851      </div> 
852 
853 
854      <!-- NOME --> 
855      <h6> 
856        ${nome?html} 
857      </h6> 
858 
859 
860      <!-- SEGMENTOS --> 
861      <p class="parceiro-segmento js-segmento-card"></p> 
862 
863 
864      <!-- AÇÕES --> 
865      <div class="parceiro-acoes"> 
866 
867        <#if site?has_content> 
868 
869          <a 
870            class="btn-parceiro btn-site" 
871            href="${siteUrl?html}" 
872            rel="noopener noreferrer" 
873            target="_blank" 
874
875            Acessar site 
876          </a> 
877 
878        </#if> 
879 
880 
881        <button 
882          class="btn-parceiro btn-saiba btn-modal" 
883          type="button" 
884
885          Saiba mais 
886        </button> 
887 
888      </div> 
889 
890 
891      <!-- ================================================= 
892           DADOS UTILIZADOS PELO MODAL 
893      ================================================== --> 
894 
895      <div 
896        aria-hidden="true" 
897        class="parceiro-dados d-none" 
898
899 
900        <span class="js-nome"> 
901          ${nome?html} 
902        </span> 
903 
904 
905        <span class="js-segmentos"> 
906          ${segmentos?html} 
907        </span> 
908 
909 
910        <div class="js-descricao"> 
911 
912<#if (Fieldset67243883.RichText77766022.getData())??> 
913${Fieldset67243883.RichText77766022.getData()} 
914</#if> 
915</div> 
916 
917        <div class="js-terminais"> 
918 
919<#if (Fieldset67243883.RichText36172897.getData())??> 
920${Fieldset67243883.RichText36172897.getData()} 
921</#if> 
922</div> 
923 
924        <span class="js-email"> 
925          <#if parceiro.Text26526715.getData()??> 
926            ${parceiro.Text26526715.getData()?html} 
927          </#if> 
928        </span> 
929 
930 
931        <span class="js-whatsapp"> 
932          <#if parceiro.Campo12763757.getData()??> 
933            ${parceiro.Campo12763757.getData()?html} 
934          </#if> 
935        </span> 
936 
937 
938        <span class="js-instagram"> 
939          <#if parceiro.Campo47414182.getData()??> 
940            ${parceiro.Campo47414182.getData()?html} 
941          </#if> 
942        </span> 
943 
944 
945        <span class="js-site"> 
946          ${site?html} 
947        </span> 
948 
949      </div> 
950 
951    </div> 
952 
953  </div> 
954 
955</#list> 
956 
957  </div> 
958 
959  <!-- ===================================================== 
960       SEM RESULTADO 
961  ====================================================== --> 
962 
963  <p 
964    aria-live="polite" 
965    class="parceiros-vazio" 
966    hidden 
967    id="parceiros-vazio" 
968    role="status" 
969
970    Nenhum parceiro encontrado. 
971  </p> 
972 
973</div> 
974 
975<!-- ===================================================== 
976     MODAL 
977====================================================== --> 
978 
979<div 
980  aria-labelledby="modalParceiroTitulo" 
981  aria-modal="true" 
982  class="modal-parceiro-sipag" 
983  hidden 
984  id="modalParceiro" 
985  role="dialog" 
986
987 
988  <div class="modal-parceiro-dialog"> 
989 
990<!-- CABEÇALHO --> 
991<div class="modal-parceiro-header"> 
992 
993  <h4 id="modalParceiroTitulo"></h4> 
994 
995  <button 
996    aria-label="Fechar modal" 
997    class="close-modal" 
998    type="button" 
999
1000    &times; 
1001  </button> 
1002 
1003</div> 
1004 
1005 
1006<!-- CORPO --> 
1007<div class="modal-parceiro-body"> 
1008 
1009  <!-- DESCRIÇÃO --> 
1010  <div 
1011    class="modal-bloco" 
1012    id="modalBlocoDescricao" 
1013
1014 
1015    <h6>Descrição</h6> 
1016 
1017    <div id="modalDescricao"></div> 
1018 
1019  </div> 
1020 
1021 
1022  <!-- GRID 2x2 --> 
1023  <div class="modal-detalhes-grid"> 
1024 
1025    <!-- SEGMENTOS --> 
1026    <div 
1027      class="modal-bloco" 
1028      id="modalBlocoSegmentos" 
1029
1030 
1031      <h6>Segmentos atendidos</h6> 
1032 
1033      <div 
1034        class="modal-segmentos" 
1035        id="modalSegmentos" 
1036      ></div> 
1037 
1038    </div> 
1039 
1040 
1041    <!-- TERMINAIS --> 
1042    <div 
1043      class="modal-bloco" 
1044      id="modalBlocoTerminais" 
1045
1046 
1047      <h6>Terminais habilitados</h6> 
1048 
1049      <div id="modalTerminais"></div> 
1050 
1051    </div> 
1052 
1053 
1054    <!-- CONTATO --> 
1055    <div 
1056      class="modal-bloco" 
1057      id="modalBlocoContato" 
1058
1059 
1060      <h6>Informações e contato</h6> 
1061 
1062      <div id="modalContato"></div> 
1063 
1064    </div> 
1065 
1066 
1067    <!-- WEBSITE --> 
1068    <div 
1069      class="modal-bloco" 
1070      id="modalBlocoSite" 
1071
1072 
1073      <h6>Website</h6> 
1074 
1075      <div id="modalSite"></div> 
1076 
1077    </div> 
1078 
1079  </div> 
1080 
1081</div> 
1082 
1083  </div> 
1084 
1085</div> 
1086 
1087  </section> 
1088</div> 
1089 
1090<script> 
1091(function () { 
1092 
1093  var componente = document.getElementById("sipag-parceiros"); 
1094 
1095  if (!componente) { 
1096    return; 
1097
1098 
1099 
1100  if ( 
1101    componente.getAttribute( 
1102      "data-inicializado" 
1103    ) === "true" 
1104  ) { 
1105    return; 
1106
1107 
1108 
1109  componente.setAttribute( 
1110    "data-inicializado", 
1111    "true" 
1112  ); 
1113 
1114 
1115  /* ========================================================= 
1116     ELEMENTOS 
1117  ========================================================= */ 
1118 
1119  var busca = 
1120    componente.querySelector( 
1121      "#busca-parceiros" 
1122    ); 
1123 
1124  var filtrosContainer = 
1125    componente.querySelector( 
1126      "#filtros-parceiros" 
1127    ); 
1128 
1129  var filtrosArea = 
1130    componente.querySelector( 
1131      "#parceiros-filtros-area" 
1132    ); 
1133 
1134  var parceiros = 
1135    componente.querySelectorAll( 
1136      ".parceiro" 
1137    ); 
1138 
1139  var mensagemVazia = 
1140    componente.querySelector( 
1141      "#parceiros-vazio" 
1142    ); 
1143 
1144 
1145  var filtroAtual = "all"; 
1146 
1147 
1148  /* ========================================================= 
1149     NORMALIZA TEXTO 
1150  ========================================================= */ 
1151 
1152  function normalizarTexto(texto) { 
1153 
1154    var valor = 
1155      (texto || "") 
1156        .toString() 
1157        .toLowerCase(); 
1158 
1159 
1160    if (valor.normalize) { 
1161 
1162      valor = valor 
1163        .normalize("NFD") 
1164        .replace( 
1165          /[\u0300-\u036f]/g, 
1166          "" 
1167        ); 
1168 
1169
1170 
1171 
1172    return valor 
1173      .replace( 
1174        /[^a-z0-9]+/g, 
1175        " " 
1176
1177      .trim(); 
1178 
1179
1180 
1181 
1182  /* ========================================================= 
1183     OBTÉM SEGMENTOS 
1184 
1185     Suporta: 
1186     ["varejo","servicos"] 
1187 
1188     varejo,servicos 
1189 
1190     varejo;servicos 
1191  ========================================================= */ 
1192 
1193  function obterSegmentos(valor) { 
1194 
1195    if (!valor) { 
1196      return []; 
1197
1198 
1199 
1200    var texto = 
1201      valor.toString().trim(); 
1202 
1203 
1204    if (!texto) { 
1205      return []; 
1206
1207 
1208 
1209    /* 
1210     * Tenta JSON primeiro. 
1211     */ 
1212    try { 
1213 
1214      var json = 
1215        JSON.parse(texto); 
1216 
1217 
1218      if (Array.isArray(json)) { 
1219 
1220        return json 
1221          .map(function (item) { 
1222 
1223            return item 
1224              .toString() 
1225              .trim(); 
1226 
1227          }) 
1228          .filter(Boolean); 
1229 
1230
1231 
1232    } catch (erro) { 
1233      /* segue normalmente */ 
1234
1235 
1236 
1237    texto = texto 
1238      .replace(/^\[/, "") 
1239      .replace(/\]$/, "") 
1240      .replace(/"/g, "") 
1241      .replace(/'/g, ""); 
1242 
1243 
1244    return texto 
1245      .split(/[,;|]+/) 
1246      .map(function (item) { 
1247 
1248        return item.trim(); 
1249 
1250      }) 
1251      .filter(Boolean); 
1252 
1253
1254 
1255 
1256  /* ========================================================= 
1257     CHAVE CANÔNICA DO SEGMENTO 
1258  ========================================================= */ 
1259 
1260  function obterChaveSegmento(segmento) { 
1261 
1262    var chave = 
1263      normalizarTexto(segmento); 
1264 
1265 
1266    if ( 
1267      chave.indexOf("alimentacao") !== -1 || 
1268      chave.indexOf("bares restaurantes") !== -1 
1269    ) { 
1270      return "alimentacao"; 
1271
1272 
1273    if (chave.indexOf("evento") !== -1) { 
1274      return "eventos"; 
1275
1276 
1277    if (chave.indexOf("industr") !== -1) { 
1278      return "industria"; 
1279
1280 
1281    if ( 
1282      chave.indexOf("posto") !== -1 && 
1283      chave.indexOf("combust") !== -1 
1284    ) { 
1285      return "postos"; 
1286
1287 
1288    if (chave.indexOf("saude") !== -1) { 
1289      return "saude"; 
1290
1291 
1292    if (chave.indexOf("servico") !== -1) { 
1293      return "servicos"; 
1294
1295 
1296    if (chave.indexOf("varejo") !== -1) { 
1297      return "varejo"; 
1298
1299 
1300 
1301    return chave; 
1302 
1303
1304 
1305 
1306  /* ========================================================= 
1307     LABEL DO FILTRO 
1308  ========================================================= */ 
1309 
1310  function obterLabelFiltroSegmento(chave, segmentoOriginal) { 
1311 
1312    var labels = { 
1313      "alimentacao": "ALIMENTAÇÃO", 
1314      "eventos": "EVENTOS", 
1315      "industria": "INDÚSTRIA", 
1316      "postos": "POSTOS DE COMBUSTÍVEIS", 
1317      "saude": "SAÚDE", 
1318      "servicos": "SERVIÇOS", 
1319      "varejo": "VAREJO" 
1320    }; 
1321 
1322 
1323    if (labels[chave]) { 
1324      return labels[chave]; 
1325
1326 
1327 
1328    return (segmentoOriginal || "") 
1329      .toString() 
1330      .trim() 
1331      .toUpperCase(); 
1332 
1333
1334 
1335 
1336  /* ========================================================= 
1337     NOME VISUAL DO SEGMENTO NO CARD / MODAL 
1338  ========================================================= */ 
1339 
1340  function obterLabelSegmento(segmento) { 
1341 
1342    var chave = 
1343      normalizarTexto(segmento); 
1344 
1345 
1346    var labels = { 
1347      "alimentacao": "Alimentação (Bares, Restaurantes e Lanchonetes)", 
1348      "alimentacao bares restaurantes e lanchonetes": 
1349        "Alimentação (Bares, Restaurantes e Lanchonetes)", 
1350      "bares restaurantes e lanchonetes": 
1351        "Alimentação (Bares, Restaurantes e Lanchonetes)", 
1352      "eventos": "Eventos", 
1353      "industria": "Indústria", 
1354			"posto": "Postos de Combustíveis", 
1355      "postos": "Postos de Combustíveis", 
1356      "posto de combustivel": "Postos de Combustíveis", 
1357      "postos de combustivel": "Postos de Combustíveis", 
1358      "postos de combustiveis": "Postos de Combustíveis", 
1359      "saude": "Saúde", 
1360      "servicos": "Serviços", 
1361      "varejo": "Varejo" 
1362    }; 
1363 
1364 
1365    if (labels[chave]) { 
1366      return labels[chave]; 
1367
1368 
1369 
1370    return segmento 
1371      .toString() 
1372      .trim(); 
1373 
1374
1375 
1376 
1377  /* ========================================================= 
1378     FORMATA OS SEGMENTOS NOS CARDS 
1379  ========================================================= */ 
1380 
1381  function formatarListaSegmentos(lista) { 
1382 
1383    if (!lista.length) { 
1384      return ""; 
1385
1386 
1387    if (lista.length === 1) { 
1388      return lista[0]; 
1389
1390 
1391    if (lista.length === 2) { 
1392      return lista[0] + " e " + lista[1]; 
1393
1394 
1395 
1396    return ( 
1397      lista.slice(0, -1).join(", ") + 
1398      " e " + 
1399      lista[lista.length - 1] 
1400    ); 
1401 
1402
1403 
1404 
1405  function formatarSegmentosCards() { 
1406 
1407    parceiros.forEach( 
1408      function (parceiro) { 
1409 
1410        var campo = 
1411          parceiro.querySelector( 
1412            ".js-segmento-card" 
1413          ); 
1414 
1415 
1416        if (!campo) { 
1417          return; 
1418
1419 
1420 
1421        var segmentos = 
1422          obterSegmentos( 
1423            parceiro.getAttribute( 
1424              "data-category" 
1425
1426          ); 
1427 
1428 
1429        var labels = 
1430          segmentos.map(function (segmento) { 
1431 
1432            return obterLabelSegmento( 
1433              segmento 
1434            ); 
1435 
1436          }); 
1437 
1438 
1439        campo.textContent = 
1440          formatarListaSegmentos(labels); 
1441 
1442
1443    ); 
1444 
1445
1446 
1447 
1448  /* ========================================================= 
1449     CRIAR FILTROS AUTOMATICAMENTE 
1450 
1451     SOMENTE SEGMENTOS USADOS 
1452  ========================================================= */ 
1453 
1454  function gerarFiltros() { 
1455 
1456    if (!filtrosContainer) { 
1457      return; 
1458
1459 
1460 
1461    var segmentosUsados = {}; 
1462 
1463 
1464    parceiros.forEach( 
1465      function (parceiro) { 
1466 
1467        var categorias = 
1468          obterSegmentos( 
1469            parceiro.getAttribute( 
1470              "data-category" 
1471
1472          ); 
1473 
1474 
1475        categorias.forEach( 
1476          function (categoria) { 
1477 
1478            var chave = 
1479              obterChaveSegmento( 
1480                categoria 
1481              ); 
1482 
1483 
1484            if (!chave) { 
1485              return; 
1486
1487 
1488 
1489            if ( 
1490              !segmentosUsados[chave] 
1491            ) { 
1492 
1493              segmentosUsados[chave] = { 
1494                chave: chave, 
1495                valor: categoria, 
1496                label: 
1497                  obterLabelFiltroSegmento( 
1498                    chave, 
1499                    categoria 
1500
1501              }; 
1502 
1503
1504 
1505
1506        ); 
1507 
1508
1509    ); 
1510 
1511 
1512    while ( 
1513      filtrosContainer.firstChild 
1514    ) { 
1515 
1516      filtrosContainer.removeChild( 
1517        filtrosContainer.firstChild 
1518      ); 
1519 
1520
1521 
1522 
1523    var segmentos = 
1524      Object.keys( 
1525        segmentosUsados 
1526
1527      .map(function (chave) { 
1528 
1529        return segmentosUsados[ 
1530          chave 
1531        ]; 
1532 
1533      }); 
1534 
1535 
1536    if (!segmentos.length) { 
1537 
1538      if (filtrosArea) { 
1539 
1540        filtrosArea.style.display = 
1541          "none"; 
1542 
1543
1544 
1545      return; 
1546 
1547
1548 
1549 
1550    if (filtrosArea) { 
1551 
1552      filtrosArea.style.display = ""; 
1553 
1554
1555 
1556 
1557    /* TODOS */ 
1558    var botaoTodos = 
1559      document.createElement( 
1560        "button" 
1561      ); 
1562 
1563 
1564    botaoTodos.type = "button"; 
1565 
1566    botaoTodos.className = 
1567      "btn btn-pill active"; 
1568 
1569    botaoTodos.setAttribute( 
1570      "data-filter", 
1571      "all" 
1572    ); 
1573 
1574    botaoTodos.setAttribute( 
1575      "aria-pressed", 
1576      "true" 
1577    ); 
1578 
1579 
1580    botaoTodos.appendChild( 
1581      document.createTextNode( 
1582        "TODOS OS SEGMENTOS" 
1583
1584    ); 
1585 
1586 
1587    filtrosContainer.appendChild( 
1588      botaoTodos 
1589    ); 
1590 
1591 
1592    /* ORDEM ALFABÉTICA */ 
1593    segmentos.sort( 
1594      function (a, b) { 
1595 
1596        return a.label.localeCompare( 
1597          b.label, 
1598          "pt-BR" 
1599        ); 
1600 
1601
1602    ); 
1603 
1604 
1605    /* CRIA SOMENTE OS USADOS */ 
1606    segmentos.forEach( 
1607      function (segmento) { 
1608 
1609        var botao = 
1610          document.createElement( 
1611            "button" 
1612          ); 
1613 
1614 
1615        botao.type = "button"; 
1616 
1617        botao.className = 
1618          "btn btn-pill"; 
1619 
1620        botao.setAttribute( 
1621          "data-filter", 
1622          segmento.chave 
1623        ); 
1624 
1625        botao.setAttribute( 
1626          "aria-pressed", 
1627          "false" 
1628        ); 
1629 
1630 
1631        botao.appendChild( 
1632          document.createTextNode( 
1633            segmento.label 
1634
1635        ); 
1636 
1637 
1638        filtrosContainer.appendChild( 
1639          botao 
1640        ); 
1641 
1642
1643    ); 
1644 
1645
1646 
1647 
1648  /* ========================================================= 
1649     FILTRAR PARCEIROS 
1650  ========================================================= */ 
1651 
1652  function filtrarParceiros() { 
1653 
1654    var termo = 
1655      normalizarTexto( 
1656        busca ? 
1657          busca.value : 
1658          "" 
1659      ); 
1660 
1661 
1662    var quantidadeVisivel = 0; 
1663 
1664 
1665    parceiros.forEach( 
1666      function (parceiro) { 
1667 
1668        var nome = 
1669          normalizarTexto( 
1670            parceiro.getAttribute( 
1671              "data-name" 
1672
1673          ); 
1674 
1675 
1676        var segmentos = 
1677          obterSegmentos( 
1678            parceiro.getAttribute( 
1679              "data-category" 
1680
1681          ); 
1682 
1683 
1684        var categoriasNormalizadas = 
1685          segmentos.map( 
1686            function (item) { 
1687 
1688              return obterChaveSegmento( 
1689                item 
1690              ); 
1691 
1692
1693          ); 
1694 
1695 
1696        var textoCategorias = 
1697          segmentos 
1698            .map(function (item) { 
1699 
1700              return normalizarTexto( 
1701                item + " " + 
1702                obterLabelSegmento(item) 
1703              ); 
1704 
1705            }) 
1706            .join(" "); 
1707 
1708 
1709        /* BUSCA */ 
1710        var atendeBusca = 
1711          !termo || 
1712          nome.indexOf(termo) !== -1 || 
1713          textoCategorias.indexOf( 
1714            termo 
1715          ) !== -1; 
1716 
1717 
1718        /* FILTRO */ 
1719        var atendeFiltro = 
1720          filtroAtual === "all" || 
1721          categoriasNormalizadas 
1722            .indexOf( 
1723              filtroAtual 
1724            ) !== -1; 
1725 
1726 
1727        var exibir = 
1728          atendeBusca && 
1729          atendeFiltro; 
1730 
1731 
1732        parceiro.style.display = 
1733          exibir ? "" : "none"; 
1734 
1735 
1736        if (exibir) { 
1737          quantidadeVisivel++; 
1738
1739 
1740
1741    ); 
1742 
1743 
1744    if (mensagemVazia) { 
1745 
1746      mensagemVazia.hidden = 
1747        quantidadeVisivel !== 0; 
1748 
1749
1750 
1751
1752 
1753 
1754  /* ========================================================= 
1755     EVENTO FILTROS 
1756  ========================================================= */ 
1757 
1758  if (filtrosContainer) { 
1759 
1760    filtrosContainer.addEventListener( 
1761      "click", 
1762      function (event) { 
1763 
1764        var botao = 
1765          event.target.closest( 
1766            ".btn-pill[data-filter]" 
1767          ); 
1768 
1769 
1770        if (!botao) { 
1771          return; 
1772
1773 
1774 
1775        filtroAtual = 
1776          botao.getAttribute( 
1777            "data-filter" 
1778          ) || "all"; 
1779 
1780 
1781        var botoes = 
1782          filtrosContainer 
1783            .querySelectorAll( 
1784              ".btn-pill" 
1785            ); 
1786 
1787 
1788        botoes.forEach( 
1789          function (item) { 
1790 
1791            item.classList.remove( 
1792              "active" 
1793            ); 
1794 
1795            item.setAttribute( 
1796              "aria-pressed", 
1797              "false" 
1798            ); 
1799 
1800
1801        ); 
1802 
1803 
1804        botao.classList.add( 
1805          "active" 
1806        ); 
1807 
1808        botao.setAttribute( 
1809          "aria-pressed", 
1810          "true" 
1811        ); 
1812 
1813 
1814        filtrarParceiros(); 
1815 
1816
1817    ); 
1818 
1819
1820 
1821 
1822  /* ========================================================= 
1823     EVENTO BUSCA 
1824  ========================================================= */ 
1825 
1826  if (busca) { 
1827 
1828    busca.addEventListener( 
1829      "input", 
1830      filtrarParceiros 
1831    ); 
1832 
1833
1834 
1835 
1836  /* ========================================================= 
1837     ELEMENTOS MODAL 
1838  ========================================================= */ 
1839 
1840  var modal = 
1841    componente.querySelector( 
1842      "#modalParceiro" 
1843    ); 
1844 
1845  var tituloModal = 
1846    componente.querySelector( 
1847      "#modalParceiroTitulo" 
1848    ); 
1849 
1850  var modalDescricao = 
1851    componente.querySelector( 
1852      "#modalDescricao" 
1853    ); 
1854 
1855  var modalSegmentos = 
1856    componente.querySelector( 
1857      "#modalSegmentos" 
1858    ); 
1859 
1860  var modalTerminais = 
1861    componente.querySelector( 
1862      "#modalTerminais" 
1863    ); 
1864 
1865  var modalContato = 
1866    componente.querySelector( 
1867      "#modalContato" 
1868    ); 
1869 
1870  var modalSite = 
1871    componente.querySelector( 
1872      "#modalSite" 
1873    ); 
1874 
1875 
1876  var blocoDescricao = 
1877    componente.querySelector( 
1878      "#modalBlocoDescricao" 
1879    ); 
1880 
1881  var blocoSegmentos = 
1882    componente.querySelector( 
1883      "#modalBlocoSegmentos" 
1884    ); 
1885 
1886  var blocoTerminais = 
1887    componente.querySelector( 
1888      "#modalBlocoTerminais" 
1889    ); 
1890 
1891  var blocoContato = 
1892    componente.querySelector( 
1893      "#modalBlocoContato" 
1894    ); 
1895 
1896  var blocoSite = 
1897    componente.querySelector( 
1898      "#modalBlocoSite" 
1899    ); 
1900 
1901 
1902  var elementoFocoAnterior = null; 
1903  var overflowAnterior = ""; 
1904 
1905 
1906  /* ========================================================= 
1907     LIMPAR ELEMENTO 
1908  ========================================================= */ 
1909 
1910  function limparElemento(elemento) { 
1911 
1912    if (!elemento) { 
1913      return; 
1914
1915 
1916 
1917    while (elemento.firstChild) { 
1918 
1919      elemento.removeChild( 
1920        elemento.firstChild 
1921      ); 
1922 
1923
1924 
1925
1926 
1927 
1928  /* ========================================================= 
1929     COPIA RICH TEXT 
1930 
1931     NÃO USA innerHTML 
1932  ========================================================= */ 
1933 
1934  function copiarConteudo( 
1935    origem, 
1936    destino 
1937  ) { 
1938 
1939    limparElemento(destino); 
1940 
1941 
1942    if ( 
1943      !origem || 
1944      !destino 
1945    ) { 
1946      return false; 
1947
1948 
1949 
1950    var possuiConteudo = 
1951      origem.textContent.trim() !== "" || 
1952      origem.children.length > 0; 
1953 
1954 
1955    if (!possuiConteudo) { 
1956      return false; 
1957
1958 
1959 
1960    Array.prototype.slice 
1961      .call( 
1962        origem.childNodes 
1963
1964      .forEach( 
1965        function (node) { 
1966 
1967          destino.appendChild( 
1968            node.cloneNode(true) 
1969          ); 
1970 
1971
1972      ); 
1973 
1974 
1975    return true; 
1976 
1977
1978 
1979 
1980  /* ========================================================= 
1981     CRIAR LINK 
1982  ========================================================= */ 
1983 
1984  function criarLink( 
1985    texto, 
1986    href, 
1987    target 
1988  ) { 
1989 
1990    var link = 
1991      document.createElement("a"); 
1992 
1993 
1994    link.href = href; 
1995 
1996 
1997    link.appendChild( 
1998      document.createTextNode( 
1999        texto 
2000
2001    ); 
2002 
2003 
2004    if (target) { 
2005 
2006      link.target = target; 
2007 
2008      link.rel = 
2009        "noopener noreferrer"; 
2010 
2011
2012 
2013 
2014    return link; 
2015 
2016
2017 
2018 
2019  /* ========================================================= 
2020     URL WHATSAPP 
2021  ========================================================= */ 
2022 
2023  function criarUrlWhatsApp( 
2024    numero 
2025  ) { 
2026 
2027    var numeroLimpo = 
2028      (numero || "") 
2029        .replace(/\D/g, ""); 
2030 
2031 
2032    if (!numeroLimpo) { 
2033      return ""; 
2034
2035 
2036 
2037    if ( 
2038      numeroLimpo.indexOf("55") !== 0 
2039    ) { 
2040 
2041      numeroLimpo = 
2042        "55" + numeroLimpo; 
2043 
2044
2045 
2046 
2047    return ( 
2048      "https://wa.me/" + 
2049      numeroLimpo 
2050    ); 
2051 
2052
2053 
2054 
2055  /* ========================================================= 
2056     URL INSTAGRAM 
2057  ========================================================= */ 
2058 
2059  function criarUrlInstagram( 
2060    instagram 
2061  ) { 
2062 
2063    var valor = 
2064      (instagram || "") 
2065        .trim(); 
2066 
2067 
2068    if (!valor) { 
2069      return ""; 
2070
2071 
2072 
2073    if ( 
2074      valor.indexOf( 
2075        "http://" 
2076      ) === 0 || 
2077      valor.indexOf( 
2078        "https://" 
2079      ) === 0 
2080    ) { 
2081 
2082      return valor; 
2083 
2084
2085 
2086 
2087    valor = valor 
2088      .replace(/^@/, "") 
2089      .replace(/^www\./, "") 
2090      .replace( 
2091        /^instagram\.com\//, 
2092        "" 
2093      ); 
2094 
2095 
2096    return ( 
2097      "https://instagram.com/" + 
2098      valor 
2099    ); 
2100 
2101
2102 
2103 
2104  /* ========================================================= 
2105     URL SITE 
2106  ========================================================= */ 
2107 
2108  function criarUrlSite(site) { 
2109 
2110    var valor = 
2111      (site || "").trim(); 
2112 
2113 
2114    if (!valor) { 
2115      return ""; 
2116
2117 
2118 
2119    if ( 
2120      valor.indexOf( 
2121        "http://" 
2122      ) === 0 || 
2123      valor.indexOf( 
2124        "https://" 
2125      ) === 0 
2126    ) { 
2127 
2128      return valor; 
2129 
2130
2131 
2132 
2133    return ( 
2134      "https://" + valor 
2135    ); 
2136 
2137
2138 
2139 
2140  /* ========================================================= 
2141     ADICIONAR CONTATO 
2142  ========================================================= */ 
2143 
2144  function adicionarContato( 
2145    titulo, 
2146    texto, 
2147    href, 
2148    novaAba 
2149  ) { 
2150 
2151    if (!texto) { 
2152      return false; 
2153
2154 
2155 
2156    var p = 
2157      document.createElement("p"); 
2158 
2159 
2160    p.appendChild( 
2161      document.createTextNode( 
2162        titulo + ": " 
2163
2164    ); 
2165 
2166 
2167    if (href) { 
2168 
2169      p.appendChild( 
2170        criarLink( 
2171          texto, 
2172          href, 
2173          novaAba ? 
2174            "_blank" : 
2175            "" 
2176
2177      ); 
2178 
2179    } else { 
2180 
2181      p.appendChild( 
2182        document.createTextNode( 
2183          texto 
2184
2185      ); 
2186 
2187
2188 
2189 
2190    modalContato.appendChild(p); 
2191 
2192 
2193    return true; 
2194 
2195
2196 
2197 
2198  /* ========================================================= 
2199     SEGMENTOS DO MODAL 
2200  ========================================================= */ 
2201 
2202  function montarSegmentosModal( 
2203    valor 
2204  ) { 
2205 
2206    limparElemento( 
2207      modalSegmentos 
2208    ); 
2209 
2210 
2211    var segmentos = 
2212      obterSegmentos(valor); 
2213 
2214 
2215    if (!segmentos.length) { 
2216      return false; 
2217
2218 
2219 
2220    segmentos.forEach( 
2221      function (segmento) { 
2222 
2223        var span = 
2224          document.createElement( 
2225            "span" 
2226          ); 
2227 
2228 
2229        span.className = 
2230          "modal-segmento-tag"; 
2231 
2232 
2233        span.appendChild( 
2234          document.createTextNode( 
2235            obterLabelSegmento( 
2236              segmento 
2237
2238
2239        ); 
2240 
2241 
2242        modalSegmentos 
2243          .appendChild(span); 
2244 
2245
2246    ); 
2247 
2248 
2249    return true; 
2250 
2251
2252 
2253 
2254  /* ========================================================= 
2255     ABRIR MODAL 
2256  ========================================================= */ 
2257 
2258  function abrirModal(botao) { 
2259 
2260    if (!modal) { 
2261      return; 
2262
2263 
2264 
2265    var parceiro = 
2266      botao.closest( 
2267        ".parceiro" 
2268      ); 
2269 
2270 
2271    if (!parceiro) { 
2272      return; 
2273
2274 
2275 
2276    var dados = 
2277      parceiro.querySelector( 
2278        ".parceiro-dados" 
2279      ); 
2280 
2281 
2282    if (!dados) { 
2283      return; 
2284
2285 
2286 
2287    /* ====================== 
2288       NOME 
2289    ====================== */ 
2290 
2291    var nome = 
2292      dados.querySelector( 
2293        ".js-nome" 
2294      ); 
2295 
2296 
2297    tituloModal.textContent = 
2298      nome ? 
2299        nome.textContent.trim() : 
2300        ""; 
2301 
2302 
2303    /* ====================== 
2304       DESCRIÇÃO 
2305    ====================== */ 
2306 
2307    var descricao = 
2308      dados.querySelector( 
2309        ".js-descricao" 
2310      ); 
2311 
2312 
2313    blocoDescricao.hidden = 
2314      !copiarConteudo( 
2315        descricao, 
2316        modalDescricao 
2317      ); 
2318 
2319 
2320    /* ====================== 
2321       SEGMENTOS 
2322    ====================== */ 
2323 
2324    var segmentos = 
2325      dados.querySelector( 
2326        ".js-segmentos" 
2327      ); 
2328 
2329 
2330    blocoSegmentos.hidden = 
2331      !montarSegmentosModal( 
2332        segmentos ? 
2333          segmentos 
2334            .textContent 
2335            .trim() : 
2336          "" 
2337      ); 
2338 
2339 
2340    /* ====================== 
2341       TERMINAIS 
2342    ====================== */ 
2343 
2344    var terminais = 
2345      dados.querySelector( 
2346        ".js-terminais" 
2347      ); 
2348 
2349 
2350    blocoTerminais.hidden = 
2351      !copiarConteudo( 
2352        terminais, 
2353        modalTerminais 
2354      ); 
2355 
2356 
2357    /* ====================== 
2358       CONTATO 
2359    ====================== */ 
2360 
2361    limparElemento( 
2362      modalContato 
2363    ); 
2364 
2365 
2366    var emailElemento = 
2367      dados.querySelector( 
2368        ".js-email" 
2369      ); 
2370 
2371    var whatsappElemento = 
2372      dados.querySelector( 
2373        ".js-whatsapp" 
2374      ); 
2375 
2376    var instagramElemento = 
2377      dados.querySelector( 
2378        ".js-instagram" 
2379      ); 
2380 
2381 
2382    var email = 
2383      emailElemento ? 
2384        emailElemento 
2385          .textContent 
2386          .trim() : 
2387        ""; 
2388 
2389 
2390    var whatsapp = 
2391      whatsappElemento ? 
2392        whatsappElemento 
2393          .textContent 
2394          .trim() : 
2395        ""; 
2396 
2397 
2398    var instagram = 
2399      instagramElemento ? 
2400        instagramElemento 
2401          .textContent 
2402          .trim() : 
2403        ""; 
2404 
2405 
2406    var possuiContato = false; 
2407 
2408 
2409    if (email) { 
2410 
2411      possuiContato = 
2412        adicionarContato( 
2413          "E-mail", 
2414          email, 
2415          "mailto:" + email, 
2416          false 
2417        ) || 
2418        possuiContato; 
2419 
2420
2421 
2422 
2423    if (whatsapp) { 
2424 
2425      possuiContato = 
2426        adicionarContato( 
2427          "WhatsApp", 
2428          whatsapp, 
2429          criarUrlWhatsApp( 
2430            whatsapp 
2431          ), 
2432          true 
2433        ) || 
2434        possuiContato; 
2435 
2436
2437 
2438 
2439    if (instagram) { 
2440 
2441      var instagramLabel = 
2442        instagram; 
2443 
2444 
2445      if ( 
2446        instagramLabel.indexOf( 
2447          "http" 
2448        ) !== 0 && 
2449        instagramLabel.charAt(0) 
2450          !== "@" 
2451      ) { 
2452 
2453        instagramLabel = 
2454          "@" + 
2455          instagramLabel; 
2456 
2457
2458 
2459 
2460      possuiContato = 
2461        adicionarContato( 
2462          "Instagram", 
2463          instagramLabel, 
2464          criarUrlInstagram( 
2465            instagram 
2466          ), 
2467          true 
2468        ) || 
2469        possuiContato; 
2470 
2471
2472 
2473 
2474    blocoContato.hidden = 
2475      !possuiContato; 
2476 
2477 
2478    /* ====================== 
2479       SITE 
2480    ====================== */ 
2481 
2482    limparElemento( 
2483      modalSite 
2484    ); 
2485 
2486 
2487    var siteElemento = 
2488      dados.querySelector( 
2489        ".js-site" 
2490      ); 
2491 
2492 
2493    var site = 
2494      siteElemento ? 
2495        siteElemento 
2496          .textContent 
2497          .trim() : 
2498        ""; 
2499 
2500 
2501    if (site) { 
2502 
2503      modalSite.appendChild( 
2504        criarLink( 
2505          site, 
2506          criarUrlSite(site), 
2507          "_blank" 
2508
2509      ); 
2510 
2511 
2512      blocoSite.hidden = false; 
2513 
2514    } else { 
2515 
2516      blocoSite.hidden = true; 
2517 
2518
2519 
2520 
2521    /* ====================== 
2522       ABRIR 
2523    ====================== */ 
2524 
2525    elementoFocoAnterior = 
2526      document.activeElement; 
2527 
2528 
2529    overflowAnterior = 
2530      document.body.style 
2531        .overflow; 
2532 
2533 
2534    modal.hidden = false; 
2535 
2536 
2537    document.body.style 
2538      .overflow = "hidden"; 
2539 
2540 
2541    var fechar = 
2542      modal.querySelector( 
2543        ".close-modal" 
2544      ); 
2545 
2546 
2547    if (fechar) { 
2548      fechar.focus(); 
2549
2550 
2551
2552 
2553 
2554  /* ========================================================= 
2555     FECHAR MODAL 
2556  ========================================================= */ 
2557 
2558  function fecharModal() { 
2559 
2560    if ( 
2561      !modal || 
2562      modal.hidden 
2563    ) { 
2564      return; 
2565
2566 
2567 
2568    modal.hidden = true; 
2569 
2570 
2571    document.body.style 
2572      .overflow = 
2573        overflowAnterior; 
2574 
2575 
2576    if ( 
2577      elementoFocoAnterior && 
2578      typeof elementoFocoAnterior 
2579        .focus === "function" 
2580    ) { 
2581 
2582      elementoFocoAnterior 
2583        .focus(); 
2584 
2585
2586 
2587
2588 
2589 
2590  /* ========================================================= 
2591     CLIQUES 
2592  ========================================================= */ 
2593 
2594  componente.addEventListener( 
2595    "click", 
2596    function (event) { 
2597 
2598      var botaoModal = 
2599        event.target.closest( 
2600          ".btn-modal" 
2601        ); 
2602 
2603 
2604      if (botaoModal) { 
2605 
2606        event.preventDefault(); 
2607 
2608        abrirModal( 
2609          botaoModal 
2610        ); 
2611 
2612        return; 
2613 
2614
2615 
2616 
2617      var fechar = 
2618        event.target.closest( 
2619          ".close-modal" 
2620        ); 
2621 
2622 
2623      if (fechar) { 
2624 
2625        event.preventDefault(); 
2626 
2627        fecharModal(); 
2628 
2629        return; 
2630 
2631
2632 
2633 
2634      /* 
2635       * Fecha clicando no fundo 
2636       */ 
2637      if ( 
2638        modal && 
2639        event.target === modal 
2640      ) { 
2641 
2642        fecharModal(); 
2643 
2644
2645 
2646
2647  ); 
2648 
2649 
2650  /* ========================================================= 
2651     ESC 
2652  ========================================================= */ 
2653 
2654  document.addEventListener( 
2655    "keydown", 
2656    function (event) { 
2657 
2658      if ( 
2659        event.key === "Escape" && 
2660        modal && 
2661        !modal.hidden 
2662      ) { 
2663 
2664        fecharModal(); 
2665 
2666
2667 
2668
2669  ); 
2670 
2671 
2672  /* ========================================================= 
2673     INICIALIZAÇÃO 
2674  ========================================================= */ 
2675 
2676  formatarSegmentosCards(); 
2677 
2678  gerarFiltros(); 
2679 
2680  filtrarParceiros(); 
2681 
2682})(); 
2683</script> 
Conta Especial

Uma conta corrente com crédito garantido e excelentes taxas, ideal para atender suas necessidades do dia a dia ou cobrir despesas emergenciais.

Conta Salário

Uma conta aberta por iniciativa do empregador para efetuar o
pagamento mensal aos seus colaboradores.

Conta Capital

Ao abrir sua conta, você deposita uma quantia em sua Conta Capital que fica rendendo e participa dos resultados financeiros ao final do ano!

Portabilidade

Faça a portabilidade e solicite a transferência automática do seu salário ou do recebimento da sua aposentadoria sem burocracia.

Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> Fieldset67243883  [in template "20102#20128#189538129" at line 811, column 8]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #list Fieldset67243883.getSiblings() ...  [in template "20102#20128#189538129" at line 811, column 1]
----
1<style type="text/css"> 
2/* ========================================================= 
3   PARCEIROS SIPAG - LAYOUT PRINCIPAL 
4========================================================= */ 
5 
6.sipag-parceiros { 
7  background-color: #fff; 
8  color: #003641; 
9  padding: 34px 0 56px; 
10
11 
12.sipag-parceiros > .container { 
13  max-width: 1440px; 
14  padding-left: 24px; 
15  padding-right: 24px; 
16  width: 100%; 
17
18 
19/* ========================================================= 
20   FILTROS 
21========================================================= */ 
22 
23.sipag-parceiros .parceiros-filtros-area { 
24  margin-bottom: 34px; 
25
26 
27.sipag-parceiros .parceiros-intro { 
28  color: #003641; 
29  font-size: 17px; 
30  line-height: 1.4; 
31  margin: 0 0 26px; 
32  text-align: center; 
33
34 
35.sipag-parceiros .filtros { 
36  align-items: center; 
37  display: flex; 
38  flex-wrap: wrap; 
39  gap: 12px; 
40  justify-content: center; 
41  margin: 0 auto; 
42  width: 100%; 
43
44 
45.sipag-parceiros .btn-pill { 
46  align-items: center; 
47  background-color: #fff; 
48  border: 1px solid #d9dcdf; 
49  border-radius: 10px; 
50  box-shadow: none; 
51  color: #272833; 
52  cursor: pointer; 
53  display: inline-flex; 
54  flex: 0 0 auto; 
55  font-size: 18px; 
56  font-weight: 700; 
57  justify-content: center; 
58  line-height: 1.2; 
59  min-height: 64px; 
60  min-width: 250px; 
61  padding: 14px 22px; 
62  text-align: center; 
63  text-transform: uppercase; 
64  transition: 
65    background-color .2s ease, 
66    border-color .2s ease, 
67    color .2s ease; 
68  white-space: nowrap; 
69
70 
71.sipag-parceiros .btn-pill:hover { 
72  background-color: #f5fffd; 
73  border-color: #00ae9d; 
74  color: #003641; 
75
76 
77.sipag-parceiros .btn-pill.active { 
78  background-color: #003641; 
79  border-color: #003641; 
80  color: #fff; 
81
82 
83.sipag-parceiros .btn-pill:focus { 
84  box-shadow: 0 0 0 3px rgba(0, 174, 157, .16); 
85  outline: none; 
86
87 
88/* ========================================================= 
89   BUSCA 
90========================================================= */ 
91 
92.sipag-parceiros .parceiros-busca { 
93  margin: 0 auto 56px; 
94  max-width: none; 
95  position: relative; 
96  width: 100%; 
97
98 
99.sipag-parceiros .parceiros-busca-icone { 
100  color: #00ae9d; 
101  height: 28px; 
102  left: 21px; 
103  pointer-events: none; 
104  position: absolute; 
105  top: 50%; 
106  transform: translateY(-50%); 
107  width: 28px; 
108
109 
110.sipag-parceiros .parceiros-busca-campo { 
111  background-color: #fff; 
112  border: 2px solid #00ae9d; 
113  border-radius: 7px; 
114  color: #003641; 
115  font-size: 16px; 
116  height: 68px; 
117  outline: none; 
118  padding: 0 24px 0 62px; 
119  transition: 
120    border-color .2s ease, 
121    box-shadow .2s ease; 
122  width: 100%; 
123
124 
125.sipag-parceiros .parceiros-busca-campo::placeholder { 
126  color: #b1bbc8; 
127  opacity: 1; 
128
129 
130.sipag-parceiros .parceiros-busca-campo:focus { 
131  border-color: #00ae9d; 
132  box-shadow: 0 0 0 3px rgba(0, 174, 157, .12); 
133
134 
135/* ========================================================= 
136   GRID 
137========================================================= */ 
138 
139.sipag-parceiros #grid-parceiros { 
140  align-items: stretch; 
141
142 
143.sipag-parceiros .parceiro { 
144  display: flex; 
145
146 
147/* ========================================================= 
148   CARD 
149========================================================= */ 
150 
151.sipag-parceiros .card-parceiro { 
152  background-color: #fff; 
153  border: 1px solid #dedede; 
154  border-radius: 14px; 
155  box-shadow: none; 
156  display: flex; 
157  flex-direction: column; 
158  min-height: 510px; 
159  padding: 18px; 
160  transition: 
161    border-color .2s ease, 
162    box-shadow .2s ease; 
163  width: 100%; 
164
165 
166.sipag-parceiros .card-parceiro:hover { 
167  border-color: #d1d8d7; 
168  box-shadow: 0 8px 22px rgba(0, 54, 65, .08); 
169  transform: none; 
170
171 
172/* ========================================================= 
173   LOGO 
174========================================================= */ 
175 
176.sipag-parceiros .parceiro-logo { 
177  align-items: center; 
178  display: flex; 
179  height: 255px; 
180  justify-content: center; 
181  margin-bottom: 0; 
182  overflow: hidden; 
183  width: 100%; 
184
185 
186.sipag-parceiros .parceiro-logo img { 
187  display: block; 
188  max-height: 169px; 
189  max-width: 230px; 
190  object-fit: contain; 
191  width: auto; 
192
193 
194/* ========================================================= 
195   TEXTO DO CARD 
196========================================================= */ 
197 
198.sipag-parceiros .card-parceiro h6 { 
199  color: #00ae9d; 
200  font-size: 23px; 
201  font-weight: 700; 
202  line-height: 1.25; 
203  margin: 0 0 10px; 
204
205 
206.sipag-parceiros .parceiro-segmento { 
207  color: #5b5b5b; 
208  font-size: 15px; 
209  line-height: 1.55; 
210  margin: 0 0 24px; 
211
212 
213/* ========================================================= 
214   AÇÕES DO CARD 
215========================================================= */ 
216 
217.sipag-parceiros .parceiro-acoes { 
218  display: flex; 
219  flex-direction: column; 
220  gap: 10px; 
221  margin-top: auto; 
222  width: 100%; 
223
224 
225.sipag-parceiros .btn-parceiro { 
226  align-items: center; 
227  border-radius: 9px; 
228  cursor: pointer; 
229  display: inline-flex; 
230  flex: none; 
231  font-size: 18px; 
232  font-weight: 700; 
233  justify-content: center; 
234  min-height: 62px; 
235  padding: 10px 14px; 
236  text-align: center; 
237  text-decoration: none !important; 
238  transition: 
239    background-color .2s ease, 
240    border-color .2s ease, 
241    color .2s ease; 
242  width: 100%; 
243
244 
245.sipag-parceiros .btn-site { 
246  background-color: #fff; 
247  border: 1px solid #00ae9d; 
248  color: #00ae9d; 
249
250 
251.sipag-parceiros .btn-site:hover { 
252  background-color: #f3fffd; 
253  border-color: #00ae9d; 
254  color: #008f83; 
255
256 
257.sipag-parceiros .btn-saiba { 
258  background-color: #00ae9d; 
259  border: 1px solid #00ae9d; 
260  color: #fff; 
261
262 
263.sipag-parceiros .btn-saiba:hover { 
264  background-color: #008f83; 
265  border-color: #008f83; 
266  color: #fff; 
267
268 
269/* ========================================================= 
270   NENHUM RESULTADO 
271========================================================= */ 
272 
273.sipag-parceiros .parceiros-vazio { 
274  color: #536463; 
275  font-size: 18px; 
276  margin: 40px 0; 
277  text-align: center; 
278
279 
280@media (max-width: 1199.98px) { 
281  .sipag-parceiros > .container { 
282    max-width: 1140px; 
283
284 
285  .sipag-parceiros .btn-pill { 
286    font-size: 16px; 
287    min-height: 58px; 
288    min-width: 210px; 
289
290 
291  .sipag-parceiros .card-parceiro { 
292    min-height: 545px; 
293
294 
295  .sipag-parceiros .parceiro-logo { 
296    height: 235px; 
297
298 
299  .sipag-parceiros .parceiro-logo img { 
300    max-height: 140px; 
301    max-width: 210px; 
302
303
304 
305/* ========================================================= 
306   MODAL - FUNDO 
307========================================================= */ 
308 
309.modal-parceiro-sipag { 
310  align-items: center; 
311  background-color: rgba(0, 0, 0, .55); 
312  bottom: 0; 
313  display: flex; 
314  justify-content: center; 
315  left: 0; 
316  overflow-y: auto; 
317  padding: 14px; 
318  position: fixed; 
319  right: 0; 
320  top: 0; 
321  z-index: 11000; 
322
323 
324.modal-parceiro-sipag[hidden] { 
325  display: none !important; 
326
327 
328/* ========================================================= 
329   MODAL - CONTAINER 
330========================================================= */ 
331 
332.modal-parceiro-sipag .modal-parceiro-dialog { 
333  background-color: #fff; 
334  border-radius: 18px; 
335  box-shadow: 0 16px 45px rgba(0, 54, 65, .25); 
336  margin: auto; 
337  max-width: 1265px; 
338  overflow: hidden; 
339  width: 100%; 
340
341 
342/* ========================================================= 
343   MODAL - CABEÇALHO 
344========================================================= */ 
345 
346.modal-parceiro-sipag .modal-parceiro-header { 
347  align-items: center; 
348  border-bottom: 1px solid #dfe5e4; 
349  display: flex; 
350  justify-content: space-between; 
351  min-height: 68px; 
352  padding: 12px 38px; 
353
354 
355.modal-parceiro-sipag .modal-parceiro-header h4 { 
356  color: #00ae9d; 
357  font-size: 34px; 
358  font-weight: 700; 
359  line-height: 1.2; 
360  margin: 0; 
361
362 
363/* ========================================================= 
364   MODAL - FECHAR 
365========================================================= */ 
366 
367.modal-parceiro-sipag .close-modal { 
368  align-items: center; 
369  background-color: #fff; 
370  border: 2px solid #005461; 
371  border-radius: 50%; 
372  color: #005461; 
373  cursor: pointer; 
374  display: flex; 
375  flex: 0 0 38px; 
376  font-size: 28px; 
377  font-weight: 400; 
378  height: 38px; 
379  justify-content: center; 
380  line-height: 1; 
381  padding: 0 0 3px; 
382  transition: 
383    background-color .2s ease, 
384    color .2s ease; 
385  width: 38px; 
386
387 
388.modal-parceiro-sipag .close-modal:hover { 
389  background-color: #005461; 
390  color: #fff; 
391
392 
393.modal-parceiro-sipag .close-modal:focus { 
394  box-shadow: 0 0 0 3px rgba(0, 174, 157, .2); 
395  outline: none; 
396
397 
398/* ========================================================= 
399   MODAL - CORPO 
400========================================================= */ 
401 
402.modal-parceiro-sipag .modal-parceiro-body { 
403  max-height: calc(100vh - 100px); 
404  overflow-y: auto; 
405  padding: 24px 28px 34px; 
406
407 
408/* ========================================================= 
409   MODAL - BLOCOS 
410========================================================= */ 
411 
412.modal-parceiro-sipag .modal-bloco { 
413  border: 1px solid #00ae9d; 
414  border-radius: 9px; 
415  box-sizing: border-box; 
416  margin: 0; 
417  padding: 22px 24px; 
418
419 
420.modal-parceiro-sipag .modal-bloco h6 { 
421  color: #00ae9d; 
422  font-size: 20px; 
423  font-weight: 700; 
424  line-height: 1.3; 
425  margin: 0 0 20px; 
426
427 
428/* ========================================================= 
429   DESCRIÇÃO 
430========================================================= */ 
431 
432.modal-parceiro-sipag #modalBlocoDescricao { 
433  margin-bottom: 16px; 
434  min-height: 145px; 
435
436 
437.modal-parceiro-sipag #modalDescricao, 
438.modal-parceiro-sipag #modalDescricao p { 
439  color: #004653; 
440  font-size: 21px; 
441  line-height: 1.7; 
442
443 
444.modal-parceiro-sipag #modalDescricao p { 
445  margin: 0 0 8px; 
446
447 
448.modal-parceiro-sipag #modalDescricao p:last-child { 
449  margin-bottom: 0; 
450
451 
452/* ========================================================= 
453   GRID DO MODAL 
454========================================================= */ 
455 
456.modal-parceiro-sipag .modal-detalhes-grid { 
457  display: grid; 
458  gap: 16px 20px; 
459  grid-template-columns: repeat(2, minmax(0, 1fr)); 
460
461 
462.modal-parceiro-sipag #modalBlocoSegmentos, 
463.modal-parceiro-sipag #modalBlocoTerminais { 
464  min-height: 280px; 
465
466 
467.modal-parceiro-sipag #modalBlocoContato, 
468.modal-parceiro-sipag #modalBlocoSite { 
469  min-height: 170px; 
470
471 
472/* ========================================================= 
473   SEGMENTOS DO MODAL 
474========================================================= */ 
475 
476.modal-parceiro-sipag .modal-segmentos { 
477  align-items: flex-start; 
478  display: flex; 
479  flex-wrap: wrap; 
480  gap: 12px; 
481
482 
483.modal-parceiro-sipag .modal-segmento-tag { 
484  background-color: #fafafa; 
485  border: 1px solid #cfcfcf; 
486  border-radius: 6px; 
487  color: #5d6262; 
488  display: inline-flex; 
489  font-size: 15px; 
490  font-weight: 400; 
491  line-height: 1.2; 
492  padding: 10px 12px; 
493  text-transform: uppercase; 
494
495 
496/* ========================================================= 
497   TERMINAIS 
498========================================================= */ 
499 
500.modal-parceiro-sipag #modalTerminais, 
501.modal-parceiro-sipag #modalTerminais p { 
502  color: #004653; 
503  font-size: 21px; 
504  line-height: 1.8; 
505
506 
507.modal-parceiro-sipag #modalTerminais p { 
508  margin: 0 0 6px; 
509
510 
511.modal-parceiro-sipag #modalTerminais p:last-child { 
512  margin-bottom: 0; 
513
514 
515/* ========================================================= 
516   CONTATO 
517========================================================= */ 
518 
519.modal-parceiro-sipag #modalContato { 
520  color: #004653; 
521  font-size: 21px; 
522  line-height: 1.8; 
523
524 
525.modal-parceiro-sipag #modalContato p { 
526  color: #004653; 
527  font-size: 21px; 
528  line-height: 1.8; 
529  margin: 0; 
530
531 
532.modal-parceiro-sipag #modalContato strong { 
533  color: #004653; 
534  font-weight: 400; 
535
536 
537.modal-parceiro-sipag #modalContato a { 
538  color: #00a99d; 
539  text-decoration: none; 
540
541 
542.modal-parceiro-sipag #modalContato a:hover { 
543  text-decoration: underline; 
544
545 
546/* ========================================================= 
547   WEBSITE 
548========================================================= */ 
549 
550.modal-parceiro-sipag #modalSite { 
551  font-size: 21px; 
552  line-height: 1.7; 
553
554 
555.modal-parceiro-sipag #modalSite a { 
556  color: #00a99d; 
557  overflow-wrap: anywhere; 
558  text-decoration: none; 
559
560 
561.modal-parceiro-sipag #modalSite a:hover { 
562  text-decoration: underline; 
563
564 
565/* ========================================================= 
566   RICH TEXT 
567========================================================= */ 
568 
569.modal-parceiro-sipag .modal-bloco ul, 
570.modal-parceiro-sipag .modal-bloco ol { 
571  color: #004653; 
572  margin-bottom: 0; 
573  padding-left: 20px; 
574
575 
576.modal-parceiro-sipag .modal-bloco li { 
577  color: #004653; 
578  line-height: 1.7; 
579  margin-bottom: 5px; 
580
581 
582/* ========================================================= 
583   MOBILE 
584========================================================= */ 
585 
586@media (max-width: 767.98px) { 
587  .sipag-parceiros { 
588    padding: 28px 0 40px; 
589
590 
591  .sipag-parceiros > .container { 
592    padding-left: 15px; 
593    padding-right: 15px; 
594
595 
596  .sipag-parceiros .parceiros-filtros-area { 
597    margin-bottom: 24px; 
598
599 
600  .sipag-parceiros .parceiros-intro { 
601    font-size: 16px; 
602    margin-bottom: 18px; 
603
604 
605  .sipag-parceiros .filtros { 
606    flex-wrap: nowrap; 
607    gap: 10px; 
608    justify-content: flex-start; 
609    margin-left: -15px; 
610    margin-right: -15px; 
611    overflow-x: auto; 
612    padding: 3px 15px 12px; 
613    width: auto; 
614    -webkit-overflow-scrolling: touch; 
615
616 
617  .sipag-parceiros .filtros::-webkit-scrollbar { 
618    height: 4px; 
619
620 
621  .sipag-parceiros .filtros::-webkit-scrollbar-thumb { 
622    background-color: #b5c7c5; 
623    border-radius: 10px; 
624
625 
626  .sipag-parceiros .btn-pill { 
627    border-radius: 8px; 
628    flex: 0 0 auto; 
629    font-size: 14px; 
630    min-height: 54px; 
631    min-width: 205px; 
632    padding: 12px 16px; 
633
634 
635  .sipag-parceiros .parceiros-busca { 
636    margin-bottom: 34px; 
637
638 
639  .sipag-parceiros .parceiros-busca-campo { 
640    font-size: 16px; 
641    height: 56px; 
642    padding-left: 52px; 
643
644 
645  .sipag-parceiros .parceiros-busca-icone { 
646    height: 22px; 
647    left: 18px; 
648    width: 22px; 
649
650 
651  .sipag-parceiros .card-parceiro { 
652    border-radius: 12px; 
653    min-height: auto; 
654    padding: 20px; 
655
656 
657  .sipag-parceiros .parceiro-logo { 
658    height: 200px; 
659
660 
661  .sipag-parceiros .parceiro-logo img { 
662    max-height: 130px; 
663    max-width: 200px; 
664
665 
666  .sipag-parceiros .card-parceiro h6 { 
667    font-size: 21px; 
668
669 
670  .sipag-parceiros .parceiro-segmento { 
671    font-size: 14px; 
672
673 
674  .sipag-parceiros .parceiro-acoes { 
675    flex-direction: column; 
676
677 
678  .sipag-parceiros .btn-parceiro { 
679    font-size: 17px; 
680    min-height: 54px; 
681    width: 100%; 
682
683 
684  .modal-parceiro-sipag { 
685    align-items: flex-end; 
686    padding: 0; 
687
688 
689  .modal-parceiro-sipag .modal-parceiro-dialog { 
690    border-radius: 16px 16px 0 0; 
691    max-height: 95vh; 
692
693 
694  .modal-parceiro-sipag .modal-parceiro-header { 
695    min-height: 65px; 
696    padding: 14px 20px; 
697
698 
699  .modal-parceiro-sipag .modal-parceiro-header h4 { 
700    font-size: 24px; 
701
702 
703  .modal-parceiro-sipag .close-modal { 
704    flex: 0 0 36px; 
705    height: 36px; 
706    width: 36px; 
707
708 
709  .modal-parceiro-sipag .modal-parceiro-body { 
710    max-height: calc(95vh - 65px); 
711    padding: 18px 15px 25px; 
712
713 
714  .modal-parceiro-sipag .modal-detalhes-grid { 
715    grid-template-columns: 1fr; 
716
717 
718  .modal-parceiro-sipag .modal-bloco { 
719    min-height: auto !important; 
720    padding: 20px; 
721
722 
723  .modal-parceiro-sipag #modalBlocoDescricao { 
724    min-height: auto; 
725
726 
727  .modal-parceiro-sipag .modal-bloco h6 { 
728    margin-bottom: 15px; 
729
730
731</style> 
732 
733<div class="col-12 px-0"> 
734  <section class="sipag-parceiros" id="sipag-parceiros"> 
735 
736<div class="container"> 
737 
738  <!-- ===================================================== 
739       FILTROS 
740  ====================================================== --> 
741 
742  <div 
743    class="parceiros-filtros-area" 
744    id="parceiros-filtros-area" 
745
746 
747<p class="parceiros-intro"> 
748  Filtre abaixo os segmentos que deseja visualizar: 
749</p> 
750 
751<div 
752  aria-label="Filtrar parceiros por segmento" 
753  class="filtros" 
754  id="filtros-parceiros" 
755  role="group" 
756></div> 
757 
758  </div> 
759 
760  <!-- ===================================================== 
761       BUSCA 
762  ====================================================== --> 
763 
764  <div class="parceiros-busca" role="search"> 
765 
766<label 
767  class="sr-only" 
768  for="busca-parceiros" 
769
770  Pesquisar parceiros por nome ou categoria 
771</label> 
772 
773<svg 
774  aria-hidden="true" 
775  class="parceiros-busca-icone" 
776  fill="none" 
777  viewBox="0 0 24 24" 
778
779  <circle 
780    cx="11" 
781    cy="11" 
782    r="7" 
783    stroke="currentColor" 
784    stroke-width="2" 
785  ></circle> 
786 
787  <path 
788    d="M16 16L21 21" 
789    stroke="currentColor" 
790    stroke-linecap="round" 
791    stroke-width="2" 
792  ></path> 
793</svg> 
794 
795<input 
796  autocomplete="off" 
797  class="parceiros-busca-campo" 
798  id="busca-parceiros" 
799  placeholder="Pesquise por nome do anexo ou categoria" 
800  type="search" 
801/> 
802 
803  </div> 
804 
805  <!-- ===================================================== 
806       GRID DE PARCEIROS 
807  ====================================================== --> 
808 
809  <div class="row" id="grid-parceiros"> 
810 
811<#list Fieldset67243883.getSiblings() as parceiro> 
812 
813  <#assign nome = parceiro.Text51037391.getData()!"" /> 
814  <#assign segmentos = parceiro.CheckboxMultiple15617005.getData()!"" /> 
815  <#assign site = parceiro.Text51612886.getData()!"" /> 
816 
817  <#assign siteUrl = site /> 
818 
819  <#if site?has_content 
820    && !site?starts_with("http://") 
821    && !site?starts_with("https://")> 
822 
823    <#assign siteUrl = "https://" + site /> 
824 
825  </#if> 
826 
827 
828  <div 
829    class="col-sm-6 col-lg-4 col-xl-3 mb-4 parceiro" 
830    data-category="${segmentos?html}" 
831    data-name="${nome?html}" 
832
833 
834    <div class="card-parceiro"> 
835 
836      <!-- LOGO --> 
837      <div class="parceiro-logo"> 
838 
839        <#if parceiro.Image82450298.getData()?? 
840          && parceiro.Image82450298.getData() != ""> 
841 
842          <img 
843            alt="${nome?html}" 
844            class="img-fluid" 
845            loading="lazy" 
846            src="${parceiro.Image82450298.getData()}" 
847          /> 
848 
849        </#if> 
850 
851      </div> 
852 
853 
854      <!-- NOME --> 
855      <h6> 
856        ${nome?html} 
857      </h6> 
858 
859 
860      <!-- SEGMENTOS --> 
861      <p class="parceiro-segmento js-segmento-card"></p> 
862 
863 
864      <!-- AÇÕES --> 
865      <div class="parceiro-acoes"> 
866 
867        <#if site?has_content> 
868 
869          <a 
870            class="btn-parceiro btn-site" 
871            href="${siteUrl?html}" 
872            rel="noopener noreferrer" 
873            target="_blank" 
874
875            Acessar site 
876          </a> 
877 
878        </#if> 
879 
880 
881        <button 
882          class="btn-parceiro btn-saiba btn-modal" 
883          type="button" 
884
885          Saiba mais 
886        </button> 
887 
888      </div> 
889 
890 
891      <!-- ================================================= 
892           DADOS UTILIZADOS PELO MODAL 
893      ================================================== --> 
894 
895      <div 
896        aria-hidden="true" 
897        class="parceiro-dados d-none" 
898
899 
900        <span class="js-nome"> 
901          ${nome?html} 
902        </span> 
903 
904 
905        <span class="js-segmentos"> 
906          ${segmentos?html} 
907        </span> 
908 
909 
910        <div class="js-descricao"> 
911 
912<#if (Fieldset67243883.RichText77766022.getData())??> 
913${Fieldset67243883.RichText77766022.getData()} 
914</#if> 
915</div> 
916 
917        <div class="js-terminais"> 
918 
919<#if (Fieldset67243883.RichText36172897.getData())??> 
920${Fieldset67243883.RichText36172897.getData()} 
921</#if> 
922</div> 
923 
924        <span class="js-email"> 
925          <#if parceiro.Text26526715.getData()??> 
926            ${parceiro.Text26526715.getData()?html} 
927          </#if> 
928        </span> 
929 
930 
931        <span class="js-whatsapp"> 
932          <#if parceiro.Campo12763757.getData()??> 
933            ${parceiro.Campo12763757.getData()?html} 
934          </#if> 
935        </span> 
936 
937 
938        <span class="js-instagram"> 
939          <#if parceiro.Campo47414182.getData()??> 
940            ${parceiro.Campo47414182.getData()?html} 
941          </#if> 
942        </span> 
943 
944 
945        <span class="js-site"> 
946          ${site?html} 
947        </span> 
948 
949      </div> 
950 
951    </div> 
952 
953  </div> 
954 
955</#list> 
956 
957  </div> 
958 
959  <!-- ===================================================== 
960       SEM RESULTADO 
961  ====================================================== --> 
962 
963  <p 
964    aria-live="polite" 
965    class="parceiros-vazio" 
966    hidden 
967    id="parceiros-vazio" 
968    role="status" 
969
970    Nenhum parceiro encontrado. 
971  </p> 
972 
973</div> 
974 
975<!-- ===================================================== 
976     MODAL 
977====================================================== --> 
978 
979<div 
980  aria-labelledby="modalParceiroTitulo" 
981  aria-modal="true" 
982  class="modal-parceiro-sipag" 
983  hidden 
984  id="modalParceiro" 
985  role="dialog" 
986
987 
988  <div class="modal-parceiro-dialog"> 
989 
990<!-- CABEÇALHO --> 
991<div class="modal-parceiro-header"> 
992 
993  <h4 id="modalParceiroTitulo"></h4> 
994 
995  <button 
996    aria-label="Fechar modal" 
997    class="close-modal" 
998    type="button" 
999
1000    &times; 
1001  </button> 
1002 
1003</div> 
1004 
1005 
1006<!-- CORPO --> 
1007<div class="modal-parceiro-body"> 
1008 
1009  <!-- DESCRIÇÃO --> 
1010  <div 
1011    class="modal-bloco" 
1012    id="modalBlocoDescricao" 
1013
1014 
1015    <h6>Descrição</h6> 
1016 
1017    <div id="modalDescricao"></div> 
1018 
1019  </div> 
1020 
1021 
1022  <!-- GRID 2x2 --> 
1023  <div class="modal-detalhes-grid"> 
1024 
1025    <!-- SEGMENTOS --> 
1026    <div 
1027      class="modal-bloco" 
1028      id="modalBlocoSegmentos" 
1029
1030 
1031      <h6>Segmentos atendidos</h6> 
1032 
1033      <div 
1034        class="modal-segmentos" 
1035        id="modalSegmentos" 
1036      ></div> 
1037 
1038    </div> 
1039 
1040 
1041    <!-- TERMINAIS --> 
1042    <div 
1043      class="modal-bloco" 
1044      id="modalBlocoTerminais" 
1045
1046 
1047      <h6>Terminais habilitados</h6> 
1048 
1049      <div id="modalTerminais"></div> 
1050 
1051    </div> 
1052 
1053 
1054    <!-- CONTATO --> 
1055    <div 
1056      class="modal-bloco" 
1057      id="modalBlocoContato" 
1058
1059 
1060      <h6>Informações e contato</h6> 
1061 
1062      <div id="modalContato"></div> 
1063 
1064    </div> 
1065 
1066 
1067    <!-- WEBSITE --> 
1068    <div 
1069      class="modal-bloco" 
1070      id="modalBlocoSite" 
1071
1072 
1073      <h6>Website</h6> 
1074 
1075      <div id="modalSite"></div> 
1076 
1077    </div> 
1078 
1079  </div> 
1080 
1081</div> 
1082 
1083  </div> 
1084 
1085</div> 
1086 
1087  </section> 
1088</div> 
1089 
1090<script> 
1091(function () { 
1092 
1093  var componente = document.getElementById("sipag-parceiros"); 
1094 
1095  if (!componente) { 
1096    return; 
1097
1098 
1099 
1100  if ( 
1101    componente.getAttribute( 
1102      "data-inicializado" 
1103    ) === "true" 
1104  ) { 
1105    return; 
1106
1107 
1108 
1109  componente.setAttribute( 
1110    "data-inicializado", 
1111    "true" 
1112  ); 
1113 
1114 
1115  /* ========================================================= 
1116     ELEMENTOS 
1117  ========================================================= */ 
1118 
1119  var busca = 
1120    componente.querySelector( 
1121      "#busca-parceiros" 
1122    ); 
1123 
1124  var filtrosContainer = 
1125    componente.querySelector( 
1126      "#filtros-parceiros" 
1127    ); 
1128 
1129  var filtrosArea = 
1130    componente.querySelector( 
1131      "#parceiros-filtros-area" 
1132    ); 
1133 
1134  var parceiros = 
1135    componente.querySelectorAll( 
1136      ".parceiro" 
1137    ); 
1138 
1139  var mensagemVazia = 
1140    componente.querySelector( 
1141      "#parceiros-vazio" 
1142    ); 
1143 
1144 
1145  var filtroAtual = "all"; 
1146 
1147 
1148  /* ========================================================= 
1149     NORMALIZA TEXTO 
1150  ========================================================= */ 
1151 
1152  function normalizarTexto(texto) { 
1153 
1154    var valor = 
1155      (texto || "") 
1156        .toString() 
1157        .toLowerCase(); 
1158 
1159 
1160    if (valor.normalize) { 
1161 
1162      valor = valor 
1163        .normalize("NFD") 
1164        .replace( 
1165          /[\u0300-\u036f]/g, 
1166          "" 
1167        ); 
1168 
1169
1170 
1171 
1172    return valor 
1173      .replace( 
1174        /[^a-z0-9]+/g, 
1175        " " 
1176
1177      .trim(); 
1178 
1179
1180 
1181 
1182  /* ========================================================= 
1183     OBTÉM SEGMENTOS 
1184 
1185     Suporta: 
1186     ["varejo","servicos"] 
1187 
1188     varejo,servicos 
1189 
1190     varejo;servicos 
1191  ========================================================= */ 
1192 
1193  function obterSegmentos(valor) { 
1194 
1195    if (!valor) { 
1196      return []; 
1197
1198 
1199 
1200    var texto = 
1201      valor.toString().trim(); 
1202 
1203 
1204    if (!texto) { 
1205      return []; 
1206
1207 
1208 
1209    /* 
1210     * Tenta JSON primeiro. 
1211     */ 
1212    try { 
1213 
1214      var json = 
1215        JSON.parse(texto); 
1216 
1217 
1218      if (Array.isArray(json)) { 
1219 
1220        return json 
1221          .map(function (item) { 
1222 
1223            return item 
1224              .toString() 
1225              .trim(); 
1226 
1227          }) 
1228          .filter(Boolean); 
1229 
1230
1231 
1232    } catch (erro) { 
1233      /* segue normalmente */ 
1234
1235 
1236 
1237    texto = texto 
1238      .replace(/^\[/, "") 
1239      .replace(/\]$/, "") 
1240      .replace(/"/g, "") 
1241      .replace(/'/g, ""); 
1242 
1243 
1244    return texto 
1245      .split(/[,;|]+/) 
1246      .map(function (item) { 
1247 
1248        return item.trim(); 
1249 
1250      }) 
1251      .filter(Boolean); 
1252 
1253
1254 
1255 
1256  /* ========================================================= 
1257     CHAVE CANÔNICA DO SEGMENTO 
1258  ========================================================= */ 
1259 
1260  function obterChaveSegmento(segmento) { 
1261 
1262    var chave = 
1263      normalizarTexto(segmento); 
1264 
1265 
1266    if ( 
1267      chave.indexOf("alimentacao") !== -1 || 
1268      chave.indexOf("bares restaurantes") !== -1 
1269    ) { 
1270      return "alimentacao"; 
1271
1272 
1273    if (chave.indexOf("evento") !== -1) { 
1274      return "eventos"; 
1275
1276 
1277    if (chave.indexOf("industr") !== -1) { 
1278      return "industria"; 
1279
1280 
1281    if ( 
1282      chave.indexOf("posto") !== -1 && 
1283      chave.indexOf("combust") !== -1 
1284    ) { 
1285      return "postos"; 
1286
1287 
1288    if (chave.indexOf("saude") !== -1) { 
1289      return "saude"; 
1290
1291 
1292    if (chave.indexOf("servico") !== -1) { 
1293      return "servicos"; 
1294
1295 
1296    if (chave.indexOf("varejo") !== -1) { 
1297      return "varejo"; 
1298
1299 
1300 
1301    return chave; 
1302 
1303
1304 
1305 
1306  /* ========================================================= 
1307     LABEL DO FILTRO 
1308  ========================================================= */ 
1309 
1310  function obterLabelFiltroSegmento(chave, segmentoOriginal) { 
1311 
1312    var labels = { 
1313      "alimentacao": "ALIMENTAÇÃO", 
1314      "eventos": "EVENTOS", 
1315      "industria": "INDÚSTRIA", 
1316      "postos": "POSTOS DE COMBUSTÍVEIS", 
1317      "saude": "SAÚDE", 
1318      "servicos": "SERVIÇOS", 
1319      "varejo": "VAREJO" 
1320    }; 
1321 
1322 
1323    if (labels[chave]) { 
1324      return labels[chave]; 
1325
1326 
1327 
1328    return (segmentoOriginal || "") 
1329      .toString() 
1330      .trim() 
1331      .toUpperCase(); 
1332 
1333
1334 
1335 
1336  /* ========================================================= 
1337     NOME VISUAL DO SEGMENTO NO CARD / MODAL 
1338  ========================================================= */ 
1339 
1340  function obterLabelSegmento(segmento) { 
1341 
1342    var chave = 
1343      normalizarTexto(segmento); 
1344 
1345 
1346    var labels = { 
1347      "alimentacao": "Alimentação (Bares, Restaurantes e Lanchonetes)", 
1348      "alimentacao bares restaurantes e lanchonetes": 
1349        "Alimentação (Bares, Restaurantes e Lanchonetes)", 
1350      "bares restaurantes e lanchonetes": 
1351        "Alimentação (Bares, Restaurantes e Lanchonetes)", 
1352      "eventos": "Eventos", 
1353      "industria": "Indústria", 
1354			"posto": "Postos de Combustíveis", 
1355      "postos": "Postos de Combustíveis", 
1356      "posto de combustivel": "Postos de Combustíveis", 
1357      "postos de combustivel": "Postos de Combustíveis", 
1358      "postos de combustiveis": "Postos de Combustíveis", 
1359      "saude": "Saúde", 
1360      "servicos": "Serviços", 
1361      "varejo": "Varejo" 
1362    }; 
1363 
1364 
1365    if (labels[chave]) { 
1366      return labels[chave]; 
1367
1368 
1369 
1370    return segmento 
1371      .toString() 
1372      .trim(); 
1373 
1374
1375 
1376 
1377  /* ========================================================= 
1378     FORMATA OS SEGMENTOS NOS CARDS 
1379  ========================================================= */ 
1380 
1381  function formatarListaSegmentos(lista) { 
1382 
1383    if (!lista.length) { 
1384      return ""; 
1385
1386 
1387    if (lista.length === 1) { 
1388      return lista[0]; 
1389
1390 
1391    if (lista.length === 2) { 
1392      return lista[0] + " e " + lista[1]; 
1393
1394 
1395 
1396    return ( 
1397      lista.slice(0, -1).join(", ") + 
1398      " e " + 
1399      lista[lista.length - 1] 
1400    ); 
1401 
1402
1403 
1404 
1405  function formatarSegmentosCards() { 
1406 
1407    parceiros.forEach( 
1408      function (parceiro) { 
1409 
1410        var campo = 
1411          parceiro.querySelector( 
1412            ".js-segmento-card" 
1413          ); 
1414 
1415 
1416        if (!campo) { 
1417          return; 
1418
1419 
1420 
1421        var segmentos = 
1422          obterSegmentos( 
1423            parceiro.getAttribute( 
1424              "data-category" 
1425
1426          ); 
1427 
1428 
1429        var labels = 
1430          segmentos.map(function (segmento) { 
1431 
1432            return obterLabelSegmento( 
1433              segmento 
1434            ); 
1435 
1436          }); 
1437 
1438 
1439        campo.textContent = 
1440          formatarListaSegmentos(labels); 
1441 
1442
1443    ); 
1444 
1445
1446 
1447 
1448  /* ========================================================= 
1449     CRIAR FILTROS AUTOMATICAMENTE 
1450 
1451     SOMENTE SEGMENTOS USADOS 
1452  ========================================================= */ 
1453 
1454  function gerarFiltros() { 
1455 
1456    if (!filtrosContainer) { 
1457      return; 
1458
1459 
1460 
1461    var segmentosUsados = {}; 
1462 
1463 
1464    parceiros.forEach( 
1465      function (parceiro) { 
1466 
1467        var categorias = 
1468          obterSegmentos( 
1469            parceiro.getAttribute( 
1470              "data-category" 
1471
1472          ); 
1473 
1474 
1475        categorias.forEach( 
1476          function (categoria) { 
1477 
1478            var chave = 
1479              obterChaveSegmento( 
1480                categoria 
1481              ); 
1482 
1483 
1484            if (!chave) { 
1485              return; 
1486
1487 
1488 
1489            if ( 
1490              !segmentosUsados[chave] 
1491            ) { 
1492 
1493              segmentosUsados[chave] = { 
1494                chave: chave, 
1495                valor: categoria, 
1496                label: 
1497                  obterLabelFiltroSegmento( 
1498                    chave, 
1499                    categoria 
1500
1501              }; 
1502 
1503
1504 
1505
1506        ); 
1507 
1508
1509    ); 
1510 
1511 
1512    while ( 
1513      filtrosContainer.firstChild 
1514    ) { 
1515 
1516      filtrosContainer.removeChild( 
1517        filtrosContainer.firstChild 
1518      ); 
1519 
1520
1521 
1522 
1523    var segmentos = 
1524      Object.keys( 
1525        segmentosUsados 
1526
1527      .map(function (chave) { 
1528 
1529        return segmentosUsados[ 
1530          chave 
1531        ]; 
1532 
1533      }); 
1534 
1535 
1536    if (!segmentos.length) { 
1537 
1538      if (filtrosArea) { 
1539 
1540        filtrosArea.style.display = 
1541          "none"; 
1542 
1543
1544 
1545      return; 
1546 
1547
1548 
1549 
1550    if (filtrosArea) { 
1551 
1552      filtrosArea.style.display = ""; 
1553 
1554
1555 
1556 
1557    /* TODOS */ 
1558    var botaoTodos = 
1559      document.createElement( 
1560        "button" 
1561      ); 
1562 
1563 
1564    botaoTodos.type = "button"; 
1565 
1566    botaoTodos.className = 
1567      "btn btn-pill active"; 
1568 
1569    botaoTodos.setAttribute( 
1570      "data-filter", 
1571      "all" 
1572    ); 
1573 
1574    botaoTodos.setAttribute( 
1575      "aria-pressed", 
1576      "true" 
1577    ); 
1578 
1579 
1580    botaoTodos.appendChild( 
1581      document.createTextNode( 
1582        "TODOS OS SEGMENTOS" 
1583
1584    ); 
1585 
1586 
1587    filtrosContainer.appendChild( 
1588      botaoTodos 
1589    ); 
1590 
1591 
1592    /* ORDEM ALFABÉTICA */ 
1593    segmentos.sort( 
1594      function (a, b) { 
1595 
1596        return a.label.localeCompare( 
1597          b.label, 
1598          "pt-BR" 
1599        ); 
1600 
1601
1602    ); 
1603 
1604 
1605    /* CRIA SOMENTE OS USADOS */ 
1606    segmentos.forEach( 
1607      function (segmento) { 
1608 
1609        var botao = 
1610          document.createElement( 
1611            "button" 
1612          ); 
1613 
1614 
1615        botao.type = "button"; 
1616 
1617        botao.className = 
1618          "btn btn-pill"; 
1619 
1620        botao.setAttribute( 
1621          "data-filter", 
1622          segmento.chave 
1623        ); 
1624 
1625        botao.setAttribute( 
1626          "aria-pressed", 
1627          "false" 
1628        ); 
1629 
1630 
1631        botao.appendChild( 
1632          document.createTextNode( 
1633            segmento.label 
1634
1635        ); 
1636 
1637 
1638        filtrosContainer.appendChild( 
1639          botao 
1640        ); 
1641 
1642
1643    ); 
1644 
1645
1646 
1647 
1648  /* ========================================================= 
1649     FILTRAR PARCEIROS 
1650  ========================================================= */ 
1651 
1652  function filtrarParceiros() { 
1653 
1654    var termo = 
1655      normalizarTexto( 
1656        busca ? 
1657          busca.value : 
1658          "" 
1659      ); 
1660 
1661 
1662    var quantidadeVisivel = 0; 
1663 
1664 
1665    parceiros.forEach( 
1666      function (parceiro) { 
1667 
1668        var nome = 
1669          normalizarTexto( 
1670            parceiro.getAttribute( 
1671              "data-name" 
1672
1673          ); 
1674 
1675 
1676        var segmentos = 
1677          obterSegmentos( 
1678            parceiro.getAttribute( 
1679              "data-category" 
1680
1681          ); 
1682 
1683 
1684        var categoriasNormalizadas = 
1685          segmentos.map( 
1686            function (item) { 
1687 
1688              return obterChaveSegmento( 
1689                item 
1690              ); 
1691 
1692
1693          ); 
1694 
1695 
1696        var textoCategorias = 
1697          segmentos 
1698            .map(function (item) { 
1699 
1700              return normalizarTexto( 
1701                item + " " + 
1702                obterLabelSegmento(item) 
1703              ); 
1704 
1705            }) 
1706            .join(" "); 
1707 
1708 
1709        /* BUSCA */ 
1710        var atendeBusca = 
1711          !termo || 
1712          nome.indexOf(termo) !== -1 || 
1713          textoCategorias.indexOf( 
1714            termo 
1715          ) !== -1; 
1716 
1717 
1718        /* FILTRO */ 
1719        var atendeFiltro = 
1720          filtroAtual === "all" || 
1721          categoriasNormalizadas 
1722            .indexOf( 
1723              filtroAtual 
1724            ) !== -1; 
1725 
1726 
1727        var exibir = 
1728          atendeBusca && 
1729          atendeFiltro; 
1730 
1731 
1732        parceiro.style.display = 
1733          exibir ? "" : "none"; 
1734 
1735 
1736        if (exibir) { 
1737          quantidadeVisivel++; 
1738
1739 
1740
1741    ); 
1742 
1743 
1744    if (mensagemVazia) { 
1745 
1746      mensagemVazia.hidden = 
1747        quantidadeVisivel !== 0; 
1748 
1749
1750 
1751
1752 
1753 
1754  /* ========================================================= 
1755     EVENTO FILTROS 
1756  ========================================================= */ 
1757 
1758  if (filtrosContainer) { 
1759 
1760    filtrosContainer.addEventListener( 
1761      "click", 
1762      function (event) { 
1763 
1764        var botao = 
1765          event.target.closest( 
1766            ".btn-pill[data-filter]" 
1767          ); 
1768 
1769 
1770        if (!botao) { 
1771          return; 
1772
1773 
1774 
1775        filtroAtual = 
1776          botao.getAttribute( 
1777            "data-filter" 
1778          ) || "all"; 
1779 
1780 
1781        var botoes = 
1782          filtrosContainer 
1783            .querySelectorAll( 
1784              ".btn-pill" 
1785            ); 
1786 
1787 
1788        botoes.forEach( 
1789          function (item) { 
1790 
1791            item.classList.remove( 
1792              "active" 
1793            ); 
1794 
1795            item.setAttribute( 
1796              "aria-pressed", 
1797              "false" 
1798            ); 
1799 
1800
1801        ); 
1802 
1803 
1804        botao.classList.add( 
1805          "active" 
1806        ); 
1807 
1808        botao.setAttribute( 
1809          "aria-pressed", 
1810          "true" 
1811        ); 
1812 
1813 
1814        filtrarParceiros(); 
1815 
1816
1817    ); 
1818 
1819
1820 
1821 
1822  /* ========================================================= 
1823     EVENTO BUSCA 
1824  ========================================================= */ 
1825 
1826  if (busca) { 
1827 
1828    busca.addEventListener( 
1829      "input", 
1830      filtrarParceiros 
1831    ); 
1832 
1833
1834 
1835 
1836  /* ========================================================= 
1837     ELEMENTOS MODAL 
1838  ========================================================= */ 
1839 
1840  var modal = 
1841    componente.querySelector( 
1842      "#modalParceiro" 
1843    ); 
1844 
1845  var tituloModal = 
1846    componente.querySelector( 
1847      "#modalParceiroTitulo" 
1848    ); 
1849 
1850  var modalDescricao = 
1851    componente.querySelector( 
1852      "#modalDescricao" 
1853    ); 
1854 
1855  var modalSegmentos = 
1856    componente.querySelector( 
1857      "#modalSegmentos" 
1858    ); 
1859 
1860  var modalTerminais = 
1861    componente.querySelector( 
1862      "#modalTerminais" 
1863    ); 
1864 
1865  var modalContato = 
1866    componente.querySelector( 
1867      "#modalContato" 
1868    ); 
1869 
1870  var modalSite = 
1871    componente.querySelector( 
1872      "#modalSite" 
1873    ); 
1874 
1875 
1876  var blocoDescricao = 
1877    componente.querySelector( 
1878      "#modalBlocoDescricao" 
1879    ); 
1880 
1881  var blocoSegmentos = 
1882    componente.querySelector( 
1883      "#modalBlocoSegmentos" 
1884    ); 
1885 
1886  var blocoTerminais = 
1887    componente.querySelector( 
1888      "#modalBlocoTerminais" 
1889    ); 
1890 
1891  var blocoContato = 
1892    componente.querySelector( 
1893      "#modalBlocoContato" 
1894    ); 
1895 
1896  var blocoSite = 
1897    componente.querySelector( 
1898      "#modalBlocoSite" 
1899    ); 
1900 
1901 
1902  var elementoFocoAnterior = null; 
1903  var overflowAnterior = ""; 
1904 
1905 
1906  /* ========================================================= 
1907     LIMPAR ELEMENTO 
1908  ========================================================= */ 
1909 
1910  function limparElemento(elemento) { 
1911 
1912    if (!elemento) { 
1913      return; 
1914
1915 
1916 
1917    while (elemento.firstChild) { 
1918 
1919      elemento.removeChild( 
1920        elemento.firstChild 
1921      ); 
1922 
1923
1924 
1925
1926 
1927 
1928  /* ========================================================= 
1929     COPIA RICH TEXT 
1930 
1931     NÃO USA innerHTML 
1932  ========================================================= */ 
1933 
1934  function copiarConteudo( 
1935    origem, 
1936    destino 
1937  ) { 
1938 
1939    limparElemento(destino); 
1940 
1941 
1942    if ( 
1943      !origem || 
1944      !destino 
1945    ) { 
1946      return false; 
1947
1948 
1949 
1950    var possuiConteudo = 
1951      origem.textContent.trim() !== "" || 
1952      origem.children.length > 0; 
1953 
1954 
1955    if (!possuiConteudo) { 
1956      return false; 
1957
1958 
1959 
1960    Array.prototype.slice 
1961      .call( 
1962        origem.childNodes 
1963
1964      .forEach( 
1965        function (node) { 
1966 
1967          destino.appendChild( 
1968            node.cloneNode(true) 
1969          ); 
1970 
1971
1972      ); 
1973 
1974 
1975    return true; 
1976 
1977
1978 
1979 
1980  /* ========================================================= 
1981     CRIAR LINK 
1982  ========================================================= */ 
1983 
1984  function criarLink( 
1985    texto, 
1986    href, 
1987    target 
1988  ) { 
1989 
1990    var link = 
1991      document.createElement("a"); 
1992 
1993 
1994    link.href = href; 
1995 
1996 
1997    link.appendChild( 
1998      document.createTextNode( 
1999        texto 
2000
2001    ); 
2002 
2003 
2004    if (target) { 
2005 
2006      link.target = target; 
2007 
2008      link.rel = 
2009        "noopener noreferrer"; 
2010 
2011
2012 
2013 
2014    return link; 
2015 
2016
2017 
2018 
2019  /* ========================================================= 
2020     URL WHATSAPP 
2021  ========================================================= */ 
2022 
2023  function criarUrlWhatsApp( 
2024    numero 
2025  ) { 
2026 
2027    var numeroLimpo = 
2028      (numero || "") 
2029        .replace(/\D/g, ""); 
2030 
2031 
2032    if (!numeroLimpo) { 
2033      return ""; 
2034
2035 
2036 
2037    if ( 
2038      numeroLimpo.indexOf("55") !== 0 
2039    ) { 
2040 
2041      numeroLimpo = 
2042        "55" + numeroLimpo; 
2043 
2044
2045 
2046 
2047    return ( 
2048      "https://wa.me/" + 
2049      numeroLimpo 
2050    ); 
2051 
2052
2053 
2054 
2055  /* ========================================================= 
2056     URL INSTAGRAM 
2057  ========================================================= */ 
2058 
2059  function criarUrlInstagram( 
2060    instagram 
2061  ) { 
2062 
2063    var valor = 
2064      (instagram || "") 
2065        .trim(); 
2066 
2067 
2068    if (!valor) { 
2069      return ""; 
2070
2071 
2072 
2073    if ( 
2074      valor.indexOf( 
2075        "http://" 
2076      ) === 0 || 
2077      valor.indexOf( 
2078        "https://" 
2079      ) === 0 
2080    ) { 
2081 
2082      return valor; 
2083 
2084
2085 
2086 
2087    valor = valor 
2088      .replace(/^@/, "") 
2089      .replace(/^www\./, "") 
2090      .replace( 
2091        /^instagram\.com\//, 
2092        "" 
2093      ); 
2094 
2095 
2096    return ( 
2097      "https://instagram.com/" + 
2098      valor 
2099    ); 
2100 
2101
2102 
2103 
2104  /* ========================================================= 
2105     URL SITE 
2106  ========================================================= */ 
2107 
2108  function criarUrlSite(site) { 
2109 
2110    var valor = 
2111      (site || "").trim(); 
2112 
2113 
2114    if (!valor) { 
2115      return ""; 
2116
2117 
2118 
2119    if ( 
2120      valor.indexOf( 
2121        "http://" 
2122      ) === 0 || 
2123      valor.indexOf( 
2124        "https://" 
2125      ) === 0 
2126    ) { 
2127 
2128      return valor; 
2129 
2130
2131 
2132 
2133    return ( 
2134      "https://" + valor 
2135    ); 
2136 
2137
2138 
2139 
2140  /* ========================================================= 
2141     ADICIONAR CONTATO 
2142  ========================================================= */ 
2143 
2144  function adicionarContato( 
2145    titulo, 
2146    texto, 
2147    href, 
2148    novaAba 
2149  ) { 
2150 
2151    if (!texto) { 
2152      return false; 
2153
2154 
2155 
2156    var p = 
2157      document.createElement("p"); 
2158 
2159 
2160    p.appendChild( 
2161      document.createTextNode( 
2162        titulo + ": " 
2163
2164    ); 
2165 
2166 
2167    if (href) { 
2168 
2169      p.appendChild( 
2170        criarLink( 
2171          texto, 
2172          href, 
2173          novaAba ? 
2174            "_blank" : 
2175            "" 
2176
2177      ); 
2178 
2179    } else { 
2180 
2181      p.appendChild( 
2182        document.createTextNode( 
2183          texto 
2184
2185      ); 
2186 
2187
2188 
2189 
2190    modalContato.appendChild(p); 
2191 
2192 
2193    return true; 
2194 
2195
2196 
2197 
2198  /* ========================================================= 
2199     SEGMENTOS DO MODAL 
2200  ========================================================= */ 
2201 
2202  function montarSegmentosModal( 
2203    valor 
2204  ) { 
2205 
2206    limparElemento( 
2207      modalSegmentos 
2208    ); 
2209 
2210 
2211    var segmentos = 
2212      obterSegmentos(valor); 
2213 
2214 
2215    if (!segmentos.length) { 
2216      return false; 
2217
2218 
2219 
2220    segmentos.forEach( 
2221      function (segmento) { 
2222 
2223        var span = 
2224          document.createElement( 
2225            "span" 
2226          ); 
2227 
2228 
2229        span.className = 
2230          "modal-segmento-tag"; 
2231 
2232 
2233        span.appendChild( 
2234          document.createTextNode( 
2235            obterLabelSegmento( 
2236              segmento 
2237
2238
2239        ); 
2240 
2241 
2242        modalSegmentos 
2243          .appendChild(span); 
2244 
2245
2246    ); 
2247 
2248 
2249    return true; 
2250 
2251
2252 
2253 
2254  /* ========================================================= 
2255     ABRIR MODAL 
2256  ========================================================= */ 
2257 
2258  function abrirModal(botao) { 
2259 
2260    if (!modal) { 
2261      return; 
2262
2263 
2264 
2265    var parceiro = 
2266      botao.closest( 
2267        ".parceiro" 
2268      ); 
2269 
2270 
2271    if (!parceiro) { 
2272      return; 
2273
2274 
2275 
2276    var dados = 
2277      parceiro.querySelector( 
2278        ".parceiro-dados" 
2279      ); 
2280 
2281 
2282    if (!dados) { 
2283      return; 
2284
2285 
2286 
2287    /* ====================== 
2288       NOME 
2289    ====================== */ 
2290 
2291    var nome = 
2292      dados.querySelector( 
2293        ".js-nome" 
2294      ); 
2295 
2296 
2297    tituloModal.textContent = 
2298      nome ? 
2299        nome.textContent.trim() : 
2300        ""; 
2301 
2302 
2303    /* ====================== 
2304       DESCRIÇÃO 
2305    ====================== */ 
2306 
2307    var descricao = 
2308      dados.querySelector( 
2309        ".js-descricao" 
2310      ); 
2311 
2312 
2313    blocoDescricao.hidden = 
2314      !copiarConteudo( 
2315        descricao, 
2316        modalDescricao 
2317      ); 
2318 
2319 
2320    /* ====================== 
2321       SEGMENTOS 
2322    ====================== */ 
2323 
2324    var segmentos = 
2325      dados.querySelector( 
2326        ".js-segmentos" 
2327      ); 
2328 
2329 
2330    blocoSegmentos.hidden = 
2331      !montarSegmentosModal( 
2332        segmentos ? 
2333          segmentos 
2334            .textContent 
2335            .trim() : 
2336          "" 
2337      ); 
2338 
2339 
2340    /* ====================== 
2341       TERMINAIS 
2342    ====================== */ 
2343 
2344    var terminais = 
2345      dados.querySelector( 
2346        ".js-terminais" 
2347      ); 
2348 
2349 
2350    blocoTerminais.hidden = 
2351      !copiarConteudo( 
2352        terminais, 
2353        modalTerminais 
2354      ); 
2355 
2356 
2357    /* ====================== 
2358       CONTATO 
2359    ====================== */ 
2360 
2361    limparElemento( 
2362      modalContato 
2363    ); 
2364 
2365 
2366    var emailElemento = 
2367      dados.querySelector( 
2368        ".js-email" 
2369      ); 
2370 
2371    var whatsappElemento = 
2372      dados.querySelector( 
2373        ".js-whatsapp" 
2374      ); 
2375 
2376    var instagramElemento = 
2377      dados.querySelector( 
2378        ".js-instagram" 
2379      ); 
2380 
2381 
2382    var email = 
2383      emailElemento ? 
2384        emailElemento 
2385          .textContent 
2386          .trim() : 
2387        ""; 
2388 
2389 
2390    var whatsapp = 
2391      whatsappElemento ? 
2392        whatsappElemento 
2393          .textContent 
2394          .trim() : 
2395        ""; 
2396 
2397 
2398    var instagram = 
2399      instagramElemento ? 
2400        instagramElemento 
2401          .textContent 
2402          .trim() : 
2403        ""; 
2404 
2405 
2406    var possuiContato = false; 
2407 
2408 
2409    if (email) { 
2410 
2411      possuiContato = 
2412        adicionarContato( 
2413          "E-mail", 
2414          email, 
2415          "mailto:" + email, 
2416          false 
2417        ) || 
2418        possuiContato; 
2419 
2420
2421 
2422 
2423    if (whatsapp) { 
2424 
2425      possuiContato = 
2426        adicionarContato( 
2427          "WhatsApp", 
2428          whatsapp, 
2429          criarUrlWhatsApp( 
2430            whatsapp 
2431          ), 
2432          true 
2433        ) || 
2434        possuiContato; 
2435 
2436
2437 
2438 
2439    if (instagram) { 
2440 
2441      var instagramLabel = 
2442        instagram; 
2443 
2444 
2445      if ( 
2446        instagramLabel.indexOf( 
2447          "http" 
2448        ) !== 0 && 
2449        instagramLabel.charAt(0) 
2450          !== "@" 
2451      ) { 
2452 
2453        instagramLabel = 
2454          "@" + 
2455          instagramLabel; 
2456 
2457
2458 
2459 
2460      possuiContato = 
2461        adicionarContato( 
2462          "Instagram", 
2463          instagramLabel, 
2464          criarUrlInstagram( 
2465            instagram 
2466          ), 
2467          true 
2468        ) || 
2469        possuiContato; 
2470 
2471
2472 
2473 
2474    blocoContato.hidden = 
2475      !possuiContato; 
2476 
2477 
2478    /* ====================== 
2479       SITE 
2480    ====================== */ 
2481 
2482    limparElemento( 
2483      modalSite 
2484    ); 
2485 
2486 
2487    var siteElemento = 
2488      dados.querySelector( 
2489        ".js-site" 
2490      ); 
2491 
2492 
2493    var site = 
2494      siteElemento ? 
2495        siteElemento 
2496          .textContent 
2497          .trim() : 
2498        ""; 
2499 
2500 
2501    if (site) { 
2502 
2503      modalSite.appendChild( 
2504        criarLink( 
2505          site, 
2506          criarUrlSite(site), 
2507          "_blank" 
2508
2509      ); 
2510 
2511 
2512      blocoSite.hidden = false; 
2513 
2514    } else { 
2515 
2516      blocoSite.hidden = true; 
2517 
2518
2519 
2520 
2521    /* ====================== 
2522       ABRIR 
2523    ====================== */ 
2524 
2525    elementoFocoAnterior = 
2526      document.activeElement; 
2527 
2528 
2529    overflowAnterior = 
2530      document.body.style 
2531        .overflow; 
2532 
2533 
2534    modal.hidden = false; 
2535 
2536 
2537    document.body.style 
2538      .overflow = "hidden"; 
2539 
2540 
2541    var fechar = 
2542      modal.querySelector( 
2543        ".close-modal" 
2544      ); 
2545 
2546 
2547    if (fechar) { 
2548      fechar.focus(); 
2549
2550 
2551
2552 
2553 
2554  /* ========================================================= 
2555     FECHAR MODAL 
2556  ========================================================= */ 
2557 
2558  function fecharModal() { 
2559 
2560    if ( 
2561      !modal || 
2562      modal.hidden 
2563    ) { 
2564      return; 
2565
2566 
2567 
2568    modal.hidden = true; 
2569 
2570 
2571    document.body.style 
2572      .overflow = 
2573        overflowAnterior; 
2574 
2575 
2576    if ( 
2577      elementoFocoAnterior && 
2578      typeof elementoFocoAnterior 
2579        .focus === "function" 
2580    ) { 
2581 
2582      elementoFocoAnterior 
2583        .focus(); 
2584 
2585
2586 
2587
2588 
2589 
2590  /* ========================================================= 
2591     CLIQUES 
2592  ========================================================= */ 
2593 
2594  componente.addEventListener( 
2595    "click", 
2596    function (event) { 
2597 
2598      var botaoModal = 
2599        event.target.closest( 
2600          ".btn-modal" 
2601        ); 
2602 
2603 
2604      if (botaoModal) { 
2605 
2606        event.preventDefault(); 
2607 
2608        abrirModal( 
2609          botaoModal 
2610        ); 
2611 
2612        return; 
2613 
2614
2615 
2616 
2617      var fechar = 
2618        event.target.closest( 
2619          ".close-modal" 
2620        ); 
2621 
2622 
2623      if (fechar) { 
2624 
2625        event.preventDefault(); 
2626 
2627        fecharModal(); 
2628 
2629        return; 
2630 
2631
2632 
2633 
2634      /* 
2635       * Fecha clicando no fundo 
2636       */ 
2637      if ( 
2638        modal && 
2639        event.target === modal 
2640      ) { 
2641 
2642        fecharModal(); 
2643 
2644
2645 
2646
2647  ); 
2648 
2649 
2650  /* ========================================================= 
2651     ESC 
2652  ========================================================= */ 
2653 
2654  document.addEventListener( 
2655    "keydown", 
2656    function (event) { 
2657 
2658      if ( 
2659        event.key === "Escape" && 
2660        modal && 
2661        !modal.hidden 
2662      ) { 
2663 
2664        fecharModal(); 
2665 
2666
2667 
2668
2669  ); 
2670 
2671 
2672  /* ========================================================= 
2673     INICIALIZAÇÃO 
2674  ========================================================= */ 
2675 
2676  formatarSegmentosCards(); 
2677 
2678  gerarFiltros(); 
2679 
2680  filtrarParceiros(); 
2681 
2682})(); 
2683</script> 
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> Fieldset67243883  [in template "20102#20128#189538129" at line 811, column 8]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #list Fieldset67243883.getSiblings() ...  [in template "20102#20128#189538129" at line 811, column 1]
----
1<style type="text/css"> 
2/* ========================================================= 
3   PARCEIROS SIPAG - LAYOUT PRINCIPAL 
4========================================================= */ 
5 
6.sipag-parceiros { 
7  background-color: #fff; 
8  color: #003641; 
9  padding: 34px 0 56px; 
10
11 
12.sipag-parceiros > .container { 
13  max-width: 1440px; 
14  padding-left: 24px; 
15  padding-right: 24px; 
16  width: 100%; 
17
18 
19/* ========================================================= 
20   FILTROS 
21========================================================= */ 
22 
23.sipag-parceiros .parceiros-filtros-area { 
24  margin-bottom: 34px; 
25
26 
27.sipag-parceiros .parceiros-intro { 
28  color: #003641; 
29  font-size: 17px; 
30  line-height: 1.4; 
31  margin: 0 0 26px; 
32  text-align: center; 
33
34 
35.sipag-parceiros .filtros { 
36  align-items: center; 
37  display: flex; 
38  flex-wrap: wrap; 
39  gap: 12px; 
40  justify-content: center; 
41  margin: 0 auto; 
42  width: 100%; 
43
44 
45.sipag-parceiros .btn-pill { 
46  align-items: center; 
47  background-color: #fff; 
48  border: 1px solid #d9dcdf; 
49  border-radius: 10px; 
50  box-shadow: none; 
51  color: #272833; 
52  cursor: pointer; 
53  display: inline-flex; 
54  flex: 0 0 auto; 
55  font-size: 18px; 
56  font-weight: 700; 
57  justify-content: center; 
58  line-height: 1.2; 
59  min-height: 64px; 
60  min-width: 250px; 
61  padding: 14px 22px; 
62  text-align: center; 
63  text-transform: uppercase; 
64  transition: 
65    background-color .2s ease, 
66    border-color .2s ease, 
67    color .2s ease; 
68  white-space: nowrap; 
69
70 
71.sipag-parceiros .btn-pill:hover { 
72  background-color: #f5fffd; 
73  border-color: #00ae9d; 
74  color: #003641; 
75
76 
77.sipag-parceiros .btn-pill.active { 
78  background-color: #003641; 
79  border-color: #003641; 
80  color: #fff; 
81
82 
83.sipag-parceiros .btn-pill:focus { 
84  box-shadow: 0 0 0 3px rgba(0, 174, 157, .16); 
85  outline: none; 
86
87 
88/* ========================================================= 
89   BUSCA 
90========================================================= */ 
91 
92.sipag-parceiros .parceiros-busca { 
93  margin: 0 auto 56px; 
94  max-width: none; 
95  position: relative; 
96  width: 100%; 
97
98 
99.sipag-parceiros .parceiros-busca-icone { 
100  color: #00ae9d; 
101  height: 28px; 
102  left: 21px; 
103  pointer-events: none; 
104  position: absolute; 
105  top: 50%; 
106  transform: translateY(-50%); 
107  width: 28px; 
108
109 
110.sipag-parceiros .parceiros-busca-campo { 
111  background-color: #fff; 
112  border: 2px solid #00ae9d; 
113  border-radius: 7px; 
114  color: #003641; 
115  font-size: 16px; 
116  height: 68px; 
117  outline: none; 
118  padding: 0 24px 0 62px; 
119  transition: 
120    border-color .2s ease, 
121    box-shadow .2s ease; 
122  width: 100%; 
123
124 
125.sipag-parceiros .parceiros-busca-campo::placeholder { 
126  color: #b1bbc8; 
127  opacity: 1; 
128
129 
130.sipag-parceiros .parceiros-busca-campo:focus { 
131  border-color: #00ae9d; 
132  box-shadow: 0 0 0 3px rgba(0, 174, 157, .12); 
133
134 
135/* ========================================================= 
136   GRID 
137========================================================= */ 
138 
139.sipag-parceiros #grid-parceiros { 
140  align-items: stretch; 
141
142 
143.sipag-parceiros .parceiro { 
144  display: flex; 
145
146 
147/* ========================================================= 
148   CARD 
149========================================================= */ 
150 
151.sipag-parceiros .card-parceiro { 
152  background-color: #fff; 
153  border: 1px solid #dedede; 
154  border-radius: 14px; 
155  box-shadow: none; 
156  display: flex; 
157  flex-direction: column; 
158  min-height: 510px; 
159  padding: 18px; 
160  transition: 
161    border-color .2s ease, 
162    box-shadow .2s ease; 
163  width: 100%; 
164
165 
166.sipag-parceiros .card-parceiro:hover { 
167  border-color: #d1d8d7; 
168  box-shadow: 0 8px 22px rgba(0, 54, 65, .08); 
169  transform: none; 
170
171 
172/* ========================================================= 
173   LOGO 
174========================================================= */ 
175 
176.sipag-parceiros .parceiro-logo { 
177  align-items: center; 
178  display: flex; 
179  height: 255px; 
180  justify-content: center; 
181  margin-bottom: 0; 
182  overflow: hidden; 
183  width: 100%; 
184
185 
186.sipag-parceiros .parceiro-logo img { 
187  display: block; 
188  max-height: 169px; 
189  max-width: 230px; 
190  object-fit: contain; 
191  width: auto; 
192
193 
194/* ========================================================= 
195   TEXTO DO CARD 
196========================================================= */ 
197 
198.sipag-parceiros .card-parceiro h6 { 
199  color: #00ae9d; 
200  font-size: 23px; 
201  font-weight: 700; 
202  line-height: 1.25; 
203  margin: 0 0 10px; 
204
205 
206.sipag-parceiros .parceiro-segmento { 
207  color: #5b5b5b; 
208  font-size: 15px; 
209  line-height: 1.55; 
210  margin: 0 0 24px; 
211
212 
213/* ========================================================= 
214   AÇÕES DO CARD 
215========================================================= */ 
216 
217.sipag-parceiros .parceiro-acoes { 
218  display: flex; 
219  flex-direction: column; 
220  gap: 10px; 
221  margin-top: auto; 
222  width: 100%; 
223
224 
225.sipag-parceiros .btn-parceiro { 
226  align-items: center; 
227  border-radius: 9px; 
228  cursor: pointer; 
229  display: inline-flex; 
230  flex: none; 
231  font-size: 18px; 
232  font-weight: 700; 
233  justify-content: center; 
234  min-height: 62px; 
235  padding: 10px 14px; 
236  text-align: center; 
237  text-decoration: none !important; 
238  transition: 
239    background-color .2s ease, 
240    border-color .2s ease, 
241    color .2s ease; 
242  width: 100%; 
243
244 
245.sipag-parceiros .btn-site { 
246  background-color: #fff; 
247  border: 1px solid #00ae9d; 
248  color: #00ae9d; 
249
250 
251.sipag-parceiros .btn-site:hover { 
252  background-color: #f3fffd; 
253  border-color: #00ae9d; 
254  color: #008f83; 
255
256 
257.sipag-parceiros .btn-saiba { 
258  background-color: #00ae9d; 
259  border: 1px solid #00ae9d; 
260  color: #fff; 
261
262 
263.sipag-parceiros .btn-saiba:hover { 
264  background-color: #008f83; 
265  border-color: #008f83; 
266  color: #fff; 
267
268 
269/* ========================================================= 
270   NENHUM RESULTADO 
271========================================================= */ 
272 
273.sipag-parceiros .parceiros-vazio { 
274  color: #536463; 
275  font-size: 18px; 
276  margin: 40px 0; 
277  text-align: center; 
278
279 
280@media (max-width: 1199.98px) { 
281  .sipag-parceiros > .container { 
282    max-width: 1140px; 
283
284 
285  .sipag-parceiros .btn-pill { 
286    font-size: 16px; 
287    min-height: 58px; 
288    min-width: 210px; 
289
290 
291  .sipag-parceiros .card-parceiro { 
292    min-height: 545px; 
293
294 
295  .sipag-parceiros .parceiro-logo { 
296    height: 235px; 
297
298 
299  .sipag-parceiros .parceiro-logo img { 
300    max-height: 140px; 
301    max-width: 210px; 
302
303
304 
305/* ========================================================= 
306   MODAL - FUNDO 
307========================================================= */ 
308 
309.modal-parceiro-sipag { 
310  align-items: center; 
311  background-color: rgba(0, 0, 0, .55); 
312  bottom: 0; 
313  display: flex; 
314  justify-content: center; 
315  left: 0; 
316  overflow-y: auto; 
317  padding: 14px; 
318  position: fixed; 
319  right: 0; 
320  top: 0; 
321  z-index: 11000; 
322
323 
324.modal-parceiro-sipag[hidden] { 
325  display: none !important; 
326
327 
328/* ========================================================= 
329   MODAL - CONTAINER 
330========================================================= */ 
331 
332.modal-parceiro-sipag .modal-parceiro-dialog { 
333  background-color: #fff; 
334  border-radius: 18px; 
335  box-shadow: 0 16px 45px rgba(0, 54, 65, .25); 
336  margin: auto; 
337  max-width: 1265px; 
338  overflow: hidden; 
339  width: 100%; 
340
341 
342/* ========================================================= 
343   MODAL - CABEÇALHO 
344========================================================= */ 
345 
346.modal-parceiro-sipag .modal-parceiro-header { 
347  align-items: center; 
348  border-bottom: 1px solid #dfe5e4; 
349  display: flex; 
350  justify-content: space-between; 
351  min-height: 68px; 
352  padding: 12px 38px; 
353
354 
355.modal-parceiro-sipag .modal-parceiro-header h4 { 
356  color: #00ae9d; 
357  font-size: 34px; 
358  font-weight: 700; 
359  line-height: 1.2; 
360  margin: 0; 
361
362 
363/* ========================================================= 
364   MODAL - FECHAR 
365========================================================= */ 
366 
367.modal-parceiro-sipag .close-modal { 
368  align-items: center; 
369  background-color: #fff; 
370  border: 2px solid #005461; 
371  border-radius: 50%; 
372  color: #005461; 
373  cursor: pointer; 
374  display: flex; 
375  flex: 0 0 38px; 
376  font-size: 28px; 
377  font-weight: 400; 
378  height: 38px; 
379  justify-content: center; 
380  line-height: 1; 
381  padding: 0 0 3px; 
382  transition: 
383    background-color .2s ease, 
384    color .2s ease; 
385  width: 38px; 
386
387 
388.modal-parceiro-sipag .close-modal:hover { 
389  background-color: #005461; 
390  color: #fff; 
391
392 
393.modal-parceiro-sipag .close-modal:focus { 
394  box-shadow: 0 0 0 3px rgba(0, 174, 157, .2); 
395  outline: none; 
396
397 
398/* ========================================================= 
399   MODAL - CORPO 
400========================================================= */ 
401 
402.modal-parceiro-sipag .modal-parceiro-body { 
403  max-height: calc(100vh - 100px); 
404  overflow-y: auto; 
405  padding: 24px 28px 34px; 
406
407 
408/* ========================================================= 
409   MODAL - BLOCOS 
410========================================================= */ 
411 
412.modal-parceiro-sipag .modal-bloco { 
413  border: 1px solid #00ae9d; 
414  border-radius: 9px; 
415  box-sizing: border-box; 
416  margin: 0; 
417  padding: 22px 24px; 
418
419 
420.modal-parceiro-sipag .modal-bloco h6 { 
421  color: #00ae9d; 
422  font-size: 20px; 
423  font-weight: 700; 
424  line-height: 1.3; 
425  margin: 0 0 20px; 
426
427 
428/* ========================================================= 
429   DESCRIÇÃO 
430========================================================= */ 
431 
432.modal-parceiro-sipag #modalBlocoDescricao { 
433  margin-bottom: 16px; 
434  min-height: 145px; 
435
436 
437.modal-parceiro-sipag #modalDescricao, 
438.modal-parceiro-sipag #modalDescricao p { 
439  color: #004653; 
440  font-size: 21px; 
441  line-height: 1.7; 
442
443 
444.modal-parceiro-sipag #modalDescricao p { 
445  margin: 0 0 8px; 
446
447 
448.modal-parceiro-sipag #modalDescricao p:last-child { 
449  margin-bottom: 0; 
450
451 
452/* ========================================================= 
453   GRID DO MODAL 
454========================================================= */ 
455 
456.modal-parceiro-sipag .modal-detalhes-grid { 
457  display: grid; 
458  gap: 16px 20px; 
459  grid-template-columns: repeat(2, minmax(0, 1fr)); 
460
461 
462.modal-parceiro-sipag #modalBlocoSegmentos, 
463.modal-parceiro-sipag #modalBlocoTerminais { 
464  min-height: 280px; 
465
466 
467.modal-parceiro-sipag #modalBlocoContato, 
468.modal-parceiro-sipag #modalBlocoSite { 
469  min-height: 170px; 
470
471 
472/* ========================================================= 
473   SEGMENTOS DO MODAL 
474========================================================= */ 
475 
476.modal-parceiro-sipag .modal-segmentos { 
477  align-items: flex-start; 
478  display: flex; 
479  flex-wrap: wrap; 
480  gap: 12px; 
481
482 
483.modal-parceiro-sipag .modal-segmento-tag { 
484  background-color: #fafafa; 
485  border: 1px solid #cfcfcf; 
486  border-radius: 6px; 
487  color: #5d6262; 
488  display: inline-flex; 
489  font-size: 15px; 
490  font-weight: 400; 
491  line-height: 1.2; 
492  padding: 10px 12px; 
493  text-transform: uppercase; 
494
495 
496/* ========================================================= 
497   TERMINAIS 
498========================================================= */ 
499 
500.modal-parceiro-sipag #modalTerminais, 
501.modal-parceiro-sipag #modalTerminais p { 
502  color: #004653; 
503  font-size: 21px; 
504  line-height: 1.8; 
505
506 
507.modal-parceiro-sipag #modalTerminais p { 
508  margin: 0 0 6px; 
509
510 
511.modal-parceiro-sipag #modalTerminais p:last-child { 
512  margin-bottom: 0; 
513
514 
515/* ========================================================= 
516   CONTATO 
517========================================================= */ 
518 
519.modal-parceiro-sipag #modalContato { 
520  color: #004653; 
521  font-size: 21px; 
522  line-height: 1.8; 
523
524 
525.modal-parceiro-sipag #modalContato p { 
526  color: #004653; 
527  font-size: 21px; 
528  line-height: 1.8; 
529  margin: 0; 
530
531 
532.modal-parceiro-sipag #modalContato strong { 
533  color: #004653; 
534  font-weight: 400; 
535
536 
537.modal-parceiro-sipag #modalContato a { 
538  color: #00a99d; 
539  text-decoration: none; 
540
541 
542.modal-parceiro-sipag #modalContato a:hover { 
543  text-decoration: underline; 
544
545 
546/* ========================================================= 
547   WEBSITE 
548========================================================= */ 
549 
550.modal-parceiro-sipag #modalSite { 
551  font-size: 21px; 
552  line-height: 1.7; 
553
554 
555.modal-parceiro-sipag #modalSite a { 
556  color: #00a99d; 
557  overflow-wrap: anywhere; 
558  text-decoration: none; 
559
560 
561.modal-parceiro-sipag #modalSite a:hover { 
562  text-decoration: underline; 
563
564 
565/* ========================================================= 
566   RICH TEXT 
567========================================================= */ 
568 
569.modal-parceiro-sipag .modal-bloco ul, 
570.modal-parceiro-sipag .modal-bloco ol { 
571  color: #004653; 
572  margin-bottom: 0; 
573  padding-left: 20px; 
574
575 
576.modal-parceiro-sipag .modal-bloco li { 
577  color: #004653; 
578  line-height: 1.7; 
579  margin-bottom: 5px; 
580
581 
582/* ========================================================= 
583   MOBILE 
584========================================================= */ 
585 
586@media (max-width: 767.98px) { 
587  .sipag-parceiros { 
588    padding: 28px 0 40px; 
589
590 
591  .sipag-parceiros > .container { 
592    padding-left: 15px; 
593    padding-right: 15px; 
594
595 
596  .sipag-parceiros .parceiros-filtros-area { 
597    margin-bottom: 24px; 
598
599 
600  .sipag-parceiros .parceiros-intro { 
601    font-size: 16px; 
602    margin-bottom: 18px; 
603
604 
605  .sipag-parceiros .filtros { 
606    flex-wrap: nowrap; 
607    gap: 10px; 
608    justify-content: flex-start; 
609    margin-left: -15px; 
610    margin-right: -15px; 
611    overflow-x: auto; 
612    padding: 3px 15px 12px; 
613    width: auto; 
614    -webkit-overflow-scrolling: touch; 
615
616 
617  .sipag-parceiros .filtros::-webkit-scrollbar { 
618    height: 4px; 
619
620 
621  .sipag-parceiros .filtros::-webkit-scrollbar-thumb { 
622    background-color: #b5c7c5; 
623    border-radius: 10px; 
624
625 
626  .sipag-parceiros .btn-pill { 
627    border-radius: 8px; 
628    flex: 0 0 auto; 
629    font-size: 14px; 
630    min-height: 54px; 
631    min-width: 205px; 
632    padding: 12px 16px; 
633
634 
635  .sipag-parceiros .parceiros-busca { 
636    margin-bottom: 34px; 
637
638 
639  .sipag-parceiros .parceiros-busca-campo { 
640    font-size: 16px; 
641    height: 56px; 
642    padding-left: 52px; 
643
644 
645  .sipag-parceiros .parceiros-busca-icone { 
646    height: 22px; 
647    left: 18px; 
648    width: 22px; 
649
650 
651  .sipag-parceiros .card-parceiro { 
652    border-radius: 12px; 
653    min-height: auto; 
654    padding: 20px; 
655
656 
657  .sipag-parceiros .parceiro-logo { 
658    height: 200px; 
659
660 
661  .sipag-parceiros .parceiro-logo img { 
662    max-height: 130px; 
663    max-width: 200px; 
664
665 
666  .sipag-parceiros .card-parceiro h6 { 
667    font-size: 21px; 
668
669 
670  .sipag-parceiros .parceiro-segmento { 
671    font-size: 14px; 
672
673 
674  .sipag-parceiros .parceiro-acoes { 
675    flex-direction: column; 
676
677 
678  .sipag-parceiros .btn-parceiro { 
679    font-size: 17px; 
680    min-height: 54px; 
681    width: 100%; 
682
683 
684  .modal-parceiro-sipag { 
685    align-items: flex-end; 
686    padding: 0; 
687
688 
689  .modal-parceiro-sipag .modal-parceiro-dialog { 
690    border-radius: 16px 16px 0 0; 
691    max-height: 95vh; 
692
693 
694  .modal-parceiro-sipag .modal-parceiro-header { 
695    min-height: 65px; 
696    padding: 14px 20px; 
697
698 
699  .modal-parceiro-sipag .modal-parceiro-header h4 { 
700    font-size: 24px; 
701
702 
703  .modal-parceiro-sipag .close-modal { 
704    flex: 0 0 36px; 
705    height: 36px; 
706    width: 36px; 
707
708 
709  .modal-parceiro-sipag .modal-parceiro-body { 
710    max-height: calc(95vh - 65px); 
711    padding: 18px 15px 25px; 
712
713 
714  .modal-parceiro-sipag .modal-detalhes-grid { 
715    grid-template-columns: 1fr; 
716
717 
718  .modal-parceiro-sipag .modal-bloco { 
719    min-height: auto !important; 
720    padding: 20px; 
721
722 
723  .modal-parceiro-sipag #modalBlocoDescricao { 
724    min-height: auto; 
725
726 
727  .modal-parceiro-sipag .modal-bloco h6 { 
728    margin-bottom: 15px; 
729
730
731</style> 
732 
733<div class="col-12 px-0"> 
734  <section class="sipag-parceiros" id="sipag-parceiros"> 
735 
736<div class="container"> 
737 
738  <!-- ===================================================== 
739       FILTROS 
740  ====================================================== --> 
741 
742  <div 
743    class="parceiros-filtros-area" 
744    id="parceiros-filtros-area" 
745
746 
747<p class="parceiros-intro"> 
748  Filtre abaixo os segmentos que deseja visualizar: 
749</p> 
750 
751<div 
752  aria-label="Filtrar parceiros por segmento" 
753  class="filtros" 
754  id="filtros-parceiros" 
755  role="group" 
756></div> 
757 
758  </div> 
759 
760  <!-- ===================================================== 
761       BUSCA 
762  ====================================================== --> 
763 
764  <div class="parceiros-busca" role="search"> 
765 
766<label 
767  class="sr-only" 
768  for="busca-parceiros" 
769
770  Pesquisar parceiros por nome ou categoria 
771</label> 
772 
773<svg 
774  aria-hidden="true" 
775  class="parceiros-busca-icone" 
776  fill="none" 
777  viewBox="0 0 24 24" 
778
779  <circle 
780    cx="11" 
781    cy="11" 
782    r="7" 
783    stroke="currentColor" 
784    stroke-width="2" 
785  ></circle> 
786 
787  <path 
788    d="M16 16L21 21" 
789    stroke="currentColor" 
790    stroke-linecap="round" 
791    stroke-width="2" 
792  ></path> 
793</svg> 
794 
795<input 
796  autocomplete="off" 
797  class="parceiros-busca-campo" 
798  id="busca-parceiros" 
799  placeholder="Pesquise por nome do anexo ou categoria" 
800  type="search" 
801/> 
802 
803  </div> 
804 
805  <!-- ===================================================== 
806       GRID DE PARCEIROS 
807  ====================================================== --> 
808 
809  <div class="row" id="grid-parceiros"> 
810 
811<#list Fieldset67243883.getSiblings() as parceiro> 
812 
813  <#assign nome = parceiro.Text51037391.getData()!"" /> 
814  <#assign segmentos = parceiro.CheckboxMultiple15617005.getData()!"" /> 
815  <#assign site = parceiro.Text51612886.getData()!"" /> 
816 
817  <#assign siteUrl = site /> 
818 
819  <#if site?has_content 
820    && !site?starts_with("http://") 
821    && !site?starts_with("https://")> 
822 
823    <#assign siteUrl = "https://" + site /> 
824 
825  </#if> 
826 
827 
828  <div 
829    class="col-sm-6 col-lg-4 col-xl-3 mb-4 parceiro" 
830    data-category="${segmentos?html}" 
831    data-name="${nome?html}" 
832
833 
834    <div class="card-parceiro"> 
835 
836      <!-- LOGO --> 
837      <div class="parceiro-logo"> 
838 
839        <#if parceiro.Image82450298.getData()?? 
840          && parceiro.Image82450298.getData() != ""> 
841 
842          <img 
843            alt="${nome?html}" 
844            class="img-fluid" 
845            loading="lazy" 
846            src="${parceiro.Image82450298.getData()}" 
847          /> 
848 
849        </#if> 
850 
851      </div> 
852 
853 
854      <!-- NOME --> 
855      <h6> 
856        ${nome?html} 
857      </h6> 
858 
859 
860      <!-- SEGMENTOS --> 
861      <p class="parceiro-segmento js-segmento-card"></p> 
862 
863 
864      <!-- AÇÕES --> 
865      <div class="parceiro-acoes"> 
866 
867        <#if site?has_content> 
868 
869          <a 
870            class="btn-parceiro btn-site" 
871            href="${siteUrl?html}" 
872            rel="noopener noreferrer" 
873            target="_blank" 
874
875            Acessar site 
876          </a> 
877 
878        </#if> 
879 
880 
881        <button 
882          class="btn-parceiro btn-saiba btn-modal" 
883          type="button" 
884
885          Saiba mais 
886        </button> 
887 
888      </div> 
889 
890 
891      <!-- ================================================= 
892           DADOS UTILIZADOS PELO MODAL 
893      ================================================== --> 
894 
895      <div 
896        aria-hidden="true" 
897        class="parceiro-dados d-none" 
898
899 
900        <span class="js-nome"> 
901          ${nome?html} 
902        </span> 
903 
904 
905        <span class="js-segmentos"> 
906          ${segmentos?html} 
907        </span> 
908 
909 
910        <div class="js-descricao"> 
911 
912<#if (Fieldset67243883.RichText77766022.getData())??> 
913${Fieldset67243883.RichText77766022.getData()} 
914</#if> 
915</div> 
916 
917        <div class="js-terminais"> 
918 
919<#if (Fieldset67243883.RichText36172897.getData())??> 
920${Fieldset67243883.RichText36172897.getData()} 
921</#if> 
922</div> 
923 
924        <span class="js-email"> 
925          <#if parceiro.Text26526715.getData()??> 
926            ${parceiro.Text26526715.getData()?html} 
927          </#if> 
928        </span> 
929 
930 
931        <span class="js-whatsapp"> 
932          <#if parceiro.Campo12763757.getData()??> 
933            ${parceiro.Campo12763757.getData()?html} 
934          </#if> 
935        </span> 
936 
937 
938        <span class="js-instagram"> 
939          <#if parceiro.Campo47414182.getData()??> 
940            ${parceiro.Campo47414182.getData()?html} 
941          </#if> 
942        </span> 
943 
944 
945        <span class="js-site"> 
946          ${site?html} 
947        </span> 
948 
949      </div> 
950 
951    </div> 
952 
953  </div> 
954 
955</#list> 
956 
957  </div> 
958 
959  <!-- ===================================================== 
960       SEM RESULTADO 
961  ====================================================== --> 
962 
963  <p 
964    aria-live="polite" 
965    class="parceiros-vazio" 
966    hidden 
967    id="parceiros-vazio" 
968    role="status" 
969
970    Nenhum parceiro encontrado. 
971  </p> 
972 
973</div> 
974 
975<!-- ===================================================== 
976     MODAL 
977====================================================== --> 
978 
979<div 
980  aria-labelledby="modalParceiroTitulo" 
981  aria-modal="true" 
982  class="modal-parceiro-sipag" 
983  hidden 
984  id="modalParceiro" 
985  role="dialog" 
986
987 
988  <div class="modal-parceiro-dialog"> 
989 
990<!-- CABEÇALHO --> 
991<div class="modal-parceiro-header"> 
992 
993  <h4 id="modalParceiroTitulo"></h4> 
994 
995  <button 
996    aria-label="Fechar modal" 
997    class="close-modal" 
998    type="button" 
999
1000    &times; 
1001  </button> 
1002 
1003</div> 
1004 
1005 
1006<!-- CORPO --> 
1007<div class="modal-parceiro-body"> 
1008 
1009  <!-- DESCRIÇÃO --> 
1010  <div 
1011    class="modal-bloco" 
1012    id="modalBlocoDescricao" 
1013
1014 
1015    <h6>Descrição</h6> 
1016 
1017    <div id="modalDescricao"></div> 
1018 
1019  </div> 
1020 
1021 
1022  <!-- GRID 2x2 --> 
1023  <div class="modal-detalhes-grid"> 
1024 
1025    <!-- SEGMENTOS --> 
1026    <div 
1027      class="modal-bloco" 
1028      id="modalBlocoSegmentos" 
1029
1030 
1031      <h6>Segmentos atendidos</h6> 
1032 
1033      <div 
1034        class="modal-segmentos" 
1035        id="modalSegmentos" 
1036      ></div> 
1037 
1038    </div> 
1039 
1040 
1041    <!-- TERMINAIS --> 
1042    <div 
1043      class="modal-bloco" 
1044      id="modalBlocoTerminais" 
1045
1046 
1047      <h6>Terminais habilitados</h6> 
1048 
1049      <div id="modalTerminais"></div> 
1050 
1051    </div> 
1052 
1053 
1054    <!-- CONTATO --> 
1055    <div 
1056      class="modal-bloco" 
1057      id="modalBlocoContato" 
1058
1059 
1060      <h6>Informações e contato</h6> 
1061 
1062      <div id="modalContato"></div> 
1063 
1064    </div> 
1065 
1066 
1067    <!-- WEBSITE --> 
1068    <div 
1069      class="modal-bloco" 
1070      id="modalBlocoSite" 
1071
1072 
1073      <h6>Website</h6> 
1074 
1075      <div id="modalSite"></div> 
1076 
1077    </div> 
1078 
1079  </div> 
1080 
1081</div> 
1082 
1083  </div> 
1084 
1085</div> 
1086 
1087  </section> 
1088</div> 
1089 
1090<script> 
1091(function () { 
1092 
1093  var componente = document.getElementById("sipag-parceiros"); 
1094 
1095  if (!componente) { 
1096    return; 
1097
1098 
1099 
1100  if ( 
1101    componente.getAttribute( 
1102      "data-inicializado" 
1103    ) === "true" 
1104  ) { 
1105    return; 
1106
1107 
1108 
1109  componente.setAttribute( 
1110    "data-inicializado", 
1111    "true" 
1112  ); 
1113 
1114 
1115  /* ========================================================= 
1116     ELEMENTOS 
1117  ========================================================= */ 
1118 
1119  var busca = 
1120    componente.querySelector( 
1121      "#busca-parceiros" 
1122    ); 
1123 
1124  var filtrosContainer = 
1125    componente.querySelector( 
1126      "#filtros-parceiros" 
1127    ); 
1128 
1129  var filtrosArea = 
1130    componente.querySelector( 
1131      "#parceiros-filtros-area" 
1132    ); 
1133 
1134  var parceiros = 
1135    componente.querySelectorAll( 
1136      ".parceiro" 
1137    ); 
1138 
1139  var mensagemVazia = 
1140    componente.querySelector( 
1141      "#parceiros-vazio" 
1142    ); 
1143 
1144 
1145  var filtroAtual = "all"; 
1146 
1147 
1148  /* ========================================================= 
1149     NORMALIZA TEXTO 
1150  ========================================================= */ 
1151 
1152  function normalizarTexto(texto) { 
1153 
1154    var valor = 
1155      (texto || "") 
1156        .toString() 
1157        .toLowerCase(); 
1158 
1159 
1160    if (valor.normalize) { 
1161 
1162      valor = valor 
1163        .normalize("NFD") 
1164        .replace( 
1165          /[\u0300-\u036f]/g, 
1166          "" 
1167        ); 
1168 
1169
1170 
1171 
1172    return valor 
1173      .replace( 
1174        /[^a-z0-9]+/g, 
1175        " " 
1176
1177      .trim(); 
1178 
1179
1180 
1181 
1182  /* ========================================================= 
1183     OBTÉM SEGMENTOS 
1184 
1185     Suporta: 
1186     ["varejo","servicos"] 
1187 
1188     varejo,servicos 
1189 
1190     varejo;servicos 
1191  ========================================================= */ 
1192 
1193  function obterSegmentos(valor) { 
1194 
1195    if (!valor) { 
1196      return []; 
1197
1198 
1199 
1200    var texto = 
1201      valor.toString().trim(); 
1202 
1203 
1204    if (!texto) { 
1205      return []; 
1206
1207 
1208 
1209    /* 
1210     * Tenta JSON primeiro. 
1211     */ 
1212    try { 
1213 
1214      var json = 
1215        JSON.parse(texto); 
1216 
1217 
1218      if (Array.isArray(json)) { 
1219 
1220        return json 
1221          .map(function (item) { 
1222 
1223            return item 
1224              .toString() 
1225              .trim(); 
1226 
1227          }) 
1228          .filter(Boolean); 
1229 
1230
1231 
1232    } catch (erro) { 
1233      /* segue normalmente */ 
1234
1235 
1236 
1237    texto = texto 
1238      .replace(/^\[/, "") 
1239      .replace(/\]$/, "") 
1240      .replace(/"/g, "") 
1241      .replace(/'/g, ""); 
1242 
1243 
1244    return texto 
1245      .split(/[,;|]+/) 
1246      .map(function (item) { 
1247 
1248        return item.trim(); 
1249 
1250      }) 
1251      .filter(Boolean); 
1252 
1253
1254 
1255 
1256  /* ========================================================= 
1257     CHAVE CANÔNICA DO SEGMENTO 
1258  ========================================================= */ 
1259 
1260  function obterChaveSegmento(segmento) { 
1261 
1262    var chave = 
1263      normalizarTexto(segmento); 
1264 
1265 
1266    if ( 
1267      chave.indexOf("alimentacao") !== -1 || 
1268      chave.indexOf("bares restaurantes") !== -1 
1269    ) { 
1270      return "alimentacao"; 
1271
1272 
1273    if (chave.indexOf("evento") !== -1) { 
1274      return "eventos"; 
1275
1276 
1277    if (chave.indexOf("industr") !== -1) { 
1278      return "industria"; 
1279
1280 
1281    if ( 
1282      chave.indexOf("posto") !== -1 && 
1283      chave.indexOf("combust") !== -1 
1284    ) { 
1285      return "postos"; 
1286
1287 
1288    if (chave.indexOf("saude") !== -1) { 
1289      return "saude"; 
1290
1291 
1292    if (chave.indexOf("servico") !== -1) { 
1293      return "servicos"; 
1294
1295 
1296    if (chave.indexOf("varejo") !== -1) { 
1297      return "varejo"; 
1298
1299 
1300 
1301    return chave; 
1302 
1303
1304 
1305 
1306  /* ========================================================= 
1307     LABEL DO FILTRO 
1308  ========================================================= */ 
1309 
1310  function obterLabelFiltroSegmento(chave, segmentoOriginal) { 
1311 
1312    var labels = { 
1313      "alimentacao": "ALIMENTAÇÃO", 
1314      "eventos": "EVENTOS", 
1315      "industria": "INDÚSTRIA", 
1316      "postos": "POSTOS DE COMBUSTÍVEIS", 
1317      "saude": "SAÚDE", 
1318      "servicos": "SERVIÇOS", 
1319      "varejo": "VAREJO" 
1320    }; 
1321 
1322 
1323    if (labels[chave]) { 
1324      return labels[chave]; 
1325
1326 
1327 
1328    return (segmentoOriginal || "") 
1329      .toString() 
1330      .trim() 
1331      .toUpperCase(); 
1332 
1333
1334 
1335 
1336  /* ========================================================= 
1337     NOME VISUAL DO SEGMENTO NO CARD / MODAL 
1338  ========================================================= */ 
1339 
1340  function obterLabelSegmento(segmento) { 
1341 
1342    var chave = 
1343      normalizarTexto(segmento); 
1344 
1345 
1346    var labels = { 
1347      "alimentacao": "Alimentação (Bares, Restaurantes e Lanchonetes)", 
1348      "alimentacao bares restaurantes e lanchonetes": 
1349        "Alimentação (Bares, Restaurantes e Lanchonetes)", 
1350      "bares restaurantes e lanchonetes": 
1351        "Alimentação (Bares, Restaurantes e Lanchonetes)", 
1352      "eventos": "Eventos", 
1353      "industria": "Indústria", 
1354			"posto": "Postos de Combustíveis", 
1355      "postos": "Postos de Combustíveis", 
1356      "posto de combustivel": "Postos de Combustíveis", 
1357      "postos de combustivel": "Postos de Combustíveis", 
1358      "postos de combustiveis": "Postos de Combustíveis", 
1359      "saude": "Saúde", 
1360      "servicos": "Serviços", 
1361      "varejo": "Varejo" 
1362    }; 
1363 
1364 
1365    if (labels[chave]) { 
1366      return labels[chave]; 
1367
1368 
1369 
1370    return segmento 
1371      .toString() 
1372      .trim(); 
1373 
1374
1375 
1376 
1377  /* ========================================================= 
1378     FORMATA OS SEGMENTOS NOS CARDS 
1379  ========================================================= */ 
1380 
1381  function formatarListaSegmentos(lista) { 
1382 
1383    if (!lista.length) { 
1384      return ""; 
1385
1386 
1387    if (lista.length === 1) { 
1388      return lista[0]; 
1389
1390 
1391    if (lista.length === 2) { 
1392      return lista[0] + " e " + lista[1]; 
1393
1394 
1395 
1396    return ( 
1397      lista.slice(0, -1).join(", ") + 
1398      " e " + 
1399      lista[lista.length - 1] 
1400    ); 
1401 
1402
1403 
1404 
1405  function formatarSegmentosCards() { 
1406 
1407    parceiros.forEach( 
1408      function (parceiro) { 
1409 
1410        var campo = 
1411          parceiro.querySelector( 
1412            ".js-segmento-card" 
1413          ); 
1414 
1415 
1416        if (!campo) { 
1417          return; 
1418
1419 
1420 
1421        var segmentos = 
1422          obterSegmentos( 
1423            parceiro.getAttribute( 
1424              "data-category" 
1425
1426          ); 
1427 
1428 
1429        var labels = 
1430          segmentos.map(function (segmento) { 
1431 
1432            return obterLabelSegmento( 
1433              segmento 
1434            ); 
1435 
1436          }); 
1437 
1438 
1439        campo.textContent = 
1440          formatarListaSegmentos(labels); 
1441 
1442
1443    ); 
1444 
1445
1446 
1447 
1448  /* ========================================================= 
1449     CRIAR FILTROS AUTOMATICAMENTE 
1450 
1451     SOMENTE SEGMENTOS USADOS 
1452  ========================================================= */ 
1453 
1454  function gerarFiltros() { 
1455 
1456    if (!filtrosContainer) { 
1457      return; 
1458
1459 
1460 
1461    var segmentosUsados = {}; 
1462 
1463 
1464    parceiros.forEach( 
1465      function (parceiro) { 
1466 
1467        var categorias = 
1468          obterSegmentos( 
1469            parceiro.getAttribute( 
1470              "data-category" 
1471
1472          ); 
1473 
1474 
1475        categorias.forEach( 
1476          function (categoria) { 
1477 
1478            var chave = 
1479              obterChaveSegmento( 
1480                categoria 
1481              ); 
1482 
1483 
1484            if (!chave) { 
1485              return; 
1486
1487 
1488 
1489            if ( 
1490              !segmentosUsados[chave] 
1491            ) { 
1492 
1493              segmentosUsados[chave] = { 
1494                chave: chave, 
1495                valor: categoria, 
1496                label: 
1497                  obterLabelFiltroSegmento( 
1498                    chave, 
1499                    categoria 
1500
1501              }; 
1502 
1503
1504 
1505
1506        ); 
1507 
1508
1509    ); 
1510 
1511 
1512    while ( 
1513      filtrosContainer.firstChild 
1514    ) { 
1515 
1516      filtrosContainer.removeChild( 
1517        filtrosContainer.firstChild 
1518      ); 
1519 
1520
1521 
1522 
1523    var segmentos = 
1524      Object.keys( 
1525        segmentosUsados 
1526
1527      .map(function (chave) { 
1528 
1529        return segmentosUsados[ 
1530          chave 
1531        ]; 
1532 
1533      }); 
1534 
1535 
1536    if (!segmentos.length) { 
1537 
1538      if (filtrosArea) { 
1539 
1540        filtrosArea.style.display = 
1541          "none"; 
1542 
1543
1544 
1545      return; 
1546 
1547
1548 
1549 
1550    if (filtrosArea) { 
1551 
1552      filtrosArea.style.display = ""; 
1553 
1554
1555 
1556 
1557    /* TODOS */ 
1558    var botaoTodos = 
1559      document.createElement( 
1560        "button" 
1561      ); 
1562 
1563 
1564    botaoTodos.type = "button"; 
1565 
1566    botaoTodos.className = 
1567      "btn btn-pill active"; 
1568 
1569    botaoTodos.setAttribute( 
1570      "data-filter", 
1571      "all" 
1572    ); 
1573 
1574    botaoTodos.setAttribute( 
1575      "aria-pressed", 
1576      "true" 
1577    ); 
1578 
1579 
1580    botaoTodos.appendChild( 
1581      document.createTextNode( 
1582        "TODOS OS SEGMENTOS" 
1583
1584    ); 
1585 
1586 
1587    filtrosContainer.appendChild( 
1588      botaoTodos 
1589    ); 
1590 
1591 
1592    /* ORDEM ALFABÉTICA */ 
1593    segmentos.sort( 
1594      function (a, b) { 
1595 
1596        return a.label.localeCompare( 
1597          b.label, 
1598          "pt-BR" 
1599        ); 
1600 
1601
1602    ); 
1603 
1604 
1605    /* CRIA SOMENTE OS USADOS */ 
1606    segmentos.forEach( 
1607      function (segmento) { 
1608 
1609        var botao = 
1610          document.createElement( 
1611            "button" 
1612          ); 
1613 
1614 
1615        botao.type = "button"; 
1616 
1617        botao.className = 
1618          "btn btn-pill"; 
1619 
1620        botao.setAttribute( 
1621          "data-filter", 
1622          segmento.chave 
1623        ); 
1624 
1625        botao.setAttribute( 
1626          "aria-pressed", 
1627          "false" 
1628        ); 
1629 
1630 
1631        botao.appendChild( 
1632          document.createTextNode( 
1633            segmento.label 
1634
1635        ); 
1636 
1637 
1638        filtrosContainer.appendChild( 
1639          botao 
1640        ); 
1641 
1642
1643    ); 
1644 
1645
1646 
1647 
1648  /* ========================================================= 
1649     FILTRAR PARCEIROS 
1650  ========================================================= */ 
1651 
1652  function filtrarParceiros() { 
1653 
1654    var termo = 
1655      normalizarTexto( 
1656        busca ? 
1657          busca.value : 
1658          "" 
1659      ); 
1660 
1661 
1662    var quantidadeVisivel = 0; 
1663 
1664 
1665    parceiros.forEach( 
1666      function (parceiro) { 
1667 
1668        var nome = 
1669          normalizarTexto( 
1670            parceiro.getAttribute( 
1671              "data-name" 
1672
1673          ); 
1674 
1675 
1676        var segmentos = 
1677          obterSegmentos( 
1678            parceiro.getAttribute( 
1679              "data-category" 
1680
1681          ); 
1682 
1683 
1684        var categoriasNormalizadas = 
1685          segmentos.map( 
1686            function (item) { 
1687 
1688              return obterChaveSegmento( 
1689                item 
1690              ); 
1691 
1692
1693          ); 
1694 
1695 
1696        var textoCategorias = 
1697          segmentos 
1698            .map(function (item) { 
1699 
1700              return normalizarTexto( 
1701                item + " " + 
1702                obterLabelSegmento(item) 
1703              ); 
1704 
1705            }) 
1706            .join(" "); 
1707 
1708 
1709        /* BUSCA */ 
1710        var atendeBusca = 
1711          !termo || 
1712          nome.indexOf(termo) !== -1 || 
1713          textoCategorias.indexOf( 
1714            termo 
1715          ) !== -1; 
1716 
1717 
1718        /* FILTRO */ 
1719        var atendeFiltro = 
1720          filtroAtual === "all" || 
1721          categoriasNormalizadas 
1722            .indexOf( 
1723              filtroAtual 
1724            ) !== -1; 
1725 
1726 
1727        var exibir = 
1728          atendeBusca && 
1729          atendeFiltro; 
1730 
1731 
1732        parceiro.style.display = 
1733          exibir ? "" : "none"; 
1734 
1735 
1736        if (exibir) { 
1737          quantidadeVisivel++; 
1738
1739 
1740
1741    ); 
1742 
1743 
1744    if (mensagemVazia) { 
1745 
1746      mensagemVazia.hidden = 
1747        quantidadeVisivel !== 0; 
1748 
1749
1750 
1751
1752 
1753 
1754  /* ========================================================= 
1755     EVENTO FILTROS 
1756  ========================================================= */ 
1757 
1758  if (filtrosContainer) { 
1759 
1760    filtrosContainer.addEventListener( 
1761      "click", 
1762      function (event) { 
1763 
1764        var botao = 
1765          event.target.closest( 
1766            ".btn-pill[data-filter]" 
1767          ); 
1768 
1769 
1770        if (!botao) { 
1771          return; 
1772
1773 
1774 
1775        filtroAtual = 
1776          botao.getAttribute( 
1777            "data-filter" 
1778          ) || "all"; 
1779 
1780 
1781        var botoes = 
1782          filtrosContainer 
1783            .querySelectorAll( 
1784              ".btn-pill" 
1785            ); 
1786 
1787 
1788        botoes.forEach( 
1789          function (item) { 
1790 
1791            item.classList.remove( 
1792              "active" 
1793            ); 
1794 
1795            item.setAttribute( 
1796              "aria-pressed", 
1797              "false" 
1798            ); 
1799 
1800
1801        ); 
1802 
1803 
1804        botao.classList.add( 
1805          "active" 
1806        ); 
1807 
1808        botao.setAttribute( 
1809          "aria-pressed", 
1810          "true" 
1811        ); 
1812 
1813 
1814        filtrarParceiros(); 
1815 
1816
1817    ); 
1818 
1819
1820 
1821 
1822  /* ========================================================= 
1823     EVENTO BUSCA 
1824  ========================================================= */ 
1825 
1826  if (busca) { 
1827 
1828    busca.addEventListener( 
1829      "input", 
1830      filtrarParceiros 
1831    ); 
1832 
1833
1834 
1835 
1836  /* ========================================================= 
1837     ELEMENTOS MODAL 
1838  ========================================================= */ 
1839 
1840  var modal = 
1841    componente.querySelector( 
1842      "#modalParceiro" 
1843    ); 
1844 
1845  var tituloModal = 
1846    componente.querySelector( 
1847      "#modalParceiroTitulo" 
1848    ); 
1849 
1850  var modalDescricao = 
1851    componente.querySelector( 
1852      "#modalDescricao" 
1853    ); 
1854 
1855  var modalSegmentos = 
1856    componente.querySelector( 
1857      "#modalSegmentos" 
1858    ); 
1859 
1860  var modalTerminais = 
1861    componente.querySelector( 
1862      "#modalTerminais" 
1863    ); 
1864 
1865  var modalContato = 
1866    componente.querySelector( 
1867      "#modalContato" 
1868    ); 
1869 
1870  var modalSite = 
1871    componente.querySelector( 
1872      "#modalSite" 
1873    ); 
1874 
1875 
1876  var blocoDescricao = 
1877    componente.querySelector( 
1878      "#modalBlocoDescricao" 
1879    ); 
1880 
1881  var blocoSegmentos = 
1882    componente.querySelector( 
1883      "#modalBlocoSegmentos" 
1884    ); 
1885 
1886  var blocoTerminais = 
1887    componente.querySelector( 
1888      "#modalBlocoTerminais" 
1889    ); 
1890 
1891  var blocoContato = 
1892    componente.querySelector( 
1893      "#modalBlocoContato" 
1894    ); 
1895 
1896  var blocoSite = 
1897    componente.querySelector( 
1898      "#modalBlocoSite" 
1899    ); 
1900 
1901 
1902  var elementoFocoAnterior = null; 
1903  var overflowAnterior = ""; 
1904 
1905 
1906  /* ========================================================= 
1907     LIMPAR ELEMENTO 
1908  ========================================================= */ 
1909 
1910  function limparElemento(elemento) { 
1911 
1912    if (!elemento) { 
1913      return; 
1914
1915 
1916 
1917    while (elemento.firstChild) { 
1918 
1919      elemento.removeChild( 
1920        elemento.firstChild 
1921      ); 
1922 
1923
1924 
1925
1926 
1927 
1928  /* ========================================================= 
1929     COPIA RICH TEXT 
1930 
1931     NÃO USA innerHTML 
1932  ========================================================= */ 
1933 
1934  function copiarConteudo( 
1935    origem, 
1936    destino 
1937  ) { 
1938 
1939    limparElemento(destino); 
1940 
1941 
1942    if ( 
1943      !origem || 
1944      !destino 
1945    ) { 
1946      return false; 
1947
1948 
1949 
1950    var possuiConteudo = 
1951      origem.textContent.trim() !== "" || 
1952      origem.children.length > 0; 
1953 
1954 
1955    if (!possuiConteudo) { 
1956      return false; 
1957
1958 
1959 
1960    Array.prototype.slice 
1961      .call( 
1962        origem.childNodes 
1963
1964      .forEach( 
1965        function (node) { 
1966 
1967          destino.appendChild( 
1968            node.cloneNode(true) 
1969          ); 
1970 
1971
1972      ); 
1973 
1974 
1975    return true; 
1976 
1977
1978 
1979 
1980  /* ========================================================= 
1981     CRIAR LINK 
1982  ========================================================= */ 
1983 
1984  function criarLink( 
1985    texto, 
1986    href, 
1987    target 
1988  ) { 
1989 
1990    var link = 
1991      document.createElement("a"); 
1992 
1993 
1994    link.href = href; 
1995 
1996 
1997    link.appendChild( 
1998      document.createTextNode( 
1999        texto 
2000
2001    ); 
2002 
2003 
2004    if (target) { 
2005 
2006      link.target = target; 
2007 
2008      link.rel = 
2009        "noopener noreferrer"; 
2010 
2011
2012 
2013 
2014    return link; 
2015 
2016
2017 
2018 
2019  /* ========================================================= 
2020     URL WHATSAPP 
2021  ========================================================= */ 
2022 
2023  function criarUrlWhatsApp( 
2024    numero 
2025  ) { 
2026 
2027    var numeroLimpo = 
2028      (numero || "") 
2029        .replace(/\D/g, ""); 
2030 
2031 
2032    if (!numeroLimpo) { 
2033      return ""; 
2034
2035 
2036 
2037    if ( 
2038      numeroLimpo.indexOf("55") !== 0 
2039    ) { 
2040 
2041      numeroLimpo = 
2042        "55" + numeroLimpo; 
2043 
2044
2045 
2046 
2047    return ( 
2048      "https://wa.me/" + 
2049      numeroLimpo 
2050    ); 
2051 
2052
2053 
2054 
2055  /* ========================================================= 
2056     URL INSTAGRAM 
2057  ========================================================= */ 
2058 
2059  function criarUrlInstagram( 
2060    instagram 
2061  ) { 
2062 
2063    var valor = 
2064      (instagram || "") 
2065        .trim(); 
2066 
2067 
2068    if (!valor) { 
2069      return ""; 
2070
2071 
2072 
2073    if ( 
2074      valor.indexOf( 
2075        "http://" 
2076      ) === 0 || 
2077      valor.indexOf( 
2078        "https://" 
2079      ) === 0 
2080    ) { 
2081 
2082      return valor; 
2083 
2084
2085 
2086 
2087    valor = valor 
2088      .replace(/^@/, "") 
2089      .replace(/^www\./, "") 
2090      .replace( 
2091        /^instagram\.com\//, 
2092        "" 
2093      ); 
2094 
2095 
2096    return ( 
2097      "https://instagram.com/" + 
2098      valor 
2099    ); 
2100 
2101
2102 
2103 
2104  /* ========================================================= 
2105     URL SITE 
2106  ========================================================= */ 
2107 
2108  function criarUrlSite(site) { 
2109 
2110    var valor = 
2111      (site || "").trim(); 
2112 
2113 
2114    if (!valor) { 
2115      return ""; 
2116
2117 
2118 
2119    if ( 
2120      valor.indexOf( 
2121        "http://" 
2122      ) === 0 || 
2123      valor.indexOf( 
2124        "https://" 
2125      ) === 0 
2126    ) { 
2127 
2128      return valor; 
2129 
2130
2131 
2132 
2133    return ( 
2134      "https://" + valor 
2135    ); 
2136 
2137
2138 
2139 
2140  /* ========================================================= 
2141     ADICIONAR CONTATO 
2142  ========================================================= */ 
2143 
2144  function adicionarContato( 
2145    titulo, 
2146    texto, 
2147    href, 
2148    novaAba 
2149  ) { 
2150 
2151    if (!texto) { 
2152      return false; 
2153
2154 
2155 
2156    var p = 
2157      document.createElement("p"); 
2158 
2159 
2160    p.appendChild( 
2161      document.createTextNode( 
2162        titulo + ": " 
2163
2164    ); 
2165 
2166 
2167    if (href) { 
2168 
2169      p.appendChild( 
2170        criarLink( 
2171          texto, 
2172          href, 
2173          novaAba ? 
2174            "_blank" : 
2175            "" 
2176
2177      ); 
2178 
2179    } else { 
2180 
2181      p.appendChild( 
2182        document.createTextNode( 
2183          texto 
2184
2185      ); 
2186 
2187
2188 
2189 
2190    modalContato.appendChild(p); 
2191 
2192 
2193    return true; 
2194 
2195
2196 
2197 
2198  /* ========================================================= 
2199     SEGMENTOS DO MODAL 
2200  ========================================================= */ 
2201 
2202  function montarSegmentosModal( 
2203    valor 
2204  ) { 
2205 
2206    limparElemento( 
2207      modalSegmentos 
2208    ); 
2209 
2210 
2211    var segmentos = 
2212      obterSegmentos(valor); 
2213 
2214 
2215    if (!segmentos.length) { 
2216      return false; 
2217
2218 
2219 
2220    segmentos.forEach( 
2221      function (segmento) { 
2222 
2223        var span = 
2224          document.createElement( 
2225            "span" 
2226          ); 
2227 
2228 
2229        span.className = 
2230          "modal-segmento-tag"; 
2231 
2232 
2233        span.appendChild( 
2234          document.createTextNode( 
2235            obterLabelSegmento( 
2236              segmento 
2237
2238
2239        ); 
2240 
2241 
2242        modalSegmentos 
2243          .appendChild(span); 
2244 
2245
2246    ); 
2247 
2248 
2249    return true; 
2250 
2251
2252 
2253 
2254  /* ========================================================= 
2255     ABRIR MODAL 
2256  ========================================================= */ 
2257 
2258  function abrirModal(botao) { 
2259 
2260    if (!modal) { 
2261      return; 
2262
2263 
2264 
2265    var parceiro = 
2266      botao.closest( 
2267        ".parceiro" 
2268      ); 
2269 
2270 
2271    if (!parceiro) { 
2272      return; 
2273
2274 
2275 
2276    var dados = 
2277      parceiro.querySelector( 
2278        ".parceiro-dados" 
2279      ); 
2280 
2281 
2282    if (!dados) { 
2283      return; 
2284
2285 
2286 
2287    /* ====================== 
2288       NOME 
2289    ====================== */ 
2290 
2291    var nome = 
2292      dados.querySelector( 
2293        ".js-nome" 
2294      ); 
2295 
2296 
2297    tituloModal.textContent = 
2298      nome ? 
2299        nome.textContent.trim() : 
2300        ""; 
2301 
2302 
2303    /* ====================== 
2304       DESCRIÇÃO 
2305    ====================== */ 
2306 
2307    var descricao = 
2308      dados.querySelector( 
2309        ".js-descricao" 
2310      ); 
2311 
2312 
2313    blocoDescricao.hidden = 
2314      !copiarConteudo( 
2315        descricao, 
2316        modalDescricao 
2317      ); 
2318 
2319 
2320    /* ====================== 
2321       SEGMENTOS 
2322    ====================== */ 
2323 
2324    var segmentos = 
2325      dados.querySelector( 
2326        ".js-segmentos" 
2327      ); 
2328 
2329 
2330    blocoSegmentos.hidden = 
2331      !montarSegmentosModal( 
2332        segmentos ? 
2333          segmentos 
2334            .textContent 
2335            .trim() : 
2336          "" 
2337      ); 
2338 
2339 
2340    /* ====================== 
2341       TERMINAIS 
2342    ====================== */ 
2343 
2344    var terminais = 
2345      dados.querySelector( 
2346        ".js-terminais" 
2347      ); 
2348 
2349 
2350    blocoTerminais.hidden = 
2351      !copiarConteudo( 
2352        terminais, 
2353        modalTerminais 
2354      ); 
2355 
2356 
2357    /* ====================== 
2358       CONTATO 
2359    ====================== */ 
2360 
2361    limparElemento( 
2362      modalContato 
2363    ); 
2364 
2365 
2366    var emailElemento = 
2367      dados.querySelector( 
2368        ".js-email" 
2369      ); 
2370 
2371    var whatsappElemento = 
2372      dados.querySelector( 
2373        ".js-whatsapp" 
2374      ); 
2375 
2376    var instagramElemento = 
2377      dados.querySelector( 
2378        ".js-instagram" 
2379      ); 
2380 
2381 
2382    var email = 
2383      emailElemento ? 
2384        emailElemento 
2385          .textContent 
2386          .trim() : 
2387        ""; 
2388 
2389 
2390    var whatsapp = 
2391      whatsappElemento ? 
2392        whatsappElemento 
2393          .textContent 
2394          .trim() : 
2395        ""; 
2396 
2397 
2398    var instagram = 
2399      instagramElemento ? 
2400        instagramElemento 
2401          .textContent 
2402          .trim() : 
2403        ""; 
2404 
2405 
2406    var possuiContato = false; 
2407 
2408 
2409    if (email) { 
2410 
2411      possuiContato = 
2412        adicionarContato( 
2413          "E-mail", 
2414          email, 
2415          "mailto:" + email, 
2416          false 
2417        ) || 
2418        possuiContato; 
2419 
2420
2421 
2422 
2423    if (whatsapp) { 
2424 
2425      possuiContato = 
2426        adicionarContato( 
2427          "WhatsApp", 
2428          whatsapp, 
2429          criarUrlWhatsApp( 
2430            whatsapp 
2431          ), 
2432          true 
2433        ) || 
2434        possuiContato; 
2435 
2436
2437 
2438 
2439    if (instagram) { 
2440 
2441      var instagramLabel = 
2442        instagram; 
2443 
2444 
2445      if ( 
2446        instagramLabel.indexOf( 
2447          "http" 
2448        ) !== 0 && 
2449        instagramLabel.charAt(0) 
2450          !== "@" 
2451      ) { 
2452 
2453        instagramLabel = 
2454          "@" + 
2455          instagramLabel; 
2456 
2457
2458 
2459 
2460      possuiContato = 
2461        adicionarContato( 
2462          "Instagram", 
2463          instagramLabel, 
2464          criarUrlInstagram( 
2465            instagram 
2466          ), 
2467          true 
2468        ) || 
2469        possuiContato; 
2470 
2471
2472 
2473 
2474    blocoContato.hidden = 
2475      !possuiContato; 
2476 
2477 
2478    /* ====================== 
2479       SITE 
2480    ====================== */ 
2481 
2482    limparElemento( 
2483      modalSite 
2484    ); 
2485 
2486 
2487    var siteElemento = 
2488      dados.querySelector( 
2489        ".js-site" 
2490      ); 
2491 
2492 
2493    var site = 
2494      siteElemento ? 
2495        siteElemento 
2496          .textContent 
2497          .trim() : 
2498        ""; 
2499 
2500 
2501    if (site) { 
2502 
2503      modalSite.appendChild( 
2504        criarLink( 
2505          site, 
2506          criarUrlSite(site), 
2507          "_blank" 
2508
2509      ); 
2510 
2511 
2512      blocoSite.hidden = false; 
2513 
2514    } else { 
2515 
2516      blocoSite.hidden = true; 
2517 
2518
2519 
2520 
2521    /* ====================== 
2522       ABRIR 
2523    ====================== */ 
2524 
2525    elementoFocoAnterior = 
2526      document.activeElement; 
2527 
2528 
2529    overflowAnterior = 
2530      document.body.style 
2531        .overflow; 
2532 
2533 
2534    modal.hidden = false; 
2535 
2536 
2537    document.body.style 
2538      .overflow = "hidden"; 
2539 
2540 
2541    var fechar = 
2542      modal.querySelector( 
2543        ".close-modal" 
2544      ); 
2545 
2546 
2547    if (fechar) { 
2548      fechar.focus(); 
2549
2550 
2551
2552 
2553 
2554  /* ========================================================= 
2555     FECHAR MODAL 
2556  ========================================================= */ 
2557 
2558  function fecharModal() { 
2559 
2560    if ( 
2561      !modal || 
2562      modal.hidden 
2563    ) { 
2564      return; 
2565
2566 
2567 
2568    modal.hidden = true; 
2569 
2570 
2571    document.body.style 
2572      .overflow = 
2573        overflowAnterior; 
2574 
2575 
2576    if ( 
2577      elementoFocoAnterior && 
2578      typeof elementoFocoAnterior 
2579        .focus === "function" 
2580    ) { 
2581 
2582      elementoFocoAnterior 
2583        .focus(); 
2584 
2585
2586 
2587
2588 
2589 
2590  /* ========================================================= 
2591     CLIQUES 
2592  ========================================================= */ 
2593 
2594  componente.addEventListener( 
2595    "click", 
2596    function (event) { 
2597 
2598      var botaoModal = 
2599        event.target.closest( 
2600          ".btn-modal" 
2601        ); 
2602 
2603 
2604      if (botaoModal) { 
2605 
2606        event.preventDefault(); 
2607 
2608        abrirModal( 
2609          botaoModal 
2610        ); 
2611 
2612        return; 
2613 
2614
2615 
2616 
2617      var fechar = 
2618        event.target.closest( 
2619          ".close-modal" 
2620        ); 
2621 
2622 
2623      if (fechar) { 
2624 
2625        event.preventDefault(); 
2626 
2627        fecharModal(); 
2628 
2629        return; 
2630 
2631
2632 
2633 
2634      /* 
2635       * Fecha clicando no fundo 
2636       */ 
2637      if ( 
2638        modal && 
2639        event.target === modal 
2640      ) { 
2641 
2642        fecharModal(); 
2643 
2644
2645 
2646
2647  ); 
2648 
2649 
2650  /* ========================================================= 
2651     ESC 
2652  ========================================================= */ 
2653 
2654  document.addEventListener( 
2655    "keydown", 
2656    function (event) { 
2657 
2658      if ( 
2659        event.key === "Escape" && 
2660        modal && 
2661        !modal.hidden 
2662      ) { 
2663 
2664        fecharModal(); 
2665 
2666
2667 
2668
2669  ); 
2670 
2671 
2672  /* ========================================================= 
2673     INICIALIZAÇÃO 
2674  ========================================================= */ 
2675 
2676  formatarSegmentosCards(); 
2677 
2678  gerarFiltros(); 
2679 
2680  filtrarParceiros(); 
2681 
2682})(); 
2683</script> 
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> Fieldset67243883  [in template "20102#20128#189538129" at line 811, column 8]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #list Fieldset67243883.getSiblings() ...  [in template "20102#20128#189538129" at line 811, column 1]
----
1<style type="text/css"> 
2/* ========================================================= 
3   PARCEIROS SIPAG - LAYOUT PRINCIPAL 
4========================================================= */ 
5 
6.sipag-parceiros { 
7  background-color: #fff; 
8  color: #003641; 
9  padding: 34px 0 56px; 
10
11 
12.sipag-parceiros > .container { 
13  max-width: 1440px; 
14  padding-left: 24px; 
15  padding-right: 24px; 
16  width: 100%; 
17
18 
19/* ========================================================= 
20   FILTROS 
21========================================================= */ 
22 
23.sipag-parceiros .parceiros-filtros-area { 
24  margin-bottom: 34px; 
25
26 
27.sipag-parceiros .parceiros-intro { 
28  color: #003641; 
29  font-size: 17px; 
30  line-height: 1.4; 
31  margin: 0 0 26px; 
32  text-align: center; 
33
34 
35.sipag-parceiros .filtros { 
36  align-items: center; 
37  display: flex; 
38  flex-wrap: wrap; 
39  gap: 12px; 
40  justify-content: center; 
41  margin: 0 auto; 
42  width: 100%; 
43
44 
45.sipag-parceiros .btn-pill { 
46  align-items: center; 
47  background-color: #fff; 
48  border: 1px solid #d9dcdf; 
49  border-radius: 10px; 
50  box-shadow: none; 
51  color: #272833; 
52  cursor: pointer; 
53  display: inline-flex; 
54  flex: 0 0 auto; 
55  font-size: 18px; 
56  font-weight: 700; 
57  justify-content: center; 
58  line-height: 1.2; 
59  min-height: 64px; 
60  min-width: 250px; 
61  padding: 14px 22px; 
62  text-align: center; 
63  text-transform: uppercase; 
64  transition: 
65    background-color .2s ease, 
66    border-color .2s ease, 
67    color .2s ease; 
68  white-space: nowrap; 
69
70 
71.sipag-parceiros .btn-pill:hover { 
72  background-color: #f5fffd; 
73  border-color: #00ae9d; 
74  color: #003641; 
75
76 
77.sipag-parceiros .btn-pill.active { 
78  background-color: #003641; 
79  border-color: #003641; 
80  color: #fff; 
81
82 
83.sipag-parceiros .btn-pill:focus { 
84  box-shadow: 0 0 0 3px rgba(0, 174, 157, .16); 
85  outline: none; 
86
87 
88/* ========================================================= 
89   BUSCA 
90========================================================= */ 
91 
92.sipag-parceiros .parceiros-busca { 
93  margin: 0 auto 56px; 
94  max-width: none; 
95  position: relative; 
96  width: 100%; 
97
98 
99.sipag-parceiros .parceiros-busca-icone { 
100  color: #00ae9d; 
101  height: 28px; 
102  left: 21px; 
103  pointer-events: none; 
104  position: absolute; 
105  top: 50%; 
106  transform: translateY(-50%); 
107  width: 28px; 
108
109 
110.sipag-parceiros .parceiros-busca-campo { 
111  background-color: #fff; 
112  border: 2px solid #00ae9d; 
113  border-radius: 7px; 
114  color: #003641; 
115  font-size: 16px; 
116  height: 68px; 
117  outline: none; 
118  padding: 0 24px 0 62px; 
119  transition: 
120    border-color .2s ease, 
121    box-shadow .2s ease; 
122  width: 100%; 
123
124 
125.sipag-parceiros .parceiros-busca-campo::placeholder { 
126  color: #b1bbc8; 
127  opacity: 1; 
128
129 
130.sipag-parceiros .parceiros-busca-campo:focus { 
131  border-color: #00ae9d; 
132  box-shadow: 0 0 0 3px rgba(0, 174, 157, .12); 
133
134 
135/* ========================================================= 
136   GRID 
137========================================================= */ 
138 
139.sipag-parceiros #grid-parceiros { 
140  align-items: stretch; 
141
142 
143.sipag-parceiros .parceiro { 
144  display: flex; 
145
146 
147/* ========================================================= 
148   CARD 
149========================================================= */ 
150 
151.sipag-parceiros .card-parceiro { 
152  background-color: #fff; 
153  border: 1px solid #dedede; 
154  border-radius: 14px; 
155  box-shadow: none; 
156  display: flex; 
157  flex-direction: column; 
158  min-height: 510px; 
159  padding: 18px; 
160  transition: 
161    border-color .2s ease, 
162    box-shadow .2s ease; 
163  width: 100%; 
164
165 
166.sipag-parceiros .card-parceiro:hover { 
167  border-color: #d1d8d7; 
168  box-shadow: 0 8px 22px rgba(0, 54, 65, .08); 
169  transform: none; 
170
171 
172/* ========================================================= 
173   LOGO 
174========================================================= */ 
175 
176.sipag-parceiros .parceiro-logo { 
177  align-items: center; 
178  display: flex; 
179  height: 255px; 
180  justify-content: center; 
181  margin-bottom: 0; 
182  overflow: hidden; 
183  width: 100%; 
184
185 
186.sipag-parceiros .parceiro-logo img { 
187  display: block; 
188  max-height: 169px; 
189  max-width: 230px; 
190  object-fit: contain; 
191  width: auto; 
192
193 
194/* ========================================================= 
195   TEXTO DO CARD 
196========================================================= */ 
197 
198.sipag-parceiros .card-parceiro h6 { 
199  color: #00ae9d; 
200  font-size: 23px; 
201  font-weight: 700; 
202  line-height: 1.25; 
203  margin: 0 0 10px; 
204
205 
206.sipag-parceiros .parceiro-segmento { 
207  color: #5b5b5b; 
208  font-size: 15px; 
209  line-height: 1.55; 
210  margin: 0 0 24px; 
211
212 
213/* ========================================================= 
214   AÇÕES DO CARD 
215========================================================= */ 
216 
217.sipag-parceiros .parceiro-acoes { 
218  display: flex; 
219  flex-direction: column; 
220  gap: 10px; 
221  margin-top: auto; 
222  width: 100%; 
223
224 
225.sipag-parceiros .btn-parceiro { 
226  align-items: center; 
227  border-radius: 9px; 
228  cursor: pointer; 
229  display: inline-flex; 
230  flex: none; 
231  font-size: 18px; 
232  font-weight: 700; 
233  justify-content: center; 
234  min-height: 62px; 
235  padding: 10px 14px; 
236  text-align: center; 
237  text-decoration: none !important; 
238  transition: 
239    background-color .2s ease, 
240    border-color .2s ease, 
241    color .2s ease; 
242  width: 100%; 
243
244 
245.sipag-parceiros .btn-site { 
246  background-color: #fff; 
247  border: 1px solid #00ae9d; 
248  color: #00ae9d; 
249
250 
251.sipag-parceiros .btn-site:hover { 
252  background-color: #f3fffd; 
253  border-color: #00ae9d; 
254  color: #008f83; 
255
256 
257.sipag-parceiros .btn-saiba { 
258  background-color: #00ae9d; 
259  border: 1px solid #00ae9d; 
260  color: #fff; 
261
262 
263.sipag-parceiros .btn-saiba:hover { 
264  background-color: #008f83; 
265  border-color: #008f83; 
266  color: #fff; 
267
268 
269/* ========================================================= 
270   NENHUM RESULTADO 
271========================================================= */ 
272 
273.sipag-parceiros .parceiros-vazio { 
274  color: #536463; 
275  font-size: 18px; 
276  margin: 40px 0; 
277  text-align: center; 
278
279 
280@media (max-width: 1199.98px) { 
281  .sipag-parceiros > .container { 
282    max-width: 1140px; 
283
284 
285  .sipag-parceiros .btn-pill { 
286    font-size: 16px; 
287    min-height: 58px; 
288    min-width: 210px; 
289
290 
291  .sipag-parceiros .card-parceiro { 
292    min-height: 545px; 
293
294 
295  .sipag-parceiros .parceiro-logo { 
296    height: 235px; 
297
298 
299  .sipag-parceiros .parceiro-logo img { 
300    max-height: 140px; 
301    max-width: 210px; 
302
303
304 
305/* ========================================================= 
306   MODAL - FUNDO 
307========================================================= */ 
308 
309.modal-parceiro-sipag { 
310  align-items: center; 
311  background-color: rgba(0, 0, 0, .55); 
312  bottom: 0; 
313  display: flex; 
314  justify-content: center; 
315  left: 0; 
316  overflow-y: auto; 
317  padding: 14px; 
318  position: fixed; 
319  right: 0; 
320  top: 0; 
321  z-index: 11000; 
322
323 
324.modal-parceiro-sipag[hidden] { 
325  display: none !important; 
326
327 
328/* ========================================================= 
329   MODAL - CONTAINER 
330========================================================= */ 
331 
332.modal-parceiro-sipag .modal-parceiro-dialog { 
333  background-color: #fff; 
334  border-radius: 18px; 
335  box-shadow: 0 16px 45px rgba(0, 54, 65, .25); 
336  margin: auto; 
337  max-width: 1265px; 
338  overflow: hidden; 
339  width: 100%; 
340
341 
342/* ========================================================= 
343   MODAL - CABEÇALHO 
344========================================================= */ 
345 
346.modal-parceiro-sipag .modal-parceiro-header { 
347  align-items: center; 
348  border-bottom: 1px solid #dfe5e4; 
349  display: flex; 
350  justify-content: space-between; 
351  min-height: 68px; 
352  padding: 12px 38px; 
353
354 
355.modal-parceiro-sipag .modal-parceiro-header h4 { 
356  color: #00ae9d; 
357  font-size: 34px; 
358  font-weight: 700; 
359  line-height: 1.2; 
360  margin: 0; 
361
362 
363/* ========================================================= 
364   MODAL - FECHAR 
365========================================================= */ 
366 
367.modal-parceiro-sipag .close-modal { 
368  align-items: center; 
369  background-color: #fff; 
370  border: 2px solid #005461; 
371  border-radius: 50%; 
372  color: #005461; 
373  cursor: pointer; 
374  display: flex; 
375  flex: 0 0 38px; 
376  font-size: 28px; 
377  font-weight: 400; 
378  height: 38px; 
379  justify-content: center; 
380  line-height: 1; 
381  padding: 0 0 3px; 
382  transition: 
383    background-color .2s ease, 
384    color .2s ease; 
385  width: 38px; 
386
387 
388.modal-parceiro-sipag .close-modal:hover { 
389  background-color: #005461; 
390  color: #fff; 
391
392 
393.modal-parceiro-sipag .close-modal:focus { 
394  box-shadow: 0 0 0 3px rgba(0, 174, 157, .2); 
395  outline: none; 
396
397 
398/* ========================================================= 
399   MODAL - CORPO 
400========================================================= */ 
401 
402.modal-parceiro-sipag .modal-parceiro-body { 
403  max-height: calc(100vh - 100px); 
404  overflow-y: auto; 
405  padding: 24px 28px 34px; 
406
407 
408/* ========================================================= 
409   MODAL - BLOCOS 
410========================================================= */ 
411 
412.modal-parceiro-sipag .modal-bloco { 
413  border: 1px solid #00ae9d; 
414  border-radius: 9px; 
415  box-sizing: border-box; 
416  margin: 0; 
417  padding: 22px 24px; 
418
419 
420.modal-parceiro-sipag .modal-bloco h6 { 
421  color: #00ae9d; 
422  font-size: 20px; 
423  font-weight: 700; 
424  line-height: 1.3; 
425  margin: 0 0 20px; 
426
427 
428/* ========================================================= 
429   DESCRIÇÃO 
430========================================================= */ 
431 
432.modal-parceiro-sipag #modalBlocoDescricao { 
433  margin-bottom: 16px; 
434  min-height: 145px; 
435
436 
437.modal-parceiro-sipag #modalDescricao, 
438.modal-parceiro-sipag #modalDescricao p { 
439  color: #004653; 
440  font-size: 21px; 
441  line-height: 1.7; 
442
443 
444.modal-parceiro-sipag #modalDescricao p { 
445  margin: 0 0 8px; 
446
447 
448.modal-parceiro-sipag #modalDescricao p:last-child { 
449  margin-bottom: 0; 
450
451 
452/* ========================================================= 
453   GRID DO MODAL 
454========================================================= */ 
455 
456.modal-parceiro-sipag .modal-detalhes-grid { 
457  display: grid; 
458  gap: 16px 20px; 
459  grid-template-columns: repeat(2, minmax(0, 1fr)); 
460
461 
462.modal-parceiro-sipag #modalBlocoSegmentos, 
463.modal-parceiro-sipag #modalBlocoTerminais { 
464  min-height: 280px; 
465
466 
467.modal-parceiro-sipag #modalBlocoContato, 
468.modal-parceiro-sipag #modalBlocoSite { 
469  min-height: 170px; 
470
471 
472/* ========================================================= 
473   SEGMENTOS DO MODAL 
474========================================================= */ 
475 
476.modal-parceiro-sipag .modal-segmentos { 
477  align-items: flex-start; 
478  display: flex; 
479  flex-wrap: wrap; 
480  gap: 12px; 
481
482 
483.modal-parceiro-sipag .modal-segmento-tag { 
484  background-color: #fafafa; 
485  border: 1px solid #cfcfcf; 
486  border-radius: 6px; 
487  color: #5d6262; 
488  display: inline-flex; 
489  font-size: 15px; 
490  font-weight: 400; 
491  line-height: 1.2; 
492  padding: 10px 12px; 
493  text-transform: uppercase; 
494
495 
496/* ========================================================= 
497   TERMINAIS 
498========================================================= */ 
499 
500.modal-parceiro-sipag #modalTerminais, 
501.modal-parceiro-sipag #modalTerminais p { 
502  color: #004653; 
503  font-size: 21px; 
504  line-height: 1.8; 
505
506 
507.modal-parceiro-sipag #modalTerminais p { 
508  margin: 0 0 6px; 
509
510 
511.modal-parceiro-sipag #modalTerminais p:last-child { 
512  margin-bottom: 0; 
513
514 
515/* ========================================================= 
516   CONTATO 
517========================================================= */ 
518 
519.modal-parceiro-sipag #modalContato { 
520  color: #004653; 
521  font-size: 21px; 
522  line-height: 1.8; 
523
524 
525.modal-parceiro-sipag #modalContato p { 
526  color: #004653; 
527  font-size: 21px; 
528  line-height: 1.8; 
529  margin: 0; 
530
531 
532.modal-parceiro-sipag #modalContato strong { 
533  color: #004653; 
534  font-weight: 400; 
535
536 
537.modal-parceiro-sipag #modalContato a { 
538  color: #00a99d; 
539  text-decoration: none; 
540
541 
542.modal-parceiro-sipag #modalContato a:hover { 
543  text-decoration: underline; 
544
545 
546/* ========================================================= 
547   WEBSITE 
548========================================================= */ 
549 
550.modal-parceiro-sipag #modalSite { 
551  font-size: 21px; 
552  line-height: 1.7; 
553
554 
555.modal-parceiro-sipag #modalSite a { 
556  color: #00a99d; 
557  overflow-wrap: anywhere; 
558  text-decoration: none; 
559
560 
561.modal-parceiro-sipag #modalSite a:hover { 
562  text-decoration: underline; 
563
564 
565/* ========================================================= 
566   RICH TEXT 
567========================================================= */ 
568 
569.modal-parceiro-sipag .modal-bloco ul, 
570.modal-parceiro-sipag .modal-bloco ol { 
571  color: #004653; 
572  margin-bottom: 0; 
573  padding-left: 20px; 
574
575 
576.modal-parceiro-sipag .modal-bloco li { 
577  color: #004653; 
578  line-height: 1.7; 
579  margin-bottom: 5px; 
580
581 
582/* ========================================================= 
583   MOBILE 
584========================================================= */ 
585 
586@media (max-width: 767.98px) { 
587  .sipag-parceiros { 
588    padding: 28px 0 40px; 
589
590 
591  .sipag-parceiros > .container { 
592    padding-left: 15px; 
593    padding-right: 15px; 
594
595 
596  .sipag-parceiros .parceiros-filtros-area { 
597    margin-bottom: 24px; 
598
599 
600  .sipag-parceiros .parceiros-intro { 
601    font-size: 16px; 
602    margin-bottom: 18px; 
603
604 
605  .sipag-parceiros .filtros { 
606    flex-wrap: nowrap; 
607    gap: 10px; 
608    justify-content: flex-start; 
609    margin-left: -15px; 
610    margin-right: -15px; 
611    overflow-x: auto; 
612    padding: 3px 15px 12px; 
613    width: auto; 
614    -webkit-overflow-scrolling: touch; 
615
616 
617  .sipag-parceiros .filtros::-webkit-scrollbar { 
618    height: 4px; 
619
620 
621  .sipag-parceiros .filtros::-webkit-scrollbar-thumb { 
622    background-color: #b5c7c5; 
623    border-radius: 10px; 
624
625 
626  .sipag-parceiros .btn-pill { 
627    border-radius: 8px; 
628    flex: 0 0 auto; 
629    font-size: 14px; 
630    min-height: 54px; 
631    min-width: 205px; 
632    padding: 12px 16px; 
633
634 
635  .sipag-parceiros .parceiros-busca { 
636    margin-bottom: 34px; 
637
638 
639  .sipag-parceiros .parceiros-busca-campo { 
640    font-size: 16px; 
641    height: 56px; 
642    padding-left: 52px; 
643
644 
645  .sipag-parceiros .parceiros-busca-icone { 
646    height: 22px; 
647    left: 18px; 
648    width: 22px; 
649
650 
651  .sipag-parceiros .card-parceiro { 
652    border-radius: 12px; 
653    min-height: auto; 
654    padding: 20px; 
655
656 
657  .sipag-parceiros .parceiro-logo { 
658    height: 200px; 
659
660 
661  .sipag-parceiros .parceiro-logo img { 
662    max-height: 130px; 
663    max-width: 200px; 
664
665 
666  .sipag-parceiros .card-parceiro h6 { 
667    font-size: 21px; 
668
669 
670  .sipag-parceiros .parceiro-segmento { 
671    font-size: 14px; 
672
673 
674  .sipag-parceiros .parceiro-acoes { 
675    flex-direction: column; 
676
677 
678  .sipag-parceiros .btn-parceiro { 
679    font-size: 17px; 
680    min-height: 54px; 
681    width: 100%; 
682
683 
684  .modal-parceiro-sipag { 
685    align-items: flex-end; 
686    padding: 0; 
687
688 
689  .modal-parceiro-sipag .modal-parceiro-dialog { 
690    border-radius: 16px 16px 0 0; 
691    max-height: 95vh; 
692
693 
694  .modal-parceiro-sipag .modal-parceiro-header { 
695    min-height: 65px; 
696    padding: 14px 20px; 
697
698 
699  .modal-parceiro-sipag .modal-parceiro-header h4 { 
700    font-size: 24px; 
701
702 
703  .modal-parceiro-sipag .close-modal { 
704    flex: 0 0 36px; 
705    height: 36px; 
706    width: 36px; 
707
708 
709  .modal-parceiro-sipag .modal-parceiro-body { 
710    max-height: calc(95vh - 65px); 
711    padding: 18px 15px 25px; 
712
713 
714  .modal-parceiro-sipag .modal-detalhes-grid { 
715    grid-template-columns: 1fr; 
716
717 
718  .modal-parceiro-sipag .modal-bloco { 
719    min-height: auto !important; 
720    padding: 20px; 
721
722 
723  .modal-parceiro-sipag #modalBlocoDescricao { 
724    min-height: auto; 
725
726 
727  .modal-parceiro-sipag .modal-bloco h6 { 
728    margin-bottom: 15px; 
729
730
731</style> 
732 
733<div class="col-12 px-0"> 
734  <section class="sipag-parceiros" id="sipag-parceiros"> 
735 
736<div class="container"> 
737 
738  <!-- ===================================================== 
739       FILTROS 
740  ====================================================== --> 
741 
742  <div 
743    class="parceiros-filtros-area" 
744    id="parceiros-filtros-area" 
745
746 
747<p class="parceiros-intro"> 
748  Filtre abaixo os segmentos que deseja visualizar: 
749</p> 
750 
751<div 
752  aria-label="Filtrar parceiros por segmento" 
753  class="filtros" 
754  id="filtros-parceiros" 
755  role="group" 
756></div> 
757 
758  </div> 
759 
760  <!-- ===================================================== 
761       BUSCA 
762  ====================================================== --> 
763 
764  <div class="parceiros-busca" role="search"> 
765 
766<label 
767  class="sr-only" 
768  for="busca-parceiros" 
769
770  Pesquisar parceiros por nome ou categoria 
771</label> 
772 
773<svg 
774  aria-hidden="true" 
775  class="parceiros-busca-icone" 
776  fill="none" 
777  viewBox="0 0 24 24" 
778
779  <circle 
780    cx="11" 
781    cy="11" 
782    r="7" 
783    stroke="currentColor" 
784    stroke-width="2" 
785  ></circle> 
786 
787  <path 
788    d="M16 16L21 21" 
789    stroke="currentColor" 
790    stroke-linecap="round" 
791    stroke-width="2" 
792  ></path> 
793</svg> 
794 
795<input 
796  autocomplete="off" 
797  class="parceiros-busca-campo" 
798  id="busca-parceiros" 
799  placeholder="Pesquise por nome do anexo ou categoria" 
800  type="search" 
801/> 
802 
803  </div> 
804 
805  <!-- ===================================================== 
806       GRID DE PARCEIROS 
807  ====================================================== --> 
808 
809  <div class="row" id="grid-parceiros"> 
810 
811<#list Fieldset67243883.getSiblings() as parceiro> 
812 
813  <#assign nome = parceiro.Text51037391.getData()!"" /> 
814  <#assign segmentos = parceiro.CheckboxMultiple15617005.getData()!"" /> 
815  <#assign site = parceiro.Text51612886.getData()!"" /> 
816 
817  <#assign siteUrl = site /> 
818 
819  <#if site?has_content 
820    && !site?starts_with("http://") 
821    && !site?starts_with("https://")> 
822 
823    <#assign siteUrl = "https://" + site /> 
824 
825  </#if> 
826 
827 
828  <div 
829    class="col-sm-6 col-lg-4 col-xl-3 mb-4 parceiro" 
830    data-category="${segmentos?html}" 
831    data-name="${nome?html}" 
832
833 
834    <div class="card-parceiro"> 
835 
836      <!-- LOGO --> 
837      <div class="parceiro-logo"> 
838 
839        <#if parceiro.Image82450298.getData()?? 
840          && parceiro.Image82450298.getData() != ""> 
841 
842          <img 
843            alt="${nome?html}" 
844            class="img-fluid" 
845            loading="lazy" 
846            src="${parceiro.Image82450298.getData()}" 
847          /> 
848 
849        </#if> 
850 
851      </div> 
852 
853 
854      <!-- NOME --> 
855      <h6> 
856        ${nome?html} 
857      </h6> 
858 
859 
860      <!-- SEGMENTOS --> 
861      <p class="parceiro-segmento js-segmento-card"></p> 
862 
863 
864      <!-- AÇÕES --> 
865      <div class="parceiro-acoes"> 
866 
867        <#if site?has_content> 
868 
869          <a 
870            class="btn-parceiro btn-site" 
871            href="${siteUrl?html}" 
872            rel="noopener noreferrer" 
873            target="_blank" 
874
875            Acessar site 
876          </a> 
877 
878        </#if> 
879 
880 
881        <button 
882          class="btn-parceiro btn-saiba btn-modal" 
883          type="button" 
884
885          Saiba mais 
886        </button> 
887 
888      </div> 
889 
890 
891      <!-- ================================================= 
892           DADOS UTILIZADOS PELO MODAL 
893      ================================================== --> 
894 
895      <div 
896        aria-hidden="true" 
897        class="parceiro-dados d-none" 
898
899 
900        <span class="js-nome"> 
901          ${nome?html} 
902        </span> 
903 
904 
905        <span class="js-segmentos"> 
906          ${segmentos?html} 
907        </span> 
908 
909 
910        <div class="js-descricao"> 
911 
912<#if (Fieldset67243883.RichText77766022.getData())??> 
913${Fieldset67243883.RichText77766022.getData()} 
914</#if> 
915</div> 
916 
917        <div class="js-terminais"> 
918 
919<#if (Fieldset67243883.RichText36172897.getData())??> 
920${Fieldset67243883.RichText36172897.getData()} 
921</#if> 
922</div> 
923 
924        <span class="js-email"> 
925          <#if parceiro.Text26526715.getData()??> 
926            ${parceiro.Text26526715.getData()?html} 
927          </#if> 
928        </span> 
929 
930 
931        <span class="js-whatsapp"> 
932          <#if parceiro.Campo12763757.getData()??> 
933            ${parceiro.Campo12763757.getData()?html} 
934          </#if> 
935        </span> 
936 
937 
938        <span class="js-instagram"> 
939          <#if parceiro.Campo47414182.getData()??> 
940            ${parceiro.Campo47414182.getData()?html} 
941          </#if> 
942        </span> 
943 
944 
945        <span class="js-site"> 
946          ${site?html} 
947        </span> 
948 
949      </div> 
950 
951    </div> 
952 
953  </div> 
954 
955</#list> 
956 
957  </div> 
958 
959  <!-- ===================================================== 
960       SEM RESULTADO 
961  ====================================================== --> 
962 
963  <p 
964    aria-live="polite" 
965    class="parceiros-vazio" 
966    hidden 
967    id="parceiros-vazio" 
968    role="status" 
969
970    Nenhum parceiro encontrado. 
971  </p> 
972 
973</div> 
974 
975<!-- ===================================================== 
976     MODAL 
977====================================================== --> 
978 
979<div 
980  aria-labelledby="modalParceiroTitulo" 
981  aria-modal="true" 
982  class="modal-parceiro-sipag" 
983  hidden 
984  id="modalParceiro" 
985  role="dialog" 
986
987 
988  <div class="modal-parceiro-dialog"> 
989 
990<!-- CABEÇALHO --> 
991<div class="modal-parceiro-header"> 
992 
993  <h4 id="modalParceiroTitulo"></h4> 
994 
995  <button 
996    aria-label="Fechar modal" 
997    class="close-modal" 
998    type="button" 
999
1000    &times; 
1001  </button> 
1002 
1003</div> 
1004 
1005 
1006<!-- CORPO --> 
1007<div class="modal-parceiro-body"> 
1008 
1009  <!-- DESCRIÇÃO --> 
1010  <div 
1011    class="modal-bloco" 
1012    id="modalBlocoDescricao" 
1013
1014 
1015    <h6>Descrição</h6> 
1016 
1017    <div id="modalDescricao"></div> 
1018 
1019  </div> 
1020 
1021 
1022  <!-- GRID 2x2 --> 
1023  <div class="modal-detalhes-grid"> 
1024 
1025    <!-- SEGMENTOS --> 
1026    <div 
1027      class="modal-bloco" 
1028      id="modalBlocoSegmentos" 
1029
1030 
1031      <h6>Segmentos atendidos</h6> 
1032 
1033      <div 
1034        class="modal-segmentos" 
1035        id="modalSegmentos" 
1036      ></div> 
1037 
1038    </div> 
1039 
1040 
1041    <!-- TERMINAIS --> 
1042    <div 
1043      class="modal-bloco" 
1044      id="modalBlocoTerminais" 
1045
1046 
1047      <h6>Terminais habilitados</h6> 
1048 
1049      <div id="modalTerminais"></div> 
1050 
1051    </div> 
1052 
1053 
1054    <!-- CONTATO --> 
1055    <div 
1056      class="modal-bloco" 
1057      id="modalBlocoContato" 
1058
1059 
1060      <h6>Informações e contato</h6> 
1061 
1062      <div id="modalContato"></div> 
1063 
1064    </div> 
1065 
1066 
1067    <!-- WEBSITE --> 
1068    <div 
1069      class="modal-bloco" 
1070      id="modalBlocoSite" 
1071
1072 
1073      <h6>Website</h6> 
1074 
1075      <div id="modalSite"></div> 
1076 
1077    </div> 
1078 
1079  </div> 
1080 
1081</div> 
1082 
1083  </div> 
1084 
1085</div> 
1086 
1087  </section> 
1088</div> 
1089 
1090<script> 
1091(function () { 
1092 
1093  var componente = document.getElementById("sipag-parceiros"); 
1094 
1095  if (!componente) { 
1096    return; 
1097
1098 
1099 
1100  if ( 
1101    componente.getAttribute( 
1102      "data-inicializado" 
1103    ) === "true" 
1104  ) { 
1105    return; 
1106
1107 
1108 
1109  componente.setAttribute( 
1110    "data-inicializado", 
1111    "true" 
1112  ); 
1113 
1114 
1115  /* ========================================================= 
1116     ELEMENTOS 
1117  ========================================================= */ 
1118 
1119  var busca = 
1120    componente.querySelector( 
1121      "#busca-parceiros" 
1122    ); 
1123 
1124  var filtrosContainer = 
1125    componente.querySelector( 
1126      "#filtros-parceiros" 
1127    ); 
1128 
1129  var filtrosArea = 
1130    componente.querySelector( 
1131      "#parceiros-filtros-area" 
1132    ); 
1133 
1134  var parceiros = 
1135    componente.querySelectorAll( 
1136      ".parceiro" 
1137    ); 
1138 
1139  var mensagemVazia = 
1140    componente.querySelector( 
1141      "#parceiros-vazio" 
1142    ); 
1143 
1144 
1145  var filtroAtual = "all"; 
1146 
1147 
1148  /* ========================================================= 
1149     NORMALIZA TEXTO 
1150  ========================================================= */ 
1151 
1152  function normalizarTexto(texto) { 
1153 
1154    var valor = 
1155      (texto || "") 
1156        .toString() 
1157        .toLowerCase(); 
1158 
1159 
1160    if (valor.normalize) { 
1161 
1162      valor = valor 
1163        .normalize("NFD") 
1164        .replace( 
1165          /[\u0300-\u036f]/g, 
1166          "" 
1167        ); 
1168 
1169
1170 
1171 
1172    return valor 
1173      .replace( 
1174        /[^a-z0-9]+/g, 
1175        " " 
1176
1177      .trim(); 
1178 
1179
1180 
1181 
1182  /* ========================================================= 
1183     OBTÉM SEGMENTOS 
1184 
1185     Suporta: 
1186     ["varejo","servicos"] 
1187 
1188     varejo,servicos 
1189 
1190     varejo;servicos 
1191  ========================================================= */ 
1192 
1193  function obterSegmentos(valor) { 
1194 
1195    if (!valor) { 
1196      return []; 
1197
1198 
1199 
1200    var texto = 
1201      valor.toString().trim(); 
1202 
1203 
1204    if (!texto) { 
1205      return []; 
1206
1207 
1208 
1209    /* 
1210     * Tenta JSON primeiro. 
1211     */ 
1212    try { 
1213 
1214      var json = 
1215        JSON.parse(texto); 
1216 
1217 
1218      if (Array.isArray(json)) { 
1219 
1220        return json 
1221          .map(function (item) { 
1222 
1223            return item 
1224              .toString() 
1225              .trim(); 
1226 
1227          }) 
1228          .filter(Boolean); 
1229 
1230
1231 
1232    } catch (erro) { 
1233      /* segue normalmente */ 
1234
1235 
1236 
1237    texto = texto 
1238      .replace(/^\[/, "") 
1239      .replace(/\]$/, "") 
1240      .replace(/"/g, "") 
1241      .replace(/'/g, ""); 
1242 
1243 
1244    return texto 
1245      .split(/[,;|]+/) 
1246      .map(function (item) { 
1247 
1248        return item.trim(); 
1249 
1250      }) 
1251      .filter(Boolean); 
1252 
1253
1254 
1255 
1256  /* ========================================================= 
1257     CHAVE CANÔNICA DO SEGMENTO 
1258  ========================================================= */ 
1259 
1260  function obterChaveSegmento(segmento) { 
1261 
1262    var chave = 
1263      normalizarTexto(segmento); 
1264 
1265 
1266    if ( 
1267      chave.indexOf("alimentacao") !== -1 || 
1268      chave.indexOf("bares restaurantes") !== -1 
1269    ) { 
1270      return "alimentacao"; 
1271
1272 
1273    if (chave.indexOf("evento") !== -1) { 
1274      return "eventos"; 
1275
1276 
1277    if (chave.indexOf("industr") !== -1) { 
1278      return "industria"; 
1279
1280 
1281    if ( 
1282      chave.indexOf("posto") !== -1 && 
1283      chave.indexOf("combust") !== -1 
1284    ) { 
1285      return "postos"; 
1286
1287 
1288    if (chave.indexOf("saude") !== -1) { 
1289      return "saude"; 
1290
1291 
1292    if (chave.indexOf("servico") !== -1) { 
1293      return "servicos"; 
1294
1295 
1296    if (chave.indexOf("varejo") !== -1) { 
1297      return "varejo"; 
1298
1299 
1300 
1301    return chave; 
1302 
1303
1304 
1305 
1306  /* ========================================================= 
1307     LABEL DO FILTRO 
1308  ========================================================= */ 
1309 
1310  function obterLabelFiltroSegmento(chave, segmentoOriginal) { 
1311 
1312    var labels = { 
1313      "alimentacao": "ALIMENTAÇÃO", 
1314      "eventos": "EVENTOS", 
1315      "industria": "INDÚSTRIA", 
1316      "postos": "POSTOS DE COMBUSTÍVEIS", 
1317      "saude": "SAÚDE", 
1318      "servicos": "SERVIÇOS", 
1319      "varejo": "VAREJO" 
1320    }; 
1321 
1322 
1323    if (labels[chave]) { 
1324      return labels[chave]; 
1325
1326 
1327 
1328    return (segmentoOriginal || "") 
1329      .toString() 
1330      .trim() 
1331      .toUpperCase(); 
1332 
1333
1334 
1335 
1336  /* ========================================================= 
1337     NOME VISUAL DO SEGMENTO NO CARD / MODAL 
1338  ========================================================= */ 
1339 
1340  function obterLabelSegmento(segmento) { 
1341 
1342    var chave = 
1343      normalizarTexto(segmento); 
1344 
1345 
1346    var labels = { 
1347      "alimentacao": "Alimentação (Bares, Restaurantes e Lanchonetes)", 
1348      "alimentacao bares restaurantes e lanchonetes": 
1349        "Alimentação (Bares, Restaurantes e Lanchonetes)", 
1350      "bares restaurantes e lanchonetes": 
1351        "Alimentação (Bares, Restaurantes e Lanchonetes)", 
1352      "eventos": "Eventos", 
1353      "industria": "Indústria", 
1354			"posto": "Postos de Combustíveis", 
1355      "postos": "Postos de Combustíveis", 
1356      "posto de combustivel": "Postos de Combustíveis", 
1357      "postos de combustivel": "Postos de Combustíveis", 
1358      "postos de combustiveis": "Postos de Combustíveis", 
1359      "saude": "Saúde", 
1360      "servicos": "Serviços", 
1361      "varejo": "Varejo" 
1362    }; 
1363 
1364 
1365    if (labels[chave]) { 
1366      return labels[chave]; 
1367
1368 
1369 
1370    return segmento 
1371      .toString() 
1372      .trim(); 
1373 
1374
1375 
1376 
1377  /* ========================================================= 
1378     FORMATA OS SEGMENTOS NOS CARDS 
1379  ========================================================= */ 
1380 
1381  function formatarListaSegmentos(lista) { 
1382 
1383    if (!lista.length) { 
1384      return ""; 
1385
1386 
1387    if (lista.length === 1) { 
1388      return lista[0]; 
1389
1390 
1391    if (lista.length === 2) { 
1392      return lista[0] + " e " + lista[1]; 
1393
1394 
1395 
1396    return ( 
1397      lista.slice(0, -1).join(", ") + 
1398      " e " + 
1399      lista[lista.length - 1] 
1400    ); 
1401 
1402
1403 
1404 
1405  function formatarSegmentosCards() { 
1406 
1407    parceiros.forEach( 
1408      function (parceiro) { 
1409 
1410        var campo = 
1411          parceiro.querySelector( 
1412            ".js-segmento-card" 
1413          ); 
1414 
1415 
1416        if (!campo) { 
1417          return; 
1418
1419 
1420 
1421        var segmentos = 
1422          obterSegmentos( 
1423            parceiro.getAttribute( 
1424              "data-category" 
1425
1426          ); 
1427 
1428 
1429        var labels = 
1430          segmentos.map(function (segmento) { 
1431 
1432            return obterLabelSegmento( 
1433              segmento 
1434            ); 
1435 
1436          }); 
1437 
1438 
1439        campo.textContent = 
1440          formatarListaSegmentos(labels); 
1441 
1442
1443    ); 
1444 
1445
1446 
1447 
1448  /* ========================================================= 
1449     CRIAR FILTROS AUTOMATICAMENTE 
1450 
1451     SOMENTE SEGMENTOS USADOS 
1452  ========================================================= */ 
1453 
1454  function gerarFiltros() { 
1455 
1456    if (!filtrosContainer) { 
1457      return; 
1458
1459 
1460 
1461    var segmentosUsados = {}; 
1462 
1463 
1464    parceiros.forEach( 
1465      function (parceiro) { 
1466 
1467        var categorias = 
1468          obterSegmentos( 
1469            parceiro.getAttribute( 
1470              "data-category" 
1471
1472          ); 
1473 
1474 
1475        categorias.forEach( 
1476          function (categoria) { 
1477 
1478            var chave = 
1479              obterChaveSegmento( 
1480                categoria 
1481              ); 
1482 
1483 
1484            if (!chave) { 
1485              return; 
1486
1487 
1488 
1489            if ( 
1490              !segmentosUsados[chave] 
1491            ) { 
1492 
1493              segmentosUsados[chave] = { 
1494                chave: chave, 
1495                valor: categoria, 
1496                label: 
1497                  obterLabelFiltroSegmento( 
1498                    chave, 
1499                    categoria 
1500
1501              }; 
1502 
1503
1504 
1505
1506        ); 
1507 
1508
1509    ); 
1510 
1511 
1512    while ( 
1513      filtrosContainer.firstChild 
1514    ) { 
1515 
1516      filtrosContainer.removeChild( 
1517        filtrosContainer.firstChild 
1518      ); 
1519 
1520
1521 
1522 
1523    var segmentos = 
1524      Object.keys( 
1525        segmentosUsados 
1526
1527      .map(function (chave) { 
1528 
1529        return segmentosUsados[ 
1530          chave 
1531        ]; 
1532 
1533      }); 
1534 
1535 
1536    if (!segmentos.length) { 
1537 
1538      if (filtrosArea) { 
1539 
1540        filtrosArea.style.display = 
1541          "none"; 
1542 
1543
1544 
1545      return; 
1546 
1547
1548 
1549 
1550    if (filtrosArea) { 
1551 
1552      filtrosArea.style.display = ""; 
1553 
1554
1555 
1556 
1557    /* TODOS */ 
1558    var botaoTodos = 
1559      document.createElement( 
1560        "button" 
1561      ); 
1562 
1563 
1564    botaoTodos.type = "button"; 
1565 
1566    botaoTodos.className = 
1567      "btn btn-pill active"; 
1568 
1569    botaoTodos.setAttribute( 
1570      "data-filter", 
1571      "all" 
1572    ); 
1573 
1574    botaoTodos.setAttribute( 
1575      "aria-pressed", 
1576      "true" 
1577    ); 
1578 
1579 
1580    botaoTodos.appendChild( 
1581      document.createTextNode( 
1582        "TODOS OS SEGMENTOS" 
1583
1584    ); 
1585 
1586 
1587    filtrosContainer.appendChild( 
1588      botaoTodos 
1589    ); 
1590 
1591 
1592    /* ORDEM ALFABÉTICA */ 
1593    segmentos.sort( 
1594      function (a, b) { 
1595 
1596        return a.label.localeCompare( 
1597          b.label, 
1598          "pt-BR" 
1599        ); 
1600 
1601
1602    ); 
1603 
1604 
1605    /* CRIA SOMENTE OS USADOS */ 
1606    segmentos.forEach( 
1607      function (segmento) { 
1608 
1609        var botao = 
1610          document.createElement( 
1611            "button" 
1612          ); 
1613 
1614 
1615        botao.type = "button"; 
1616 
1617        botao.className = 
1618          "btn btn-pill"; 
1619 
1620        botao.setAttribute( 
1621          "data-filter", 
1622          segmento.chave 
1623        ); 
1624 
1625        botao.setAttribute( 
1626          "aria-pressed", 
1627          "false" 
1628        ); 
1629 
1630 
1631        botao.appendChild( 
1632          document.createTextNode( 
1633            segmento.label 
1634
1635        ); 
1636 
1637 
1638        filtrosContainer.appendChild( 
1639          botao 
1640        ); 
1641 
1642
1643    ); 
1644 
1645
1646 
1647 
1648  /* ========================================================= 
1649     FILTRAR PARCEIROS 
1650  ========================================================= */ 
1651 
1652  function filtrarParceiros() { 
1653 
1654    var termo = 
1655      normalizarTexto( 
1656        busca ? 
1657          busca.value : 
1658          "" 
1659      ); 
1660 
1661 
1662    var quantidadeVisivel = 0; 
1663 
1664 
1665    parceiros.forEach( 
1666      function (parceiro) { 
1667 
1668        var nome = 
1669          normalizarTexto( 
1670            parceiro.getAttribute( 
1671              "data-name" 
1672
1673          ); 
1674 
1675 
1676        var segmentos = 
1677          obterSegmentos( 
1678            parceiro.getAttribute( 
1679              "data-category" 
1680
1681          ); 
1682 
1683 
1684        var categoriasNormalizadas = 
1685          segmentos.map( 
1686            function (item) { 
1687 
1688              return obterChaveSegmento( 
1689                item 
1690              ); 
1691 
1692
1693          ); 
1694 
1695 
1696        var textoCategorias = 
1697          segmentos 
1698            .map(function (item) { 
1699 
1700              return normalizarTexto( 
1701                item + " " + 
1702                obterLabelSegmento(item) 
1703              ); 
1704 
1705            }) 
1706            .join(" "); 
1707 
1708 
1709        /* BUSCA */ 
1710        var atendeBusca = 
1711          !termo || 
1712          nome.indexOf(termo) !== -1 || 
1713          textoCategorias.indexOf( 
1714            termo 
1715          ) !== -1; 
1716 
1717 
1718        /* FILTRO */ 
1719        var atendeFiltro = 
1720          filtroAtual === "all" || 
1721          categoriasNormalizadas 
1722            .indexOf( 
1723              filtroAtual 
1724            ) !== -1; 
1725 
1726 
1727        var exibir = 
1728          atendeBusca && 
1729          atendeFiltro; 
1730 
1731 
1732        parceiro.style.display = 
1733          exibir ? "" : "none"; 
1734 
1735 
1736        if (exibir) { 
1737          quantidadeVisivel++; 
1738
1739 
1740
1741    ); 
1742 
1743 
1744    if (mensagemVazia) { 
1745 
1746      mensagemVazia.hidden = 
1747        quantidadeVisivel !== 0; 
1748 
1749
1750 
1751
1752 
1753 
1754  /* ========================================================= 
1755     EVENTO FILTROS 
1756  ========================================================= */ 
1757 
1758  if (filtrosContainer) { 
1759 
1760    filtrosContainer.addEventListener( 
1761      "click", 
1762      function (event) { 
1763 
1764        var botao = 
1765          event.target.closest( 
1766            ".btn-pill[data-filter]" 
1767          ); 
1768 
1769 
1770        if (!botao) { 
1771          return; 
1772
1773 
1774 
1775        filtroAtual = 
1776          botao.getAttribute( 
1777            "data-filter" 
1778          ) || "all"; 
1779 
1780 
1781        var botoes = 
1782          filtrosContainer 
1783            .querySelectorAll( 
1784              ".btn-pill" 
1785            ); 
1786 
1787 
1788        botoes.forEach( 
1789          function (item) { 
1790 
1791            item.classList.remove( 
1792              "active" 
1793            ); 
1794 
1795            item.setAttribute( 
1796              "aria-pressed", 
1797              "false" 
1798            ); 
1799 
1800
1801        ); 
1802 
1803 
1804        botao.classList.add( 
1805          "active" 
1806        ); 
1807 
1808        botao.setAttribute( 
1809          "aria-pressed", 
1810          "true" 
1811        ); 
1812 
1813 
1814        filtrarParceiros(); 
1815 
1816
1817    ); 
1818 
1819
1820 
1821 
1822  /* ========================================================= 
1823     EVENTO BUSCA 
1824  ========================================================= */ 
1825 
1826  if (busca) { 
1827 
1828    busca.addEventListener( 
1829      "input", 
1830      filtrarParceiros 
1831    ); 
1832 
1833
1834 
1835 
1836  /* ========================================================= 
1837     ELEMENTOS MODAL 
1838  ========================================================= */ 
1839 
1840  var modal = 
1841    componente.querySelector( 
1842      "#modalParceiro" 
1843    ); 
1844 
1845  var tituloModal = 
1846    componente.querySelector( 
1847      "#modalParceiroTitulo" 
1848    ); 
1849 
1850  var modalDescricao = 
1851    componente.querySelector( 
1852      "#modalDescricao" 
1853    ); 
1854 
1855  var modalSegmentos = 
1856    componente.querySelector( 
1857      "#modalSegmentos" 
1858    ); 
1859 
1860  var modalTerminais = 
1861    componente.querySelector( 
1862      "#modalTerminais" 
1863    ); 
1864 
1865  var modalContato = 
1866    componente.querySelector( 
1867      "#modalContato" 
1868    ); 
1869 
1870  var modalSite = 
1871    componente.querySelector( 
1872      "#modalSite" 
1873    ); 
1874 
1875 
1876  var blocoDescricao = 
1877    componente.querySelector( 
1878      "#modalBlocoDescricao" 
1879    ); 
1880 
1881  var blocoSegmentos = 
1882    componente.querySelector( 
1883      "#modalBlocoSegmentos" 
1884    ); 
1885 
1886  var blocoTerminais = 
1887    componente.querySelector( 
1888      "#modalBlocoTerminais" 
1889    ); 
1890 
1891  var blocoContato = 
1892    componente.querySelector( 
1893      "#modalBlocoContato" 
1894    ); 
1895 
1896  var blocoSite = 
1897    componente.querySelector( 
1898      "#modalBlocoSite" 
1899    ); 
1900 
1901 
1902  var elementoFocoAnterior = null; 
1903  var overflowAnterior = ""; 
1904 
1905 
1906  /* ========================================================= 
1907     LIMPAR ELEMENTO 
1908  ========================================================= */ 
1909 
1910  function limparElemento(elemento) { 
1911 
1912    if (!elemento) { 
1913      return; 
1914
1915 
1916 
1917    while (elemento.firstChild) { 
1918 
1919      elemento.removeChild( 
1920        elemento.firstChild 
1921      ); 
1922 
1923
1924 
1925
1926 
1927 
1928  /* ========================================================= 
1929     COPIA RICH TEXT 
1930 
1931     NÃO USA innerHTML 
1932  ========================================================= */ 
1933 
1934  function copiarConteudo( 
1935    origem, 
1936    destino 
1937  ) { 
1938 
1939    limparElemento(destino); 
1940 
1941 
1942    if ( 
1943      !origem || 
1944      !destino 
1945    ) { 
1946      return false; 
1947
1948 
1949 
1950    var possuiConteudo = 
1951      origem.textContent.trim() !== "" || 
1952      origem.children.length > 0; 
1953 
1954 
1955    if (!possuiConteudo) { 
1956      return false; 
1957
1958 
1959 
1960    Array.prototype.slice 
1961      .call( 
1962        origem.childNodes 
1963
1964      .forEach( 
1965        function (node) { 
1966 
1967          destino.appendChild( 
1968            node.cloneNode(true) 
1969          ); 
1970 
1971
1972      ); 
1973 
1974 
1975    return true; 
1976 
1977
1978 
1979 
1980  /* ========================================================= 
1981     CRIAR LINK 
1982  ========================================================= */ 
1983 
1984  function criarLink( 
1985    texto, 
1986    href, 
1987    target 
1988  ) { 
1989 
1990    var link = 
1991      document.createElement("a"); 
1992 
1993 
1994    link.href = href; 
1995 
1996 
1997    link.appendChild( 
1998      document.createTextNode( 
1999        texto 
2000
2001    ); 
2002 
2003 
2004    if (target) { 
2005 
2006      link.target = target; 
2007 
2008      link.rel = 
2009        "noopener noreferrer"; 
2010 
2011
2012 
2013 
2014    return link; 
2015 
2016
2017 
2018 
2019  /* ========================================================= 
2020     URL WHATSAPP 
2021  ========================================================= */ 
2022 
2023  function criarUrlWhatsApp( 
2024    numero 
2025  ) { 
2026 
2027    var numeroLimpo = 
2028      (numero || "") 
2029        .replace(/\D/g, ""); 
2030 
2031 
2032    if (!numeroLimpo) { 
2033      return ""; 
2034
2035 
2036 
2037    if ( 
2038      numeroLimpo.indexOf("55") !== 0 
2039    ) { 
2040 
2041      numeroLimpo = 
2042        "55" + numeroLimpo; 
2043 
2044
2045 
2046 
2047    return ( 
2048      "https://wa.me/" + 
2049      numeroLimpo 
2050    ); 
2051 
2052
2053 
2054 
2055  /* ========================================================= 
2056     URL INSTAGRAM 
2057  ========================================================= */ 
2058 
2059  function criarUrlInstagram( 
2060    instagram 
2061  ) { 
2062 
2063    var valor = 
2064      (instagram || "") 
2065        .trim(); 
2066 
2067 
2068    if (!valor) { 
2069      return ""; 
2070
2071 
2072 
2073    if ( 
2074      valor.indexOf( 
2075        "http://" 
2076      ) === 0 || 
2077      valor.indexOf( 
2078        "https://" 
2079      ) === 0 
2080    ) { 
2081 
2082      return valor; 
2083 
2084
2085 
2086 
2087    valor = valor 
2088      .replace(/^@/, "") 
2089      .replace(/^www\./, "") 
2090      .replace( 
2091        /^instagram\.com\//, 
2092        "" 
2093      ); 
2094 
2095 
2096    return ( 
2097      "https://instagram.com/" + 
2098      valor 
2099    ); 
2100 
2101
2102 
2103 
2104  /* ========================================================= 
2105     URL SITE 
2106  ========================================================= */ 
2107 
2108  function criarUrlSite(site) { 
2109 
2110    var valor = 
2111      (site || "").trim(); 
2112 
2113 
2114    if (!valor) { 
2115      return ""; 
2116
2117 
2118 
2119    if ( 
2120      valor.indexOf( 
2121        "http://" 
2122      ) === 0 || 
2123      valor.indexOf( 
2124        "https://" 
2125      ) === 0 
2126    ) { 
2127 
2128      return valor; 
2129 
2130
2131 
2132 
2133    return ( 
2134      "https://" + valor 
2135    ); 
2136 
2137
2138 
2139 
2140  /* ========================================================= 
2141     ADICIONAR CONTATO 
2142  ========================================================= */ 
2143 
2144  function adicionarContato( 
2145    titulo, 
2146    texto, 
2147    href, 
2148    novaAba 
2149  ) { 
2150 
2151    if (!texto) { 
2152      return false; 
2153
2154 
2155 
2156    var p = 
2157      document.createElement("p"); 
2158 
2159 
2160    p.appendChild( 
2161      document.createTextNode( 
2162        titulo + ": " 
2163
2164    ); 
2165 
2166 
2167    if (href) { 
2168 
2169      p.appendChild( 
2170        criarLink( 
2171          texto, 
2172          href, 
2173          novaAba ? 
2174            "_blank" : 
2175            "" 
2176
2177      ); 
2178 
2179    } else { 
2180 
2181      p.appendChild( 
2182        document.createTextNode( 
2183          texto 
2184
2185      ); 
2186 
2187
2188 
2189 
2190    modalContato.appendChild(p); 
2191 
2192 
2193    return true; 
2194 
2195
2196 
2197 
2198  /* ========================================================= 
2199     SEGMENTOS DO MODAL 
2200  ========================================================= */ 
2201 
2202  function montarSegmentosModal( 
2203    valor 
2204  ) { 
2205 
2206    limparElemento( 
2207      modalSegmentos 
2208    ); 
2209 
2210 
2211    var segmentos = 
2212      obterSegmentos(valor); 
2213 
2214 
2215    if (!segmentos.length) { 
2216      return false; 
2217
2218 
2219 
2220    segmentos.forEach( 
2221      function (segmento) { 
2222 
2223        var span = 
2224          document.createElement( 
2225            "span" 
2226          ); 
2227 
2228 
2229        span.className = 
2230          "modal-segmento-tag"; 
2231 
2232 
2233        span.appendChild( 
2234          document.createTextNode( 
2235            obterLabelSegmento( 
2236              segmento 
2237
2238
2239        ); 
2240 
2241 
2242        modalSegmentos 
2243          .appendChild(span); 
2244 
2245
2246    ); 
2247 
2248 
2249    return true; 
2250 
2251
2252 
2253 
2254  /* ========================================================= 
2255     ABRIR MODAL 
2256  ========================================================= */ 
2257 
2258  function abrirModal(botao) { 
2259 
2260    if (!modal) { 
2261      return; 
2262
2263 
2264 
2265    var parceiro = 
2266      botao.closest( 
2267        ".parceiro" 
2268      ); 
2269 
2270 
2271    if (!parceiro) { 
2272      return; 
2273
2274 
2275 
2276    var dados = 
2277      parceiro.querySelector( 
2278        ".parceiro-dados" 
2279      ); 
2280 
2281 
2282    if (!dados) { 
2283      return; 
2284
2285 
2286 
2287    /* ====================== 
2288       NOME 
2289    ====================== */ 
2290 
2291    var nome = 
2292      dados.querySelector( 
2293        ".js-nome" 
2294      ); 
2295 
2296 
2297    tituloModal.textContent = 
2298      nome ? 
2299        nome.textContent.trim() : 
2300        ""; 
2301 
2302 
2303    /* ====================== 
2304       DESCRIÇÃO 
2305    ====================== */ 
2306 
2307    var descricao = 
2308      dados.querySelector( 
2309        ".js-descricao" 
2310      ); 
2311 
2312 
2313    blocoDescricao.hidden = 
2314      !copiarConteudo( 
2315        descricao, 
2316        modalDescricao 
2317      ); 
2318 
2319 
2320    /* ====================== 
2321       SEGMENTOS 
2322    ====================== */ 
2323 
2324    var segmentos = 
2325      dados.querySelector( 
2326        ".js-segmentos" 
2327      ); 
2328 
2329 
2330    blocoSegmentos.hidden = 
2331      !montarSegmentosModal( 
2332        segmentos ? 
2333          segmentos 
2334            .textContent 
2335            .trim() : 
2336          "" 
2337      ); 
2338 
2339 
2340    /* ====================== 
2341       TERMINAIS 
2342    ====================== */ 
2343 
2344    var terminais = 
2345      dados.querySelector( 
2346        ".js-terminais" 
2347      ); 
2348 
2349 
2350    blocoTerminais.hidden = 
2351      !copiarConteudo( 
2352        terminais, 
2353        modalTerminais 
2354      ); 
2355 
2356 
2357    /* ====================== 
2358       CONTATO 
2359    ====================== */ 
2360 
2361    limparElemento( 
2362      modalContato 
2363    ); 
2364 
2365 
2366    var emailElemento = 
2367      dados.querySelector( 
2368        ".js-email" 
2369      ); 
2370 
2371    var whatsappElemento = 
2372      dados.querySelector( 
2373        ".js-whatsapp" 
2374      ); 
2375 
2376    var instagramElemento = 
2377      dados.querySelector( 
2378        ".js-instagram" 
2379      ); 
2380 
2381 
2382    var email = 
2383      emailElemento ? 
2384        emailElemento 
2385          .textContent 
2386          .trim() : 
2387        ""; 
2388 
2389 
2390    var whatsapp = 
2391      whatsappElemento ? 
2392        whatsappElemento 
2393          .textContent 
2394          .trim() : 
2395        ""; 
2396 
2397 
2398    var instagram = 
2399      instagramElemento ? 
2400        instagramElemento 
2401          .textContent 
2402          .trim() : 
2403        ""; 
2404 
2405 
2406    var possuiContato = false; 
2407 
2408 
2409    if (email) { 
2410 
2411      possuiContato = 
2412        adicionarContato( 
2413          "E-mail", 
2414          email, 
2415          "mailto:" + email, 
2416          false 
2417        ) || 
2418        possuiContato; 
2419 
2420
2421 
2422 
2423    if (whatsapp) { 
2424 
2425      possuiContato = 
2426        adicionarContato( 
2427          "WhatsApp", 
2428          whatsapp, 
2429          criarUrlWhatsApp( 
2430            whatsapp 
2431          ), 
2432          true 
2433        ) || 
2434        possuiContato; 
2435 
2436
2437 
2438 
2439    if (instagram) { 
2440 
2441      var instagramLabel = 
2442        instagram; 
2443 
2444 
2445      if ( 
2446        instagramLabel.indexOf( 
2447          "http" 
2448        ) !== 0 && 
2449        instagramLabel.charAt(0) 
2450          !== "@" 
2451      ) { 
2452 
2453        instagramLabel = 
2454          "@" + 
2455          instagramLabel; 
2456 
2457
2458 
2459 
2460      possuiContato = 
2461        adicionarContato( 
2462          "Instagram", 
2463          instagramLabel, 
2464          criarUrlInstagram( 
2465            instagram 
2466          ), 
2467          true 
2468        ) || 
2469        possuiContato; 
2470 
2471
2472 
2473 
2474    blocoContato.hidden = 
2475      !possuiContato; 
2476 
2477 
2478    /* ====================== 
2479       SITE 
2480    ====================== */ 
2481 
2482    limparElemento( 
2483      modalSite 
2484    ); 
2485 
2486 
2487    var siteElemento = 
2488      dados.querySelector( 
2489        ".js-site" 
2490      ); 
2491 
2492 
2493    var site = 
2494      siteElemento ? 
2495        siteElemento 
2496          .textContent 
2497          .trim() : 
2498        ""; 
2499 
2500 
2501    if (site) { 
2502 
2503      modalSite.appendChild( 
2504        criarLink( 
2505          site, 
2506          criarUrlSite(site), 
2507          "_blank" 
2508
2509      ); 
2510 
2511 
2512      blocoSite.hidden = false; 
2513 
2514    } else { 
2515 
2516      blocoSite.hidden = true; 
2517 
2518
2519 
2520 
2521    /* ====================== 
2522       ABRIR 
2523    ====================== */ 
2524 
2525    elementoFocoAnterior = 
2526      document.activeElement; 
2527 
2528 
2529    overflowAnterior = 
2530      document.body.style 
2531        .overflow; 
2532 
2533 
2534    modal.hidden = false; 
2535 
2536 
2537    document.body.style 
2538      .overflow = "hidden"; 
2539 
2540 
2541    var fechar = 
2542      modal.querySelector( 
2543        ".close-modal" 
2544      ); 
2545 
2546 
2547    if (fechar) { 
2548      fechar.focus(); 
2549
2550 
2551
2552 
2553 
2554  /* ========================================================= 
2555     FECHAR MODAL 
2556  ========================================================= */ 
2557 
2558  function fecharModal() { 
2559 
2560    if ( 
2561      !modal || 
2562      modal.hidden 
2563    ) { 
2564      return; 
2565
2566 
2567 
2568    modal.hidden = true; 
2569 
2570 
2571    document.body.style 
2572      .overflow = 
2573        overflowAnterior; 
2574 
2575 
2576    if ( 
2577      elementoFocoAnterior && 
2578      typeof elementoFocoAnterior 
2579        .focus === "function" 
2580    ) { 
2581 
2582      elementoFocoAnterior 
2583        .focus(); 
2584 
2585
2586 
2587
2588 
2589 
2590  /* ========================================================= 
2591     CLIQUES 
2592  ========================================================= */ 
2593 
2594  componente.addEventListener( 
2595    "click", 
2596    function (event) { 
2597 
2598      var botaoModal = 
2599        event.target.closest( 
2600          ".btn-modal" 
2601        ); 
2602 
2603 
2604      if (botaoModal) { 
2605 
2606        event.preventDefault(); 
2607 
2608        abrirModal( 
2609          botaoModal 
2610        ); 
2611 
2612        return; 
2613 
2614
2615 
2616 
2617      var fechar = 
2618        event.target.closest( 
2619          ".close-modal" 
2620        ); 
2621 
2622 
2623      if (fechar) { 
2624 
2625        event.preventDefault(); 
2626 
2627        fecharModal(); 
2628 
2629        return; 
2630 
2631
2632 
2633 
2634      /* 
2635       * Fecha clicando no fundo 
2636       */ 
2637      if ( 
2638        modal && 
2639        event.target === modal 
2640      ) { 
2641 
2642        fecharModal(); 
2643 
2644
2645 
2646
2647  ); 
2648 
2649 
2650  /* ========================================================= 
2651     ESC 
2652  ========================================================= */ 
2653 
2654  document.addEventListener( 
2655    "keydown", 
2656    function (event) { 
2657 
2658      if ( 
2659        event.key === "Escape" && 
2660        modal && 
2661        !modal.hidden 
2662      ) { 
2663 
2664        fecharModal(); 
2665 
2666
2667 
2668
2669  ); 
2670 
2671 
2672  /* ========================================================= 
2673     INICIALIZAÇÃO 
2674  ========================================================= */ 
2675 
2676  formatarSegmentosCards(); 
2677 
2678  gerarFiltros(); 
2679 
2680  filtrarParceiros(); 
2681 
2682})(); 
2683</script> 

Dúvidas Frequentes

Agradecemos o seu interesse em abrir uma conta no Sicoob! O processo é bem simples e pode ser feito de maneira totalmente digital. Basta baixar nosso aplicativo, o App Sicoob.

Você também pode ir até a cooperativa mais próxima ou de sua escolha e realizar a abertura.

Clicando aqui, você encontra o Sicoob mais próximo de você.

Para abrir uma conta de microempreendedor individual (MEI), você precisa ir pessoalmente até uma de nossas cooperativas com os seguintes documentos:

  • Contrato social/alterações do MEI
  • CPF e identidade 
  • Comprovante de endereço 
  • Faturamento dos últimos meses
  • Declaração de Imposto de Renda 

Clicando aqui, você encontra o Sicoob mais próximo de você.

Para abrir uma conta Pessoa Jurídica, você precisa ir até uma de nossas cooperativas com os seguintes documentos:

  • Contrato social/alterações, CNPJ/MF e inscrição estadual
  • CPF e identidade 
  • Comprovante de endereço
  • Balanço patrimonial e alvará (quando disponível)
  • Faturamento dos últimos meses
  • Declaração de Imposto de Renda da empresa

Clicando aqui, você encontra o Sicoob mais próximo.

Para abrir uma conta poupança, você precisa ir até uma de nossas cooperativas com os seguintes documentos:

  • Documento de identificação
  • Comprovante de endereço
  • Comprovante de renda

Clicando aqui, você encontra o Sicoob mais próximo de você.

 

Caso já seja cooperado, você pode abrir a conta poupança direto pelo App Sicoob.

No Sicoob, antes de tudo, você é dono! Por isso, é preciso comprar uma parte do capital da cooperativa, a integralização. Esse valor é variável e você consegue ver qual valor será, ao selecionar a sua agência de preferência no app Faça Parte. Além desse valor, existe a opção de selecionar um pacote de serviços, e o custo dele também varia de uma cooperativa para outra.

1º passo: acesse sua conta pelo Internet Banking do Sicoob e acesse qualquer transação financeira. É considerada transação financeira toda operação que altere o saldo da conta, por exemplo, pagamento de títulos, transferência entre contas, resgate de poupança, etc. O cadastro pode ser iniciado através do menu "Outras Opções > Computadores > Gerenciamento de Computadores".

Siga os passos indicados, e anote o Código de Liberação que será apresentado ao final em seu computador (Código de Liberação é um número de 4 dígitos).

2º passo: agora, basta liberar o seu computador informando o Código de Liberação em outro canal de atendimento de sua escolha, que pode ser:

  • Em um caixa eletrônico do Sicoob: acessando o menu, clique em "Outras opções > Liberar / Bloquear Computadores > SicoobNet Pessoal";
  • Em sua cooperativa do Sicoob.

Ao concluir o "2º passo", seu computador estará cadastrado e liberado para realizar transações financeiras (pagamentos e transferências) pela Internet.

  • Cadastre sua senha de acesso (8 dígitos) em qualquer cooperativa do Sicoob.
  • A partir do site www.sicoob.com.br, informe os números de sua cooperativa e conta corrente e clique OK para continuar.
  • Na tela que apresenta o teclado virtual, digite sua senha de 8 dígitos.

Pronto. Você já está no Internet Banking do Sicoob.

O cadastramento de computadores é obrigatório para efetuar as transações financeiras (pagamentos e transferências).

No acesso por meio de computadores não cadastrados e liberados, só será possível a execução de transações de consulta (saldos e extratos).

Para a abertura de uma conta conjunta, você e a pessoa que deseja abrir a conta em conjunto precisam ir pessoalmente até uma de nossas cooperativas com os seguintes documentos:

  • Comprovante de residência
  • Comprovante de renda
  • Documentos pessoais (identidade e CPF)

Clicando aqui, você encontra o Sicoob mais próximo de você.

A cota capital é o valor que cada pessoa paga ao ingressar na cooperativa. Ela é paga na abertura da conta, e é depositada em uma conta capital. Essa conta é importante para a sustentabilidade da cooperativa, e não pode ser movimentada como a conta corrente comum. Seus aportes, bem como as condições de saque, estão estabelecidos no Estatuto Social de cada cooperativa. A cota rende de acordo com o tempo que você fica na cooperativa. Como qualquer instituição, buscamos sustentabilidade financeira e trabalhamos em função de resultados, não existindo a palavra lucro, mas sim sobras. Parte das sobras é divididas entre os cooperados anualmente, de acordo com a sua participação.

Temos o Pacote Essencial, disponível com tarifas reduzidas e serviços básicos limitados. Para conferir a disponibilidade, basta visitar a cooperativa mais próxima. Os valores podem variar de acordo com a cooperativa selecionada.

Assim como existe o FGC nos bancos, nas cooperativas temos o FGCoop (Fundo Garantidor do Cooperativismo de Crédito). Na prática, cada cooperado tem até 250 mil reais garantidos caso ocorra qualquer imprevisto. Estamos sempre pensando na sua segurança. Para mais informações acesse https://www.fgcoop.coop.br/quem-somos