Link do botão
Ícone do botão Button Label
Ícone de carregamento
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> cardData.urlNews  [in template "20099#20135#10700480" at line 4680, column 67]

----
Tip: It's the step after the last dot that caused this error, not those before it.
----
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: ${cardData.urlNews}  [in template "20099#20135#10700480" in macro "renderCard" at line 4680, column 65]
	- Reached through: @renderCard cardData  [in template "20099#20135#10700480" at line 4965, column 25]
----
1<#-- Conteúdo Web -> Templates: Site de Crise - Include de templates--> 
2<#-- include "${templatesPath}/1975602" --> 
3 
4<#-- Conteúdo Web -> Templates: Site de Crise - Funções gerais--> 
5<#include "${templatesPath}/1975398" /> 
6 
7<#-- Conteúdo Web -> Templates: Busca pelas imagens do tipo de noticia --> 
8<#include "${templatesPath}/18598756" /> 
9	 
10<#assign POST_TYPES_CATEGORIES = getPostTypeImages()!default([]) /> 
11 
12<#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Extrair dados de Notícias --> 
13<#--include "${templatesPath}/7762031" --> 
14 
15<#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Título --> 
16<#-- include "${templatesPath}/7761976" --> 
17 
18<#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Redes sociais e data de publicação --> 
19<#--include "${templatesPath}/7762069" --> 
20 
21<#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Áudios do conteúdo da notícia --> 
22<#-- include "${templatesPath}/7761972" --> 
23<#function getNodesByLabel fieldList parentNode label> 
24    <#assign result = []/> 
25    <#attempt> 
26        <#assign groupId =  getIdFromFieldName(fieldList, label) /> 
27        <#assign xSeletorCaminho = saxReaderUtil.createXPath("dynamic-element[@name='${groupId}' ]") /> 
28        <#assign result = xSeletorCaminho.selectNodes(parentNode) /> 
29        <#return result /> 
30        <#recover> 
31            <#return result /> 
32    </#attempt> 
33</#function> 
34 
35<#function findVocabulary vocabularyName vocabularies> 
36    <#assign vocabularyNameLowerCase = vocabularyName?lower_case> 
37    <#list vocabularies as vocabulary> 
38        <#if vocabulary.name?lower_case == vocabularyNameLowerCase> 
39            <#return vocabulary> 
40        </#if> 
41    </#list> 
42    <#return {}> 
43</#function> 
44 
45<#-- ############# Conteúdo Web -> Templates: Site de Crise - Include de templates #################################### --> 
46<#function getSiteUrl> 
47    <#assign portalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"]> 
48    <#if layout?? && layout?has_content> 
49        <#return portalUtil.getLayoutFriendlyURL(layout, themeDisplay)?replace(layout.getFriendlyURL(), "")> 
50    </#if> 
51    <#return portalUtil.getLayoutFriendlyURL(layout, themeDisplay)> 
52</#function> 
53 
54<#function getSiteName> 
55    <#return layout.getGroup().getDescriptiveName(locale)> 
56</#function> 
57 
58<#function mountUrlToPage targetPage> 
59    <#assign baseUrl = getSiteUrl()> 
60    <#assign trimmedUrl = baseUrl?replace("/w/", "/")> 
61    <#assign trimmedUrl = trimmedUrl?substring(0, trimmedUrl?last_index_of("/"))> 
62    <#return trimmedUrl + "/" + targetPage> 
63</#function> 
64<#-- ################################################################################################################## --> 
65 
66 
67<#assign 
68    journalArticleLocalService  = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
69    assetVocabularyService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") 
70    assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") 
71    vocabularies = assetVocabularyService.getGroupVocabularies(groupId) 
72    tagsLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetTagLocalService") 
73    tagVocabulary = findVocabulary("Tag", vocabularies) 
74    flagVocabulary = findVocabulary("Flag", vocabularies) 
75    tagCategoryTitles = extractVocabularyTitles(tagVocabulary) 
76    flagCategoryTitles = extractVocabularyTitles(flagVocabulary) 
77    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
78    fileEntryService = staticUtil["com.liferay.document.library.kernel.service.DLFileEntryLocalServiceUtil"] 
79    layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") 
80    PortalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"] 
81    AssetEntryQueryService = objectUtil("com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil").getService() 
82    AssetEntryQuery = objectUtil('com.liferay.asset.kernel.service.persistence.AssetEntryQuery') 
83/> 
84 
85<#-- Nome das midias adaptativas de imagem para desktop e mobile --> 
86<#assign adaptativeMediaDesktopResolutionName = "Preview-1000x0" /> 
87<#assign adaptativeMediaMobileResolutionName = "Thumbnail-300x300" /> 
88 
89<#assign typeOfNewsVocabulary = findVocabulary("Tipo de Notícia", vocabularies)/> 
90<#assign ourEnergyVocabulary = findVocabulary("Nossa Energia", vocabularies)/> 
91 
92<#assign newsJournalArticle = ""> 
93<#assign assetEntry = getAssetEntryFromRequest(assetEntryLocalService)> 
94<#if assetEntry?? && assetEntry?has_content> 
95    <#assign newsJournalArticle = journalArticleLocalService.fetchLatestArticle(assetEntry.classPK)/> 
96</#if> 
97 
98<#function getSingleNode name root> 
99    <#attempt> 
100        <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='${name}']/dynamic-content[@language-id='${locale}']") /> 
101        <#return xPathSelector.selectSingleNode( root ) /> 
102        <#recover> 
103            <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='${name}']") /> 
104            <#return xPathSelector.selectSingleNode( root ) /> 
105    </#attempt> 
106</#function> 
107 
108<#-- Função para obter a primeira categoria associonada a um Vocabulário o qual está associado a um Jornal Article --> 
109<#function getFirstCategoryOfVocabulary journalArticle vocabulary > 
110    <#attempt> 
111        <#assign categories = assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.getClassPK()) /> 
112        <#list categories as category> 
113            <#if vocabulary.getVocabularyId() == category.getVocabularyId()> 
114                <#return category.getName()> 
115            </#if> 
116        </#list> 
117        <#return ""> 
118 
119        <#recover> 
120            <#return "" /> 
121    </#attempt> 
122</#function> 
123 
124<#function getFirstCategoryObjectOfVocabulary journalArticle vocabulary > 
125    <#attempt> 
126        <#assign categories = assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.getClassPK()) /> 
127        <#list categories as category> 
128            <#if vocabulary.getVocabularyId() == category.getVocabularyId()> 
129                <#return category> 
130            </#if> 
131        </#list> 
132        <#return ""> 
133 
134        <#recover> 
135            <#return "" /> 
136    </#attempt> 
137</#function> 
138 
139<#-- Função para obter todas os ids das categorias associonadas a um Vocabulário o qual está associado a um Jornal Article --> 
140<#function getAllCategoryIdOfVocabulary journalArticle vocabulary > 
141    <#attempt> 
142        <#assign categoriesIds = [] /> 
143        <#assign categories = assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.getClassPK()) /> 
144        <#list categories as category> 
145            <#if vocabulary.getVocabularyId() == category.getVocabularyId()> 
146               <#assign categoriesIds = categoriesIds + [category.getCategoryId()] /> 
147            </#if> 
148        </#list> 
149        <#return categoriesIds> 
150 
151        <#recover> 
152            <#return [] /> 
153    </#attempt> 
154</#function> 
155 
156<#if newsJournalArticle?? && newsJournalArticle?has_content> 
157 
158    <div class="breadcrumb-breakpoint breakpoint"> 
159        <div class="breadcrumb-col col-2-11 md-col-1-8 sm-col-1-4">  
160            <#assign homeURL = "/" /> 
161 
162            <#if currentURL?contains('webserver')> 
163               <#assign homeURL = "/web/nossa-energia" />  
164            </#if> 
165 
166            <a href="${homeURL}" class="breadcrumb-page text previous-page paragraph-micro-regular" tabindex="0">  
167                <span class="breadcrumb-text-truncate" original-text="Home">Home</span>  
168                <div class="icon"></div> 
169            </a> 
170             
171            <#assign currentUrl = getSiteUrl()> 
172 
173            <#assign lastIndex = currentUrl?last_index_of("/")> 
174            <#assign urlWithoutLastSegment = currentUrl?substring(0, lastIndex+1)> 
175            <#assign urlWithoutW = urlWithoutLastSegment?replace("/w/", "/")> 
176 
177            <#assign breadcrumbOurEnergyCategory = getFirstCategoryObjectOfVocabulary(assetEntry, ourEnergyVocabulary) /> 
178            <#assign categoryURL = urlWithoutW/> 
179            <a href="${categoryURL}" class="breadcrumb-page text previous-page paragraph-micro-regular" tabindex="0">  
180                <span class="breadcrumb-text-truncate" original-text="${breadcrumbOurEnergyCategory.getTitle(locale)}">${breadcrumbOurEnergyCategory.getTitle(locale)}</span>  
181                <div class="icon"></div> 
182            </a> 
183 
184            <span original-text="${newsJournalArticle.getTitle(locale)}" class="breadcrumb-page text active-page active paragraph-micro-bold">${newsJournalArticle.getTitle(locale)}</span> 
185        </div> 
186    </div> 
187 
188    <div class="ptb-news__read-news"> 
189        <div class="ptb-news__read-news-post "> 
190            <div class="ptb-news__read-content"> 
191 
192                <#assign 
193                ddmStructure = newsJournalArticle.getDDMStructure() 
194                fieldList = getFieldListByStructure(ddmStructure) 
195                xmlArticle = newsJournalArticle.getDocument().getRootElement() 
196
197 
198                <#assign 
199                <#-- Título principal da notícia --> 
200                mainHeadlineOfTheNews = newsJournalArticle.getTitle(locale, true) 
201                <#-- Título de destaque da notícia --> 
202                featuredNewsHeadline = extractFeaturedNewsHeadline(fieldList, xmlArticle) 
203                <#-- Sumário da notícia --> 
204                newsSummary = extractNewsSummary(fieldList, xmlArticle) 
205                <#-- Data de publicação da notícia --> 
206                lastPublishDate = extractPublishDate(newsJournalArticle) 
207                <#-- Data de criação da notícia --> 
208                createDate = newsJournalArticle.getCreateDate() 
209
210 
211                <#-- Flag da notícia ----------------------------------------------------------------------------------> 
212                <#assign flag = getFirstCategoryTitle(newsJournalArticle, flagCategoryTitles, assetCategoryLocalService)> 
213 
214                <#-- Url amigável da notícia para visualização em DisplayPage -----------------------------------------> 
215                <#assign newsJournalArticleFriendlyUrl = themeDisplay.getPortalURL() + themeDisplay.getPathFriendlyURLPublic() + layout.getGroup().friendlyURL + "/w/" + newsJournalArticle.getUrlTitle()> 
216 
217                <#-- Conteúdo da notícia ------------------------------------------------------------------------------> 
218                <#assign newsContent = getFieldValue(fieldList, xmlArticle, "Corpo da notícia")> 
219 
220                <#assign WEB_STORIES_FIELD_SET_FIELD_REF = "Fieldset91054335" /> 
221                <#assign WEB_STORIES_IDENTIFICATION_FIELD_LABEL = "Identificador do Carousel" /> 
222                <#assign WEB_STORIES_TITLE_FIELD_LABEL = "Título do carrossel" /> 
223 
224                <#assign webStoriesCarouselsIds = [] /> 
225                <#assign webStoriesCarouselsTitles = [] /> 
226                <#assign webStoriesCarouselsIdsFieldSetList = getNodes(WEB_STORIES_FIELD_SET_FIELD_REF, xmlArticle) /> 
227 
228                <#list webStoriesCarouselsIdsFieldSetList as webStoriesFieldSet> 
229                    <#assign webStoriesCarouselsIds = webStoriesCarouselsIds + [ getFieldValue(fieldList, webStoriesFieldSet, WEB_STORIES_IDENTIFICATION_FIELD_LABEL) ] /> 
230                    <#assign webStoriesCarouselsTitles = webStoriesCarouselsTitles + [ getFieldValue(fieldList, webStoriesFieldSet, WEB_STORIES_TITLE_FIELD_LABEL) ] /> 
231                </#list> 
232 
233                <#assign wsCarouselContent = ' 
234                <div id="[CAROUSEL_ID]" class="ws-carousel"> 
235                    <div class="ws-carousel-header"> 
236                        <h1 class="h2"> 
237                            [CAROUSEL_TITLE] 
238                        </h1> 
239                        <div class="nav-buttons"> 
240                            <svg class="nav-arrow left-arrow inactive" width="33" height="33" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg"> 
241                                <path d="M1 16C1 7.16344 8.16344 0 17 0C25.8366 0 33 7.16344 33 16C33 24.8366 25.8366 32 17 32C8.16344 32 1 24.8366 1 16Z" stroke="#bababa"/> 
242                                <path d="M11.5 16H22.5M22.5 16L18 11.5M22.5 16L18 20.5" stroke="#bababa" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 
243                            </svg> 
244                            <svg class="nav-arrow right-arrow active" width="33" height="33" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg"> 
245                                <path d="M1 16C1 7.16344 8.16344 0 17 0C25.8366 0 33 7.16344 33 16C33 24.8366 25.8366 32 17 32C8.16344 32 1 24.8366 1 16Z" stroke="#008542"/> 
246                                <path d="M11.5 16H22.5M22.5 16L18 11.5M22.5 16L18 20.5" stroke="#008542" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 
247                            </svg> 
248                        </div> 
249                    </div> 
250                    <div class="ws-carousel-body"> 
251                        <div class="ws-container"> 
252                        </div> 
253                    </div>     
254                </div>' /> 
255 
256                <#list webStoriesCarouselsIds as item > 
257                    <#assign carouselDiv = wsCarouselContent?replace("[CAROUSEL_ID]", item)?replace("[CAROUSEL_TITLE]", webStoriesCarouselsTitles[item?index]) /> 
258                    <#assign newsContent = newsContent?replace("<p>#[${item}]</p>", carouselDiv) /> 
259                </#list> 
260 
261 
262                <#assign WEB_STORIES_FIELD_SET_FIELD_REF = "Fieldset91054335" /> 
263                <#assign WEB_STORIES_IDENTIFICATION_FIELD_LABEL = "Identificador do Carousel" /> 
264                <#assign WEB_STORIES_TITLE_FIELD_LABEL = "Título do carrossel" /> 
265 
266                <#assign webStoriesCarouselsIds = [] /> 
267                <#assign webStoriesCarouselsTitles = [] /> 
268                <#assign webStoriesCarouselsIdsFieldSetList = getNodes(WEB_STORIES_FIELD_SET_FIELD_REF, xmlArticle) /> 
269 
270                <#list webStoriesCarouselsIdsFieldSetList as webStoriesFieldSet> 
271                    <#assign webStoriesCarouselsIds = webStoriesCarouselsIds + [ getFieldValue(fieldList, webStoriesFieldSet, WEB_STORIES_IDENTIFICATION_FIELD_LABEL) ] /> 
272                    <#assign webStoriesCarouselsTitles = webStoriesCarouselsTitles + [ getFieldValue(fieldList, webStoriesFieldSet, WEB_STORIES_TITLE_FIELD_LABEL) ] /> 
273                </#list> 
274 
275                <#assign wsCarouselContent = ' 
276                <div id="[CAROUSEL_ID]" class="ws-carousel"> 
277                    <div class="ws-carousel-header"> 
278                        <h1 class="h2"> 
279                            [CAROUSEL_TITLE] 
280                        </h1> 
281                        <div class="nav-buttons"> 
282                            <svg class="nav-arrow left-arrow inactive" width="33" height="33" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg"> 
283                                <path d="M1 16C1 7.16344 8.16344 0 17 0C25.8366 0 33 7.16344 33 16C33 24.8366 25.8366 32 17 32C8.16344 32 1 24.8366 1 16Z" stroke="#bababa"/> 
284                                <path d="M11.5 16H22.5M22.5 16L18 11.5M22.5 16L18 20.5" stroke="#bababa" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 
285                            </svg> 
286                            <svg class="nav-arrow right-arrow active" width="33" height="33" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg"> 
287                                <path d="M1 16C1 7.16344 8.16344 0 17 0C25.8366 0 33 7.16344 33 16C33 24.8366 25.8366 32 17 32C8.16344 32 1 24.8366 1 16Z" stroke="#008542"/> 
288                                <path d="M11.5 16H22.5M22.5 16L18 11.5M22.5 16L18 20.5" stroke="#008542" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 
289                            </svg> 
290                        </div> 
291                    </div> 
292                    <div class="ws-carousel-body"> 
293                        <div class="ws-container"> 
294                        </div> 
295                    </div>     
296                </div>' /> 
297 
298                <#list webStoriesCarouselsIds as item > 
299                    <#assign carouselDiv = wsCarouselContent?replace("[CAROUSEL_ID]", item)?replace("[CAROUSEL_TITLE]", webStoriesCarouselsTitles[item?index]) /> 
300                    <#assign newsContent = newsContent?replace("<p>#[${item}]</p>", carouselDiv) /> 
301                </#list> 
302 
303 
304                <#-- Seção do áudio para o conteúdo da notícia --------------------------------------------------------> 
305                <#assign audios = [] 
306                audioIdentifierFieldSetList = getNodes("Fieldset65862311", xmlArticle) 
307
308                <#list audioIdentifierFieldSetList as audioIdentifierFieldSet> 
309                    <#assign 
310                    <#-- Grupo com as informações de url e legenda do áudio --> 
311                    audioInfoFieldSet = getGroupNode("Fieldset24035689",audioIdentifierFieldSet)> 
312                    <#assign 
313                    externalAudioUrl = getFieldValue(fieldList, audioInfoFieldSet, "URL externa do áudio") 
314                    internalAudioUrl = getFileFromXML("DocumentLibrary24170668", audioInfoFieldSet, fileEntryService) 
315                    audioLegend = getFieldValue(fieldList, audioInfoFieldSet, "Legenda do áudio")> 
316 
317                    <#if externalAudioUrl?has_content || internalAudioUrl.url?has_content > 
318                        <#assign audios += [{ 
319                        "id": getFieldValue(fieldList, audioIdentifierFieldSet, "Identificador de Áudio"), 
320                        "externalUrl" : externalAudioUrl, 
321                        "internalUrl" : internalAudioUrl, 
322                        "legend" : audioLegend 
323                        }]> 
324                    </#if> 
325                </#list> 
326 
327 
328                <#-- Seção de vídeo para o conteúdo da notícia --------------------------------------------------------> 
329                <#assign videos = [] 
330                videoIdentifierFieldSetList = getNodes("Fieldset24460782", xmlArticle) 
331
332                <#list videoIdentifierFieldSetList as videoIdentifierFieldSet> 
333                    <#assign 
334                    <#-- Grupo com as informações de url e legenda do áudio --> 
335                    videoInfoFieldSet = getGroupNode("Fieldset51040010",videoIdentifierFieldSet) 
336 
337                    videos += [{ 
338                    "id": getFieldValue(fieldList,videoIdentifierFieldSet, "Identificador de Vídeo"), 
339                    "youtubeID" : getFieldValue(fieldList, videoInfoFieldSet, "ID do vídeo do YouTube"), 
340                    "internalUrl" : getFileFromXML("DocumentLibrary15265409", videoInfoFieldSet, fileEntryService), 
341                    "legend" : getFieldValue(fieldList, videoInfoFieldSet, "Legenda do vídeo") 
342                    }] 
343
344                </#list> 
345 
346 
347                <#-- Seção de links para o conteúdo da notícia --------------------------------------------------------> 
348                <#assign 
349                links = [] 
350                linksFieldSetList = getNodes("Fieldset37770113", xmlArticle) 
351
352                <#list linksFieldSetList as linksFieldSet> 
353                    <#assign linkFieldSetList = getNodes("Fieldset10524367", linksFieldSet)> 
354 
355                    <#list linkFieldSetList as linkFieldSet> 
356                        <#assign 
357                        linkId = getFieldValue(fieldList, linkFieldSet, "Identificador do link") 
358 
359                        <#-- Grupo com as informações de url e legenda do áudio --> 
360                        linkInfoFieldSeet = getGroupNode("Fieldset86037074", linkFieldSet) 
361 
362                        iconType = getFieldValue(fieldList, linkInfoFieldSeet, "Ícone do link") 
363                        links += [{ 
364                        "id": linkId, 
365                        "externalLink" : getFieldValue(fieldList, linkInfoFieldSeet, "Link externo"), 
366                        "pageLink" : getPageLayoutLinkFromXML("LinkToLayout77941175", linkInfoFieldSeet, layoutLocalService), 
367                        "file" : getFileFromXML("DocumentLibrary34820760", linkInfoFieldSeet, fileEntryService), 
368                        "title" : getFieldValue(fieldList, linkInfoFieldSeet, "Título do link"), 
369                        "iconType" : iconType 
370                        }] 
371
372                    </#list> 
373                </#list> 
374 
375 
376                 
377                <#assign galleryItems = []/> 
378                
379                <#assign mediaGroupList = getNodes(getIdFromFieldName(fieldList, "Galeria de multimídia"), xmlArticle) /> 
380                 
381                <#list mediaGroupList as mediaGroup >       
382                    <#assign nodes = getNodes(getIdFromFieldName(fieldList, "Imagem da Galeria") , mediaGroup) /> 
383                    <#list nodes as node>                   
384                        <#assign image = getMediaInfo(fieldList, node, "Imagem", fileEntryService) /> 
385                        <#if image?? && image?has_content && image.url?has_content> 
386                            <#assign galleryItems += [{"image": image}] /> 
387                        </#if>   
388                    </#list> 
389                </#list> 
390                 
391				<#-- Seção de Quotes para o conteúdo da notícia --------------------------------------------------------> 
392				<#-- Seção de Quotes para o conteúdo da notícia --------------------------------------------------------> 
393                <#assign quotes = [] /> 
394                <#assign quotesRootFieldSetList = getNodes(getIdFromFieldName(fieldList, "Quotes da notícia"), xmlArticle) /> 
395                <#list quotesRootFieldSetList as quotesFieldSetList> 
396                     <#assign quoteFieldSetList = getNodes(getIdFromFieldName(fieldList, "Quote"), quotesFieldSetList) /> 
397						         <#list quoteFieldSetList as quoteFieldSet> 
398                                        <#assign imageJsonString  = getSingleNodeString("Image94530628", quoteFieldSet)   />                                                                       
399                                        <#assign imageJson = {"url": "", "alt": "", "fileEntryId" : "", "title" : ""} /> 
400                                        <#attempt> 
401                                            <#if imageJsonString ?? && imageJsonString?has_content>  
402                                                <#assign imageJson = jsonFactoryUtil.createJSONObject(imageJsonString) /> 
403                                            </#if> 
404 
405                                            <#if !imageJson.url?? || !imageJson.url?has_content> 
406                                                <#assign imageJson = {"url": "", "alt": "", "fileEntryId" : "", "title" : ""} /> 
407                                            </#if> 
408                                        <#recover>                                             
409                                        </#attempt> 
410 
411                                         <#if !imageJson.url?? || !imageJson.url?has_content> 
412                                                <#assign imageJson = {"url": "", "alt": "", "fileEntryId" : "", "title" : ""} /> 
413                                            </#if> 
414                                 					       
415                                    <#assign quotes += [{ 
416                                    "id": getFieldValue(fieldList, quoteFieldSet, "Identificador do Quote"), 
417                                    "content" : getFieldValue(fieldList, quoteFieldSet, "Texto do Quote"), 
418                                    "author" : getFieldValue(fieldList, quoteFieldSet, "Nome do autor"), 
419                                    "image" : {"url": imageJson.url, "alt": imageJson.alt, "fileEntryId" : imageJson.fileEntryId, "title" : imageJson.title}  
420                                    }] /> 
421						          </#list>                    
422                </#list> 
423 
424                <#assign newsInfo = { 
425                "mainHeadlineOfTheNews": mainHeadlineOfTheNews, 
426                "featuredNewsHeadline" : featuredNewsHeadline, 
427                "displayDate" : formatDate(createDate), 
428                "createDate": createDate, 
429                "newsSummary" : newsSummary, 
430                "newsMedia":  extractNewsMedia(fieldList, xmlArticle, fileEntryService), 
431                "lastPublishDate": lastPublishDate, 
432                "flag": flag, 
433                "url": newsJournalArticleFriendlyUrl, 
434                "newsContent": newsContent, 
435                "audios": audios, 
436                "videos": videos, 
437                "galleryItems": galleryItems, 
438                "links": links, 
439								"quotes": quotes 
440                }/> 
441 
442                <#-- Renderizar o título principal da notícia --> 
443                <#-- Conteúdo-> Conteúdo Web -> Templates: Site de Crise - Notícia - Título --> 
444                <@renderHeadLine newsInfo/> 
445 
446                <#-- Renderizar o resumo da notícia --> 
447                <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Resumo --> 
448                <@renderReview newsInfo/> 
449 
450                <#-- Renderizar a data de publicação/edição da notícia e redes sociais --> 
451                <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Redes sociais e data de publicação --> 
452                <@renderPublishAndSocialMediasInfos newsJournalArticle newsInfo/> 
453 
454                <#-- Renderizar as tags da notícia --> 
455                <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Render Tags --> 
456                <#assign categoriesAsssetEntryResponse = restClient.get("/headless-delivery/v1.0/structured-contents/${assetEntry.getClassPK()}?nestedFields=embeddedTaxonomyCategory&fields=taxonomyCategoryBriefs") /> 
457               
458                <#if categoriesAsssetEntryResponse?? && categoriesAsssetEntryResponse?has_content && categoriesAsssetEntryResponse.taxonomyCategoryBriefs??> 
459                    <#assign tagCategoryList = getCategoriesNamesAndIds("Tags", categoriesAsssetEntryResponse.taxonomyCategoryBriefs) /> 
460                    <#assign removeStartParameterWhenTagIsClicked = true /> 
461                    <#assign includeRequestParams = false /> 
462                    <#assign NEWS_PAGE_NAME= "categorias"/> 
463                </#if> 
464                 
465 
466                <#-- Renderizar a imagem de destaque da notícia --> 
467                <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Imagem de destaque --> 
468                <#assign typeOfNews = getFirstCategoryOfVocabulary(assetEntry, typeOfNewsVocabulary) /> 
469                 
470                <#if !typeOfNews?? || !typeOfNews?has_content || typeOfNews != "Infográfico" >                
471                    <@renderNewsFeaturedMedia newsInfo /> 
472                </#if> 
473 
474                <#-- Renderizar o conteúdo da notícia --> 
475                <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Conteúdo da notícia --> 
476                <@renderNewsContent newsInfo/> 
477 
478                <#-- Renderizar o conteúdo da notícia-->  
479                <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Conteúdo da notícia --> 
480 
481                <#-- Renderizar o conteúdo da notícia-->  
482                <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Conteúdo da notícia --> 
483 
484                <#-- Renderiza botoes de compartilhamento na versao mobile --> 
485                <div class="render-share-news-container publish_and_social_medias_infos_desk mobile"> 
486                    <@renderShareAndCopyNews/> 
487                </div> 
488 
489                <#-- Renderizar links da notícia --> 
490                <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Links do conteúdo da notícia --> 
491                <@renderLinks newsInfo /> 
492 
493                <@renderCite /> 
494 
495                <#-- Renderizar áudios da notícia --> 
496                <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Áudios do conteúdo da notícia --> 
497 
498                <#-- Renderizar galeria de imagens notícia --> 
499                <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Render galeria --> 
500                <@renderGallery newsInfo /> 
501									 
502                <#-- Renderizar quotes da notícia --> 
503                <@renderQuotes newsInfo /> 
504            </div> 
505        </div> 
506    </div> 
507<#else > 
508    <div class="ptb-news__read-news paragraph-sm-regular">      
509        <p> <#if locale == "pt_BR"> Nenhuma notícia <#else> There are no news </#if></p> 
510    </div> 
511 
512    <style> 
513        .ptb-news__read-news p { 
514            color: #515867; 
515
516 
517        body.high-contrast-active .ptb-news__read-news p { 
518            color: var(--color-neutral-100); 
519
520    </style> 
521</#if> 
522 
523<style> 
524    .breadcrumb-breakpoint { 
525        padding-top: var(--space-xxl); 
526        padding-bottom: var(--space-xl); 
527
528 
529    body.high-contrast-active .breadcrumb-breakpoint { 
530        background: var(--background-surface-level-01, #010101); 
531
532 
533    .breadcrumb-breakpoint .breadcrumb-col { 
534        display: flex; 
535        width: max-content; 
536        gap: var(--space-xxs); 
537        height: fit-content; 
538        overflow-x: hidden; 
539
540 
541    .breadcrumb-breakpoint #liferay-breadcrumb { 
542        display: none; 
543
544 
545    .breadcrumb-breakpoint .breadcrumb-page { 
546        display: flex; 
547        gap: var(--space-micro); 
548        height: var(--size-md); 
549        size: var(--size-md); 
550        border: 1px solid rgba(0, 0, 0, 0); 
551        box-sizing: border-box; 
552        border-radius: var(--border-radius-sm); 
553
554 
555    .breadcrumb-breakpoint a.breadcrumb-page.text span, 
556    .breadcrumb-breakpoint span.breadcrumb-page.text { 
557        white-space: nowrap; 
558
559 
560    .breadcrumb-breakpoint .breadcrumb-page a:focus { 
561        outline: none; 
562
563 
564    .breadcrumb-breakpoint .breadcrumb-page.active-page { 
565        color: var(--color-text-primary-default); 
566        background-color: var(--color-background-default-level-02); 
567        border-radius: var(--border-radius-sm); 
568
569 
570    body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page.active-page { 
571        background: var(--background-surface-level-02, #373737); 
572        color: var(--text-primary-default, #FFF); 
573
574 
575    .breadcrumb-breakpoint .breadcrumb-page.previous-page { 
576        transition: 300ms ease-in-out; 
577
578 
579    .breadcrumb-breakpoint .breadcrumb-page.previous-page.text { 
580        text-decoration: var(--text-decoration-none); 
581        color: var(--color-text-primary-default); 
582        text-transform: capitalize; 
583        padding-left: var(--space-xxs); 
584        padding-right: var(--space-xxs); 
585
586 
587    body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page.previous-page.text { 
588        color: var(--text-primary-default, #FFF); 
589
590 
591    .breadcrumb-breakpoint .breadcrumb-page.active-page.text { 
592        color: var(--color-text-primary-default); 
593        text-decoration: var(--text-decoration-none); 
594        background-color: var(--color-background-default-level-02); 
595        text-transform: capitalize; 
596        padding-left: var(--space-xxs); 
597        padding-right: var(--space-xxs); 
598
599 
600    body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page.previous-page.text { 
601        color: var(--text-primary-default, #FFF); 
602
603 
604    .breadcrumb-breakpoint .breadcrumb-page.previous-page:not(.three-dots):hover { 
605        background-color: var(--color-background-default-level-01); 
606        border-color: var(--border-color-dark); 
607        border-radius: var(--border-radius-sm); 
608        border: 1px solid; 
609        transition: all 300ms ease-in-out; 
610
611 
612    body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page.previous-page:not(.three-dots):hover { 
613        background-color: transparent; 
614
615 
616    .breadcrumb-breakpoint .breadcrumb-page:focus-visible { 
617        margin: var(--space-micro); 
618        border-radius: var(--space-micro); 
619        outline: none; 
620        border: 1px solid var(--color-primary-medium); 
621        box-sizing: border-box; 
622        transition: 300ms ease-in-out; 
623
624 
625    body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page:focus-visible { 
626        border: 1px solid rgba(228, 247, 232, 1); 
627
628 
629    .breadcrumb-breakpoint .breadcrumb-page .icon { 
630        width: var(--size-xxs); 
631        height: var(--size-xxs); 
632        border-color: var(--border-color-darkest); 
633        background-image: url('data:image/svg+xml,%3Csvg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"%3E%3Cpath d="M4.5 2.25L8.25 6L4.5 9.75" stroke="%23525252" stroke-linecap="round" stroke-linejoin="round"%3E%3C/path%3E%3C/svg%3E'); 
634        background-size: cover; 
635        margin-top: auto; 
636        margin-bottom: auto; 
637
638 
639    body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page .icon { 
640        background-image: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none"><path d="M4.5 2.25L8.25 6L4.5 9.75" stroke="white" stroke-linecap="round" stroke-linejoin="round"/></svg>'); 
641
642 
643    .ptb-news__read-news { 
644        overflow: hidden; 
645
646 
647    body.high-contrast-active .ptb-news__read-news { 
648        background: var(--background-surface-level-01, #010101); 
649
650</style> 
651 
652 
653<#-- ############# Site de Crise - Notícia - Redes sociais e data de publicação ####################################### --> 
654<#-- 
655Add elements from the sidebar to define your template. Type "${" to use the 
656autocomplete feature. 
657--> 
658 
659<#macro renderHeadLine newsInfo> 
660     
661    <div class="main-headline-container breakpoint"> 
662        <div class="main-headline-container-col col-2-11 md-col-1-8 sm-col-1-4"> 
663            <h1 class="main-headline display-sm">${newsInfo.featuredNewsHeadline}</h1> 
664            <div class="bar"></div> 
665        </div> 
666    </div> 
667 
668    <style> 
669        .ptb-news__read-news .main-headline-container .main-headline-container-col { 
670            display: flex; 
671            flex-direction: column; 
672            gap: var(--space-sm); 
673            padding-bottom: var(--space-lg); 
674
675 
676        .ptb-news__read-news .main-headline-container .main-headline-container-col * { 
677            margin: 0; 
678            padding: 0; 
679
680 
681        .ptb-news__read-news .main-headline-container .main-headline { 
682            font-family: var(--font-family-base); 
683            color: var(--color-neutral-800); 
684
685 
686        body.high-contrast-active .ptb-news__read-news .main-headline-container .main-headline { 
687            color: var(--text-primary-default, var(--color-neutral-100)); 
688
689 
690        .ptb-news__read-news .main-headline-container .bar { 
691            width: 32px; 
692            height: var(--size-micro); 
693            background: var(--color-secondary-medium); 
694
695 
696        body.high-contrast-active .ptb-news__read-news .main-headline-container .bar{ 
697            background: var(--text-secondary-accent, #FFEEB3); 
698
699 
700        @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) { 
701            .ptb-news__read-news .main-headline-container .main-headline-container-col { 
702                gap: var(--space-xs, 12px); 
703
704
705    </style> 
706</#macro> 
707<#-- ################################################################################################################## --> 
708 
709<#-- ############# Site de Crise - Notícia - Redes sociais e data de publicação ####################################### --> 
710<#macro renderReview newsInfo> 
711    <#assign summaryCssRoot = "summary-container" /> 
712 
713    <div class="${summaryCssRoot}-breakpoint breakpoint"> 
714        <div class="${summaryCssRoot} col-2-11 md-col-1-8 sm-col-1-4"> 
715            <p class="summary paragraph-lg-regular"> 
716                ${newsInfo.newsSummary} 
717            </p> 
718        </div> 
719        
720    </div> 
721 
722    <style> 
723        .${summaryCssRoot} .summary { 
724            padding-bottom: var(--space-lg); 
725
726 
727        .${summaryCssRoot} .summary, 
728        .${summaryCssRoot} .summary * { 
729            color: var(--color-neutral-800, #373737); 
730            font-family: var(--font-family-base); 
731            font-style: var(--font-style-italic); 
732            margin: var(--space-none); 
733
734 
735        body.high-contrast-active .summary, 
736        body.high-contrast-active .summary * { 
737            color: var(--text-secondary-default, #F8F8F8); 
738
739    </style> 
740</#macro> 
741<#-- ################################################################################################################## --> 
742 
743<#-- ############# Site de Crise - Notícia - Redes sociais e data de publicação ####################################### --> 
744<#macro renderPublishAndSocialMediasInfos journalArticle newsInfo> 
745 
746    <div class="publish_and_social_medias_infos_desk-breakpoint breakpoint"> 
747        <div class="publish_and_social_medias_infos_desk col-2-11 md-col-1-8 sm-col-1-4"> 
748            <div class="publish_and_update_date"> 
749                <#assign lastPublishDate = journalArticle.getModifiedDate()> 
750                <#assign createDate = journalArticle.getCreateDate()> 
751                <#if journalArticle.getLastPublishDate()??> 
752                    <#assign lastPublishDate = journalArticle.getLastPublishDate()> 
753                </#if> 
754 
755                <#if locale == "pt_BR"> 
756                    <p class="updated">Atualizado em ${formatDate(lastPublishDate)}</p> 
757                    <p class="published">Postado em ${formatDate(createDate)}</p> 
758                <#else > 
759                    <p class="updated">Updated on ${formatDate(lastPublishDate)}</p> 
760                    <p class="published">Posted on ${formatDate(createDate)}</p> 
761                </#if> 
762            </div> 
763            <div class="render-share-news-container desktop"> 
764                <@renderShareAndCopyNews/> 
765            </div> 
766        </div> 
767    </div> 
768 
769    <style> 
770			.ptb-news__read-news .hidden { 
771			     display: none; 
772
773        /*Data de publicação e redes sociais */ 
774 
775        /* Desktop */ 
776        .ptb-news__read-news .publish_and_social_medias_infos_desk { 
777            position: relative; 
778            display: grid; 
779            grid-template-columns: auto 1fr auto; 
780
781 
782        .ptb-news__read-news .render-share-news-container.mobile { 
783            display: none; 
784
785 
786        .ptb-news__read-news .publish_and_social_medias_infos_desk * { 
787            padding: var(--space-none, 0); 
788            margin: var(--space-none, 0); 
789            font-family: var(--font-family-base); 
790            font-style: var(--font-style-normal, normal); 
791            font-weight: var(--font-weight-regular, 400); 
792            font-size: var(--font-size-xxs, 16px); 
793            line-height: var(--line-height-xl, 160%); 
794            color: var(--color-neutral-800, #373737); 
795
796 
797        body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk * { 
798            color: var(--text-secondary-default, #F8F8F8); 
799
800 
801        body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk a svg path, 
802        body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .mobile-share svg path { 
803            stroke: var(--color-neutral-500, #D7D7D7); 
804            fill: rgba(255, 255, 255, 0.32); 
805
806 
807        body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk a svg circle, 
808        body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .mobile-share svg circle { 
809            fill: rgba(255, 255, 255, 0.32); 
810
811 
812        .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date { 
813            display: flex; 
814            align-items: center; 
815            gap: var(--space-sm, 16px); 
816
817 
818        .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date .updated { 
819            font-weight: var(--font-weight-bold, 700); 
820            font-size: var(--font-size-xxxs, 14px); 
821
822 
823        body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date .updated { 
824            color: var(--text-primary-default, var(--color-neutral-100)); 
825
826 
827        .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date .published { 
828            font-weight: var(--font-weight-normal, 400); 
829            font-size: var(--font-size-xxxs, 14px); 
830
831 
832        .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container { 
833            display: flex; 
834            width: 100%; 
835            justify-content: flex-end; 
836            align-items: center; 
837            gap: var(--space-sm, 16px); 
838
839   
840        .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container .social-media-share { 
841            position: relative; 
842
843	 
844        .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container .social-media-share span { 
845            position: absolute; 
846            width: 100%; 
847            height: 100%; 
848            opacity: 0; 
849            overflow: hidden; 
850            pointer-events: none; 
851
852 
853        .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container .mobile-share { 
854            display: none; 
855
856 
857        .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container { 
858            background: var(--color-neutral-100); 
859            border: var(--border-width-hairline, 1px) solid #CCCCCC; 
860            border-radius: 32px; 
861            display: flex; 
862            align-items: center; 
863            gap: var(--space-sm, 16px); 
864            padding: 6px var(--space-xxs, 8px); 
865            height: 36px; 
866            margin: 0; 
867            cursor: pointer; 
868
869 
870        body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container { 
871            background: rgba(255, 255, 255, 0.32); 
872            border: var(--border-width-hairline, 1px) solid rgba(255, 255, 255, 0.32); 
873
874 
875        .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container svg { 
876            width: 18px; 
877
878 
879        body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk  svg path { 
880            stroke: var(--color-neutral-500, #D7D7D7); 
881
882 
883        .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container .text { 
884            font-family: var(--font-family-base); 
885            font-style: normal; 
886            margin: 0; 
887            height: 100%; 
888            display: flex; 
889            align-items: center; 
890            color: var(--color-primary-medium, #008542); 
891            font-size: var(--font-size-micro, 12px); 
892            font-weight: var(--font-weight-bold, 700); 
893            line-height: var(--line-height-lg, 144%); 
894            pointer-events: none; 
895
896	             
897        .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container .text .copy-text-title-news { 
898            position: absolute; 
899            width: 100%; 
900            height: 100%; 
901            opacity: 0; 
902            overflow: hidden; 
903
904 
905        body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container .text { 
906            color: var(--text-primary-accent, #E4F7E8); 
907
908 
909        .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-message { 
910            display: none; 
911            position: absolute; 
912            bottom: -43px; 
913            right: -15px; 
914            padding: var(--space-xxxs, 4px) 15px; 
915            margin: var(--space-micro, 2px) 10px; 
916            width: 110px; 
917            font-family: var(--font-family-base); 
918            font-size: var(--font-size-micro, 12px); 
919 
920            color: #008542; 
921            background: var(--color-neutral-100); 
922            border-radius: var(--border-radius-md, 8px); 
923 
924            filter: drop-shadow(0px 4px 16px rgba(0, 0, 0, 0.16)); 
925 
926            cursor: pointer; 
927
928 
929        body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-message { 
930            background: rgba(255, 255, 255, 0.32); 
931            color: var(--text-primary-accent, #E4F7E8); 
932
933 
934        .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-message-active { 
935            display: block; 
936
937 
938        /* Mobile */ 
939 
940        .ptb-news__read-news .publish_and_social_medias_infos_mobile { 
941            display: flex; 
942            flex-direction: column; 
943            gap: 19px; 
944
945 
946        .ptb-news__read-news .publish_and_social_medias_infos_mobile { 
947            display: none; 
948
949 
950        .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text { 
951            display: flex; 
952            justify-content: space-between; 
953            align-items: center; 
954            margin-bottom: var(--space-lg, 32px); 
955
956 
957        .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .publish_and_update_date * { 
958            padding: 0; 
959            margin: 0; 
960            font-family: var(--font-family-base); 
961            font-style: var(--font-style-normal, normal); 
962            font-size: var(--font-size-micro, 12px); 
963            line-height: 136%; 
964            color: var(--color-neutral-800, #373737); 
965
966 
967        body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .publish_and_update_date * { 
968            color: var(--text-primary-accent, #E4F7E8); 
969
970 
971        .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .publish_and_update_date { 
972            display: flex; 
973            flex-direction: column; 
974            gap: 0; 
975
976 
977        .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .publish_and_update_date .updated { 
978            font-weight: var(--font-weight-bold, 700); 
979
980 
981        .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .publish_and_update_date .published { 
982            font-weight: var(--font-weight-regular, 400); 
983
984 
985        .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .copy-text-container { 
986            background: var(--color-neutral-100); 
987            border: var(--border-width-hairline, 1px) solid #CCCCCC; 
988            border-radius: 32px; 
989            display: flex; 
990            align-items: center; 
991            gap: var(--space-sm, 16px); 
992            padding: 6px var(--space-xxs, 8px); 
993            width: 112px; 
994            height: 36px; 
995
996 
997        body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .copy-text-container { 
998            background: rgba(255, 255, 255, 0.32); 
999            color: var(--text-primary-accent, #E4F7E8); 
1000
1001 
1002        .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .copy-text-container p.text { 
1003            margin: 0; 
1004
1005 
1006        .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .copy-text-container .text { 
1007            font-family: var(--font-family-base); 
1008            font-style: var(--font-style-normal, normal); 
1009            font-weight: var(--font-weight-regular, 400); 
1010            font-size: 13px; 
1011            line-height: 14px; 
1012            color: #008542; 
1013
1014 
1015        body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .copy-text-container .text { 
1016            background: rgba(255, 255, 255, 0.32); 
1017            color: var(--text-primary-accent, #E4F7E8); 
1018
1019 
1020        @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) { 
1021 
1022            .ptb-news__read-news .publish_and_social_medias_infos_desk .render-share-news-container.desktop { 
1023                display: none; 
1024
1025 
1026            .ptb-news__read-news .render-share-news-container.mobile { 
1027                display: block; 
1028                margin: var(--space-xl) var(--space-lg) 0 var(--space-lg); 
1029
1030 
1031            .ptb-news__read-news .publish_and_social_medias_infos_desk * { 
1032                font-size: var(--font-size-micro, 12px); 
1033
1034             
1035            .ptb-news__read-news .publish_and_social_medias_infos_desk { 
1036                display: grid; 
1037                grid-template-columns: 100%; 
1038                grid-template-rows: 1fr 100%; 
1039
1040 
1041            .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date { 
1042                grid-column-start: 1; 
1043                grid-column-end: 1; 
1044                grid-row-start: 1; 
1045                grid-row-end: 1; 
1046                gap: var(--space-xxs, 8px); 
1047
1048 
1049            .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date * { 
1050                padding: 0; 
1051                margin: 0; 
1052                font-family: var(--font-family-base); 
1053                font-style: var(--font-style-normal); 
1054                color: var(--color-neutral-800, #373737); 
1055                font-weight: var(--font-weight-bold); 
1056                font-size: var(--font-size-xxxs, 14px); 
1057                line-height: var(--line-height-md, 132%); 
1058
1059 
1060            body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date * { 
1061                color: var(--text-primary-accent, #E4F7E8); 
1062
1063 
1064            .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date .published { 
1065                font-weight: var(--font-weight-regular, 400); 
1066
1067 
1068            .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container { 
1069                grid-column-start: 1; 
1070                grid-column-end: 2; 
1071                grid-row-start: 2; 
1072                grid-row-end: 2; 
1073                justify-content: center; 
1074                gap: var(--space-xs, 12px); 
1075                height: 36px; 
1076
1077 
1078            .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container { 
1079                grid-column-start: 1; 
1080                grid-column-end: 2; 
1081                grid-row-start: 2; 
1082                grid-row-end: 2; 
1083                max-width: 112px; 
1084                place-self: end; 
1085
1086 
1087            .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container .text { 
1088                display: none; 
1089
1090 
1091            .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-message { 
1092                bottom: 0; 
1093                right: -9px; 
1094
1095 
1096            .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container .mobile-share { 
1097                display: initial; 
1098
1099
1100 
1101        @media screen and (min-width: ${MIN_TABLET_WIDTH}px) and (max-width: ${MAX_TABLET_WIDTH}px) { 
1102            .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container { 
1103                padding-right: 0; 
1104
1105
1106 
1107 
1108    </style> 
1109 
1110    <script> 
1111        AUI().ready(function () { 
1112 
1113            function copyOnClick(text) { 
1114 
1115                const strWithoutHtmlTags = text.replace(/(<([^>]+)>)/gi, ""); 
1116                const strWithoutMarcationBrackets = strWithoutHtmlTags.replace(/ *#\[[^\]]*]/g, ""); 
1117                const strWithoutNextPrevious = strWithoutMarcationBrackets.replace(/Previous    Next/g, ""); 
1118                const strWithoutBlankEnters = strWithoutNextPrevious.replace(/^\s*$(?:\r\n?|\n)/gm, ""); 
1119                const strWithoutBlankLines = strWithoutBlankEnters.replace(/&nbsp;/g, ''); 
1120                const tempInput = document.createElement("textarea"); 
1121                tempInput.value = strWithoutBlankLines; 
1122 
1123                document.body.appendChild(tempInput); 
1124                tempInput.select(); 
1125                document.execCommand("copy"); 
1126 
1127                if (tempInput.value.length > 0) { 
1128                    copyMessages.forEach(copyMessage => copyMessage.classList.add('copy-message-active')); 
1129 
1130                    timerToMessage() 
1131
1132 
1133                document.body.removeChild(tempInput); 
1134
1135 
1136            const copyTextContainers = document.querySelectorAll(".publish_and_social_medias_infos_desk .copy-text-container"); 
1137            copyTextContainers.forEach(copyTextContainer => { 
1138                copyTextContainer.addEventListener("click", (event) => { 
1139                    event.preventDefault(); 
1140                    const titleText = document.querySelector(".main-headline-container .main-headline").innerHTML; 
1141                    const publishSocialMediaText = document.querySelector(".publish_and_social_medias_infos_desk .publish_and_update_date").innerHTML; 
1142                    const tagsText = document.querySelector(".tags").innerHTML; 
1143                    const newsContentText = document.querySelector(".news-content").innerHTML; 
1144                    const text = titleText + publishSocialMediaText + tagsText + newsContentText; 
1145                    copyOnClick(text) 
1146                }); 
1147            }); 
1148 
1149            const mobileShare = async () => { 
1150                try { 
1151                    const shareData = { 
1152                        title: '${newsInfo.mainHeadlineOfTheNews}', 
1153                        text: '', 
1154                        url: '${newsInfo.url}' 
1155                    }; 
1156                    await navigator.share(shareData); 
1157                } catch (err) { 
1158 
1159
1160            }; 
1161 
1162            const mobileShareButtons = document.querySelectorAll(".publish_and_social_medias_infos_desk .mobile-share"); 
1163            mobileShareButtons.forEach(mobileShareButton => { 
1164                mobileShareButton.addEventListener("click", (event) => { 
1165                    event.preventDefault(); 
1166                    mobileShare(); 
1167                }); 
1168            }); 
1169 
1170            const copyMessages = document.querySelectorAll('.copy-message'); 
1171            const timerToMessage = () => { 
1172                setTimeout(() => { 
1173                    removeMessage(); 
1174                }, 2500); 
1175 
1176
1177 
1178            const removeMessage = () => { 
1179                copyMessages.forEach(copyMessage => copyMessage.classList.remove('copy-message-active')); 
1180
1181 
1182        }); 
1183    </script> 
1184 
1185</#macro> 
1186 
1187<#-- ################################################################################################################## --> 
1188 
1189<#-- ############# Site de Crise - Notícia - Render Tags ############################################################## --> 
1190 
1191<#function getCategoriesNamesAndIds vocabularyName categoriesList> 
1192    <#assign tagCategoryList = [] /> 
1193 
1194    <#assign tagsVocabulary = assetVocabularyService.fetchGroupVocabulary(groupId, vocabularyName) /> 
1195    <#list categoriesList as cat> 
1196        <#if tagsVocabulary.getVocabularyId() == cat.embeddedTaxonomyCategory.taxonomyVocabularyId > 
1197            <#assign tagCategoryList += [[cat.taxonomyCategoryName, cat.taxonomyCategoryId]] /> 
1198        </#if> 
1199    </#list> 
1200    <#return tagCategoryList> 
1201</#function> 
1202 
1203<#assign 
1204flagVocabulary = findVocabulary("Flag", vocabularies) 
1205assetCategoryPropService = serviceLocator.findService("com.liferay.asset.category.property.service.AssetCategoryPropertyLocalService") 
1206/> 
1207 
1208<#macro renderNewsTags categoryList targetPageWhenClickTag removeStartParameterWhenTagIsClicked updateTagParamsWhenClicked> 
1209    <#assign tagPrefix = "tags-" + randomNumber(groupId?number)> 
1210    <div class="${tagPrefix}-breakpoint breakpoint"> 
1211        <div class="${tagPrefix} col-2-11 md-col-1-8 sm-col-1-4"> 
1212 
1213            <div class="tags"> 
1214                <#list categoryList as cat> 
1215                    <#assign tagLink = mountUrlToPage("") /> 
1216                    <#assign urlWithoutTrailingSlash = tagLink?substring(0, tagLink?length - 1)> 
1217                    <#assign lastSlashIndex = urlWithoutTrailingSlash?last_index_of("/")> 
1218                    <#assign newUrl = urlWithoutTrailingSlash?substring(0, lastSlashIndex + 1)> 
1219                    <#assign tagLink = newUrl + "categorias?category=" + cat[1] /> 
1220                    <a href="${tagLink}" 
1221                        class="category" cetegoryid="${cat[1]}"># ${cat[0]}</a> 
1222                </#list> 
1223            </div> 
1224        </div>    
1225    </div> 
1226 
1227    <style> 
1228        .${tagPrefix} { 
1229            display: flex; 
1230            flex-direction: column; 
1231            padding: 0; 
1232            gap: var(--space-sm); 
1233
1234 
1235        .${tagPrefix} * { 
1236            margin: 0; 
1237            padding: 0; 
1238
1239 
1240        .${tagPrefix} .tags { 
1241            display: flex; 
1242            flex-wrap: wrap; 
1243            gap: var(--space-xxs, 8px); 
1244            padding: var(--space-lg) 0 0; 
1245
1246 
1247        .${tagPrefix} .tags .category { 
1248            padding: var(--space-xxxs) var(--space-xxs); 
1249            background: var(--color-neutral-100); 
1250            border: var(--border-width-hairline, 1px) solid var(--color-neutral-500); 
1251            border-radius: var(--border-radius-xl); 
1252 
1253            font-family: var(--font-family-base); 
1254            font-style: var(--font-style-normal); 
1255            font-weight: var(--font-weight-regular); 
1256            font-size: var(--font-size-xxxs); 
1257            line-height: var(--line-height-xl); 
1258            color: var(--color-neutral-800, #373737); 
1259            cursor: pointer; 
1260
1261 
1262        body.high-contrast-active .${tagPrefix} .tags .category { 
1263            background: rgba(255, 255, 255, 0.32); 
1264            border: 1px solid rgba(255, 255, 255, 0.32); 
1265            color: var(--text-secondary-default, #F8F8F8); 
1266
1267 
1268        @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) { 
1269            .${tagPrefix} .tags { 
1270                display: flex; 
1271                flex-wrap: wrap; 
1272                gap: 8px; 
1273                padding: var(--space-sm) 0 var(--space-lg); 
1274
1275 
1276            .${tagPrefix} { 
1277                margin-top: var(--space-sm); 
1278
1279
1280    </style> 
1281 
1282    <script> 
1283        AUI().ready(function () { 
1284 
1285            const urlParams = new URLSearchParams(window.location.search); 
1286            const categories = urlParams.getAll("category").sort(); 
1287 
1288            const root = document.querySelector(".${tagPrefix}"); 
1289            const tags = root.querySelectorAll(".category"); 
1290            tags.forEach((tag, index) => { 
1291 
1292                const categoryId = tag.getAttribute("cetegoryid"); 
1293                if (categories.indexOf(categoryId) != -1) { 
1294                    tag.classList.add("active"); 
1295
1296 
1297                <#if updateTagParamsWhenClicked> 
1298                tag.addEventListener("click", (e) => { 
1299                    e.preventDefault(); 
1300                    const clickedTag = e.target; 
1301                    const urlParams = new URLSearchParams(window.location.search); 
1302                    urlParams.delete("tag"); 
1303                    urlParams.delete("category"); 
1304 
1305                    const categoryId = clickedTag.getAttribute("cetegoryid"); 
1306                    urlParams.append("category", categoryId); 
1307 
1308                    <#if removeStartParameterWhenTagIsClicked> 
1309                    urlParams.delete("start"); 
1310                    </#if> 
1311 
1312                    const href = "${themeDisplay.getPortalURL() + mountUrlToPage(targetPageWhenClickTag)}?" + urlParams.toString(); 
1313                    window.location.href = href; 
1314                }); 
1315                </#if> 
1316            }); 
1317        }); 
1318    </script> 
1319 
1320</#macro> 
1321 
1322<#-- ################################################################################################################## --> 
1323 
1324<#-- ############# Site de Crise - Notícia - Imagem de destaque ####################################################### --> 
1325<#macro renderNewsFeaturedMedia newsInfo> 
1326    <#if (newsInfo.newsMedia.imageSrc?? && newsInfo.newsMedia.imageSrc?has_content) || (newsInfo.newsMedia.videoYotubeID?? && newsInfo.newsMedia.videoYotubeID?has_content) || (newsInfo.newsMedia.internalVideo?? && newsInfo.newsMedia.internalVideo.url?has_content)> 
1327        <div class="news-featured-media"> 
1328             
1329            <div class="media-breakpoint breakpoint"> 
1330                <div class="media-col col-2-11 md-col-1-8 sm-col-1-4"> 
1331                    <#if newsInfo.newsMedia.imageSrc?? && newsInfo.newsMedia.imageSrc?has_content> 
1332                        <#-- Midias adaptativas de imagem para desktop e mobile --> 
1333                        <#assign fileDataRequest = restClient.get("/headless-delivery/v1.0/documents/${newsInfo.newsMedia.fileEntryId}") /> 
1334                        <#assign urlAdaptativeMediaMobile = newsInfo.newsMedia.imageSrc/> 
1335                        <#assign urlAdaptativeMediaDesktop = newsInfo.newsMedia.imageSrc/> 
1336                         
1337                        <#if fileDataRequest?? && fileDataRequest.adaptedImages?? > 
1338                            <#assign dataAdaptativeMedia = fileDataRequest.adaptedImages /> 
1339                            <#list dataAdaptativeMedia as data> 
1340                                <#if data.resolutionName == adaptativeMediaDesktopResolutionName> 
1341                                    <#assign urlAdaptativeMediaDesktop = data.contentUrl/> 
1342                                </#if> 
1343                                <#if data.resolutionName == adaptativeMediaMobileResolutionName> 
1344                                    <#assign urlAdaptativeMediaMobile = data.contentUrl/> 
1345                                </#if>      
1346                            </#list> 
1347                        </#if> 
1348 
1349                        <picture > 
1350                            <source media="(max-width:767px)" srcset="${urlAdaptativeMediaMobile}"> 
1351                            <img src="${urlAdaptativeMediaDesktop}" loading="lazy" alt="${newsInfo.newsMedia.imageAlt}"/> 
1352                        </picture> 
1353												<@liferay_util["html-top"]> 
1354                            <meta name="title" content="${newsInfo.mainHeadlineOfTheNews}"> 
1355                            <meta name="description" content="${newsInfo.newsSummary}"> 
1356 
1357                            <meta property="og:url" content="${currentURL}"> 
1358                            <meta property="og:type" content="website"> 
1359                            <meta property="og:title" content="${newsInfo.mainHeadlineOfTheNews}"> 
1360				            				<meta property="og:description" content="${newsInfo.newsSummary}" /> 
1361                            <meta property="og:image" content="${themeDisplay.getPortalURL()}/o/adaptive-media/image/${newsInfo.newsMedia.fileEntryId}/Thumbnail-300x300/image"> 
1362                            <meta property="og:image:alt" content="${newsInfo.newsMedia.imageAlt}"> 
1363 
1364                            <meta name="twitter:card" content="summary_large_image"> 
1365                            <meta name="twitter:url" content="${currentURL}" /> 
1366                            <meta name="twitter:title" content="${newsInfo.mainHeadlineOfTheNews}"> 
1367                            <meta name="twitter:description" content="${newsInfo.newsSummary}" /> 
1368                            <meta name="twitter:image" content= "${themeDisplay.getPortalURL()}/o/adaptive-media/image/${newsInfo.newsMedia.fileEntryId}/Thumbnail-300x300/image" > 
1369							 							<meta name="twitter:image:alt" content="${newsInfo.newsMedia.imageAlt}"> 
1370                        </@> 
1371                    <#else> 
1372                        <#if newsInfo.newsMedia.videoYotubeID?? && newsInfo.newsMedia.videoYotubeID?has_content> 
1373                            <iframe loading="lazy" src="https://www.youtube-nocookie.com/embed/${newsInfo.newsMedia.videoYotubeID}?si=PDNu4EIwtCuSHC1S&amp;controls=0&enablejsapi=1&rel=0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> 
1374                            <@liferay_util["html-top"]>       
1375                            		<meta name="title" content="${newsInfo.mainHeadlineOfTheNews}"> 
1376                            		<meta name="description" content="${newsInfo.newsSummary}"> 
1377							 
1378							    							<meta property="og:url" content="${currentURL}"> 
1379                                <meta property="og:type" content="website"> 
1380                                <meta property="og:title" content="${newsInfo.mainHeadlineOfTheNews}"> 
1381				                				<meta property="og:description" content="${newsInfo.newsSummary}" /> 
1382                                <meta property="og:image" content="https://img.youtube.com/vi/${newsInfo.newsMedia.videoYotubeID}/hqdefault.jpg"> 
1383															  <meta property="og:image:alt" content="Youtube Video Thumbnail"> 
1384 
1385                                <meta name="twitter:card" content="summary_large_image"> 
1386                                <meta name="twitter:url" content="${currentURL}" /> 
1387                                <meta name="twitter:title" content="${newsInfo.mainHeadlineOfTheNews}"> 
1388                                <meta name="twitter:description" content="${newsInfo.newsSummary}" /> 
1389                                <meta name="twitter:image" content= "https://img.youtube.com/vi/${newsInfo.newsMedia.videoYotubeID}/hqdefault.jpg" > 
1390															  <meta name="twitter:image:alt" content="Youtube Video Thumbnail"> 
1391                            </@> 
1392														<#else> 
1393                            <video loading="lazy"> 
1394                                <source src="${newsInfo.newsMedia.internalVideo.url}"> 
1395                                Your browser does not support the video tag. 
1396                            </video> 
1397                        </#if> 
1398 
1399                         <div class="banner-video-icons"> 
1400                            <#if newsInfo.newsMedia.videoYotubeID?? && newsInfo.newsMedia.videoYotubeID?has_content> 
1401                                <picture > 
1402                                    <source media="(max-width:767px)" srcset="https://img.youtube.com/vi/${newsInfo.newsMedia.videoYotubeID}/mqdefault.jpg"> 
1403                                    <img class="banner-video-thumb-iframe" loading="lazy" src="https://img.youtube.com/vi/${newsInfo.newsMedia.videoYotubeID}/hqdefault.jpg" alt="YouTube Thumbnail"/> 
1404                                </picture> 
1405                            </#if> 
1406                            <svg class="banner-video-icon-play" width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 
1407                                <path d="M0 16C0 7.16344 7.16344 0 16 0C24.8366 0 32 7.16344 32 16C32 24.8366 24.8366 32 16 32C7.16344 32 0 24.8366 0 16Z" fill="white" fill-opacity="0.8"/> 
1408                                <path d="M22.2563 15.5744L13.2625 10.0744C13.1868 10.0277 13.1 10.0021 13.0111 10.0001C12.9221 9.99816 12.8343 10.02 12.7566 10.0633C12.6789 10.1066 12.6141 10.1698 12.569 10.2465C12.5239 10.3232 12.5001 10.4105 12.5 10.4994V21.4994C12.5001 21.5884 12.5239 21.6757 12.569 21.7524C12.6141 21.8291 12.6789 21.8923 12.7566 21.9356C12.8343 21.9789 12.9221 22.0007 13.0111 21.9988C13.1 21.9968 13.1868 21.9712 13.2625 21.9244L22.2563 16.4244C22.3301 16.3808 22.3913 16.3186 22.4338 16.2441C22.4763 16.1696 22.4987 16.0852 22.4987 15.9994C22.4987 15.9137 22.4763 15.8293 22.4338 15.7548C22.3913 15.6803 22.3301 15.6181 22.2563 15.5744Z" fill="#008542"/> 
1409                            </svg> 
1410                        </div> 
1411                    </#if> 
1412                </div> 
1413            </div> 
1414             
1415            <div class="credit-legend breakpoint"> 
1416							 
1417                    <div class="credit-legend-container col-2-11 md-col-1-8 sm-col-1-4"> 
1418											<#if newsInfo.newsMedia.legend != ""> 
1419															<div class="legend paragraph-micro-regular"> 
1420																	<p>${newsInfo.newsMedia.legend}</p> 
1421															</div> 
1422											</#if> 
1423											<#if newsInfo.newsMedia.credits != ""> 
1424															<p class="credits paragraph-micro-regular"> 
1425																	${newsInfo.newsMedia.credits} 
1426															</p>     
1427											</#if> 
1428 
1429                    </div> 
1430            </div> 
1431        </div> 
1432    </#if> 
1433    <style> 
1434        .ptb-news__read-news .news-featured-media { 
1435            padding: var(--space-xl) 0 var(--space-xl) 0; 
1436
1437 
1438        .ptb-news__read-news .news-featured-media .media-col { 
1439            position: relative; 
1440
1441 
1442        .ptb-news__read-news .news-featured-media img, 
1443        .ptb-news__read-news .news-featured-media video, 
1444        .ptb-news__read-news .news-featured-media iframe { 
1445            width: 100%; 
1446            max-height: 567px; 
1447            aspect-ratio: 16/9; 
1448            object-fit: cover; 
1449            border-radius: var(--border-radius-lg, 16px); 
1450
1451 
1452        .ptb-news__read-news .news-featured-media .banner-video-icons { 
1453            width: 100%; 
1454            height: 100%; 
1455            position: absolute; 
1456            top: 50%; 
1457            left: 50%; 
1458            transform: translate(-50%,-50%); 
1459            cursor: pointer; 
1460
1461 
1462        .ptb-news__read-news .news-featured-media .banner-video-icons .banner-video-thumb-iframe { 
1463            position: absolute; 
1464            width: 100%; 
1465            height: 100%; 
1466            object-fit: cover; 
1467
1468 
1469        .ptb-news__read-news .news-featured-media .banner-video-icons .banner-video-icon-play { 
1470            position: absolute; 
1471            top: 50%; 
1472            left: 50%; 
1473            transform: translate(-50%,-50%); 
1474
1475 
1476        body.high-contrast-active .ptb-news__read-news .news-featured-media .banner-video-icons .banner-video-icon-play path:nth-child(1) { 
1477            fill: black;   
1478
1479 
1480        body.high-contrast-active .ptb-news__read-news .news-featured-media .banner-video-icons .banner-video-icon-play path:nth-child(2) { 
1481            fill: white;   
1482
1483 
1484        .ptb-news__read-news .news-featured-media *:not(.breakpoint) { 
1485          margin: 0; 
1486
1487        .ptb-news__read-news .news-featured-media * { 
1488            padding: 0; 
1489            font-family: var(--font-family-base); 
1490            line-height: var(--line-height-xl); 
1491
1492 
1493        .ptb-news__read-news .news-featured-media .credits { 
1494            text-align: right; 
1495            color: var(--collor-neutral-dark-to-bright-200, #525252); 
1496            margin-bottom: var(--space-xxxs, 4px); 
1497            font-style: var(--font-style-italic, italic); 
1498            margin-top: var(--space-xxs, 8px); 
1499            margin-bottom: 0; 
1500
1501 
1502        body.high-contrast-active .ptb-news__read-news .news-featured-media .credits { 
1503            color: var(--text-secondary-default, #F8F8F8); 
1504
1505 
1506        .ptb-news__read-news .news-featured-media .legend { 
1507            margin-top: var(--space-xxs, 8px); 
1508            display: flex; 
1509            justify-content: space-between; 
1510
1511 
1512        .ptb-news__read-news .news-featured-media .legend, 
1513        .ptb-news__read-news .news-featured-media .legend * { 
1514            font-style: var(--font-style-italic, italic); 
1515            color: var(--collor-neutral-dark-to-bright-200, #525252); 
1516
1517			 
1518				.ptb-news__read-news .credit-legend .credit-legend-container { 
1519						display: flex; 
1520						justify-content: space-between; 
1521						flex-wrap: wrap; 
1522						gap: 8px; 
1523				}	 
1524 
1525        body.high-contrast-active .ptb-news__read-news .news-featured-media .legend, 
1526        body.high-contrast-active .ptb-news__read-news .news-featured-media .legend * { 
1527            color: var(--text-secondary-default, #F8F8F8); 
1528
1529 
1530        @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) { 
1531            .ptb-news__read-news .news-featured-media .credits { 
1532                text-align: left; 
1533
1534
1535    </style> 
1536 
1537    <script> 
1538        /* Manipulation video*/ 
1539        let videoIsPlaying = false; 
1540 
1541        const modalForClick = document.querySelector(".ptb-news__read-news .news-featured-media .banner-video-icons"); 
1542        const video = document.querySelector(".ptb-news__read-news .news-featured-media .media-col > :first-child"); 
1543        
1544        const playIcon = modalForClick && modalForClick.querySelector(".banner-video-icon-play"); 
1545        modalForClick && modalForClick.addEventListener("click", ()=>{ 
1546            if(video.tagName === "VIDEO") { 
1547                if(videoIsPlaying) { 
1548                    video.pause(); 
1549                    playIcon.style.display = ""; 
1550                    videoIsPlaying = false; 
1551                }  
1552                else { 
1553                    video.play(); 
1554                    playIcon.style.display = "none"; 
1555                    videoIsPlaying = true; 
1556
1557            }   
1558            else if(video.tagName === "IFRAME") { 
1559                const thumbYoutube = modalForClick.querySelector(".banner-video-thumb-iframe"); 
1560                if(videoIsPlaying) { 
1561                    video.contentWindow.postMessage('{"event":"command","func":"pauseVideo"}', '*'); 
1562                    playIcon.style.display = ""; 
1563                    videoIsPlaying = false; 
1564                }  
1565                else { 
1566                    thumbYoutube && (thumbYoutube.style.display = "none"); 
1567                    video.contentWindow.postMessage('{"event":"command","func":"playVideo"}', '*'); 
1568                    playIcon.style.display = "none"; 
1569                    videoIsPlaying = true; 
1570
1571            }       
1572        }); 
1573    </script> 
1574<#--/#if --> 
1575</#macro> 
1576<#-- ################################################################################################################## --> 
1577 
1578<#-- ############# Site de Crise - Notícia - Conteúdo da notícia ###################################################### --> 
1579 
1580<#macro renderNewsContent newsInfo> 
1581 
1582    <#assign targetStr = "<div class='paragraph_separator'><span class='dot'></span><span class='dot'></span><span class='dot'></span><span class='dot'></span></div>"> 
1583    <#assign content = newsInfo.newsContent?replace("<p></p>", targetStr, 'r')> 
1584    <#assign content = content?replace("<p> </p>", targetStr, 'r')> 
1585    <#assign content = content?replace("<p></p>", targetStr, 'r')> 
1586    <#assign content = content?replace("<p>&nbsp;</p>", targetStr, 'r')> 
1587  
1588     
1589    <div class="news-content breakpoint"> 
1590      <div class="col-1-12 md-col-1-8 sm-col-1-4"> 
1591        ${content} 
1592      </div> 
1593        <div class="audio-template audio-pause audio-unmuted" style="display:none"> 
1594            <div class="audio-button-play">  
1595                <svg class="audio-play-icon" width="100%" height="100%" viewBox="0 0 91 90" fill="#008542" xmlns="http://www.w3.org/2000/svg"><circle cx="45.2903" cy="45" r="44.5" stroke="#008542"></circle> <path d="M58.9759 43.2545C60.3409 44.0179 60.3409 45.9821 58.9759 46.7455L38.7505 58.0578C37.4173 58.8034 35.7742 57.8397 35.7742 56.3122L35.7742 33.6878C35.7742 32.1603 37.4173 31.1966 38.7505 31.9422L58.9759 43.2545Z" fill="white"></path> 
1596                </svg> 
1597 
1598                <svg class="audio-pause-icon" width="100%" height="100%" viewBox="0 0 91 90" fill="#008542" xmlns="http://www.w3.org/2000/svg"><circle cx="45.2903" cy="45" r="44.5" stroke="#008542"></circle> <path d="M42.3736 30.4167H33.6236V59.5834H42.3736V30.4167Z" fill="white"></path> <path d="M48.2069 59.5834H56.9569V30.4167H48.2069V59.5834Z" fill="white"></path> 
1599                </svg> 
1600            </div> 
1601            <div class="audio-sondwave">  
1602                <svg class="audio-sondwave-desktop" width="100%" height="100%" viewBox="0 0 590 30" fill="none" xmlns="http://www.w3.org/2000/svg"> 
1603                    <g clip-path="url(#clip0_2625_8152)"> 
1604                    <line x1="0.75" y1="0.75" x2="0.749999" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1605                    <line x1="5.91016" y1="7.75" x2="5.91016" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1606                    <line x1="11.0723" y1="5.75" x2="11.0723" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1607                    <line x1="16.2344" y1="11.75" x2="16.2344" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1608                    <line x1="21.3945" y1="9.75" x2="21.3945" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1609                    <line x1="26.5566" y1="9.75" x2="26.5566" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1610                    <line x1="30.6855" y1="1.75" x2="30.6855" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1611                    <line x1="35.8477" y1="12.75" x2="35.8477" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1612                    <line x1="41.0078" y1="13.75" x2="41.0078" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1613                    <line x1="46.1699" y1="10.75" x2="46.1699" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1614                    <line x1="51.3301" y1="8.75" x2="51.3301" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1615                    <line x1="56.4922" y1="0.75" x2="56.4922" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1616                    <line x1="61.6523" y1="7.75" x2="61.6523" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1617                    <line x1="66.8145" y1="5.75" x2="66.8145" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1618                    <line x1="71.9766" y1="11.75" x2="71.9766" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1619                    <line x1="77.1367" y1="9.75" x2="77.1367" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1620                    <line x1="82.2988" y1="9.75" x2="82.2988" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1621                    <line x1="86.4277" y1="1.75" x2="86.4277" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1622                    <line x1="91.5879" y1="12.75" x2="91.5879" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1623                    <line x1="96.75" y1="13.75" x2="96.75" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1624                    <line x1="101.91" y1="10.75" x2="101.91" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1625                    <line x1="107.072" y1="8.75" x2="107.072" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1626                    <line x1="112.234" y1="0.75" x2="112.234" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1627                    <line x1="117.395" y1="7.75" x2="117.395" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1628                    <line x1="122.557" y1="5.75" x2="122.557" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1629                    <line x1="127.717" y1="11.75" x2="127.717" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1630                    <line x1="132.879" y1="9.75" x2="132.879" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1631                    <line x1="138.041" y1="9.75" x2="138.041" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1632                    <line x1="142.17" y1="1.75" x2="142.17" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1633                    <line x1="147.33" y1="12.75" x2="147.33" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1634                    <line x1="151.75" y1="0.75" x2="151.75" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1635                    <line x1="156.91" y1="7.75" x2="156.91" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1636                    <line x1="162.072" y1="5.75" x2="162.072" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1637                    <line x1="167.234" y1="11.75" x2="167.234" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1638                    <line x1="172.395" y1="9.75" x2="172.395" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1639                    <line x1="177.557" y1="9.75" x2="177.557" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1640                    <line x1="181.686" y1="1.75" x2="181.686" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1641                    <line x1="186.848" y1="12.75" x2="186.848" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1642                    <line x1="192.008" y1="13.75" x2="192.008" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1643                    <line x1="197.17" y1="10.75" x2="197.17" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1644                    <line x1="202.33" y1="8.75" x2="202.33" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1645                    <line x1="207.492" y1="0.75" x2="207.492" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1646                    <line x1="212.652" y1="7.75" x2="212.652" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1647                    <line x1="217.814" y1="5.75" x2="217.814" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1648                    <line x1="222.977" y1="11.75" x2="222.977" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1649                    <line x1="228.137" y1="9.75" x2="228.137" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1650                    <line x1="233.299" y1="9.75" x2="233.299" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1651                    <line x1="237.428" y1="1.75" x2="237.428" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1652                    <line x1="242.588" y1="12.75" x2="242.588" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1653                    <line x1="247.75" y1="13.75" x2="247.75" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1654                    <line x1="252.91" y1="10.75" x2="252.91" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1655                    <line x1="258.072" y1="8.75" x2="258.072" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1656                    <line x1="263.234" y1="0.75" x2="263.234" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1657                    <line x1="268.395" y1="7.75" x2="268.395" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1658                    <line x1="273.557" y1="5.75" x2="273.557" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1659                    <line x1="278.717" y1="11.75" x2="278.717" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1660                    <line x1="283.879" y1="9.75" x2="283.879" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1661                    <line x1="289.041" y1="9.75" x2="289.041" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1662                    <line x1="293.17" y1="1.75" x2="293.17" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1663                    <line x1="298.33" y1="12.75" x2="298.33" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1664                    <line x1="302.75" y1="10.75" x2="302.75" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1665                    <line x1="307.912" y1="8.75" x2="307.912" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1666                    <line x1="313.072" y1="0.75" x2="313.072" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1667                    <line x1="318.234" y1="7.75" x2="318.234" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1668                    <line x1="323.395" y1="5.75" x2="323.395" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1669                    <line x1="328.557" y1="11.75" x2="328.557" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1670                    <line x1="333.719" y1="9.75" x2="333.719" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1671                    <line x1="338.879" y1="9.75" x2="338.879" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1672                    <line x1="343.008" y1="1.75" x2="343.008" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1673                    <line x1="348.17" y1="12.75" x2="348.17" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1674                    <line x1="353.33" y1="13.75" x2="353.33" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1675                    <line x1="358.492" y1="10.75" x2="358.492" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1676                    <line x1="363.652" y1="8.75" x2="363.652" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1677                    <line x1="368.814" y1="0.75" x2="368.814" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1678                    <line x1="373.977" y1="7.75" x2="373.977" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1679                    <line x1="379.137" y1="5.75" x2="379.137" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1680                    <line x1="384.299" y1="11.75" x2="384.299" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1681                    <line x1="389.459" y1="9.75" x2="389.459" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1682                    <line x1="394.621" y1="9.75" x2="394.621" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1683                    <line x1="398.75" y1="1.75" x2="398.75" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1684                    <line x1="403.912" y1="12.75" x2="403.912" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1685                    <line x1="408.33" y1="10.75" x2="408.33" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1686                    <line x1="413.492" y1="8.75" x2="413.492" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1687                    <line x1="418.654" y1="0.75" x2="418.654" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1688                    <line x1="423.814" y1="7.75" x2="423.814" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1689                    <line x1="428.977" y1="5.75" x2="428.977" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1690                    <line x1="434.137" y1="11.75" x2="434.137" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1691                    <line x1="439.299" y1="9.75" x2="439.299" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1692                    <line x1="444.461" y1="9.75" x2="444.461" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1693                    <line x1="448.59" y1="1.75" x2="448.59" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1694                    <line x1="453.75" y1="12.75" x2="453.75" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1695                    <line x1="458.912" y1="13.75" x2="458.912" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1696                    <line x1="464.072" y1="10.75" x2="464.072" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1697                    <line x1="469.234" y1="8.75" x2="469.234" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1698                    <line x1="474.395" y1="0.75" x2="474.395" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1699                    <line x1="479.557" y1="7.75" x2="479.557" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1700                    <line x1="484.719" y1="5.75" x2="484.719" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1701                    <line x1="489.879" y1="11.75" x2="489.879" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1702                    <line x1="495.041" y1="9.75" x2="495.041" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1703                    <line x1="500.201" y1="9.75" x2="500.201" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1704                    <line x1="504.33" y1="1.75" x2="504.33" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1705                    <line x1="509.492" y1="12.75" x2="509.492" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1706                    <line x1="513.912" y1="10.75" x2="513.912" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1707                    <line x1="519.072" y1="8.75" x2="519.072" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1708                    <line x1="524.234" y1="0.75" x2="524.234" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1709                    <line x1="529.395" y1="7.75" x2="529.395" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1710                    <line x1="534.557" y1="5.75" x2="534.557" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1711                    <line x1="539.719" y1="11.75" x2="539.719" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1712                    <line x1="544.879" y1="9.75" x2="544.879" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1713                    <line x1="550.041" y1="9.75" x2="550.041" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1714                    <line x1="554.17" y1="1.75" x2="554.17" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1715                    <line x1="559.332" y1="12.75" x2="559.332" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1716                    <line x1="564.492" y1="13.75" x2="564.492" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1717                    <line x1="569.654" y1="10.75" x2="569.654" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1718                    <line x1="574.814" y1="8.75" x2="574.814" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1719                    <line x1="579.977" y1="0.75" x2="579.977" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1720                    <line x1="585.137" y1="7.75" x2="585.137" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1721                    <line x1="590.299" y1="5.75" x2="590.299" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1722                    </g> 
1723                    <defs> 
1724                    <clipPath id="clip0_2625_8152"> 
1725                    <rect width="590" height="30" fill="white"/> 
1726                    </clipPath> 
1727                    </defs> 
1728                </svg> 
1729                <svg class="audio-sondwave-mobile" width="100%" height="100%" viewBox="0 0 102 30" fill="none" xmlns="http://www.w3.org/2000/svg"> 
1730                    <g clip-path="url(#clip0_2625_8922)"> 
1731                    <line x1="0.75" y1="0.75" x2="0.749999" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1732                    <line x1="5.91016" y1="7.75" x2="5.91016" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1733                    <line x1="11.0723" y1="5.75" x2="11.0723" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1734                    <line x1="16.2344" y1="11.75" x2="16.2344" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1735                    <line x1="21.3945" y1="9.75" x2="21.3945" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1736                    <line x1="26.5566" y1="9.75" x2="26.5566" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1737                    <line x1="30.6855" y1="1.75" x2="30.6855" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1738                    <line x1="35.8477" y1="12.75" x2="35.8477" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1739                    <line x1="41.0078" y1="13.75" x2="41.0078" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1740                    <line x1="46.1699" y1="10.75" x2="46.1699" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1741                    <line x1="51.3301" y1="8.75" x2="51.3301" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1742                    <line x1="56.4922" y1="0.75" x2="56.4922" y2="29.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1743                    <line x1="61.6523" y1="7.75" x2="61.6523" y2="21.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1744                    <line x1="66.8145" y1="5.75" x2="66.8145" y2="24.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1745                    <line x1="71.9766" y1="11.75" x2="71.9766" y2="18.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1746                    <line x1="77.1367" y1="9.75" x2="77.1367" y2="20.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1747                    <line x1="82.2988" y1="9.75" x2="82.2988" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1748                    <line x1="86.4277" y1="1.75" x2="86.4277" y2="28.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1749                    <line x1="91.5879" y1="12.75" x2="91.5879" y2="17.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1750                    <line x1="96.75" y1="13.75" x2="96.75" y2="16.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1751                    <line x1="101.91" y1="10.75" x2="101.91" y2="19.25" stroke="#008542" stroke-width="1.5" stroke-linecap="round"/> 
1752                    </g> 
1753                    <defs> 
1754                    <clipPath id="clip0_2625_8922"> 
1755                    <rect width="102" height="30" fill="white"/> 
1756                    </clipPath> 
1757                    </defs> 
1758                </svg> 
1759            </div> 
1760            <div class="audio-time paragraph-micro-bold">  </div> 
1761            <div class="audio-button-mute"> 
1762                <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32" fill="none"> 
1763                    <path d="M27.3625 9.6375C28.1993 10.4723 28.8632 11.464 29.3161 12.5558C29.7691 13.6476 30.0023 14.818 30.0023 16C30.0023 17.182 29.7691 18.3524 29.3161 19.4442C28.8632 20.536 28.1993 21.5277 27.3625 22.3625M10 21H4C3.73478 21 3.48043 20.8946 3.29289 20.7071C3.10536 20.5196 3 20.2652 3 20V12C3 11.7348 3.10536 11.4804 3.29289 11.2929C3.48043 11.1054 3.73478 11 4 11H10M10 21L19 28V4L10 11M10 21V11M23.825 13.175C24.1969 13.5455 24.492 13.9857 24.6933 14.4705C24.8947 14.9553 24.9983 15.4751 24.9983 16C24.9983 16.5249 24.8947 17.0447 24.6933 17.5295C24.492 18.0143 24.1969 18.4545 23.825 18.825" stroke="#525252" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 
1764                </svg> 
1765            </div> 
1766        </div> 
1767    </div> 
1768     
1769			  <#if categoriesAsssetEntryResponse?? && categoriesAsssetEntryResponse?has_content && categoriesAsssetEntryResponse.taxonomyCategoryBriefs??> 
1770            <@renderNewsTags tagCategoryList NEWS_PAGE_NAME removeStartParameterWhenTagIsClicked includeRequestParams /> 
1771        </#if> 
1772    <style> 
1773 
1774        .ptb-news__read-news .news-content p { 
1775            margin-bottom: var(--space-md, 24px); 
1776
1777 
1778        .ptb-news__read-news .news-content strong { 
1779            font-weight: var(--font-weight-bold); 
1780
1781 
1782        .ptb-news__read-news .news-content em { 
1783            font-style: var(--font-style-italic); 
1784
1785 
1786        .ptb-news__read-news .news-content a { 
1787            font-family: var(--font-family-base); 
1788            font-style: var(--font-style-normal, normal); 
1789            font-weight: var(--font-weight-bold, 700); 
1790            font-size: var(--font-size-xs, 18px); 
1791            line-height: var(--line-height-xl, 160%); 
1792 
1793            color: #008542; 
1794
1795 
1796        body.high-contrast-active .ptb-news__read-news .news-content a { 
1797            color: #E4F7E8; 
1798
1799 
1800        .ptb-news__read-news .news-content ul { 
1801            padding-left: 27px; 
1802            margin-top: -16px; 
1803
1804 
1805        .ptb-news__read-news .news-content ul li::marker { 
1806            content: "■" !important; 
1807            color: var(--color-secondary-medium) !important; 
1808            font-size: var(--size-xxs); 
1809
1810 
1811        .ptb-news__read-news .news-content ul li { 
1812            color: var(--color-text-primary-default); 
1813            padding: 8px 0; 
1814 
1815            /*paragraph-sm-regular*/ 
1816            font-size: var(--font-size-xxs); 
1817            line-height: var(--line-height-xl); 
1818            font-weight: var(--font-weight-regular); 
1819            font-style: var(--font-style-normal); 
1820            text-decoration: var(--text-decoration-none); 
1821 
1822            margin-left: calc(-1* var(--space-sm)); 
1823            padding-left: var(--space-sm); 
1824
1825 
1826        .ptb-news__read-news .news-content ul li * { 
1827            color: var(--color-text-primary-default); 
1828            padding: 8px 0; 
1829 
1830            /*paragraph-sm-regular*/ 
1831            font-size: var(--font-size-xxs); 
1832            line-height: var(--line-height-xl); 
1833            font-weight: var(--font-weight-regular); 
1834            font-style: var(--font-style-normal); 
1835            text-decoration: var(--text-decoration-none); 
1836        }      
1837 
1838        @media screen and (min-width: 1024px) { 
1839          .ptb-news__read-news .news-content > * { 
1840            grid-column-start: 3; 
1841            grid-column-end: 11; 
1842
1843 
1844          <#if typeOfNews?? && typeOfNews?has_content && typeOfNews == "Infográfico" > 
1845            .ptb-news__read-news .news-content > *:has(img) { 
1846                grid-column-start: 2; 
1847                grid-column-end: 12; 
1848
1849
1850 
1851          </#if> 
1852
1853 
1854        .ptb-news__read-news .news-content figure { 
1855            margin-bottom: var(--space-sm, 16px); 
1856
1857 
1858        .ptb-news__read-news .news-content figure figcaption { 
1859            display: flex; 
1860            justify-content: space-between; 
1861            align-items: flex-start; 
1862            align-self: stretch; 
1863            margin-top: var(--space-xxs, 8px); 
1864            text-align: justify; 
1865
1866 
1867        .ptb-news__read-news .news-content figure figcaption, 
1868        .ptb-news__read-news .news-content figure figcaption * { 
1869            color: var(--color-neutral-700, #525252); 
1870            font-family: var(--font-family-base); 
1871            font-size: var(--font-size-xxxs, 14px); 
1872            font-style: var(--font-style-italic, italic); 
1873            font-weight: var(--font-weight-regular, 400); 
1874            line-height: var(--line-height-xl, 160%); 
1875
1876 
1877        body.high-contrast-active .ptb-news__read-news .news-content figure figcaption, 
1878        body.high-contrast-active .ptb-news__read-news .news-content figure figcaption * { 
1879            color: var(--text-secondary-default, #F8F8F8); 
1880
1881         
1882        .ptb-news__read-news .news-content figure figcaption br { 
1883            display: none; 
1884
1885 
1886        .ptb-news__read-news .news-content .embed-responsive { 
1887            width: 100% !important; 
1888            border-radius: var(--border-radius-md, 16px); 
1889            margin-bottom: var(--space-md, 16px); 
1890
1891 
1892        .ptb-news__read-news .news-content img { 
1893            width: 100%; 
1894					  height: auto; 
1895            object-fit: cover; 
1896            border-radius: var(--border-radius-md, 16px); 
1897
1898 
1899        <#if typeOfNews?? && typeOfNews?has_content && typeOfNews == "Artigo" > 
1900            .ptb-news__read-news .news-content img  { 
1901                aspect-ratio: 16/9; 
1902
1903        </#if> 
1904 
1905        .ptb-news__read-news .news-content .paragraph_separator { 
1906            display: flex; 
1907            width: 100%; 
1908            height: fit-content; 
1909            justify-content: center; 
1910            gap: 6px; 
1911
1912 
1913        .ptb-news__read-news .news-content .paragraph_separator .dot { 
1914            height: var(--size-micro, 4px); 
1915            width: var(--size-micro, 4px); 
1916            background-color: #959595; 
1917            border-radius: 100%; 
1918            display: inline-block; 
1919
1920 
1921        .ptb-news__read-news .news-content * { 
1922            font-family: var(--font-family-base); 
1923            font-style: var(--font-style-normal, normal); 
1924            font-weight: var(--font-weight-regular, 400); 
1925            font-size: var(--font-size-xs, 18px); 
1926            line-height: var(--line-height-xl, 160%); 
1927            color: var(--color-neutral-800, #373737); 
1928
1929 
1930        body.high-contrast-active .ptb-news__read-news .news-content * { 
1931            color: var(--text-primary-default, var(--color-neutral-100)); 
1932
1933 
1934        .ptb-news__read-news .news-content h1, 
1935        .ptb-news__read-news .news-content h1 *, 
1936        .ptb-news__read-news .news-content h2, 
1937        .ptb-news__read-news .news-content h2 *, 
1938        .ptb-news__read-news .news-content h3, 
1939        .ptb-news__read-news .news-content h3 *, 
1940        .ptb-news__read-news .news-content h4, 
1941        .ptb-news__read-news .news-content h4 *, 
1942        .ptb-news__read-news .news-content h5, 
1943        .ptb-news__read-news .news-content h5 *, 
1944        .ptb-news__read-news .news-content h6, 
1945        .ptb-news__read-news .news-content h6 * { 
1946            color: var(--color-neutral-800, #373737) !important; 
1947
1948 
1949        body.high-contrast-active .ptb-news__read-news .news-content h1, 
1950        body.high-contrast-active .ptb-news__read-news .news-content h1 *, 
1951        body.high-contrast-active .ptb-news__read-news .news-content h2, 
1952        body.high-contrast-active .ptb-news__read-news .news-content h2 *, 
1953        body.high-contrast-active .ptb-news__read-news .news-content h3, 
1954        body.high-contrast-active .ptb-news__read-news .news-content h3 *, 
1955        body.high-contrast-active .ptb-news__read-news .news-content h4, 
1956        body.high-contrast-active .ptb-news__read-news .news-content h4 *, 
1957        body.high-contrast-active .ptb-news__read-news .news-content h5, 
1958        body.high-contrast-active .ptb-news__read-news .news-content h5 *, 
1959        body.high-contrast-active .ptb-news__read-news .news-content h6, 
1960        body.high-contrast-active .ptb-news__read-news .news-content h6 * { 
1961            color: var(--text-primary-default, var(--color-neutral-100)) !important; 
1962
1963 
1964        .ptb-news__read-news .news-content h1:last-child, 
1965        .ptb-news__read-news .news-content h2:last-child, 
1966        .ptb-news__read-news .news-content h3:last-child, 
1967        .ptb-news__read-news .news-content h4:last-child, 
1968        .ptb-news__read-news .news-content h5:last-child, 
1969        .ptb-news__read-news .news-content h5:last-child, 
1970        .ptb-news__read-news .news-content h6:last-child, 
1971        .ptb-news__read-news .news-content p:last-child { 
1972            padding-bottom: 0 !important; 
1973
1974 
1975        .ptb-news__read-news .news-content h1, 
1976        .ptb-news__read-news .news-content h1 * { 
1977            font-size: var(--font-size-xxl) !important; 
1978            line-height: var(--line-height-sm) !important; 
1979            font-weight: var(--font-weight-bold) !important; 
1980            font-style: var(--font-style-normal) !important; 
1981            text-decoration: var(--text-decoration-none) !important; 
1982
1983 
1984        .ptb-news__read-news .news-content h2, 
1985        .ptb-news__read-news .news-content h2 * { 
1986             
1987            font-size: var(--font-size-xl) !important; 
1988            line-height: var(--line-height-sm) !important; 
1989            font-weight: var(--font-weight-bold) !important; 
1990            font-style: var(--font-style-normal) !important; 
1991            text-decoration: var(--text-decoration-none) !important; 
1992 
1993
1994 
1995        .ptb-news__read-news .news-content h2 { 
1996            margin-top: 48px !important; 
1997           margin-bottom: var(--space-xl, 40px) !important; 
1998 
1999
2000 
2001        .ptb-news__read-news .news-content h3, 
2002        .ptb-news__read-news .news-content h3 * { 
2003            font-size: var(--font-size-lg) !important; 
2004            line-height: var(--line-height-sm) !important; 
2005            font-weight: var(--font-weight-bold) !important; 
2006            font-style: var(--font-style-normal) !important; 
2007            text-decoration: var(--text-decoration-none) !important; 
2008
2009 
2010        .ptb-news__read-news .news-content h3 { 
2011            margin-bottom: var(--space-sm, 16px) !important; 
2012            margin-top: 48px !important; 
2013
2014 
2015        .ptb-news__read-news .news-content h4, 
2016        .ptb-news__read-news .news-content h4 * { 
2017            font-size: var(--font-size-md) !important; 
2018            line-height: var(--line-height-md) !important; 
2019            font-weight: var(--font-weight-bold) !important; 
2020            font-style: var(--font-style-normal) !important; 
2021            text-decoration: var(--text-decoration-none) !important; 
2022
2023 
2024        .ptb-news__read-news .news-content h4 { 
2025            margin-top: 48px !important; 
2026            margin-bottom: var(--space-sm, 16px) !important; 
2027
2028 
2029        .ptb-news__read-news .news-content h5, 
2030        .ptb-news__read-news .news-content h5 * { 
2031            font-size: var(--font-size-sm) !important; 
2032            line-height: var(--line-height-md) !important; 
2033            font-weight: var(--font-weight-bold) !important; 
2034            font-style: var(--font-style-normal) !important; 
2035            text-decoration: var(--text-decoration-none) !important; 
2036
2037 
2038        .ptb-news__read-news .news-content h5 { 
2039            margin-top: 48px !important; 
2040            margin-bottom: var(--space-sm, 16px) !important; 
2041
2042 
2043        .ptb-news__read-news .news-content table { 
2044            border-collapse: collapse; 
2045            border: none; 
2046            width: 100% !important; 
2047            margin: var(--space-md, 24px) 0; 
2048
2049 
2050        .ptb-news__read-news .news-content table * { 
2051            font-size: var(--font-size-xxs, 16px); 
2052            font-style: var(--font-style-normal, normal); 
2053            font-weight: var(--font-weight-regular, 400); 
2054            line-height: var(--line-height-xl, 160%); 
2055            color: var(--color-neutral-800, #373737); 
2056            border: 0; 
2057
2058 
2059        body.high-contrast-active .ptb-news__read-news .news-content table * { 
2060            color: var(--text-primary-default, var(--color-neutral-100)); 
2061
2062 
2063        .ptb-news__read-news .news-content table tbody > :first-child, 
2064        .ptb-news__read-news .news-content table tbody > :first-child * { 
2065            font-weight: var(--font-weight-bold, 700); 
2066            flex: 1 0 0; 
2067            background: var(--background-Surface-level-02, #F8F8F8); 
2068
2069 
2070        body.high-contrast-active .ptb-news__read-news .news-content table tbody > :first-child, 
2071        body.high-contrast-active .ptb-news__read-news .news-content table tbody > :first-child * { 
2072            background: #373737; 
2073
2074         
2075        .ptb-news__read-news .news-content table tbody { 
2076            display: flex; 
2077            flex-direction: column; 
2078
2079 
2080        .ptb-news__read-news .news-content table tbody * { 
2081            display: flex; 
2082            height: 100%; 
2083            align-items: center; 
2084            flex: 1 0 0; 
2085
2086	             
2087        .ptb-news__read-news .news-content table tbody tr * {          
2088            padding: 23px var(--space-lg, 32px); 
2089        }	 
2090             
2091 
2092        .ptb-news__read-news .news-content table tbody tr { 
2093            border-radius: var(--border-radius-md); 
2094            border: var(--border-width-hairline, 1px) solid #EEEEEE; 
2095
2096 
2097        body.high-contrast-active .ptb-news__read-news .news-content table tbody tr { 
2098            border: var(--border-width-hairline, 1px) solid #525252; 
2099
2100 
2101        .ptb-news__read-news .news-content table tbody tr:not(:last-child) { 
2102            border-bottom-left-radius: 0; 
2103            border-bottom-right-radius: 0; 
2104
2105 
2106        .ptb-news__read-news .news-content table tbody tr:not(:first-child) { 
2107            border-top-left-radius: 0; 
2108            border-top-right-radius: 0; 
2109            border-top: none; 
2110
2111 
2112        .ptb-news__read-news .news-content table tbody tr td:not(:last-child) { 
2113            border-right: var(--border-width-hairline, 1px) solid #EEEEEE; 
2114
2115 
2116        body.high-contrast-active .ptb-news__read-news .news-content table tbody tr td:not(:last-child) { 
2117            border-right: var(--border-width-hairline, 1px) solid #525252; 
2118
2119 
2120        .ptb-news__read-news .news-content table tbody tr:first-child td { 
2121            border-top: var(--border-width-hairline, 1px) solid #EEEEEE; 
2122            border-bottom: var(--border-width-hairline, 1px) solid #EEEEEE; 
2123
2124 
2125        body.high-contrast-active .ptb-news__read-news .news-content table tbody tr:first-child td { 
2126            border-top: var(--border-width-hairline, 1px) solid #525252; 
2127            border-bottom: var(--border-width-hairline, 1px) solid #525252; 
2128
2129 
2130        .ptb-news__read-news .news-content table tbody tr td:first-child { 
2131            padding-left: 0; 
2132
2133 
2134        .ptb-news__read-news .news-content table tbody tr td:last-child{ 
2135            padding-right: 0; 
2136
2137 
2138        .ptb-news__read-news .news-content audio { 
2139            display: none; 
2140
2141 
2142        .ptb-news__read-news .news-content .audio-template { 
2143            display: flex; 
2144            padding: var(--space-sm, 16px); 
2145            align-items: center; 
2146            gap: var(--space-md, 24px); 
2147            align-self: stretch; 
2148            border-radius: var(--border-radius-lg, 16px); 
2149            border: var(--border-width-hairline, 1px) solid var(--border-color-mid); 
2150            background: var(--background-card-default, #FFF); 
2151            max-height: var(--size-giant, 72px); 
2152            margin: 48px 0; 
2153
2154 
2155        body.high-contrast-active .ptb-news__read-news .news-content .audio-template { 
2156            background: var(--background-card-default, #010101); 
2157            border: var(--border-width-hairline, 1px) solid #525252; 
2158
2159 
2160        .ptb-news__read-news .news-content .audio-template .audio-button-play { 
2161            display: flex; 
2162            width: var(--size-xl, 40px); 
2163            height: var(--size-xl, 40px); 
2164            justify-content: center; 
2165            align-items: center; 
2166            flex-grow: 0; 
2167            flex-shrink: 0; 
2168            cursor: pointer; 
2169
2170 
2171        body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-play .audio-play-icon, 
2172        body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-play .audio-pause-icon { 
2173            fill: #FFFFFF; 
2174
2175 
2176        body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-play .audio-play-icon path, 
2177        body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-play .audio-pause-icon path { 
2178            fill: #010101; 
2179
2180 
2181        .ptb-news__read-news .news-content .audio-template.audio-pause .audio-button-play .audio-play-icon { 
2182            display: block; 
2183
2184 
2185        .ptb-news__read-news .news-content .audio-template.audio-pause .audio-button-play .audio-pause-icon { 
2186            display: none; 
2187
2188 
2189        .ptb-news__read-news .news-content .audio-template.audio-play .audio-button-play .audio-play-icon { 
2190            display: none; 
2191
2192 
2193        .ptb-news__read-news .news-content .audio-template.audio-play .audio-button-play .audio-pause-icon { 
2194            display: block; 
2195
2196 
2197        .ptb-news__read-news .news-content .audio-template .audio-sondwave { 
2198            display: flex; 
2199            flex-direction: column; 
2200            align-items: flex-start; 
2201            gap: var(--space-xxs, 8px); 
2202            flex: 1 0 0; 
2203            height: 100%; 
2204            flex-grow: 1; 
2205            flex-shrink: 1; 
2206
2207 
2208        .ptb-news__read-news .news-content .audio-template .audio-sondwave line { 
2209            stroke: #008542; 
2210
2211 
2212        .ptb-news__read-news .news-content .audio-template .audio-sondwave line.line-active { 
2213            stroke: #90EE90; 
2214
2215 
2216        body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-sondwave line { 
2217            stroke: #E4F7E8; 
2218
2219 
2220        body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-sondwave line.line-active { 
2221            stroke: #666666; 
2222
2223 
2224        .ptb-news__read-news .news-content .audio-template .audio-sondwave .audio-sondwave-mobile { 
2225            display: none; 
2226
2227 
2228        .ptb-news__read-news .news-content .audio-template .audio-time { 
2229            display: flex; 
2230            flex-direction: column; 
2231            align-items: flex-start; 
2232            gap: var(--space-xxs, 8px); 
2233            flex: 1 0 0; 
2234            color: var(--text-primary-accent, #008542); 
2235            text-align: center; 
2236            font-family: var(--font-family-base); 
2237            line-height: 124% !important;  
2238            flex-grow: 0; 
2239            flex-shrink: 0; 
2240
2241 
2242        body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-time {     
2243            color: var(--text-primary-accent, #E4F7E8); 
2244
2245 
2246        .ptb-news__read-news .news-content .audio-template .audio-button-mute { 
2247            width: var(--size-lg, 32px); 
2248            height: var(--size-lg, 32px); 
2249            flex-grow: 0; 
2250            flex-shrink: 0; 
2251            cursor: pointer; 
2252
2253 
2254        body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-mute svg path { 
2255            stroke: white; 
2256            fill: none; 
2257
2258 
2259        .ptb-news__read-news .news-content .audio-template.audio-muted .audio-button-mute { 
2260            opacity: 0.6; 
2261
2262 
2263         
2264        @media screen and (max-width: 1023px) and (min-width: ${MAX_MOBILE_WIDTH}px) { 
2265            .ptb-news__read-news .news-content > * { 
2266                grid-column-start: 1; 
2267                grid-column-end: 9; 
2268            }        
2269
2270         
2271 
2272        @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) { 
2273 
2274            .ptb-news__read-news .news-content * { 
2275                font-size: var(--font-size-xxs, 16px); 
2276
2277 
2278             
2279            .ptb-news__read-news .news-content > * { 
2280                grid-column-start: 1; 
2281                grid-column-end: 5; 
2282
2283             
2284 
2285            .ptb-news__read-news .news-content h1, 
2286            .ptb-news__read-news .news-content h1 * { 
2287                font-size: var(--font-size-xl) !important; 
2288                line-height: var(--line-height-sm) !important; 
2289                font-weight: var(--font-weight-bold) !important; 
2290                font-style: var(--font-style-normal) !important; 
2291                text-decoration: var(--text-decoration-none) !important; 
2292 
2293
2294 
2295            .ptb-news__read-news .news-content h2, 
2296            .ptb-news__read-news .news-content h2 * { 
2297                font-size: var(--font-size-lg) !important; 
2298                line-height: var(--line-height-sm) !important; 
2299                font-weight: var(--font-weight-bold) !important; 
2300                font-style: var(--font-style-normal) !important; 
2301                text-decoration: var(--text-decoration-none) !important; 
2302
2303 
2304            .ptb-news__read-news .news-content h2 { 
2305                margin-bottom: var(--space-md, 24px) !important; 
2306
2307 
2308            .ptb-news__read-news .news-content h3, 
2309            .ptb-news__read-news .news-content h3 * { 
2310                font-size: var(--font-size-md) !important; 
2311                line-height: var(--line-height-sm) !important; 
2312                font-weight: var(--font-weight-bold) !important; 
2313                font-style: var(--font-style-normal) !important; 
2314                text-decoration: var(--text-decoration-none) !important; 
2315
2316 
2317            .ptb-news__read-news .news-content h3 { 
2318                margin-top: var(--space-xxs, 8px) !important; 
2319
2320 
2321            .ptb-news__read-news .news-content h4,  
2322            .ptb-news__read-news .news-content h4 * { 
2323                font-size: var(--font-size-sm) !important; 
2324                line-height: var(--line-height-md) !important; 
2325                font-weight: var(--font-weight-bold) !important; 
2326                font-style: var(--font-style-normal) !important; 
2327                text-decoration: var(--text-decoration-none) !important; 
2328
2329 
2330            .ptb-news__read-news .news-content h5, 
2331            .ptb-news__read-news .news-content h5 * { 
2332                font-size: var(--font-size-xs) !important; 
2333                line-height: var(--line-height-md) !important; 
2334                font-weight: var(--font-weight-bold) !important; 
2335                font-style: var(--font-style-normal) !important; 
2336                text-decoration: var(--text-decoration-none) !important; 
2337
2338 
2339            .ptb-news__read-news .news-content figure figcaption { 
2340                flex-direction: column; 
2341                gap: var(--space-xxs, 8px); 
2342
2343 
2344            .ptb-news__read-news .news-content figure figcaption, 
2345            .ptb-news__read-news .news-content figure figcaption * { 
2346                font-size: var(--font-size-micro, 12px); 
2347
2348 
2349            .ptb-news__read-news .news-content table { 
2350                margin-top: var(--space-xxs, 8px); 
2351                margin-bottom: var(--space-lg, 32px); 
2352
2353 
2354            .ptb-news__read-news .news-content table * { 
2355                font-size: var(--font-size-micro, 12px); 
2356                line-height: 19.2%; 
2357
2358 
2359            .ptb-news__read-news .news-content table tbody * { 
2360                height: 43px; 
2361                padding: var(--space-xs, 12px); 
2362
2363 
2364            .ptb-news__read-news .news-content .audio-template { 
2365                margin-top: var(--space-xxs, 8px); 
2366                margin-bottom: var(--space-lg, 32px); 
2367            }            
2368
2369 
2370        @media screen and (max-width: 500px) { 
2371             .ptb-news__read-news .news-content .audio-template .audio-sondwave .audio-sondwave-desktop { 
2372                display: none; 
2373
2374 
2375            .ptb-news__read-news .news-content .audio-template .audio-sondwave .audio-sondwave-mobile { 
2376                display: block; 
2377
2378
2379    </style> 
2380 
2381    <style> 
2382.ws-carousel p { 
2383    margin: var(--space-none, 0) !important; 
2384
2385 
2386.ws-carousel { 
2387    display: flex; 
2388    flex-direction: column; 
2389    gap: var(--space-lg, 32px); 
2390    margin: var(--space-big, 72px) auto; 
2391
2392 
2393.ws-carousel .ws-carousel-header { 
2394    display: flex; 
2395    justify-content: space-between; 
2396
2397 
2398.ws-carousel .ws-carousel-header .h2 { 
2399    color: var(--color-neutral-800, #373737) !important; 
2400    font-family: var(--font-family-base), "Petrobras Sans" !important; 
2401    line-height: 100% !important; 
2402    margin: var(--space-none, 0) ! important; 
2403
2404 
2405.ws-carousel .ws-carousel-header .nav-buttons { 
2406    display: flex; 
2407    justify-content: space-between; 
2408    gap: var(--space-xxs, 8px); 
2409
2410 
2411.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow.left-arrow { 
2412    transform: scaleX(-1); 
2413
2414 
2415.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow { 
2416    cursor: pointer; 
2417
2418 
2419.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow.inactive { 
2420    cursor: not-allowed; 
2421
2422 
2423 
2424.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow path { 
2425    transition: stroke 0.3s ease; 
2426
2427 
2428.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow.inactive path { 
2429    stroke: #bababa; 
2430
2431 
2432.ws-carousel .ws-carousel-header .nav-buttons .nav-arrow.active path { 
2433    stroke: #008542; 
2434
2435 
2436 
2437.ws-carousel .ws-carousel-body { 
2438    overflow-x: scroll; 
2439    -ms-overflow-style: none; 
2440    -scrollbar-width: none; 
2441
2442 
2443.ws-carousel .ws-carousel-body::-webkit-scrollbar { 
2444    display: none; 
2445
2446 
2447.ws-carousel .ws-carousel-body .ws-container { 
2448    display: flex; 
2449    gap: var(--space-lg, 32px); 
2450
2451 
2452.ws-carousel .ws-carousel-body .ws-container .ws-item { 
2453    min-width: 300px; 
2454    max-width: 300px; 
2455    min-height: 400px; 
2456    max-height: 400px; 
2457    position: relative; 
2458    overflow: hidden; 
2459    border-radius: var(--border-radius-lg); 
2460    box-shadow: 0px 12px 60px -10px rgba(145, 147, 149, 0.12); 
2461
2462 
2463.ws-carousel .ws-carousel-body .ws-container .ws-item:hover { 
2464    cursor: pointer; 
2465
2466 
2467.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-image { 
2468    position: absolute; 
2469    top: 50%; 
2470    left: 50%; 
2471    transform: translate(-50%, -50%); 
2472    height: 100%; 
2473
2474 
2475.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-overlay { 
2476    position: absolute; 
2477    background: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.8) 100%); 
2478    width: 100%; 
2479    height: 100%; 
2480
2481 
2482.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-label { 
2483    position: absolute; 
2484    margin: var(--space-md, 24px) 0 0 var(--space-md, 24px); 
2485    border-radius: var(--border-radius-pill, 100%); 
2486    background: linear-gradient(0deg, var(--Background-Surface-opacity-light-level-07, rgba(255, 255, 255, 0.96)) 0%, var(--Background-Surface-opacity-light-level-07, rgba(255, 255, 255, 0.96)) 100%), var(--Default-sup-green-water, #006B65); 
2487    box-shadow: 0px 2px 6px 0px rgba(0, 178, 169, 0.10); 
2488    padding: var(--space-micro, 2px) var(--space-xs, 12px); 
2489 
2490    color: var(--Default-sup-green-water, #006B65); 
2491    font-family: var(--font-family-base), "Petrobras Sans"; 
2492    font-size: var(--font-size-xxxs, 12px); 
2493    font-style: normal; 
2494    font-weight: var(--font-weight-regular, 400); 
2495    line-height: var(--line-height-sm, 120%); 
2496    color: #006B65; 
2497
2498 
2499.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-content { 
2500    position: relative; 
2501    z-index: 1; 
2502    height: 100%; 
2503 
2504    display: flex; 
2505    padding: var(--space-lg, 32px) var(--space-md, 24px) var(--space-md, 24px) var(--space-md, 24px); 
2506    flex-direction: column; 
2507    justify-content: flex-end; 
2508    align-items: flex-start; 
2509    gap: var(--space-md, 24px); 
2510
2511 
2512.ws-carousel .ws-carousel-body .ws-container .ws-item .ws-content .h5 { 
2513    overflow: hidden; 
2514    color: #FFF !important; 
2515    text-overflow: ellipsis; 
2516    margin: 0 !important; 
2517    font-family: var(--font-family-base), "Petrobras Sans" !important; 
2518
2519 
2520@media (max-width: 768px) { 
2521 
2522    .ws-carousel .ws-carousel-header .nav-buttons { 
2523        gap: var(--space-micro, 12px); 
2524
2525 
2526    .ws-carousel .ws-carousel-header .nav-buttons .nav-arrow { 
2527        width: 44px; 
2528        height: 44px; 
2529
2530 
2531    .ws-carousel .ws-carousel-header { 
2532        flex-direction: column; 
2533        align-items: flex-start; 
2534        gap: var(--space-lg, 32px); 
2535
2536 
2537    .ws-carousel .ws-carousel-header .h2 { 
2538        font-size: var(--font-size-lg, 24px) !important; 
2539
2540 
2541    .ws-carousel .ws-carousel-body .ws-container { 
2542        gap: var(--space-lg, 32px); 
2543
2544 
2545    .ws-carousel .ws-carousel-body .ws-container .ws-item { 
2546        min-width: 225px; 
2547        max-width: 225px; 
2548        background: linear-gradient(180deg, rgba(0, 0, 0, 0.00) 0%, rgba(0, 0, 0, 0.80) 100%), url(<path-to-image>) lightgray 50% / cover no-repeat; 
2549        box-shadow: 0px 12px 60px -10px rgba(145, 147, 149, 0.12); 
2550
2551
2552    </style> 
2553 
2554    <script> 
2555/* CONSTANTS */ 
2556const PUBLISHER_LOGO_INDEX = 0; 
2557const POSTER_PORTRAIT_INDEX = 1; 
2558const PUBLISHER_INDEX = 2; 
2559const COVER_INDEX = 3; 
2560const STORIES_INDEX = 4; 
2561 
2562const COVER_HAS_COVER_INDEX = 0; 
2563const COVER_TITLE_INDEX = 1; 
2564const COVER_TEXT_INDEX = 2; 
2565const COVER_IMAGE_INDEX = 3; 
2566 
2567const STORY_TITLE_INDEX = 0; 
2568const STORY_TEXT_INDEX = 1; 
2569const STORY_COLOR_THEME_INDEX = 2; 
2570const STORY_IMAGE_INDEX = 3; 
2571 
2572const DETAILS_SVG = `<svg width="91" height="21" viewBox="0 0 91 21" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M12.5 3.625H7.5C7.15482 3.625 6.875 3.90482 6.875 4.25V16.75C6.875 17.0952 7.15482 17.375 7.5 17.375H12.5C12.8452 17.375 13.125 17.0952 13.125 16.75V4.25C13.125 3.90482 12.8452 3.625 12.5 3.625Z" stroke="white" stroke-linecap="round" stroke-linejoin="round"/> <path d="M17.5 14.25V6.75C17.5 6.40482 17.2202 6.125 16.875 6.125H13.75C13.4048 6.125 13.125 6.40482 13.125 6.75V14.25C13.125 14.5952 13.4048 14.875 13.75 14.875H16.875C17.2202 14.875 17.5 14.5952 17.5 14.25Z" stroke="white" stroke-linecap="round" stroke-linejoin="round"/> <path d="M6.875 14.25L6.875 6.75C6.875 6.40482 6.59518 6.125 6.25 6.125H3.125C2.77982 6.125 2.5 6.40482 2.5 6.75L2.5 14.25C2.5 14.5952 2.77982 14.875 3.125 14.875H6.25C6.59518 14.875 6.875 14.5952 6.875 14.25Z" stroke="white" stroke-linecap="round" stroke-linejoin="round"/> <path d="M30.376 15.5L28.36 6.74H29.56L31.06 14.132L32.704 7.196H33.784L35.428 14.132L36.928 6.74H38.08L36.064 15.5H34.828L33.208 8.672L31.588 15.5H30.376ZM39.6543 12.836C39.6783 13.252 39.7343 13.588 39.8223 13.844C39.9183 14.092 40.0503 14.284 40.2183 14.42C40.3863 14.548 40.5863 14.636 40.8183 14.684C41.0583 14.724 41.3303 14.744 41.6343 14.744C41.9143 14.744 42.1743 14.732 42.4143 14.708C42.6543 14.684 42.8863 14.656 43.1103 14.624V15.344C42.8703 15.44 42.5943 15.512 42.2823 15.56C41.9783 15.616 41.6623 15.644 41.3343 15.644C40.3343 15.644 39.6183 15.388 39.1863 14.876C38.7623 14.356 38.5503 13.584 38.5503 12.56C38.5503 11.456 38.7663 10.652 39.1983 10.148C39.6383 9.636 40.2703 9.38 41.0943 9.38C41.5183 9.38 41.8783 9.448 42.1743 9.584C42.4703 9.712 42.7103 9.908 42.8943 10.172C43.0783 10.428 43.2103 10.744 43.2903 11.12C43.3703 11.496 43.4103 11.928 43.4103 12.416V12.836H39.6543ZM42.3543 12.056C42.3543 11.424 42.2583 10.968 42.0663 10.688C41.8823 10.4 41.5543 10.256 41.0823 10.256C40.5703 10.256 40.2103 10.412 40.0023 10.724C39.7943 11.028 39.6743 11.472 39.6423 12.056H42.3543ZM44.9427 15.5V6.74H46.0467V10.1C46.2147 9.916 46.4347 9.752 46.7067 9.608C46.9867 9.456 47.3667 9.38 47.8467 9.38C48.6467 9.38 49.2387 9.652 49.6227 10.196C50.0067 10.74 50.1987 11.496 50.1987 12.464C50.1987 13.512 49.9827 14.304 49.5507 14.84C49.1267 15.376 48.5067 15.644 47.6907 15.644C47.2347 15.644 46.8707 15.572 46.5987 15.428C46.3347 15.284 46.1107 15.096 45.9267 14.864L45.8427 15.5H44.9427ZM46.0227 12.944C46.0227 13.28 46.0627 13.56 46.1427 13.784C46.2227 14.008 46.3307 14.192 46.4667 14.336C46.6107 14.472 46.7747 14.572 46.9587 14.636C47.1507 14.692 47.3547 14.72 47.5707 14.72C48.0587 14.72 48.4267 14.556 48.6747 14.228C48.9307 13.9 49.0587 13.332 49.0587 12.524C49.0587 12.092 49.0227 11.736 48.9507 11.456C48.8867 11.168 48.7907 10.94 48.6627 10.772C48.5347 10.604 48.3747 10.484 48.1827 10.412C47.9987 10.34 47.7907 10.304 47.5587 10.304C47.3347 10.304 47.1267 10.332 46.9347 10.388C46.7507 10.444 46.5907 10.54 46.4547 10.676C46.3187 10.804 46.2107 10.98 46.1307 11.204C46.0587 11.42 46.0227 11.692 46.0227 12.02V12.944ZM54.1271 14.36C54.4711 14.424 54.8431 14.48 55.2431 14.528C55.6431 14.576 56.0231 14.6 56.3831 14.6C56.6791 14.6 56.9431 14.584 57.1751 14.552C57.4071 14.512 57.6031 14.436 57.7631 14.324C57.9231 14.212 58.0431 14.056 58.1231 13.856C58.2111 13.648 58.2551 13.38 58.2551 13.052C58.2551 12.796 58.2271 12.588 58.1711 12.428C58.1151 12.26 58.0191 12.124 57.8831 12.02C57.7551 11.916 57.5831 11.832 57.3671 11.768C57.1511 11.696 56.8871 11.624 56.5751 11.552L56.2151 11.468C55.8951 11.396 55.5991 11.308 55.3271 11.204C55.0631 11.092 54.8351 10.948 54.6431 10.772C54.4511 10.588 54.2991 10.364 54.1871 10.1C54.0831 9.836 54.0311 9.508 54.0311 9.116C54.0311 8.292 54.2711 7.668 54.7511 7.244C55.2391 6.82 55.9551 6.608 56.8991 6.608C57.3391 6.608 57.7471 6.648 58.1231 6.728C58.5071 6.808 58.8431 6.904 59.1311 7.016V7.82C58.8351 7.78 58.4951 7.736 58.1111 7.688C57.7351 7.64 57.3671 7.616 57.0071 7.616C56.7351 7.616 56.4871 7.632 56.2631 7.664C56.0391 7.696 55.8431 7.764 55.6751 7.868C55.5151 7.964 55.3911 8.104 55.3031 8.288C55.2151 8.472 55.1711 8.712 55.1711 9.008C55.1711 9.264 55.2031 9.476 55.2671 9.644C55.3391 9.804 55.4431 9.936 55.5791 10.04C55.7231 10.144 55.8951 10.232 56.0951 10.304C56.3031 10.368 56.5471 10.428 56.8271 10.484L57.2111 10.568C57.5791 10.648 57.8991 10.748 58.1711 10.868C58.4511 10.98 58.6831 11.128 58.8671 11.312C59.0511 11.496 59.1871 11.724 59.2751 11.996C59.3711 12.268 59.4191 12.6 59.4191 12.992C59.4191 13.464 59.3511 13.868 59.2151 14.204C59.0871 14.54 58.8991 14.816 58.6511 15.032C58.4031 15.24 58.0991 15.392 57.7391 15.488C57.3791 15.584 56.9711 15.632 56.5151 15.632C56.0031 15.632 55.5471 15.584 55.1471 15.488C54.7471 15.384 54.4071 15.276 54.1271 15.164V14.36ZM62.3096 13.52C62.3096 14.016 62.4056 14.348 62.5976 14.516C62.7896 14.676 63.0776 14.756 63.4616 14.756C63.7496 14.756 64.0096 14.744 64.2416 14.72V15.44C64.0736 15.488 63.8896 15.528 63.6896 15.56C63.4896 15.6 63.2776 15.62 63.0536 15.62C62.4056 15.62 61.9336 15.46 61.6376 15.14C61.3496 14.82 61.2056 14.296 61.2056 13.568V10.376H60.1376V9.74L61.2056 9.536V7.7H62.3096V9.524H64.1336V10.376H62.3096V13.52ZM66.6991 14.24C66.8351 14.416 66.9951 14.54 67.1791 14.612C67.3711 14.684 67.5951 14.72 67.8511 14.72C68.0991 14.72 68.3151 14.684 68.4991 14.612C68.6911 14.54 68.8471 14.42 68.9671 14.252C69.0951 14.076 69.1911 13.848 69.2551 13.568C69.3191 13.288 69.3511 12.936 69.3511 12.512C69.3511 12.096 69.3191 11.748 69.2551 11.468C69.1911 11.18 69.0911 10.952 68.9551 10.784C68.8271 10.608 68.6671 10.484 68.4751 10.412C68.2831 10.34 68.0631 10.304 67.8151 10.304C67.5671 10.304 67.3471 10.34 67.1551 10.412C66.9711 10.484 66.8151 10.604 66.6871 10.772C66.5671 10.94 66.4751 11.168 66.4111 11.456C66.3471 11.736 66.3151 12.084 66.3151 12.5C66.3151 12.924 66.3471 13.276 66.4111 13.556C66.4751 13.836 66.5711 14.064 66.6991 14.24ZM67.8271 15.644C66.9311 15.644 66.2671 15.384 65.8351 14.864C65.4031 14.344 65.1871 13.564 65.1871 12.524C65.1871 11.476 65.4031 10.692 65.8351 10.172C66.2751 9.644 66.9471 9.38 67.8511 9.38C68.7471 9.38 69.4111 9.64 69.8431 10.16C70.2751 10.68 70.4911 11.46 70.4911 12.5C70.4911 13.548 70.2711 14.336 69.8311 14.864C69.3991 15.384 68.7311 15.644 67.8271 15.644ZM72.0247 15.5V9.524H72.9127L73.0327 10.28C73.4407 9.712 74.0447 9.428 74.8447 9.428C74.9727 9.428 75.1047 9.44 75.2407 9.464V10.376C75.1767 10.368 75.1167 10.364 75.0607 10.364C75.0047 10.364 74.9487 10.364 74.8927 10.364C74.3007 10.364 73.8567 10.504 73.5607 10.784C73.2727 11.064 73.1287 11.516 73.1287 12.14V15.5H72.0247ZM76.431 15.5V9.524H77.535V15.5H76.431ZM76.995 8.3C76.763 8.3 76.591 8.24 76.479 8.12C76.367 8 76.311 7.832 76.311 7.616C76.311 7.144 76.539 6.908 76.995 6.908C77.227 6.908 77.395 6.968 77.499 7.088C77.611 7.208 77.667 7.376 77.667 7.592C77.667 8.064 77.443 8.3 76.995 8.3ZM80.1778 12.836C80.2018 13.252 80.2578 13.588 80.3458 13.844C80.4418 14.092 80.5738 14.284 80.7418 14.42C80.9098 14.548 81.1098 14.636 81.3418 14.684C81.5818 14.724 81.8538 14.744 82.1578 14.744C82.4378 14.744 82.6978 14.732 82.9378 14.708C83.1778 14.684 83.4098 14.656 83.6338 14.624V15.344C83.3938 15.44 83.1178 15.512 82.8058 15.56C82.5018 15.616 82.1858 15.644 81.8578 15.644C80.8578 15.644 80.1418 15.388 79.7098 14.876C79.2858 14.356 79.0738 13.584 79.0738 12.56C79.0738 11.456 79.2898 10.652 79.7218 10.148C80.1618 9.636 80.7938 9.38 81.6178 9.38C82.0418 9.38 82.4018 9.448 82.6978 9.584C82.9938 9.712 83.2338 9.908 83.4178 10.172C83.6018 10.428 83.7338 10.744 83.8138 11.12C83.8938 11.496 83.9338 11.928 83.9338 12.416V12.836H80.1778ZM82.8778 12.056C82.8778 11.424 82.7818 10.968 82.5898 10.688C82.4058 10.4 82.0778 10.256 81.6058 10.256C81.0938 10.256 80.7338 10.412 80.5258 10.724C80.3178 11.028 80.1978 11.472 80.1658 12.056H82.8778ZM85.2741 14.612C85.5141 14.644 85.7901 14.672 86.1021 14.696C86.4221 14.72 86.7341 14.732 87.0381 14.732C87.2781 14.732 87.4861 14.724 87.6621 14.708C87.8461 14.684 87.9941 14.64 88.1061 14.576C88.2181 14.504 88.3021 14.408 88.3581 14.288C88.4141 14.168 88.4421 14.012 88.4421 13.82C88.4421 13.66 88.4221 13.532 88.3821 13.436C88.3421 13.332 88.2741 13.248 88.1781 13.184C88.0901 13.12 87.9661 13.072 87.8061 13.04C87.6541 13 87.4621 12.964 87.2301 12.932L86.8341 12.872C86.6181 12.84 86.4101 12.792 86.2101 12.728C86.0101 12.656 85.8341 12.56 85.6821 12.44C85.5381 12.312 85.4181 12.148 85.3221 11.948C85.2341 11.74 85.1901 11.48 85.1901 11.168C85.1901 10.848 85.2421 10.576 85.3461 10.352C85.4501 10.128 85.5981 9.944 85.7901 9.8C85.9821 9.656 86.2101 9.552 86.4741 9.488C86.7461 9.424 87.0461 9.392 87.3741 9.392C87.7341 9.392 88.0621 9.42 88.3581 9.476C88.6621 9.524 88.9501 9.592 89.2221 9.68V10.388C88.9901 10.364 88.7301 10.34 88.4421 10.316C88.1621 10.292 87.8701 10.28 87.5661 10.28C87.3581 10.28 87.1701 10.288 87.0021 10.304C86.8341 10.32 86.6901 10.36 86.5701 10.424C86.4501 10.48 86.3541 10.564 86.2821 10.676C86.2181 10.78 86.1861 10.928 86.1861 11.12C86.1861 11.272 86.2061 11.396 86.2461 11.492C86.2941 11.58 86.3621 11.656 86.4501 11.72C86.5461 11.776 86.6661 11.82 86.8101 11.852C86.9541 11.884 87.1301 11.916 87.3381 11.948L87.6621 11.996C87.9421 12.036 88.1941 12.092 88.4181 12.164C88.6421 12.236 88.8301 12.34 88.9821 12.476C89.1421 12.604 89.2621 12.772 89.3421 12.98C89.4301 13.188 89.4741 13.452 89.4741 13.772C89.4741 14.436 89.2861 14.912 88.9101 15.2C88.5341 15.488 88.0141 15.632 87.3501 15.632C87.1501 15.632 86.9501 15.62 86.7501 15.596C86.5501 15.58 86.3581 15.556 86.1741 15.524C85.9901 15.492 85.8181 15.46 85.6581 15.428C85.5061 15.388 85.3781 15.352 85.2741 15.32V14.612Z" fill="white"/> </svg`; 
2573 
2574/* Função para criar formatar object*/ 
2575const createStoryObject = (objectContent) => { 
2576  const hasCover = Boolean( 
2577    objectContent.contentFields[COVER_INDEX].nestedContentFields[ 
2578      COVER_HAS_COVER_INDEX 
2579    ].contentFieldValue.data 
2580  ); 
2581  return { 
2582    category: objectContent.taxonomyCategoryBriefs[0].taxonomyCategoryName, 
2583    publisherLogoSrc: 
2584      objectContent.contentFields[PUBLISHER_LOGO_INDEX].contentFieldValue.data, 
2585    posterPortraitSrc: 
2586      objectContent.contentFields[POSTER_PORTRAIT_INDEX].contentFieldValue.data, 
2587    publisher: 
2588      objectContent.contentFields[PUBLISHER_INDEX].contentFieldValue.data, 
2589    cover: { 
2590      image: Boolean( 
2591        objectContent.contentFields[COVER_INDEX].nestedContentFields[ 
2592          COVER_HAS_COVER_INDEX 
2593        ].contentFieldValue.data 
2594      ), 
2595      title: 
2596        objectContent.contentFields[COVER_INDEX].nestedContentFields[ 
2597          COVER_TITLE_INDEX 
2598        ].contentFieldValue.data, 
2599      description: 
2600        objectContent.contentFields[COVER_INDEX].nestedContentFields[ 
2601          COVER_TEXT_INDEX 
2602        ].contentFieldValue.data, 
2603      imageUrl: 
2604        objectContent.contentFields[COVER_INDEX].nestedContentFields[ 
2605          COVER_IMAGE_INDEX 
2606        ].contentFieldValue.image?.contentUrl || null, 
2607      imageAlt: 
2608        objectContent.contentFields[COVER_INDEX].nestedContentFields[ 
2609          COVER_IMAGE_INDEX 
2610        ].contentFieldValue.image?.description || null, 
2611    }, 
2612    stories: objectContent.contentFields 
2613      .slice(STORIES_INDEX) 
2614      .map((contentField) => { 
2615        return { 
2616          title: 
2617            contentField.nestedContentFields[STORY_TITLE_INDEX] 
2618              .contentFieldValue.data, 
2619          description: 
2620            contentField.nestedContentFields[STORY_TEXT_INDEX].contentFieldValue 
2621              .data, 
2622          colorTheme: 
2623            contentField.nestedContentFields[STORY_COLOR_THEME_INDEX] 
2624              .contentFieldValue.value, 
2625          imageUrl: 
2626            contentField.nestedContentFields[STORY_IMAGE_INDEX] 
2627              .contentFieldValue.image.contentUrl, 
2628          imageAlt: 
2629            contentField.nestedContentFields[STORY_IMAGE_INDEX] 
2630              .contentFieldValue.image.description, 
2631        }; 
2632      }), 
2633  }; 
2634}; 
2635 
2636/* Renderiza os cards */ 
2637const storyCardFrom = (storyData) => { 
2638  const storyCard = document.createElement("div"); 
2639  storyCard.classList.add("ws-item"); 
2640 
2641  storyCard.addEventListener("click", (e) => { 
2642    const storyCardElement = e.target.closest(".ws-item"); 
2643    Liferay.fire("web-stories-modal-open", { webStoryItem: storyData }); 
2644  }); 
2645 
2646  const image = document.createElement("img"); 
2647  image.classList.add("ws-image"); 
2648  image.src = storyData.cover.imageUrl 
2649    ? storyData.cover.imageUrl 
2650    : storyData.stories[0].imageUrl; 
2651  image.alt = storyData.cover.imageAlt 
2652    ? storyData.cover.imageAlt 
2653    : storyData.stories[0].imageAlt; 
2654 
2655  storyCard.appendChild(image); 
2656 
2657  const overlay = document.createElement("div"); 
2658  overlay.classList.add("ws-overlay"); 
2659  storyCard.appendChild(overlay); 
2660 
2661  const label = document.createElement("span"); 
2662  label.classList.add("ws-label"); 
2663  label.dataset.category = storyData.category; 
2664  label.classList.add((storyData.category || "Categoria").toLowerCase().replace(" ", '-')); 
2665  label.textContent = storyData.category || "Categoria"; 
2666  storyCard.appendChild(label); 
2667 
2668  const content = document.createElement("div"); 
2669  content.classList.add("ws-content"); 
2670 
2671  const title = document.createElement("h5"); 
2672  title.classList.add("h5") 
2673  title.textContent = storyData.cover.title || "Título do Card"; 
2674  content.appendChild(title); 
2675 
2676  const details = document.createElement("div"); 
2677  details.classList.add("ws-details"); 
2678 
2679  details.innerHTML = DETAILS_SVG || `<svg>...</svg>`; 
2680  content.appendChild(details); 
2681 
2682  storyCard.appendChild(content); 
2683 
2684  return storyCard; 
2685}; 
2686 
2687/* Renderiza cores */ 
2688 
2689const getCategoriesColorsStyles = async () => { 
2690    // 
2691    const urlToFetchToGetWebStoriesCategoriesColor = `/o/headless-admin-taxonomy/v1.0/taxonomy-vocabularies/31841266/taxonomy-categories?fields=name%2CtaxonomyCategoryProperties`; 
2692 
2693  return fetch(urlToFetchToGetWebStoriesCategoriesColor, { 
2694    method: "GET", 
2695    headers: { 
2696      accept: "application/json", 
2697      "x-csrf-token": Liferay.authToken, 
2698    }, 
2699  }) 
2700    .then((response) => { 
2701      if (response.status === 200) { 
2702        return response.json(); 
2703      } else { 
2704        throw new Error("Erro interno. Por favor tente mais tarde."); 
2705
2706    }) 
2707    .then((data) => { 
2708      const styleTag = document.createElement('style'); 
2709      styleTag.id= 'webstories-carousel-labels'; 
2710 
2711      let styleContent = ``; 
2712       
2713      data.items.forEach(item => { 
2714        let textColor = item.taxonomyCategoryProperties.find(taxonomtProp => taxonomtProp.key === "Cor do Texto")?.value; 
2715        let textHighContrastColor = item.taxonomyCategoryProperties.find(taxonomtProp => taxonomtProp.key === "Cor do Texto em Alto Contraste")?.value; 
2716 
2717        if (textColor != undefined) { 
2718            styleContent = styleContent + ` 
2719            .ws-carousel .ws-carousel-body .ws-container .ws-item .ws-label[data-category="` + item.name + `"] { 
2720                color: #` + textColor + `; 
2721
2722
2723
2724 
2725        if (textHighContrastColor != undefined) { 
2726            styleContent = styleContent + ` 
2727            body.high-contrast .ws-carousel .ws-carousel-body .ws-container .ws-item .ws-label[data-category="` + item.name + `"] { 
2728                color: #` + textHighContrastColor + `; 
2729
2730
2731
2732      }); 
2733 
2734      styleTag.textContent = styleContent; 
2735 
2736      document.head.appendChild(styleTag); 
2737    }); 
2738}; 
2739 
2740getCategoriesColorsStyles(); 
2741 
2742/* Renderiza os itens */ 
2743const renderItems = (carouselId, webStoriesObjects) => { 
2744  const carouselElement = document.querySelector(`#` + carouselId); 
2745  const carouselContainer = carouselElement.querySelector(`.ws-container`); 
2746  const carouselBody = carouselElement.querySelector(".ws-carousel-body"); 
2747  const navButtons = carouselElement.querySelector(".nav-buttons"); 
2748  const leftArrow = navButtons.querySelector(".left-arrow"); 
2749  const rightArrow = navButtons.querySelector(".right-arrow"); 
2750 
2751  // Adiciona Cards 
2752  webStoriesObjects.forEach((storyObject, index) => { 
2753    const storyCard = storyCardFrom(storyObject); 
2754    storyCard.dataset.index = index; 
2755    carouselContainer.appendChild(storyCard); 
2756  }); 
2757 
2758  // Altera o Layout 
2759  function updateLayout() { 
2760    if (webStoriesObjects.length < 3) { 
2761      if (window.matchMedia("(min-width: 769px)").matches) { 
2762        carouselContainer.style.justifyContent = "center"; 
2763        navButtons.style.display = "none"; 
2764      } else { 
2765        carouselContainer.style.justifyContent = "flex-start"; 
2766        navButtons.style.display = "flex"; 
2767
2768    } else { 
2769      carouselContainer.style.justifyContent = ""; 
2770      carouselContainer.style.gap = window.matchMedia("(max-width: 768px)") 
2771        .matches 
2772        ? "32px" 
2773        : "16px"; 
2774      navButtons.style.display = ""; 
2775
2776
2777  updateLayout(); 
2778  window.addEventListener("resize", updateLayout); 
2779 
2780  // Configura Scroll das setas 
2781  leftArrow.addEventListener("click", () => { 
2782    const items = carouselBody.querySelectorAll(".ws-item"); 
2783    const gap = window.matchMedia("(max-width: 768px)").matches ? 32 : 16; 
2784    const pageSize = items[0].offsetWidth + gap; 
2785    const currentScroll = carouselBody.scrollLeft; 
2786    const currentPageReal = carouselBody.scrollLeft / pageSize; 
2787    const currentPage = parseInt(currentPageReal); 
2788    const rest = currentPage - currentPageReal; 
2789    const nextPage = rest !== 0 ? currentPage : currentPage - 1; 
2790    carouselBody.scrollLeft = nextPage * pageSize; 
2791  }); 
2792 
2793  rightArrow.addEventListener("click", () => { 
2794    const gap = window.matchMedia("(max-width: 768px)").matches ? 32 : 16; 
2795    const items = carouselBody.querySelectorAll(".ws-item"); 
2796    carouselBody.scrollLeft += items[0].offsetWidth + gap; 
2797  }); 
2798 
2799  const updateArrows = () => { 
2800    const scrollLeft = carouselBody.scrollLeft; 
2801    const maxScrollLeft = carouselBody.scrollWidth - carouselBody.clientWidth; 
2802 
2803    // Regra 1: A seta esquerda fica cinza se scrollLeft for 0 
2804    if (scrollLeft === 0) { 
2805      leftArrow.classList.remove("active"); 
2806      leftArrow.classList.add("inactive"); 
2807    } else { 
2808      leftArrow.classList.remove("inactive"); 
2809      leftArrow.classList.add("active"); 
2810
2811 
2812    // Regra 2: A seta direita fica cinza se o scroll for máximo 
2813    if (scrollLeft >= maxScrollLeft) { 
2814      rightArrow.classList.remove("active"); 
2815      rightArrow.classList.add("inactive"); 
2816    } else { 
2817      rightArrow.classList.remove("inactive"); 
2818      rightArrow.classList.add("active"); 
2819
2820  }; 
2821 
2822  carouselBody.addEventListener("scroll", updateArrows); 
2823}; 
2824 
2825/* Fetch Things */ 
2826async function getWebStoriesDataSectionFromNews(webContentId) { 
2827  const ID_INDEX = 0; 
2828  const WEB_STORIES_STRUCTURED_CONTENT_INDEX_START_AT = 2; 
2829  const urlToFetchToGetWebStoriesGroup = 
2830    `/o/headless-delivery/v1.0/structured-contents/` + 
2831    webContentId + 
2832    `?fields=contentFields`; 
2833 
2834  return fetch(urlToFetchToGetWebStoriesGroup, { 
2835    method: "GET", 
2836    headers: { 
2837      accept: "application/json", 
2838      "x-csrf-token": Liferay.authToken, 
2839    }, 
2840  }) 
2841    .then((response) => { 
2842      if (response.status === 200) { 
2843        return response.json(); 
2844      } else { 
2845        throw new Error("Erro interno. Por favor tente mais tarde."); 
2846
2847    }) 
2848    .then((data) => { 
2849      const webStoriesGroups = Array.from(data.contentFields).filter( 
2850        (contentField) => contentField.label === "Web Stories" 
2851      ); 
2852 
2853      const webStoriesDataMapped = webStoriesGroups.map((webStoryGroup) => { 
2854        const webStoryGroupId = 
2855          webStoryGroup.nestedContentFields[ID_INDEX].contentFieldValue.data; 
2856        const webStoriesStrucutredContentNodes = 
2857          webStoryGroup.nestedContentFields.slice( 
2858            WEB_STORIES_STRUCTURED_CONTENT_INDEX_START_AT 
2859          ); 
2860        const webStoriesIds = Array.from(webStoriesStrucutredContentNodes).map( 
2861          (webStoryNode) => { 
2862            const webStoryId = 
2863              webStoryNode.contentFieldValue.structuredContentLink.id; 
2864            return { 
2865              webStoryId: webStoryId, 
2866            }; 
2867
2868        ); 
2869        return { 
2870          webStoryGroupId: webStoryGroupId, 
2871          webStoriesIds: webStoriesIds, 
2872        }; 
2873      }); 
2874 
2875      return webStoriesDataMapped; 
2876    }) 
2877    .then((webStoriesDataMapped) => { 
2878      // Mapeia os dados recebidos 
2879      return Promise.all( 
2880        webStoriesDataMapped.map(async (group) => { 
2881          const updatedWebStoriesIds = await Promise.all( 
2882            group.webStoriesIds.map(async (story) => { 
2883              // Faz o fetch para obter os dados do webStoryId 
2884              const response = await fetch( 
2885                `/o/headless-delivery/v1.0/structured-contents/` + 
2886                  story.webStoryId, 
2887
2888                  method: "GET", 
2889                  headers: { 
2890                    accept: "application/json", 
2891                    "x-csrf-token": Liferay.authToken, 
2892                  }, 
2893
2894              ); 
2895              if (!response.ok) { 
2896                throw new Error( 
2897                  `Erro ao buscar dados para webStoryId` + story.webStoryId 
2898                ); 
2899
2900              const webStoryData = await response.json(); 
2901              return { webStoryData: webStoryData }; 
2902            }) 
2903          ); 
2904 
2905          // Retorna o objeto transformado 
2906          return { 
2907            webStoryGroupId: group.webStoryGroupId, 
2908            webStoriesData: updatedWebStoriesIds, 
2909          }; 
2910        }) 
2911      ); 
2912    }) 
2913    .then((webStoriesDataFetched) => { 
2914      return webStoriesDataFetched.map((data) => { 
2915        return { 
2916          webStoryGroupId: data.webStoryGroupId, 
2917          webStoryObjects: data.webStoriesData.map((data) => 
2918            createStoryObject(data.webStoryData) 
2919          ), 
2920        }; 
2921      }); 
2922    }) 
2923    .catch((error) => { 
2924      console.error("Erro ao buscar coleção: ", error); 
2925    }); 
2926
2927 
2928async function getWebStoriesData(webStoriesIds) { 
2929  // Mapeia os IDs para criar um array de promessas 
2930  const fetchPromises = webStoriesIds.map((webStoryId) => { 
2931    //const urlToFetch = `/o/headless-delivery/v1.0/structured-contents/` + webStoryId + `?fields=contentFields`; 
2932    const urlToFetch = 
2933      `/o/headless-delivery/v1.0/structured-contents/` + 
2934      webStoryId + 
2935      `?fields=contentFields%2CtaxonomyCategoryBriefs`; 
2936    return fetch(urlToFetch, { 
2937      method: "GET", 
2938      headers: { 
2939        accept: "application/json", 
2940        "x-csrf-token": Liferay.authToken, 
2941      }, 
2942    }).then((response) => { 
2943      if (!response.ok) { 
2944        throw new Error(`Erro ao buscar ID`); 
2945
2946      return response.json(); // Transforma a resposta em JSON 
2947    }); 
2948  }); 
2949 
2950  // Aguarda todas as promessas e preserva a ordem 
2951  try { 
2952    const results = await Promise.all(fetchPromises); 
2953    return results; // Retorna os resultados em ordem 
2954  } catch (error) { 
2955    console.error("Erro ao buscar Web Stories:", error); 
2956    throw error; // Relança o erro para tratamento posterior 
2957
2958
2959 
2960async function fetchAndLogWebStories() { 
2961  const webStoriesCarouselDataList = await getWebStoriesDataSectionFromNews( 
2962    "${newsJournalArticle.getResourcePrimKey()}" 
2963  ); 
2964 
2965  webStoriesCarouselDataList.forEach((webStoriesCarouselData) => { 
2966    renderItems( 
2967      webStoriesCarouselData.webStoryGroupId, 
2968      webStoriesCarouselData.webStoryObjects 
2969    ); 
2970  }); 
2971
2972 
2973fetchAndLogWebStories(); 
2974 
2975</script> 
2976 
2977    <script> 
2978        <#assign configureLinkTab = "configureLinkTab_" + randomNumber(5)> 
2979 
2980        function ${configureLinkTab}() { 
2981            const root = document.querySelector(".ptb-news__read-news"); 
2982            const newsContentElement = root.querySelector(".news-content div:first-child"); 
2983            const pList = newsContentElement.querySelectorAll("p"); 
2984            pList.forEach((pElement) => { 
2985                const cont = pElement.innerHTML.trim(); 
2986                if (cont == "" || cont == "&nbsp;") { 
2987                    newsContentElement?.removeChild(pElement); 
2988
2989            }); 
2990
2991 
2992        ${configureLinkTab}(); 
2993 
2994        <#if typeOfNews?? && typeOfNews?has_content && typeOfNews == "Infográfico" > 
2995 
2996            function resizeMediaInfographic() { 
2997                if (window.innerWidth > 1024) { 
2998                    const contents = document.querySelectorAll(".ptb-news__read-news .news-content p"); 
2999                    contents.forEach((content) => {        
3000                        content.querySelector("img") && (content.style.gridColumn = "2 / 12"); 
3001                    }); 
3002
3003                else { 
3004                    const contents = document.querySelectorAll(".ptb-news__read-news .news-content p"); 
3005                    contents.forEach((content) => {        
3006                        content.querySelector("img") && (content.style.gridColumn = ""); 
3007                    }); 
3008 
3009                }           
3010
3011            resizeMediaInfographic(); 
3012        </#if> 
3013 
3014         
3015 
3016        document.addEventListener("DOMContentLoaded", () => { 
3017            const headers = document.querySelectorAll(".ptb-news__read-news .news-content h1, .ptb-news__read-news .news-content h2, .ptb-news__read-news .news-content h3, .ptb-news__read-news .news-content h4"); 
3018 
3019            headers.forEach((header) => { 
3020                 
3021                const currentLevel = parseInt(header.tagName.charAt(1)); 
3022 
3023                if (currentLevel >= 1 && currentLevel <= 5) { 
3024                     
3025                    const newLevel = currentLevel + 1; 
3026                    const newTagName = "h" + newLevel; 
3027 
3028                    // Criar a nova tag e transferir o conteúdo 
3029                    const newHeader = document.createElement(newTagName); 
3030                    newHeader.innerHTML = header.innerHTML; 
3031 
3032                    // Substituir a tag antiga pela nova 
3033                    header.parentNode.replaceChild(newHeader, header); 
3034
3035            }); 
3036             
3037            <#assign typeOfNews = getFirstCategoryOfVocabulary(assetEntry, typeOfNewsVocabulary) /> 
3038                 
3039            <#if typeOfNews?? && typeOfNews?has_content && typeOfNews == "Infográfico" > 
3040                resizeMediaInfographic(); 
3041                window.addEventListener("resize", resizeMediaInfographic); 
3042            </#if>           
3043        }); 
3044 
3045        AUI().ready(()=>{ 
3046            const audiosContainer = document.querySelectorAll(".ptb-news__read-news .news-content .audio-content"); 
3047            const audioTemplate = document.querySelector(".ptb-news__read-news .news-content .audio-template"); 
3048 
3049            audiosContainer.forEach((audioContainer)=>{ 
3050                 
3051                const audio = audioContainer.querySelector("audio"); 
3052                const audioInterface = audioTemplate.cloneNode(true); 
3053 
3054                const sondwave = audioInterface.querySelector(".audio-sondwave"); 
3055                const linesDesktop = audioInterface.querySelectorAll(".audio-sondwave .audio-sondwave-desktop line"); 
3056                const linesMobile = audioInterface.querySelectorAll(".audio-sondwave .audio-sondwave-mobile line"); 
3057                 
3058                const playPauseButtonAudioInterface = audioInterface.querySelector(".audio-button-play"); 
3059 
3060                playPauseButtonAudioInterface.addEventListener("click", ()=>{ 
3061                    if(audioInterface.classList.contains("audio-play")) { 
3062                        audioInterface.classList.replace("audio-play", "audio-pause"); 
3063                        audio.pause(); 
3064
3065                    else { 
3066 
3067                        audiosContainer.forEach((audioContainer)=>{ 
3068                            const otherAudio = audioContainer.querySelector("audio"); 
3069                            const otherAudioInterface = audioContainer.querySelector(".audio-button-play"); 
3070                            !otherAudio.paused && otherAudioInterface.click(); 
3071                        }); 
3072 
3073                        audioInterface.classList.replace("audio-pause", "audio-play"); 
3074                        audio.play(); 
3075
3076                }); 
3077 
3078                const audioMuteButton = audioInterface.querySelector(".audio-button-mute"); 
3079 
3080                audioMuteButton.addEventListener("click", ()=>{ 
3081                    if(audioInterface.classList.contains("audio-unmuted")) { 
3082                        audioInterface.classList.replace("audio-unmuted", "audio-muted"); 
3083                        audio.muted = true; 
3084
3085                    else { 
3086                        audioInterface.classList.replace("audio-muted", "audio-unmuted"); 
3087                        audio.muted = false; 
3088
3089                }); 
3090 
3091                const audioTime = audioInterface.querySelector(".audio-time"); 
3092                audioTime.textContent = Math.floor(audio.duration / 60) + ":" + Math.floor(audio.duration % 60); 
3093 
3094 
3095                audio.addEventListener("timeupdate", ()=>{ 
3096                    let minutes = Math.floor((audio.duration - audio.currentTime) / 60);  
3097                    let seconds = Math.floor((audio.duration - audio.currentTime) % 60); 
3098 
3099                    minutes = minutes < 10? "0" + minutes : minutes; 
3100                    seconds = seconds < 10? "0" + seconds : seconds; 
3101                     
3102                    audioTime.textContent = minutes + ":" + seconds; 
3103 
3104                    const progress = (audio.currentTime / audio.duration) * 100; 
3105 
3106                    linesDesktop.forEach(function(line, index) { 
3107                        const lineProgress = (index / linesDesktop.length) * 100; 
3108                        if (progress >= lineProgress) { 
3109                            !line.classList.contains("line-active") && line.classList.add("line-active"); 
3110                        } else { 
3111                            line.classList.contains("line-active") && line.classList.remove("line-active"); 
3112
3113                    }); 
3114 
3115                    linesMobile.forEach(function(line, index) { 
3116                        const lineProgress = (index / linesMobile.length) * 100; 
3117                        if (progress >= lineProgress) { 
3118                            !line.classList.contains("line-active") && line.classList.add("line-active"); 
3119                        } else { 
3120                            line.classList.contains("line-active") && line.classList.remove("line-active"); 
3121
3122                    });                    
3123                }); 
3124 
3125                
3126                sondwave.addEventListener("click", (event)=>{                     
3127                    const distanceLeft = (event.clientX - sondwave.getBoundingClientRect().left)/sondwave.offsetWidth; 
3128                    audio.currentTime = audio.duration * distanceLeft; 
3129                }); 
3130                
3131                audioInterface.style.display = ""; 
3132                audioContainer.appendChild(audioInterface); 
3133            }); 
3134 
3135        }); 
3136    </script> 
3137</#macro> 
3138 
3139<#macro renderShareAndCopyNews> 
3140    <#--        <div class="share_news_container">--> 
3141        <div class="social-media-container"> 
3142 
3143            <#assign emailMsg = "Veja o conteúdo do post no link "> 
3144            <#if locale == "en_US"> 
3145                <#assign emailMsg = "See the content of the post in the link "> 
3146            </#if> 
3147            <a class="social-media-share" href="mailto:?subject=${newsInfo.mainHeadlineOfTheNews}&amp;body=${emailMsg}${newsInfo.url}" 
3148                target="_blank"> 
3149                <svg class="email" width="37" height="36" viewBox="0 0 37 36" fill="none" 
3150                        xmlns="http://www.w3.org/2000/svg"> 
3151                    <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/> 
3152                    <path d="M24.9231 12H11.0769C10.9239 12 10.7772 12.0579 10.669 12.1611C10.5608 12.2642 10.5 12.4041 10.5 12.55V21.9C10.5 22.1917 10.6216 22.4715 10.838 22.6778C11.0543 22.8841 11.3478 23 11.6538 23H24.3462C24.6522 23 24.9457 22.8841 25.162 22.6778C25.3784 22.4715 25.5 22.1917 25.5 21.9V12.55C25.5 12.4041 25.4392 12.2642 25.331 12.1611C25.2228 12.0579 25.0761 12 24.9231 12ZM24.3462 21.9H11.6538V13.8012L17.6106 19.0056C17.7169 19.0984 17.8559 19.1498 18 19.1498C18.1441 19.1498 18.2831 19.0984 18.3894 19.0056L24.3462 13.8012V21.9Z" 
3153                            fill="#008542"/> 
3154                </svg> 
3155                <span >send e-mail</span> 
3156            </a> 
3157 
3158            <a class="social-media-share"  href="https://www.facebook.com/sharer/sharer.php?u=${newsInfo.url}" target="_blank"> 
3159                <svg class="facebook" width="37" height="36" viewBox="0 0 37 36" fill="none" 
3160                        xmlns="http://www.w3.org/2000/svg"> 
3161                    <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/> 
3162                    <path d="M17.5417 24H20.0341V18.1855H21.9697L22.2879 15.875H20.0341V14.2754C20.0341 13.9199 20.0871 13.6406 20.2462 13.4629C20.4053 13.2598 20.75 13.1582 21.2273 13.1582H22.5V11.1016C22.0227 11.0508 21.3864 11 20.6439 11C19.6894 11 18.947 11.2793 18.3902 11.8125C17.8068 12.3457 17.5417 13.082 17.5417 14.0469V15.875H15.5V18.1855H17.5417V24Z" 
3163                            fill="#008542"/> 
3164                </svg> 
3165                    <span >Facebook</span> 
3166            </a> 
3167 
3168            <#assign mobileShareButtonId = "mobile-share-" + randomNumber(5)> 
3169            <div class="mobile-share" id="${mobileShareButtonId}"> 
3170                <svg width="37" height="36" viewBox="0 0 37 36" fill="none" xmlns="http://www.w3.org/2000/svg"> 
3171                    <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/> 
3172                    <path d="M13.8923 20.5914C15.2136 20.5914 16.2847 19.5151 16.2847 18.1875C16.2847 16.8599 15.2136 15.7837 13.8923 15.7837C12.5711 15.7837 11.5 16.8599 11.5 18.1875C11.5 19.5151 12.5711 20.5914 13.8923 20.5914Z" 
3173                            fill="#008542" stroke="#008542" stroke-linecap="round" stroke-linejoin="round"/> 
3174                    <path d="M22.2654 26.0001C23.5866 26.0001 24.6577 24.9238 24.6577 23.5962C24.6577 22.2686 23.5866 21.1924 22.2654 21.1924C20.9441 21.1924 19.873 22.2686 19.873 23.5962C19.873 24.9238 20.9441 26.0001 22.2654 26.0001Z" 
3175                            fill="#008542" stroke="#008542" stroke-linecap="round" stroke-linejoin="round"/> 
3176                    <path d="M22.2654 15.1827C23.5866 15.1827 24.6577 14.1064 24.6577 12.7788C24.6577 11.4512 23.5866 10.375 22.2654 10.375C20.9441 10.375 19.873 11.4512 19.873 12.7788C19.873 14.1064 20.9441 15.1827 22.2654 15.1827Z" 
3177                            fill="#008542" stroke="#008542" stroke-linecap="round" stroke-linejoin="round"/> 
3178                    <path d="M20.2546 14.0784L15.9036 16.8879" stroke="#008542" stroke-linecap="round" 
3179                            stroke-linejoin="round"/> 
3180                    <path d="M15.9036 19.4871L20.2546 22.2966" stroke="#008542" stroke-linecap="round" 
3181                            stroke-linejoin="round"/> 
3182                </svg> 
3183            </div> 
3184 
3185            <a class="social-media-share"  href="https://twitter.com/intent/tweet?url=${newsInfo.url}" target="_blank" data-size="large"> 
3186                <svg class="twitter" width="37" height="36" viewBox="0 0 37 36" fill="none" 
3187                        xmlns="http://www.w3.org/2000/svg"> 
3188                    <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/> 
3189                    <path d="M22.7542 12H24.7809L20.3542 17.0933 25.5809 24H21.4742L18.2741 19.8133 14.5941 24H12.5674L17.3141 18.56 12.3008 12H16.5141L19.4208 15.84 22.7542 12ZM22.0342 22.7733H23.1542L15.9008 13.1467H14.6741L22.0342 22.7733Z" fill="#008542"/> 
3190                </svg> 
3191                        <span >twitter</span> 
3192            </a> 
3193 
3194            <a class="social-media-share"  href="https://api.whatsapp.com/send?text=${newsInfo.url}" data-action="share/whatsapp/share" 
3195                target="_blank"> 
3196                <svg class="whatsapp" width="37" height="36" viewBox="0 0 37 36" fill="none" 
3197                        xmlns="http://www.w3.org/2000/svg"> 
3198                    <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/> 
3199                    <path d="M12.5482 21.3241C11.6166 19.7525 11.2908 17.8949 11.6318 16.1C11.9729 14.3052 12.9573 12.6965 14.4003 11.5761C15.8434 10.4556 17.6457 9.90042 19.4691 10.0147C21.2925 10.129 23.0114 10.9049 24.3033 12.1967C25.5951 13.4886 26.371 15.2075 26.4853 17.0309C26.5996 18.8543 26.0444 20.6566 24.9239 22.0997C23.8035 23.5427 22.1948 24.5271 20.4 24.8682C18.6051 25.2092 16.7475 24.8834 15.1759 23.9518L12.5795 24.687C12.4731 24.7181 12.3603 24.72 12.2529 24.6925C12.1455 24.6651 12.0475 24.6092 11.9692 24.5308C11.8908 24.4525 11.8349 24.3545 11.8075 24.2471C11.78 24.1397 11.7819 24.0269 11.813 23.9205L12.5482 21.3241Z" 
3200                            fill="#008542"/> 
3201                    <path d="M20.6917 21C20.0094 21.0017 19.3335 20.8686 18.7029 20.6083C18.0722 20.348 17.4992 19.9656 17.0168 19.4832C16.5344 19.0008 16.152 18.4278 15.8917 17.7971C15.6314 17.1665 15.4983 16.4906 15.5 15.8083C15.5017 15.3281 15.6937 14.8682 16.0338 14.5293C16.374 14.1903 16.8346 14 17.3148 14C17.394 13.9994 17.472 14.0201 17.5404 14.06C17.6089 14.1 17.6653 14.1576 17.7037 14.2269L18.462 15.5491C18.5071 15.6295 18.5303 15.7203 18.5291 15.8124C18.528 15.9046 18.5026 15.9948 18.4556 16.0741L17.8463 17.0917C18.1584 17.7859 18.7141 18.3416 19.4083 18.6537L20.4259 18.0444C20.5052 17.9974 20.5954 17.972 20.6876 17.9709C20.7797 17.9697 20.8705 17.9929 20.9509 18.038L22.2731 18.7963C22.3424 18.8347 22.4 18.8911 22.44 18.9596C22.4799 19.028 22.5006 19.106 22.5 19.1852C22.4983 19.6649 22.3074 20.1245 21.9689 20.4643C21.6303 20.8041 21.1713 20.9966 20.6917 21Z" 
3202                            fill="white"/> 
3203                </svg> 
3204                <span >Share to WhatsApp </span> 
3205            </a> 
3206 
3207            <div class="copy-text-container"> 
3208                <svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 
3209                    <path d="M10.5 10.5H13.5V2.5H5.5V5.5" stroke="#008542" stroke-linecap="round" 
3210                            stroke-linejoin="round"/> 
3211                    <path d="M10.5 5.5H2.5V13.5H10.5V5.5Z" stroke="#008542" stroke-linecap="round" 
3212                            stroke-linejoin="round"/> 
3213                </svg> 
3214 
3215                <#if locale == "pt_BR"> 
3216                    <p class="text">Copiar texto <span class="copy-text-title-news"> ${newsInfo.mainHeadlineOfTheNews} </span> </p> 
3217                <#else > 
3218                    <p class="text">Copy text <span class="copy-text-title-news"> ${newsInfo.mainHeadlineOfTheNews} </span> </p> 
3219                </#if> 
3220            </div> 
3221 
3222        </div> 
3223 
3224        <#if locale == "pt_BR"> 
3225            <span class="copy-message">Texto copiado!</span> 
3226        <#else > 
3227            <span class="copy-message">Text copied!</span> 
3228        </#if> 
3229    <#--        </div>--> 
3230</#macro> 
3231 
3232<#-- ################################################################################################################## --> 
3233 
3234<#-- ############# Site de Crise - Notícia - Links do conteúdo da notícia ############################################# --> 
3235<#macro renderLinks newsInfo> 
3236    <#if newsInfo.links?size != 0> 
3237    <#--videos "escondidos" que serão unidos a .ptb-news__read-content --> 
3238 
3239        <div class="ptb-news__links-container d-none "> 
3240            <div id="ptb-news__links-identifiers"> 
3241                <#assign separator = ""> 
3242                <#list newsInfo.links as link> 
3243                    ${link.id}; 
3244                    <#assign separator = ";"> 
3245                </#list> 
3246            </div> 
3247            <#list newsInfo.links as link> 
3248                <#assign link_index = link?index> 
3249                <#assign linkUrl = "#"> 
3250                <#assign target = "_blank"> 
3251                <#assign linkClass = ""> 
3252 
3253                <div id="ptb-news__link-container-${link_index}"> 
3254                    <#if link.externalLink?has_content> 
3255                        <#assign linkUrl = link.externalLink> 
3256                        <#assign target = "_blank"> 
3257                        <#assign linkClass = "external-link"> 
3258                    <#elseif link.pageLink?has_content> 
3259                        <#assign linkUrl = link.pageLink> 
3260                        <#assign target = "_self"> 
3261                        <#assign linkClass = "internal-page-link"> 
3262                    <#elseif link.file.mimeType?has_content> 
3263                        <#assign linkUrl = link.file.url> 
3264                        <#assign target = "_blank"> 
3265                        <#assign linkClass = "file-link"> 
3266                    </#if> 
3267 
3268                    <#-- PDF icon --> 
3269                    <#if link.iconType == "Opção78730408" > 
3270                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" 
3271                             xmlns="http://www.w3.org/2000/svg"> 
3272                            <path d="M3.752 15.974H4.664C4.912 15.974 5.124 15.954 5.3 15.914C5.476 15.874 5.62 15.806 5.732 15.71C5.852 15.606 5.94 15.466 5.996 15.29C6.052 15.114 6.08 14.894 6.08 14.63C6.08 14.11 5.968 13.758 5.744 13.574C5.528 13.39 5.168 13.298 4.664 13.298H3.752V15.974ZM2 20.654V11.894H4.784C5.856 11.894 6.632 12.122 7.112 12.578C7.6 13.026 7.844 13.698 7.844 14.594C7.844 15.474 7.604 16.158 7.124 16.646C6.652 17.134 5.872 17.378 4.784 17.378H3.752V20.654H2Z" 
3273                                  fill="#008542"/> 
3274                            <path d="M10.8402 19.142H11.9442C12.2962 19.142 12.6042 19.102 12.8682 19.022C13.1322 18.942 13.3482 18.798 13.5162 18.59C13.6922 18.374 13.8242 18.082 13.9122 17.714C14.0002 17.338 14.0442 16.854 14.0442 16.262C14.0442 15.678 14.0002 15.202 13.9122 14.834C13.8322 14.458 13.7042 14.166 13.5282 13.958C13.3602 13.75 13.1442 13.606 12.8802 13.526C12.6242 13.446 12.3202 13.406 11.9682 13.406H10.8402V19.142ZM9.16016 20.654V11.894H12.1002C12.7642 11.894 13.3322 11.982 13.8042 12.158C14.2762 12.326 14.6602 12.59 14.9562 12.95C15.2602 13.302 15.4802 13.75 15.6162 14.294C15.7602 14.83 15.8322 15.47 15.8322 16.214C15.8322 17.726 15.5362 18.846 14.9442 19.574C14.3522 20.294 13.3882 20.654 12.0522 20.654H9.16016Z" 
3275                                  fill="#008542"/> 
3276                            <path d="M17.2695 20.654V11.894H22.2735V13.358H18.9735V15.59H21.9015V17.054H18.9735V20.654H17.2695Z" 
3277                                  fill="#008542"/> 
3278                            <path d="M6.08984 8.24516V1.60376C6.08984 1.44364 6.15211 1.29007 6.26294 1.17684C6.37377 1.06361 6.52408 1 6.68082 1H13.7725M13.7725 1L17.9094 5.22634M13.7725 1L13.7725 5.22634H17.9094M17.9094 5.22634V8.24516" 
3279                                  stroke="#008542" stroke-width="1.5" stroke-linecap="round" 
3280                                  stroke-linejoin="round"/> 
3281                        </svg> 
3282 
3283                    <#-- JPG icon --> 
3284                    <#elseif link.iconType == "Opção89889679" > 
3285                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" 
3286                             xmlns="http://www.w3.org/2000/svg"> 
3287                            <path d="M2 19.1657C2.248 19.1977 2.504 19.2257 2.768 19.2497C3.032 19.2657 3.284 19.2737 3.524 19.2737C3.844 19.2737 4.112 19.2497 4.328 19.2017C4.544 19.1537 4.72 19.0657 4.856 18.9377C4.992 18.8017 5.088 18.6257 5.144 18.4097C5.208 18.1857 5.24 17.8977 5.24 17.5457V11.8937H6.992V17.5457C6.992 18.6817 6.756 19.5057 6.284 20.0177C5.82 20.5297 5.128 20.7857 4.208 20.7857C3.984 20.7857 3.764 20.7737 3.548 20.7497C3.34 20.7257 3.14 20.6937 2.948 20.6537C2.756 20.6137 2.58 20.5697 2.42 20.5217C2.26 20.4737 2.12 20.4257 2 20.3777V19.1657Z" 
3288                                  fill="#008542"/> 
3289                            <path d="M10.4203 15.9737H11.3323C11.5803 15.9737 11.7923 15.9537 11.9683 15.9137C12.1443 15.8737 12.2883 15.8057 12.4003 15.7097C12.5203 15.6057 12.6083 15.4657 12.6643 15.2897C12.7203 15.1137 12.7483 14.8937 12.7483 14.6297C12.7483 14.1097 12.6363 13.7577 12.4123 13.5737C12.1963 13.3897 11.8363 13.2977 11.3323 13.2977H10.4203V15.9737ZM8.66834 20.6537V11.8937H11.4523C12.5243 11.8937 13.3003 12.1217 13.7803 12.5777C14.2683 13.0257 14.5123 13.6977 14.5123 14.5937C14.5123 15.4737 14.2723 16.1577 13.7923 16.6457C13.3203 17.1337 12.5403 17.3777 11.4523 17.3777H10.4203V20.6537H8.66834Z" 
3290                                  fill="#008542"/> 
3291                            <path d="M22.0085 20.2697C21.6405 20.4057 21.2085 20.5257 20.7125 20.6297C20.2245 20.7337 19.7165 20.7857 19.1885 20.7857C18.5005 20.7857 17.9245 20.6897 17.4605 20.4977C17.0045 20.2977 16.6365 20.0097 16.3565 19.6337C16.0845 19.2577 15.8885 18.7977 15.7685 18.2537C15.6485 17.7017 15.5885 17.0777 15.5885 16.3817C15.5885 15.6217 15.6565 14.9537 15.7925 14.3777C15.9285 13.8017 16.1445 13.3217 16.4405 12.9377C16.7365 12.5457 17.1205 12.2537 17.5925 12.0617C18.0645 11.8617 18.6405 11.7617 19.3205 11.7617C19.7845 11.7617 20.2125 11.8017 20.6045 11.8817C21.0045 11.9617 21.3605 12.0577 21.6725 12.1697V13.3937C21.5525 13.3857 21.4125 13.3737 21.2525 13.3577C21.0925 13.3337 20.9205 13.3137 20.7365 13.2977C20.5605 13.2817 20.3765 13.2697 20.1845 13.2617C20.0005 13.2457 19.8205 13.2377 19.6445 13.2377C19.2205 13.2377 18.8605 13.2857 18.5645 13.3817C18.2765 13.4697 18.0405 13.6297 17.8565 13.8617C17.6805 14.0857 17.5485 14.3937 17.4605 14.7857C17.3805 15.1777 17.3405 15.6737 17.3405 16.2737C17.3405 16.8417 17.3765 17.3217 17.4485 17.7137C17.5285 18.0977 17.6485 18.4097 17.8085 18.6497C17.9685 18.8897 18.1765 19.0617 18.4325 19.1657C18.6965 19.2697 19.0125 19.3217 19.3805 19.3217C19.6765 19.3217 20.0245 19.2857 20.4245 19.2137V17.1977H19.1045V15.8897H22.0085V20.2697Z" 
3292                                  fill="#008542"/> 
3293                            <path d="M6.08984 8.24516V1.60376C6.08984 1.44364 6.15211 1.29007 6.26294 1.17684C6.37377 1.06361 6.52408 1 6.68082 1H13.7725M13.7725 1L17.9094 5.22634M13.7725 1L13.7725 5.22634H17.9094M17.9094 5.22634V8.24516" 
3294                                  stroke="#008542" stroke-width="1.5" stroke-linecap="round" 
3295                                  stroke-linejoin="round"/> 
3296                        </svg> 
3297                    <#-- DOC icon --> 
3298                    <#elseif link.iconType == "Opção15480314" > 
3299                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" 
3300                             xmlns="http://www.w3.org/2000/svg"> 
3301                            <path d="M2.68 19.1417H3.784C4.136 19.1417 4.444 19.1017 4.708 19.0217C4.972 18.9417 5.188 18.7977 5.356 18.5897C5.532 18.3737 5.664 18.0817 5.752 17.7137C5.84 17.3377 5.884 16.8537 5.884 16.2617C5.884 15.6777 5.84 15.2017 5.752 14.8337C5.672 14.4577 5.544 14.1657 5.368 13.9577C5.2 13.7497 4.984 13.6057 4.72 13.5257C4.464 13.4457 4.16 13.4057 3.808 13.4057H2.68V19.1417ZM1 20.6537V11.8937H3.94C4.604 11.8937 5.172 11.9817 5.644 12.1577C6.116 12.3257 6.5 12.5897 6.796 12.9497C7.1 13.3017 7.32 13.7497 7.456 14.2937C7.6 14.8297 7.672 15.4697 7.672 16.2137C7.672 17.7257 7.376 18.8457 6.784 19.5737C6.192 20.2937 5.228 20.6537 3.892 20.6537H1Z" 
3302                                  fill="#008542"/> 
3303                            <path d="M10.7894 20.4977C10.3334 20.3057 9.96138 20.0217 9.67338 19.6457C9.39338 19.2697 9.18937 18.8057 9.06137 18.2537C8.93337 17.6937 8.86938 17.0457 8.86938 16.3097C8.86938 15.5657 8.93337 14.9097 9.06137 14.3417C9.19737 13.7737 9.40938 13.2977 9.69738 12.9137C9.99338 12.5297 10.3694 12.2417 10.8254 12.0497C11.2894 11.8577 11.8494 11.7617 12.5054 11.7617C13.1694 11.7617 13.7294 11.8577 14.1854 12.0497C14.6414 12.2417 15.0094 12.5257 15.2894 12.9017C15.5774 13.2777 15.7854 13.7457 15.9134 14.3057C16.0414 14.8577 16.1054 15.5017 16.1054 16.2377C16.1054 16.9817 16.0374 17.6377 15.9014 18.2057C15.7734 18.7737 15.5614 19.2497 15.2654 19.6337C14.9774 20.0177 14.6014 20.3057 14.1374 20.4977C13.6814 20.6897 13.1254 20.7857 12.4694 20.7857C11.8054 20.7857 11.2454 20.6897 10.7894 20.4977ZM11.0894 18.6737C11.2414 18.9057 11.4334 19.0737 11.6654 19.1777C11.8974 19.2737 12.1694 19.3217 12.4814 19.3217C12.7934 19.3217 13.0654 19.2737 13.2974 19.1777C13.5294 19.0737 13.7214 18.9057 13.8734 18.6737C14.0254 18.4337 14.1374 18.1217 14.2094 17.7377C14.2814 17.3457 14.3174 16.8577 14.3174 16.2737C14.3174 15.6897 14.2814 15.2057 14.2094 14.8217C14.1374 14.4297 14.0254 14.1177 13.8734 13.8857C13.7294 13.6457 13.5414 13.4777 13.3094 13.3817C13.0774 13.2777 12.8054 13.2257 12.4934 13.2257C12.1814 13.2257 11.9094 13.2777 11.6774 13.3817C11.4454 13.4777 11.2534 13.6457 11.1014 13.8857C10.9494 14.1177 10.8374 14.4297 10.7654 14.8217C10.6934 15.2057 10.6574 15.6897 10.6574 16.2737C10.6574 16.8577 10.6934 17.3457 10.7654 17.7377C10.8374 18.1217 10.9454 18.4337 11.0894 18.6737Z" 
3304                                  fill="#008542"/> 
3305                            <path d="M23.1389 20.3897C22.8349 20.5017 22.4989 20.5937 22.1309 20.6657C21.7709 20.7457 21.3629 20.7857 20.9069 20.7857C20.2189 20.7857 19.6429 20.6897 19.1789 20.4977C18.7229 20.3057 18.3549 20.0257 18.0749 19.6577C17.7949 19.2817 17.5949 18.8177 17.4749 18.2657C17.3629 17.7137 17.3069 17.0777 17.3069 16.3577C17.3069 15.5977 17.3709 14.9297 17.4989 14.3537C17.6269 13.7777 17.8309 13.2977 18.1109 12.9137C18.3909 12.5297 18.7589 12.2417 19.2149 12.0497C19.6709 11.8577 20.2229 11.7617 20.8709 11.7617C21.3029 11.7617 21.6989 11.8017 22.0589 11.8817C22.4269 11.9537 22.7629 12.0457 23.0669 12.1577V13.3817C22.8029 13.3497 22.4949 13.3177 22.1429 13.2857C21.7989 13.2537 21.4829 13.2377 21.1949 13.2377C20.8029 13.2377 20.4709 13.2857 20.1989 13.3817C19.9349 13.4697 19.7189 13.6297 19.5509 13.8617C19.3829 14.0857 19.2629 14.3937 19.1909 14.7857C19.1189 15.1697 19.0829 15.6617 19.0829 16.2617C19.0829 16.8617 19.1189 17.3617 19.1909 17.7617C19.2709 18.1537 19.3949 18.4657 19.5629 18.6977C19.7389 18.9217 19.9669 19.0817 20.2469 19.1777C20.5269 19.2657 20.8709 19.3097 21.2789 19.3097C21.5989 19.3097 21.9309 19.2937 22.2749 19.2617C22.6189 19.2217 22.9069 19.1897 23.1389 19.1657V20.3897Z" 
3306                                  fill="#008542"/> 
3307                            <path d="M6.08984 8.24516V1.60376C6.08984 1.44364 6.15211 1.29007 6.26294 1.17684C6.37377 1.06361 6.52408 1 6.68082 1H13.7725M13.7725 1L17.9094 5.22634M13.7725 1L13.7725 5.22634H17.9094M17.9094 5.22634V8.24516" 
3308                                  stroke="#008542" stroke-width="1.5" stroke-linecap="round" 
3309                                  stroke-linejoin="round"/> 
3310                        </svg> 
3311                    <#-- External link icon --> 
3312                    <#elseif link.iconType == "Opção43823553" > 
3313                        <svg width="24" height="24" viewBox="0 0 32 32" fill="none" 
3314                             xmlns="http://www.w3.org/2000/svg"> 
3315                            <path opacity="0.98" 
3316                                  d="M25.5 15.5001V26.5001C25.5 26.7653 25.3946 27.0197 25.2071 27.2072C25.0196 27.3947 24.7652 27.5001 24.5 27.5001L5.5 27.5001C5.23479 27.5001 4.98043 27.3947 4.79289 27.2072C4.60536 27.0197 4.5 26.7653 4.5 26.5001L4.5 7.50009C4.5 7.23488 4.60536 6.98052 4.79289 6.79299C4.98043 6.60545 5.23478 6.50009 5.5 6.50009L17 6.50009M20.4742 4.7124H27.8988M27.8988 4.7124V12.137M27.8988 4.7124L14.5 18.0001" 
3317                                  stroke="#008542" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 
3318                        </svg> 
3319                    <#-- Internal page link icon --> 
3320                    <#elseif link.iconType == "Opção64212757" > 
3321                    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="#008542" viewBox="0 0 256 256"> 
3322                        <path d="M137.54,186.36a8,8,0,0,1,0,11.31l-9.94,10A56,56,0,0,1,48.38,128.4L72.5,104.28A56,56,0,0,1,149.31,102a8,8,0,1,1-10.64,12,40,40,0,0,0-54.85,1.63L59.7,139.72a40,40,0,0,0,56.58,56.58l9.94-9.94A8,8,0,0,1,137.54,186.36Zm70.08-138a56.08,56.08,0,0,0-79.22,0l-9.94,9.95a8,8,0,0,0,11.32,11.31l9.94-9.94a40,40,0,0,1,56.58,56.58L172.18,140.4A40,40,0,0,1,117.33,142,8,8,0,1,0,106.69,154a56,56,0,0,0,76.81-2.26l24.12-24.12A56.08,56.08,0,0,0,207.62,48.38Z"> 
3323                        </path> 
3324                    </svg> 
3325                    <#-- Download link icon --> 
3326                    <#elseif link.iconType == "Opção20766606" > 
3327                        <svg width="24" height="24" viewBox="0 0 32 32" fill="none" 
3328                             xmlns="http://www.w3.org/2000/svg"> 
3329                            <path d="M10.75 13.75L16 19M16 19L21.25 13.75M16 19V5M27 19V26C27 26.2652 26.8946 26.5196 26.7071 26.7071C26.5196 26.8946 26.2652 27 26 27H6C5.73478 27 5.48043 26.8946 5.29289 26.7071C5.10536 26.5196 5 26.2652 5 26V19" 
3330                                  stroke="#008542" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 
3331                        </svg> 
3332                    </#if> 
3333<#if link.title?? && link.title?has_content> 
3334                    <a href="${linkUrl}" class="link ${linkClass}" target="${target}">${link.title}</a> 
3335	</#if> 
3336                </div> 
3337            </#list> 
3338        </div> 
3339 
3340        <script> 
3341            var newsContent_code = document.querySelector(".news-content").innerHTML; 
3342 
3343            var linksIdentifiers = document.querySelector("#ptb-news__links-identifiers").innerHTML.trim().split(";"); 
3344            linksIdentifiers.forEach((linkIdentifier, index) => { 
3345                const linkIdentifierContent = document.querySelector("#ptb-news__link-container-" + index); 
3346                if (linkIdentifierContent) { 
3347                    const tag = "#[" + linkIdentifier.trim() + "]"; 
3348                    const splitContent = newsContent_code.split(tag); 
3349                    newsContent_code = splitContent.join(linkIdentifierContent.innerHTML); 
3350                    //linkIdentifierContent.parentNode.removeChild(linkIdentifierContent); 
3351
3352            }); 
3353 
3354 
3355            var ptb_news__read_content = document.querySelector(".news-content"); 
3356            ptb_news__read_content.innerHTML = newsContent_code; 
3357             
3358            const links_ptb_news = document.querySelectorAll(".news-content a"); 
3359            links_ptb_news.forEach((link) => { 
3360                link.classList.add("link-ptb-news"); 
3361            }); 
3362 
3363        </script> 
3364 
3365        <style> 
3366            .ptb-news__read-news .ptb-news__link a { 
3367                font-family: var(--font-family-base); 
3368                font-style: var(--font-style-normal, normal); 
3369                font-weight: var(--font-weight-bold, 700); 
3370                font-size: var(--font-size-xxs, 16px); 
3371                line-height: var(--line-height-xl, 160%); 
3372                text-decoration-line: var(--text-decoration-underline, underline); 
3373                color: #008542; 
3374
3375 
3376            body.high-contrast-active .ptb-news__read-news .ptb-news__link a { 
3377                color: #E4F7E8; 
3378            }           
3379 
3380            .ptb-news__read-news .news-content .link { 
3381                font-family: var(--font-family-base); 
3382                font-style: var(--font-style-normal, normal); 
3383                font-weight: var(--font-weight-bold, 700); 
3384                font-size: var(--font-size-xs, 18px); 
3385                line-height: var(--line-height-xl, 160%); 
3386 
3387                text-decoration-line: var(--text-decoration-underline, underline); 
3388                color: #008542; 
3389
3390 
3391            body.high-contrast-active .ptb-news__read-news .news-content .link { 
3392                color: #E4F7E8; 
3393
3394 
3395            body.high-contrast-active .ptb-news__read-news .news-content svg path { 
3396                stroke: var(--color-neutral-500, #D7D7D7); 
3397                fill: rgba(255, 255, 255, 0.32); 
3398
3399 
3400            .ptb-news__read-news .news-content .ptb-link__wrapper { 
3401                display: flex; 
3402                flex-direction: column; 
3403                gap: 0; 
3404                margin-top: -24px; 
3405
3406 
3407            .ptb-news__read-news .news-content .ptb-link__wrapper svg { 
3408                margin-right: var(--space-sm, 16px); 
3409
3410 
3411            .ptb-news__read-news .news-content .ptb-link__wrapper .first { 
3412                gap: 0 !important; 
3413
3414 
3415            @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) { 
3416                .ptb-news__read-news .news-content .link { 
3417                    font-size: var(--font-size-xxs, 16px); 
3418
3419
3420        </style> 
3421    </#if> 
3422</#macro> 
3423 
3424<#-- ################################################################################################################## --> 
3425 
3426<#-- ################################################################################################################## --> 
3427 
3428<#-- ############# Site de Crise - Notícia - Links do conteúdo da notícia ############################################# --> 
3429<#macro renderCite> 
3430    <div class="ptb-news__cite-container"> 
3431        <div class="ptb-news__cite-container-breakpoint breakpoint"> 
3432            <div class="ptb-news__cite-container-col col-1-12 md-col-1-8 sm-col-1-4"> 
3433                <div class="ptb-news__cite-title"> 
3434                    <#if locale?lower_case == "pt_br"> 
3435                        Notas 
3436                    <#else> 
3437                        Notes 
3438                    </#if> 
3439                </div> 
3440 
3441                <div class="ptb-news__cites-elements"> 
3442                </div> 
3443            </div> 
3444        </div> 
3445    </div> 
3446 
3447    <script> 
3448        function positionCitesText(parentNodeCitesText) { 
3449             
3450            parentNodeCitesText.forEach((parentNodeCiteText)=>{ 
3451                if(window.innerWidth > 1024) { 
3452                    parentNodeCiteText.style.display=""; 
3453                    parentNodeCiteText.style.gridColumnStart = "11"; 
3454                    parentNodeCiteText.style.gridColumnEnd = "13"; 
3455                }  
3456                else { 
3457                    parentNodeCiteText.style.display="none"; 
3458                    parentNodeCiteText.style.gridColumnStart = ""; 
3459                    parentNodeCiteText.style.gridColumnEnd = "";                  
3460
3461            }); 
3462
3463 
3464        function addCitesTextMobile(citesText) { 
3465            const citesContainer = document.querySelector(".ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col .ptb-news__cites-elements"); 
3466 
3467            if(citesContainer.children.length === 0) { 
3468                citesContainer && citesText.forEach((citeText)=>{                         
3469                    citesContainer.appendChild(citeText.cloneNode(true)); 
3470                }); 
3471            }         
3472
3473 
3474        const citesText = document.querySelectorAll(".news-content cite"); 
3475         
3476        if (citesText.length > 0) { 
3477            const parentNodeCitesText = [...citesText].map((citeText)=>citeText.parentNode); 
3478            positionCitesText(parentNodeCitesText); 
3479            addCitesTextMobile(citesText);     
3480
3481        else { 
3482            const citesContainer = document.querySelector(".ptb-news__cite-container"); 
3483            citesContainer && (citesContainer.style.display="none"); 
3484
3485         
3486        document.addEventListener('DOMContentLoaded', ()=>{ 
3487             
3488            const citesText = document.querySelectorAll(".news-content cite"); 
3489             
3490            if (citesText.length > 0) { 
3491                const parentNodeCitesText = [...citesText].map((citeText)=>citeText.parentNode);            
3492 
3493                positionCitesText(parentNodeCitesText); 
3494                addCitesTextMobile(citesText); 
3495 
3496                window.addEventListener('resize', ()=>{positionCitesText(parentNodeCitesText)}); 
3497
3498            else { 
3499                const citesContainer = document.querySelector(".ptb-news__cite-container"); 
3500                citesContainer && (citesContainer.style.display="none"); 
3501
3502        }); 
3503 
3504    </script> 
3505 
3506    <style> 
3507     
3508        .ptb-news__read-news-post cite { 
3509            color: var(--color-neutral-800, #373737); 
3510            font-family: var(--font-family-base); 
3511            font-size: var(--font-size-xxxs, 14px) !important; 
3512            font-style: var(--font-style-normal, normal); 
3513            font-weight: var(--font-weight-regular, 400); 
3514            line-height: var(--line-height-xl, 160%); 
3515
3516 
3517        .ptb-news__read-news-post cite  a{ 
3518            font-size: var(--font-size-xxxs, 14px) !important; 
3519
3520 
3521        body.high-contrast-active .ptb-news__read-news-post cite { 
3522        color: var(--text-primary-default, var(--color-neutral-100)); 
3523        }  
3524 
3525        .ptb-news__read-news-post .news-content cite, 
3526        .ptb-news__read-news-post .ptb-news__cite-container cite { 
3527            display: block; 
3528            padding-left: var(--space-md); 
3529            border-left: var(--border-width-hairline, 1px) solid var(--color-neutral-500, #D7D7D7); 
3530
3531 
3532        @media screen and (min-width: 1025px) { 
3533            .ptb-news__read-news-post .ptb-news__cite-container { 
3534                display: none;                
3535            }         
3536
3537 
3538        @media screen and (max-width: 1025px) { 
3539            .ptb-news__read-news .ptb-news__cite-container .link { 
3540                text-decoration-line: var(--text-decoration-underline, underline); 
3541                color: #008542; 
3542
3543 
3544            body.high-contrast-active .ptb-news__read-news .ptb-news__cite-container .link { 
3545                color: #E4F7E8; 
3546
3547 
3548            body.high-contrast-active .ptb-news__read-news .ptb-news__cite-container svg path { 
3549                stroke: var(--color-neutral-500, #D7D7D7); 
3550                fill: rgba(255, 255, 255, 0.32); 
3551
3552             
3553            .ptb-news__read-news-post .ptb-news__cite-container { 
3554                display: grid; 
3555                background: var(--background-surface-level-03, #EEE); 
3556
3557 
3558            body.high-contrast-active .ptb-news__read-news-post .ptb-news__cite-container { 
3559                background: var(--background-surface-level-03, #525252); 
3560
3561 
3562            .ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col { 
3563                padding: var(--space-xxl) 0; 
3564                display: flex; 
3565                flex-direction: column; 
3566                gap: var(--space-lg, 32px); 
3567
3568 
3569            .ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col .ptb-news__cites-elements { 
3570                display: flex; 
3571                flex-direction: column; 
3572                gap: var(--space-lg, 32px);  
3573            }       
3574 
3575            .ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col .ptb-news__cite-title { 
3576                color: var(--color-neutral-800, #373737); 
3577                font-size: var(--font-size-sm, 20px); 
3578                font-style: var(--font-style-normal, normal); 
3579                font-weight: var(--font-weight-bold, 700); 
3580                line-height: var(--line-height-xl, 160%); 
3581
3582 
3583            body.high-contrast-active .ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col .ptb-news__cite-title { 
3584                color: var(--text-primary-default, var(--color-neutral-100)); 
3585
3586        }         
3587    </style> 
3588     
3589</#macro> 
3590 
3591<#-- ################################################################################################################## --> 
3592 
3593 
3594<#-- ############# Site de Crise - Notícia - Galeria de imagens ####################################################### --> 
3595<#macro renderGallery newsInfo> 
3596    <#if newsInfo.galleryItems?size == 0> 
3597        <#return /> 
3598    </#if> 
3599 
3600    <div class="gallery-breakpoint breakpoint"> 
3601        <div class="gallery col-3-11 md-col-1-8 sm-col-1-4"> 
3602 
3603            <div class="title-container"> 
3604                <svg class="icon" viewBox="0 0 26 23" fill="none" xmlns="http://www.w3.org/2000/svg"> 
3605                    <path d="M23 22H3C2.46957 22 1.96086 21.7893 1.58579 21.4142C1.21071 21.0391 1 20.5304 1 20V6C1 5.46957 1.21071 4.96086 1.58579 4.58579C1.96086 4.21071 2.46957 4 3 4H7L9 1H17L19 4H23C23.5304 4 24.0391 4.21071 24.4142 4.58579C24.7893 4.96086 25 5.46957 25 6V20C25 20.5304 24.7893 21.0391 24.4142 21.4142C24.0391 21.7893 23.5304 22 23 22Z" 
3606                            stroke="#525252" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 
3607                    <path d="M13 17C15.4853 17 17.5 14.9853 17.5 12.5C17.5 10.0147 15.4853 8 13 8C10.5147 8 8.5 10.0147 8.5 12.5C8.5 14.9853 10.5147 17 13 17Z" 
3608                            stroke="#525252" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 
3609                </svg> 
3610                <p class="title"> 
3611                    <#if locale == "pt_BR"> Galeria de Imagens <#else > Image gallery </#if> 
3612                </p> 
3613            </div> 
3614 
3615            <div class="image-container"> 
3616				<#assign index = 0 /> 
3617				<#assign index = 0 /> 
3618                <#list newsInfo.galleryItems as gItem> 
3619                    <div class="modal-image-fragment" index="${index}"> 
3620                        <div class="modal-image-container" index="${index}"> 
3621                    <div class="modal-image-fragment" index="${index}"> 
3622                        <div class="modal-image-container" index="${index}"> 
3623                            <span class="click-image" ></span> 
3624 
3625                            <div class="image-player-container"> 
3626                                <span class="close-image"> 
3627                                    <svg width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg"> 
3628                                        <path d="M22 -9.61651e-07C34.1503 -4.30546e-07 44 9.84974 44 22C44 34.1503 34.1503 44 22 44C9.84973 44 -1.49276e-06 34.1503 -9.61651e-07 22C-4.30546e-07 9.84973 9.84974 -1.49276e-06 22 -9.61651e-07Z" fill="white"/> 
3629                                        <path d="M26.5 26.5L17.5 17.5M17.5 26.5L26.5 17.5" stroke="#008542" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 
3630                                    </svg> 
3631                                </span> 
3632                                <div class="image-player-session"> 
3633                                    <#-- Midias adaptativas de imagem para desktop e mobile --> 
3634                                    <#assign fileDataRequest = restClient.get("/headless-delivery/v1.0/documents/${gItem.image.fileEntryId}") /> 
3635                                    <#assign urlAdaptativeMediaMobile = gItem.image.url/> 
3636                                    <#assign urlAdaptativeMediaDesktop = gItem.image.url/> 
3637                                     
3638                                    <#if fileDataRequest?? && fileDataRequest.adaptedImages?? > 
3639                                        <#assign dataAdaptativeMedia = fileDataRequest.adaptedImages /> 
3640                                        <#list dataAdaptativeMedia as data> 
3641                                            <#if data.resolutionName == adaptativeMediaDesktopResolutionName> 
3642                                                <#assign urlAdaptativeMediaDesktop = data.contentUrl/> 
3643                                            </#if> 
3644                                            <#if data.resolutionName == adaptativeMediaMobileResolutionName> 
3645                                                <#assign urlAdaptativeMediaMobile = data.contentUrl/> 
3646                                            </#if>      
3647                                        </#list> 
3648                                    </#if> 
3649																																				 
3650                                    <picture > 
3651                                        <source media="(max-width:767px)" srcset="${urlAdaptativeMediaMobile}"  > 
3652                                        <img width="274px" height="152px" loading="lazy" src="${urlAdaptativeMediaDesktop}" alt="${gItem.image.alt}"/> 
3653                                    </picture>		   
3654                                </div> 
3655                            </div> 
3656                        </div> 
3657                    </div> 
3658                    <#assign index = index + 1 /> 
3659                    <#assign index = index + 1 /> 
3660                </#list> 
3661                <div class="control-arrow left-arrow"> 
3662                    <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 
3663                        <path d="M20 26L10 16L20 6" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 
3664                    </svg> 
3665                </div> 
3666                <div class="control-arrow right-arrow"> 
3667                    <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 
3668                        <path d="M12 6L22 16L12 26" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 
3669                    </svg> 
3670                </div> 
3671                <div class="image-bullets"> 
3672                    <#list 0..(newsInfo.galleryItems?size-1) as index> 
3673                        <div index="${index}" class="bullet"></div> 
3674                    </#list> 
3675                </div> 
3676            </div> 
3677                <div class="control-arrow left-arrow"> 
3678                    <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 
3679                        <path d="M20 26L10 16L20 6" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 
3680                    </svg> 
3681                </div> 
3682                <div class="control-arrow right-arrow"> 
3683                    <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 
3684                        <path d="M12 6L22 16L12 26" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 
3685                    </svg> 
3686                </div> 
3687                <div class="image-bullets"> 
3688                    <#list 0..(newsInfo.galleryItems?size-1) as index> 
3689                        <div index="${index}" class="bullet"></div> 
3690                    </#list> 
3691                </div> 
3692            </div> 
3693        </div> 
3694    </div> 
3695 
3696    <style> 
3697 
3698        .ptb-news__read-news .gallery { 
3699            padding-top: 42px; 
3700
3701 
3702        .ptb-news__read-news .gallery * { 
3703            margin: 0; 
3704            padding: 0; 
3705
3706 
3707        .ptb-news__read-news .gallery { 
3708            display: flex; 
3709            gap: var(--space-xl, 40px); 
3710            flex-direction: column; 
3711
3712			 
3713        .ptb-news__read-news .gallery .control-arrow { 
3714            position: fixed; 
3715            height: 100%; 
3716            align-items: center; 
3717            display: flex; 
3718            justify-content: center; 
3719            display: none; 
3720            z-index: 9999; 
3721
3722 
3723        .ptb-news__read-news .gallery .left-arrow { 
3724            top: 0; 
3725            left: 5vw; 
3726
3727 
3728        .ptb-news__read-news .gallery .right-arrow { 
3729            top: 0; 
3730            right: 5vw; 
3731
3732 
3733        .ptb-news__read-news .gallery .lefg-arrow svg { 
3734          margin-left: 16px !important; 
3735
3736 
3737        .ptb-news__read-news .gallery .right-arrow svg { 
3738          margin-right: 16px !important; 
3739
3740 
3741        .ptb-news__read-news .gallery .image-bullets { 
3742          display: none; 
3743          gap: var(--space-sm, 16px); 
3744          position: fixed; 
3745          left: 0; 
3746          bottom: calc(10vh + 24px); 
3747          width: 100vw; 
3748          z-index: 9999; 
3749          justify-content: center; 
3750
3751 
3752        .ptb-news__read-news .gallery .image-bullets .bullet { 
3753          width: var(--size-xs, 16px); 
3754          height: var(--size-xs, 16px); 
3755          border-radius: 50%; 
3756          border: 1px solid var(--color-neutral-100, #FFFFFF); 
3757          z-index: 9999; 
3758
3759 
3760        .ptb-news__read-news .gallery .image-bullets .bullet.current-item { 
3761          background: var(--color-neutral-100, #FFFFFF); 
3762
3763			 
3764        .ptb-news__read-news .gallery .control-arrow { 
3765            position: fixed; 
3766            height: 100%; 
3767            align-items: center; 
3768            display: flex; 
3769            justify-content: center; 
3770            display: none; 
3771            z-index: 9999; 
3772
3773 
3774        .ptb-news__read-news .gallery .left-arrow { 
3775            top: 0; 
3776            left: 5vw; 
3777
3778 
3779        .ptb-news__read-news .gallery .right-arrow { 
3780            top: 0; 
3781            right: 5vw; 
3782
3783 
3784        .ptb-news__read-news .gallery .lefg-arrow svg { 
3785          margin-left: 16px !important; 
3786
3787 
3788        .ptb-news__read-news .gallery .right-arrow svg { 
3789          margin-right: 16px !important; 
3790
3791 
3792        .ptb-news__read-news .gallery .image-bullets { 
3793          display: none; 
3794          gap: var(--space-sm, 16px); 
3795          position: fixed; 
3796          left: 0; 
3797          bottom: calc(10vh + 24px); 
3798          width: 100vw; 
3799          z-index: 9999; 
3800          justify-content: center; 
3801
3802 
3803        .ptb-news__read-news .gallery .image-bullets .bullet { 
3804          width: var(--size-xs, 16px); 
3805          height: var(--size-xs, 16px); 
3806          border-radius: 50%; 
3807          border: 1px solid var(--color-neutral-100, #FFFFFF); 
3808          z-index: 9999; 
3809
3810 
3811        .ptb-news__read-news .gallery .image-bullets .bullet.current-item { 
3812          background: var(--color-neutral-100, #FFFFFF); 
3813
3814 
3815        .ptb-news__read-news .gallery .title-container { 
3816            display: flex; 
3817            align-items: center; 
3818            gap: var(--space-sm, 16px); 
3819
3820 
3821        .ptb-news__read-news .gallery .title-container svg { 
3822            width: var(--size-md, 24px); 
3823            height: 21px; 
3824
3825 
3826        .ptb-news__read-news .gallery .title-container .title { 
3827            color: var(--color-neutral-800, #373737); 
3828            font-family: var(--font-family-base); 
3829            font-size: var(--font-size-lg); 
3830            font-style: var(--font-style-normal); 
3831            font-weight: var(--font-weight-bold); 
3832            line-height: var(--line-height-md); 
3833
3834 
3835        body.high-contrast-active .ptb-news__read-news .gallery .title-container .title { 
3836            color: var(--color-neutral-100); 
3837
3838 
3839        .ptb-news__read-news .gallery .image-container { 
3840            display: flex; 
3841            gap: var(--space-sm, 16px); 
3842            flex-wrap: wrap; 
3843
3844 
3845         .ptb-news__read-news .gallery .image-container .modal-image-fragment { 
3846            width: inherit; 
3847            height: inherit; 
3848            max-height: calc(100vw/2); 
3849            padding: 0; 
3850            margin: 0; 
3851            overflow: hidden; 
3852
3853 
3854        .ptb-news__read-news .gallery .image-container .modal-image-fragment * { 
3855            box-sizing: border-box; 
3856            margin: 0; 
3857            padding: 0; 
3858
3859 
3860        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container { 
3861            width: 100%; 
3862            height: inherit; 
3863            display: flex; 
3864            justify-content: center; 
3865            align-items: center; 
3866            cursor: pointer; 
3867            position: relative; 
3868
3869 
3870        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container.image-playing {     
3871            position: fixed; 
3872            top: 0; 
3873            left: 0; 
3874            width: 100vw !important; 
3875            height: 100vh !important; 
3876            z-index: 9999 !important; 
3877            background-color: rgba(0, 0, 0, 0.75); 
3878            max-height: 100vh; 
3879
3880 
3881        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .click-image { 
3882            height: 100%; 
3883            width: 100%; 
3884            position: absolute; 
3885            z-index: 3; 
3886
3887 
3888        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container { 
3889            width: 100%; 
3890            height: 100%; 
3891
3892 
3893        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container.image-playing { 
3894            position: relative; 
3895            width: 90vw !important; 
3896            height: 80vh !important; 
3897            z-index: 9999 !important; 
3898            background-color: rgba(0, 0, 0, 0.75); 
3899            border-radius: var(--border-radius-card); 
3900
3901 
3902        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container .close-image { 
3903            display: none; 
3904            position: absolute; 
3905            top: 0; 
3906	        right: 0; 
3907            transform: translate(100%, -100%); 
3908            z-index: 99999; 
3909
3910 
3911        body.high-contrast-active .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container .close-image path:nth-child(1) { 
3912           fill: var(--background-Surface-level-01, #010101); 
3913
3914 
3915        body.high-contrast-active .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container .close-image path:nth-child(2) { 
3916           stroke: #E4F7E8; 
3917
3918 
3919        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container .close-image.image-active { 
3920            display: block; 
3921
3922 
3923        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container .image-player-session { 
3924            width: 100%; 
3925            height: 100%; 
3926
3927 
3928        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container.image-playing .image-player-session { 
3929            width: 90vw !important; 
3930            height: 80vh !important; 
3931            z-index: 9999 !important; 
3932            background-color: rgba(0, 0, 0, 0.75); 
3933            border-radius: var(--border-radius-card); 
3934            overflow: hidden; 
3935
3936 
3937        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container .image-player-session img { 
3938            object-fit: cover; 
3939
3940 
3941        .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container.image-playing .image-player-session img { 
3942            width: 100%; 
3943            height: 100%; 
3944            margin-left: 0 !important; 
3945            max-height: 100vh; 
3946
3947 
3948        .ptb-news__read-news .gallery .image-container img { 
3949            width: 274px; 
3950            height: 152px; 
3951            border-radius: var(--border-radius-md, 8px); 
3952            cursor: pointer; 
3953
3954 
3955        @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) { 
3956 
3957            .ptb-news__read-news .gallery { 
3958                padding-top: var(--space-xl, 40px); 
3959
3960 
3961            .ptb-news__read-news .gallery .image-container { 
3962                gap: var(--space-xxs, 8px); 
3963
3964 
3965            .ptb-news__read-news .gallery .image-container img { 
3966                width: 296px; 
3967                height: 180px; 
3968
3969 
3970            .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container.image-playing .image-player-container.image-playing { 
3971                transform: rotate(90deg); 
3972                transform-origin: center; 
3973                width: 80vh !important; 
3974                height: 90vw !important; 
3975
3976 
3977            .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container.image-playing .image-player-container.image-playing img{ 
3978                cursor: pointer; 
3979
3980 
3981            .ptb-news__read-news .gallery .image-container .modal-image-fragment .modal-image-container .image-player-container.image-playing .image-player-session { 
3982                width: 80vh !important; 
3983                height: 90vw !important; 
3984
3985 
3986            .ptb-news__read-news .gallery .lefg-arrow svg { 
3987                margin-left: 4px !important; 
3988
3989 
3990            .ptb-news__read-news .gallery .right-arrow svg { 
3991                margin-right: 4px !important; 
3992
3993 
3994            .ptb-news__read-news .gallery .image-bullets { 
3995              gap: 14px; 
3996
3997 
3998            .ptb-news__read-news .gallery .image-bullets .bullet { 
3999              width: var(--size-xxs, 12px); 
4000              height: var(--size-xxs, 12px); 
4001
4002 
4003            .ptb-news__read-news .gallery .lefg-arrow svg { 
4004                margin-left: 4px !important; 
4005
4006 
4007            .ptb-news__read-news .gallery .right-arrow svg { 
4008                margin-right: 4px !important; 
4009
4010 
4011            .ptb-news__read-news .gallery .image-bullets { 
4012              gap: 14px; 
4013
4014 
4015            .ptb-news__read-news .gallery .image-bullets .bullet { 
4016              width: var(--size-xxs, 12px); 
4017              height: var(--size-xxs, 12px); 
4018
4019
4020 
4021    </style> 
4022 
4023    <script> 
4024     
4025     
4026        const allModalImagesFragment = document.querySelectorAll(".ptb-news__read-news .gallery .modal-image-fragment"); 
4027        const totalItems = allModalImagesFragment.length; 
4028        const bulletsContainer = document.querySelector(".ptb-news__read-news .gallery .image-bullets"); 
4029        const bullets = bulletsContainer.querySelectorAll(".bullet"); 
4030        let currentItem = 0; 
4031        const nextImage = document.querySelector(".ptb-news__read-news .gallery .right-arrow"); 
4032        const previousImage = document.querySelector(".ptb-news__read-news .gallery .left-arrow"); 
4033 
4034        const stopImage = (getImageClick, imagePlayerContainer, imageContainer, closeImage) => { 
4035            getImageClick.classList.remove('image-playing'); 
4036            imagePlayerContainer.classList.remove('image-playing'); 
4037            imageContainer.classList.remove('image-playing'); 
4038 
4039					  const currentBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + currentItem +  '"]') 
4040            currentBullet && currentBullet.classList.remove('current-item'); 
4041						 
4042            closeImage.classList.remove('image-active'); 
4043             
4044            document.querySelector("body").style.overflow = 'initial'; 
4045            [nextImage, previousImage].forEach(item => { 
4046                item.style.display = "none"; 
4047            }); 
4048            bulletsContainer.style.display = "none"; 
4049
4050 
4051        const playImage = (index, getImageClick, imagePlayerContainer, imageContainer, closeImage) => { 
4052            getImageClick.classList.add('image-playing'); 
4053            imagePlayerContainer.classList.add('image-playing'); 
4054            imageContainer.classList.add('image-playing'); 
4055            closeImage.classList.add('image-active'); 
4056 
4057             
4058            document.querySelector("body").style.overflow = 'hidden'; 
4059            [nextImage, previousImage].forEach(item => { 
4060                item.style.display = "flex"; 
4061            }); 
4062            bulletsContainer.style.display = "flex"; 
4063            bullets[index].classList.add('current-item'); 
4064
4065 
4066        const changeImage = (next) => { 
4067          if(next == currentItem || next < 0 || next >= totalItems) return; 
4068 
4069          const getImageClick = allModalImagesFragment[currentItem].querySelector('.click-image'); 
4070          const imageContainer = allModalImagesFragment[currentItem].querySelector('.modal-image-container'); 
4071          const imagePlayerContainer = allModalImagesFragment[currentItem].querySelector('.image-player-container'); 
4072          const image = imagePlayerContainer.querySelector('img'); 
4073          const closeImage = imagePlayerContainer.querySelector('.close-image'); 
4074 
4075          const currentBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + currentItem +  '"]') 
4076          currentBullet.classList.remove('current-item'); 
4077 
4078          stopImage(getImageClick, imagePlayerContainer, imageContainer, closeImage);  
4079          allModalImagesFragment[next].querySelector('.click-image')?.click(); 
4080           
4081          const nextBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + next +  '"]') 
4082          nextBullet.classList.add('current-item'); 
4083          currentItem = next; 
4084
4085 
4086        nextImage.addEventListener('click', () => { 
4087          changeImage(currentItem + 1); 
4088        }); 
4089 
4090        previousImage.addEventListener('click', () => { 
4091          changeImage(currentItem - 1); 
4092        }); 
4093 
4094        bullets.forEach((bullet, bulletIndex) => { 
4095          bullet.addEventListener('click', (_) => changeImage(bulletIndex)) ; 
4096        }); 
4097 
4098        allModalImagesFragment.forEach((modalImageFragment, index)=>{ 
4099        const totalItems = allModalImagesFragment.length; 
4100        const bulletsContainer = document.querySelector(".ptb-news__read-news .gallery .image-bullets"); 
4101        const bullets = bulletsContainer.querySelectorAll(".bullet"); 
4102        let currentItem = 0; 
4103        const nextImage = document.querySelector(".ptb-news__read-news .gallery .right-arrow"); 
4104        const previousImage = document.querySelector(".ptb-news__read-news .gallery .left-arrow"); 
4105 
4106        const stopImage = (getImageClick, imagePlayerContainer, imageContainer, closeImage) => { 
4107            getImageClick.classList.remove('image-playing'); 
4108            imagePlayerContainer.classList.remove('image-playing'); 
4109            imageContainer.classList.remove('image-playing'); 
4110 
4111					  const currentBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + currentItem +  '"]') 
4112            currentBullet && currentBullet.classList.remove('current-item'); 
4113						 
4114            closeImage.classList.remove('image-active'); 
4115             
4116            document.querySelector("body").style.overflow = 'initial'; 
4117            [nextImage, previousImage].forEach(item => { 
4118                item.style.display = "none"; 
4119            }); 
4120            bulletsContainer.style.display = "none"; 
4121
4122 
4123        const playImage = (index, getImageClick, imagePlayerContainer, imageContainer, closeImage) => { 
4124            getImageClick.classList.add('image-playing'); 
4125            imagePlayerContainer.classList.add('image-playing'); 
4126            imageContainer.classList.add('image-playing'); 
4127            closeImage.classList.add('image-active'); 
4128 
4129             
4130            document.querySelector("body").style.overflow = 'hidden'; 
4131            [nextImage, previousImage].forEach(item => { 
4132                item.style.display = "flex"; 
4133            }); 
4134            bulletsContainer.style.display = "flex"; 
4135            bullets[index].classList.add('current-item'); 
4136
4137 
4138        const changeImage = (next) => { 
4139          if(next == currentItem || next < 0 || next >= totalItems) return; 
4140 
4141          const getImageClick = allModalImagesFragment[currentItem].querySelector('.click-image'); 
4142          const imageContainer = allModalImagesFragment[currentItem].querySelector('.modal-image-container'); 
4143          const imagePlayerContainer = allModalImagesFragment[currentItem].querySelector('.image-player-container'); 
4144          const image = imagePlayerContainer.querySelector('img'); 
4145          const closeImage = imagePlayerContainer.querySelector('.close-image'); 
4146 
4147          const currentBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + currentItem +  '"]') 
4148          currentBullet.classList.remove('current-item'); 
4149 
4150          stopImage(getImageClick, imagePlayerContainer, imageContainer, closeImage);  
4151          allModalImagesFragment[next].querySelector('.click-image')?.click(); 
4152           
4153          const nextBullet = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + next +  '"]') 
4154          nextBullet.classList.add('current-item'); 
4155          currentItem = next; 
4156
4157 
4158        nextImage.addEventListener('click', () => { 
4159          changeImage(currentItem + 1); 
4160        }); 
4161 
4162        previousImage.addEventListener('click', () => { 
4163          changeImage(currentItem - 1); 
4164        }); 
4165 
4166        bullets.forEach((bullet, bulletIndex) => { 
4167          bullet.addEventListener('click', (_) => changeImage(bulletIndex)) ; 
4168        }); 
4169 
4170        allModalImagesFragment.forEach((modalImageFragment, index)=>{ 
4171            const getImageClick = modalImageFragment.querySelector('.click-image'); 
4172            const imageContainer = modalImageFragment.querySelector('.modal-image-container'); 
4173            const imagePlayerContainer = modalImageFragment.querySelector('.image-player-container'); 
4174 
4175            const image = imagePlayerContainer.querySelector('img'); 
4176            const closeImage = imagePlayerContainer.querySelector('.close-image'); 
4177            const body = document.body; 
4178 
4179            const toTopButton = document.querySelector(".fragment_88038 .petro-button"); 
4180 
4181            getImageClick.addEventListener('click', () => { 
4182                if (document.body.classList.contains('has-edit-mode-menu')) { 
4183                    return; 
4184
4185                currentItem = index; 
4186                currentItem = index; 
4187                if (imagePlayerContainer.classList.contains('image-playing')) { 
4188                    toTopButton && (toTopButton.style.zIndex = ""); 
4189                    stopImage(getImageClick, imagePlayerContainer, imageContainer, closeImagegetImageClick, imagePlayerContainer, imageContainer, closeImage); 
4190                } else { 
4191                    playImage(index, getImageClick, imagePlayerContainer, imageContainer, closeImageindex, getImageClick, imagePlayerContainer, imageContainer, closeImage); 
4192                    toTopButton && (toTopButton.style.zIndex = "1"); 
4193
4194            }) 
4195 
4196            closeImage.addEventListener('click', () => { 
4197                if (imagePlayerContainer.classList.contains('image-playing')) { 
4198                    toTopButton && (toTopButton.style.zIndex = ""); 
4199                    stopImage(getImageClick, imagePlayerContainer, imageContainer, closeImage); 
4200                    const bulletToClose = document.querySelector('.ptb-news__read-news .gallery .image-bullets .bullet[index="' + index +  '"]') 
4201                    bulletToClose?.classList.remove('current-item'); 
4202                }  
4203            }) 
4204        });             
4205    </script> 
4206 
4207</#macro> 
4208 
4209 
4210<#-- ################################################################################################################## --> 
4211	 
4212	 
4213	 
4214	 
4215	 
4216	 
4217	 
4218	 
4219	 
4220	 
4221	 
4222	 
4223	 
4224	<#-- ############# Site de Crise - Notícia - Galeria de imagens ####################################################### --> 
4225<#macro renderQuotes newsInfo> 
4226    <#if newsInfo.quotes?size != 0> 
4227    <#--quotes "escondidas" que serão unidas a .ptb-news__read-content --> 
4228 
4229        <div class="ptb-news__quotes-container d-none "> 
4230            <div id="ptb-news__quotes-identifiers"> 
4231                <#assign separator = ""> 
4232                <#list newsInfo.quotes as quote> 
4233                    ${quote.id}; 
4234                    <#assign separator = ";"> 
4235                </#list> 
4236            </div> 
4237            <#list newsInfo.quotes as quote> 
4238                <#assign quotes_index = quote?index> 
4239                <div id="ptb-news__quotes-container-${quote_index}"> 
4240                    <#assign noAuthorWrapper = !((quote.image.url?? && quote.image.url?has_content) || (quote.author?has_content)) /> 
4241                    <div class="quote <#if noAuthorWrapper>no-author-wrapper</#if>"> 
4242                        <div class="text-wrapper"> 
4243                            <blockquote class="text">${quote.content}</blockquote > 
4244                        </div> 
4245                        <#if !noAuthorWrapper>   
4246                            <div class="author-wrapper"> 
4247                                <#if quote.image.url?? && quote.image.url?has_content> 
4248                                    <#assign imageUrl = "/o/adaptive-media/image/" + quote.image.fileEntryId +"/Thumbnail-300x300/image"/> 
4249                                    <img src="${imageUrl}" loading="lazy" alt="${quote.image.alt}">		 
4250                                </#if> 
4251                                <#if quote.author?? && quote?has_content>                             
4252                                    <p class="author">${quote.author}</p> 
4253                                </#if> 
4254                            </div> 
4255                        </#if> 
4256                    </div> 
4257                </div> 
4258            </#list> 
4259        </div> 
4260 
4261        <script> 
4262            var newsContent_code = document.querySelector(".news-content").innerHTML; 
4263 
4264            var quotesIdentifiers = document.querySelector("#ptb-news__quotes-identifiers").innerHTML.trim().split(";"); 
4265            quotesIdentifiers.forEach((quoteIdentifier, index) => { 
4266                const quoteIdentifierContent = document.querySelector("#ptb-news__quotes-container-" + index); 
4267                if (quoteIdentifierContent) { 
4268                    const tag = "#[" + quoteIdentifier.trim() + "]"; 
4269                    const splitContent = newsContent_code.split(tag); 
4270                    newsContent_code = splitContent.join(quoteIdentifierContent.innerHTML); 
4271                    //linkIdentifierContent.parentNode.removeChild(linkIdentifierContent); 
4272
4273            }); 
4274 
4275 
4276            var ptb_news__read_content = document.querySelector(".news-content"); 
4277            ptb_news__read_content.innerHTML = newsContent_code; 
4278 
4279        </script> 
4280 
4281        <style> 
4282            
4283            .ptb-news__read-news .quote { 
4284                display: flex; 
4285                flex-direction: column; 
4286                gap: var(--space-md, 24px); 
4287
4288 
4289            .ptb-news__read-news .quote.no-author-wrapper{ 
4290                gap: 0; 
4291
4292 
4293            .ptb-news__read-news .quote .text-wrapper { 
4294                padding-left: var(--space-xl, 40px); 
4295
4296 
4297            .ptb-news__read-news .quote .text-wrapper .text { 
4298                font-style: var(--font-style-italic) !important; 
4299                padding-left: var(--space-md, 24px); 
4300                margin-bottom: 0; 
4301                border-left: 1px solid var(--border-color-mid, #d7d7d7); 
4302							  font-size: var(--font-size-xxs, 16px); 
4303
4304 
4305            .ptb-news__read-news .quote .author-wrapper {  
4306                display: flex; 
4307                flex-direction: row; 
4308                gap: var(--space-md, 24px); 
4309
4310 
4311            .ptb-news__read-news .news-content .quote .author-wrapper img { 
4312                height: var(--size-xxxl, 56px); 
4313                width: var(--size-xxxl, 56px); 
4314                border-radius: 100px; 
4315                border: var(--size-nano, 2px) solid var(--border-color-mid) !important; 
4316
4317 
4318            .ptb-news__read-news .news-content .quote .author-wrapper p { 
4319                margin: 0; 
4320                align-self: center; 
4321                font-size: var(--font-size-xs, 18px); 
4322                font-style: var(--font-style-normal, normal); 
4323                font-weight: var(--font-weight-bold, 700); 
4324                line-height: var(--line-height-xs, 100%); 
4325
4326 
4327            @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) { 
4328                .ptb-news__read-news .quote .text-wrapper { 
4329                    padding-left: 0; 
4330
4331							 
4332							  .ptb-news__read-news .quote .text-wrapper .text { 
4333							      font-size: var(--font-size-xxxs, 14px); 
4334
4335 
4336                .ptb-news__read-news .news-content .quote .author-wrapper p { 
4337                    font-size: var(--font-size-xxs, 16px); 
4338
4339
4340        </style> 
4341    </#if> 
4342</#macro> 
4343 
4344 
4345					 
4346					 
4347<#-- ################################################################################################################## --> 
4348	 
4349	 
4350	 
4351	 
4352	 
4353	 
4354 
4355 
4356<#-- ############# Site de Crise - Notícia - Extrair dados de Notícias ################################################ --> 
4357<#-- 
4358Add elements from the sidebar to define your template. Type "${" to use the 
4359autocomplete feature. 
4360--> 
4361<#function extractFeaturedNewsHeadline fieldList xmlArticle> 
4362    <#return getFieldValue(fieldList, xmlArticle, "Título de destaque da notícia")> 
4363</#function> 
4364 
4365<#function extractNewsSummary fieldList xmlArticle> 
4366    <#return getFieldValue(fieldList, xmlArticle, "Resumo da notícia")> 
4367</#function> 
4368 
4369<#function extractPublishDate journalArticle> 
4370    <#assign lastPublishDate = journalArticle.getModifiedDate()> 
4371    <#if journalArticle.getLastPublishDate()??> 
4372        <#assign lastPublishDate = journalArticle.getLastPublishDate()> 
4373    <#else> 
4374        <#assign lastPublishDate = journalArticle.getModifiedDate()> 
4375    </#if> 
4376    <#return lastPublishDate /> 
4377</#function> 
4378 
4379<#-- Seção da imagem de destaque ----------------------------------------------------------------------> 
4380<#function extractNewsMedia fieldList xmlArticle  fileEntryService> 
4381    <#-- Tentando pegar Imagem --> 
4382    <#assign mediasGroup = getNodes(getIdFromFieldName(fieldList, "Mídia de destaque da notícia"), xmlArticle) /> 
4383    <#assign media = {} /> 
4384    <#list mediasGroup as mediaGroup > 
4385        <#assign media = getMediaInfo(fieldList, mediaGroup, "Imagem Destaque", fileEntryService) />  
4386        <#assign media = {"imageSrc": media.url, "imageAlt": media.alt, "fileEntryId" : media.fileEntryId} /> 
4387 
4388        <#-- Se não tiver imagem, tentar pegar vídeo --> 
4389        <#if !media.imageSrc?has_content>               
4390            <#assign youtubeID = getFieldValue(fieldList, mediaGroup, "ID do vídeo do YouTube do vídeo de destaque") /> 
4391            <#if youtubeID?? && youtubeID?has_content>  
4392                <#assign media = {"videoYotubeID": youtubeID} /> 
4393            <#else> 
4394                <#-- Tentar pegar vídeo Interno --> 
4395                <#assign internalVideo = getMediaInfo(fieldList, mediaGroup, "Fazer upload de um vídeo de destaque", fileEntryService) /> 
4396                <#if internalVideo?? && internalVideo?has_content> 
4397                    <#assign media = {"internalVideo": internalVideo} /> 
4398                </#if> 
4399            </#if>          
4400        </#if> 
4401 
4402        <#assign referenceMediasGroup = getNodes(getIdFromFieldName(fieldList, "Referências"), mediaGroup) /> 
4403        <#list referenceMediasGroup as referenciaMediaGroup > 
4404            <#assign credits = getFieldValue(fieldList, referenceMediasGroup, "Crédito da mídia de destaque da notícia") /> 
4405            <#assign legend = getFieldValue(fieldList, referenceMediasGroup, "Legenda da mídia de destaque da notícia") /> 
4406        </#list> 
4407 
4408        <#assign media = media + {"credits": credits, "legend": legend} /> 
4409         
4410    </#list> 
4411 
4412    <#return media> 
4413</#function> 
4414 
4415 
4416<#--------------------- Renderização de Lista de Cards -----------------------------------------------> 
4417 
4418<#-- Root Css -> Para poder instanciar dois elementos e não dar confusão no JS --> 
4419<#assign rootCss = "card-news-list-container_" + randomNumber(4586) /> 
4420 
4421<#attempt> 
4422    <#assign ourEnergyStyles = [] /> 
4423    <#list ourEnergyVocabulary.getCategories() as ourEnergyCategory > 
4424        <#assign shadowColorCategory = "" /> 
4425        <#if (assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor da Sombra")??)> 
4426            <#assign categoryShadowColorByService = assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor da Sombra") /> 
4427            <#assign shadowColorCategory = categoryShadowColorByService.value /> 
4428        </#if> 
4429 
4430        <#assign backgroundColorCategory = "" /> 
4431        <#if (assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor de Fundo")??)> 
4432            <#assign categoryBackgroundColorByService = assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor de Fundo") /> 
4433            <#assign backgroundColorCategory = categoryBackgroundColorByService.value /> 
4434        </#if> 
4435 
4436        <#assign textColorCategory = "" /> 
4437        <#if (assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor do Texto")??)> 
4438            <#assign categoryTextColorByService = assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor do Texto") /> 
4439            <#assign textColorCategory = categoryTextColorByService.value /> 
4440        </#if> 
4441 
4442        <#assign textColorHighContrastCategory = "" /> 
4443        <#if (assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor do Texto em Alto Contraste")??)> 
4444            <#assign categoryTextColorHighContrastByService = assetCategoryPropService.fetchCategoryProperty(ourEnergyCategory.getCategoryId(),"Cor do Texto em Alto Contraste") /> 
4445            <#assign textColorHighContrastCategory = categoryTextColorHighContrastByService.value /> 
4446        </#if> 
4447 
4448        <#assign ourEnergyStyles += [{"titleLocale": ourEnergyCategory.getTitle(locale),"shadowColor": shadowColorCategory, "backgroundColor": backgroundColorCategory, "textColor": textColorCategory, "textColorHighContrast": textColorHighContrastCategory}] /> 
4449    </#list> 
4450 
4451    <#recover> 
4452        <#assign ourEnergyStyles = [] /> 
4453     
4454</#attempt> 
4455 
4456<#-- Função para obter a primeira categoria associonada a um Vocabulário o qual está associado a um Jornal Article --> 
4457<#function getFirstCategoryTitleLocaleOfVocabulary journalArticle vocabulary > 
4458    <#attempt> 
4459        <#assign categories = assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.getClassPK()) /> 
4460         
4461        <#list categories as category> 
4462            <#if vocabulary.getVocabularyId() == category.getVocabularyId()> 
4463                <#return category.getTitle(locale)> 
4464            </#if> 
4465        </#list> 
4466 
4467        <#return ""> 
4468 
4469        <#recover> 
4470            <#return "" /> 
4471 
4472    </#attempt> 
4473</#function> 
4474 
4475<#-- Função para obter os dados de um card no Web Content (Journal Article) --> 
4476<#function getDataForCard entry > 
4477    <#attempt> 
4478        <#assign journalArticle = journalArticleLocalService.getLatestArticle(entry.getClassPK()) /> 
4479        <#assign ddmStructure = journalArticle.getDDMStructure() /> 
4480        <#assign fieldList = getFieldListByStructure(ddmStructure) /> 
4481        <#assign xmlArticle = journalArticle.getDocument().getRootElement() /> 
4482 
4483        <#-- Tentando pegar Imagem --> 
4484        <#assign mediasGroup = getNodes(getIdFromFieldName(fieldList, "Mídia de destaque da notícia"), xmlArticle) /> 
4485        <#assign media = "" /> 
4486        <#list mediasGroup as mediaGroup > 
4487            <#assign media = getMediaInfo(fieldList, mediaGroup, "Imagem Destaque", fileEntryService) /> 
4488 
4489            <#assign fileDataRequest = restClient.get("/headless-delivery/v1.0/documents/${media.fileEntryId}") /> 
4490 
4491            <#assign urlAdaptativeMediaDesktop = ""/> 
4492            <#assign urlAdaptativeMediaMobile = ""/> 
4493            <#if media.url?? && media.url?has_content && fileDataRequest?? && fileDataRequest.adaptedImages?? > 
4494                <#assign dataAdaptativeMedia = fileDataRequest.adaptedImages /> 
4495                <#list dataAdaptativeMedia as data> 
4496                    <#if data.resolutionName == adaptativeMediaDesktopResolutionName> 
4497                        <#assign urlAdaptativeMediaDesktop = data.contentUrl/> 
4498                    </#if> 
4499                    <#if data.resolutionName == adaptativeMediaMobileResolutionName> 
4500                        <#assign urlAdaptativeMediaMobile = data.contentUrl/> 
4501                    </#if>      
4502                </#list> 
4503            </#if> 
4504            <#assign media = {"imageSrc": media.url, "imageAlt": media.alt, "imageFileEntryId": media.fileEntryId, "urlAdaptativeMedia": {"mobile": urlAdaptativeMediaMobile, "desktop": urlAdaptativeMediaDesktop}} />  
4505             
4506            <#-- Se não tiver imagem, tentar pegar vídeo --> 
4507            <#if !media.imageSrc?? || !media.imageSrc?has_content>               
4508                <#assign youtubeID = getFieldValue(fieldList, mediaGroup, "ID do vídeo do YouTube do vídeo de destaque") /> 
4509                <#if youtubeID?? && youtubeID?has_content>  
4510                    <#assign media = {"videoYotubeID": youtubeID} /> 
4511                <#else> 
4512                    <#-- Tentar pegar vídeo Interno --> 
4513                    <#assign internalVideo = getMediaInfo(fieldList, mediaGroup, "Fazer upload de um vídeo de destaque", fileEntryService) /> 
4514                    <#if internalVideo?? && internalVideo?has_content> 
4515                        <#assign media = {"internalVideo": internalVideo} /> 
4516                    </#if> 
4517                </#if>          
4518            </#if> 
4519        </#list> 
4520 
4521        <#assign title = getFieldValue(fieldList, xmlArticle, "Título de destaque da notícia") /> 
4522 
4523        <#assign timeRead = getFieldValue(fieldList, xmlArticle, "Tempo de Leitura") /> 
4524 
4525        <#assign ourEnergyCategory = getFirstCategoryTitleLocaleOfVocabulary(entry, ourEnergyVocabulary) /> 
4526 
4527        <#assign typeOfNews = getFirstCategoryTitleLocaleOfVocabulary(entry, typeOfNewsVocabulary) /> 
4528 
4529        <#if themeDisplay.getPortalURL()?contains("webserver")> 
4530					<#assign urlNews = themeDisplay.getPortalURL() + themeDisplay.getPathFriendlyURLPublic() + layout.getGroup().friendlyURL + "/w/" + journalArticle.getUrlTitle()> 
4531				<#else> 
4532						<#assign urlNews = themeDisplay.getPortalURL() + "/w/" + journalArticle.getUrlTitle()> 
4533				</#if> 
4534         
4535        <#assign cardData = {"media": media, "title": title, "timeRead": timeRead, "ourEnergyCategory": ourEnergyCategory, "typeOfNews": typeOfNews, "urlNews": urlNews} /> 
4536         
4537        <#return cardData> 
4538 
4539        <#recover> 
4540            <#return {} /> 
4541    </#attempt> 
4542 
4543    <#-- cardData ->    image: url, alt 
4544                        title 
4545                        timeRead 
4546                        ourEnergyCategory 
4547                        typeOfNews 
4548                        urlNews 
4549    --> 
4550</#function> 
4551 
4552 
4553<#-- Macro para renderizar os arrows--> 
4554<#macro renderArrows> 
4555    <div class="card-news-list-arrows-breakpoint"> 
4556        <div class="card-news-list-arrows"> 
4557            <div class="card-news-arrow-left arrow-disable">  
4558                <svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg"> 
4559                    <path d="M1 17C1 8.16344 8.16344 1 17 1C25.8366 1 33 8.16344 33 17C33 25.8366 25.8366 33 17 33C8.16344 33 1 25.8366 1 17Z" stroke="#959595"/> 
4560                    <path d="M22.5 17H11.5M11.5 17L16 12.5M11.5 17L16 21.5" stroke="#525252" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 
4561                </svg> 
4562            </div> 
4563            <div class="card-news-arrow-right">  
4564                <svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg"> 
4565                    <path d="M1 17C1 8.16344 8.16344 1 17 1C25.8366 1 33 8.16344 33 17C33 25.8366 25.8366 33 17 33C8.16344 33 1 25.8366 1 17Z" stroke="#008542"/> 
4566                    <path d="M11.5 17H22.5M22.5 17L18 12.5M22.5 17L18 21.5" stroke="#008542" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 
4567                </svg> 
4568 
4569            </div> 
4570        </div> 
4571    </div> 
4572 
4573    <style> 
4574 
4575        .${rootCss} .card-news-list-arrows-breakpoint { 
4576            position: relative; 
4577            z-index: 1; 
4578					width: 100%; 
4579
4580 
4581        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows { 
4582            display: flex; 
4583            align-items: flex-start; 
4584            justify-self: flex-end; 
4585            gap: var(--space-xxs, 8px); 
4586
4587         
4588        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left, 
4589        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right { 
4590            cursor: pointer; 
4591
4592 
4593        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left:not(.arrow-disable):hover path:nth-child(1), 
4594        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right:not(.arrow-disable):hover path:nth-child(1) { 
4595            fill: rgb(0, 133, 66); 
4596
4597 
4598        body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left:not(.arrow-disable):hover path:nth-child(1), 
4599        body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right:not(.arrow-disable):hover path:nth-child(1) { 
4600            fill: white; 
4601
4602 
4603        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left:not(.arrow-disable):hover path:nth-child(2), 
4604        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right:not(.arrow-disable):hover path:nth-child(2) { 
4605            stroke: #fff; 
4606
4607 
4608        body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left:not(.arrow-disable):hover path:nth-child(2), 
4609        body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right:not(.arrow-disable):hover path:nth-child(2) { 
4610            stroke: #010101; 
4611
4612 
4613        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable, 
4614        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable { 
4615            opacity: 0.4; 
4616            cursor: auto; 
4617
4618 
4619        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left path, 
4620        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right path { 
4621            stroke: rgb(0, 133, 66); 
4622            transition: all 300ms ease-in-out; 
4623
4624 
4625        body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left path, 
4626        body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right path { 
4627            stroke: rgba(228, 247, 232, 1); 
4628
4629 
4630        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable path:nth-child(1), 
4631        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable path:nth-child(1) { 
4632            stroke: rgb(149, 149, 149); 
4633
4634 
4635        body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable path:nth-child(1), 
4636        body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable path:nth-child(1) { 
4637            stroke: rgba(215, 215, 215, 1); 
4638
4639 
4640        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable path:nth-child(2), 
4641        .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable path:nth-child(2) { 
4642            stroke: rgb(82, 82, 82); 
4643
4644 
4645        body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-left.arrow-disable path:nth-child(2), 
4646        body.high-contrast-active .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows .card-news-arrow-right.arrow-disable path:nth-child(2) { 
4647            stroke: rgba(149, 149, 149, 1); 
4648
4649 
4650        @media screen and (min-width: 1440px) { 
4651            .${rootCss} .card-news-list-arrows-breakpoint { 
4652                width: 100%; 
4653
4654
4655 
4656        @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) { 
4657 
4658            .${rootCss} .card-news-list-arrows-breakpoint .card-news-list-arrows { 
4659                justify-self: flex-start; 
4660                margin-top: var(--space-lg); 
4661
4662
4663 
4664    </style> 
4665 
4666</#macro> 
4667 
4668 
4669<#-- Macro para renderizar um Card --> 
4670<#macro renderCard cardData> 
4671    <#-- cardData ->    image: url, alt 
4672                        title 
4673                        timeRead 
4674                        ourEnergyCategory 
4675                        typeOfNews 
4676                        urlNews 
4677    --> 
4678 
4679    <div class="card-news-container"> 
4680        <a class="news-page-see-more-link card-news-link" href="${cardData.urlNews}">  Link da Notícia ${cardData.title}  </a> 
4681        <div class="card-news-thumb"> 
4682            <#assign noImage = "" /> 
4683            <#if cardData.media.imageSrc?? && cardData.media.imageSrc?has_content> 
4684                <#assign imageSrcDesktop = cardData.media.imageSrc /> 
4685                <#assign imageSrcMobile = cardData.media.imageSrc /> 
4686                <#if cardData.media.urlAdaptativeMedia?? && cardData.media.urlAdaptativeMedia?has_content> 
4687                    <#assign imageSrcDesktop = cardData.media.urlAdaptativeMedia.desktop /> 
4688                    <#assign imageSrcMobile = cardData.media.urlAdaptativeMedia.mobile /> 
4689                </#if> 
4690                <picture > 
4691                    <source media="(max-width:767px)" srcset="${imageSrcMobile}"> 
4692                    <img class="card-news-image" loading="lazy" src="${imageSrcDesktop}" alt="${cardData.media.imageAlt}"/> 
4693                </picture>		 
4694            <#else> 
4695                <#if cardData.media.videoYotubeID?? && cardData.media.videoYotubeID?has_content> 
4696                <picture > 
4697                    <source media="(max-width:767px)" srcset="https://img.youtube.com/vi/${cardData.media.videoYotubeID}/mqdefault.jpg"> 
4698                    <img class="card-news-image" loading="lazy" src="https://img.youtube.com/vi/${cardData.media.videoYotubeID}/maxresdefault.jpg" alt="YouTube Thumbnail"/> 
4699                </picture>  
4700                <#else> 
4701                    <#if (cardData.media.internalVideo?? && cardData.media.internalVideo.url?has_content) > 
4702                        <video class="card-news-image" loading="lazy"> 
4703                            <source src="${cardData.media.internalVideo.url}"> 
4704                            Your browser does not support the video tag. 
4705                        </video> 
4706                    <#else> 
4707                        <#assign noImage = "no-image" /> 
4708                    </#if> 
4709                </#if> 
4710                <svg class="thumb-play-icon" width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 
4711                    <path d="M0 16C0 7.16344 7.16344 0 16 0C24.8366 0 32 7.16344 32 16C32 24.8366 24.8366 32 16 32C7.16344 32 0 24.8366 0 16Z" fill="white" fill-opacity="0.8"/> 
4712                    <path d="M22.2563 15.5744L13.2625 10.0744C13.1868 10.0277 13.1 10.0021 13.0111 10.0001C12.9221 9.99816 12.8343 10.02 12.7566 10.0633C12.6789 10.1066 12.6141 10.1698 12.569 10.2465C12.5239 10.3232 12.5001 10.4105 12.5 10.4994V21.4994C12.5001 21.5884 12.5239 21.6757 12.569 21.7524C12.6141 21.8291 12.6789 21.8923 12.7566 21.9356C12.8343 21.9789 12.9221 22.0007 13.0111 21.9988C13.1 21.9968 13.1868 21.9712 13.2625 21.9244L22.2563 16.4244C22.3301 16.3808 22.3913 16.3186 22.4338 16.2441C22.4763 16.1696 22.4987 16.0852 22.4987 15.9994C22.4987 15.9137 22.4763 15.8293 22.4338 15.7548C22.3913 15.6803 22.3301 15.6181 22.2563 15.5744Z" fill="#008542"/> 
4713                </svg>        
4714            </#if>         
4715        </div> 
4716         
4717        <div class="card-news-category-container ${noImage}">  
4718            <div data-category="${cardData.ourEnergyCategory}" class="card-news-category paragraph-micro-regular"> ${cardData.ourEnergyCategory} </div> 
4719        </div>  
4720 
4721        <div class="card-news-text-content ${noImage}">  
4722            <div class="card-news-title h5"> ${cardData.title} </div> 
4723 
4724             <div class="card-news-info">  
4725                <div class="card-news-type">  
4726                    <#if getPostTypeImageUrl(POST_TYPES_CATEGORIES, (cardData.typeOfNews)!default(""))?? > 
4727												<#assign postTypeIconUrl = getPostTypeImageUrl(POST_TYPES_CATEGORIES, (cardData.typeOfNews)!default("")) /> 
4728												<img src="${postTypeIconUrl}" loading="lazy" alt="post type icon" /> 
4729                        <div class="card-news-type-text paragraph-micro-regular">${cardData.typeOfNews}</div> 
4730												<#else/> 
4731                            <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> 
4732                                <path d="M6.25 7.5H13.75M6.25 10H13.75M6.25 12.5H13.75M3.125 3.75H16.875C17.2202 3.75 17.5 4.02982 17.5 4.375V15.625C17.5 15.9702 17.2202 16.25 16.875 16.25H3.125C2.77982 16.25 2.5 15.9702 2.5 15.625V4.375C2.5 4.02982 2.77982 3.75 3.125 3.75Z" stroke="#959595" stroke-linecap="round" stroke-linejoin="round"/> 
4733                            </svg>										 
4734                            <div class="card-news-type-text paragraph-micro-regular">Artigo</div> 
4735										</#if> 
4736                </div> 
4737 
4738								<#if cardData.timeRead?? && cardData.timeRead?has_content> 
4739									<div class="card-news-time-read">  
4740											<svg class="card-news-icon-time-read" width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> 
4741													<path d="M10.5 5.625C10.5 5.34886 10.2761 5.125 10 5.125C9.72386 5.125 9.5 5.34886 9.5 5.625H10.5ZM10 10H9.5C9.5 10.2761 9.72386 10.5 10 10.5V10ZM14.375 10.5C14.6511 10.5 14.875 10.2761 14.875 10C14.875 9.72386 14.6511 9.5 14.375 9.5V10.5ZM17 10C17 13.866 13.866 17 10 17V18C14.4183 18 18 14.4183 18 10H17ZM10 17C6.13401 17 3 13.866 3 10H2C2 14.4183 5.58172 18 10 18V17ZM3 10C3 6.13401 6.13401 3 10 3V2C5.58172 2 2 5.58172 2 10H3ZM10 3C13.866 3 17 6.13401 17 10H18C18 5.58172 14.4183 2 10 2V3ZM9.5 5.625V10H10.5V5.625H9.5ZM10 10.5H14.375V9.5H10V10.5Z" fill="#959595"/> 
4742											</svg> 
4743 
4744											<div class="card-news-time-read-text paragraph-micro-regular">${cardData.timeRead} min</div> 
4745									</div> 
4746								</#if> 
4747            </div> 
4748        </div> 
4749    </div> 
4750</#macro> 
4751 
4752<style> 
4753    .${rootCss} .card-news-container { 
4754        width: 300px; 
4755        height: 370px; 
4756        display: flex; 
4757        flex-direction: column; 
4758        flex-shrink: 0; 
4759        align-items: flex-start; 
4760        border-radius: var(--border-radius-lg); 
4761        border: var(--border-width-hairline) solid var(--border-card-default, #EEE); 
4762        background: var(--background-surface-level-01, #FFF); 
4763        box-shadow: 0px 12px 60px -10px rgba(145, 147, 149, 0.12); 
4764        overflow: hidden; 
4765        scroll-snap-align: start; 
4766        cursor: pointer; 
4767        transition: border 300ms ease-in-out; 
4768        text-decoration: none; 
4769        position: relative; 
4770
4771 
4772    body.high-contrast-active .${rootCss} .card-news-container {      
4773        border: var(--border-width-hairline) solid var(--border-card-default, #525252); 
4774        background: var(--background-surface-level-01, #010101); 
4775
4776 
4777    .${rootCss} .card-news-container:hover { 
4778        border: var(--border-width-hairline) solid rgb(0, 133, 66); 
4779
4780 
4781    body.high-contrast-active .${rootCss} .card-news-container:hover { 
4782        border: var(--border-width-hairline) solid var(--border-card-default, #E4F7E8); 
4783
4784 
4785    .${rootCss} .card-news-container .card-news-link { 
4786        position: absolute; 
4787        top: 0; 
4788        width: 100%; 
4789        height: 100%; 
4790        z-index: 1; 
4791        opacity: 0; 
4792
4793 
4794    .${rootCss} .card-news-container .card-news-thumb { 
4795        position: relative; 
4796
4797 
4798    .${rootCss} .card-news-container .card-news-image { 
4799        width: 298px; 
4800        height: 168px; 
4801        object-fit: cover; 
4802
4803 
4804 
4805    .${rootCss} .card-news-container .card-news-thumb .thumb-play-icon { 
4806        position: absolute; 
4807        left: 50%; 
4808        top: 50%; 
4809        transform: translate(-50%, -50%); 
4810
4811 
4812    body.high-contrast-active .${rootCss} .card-news-container .card-news-thumb .thumb-play-icon path:nth-child(1) { 
4813        fill: black;   
4814
4815 
4816    body.high-contrast-active .${rootCss} .card-news-container .card-news-thumb .thumb-play-icon path:nth-child(2) { 
4817        fill: white;   
4818
4819 
4820    .${rootCss} .card-news-container .card-news-category-container { 
4821        position: relative; 
4822
4823 
4824    .${rootCss} .card-news-container .card-news-category-container .card-news-category { 
4825        display: flex; 
4826        justify-content: center; 
4827        align-items: center;  
4828        padding: var(--space-micro) var(--space-xs); 
4829        position: absolute; 
4830        z-index: 2; 
4831        left: var(--space-md); 
4832        top: -13px; 
4833        border-radius: var(--border-radius-pill); 
4834        background: linear-gradient(0deg, var(--background-surface-opacity-light-level-07, rgba(255, 255, 255, 0.96)) 0%, var(--background-surface-opacity-light-level-07, rgba(255, 255, 255, 0.96)) 100%), var(--default-sup-green-water, #006B65); 
4835        box-shadow: 0px 2px 6px 0px rgba(0, 178, 169, 0.10); 
4836        line-height: var(--line-height-lg, 144%); 
4837        color: var(--default-sup-green-water, #006B65); 
4838			  white-space: nowrap; 
4839
4840 
4841    body.high-contrast-active .${rootCss} .card-news-container .card-news-category-container .card-news-category { 
4842        background: linear-gradient(0deg, var(--background-surface-opacity-light-level-07, #373737) 0%, var(--background-surface-opacity-light-level-07, #373737) 100%), var(--default-sup-green-water, #99E0DD); 
4843        color: var(--default-sup-green-water, #99E0DD);  
4844
4845 
4846    .${rootCss} .card-news-container .card-news-category-container.no-image .card-news-category { 
4847        position: relative; 
4848        top: 0; 
4849        left: 0; 
4850        margin-left: var(--space-md); 
4851        margin-top: var(--space-md); 
4852
4853 
4854    .${rootCss} .card-news-container .card-news-text-content { 
4855        display: flex; 
4856        padding: var(--space-lg, 32px) var(--space-md, 24px) var(--space-md, 24px) var(--space-md, 24px); 
4857        flex-direction: column; 
4858        justify-content: space-between; 
4859        align-items: flex-start; 
4860        flex: 1 0 0; 
4861        align-self: stretch; 
4862
4863 
4864    .${rootCss} .card-news-container .card-news-text-content.no-image { 
4865        padding-top: var(--space-sm); 
4866
4867 
4868    .${rootCss} .card-news-container .card-news-text-content .card-news-title { 
4869        display: -webkit-box; 
4870        -webkit-box-orient: vertical; 
4871        -webkit-line-clamp: 4; 
4872        align-self: stretch; 
4873        overflow: hidden; 
4874        color: var(--text-primary-default, #373737); 
4875        text-overflow: ellipsis; 
4876        margin: 0; 
4877
4878 
4879    body.high-contrast-active .${rootCss} .card-news-container .card-news-text-content .card-news-title { 
4880        color: var(--text-primary-default, #FFF); 
4881
4882 
4883    .${rootCss} .card-news-container .card-news-text-content .card-news-info { 
4884        display: flex; 
4885        align-items: center; 
4886        align-content: center; 
4887        gap: var(--space-sm, 16px); 
4888        align-self: stretch; 
4889        flex-wrap: wrap; 
4890
4891 
4892    .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-type, 
4893    .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-time-read { 
4894        display: flex; 
4895        align-items: center; 
4896        gap: var(--space-xxs, 8px); 
4897
4898 
4899    body.high-contrast-active .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-type path { 
4900        stroke: #D7D7D7; 
4901
4902 
4903    .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-type .card-news-type-text, 
4904    .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-time-read .card-news-time-read-text { 
4905        color: var(--text-tertiary-default, #959595); 
4906        line-height: var(--line-height-lg, 144%); 
4907
4908 
4909    body.high-contrast-active .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-type .card-news-type-text, 
4910    body.high-contrast-active .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-time-read .card-news-time-read-text { 
4911        color: var(--text-tertiary-default, #EEE); 
4912
4913 
4914    .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-time-read .card-news-icon-time-read { 
4915        transform: translateY(-0.5px); 
4916
4917 
4918    body.high-contrast-active .${rootCss} .card-news-container .card-news-text-content .card-news-info .card-news-time-read .card-news-icon-time-read path { 
4919        fill: #D7D7D7; 
4920
4921</style> 
4922 
4923<#assign maxNumberOfCards = 9/> 
4924<#assign className = "com.liferay.journal.model.JournalArticle" /> 
4925<#assign classNameId = PortalUtil.getClassNameId(className) /> 
4926${AssetEntryQuery.setClassNameIds([classNameId]) } 
4927${AssetEntryQuery.setEnd(maxNumberOfCards)} 
4928 
4929<#assign entries = []/> 
4930<#assign ourEnergyCategoriesIds = getAllCategoryIdOfVocabulary(assetEntry, ourEnergyVocabulary) /> 
4931<#list ourEnergyCategoriesIds as ourEnergyCategoryId> 
4932    ${AssetEntryQuery.setAllCategoryIds([ourEnergyCategoryId])} 
4933    <#assign ents = AssetEntryQueryService.getEntries(AssetEntryQuery) /> 
4934    <#assign entries = entries + ents /> 
4935</#list> 
4936 
4937 
4938<#-- Renderizar Lista de cards --> 
4939<#if entries?has_content> 
4940    <div class="${rootCss}"> 
4941        <div class="list-of-news-title breakpoint"> 
4942            <div class="list-of-news-title-col col-1-12 md-col-1-8 sm-col-1-4"> 
4943                <div class="list-title fragment_85017"> 
4944                    <div class="petro-title"> 
4945                        <h2 id="title" class="display-sm" style="color: var(--color-neutral-800)"> 
4946                            <#if locale?lower_case == "pt_br"> Leia também <#else> Read also </#if> 
4947                        </h2> 
4948                        <div class="yellow-bar-container">   
4949                            <div class="yellow-bar bar-display-sm" style="background-color: var(--color-secondary-medium)"></div> 
4950                               <@renderArrows /> 
4951                        </div> 
4952                    </div> 
4953                </div> 
4954            </div>  
4955        </div> 
4956         
4957        <div class="card-news-list-breakpoint breakpoint"> 
4958            <div class="card-news-list col-1-12 md-col-1-8 sm-col-1-4">  
4959                <#if entries?size gt maxNumberOfCards> 
4960                    <#assign entries = entries[0..maxNumberOfCards] /> 
4961                </#if> 
4962                <#list entries as entry> 
4963                    <#if assetEntry.getClassPK() != entry.getClassPK() > 
4964                        <#assign cardData = getDataForCard(entry) /> 
4965                        <@renderCard cardData/> 
4966                    </#if> 
4967                </#list> 
4968            </div> 
4969        </div>   
4970    </div> 
4971</#if> 
4972 
4973 
4974<style> 
4975    .portlet { 
4976        margin: 0; 
4977
4978     
4979    .${rootCss} { 
4980        padding: var(--space-giant, 80px) 0; 
4981        background: var(--background-surface-level-01, #FFF); 
4982        width: 100%; 
4983        position: relative; 
4984        font-family: var(--font-family-base, "Petrobras Sans"); 
4985        display: flex; 
4986        flex-direction: column; 
4987        gap: var(--space-lg); 
4988
4989 
4990    body.high-contrast-active .${rootCss} { 
4991        background: var(--background-surface-level-01, #010101); 
4992
4993 
4994    .${rootCss} .list-of-news-title { 
4995        position: relative; 
4996        z-index: 1; 
4997
4998 
4999    .${rootCss} body.high-contrast-active .fragment_614685 .petro-title .yellow-bar { 
5000        background-color: #FFEEB3 !important; 
5001
5002 
5003    .${rootCss} .petro-title > div:has(> .yellow-bar, > .card-news-list-arrows-breakpoint) { 
5004        display: flex;     
5005
5006 
5007    .${rootCss} .card-news-list { 
5008        display: flex; 
5009        gap: var(--space-lg); 
5010        overflow: auto; 
5011        position: relative; 
5012        z-index: 1; 
5013        scroll-snap-type: x mandatory; 
5014        scrollbar-width: none; 
5015
5016 
5017    .${rootCss} .card-news-list::-webkit-scrollbar { 
5018        display: none; 
5019
5020 
5021    @media screen and (min-width: 1441px) { 
5022        .${rootCss} .card-news-list-breakpoint { 
5023            width: 100%;            
5024
5025 
5026        .${rootCss} .list-of-news-title { 
5027            width: 100%; 
5028
5029
5030 
5031    @media screen and (max-width: 1024px) { 
5032        .${rootCss} .fragment_614685 { 
5033            padding: var(--space-xxl, 56px) 0; 
5034
5035
5036    
5037    @media screen and (max-width: 768px) { 
5038				.${rootCss} .petro-title > div:has(> .yellow-bar, > .card-news-list-arrows-breakpoint) { 
5039						flex-direction: column; 
5040
5041
5042 
5043 
5044</style> 
5045 
5046<#list ourEnergyStyles as ourEnergyStyle> 
5047    <style> 
5048        .${rootCss} [data-category="${ourEnergyStyle.titleLocale}"] { 
5049            background: linear-gradient(0deg, var(--background-surface-opacity-light-level-07, rgba(255, 255, 255, 0.96)) 0%, var(--background-surface-opacity-light-level-07, rgba(255, 255, 255, 0.96)) 100%), #${ourEnergyStyle.backgroundColor} !important; 
5050            box-shadow: 0px 2px 6px 0px #${ourEnergyStyle.shadowColor} !important; 
5051            color: #${ourEnergyStyle.textColor} !important; 
5052
5053 
5054        body.high-contrast-active .${rootCss} [data-category="${ourEnergyStyle.titleLocale}"] { 
5055             background: linear-gradient(0deg, var(--background-surface-opacity-light-level-07, rgba(55, 55, 55, 1)) 0%, var(--background-surface-opacity-light-level-07, rgba(55, 55, 55, 1)) 100%), #${ourEnergyStyle.backgroundColor} !important; 
5056            color: #${ourEnergyStyle.textColorHighContrast} !important; 
5057
5058 
5059    </style> 
5060</#list> 
5061 
5062<script> 
5063 
5064    function disableEnableArrow(arrow, scrollBar, maxDistance, direction) 
5065
5066        if(direction === "left") { 
5067            if (scrollBar.scrollLeft > 0) { 
5068                arrow.classList.contains("arrow-disable") && arrow.classList.remove("arrow-disable"); 
5069
5070            else { 
5071                !arrow.classList.contains("arrow-disable") && arrow.classList.add("arrow-disable"); 
5072
5073        }  
5074        else if(direction === "right") { 
5075            if (Math.ceil(scrollBar.scrollLeft + scrollBar.clientWidth) < maxDistance) { 
5076                arrow.classList.contains("arrow-disable") && arrow.classList.remove("arrow-disable"); 
5077
5078            else { 
5079                !arrow.classList.contains("arrow-disable") && arrow.classList.add("arrow-disable"); 
5080
5081
5082
5083 
5084    function scrollCarousel() 
5085
5086        const root = document.querySelector(".${rootCss}"); 
5087        if(root) { 
5088            const scrollBar = root.querySelector(".${rootCss} .card-news-list"); 
5089            const gap = 32;// var(--space-lg); 
5090            const stepLength = scrollBar.querySelector(".card-news-container").offsetWidth + gap; 
5091            const arrowLeftBtn = root.querySelector(".card-news-arrow-left") 
5092            const arrowRightBtn = root.querySelector(".card-news-arrow-right") 
5093 
5094            let maxDistance = scrollBar.scrollWidth; 
5095 
5096            arrowLeftBtn.addEventListener('click', () => { 
5097                if (scrollBar.scrollLeft > 0) { 
5098                    scrollBar.scroll({ 
5099                        left: scrollBar.scrollLeft - stepLength, 
5100                        behavior: "smooth", 
5101                    });	 
5102
5103            }); 
5104 
5105            arrowRightBtn.addEventListener('click', () => { 
5106                if (scrollBar.scrollLeft < maxDistance) { 
5107                    scrollBar.scroll({ 
5108                        left: scrollBar.scrollLeft + stepLength, 
5109                        behavior: "smooth", 
5110                    }); 
5111
5112            }); 
5113             
5114            scrollBar.addEventListener("scroll", ()=>{ 
5115                disableEnableArrow(arrowLeftBtn, scrollBar, maxDistance, "left"); 
5116                disableEnableArrow(arrowRightBtn, scrollBar, maxDistance, "right"); 
5117            }); 
5118 
5119            disableEnableArrow(arrowLeftBtn, scrollBar, maxDistance, "left"); 
5120            disableEnableArrow(arrowRightBtn, scrollBar, maxDistance, "right"); 
5121 
5122        }        
5123
5124 
5125    document.addEventListener('DOMContentLoaded', scrollCarousel); 
5126 
5127</script> 
5128	 
5129<style> 
5130 
5131 
5132.ptb-news__read-news .news-content .embed-responsive-youtube::before { 
5133    padding-top: 0; 
5134
5135	 
5136.ptb-news__read-news .news-content .embed-responsive-liferay::before { 
5137    padding-top: calc(9/16 *100% - 64px); 
5138
5139 
5140.ptb-news__read-news .news-content .thumnail-play-button { 
5141
5142 
5143.ptb-news__read-news .news-content .thumnail-play-button { 
5144    position: relative; 
5145    z-index: 100; 
5146    height: 64px; 
5147    width: 64px; 
5148    background-repeat: no-repeat; 
5149    top: calc(50%); 
5150    left: calc(50% - 32px); 
5151
5152	 
5153	 
5154.ptb-news__read-news .news-content .thumnail-play-button-youtube { 
5155    position: absolute; 
5156    z-index: 100; 
5157    height: 64px; 
5158    width: 64px; 
5159    background-repeat: no-repeat; 
5160    top: calc(50% - 64px); 
5161    left: calc(50% - 32px); 
5162
5163 
5164.ptb-news__read-news .news-content .thumnail-play-button-liferay { 
5165    position: relative; 
5166    z-index: 100; 
5167    height: 64px; 
5168    width: 64px; 
5169    top: calc(-50% + 32px); 
5170    left: calc(50% - 32px); 
5171    background-repeat: no-repeat; 
5172
5173 
5174	 
5175	.ptb-news__read-news .news-content .embed-responsive-youtube img { 
5176	width: 100%; 
5177		height: 100%; 
5178
5179	 
5180</style> 
5181 
5182	<script> 
5183	<#assign createYoutubeThumbnails = "createYoutubeThumbnails_"+ randomNumber(5952) />  
5184	 
5185	function ${createYoutubeThumbnails}(){ 
5186 
5187        const newsContent = document.querySelector(".news-content"); 
5188 
5189        const getYoutubeId = (youtubeUrl) => { 
5190 
5191            const url = new URL(youtubeUrl); 
5192            const splittedPathName = url.pathname.split("/"); 
5193 
5194            if (splittedPathName.length <= 0){ 
5195                return ""; 
5196
5197 
5198            return splittedPathName[splittedPathName.length-1]; 
5199        }; 
5200		 
5201		    window.addEventListener("resize", (event) => { 
5202				const iframeList = newsContent.querySelectorAll('iframe'); 
5203           iframeList.forEach((iframe) => { 
5204                const src = iframe.src; 
5205                if (!src){ 
5206                    return; 
5207
5208 
5209                const isYoutube = src.toLowerCase().includes("youtube"); 
5210                if (!isYoutube){ 
5211                    return; 
5212
5213						  
5214						    const iframeParent = iframe.parentNode; 
5215						  
5216						    const thumbnail = iframeParent.querySelector("img"); 
5217                if (thumbnail){ 
5218					         // thumbnail.style="width:" + iframe.width + "px; height: " + iframe.height + "px"; 
5219
5220				   }); 
5221				 
5222				}); 
5223         
5224        const iframeList = newsContent.querySelectorAll('iframe'); 
5225        iframeList.forEach((iframe) => { 
5226                const src = iframe.src; 
5227                if (!src){ 
5228                    return; 
5229
5230 
5231                const isYoutube = src.toLowerCase().includes("youtube"); 
5232                if (!isYoutube){ 
5233                    return; 
5234
5235 
5236                const iframeParent = iframe.parentNode; 
5237 
5238                const thumbnail = document.createElement("img"); 
5239                thumbnail.src = 'https://img.youtube.com/vi/' + getYoutubeId(src) +'/hqdefault.jpg'; 
5240                thumbnail.alt = "Youtube"; 
5241					      //thumbnail.style="width:" + iframe.width + "px; height: " + iframe.height + "px"; 
5242 
5243                const playButton = document.createElement("div"); 
5244                playButton.style = 'background-image: url("data:image/svg+xml,%3Csvg width=\'64\' height=\'64\' viewBox=\'0 0 64 64\' fill=\'none\' xmlns=\'http://www.w3.org/2000/svg\'%3E%3Cg clip-path=\'url(%23clip0_4118_27800)\'%3E%3Crect width=\'64\' height=\'64\' rx=\'32\' fill=\'white\'/%3E%3Cpath d=\'M39.22 32.52C39.591 32.2726 39.591 31.7274 39.22 31.48L28.9717 24.6478C28.5563 24.3709 28 24.6686 28 25.1678V38.8322C28 39.3314 28.5563 39.6291 28.9717 39.3522L39.22 32.52Z\' fill=\'%23008542\' stroke=\'%23008542\' stroke-width=\'2\' stroke-linecap=\'round\' stroke-linejoin=\'round\'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id=\'clip0_4118_27800\'%3E%3Crect width=\'64\' height=\'64\' rx=\'32\' fill=\'white\'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A")'; 
5245                playButton.classList.add("thumnail-play-button-youtube"); 
5246                const children = iframeParent.children; 
5247 
5248                if (children.length > 0) { 
5249                    iframeParent.insertBefore(thumbnail, children.firstChild); 
5250                    iframeParent.insertBefore(playButton, thumbnail); 
5251                    iframe.classList.add("hide"); 
5252                    iframeParent.classList.add("embed-responsive-youtube"); 
5253
5254 
5255                playButton.addEventListener("click", () => { 
5256                    thumbnail.click(); 
5257                }); 
5258 
5259                thumbnail.addEventListener("click", () => { 
5260                    thumbnail.classList.add("hide"); 
5261                    playButton.classList.add("hide"); 
5262                    iframe.classList.remove("hide"); 
5263                    iframeParent.classList.remove("embed-responsive-youtube"); 
5264                    const url = new URL(src); 
5265                    const searchParams = url.searchParams; 
5266                    searchParams.set("rel", "0"); 
5267                    //searchParams.set("modestbranding", "0"); 
5268                    //searchParams.set("mute", "0"); 
5269                    //searchParams.set("color", "white"); 
5270                    searchParams.set("controls", "1"); 
5271                    //searchParams.set("playsinline", "1"); 
5272                    //searchParams.set("enablejsapi", "1"); 
5273                    searchParams.set("autoplay", "1"); 
5274                    //searchParams.set("logo", "0"); 
5275                    iframeParent.setAttribute("data-embed-id", url.toString()); 
5276                    iframe.setAttribute("src", url.toString()); 
5277                }); 
5278        }); 
5279  
5280
5281		 
5282	${createYoutubeThumbnails}(); 
5283		 
5284    <#assign createLRThumbnails = "createLRThumbnails"+ randomNumber(5952) />  
5285	 
5286	function ${createLRThumbnails}(){ 
5287 
5288        const newsContent = document.querySelector(".news-content"); 
5289        const iframeList = newsContent.querySelectorAll("iframe[data-video-liferay]"); 
5290 
5291        iframeList.forEach(iframe => {                       
5292 
5293            const playButton = document.createElement("div"); 
5294            playButton.style = 'background-image: url("data:image/svg+xml,%3Csvg width=\'64\' height=\'64\' viewBox=\'0 0 64 64\' fill=\'none\' xmlns=\'http://www.w3.org/2000/svg\'%3E%3Cg clip-path=\'url(%23clip0_4118_27800)\'%3E%3Crect width=\'64\' height=\'64\' rx=\'32\' fill=\'white\'/%3E%3Cpath d=\'M39.22 32.52C39.591 32.2726 39.591 31.7274 39.22 31.48L28.9717 24.6478C28.5563 24.3709 28 24.6686 28 25.1678V38.8322C28 39.3314 28.5563 39.6291 28.9717 39.3522L39.22 32.52Z\' fill=\'%23008542\' stroke=\'%23008542\' stroke-width=\'2\' stroke-linecap=\'round\' stroke-linejoin=\'round\'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id=\'clip0_4118_27800\'%3E%3Crect width=\'64\' height=\'64\' rx=\'32\' fill=\'white\'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A")'; 
5295            playButton.classList.add("thumnail-play-button-liferay"); 
5296            const children = iframe.parentNode.children; 
5297            if (children.length > 0) {                
5298                iframe.parentNode.insertBefore(playButton, children.firstChild);                 
5299
5300 
5301            iframe.addEventListener("load", () => { 
5302                if (iframe.contentDocument){ 
5303                    const video = iframe.contentDocument.body.querySelector("video"); 
5304                    video.removeAttribute("controls"); 
5305
5306            }); 
5307					 
5308					iframe.parentNode.classList.add("embed-responsive-liferay"); 
5309             
5310 
5311            playButton.addEventListener("click", () => { 
5312                playButton.classList.add("hide"); 
5313                playButton.classList.remove("thumnail-play-button-liferay");     
5314							iframe.parentNode.classList.remove("embed-responsive-liferay"); 
5315                if (iframe.contentDocument){ 
5316                    const video = iframe.contentDocument.body.querySelector("video"); 
5317                    video.setAttribute("controls", ""); 
5318                    video.play(); 
5319
5320            }); 
5321        }); 
5322
5323 
5324    ${createLRThumbnails}(); 
5325	</script> 




Canais

Acessibilidade

Faça uma busca:

Sugestões de busca

Link de exemplo
Ícone do botão /documents/d/nossa-energia/chevronright-svg?download=true Exibir mais resultados
Ícone de carregamento

Mais pesquisados

Preço dos combustíveis

Pré-Sal

Time Petrobras

Escolha um Canal:

Portal da Transparência
Transparência
Portal da Transparência
Investidor Petrobras
Investidor Petrobras
Investidor Petrobras
Site Petrobras
Site Petrobras
Site Petrobras

Acessibilidade

Alto-Contraste

Desligado

Ligado

Texto Grande

Desligado

Ligado

Idioma:

Selecione um idioma: